var if_faders=Array();
function imagefade(img,container,trans,pause,fadeintime) {
	fader=new if_fader(img,container,trans,pause,fadeintime);
	if_faders.push(fader);
	fader.fader=if_faders.length-1;
	return fader;
}

function if_fader(img,container,trans,pause,fadeintime) {
	this.fader=0;
	this.trans=trans;
	this.pause=pause;
	this.fadeintime=fadeintime;
	this.frequency=100;
	this.img=img;
	this.container=container;
	this.images=Array();

	this.img_current=0;
	this.img_total=0;
	this.img_next=0;
	this.fade_step=0;
	this.add_image=function(src) {
		if(!this.images.length && !this.fadeintime)
			this.img.src=src;
		this.images.push(src);
		this.img_total++;
	}

	this.next=function() {	
		if(this.interval)
			clearInterval(this.interval);
		this.img_next++;
		if(this.img_next==this.img_total)
			this.img_next=0;
		this.set_opacity(this.img,100);
		this.container.style.backgroundImage='url('+this.images[this.img_next]+')';
		this.fade_step=0;
		this.fade_total=1000*this.trans / this.frequency;
		//this.interval=setInterval("if_faders["+this.fader+"].fade();",5000);
		if_faders[this.fader].fade();

	}
	this.fade=function() {
		if(this.interval)
			clearInterval(this.interval);
		this.fade_step++;
		opacity=100-(this.fade_step/this.fade_total*100);
		this.set_opacity(this.img,opacity);
		if(opacity<0) {
			this.interval=setInterval("if_faders["+this.fader+"].next();",1000*this.pause);
			this.img.src=this.images[this.img_next];
		}
		else {
			this.interval=setInterval("if_faders["+this.fader+"].fade();",this.frequency);
		}
	}
	this.fadein=function() {
		if(this.interval)
			clearInterval(this.interval);
		this.fade_step++;
		opacity=this.fade_step/this.fade_total*100;
		this.set_opacity(this.img,opacity);
		if(opacity>100) {
			this.interval=setInterval("if_faders["+this.fader+"].next();",1000*this.pause);
			this.img.src=this.images[this.img_next];
		}
		else {
			this.interval=setInterval("if_faders["+this.fader+"].fadein();",this.frequency);
		}
	}
	this.set_opacity=function(obj, opacity) {
	    opacity = (opacity == 100)?99.999:opacity;

	    // IE/Win
		try {
			obj.style.filter = "alpha(opacity:"+opacity+")";
	    }
		catch(e) {
		}
	    // Safari<1.2, Konqueror
		try {
			obj.style.KHTMLOpacity = opacity/100;
		}
		catch(e) {
		}
	    // Older Mozilla and Firefox
		try {
			obj.style.MozOpacity = opacity/100;
		}
		catch(e) {
		}
	    // Safari 1.2, newer Firefox and Mozilla, CSS3
		try {
			obj.style.opacity = opacity/100;
		}
		catch(e) {
		}
	}
	this.start=function() {
		if(!this.fadeintime)
			this.interval=setInterval("if_faders["+this.fader+"].next();",1000*this.pause);
		else {

			this.fade_step=0;
			this.fade_total=1000*this.fadeintime / this.frequency;
			this.img.src=this.images[this.img_next];
			this.set_opacity(this.img,0);
			this.fadein();
		}
	}




}
