/**
_______________________________
KEYWORDS COMPONENT */

Colibri.keywords = function(XMLPresentation, XMLDocuments) {
	this.init(XMLPresentation);
};

$.extend(Colibri.keywords.prototype, {
	keywords : new Array(),

	init: function(XMLPresentation) {
		var keywordsAccessor = this;

		$('.container').append('\
			<div id="Keywords">\
				<form>\
					<select id="keywordsList">\
						<option value="-1" selected="selected">Selectionner un mot clef</option>\
					</select>\
				</form>\
				<ul id="keywordsOccurences"></ul>\
			</div>\
		');
		$('#keywordsList').change(function () {
			$('#keywordsOccurences').empty();
			if ($('#keywordsList option:selected').attr('value') != '-1') {
				for (timecode in keywordsAccessor.keywords[$('#keywordsList option:selected').text()].timecode) {
					$('#keywordsOccurences').append('<li><a href="javascript:;" onclick="theColibri.components.player.setTimecode(' + keywordsAccessor.keywords[$('#keywordsList option:selected').text()].timecode[timecode] + '); return false;">' + keywordsAccessor.formatTime(keywordsAccessor.keywords[$('#keywordsList option:selected').text()].timecode[timecode] / 1000) + '</a></li>');
				}
			}
		});
		this.getKeywords(XMLPresentation, this);
	},

	getKeywords : function (XMLPresentation, keywordsAccessor) {
		$(XMLPresentation).find('keyword').each(function () { // get only keywords
			if (!keywordsAccessor.keywords[$(this).text()]) { // keyword isn't indexed yet
				keywordsAccessor.keywords[$(this).text()] = {
					timecode: new Array()
				}
				keywordsAccessor.keywords[$(this).text()].timecode[0] = parseInt($(this).attr('timecode'), 10);
				$('#keywordsList').append('<option value="' + $(this).attr('timecode') + '">' + $(this).text() + '</option>');
			} else { // keyword already exists in keywords list
				keywordsAccessor.keywords[$(this).text()].timecode[keywordsAccessor.keywords[$(this).text()].timecode.length] = parseInt($(this).attr('timecode'), 10);
			}
		});
	},

	formatTime: function(time) { // format time to hh:mm:ss
		var t = new Array(parseInt(time, 10), 0, 0); // t[0] => seconds, t[1] => minutes, t[2] => hours

		if (t[0] > 60) {
			t[1] = parseInt(time / 60, 10);
			t[0] = parseInt(time % 60, 10);
		}
		if (t[1] > 60) {
			t[2] = parseInt(t[1] / 60, 10);
			t[1] = parseInt(t[1] % 60, 10);
		}

		for (i = 0; i < t.length; i++) {
			t[i] = t[i] < 10 ? '0' + t[i] : t[i];
		}

		if (t[2] != '00') {
			return t[2] + ':' + t[1] + ':' + t[0];
		} else {
			return t[1] + ':' + t[0];
		}
	},

	sync: function(timecode) {}
});
