
//---------login/registration------

var _on_layer_close_handler = null;
var _anonymous_registration_url = '';
var _registration_url = '';
var _registration_dialog = '/common/formAbandonWarning.epx?kNtBzmUK9zU=1';
var _contactsap_dialog = '/contactsap/ContactsapAbandonWarning_nx.epx?kNtBzmUK9zU=1';
var _interstitial_abandon_warning = '/common/interstitialAbandonWarning.epx?kNtBzmUK9zU=1';
var _https_query_magic = "kNtBzmUK9zU";
var _https_query_magic_value = "=1";
var _pme_layer = 'pmelayer';
var _pme_layer_value = '=true';

var _layer_css = {
contactsap : 'lw-contact',
registration: 'lw-registration',
login: 'lw-myprofile',
none : ''
};

var _layer_mode = {
    newLayer: 'new',
    replaceLayer: 'replace',
    none: ''
};

var _http_bridge_url = '/gwtservices/httpBridge.epx';

var _host_url_for_bridge_and_warning = null;

//////////////////////////////
//URL manipulation functions
/////////////////////////////
function set_host_for_bridge_and_warning_url()
{
    try {
        var url = top.window.location.href;
        if (url.toUpperCase().indexOf('HTTPS') > -1)
            _host_url_for_bridge_and_warning = SECURE_HOST_NAME; //if can access the top, means reg and top are in same domain
        else
            _host_url_for_bridge_and_warning = HOST_NAME;
    }
    catch (ex) {
        _host_url_for_bridge_and_warning = HOST_NAME;   //if cannot access the top, means reg and top are in different domain
    }
    /*
    if (typeof countryPath != "undefined") {
        if (_host_url_for_bridge_and_warning.toUpperCase().indexOf(countryPath) == -1)
            _host_url_for_bridge_and_warning = _host_url_for_bridge_and_warning + countryPath;
    }*/
}

function get_path(url) {
    var newURL = url;
    if ((newURL.toUpperCase().indexOf('HTTP://') > -1) || ((newURL.toUpperCase().indexOf('https:///') > -1))) {
        var newURL = newURL.substring(newURL.indexOf('://') + 3);
        newURL = newURL.substring(newURL.indexOf('index.html'));
    }
    var index = newURL.indexOf('index.html');
    if ((index > 0) || (index < 0))
        newURL = '/' + newURL;

    if ((url.toUpperCase().indexOf("CHECKSECURITY.EPX") < 0) && (typeof countryPath != "undefined")) {
        if (newURL.toUpperCase().indexOf(countryPath) == -1)
            newURL = newURL + countryPath;
    }

    return newURL;
}

function get_bridge_or_warning_url(url) {
    if ((typeof _host_url_for_bridge_and_warning == "undefined") || (_host_url_for_bridge_and_warning == '') || (_host_url_for_bridge_and_warning == null))
        set_host_for_bridge_and_warning_url();

    url = _host_url_for_bridge_and_warning + get_path(url);
    
    if (url.toUpperCase().indexOf('HTTPS') > -1) {
        var sep = get_separator(url);

        if (url.indexOf(_https_query_magic) < 0) {
            url = url + sep + _https_query_magic + _https_query_magic_value;
        }
    }

    return url;
}

function get_separator(url) {
    var sep = "?";

    if (url.indexOf("?") > 0)
        sep = "&";

    return sep;
}

function build_secure_pme_url(url) {
    if ((typeof url == "undefined") || (url == '') || (url == null)) {
        return url;
    }

    var newURL = get_path(url);
    var sep = get_separator(newURL);

    if (newURL.indexOf(_https_query_magic) < 0) {
        newURL = newURL + sep + _https_query_magic + _https_query_magic_value;
        sep = "&";
    }

    if (newURL.toUpperCase().indexOf('PMELAYER') < 0)
        newURL = newURL + sep + _pme_layer + _pme_layer_value;

    return SECURE_HOST_NAME + newURL;
}

function build_warning_url(warning_url) {
    if ((typeof warning_url == "undefined") || (warning_url == '') || (warning_url == null)) {
        return warning_url;
    }

    var newURL = get_path(warning_url);

    newURL = get_bridge_or_warning_url(newURL);
    return newURL;
}

/////////////////////////
function get_home_page() {
    var homePage = HOST_NAME;
    if (typeof countryPath != "undefined") {
        if (homePage.toUpperCase().indexOf(countryPath) == -1)
            homePage = homePage + countryPath;
    }
    else
        homePage = homePage + "/";

    homePage = homePage + "index.epx";
    return homePage;
}

/////////////////////////
// Start a session for ContactSAP or registration
// These functions are called from host.ascx, Save, and Asset pages
////////////////////////

