var arrStockInfo = [];
var currNameLookup = [["AUD","Australian Dollar"],["CAD","Canadian Dollar"],["NZD","New Zealand Dollar"],["JPY","Japanese Yen"],["EUR","Euro"],["USD","US Dollar"],["GBP","British Poundsterling"]];
var tableHeader = {".AORD":true, ".ATLI":true, ".AFLI":true, ".ATOI":true, ".AXJO":true, ".AXKO":true, ".AXMD":true, "AXSO":true, ".AXDJ":true, ".AXEJ":true, ".AXFJ":true, ".AXXJ":true, ".AXHJ":true, ".AXNJ":true, ".AXIJ":true, ".AXMJ":true, ".AXPJ":true, ".AXSJ":true, ".AXTJ":true, ".AXUJ":true, ".DJI":true, ".IXIC":true, ".FTSE":true, ".N225":true, ".N300":true, ".HSI":true, ".STI":true, ".NZAU":true, ".JKSE":true, ".TWII":true};
var omTrackingCode = "MNY_NA_Quote_Float";

                     
function StockInfo(stockcode, companyname, dt, tm, val, change, pctchange) {
    this.stockcode = stockcode;
    this.company = companyname;
    this.date = dt;
    this.time = tm;
    this.value = val;
    this.change = change;
    this.percentchange = pctchange;
}

function containsElement(parent, child) {
	var _parent = child;	
	while(_parent && _parent != parent)
		_parent = _parent.parentNode;
		
	return parent == _parent;
}

function setupArticlePopup() {
    // append tag necessary to process reuters RIC codes 
    articleAppendTagStock();
    
    var allSymbols = []; 
	var allSymbolsIndex = 0;
    var arrAllSpans = document.getElementsByTagName("span");   
		
    for (var i=0; i<arrAllSpans.length; i++) {
	    var spn = arrAllSpans[i];
	    if (spn.className == "quotedToolTip") {
		    var symbol = spn.getAttribute("quoted");
		    
		    //store RIC code in array, to avoid repeating code within the page
		    var check = 0;
		    for (var j=0; j<allSymbols.length; j++) {
		        if (allSymbols[j] == symbol) {
		            check = 1;
		            break;
		        }			    
		    }	
		    if (check != 1) {
	            allSymbols[allSymbolsIndex] = symbol;
	            allSymbolsIndex = allSymbolsIndex + 1;    			    
		    } 
            
            //add hover event to the element
            articleAddHoverEvent(spn,"quotedToolTipVisible","quotedToolTip");
			
		    var spnSymbol = document.createElement("span");
		    spnSymbol.innerHTML = symbol + " <img src='/img/icons/article_popup.gif' border='0'>";
		    spnSymbol.className = "symbol";
		    spn.appendChild(spnSymbol);
	    }
    }
    var qs = "";

    if (allSymbols.length >= 1) {
        if (allSymbols.length == 1) {
            qs = allSymbols[0];
        } else {
            for (var i = 0; i < allSymbols.length; i++) {
                qs = qs + allSymbols[i] + (i==allSymbols.length - 1? "" : "^=");            
            }
        }
        articleGetFeed("http://data.ninemsn.com.au/money/ReutersWS.aspx?ric_code=" + qs, articlePopupCallback);
    }
}

function articleAddHoverEvent(el,classOn,classOff) {
    var context;
    
    if (window.addEventListener) {
        //ff
        el.addEventListener('mouseover', function(e) {
                                            context = this;
                                            this.setAttribute("hover","true");
                                            if(!e) e = window.event;
                                            var target = (e.relatedTarget? e.relatedTarget : e.toElement);
                                            if(containsElement(this, target)) return;
                                            setTimeout(S,250);

                                            function S() {
                                                var hov = context.getAttribute("hover");
                                                if (hov == "true") {
                                                    context.className = classOn;
                                                    articleSetupPos(context);
                                                    //omniture Custom Link Tracking
                                                    OCLTracking(this, omTrackingCode);
                                                }
                                                return true;
                                            }
                                            return true;
                                         }, true);
        el.addEventListener('mouseout', function(e) {
                                            if(!e) e = window.event;                    
                                            var target = (e.relatedTarget? e.relatedTarget : e.fromElement);
                                            if(containsElement(this, target)) return;

                                            this.setAttribute("hover","false"); 
                                            this.className = classOff; 
                                            return true;
                                        }, true);
    } else { 
        //ie   
        el.onmouseenter =   function() {
                                context = this;
                                context.setAttribute("hover","true");
                                setTimeout(S,250);
                                return true;
                            }
                            function S() {
                                var hv = context.getAttribute("hover");
                                if (hv == "true") {
                                    context.className = classOn;
                                    articleSetupPos(context);
                                    //omniture Custom Link Tracking
                                    OCLTracking(this, omTrackingCode); 
                                }
                                return true;
                            }
        el.onmouseleave =   function() {
                                this.setAttribute("hover","false");
                                this.className = classOff;
                            };
    }
}

