
var zoom=60;
var imgNumber = 100;
var imgWidth = 1000;
var imgHeight = 750;
var pathToImg = "http://media.la-bas.org/diaporama2/images/";
var delay = 4;

/*-------------------------------------------------------------*/
var zoomSlider;
var sliderState = 'off';
var controlerState = 'off';
var thumbBrowserState = 'off';
var diapoState = 'manual';
var imgState = 'ready';
var oldZoom = 0;
var thumbListNumber = 4;
var MTSdelay = delay*1000;
var img = 1;
var thumb = 1;
var myTM;

function manageControler(){
	if (controlerState != 'moving'){
		if (controlerState == 'off' ){
			controlerState = 'moving';
			function setStateOn(){
				controlerState = 'on';
				if (sliderState == 'off') standardSliderInit();
			}		
			var ctrlAnim = new YAHOO.util.Anim('controler', { top: {from:-52,to: 0, unit: 'px'},opacity: {from:0.5,to: 0.9} }, 0.5, 
												 YAHOO.util.Easing.easeOut);
			ctrlAnim.onComplete.subscribe(setStateOn);
			ctrlAnim.animate();
		}else{
			controlerState = 'moving';
			function setStateOff(){
				controlerState = 'off';
			}		
			var ctrlAnim = new YAHOO.util.Anim('controler', { top: {from:0,to: -52, unit: 'px'},opacity: {from:0.9,to: 0.5} }, 1.5, 
												 YAHOO.util.Easing.easeOut);
			ctrlAnim.onComplete.subscribe(setStateOff);
			ctrlAnim.animate();
		}
	}
}

function manageThumbBrowser(){
	if (thumbBrowserState != 'moving'){
		if (thumbBrowserState == 'off' ){
			thumbBrowserState = 'moving';
			function setBrowserStateOn(){
				thumbBrowserState = 'on';
			}		
			var ctrlAnim = new YAHOO.util.Anim('thumbBrowser', { right: {from:-143,to: 0, unit: 'px'},opacity: {from:0.5,to: 1} }, 0.5, 
												 YAHOO.util.Easing.easeOut);
			ctrlAnim.onComplete.subscribe(setBrowserStateOn);
			ctrlAnim.animate();
		}else{
			thumbBrowserState = 'moving';
			function setBrowserStateOff(){
				thumbBrowserState = 'off';
			}		
			var ctrlAnim = new YAHOO.util.Anim('thumbBrowser', { right: {from:0,to: -143, unit: 'px'},opacity: {from:1,to: 0.5} }, 1.5, 
												 YAHOO.util.Easing.easeOut);
			ctrlAnim.onComplete.subscribe(setBrowserStateOff);
			ctrlAnim.animate();
		}
	}
}

function preloadNextDiapo(){
	image = img;
	if (img < 10) image = "0"+image;
	if (img < 100) image = "0"+image;	 	
	var pic1= new Image(); 
	pic1.src=pathToImg+image+".jpg";
	if(diapoState == "on"){
		 clearTimeout(myTM);
		 myTM =  setTimeout("setBgDiapoAuto();",MTSdelay);
	}
}
	
function setBgDiapoManual(){
		if(diapoState == "manual"){
			image = img;
			if (img < 10) image = "0"+image;
			if (img < 100) image = "0"+image;	 
			document.getElementById('myDiapo').src=pathToImg+image+".jpg";
			syncBrowserToDiapo();
			if (img == imgNumber){ 
				img = -1;
			}
			img++;
			preloadNextDiapo();
		}
}

function setBgDiapoAuto(){
		if(diapoState == "on"){
			image = img;
			if (img < 10) image = "0"+image;
			if (img < 100) image = "0"+image;	 
			document.getElementById('myDiapo').src=pathToImg+image+".jpg";
			syncBrowserToDiapo();
			if (img == imgNumber){ 
				img = -1;
			}
			img++;
			preloadNextDiapo();
		}
}

function syncBrowserToDiapo(){
	for (i=0;i<imgNumber+1;i=i+thumbListNumber ){
		if ((img >= i && img < i+thumbListNumber ) && (thumb < i || thumb >= i+thumbListNumber )){
			thumb=i;
			makeThumb();
			return true;
		}
	}
}

function startDiapo(){
	diapoState = "on";
	togglePlayPause();
	if (img > 0 ) img=img-1;
	manageControler();
    if (thumbBrowserState == "on") manageThumbBrowser();	
	setBgDiapoAuto();
}

function stopDiapo(){
	diapoState = "manual";
	togglePlayPause();
	img = 0;
	setBgDiapoManual();
}

function togglePlayPause(){
	if (diapoState == "on"){
		document.getElementById("btn-play").style.display="none";
		document.getElementById("btn-pause").style.display="block";
	}else{
		document.getElementById("btn-play").style.display="block";
		document.getElementById("btn-pause").style.display="none";
	}
}

function refreshLcdScreen(){
	strImg = img;
	if (img == 0 ) strImg = imgNumber+1;
	var infos = "Diapositive <strong>"+strImg+"</strong> sur <strong>"+(imgNumber+1)+"</strong> - Zoom : <strong>"+zoom+"%</strong> - Délai : <strong>"+(MTSdelay/1000)+" secondes</strong>";
	document.getElementById("lcdScreen").innerHTML = infos;
}

function pauseDiapo(){
	diapoState = "off";
	togglePlayPause();
	if (img > 1 ) img=img-1;
}

