// JavaScript Document
if(typeof(SuperClass)=='function'){Fade.prototype = new SuperClass; /* héritage des méthodes */}

function Fade(element){
	if(typeof(SuperClass)!='function'){alert("fichier SuperClass.js manquant!");}
	else{
		/* héritage */
		this.classMere = SuperClass;  // classe parente
		this.classMere(); // appel du super constructeur
		delete this.classMere; // inutile de garder la classe parente	
		
		this.element=this.returnElement(element);
		if(document.all){this.checkLayout();}
		this.frequence=40; // en millisecondes : 1000 ms/25(nb img par seconde) = 40 ms
	}
}

Fade.prototype.checkLayout = function(){
	if(this.element.currentStyle.hasLayout==false){
		this.element.style.zoom=1;
	}
}

Fade.prototype.getOpacity = function(){
	var opacity=this.getCssStyleValue(this.element,"opacity");
	if(opacity=="" || opacity==null){
		opacity=1;
	}
	else if(document.all && isNaN(opacity)){
		opacity=this.explode(")",this.explode("=",opacity)[1])[0]/100;
	}
	return parseFloat(opacity);
}

Fade.prototype.setOpacity = function (opacity){
	var opa_ie=opacity*100;
	this.element.style.opacity=opacity; /// pr navigateurs qui supportent css 3
	this.element.style.MozOpacity=opacity; /// pr vieux firefox
	this.element.style.filter="alpha(opacity="+(opa_ie)+")"; /// pr IE
	this.element.style.KhtmlOpacity=opacity; /// pr Konqueror et safari
}



Fade.prototype.fadeTo = function(opacity, duree, callback){
	this.stop();
	var opa=this.getOpacity();
	var diff=opacity-opa;
	
	pas=this.calculPas(duree,diff,this.frequence);
	this.fade(opacity,pas,callback);	
}

Fade.prototype.fade = function(opacity,pas,callback){
	var opa=this.getOpacity();
	opa+=pas;

	if( (opa<opacity && pas>0) || (opa>opacity && pas<0) ){
		this.setOpacity(opa);
		var localThis = this;
		this.timeout[this.timeout.length]=window.setTimeout(function(){localThis.fade(opacity,pas,callback)}, this.frequence);
	}
	else{
		this.setOpacity(opacity);
		this.stop();
		if(callback){callback();}
	}	
}

Fade.prototype.stop=function(){
	this.clearAllTimeout();
}

