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 cellover(table_cell) {

	// play around with these values

	// element, from_color, to_color, interval(milliseconds), transition steps

	myfade(table_cell,'#FFFFFF','#2C7DBF',20,32)

}

function cellout(table_cell) {

	if (timerRunning) {

		clearInterval(iId)

		iId = null

	}

	table_cell.style.backgroundColor = '#000000'

}

