// Pavan Malji Sep-2008

var autoLoginTimer = 10;
var adminTabID = "2142";
var hideFromClickStreamDivID = "hidefromclickstream";
var pageTitleDivID = "pagetitle";
var pageURLDivID = "pageurl";
var pageDescDivID = "pagedescription";
var mainTabOIDDivID = "taboids";
var profileBarDivID = "metanav";
var favouritesDivID = "favourites";
var clickstreamDivID = "clickstream";
var ajaxMessagesDivID = "ajaxmessages";
var taskResponseDivID = "taskresponse";
var manageFavsURL = "/apps/WEBPARTS/Favourites.aspx";
var manageClicksURL = "/apps/WEBPARTS/Clickstream.aspx";
var headerTasksURL = "/apps/WEBPARTS/Task.aspx?task=";
var taskIsAdmin = "F3D0B434-17B1-4296-8A75-5F524017875A";
var taskIsInternal = "A05513C2-BD33-46AA-8BBB-0C3D8770C187";
var taskUserProfileBar = "B55428C0-9471-4392-80E8-A6FA883F475E";
var taskUserRoles = "515A8075-D934-473F-A8D6-D10314FE6180";
var taskUserAdminRoles = "8D369DFD-FCFC-4456-939A-137100A83BEE";
var taskUserUniveralId = "A021F8FB-3C01-4B2F-B7DE-FB2914FD35A1";
var taskDisplayName = "464F3C9C-866F-40B7-BEAD-6B5DF4BE599D";
var taskGoogleAnalyticsDisplayName = "7E6B7660-E902-44F1-B263-D10BBE74F580";

function InitPage() {
    try {
        displayMainTabs();
        createUserProfileBar();
        addToMyClickStream();
    } catch (e) { }
}

function ChangeBrowserURL(url) {
    parent.location = url;
}

function appMasterRedirect(url) {
    document.location = getServer() + url;
}

function extAppRedirect(url) {
    // window.open("/NUCLEUS/nucleus/Content/Redirect.html?exturl=" + url, "mywindow", "width=800,height=600, toolbar=yes,location=no,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes,resizable=yes");
    window.open(url, "mywindow", "width=800,height=600,toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes, resizable=yes");
}

function getHeaderTaskResponse(taskid) {
    var html = getHTMLContent(headerTasksURL + taskid);
    var domElement = document.createElement("div");
    domElement.innerHTML = html;
    return trim(domElement.getElementsByTagName("div")[0].innerHTML);
}

function displayMainTabs() {
    try {
        var mainTabIDs = trim(document.getElementById(mainTabOIDDivID).innerHTML);
        var idArr = mainTabIDs.split(',');
        var isAdmin = getHeaderTaskResponse(taskIsAdmin).toLowerCase();

        for (var i = 0; i < idArr.length; i++) {
            try {
                if (trim(idArr[i]) != adminTabID || isAdmin == "true") {
                    document.getElementById(trim(idArr[i])).style.display = "block";
                }
            }
            catch (ex) { }
        }
    }
    catch (e) { }
}

function createUserProfileBar() {
    getAsynHTMLContent(headerTasksURL + taskUserProfileBar, profileBarDivID);
}

function createExtAppUserProfileBar(divId) {
    getAsynHTMLContent(headerTasksURL + taskUserProfileBar, divId);
}

function getGAUserId() {
    return getHeaderTaskResponse(taskGoogleAnalyticsDisplayName);
}

function manageMyFavourites(params, reload, showMsg) {
    var url = manageFavsURL + "?" + params;

    var result = trim(getHTMLContent(url));

    if (showMsg == 'true') {
        document.getElementById(ajaxMessagesDivID).innerHTML = result;
        document.getElementById(ajaxMessagesDivID).style.display = "block";

        if (reload == 'true') {
            document.getElementById(favouritesDivID).innerHTML = "Loading...";
            showMyFavourites(favouritesDivID);
        }
        scroll(0, 0);
    }
    else {
        document.getElementById(ajaxMessagesDivID).innerHTML = "";
        document.getElementById(ajaxMessagesDivID).style.display = "none";
    }
}

function showMyFavourites() {
    getAsynHTMLContent(manageFavsURL, favouritesDivID);
}

function addToMyClickStream() {
    try {
        var username = getHeaderTaskResponse(taskUserUniveralId);
        var hideFromClickStream = trim(document.getElementById(hideFromClickStreamDivID).innerHTML);

        if (username != undefined && username != null && username != "anonymous" && username != "" && username != "null" && hideFromClickStream != "true") {
            var url = manageClicksURL + "?action=add";

            var pageURL = trim(document.getElementById(pageURLDivID).innerHTML);
            var pageTitle = trim(document.getElementById(pageTitleDivID).innerHTML);
            var pageDesc = trim(document.getElementById(pageDescDivID).innerHTML);

            if (pageURL == "")
                return;
            else
                url += "&ClickStream=" + pageURL;

            if (pageTitle != "") {
                pageTitle = replaceAll(pageTitle, "'", "");
                url += "&ClickStreamTitle=" + pageTitle;
            }

            if (pageDesc != "") {
                pageDesc = replaceAll(pageDesc, "'", "");
                url += "&ClickStreamDescription=" + pageDesc;
            }

            getAsynHTMLContent(url, "pavan");
        }
    }
    catch (e) { }
}

