/**
 * Slideshow controller for Slideshow Components
 */
var Slideshow = {

	// components state
	state: {},
		
	// add slideshow component to slideshow controller
	registerSlideshow: function(componentId, imageCount, delayMS) {
		delayMS = 5000;
		var componentState = {imageCount:imageCount, currentIndex:0, delay: delayMS, timerID: null}; 
		Slideshow.state.componentId = componentState;
	},
		
	displayNextImage: function(componentId) {
		// next image
		Slideshow.gotoNextImage(componentId);
		
		// relaunch timer
		Slideshow.restart(componentId);
	},
		
	gotoNextImage: function(componentId) {
		// get new index
		var n = Slideshow.state.componentId.imageCount;
		var idx = Slideshow.state.componentId.currentIndex;
		var newIdx = (idx + 1) % n;
		
		Slideshow.displayImageAtIndex(componentId, newIdx);
	},
		
	gotoPreviousImage: function(componentId) {
		// get new index
		var idx = Slideshow.state.componentId.currentIndex;
		var newIdx = (idx - 1);
		if (newIdx<0) newIdx = Slideshow.state.componentId.imageCount - 1;
		
		Slideshow.displayImageAtIndex(componentId, newIdx);
	},
	
	displayImageAtIndex: function(componentId, idx) {
		// save new index in state
		Slideshow.state.componentId.currentIndex = idx;
		
		// get the slideshow component
		var c = document.getElementById("id"+componentId);

		// get the new url
		var url = Slideshow.getImageUrlByIndex(componentId, idx); 
		
		// sets the new url
		if (c!=null && typeof(c)!='undefined') {
			c.style.backgroundImage = 'url('+url+')';
		}
	},

	getImageUrlByIndex:function (componentId, idx) {
		// TODO : request images url from component
		var url = './test/medias/images/slideshow_'+componentId+"-"+(idx)+'.jpg'; 
		return url;
	},
	
	start: function(componentId) {
		var timerID = self.setTimeout("Slideshow.displayNextImage("+componentId+")", Slideshow.state.componentId.delay);
		Slideshow.state.componentId.timerID = timerID;
	},
	
	restart: function(componentId) {
		var timerID = self.setTimeout("Slideshow.displayNextImage("+componentId+")", Slideshow.state.componentId.delay);
		Slideshow.state.componentId.timerID = timerID;
	},

	pause: function(componentId) {
		self.clearTimeout(Slideshow.state.componentId.timerID);
		Slideshow.state.componentId.timerID = null;
	},
	
	// toggles between pause/restart
	pauseSwitch: function(componentId) {
		var timerID = Slideshow.state.componentId.timerID;
		if (timerID > 0) {
			// pause
			Slideshow.pause(componentId);
		} else {
			// start
			Slideshow.displayNextImage(componentId);
		}
	}
	
}
