// cookie
//TODO: need add expire functionality + domain functionality
function get_cookie(name) {
    var cookies = document.cookie.split("; ");
    for (var i = 0; i < cookies.length; i++) {
        var nvp = cookies[i].split("=");
        if (name == nvp[0])
            return nvp[1];
    }

    return null;
}

function getCookie(c_name) { //additional cookie getter (this one won't strip out "=" if it exists in the value of the cookie itself)
    var i, x, y, ARRcookies = document.cookie.split(";");
    for (i = 0; i < ARRcookies.length; i++) {
        x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
        y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
        x = x.replace(/^\s+|\s+$/g, "");
        if (x == c_name) {
            return unescape(y);
        }
    }
}

function set_cookie(name, value, expdays) {
    var domain = "";

    if (typeof CookieDomain != "undefined")
        domain = CookieDomain;

    var cv = name + "=" + value + "; path=/";

    if (domain != "")
        cv += "; domain=" + domain;

    var expdate = new Date();
    expdate.setDate(expdate.getDate() + expdays);
    cv += ((expdays == null) ? "" : "; expires=" + expdate.toUTCString());

    document.cookie = cv;
}

function deleteCookie(name) { set_cookie(name, '', -1); }


var COUNTRY_SELECTOR_COOKIE_NAME = "SelectedCountryPath";
var ENTRY_URL_COOKIE_NAME = "EntryUrl";
var COUNTRY_REDIRECT_FLAG = "CountryRedirectFlag";

function get_current_country() { return get_cookie(COUNTRY_SELECTOR_COOKIE_NAME); }
function set_current_country(country) { set_cookie(COUNTRY_SELECTOR_COOKIE_NAME, country, 365); }
function get_entry_url() { return getCookie(ENTRY_URL_COOKIE_NAME); }
function set_entry_url(url) { set_cookie(ENTRY_URL_COOKIE_NAME, url, 1); }

function have_country_redirect_flag() {
    var v = get_cookie(COUNTRY_REDIRECT_FLAG);
    return v && v.length > 0;
}

function set_country_redirect_flag() {
    set_cookie(COUNTRY_REDIRECT_FLAG, "1");
}

//----------check permission -------------------

function is_logged_in() {

    var v = get_cookie("SSO");

    return (v != null) && (v.length > 0);
}

var site_service_url = "siteservice.epx?kNtBzmUK9zU=1";

function check_permission(payload, ok_handler, not_ok_handler) {
    $.post(
            site_service_url,
            "checkpermission:" + payload,
            function (data) {
                check_permission_callback(data, ok_handler, not_ok_handler);
            },
            function (e) {
                alert(e);
            }
        );
}

function submit_save(payload, ok_handler) {
    $.post(
            site_service_url,
            "save:" + payload,
            function (data) {
                if (ok_handler) ok_handler(data);
            },
            function (e) {
                alert(e);
            }
        );
}

function get_country_by_region(payload, ok_handler) {
    $.post(
            site_service_url,
            "regioncountry:" + payload,
            function (data) {
                if (ok_handler) ok_handler(data);
            },
            function (e) {
                alert(e);
            }
        );
}

function get_states_by_country(payload, ok_handler) {
    $.post(
        site_service_url,
        "countrystate:" + payload,
        function (data) {
            if (ok_handler) ok_handler(data);
        },
        function (e) {
            alert(e);
        }
    );
}

function check_permission_callback(data, ok_handler, not_ok_handler) {

    var index = data.indexOf(';');

    if (index <= 0) {
        alert("failed:" + data);
        return;
    }

    var status = data.substring(0, index);
    var url = data.substring(index + 1);

    if (status == "1" && ok_handler)
        ok_handler(url);
    else if (not_ok_handler)
        not_ok_handler(url);

}

function check_have_premium(ok_handler, not_ok_handler) {
    check_permission("havepremium", ok_handler, not_ok_handler);
}

function run_url(url, handler) {
    $.get(url,
           function (data) { if (handler) handler(data); },
           function (e) { }
          );
}

function log_out() {
    $.post(
            site_service_url,
            "logout:1",
            function (data) {
                do_logout(); // top.location.reload();
            },
            function (e) {
            }
        );
}

var FIELD_DELIMITER = "[]";

var save_check_permission_payload = "action=save";

function do_logout() {

    //need check if the page is in /profile/ folder, it yes, need go to home page
    var url = top.window.location.href;

    if (url.toUpperCase().indexOf("http://www.sap.com/PROFILE/") < 0)
        top.window.location.reload();
    else {

        var hostname = "";

        if (typeof HOST_NAME != "undefined")
            hostname = HOST_NAME;

        top.window.location.href = hostname + "/index.epx";

    }
}

/*

Search Pages: 

Type: SearchTerms
Name: newid() or null (not used)
Description: key words
SubType: SearchTerms
Value: complete URL (e.g: http://localhost:2011/search/search-results.epx?querytext=byd)

Resources:

Name: Resources
Name: Title of the asset/page
Description: Any description
SubType: Videos/Documents/Pages
Value: Complete Url (e.g: http://usphldvm3.phl.sap.corp:2011/asset/index.epx?id=2d4bf146-4f71-46c2-9a4d-670dbbb2e455&name=Build-and-Manage-Strong-Customer-Relationships)


*/

