var previousClipIdx = -1;
var lastLoopClipIdx = -1;
var setClipTry = 0;

var ScheduleUpdater = new Class({
 	initialize: function(timer){
 		this.changeClassElemId = new Array();
 		this.changeClassName = new Array();
 		this.setStylesElemId = new Array();
 		this.setStylesActive = new Array();
 		this.setStylesInactive = new Array();
 		this.entries = new Array();
	},
	
	addChangeClass: function(id, theClass){
 		this.changeClassElemId.push(id);
 		this.changeClassName.push(theClass);
	},
	
	addSetStyles: function(id, stylesActive, stylesInactive){
 		this.setStylesElemId.push(id);
 		this.setStylesActive.push(stylesActive);
 		this.setStylesInactive.push(stylesInactive);
	},
	
	setEntries: function(theEntries) {
		this.entries = theEntries;
	}
});


function goPage(offset) {
	return setUrlWithParams(document.location.href,['po'],[offset]);
}


function sync(updater) {
	if (!system.player) {
		window.setTimeout(function(){ sync(updater); }, 100);
		return;
	}
	
	var actualClipIdx = system.currentClipIndex;
	if ( actualClipIdx < 1 ) {
	 	// nothing to do so far
		window.setTimeout(function(){ sync(updater); }, 100);
		return;
	}
	
	if ( lastLoopClipIdx != actualClipIdx ) {
		lastLoopClipIdx = actualClipIdx;
		
		// translate the idx from video idx to schedule entry idx
		for ( var ii = 0; ii < updater.entries.length; ii++ ) {
			if ( updater.entries[ii][0] == actualClipIdx ) {
				actualClipIdx = updater.entries[ii][1];
				break;
			}
		}
		
		if ( previousClipIdx != actualClipIdx ) {
			for ( var i=0; i<updater.changeClassElemId.length; i++ ) {
				var elemId = updater.changeClassElemId[i]+previousClipIdx;
				if ( $(elemId) ) {
					$(elemId).removeClass(updater.changeClassName[i]);
				}
				elemId = updater.changeClassElemId[i]+actualClipIdx;
				if ( $(elemId) ) {
					$(elemId).addClass(updater.changeClassName[i]);
				}
			}
			
			for ( var i=0; i<updater.setStylesElemId.length; i++ ) {
				var elemId = updater.setStylesElemId[i]+previousClipIdx;
				if ( $(elemId) ) {
					$(elemId).setStyles(updater.setStylesInactive[i]);
				}
				elemId = updater.setStylesElemId[i]+actualClipIdx;
				if ( $(elemId) ) {
					$(elemId).setStyles(updater.setStylesActive[i]);
				}
			}
			previousClipIdx = actualClipIdx;
		}
	}

	window.setTimeout(function(){ sync(updater); }, 300);
}
