var tickers = [];

function ticker_init(tickerId) {
    var mainEl = document.getElementById(tickerId);
    var scrollerEl = dojo.query(".ticker-scroller", mainEl)[0];

    var itemEls = dojo.query(".ticker-item", scrollerEl);
    var scrollerWidth = 0;
    for (var i = 0; i < itemEls.length; i++) {
        var itemEl = itemEls[i];
        var coords = dojo.coords(itemEl);
        scrollerWidth += coords.w;
    }
    scrollerEl.style.width = scrollerWidth + "px";
    
    var coords = dojo.coords(mainEl);
    var mainWidth = coords.w;

    scrollerEl.style.position = "relative";
    scrollerEl.style.left = mainWidth + "px";

    mainEl.style.width = mainWidth + "px";

    tickers[tickerId] = {
        "mainEl": mainEl,
        "scrollerEl": scrollerEl,
        "tickerId": tickerId,
        "mainWidth": mainWidth,
        "scrollerWidth": scrollerWidth,
        "stopped": false,
        "lastTime": (new Date()).getTime(),
        "scrollAmount": 6,
        "intervalTime": 85
    };

    util_addEventHandler(mainEl, "mouseover", function() { ticker_stopScrolling(tickers[tickerId]); });
    util_addEventHandler(mainEl, "mouseout", function() { ticker_continueScrolling(tickers[tickerId]); });

    tickers[tickerId].intervalId = window.setInterval(function() { ticker_scroll(tickers[tickerId]); }, tickers[tickerId].intervalTime);
}

function ticker_stopScrolling(ticker) {
    ticker.stopped = true;
    ticker.lastTime = false;
}

function ticker_continueScrolling(ticker) {
    ticker.stopped = false;
    ticker.lastTime = false;
}

function ticker_scroll(ticker) {
    if (!ticker.stopped) {
        var scrollAmount = ticker.scrollAmount;
        if (ticker.lastTime !== false) {
            var nowTime = (new Date()).getTime();
            scrollAmount = ((nowTime - ticker.lastTime) / ticker.intervalTime) * ticker.scrollAmount;
            ticker.lastTime = nowTime;
        }
    
        var left = parseInt(ticker.scrollerEl.style.left);
        left -= scrollAmount;
        if (left < (0 - ticker.scrollerWidth - 5)) {
            left = ticker.mainWidth;
        }
        ticker.scrollerEl.style.left = left + "px";
    }
}