//Navigation, TreeView and Splitter Javascript 100% with JQuery.
//This code executes the function when the DOM is ready to be used (before the end of the page onload, just when the DOM is ready).
var IsBV = false;
var bnewtreeview = false;

$(function () {

    if (typeof bquerymanagertree != "undefined") {
        if (bquerymanagertree == true) {
            bnewtreeview = true;
        }
    }

    // NEW treeview
    if (bnewtreeview) {
        $(".le").click(function (e) {
            var href = $(this).attr("href");
            MainCallback.callback("IFrame&" + href);
            stopBubbleEvent(e);
            return false;
        });

        $(".l").click(function (e) {
            var href = $(this).attr("href");
            MainCallback.callback("Link&" + href);
            stopBubbleEvent(e);
            return false;
        });

        $(".mi").click(function (e) {
            var datasetcode = $(this).next().attr("dscode");
            var datasetname = $(this).next().text();
            //        ShowMetadataBV(datasetcode, datasetname);
            ShowMetadata(datasetcode, '', '');
            stopBubbleEvent(e);
            return false;
        });

        $("ul.treeview li.t").click(function (e) {
            $(this).toggleClass("ouvert").children("ul").slideToggle("fast");
            stopBubbleEvent(e);
        });

        $("ul.treeview a.ds, ul.treeview a.pds, ul.treeview a.q").click(function (e) {
            $(".qclicked").removeClass("qclicked");
            $(".dsclicked").removeClass("dsclicked");
            $(".lkclicked").removeClass("lkclicked");
            $(".pdsclicked").removeClass("pdsclicked");
            window.scrollTo(0, 0);
            if ($(this).hasClass("ds")) {
                $(this).addClass("dsclicked");
                var datasetcode = $(this).attr("dscode");
                var datasetname = $(this).text();
                var queryid = $(this).attr("qid");
                ShowPublicQuery(queryid, datasetcode);
                ShowMetadata(datasetcode, '', '');
            }
            else if ($(this).hasClass("pds")) {
                $(this).addClass("pdsclicked");
                var datasetcode = $(this).attr("dscode");
                var datasetname = $(this).text();
                var queryid = $(this).attr("qid");
                ShowPublicQuery(queryid, datasetcode);
                ShowMetadata(datasetcode, '', '');
            }
            else if ($(this).hasClass("q")) {
                $(this).addClass("qclicked");
                var queryid = $(this).attr("qid");
                ShowPublicQuery(queryid, "");
            }
            else {
                alert("error");
            }
            stopBubbleEvent(e);
            return false;
        });

        $("ul.treeview .ui-icon-script").click(function (e) {
            datasetcode = $(this).next().next().attr("dscode");
            if (!datasetcode) {
                datasetcode = $(this).next().attr("dscode");
            }
            showinventory(datasetcode);
            stopBubbleEvent(e);
        });
    }
    // END NEW treeview
    else {
        if (typeof strDataset != "undefined") {
            $("li:not('.ouvert')").children("ul").hide(); // Close the Treeview at the beginning when the dataset is called by the querystring.
        }

        $(".metainfo").click(function (e) {
            datasetcode = $(this).next().attr("ds");
            ShowMetadata(datasetcode, '', '');
            stopBubbleEvent(e);
            return false;
        });

        $("ul.Base .ui-icon-script").click(function (e) {
            datasetcode = $(this).next().next().attr("ds");
            showinventory(datasetcode);
            if (!$.browser.msie) {
                e.stopPropagation();
            }
            else {
                window.event.cancelBubble = true;
            }
        });

        $("ul.Base li").click(function () {
            if (!$(this).parent().hasClass("Leaf") && !$(this).hasClass("dataset") && !$(this).hasClass("iedatasetclicked")) {
                if (!$(this).hasClass("ouvert")) {
                    $(this).addClass("ouvert").children("ul").show();
                }
                else {
                    $(this).removeClass("ouvert").children('ul').hide();
                }
            }
            return false;
            // this code is used to stop the propagation (Bubble event):
            if (!$.browser.msie) {
                e.stopPropagation();
            }
            else {
                window.event.cancelBubble = true;
            }
        });

        $("ul.Leaf a").click(function () {
            $(".clicked").removeClass("clicked");
            $(this).addClass("clicked");

            if ($.browser.msie) {
                $("ul.Leaf .iequeryclicked").removeClass("iequeryclicked");
                $(".iedatasetclicked").addClass("dataset");
                $(".iedatasetclicked").removeClass("iedatasetclicked");
                $(this).parent().addClass("iequeryclicked");
            }

            if ($(this).attr("ds")) {
                window.scrollTo(0, 0);
                var queryid = $(this).attr("dqid");
                var datasetcode = $(this).attr("ds");
                ShowPublicQuery(queryid, datasetcode);
                ShowMetadata(datasetcode, '', '');
                var datasetPath = '/Dataset/' + datasetcode + '/Public/' + queryid;
                GoogleStats(datasetPath);
                return false;
            }
            else if ($(this).attr("view")) {
                window.scrollTo(0, 0);
                var queryid = $(this).attr("view");
                ShowPublicQuery(queryid, "");

                var datasetcode = $(this).parent().siblings(":first").children("a.DatasetWithViews").attr("ds");
                var datasetPath = '/Dataset/' + datasetcode + '/Public/' + queryid;
                GoogleStats(datasetPath);
            }
        });


        if ($.browser.msie) {
            $("a.DatasetWithViews, a.tablequery, a.coredataquery").hover(
        function () {
            $(this).parent().addClass("iequeryhover");
        },
        function () {
            $(this).parent().removeClass("iequeryhover");
        }
        );
        }

        if ($.browser.msie) {
            $("a.datasetlink").hover(
        function () {
            if ($(this).parent().hasClass("dataset")) {
                $(this).parent().removeClass("dataset");
                $(this).parent().addClass("iedatasethover");
            }
        },
        function () {
            if ($(this).parent().hasClass("iedatasethover")) {
                $(this).parent().removeClass("iedatasethover");
                $(this).parent().addClass("dataset");
            }
        }
        );
        }

        $("a.datasetlink").click(function () {
            $(".clicked").removeClass("clicked");
            $(this).addClass("clicked");

            if ($.browser.msie) {
                $(".iequeryclicked").removeClass("iequeryclicked");
                $(".iedatasetclicked").addClass("dataset");
                $(".iedatasetclicked").removeClass("iedatasetclicked");
                if ($(this).parent().hasClass("dataset")) {
                    $(this).parent().removeClass("dataset");
                }
                if ($(this).parent().hasClass("iedatasethover")) {
                    $(this).parent().removeClass("iedatasethover");
                }
                $(this).parent().addClass("iedatasetclicked");
            }
            if ($(this).attr("ds")) {
                window.scrollTo(0, 0);
                var datasetcode = $(this).attr("ds");
                var queryid = $(this).attr("dqid");
                ShowPublicQuery(queryid, datasetcode);
                ShowMetadata(datasetcode, '', '');

                var datasetPath = '/Dataset/' + datasetcode + '/Public/' + queryid;
                GoogleStats(datasetPath);

                return false;
            }
        });
    }

    // These functions, below, are used to open and close the Merged Queries, Browse Queries and Browse Themes panels
    $(".panelToggle").click(function () {
        var nParent = $(this).parent().parent();
        nParent.find(".collapsible").slideToggle("fast");
        nParent.toggleClass("opened");
    });

    // this code manages the splitter in the middle center:
    $("#splitter").toggle(
  function () {
      $("#NavTD").hide();
      $("#splitter").hover(
  function () {
      $(this).attr("src", "Images/Splitter/open.gif");
  },
  function () {
      $(this).attr("src", "disabled");
      $(this).attr("src", "Images/Splitter/open.gif");
  }
);
  },
  function () {
      $("#NavTD").show();
      $("#splitter").hover(
  function () {
      $(this).attr("src", "Images/Splitter/close.gif");
  },
  function () {
      $(this).attr("src", "disabled");
      $(this).attr("src", "Images/Splitter/close.gif");
  }
);
  }
);
});

