var ArrayHex = new Array();

function newArrayEntry(divId) {
	ArrayHex.push(new Array(divId, 255));
}

function searchById(divId) {
	var count = 0;
	for (count in ArrayHex) {
		if (ArrayHex[count][0] == divId) {
			return count;
		}
	}
	return -1;
}

function getHex(divId) {
	var index = searchById(divId);
	return ArrayHex[index][1];
}

function setHex(divId, value) {
	value = value * 1;
	var index = searchById(divId);
	ArrayHex[index][1] = value;
}

function decreaseHex(divId) {
	var index = searchById(divId);
	ArrayHex[index][1] -= 5; // increase color darkness
}

function getTickerObj(divId) {
	return document.getElementById(divId);
}

function getList(tickerObj) {
	return tickerObj.childNodes;
}

function fadeText(divId) {
	hex = getHex(divId);
	tickerObj = getTickerObj(divId);
	if (tickerObj) {
		if (hex>0) {
			decreaseHex(divId);
			hex = getHex(divId);
			tickerObj.style.color="rgb("+hex+","+hex+","+hex+")";
			setTimeout("fadeText('" + divId + "')", fadeSpeed); 
		} else
		setHex(divId, 255); //reset hex value
	}
}

function initialiseList(divId) {
	var tickerObj = getTickerObj(divId);
	if (!tickerObj)
		reportError("Could not find a div element with id \"" + divId + "\"");
	var list = getList(tickerObj);
	if (list.length <= 0)
		reportError("The div element \"" + divId + "\" does not have any children");
	for (var i=0; i<list.length; i++) {
		var node = list[i];
		if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) 
			tickerObj.removeChild(node);
	}
	newArrayEntry(divId);
	run(divId, 0);
}

function run(divId, count) {
	fadeText(divId);
	tickerObj = getTickerObj(divId);
	var list = getList(tickerObj);
	list[count].style.display = "block";
	if (count > 0)
		list[count-1].style.display = "none";
	else
		list[list.length-1].style.display = "none";
	count++;
	if (count == list.length)
		count = 0;
	window.setTimeout("run('" + divId + "', " + count+ ")", interval*1000);
}

function reportError(error) {
	alert("The script could not run because you have errors:\n\n" + error);
	return false;
}

var interval = 3; // interval in seconds
var fadeSpeed = 40;

