﻿var req;
var topicid;
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;

var _omnituretest = false;

function CreateRequest() {

    var ua = navigator.userAgent.toLowerCase();
    if (!window.ActiveXObject)
        req = new XMLHttpRequest();
    else if (ua.indexOf('msie 5') == -1)
        req = new ActiveXObject("Msxml2.XMLHTTP");
    else
        req = new ActiveXObject("Microsoft.XMLHTTP");

}

function CreateNewRequest()
{
    var theRequest;
    var ua = navigator.userAgent.toLowerCase();
    if (!window.ActiveXObject)
        theRequest = new XMLHttpRequest();
    else if (ua.indexOf('msie 5') == -1)
        theRequest = new ActiveXObject("Msxml2.XMLHTTP");
    else
        theRequest = new ActiveXObject("Microsoft.XMLHTTP");
    return theRequest;
}

function CreateRequestUrl(topicid, tab)
{
    return "/webservices/DynamicTopicControls.svc/GetTopicDocument?topicid=" + topicid + "&tab=" + tab;
}

function CreateOmnitureDataRequestUrl(topicid, num)
{
    return "/webservices/DynamicTopicControls.svc/GetOmnitureTabData?topicid=" + topicid + "&tabnum=" + num;
}

function CreateCompareRequestUrlByDocId(docid, col)
{
    var url = "/webservices/DynamicTopicControls.svc/GetSideBySideDoc?docid=" + docid + "&sourcecol=" + col;
    return url;
}

function CreateCompareRequestUrlByTopicId(topicid)
{
    var url = "/webservices/DynamicTopicControls.svc/GetSideBySideDocs?topicid=" + topicid;
    return url;
}

function HandleResponse()
{
    if (!req || req.readyState != 4)
    {
        return;
    }
    if (req.responseText) {
        try {
            var topicdoc = eval('(' + req.responseText + ')');
            var ctrl;
            var x;
            //var err;
            if (topicdoc != null && topicdoc.d != null) {

                SetOmnitureData(topicdoc.d, !loaded);

                ctrl = document.getElementById(document_title_h2);
                if (ctrl != null) {
                    ctrl.innerHTML = "";
                    ctrl.innerHTML = topicdoc.d.DocTitle;
                }

                ctrl = document.getElementById(fulltext_control_id);
                if (ctrl) {
                    ctrl.innerHTML = "";
                    ctrl.innerHTML = topicdoc.d.DocText;
                }

                ctrl = document.getElementById(preview_control_id);
                if (ctrl) {
                    ctrl.innerHTML = "";
                    ctrl.innerHTML = topicdoc.d.DocPreview;
                }

                if (topicdoc.d.HtmlBlobs != null && topicdoc.d.HtmlBlobs.length > 0) {
                    ctrl = document.getElementById(tool_control_id);
                    if (ctrl != null) {
                        ctrl.innerHTML = "";
                        ctrl.innerHTML = GetHtmlByControlType(topicdoc.d.HtmlBlobs, toolType, null);
                    }
                    ctrl = document.getElementById(citation_control_id);
                    if (ctrl != null) {
                        ctrl.innerHTML = "";
                        ctrl.innerHTML = GetHtmlByControlType(topicdoc.d.HtmlBlobs, citationType, null);
                        TabbedPanels1 = new HBA.Widget.TabbedPanels('citationtabstabs');
                    }
                    ctrl = document.getElementById(byline_control_id);
                    if (ctrl != null) {
                        ctrl.innerHTML = "";
                        ctrl.innerHTML = GetHtmlByControlType(topicdoc.d.HtmlBlobs, bylinetype, null);
                    }
                }

                if (topicdoc.d.ForcedFulDoc == true) {

                    showdoc();
                }
            }
        }
        catch (err) {
            if (req.responseText.toLowerCase().indexOf("<fault") >= 0)
                reportError(req.responseText, "topicdocumentajax.js", "", "");
        }
    }
    
    toggleloading(0);

    loaded = true;
    setTimeout("ShowHideBylineNum();ShowHideBylineNum();", 10);
}

