/**
 *
 *   Script Fading
 *   Version 1.0
 *   Autor   : Raphael Wils
 *   Licence : http://creativecommons.org/licenses/by-nc-sa/2.0/
 *   Email   : info@r-wils.fr
 *   web     : http://www.r-wils.fr/developpement/javascript/fading
 *
 */
 
function fade(E, property, authFadeOut, os, oe, delayFadeOut, vFadeOut, authFadeIn, is, ie, delayFadeIn, vFadeIn){
	
	var _self = this;
	
	this.fading = function (Nstep,vFade,te,ts,delay){
		if(Nstep>0 && _self.step>vFade)
		{
			var s = (_self.step)/Nstep;
			var r = (te[0]+Math.floor((ts[0]-te[0])*s));
			var g = (te[1]+Math.floor((ts[1]-te[1])*s));
			var b = (te[2]+Math.floor((ts[2]-te[2])*s));
			eval('E.style.'+property+' = "rgb('+r+','+g+','+b+')"');
			_self.step -= vFade;
			_self.setFade = setTimeout(function(){_self.fading(Nstep,vFade,te,ts,delay)},delay);
		}
		else eval('E.style.'+property+' = "rgb('+te[0]+','+te[1]+','+te[2]+')"');
	}
	
	if(authFadeIn)
	{
		var NstepFadeIn = Math.max(Math.max(Math.abs(is[0]-ie[0]),Math.abs(is[1]-ie[1])),Math.abs(is[2]-ie[2]));
		addevent(E,'mouseover',function (){
			clearTimeout(_self.setFade);
			_self.step = NstepFadeIn;
			_self.fading(NstepFadeIn,vFadeIn,ie,is,delayFadeIn);
		});
	}
	if(authFadeOut)
	{
		var NstepFadeOut = Math.max(Math.max(Math.abs(os[0]-oe[0]),Math.abs(os[1]-oe[1])),Math.abs(os[2]-oe[2]));
		addevent(E,'mouseout',function (){
			clearTimeout(_self.setFade);
			_self.step = NstepFadeOut;
			_self.fading(NstepFadeOut,vFadeOut,oe,os,delayFadeOut);
		});
	}
}
 
/* gestionnaire d'evenement */
function addevent(obj,evt,fn,capt){
	if(obj.addEventListener)
	{
		obj.addEventListener(evt, fn, capt);
		return true;
	}
	else if(obj.attachEvent)
	{
		obj.attachEvent('on'+evt, fn);
		return true;
	}
	else return false;
}
 