function showMyClickStream() {
    var username = getHeaderTaskResponse(taskUserUniveralId);

    if (username != undefined && username != null && username != "anonymous" && username != "" && username != "null")
        getAsynHTMLContent(manageClicksURL, clickstreamDivID);
}


/*
function modalConfirm(message, callback) {
$('#confirm').modal({
close: false,
position: ["20%", ],
overlayId: 'confirmModalOverlay',
containerId: 'confirmModalContainer',
onShow: function(dialog) {
dialog.data.find('.message').append(message);

// if the user clicks "yes"
dialog.data.find('.yes').click(function() {
// call the callback
if ($.isFunction(callback)) {
callback.apply();
}
// close the dialog
$.modal.close();
});
}
});
}

function modalMessage(message, reload, callback) {
$('#information').modal({
close: false,
position: ["20%", ],
overlayId: 'confirmModalOverlay',
containerId: 'confirmModalContainer',
onShow: function(dialog) {
dialog.data.find('.message').append(message);

// if the user clicks "yes"
dialog.data.find('.yes').click(function() {
// call the callback
if ($.isFunction(callback) && reload == 'true') {
callback.apply();
}
// close the dialog
$.modal.close();
});
}
});
}
*/

function searchBoxKeyPressed(e) {
    var characterCode;

    if(e && e.which){ //if which property of event object is supported (NN4)
        e = e
        characterCode = e.which //character code is contained in NN4's which property
    }
    else{
        e = event
        characterCode = e.keyCode //character code is contained in IE's keyCode property
    }
    if (characterCode == 13) {
        search();
    }
}

function search() {
    var module = document.getElementById("module").value;
    var searchForm = document.getElementById("searchForm").value;

    document.location.href = "/NUCLEUS/nucleus/Content/Search/index.html?module=" + module + "&searchForm=" + searchForm;
}

function getServer() {
    if ("PROD" == "EDIT") {
        return "http://wcm1-qa.iaea.org";
    }
    else {
        return "http://nucleus.iaea.org"
    }
}

function generateGUID() {
    var g = "{";
    for (var i = 0; i < 32; i++)
        g += Math.floor(Math.random() * 0xF).toString(0xF) + (i == 8 || i == 12 || i == 16 || i == 20 ? "-" : "")
    return g + "}";
}

function getCookie(Name) {
    var re = new RegExp(Name + "=[^;]+", "i"); //construct RE to search for target name/value pair
    if (document.cookie.match(re)) //if cookie found
        return document.cookie.match(re)[0].split("=")[1] //return its value
    return ""
}

function setCookie(name, value) {
    var expiration_date = new Date();
    expiration_date.setYear(expiration_date.getYear() + 1);
    expiration_date = expiration_date.toGMTString();
    document.cookie = name + "=" + value + ";path=/;expires=" + expiration_date + ";" //cookie value is domain wide (path=/)
}

function deleteCookie(name) {
    document.cookie = name + '=; path=/; expires=Thu, 01-Jan-70 00:00:01 GMT;';
}


function startsWith(inputString, searchSequence) {
    if (inputString.length < searchSequence.length)
        return false;

    if (inputString.substr(0, searchSequence.length) == searchSequence)
        return true;

    return false;
}

function replaceAll(OldString, FindString, ReplaceString) {
    var SearchIndex = 0;
    var NewString = "";
    while (OldString.indexOf(FindString, SearchIndex) != -1) {
        NewString += OldString.substring(SearchIndex, OldString.indexOf(FindString, SearchIndex));
        NewString += ReplaceString;
        SearchIndex = (OldString.indexOf(FindString, SearchIndex) + FindString.length);
    }
    NewString += OldString.substring(SearchIndex, OldString.length);
    return NewString;
}

function collapseDiv(divID) {
    try {
        document.getElementById(divID).style.display = "none";
    }
    catch (e) { }
}

function expandDiv(divID) {
    try {
        document.getElementById(divID).style.display = "inline";
    }
    catch (e) { }
}


function SetFocus(fieldID) {
    document.getElementById(fieldID).focus();
}


function getParameter(parameterName) {
    var queryString = window.top.location.search.substring(1);

    var parameterName = parameterName + "=";

    if (queryString.length > 0) {
        begin = queryString.indexOf(parameterName);

        if (begin != -1) {
            begin += parameterName.length;
            end = queryString.indexOf("&", begin);

            if (end == -1) {
                end = queryString.length
            }

            return unescape(queryString.substring(begin, end));
        }
    }
    return "null";
}