function RefreshIFrames(topicid, num)
{
    if (topicpage_iframe_list)
    {
        var f;
        for (var i = 0; i < topicpage_iframe_list.length; i++)
        {
            f = document.getElementById(topicpage_iframe_list[i]);
            if (null != f && null != f.contentDocument)
            {
                f.contentDocument.location = f.contentDocument.location;
            }
        }
    }
}

function SetOmnitureData(data, summary)
{
    if (s == null)
        return;

    //var data = GetOmnitureData(topicid, num);

    if (data == null)
        return;

    ClearOmnitureData();
    var pn = "TopicUnknown";
    if (data.PageName == null)
        pn = "TopicNullPageName";
    else if (data.PageName == "undefined")
        pn = "TopicUndefined";
    else if (data.PageName == '')
        pn.PageName = "TopicEmpty";
    else pn = data.PageName;
    
    s.pageName = pn;
    s.channel = data.Channel;
   
    if (data.TabNum < 4) {
        s.prop6 = data.DocPubDate;
        s.prop7 = data.DocId + "|" + data.TopicName;
        s.prop3 = data.MainCat;
        s.prop4 = data.Subcat1;
        s.prop10 = data.Publication;
        s.hier1 = data.ProviderID + "|" + data.SectionType + "|" + data.Publication;

        if (data.ProviderID != null && data.ProviderID != '' && data.ProviderID != 'undefined')
            s.prop8 = data.ProviderID;
    }

    s.prop14 = data.TopicName;
    s.prop9 = data.SectionType;
    
    if (!loaded && topicfromsearch == true)
        s.prop13 = 'true';
    else
        s.prop13 = 'false';
        
    if (summary) {
        if (data.DocId != null && data.DocId != "") {
            s.prop15 = data.TabNum + "|" + data.TopicName + "|" + data.DocId;
        }
        else {
            s.prop15 = data.TabNum + "|" + data.TopicName
        }
    }

    if (_omnituretest)
    {
        var testurl = "/test/omnituretest.aspx?pagename=" + escape(s.pageName)
        + "&channel=" + escape(s.channel)
        + "&prop6="+ escape(s.prop6)
        + "&prop7=" + escape(s.prop7)
        + "&prop8=" + escape(s.prop8)
        + "&prop9=" + escape(s.prop9)
        + "&hier1=" + escape(s.hier1)
        + "&prop13=" + escape(s.prop13)
        + "&prop14=" + escape(s.prop14)
        + "&prop15=" + escape(s.prop15)
        + "&prop3=" + escape(s.prop3)
        + "&prop4=" + escape(s.prop4)
        + "&prop10=" + escape(s.prop10);
        window.open(testurl, "omnitureTest");
    }

    s.t();
}

function ClearOmnitureData()
{
    if(screen == null)return;
    
    s.pageName = "";
    s.channel = "";
    s.prop3 = "";
    s.prop4 = "";
    s.prop6 = "";
    s.prop7 = "";
    s.prop8 = "";
    s.prop9 = "";
    s.prop10 = "";
    s.hier1 = "";
    s.prop13 = false;
    s.prop14 = "";
    s.prop15 = "";

}

function GetOmnitureData(topicid, num)
{
    var svcreq = CreateNewRequest();
    svcreq.open("GET", CreateOmnitureDataRequestUrl(topicid, num), false);
    svcreq.send(null);
    var res;

    try
    {
        var obj = eval('(' + svcreq.responseText + ')');
        if (obj != null)
            res = obj.d;
    }
    catch (theError) { }

    return res;
}

function SetOmnitureEssentialReadingData(tname, summary) {

    ClearOmnitureData();
    if(screen == null)return;
    
    s.pageName = "TopicEssential";
    s.channel = "Topic";
    s.prop7="|" + tname;
    s.prop9 = "ENCY_TOPIC";
    s.hier1 = "|ENCY_TOPIC|";
    s.prop13 = false;
    s.prop14 = tname;
    
    if(summary)
        s.prop15 = "5|" + tname + "|";

    if (_omnituretest) {
        var testurl = "/test/omnituretest.aspx?pagename=" + escape(s.pageName) + "&channel=" + escape(s.channel) + "&prop6=" + escape(s.prop6) + "&prop7=" + escape(s.prop7) + "&prop9=" + escape(s.prop9) + "&hier1=" + escape(s.hier1) + "&prop13=" + escape(s.prop13) + "&prop14=" + escape(s.prop14) + "&prop15=" + escape(s.prop15);
        window.open(testurl, "omnitureTest");
    }

    s.t();
}


