// -------------------------------------------------------------------
// Ajax XML Ticker (txt file source)
// Author: Dynamic Drive (http://www.dynamicdrive.com)
// -------------------------------------------------------------------

////////////No need to edit beyond here//////////////

// -------------------------------------------------------------------
// Main Ajax Ticker Object function
// ajax_ticker(xmlfile, divId, divClass, delay, optionalfadeornot)
// -------------------------------------------------------------------
//var tickerObj=null;

var autoRefreshTime=10000;//in milliseconds
var path="contmgmt/xmlfeeds/rss/breakingnews.xml?"
//var path="breakingnews.xml?"
var newData =null;
//var xmlChanged=false;
var lastBuildDate = null;
var isIEBrowser = null;
 function GetQueryString(link){
        var qstr={};
    if(link.indexOf('?')!=-1)
    {
        var arQ1  = link.split('?');
        if(arQ1.length==2){
            qstr["url"] = arQ1[0];
            qstr["query"] = arQ1[1];
        } else {
            qstr["url"] = arQ1[0] +'?'+ arQ1[1];
            qstr["query"] = arQ1[2];
        }
        
        if(arQ1[1].indexOf('&')!=-1)
        {
            arQ1 = arQ1[1].split('&')
            for(var q=0; q<arQ1.length; q++){
                var qr = arQ1[q].split('=');
                qstr[qr[0]]=qr[1];
            }
        } else {
                var qr = arQ1[1].split('=');
                qstr[qr[0]]=qr[1];
        }
    }
    else
        qstr["url"] = link
    return qstr;
}


function LoadBreakingNewsRss(){
    if (window.ActiveXObject)
    {
        isIEBrowser=true;        
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async=false;
        xmlDoc.load(path+ new Date());
        getNewCont(xmlDoc);
    } else if (document.implementation && document.implementation.createDocument) {
        xmlDoc=document.implementation.createDocument("","",null);
        xmlDoc.load(path+ new Date());
        xmlDoc.onload=function(){
            isIEBrowser = false;
            getNewCont(xmlDoc);
        };
    }    
}

function getNewCont(xmlDoc){
    try {
    var objChkNode = null;
    if (xmlDoc.getElementsByTagName("lastBuildDate")) objChkNode = xmlDoc.getElementsByTagName("lastBuildDate")[0];
    
    if((lastBuildDate==null || lastBuildDate != xmlDoc.getElementsByTagName("lastBuildDate")[0].text) && objChkNode!=null)
    {
        var objItem;
        var arrOuter= new Array();
        if(isIEBrowser){
            lastBuildDate = xmlDoc.getElementsByTagName("lastBuildDate")[0].text;
            
            objItem = xmlDoc.getElementsByTagName("item");
            
            for(var i=0; i<objItem.length;i++){
                var arrInner = new Array();
                var obj = GetQueryString(objItem[i].getElementsByTagName("link")[0].text);
                arrInner[0] = fnCheckUrl(obj.url)?obj.url:'';
                arrInner[1] = objItem[i].getElementsByTagName("title")[0].text;
                arrInner[2] = obj.target;
                arrOuter.push(arrInner);
            }
        }
        else
        {
            lastBuildDate = xmlDoc.getElementsByTagName("lastBuildDate")[0].childNodes[0].nodeValue;
            objItem = xmlDoc.getElementsByTagName("item");
            for(var i=0; i<objItem.length;i++){
                var arrInner = new Array();
                var chkFlag = objItem[i].getElementsByTagName("link")[0].childNodes[0];
                if(chkFlag!=undefined){
                    var obj = GetQueryString(objItem[i].getElementsByTagName("link")[0].childNodes[0].nodeValue);
                    arrInner[0] = fnCheckUrl(obj.url)?obj.url:'';
                    arrInner[1] = objItem[i].getElementsByTagName("title")[0].childNodes[0].nodeValue;
                    arrInner[2] = obj.target;
                }
                else{
                    arrInner[0] = '';
                    arrInner[1] = objItem[i].getElementsByTagName("title")[0].childNodes[0].nodeValue;
                    arrInner[2] = '';   
                }
                arrOuter.push(arrInner);
            }
        }
        newData = arrOuter;
     }  
     setTimeout("LoadBreakingNewsRss()",autoRefreshTime);
     } catch(ex){};
}
    function fnCheckUrl(url){
        url = url.toLowerCase();
        var idx =  url.indexOf('webdunia.com');
        return ((url!='') && ((idx==-1) || ((idx+13) < url.length )))
    }


