var FadeInStep 	=15;
var FadeOutStep=15;

if(!window.JSFX)
	JSFX=new Object();

JSFX.RolloverObjects=new Array();

JSFX.Rollover=function(name,img){
	JSFX.RolloverObjects[name]=new Image();
	JSFX.RolloverObjects[name].img_src=img;	
	if(!JSFX.Rollover.postLoad)
		JSFX.RolloverObjects[name].src=img;
}
JSFX.Rollover.postLoad=false;
JSFX.Rollover.loadImages=function(){
	var i;
	for(i in JSFX.RolloverObjects)
	{
		r=JSFX.RolloverObjects[i];
		r.src=r.img_src;
	}
}
JSFX.Rollover.error=function(n){
		alert("JSFX.Rollover - An Error has been detected\n"
			+"----------------------------------\n"
			+"You must define a JSFX.Rollover in your document\n"
			+"JSFX.Rollover(\""+n+"\",\"yourimageon.ext\")\n"
			+"(check the spelling of your JSFX.Rollovers)");
}

JSFX.findImg=function(n,d) {
	var img=d.images[n];
	if(!img && d.layers)  
		for(var i=0;!img && i<d.layers.length;i++) 
			img=JSFX.findImg(n,d.layers[i].document);

	
	if(!img)
	{
		alert("JSFX.findImg - An Error has been detected\n"
			+"----------------------------------\n"
			+"You must define an image in your document\n"
			+"<IMG SRC=\"your_image.ext\" NAME=\""+n+"\">\n"
			+"(check the NAME= attribute of your images)");

		return(new Image());
	}
	return img;
}

JSFX.ImageFadeRunning=false;
JSFX.ImageFadeInterval=2;


JSFX.imgFadeIn=function(img,imgSrc){
	if(img) 
	{
		if(img.state==null) 
		{
			img.state="OFF";
			img.index=0;
			img.next_on=null;
		}

		if(img.state=="OFF")
		{
			img.src=imgSrc;
			img.currSrc=imgSrc;
			img.state="FADE_IN";
			JSFX.startFading();
		}
		else if(img.state=="FADE_IN_OUT"
			||img.state=="FADE_OUT_IN"
			||img.state=="FADE_OUT")
		{
			if(img.currSrc==imgSrc)
				img.state="FADE_IN";
			else
			{

				img.next_on=imgSrc;
				img.state="FADE_OUT_IN";
			}
		}
	}
}

JSFX.imgFadeOut=function(img){
	if(img)
	{
		if(img.state=="ON")
		{
			img.state="FADE_OUT";
			JSFX.startFading();
		}
		else if(img.state=="FADE_IN")
		{
			img.state="FADE_IN_OUT";
		}
		else if(img.state=="FADE_OUT_IN")
		{
			img.next_on==null;
			img.state="FADE_OUT";
		}
	}
}

JSFX.startFading=function(){
	if(!JSFX.ImageFadeRunning)
		JSFX.ImageFadeAnimation();
}


JSFX.ImageFadeAnimation=function(){
	JSFX.ImageFadeRunning=false;
	for(i=0;i<document.images.length;i++)
	{
		var img=document.images[i];
		if(img.state)
		{
			if(img.state=="FADE_IN")
			{
				if(img.index<100)
					img.index+=FadeInStep;
				else
					img.index=100;

				if(img.filters)
					img.filters.alpha.opacity=img.index;
				else
					img.style.MozOpacity=img.index+"%"

				if(img.index==100)
					img.state="ON";
				else
					JSFX.ImageFadeRunning=true;
			}
			else if(img.state=="FADE_IN_OUT")
			{
				if(img.index<100)
					img.index+=FadeInStep;
				else
					img.index=100;

				if(img.filters)
					img.filters.alpha.opacity=img.index;
				else 
					img.style.MozOpacity=img.index+"%";

	
				if(img.index==100)
					img.state="FADE_OUT";

				JSFX.ImageFadeRunning=true;
			}
			else if(img.state=="FADE_OUT")
			{
				if(img.index>0)
					img.index-=FadeOutStep;
				else
					img.index=0;
				if(img.filters)
					img.filters.alpha.opacity=img.index;
				else
					img.style.MozOpacity=img.index+"%";


				if(img.index==0)
					img.state="OFF";
				else
					JSFX.ImageFadeRunning=true;
			}
			else if(img.state=="FADE_OUT_IN")
			{
				if(img.index>0)
					img.index-=FadeOutStep;
				else
					img.index=0;
				if(img.filters)
					img.filters.alpha.opacity=img.index;
				else
					img.style.MozOpacity=img.index+"%";


				if(img.index==0)
				{
					img.src=img.next_on;
					img.currSrc=img.next_on;
					img.state="FADE_IN";
				}
				JSFX.ImageFadeRunning=true;
			}
		}
	}
	
	if(JSFX.ImageFadeRunning)
		setTimeout("JSFX.ImageFadeAnimation()",JSFX.ImageFadeInterval);
}

JSFX.hasOpacity=function(obj){
	if(document.layers)
		return false;

	if(window.opera)
		return false;

	return true;
}

JSFX.fadeIn=function(imgName,rollName){
	if(rollName==null)
		rollName=imgName;

	
	if(!JSFX.RolloverObjects[rollName])
	{
		JSFX.Rollover.error(rollName);
		return;
	}

	var img=JSFX.findImg(imgName,document);
	if(JSFX.hasOpacity(img))
		JSFX.imgFadeIn(img,JSFX.RolloverObjects[rollName].img_src);
	else
	{
		if(img.offSrc==null)
			img.offSrc=img.src;
		img.src=JSFX.RolloverObjects[rollName].img_src;
	}
}
JSFX.fadeOut=function(imgName){
	var img=JSFX.findImg(imgName,document);
	if(JSFX.hasOpacity(img))
		JSFX.imgFadeOut(img);
	else
		img.src=img.offSrc;
}

JSFX.imgOn=function(imgName,rollName){
	if(rollName==null)
		rollName=imgName;

	
	if(!JSFX.RolloverObjects[rollName])
	{
		JSFX.Rollover.error(rollName);
		return;
	}
	var img=JSFX.findImg(imgName,document);
	if(img.offSrc==null)
		img.offSrc=img.src;
	img.src=JSFX.RolloverObjects[rollName].img_src;
}
JSFX.imgOff=function(imgName){
	var img=JSFX.findImg(imgName,document);
	img.src=img.offSrc;
}
