﻿if (typeof (PostenCos) == "undefined") {
    window.PostenCos = {};
}

if (typeof (PostenCos.Login) == "undefined") {
    window.PostenCos.Login = {};
}

PostenCos.Login = new function () {
    var LoginPageUrl = "";
    var LoginUrlSet = false;
    var LoginFrame;
    var LoginInfoContainer;
    var LoginNavDropDown;
    var LoginErrorMessageContainer = null;
    var self = this;

    this.Init = function (loginPageUrl) {
        LoginPageUrl = loginPageUrl;
        LoginNavDropDown = jQuery(".loginNavigationItem");
        LoginFrame = jQuery(LoginNavDropDown).find("#LoginFrame");
        LoginInfoContainer = jQuery("[id$='loginInfoContainer']");
        LoginErrorMessageContainer = jQuery("#LoginErrorMessage");

        //check visibility - if visible then identity has been resolved server side
        var isSPIdentityResolved = LoginInfoContainer.is(":visible");
        if (isSPIdentityResolved) {
            jQuery(".loginNavigationItem").hide();
        }
        else {
            //Attach events which will initialize loginframe
            AttachEventHandlers();
        }
    };

    this.Success = function (username) {
        if (username.length > 0) {
            UpdateLoginInfo(username);
            LoginNavDropDown.hide();
            LoginInfoContainer.find("> *").hide();
            openDropDown(LoginNavDropDown);
            LoginInfoContainer.show();
        }
        else {
            LoginNavDropDown.show();
            LoginInfoContainer.hide();
        }
    };

    this.Failed = function () {
        LoginFrame.attr("src", "");
        LoginUrlSet = false;
        LoginFrame.hide();
        LoginErrorMessageContainer.show();
    };


    this.SetLoginFrame = function () {
        if (!LoginUrlSet && LoginNavDropDown.hasClass("active")) {
            LoginErrorMessageContainer.hide();
            LoginFrame.attr("src", LoginPageUrl);
            LoginUrlSet = true;
            LoginFrame.show();
        }
    };

    this.ReadAuthCookie = function (displayNameCookie, invalidLogin) {
        var user = GetCookie(displayNameCookie);

        if (user.length > 0) {
            self.Success(user);
        }
        else if (invalidLogin) {
            self.DisplayLogoutOnly();
        }
    };

    this.DisplayLogoutOnly = function () {
        LoginNavDropDown.show();
        LoginInfoContainer.show();
        LoginInfoContainer.find("> *").hide();
        LoginInfoContainer.find(".logout").show();
    };

    function UpdateLoginInfo(username) {
        LoginInfoContainer.find("a[class='theme']").each(function () {
            var control = jQuery(this);
            var key = control.text();

            switch (key) {
                case "{Username}":
                    control.text(username);
                    control.attr("href", "#");
                    break;
                case "{Organization}":
                    control.text("");
                    control.attr("href", "#");
                    break;
            }
        })
    };

    function AttachEventHandlers() {
        jQuery(".loginNavigationItem > a").click(PostenCos.Login.SetLoginFrame);
        jQuery(".loginNavigationItem > a").hover(PostenCos.Login.SetLoginFrame);
    }

    function GetCookie(c_name) {
        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);
            }
        }

        return "";
    }
};