function ajax_ticker(){
    this.tickerid="breakingNews" //ID of ticker div to display information
    this.delay=3500 //Delay between msg change, in miliseconds.
    this.mouseoverBol=0 //Boolean to indicate whether mouse is currently over ticker (and pause it if it is)
    this.pointer=0
    //this.opacitystring=(typeof fadeornot!="undefined")? "width: 100%; filter:progid:DXImageTransform.Microsoft.alpha(opacity=100); -moz-opacity: 1" : ""
    this.opacitystring="width: 100%; filter:progid:DXImageTransform.Microsoft.alpha(opacity=100); -moz-opacity: 1";
    if (this.opacitystring!="") this.delay+=500 //add 1/2 sec to account for fade effect, if enabled
    this.opacitysetting=0.2 //Opacity value when reset. Internal use.
    this.messages=[] //Arrays to hold each message of ticker
    //this.data = this.createContent(data);
    this.data ='<div class="wdp_newsFlashText">Loading...</div>';
    document.write('<div id="'+this.tickerid+'" class="wdp_newsFlashText"><div style="'+this.opacitystring+'"></div></div>')
    this.renderContent()
    //tickerObj=this;
    setTimeout("LoadBreakingNewsRss()",5);
}

ajax_ticker.prototype.createContent=function(data){
    var retHTML = "";
    for(var i=0; i<data.length; i++){
        retHTML += '<div class="wdp_newsFlashText">';
		if(data[i][0] == ''){
			retHTML +=	data[i][1];
		}
		else{
        retHTML += '<a href="'+ data[i][0] +'" target="'+((data[i][2]==1)?'_blank':'_top')+'">'+data[i][1]+'</a>';
		}
		retHTML += '</div>';
    }
    //alert(retHTML);
    return retHTML;    
}
ajax_ticker.prototype.renderContent=function(){
    this.contentdiv=document.getElementById(this.tickerid).firstChild //div of inner content that holds the messages
    var xmldata=this.data;
    this.contentdiv.style.display="none"
    this.contentdiv.innerHTML=xmldata
    if (this.contentdiv.getElementsByTagName("div").length==0){ //if no messages were found
        this.contentdiv.innerHTML="<b>Error</b> fetching remote ticker file!"
        return
    }
    var instanceOfTicker=this
    document.getElementById(this.tickerid).onmouseover=function(){instanceOfTicker.mouseoverBol=1}
    document.getElementById(this.tickerid).onmouseout=function(){instanceOfTicker.mouseoverBol=0}
    if (window.attachEvent) //Clean up loose references in IE
        window.attachEvent("onunload", function(){instanceOfTicker.contentdiv=instanceOfTicker.ajaxobj=null})
    //Cycle through XML object and store each message inside array
    this.messages=[];
    for (var i=0; i<this.contentdiv.getElementsByTagName("div").length; i++){
        if (this.contentdiv.getElementsByTagName("div")[i].className=="wdp_newsFlashText")
        {
            this.messages[this.messages.length]=this.contentdiv.getElementsByTagName("div")[i].innerHTML
        }
    }
    this.contentdiv.innerHTML=""
    this.contentdiv.style.display="block"
    this.rotatemsg()
}


// -------------------------------------------------------------------
// rotatemsg()- Rotate through ticker messages and displays them
// -------------------------------------------------------------------

ajax_ticker.prototype.rotatemsg=function(){
var instanceOfTicker=this
if (this.mouseoverBol==1) //if mouse is currently over ticker, do nothing (pause it)
setTimeout(function(){instanceOfTicker.rotatemsg()}, 100)
else{ //else, construct item, show and rotate it!
this.fadetransition("reset") //FADE EFFECT- RESET OPACITY
this.contentdiv.innerHTML=this.messages[this.pointer]
//window.status = "#"+this.pointer+"/"+this.messages.length+": "+this.messages[this.pointer];
this.fadetimer1=setInterval(function(){instanceOfTicker.fadetransition('up', 'fadetimer1')}, 100) //FADE EFFECT- PLAY IT
this.pointer=(this.pointer<this.messages.length-1)? this.pointer+1 : 0
if((this.pointer==(this.messages.length-1)) && (newData!=null)){
    //window.status = "loading new Contents: " + new Date();
    //xmlChanged=false;
    this.pointer=0;
    this.data = this.createContent(newData);
    newData=null;
    this.renderContent()
} else {
    setTimeout(function(){instanceOfTicker.rotatemsg()}, this.delay) //update container periodically
}

}
}

// -------------------------------------------------------------------
// fadetransition()- cross browser fade method for IE5.5+ and Mozilla/Firefox
// -------------------------------------------------------------------

ajax_ticker.prototype.fadetransition=function(fadetype, timerid){
var contentdiv=this.contentdiv
if (fadetype=="reset")
this.opacitysetting=0.2
if (contentdiv.filters && contentdiv.filters[0]){
if (typeof contentdiv.filters[0].opacity=="number") //IE6+
contentdiv.filters[0].opacity=this.opacitysetting*100
else //IE 5.5
contentdiv.style.filter="alpha(opacity="+this.opacitysetting*100+")"
}
else if (typeof contentdiv.style.MozOpacity!="undefined" && this.opacitystring!=""){
contentdiv.style.MozOpacity=this.opacitysetting
}
else
this.opacitysetting=1
if (fadetype=="up")
this.opacitysetting+=0.1
if (fadetype=="up" && this.opacitysetting>=1)
clearInterval(this[timerid])
}