var gSelectedDataset = null;
var bMDQIsVisible = true;
var aMQDatasetCode = new Array();

function AddToJTD(DatasetCode, DatasetName, DatasetOrder, CalledFromServer) {

    DatasetName = DatasetName.replace("'", "&#39;");

    if (!$("#mergedqueries").hasClass("opened")) {
        $("#mergedqueries").find(".collapsible").show("fast");
        $("#mergedqueries").addClass("opened");
    }

    $("#MDQActions input.MDQInputButton1").attr("disabled", "disabled");

    /*
    Create an array of DataTable already existing in this page
    */
    var aCurrentDSList = CurrentDatasets();
    var iDSCount = aCurrentDSList.length;
    var sOutput = '';
    
    if (!DatasetOrder)
        DatasetOrder = iDSCount;
    var oDatasetToAdd = new Dataset(DatasetCode, DatasetName, DatasetOrder);

    if (!CalledFromServer) {
        /*
        This is called when the user clicks on the Add button
        */

        //Update Session using AJAX
        sOutput = AJAX_Sync("UpdateJTDStatus.aspx", "<?xml version=\"1.0\" encoding=\"utf-8\"?><JTDStatus action=\"AddDataset\" order=\"" + DatasetOrder + "\">" + DatasetCode + "</JTDStatus>");

        if (sOutput != "0") {
            alert(sOutput);
            
        }
        //One query needs to be added only once to a MDQ, if a user edits a query, he doesn't need to add it again.
        if (btnAddThisQuery) {
            $(btnAddThisQuery).addClass(" tool_disabled");
            $(btnAddThisQuery).removeAttr("href");
        }
    }


    /*
    Create a new array with all the datatables to show
    */
    if (sOutput == "0") {
        var aNewDSList = new Array();
        var iNewDSCount = 0;
        for (var i = 0; i < iDSCount; i++) {
        if (!aCurrentDSList[i].Equals(oDatasetToAdd))
            aNewDSList[iNewDSCount++] = aCurrentDSList[i];
        }

        aNewDSList[iNewDSCount++] = oDatasetToAdd;
        RefreshDisplayOfDataTablesInMDQ(aNewDSList);

        JQueryHoverAndClick();

        if (jQuery.inArray(DatasetCode, aMQDatasetCode) == -1)
            aMQDatasetCode[aMQDatasetCode.length] = DatasetCode;
     }
}

