var currR = 0;
var currG = 0;
var currB = 0;
var currCount = 0;

function RGBtoHex(R,G,B) {
	return toHex(R)+toHex(G)+toHex(B)
}

function toHex(N) {
 if (N==null) return "00";
 N=parseInt(N); if (N==0 || isNaN(N)) return "00";
 N=Math.max(0,N); N=Math.min(N,255); N=Math.round(N);
 return "0123456789ABCDEF".charAt((N-N%16)/16)
      + "0123456789ABCDEF".charAt(N%16);
}

function fadeColor(id,r,g,b,delay,pause) {
	var timer = 0;
	while ( currR != r || currG != g || currB != b ) {
		if ( currR != r ) {
			if ( currR > r ) {
				currR--;
			} else {
				currR++;
			}
		}
		if ( currG != g ) {
			if ( currG > g ) {
				currG--;
			} else {
				currG++;
			}
		}
		if ( currB != b ) {
			if ( currB > b ) {
				currB--;
			} else {
				currB++;
			}
		}
		var bgColor = RGBtoHex(currR,currG,currB);
		timer += delay;
		eval("setTimeout('setColor(\""+id+"\",\"#"+bgColor+"\")',"+timer+")");
	}
	setTimeout('chgColor()',pause+timer);
}

function setColor(id,rgb) {
	var obj = document.getElementById(id);
	obj.style.backgroundColor = rgb;
}


function chgColor() {
	if ( currCount > colorArray.length-1 ) {
		currCount = 0;
	}
	var r = colorArray[currCount][0];
	var g = colorArray[currCount][1];
	var b = colorArray[currCount][2];
	var delay = colorArray[currCount][3];
	var pause = colorArray[currCount][4];
	currCount++;
	fadeColor("body",r,g,b,delay,pause);
}
