// vim: filetype=javascript
var urls = new Array(
    "entertainment_d78b10aa1cf8978374a49053155fd8fc.html",
    "entertainment_635c45ea221a993d3abff3314d1aa6dd.html",
    "entertainment_f2c8f83d9ad7f80eb6de2ac3b708b1af.html",
    "entertainment_6b90f6ab7f81677ed6571ae1ce3639b8.html",
    "entertainment_0e91b0dc2ca19d98174ed33825ccf6bd.html",
    "entertainment_e00cc43b319589e866aaf261f2727fa5.html",
    "entertainment_d2be616adf88c9572d342162a5568a9d.html",
    "entertainment_043da06dc9cf1b558e7f43b6b0d3ccd0.html",
    "entertainment_9b345b5de00558a3d03c201f3fd22d3a.html",
    "entertainment_cd2d2e02914c4af58d1a96a41fd7d477.html",
    "entertainment_58246c5770b676055ccb5810b4bfec34.html",
    "entertainment_41ae45f24fb60f02584aff8ae5557f0a.html",
    "entertainment_6d0e6d0ac0d5ea2825b8e606fe5cc84c.html",
    "entertainment_5f18969e34c00291e05ea0ca51cbb689.html",
    "entertainment_349d44659f83a0477bb5e6e5c0d4b188.html",
    "entertainment_27078a5e57e292ad64f6c469edb1d771.html",
    "entertainment_8babfb017491c7dc86aa2738f5712a8f.html",
    "entertainment_1e1f465a66e6b3edfbf9245d2c8c0b6c.html",
    "entertainment_c79256568df7aec6c8a13aca85c98e21.html",
    "entertainment_8af5bd0f52ee9243025bee11f738a97e.html",
    "entertainment_d3641f2cffa8195750e54ef683850ee5.html",
    "entertainment_48364e9e0fd3f96497add975d08381ff.html",
    "entertainment_da2041b5351724f7af98fb3d1a00b27a.html",
    "entertainment_cb78b51f326125e0bd4b0581d6edb644.html",
    "entertainment_29ca1c184776bd4d67b757f39db67b1f.html",
    "entertainment_ad48a2d873cfc8854f0540f63c734276.html",
    "entertainment_5cbb060965926007ce1f12cf5c145d74.html",
    "entertainment_592b4dfd5486e04b25c4ed17e7df9069.html",
    "entertainment_3fc336e146be72252b3537b181267ec4.html",
    "entertainment_02ad2a4fec6c8f3cbe187ba63e6c5c52.html",
    "entertainment_7cd2b599b0efb4ea19c04e01bc76e329.html",
    "entertainment_d77c078916bd07872cde55e362618b79.html",
    "entertainment_3506045d3d623820abfcc051b310c3da.html",
    "entertainment_db45e707143502723884be322b8ffd2a.html",
    "entertainment_91aa6c0a75b70bd17f661069c1af086a.html",
    "entertainment_a8f87e4322cc7efcea7042efbb420453.html",
    "entertainment_2828985fc458c3c3b0cb4a5e3183a164.html"
);
var headlines = new Array(
    "Pete makes public plea to Kate",
    "Britney divorce finally official",
    "Lennon glasses attract worldwide bids",
    "Sir Michael chills out",
    "Rush Hour 3 hits Hollywood",
    "Jamelia launches haircare range",
    "Nadine hopes for US move",
    "Ziggy sent to halfway house",
    "Lopez warns young celebs",
    "Nicholas Cage debuts comic book",
    "Usher cancels wedding",
    "Hollyoaks highlights anorexia dangers",
    "Stars pay tribute to Mike Reid",
    "Chanelle leaves Big Brother",
    "Lohan\'s movie gets slated",
    "Swedish film director Bergman dies",
    "Schwarzenegger turns 60",
    "Steve Martin throws surprise wedding",
    "Spice Girls to get Versace makeover",
    "Kelly Osbourne to star in Chicago",
    "Potter book in running for award",
    "Spice Girls add four dates to tour",
    "Jack\'s friends in high places",
    "Undercover advertising for The Simpsons",
    "Richie to follow pal to jail",
    "Man arrested over TomKat photos",
    "Motherhood won\'t stop my career, says Jovovich",
    "OMD \'loving life\' on the road",
    "Alesha\'s new beginnings",
    "J-Lo and hubby team up for new movie",
    "Charley booted out of Big Brother",
    "The Spice Girls add new dates",
    "Feeling hot",
    "Richie to follow pal to jail",
    "Aniston and new boyfriend \'split\'",
    "Lohan emergency call released",
    "Bob Geldof in biker crash"
);