function start_new_session(url, dialog, on_layer_close_handler) {
    if (url.toUpperCase().indexOf('/LOGIN') > -1)
        start_registration_session(url, on_layer_close_handler);
    else if (url.toUpperCase().indexOf('/CONTACTSAP') > -1)
        start_contact_session(url, on_layer_close_handler);
    else
        start_session(url, dialog, on_layer_close_handler);
}

////////////////////////
// this method will be invoked to open campaign registration in a layer
///////////////////////
function start_session(url, warning_url, on_layer_close_handler) {
    if ((typeof url == "undefined") || (url == '') || (url == null)) {
        return url;
    }

    url = build_secure_pme_url(url);

    if ((typeof warning_url == "undefined") || (warning_url == '') || (warning_url == null))
        warning_url = _registration_dialog;

    warning_url = build_warning_url(warning_url);
    start_layer_session(url, warning_url, on_layer_close_handler, _layer_css.registration, _layer_mode.newLayer);
}

function start_contact_session(url, on_layer_close_handler) {
    if ((typeof url == "undefined") || (url == '') || (url == null)) {
        return url;
    }

    url = build_secure_pme_url(url);

    var dialog = build_warning_url(_contactsap_dialog);
    start_layer_session(url, dialog, on_layer_close_handler, _layer_css.contactsap, _layer_mode.newLayer);
}

function start_registration_session(url, on_layer_close_handler) {
    if ((typeof url == "undefined") || (url == '') || (url == null)) {
        return url;
    }

    url = build_secure_pme_url(url);

    if (url.toUpperCase().indexOf('LOGIN.EPX') > 0)
        url = url + '&level=3';

    var dialog = build_warning_url(_registration_dialog);
    start_layer_session(url, dialog, on_layer_close_handler, _layer_css.registration, _layer_mode.newLayer);
}

function start_login_session(url) {
    if ((typeof url == "undefined") || (url == '') || (url == null)) {
        return url;
    }

    url = build_secure_pme_url(url);

    start_layer_session(url, '', '', _layer_css.login, _layer_mode.newLayer);
}

function replace_with_registration_session(url, dialog, on_layer_close_handler) {
    if ((typeof url == "undefined") || (url == '') || (url == null)) {
        return url;
    }

    url = build_secure_pme_url(url);
    dialog = build_warning_url(dialog);
    start_layer_session(url, dialog, on_layer_close_handler, _layer_css.registration, _layer_mode.replaceLayer);
}

// TO DO: abandon warning is hardcoded
function replace_with_new_session(url, on_layer_close_handler) {
    if ((typeof url == "undefined") || (url == '') || (url == null)) {
        return url;
    }

    start_layer_session(url, _interstitial_abandon_warning, on_layer_close_handler, _layer_css.registration, _layer_mode.replaceLayer);
}

function start_layer_session(url, warning_url, on_layer_close_handler, layer_css, layer_mode) {
    //open url in a layer
    //warning_url can have defauts

    if(layer_mode == _layer_mode.replaceLayer)
        parent.replaceLayer(url, warning_url, on_layer_close_handler, layer_css);
    else
        parent.openLayer(url, warning_url, on_layer_close_handler, layer_css);
}

/*
function close_layer_session(refresh) {
    //close the layer
    //call on_close_handler if it is set
    //if refresh is set, refresh current page
    window.opener.top.location.reload();self.close(); alert('bktest');
    if (this._on_layer_close_handler != null)
        this._on_layer_close_handler();

    if (refresh)
        parent.location.reload();
}
*/

function open_in_layer(url, warning_url, layer_css) {
    //close the current layer
    //open url in a new layer

    if ((typeof url == "undefined") || (url == '') || (url == null)) {
        return url;
    }

    url = build_secure_pme_url(url);
    warning_url = build_warning_url(warning_url);
    parent.openLayer(url, warning_url, '', layer_css);
}

var childPage = false;

function closeDialogAndRefresh() {
    var httpBridge = get_bridge_or_warning_url(_http_bridge_url);
    var sep = get_separator(httpBridge);
    var url = httpBridge + sep + "action=close&refresh=true";
    window.location.href = url;
}
/*
// modified to handle login being opened when e-mail entered on the reg page already exists
function closeDialogAndRefresh() {
// is the dialog opened by the reg page?
if (parent.childPage == true) {
parent.closeChildWindow();
}
else {
var httpBridge = get_bridge_or_warning_url(_http_bridge_url);
var sep = get_separator(httpBridge);
var url = httpBridge + sep + "action=close&refresh=true";
window.location.href = url;
}
}
*/
// called from login control (https) so as to invoke a call on (http) to render interstitial in a layer
// TO DO : abandon warning?
function closeDialogOpenFrame(url) {
    var redirect = encodeURIComponent(url);
    var httpBridge = get_bridge_or_warning_url(_http_bridge_url);
    var sep = get_separator(httpBridge);
    var url = httpBridge + sep + 'action=replaceLayer&refresh=false&redirect=' + redirect;
    window.location.href = url;
}

