var startColor = new Array(0xcc,0x66,0x00);
var endColor = new Array(0x00,0x00,0x00);
var stepIn = 35;
var stepOut = 25;
var hexa = new Array(0,1,2,3,4,5,6,7,8,9,"a","b","c","d","e","f");
var fadeId = new Array();
var elementNeu,elementAlt;

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

function domouseover(e)
{
  elementNeu = document.all ? event.srcElement : e.target.parentNode;
  if (elementNeu.tagName == "A")
  {
    fade(startColor,endColor,stepIn);
  }
}

function domouseout(e)
{
  elementNeu = document.all ? event.srcElement : e.target.parentNode;
  if (elementNeu.tagName == "A")
    fade(endColor,startColor,stepOut);
}

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

function setColor(r, g, b)
{
  elementAlt.style.color = "#"+hex(r)+hex(g)+hex(b);
}

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