function CurrentDatasets() {
    var aCurrentDSList = new Array();

    var otdQueryList = document.getElementById("tdQueryList");
    if (otdQueryList) {
        var iDSCount = 0;
        var iOrder = 0;
        for (var i = 0; i < otdQueryList.childNodes.length; i++) {
            if (otdQueryList.childNodes[i].tagName == "DIV") {
                iOrder = otdQueryList.childNodes[i].attributes["Order"].value;
                aCurrentDSList[iDSCount++] = new Dataset(otdQueryList.childNodes[i].attributes["DSCode"].value, InnerText(otdQueryList.childNodes[i].innerHTML), iOrder);
            }
        }
    }
    return aCurrentDSList;
}

function Dataset(DSCode, DSName, DatasetOrder) {

    if (!DSCode)
        DSCode = "";

    if (!DSName)
        DSName = "";

    this.Code = DSCode;
    this.Name = DSName;
    this.Order = DatasetOrder;
    this.DivId = DSCode + "~" + DatasetOrder;

    var iTmp = DatasetOrder;
    iTmp++;
    this.PrefixNumber = iTmp;

    this.ToString = function ToString() {
        return "<DIV id='" + this.DivId + "' DSCode='" + this.Code + "' Order='" + this.Order + "' class='JTDDataset' >" +
					this.Name +
				"</DIV>"
    };
    this.Equals = function Equals(obj) { if (this && this.Code && obj && obj.Code && this.Code.toLowerCase() == obj.Code.toLowerCase() && this.Order == obj.Order) return true; else return false; };
}

function RefreshDisplayOfDataTablesInMDQ(DataTableList) {
    var otdQueryList = document.getElementById("tdQueryList");
    if (otdQueryList) {
        otdQueryList.innerHTML = "";

        if (DataTableList.length > 0) {
            $("#MDQActions").css("display", "block");
            if (DataTableList.length == 1) {
                $("#MDQActions input").attr("disabled", "disabled");
            }
            else {
                $(".MDQInputButton2").removeAttr("disabled");
            }
            for (var i = 0; i < DataTableList.length; i++) {
                otdQueryList.innerHTML += DataTableList[i].ToString();
            }
        }
        else {
            $("#MDQActions").css("display", "none");
        }
    }
}