function articlePopupCallback(res) {
    try {
        if(!res) return;
        var ricLength = res.quotelist.ric.length;
        var stockCode;
        var companyName;
        var dt;
        var tm;
        var priceCur;
        var priceChg;
        var pricePct;
        
        if (ricLength) {
            for (var i=0; i<res.quotelist.ric.length; i++) {
                stockCode = res.quotelist.ric[i].name;
                companyName = res.quotelist.ric[i].fid[0].value;
                dt = res.quotelist.ric[i].fid[8].value;
                tm = res.quotelist.ric[i].fid[9].value;
                priceCur = res.quotelist.ric[i].fid[1].value;
                priceChg = res.quotelist.ric[i].fid[3].value;
                pricePct = res.quotelist.ric[i].fid[4].value;
                arrStockInfo[i] = new StockInfo(stockCode, companyName, dt, tm, priceCur, priceChg, pricePct);
            }
        } else {
                stockCode = res.quotelist.ric.name;
                companyName = res.quotelist.ric.fid[0].value;
                dt = res.quotelist.ric.fid[8].value;
                tm = res.quotelist.ric.fid[9].value;
                priceCur = res.quotelist.ric.fid[1].value;
                priceChg = res.quotelist.ric.fid[3].value;
                pricePct = res.quotelist.ric.fid[4].value;
                arrStockInfo[0] = new StockInfo(stockCode, companyName, dt, tm, priceCur, priceChg, pricePct);                    
        }
        articlePopulateData();
    } catch (err) {
    
    }
    return true;
}

function articlePopulateData() {
    var arrAllDivs = document.getElementsByTagName("div");    
    var dv;
    var symbol;
    for(var i=0; i<arrAllDivs.length; i++) {
        dv = arrAllDivs[i];
        if (dv.className == "quotedToolTipBox") {
            symbol = dv.getAttribute("quoted");
            dv.removeAttribute("quoted");
            createPopup(dv,symbol);
        }
    }
    
    var arrAllSpans = document.getElementsByTagName("span");
    var spn;
    for(var i = 0; i < arrAllSpans.length; ++i) {
        spn = arrAllSpans[i];
        if (spn.className == "quotedSummary" || spn.className == "quotedSummaryCurr") {
            symbol = spn.getAttribute("quoted");
            spn.removeAttribute("quoted");
            populateSummary(spn, symbol, spn.className);
        }
    }
}
    
