var _url = "http://www.msnbc.msn.com/id/3054049/displaymode/1217/"
//var _url = "http://www.msnbc.msn.com/id/3054049/device/rss/"; 
//var _url = "http://rss.msnbc.msn.com/id/3032524/device/rss/";//test
var _popNewsUrl = "http://www.msnbc.msn.com/id/7468311";
var _bannerUrl = "http://msnbcmedia.msn.com/i/msnbc/Components/Art/SITEWIDE/Marquee/bn_marquee.gif"
var _breakNewsUrl = "http://breakingnews.msnbc.com"
var _fetchInterval = 10;

var _elMain = null;
var _elBanner = null;
var _elHeadline = null;
var _elDesc = null;
var _oHeadlines = null;
var _dispInterval = null;

var _R = 160;
var _G = 10;
var _B = 10;

function LoadGadget()
{
    _elMain = document.createElement("center");
    _gel("Main").appendChild(_elMain);
    BuildDisplay();    
    GetBreakingNews();
    setInterval(GetBreakingNews, _fetchInterval*60*1000);
    //setInterval(GetBreakingNews, 10*1000);
}

function BuildDisplay()
{
    _elBanner = document.createElement("img");
    _elBanner.src = _bannerUrl;
    _elBanner.style.marginTop = "10px";
    _elMain.appendChild(_elBanner);
    _elBanner.style.display = "none";
    
    _elHeadline = document.createElement("a");
    _elHeadline.href = _breakNewsUrl;
    _elHeadline.target = "blank";
    _elHeadline.style.textDecorationNone = true;
    _elHeadline.style.font = "90% verdana";
    _elHeadline.style.fontWeight = "bold";
    _elHeadline.style.color = "#203d63";
    _elHeadline.style.display = "block";
    _elHeadline.style.marginTop = "20px";
    _elMain.appendChild(_elHeadline);      
    
    _elDesc = document.createElement("div");
    _elDesc.style.font = "80% verdana";
    _elDesc.style.marginTop = "4px";
    _elDesc.style.textAlign = "left";
    _elMain.appendChild(_elDesc);

    setHeadline(" ", _breakNewsUrl);
}

function GetBreakingNews()
{
    // format: "_url/#####.xml" to bypass cache
    //var fix = _url + (new Date().valueOf()) + ".xml";
    //_IG_FetchFeedAsJSON(fix, OnReceiveNews, 9);   
    
    //var fix = _url + "bn.xml"
    //_IG_FetchFeedAsJSON(fix, OnReceiveNews, 9, false, {refreshInterval: 60*(_fetchInterval/2)});   
    //_IG_FetchFeedAsJSON(_url, OnReceiveNews, 9, false, {refreshInterval: 60*(_fetchInterval/2)});   

    //patch to use json displaymode
    var nocache = _url + (new Date().valueOf()) + ".js";
    _IG_FetchContent(nocache, OnReceiveJSONText);
}

//quick patch
function OnReceiveJSONText(jsontxt)
{
    eval(jsontxt);

    if(typeof(BNWire) == 'undefined') {
        setHeadline(" ", _popNewsUrl);
        GetBreakingNews(); //retry
        return;
    }
    
    if(BNWire != null && BNWire.length > 0) {
        
        var alpha = 0;
        setAlpha(_elBanner, alpha);
        _elBanner.style.display = "block";
        _elHeadline.innerHTML = "";
        _elDesc.innerHTML = "";

        function fadeInBanner()
        {
            alpha+= 2;
            setAlpha(_elBanner, alpha);
            
            if(alpha < 100)
                setTimeout(fadeInBanner, 20);
            else
                setAlpha(_elBanner, 100);    
        }
        setTimeout(fadeInBanner, 1500);
        
        //loop thru breaking news list
        _oHeadlines = BNWire;
        
        setTimeout(DisplayHeadlinesJSON, 4000);//first one
        if(_dispInterval != null) {
            clearInterval(_dispInterval);
            _dispInterval = null;
        }
        if(BNWire.length == 1) {
            //_dispInterval = setInterval(DisplayHeadlinesJSON, 40*1000);
            _dispInterval = setInterval(DisplayHeadlinesJSON, 10*60*1000);
        }
        else {
            _dispInterval = setInterval(DisplayHeadlinesJSON, 2*60*1000);
        }
        alpha = null;   
    
    }
    else {
        setHeadline(" ", _popNewsUrl);
    }

}