function getXMLFileAsXMLDOM(url) {
    var xmlDoc = null;

    try // Internet Explorer
	{
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    }
    catch (e) {
        try // Firefox, Mozilla, Opera, etc.
	    	{
            xmlDoc = document.implementation.createDocument("", "", null);
        }
        catch (e) {
            // alert(e.message)
        }
    }

    try {
        xmlDoc.async = false;
        xmlDoc.load(url);
        return xmlDoc;
    }
    catch (e) {
        // alert(e.message)
    }

    return null;
}

function getHTMLContent(url) {
    var httpRequest;

    if (window.XMLHttpRequest) {
        httpRequest = new XMLHttpRequest();
        if (httpRequest.overrideMimeType) {
            httpRequest.overrideMimeType('text/xml');
        }
    }
    else if (window.ActiveXObject) {
        try {
            httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e) {
        }
    }

    if (!httpRequest) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
    }


    if (!startsWith(url, "http://")) {
        url = getServer() + url;
    }

    httpRequest.open('GET', url, false);
    httpRequest.setRequestHeader('Expires', '-1');
    httpRequest.setRequestHeader('Pragma', 'no-cache');
    httpRequest.setRequestHeader('Cache-Control', 'no-cache');

    httpRequest.send('');

    return httpRequest.responseText;
}

function getAsynHTMLContent(url, divId) {
    var httpRequest;

    if (window.XMLHttpRequest) {
        httpRequest = new XMLHttpRequest();
        if (httpRequest.overrideMimeType) {
            httpRequest.overrideMimeType('text/xml');
        }
    }
    else if (window.ActiveXObject) {
        try {
            httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e) {
        }
    }

    if (!httpRequest) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
    }

    if (!startsWith(url, "http://")) {
        url = getServer() + url;
    }

    httpRequest.open('GET', url, true);
    httpRequest.setRequestHeader('Expires', '-1');
    httpRequest.setRequestHeader('Pragma', 'no-cache');
    httpRequest.setRequestHeader('Cache-Control', 'no-cache');
    httpRequest.onreadystatechange = function() {
        if (httpRequest.readyState != 4) {
            return;
        }

        try {
            document.getElementById(divId).innerHTML = httpRequest.responseText;
        }
        catch (e) { }
    }
    httpRequest.send('');
}

function newWin(page, name, w, h, scroll) {
    var winl = (screen.width - w) / 2;
    var wint = (screen.height - h) / 2;
    winprops = 'height=' + h + ',width=' + w + ',top=' + wint + ',left=' + winl + ',scrollbars=' + scroll + ',resizable=no'
    win = window.open(page, name, winprops)
    if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
}


function trim(str) {
    return str.replace(/^\s*/, "").replace(/\s*$/, "");
}

function decryptPassword(encryptedPassword, strength) {
    var password = "";

    try {
        var c = parseInt(strength.charAt(strength.length - 1));

        for (var i = 0; i < encryptedPassword.length; i++) {
            var x = ((encryptedPassword.charAt(i)).charCodeAt() - c);
            password = password + String.fromCharCode(x);
        }
    }
    catch (e) {
        return (encryptedPassword);
    }

    return (password);
}

function replaceAll(OldString, FindString, ReplaceString) {
    var SearchIndex = 0;
    var NewString = "";
    while (OldString.indexOf(FindString, SearchIndex) != -1) {
        NewString += OldString.substring(SearchIndex, OldString.indexOf(FindString, SearchIndex));
        NewString += ReplaceString;
        SearchIndex = (OldString.indexOf(FindString, SearchIndex) + FindString.length);
    }
    NewString += OldString.substring(SearchIndex, OldString.length);
    return NewString;
}

/**
*
*  UTF-8 data encode / decode
*
**/
var Utf8 =
{
    // public method for url encoding
    encode: function(string) {

        var utftext = "";

        try {
            string = string.replace(/\r\n/g, "\n");


            for (var n = 0; n < string.length; n++) {

                var c = string.charCodeAt(n);

                if (c < 128) {
                    utftext += String.fromCharCode(c);
                }
                else if ((c > 127) && (c < 2048)) {
                    utftext += String.fromCharCode((c >> 6) | 192);
                    utftext += String.fromCharCode((c & 63) | 128);
                }
                else {
                    utftext += String.fromCharCode((c >> 12) | 224);
                    utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                    utftext += String.fromCharCode((c & 63) | 128);
                }

            }
        }
        catch (e) { }

        return utftext;
    },

    // public method for url decoding
    decode: function(utftext) {
        var string = "";

        try {
            var i = 0;
            var c = c1 = c2 = 0;

            while (i < utftext.length) {

                c = utftext.charCodeAt(i);

                if (c < 128) {
                    string += String.fromCharCode(c);
                    i++;
                }
                else if ((c > 191) && (c < 224)) {
                    c2 = utftext.charCodeAt(i + 1);
                    string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                    i += 2;
                }
                else {
                    c2 = utftext.charCodeAt(i + 1);
                    c3 = utftext.charCodeAt(i + 2);
                    string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                    i += 3;
                }

            }
        }
        catch (e) { }

        return string;
    }
}