var default_save_link_type = "Resources";

function pack_saved_data(type, name, value, desc, subType) {
    var data = [1, type, name, value, desc, subType];
    return data.join(FIELD_DELIMITER);
}


function save_resource(type, name, value, desc, subType, ok_handler) {

    if (!desc)
        desc = name;

    var payload = pack_saved_data(type, name, value, desc, subType);
    submit_save(payload, ok_handler);

    // Tracking Code added by Chandu to track all save click	
    if (type == "SearchTerms")
        TrackLink("", "Save Search", desc);
    else
        TrackLink(value, "Save:" + type, "");
}

function checked_save_resource(type, name, value, desc, subType, not_ok_handler) {

    var payload = pack_saved_data(type, name, value, desc, subType);

    check_permission(save_check_permission_payload,
        function () { submit_save(payload); },
        not_ok_handler);
    TrackLink(value, "Save:" + type, "");
}

function save_search(search_term_url, search_query_term, ok_handler) {
    save_resource("SearchTerms", "", search_term_url, search_query_term, "SearchTerms", ok_handler);
    // Tracking Code added by Chandu to track the saved Searches	
    //TrackLink("", "Save Search", search_query_term);
}

function save_link(resource, onsave) {

    //var type = "Links";

    //if (url.toUpperCase().indexOf("/ASSET/") > 0)
    //type = "Resources";
    //alert(resource);
    if (is_logged_in()) {
        save_resource(resource.type, resource.title, resource.url, resource.description, resource.subtype, onsave);
    }
    else
        checked_save_resource(resource.type, resource.title, resource.url, resource.description, resource.subtype,
        function (login_url) {
            var handler = function () {
                //alert("in handler");
                if (is_logged_in()) {
                    save_resource(resource.type, resource.title, resource.url, resource.description, resource.subtype, onsave);
                }
            };

            //call your method here with login_url (or hard-coded it to be “profile/login.epx”) and handler
            start_registration_session(login_url, handler);
        });
}

function save_bydresource(Assets, ok_handler) {
    var data = [Assets.length];
    for (var i = 0; i < Assets.length; i++) {
        data.push("Resources");
        data.push(Assets[i].Title);
        data.push(Assets[i].Url);
        data.push(Assets[i].Title);
        data.push(Assets[i].Type);
    }

    var packed_data = data.join(FIELD_DELIMITER);

    check_permission(save_check_permission_payload,
        function () { submit_save(packed_data, ok_handler); },
    //function () { alert("I am supposed to display a registration form in a layer here:"); }
        function (login_url) {
            var handler = function () {
                //alert("in handler");
                if (is_logged_in()) {
                    submit_save(packed_data, ok_handler);
                }
            };
            start_registration_session(login_url, handler);
        }
    );
}

//save button handler

$(document).ready(function () {
    $("li.save a").live("click", function () {

        var link = $(this);

        var title = link.attr("save-title");

        if (!title)
            title = document.title;

        var url = link.attr("href");

        if (!url || url == "")
            url = window.location.href;

        var resourceType = link.attr("resource-type") || default_save_link_type;
        var resourceSubtype = link.attr("resource-subtype") || "Pages";
        var description = link.attr("description") || "";

        var resource = { title: title, url: url, type: resourceType, subtype: resourceSubtype, description: description };

        save_link(resource, function () { link.parent().attr("class", "saved"); });

        return false;
    });
});


//legacy save

$(document).ready(function () {

    $("#legacysavelink").live("click", function () {

        var title = document.title;

        var url = window.location.href;

        save_link({ title: title, url: url, type: default_save_link_type, subtype: "Pages", description: "" }, function () { $("#legacysaved").show(); $("#legacysave").hide(); });

        return false;
    });
});

//login/logout

$(document).ready(function () {
    //if ($(".logout").length) {

    // $(".login").hide();
    $("#utilitynav-myprofile-logout").live("click", function () {
        log_out();
        //            $(".login").show();
        //            $(".logout").hide();
        //window.location.href = window.location.href;

        return false;
    });
    // }
    if ($(".btn-cta-sm").length) {
        //$(".login").hide();
        $("#btn-logout").click(function () {
            log_out();
            return false;
        });
    }
});

$(document).ready(function () {

    $("#utilitynav-myprofile-firstname").live("click", function () {

        if ($("#utilitynav-myprofile-menu").is(':visible'))
            $("#utilitynav-myprofile-menu").hide();
        else
            $("#utilitynav-myprofile-menu").show();

        return false;
    });

});

//----Events----------
//Functions to populate Country/State dropdowns in Events
function PopulateCountry(RegionID) {
    var ddlCountry = document.getElementById("selectcountry");
    ResetCountryState(ddlCountry);
    var ddlState = document.getElementById("selectstate");
    ResetCountryState(ddlState);

    if (RegionID.length > 0) {
        get_country_by_region(RegionID, countryhandler);
        document.getElementById('hddefaultflag').value = '';
    }
    else {
        document.getElementById('hddefaultflag').value = 'true';
    }

}

