/*
   MIS - Minimalist Image Slideshow
   Version 5
   August 07, 2011

   ---

   Marc Robledo
   http://usuaris.tinet.cat/mark/mis
*/

var WAIT=2; // SET THE PAUSE BETWEEN IMAGES IN SECONDS


//detect browser
var ie = /MSIE/.test(navigator.userAgent);


var i;
var nexti;
var iMax;
var timer;
var changing;
var nSlides=0;


function changeElementOpacity(element, alpha){
	if(ie)
		element.filters.item("DXImageTransform.Microsoft.Alpha").opacity=alpha;
	else
		element.style.opacity=alpha/100;
}


function prepareNextImg(inst){
	clearTimeout(timer[inst]);

	var node=document.getElementById("MIS-slide"+inst).getElementsByTagName("li");
	//alert("NODE_LENGTH: "+node.length);

	node[i[inst]].style.zIndex=500;
	changeElementOpacity(node[nexti[inst]], 0);
	node[nexti[inst]].style.zIndex=501;


	var alpha=0;
	timer[inst]=window.setInterval(function(){
		alpha+=10;
		changeElementOpacity(node[nexti[inst]], alpha);

		if(alpha==100){
			changeElementOpacity(node[i[inst]], 0);
			i[inst]=nexti[inst];
			changing[inst]=false;
			clearInterval(timer[inst]);
			resetTimer(inst);
		}
	}, 40);
}

function resetTimer(inst){
	if(ie)
		timer[inst]=window.setTimeout("nextImage("+inst+")", WAIT*1000);
	else
		timer[inst]=window.setTimeout(nextImage, WAIT*1000, inst);
}

function nextImage(inst){
	if(!changing[inst]){
		changing[inst]=true;
		nexti[inst]++;
		if(nexti[inst]==iMax[inst])
			nexti[inst]=0;
	
		prepareNextImg(inst);
	}
}

function prevImage(inst){
	if(!changing[inst]){
		changing[inst]=true;
		nexti[inst]--;
		if(nexti[inst]==-1)
			nexti[inst]=iMax[inst]-1;
	
		prepareNextImg(inst);
	}
}

//Startup
function init(){
	var it=0;
	while(document.getElementById('MIS-slide'+nSlides)){
		nSlides++;
	}
	
	i=new Array(nSlides);
	nexti=new Array(nSlides);
	iMax=new Array(nSlides);
	timer=new Array(nSlides);
	changing=new Array(nSlides);

	for(it=0; it<nSlides; it++){
		nexti[it]=0;
		iMax[it]=0;
		timer[it]=0;
		changing[it]=false;

		//iMax[it]=0;
		//Get maximum number of images
		var node=document.getElementById("MIS-slide"+it).getElementsByTagName("li");
		iMax[it]=node.length;


		//Set first image as opaque and the rest as transparent
		node[0].style.zIndex=501;
		changeElementOpacity(node[0], 100);
		for(i[it]=1; i<iMax[it]; i[it]++){
			changeElementOpacity(node[i[it]], 0);
			node[i[it]].style.zIndex=500;
		}
		i[it]=0;

		resetTimer(it);
	}
}

window.onload=init;

