var _navigationLinks = new Array();
var _unActiveElements = new Array();
var _as = '';
var _asl = '';

var descriptorToShow = '';
var timeout = null;
var showingMenu = '';
var hidingMenu = '';

var menuEle = null;
var lastMenuID = null;

var menuTimeout = null;
var currentEffect = null;
var max_top = 159;
var oldSource = '';
var openFinDiv = '';

function showFinDiv(str, text) {

    hideLongDisclaimer();
    hideFinDiv();
    var a = document.getElementById(str).getElementsByTagName('h3');
    if (a.length != 0) {
        a[0].innerHTML = text;
    }
    document.getElementById(str).className = 'popupDiv';
    openFinDiv = str;
}
function hideFinDiv() {
    if (document.getElementById(openFinDiv)) {
        document.getElementById(openFinDiv).className = 'popupDiv dnd';
    }
}



function showLongDisclaimer() {
    hideLongDisclaimer();
    hideFinDiv();

    document.getElementById('longDisclaimer').className = 'popupDiv';
}
function hideLongDisclaimer() {
    document.getElementById('longDisclaimer').className = 'popupDiv dnd';
}


function swapImage(ele, NewSrc) {
    oldSource = ele.src;
    ele.src = NewSrc;
}

function extendTimeout() {
    window.clearTimeout(menuTimeout);
    menuTimeout = window.setTimeout(hideCurrent, 1500);
}

function hideMenu(ele, menuId) {
    window.clearTimeout(menuTimeout);
    if (hidingMenu == menuId)
        return;

    var currentTop = document.getElementById(menuId).offsetTop;
    var desiredTop = currentTop - document.getElementById(menuId).offsetHeight;

    var t = (currentTop - desiredTop) * -1;
    hidingMenu = menuId;

    var a = new Effect.Parallel(
        [
            new Effect.Opacity(menuId, { sync: true, to: 0.0, from: 1.0 }),
            new Effect.Move(menuId, { sync: true, x: 0, y: t, mode: 'relative' })
        ], { duration: 0.3 }
    );

}


function showMenu(ele, menuId) {
    window.clearTimeout(menuTimeout);
    if (showingMenu == menuId) {
        hideMenu(ele, showingMenu);
        showingMenu = '';
        return;
    }

    if (showingMenu != '') {
        hideMenu(ele, showingMenu);
    }
    showingMenu = menuId;



    var desiredTop = max_top;
    var currentTop = document.getElementById(menuId).offsetTop;
    var t = desiredTop - currentTop;

    currentEffect = new Effect.Parallel(
        [
            new Effect.Move(menuId, { sync: true, x: 0, y: t, mode: 'relative' }),
            new Effect.Opacity(menuId, { sync: true, to: 1.0, from: 0.0 })
        ], { duration: 0.6, queue: 'front' }
    );

    menuEle = ele;
    lastMenuID = menuId;
    menuTimeout = window.setTimeout(hideCurrent, 1500);
}
function hideCurrent() {
    hideMenu(menuEle, lastMenuID);
}


function getPosition(e) {
    e = e || window.event;
    var cursor = { x: 0, y: 0 };
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    }
    else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX +
                (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY +
                (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
        cursor.x = cursor.x - 50;
        cursor.y = cursor.y - 5;
    }
    return cursor;
}

function hideDescriptor() {
    document.getElementById('textDescriptors').style.display = 'none';
    prevtoolTipText = null;
}

function getBrowser() {
    if (navigator.appName == "Microsoft Internet Explorer") {
        if (navigator.appVersion.split("MSIE 7.0").length > 1)
            return "IE7";
        else if (navigator.appVersion.split("MSIE 8.0").length > 1)
            return "IE8";
        else
            return "IE6";
    }
    else
        return "other";
}