function RemoveFromJTD() {
    if (gSelectedDataset) {
        //Update Session using AJAX
        var sOutput = AJAX_Sync("UpdateJTDStatus.aspx", "<?xml version=\"1.0\" encoding=\"utf-8\"?><JTDStatus action=\"RemoveDataset\" order=\"" + gSelectedDataset.Order + "\">" + gSelectedDataset.Code + "</JTDStatus>");
        if (sOutput == "CurrentQueryShouldReload") {
            var aCurrentDSList = CurrentDatasets();
            var iDSCount = aCurrentDSList.length;

            var aNewDSList = new Array();
            var iNewDS = 0;
            var iPrefix = 1;
            for (var iDS = 0; iDS < iDSCount; iDS++) {
                if (!aCurrentDSList[iDS].Equals(gSelectedDataset)) {
                    aNewDSList[iNewDS] = aCurrentDSList[iDS];
                    aNewDSList[iNewDS].Order = iNewDS;
                    aNewDSList[iNewDS].DivId = aNewDSList[iNewDS].Code + "~" + aNewDSList[iNewDS].Order;
                    aNewDSList[iNewDS].PrefixNumber = iPrefix;

                    iNewDS++;
                    iPrefix++;
                }
            }
            RefreshDisplayOfDataTablesInMDQ(aNewDSList);
            $("#MDQActions input.MDQInputButton1").attr("disabled", "disabled");
            JQueryHoverAndClick();

            $("ul.Leaf .clicked").removeClass("clicked");
            if ($.browser.msie) {
                $("ul.Leaf .iequeryclicked").removeClass("iequeryclicked");
            }
            if (aNewDSList.length == 0) {
                var en_or_fr = currentLanguage();
                if (en_or_fr) {
                    if (en_or_fr == "fr") {
                        document.getElementById("tdQueryList").innerHTML = "Panier de donnees vide";
                    }
                    else {
                        document.getElementById("tdQueryList").innerHTML = "Data basket empty";
                    }
                }
                MainCallback.callback("Empty");
            }
            else {
                MainCallback.callback("Update");
            }
            aMQDatasetCode = unsetaMQDatasetCode(gSelectedDataset.Code);
        }
        else if (sOutput == "0") {
            var aCurrentDSList = CurrentDatasets();
            var iDSCount = aCurrentDSList.length;

            var aNewDSList = new Array();
            var iNewDS = 0;
            var iPrefix = 1;
            for (var iDS = 0; iDS < iDSCount; iDS++) {
                if (!aCurrentDSList[iDS].Equals(gSelectedDataset)) {
                    aNewDSList[iNewDS] = aCurrentDSList[iDS];
                    aNewDSList[iNewDS].Order = iNewDS;
                    aNewDSList[iNewDS].DivId = aNewDSList[iNewDS].Code + "~" + aNewDSList[iNewDS].Order;
                    aNewDSList[iNewDS].PrefixNumber = iPrefix;

                    iNewDS++;
                    iPrefix++;
                }
            }
            RefreshDisplayOfDataTablesInMDQ(aNewDSList);
            $("#MDQActions input.MDQInputButton1").attr("disabled", "disabled");
            JQueryHoverAndClick();
            aMQDatasetCode = unsetaMQDatasetCode(gSelectedDataset.Code);
        }
        else //if( sOutput != "0" )
            alert(sOutput);

        gSelectedDataset = null;
    }
}

function CallCallbackJTD() {
    $("ul.Leaf .clicked").removeClass("clicked");
    if ($.browser.msie) {
        $("ul.Leaf .iequeryclicked").removeClass("iequeryclicked");
    }
    MainCallback.callback("MergedQueries");
}

function SetAsCurrentQuery() {
    if (gSelectedDataset) {
        //Update Session using AJAX
        var sOutput = AJAX_Sync("UpdateJTDStatus.aspx", "<?xml version=\"1.0\" encoding=\"utf-8\"?><JTDStatus action=\"SetDatasetAsCurrent\" order=\"" + gSelectedDataset.Order + "\">" + gSelectedDataset.Code + "</JTDStatus>");
        if (sOutput == "0") {
            MainCallback.callback("Update");
            $("ul.Leaf .clicked").removeClass("clicked");
            if ($.browser.msie) {
                $("ul.Leaf .iequeryclicked").removeClass("iequeryclicked");
            }
        }
        else
            alert(sOutput);
    }
}

function InnerText(InnerHTML) {
    var regExp = /<\/?[^>]+>/gi;
    var xStr = InnerHTML.replace(regExp, "");
    xStr = xStr.replace("&nbsp;", "");
    return xStr;
}

function unsetaMQDatasetCode(DatasetCode) {
    var aNewMQDatasetCode = new Array();
    var j = 0;
    for (var i = 0; i < aMQDatasetCode.length; i++) {
        if (aMQDatasetCode[i] != DatasetCode) {
            aNewMQDatasetCode[j] = aMQDatasetCode[i];
            j = j + 1;
        }
    }
    return aNewMQDatasetCode;
}

function ShowPublicQuery(QueryId, QueryName) {
    MainCallback.callback("PublicQuery&" + QueryId + "&" + QueryName);
}

function OpenHome() {
    $(".clicked").removeClass("clicked");
    if ($.browser.msie) {
        $(".iequeryclicked").removeClass("iequeryclicked");
        $(".iedatasetclicked").addClass("dataset");
        $(".iedatasetclicked").removeClass("iedatasetclicked");
    }
    MainCallback.callback('Home');
}

function GoogleStats(Page) {
    try {
        if (pageTracker) {
            pageTracker._trackPageview(Page);
        }
    }
    catch (ex) {
    }
}

function showinventory(datasetcode) {
    //        window.location.href = "inventory.aspx?datasetcode=" + datasetcode;
    window.open("inventory.aspx?datasetcode=" + datasetcode);
    return false;
}

function stopBubbleEvent(e) {
    if (!$.browser.msie) {
        e.stopPropagation();
    }
    else {
        window.event.cancelBubble = true;
    }
}
