/*
' +------------------------------------------------------------------------------------------------------------------------+
' | CHANGE CONTROL                                                                                                         |
' +------------------------------------------------------------------------------------------------------------------------+
' | OWNER: PAUL NICHOLSON                                                                        DATE CREATED: --/--/----  |
' | TICKER.JS                                                                                                              |
' +------------------------------------------------------------------------------------------------------------------------+
' | UPDATED BY: PAUL NICHOLSON                                                                   DATE UPDATED: 19/09/2008  |
' | UPDATED TO ALWAYS ROUND THE RESET EVENT TRIGGER NUMBER TO EVEN                                                         |
' +------------------------------------------------------------------------------------------------------------------------+
' | UPDATED BY: DAVID RACKSTRAW                                                                  DATE UPDATED: 09/03/2010  |
' | UPDATED HEIGHT OF IMG FOR HORIZONTAL TICKER                                                                            |
' +------------------------------------------------------------------------------------------------------------------------+
*/

function tickerVertical(element_id, variable_name, direction, speed) {	
	this.ticker_toptobottom = direction;
	this.ticker_speed = speed;
	this.varName = variable_name;
	this.flowType = 1;
	this.tableElement = element_id;
	this.ticker_content = this.tableElement.innerHTML;
	this.ticker_paused = false;
	this.tickerStartVertical();
	this.varName = variable_name;
	this.magicspan = document.createElement("span");        
    this.magicspan.setAttribute("id","tickerdiv1234567890lol");  
    this.tableElement.appendChild(this.magicspan);
}

function tickerHorizontal(element_id, variable_name, direction, speed) {	
	this.ticker_righttoleft = direction;
	this.ticker_speed = speed;
	this.varName = variable_name;
	this.flowType = 2;
	this.tableElement = element_id;
	this.ticker_content = this.tableElement.innerHTML;
	this.ticker_paused = false;
	this.tickerStartHorizontal();
	this.varName = variable_name;
	this.magicspan = document.createElement("span");        
    this.magicspan.setAttribute("id","tickerdiv1234567890lol");  
    this.tableElement.appendChild(this.magicspan);  
}

tickerVertical.prototype.tickerStartVertical = function() {
	var tableElement = this.tableElement;
	var flow_type = this.flow_type;
	var ticker_paused = this.ticker_paused;
	var ticker_height = tableElement.style.height;
	var spacer_height = tableElement.offsetHeight;
	var spacer = '<img border="0" src="/images/spacer.gif" border="0" style="width:20px; height:' + ticker_height + '">'
	var spacer2 = '<img border="0" src="/images/spacer.gif" border="0" style="width:20px; height:1px;">'
	var span_name = tableElement.id + '_span';
	
	tableElement.innerHTML = "<table cellspacing='0' cellpadding='0' height='100%'><tr><td nowrap='nowrap'>"+spacer+"</td></tr><tr><td><span id='" + span_name + "' >&nbsp;</span></td></tr><tr><td><span id='" + span_name + "2' ></span></td></tr></table>";
	document.getElementById(span_name).innerHTML = this.ticker_content;
	document.getElementById(span_name + '2').innerHTML = this.ticker_content;
	tableElement.style.display="";
	this.ticker_tickV();
}


tickerHorizontal.prototype.tickerStartHorizontal = function() {
	var tableElement = this.tableElement;
	var flow_type = this.flow_type;
	var ticker_paused = this.ticker_paused;
	var ticker_width = tableElement.style.width;
	var spacer_width = ticker_width * 3;
	var spacer = '<img src="/images/spacer.gif" border="0" style="height:1px; width:' + ticker_width + ' ">'
	var span_name = tableElement.id + '_span';
	tableElement.innerHTML = "<table cellspacing='1' cellpadding='0' width='100%'><TR><TD nowrap='nowrap'>"+spacer+"<SPAN ID='" + span_name + "'></SPAN><SPAN ID='" + span_name + "2'></SPAN></TD></TR></TABLE>";
	document.getElementById(span_name).innerHTML = this.ticker_content;
	document.getElementById(span_name + '2').innerHTML = this.ticker_content;
	tableElement.style.display="";
	this.ticker_tickH();
}


tickerHorizontal.prototype.ticker_tickH = function() {
	
	var tableElement = this.tableElement;
	var ticker_speed = this.ticker_speed;
	var ticker_righttoleft = this.ticker_righttoleft;
	var foo = this;
	var ticker_paused = this.ticker_paused;
	var spacer_width = tableElement.offsetWidth;
	var tableWidth = tableElement.style.width
	var tableWidthTrim = tableWidth.replace('px',"");
	var tableWidthNum = parseInt(tableWidthTrim)
	var restartEvent = Math.round((tableElement.scrollWidth / 2) + (tableWidthNum / 2))
	var evenRestart = roundToEven(restartEvent)
	
	if (((tableElement.scrollWidth / 2) - (spacer_width / 2)) < tableWidthNum) {
		tableElement.scrollLeft = tableWidthNum;
		document.getElementById(tableElement.id + '_span2').innerHTML = '';
		return;
	}
	
	if (tableElement.scrollLeft == evenRestart) {
		tableElement.scrollLeft = tableWidthNum;
	}
				
	if(!ticker_paused) tableElement.scrollLeft += ticker_speed * (ticker_righttoleft ? -1 : 1);
	if(ticker_righttoleft && tableElement.scrollLeft <= 0) tableElement.scrollLeft = tableElement.scrollWidth - tableElement.offsetWidth;
	if(!ticker_righttoleft && tableElement.scrollLeft >= tableElement.scrollWidth - tableElement.offsetWidth) tableElement.scrollLeft = 0;
	window.setTimeout( this.varName + ".ticker_tickH()", 20);
}

tickerVertical.prototype.ticker_tickV = function() {
	
	var tableElement = this.tableElement
	var ticker_speed = this.ticker_speed;
	var foo = this;
	var ticker_paused = this.ticker_paused;
	var ticker_toptobottom = this.ticker_toptobottom;
	var spacer_height = tableElement.offsetHeight;
	var int_spacer = parseInt(spacer_height)
	var tableHeight = tableElement.style.height
	var tableHeightTrim = tableHeight.replace('px',"");
	var tableHeightNum = parseInt(tableHeightTrim)
	var restartEvent = (tableElement.scrollHeight / 2) + (tableHeightNum / 2)
	var evenRestart = roundToEven(restartEvent)

	if (((tableElement.scrollHeight / 2) - (int_spacer / 2)) < tableHeightNum) {
		tableElement.scrollTop = tableHeightNum;
		document.getElementById(tableElement.id + '_span2').innerHTML = '';
		return;
	}
				
	if (tableElement.scrollTop == evenRestart) {
		tableElement.scrollTop = tableHeightNum;
	}
	
	if(!ticker_paused) tableElement.scrollTop += ticker_speed * (ticker_toptobottom ? -1 : 1);
	if(ticker_toptobottom && tableElement.scrollTop <= 0) tableElement.scrollTop = tableElement.scrollHeight - tableElement.offsetHeight;
	if(!ticker_toptobottom && tableElement.scrollTop >= tableElement.scrollHeight - tableElement.offsetHeight) tableElement.scrollTop = 0;
		
	window.setTimeout( this.varName + ".ticker_tickV()", 20);
}

function roundToEven(num){
     if (num % 2 != 0) {
		return (num - 1);
     }
     else {
		return(num);
     }
}

