// Link fade script
//
// In HTML-body add:	<SCRIPT SRC="fade.js" LANGUAGE="Javascript"></SCRIPT>
// In links add:		<A ... CLASS=fade>
//

fadeColor = "#0080FF"; 	// Fade highlight color
stepIn = 11; 			// Fade in delay
stepOut = 27;			// Fade out delay
autoFade = true;

document.onmouseover = onmouseover;
document.onmouseout = onmouseout;

var fadeId = new Array();

hex2stra = new makearray(16);
for (var i = 0; i < 10; i++)
    hex2stra[i] = i;
hex2stra[10]="a"; hex2stra[11]="b"; hex2stra[12]="c";
hex2stra[13]="d"; hex2stra[14]="e"; hex2stra[15]="f";

fadeColor = hex2str2clr(fadeColor.toLowerCase());

function hex2str2clr(Color){
	var colorArr = new makearray(3);
	for (i=1; i<7; i++){
		for (j=0; j<16; j++){
			if (Color.charAt(i) == hex2stra[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 onmouseover()
{
	if (!document.all) return;
	var srcElement = event.srcElement;
	if (((srcElement.tagName == "A") && autoFade && (srcElement.className != "nofade")) || (srcElement.className == "fade")) {
		if (!srcElement.startColor) {
			srcElement.startColor = (srcElement.style.color) ? srcElement.style.color : srcElement.currentStyle.color;
			srcElement.startColor = hex2str2clr(srcElement.startColor.toLowerCase());
		}
		if (srcElement.uniqueID) fade(srcElement.startColor, fadeColor, srcElement.uniqueID, stepIn);				
	}
}

function onmouseout()
{
	if (!document.all) return;
	var srcElement = event.srcElement;
	if (((srcElement.tagName == "A") && autoFade && (srcElement.className != "nofade")) || (srcElement.className == "fade")) {
		if (srcElement.uniqueID) fade(fadeColor, srcElement.startColor, srcElement.uniqueID, stepOut);
	}
}

function makearray(n)
{
    this.length = n;
    for (var i = 1; i <= n; i++)
        this[i] = 0;
    return this;
}

function hex2str(i)
{
    if (i < 0)
        return "00";
    else if (i > 255)
        return "ff";
    else
       return "" + hex2stra[Math.floor(i/16)] + hex2stra[i%16];
}

function setColor(r, g, b, element)
{
      element.style.color = "#" + hex2str(r) + hex2str(g) + hex2str(b);
}

function fade(s, d, element, step)
{
	var sr = s[0]; var sg = s[1]; var sb = s[2];
	var dr = d[0]; var dg = d[1]; var db = d[2];
	
	if ((fadeId[0] != null) && (fade[0] != element) && eval(fadeId[0])) {
		var orig = eval(fadeId[0]);
		setColor(orig.startColor[0], orig.startColor[1], orig.startColor[2], orig);
		for (var i = 1; i < fadeId.length; i++)
			clearTimeout(fadeId[i]);
	}
		
	for (var i = 0; i <= step; i++) {
		fadeId[i+1] = setTimeout("setColor(Math.floor(" +sr+ " *(( " +step+ " - " +i+ " )/ " +step+ " ) + " +dr+ " * (" +i+ "/" +
			step+ ")),Math.floor(" +sg+ " * (( " +step+ " - " +i+ " )/ " +step+ " ) + " +dg+ " * (" +i+ "/" +step+
			")),Math.floor(" +sb+ " * ((" +step+ "-" +i+ ")/" +step+ ") + " +db+ " * (" +i+ "/" +step+ ")),"+element+");",i*step);
	}
	fadeId[0] = element;
}

