function SetLanguageWithURL(Language) {
    var sUrl = window.location.href;
    if (sUrl.charAt(sUrl.length - 1) == "#") {
        sUrl = sUrl.substring(0, sUrl.length - 1);
    }
    var aUrl = sUrl.split("?");
    if (aUrl[1]) {
        var aQuerystring = aUrl[1].split("&");
        var blang = false;

        for (var i = 0; i < aQuerystring.length; i++) {
            if (aQuerystring[i] == "lang=fr" || aQuerystring[i] == "Lang=fr" || aQuerystring[i] == "language=fr" || aQuerystring[i] == "Language=fr") {
                if (Language == "en") {
                    aQuerystring[i] = "lang=en";
                    blang = true;
                }
            }
            else if (aQuerystring[i] == "lang=en" || aQuerystring[i] == "Lang=en" || aQuerystring[i] == "language=en" || aQuerystring[i] == "Language=en") {
                if (Language == "fr") {
                    aQuerystring[i] = "lang=fr";
                    blang = true;
                }
            }
        }
        aUrl[1] = aQuerystring.join("&");
        if (blang == false) {
            if (Language == "fr") {
                aUrl[1] = aUrl[1] + "&lang=fr";
            }
            else if (Language == "en") {
                aUrl[1] = aUrl[1] + "&lang=en";
            }
            else if (Language == "it") {
                aUrl[1] = aUrl[1] + "&lang=it";
            }
        }
        sUrl = aUrl.join("?");
        window.location = sUrl;
    }
    else if (Language == "fr") {
        window.location = aUrl[0] + "?lang=fr";
    }
    else if (Language == "en") {
        window.location = aUrl[0] + "?lang=en";
    }
}

function SetLanguage(language) {
    var sUrl = window.location.href;
    if (sUrl.charAt(sUrl.length - 1) == "#") {
        sUrl = sUrl.substring(0, sUrl.length - 1);
    }
    var aUrl = sUrl.split("?");
    if (language == "fr") {
        window.location = aUrl[0] + "?lang=fr";
    }
    else if (language == "it") {
        window.location = aUrl[0] + "?lang=it";
    }
    else if (language == "en") {
        window.location = aUrl[0] + "?lang=en";
    }
}

function currentLanguage() {
    var lang = "en";

    if (typeof currentlanguage != 'undefined') {
        lang = currentlanguage;
    }
    return lang;
}


function ShowMetadata(DSCode, Coords, s) {
    if (organization != "IMF") {
        try {
            var sURLforMetadata = "";
            var sLanguage = currentLanguage();
            if (sLanguage != "en")
                sLanguage = "fr"

            if (urlmetadata) {
                var sURL_Metadata = urlmetadata;
            }
            else {
                var sURL_Metadata = "http://stats.oecd.org/OECDStat_Metadata/ShowMetadata.ashx";
            }

            if (Coords == "" || Coords == "undefined") {
                sURLforMetadata = sURL_Metadata + "?Dataset=" + DSCode + "&Lang=" + sLanguage;
            }
            else {
                sURLforMetadata = sURL_Metadata + "?Dataset=" + DSCode + "&Coords=" + Coords + "&Lang=" + sLanguage;
            }
            sURLforMetadata += "&backtodotstat=false";
            DialogMetaData.Close();
            window.scrollTo(0, 0);
            DialogMetaData.beginUpdate();
            DialogMetaData.set_contentUrl(sURLforMetadata);
            DialogMetaData.endUpdate();
            DialogMetaData.Show();

        }
        catch (ex) {
            alert("Error in ShowMetadata2(). " + ex.message);
        }
    }
}

function ShowMetadataBV(DSCode, DSName) {
    try {
        var sURLforMetadata = "";

        if (urlmetadata) {
            var sURL_Metadata = urlmetadata;
        }
        else {
            var sURL_Metadata = "http://stats.oecd.org/OECDStat_Metadata/ShowMetadata.ashx";
        }

        sURLforMetadata = sURL_Metadata + "?Dataset=" + DSCode + "&Coords=" + '' + "&Lang=" + currentLanguage() + "&DatasetName=" + DSName;
        sURLforMetadata += "&backtodotstat=false";
        DialogMetaData.Close();
        window.scrollTo(0, 0);
        DialogMetaData.beginUpdate();
        DialogMetaData.set_contentUrl(sURLforMetadata);
        DialogMetaData.endUpdate();
        DialogMetaData.Show();

    }
    catch (ex) {
        alert("Error in Show Metadata With DataSetName. " + ex.message);
    }
}
function DialogClose() {
    document.getElementById("DialogTitle").innerHTML = "";
    Dialog1.beginUpdate();
    Dialog1.set_contentUrl("loading.html");
    Dialog1.endUpdate();
    Dialog1.Close()
}

function DialogQueryManagerClose() {
    document.getElementById("DialogTitle").innerHTML = "";
    DialogQueryManager.beginUpdate();
    DialogQueryManager.set_contentUrl("loading.html");
    DialogQueryManager.endUpdate();
    DialogQueryManager.Close()
}

function OpenModalContact() {
    ContactDialog.beginUpdate();
    var slanguagequerystring = "&lang=" + currentLanguage();
    ContactDialog.set_contentUrl("Contact.aspx" + "?Random=" + Math.random() + slanguagequerystring);
    ContactDialog.endUpdate();
    ContactDialog.Show();
}

function OpenModalBVContact() {
    ContactDialog.beginUpdate();
    var slanguagequerystring = "&lang=" + currentLanguage();
    ContactDialog.set_contentUrl("Contact.aspx" + "?random=" + Math.random() + "&source=bv" + slanguagequerystring);
    ContactDialog.endUpdate();
    ContactDialog.Show();
}

