var arrHdrInfo = [];

var ocltrackau = "MNY_headerml_au";
var ocltrackeu = "MNY_headerml_eu";
var ocltrackjp = "MNY_headerml_jp";
var ocltrackus = "MNY_headerml_us";
var ocltrackuk = "MNY_headerml_uk";

function ricHeaderInfo(ric, status, displayname, last, bid_high, close_bid, netchange) {
    this.ric = ric;
    this.status = status;
    this.displayname = displayname;
    this.last = last;
    this.bid_high = bid_high;
    this.close_bid = close_bid;
    this.netchange = netchange;
}

function setupHeaderPopup() {
    var arrAllSpans = document.getElementsByTagName("span");   
    for(var i = 0; i < arrAllSpans.length; ++i) {
        var spn = arrAllSpans[i];
        if (spn.className == "headerTool") {
            var qt = spn.getAttribute("quoted");            
            addHoverEvent(spn, "headerToolVisible", "headerTool", qt);
		    		    
            //set popup div positions            
            setupPos(spn, qt); 
		    
            //create iframe to overcome flash issue
            var ifrm = document.createElement("iframe");
            ifrm.src = "/empty.aspx"
            ifrm.className = "ifrm" + qt;
            spn.appendChild(ifrm);
		    
            var spnSymbol = document.createElement("span");
            spnSymbol.appendChild(document.createTextNode(qt));
            spnSymbol.className = "symbol";
            spn.appendChild(spnSymbol);
        }
    }
    
    var feedUrl = "http://data.ninemsn.com.au/money/ReutersWS.aspx?ric_code=.AORD^=.ATLI^=.AFLI^=.ATOI^=.AXJO^=.AXKO^=.AXMD^=.AXSO^=.N225^=.N300^=.DJI^=.IXIC^=.FTSE^=AUD=X^=AUDGBP=X^=AUDEUR=X^=AUDJPY=X^=AUDCAD=X^=JPYAUD=X^=GBPAUD=X^=EURAUD=X";
    getFeed(feedUrl,headerToolCallback);
    return true;
}

function addHoverEvent(el,classOn,classOff,code) {
    var omTrackingCode = "MNY_headerml";

    if (code == "Australia") {
        omTrackingCode = ocltrackau;
    } else if (code == "Europe") {
        omTrackingCode = ocltrackeu;
    } else if (code == "Japan") {
        omTrackingCode = ocltrackjp;
    } else if (code == "US") {
        omTrackingCode = ocltrackus;
    } else if (code == "UK") {
        omTrackingCode = ocltrackuk;
    }        
    
    if (window.addEventListener) { //firefox        
        el.addEventListener('mouseover',function() {this.className = classOn;OCLTracking(this,omTrackingCode);return true;},true);
        el.addEventListener('mouseout',function() {this.className = classOff;return true;},true);
    } else { //ie
        el.onmouseenter = function() {this.className = classOn;OCLTracking(this,omTrackingCode);return true;};
        el.onmouseleave = function() {this.className = classOff;return true;};	
    }
    return true;
}

function setupPos (el, code) {
    var arrAllDivs = el.getElementsByTagName("div");
    for (i = 0; i < arrAllDivs.length; i++) {
        if (arrAllDivs[i].className == "headerToolBox" && arrAllDivs[i].style) {
            //set top position for all popup div
            arrAllDivs[i].style.top = "24px";
            
            //set left position for each popup div
            if (code == "Australia") {
                arrAllDivs[i].style.left = "-98px";
            } else if (code == "Europe") {
                arrAllDivs[i].style.left = "-158px";
            } else if (code == "Japan") {
                arrAllDivs[i].style.left = "-208px";
            } else if (code == "US") {
                arrAllDivs[i].style.left = "-251px";
            } else if (code == "UK") {
                arrAllDivs[i].style.left = "-277px";
            } else {
                arrAllDivs[i].style.left = "0";
            }
        }
    }
}

function getFeed (url,callback) {
    var jsonProp = new Ninemsn.Global.ContentManager.JsonProp(30000,5000,[],"HInfo",Ninemsn.Global.ContentManager.Json.ResponseFunction.Unique);	
	Ninemsn.Global.ContentManager.GetContent(url,callback,jsonProp);
}

