var ticker;
var tickerLink;
var tickerCursor;
var tickerMessages = [];
var tickerMessageIndex = 0;
var tickerTypeSpeed = 150;
var tickerMessageDelay = 5000;
var tickerMessageText = "";
var advanceMessages = true;
var advanceMessagesTimeout = 0;

function ticker_start() {
	if(tickerMessages.length > 0) {
		ticker = $('#ticker')[0];
		tickerLink = $(ticker).children('a')[0];
		tickerCursor = $(ticker).children('.cursor')[0]
		
		$(ticker).hover(function() { 
			advanceMessages = false; 
			if(advanceMessagesTimeout > 0) {
				clearTimeout(advanceMessagesTimeout);
				advanceMessagesTimeout = -1;
			}
		}, function() { 
			advanceMessages = true; 
			if(advanceMessagesTimeout < 0) {
				advanceMessagesTimeout = setTimeout(ticker_getNextTickerMessage, tickerMessageDelay);
			}
		});
		
		ticker_getNextTickerMessage();
	}
}

function ticker_getNextTickerMessage() {
	advanceMessagesTimeout = 0;
	tickerMessageIndex++;
	if(tickerMessageIndex >= tickerMessages.length) {
		tickerMessageIndex = 0;
	}
	
	ticker_updateMessage(tickerMessages[tickerMessageIndex]);
}

function ticker_updateMessage(tickerMessage) {
	$(tickerLink).empty().attr('href',tickerMessage.Url);
	tickerMessageText = tickerMessage.Text;
	
	typeTickerMessage();
}

function typeTickerMessage() {
	tickerText = $(tickerLink).text();

	$(tickerCursor).empty();

	if($(tickerLink).text() != tickerMessageText) {
		$(tickerLink).text(tickerText + tickerMessageText.charAt(tickerText.length));
	} else if(advanceMessages) {
		advanceMessagesTimeout = setTimeout(ticker_getNextTickerMessage, tickerMessageDelay);
		return;
	}
	
	// We're either still typing, or not advancing
	// just go around again
	setTimeout(typeReadyCursor, tickerTypeSpeed / 3);
}

function typeReadyCursor() {
	$(tickerCursor).text('-');
	
	setTimeout(typeDepressedCursor, tickerTypeSpeed / 3);
}

function typeDepressedCursor() {
	$(tickerCursor).text('_');
	
	setTimeout(typeTickerMessage, tickerTypeSpeed / 3);
}