/*


_____
	Fade Script Version 2.3
	http://anarchos.xs.mw/fade.phtml
	(c) Mar 2001
	
	Creator:			Anarchos > anarchos.xs.mw
	uniqueID upgrade:		DubMatrix > http://www.princefari.com
	dehexize function:		Litejet > litejet@hotmail.com
	Fade, hex, setColor functions:	Dak Phoenix > phoenix-archetypes.com
	domouseover/out based on:	The Shadow  > www.icon.co.za/~andrewk

*/


startColor	= "#0099FF";	// initial link color
endColor	= "#ffffff";	// final link color
stepIn		= 20; 		// delay when fading in
stepOut		= 40; 		// delay when fading out
autoFade 	= true;		// activate ?
sloppyClass	= false;	// set all css "fade" classes to fade


hexa = new makearray(16);
for(var i = 0; i < 10; i++)
    hexa[i] = i;
hexa[10]="a"; hexa[11]="b"; hexa[12]="c";
hexa[13]="d"; hexa[14]="e"; hexa[15]="f";

document.onmouseover = domouseover;
document.onmouseout = domouseout;

startColor = dehexize(startColor.toLowerCase());
endColor = dehexize(endColor.toLowerCase());

var fadeId = new Array();

function dehexize(Color){
	var colorArr = new makearray(3);
	for (i=1; i<7; i++){
		for (j=0; j<16; j++){
			if (Color.charAt(i) == hexa[j]){
				if (i%2 !=0)
					colorArr[Math.floor((i-1)/2)]=eval(j)*16;
				else
					colorArr[Math.floor((i-1)/2)]+=eval(j);
			}
		}
	}
	return colorArr;
}

function domouseover() {
  if(document.all){
  	var srcElement = event.srcElement;
  	if ((srcElement.tagName == "A" && autoFade) || srcElement.className == "fade" || (sloppyClass && srcElement.className.indexOf("fade") != -1))
        fade(startColor,endColor,srcElement.uniqueID,stepIn);
   }
}

function domouseout() {
  if (document.all){
  	var srcElement = event.srcElement;
    if ((srcElement.tagName == "A" && autoFade) || srcElement.className == "fade" || (sloppyClass && srcElement.className.indexOf("fade") != -1))
        fade(endColor,startColor,srcElement.uniqueID,stepOut);
    }
}

function makearray(n) {
    this.length = n;
    for(var i = 1; i <= n; i++)
        this[i] = 0;
    return this;
}

function hex(i) {
    if (i < 0)
        return "00";
    else if (i > 255)
        return "ff";
    else
       return "" + hexa[Math.floor(i/16)] + hexa[i%16];}

function setColor(r, g, b, element) {
      var hr = hex(r); var hg = hex(g); var hb = hex(b);
      element.style.color = "#"+hr+hg+hb;
}

function fade(s,e, element,step){
	var sr = s[0]; var sg = s[1]; var sb = s[2];
	var er = e[0]; var eg = e[1]; var eb = e[2];
	
	if (fadeId[0] != null && fade[0] != element){
		setColor(sr,sg,sb,eval(fadeId[0]));
		var i = 1;
		while(i < fadeId.length){
			clearTimeout(fadeId[i]);
			i++;
			}
		}
		
    for(var i = 0; i <= step; i++) {
    	fadeId[i+1] = setTimeout("setColor(Math.floor(" +sr+ " *(( " +step+ " - " +i+ " )/ " +step+ " ) + " +er+ " * (" +i+ "/" +
			step+ ")),Math.floor(" +sg+ " * (( " +step+ " - " +i+ " )/ " +step+ " ) + " +eg+ " * (" +i+ "/" +step+
			")),Math.floor(" +sb+ " * ((" +step+ "-" +i+ ")/" +step+ ") + " +eb+ " * (" +i+ "/" +step+ ")),"+element+");",i*step);
		}
	fadeId[0] = element;
}


/** image fade begins below. biaatch! **/


if(!window.JSFX)
	JSFX=new Object();

JSFX.FadeImageRunning = false;


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=10;

		if(img.state == null)
		{
			img.state	 = "OFF";
			img.upStep	 = step;
			img.downStep = step;
			if(img.filters)
				img.minOpacity =  img.filters.alpha.opacity;
			else
//				img.minOpacity  = parseInt(img.style.MozOpacity);
				img.minOpacity  = 40;

			img.index = img.minOpacity;
			
		}
		if(img.state == "OFF")
		{
			img.upStep  = step;
			img.state = "FADE_UP";
			JSFX.startImageFading();
		}
		else if( img.state == "FADE_UP_DOWN"
			|| img.state == "FADE_DOWN")
		{
			img.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=10;
		img.downStep  = step;

		if(img.state=="ON")
		{
			img.state="FADE_DOWN";
			JSFX.startImageFading();
		}
		else if(img.state == "FADE_UP")
		{
			img.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.state)
		{
			if(img.state == "FADE_UP")
			{
				if(img.index < 100)
					img.index+=img.upStep;
				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.FadeImageRunning = true;
			}
			else if(img.state == "FADE_UP_DOWN")
			{
				if(img.index < 100)
					img.index+=img.upStep;
				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_DOWN";
				JSFX.FadeImageRunning = true;
			}
			else if(img.state == "FADE_DOWN")
			{
				if(img.index > img.minOpacity)
					img.index-=img.downStep;
				else
					img.index = img.minOpacity;
				if(img.filters)
					img.filters.alpha.opacity = img.index;
				else
					img.style.MozOpacity = img.index + "%";

				if(img.index == img.minOpacity)
					img.state="OFF";
				else
					JSFX.FadeImageRunning = true;
			}
		}
	}

	if(JSFX.FadeImageRunning)
		setTimeout("JSFX.FadeImageAnimation()", 40);
}

