
ContentRotator = function(itemCount, autoSelectInterval, contentIDPrefix, thumbIDPrefix, thumbSelectedClass, thumbUnselectedClass) {
	this.autoSelectInterval = autoSelectInterval;
	this.itemCount = itemCount;
	
	this.contentIDPrefix = contentIDPrefix;
	this.thumbIDPrefix = thumbIDPrefix;
	
	this.thumbSelectedClass = thumbSelectedClass;
	this.thumbUnselectedClass = thumbUnselectedClass;
	
	this.autoSelectTimeoutId = null;
	this.currentItemIndex = null;
	
	this.initialize();
};

ContentRotator.prototype = {

	initialize: function()  {
		this.selectTopItem(1);
//		this.startAutoSelect();
	},
	
	onAutoSelectTimeout: function() {
		
		if (this.currentItemIndex + 1 > this.itemCount) this.currentItemIndex = 1;
		else this.currentItemIndex++;
		
		this.selectTopItem(this.currentItemIndex);
		this.autoSelectTimeoutId = null;
		this.startAutoSelect();
	},

	manualSelectTopItem: function(index) {
		this.stopAutoSelect();
		this.selectTopItem(index);
	},
	
	startAutoSelect: function() {
		if (this.autoSelectTimeoutId == null) {
			this.autoSelectTimeoutId = setTimeout(this.onAutoSelectTimeout.bind(this), this.autoSelectInterval);
		}
	},
	
	stopAutoSelect: function() {
		if (this.autoSelectTimeoutId != null) {
			clearTimeout(this.autoSelectTimeoutId);
			this.autoSelectTimeoutId = null;
		}
	},
	
	setContentVisibility: function(index, visible) {
		if(index <= this.itemCount) {
	        if (this.contentIDPrefix instanceof Array) {	   
	            for (var i = 0; i < this.contentIDPrefix.length; i++) {
	                var content = $(this.contentIDPrefix[i] + index);
	                if(content != null)
		                content.style.display = (visible ? 'block' : 'none');
	            }
	        } else {
	            var content = $(this.contentIDPrefix + index);
	            if(content != null)
		            content.style.display = (visible ? 'block' : 'none');
	        }
		}
	}, 

	selectTopItem: function(index) {
		if(index <= this.itemCount) {
			if(this.thumbUnselectedClass != null) {
				for (var i = 1; i <= this.itemCount; i++) {
					var oldThumbnail = $(this.thumbIDPrefix + i);
					if(oldThumbnail != null) {
						oldThumbnail.className = this.thumbUnselectedClass;
					}
				}
			}
			
			if(this.thumbSelectedClass != null) {
				var thumbnail = $(this.thumbIDPrefix + index);
				if(thumbnail != null) {
					thumbnail.className = this.thumbSelectedClass;
				}
			}
			
			for (var n = 1; n <= this.itemCount; n++) {
	            this.setContentVisibility(n, n == index);
			}
	
			this.currentItemIndex = index;
		}
	},

	onShowLightbox: function(link) {
		this.stopAutoSelect();
	}

};