function GetHtmlByControlType(list, type, addtype)
{
    var x;
    var res;
    for (x = 0; x < list.length && null == res; x++)
    {
        if (list[x][0] == type)
        {
            if ((addtype != null && addtype != '' && list[x][1].indexOf(addtype) > -1)
            || (addtype == null || addtype == ''))
                res = list[x][1];
        }
    }

    return res;
}


function HandleTabClick(topicid, tab) {

    CreateRequest();

    _requestinprogress = true;
    
    req.open("GET", CreateRequestUrl(topicid, tab));

    req.onreadystatechange = HandleResponse;

    req.send(null);
    
    //hack for async calls in FF without firebug or when firebug's dissabled
    try //breaks in IE 
    {
        if (req.onreadystatechange == null)
            handleReqProgress();
    } catch (err) { }

}

var comparedoc = ['', '', '', '']; // comparedoc[0] intentionally left blank all the time

function getcomparedocajax(sourcecolumn, docid)
{
    // close the entry menu
    // close the document area and open the "Fetching data" area
    // get the Title, byline, and fulltext for the specified document and put them in their appropriate container
    // close the "Fetching data" area and open the document area
    //!!!  NOTE THAT THE LAST LINE ABOVE SHOULD ACTUALLY BE ACCOMPLISHED IN THE SAME FUNCTION THAT POPULATES THE INDIVIDUAL ITEMS
    if (sourcecolumn > 0 && sourcecolumn < 4)
    {
        comparedoc[sourcecolumn] = docid;
    }
    else
    {
        return;
    }
    var fetchcontainer = "compare_fetch_number" + sourcecolumn + "";
    var documentcontainer = "container_document_number" + sourcecolumn + "";
    var titlecontainer = "populate_compare_title_number" + sourcecolumn + "";
    var bylinecontainer = "populate_compare_byline_number" + sourcecolumn + "";
    var fulltextcontainer = "populate_compare_fulltext_number" + sourcecolumn + "";
    closesourceselector(sourcecolumn);
    document.getElementById(documentcontainer).style.display = "none";
    document.getElementById(fetchcontainer).style.display = "block";

    // AJAX CALL FOR POPULATING STUFF -- commented area below would be example script
    CreateRequest();
    req.open("GET", CreateCompareRequestUrlByDocId(docid, sourcecolumn)); // fetchcontainer, documentcontainer, titlecontainer, bylinecontainer, fulltextcontainer));
    req.onreadystatechange = HandleCompareResponse;
    req.send(null);
    // //hack for async calls in FF without firebug or when firebug's dissabled
    try //breaks in IE 
    {
        if (req.onreadystatechange == null)
            HandleCompareResponse();
    } catch (err) { }
}

function getInitialSideBySideDocs(topicid)
{
    var fetchcontainer = "compare_fetch_number";
    var documentcontainer = "container_document_number";

    var idx = 0;
    for (idx = 1; idx < 4; idx++)
    {
        if (null != document.getElementById(documentcontainer + "" + idx + ""))
        {
            document.getElementById(documentcontainer + "" + idx + "").style.display = "none";
            if (null != document.getElementById(fetchcontainer + "" + idx + ""))
            {
                document.getElementById(fetchcontainer + "" + idx + "").style.display = "block";
            }
        }
    }

    CreateRequest();
    req.open("GET", CreateCompareRequestUrlByTopicId(topicid));
    req.onreadystatechange = HandleInitialSideBySideResponse;
    req.send(null);
    // //hack for async calls in FF without firebug or when firebug's dissabled
    try //breaks in IE 
    {
        if (req.onreadystatechange == null)
            HandleInitialSideBySideResponse();
    } catch (err) { }
}

