﻿
var newsTickerElementId = "";
var newsTickerNewsItems = new Array(0);
var newsTickerLinks = new Array(0);

var newsTickerSHORT_DELAY = 25;
var newsTickerLONG_DELAY = 2000;
var newsTickerTICK_CHAR = "_";

var newsTickerInBetween = false;
var newsTickerComplete = true;
var newsTickerItemNumber = -1;
var newsTickerSoFar = "";
 
function newsTicker(elementId, newsItems) {
	newsTickerElementId = elementId;
	newsTickerNewsItems = newsItems;
	
	if (document.getElementById) {
		// Output a link that will act as the ticker
		document.write('<a href="#" id="' + newsTickerElementId + '">&nbsp;</a>');
		
		// Get ticking!
		setTimeout('newsTickerTick()', newsTickerSHORT_DELAY);
	}
}

function newsTickerTick() {
	var element = document.getElementById(newsTickerElementId);
	if (element == null) {
		// Try again until it arrives
		setTimeout('newsTickerTick()', newsTickerSHORT_DELAY);
		return;
	}
	
	if (newsTickerComplete) {
		// It's complete, so clear the current text in the element
		newsTickerSoFar = "";
		element.innerHTML = "&nbsp;"; // Stops the anchor collapsing
		newsTickerComplete = false;
		newsTickerInBetween = false;
		
		// And increment which item we're on
		newsTickerItemNumber++;
		if (newsTickerItemNumber >= newsTickerNewsItems.length) {
			newsTickerItemNumber = 0;
		}
		
		// Now change the target of the ticker
		element.href = newsTickerNewsItems[newsTickerItemNumber].link;
	}
	
	if (newsTickerInBetween) {
		newsTickerInBetween = false;
		element.innerHTML += newsTickerTICK_CHAR;
		setTimeout('newsTickerTick()', newsTickerSHORT_DELAY);
	} else {
		newsTickerInBetween = true;
		
		// Add a char from the current item
		var toAdd = newsTickerNewsItems[newsTickerItemNumber].text.charAt(
				newsTickerSoFar.length);
		
		// If it's an xhtml entity then grab the whole thing
		if (toAdd == "&") {
			toAdd = newsTickerNewsItems[newsTickerItemNumber].text.substring(
					newsTickerSoFar.length,
					newsTickerNewsItems[newsTickerItemNumber].text.indexOf(";",
							newsTickerSoFar.length) + 1);
		}
		
		// If it's a HTML tag then output it as is
		if (toAdd == "<") {
			toAdd = newsTickerNewsItems[newsTickerItemNumber].text.substring(
					newsTickerSoFar.length,
					newsTickerNewsItems[newsTickerItemNumber].text.indexOf(">",
							newsTickerSoFar.length) + 2);
		}
		
		newsTickerSoFar += toAdd;
		element.innerHTML = newsTickerSoFar;
		
		// If this is complete then we'll pause for a bit, otherwise go fast
		if (newsTickerSoFar.length >=
				newsTickerNewsItems[newsTickerItemNumber].text.length) {
			newsTickerComplete = true;
			setTimeout('newsTickerTick()', newsTickerLONG_DELAY);
		} else {
			setTimeout('newsTickerTick()', newsTickerSHORT_DELAY);
		}
	}
}
