﻿
function TickerItem(itemDate, itemTitle, itemLink){
    this.date = itemDate;
    this.title = itemTitle;
    this.link = itemLink;
}

function Ticker(tickerItems){
    this.dateElement = document.getElementById('TickerDate');
    this.titleElement = document.getElementById('TickerTitle');
    this.items = tickerItems;
    this.timerId = null;
    this.currentIndex = 0;
    this.innerTicker = this;
}

Ticker.prototype.turnOn = function(){
    window.clearTimeout(this.timerId);
    var inner = this.innerTicker;
    var onTick = function(){
        if(inner.currentIndex == inner.items.length) inner.currentIndex = 0;
        
        var item = inner.items[inner.currentIndex];
        var titleHtml = item.title + '<a id="TickerLink" href="/news/current.aspx#' + item.link + '" title="' + item.title +'" class="TickerLink">more</a>';
        
        inner.dateElement.innerHTML = item.date + ' - ';
        inner.titleElement.innerHTML = titleHtml;

        inner.currentIndex++;         
    }
    onTick(); //run immediately the first time
    this.timerId = window.setInterval(onTick, 8500); //adjust the time here 
}

Ticker.Initialize = function(serverCallback){
    window.setTimeout(serverCallback, 1000);
}

Ticker.Startup = function(serverMessage, context){
    if(serverMessage.toString().length == 0){ 
        Ticker.OnError('', '');
        return;
    }
    
    var entries = serverMessage.split(';');
    var items = [];
    
    for(var i = 0; i < entries.length; i++){
        var data = entries[i].split('|');
        items.push(new TickerItem(data[0], data[1], data[2]));
    }
    
    var ticker = new Ticker(items);
    
    ticker.turnOn();    
}

Ticker.OnError = function(message, context){
    var element = document.getElementById('TickerTitle');
    if(element == null) return;
    
    element.innerHTML = 'no news to display at this time';
}
