var newsTicker = {};

// elm, step, speed, delay, actual, timer
newsTicker.ticker = [];

newsTicker.init = function(elm, step, speed, delay) {
	if (elm && (elm.tagName == "UL") && document.getElementsByTagName) {
		
		if (isNaN(step)) {var step = 1};
		if (isNaN(speed)) {var speed = 35};
		if (isNaN(delay)) {var delay = 1};
		
		
		var message = elm.getElementsByTagName("LI");
		for (var i = 0; i < message.length; i++) {
			message[i].style.display = "block";
			message[i].style.left = 0 - message[i].offsetWidth + "px";
		}
		
		var tickerID = newsTicker.ticker.length;
		newsTicker.ticker[tickerID] = [elm, step, speed, delay, message.length-1];
		
		elm.newsTickerID = tickerID;
		elm.onmouseover = newsTicker.stop;
		elm.onmouseout = newsTicker.start;

		newsTicker.roll(tickerID);
		
		return true;
	}
	return false;
}

newsTicker.roll = function(id) {
	if (!isNaN(id) && newsTicker.ticker[id]) {
		var ticker = newsTicker.ticker[id];
		var message = ticker[0].getElementsByTagName("li");
		var actualMessage = message[ticker[4]];
		var i = 0;
		var tmp = 0;
		var left = 0;
		var size = (message.length -1) * 100;
		while(i < message.length){
			tmp = i*100;
			left = parseInt(message[i].style.left);
			if ( left <= (-100 - tmp)){
				message[i].style.left = (size -tmp) + "px";
				left = size - tmp;
			}
			message[i].style.left = (left - ticker[1])   + "px";
			i +=  1;
		}
		ticker[5] = setTimeout("newsTicker.roll(" + id + ")", (parseInt(actualMessage.style.left) == 0) ? ticker[3] : ticker[2]);
		return true;
	}
	return false;
}

newsTicker.stop = function(e) {
	var id = newsTicker.getId(e);
	newsTicker.ticker[id][1] = 0;
	return true;
}

newsTicker.start = function(e) {
	var id = newsTicker.getId(e);
	newsTicker.ticker[id][1] = 1;
	return true;
}

newsTicker.getId = function(e) {
	if (!e && window.event) e = window.event;
	if (!e.target) e.target = e.srcElement;
	var obj = (e.currentTarget) ? e.currentTarget : e.target;
	while (obj.tagName != "UL") {
		obj = obj.parentNode;
		if (obj.tagName == "BODY") {
			return false;
		}
	}
	return obj.newsTickerID;
}


/**
 * Return a form by it's id.
 *
 * @param id    form's id
 */

function getForm(id) {
        return document.getElementById(id);
}


init = function() {
	if (document.getElementById) { 
	       newsTicker.init(document.getElementById("ticker"));
                }
	}

window.onload = init;

