// JavaScript Document

// mettre un minimum de 4 images !!!
var coef = 0.03 ; // avancement de l'opacité
var temps = 50 ; // temps entre chaque changement d'opacité
var temps_pause = 2000 ; // temps d'attente entre 2 changements d'images

var nombre_image = new Array(); // nombre d'images a faire bouger
var prefix_image = new Array(); // chemin + prefix du nom des images
var suffix_image = new Array(); // suffix + '.extension' du nom des images
// pas touche
var indice = new Array();
var img1 = new Array();
var img2 = new Array();
var sens = new Array(); //1;
var tabImg = new Array(); // tab contenant les images
var stopImg = new Array();
var started = new Array();
var loop = new Array();

function initPage()
{
	var links = document.getElementsByTagName("span");
	for (i = 0 ; i < links.length ; i++)
	{
		if (links[i].className == "hidden")
		{
			links[i].className = "";
		}	
	}
}

// Init with loop
function initLoop(id,type,nb)
{	
	loop[id] = true;
	init(id,type,nb);
};

// Init without loop
function init(id,type,nb)
{	
	img1[id] = document.getElementById(id+"-1");
	img2[id] = document.getElementById(id+"-2");
	sens[id] = 1;
	stopImg[id] = false;
	started[id] = false;
	indice[id] = 2;	// First 2 images are already loaded in HTML page
	nombre_image[id] = nb;
	prefix_image[id] = '/gallery/'+id+'/';
	suffix_image[id] = '.'+type;
	prechargerImg(id);
	//start(id);
};


function start(id)
{
	if (!started[id])
	{
		started[id] = true;
		stopImg[id] = false;
		if (sens[id])
		{
			window.setTimeout(function(){change_opacity(id,0,1);},0);
		}
		else
		{
			window.setTimeout(function(){change_opacity(id,1,0);},0);
		}
	}
}


function prechargerImg(id)
{
	tabImg[id] = new Array(nombre_image[id]);
	preloadImg(id,0);
}


function preloadImg(id, index)
{
	if (index == nombre_image[id])
	{
		window.setTimeout(function(){start(id);},temps_pause);
	}
	else
	{
		var file = getFile(id,index);
		
		var loader = new ImageLoader(file);
		loader.loadEvent = function(url,image)
		{
			tabImg[id][index] = image;
			index ++;
			preloadImg(id,index);
		};
		loader.load();
	}
}


function getFile(id,index)
{
	var comp = '';
	if (index < 10)
	{
		comp = '0';
	}
	
	return prefix_image[id]+comp+(index+1)+suffix_image[id];
}


function change_opacity(id, opacity1, opacity2)
{
	var newOpacity1;
	var newOpacity2;
	
	SetOpacity(img1[id], opacity1);
	SetOpacity(img2[id], opacity2);
	
	if (sens[id])
	{
		newOpacity1 = opacity1 + coef;
		newOpacity2 = opacity2 - coef;
	}
	else
	{
		newOpacity1 = opacity1 - coef;
		newOpacity2 = opacity2 + coef;
	}
	
	// on fait varier le sens d'opacité
	if (newOpacity2 <= 0)
	{
		img2[id].src=tabImg[id][indice[id]++].src;
		sens[id] = 0;
		if (!stopImg[id])
		{
			if (indice[id] == 1 && !loop[id])
			{
				alert('Stop loop='+loop[id]);
				stopImg[id] = true;				
			}
			else if (indice[id] == (tabImg[id].length))
			{
				indice[id]=0;
			}
			// Next image
			window.setTimeout(function(){change_opacity(id,1,0);},temps_pause) ; // attente
		}
		else
		{
			started[id] = false;
		}
		
		return 0;
	}
	else if (newOpacity1 <= 0)
	{
		img1[id].src=tabImg[id][indice[id]++].src;
		sens[id] = 1;
		if (!stopImg[id])
		{
			if (indice[id] == 1  && !loop[id])
			{
				alert('Stop loop='+loop[id]);
				stopImg[id] = true;				
			}
			else if (indice[id] == (tabImg[id].length))
			{
				indice[id]=0;
			}
			// Next image
			window.setTimeout(function(){change_opacity(id,0,1);},temps_pause) ; // attente
		}
		else
		{
			started[id] = false;
		}
		
		return 0;
	}
	window.setTimeout(function(){change_opacity(id,newOpacity1,newOpacity2);},temps) ; // recursion toutes les x millisec
}


function SetOpacity( Obj, opa_)
{
  if(document.all && !window.opera)
  {
	   var Val = opa_ * 100;
	  Obj.style.filter = "alpha(opacity=" + Val + ");"
	}
	else
	{
	  Obj.style.setProperty( "-moz-opacity", opa_, "");
	  Obj.style.setProperty( "-khtml-opacity", opa_, "");
	  Obj.style.setProperty( "opacity", opa_, "");
	}
}
