/**
 * Written for the Royal Navy website.
 * Makes the news items tick
 *
 */

var iCurrentPos = 0;
var oOffender = null;
var iNumItems = 0;
var aoListItems = new Array();
var oPrevDesc = null;
var oNextDesc = null;

function initTicker(sUlName)
{
    var aoNodes;
    try
    {
        aoNodes = document.getElementById(sUlName).childNodes;
    }
    catch (e)
    {
        return false;
    }
    
    // we shouldn't need this, but never mind
    for (var i = 0 ; i < aoNodes.length; i++)
    {
        if ((aoNodes[i].nodeType == 1) && (aoNodes[i].nodeName.toLowerCase() == "li"))
        {
            aoNodes[i].style.display = "none";
            aoListItems[aoListItems.length] = aoNodes[i];
        }
    }
    
    iNumItems = aoListItems.length;
    
    // grab items
    oPrevDesc = document.createElement("div");
    oNextDesc = document.createElement("div");
    document.getElementById("tickr_prev").appendChild(oPrevDesc);
    document.getElementById("tickr_next").appendChild(oNextDesc);
    
    _tickerShowCurrent();
    return true;
}

function tickerShowPrev()
{
    if (iCurrentPos == 0)
        iCurrentPos = iNumItems;
    iCurrentPos--;
    
    _tickerShowCurrent();
    return true;
}

function tickerShowNext()
{
    iCurrentPos++;
    if (iCurrentPos == iNumItems)
        iCurrentPos = 0;

    _tickerShowCurrent();
    return true;
}

function _tickerShowCurrent()
{
    if (oOffender != null)
        oOffender.style.display = "none";
        
    aoListItems[iCurrentPos].style.display = "list-item";
    oOffender = aoListItems[iCurrentPos];
    
    // update prev and next desc bits
    var iPrev = (iCurrentPos == 0) ? iNumItems-1 : iCurrentPos - 1;
    var iNext = (iCurrentPos == (iNumItems-1)) ? 0 : iCurrentPos + 1;
    
    // the hard-coded '2' here is BAD!
    try
    {
        oPrevDesc.innerHTML = aoListItems[iPrev].getElementsByTagName("div")[2].innerHTML;
        oNextDesc.innerHTML = aoListItems[iNext].getElementsByTagName("div")[2].innerHTML;
    }
    catch (e)
    {}
    
    return true;
}
