﻿/*global variables - used by personalisation*/
var xmlHttp;
var defaultLink = "<a href='/MyPage/'>MyPage (not signed in)</a>";

//stateChangeHandler will fire when the state has changed, i.e. data is received back 
// This is non-blocking (asynchronous) 
function stateChangeHandler() {
    //readyState of 4 or 'complete' represents that data has been returned 
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete') {
        //Gather the results from the callback 
        var str = xmlHttp.responseText;

        if (str.match("Server"))
            str = defaultLink;
1
        //write Personalisation header 
        document.getElementById('hdr-personalisation').innerHTML = str;
    }
}

// XMLHttp send GET request 
function xmlHttp_Get(xmlhttp, url) {
    xmlhttp.open('GET', url, true);
    xmlhttp.send(null);
}

function GetXmlHttpObject(handler) {
    var objXmlHttp = null;    //Holds the local xmlHTTP object instance
    var is_ie = (navigator.userAgent.indexOf('MSIE') >= 0) ? 1 : 0;
    var is_ie5 = (navigator.appVersion.indexOf("MSIE 5.5") != -1) ? 1 : 0;
    var is_opera = ((navigator.userAgent.indexOf("Opera6") != -1) || (navigator.userAgent.indexOf("Opera/6") != -1)) ? 1 : 0;
    //netscape, safari, mozilla behave the same??? 
    var is_netscape = (navigator.userAgent.indexOf('Netscape') >= 0) ? 1 : 0;

    //Depending on the browser, try to create the xmlHttp object 
    if (is_ie) {
        //The object to create depends on version of IE 
        //If it isn't ie5, then default to the Msxml2.XMLHTTP object 
        var strObjName = (is_ie5) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP';

        //Attempt to create the object 
        try {
            objXmlHttp = new ActiveXObject(strObjName);
            objXmlHttp.onreadystatechange = handler;
        }
        catch (e) {
            //Object creation errored
            return;
        }
    }
    else if (is_opera) {
        //Opera has some issues with xmlHttp object functionality 
        return;
    }
    else {
        // Mozilla | Netscape | Safari 
        objXmlHttp = new XMLHttpRequest();
        objXmlHttp.onload = handler;
        objXmlHttp.onerror = handler;
    }

    //Return the instantiated object 
    return objXmlHttp;
}

function extractPageName(hrefString) {
    // helper function for setPage()

    var arr = hrefString.split('/');

    return (arr.length < 2) ? hrefString : arr[arr.length - 2].toLowerCase() + arr[arr.length - 1].toLowerCase();
}

function initPersonalisation() {
    document.cookie = 'OriginalUrl = ' + location.href;

    // PERSONALISATION SWITCH

    // DO NOT SHOW PERSONALISATION HEADER FOR RECORDCOPYING AND A2A APPs
    var PERSONALISATION_ACTIVE = true;
    var pageURL = document.location.href;
    var persArr = new Array("/recordcopying/", "/RecordCopying/", "/Recordcopying/", "/A2A/", "/a2a/", "/UFOs/", "/ufos/");

    for (var i = 0; i < persArr.length; i++) {
        if (pageURL.match(persArr[i]))
            PERSONALISATION_ACTIVE = false;
    }
    // rollback switch to false
    // var PERSONALISATION_ACTIVE = false; 

    var requestURL = '/MyPage/STS/LoginStatus.aspx';

    if (PERSONALISATION_ACTIVE) {
        var url = requestURL;

        //Create the xmlHttp object to use in the request 
        //stateChangeHandler will fire when the state has changed, i.e. data is received back 
        // This is non-blocking (asynchronous)
        xmlHttp = GetXmlHttpObject(stateChangeHandler);

        //Send the xmlHttp get to the specified url
        try {
            // display MyPage dynamic header
            xmlHttp_Get(xmlHttp, url);
        }
        catch (e) {
            // provide a simple MyPage link
            document.getElementById('hdr-personalisation').innerHTML = defaultLink;
        }
    }
    else {
        // hide personalisation links completely
        var persDiv = document.getElementById("hdr-personalisation");
        persDiv.innerHTML = "&nbsp;";
    }
}

function addLoadEvent(func) {
    // executes JavaScript functions after browser window has loaded
    // another copy of this function is used in content-rotate.js
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}

addLoadEvent(initPersonalisation);