//function OnReceiveNews(feed)
//{
//    if (feed == null) 
//    {
//        setHeadline(" ", _popNewsUrl);
//        GetBreakingNews(); //retry       
//        return;
//    }
//
//    if(feed.Entry)
//    {
//        var alpha = 0;
//        setHeadline("  ", _breakNewsUrl);
//        setAlpha(_elBanner, alpha);
//        _elBanner.style.display = "block";
//        
//        function fadeInBanner()
//        {
//            alpha+= 2;
//            setAlpha(_elBanner, alpha);
//            
//            if(alpha < 100)
//                setTimeout(fadeInBanner, 20);
//            else
//                setAlpha(_elBanner, 100);    
//        }
//        setTimeout(fadeInBanner, 1500);
//        
//        //loop thru breaking news list
//        _oHeadlines = feed.Entry;
//        setTimeout(DisplayHeadlines, 4000);//first one
//        if(feed.Entry.length == 1)
//            _dispInterval = setInterval(DisplayHeadlines, 10*60*1000);
//        else
//            _dispInterval = setInterval(DisplayHeadlines, 2*60*1000);
//        
//        alpha = null;   
//    }
//    else setHeadline(" ", _popNewsUrl);
//}

//function setHeadline(headline, link)
//{
//    if(headline == " ") {
//        _elHeadline.innerHTML = "No breaking news at this time." + "<br/><span style='font-size:10px;'>Click here for top headlines</span>";
//    }
//    else {
//        _elHeadline.innerHTML = headline;
//    }
//    _elHeadline.href = link;
//}

function setHeadline(headline, link, desc)
{
    if(headline == " ") {
        _elHeadline.innerHTML = "No breaking news at this time." + "<br/><span style='font-size:10px;'>Click here for top headlines</span>";
    }
    else {
        _elHeadline.innerHTML = headline;
    }
    
    if(typeof(desc) != 'undefined' || desc != null) {
        _elDesc.innerHTML = desc;
    }
    else {
        _elDesc.innerHTML = "";
    }
    
    _elHeadline.href = link;

}

function DisplayHeadlinesJSON()
{
    if(_oHeadlines == null) {
        return;
    }
    
    var news = _oHeadlines.pop();
    if(news != null) {
        
        r=255;
        g=255;
        b=255;
        
        setRGB(r, g, b);
        if(news.id == "" || isNaN(news.id)) {
            setHeadline(news.headline, _breakNewsUrl, "");
        }
        else {
            setHeadline(news.headline, "http://www.msnbc.msn.com/id/" + news.id, "");
        }
        
        function fadeInText()
        {
            if(r > _R) r-= 5; 
            if(g > _G) g-= 5;
            if(b > _B) b-= 5;
            setRGB(r,g,b);        
            
            if(r > _R || g > _G || b > _B )
                setTimeout(fadeInText, 20);
            else {
                setRGB(_R, _G, _B);       
                if(news.id == "" || isNaN(news.id)) {
                    setHeadline(news.headline, _breakNewsUrl, news.desc);
                }
                else {
                    setHeadline(news.headline, "http://www.msnbc.msn.com/id/" + news.id, news.desc);
                }
            }
        }
        fadeInText();
        
    }
    else //no more news...clean up
    {
        if(_dispInterval != null) {
            clearInterval(_dispInterval);
            _dispInterval = null;
        }       
        _oHeadlines = null;
        setRGB(17, 48, 88);
        setHeadline(" ", _popNewsUrl, "");
        _elBanner.style.display = "none";
    }
}

//function DisplayHeadlines()
//{
//    var news = _oHeadlines.pop();
//    if(news != null)
//    {
//        r=255;
//        g=255;
//        b=255;
//        
//        setRGB(r, g, b);
//        setHeadline(news.Title, news.Link);
//        function fadeInText()
//        {
//            if(r > _R) r-= 5; 
//            if(g > _G) g-= 5;
//            if(b > _B) b-= 5;
//            setRGB(r,g,b);        
//            
//            if(r > _R || g > _G || b > _B )
//                setTimeout(fadeInText, 20);
//            else
//                setRGB(_R, _G, _B);       
//        
//        }
//        fadeInText();
//        
//    }
//    else //no more news...clean up
//    {
//        clearInterval(_dispInterval);
//        _dispInterval = null;
//        _oHeadlines = null;
//        setRGB(17, 48, 88);    
//        setHeadline(" ", _breakNewsUrl);
//        _elBanner.style.display = "none";
//    }
//        
//
//}

function setRGB(r,g,b)
{
	_elHeadline.style.color = 'rgb'+'('+r+','+g+','+b+')';   
}


function setAlpha(el,a)
{
    if (navigator.appName == "Microsoft Internet Explorer")
        el.style.filter = "progid:DXImageTransform.Microsoft.Alpha(Opacity=" + a + ")";
    else //assume mozilla, otherwise unsupported
        el.style.MozOpacity= a/100;

}

_IG_RegisterOnloadHandler(LoadGadget);
    
