
/* Comment Generated by Combres - Resource '~/js/topicpagespecific.js' (Mode: Static) */
/// <reference path="jquery-1.4.1.min.js" />

var currenttab = 0;
var loaded;
var _omnituretest = false;
var _firstRequest = true;
var topicPageTabs = [];

function TopicTab(tabNumber, documentIds, expandedArray) {
    this.tabNumber = tabNumber;
    this.documentIds = documentIds
    this.loaded = false;
    this.forceExpandedDocId = "";
    this.expanded = expandedArray;
}

TopicTab.prototype = {
    setLoaded: function(newValue) {
        this.loaded = newValue;
    },
    getLoaded: function() {
        return this.loaded;
    },
    setExpanded: function(docId, newValue) {
        var i;
        for (i = 0; i < this.documentIds.length; i++) {
            if (this.documentIds[i] == docId) {
                this.expanded[i] = newValue;
                break;
            }
        };
    },
    getFirstExpandedDocId: function() {
        var i;
        for (i = 0; i < this.documentIds.length; i++) {
            if (this.expanded[i])
                return this.documentIds[i];
        }
        return null;
    },
    setForceExpandedDocId: function(newValue) {
        this.forceExpandedDocId = newValue;
        if (this.forceExpandedDocId) {
            this.setExpanded(this.forceExpandedDocId, true);
        }
    },
    getForceExpandedDocId: function() {
        return this.forceExpandedDocId;
    },
    getDocumentIdsSplit: function() {
        return this.documentIds.join(",");
    },
    getDocumentIdsArray: function() {
        return this.documentIds;
    }
};


function PopupRelatedTopics() {
    var tp = topicId;
    var iMyWidth = (window.screen.availWidth / 2) - (348 + 10);
    var iMyHeight = (window.screen.availHeight);
    window.open('/RelatedTopics.aspx?topicid=' + tp, 'rateimage', 'toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=695,height=' + iMyHeight + ',left=' + iMyWidth + ',top=0');
}

function hideAllContentBut(num) {
    var $compareUpper = $("#compareupper");
    var $essentialUpper = $("#essentialupper");
    var $qandaUpper = $("#qandapart");
    var $docUpper = $("#docpart");
    var $trimex = $("#trimext");

    $compareUpper.hide();
    $essentialUpper.hide();
    $qandaUpper.hide();
    $docUpper.show();
    $trimex.hide();

    if (num >= 4) {
        var $loadingUpper = $("#loadingupper");
        var $cupper = $("#contupper");
        var $clower = $("#contlower");
        $loadingUpper.hide();
        $cupper.hide();
        $clower.hide();

        if (5 == num) {
            // opening essential tab
            $essentialUpper.show();
            $clower.show();
        }
        else if (6 == num) {
            $cupper.show();
            $qandaUpper.show();
            $docUpper.hide();
        }
    }
}


function changeTab(tabNum) {
    getTabByNum(tabNum);
}

$(document).ready(function() {

    // Add history listener
    $.history.init(function(url) {

        if (url != "") {
            // Parse values from URL
            url = unescape(url);
            var urlSplit = url.split("-");
            var tabNum = urlSplit[0];
            var docId = urlSplit[1];

            //topicPageTabs[tabNum - 1].setForceExpandedDocId(docId);

            // Change the tab
            changeTab(tabNum);
        }
        else {
            getTabByNum(1, topicPageTabs[0].documentIds[0]);
        }

    }, { unescape: ":" });

});

function getTabByNum(tabNum) {
    // make sure we're not calling for the tab we're already on
    if (tabNum == currenttab) {
        return;
    }

    changeSelectedTab(tabNum);
    hideAllContentBut(tabNum);
    currenttab = tabNum;

    HandleTabClick(topicId, tabNum);
}

function changeSelectedTab(tabNum) {
    $("#tabcontentwrapper").attr("class", "tab" + tabNum + "wrap");

    $("div.showdoctext").hide();
    $("div.showdoctext[id=documentContent" + tabNum + "]").show();
}

/*
*   START OF OLD TopicDocumentAjax script
*/
var tool_control_id = "populate_document_pagetools";
var citation_control_id = "populate_document_citation";
var document_title_h2 = "populate_document_title";
var byline_control_id = "populate_document_byline";
var google_add_upper_control_id = "populate_ad_textupper";
var preview_control_id = "populate_document_textpreview";
var fulltext_control_id = "populate_document_textfull";
var left_ad_control_id = "populate_ad_left";
var compare_pagetools_id = "populate_compare_pagetools";