// called from slogin.epx (https) to invoke a call on (http) to render registration in a layer
function on_create_sap_account() {
    var redirect = encodeURIComponent(_registration_url);
    var httpBridge = get_bridge_or_warning_url(_http_bridge_url);
    var sep = get_separator(httpBridge);
    var url = httpBridge + sep + 'action=registrationLayer&refresh=false&redirect=' + redirect + '&dialog=' + _registration_dialog;
    window.location.href = url;
}

var close_legacy_window = false;
function closeWindowLayerAndGotoURL(url) {
    //if(-1 < this.location.href.toLowerCase().indexOf("yourinfo"))
/*    if (-1 < window.opener.location.href.toLowerCase().indexOf("yourinfo")) {
        var cookieName = "pmewtaupdate";
        var cookieValue = "save";
        
        setCookie(cookieName, cookieValue);
    }
    
    var newUrl = url;
    if (newUrl == null || newUrl == "")
       newUrl = window.opener.location.href;
*/

    try {
        if (parent.close_legacy_window == true) {
            if (-1 < parent.window.location.href.toLowerCase().indexOf("yourinfo")) {
                var cookieName = "pmewtaupdate";
                var cookieValue = "save";

                setCookie(cookieName, cookieValue);
            }

            var newUrl = url;
            if (newUrl == null || newUrl == "")
                newUrl = parent.window.location.href;

            parent.window.rm_fadeOutIframe_2("true", newUrl);
        } 
    }
    catch (e) { }

    var redirect = encodeURIComponent(url);
    var httpBridge = get_bridge_or_warning_url(_http_bridge_url);
    var sep = get_separator(httpBridge);
    var url = httpBridge + sep + 'action=redirect&redirect=' + redirect;
    window.location.href = url;
    /*  
    parent.window.rm_fadeOutIframe_2("true", newUrl);
    parent.window.rm_fadeOutIframe();
    if (url == null || url == "")
        parent.window.location.href = parent.window.location.reload(); //parent.window.location.href;
    else
        parent.window.location = url; //.href = url;*/
}

///////////////////////////
// functions for httpBridge
///////////////////////////

function getQueryParameters() {
    /////////////////////
    //action=close&redirect=/abc.epx&refresh=true
    /*source: "Kevin Boudloche's blog - tentonaxe.com" */
    var queryObj = {};
    var querystring = location.search.replace("?", "").split("&");
    for (var i = 0; i < querystring.length; i++) {
        var name = querystring[i].split("=")[0];
        var value = querystring[i].split("=")[1];
        queryObj[name] = value;
    }
    return queryObj;
}

function doBridgeAction() {
    if ((typeof executeDoAction != "undefined") && (executeDoAction == true)) {
        var queryObj = getQueryParameters();
	    if (typeof queryObj.action != "undefined") {
	        if (queryObj.action == 'close') {
	            if (typeof queryObj.refresh != "undefined") {
	                if (queryObj.refresh == 'true')
	                    window.top.reload_header();
	            }
	            window.top.setReturnValueAndClose(true);
	        }
	        else if (queryObj.action == 'redirect') {
	            if (typeof queryObj.redirect != "undefined") {
	                var redirectURL = decodeURIComponent(queryObj.redirect);
	                if (redirectURL != '') {
	                    if ((redirectURL.toUpperCase().indexOf("/HOST") > -1))
	                        redirectURL = get_home_page();
	                    else
	                        redirectURL = get_bridge_or_warning_url(redirectURL);

	                    parent.reload_header();
	                    parent.location.href = redirectURL;
	                    //close_and_relocate(decodeURIComponent(queryObj.redirect)). 
	                    return;
	                }
	            }

	            parent.reload_header();
	            parent.setReturnValueAndClose(true);
	        }
	        else if (queryObj.action == 'registrationLayer') {
	            var layer_url = '';
	            var layer_warning = '';
	            if (typeof queryObj.redirect != "undefined") {
	                layer_url = decodeURIComponent(queryObj.redirect);
	                if (typeof queryObj.dialog != "undefined") {
	                    layer_warning = decodeURIComponent(queryObj.dialog);
	                }
	                parent.replace_with_registration_session(layer_url, layer_warning, '');
	            }
	        }
	        else if (queryObj.action == 'replaceLayer') {
	            var layer_url = '';
	            var layer_warning = '';
	            if (typeof queryObj.redirect != "undefined") {
	                layer_url = decodeURIComponent(queryObj.redirect);
	                if (typeof queryObj.dialog != "undefined") {
	                    layer_warning = decodeURIComponent(queryObj.dialog);
	                }
	                parent.replace_with_new_session(layer_url, layer_warning, '');
	            }
	        }
	    }
	}
}

