/*****************************************\
||       Fade Script Version 2.2         ||
||   http://anarchos.xs.mw/fade.phtml    ||
||              (c) Jan 2001             ||
|| ___________________________________   ||
||                                       ||
|| Created by:                           ||
|| Anarchos    > anarchos.xs.mw          ||
|| ___________________________________   ||
||                                       ||
|| Color conversion from decimal to      ||
|| hex (dehexize function) by:           ||
|| Litejet > litejet@hotmail.com         ||
|| ___________________________________   ||
||                                       ||
|| Fade, hex, setColor functions by:     ||
|| Dak Phoenix > phoenix-archetypes.com  ||
|| ___________________________________   ||
|| 	  					                 ||
|| domouseover/out based on scripts by   ||
|| The Shadow  > www.icon.co.za/~andrewk ||
|| 	  					                 ||
\*****************************************/

/*************
**** <config>
**/

startColor = "#cccccc"; // initial link color
endColor = "#ffffff";  // final link color

stepIn = 17; // delay when fading in
stepOut = 27; // delay when fading out

debugIt = true; // set debug to true or false
sloppyClass = false; //set to true or false

/** 
**** </config>
**************/

/*************
**** <install>
**

Now, once you have customized your fading colors,
you need to include your customized .js file on
every page that you want to use it in. You can
include javascript files using this syntax (in
the head of a document):

<script src="fade.js" language="Javascript"></script>

Now that you have the file included, you need to
setup your links a small bit.  Each link that you
want to fade needs to have it's own _unique_ name
and must use the fade class.

Example:

<a href="blah.html" name="fading_link_1" class= "fade">click here</a>

Also, the link must be plain text.  This means
that you can't have <b>'s, <i>'s, <font>'s, etc.
inside of the link.

Example of what not to do:

<a href="blah.html" name="fading_link_1" class="fade"><b>click</b> here</a>

Have fun!
-Anarchos-

** 
**** </install>
**************/

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){
  	srcElement = event.srcElement;
  	if (srcElement.className == "fade" || (sloppyClass && srcElement.className.indexOf("fade") != -1)) {
      	var linkName = srcElement.name;
        if (eval(linkName).length > 1){
            if (debugIt)
                alert("Fade error: " + eval(linkName).length + " links are named " + linkName + ".");
            }
        else   	
      	    fade(startColor,endColor,linkName,stepIn);
      	}
         }
}

function domouseout() {
  if (document.all){
  	srcElement = event.srcElement;
  	if (srcElement.className == "fade" || (sloppyClass && srcElement.className.indexOf("fade") != -1)) {
      	var linkName = srcElement.name;    	
        if (eval(linkName).length > 1){
            }
        else
           	fade(endColor,startColor,linkName,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;
}