var prevtoolTipText = null;
function showDescriptor(obj, text, showalways, val, lvalue) {
    if (lvalue == "undefined" || lvalue == null) {
        lvalue = 0;
    }
    if (prevtoolTipText != text) {
        if (!showalways)
            window.clearTimeout(timeout);

        var curtop = obj.offsetTop;

        if (obj.offsetParent) {
            curtop = obj.offsetTop;
            while (obj == obj.offsetParent)
                curtop += obj.offsetTop;
        }
        var browser = getBrowser();
        if (browser == "IE6") {
            if (!IsPrintVersion()) {
                document.getElementById('textDescriptors').style.top = (curtop + 369) + "px";
                document.getElementById('textDescriptors').style.left = 310 + lvalue + "px";
            }
            else {
                document.getElementById('textDescriptors').style.top = (curtop + 367) + "px";
                document.getElementById('textDescriptors').style.left = 150 + lvalue + "px";
            }
        }
        if (browser == "other") {
            if (!IsPrintVersion()) {
                document.getElementById('textDescriptors').style.top = (curtop + obj.offsetHeight + val + 100) + "px";
                document.getElementById('textDescriptors').style.left = 324 + lvalue + "px";
            }
            else {
                document.getElementById('textDescriptors').style.top = (curtop + obj.offsetHeight + val + 75) + "px";
                document.getElementById('textDescriptors').style.left = 144 + lvalue + "px";
            }
        }
        else {
            if (!IsPrintVersion()) {
                document.getElementById('textDescriptors').style.top = (curtop + obj.offsetHeight + val + 90) + "px";
                document.getElementById('textDescriptors').style.left = 324 + lvalue + "px";
            }
            else {
                document.getElementById('textDescriptors').style.top = (curtop + obj.offsetHeight + val + 65) + "px";
                document.getElementById('textDescriptors').style.left = 144 + lvalue + "px";
            }
        }

        document.getElementById('textDescriptors').style.display = 'block';
        document.getElementById('textDescriptors').style.zIndex = "10000";
        document.getElementById('textDescriptors').innerHTML = text;
        if (!showalways)
            timeout = window.setTimeout(hideDescriptor, 4500);

        prevtoolTipText = text;
    }
}

function doPopup(pageUrl) {
    var hr = pageUrl;
    LeftPosition = 150;
    TopPosition = 150;
    //to open popups in new window for every lineitem.
    //window.open(hr, '_blank', 'height=550,width=700,top=' + TopPosition + ',left=' + LeftPosition + 'status=false,toolbar=no,menubar=no,location=no,resizable=yes,scrollbars=yes').focus();
    window.open(hr, 'FSPop', 'height=550,width=740,top=' + TopPosition + ',left=' + LeftPosition + 'status=false,toolbar=no,menubar=no,location=no,resizable=yes,scrollbars=yes').focus();
}


function showPopup(ele, h, w) {
    try {
        window.open(ele, 'RLPop', 'height=' + h + ',width=' + w + ',status=false,toolbar=no,menubar=no,location=no,resizable=yes,scrollbars=yes').focus();
        return false;
    }
    catch (e) { };
}

function setupScreen() {
    for (var i = 0; i < _unActiveElements.length; i++) {
        document.getElementById(_unActiveElements[i]).className = 'subsection dnd';
    }
    var t = window.location.href.split('#');
    if (t.length > 1) {
        for (var k = 0; k < _navigationLinks.length; k++) {
            if (document.getElementById(_navigationLinks[k]).firstChild.href == window.location.href) {
                document.getElementById(_navigationLinks[k]).firstChild.onclick();
                return false;
            }
        }
    }
}

function displaySubsection(si, sli) {
    if (si == _as)
    { return; }
    document.getElementById(_asl).className = '';
    document.getElementById(_as).className = 'subsection dnd';
    document.getElementById(si).className = 'subsection';

    document.getElementById(sli).className = 'current';
    _asl = sli;
    _as = si;
}


var currentlyShowing = null;

function showBigChart(obj, ele, idx, addtop, src) {
    hideBigChart();
    currentlyShowing = document.getElementById(ele);
    currentlyShowing.style.top = (108 + (190 * idx) + addtop) + "px";

    document.getElementById("xlImage").src = src;
    currentlyShowing.style.display = 'block';
}

function hideBigChart() {
    if (currentlyShowing) {
        currentlyShowing.style.display = 'none';
    }
}