function headerToolCallback(res) {
    var ric, status, displayname, last, bid_high, close_bid, netchange;
    if (res) {
        if(!res.quotelist) return;
        for (var i=0; i<res.quotelist.ric.length; i++) {
            ric = res.quotelist.ric[i].name;
            status = res.quotelist.ric[i].status.value;
            displayname = res.quotelist.ric[i].fid[0].value;
            last = res.quotelist.ric[i].fid[1].value;
            bid_high = res.quotelist.ric[i].fid[2].value;
            close_bid = res.quotelist.ric[i].fid[11].value;
            netchange = res.quotelist.ric[i].fid[3].value;
            arrHdrInfo[i] = new ricHeaderInfo(ric, status, displayname, last, bid_high, close_bid, netchange);
        }
        populateData();
    }    
    return true;
}

function populateData() {
    var tempDiv;
    var tempRic;
    var arrCreateTable = ["ausTop","eurTop","japTop","usTop","ukTop"];
    var arrCreateTableCurr = ["ausMid","eurMid","japMid","usMid","ukMid"];
    var arrCreateFlash = ["ausBottom","eurBottom","japBottom","usBottom","ukBottom"];
    
    for (var i=0; i<arrCreateTable.length; i++) {
        tempDiv = document.getElementById(arrCreateTable[i]);
        tempRic = tempDiv.getAttribute("ric");
        createInfoTable(tempDiv, tempRic, 0);
    }
    for (var i=0; i<arrCreateTableCurr.length; i++) {
        tempDiv = document.getElementById(arrCreateTableCurr[i]);
        tempRic = tempDiv.getAttribute("ric");
        createInfoTable(tempDiv, tempRic, 1);
    }
    for (var i=0; i<arrCreateFlash.length; i++) {
        tempDiv = document.getElementById(arrCreateFlash[i]);
        tempRic = tempDiv.getAttribute("ric");
        createFlashChart(tempDiv, tempRic);
    }
}

function createInfoTable(el,strRic,mode) {
    var res = '<table cellspacing="1" cellpadding="2" class="headershell_table"><tbody><tr><td class="headershell_table_header">Index</td><td class="headershell_table_header_right">Value</td><td class="headershell_table_header_right">Change</td></tr>';    
    var arrRic = strRic.split("|");
    var strDisplay = el.getAttribute("display");
    var arrDisplay = strDisplay.split("|");
    var ric, strName, strValue, strChange, strChangeTemp, intIndexOf; 
    for (var i=0; i<arrRic.length; i++) {
        ric = arrRic[i];
        for (var j=0; j<arrHdrInfo.length; j++) {
            if (arrHdrInfo[j].ric == ric) {                
                if (arrDisplay.length == arrRic.length) {
                    strName = arrDisplay[i];
                } else {
                    strName = arrHdrInfo[j].displayname;
                }              
                strValue = arrHdrInfo[j].last;
                if (mode == 0) {
                    strChange = arrHdrInfo[j].netchange;
                } else {
                    strChangeTemp= (((strValue - arrHdrInfo[j].close_bid)/arrHdrInfo[j].close_bid) * 100);
                    strChange = strChangeTemp.toString();
                    intIndexOf = strChange.indexOf(".");
                    strChange = strChange.substring(0,intIndexOf+3) + "%";
                }
                res = res + '<tr><td class="headershell_table_info">' + strName + '</td><td class="headershell_table_info_right">' + strValue + '</td><td class="headershell_table_info_right">' + strChange + '</td></tr>';
            }
        }
    }
    res = res + '</tbody></table>'; 
    el.innerHTML = res;
    return true;
}

function createFlashChart(el,strRic) {
    var headerflash_uid = new Date().getTime();
    var headerflash_flashProxy = new FlashProxy(headerflash_uid, "/media/flash/charting/scripts/JavaScriptFlashGateway.swf");
    var headerflash_tag = new FlashTag('/media/flash/chart_mini_market_dd.swf?' + strRic + '?1M?3M?line?notfixed', '276', '140'); 
    headerflash_tag.setFlashvars("lcId=" + headerflash_uid);
    el.innerHTML = headerflash_tag.toString();
    return true;
}


