//Gère le défilement et l'effet de transition entre les images d'une
//liste affichées sucessivement

function Transition()
{
	//-----------------------------------------------------------------------------------------
	//Private
	this.images = new Array();	//Liste des images contenu dans la div
    this.imagecourante = 0;		//Indice de l'image courante
	this.index = 0;				//Indice de l'image suivante
	var thiss = this;			//L'objet se référence lui même (utilisation dans setTimeout) 
	
	//Réaffecte la propriété xOpacity au style à partir des propriétés de l'objet image
	this.Xopacitycalcul = function(ind)
	{
		this.images[ind].style.opacity = this.images[ind].xOpacity;
		this.images[ind].style.MozOpacity = this.images[ind].xOpacity;
		this.images[ind].style.KhtmlOpacity = this.images[ind].xOpacity;  
		this.images[ind].style.filter = 'alpha(opacity=' + (this.images[ind].xOpacity*100) + ')';
	}
	
	//S'occupe de faire décroitre l'opacité d'une image et de passé à la suivante
	//quand celle ci est devenue invisible;
	this.ApplyOpacity = function(duree)
	{
		//On récupère le xOpacity de l'image courante
		var opacurrent = this.images[this.imagecourante].xOpacity;
		
		//On calcule l'index
		this.index = this.images[this.imagecourante+1]?this.imagecourante+1:0;
		
		//On place l'image précédente en background de la div
		if(this.imagecourante==this.images.length-1)
		{
			if(duree==500)
			{
				var stop=true;
			}
			document.getElementById("powerpoint").style.backgroundImage = 'url('+this.images[this.images.length-1].src+')';
		}
		else
		{
			document.getElementById("powerpoint").style.backgroundImage = 'url('+this.images[this.imagecourante+1].src+')';
		}
		//On récupère le Xopacity de l'image suivante
		var opacnext = this.images[this.index].xOpacity;
	
		//On calcul l'opacité pour l'image courante
		//et l'image suivante
		opacurrent -= 0.05;
		opacnext += 0.05;
	
		//On affiche l'image dont l'opacité est en train d'augmenter
		this.images[this.index].style.display = 'block';
		
		//On affecte l'opacité qu'on a recalculé
		this.images[this.imagecourante].xOpacity = opacurrent;
		this.images[this.index].xOpacity  = opacnext;
		
		this.Xopacitycalcul(this.imagecourante);
		this.Xopacitycalcul(this.index);
		if(stop!=true)
		{
			//Si l'image courante n'est pas devenue totalement transparente on rappelle
			//la méthode ApplyOpacity()
			if(this.images[this.imagecourante].xOpacity > 0)
			{
				setTimeout(function(){thiss.ApplyOpacity(duree);}, 60);
			}
			//Sinon on rend l'image courante invisible, on passe à l'image suivante
			//et puis on rappel ApplyOpacity()
			else
			{
				this.images[this.imagecourante].style.display = 'none';
				this.imagecourante = this.index;
				
				setTimeout(function(){thiss.ApplyOpacity(duree);},duree);
			}
		}
	}
	//-----------------------------------------------------------------------------------------
	//Public
	this.Diaporama = function(duree)
	{
		if(document.getElementById)
		{
			//On récupère toutes les éléments de la div powerpoint
			var elts = document.getElementById('powerpoint');
			this.images = elts.getElementsByTagName('img');
			
			if(this.images.length > 1)
			{
				//On affiche la première image
				this.images[0].style.display = 'block';
				this.images[0].xOpacity = 0.99;
				
				//Pour toutes les images récupèrées ( à l'exception de la première )
				//l'attribut xOpacity est mis à 0
				for(var i=1; i < this.images.length; i++)
				{
					//this.images[i].style.display = 'none';
					this.images[i].xOpacity = 0.00;
				}
				
				//Dans 2s on lance la méthode ApplyFade()
				setTimeout(function(){thiss.ApplyOpacity(duree);},duree);
			}
		}
	}
	//-----------------------------------------------------------------------------------------
}

//On créer l'instance qui nous sert sur la page
var Diap = new Transition();