function ffResize(eltId, offset, IE6offset) {
    var browser = getBrowser();
    if (browser != "IE6" && browser != "IE7" && browser != "IE8") {
        try {
            if (window.location.search.indexOf("pf=true") == -1) {
                document.getElementById('footerContainer').style.marginTop = (document.getElementById('content_body').clientHeight + 165) + "px";
                document.getElementById(eltId).style.height = (document.getElementById('content_body').clientHeight + offset + 3) + "px";
            }
            else {
                document.getElementById(eltId).style.height = (document.getElementById('content_body').clientHeight + offset + 132) + "px";
            }
        }
        catch (err) { }
    }
    else if (browser == "IE8") {
        try {

            if (window.location.search.indexOf("pf=true") == -1) {
                document.getElementById('footerContainer').style.marginTop = (document.getElementById('content_body').clientHeight + 177) + "px";
                document.getElementById(eltId).style.height = (document.getElementById('content_body').clientHeight + offset + 13) + "px";
            }
            else {
                document.getElementById(eltId).style.height = (document.getElementById('content_body').clientHeight + offset + 142) + "px";
            }
        }
        catch (err) { }
    }
    else if (browser == "IE6") {
        try {
            if (window.location.search.indexOf("pf=true") == -1) {
                document.getElementById('footerContainer').style.marginTop = (document.getElementById('content_body').clientHeight - 373) + "px";
                document.getElementById(eltId).style.height = (document.getElementById('content_body').clientHeight + IE6offset) + "px";
            }
            else {
                document.getElementById('footerContainer').style.marginTop = (document.getElementById('content_body').clientHeight + 35) + "px";
                document.getElementById(eltId).style.height = (document.getElementById('content_body').clientHeight + IE6offset + 117) + "px";
            }
        }
        catch (err) { }
    }
}


var setGradient = (function() {

    //private variables;
    var p_dCanvas = document.createElement('canvas');
    var p_useCanvas = !!(typeof (p_dCanvas.getContext) == 'function');
    var p_dCtx = p_useCanvas ? p_dCanvas.getContext('2d') : null;
    var p_isIE = /*@cc_on!@*/false;


    //test if toDataURL() is supported by Canvas since Safari may not support it

    try { p_dCtx.canvas.toDataURL() } catch (err) {
        p_useCanvas = false;
    };

    if (p_useCanvas) {

        return function(dEl, sColor1, sColor2, bRepeatY, p) {
            if (p == null || p == "undefined") p = 1;
            if (typeof (dEl) == 'string') dEl = document.getElementById(dEl);
            if (!dEl) return false;
            var nW = dEl.offsetWidth;
            var nH = dEl.offsetHeight;
            p_dCanvas.width = nW;
            p_dCanvas.height = nH;


            var dGradient;
            var sRepeat;
            // Create gradients
            if (bRepeatY) {
                dGradient = p_dCtx.createLinearGradient(0, 0, nW, 0);
                sRepeat = 'repeat-y';
            } else {
                dGradient = p_dCtx.createLinearGradient(0, 0, 0, nH / p);
                sRepeat = 'repeat-x';
            }

            dGradient.addColorStop(0, sColor1);
            dGradient.addColorStop(1, sColor2);

            p_dCtx.fillStyle = dGradient;
            p_dCtx.fillRect(0, 0, nW, nH);
            var sDataUrl = p_dCtx.canvas.toDataURL('image/png');
            with (dEl.style) {
                backgroundRepeat = sRepeat;
                backgroundImage = 'url(' + sDataUrl + ')';
                backgroundColor = sColor2;
            };
        }
    } else if (p_isIE) {

        p_dCanvas = p_useCanvas = p_dCtx = null;
        return function(dEl, sColor1, sColor2, bRepeatY) {
            if (typeof (dEl) == 'string') dEl = document.getElementById(dEl);
            if (!dEl) return false;
            dEl.style.zoom = 1;
            var sF = dEl.currentStyle.filter;
            dEl.style.filter += ' ' + ['progid:DXImageTransform.Microsoft.gradient( GradientType=', +(!!bRepeatY), ',enabled=true,startColorstr=', sColor1, ', endColorstr=', sColor2, ')'].join('');

        };

    } else {

        p_dCanvas = p_useCanvas = p_dCtx = null;
        return function(dEl, sColor1, sColor2) {

            if (typeof (dEl) == 'string') dEl = document.getElementById(dEl);
            if (!dEl) return false;
            with (dEl.style) {
                backgroundColor = sColor2;
            };
        }
    }
})();



function trackLSB(type) {
    var qu = document.getElementById("msviSearchBox").value;
    var dcsuri = "results.aspx";
    var dcssip, ti;
    if (type == "Site") {
        dcssip = "search.microsoft.com";
    }
    else if (type == "Web") {
        dcssip = "search.live.com";
    }
    window.location = "http://" + dcssip + "/" + dcsuri + "?mkt=en-US&setlang=en-US&q=" + qu;
}