var currHeadline;
var currUrl;
var interval;
var interHeadlineInterval = 1000; // interval between headlines (in millisecs)
var scrollInterval = 100;
var tickInterval = 500;
var nticks = 5;

var tick = 0;

var ticker;

var headlineNo = 0;
var letterNo = 0;

var fgcolor;
var bgcolor;

var mouseover = 0;
var my_url = "" + document.location;
my_url = my_url.replace( /[^\/]+$/, "" );
var XmlTickerUrl = my_url + 'entertainment_ticker.xml';
var dom = null;
try { dom = new ActiveXObject( "Msxml2.DOMDocument" ); }
catch ( e ) { 
    try { dom = new ActiveXObject( "Msxml.DOMDocument" ); }
    catch ( e ) { }
}

function flashOn()
{
    mouseover = 1;
    ticker.style.color = bgcolor;
    ticker.style.backgroundColor = fgcolor;
    ticker.style.cursor = "hand";
}

function flashOff()
{
    mouseover = 0;
    ticker.style.color = fgcolor;
    ticker.style.backgroundColor = bgcolor;
    ticker.style.cursor = "default";
}

function gotoHref()
{
    ticker.style.color = "red";
    ticker.style.cursor = "wait";
    if ( currUrl ) window.top.document.location = currUrl;
}

var scrollerHeadlines = new Array();

function createScrollerHeadlines()
{
    for ( var i = 0; i < headlines.length; i++ )
    {
        scrollerHeadlines[i] = new Array();
        var headline = headlines[i];
        for ( var j = 0; j < headline.length; j++ )
        {
            text = headline.substr( 0, j+1 );
            scrollerHeadlines[i][j] = text;
        }
    }
}

function reLoadTicker()
{
    if ( dom ) 
    {
        urls = new Array();
        headlines = new Array();
        dom.async = false;
        dom.resolveExternals = false;
        if ( dom.load( XmlTickerUrl ) )
        {
            var nodes;
            nodes = dom.documentElement.selectNodes( "STORY" );
            for ( var i = 0; i < nodes.length; i++ )
            {
                var node = nodes[i];
                var url = node.getAttribute( 'URL' );
                urls[i] = url;
                headlines[i] = node.text;
            }
        }
    }
}

function loadTicker()
{
    reLoadTicker();
    if ( ! urls || ! urls[headlineNo] ) return;
    if ( ! headlines || ! headlines[headlineNo] ) return;
    createScrollerHeadlines();
    ticker = document.getElementById( 'ticker' );
    if ( ! ticker ) return;
    if ( ! ticker.style ) return;
    // remove existing children
    for ( var c = ticker.firstChild; c ; c = c.nextSibling )
    {
        ticker.removeChild( c );
    }
    // append an empty text node
    var tnode = document.createTextNode( '' );
    ticker.appendChild( tnode );
    fgcolor = ticker.style.color;
    bgcolor = ticker.style.backgroundColor;
    var height = ticker.height;
    ticker.onmouseover = flashOn;
    ticker.onmouseout = flashOff;
    ticker.onclick = gotoHref;
    ticker.style.visibility = "visible";
    currHeadline = headlines[headlineNo];
    currUrl = urls[headlineNo];
    interval = setInterval( scroll, scrollInterval );
}

function replaceText( node, text )
{
    if ( node.innerText )
    {
        node.innerText = text;
    }
    else
    {
        var newNode = document.createTextNode( text );
        var oldNode = node.firstChild;
        node.replaceChild( newNode, oldNode );
    }
}

function doTick()
{
    if ( tick == nticks * 2 )
    {
        tick = 0;
        newHeadline();
    }
    else
    {
        tick++;
        if ( tick % 2 ) replaceText( ticker, currHeadline + " " );
        else replaceText( ticker, currHeadline + "_" );
    }
}

function newHeadline()
{
    if ( ! scrollerHeadlines[++headlineNo] )
    {
        reLoadTicker();
        createScrollerHeadlines();
        headlineNo = 0;
    }
    currHeadline = headlines[headlineNo];
    currUrl = urls[headlineNo];
    letterNo = 0;
    if ( interval ) clearInterval( interval );
    interval = setInterval( scroll, scrollInterval );
}

function scroll()
{
    var text = scrollerHeadlines[headlineNo][letterNo++];
    if ( text ) replaceText( ticker, text + "_" );
    else
    {
        if ( interval ) clearInterval( interval );
        interval = setInterval( doTick, tickInterval );
    }
}
