
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//									Extrait de la librairie PROTOTYPE							                     //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Permet avec la syntaxe " var maClasse = Class.create() " d'instancier une nouvelle classe et d'appeler la methode " initialize() " de cette classe
// la methode " initialize() " est considere comme le constructeur de la classe
var Class = {
	create: function() {
		return function() {
			this.initialize.apply(this, arguments);
		}
	}
}
// Permet de contrer le moteur javascript dans un bug de reference de fonction
// Generalement utilisee dans les methodes onComplete... onLoad... etc pour faire reference a l'objet en cours
Function.prototype.bind = function(object) {
	var __method = this;
	return function() {
		return __method.apply(object, arguments);
	}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//									Fin Extrait de la librairie PROTOTYPE							//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

var timer;
var timerOpacity;
var id;
/**
 * Pour faire un défiler de 
 */
var defilerFond = Class.create();
defilerFond.prototype = {
	initialize : function (id_diapo, delay,vitesseOpacity,pasOpacity) {
		id = id_diapo;
		this.id_diapo = id_diapo;
		if(delay == 0 || delay == null)
			this.delay = 1000 
		else
			this.delay = delay 					// le delay entre chaque Image
		this.bollTimer = 0;						// état du timer
		this.imgCc = 0;							// idex de l'image courante
		this.tabImg; 							// le tableau des images du fond
		this.vitesseOpacity = vitesseOpacity 	// le temps entre chaque décrementation de l'opacité
		this.pasOpacity = pasOpacity 			// le pas décrementation a l'opacité
		this.redimentionne = false				// Boolean concerve ou non le ratio de l'image dans le cadre de la diapo
		
		if(document.getElementById(id).children.length > 1){
			this.prepareDonnee();
			this.bollTimer = 1;
			// pour pouvoir mettre plusieur diaporama sur une page
			timer = setTimeout("defiler.changeImg()",this.delay);
		}
	},
	prepareDonnee : function(){
		this.tabImg = new Array();
		for(var i=0; i < document.getElementById(id).children.length; i++){
			this.tabImg.push(document.getElementById(id).children[i]);
			document.getElementById(id).children[i].style.zIndex = 100-i;
			
			if(this.redimentionne){
				// on étire l'image a la taille maximale en gardant le ratio
				elm = document.getElementById(id).children[i];
				var h = elm.offsetHeight;
				var w = elm.offsetWidth;
				
				// on recherche la taille naturel de l'image
				var nH = 0;
				var nW = 0;
				if(elm.naturalWidth && elm.naturalHeight){
					nH = elm.naturalHeight;
					nW = elm.naturalWidth;
				}else{
					var image = new Image();
					image.src = elm.src; 
					image.style.height = "100%";
					image.style.width = "100%";
					var nb=0;
					// pour attendre que l'image soit charger (pas de onLoad ici pour ie)
					while(image.complete != true && nb<5000){
						nb++;
					}
					nH = image.height;
					nW = image.width;
				}
				
				//on redimentionne
				var cW = h*nW/nH
				var cH = w*nH/nW
				if(cW < w){ 
					// on centre l'img la largeur
					var e =  w - cW;
					e = e/2;
					elm.style.height = h+"px";
					elm.style.width = cW+"px";
					elm.style.paddingLeft = e+"px";
					elm.style.paddingRight = e+"px";
				}else{
					// on cetre l'img sur la hauteur
					var e = h - cH;
					e = e/2;
					elm.style.height = cH+"px";
					elm.style.width = w+"px";
					elm.style.paddingTop = e+"px";
					elm.style.paddingBottom = e+"px";
				}
			}
			// on cache toute les images, sauf la premiére			
			if(i > 0)
				document.getElementById(id).children[i].style.display = "none";
			else{
				document.getElementById(id).children[i].style.opacity = 1;
				document.getElementById(id).children[i].style.filter = "alpha(opacity = 100)";
				document.getElementById(id).children[i].style.display = "block";
			}
		}
	},
	pause:function(){
		clearTimeout(timer);
		clearTimeout(timerOpacity);
		this.bollTimer=0;
	},
	relance:function(){
		this.prepareDonnee();
		this.imgCc=0;
		timer = setTimeout("defiler.changeImg()",this.delay);
		this.bollTimer=1;
	},
	changeImg : function(){
		var tmp;
		if(this.imgCc < this.tabImg.length -1)
			tmp = this.imgCc+1;
		else{
			tmp = 0;
			document.getElementById(id).children[this.imgCc].style.zIndex = '200';
		}
		document.getElementById(id).children[tmp].style.filter = "alpha(opacity = 100)";
		document.getElementById(id).children[tmp].style.opacity = "1";
		document.getElementById(id).children[tmp].style.display = 'block';

		document.getElementById(id).children[this.imgCc].style.opacity = 1;
		document.getElementById(id).children[this.imgCc].style.filter = "alpha(opacity = 100)";
		if(this.pasOpacity == "0" || this.pasOpacity == "100"){
			document.getElementById(id).children[this.imgCc].style.display = 'none';
		}else{
			this.enleveImgCc(this.imgCc); // on met effet d'opacité
		}
		
		//document.getElementById(id).children[this.imgCc].style.display = 'none';
		this.imgCc = tmp;
		// pour pouvoir mettre plusieur diaporama sur une page
		timer = setTimeout("defiler.changeImg()",this.delay);
	},
	enleveImgCc : function(tmp){
		if(document.getElementById(id).children[tmp].style.opacity > 0){
			op = document.getElementById(id).children[tmp].style.opacity;
			var a = op * 100;
			var nb = a - this.pasOpacity;
			var aze = nb / 100;
			document.getElementById(id).children[tmp].style.opacity = aze;
			// pour IE !! 
			//alert(aze +"|"+nb);
			document.getElementById(id).children[tmp].style.filter = "alpha(opacity = "+nb+")";
			// pour pouvoir mettre plusieur diaporama sur une page
			timerOpacity = setTimeout("defiler.enleveImgCc("+tmp+")",this.vitesseOpacity);
		}else{
			document.getElementById(id).children[tmp].style.display = 'none';
			document.getElementById(id).children[tmp].style.opacity = '1';
			document.getElementById(id).children[tmp].style.filter = "alpha(opacity = 100)";
			if(tmp == parseInt(this.tabImg.length) -1){
				document.getElementById(id).children[tmp].style.zIndex = 100 - (this.tabImg.length -1);
			}
		}
	}
};