function CheckSilverlightInstalled() {
    var isSilverlightInstalled = false;
    try {
        try {
            var slControl = new ActiveXObject('AgControl.AgControl'); //check IE
            isSilverlightInstalled = true;
        }
        catch (e) {
            if (navigator.plugins["Silverlight Plug-In"]) //check not IE
            {
                isSilverlightInstalled = true;
            }
        }
    }
    catch (e) { }

    return isSilverlightInstalled;
}
function onSilverlightError(sender, args) {
    var appSource = "";
    if (sender != null && sender != 0) {
        appSource = sender.getHost().Source;
    }
    var errorType = args.ErrorType;
    var iErrorCode = args.ErrorCode;

    var errMsg = "Unhandled Error in Silverlight 2 Application " + appSource + "\n";

    errMsg += "Code: " + iErrorCode + "    \n";
    errMsg += "Category: " + errorType + "       \n";
    errMsg += "Message: " + args.ErrorMessage + "     \n";

    if (errorType == "ParserError") {
        errMsg += "File: " + args.xamlFile + "     \n";
        errMsg += "Line: " + args.lineNumber + "     \n";
        errMsg += "Position: " + args.charPosition + "     \n";
    }
    else if (errorType == "RuntimeError") {
        if (args.lineNumber != 0) {
            errMsg += "Line: " + args.lineNumber + "     \n";
            errMsg += "Position: " + args.charPosition + "     \n";
        }
        errMsg += "MethodName: " + args.methodName + "     \n";
    }

    throw new Error(errMsg);
}

function IsPrintVersion() {
    if (window.location.search.indexOf("pf=true") != -1) {
        return true;
    }
    else {
        return false;
    }
}

function ShowLeftChart() {
    if (IsPrintVersion()) {
        document.getElementById("leftChart").style.display = "none";
    }
}

function SetPrintVersion() {
    if (IsPrintVersion()) {
        var mnpLeft = 180;
        var mnpTop = 25;

        var rightColumn = document.getElementById("rightColumn");
        if (rightColumn != null) {
            rightColumn.style.left = rightColumn.offsetLeft - mnpLeft + "px";
            rightColumn.style.top = rightColumn.offsetTop - mnpTop + "px";
        }

        var leftChart = document.getElementById("leftChart");
        if (leftChart != null) {
            leftChart.style.display = "none";
        }

        var t1514 = document.getElementById("t1514");
        if (t1514 != null) {
            t1514.style.left = t1514.offsetLeft - mnpLeft + "px";
        }
    }
}

function SetRelatedInformation() {
    var relateInformation = document.getElementById("RelatedInfoPanel");
    var rightColumn = document.getElementById("rightColumn");
    var menuHeight = document.getElementById("central_nav").offsetHeight;
    var mainContentHeight = document.getElementById("content_body").offsetHeight
    var disclaimerContentHeight = 0;

    if (!IsPrintVersion()) {
        disclaimerContentHeight = document.getElementById("disclaimerContent").offsetHeight
    }
    var browser = getBrowser();
    if (browser != "IE6" && browser != "IE7" && browser != "IE8") {
        if (isChrome) {
            mainContentHeight = document.getElementById("main_content_holder").offsetHeight + 38;
            relateInformation.style.height = menuHeight + mainContentHeight - relateInformation.offsetTop - disclaimerContentHeight - 22;
        }
        else {
            relateInformation.style.height = menuHeight + mainContentHeight - relateInformation.offsetTop - disclaimerContentHeight - 22;
        }
    }
    else
        relateInformation.style.height = menuHeight + mainContentHeight - relateInformation.offsetTop - disclaimerContentHeight + 3;
}
function InitPage() {
    window.setTimeout(SetPrintVersion, 10);
    window.setTimeout(SetRelatedInformation, 10);
   
   
}