function HandleInitialSideBySideResponse()
{
    if (!req
        || req.readyState != 4
        || !req.responseText
        || req.responseText == "")
        return;

    var obj = eval('(' + req.responseText + ')');

    SetOmnitureData(obj.d, !loaded);
    
    var fetchcontainer = "compare_fetch_number";
    var documentcontainer = "container_document_number";
    var titlecontainer = "populate_compare_title_number";
    var bylinecontainer = "populate_compare_byline_number";
    var fulltextcontainer = "populate_compare_fulltext_number";
    var doclink = "populate_compare_doclink_number";

    var ttlctrl = null;
    var textctrl = null;
    var blctrl = null;
    var dlctrl = null;
    var fetchctrl = null;
    var ptctrl = null;
    var docctrl = null;
    var num;
    for (var x = 0; x < obj.d.Docs.length; x++)
    {
        num = x + 1;
        comparedoc[num] = obj.d.Docs[x].DOcId;
        try
        {
            ttlctrl = document.getElementById(titlecontainer + num.toString());
            if (null != ttlctrl)
            {
                ttlctrl.innerHTML = obj.d.Docs[x].DocTitle;
            }
        }
        catch (serr)
        {
        }

        try
        {
            textctrl = document.getElementById(fulltextcontainer + num.toString());
            if (null != textctrl)
            {
                textctrl.innerHTML = obj.d.Docs[x].FullText;
            }
        }
        catch (serr)
        {
        }

        try
        {
            blctrl = document.getElementById(bylinecontainer + num.toString());
            if (null != blctrl)
            {
                blctrl.innerHTML = obj.d.Docs[x].ByLineHtml;
            }
        }
        catch (serr)
        {
        }

        try
        {
            dlctrl = document.getElementById(doclink + num.toString());
            if (null != dlctrl)
            {
                dlctrl.innerHTML = obj.d.Docs[x].DocLink;
            }
        }
        catch (serr)
        {
        }

        try
        {
            ptctrl = document.getElementById(compare_pagetools_id);
            if (null != ptctrl)
            {
                var otherpagetools = document.getElementById(tool_control_id);
                if (null != otherpagetools)
                {
                    otherpagetools.innerHTML = "";
                }
                ptctrl.innerHTML = obj.d.PageToolsHtml;
            }
        }
        catch (serr)
        {
        }

        try
        {
            fetchctrl = document.getElementById(fetchcontainer + num.toString());
            if (null != fetchctrl)
            {
                fetchctrl.style.display = "none";
            }
        }
        catch (serr)
        {
        }

        try
        {
            docctrl = document.getElementById(documentcontainer + num.toString());
            if (null != docctrl)
            {
                docctrl.style.display = "block";
            }
        }
        catch (serr)
        {
        }

        ShowHideBylineNum(num); ShowHideBylineNum(num);
    }
}



function HandleCompareResponse()
{

    if (!req
        || req.readyState != 4
        || !req.responseText
        || req.responseText == "")
        return;

    var obj = eval('(' + req.responseText + ')');

    var fetchcontainer = "compare_fetch_number" + obj.d.SourceColumn + "";
    var documentcontainer = "container_document_number" + obj.d.SourceColumn + "";
    var titlecontainer = "populate_compare_title_number" + obj.d.SourceColumn + "";
    var bylinecontainer = "populate_compare_byline_number" + obj.d.SourceColumn + "";
    var fulltextcontainer = "populate_compare_fulltext_number" + obj.d.SourceColumn + "";
    var doclink = "populate_compare_doclink_number" + obj.d.SourceColumn + "";

    var ttlctrl = document.getElementById(titlecontainer);
    if (ttlctrl)
        ttlctrl.innerHTML = obj.d.DocTitle;

    var blctrl = document.getElementById(bylinecontainer);
    if (blctrl)
        blctrl.innerHTML = obj.d.ByLineHtml;

    var ftctrl = document.getElementById(fulltextcontainer);
    if (ftctrl)
        ftctrl.innerHTML = obj.d.FullText;

    var doclinkctrl = document.getElementById(doclink);
    if (doclinkctrl)
        doclinkctrl.innerHTML = obj.d.DocLink;

    document.getElementById(documentcontainer).style.display = "block";
    document.getElementById(fetchcontainer).style.display = "none";
    ShowHideBylineNum(obj.d.SourceColumn); ShowHideBylineNum(obj.d.SourceColumn);
}
 
