//
// Classe ImgDuo: cdy/20090326
//	Classe liant 2 images (idBack et idFront), et gérant un dithering automatique de Front sur Back
//	Les images sont automatiquements changées de manière aléatoire depuis a_urls (array)
//

var currentImages=[];

function inArray(needle,haystack){
        var found=0; var x;
        for( k in haystack )
                if(needle==haystack[k]) found++;
        return found;
}

function ImgDuo(idBack, idFront, a_urls){
	this.deltaO=4;			// dither en 1 seconde
	this.sleepCycles=20;	// 3 secondes
	this.eBack=document.getElementById(idBack);
	this.eFront=document.getElementById(idFront);
	this.opacity=0;
	this.slept=0;
	this.images=a_urls;
	
	// détection du browser
	var isFirefox=/Firefox/;
	var isIE=/MSIE/;
	this.browser='other';
	if(isFirefox.test(navigator.userAgent)) this.browser='FF';
	if(isIE.test(navigator.userAgent)) this.browser='IE';
}

function variation(){
	with(this){
		if(opacity < 100){
			opacity+=deltaO;
			if(opacity>=100) opacity=100;
			if(opacity>0) setOpacity(eFront,opacity);
		} else if(opacity >=100 && slept < sleepCycles) {
			slept++;
		} else {
			eBack.src=eFront.src; 
			slept=0; opacity=-250;	// éviter le flickering
			var _o=this; 		// IE ne supporte pas self=this
			setTimeout(function(){ _o.setOpacity(eFront,0); },10);
			setTimeout(function() { 
				with(_o) {
					var src=eFront.src;
					while(src==eFront.src) {
						var x=0;	// maximum 10 passes
						do { src=images[Math.floor(Math.random()*images.length)]; x++; }
						while(inArray(src,currentImages) && x<10);
					}
					eFront.src=src;
				}
				currentImages[_o.eFront.id]=src;
			},500);
		}	
	}
}
function setOpacity(obj, o) {
		if(this.browser=='FF')	obj.style.MozOpacity = (o / 100);
		else if(this.browser=='IE')	obj.style.filter = 'alpha(opacity=' + o + ')';
		else obj.style.opacity = (o / 100);
		//    obj.style.KhtmlOpacity = (o / 100);
}
ImgDuo.prototype.variation=variation;
ImgDuo.prototype.setOpacity=setOpacity;

