function intToHex(l) {
  var h="0123456789ABCDEF"
  return h.charAt(Math.floor(l/16))+h.charAt(l%16);
}

var f=new Array();

function createFade(id, rs,gs,bs, re,ge,be, st, inv) {
  var n=f.length+1;
  f[n] = new Object();
  f[n].started=false;
  f[n].id=id;
  f[n].rs=rs;
  f[n].gs=gs;
  f[n].bs=bs;
  f[n].re=re;
  f[n].ge=ge;
  f[n].be=be;
  f[n].r=rs;
  f[n].g=gs;
  f[n].b=bs;
  f[n].rd=re-rs;
  f[n].gd=ge-gs;
  f[n].bd=be-bs;
  f[n].st=0;
  f[n].sta=st;
  f[n].inv=inv;

  f[n].step = function() {
    if (f[n].st==0) return;
    f[n].r+=f[n].ri;
    f[n].g+=f[n].gi;
    f[n].b+=f[n].bi;
    document.getElementById(f[n].id).style.color=intToHex(Math.round(f[n].r))+intToHex(Math.round(f[n].g))+intToHex(Math.round(f[n].b));
    f[n].st--;
  }

  f[n].start = function() {  
    if (!f[n].started) f[n].started=true;
    f[n].ri=f[n].rd/f[n].sta;
    f[n].gi=f[n].gd/f[n].sta;
    f[n].bi=f[n].bd/f[n].sta;
    var d=(f[n].ri!=0?f[n].re-f[n].r:f[n].gi!=0?f[n].ge-f[n].g:f[n].bi!=0?f[n].be-f[n].b:0);
    var i=(f[n].ri!=0?f[n].ri:f[n].gi!=0?f[n].gi:f[n].bi!=0?f[n].bi:1);
    f[n].st=Math.round(d/i);
  }

  f[n].end = function() {
    if (!f[n].started) return;
    f[n].ri=-f[n].rd/f[n].sta;
    f[n].gi=-f[n].gd/f[n].sta;
    f[n].bi=-f[n].bd/f[n].sta;
    var d=(f[n].ri!=0?f[n].r-f[n].rs:f[n].gi!=0?f[n].g-f[n].gs:f[n].bi!=0?f[n].b-f[n].bs:0);
    var i=(f[n].ri!=0?f[n].ri:f[n].gi!=0?f[n].gi:f[n].bi!=0?f[n].bi:1);
    f[n].st=Math.abs(Math.round(d/i));
  }

  document.getElementById(f[n].id).style.color=intToHex(Math.round(f[n].r))+intToHex(Math.round(f[n].g))+intToHex(Math.round(f[n].b));
  document.getElementById(f[n].id).onmouseover=f[n].start;
  document.getElementById(f[n].id).onmouseout=f[n].end;
  setInterval("f["+n+"].step()", f[n].inv);
}