function AddFeedbackButton()
{
//    var pagetools = document.getElementById("pagetools");
//    if(pagetools != null)
//        pagetools.innerHTML += "<a onclick=\"window.open('http://support.microsoft.com/common/survey.aspx?scid=sw;en;1596&amp;altStyle=narrow&amp;renderOption=OverrideDefault&amp;showpage=1&amp;fr=1', 'Feedback', 'height=680,width=580,scrollbars=yes,menubar=no,titlebar=no,location=no,resizable=yes');\" onmouseover=\"window.status='Please input your feedback'; this.style.cssText='background-color:#ccc; padding:1px 2px 1px 2px; margin: 1px 1px 1px 1px; border: 1px solid #999; height: 20px; color:#000; text-decoration: none; cursor: hand;'; return true\" onmouseout=\"window.status=''; this.style.cssText='padding:2px 3px 2px 3px; margin: 1px 1px 1px 1px; height: 20px; color:#000; text-decoration: none; cursor: hand;'; return true\"><img width=\"16\" height=\"16\" alt=\"*\" title=\"\" border=\"0\" align=\"absmiddle\" src=\"img/feedback_transparentgray.gif\">&nbsp;Feedback </a>";

}

function hiliteRow(row) {

    var ths = row.getElementsByTagName("th");
    for (i = 0; i < ths.length; i++)
        ths[i].className += ' highlight';

    var tds = row.getElementsByTagName("td");
    for (i = 0; i < tds.length; i++)
        tds[i].className += ' highlight';


}

function unhiliteRow(row) {
    var ths = row.getElementsByTagName("th");
    for (i = 0; i < ths.length; i++)
        unhilite(ths[i]);

    var tds = row.getElementsByTagName("td");
    for (i = 0; i < tds.length; i++)
        unhilite(tds[i]);
}

function unhilite(obj) {
    if (obj != null)
        obj.className = obj.className.split('highlight').join('');

}

function hiliteIcon(icon) {
    hiliteRow(icon.parentNode);
    icon.getElementsByTagName("img")[0].src = 'img/TagMouseOver.gif';

}

function unhiliteIcon(icon) {
    unhiliteRow(icon.parentNode);
    icon.getElementsByTagName("img")[0].src = 'img/TagMouseOut.gif';
}

/*function hiliteKPIRow(row)
{
        
           
var ths = row.getElementsByTagName("th");
for(i=0; i<ths.length; i++) 
ths[i].className += ' highlight';
                
var tds = row.getElementsByTagName("td");
for(i=0; i<tds.length; i++) 
tds[i].className += ' highlight';

          
}
                
function unhiliteKPIRow(row)
{
            
var ths = row.getElementsByTagName("th");
for(i=0; i<ths.length; i++) 
unhilite(ths[i]);
                
var tds = row.getElementsByTagName("td");
for(i=0; i<tds.length; i++) 
unhilite(tds[i]);
}
*/


function ifTagTogglePin(img) {
    if (img != null)
        return img.src.indexOf("img/TagTogglePin.jpg") >= 0;
    return false;
}

function TagToggleMouseOver(img) {
    if (img.title == "")
        img.title = "Click to display XBRL tags.\n \nXBRL (eXtensible Business Reporting Language) is an XML-based framework for publishing financial statements. This site uses XBRL to display financial content."

    if (!ifTagTogglePin(img))
        img.src = "img/TagToggleMouseOver.jpg";
}

function TagToggleMouseOut(img) {
    if (!ifTagTogglePin(img))
        img.src = "img/TagToggleUnpin.jpg";
}

function showswitch(img) {
    var imgs = img.parentNode.parentNode.parentNode.getElementsByTagName("img");
    if (ifTagTogglePin(img)) {
        img.title = "Click to display XBRL tags.\n \nXBRL (eXtensible Business Reporting Language) is an XML-based framework for publishing financial statements. This site uses XBRL to display financial content."
        img.src = "img/TagToggleMouseOver.jpg";

        for (i = 0; i < imgs.length; i++)
            imgs[i].style.visibility = "hidden";
    }
    else {
        img.title = "Click to hide XBRL tags";
        img.src = "img/TagTogglePin.jpg";

        for (i = 0; i < imgs.length; i++)
            imgs[i].style.visibility = "visible";
    }

    img.style.visibility = "visible";
}


function showTag(obj, text, val, lvalue) {
    if (ifTagTogglePin(document.getElementById('showTagButton')))
        showDescriptor(obj, text, 1, val, lvalue);
}

function test() {
    alert('hi');
}

function ExpandCollapseSection(div) {

    var l = document.getElementById(div).className;
    if (l == 'dnd') {
        l = 'padall'; this.className = 'lvd';
    }
    else {
        l = 'dnd'; this.className = 'lv';
    }

    document.getElementById(div).className = l; ffResize('', ''); return false;
}