function articleAppendTagStock() {
    var span1 = '(<span class="quotedToolTip" hover="false" quoted=';
    var span2 = 'style="position:absolute;"><img src="/img/animated_loading.gif"/> loading</div></span>, <span class="quotedSummary" quoted=';
    var span3 = 'style="position:absolute;"><img src="/img/animated_loading.gif"/> loading</div></span>&nbsp;<img src="/img/icons/article_popup.gif">, <span class="quotedSummaryCurr" quoted=';
    var articleIcon = ' <img border="0" src="/img/icons/article_popup.gif">';
    
    // get element which might contains reuters RIC code
    var articletext = document.getElementById("body");
    var articletext2 = document.getElementById("article_body");
    var articletext3 = document.getElementById("index_left");
    var articletext4 = document.getElementById("content_top_left");
    var articletext5 = document.getElementById("money_content_integration");
    var articletext6 = document.getElementById("index_top");
    var articletext7 = document.getElementById("finance_index");

    var articleTextToParse = "";
    
    if (articletext) {
        articleTextToParse = articletext.innerHTML;
    } else if (articletext2) {
        articleTextToParse = articletext2.innerHTML;
    } else if (articletext3) {
        articleTextToParse = articletext3.innerHTML;
    } else if (articletext4) {
        articleTextToParse = articletext4.innerHTML;
    } else if (articletext5) {
        articleTextToParse = articletext5.innerHTML;
    } else if (articletext6) {
        articleTextToParse = articletext6.innerHTML;
    } else if (articletext7) {
        articleTextToParse = articletext7.innerHTML;
    }
    
    //regular expressions to replace/add the necessary stock tags     
    var reStock = new RegExp("<(...)\.AX>", "gi");
    var articlex = articleTextToParse.replace(reStock, "&lt;$1.AX&gt; ");    
    var re = new RegExp("&lt;(...)\.AX&gt;", "gi");
    var articletextStockAu = articlex.replace(re, span1 + '"$1.AX"><a href="/shares-and-funds/quotes?subsectionid=4068&subsectionname=Researchacompany_Quotes&code=$1&ctry=AX&inforeq=Quotes">$1.AX' + articleIcon + '</a><div class="quotedToolTipBox" quoted="$1.AX" ' + span2+ '"$1.AX"></span>)');

    /*
    var reNz = new RegExp("&lt;(...)\.NZ&gt;", "gi");
    var articletextStockNz = articletextStockAu.replace(reNz, span1 + '"$1.NZ"><a href="/shares-and-funds/quotes?subsectionid=4068&subsectionname=Researchacompany_Quotes&code=$1&ctry=NZ&inforeq=Quotes">$1.NZ' + articleIcon + '</a><div class="quotedToolTipBox" quoted="$1.NZ" ' + span2 + '"$1.NZ"></span>)'); 
   */ 

    //regular expressions to replace/add the necessary currency tags
    var reCur = new RegExp("&lt;([^(&gt;)]*)(=X&gt;)", "gi");
    var articletextCurrency = articletextStockAu.replace(reCur, span1 + '"$1=X"><a href="/news-and-analysis/currency/compare.aspx?code=$1=X">$1=X' + articleIcon + '</a><div class="quotedToolTipBox" quoted="$1=X" ' + span3 + '"$1=X"></span>)'); 
    var reCurR = new RegExp("&lt;([^(&gt;)]*)(=R&gt;)", "gi");
    var articletextCurrencyR = articletextCurrency.replace(reCurR, span1 + '"$1=X"><a href="/news-and-analysis/currency/compare.aspx?code=$1=X">$1=X' + articleIcon + '</a><div class="quotedToolTipBox" quoted="$1=X" ' + span3 + '"$1=X"></span>)'); 
    var reCurAud = new RegExp("&lt;AUD=&gt;", "gi");
    var articletextCurrencyAud = articletextCurrencyR.replace(reCurAud, span1 + '"AUD=X"><a href="/news-and-analysis/currency/compare.aspx?code=AUD=X">AUD=X' + articleIcon + '</a><div class="quotedToolTipBox" quoted="AUD=X" ' + span3 + '"AUD=X"></span>)');
    var reCurUsd = new RegExp("&lt;USD=&gt;", "gi");
    var articletextCurrencyUsd = articletextCurrencyAud.replace(reCurUsd, span1 + '"USD=X"><a href="/news-and-analysis/currency/compare.aspx?code=USD=X">USD=X' + articleIcon + '</a><div class="quotedToolTipBox" quoted="USD=X" ' + span3 + '"USD=X"></span>)');
    var reCurGbp = new RegExp("&lt;GBP=&gt;", "gi");
    var articletextCurrencyGbp = articletextCurrencyUsd.replace(reCurGbp, span1 + '"GBP=X"><a href="/news-and-analysis/currency/compare.aspx?code=GBP=X">GBP=X' + articleIcon + '</a><div class="quotedToolTipBox" quoted="GBP=X" ' + span3 + '"GBP=X"></span>)');
    var reCurEur = new RegExp("&lt;EUR=&gt;", "gi");
    var articletextCurrencyEur = articletextCurrencyGbp.replace(reCurEur, span1 + '"EUR=X"><a href="/news-and-analysis/currency/compare.aspx?code=EUR=X">EUR=X' + articleIcon + '</a><div class="quotedToolTipBox" quoted="EUR=X" ' + span3 + '"EUR=X"></span>)');
    var reCurJpy = new RegExp("&lt;JPY=&gt;", "gi");
    var articletextCurrencyJpy = articletextCurrencyEur.replace(reCurJpy, span1 + '"JPY=X"><a href="/news-and-analysis/currency/compare.aspx?code=JPY=X">JPY=X' + articleIcon + '</a><div class="quotedToolTipBox" quoted="JPY=X" ' + span3 + '"JPY=X"></span>)');
    var reCurCad = new RegExp("&lt;CAD=&gt;", "gi");    
    var articletextCurrencyCad = articletextCurrencyJpy.replace(reCurCad, span1 + '"CAD=X"><a href="/news-and-analysis/currency/compare.aspx?code=CAD=X">CAD=X' + articleIcon + '</a><div class="quotedToolTipBox" quoted="CAD=X" ' + span3 + '"CAD=X"></span>)');
    var reCurNzd = new RegExp("&lt;NZD=&gt;", "gi");    
    var articletextCurrencyNzd = articletextCurrencyCad.replace(reCurNzd, span1 + '"NZD=X"><a href="/news-and-analysis/currency/compare.aspx?code=NZD=X">NZD=X' + articleIcon + '</a><div class="quotedToolTipBox" quoted="NZD=X" ' + span3 + '"NZD=X"></span>)');
    
    //regular expressions to replace/add the necessary australian indices tags
    var reInd01 = new RegExp("&lt;.AORD&gt;", "gi");
    var articletextIndex01 = articletextCurrencyNzd.replace(reInd01, span1 + '".AORD"><a href="/news-and-analysis/australian-indices/">.AORD' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AORD" ' + span2 + '".AORD"></span>)'); 
    var reInd02 = new RegExp("&lt;.ATLI&gt;", "gi");
    var articletextIndex02 = articletextIndex01.replace(reInd02, span1 + '".ATLI"><a href="/news-and-analysis/australian-indices/">.ATLI' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".ATLI" ' + span2 + '".ATLI"></span>)'); 
    var reInd03 = new RegExp("&lt;.AFLI&gt;", "gi");
    var articletextIndex03 = articletextIndex02.replace(reInd03, span1 + '".AFLI"><a href="/news-and-analysis/australian-indices/">.AFLI' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AFLI" ' + span2 + '".AFLI"></span>)'); 
    var reInd04 = new RegExp("&lt;.ATOI&gt;", "gi");
    var articletextIndex04 = articletextIndex03.replace(reInd04, span1 + '".ATOI"><a href="/news-and-analysis/australian-indices/">.ATOI' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".ATOI" ' + span2 + '".ATOI"></span>)'); 
    var reInd05 = new RegExp("&lt;.AXJO&gt;", "gi");
    var articletextIndex05 = articletextIndex04.replace(reInd05, span1 + '".AXJO"><a href="/news-and-analysis/australian-indices/">.AXJO' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AXJO" ' + span2 + '".AXJO"></span>)');
    var reInd06 = new RegExp("&lt;.AXKO&gt;", "gi");
    var articletextIndex06 = articletextIndex05.replace(reInd06, span1 + '".AXKO"><a href="/news-and-analysis/australian-indices/">.AXKO' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AXKO" ' + span2 + '".AXKO"></span>)');
    var reInd07 = new RegExp("&lt;.AXMD&gt;", "gi");
    var articletextIndex07 = articletextIndex06.replace(reInd07, span1 + '".AXMD"><a href="/news-and-analysis/australian-indices/">.AXMD' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AXMD" ' + span2 + '".AXMD"></span>)');
    var reInd08 = new RegExp("&lt;.AXSO&gt;", "gi");
    var articletextIndex08 = articletextIndex07.replace(reInd08, span1 + '".AXSO"><a href="/news-and-analysis/australian-indices/">.AXSO' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AXSO" ' + span2 + '".AXSO"></span>)');
    var reInd09 = new RegExp("&lt;.AXDJ&gt;", "gi");
    var articletextIndex09 = articletextIndex08.replace(reInd09, span1 + '".AXDJ"><a href="/news-and-analysis/australian-indices/">.AXDJ' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AXDJ" ' + span2 + '".AXDJ"></span>)');
    var reInd10 = new RegExp("&lt;.AXEJ&gt;", "gi");
    var articletextIndex10 = articletextIndex09.replace(reInd10, span1 + '".AXEJ"><a href="/news-and-analysis/australian-indices/">.AXEJ' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AXEJ" ' + span2 + '".AXEJ"></span>)');
    var reInd11 = new RegExp("&lt;.AXFJ&gt;", "gi");
    var articletextIndex11 = articletextIndex10.replace(reInd11, span1 + '".AXFJ"><a href="/news-and-analysis/australian-indices/">.AXFJ' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AXFJ" ' + span2 + '".AXFJ"></span>)');
    var reInd12 = new RegExp("&lt;.AXXJ&gt;", "gi");
    var articletextIndex12 = articletextIndex11.replace(reInd12, span1 + '".AXXJ"><a href="/news-and-analysis/australian-indices/">.AXXJ' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AXXJ" ' + span2 + '".AXXJ"></span>)');
    var reInd13 = new RegExp("&lt;.AXHJ&gt;", "gi");
    var articletextIndex13 = articletextIndex12.replace(reInd13, span1 + '".AXHJ"><a href="/news-and-analysis/australian-indices/">.AXHJ' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AXHJ" ' + span2 + '".AXHJ"></span>)');
    var reInd14 = new RegExp("&lt;.AXNJ&gt;", "gi");        
    var articletextIndex14 = articletextIndex13.replace(reInd14, span1 + '".AXNJ"><a href="/news-and-analysis/australian-indices/">.AXNJ' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AXNJ" ' + span2 + '".AXNJ"></span>)');
    var reInd15 = new RegExp("&lt;.AXIJ&gt;", "gi");
    var articletextIndex15 = articletextIndex14.replace(reInd15, span1 + '".AXIJ"><a href="/news-and-analysis/australian-indices/">.AXIJ' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AXIJ" ' + span2 + '".AXIJ"></span>)');
    var reInd16 = new RegExp("&lt;.AXMJ&gt;", "gi");
    var articletextIndex16 = articletextIndex15.replace(reInd16, span1 + '".AXMJ"><a href="/news-and-analysis/australian-indices/">.AXMJ' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AXMJ" ' + span2 + '".AXMJ"></span>)');
    var reInd17 = new RegExp("&lt;.AXPJ&gt;", "gi");
    var articletextIndex17 = articletextIndex16.replace(reInd17, span1 + '".AXPJ"><a href="/news-and-analysis/australian-indices/">.AXPJ' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AXPJ" ' + span2 + '".AXPJ"></span>)');
    var reInd18 = new RegExp("&lt;.AXSJ&gt;", "gi");
    var articletextIndex18 = articletextIndex17.replace(reInd18, span1 + '".AXSJ"><a href="/news-and-analysis/australian-indices/">.AXSJ' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AXSJ" ' + span2 + '".AXSJ"></span>)');
    var reInd19 = new RegExp("&lt;.AXTJ&gt;", "gi");
    var articletextIndex19 = articletextIndex18.replace(reInd19, span1 + '".AXTJ"><a href="/news-and-analysis/australian-indices/">.AXTJ' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AXTJ" ' + span2 + '".AXTJ"></span>)');
    var reInd20 = new RegExp("&lt;.AXUJ&gt;", "gi");
    var articletextIndex20 = articletextIndex19.replace(reInd20, span1 + '".AXUJ"><a href="/news-and-analysis/australian-indices/">.AXUJ' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".AXUJ" ' + span2 + '".AXUJ"></span>)');
    
    //regular expressions to replace/add the necessary overseas indices tags
    var reInd21 = new RegExp("&lt;.DJI&gt;", "gi");
    var articletextIndex21 = articletextIndex20.replace(reInd21, span1 + '".DJI"><a href="/news-and-analysis/australian-indices/">.DJI' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".DJI" ' + span2 + '".DJI"></span>)');
    var reInd22 = new RegExp("&lt;.IXIC&gt;", "gi");
    var articletextIndex22 = articletextIndex21.replace(reInd22, span1 + '".IXIC"><a href="/news-and-analysis/australian-indices/">.IXIC' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".IXIC" ' + span2 + '".IXIC"></span>)');
    var reInd23 = new RegExp("&lt;.FTSE&gt;", "gi");
    var articletextIndex23 = articletextIndex22.replace(reInd23, span1 + '".FTSE"><a href="/news-and-analysis/australian-indices/">.FTSE' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".FTSE" ' + span2 + '".FTSE"></span>)');
    var reInd24 = new RegExp("&lt;.N225&gt;", "gi");
    var articletextIndex24 = articletextIndex23.replace(reInd24, span1 + '".N225"><a href="/news-and-analysis/australian-indices/">.N225' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".N225" ' + span2 + '".N225"></span>)');
    var reInd25 = new RegExp("&lt;.N300&gt;", "gi");
    var articletextIndex25 = articletextIndex24.replace(reInd25, span1 + '".N300"><a href="/news-and-analysis/australian-indices/">.N300' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".N300" ' + span2 + '".N300"></span>)');
    var reInd26 = new RegExp("&lt;.HSI&gt;", "gi");
	var articletextIndex26 = articletextIndex25.replace(reInd26, span1 + '".HSI"><a href="/news-and-analysis/australian-indices/">.HSI' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".HSI" ' + span2 + '".HSI"></span>)');	        		        
	var reInd27 = new RegExp("&lt;.STI&gt;", "gi");
    var articletextIndex27 = articletextIndex26.replace(reInd27, span1 + '".STI"><a href="/news-and-analysis/australian-indices/">.STI' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".STI" ' + span2 + '".STI"></span>)');
    var reInd28 = new RegExp("&lt;.NZAU&gt;", "gi");
    var articletextIndex28 = articletextIndex27.replace(reInd28, span1 + '".NZAU"><a href="/news-and-analysis/australian-indices/">.NZAU' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".NZAU" ' + span2 + '".NZAU"></span>)');
    var reInd29 = new RegExp("&lt;.JKSE&gt;", "gi");
    var articletextIndex29 = articletextIndex28.replace(reInd29, span1 + '".JKSE"><a href="/news-and-analysis/australian-indices/">.JKSE' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".JKSE" ' + span2 + '".JKSE"></span>)');
    var reInd30 = new RegExp("&lt;.TWII&gt;", "gi");
    var articletextIndex30 = articletextIndex29.replace(reInd30, span1 + '".TWII"><a href="/news-and-analysis/australian-indices/">.TWII' + articleIcon + '</a><div class="quotedToolTipBox" quoted=".TWII" ' + span2 + '".TWII"></span>)');

    if (articletext) {
        articletext.innerHTML = articletextIndex30;
    } else if (articletext2) {
        articletext2.innerHTML = articletextIndex30;
    } else if (articletext3) {
        articletext3.innerHTML = articletextIndex30;
    } else if (articletext4) {
        articletext4.innerHTML = articletextIndex30;
    }  else if (articletext5) {
        articletext5.innerHTML = articletextIndex30;
    }  else if (articletext6) {
        articletext6.innerHTML = articletextIndex30;
    }  else if (articletext7) {
        articletext7.innerHTML = articletextIndex30;
    }  

    return true;
}



// get the currency name from the lookup
function findCurr(args) {
    var res = "";    
    var currFrom = "";
    for (var i=0; i<currNameLookup.length; i++) {
        if (args[0] == currNameLookup[i][0]) {
            currFrom = currNameLookup[i][1];
            break;
        }
    }
    var currTo = "";
    if (args.length == 2) {
       for (var i=0; i<currNameLookup.length; i++) {
            if (args[1] == currNameLookup[i][0]) {
                currTo = currNameLookup[i][1];
                break;
            }
        }
    } else {
        currTo = "US Dollar";
    }
    res = (currFrom==""? inpCurrFrom:currFrom) + " to " + (currTo==""? inpCurrTo:currTo);
    
    return res;
}



// populate the summary 
function populateSummary(el, oCode, summaryClassName) {
    var priceCurrent, changeVal, changePct, className;
    for (var i=0; i<arrStockInfo.length; i++) {
        if (arrStockInfo[i].stockcode == oCode) {
            priceCurrent = arrStockInfo[i].value;
            changeVal = arrStockInfo[i].change;
            changePct = arrStockInfo[i].percentchange;
            className = (changeVal<0? "quoteChangeDown":"quoteChangeUp");
        }        
    }
    // only show the current price for currency
    if (summaryClassName == "quotedSummaryCurr") {
        el.innerHTML = priceCurrent;
    } else {
        el.innerHTML = priceCurrent + ', <span class="' + className + '">' + (changeVal<0? "":"+") + changeVal + '</span>, <span class="' + className + '">' + (changeVal<0? "":"+") + changePct + '%</span>';
    }    
    return true;
}

// construct the quote popup
function createPopup(el,oCode) {
    var companyName, priceCurrent, date, time, changeVal, changePct, className;
    
    // get the info to construct a quote popup
    for (var i=0; i<arrStockInfo.length; i++) {
        if (arrStockInfo[i].stockcode == oCode) {
            companyName = arrStockInfo[i].company;
            priceCurrent = arrStockInfo[i].value;
            date = arrStockInfo[i].date;
            time = arrStockInfo[i].time;
            changeVal = arrStockInfo[i].change;
            changePct = arrStockInfo[i].percentchange;
            className = (changeVal<0? "quoteChangeDown":"quoteChangeUp");
        }        
    }   
    
    //company name for currency popup
    if (oCode.length == 8) {
        if (oCode.substring(6) == "=X") {
            companyName = findCurr([oCode.substring(0,3), oCode.substring(3,6)]);
        }        
    }
    if (oCode.length == 5) {
        if (oCode.substring(3) == "=X") {            
            companyName = findCurr([oCode.substring(0,3)]);
        }            
    }
    
    var divPopup = document.createElement("div");
    divPopup.className = "quote_popup";
    
    // flash chart
    var divFlash = document.createElement("div");
    divFlash.className = "quote_popup_flash";
    var popup_uid = new Date().getTime();
    var popup_flashProxy = new FlashProxy(popup_uid, "/media/flash/charting/scripts/JavaScriptFlashGateway.swf");
    var popup_tag = new FlashTag('/media/flash/chart_mini_article.swf?' + oCode + '?1M?1M?line?notfixed', '189', '153'); 
    popup_tag.setFlashvars("lcId="+popup_uid);
    
    var flashText = popup_tag.toString();
    divFlash .innerHTML = flashText;
    divPopup.appendChild(divFlash);

    // create header info
    var divPopupHeader = document.createElement("div");
    divPopupHeader.className = "quote_popup_header";
    var spanCompany = document.createElement("span");
    spanCompany.className = "quote_popup_header_company";
    spanCompany.innerHTML = companyName; //company name
    var spanDate = document.createElement("span");
    spanDate.className = "quote_popup_header_date";
    spanDate.innerHTML = document.getElementById("dateNow").innerHTML; //date
    var divTime = document.createElement("div");
    divTime.className = "quote_popup_header_time";
    divTime.innerHTML = document.getElementById("timeNow").innerHTML; //time
    divPopupHeader.appendChild(spanCompany);
    divPopupHeader.appendChild(spanDate);
    divPopupHeader.appendChild(divTime);
    divPopup.appendChild(divPopupHeader);
    
    // create info table
    var tblStockInfo = document.createElement("table");
    tblStockInfo.className = "quote_popup_table";
    var tblStockBody = document.createElement("tbody");
    var tblHeaderRow = document.createElement("tr");    
    var tblHeaderValue = document.createElement("td");
    tblHeaderValue.className = "quote_popup_table_header";
    tblHeaderValue.innerHTML = defineHeader(oCode);
    var tblHeaderChange = document.createElement("td");
    tblHeaderChange.className = "quote_popup_table_header";
    tblHeaderChange.innerHTML = "Change";
    var tblHeaderPercent = document.createElement("td");
    tblHeaderPercent.className = "quote_popup_table_header";
    tblHeaderPercent.innerHTML = "% Change";
    tblHeaderRow.appendChild(tblHeaderValue);
    tblHeaderRow.appendChild(tblHeaderChange);
    tblHeaderRow.appendChild(tblHeaderPercent);
    var tblInfoRow = document.createElement("tr");  
    var tblInfoValue = document.createElement("td");
    tblInfoValue.innerHTML = "<span style='font-family:tahoma;'>" + priceCurrent + "</span>"; // current value
    var tblInfoChange = document.createElement("td");
    tblInfoChange.className = className;
    tblInfoChange.innerHTML = "<span style='font-family:tahoma;'>" + (className=="quoteChangeUp"? "+":"") + changeVal + "</span>"; // change amount
    var tblInfoPercent = document.createElement("td");    
    tblInfoPercent.className = className;
    tblInfoPercent.innerHTML = "<span style='font-family:tahoma;'>" + (className=="quoteChangeUp"? "+":"") + changePct + "%</span>"; // change percentage
    tblInfoRow.appendChild(tblInfoValue);
    tblInfoRow.appendChild(tblInfoChange);    
    tblInfoRow.appendChild(tblInfoPercent);    
    tblStockBody.appendChild(tblHeaderRow);
    tblStockBody.appendChild(tblInfoRow);    
    tblStockInfo.appendChild(tblStockBody);
    divPopup.appendChild(tblStockInfo);
    
    var divAdditionalLinks = document.createElement("div");
    divAdditionalLinks.className = "quote_popup_additional_links";
    
    // additional links for stock
    divAdditionalLinks.innerHTML = "";
    var splitCode = oCode.split(".");    
    if (splitCode.length == 2 && (splitCode[1] == "AX" || splitCode[1] == "NZ")) {
        divAdditionalLinks.innerHTML =  "<ul><li><a href='http://money.ninemsn.com.au/shares-and-funds/research-a-company/overview.aspx?subsectionid=4060&amp;subsectionname=Researchacompany_Overview&amp;code=" + splitCode[0] + "&ctry=" + splitCode[1] + "&amp;inforeq=Overview'>Company overview</a></li><li><a href='http://money.ninemsn.com.au/shares-and-funds/quotes/live.aspx?subsectionid=4068&amp;subsectionname=Researchacompany_Quotes&amp;code=" + splitCode[0] + "&amp;ctry=" + splitCode[1] + "&amp;inforeq=Quotes'>Real-time quote</a></li></ul>";
    } else if (splitCode.length == 2) {
        // additional links for indices
        divAdditionalLinks.innerHTML =  "<ul><li><a href='/news-and-analysis/australian-indices/'>Australian indices</a></li><li><a href='/news-and-analysis/international-indices/'>International indices</a></li></ul>";
    } 
    
    // additional links for currencies
    splitCode = oCode.split("=");
    if (splitCode.length == 2 && splitCode[1] == "X") {
        divAdditionalLinks.innerHTML =  "<ul><li><a href='/news-and-analysis/currency/intro.aspx?initialtab=cu&inforeq=Charts&subsectionid=3990&subsectionname=getACurrencyChart'>Currency chart</a></li><li><a href='/news-and-analysis/currency-converter.aspx'>Compare currencies</a></li></ul>";
    }
    
    divPopup.appendChild(divAdditionalLinks);
    
    /* sponsor ad
    var sponsorAd = document.getElementById("btyb_ad");
    if (sponsorAd) {
        var innerDiv = sponsorAd.innerHTML.toLowerCase();
        var sponsorAdLink = (innerDiv.substring(innerDiv.indexOf("<a"), 4 + innerDiv.indexOf("</a>")));
        var divSponsorAd = document.createElement("div");
        divSponsorAd.innerHTML = sponsorAdLink;
        divPopup.appendChild(divSponsorAd);
        }
    */
    
    // new iframe sponsor ad implementation
    var sponsorAd = '<iframe width="100" frameborder="0" scrolling="no" style="border:0;height:30px" src="/quotead.aspx" style="overflow:hidden"></iframe>'
    var divSponsorAd = document.createElement("div");
    divSponsorAd.id = "quoteAd";
    divSponsorAd.innerHTML = sponsorAd;
    divPopup.appendChild(divSponsorAd);
    
    el.innerHTML = "";
    el.appendChild(divPopup);
    return true;
}

function articleSetupPos(el) {
    var offsetTrail = el;
    var offsetLeft = 0;
    var offsetTop = 0;
    while (offsetTrail) {
        offsetLeft += offsetTrail.offsetLeft;
        offsetTop += offsetTrail.offsetTop;
        offsetTrail = offsetTrail.offsetParent;
    }

    var visibleTop = 0;
    var visibleBottom = 0;
    var spans = el.getElementsByTagName("div");
    var i;
    if (window.innerHeight) {
        // Firefox
        visibleTop = window.pageYOffset;
        visibleBottom = window.innerHeight;
    } else if (document.documentElement && document.documentElement.scrollTop) {
        visibleTop = document.documentElement.scrollTop;
    } else if (document.body) {
        visibleTop = document.body.scrollTop;
        visibleBottom = document.body.offsetHeight;
    }

    for (i = 0; i < spans.length; i++) {
        if (spans[i].className == "quotedToolTipBox" && spans[i].style) {
            if ((((offsetTop - visibleTop) + spans[i].offsetHeight) > visibleBottom) &&((offsetTop - spans[i].offsetHeight) > visibleTop)) {
                spans[i].style.top = "-" + (spans[i].offsetHeight) + "px";
            } else {
                spans[i].style.top = "19px";
            }

            var x = 0;
            if (document.body.offsetWidth>900) {
                x = 40/100*document.body.offsetWidth;
            } else if (document.body.offsetWidth>700) {
                x = 20/100*document.body.offsetWidth;
            } else {
                x = 10/100*document.body.offsetWidth;
            }

            if ((offsetLeft + spans[i].offsetWidth) > (document.body.offsetWidth - x) && (offsetLeft - spans[i].offsetWidth) > 0) {                    
                spans[i].style.left = ((element.offsetWidth - spans[i].offsetWidth) + 12) + "px";                    
            } else {
                spans[i].style.left = "0px";                    
            }
        }
    }
} 

function articleGetFeed (url,callback) {
    var jsonProp = new Ninemsn.Global.ContentManager.JsonProp(30000,5000,[],"HTTPTransfer_JSONResult",Ninemsn.Global.ContentManager.Json.ResponseFunction.Unique);	
    Ninemsn.Global.ContentManager.GetContent(url,callback,jsonProp);
}

function defineHeader (oCode) {
    if (tableHeader[oCode]) {
        return "Value";
    } else if (oCode.indexOf("=X") != -1) {
        return "Value";
    } else {
        return "Price";
    }
}