var citationType = "common_controls_citation";
var toolType = "common_controls_pagetools";
var googletexttype = "common_controls_ads_GoogleAdSearch";
var bylinetype = "common_controls_UpdatedByline112008";
var googleaddservertype = "common_controls_ads_DisplayGoogleAdServer";

var googlebanneradtypename = "topic_728x90_top";
var googleleftaddtypename = "topic_300x250_left";

var omnitureTagId;

function HandleResponse(topicId, tabNum) {
    var topicAction;    // prop22
    if (_firstRequest) {
        topicAction = 'Topic|Entry|';
    }
    else {
        topicAction = 'Topic|TabClick|';
    }

    if (!_firstRequest) {
        RefreshIFrames();
    }

    // Once we go through first request reset the flag
    _firstRequest = false;

    hideAllContentBut(tabNum);
    changeSelectedTab(tabNum);

    var tab = topicPageTabs[tabNum - 1];
    // Omniture
    if (tab.getForceExpandedDocId() != "") {
        topicAction += 'Full';
        SetOmnitureData(topicId, tabNum, tab.getForceExpandedDocId(), topicAction, true);

        // Use the oppotunity to scroll down to that document if on Further Reading tab
        var scrollToElement = $("h2[documentId='" + tab.getForceExpandedDocId() + "']");

        if (scrollToElement.length != 0) {
            setTimeout(function() { scroll(0, scrollToElement.offset().top - 10); }, 0);
        }
    } else {
        var docIds = tab.getDocumentIdsArray();
        var expandedDocId = tab.getFirstExpandedDocId();
        var omnitureDocId;

        // Capture display mode - if we display full document put FULL in Omniture. Else Preview
        // We have to pay for displaying content and preview is cheaper
        if (expandedDocId) {
            topicAction += 'Full';
            omnitureDocId = expandedDocId;
        } else {
            topicAction += 'Preview';
            if (tabNum <= 4)
                omnitureDocId = tab.documentIds[0];
            else    // Read More only gets doc s.props when its first doc is full-text
                omnitureDocId = null;
        }
        SetOmnitureData(topicId, tabNum, omnitureDocId, topicAction, true);
    }

    try {
        _docready = true;

        $('#contupper').show();
        $('#contlower').show();
    }
    catch (err) {
        //reportError(req.responseText, "topicdocumentajax.js", "", "");
    }

    BindBylineClick();
    loaded = true;
}

function RefreshIFrames() {
    // Update the cachebuster
    var rand = Math.floor(Math.random() * 10000000);
    var dfpTile = 0;
    $("iframe.dfp:visible, iframe.googleadiframe:visible").each(function(index, element) {

        var replaceString = element.src;
        if ($(element).hasClass("dfp") || $(element).hasClass("googleadiframe")) {

            // Account for DFP only if it is a DFP ad
            if ($(element).hasClass("dfp")) {
                dfpTile++;
                replaceString = replaceString.replace(/ord=[0-9]*/i, "ord=" + rand)
                                        .replace(/tile=[0-9]*/i, "tile=" + dfpTile);
            }

            // Refreshing iFrame with replacing SRC adds a history point that breaks jquery.history plugin
            var iFrameParent = $(element).parent();
            var iFrame = $(element).clone().attr("src", replaceString);

            $(element).remove();

            iFrameParent.append(iFrame);
        }
    });
}

function SetOmnitureData(topicid, tabNum, docId, topicAction, t) {
    if (s == null)
        return;

    ClearOmnitureData();

    s.pageName = "Topic"
    s.channel = "Topic";

    var doc = null;
    $(docs).each(function(i) {
        if (docs[i].DocumentId == docId)
            doc = docs[i];
    });

    if (doc) {
        s.prop3 = mainCat;
        s.prop4 = subCat1;
        s.prop6 = doc.DocPubDate;
        s.eVar6 = doc.DocPubDate;
        s.prop7 = doc.DocumentId + "|" + topicName;
        s.eVar7 = doc.DocumentId + "|" + topicName;

        if (doc.ProviderId != null && doc.ProviderId != 0 && doc.ProviderId != 'undefined') {
            s.prop8 = doc.ProviderId;
            s.eVar8 = doc.ProviderId;
        }

        s.prop10 = doc.Publication;
        s.eVar10 = doc.Publication;
        s.hier1 = doc.ProviderId + "|ENCY_TOPIC|" + doc.Publication;

    }

    s.prop14 = topicName;

    s.prop9 = 'ENCY_TOPIC';
    s.eVar9 = 'ENCY_TOPIC';

    if (!loaded && topicfromsearch == true)
        s.prop13 = 'true';
    else
        s.prop13 = 'false';

    if (topicAction) {
        s.prop22 = topicAction;
        s.eVar22 = topicAction;
    }

    if (t)
        s.t();
}