function Login() {
    window.location = "./Login.aspx";
}


function Logout() {
    window.location = "./AuthenticatedUser.aspx?login=GUEST";
}

function SaveDimMembersAndUpdateURL(URL) {
    var en_or_fr = currentLanguage();
    Dialog1.beginUpdate();
    Dialog1.set_contentUrl(URL + "&Random=" + Math.random());
    Dialog1.endUpdate();
    Dialog1.Show();
}

function SaveDimMembersAndOpenURL(URL, DimensionCode, DatasetCode) {
    window.top.Dialog1.beginUpdate();
    window.top.Dialog1.set_contentUrl(URL + "&Random=" + Math.random());
    window.top.Dialog1.endUpdate();
    window.top.Dialog1.Show();
}

function OpenQueryManager(URL) {
    var en_or_fr = currentLanguage();
    DialogQueryManager.beginUpdate();
    DialogQueryManager.set_contentUrl(URL + "&Random=" + Math.random());
    DialogQueryManager.endUpdate();
    DialogQueryManager.Show();
}

function SaveJTDQuery() {
    document.getElementById("DialogTitle").innerHTML = "Save";
    top.SaveDimMembersAndOpenURL("./ModalSave.aspx?JTD=on", "", "");
}

function btnBrowseSavedQueries_ClientClick() {
    document.getElementById("DialogQueryManagerTitle").innerHTML = "My Query Manager";
    var en_or_fr = currentLanguage();
    if (en_or_fr) {
        if (en_or_fr == "fr") {
            document.getElementById("DialogQueryManagerTitle").innerHTML = "Mon gestionnaire de requetes";
        }
    }
    if (IsBV) {
        top.OpenQueryManager("./ModalQueryManager.aspx?BV=on");
    }
    else {
        top.OpenQueryManager("./ModalQueryManager.aspx?");
    }
}

function OpenSearchResult(ResultIndex) {
    MainCallback.callback("SearchResult&" + ResultIndex);
}

function GlobalSelectDS(DSCode) {
    try {
        ShowDataset(DSCode);
    }
    catch (ex) {
        alert(ex);
    }
}

function UpdateView() {
    DialogClose();
    MainCallback.callback("Update");
}

function UpdateView2() {
    MainCallback.callback("Update");
}

function BlankView() {
    MainCallback.callback("Empty");
}

var g_oStickyNote = null;
function ShowStickyNote(ShowIt, TitleText, HelpPageId) {
    ShowDialogHelp(HelpPageId, 'en');
}


function ShowDialogHelp(HelpPageId, Languages) {
    try {
        var sUrl;
        if (HelpPageId < 9) {
            sUrl = "00" + HelpPageId;
        }
        else if (HelpPageId < 99) {
            sUrl = "0" + HelpPageId;
        }

        var en_or_fr = currentLanguage();
        if (typeof organization != 'undefined') {
            sUrl = "ModalHelp/" + organization + "/Help_" + sUrl + "_" + en_or_fr + ".htm";
        }
        else {
            sUrl = "ModalHelp/OECD/Help_" + sUrl + "_" + en_or_fr + ".htm";
        }
        DialogHelp.beginUpdate();
        DialogHelp.set_contentUrl(sUrl);
        DialogHelp.endUpdate();
        DialogHelp.Show();
    }
    catch (ex) {
        alert("Error in ShowDialogHelp(): " + ex.message);
    }
}

var wbos_xmlhttp2 = null;
/*@cc_on@*//*@if (@_jscript_version >= 5); try { wbos_xmlhttp2 = new ActiveXObject("Msxml2.XMLHTTP") } catch (e) { try { wbos_xmlhttp2 = new ActiveXObject("Microsoft.XMLHTTP") } catch (E) { } }; @else;wbos_xmlhttp2 = false;@end@*/
InitObjects();

function InitObjects() {
    if (!wbos_xmlhttp2) {
        try {
            wbos_xmlhttp2 = new XMLHttpRequest();
        }
        catch (e)
			{ }
    }
}

var oEventToRaise = null;
var oTagToFill = null;
function SetTag(sTagID) {
    if (sTagID != "")
        oTagToFill = document.getElementById(sTagID);
}

function AJAX_ASync(URL, TagIDToFill, Param, EventToRaise) {
    if (wbos_xmlhttp2) {
        if (TagIDToFill && !oTagToFill)
            SetTag(TagIDToFill);

        oEventToRaise = EventToRaise;

        wbos_xmlhttp2.open("POST", URL, true);
        wbos_xmlhttp2.onreadystatechange = ReceiveHTML;
        wbos_xmlhttp2.send(Param);
    }
}

function AJAX_Sync(URL, Param, RequestHeaderValue) {
    var sResponse = "";
    if (wbos_xmlhttp2) {
        wbos_xmlhttp2.open("POST", URL, false);

        //Opera needs this...
        //wbos_xmlhttp2.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );

        if (RequestHeaderValue != null)
            wbos_xmlhttp2.setRequestHeader("RequestHeaderVariable", RequestHeaderValue);

        wbos_xmlhttp2.send(Param);
        sResponse = wbos_xmlhttp2.responseText;
    }
    return sResponse;
}

function ReceiveHTML() {
    if (wbos_xmlhttp2.readyState == 4) {
        try {
            var sResponse = wbos_xmlhttp2.responseText;
            if (oTagToFill)
                oTagToFill.innerHTML = sResponse;

            if (oEventToRaise)
                oEventToRaise(sResponse);
        }
        catch (ex) {
            alert(ex.message);
        }
    }
}
	
