/**
* File    : JSFX_ImageFader.js  © JavaScript-FX.com
* Created : 2001/08/31
* Author  : Roy Whittle  (Roy@Whittle.com) www.Roy.Whittle.com
**/
if(!window.JSFX)
	JSFX=new Object();

JSFX.FadeImageRunning    = false;
JSFX.FadeImageMinOpacity = 30;
JSFX.FadeImageAutoUp	 = 10;
JSFX.FadeImageAutoDown   = 10;
JSFX.FadeImageSavedOver  = null;
JSFX.FadeImageSavedOut   = null;
document.write('<STYLE TYPE="text/css">.imageFader{ position:relative; filter:alpha(opacity='+JSFX.FadeImageMinOpacity+'); -moz-opacity:'+JSFX.FadeImageMinOpacity/101+'}</STYLE>');

JSFX.fadeImage_actionOnMouseOver = function(e){
	srcElement=e ? e.target : event.srcElement;

	if(srcElement.className && srcElement.className=="imageFader")
		JSFX.fadeUp(srcElement);

	if(JSFX.FadeImageSavedOver != null)
		JSFX.FadeImageSavedOver(e);
}
JSFX.fadeImage_actionOnMouseOut = function(e){
	srcElement=e ? e.target : event.srcElement;

	if(srcElement.className && srcElement.className=="imageFader")
		JSFX.fadeDown(srcElement);

	if(JSFX.FadeImageSavedOut != null)
		JSFX.FadeImageSavedOut(e);
}
JSFX.fadeImageAuto = function(minOpacity,stepUp,stepDown){
	if(minOpacity)
		JSFX.FadeImageMinOpacity = minOpacity;
	if(stepUp)
		JSFX.FadeImageAutoUp	= stepUp;
	if(stepDown)
		JSFX.FadeImageAutoDown	= stepDown;

	JSFX.FadeImageSavedOver = document.onmouseover;
	JSFX.FadeImageSavedOut  = document.onmouseout;

	document.onmouseover	= JSFX.fadeImage_actionOnMouseOver ;
	document.onmouseout	= JSFX.fadeImage_actionOnMouseOut ;
	JSFX.setMinOpacity(JSFX.FadeImageMinOpacity);
}
JSFX.setMinOpacity = function(minOpacity){
	if(document.layers) return;
	for(i=0 ; i<document.images.length ; i++){
		var img = document.images[i];
		if(img.className=="imageFader"){
			if(img.filters)
				img.filters.alpha.opacity = JSFX.FadeImageMinOpacity;
			else
				img.style.MozOpacity = JSFX.FadeImageMinOpacity/101;
		}
	}
}
JSFX.fadeUpImg = function(imgName, step){
	if(document.layers || window.opera)
		return;

	img = document.images[imgName];
	if(img)
		JSFX.fadeUp(img, step);
}
JSFX.fadeUp = function(img, step){
	if(img){
		if(!step) step=JSFX.FadeImageAutoUp;

		if(img.fade == null){
			img.fade = new Object();
			img.fade.state	 = "OFF";
			img.fade.upStep	 = step;
			img.fade.downStep  = step;
			img.fade.minOpacity  = JSFX.FadeImageMinOpacity;
			img.fade.index = img.fade.minOpacity;
		}
		if(img.fade.state == "OFF"){
			img.fade.upStep  = step;
			img.fade.state = "FADE_UP";
			JSFX.startImageFading();
		}
		else if( img.fade.state == "FADE_UP_DOWN" || img.fade.state == "FADE_DOWN"){
			img.fade.upStep  = step;
			img.fade.state = "FADE_UP";
		}
	}
}
JSFX.fadeDownImg = function(imgName, step){
	if(document.layers || window.opera)
		return;

	img = document.images[imgName];
	if(img)
		JSFX.fadeDown(img, step);
}
JSFX.fadeDown = function(img, step){
	if(img){
		if(!step) step=JSFX.FadeImageAutoDown;

		if(img.fade.state=="ON"){
			img.fade.downStep  = step;
			img.fade.state="FADE_DOWN";
			JSFX.startImageFading();
		}
		else if(img.fade.state == "FADE_UP"){
			img.fade.downStep  = step;
			img.fade.state="FADE_UP_DOWN";
		}
	}
}
JSFX.startImageFading = function(){
	if(!JSFX.FadeImageRunning)
		JSFX.FadeImageAnimation();
}
JSFX.FadeImageAnimation = function(){
	JSFX.FadeImageRunning = false;
	for(i=0 ; i<document.images.length ; i++){
		var img = document.images[i];
		if(img.fade){
			if(img.fade.state == "FADE_UP"){
				img.fade.index+=img.fade.upStep;
				if(img.fade.index > 100)
					img.fade.index = 100;

				if(img.filters)
					img.filters.alpha.opacity = img.fade.index;
				else
					img.style.MozOpacity = img.fade.index/101;

				if(img.fade.index == 100)
					img.fade.state="ON";
				else
					JSFX.FadeImageRunning = true;
			}
			else if(img.fade.state == "FADE_UP_DOWN"){
				img.fade.index+=img.fade.upStep;
				if(img.fade.index > 100)
					img.fade.index = 100;

				if(img.filters)
					img.filters.alpha.opacity = img.fade.index;
				else
					img.style.MozOpacity = img.fade.index/101;

				if(img.fade.index == 100)
					img.fade.state="FADE_DOWN";
				JSFX.FadeImageRunning = true;
			}
			else if(img.fade.state == "FADE_DOWN"){
				img.fade.index-=img.fade.downStep;
				if(img.fade.index < img.fade.minOpacity)
					img.fade.index = img.fade.minOpacity;

				if(img.filters)
					img.filters.alpha.opacity = img.fade.index;
				else
					img.style.MozOpacity = img.fade.index/101;

				if(img.fade.index == img.fade.minOpacity)
					img.fade.state="OFF";
				else
					JSFX.FadeImageRunning = true;
			}
		}
	}
	if(JSFX.FadeImageRunning)
		setTimeout("JSFX.FadeImageAnimation()",40);
}