function ClearOmnitureData() {
    if (s == null)
        return;

    s.pageName = "";
    s.channel = "";
    s.prop3 = "";
    s.prop4 = "";
    s.prop6 = "";
    s.eVar6 = "";
    s.prop7 = "";
    s.eVar7 = "";
    s.prop8 = "";
    s.eVar8 = "";
    s.prop9 = "";
    s.eVar9 = "";
    s.prop10 = "";
    s.eVar10 = "";
    s.prop13 = false;
    s.prop14 = "";
    s.prop15 = "";
    s.prop22 = "";
    s.eVar22 = "";
    s.hier1 = "";
}

function FrShowMore(link, topicId, tabNum, docId) {
    toggleDocView($(link).closest("div.doccontentwrapper")); //.parent().parent().parent());
    ReadMoreOmniture(topicId, tabNum, docId)
}

// send custom click for read more
function ReadMoreOmniture(topicId, tabNum, docId) {
    SetOmnitureData(topicId, tabNum, docId, 'Topic|ReadMore|Full', false);
    OmnitureClick('TopicReadMore', _topicProps);
    topicPageTabs[tabNum - 1].setExpanded(docId, true);
}
var _topicProps = 'prop6,eVar6,prop7,eVar7,prop8,eVar8,prop9,eVar9,prop10,eVar10,prop22,eVar22';

function FrShowLess(link, topicId, tabNum, docId) {
    toggleDocView($(link).parent().parent().parent(), true);
    topicPageTabs[tabNum - 1].setExpanded(docId, false);
}

// send custom click for topic tab
function TabClickOmniture() {
    ClearOmnitureData();
    OmnitureClick('TopicTabtoTopicTab');
}

function HandleTabClick(topicId, tabNum) {
    if (topicPageTabs[tabNum - 1].documentIds.length !== 0)
        $('#docform > #docId').val(topicPageTabs[tabNum - 1].documentIds);

    // Scroll to top
    scroll(0, 0);

    // If we got the content already don't get from server.
    if (topicPageTabs[tabNum - 1].getLoaded()) {
        HandleResponse(topicId, tabNum);
        return;
    }

    if (topicPageTabs[tabNum - 1].documentIds.length === 0) {
        HandleResponse(topicId, tabNum);
        return;
    }

    //console.info("will get from server");

    $.ajax(
        {
            url: "/topicajax/doctab.aspx",
            type: "POST",
            data: {
                topicId: topicId,
                topicPreferredName: $("#topicPreferredName").val(),
                docId: topicPageTabs[tabNum - 1].getDocumentIdsSplit(),
                forceFullDocId: topicPageTabs[tabNum - 1].getForceExpandedDocId()
            },
            dataType: "html",
            success: function(data) {
                var jqTabContent = $("#documentContent" + tabNum);
                jqTabContent.prepend(data);

                // Handle Table of Contents documents
                //console.log(jqTabContent.find('a[href^="#"]'));
                var searchHashes = 'a[href^="#"]';
                if ($.browser.msie)
                    searchHashes = 'a[href*="#"]';

                jqTabContent.find(searchHashes).each(function(index, element) {

                    var jqElement = $(element);

                    // Remove hardcoded hash - messes up history plug-in
                    var lookUpValue = jqElement.attr("href").replace(window.location, "").replace("#", "");

                    jqElement.attr("href", "javascript:;")
                    .click(function(evt) {

                        // If click originates from excerpt - make sure we expand recording Omniture data
                        if (jqElement.closest("div.rm_excerpt").size() != 0) {
                            FrShowMore(element, topicId, tabNum, topicPageTabs[tabNum - 1].getDocumentIdsSplit());
                        }

                        // Record the expansion
                        topicPageTabs[tabNum - 1].setExpanded(topicPageTabs[tabNum - 1].getDocumentIdsSplit(), true);

                        var url = window.location.toString();
                        if (url.indexOf("#") > 0) {
                            url = url.substring(0, url.indexOf("#"));
                        }

                        // Remove URL specifically for IE browsers
                        // Scroll to that elements
                        var selectorLookupValue = 'a[id="' + lookUpValue.replace(url, "") + '"]:first';

                        var scrollToElement = jqElement.closest("div.docwrapper").find(selectorLookupValue);

                        setTimeout(function() {
                            scroll(0, scrollToElement.offset().top - 10);
                        }, 0);

                    });
                });
                topicPageTabs[tabNum - 1].setLoaded(true);
                HandleResponse(topicId, tabNum);
            },
            error: function(data) {
                //console.log("Failed to load document."); 
            }
        }
    );
}

function HandleCompareResponse() {
    BindBylineClick();
}

