
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 hexnumtodec(hexchar) {
   if (parseInt(hexchar) == hexchar) return Number(hexchar)
   hexchar = hexchar.toUpperCase()
   switch (hexchar) {
      case 'A': return 10; break;
      case 'B': return 11; break;
      case 'C': return 12; break;
      case 'D': return 13; break;
      case 'E': return 14; break;
      case 'F': return 15; break;
   }
}
function hextodec(daHex) {
   var daDec = Number((16 * hexnumtodec(daHex.substring(0,1))) + hexnumtodec(daHex.substring(1,2)))
   return daDec
}

function setColor(r,g,b) {
   var hr = hex(r); var hg = hex(g); var hb = hex(b);
   var daColor = "#"+hr+hg+hb
   daEl.style.backgroundColor = daColor
   if (daColor == colorend.toLowerCase()) {
      clearInterval(iId)
      iId = null
      timerRunning = false
   }
}

function fade() {
   i++
   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)));
}
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";

var i
var iId = null
var sr, sg, sb
var er, eg, eb
var interval = 1
var step = 16
var colorstart
var colorend
var daEl
var timerRunning = false

function myfade(el,cs,ce,iv,st) {
   daEl = el
   colorstart = cs
   colorend = ce
   interval = iv
   step = st
   i = 0
   if (timerRunning) {
      clearInterval(iId)
      iId = null
   }
   var myRe = /#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i
   if (colorstart.match(myRe)) {
      sr = hextodec(RegExp.$1)
      sg = hextodec(RegExp.$2)
      sb = hextodec(RegExp.$3)
   }
   if (colorend.match(myRe)) {
      er = hextodec(RegExp.$1)
      eg = hextodec(RegExp.$2)
      eb = hextodec(RegExp.$3)
   }
   timerRunning = false;
   iId = setInterval("fade()",interval)
   timerRunning = true;
}
function cellover1(table_cell1) {
   // play around with these values
   // element, from_color, to_color, interval(milliseconds), transition steps
   myfade(table_cell1,'#FFFFFF','#7BB0DD',16,16)
}
function cellout1(table_cell1) {
   if (timerRunning) {
      clearInterval(iId)
      iId = null
    //  myfade(table_cell2,'#7BB0DD','#FFFFFF',20,32)
   }
   table_cell1.style.backgroundColor = '#FFFFFF'
}



