//* 2005/04/14
//* File JS generico per effettuare il fade di immagini
//* 
//*		Gianluca Zandoną - Prisma S.r.l

// idImmagine		= id dell'oggetto immagine nel file html
// interval			= intervallo in millisecondi tra un immagine e l'altra
// loop				= true -> cicla tra le immagini; false -> non cicla
// delay			= Eventuale ritardo prima della partenza del ciclo
// transTime		= Tempo durata del fade. In secondi...
function fadeImage(idImage, interval, loop, delay, transTime) {

	if (idImage != null) {
	
		//* Immagine contenitore
		this.idImage			= idImage;
		this.img				= document.getElementById(idImage);
		
		if (this.img != null) {
			if (transTime == null) {
				transTime = 1;
			}
			if (interval == null) {
				interval = 2000;
			}
			if (loop == null) {
				loop = true;
			}
			if (delay == null) {
				delay = 0;
			}

			//* Parametri
			this.img.jsObject		= this;
			this.interval			= interval;
			this.loop				= loop;
			this.delay				= delay;
			this.transTime			= transTime;

			//* Property
			this.isSupported	= (document.all != null);
			this.imgCollection	= null;
			this.currImage		= null;
			this.idInterval		= -1;
			this.idDelay		= -1;
			
			//* Metodi
			this.start			= startFade;
			this.addImage		= addImage;
			
			//* Imposto il filtro nell'immagine
			this.img.style.filter = "blendTrans(duration=" + this.transTime + ")";
		}
	}

}

//* Utilizzato per creare la collezione di immagini
function imageElement(src) {
	this.img		= new Image();
	this.img.src	= src;
	this.nextImage	= null;
}

function addImage(src) {
	
	if (this.imgCollection == null) {
		this.imgCollection = new imageElement(src);
	} else {
		var obj = this.imgCollection;
		while (obj.nextImage != null) {
			obj = obj.nextImage;
		}
		obj.nextImage = new imageElement(src);
	}
}

function startFade() {
	if (this.delay != 0) {
		//* E' stato richiesto un ritardo nella partenza del fade....
		this.idDelay = setTimeout("delayFade('" + this.idImage + "')", this.delay);
	} else {
		//* Ok, nessun ritardo richiesto... avvio direttamente il ciclo..
		this.idInterval = setInterval("fade('" + this.idImage + "')", this.interval);
	}
}

function delayFade(idImage) {
	var jsO = document.getElementById(idImage).jsObject;
	jsO.idInterval = setInterval("fade('" + jsO.idImage + "')", jsO.interval);
}

function fade(idImage) {

	var jsO = document.getElementById(idImage).jsObject;
	
	if (jsO.imgCollection != null) {
	 
		if (jsO.currImage == null) {
			jsO.currImage = jsO.imgCollection;
		}
			
		if (jsO.isSupported) {
			jsO.img.filters.blendTrans.apply();
		}	
		
		jsO.img.src = jsO.currImage.img.src;
		
		if (jsO.isSupported) {
			jsO.img.filters.blendTrans.play();
		}	
		
		jsO.currImage = jsO.currImage.nextImage;
		if (jsO.currImage == null) {
			if (jsO.loop) {
				jsO.currImage = jsO.imgCollection;
			} else {
				clearInterval(jsO.idInterval);
			}
		}
		
	}
}