function zoomIn(){
	oldZoom = zoom;
	if (zoom < 100) zoom += 10;
	setZoom();
}

function setZoom(){	
	widthImg = (imgWidth*zoom)/100;
	heightImg = (imgHeight*zoom)/100;

	widthImgOld = (imgWidth*oldZoom)/100;
	heightImgOld = (imgHeight*oldZoom)/100;
		
	marginT = heightImg/2;
	marginL = widthImg/2;
	
	marginTOld = heightImgOld/2;
	marginLOld = widthImgOld/2;

	document.getElementById('myDiapo').style.top="50%";
	document.getElementById('myDiapo').style.left="50%";
	
	if (imgState == 'ready'){
		imgState = 'resizing';
		function setStateReady(){
			imgState = 'ready';
		}		
		var ctrlResiz = new YAHOO.util.Anim('myDiapo', { width : {from: widthImgOld, to: widthImg, unit: 'px'},
														  height: {from: heightImgOld,to: heightImg, unit: 'px'},
														  marginTop: {from: -marginTOld,to: -marginT, unit: 'px'}, 
														  marginLeft: {from: -marginLOld,to: -marginL, unit: 'px'}
														 }, 0.5, 
											 YAHOO.util.Easing.easeOut);
		ctrlResiz.onComplete.subscribe(setStateReady);
		ctrlResiz.animate();
	}
}

function zoomOut(){
	oldZoom = zoom;
	if (zoom > 10) zoom -= 10;
	setZoom();
}

function previousDiapo(){
	diapoState = "manual";
	togglePlayPause();
	if (img == 1 ) img=0;
	if (img > 1 ) img=img-2;
	setBgDiapoManual();
}

function nextDiapo(){
	diapoState = "manual";
	togglePlayPause();
	setBgDiapoManual();	
}

function nextThumb(){
	if ((thumb+thumbListNumber) < imgNumber){
		pauseDiapo();
		thumb=thumb+thumbListNumber;
		makeThumb();
	}
}
function firstThumb(){
	if ( thumb != 0){
		pauseDiapo();
		thumb=0;
		makeThumb();
	}
}
function lastThumb(){
	floInt = imgNumber/thumbListNumber
	lastPos = Math.floor(floInt);
	last = lastPos*thumbListNumber;
	if ( thumb != last){
		pauseDiapo();
		thumb=last;
		makeThumb();
	}
}
function show(imgId){
	img = imgId;
	diapoState = "manual";
	togglePlayPause();
	setBgDiapoManual();	
}
function previousThumb(){
	if (thumb > 0){
		pauseDiapo();
		thumb=thumb-thumbListNumber;
		makeThumb();
	}	
}
function makeThumb(){
	var str = "";
	var lastThumb = thumb+thumbListNumber;
	if (lastThumb > imgNumber){
		lastThumb = imgNumber+1;
	}
	for(i=thumb;i<lastThumb;i++){
		image = i;
		if (i < 10) image = "0"+image;
		if (i < 100) image = "0"+image;
		strImg = i+1;
		strAlt = "Diapositive "+strImg+" sur "+(imgNumber+1);
		str += "<img class=\"mythumb\" src=\""+pathToImg+image+".jpg\" alt=\""+strAlt+"\" onclick=\"show('"+i+"')\" />";
	}
	document.getElementById('thumbList').innerHTML = str;
}

function standardSliderInit() {
	zoomSlider = YAHOO.widget.Slider.getHorizSlider("zoomSliderBG", "zoomSliderHandleDiv", 0, 100);

	zoomSlider.onChange = function(offsetFromStart) {
		if (sliderState == 'on'){
			oldZoom = zoom;
			zoom=offsetFromStart+10;
			setZoom();
		}
	}

	
	var delaySlider = YAHOO.widget.Slider.getHorizSlider("delaySliderBG", "delaySliderHandleDiv", 0, 100);
	delaySlider.onChange = function(offsetFromStart) {
		MTSdelay=(offsetFromStart+5)*1000;
	}
	
	setTimeout("initZoom();",500);
}

function initZoom(){
	zoomSlider.setValue(zoom);
	sliderState = 'on';
	showSplash();
	setInterval("refreshLcdScreen();",50);
}

function closeSplash(){
	function hideSplash(){
		document.getElementById('splash').style.display = "none";
	}
	var splashAnim = new YAHOO.util.Anim('splash', { opacity: {from:0.95,to: 0} }, 0.5, 
										 YAHOO.util.Easing.easeOut);
	splashAnim.onComplete.subscribe(hideSplash);
	splashAnim.animate();
}

function showSplash(){
	var splashAnim = new YAHOO.util.Anim('splash', { opacity: {from:0,to: 0.95} }, 0.5, 
										 YAHOO.util.Easing.easeOut);
	splashAnim.animate();
}

function manageKey(ev) {
	var kc = ev.keyCode;
	if (kc == YAHOO.util.Key.DOM_VK_LEFT) {
		previousDiapo();
	} else if (kc == YAHOO.util.Key.DOM_VK_RIGHT) {
		nextDiapo();
	} else if (kc == YAHOO.util.Key.DOM_VK_UP) {
		previousThumb();
	} else if (kc == YAHOO.util.Key.DOM_VK_DOWN) {
		nextThumb();
	} 
}

function main(){
   setBgDiapoManual();
   manageControler();
   manageThumbBrowser();
   makeThumb();
}

