flhexa = new flmakearray(16);
for(var fli = 0; fli < 10; fli++)
{
	flhexa[fli] = fli;
}
flhexa[10]="a";
flhexa[11]="b";
flhexa[12]="c";
flhexa[13]="d";
flhexa[14]="e";
flhexa[15]="f";

var flversion = parseInt(navigator.appVersion)
var flappName = navigator.appName
var fln4 = flversion>=4 && flappName=="Netscape"

document.onmouseover = (fln4) ? doflmouseover2 : doflmouseover;
document.onmouseout = (fln4) ? doflmouseout2 : doflmouseout;

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

var flfadeId = new Array();

function dehexize(flColor)
{
	var flcolorArr = new flmakearray(3);
	for (fli=1; fli<7; fli++)
	{
		for (flj=0; flj<16; flj++)
		{
			if (flColor.charAt(fli) == flhexa[flj])
			{
				if (fli%2 !=0)
				{
					flcolorArr[Math.floor((fli-1)/2)]=eval(flj)*16;
				}
				else
				{
					flcolorArr[Math.floor((fli-1)/2)]+=eval(flj);
				}
			}
		}
	}
	return flcolorArr;
}

function doflmouseover()
{
	if(document.all)
	{
		var flsrcElement = event.srcElement;
		for(flii=0;flii<flfadeClasses.length;flii++)
		{
			if((flsrcElement.className==flfadeClasses[flii])&&(flsrcElement.className!=''))
			{
				flstartColor = dehexize(flstartColors[flii].toLowerCase());
				flendColor = dehexize(flendColors[flii].toLowerCase());
				flsloppyFade = 1;
			}
			else
			{
				flstartColor = dehexize(flstartColors[0].toLowerCase());
				flendColor = dehexize(flendColors[0].toLowerCase());
				flsloppyFade = 0;
			}
		}
		if ((flsrcElement.tagName == "A" && flautoFade) || flsrcElement.className == "fade" || (flsloppyClass && flsrcElement.className.indexOf("fade") != -1) || (flsloppyClass && flsloppyFade))
		{
			flfade(flstartColor,flendColor,flsrcElement.uniqueID,flstepIn);
		}
	}
}

function doflmouseover2(event)
{
	var flsrcElement = event.target;
	for(flii=0;flii<flfadeClasses.length;flii++)
	{
		if((flsrcElement.className==flfadeClasses[flii])&&(flsrcElement.className!=''))
		{
			flstartColor = dehexize(flstartColors[flii].toLowerCase());
			flendColor = dehexize(flendColors[flii].toLowerCase());
			flsloppyFade = 1;
		}
		else
		{
			flstartColor = dehexize(flstartColors[0].toLowerCase());
			flendColor = dehexize(flendColors[0].toLowerCase());
			flsloppyFade = 0;
		}
	}
	if ((flsrcElement.tagName == "A" && flautoFade) || flsrcElement.className == "fade" || (flsloppyClass && flsrcElement.className.indexOf("fade") != -1) || (flsloppyClass && flsloppyFade))
	{
		flfade2(flstartColor,flendColor,flsrcElement,flstepOut);
	}
}

function doflmouseout()
{
	if(document.all)
	{
		var flsrcElement = event.srcElement;
		for(flii=0;flii<flfadeClasses.length;flii++)
		{
			if((flsrcElement.className==flfadeClasses[flii])&&(flsrcElement.className!=''))
			{
				flstartColor = dehexize(flstartColors[flii].toLowerCase());
				flendColor = dehexize(flendColors[flii].toLowerCase());
				flsloppyFade = 1;
			}
			else
			{
				flstartColor = dehexize(flstartColors[0].toLowerCase());
				flendColor = dehexize(flendColors[0].toLowerCase());
				flsloppyFade=0;
			}
		}
		if ((flsrcElement.tagName == "A" && flautoFade) || flsrcElement.className == "fade" || (flsloppyClass && flsrcElement.className.indexOf("fade") != -1) || (flsloppyClass && flsloppyFade))
		{
			flfade(flendColor,flstartColor,flsrcElement.uniqueID,flstepOut);
		}
	}
}

function doflmouseout2(event)
{
	var flsrcElement = event.target;
	for(flii=0;flii<flfadeClasses.length;flii++)
	{
		if((flsrcElement.className==flfadeClasses[flii])&&(flsrcElement.className!=''))
		{
			flstartColor = dehexize(flstartColors[flii].toLowerCase());
			flendColor = dehexize(flendColors[flii].toLowerCase());
			flsloppyFade = 1;
		}
		else
		{
			flstartColor = dehexize(flstartColors[0].toLowerCase());
			flendColor = dehexize(flendColors[0].toLowerCase());
			flsloppyFade = 0
		}
	}
	if ((flsrcElement.tagName == "A" && flautoFade) || flsrcElement.className == "fade" || (flsloppyClass && flsrcElement.className.indexOf("fade") != -1) || (flsloppyClass && flsloppyFade))
	{
		flfade2(flendColor,flstartColor,flsrcElement,flstepOut);
	}
}

function flmakearray(fln)
{
	this.length = fln;
	for(var fli = 1; fli <= fln; fli++)
	{
		this[fli] = 0;
	}
	return this;
}

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

function flsetColor(r, g, b, element)
{
	var flhr = flhex(r);
	var flhg = flhex(g);
	var flhb = flhex(b);
	element.style.color = "#"+flhr+flhg+flhb;
}

function flfade(s,e, element,step)
{
//alert("in flfade");

	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 (flfadeId[0] != null && flfade[0] != element)
	{
		flsetColor(sr,sg,sb,eval(flfadeId[0]));
		var fli = 1;
		while(fli < flfadeId.length)
		{
			clearTimeout(flfadeId[fli]);
			fli++;
		}
	}


        // Internet Explorer timeout structure
	for(var fli = 0; fli <= step; fli++)
	{

		flfadeId[fli+1] = setTimeout("flsetColor(Math.floor(" + sr + " *(( " + step + " - " + fli + " )/ " + step + " ) + " + er + " * (" + fli + "/" + step + ")),Math.floor(" + sg + " * (( " + step + " - " + fli + " )/ " + step + " ) + " + eg + " * (" + fli + "/" + step + ")),Math.floor(" + sb + " * ((" + step + "-" + fli + ")/" + step + ") + " + eb + " * (" + fli + "/" + step + "))," + element + ");", fli*step);
	}


	flfadeId[0] = element;

}

function flfade2(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 (flfadeId[0] != null && flfade[0] != element)
	{
		flsetColor(sr,sg,sb,eval(flfadeId[0]));
		var fli = 1;
		while(fli < flfadeId.length)
		{
			clearTimeout(flfadeId[fli]);
			fli++;
		}
	}
        // Gecko timeout structure
  for(var fli = 0; fli <= step; fli++)
	{
		flfadeId[fli+1] = setTimeout(
			flsetColor,
			fli*step,
			Math.floor(sr*((step-fli)/step) + er*(fli/step)),
			Math.floor(sg*((step-fli)/step) + eg*(fli/step)),
			Math.floor(sb*((step-fli)/step) + eb*(fli/step)),
			element
		);
	}
	flfadeId[0] = element;
} 