var countryhandler = function (args) {
    var ddlCountry = document.getElementById("selectcountry");
    if (args.length > 0) {
        var CountryList = args.split("|");
        ResetCountryState(ddlCountry);
        ddlCountry.disabled = false;
        for (i = 0; i < CountryList.length; i++) {
            var Country = CountryList[i].split("=");

            var optionCountry = document.createElement("option");
            optionCountry.text = Country[1];
            optionCountry.value = Country[0];
            ddlCountry.options.add(optionCountry);
        }
    }
}

function PopulateState(CountryID) {
    var ddlState = document.getElementById("selectstate");
    ResetCountryState(ddlState);
    if (CountryID.length > 0) {
        get_states_by_country(CountryID, statehandler);
    }
}

var statehandler = function (args) {

    var ddlState = document.getElementById("selectstate");
    if (args.length > 0) {
        var StateList = args.split("|");
        ResetCountryState(ddlState);
        ddlState.disabled = false;
        for (i = 0; i < StateList.length; i++) {
            var State = StateList[i].split("=");

            var optionState = document.createElement("option");
            optionState.text = State[1];
            optionState.value = State[0];
            ddlState.options.add(optionState);
        }
    }
}

function ResetCountryState(ddl) {
    ddl.length = 0;
    var optionDefault = document.createElement("option");
    optionDefault.text = "Show All";
    optionDefault.value = "";
    ddl.options.add(optionDefault);
    ddl.disabled = true;
}

//Functions to get scoring cookie

$(document).ready(function () {
    if (typeof need_call_cookie_service != "undefined" && need_call_cookie_service) {
        setTimeout(function () { call_cookie_service(scoring_url); }, 1000);
    }

});



function call_cookie_service(payload) {
    $.post(
            "/gwtservices/" + site_service_url,
            "SCORINGENGINE-GET-COOKIE:" + payload,
            function (data) {
                set_scoring_cookie(data);
            },
            function (e) {
                alert(e);
            });

}

function set_scoring_cookie(data) {
    set_cookie(scoring_cookie_name, data, 365);
}

//End functions to get scoring cookie


// Functions to get scoring cookie HTML

function call_cookie_html_service(payload) {
    $.post(
		"/gwtservices/" + site_service_url,
		"SCORINGENGINE-GETHTML:" + payload,
		function (data) {
		    display_html_scoring(data);
		},
		function (e) {
		    alert(e);
		});

}

function display_html_scoring(data) {
    var seDiv = document.createElement('div');
    seDiv.id = "seDiv";
    seDiv.innerHTML = data;
    seDiv.className = 'floatStyle';
    document.body.appendChild(seDiv);
}

$(document).ready(function () {
    if (typeof need_call_cookie_html_service != "undefined" && need_call_cookie_html_service) {
        setTimeout(function () { call_cookie_html_service(scoring_cookie_name); }, 1000);
    }

});

//End Scoring Cookie HTML functions

//Premium Asset Registration
function DoRegistrationForPremiumAssets(url, success, fail) {
    check_permission(url,
		    function (login_url) {
		        window.open(url, 'resizable', 'scrollbars');
		    },
		    function (login_url) {
		        var handler = function () {
		            //alert("In handler");
		            if (is_logged_in()) {
		                check_permission(url,
					            function (download_url) {
					                window.open(download_url, 'resizable', 'scrollbars');
					            },
					            function () {
					                //user doesn't have permissions, do nothing
					            }
                        );
		            }
		        };
		        start_registration_session(login_url, handler);
		    }
	    );
}

//End Premium Asset Registration


//Reload header:

function reload_header() {
    $.get(top.window.location.href, function (res) { change_header(res); }, function (e) { });
}

var header_start_marker = "<!--begin header content-->";
var header_end_marker = "<!--end header content-->";

function change_header(res) {
    var startIndex = res.indexOf(header_start_marker);
    var endIndex = res.indexOf(header_end_marker);
    if (startIndex >= 0 && endIndex >= 0 && endIndex > startIndex + header_start_marker.length) {
        $("#headercontent").replaceWith(res.substring(startIndex + header_start_marker.length, endIndex));
    }
}

//////////////////////////
//the following two functions are getting called from the winbacks and abandon warnings
function _s_action(actionnumber) {
    try {
        ACTION = actionnumber;
        var tracking_obj = parent.window.createITT();
        tracking_obj.ACTION = actionnumber;
        tracking_obj.submit_action();
    }
    catch (e) { }

}

var initial_login_status = null;

$(document).ready(function () {
    //invoke the following function only on pages that have do-black_out variable set like the abandon warnings
    if (typeof do_black_out != "undefined")
        $('#dialog-blackout').css({ opacity: 0.6 });

    try {
        if (typeof (parent.initial_login_status) == "undefined")
            parent.initial_login_status = is_logged_in();
    }
    catch (err) { }
});

function on_abandon_warning_close(returnValue) {
    if ((parent.initial_login_status != null) && (is_logged_in() != parent.initial_login_status)) {
        parent.reload_header();
    }

    parent.setReturnValueAndClose(returnValue);
}
///////////////////////////
