﻿var logonusercontrol = function () {

    var o;
    var isLoginShowing = false;
    var isInsideLogin = false;

    function Setup() {
        o.showLoginButton.click(ToggleLogin);
        HideLoginClickOutSide();
        o.loginButton.click(function () {
            Login();
            return false;
        });
    }

    function ToggleLogin() {
        if (isLoginShowing == false) {
            ClearForm();
            o.loginDropdown.fadeIn('slow');
            isLoginShowing = true;
            o.userNameField.focus();
        }
        else {
            isLoginShowing = false;
            o.loginDropdown.fadeOut('slow');
        }
    }

    function ShowErrorMessage(data) {
        var t = data.Errors[0];
        o.loginError.html(data.Errors[0]);
    }

    function ClearForm() {
        o.loginError.html('');
        o.loginUsernameField.val('');
        o.loginPasswordField.val('');
    }

    function Login() {
        $.ajax({
            url: o.loginUrl,
            data: o.loginForm.serialize(),
            type: 'POST',
            success: function (data) {
                if (data.HasError == true) {
                    ShowErrorMessage(data)
                }
                else {
                    if (data.Renew == true) {
                        window.location = data.RenewUrl;
                    }
                    else {
                        window.location = data.DashboardUrl; ;
                    }
                }
            }
        });
    }

    function HideLoginClickOutSide() {
        o.loginDropdown.hover(function () {
            isInsideLogin = true;
        }, function () {
            isInsideLogin = false;
        });

        $('body').mouseup(function () {
            if (!isInsideLogin) {
                o.loginDropdown.fadeOut('slow', function () { isLoginShowing = false; ClearForm(); });
            }
        });
    }

    function SetLoginActions(username) {
        var menu = '<span>Logged in as ' + username + '</span> |<span><a href="' + o.accountUrl + '" alt="Account">Account</a></span> |<span><a href="' + o.logOffUrl + '" alt="Log off">Log Off</a></span>';
        o.loginDropdown.fadeOut('slow', function () { isLoginShowing = false; ClearForm(); o.loginActions.html(menu); });
    }

    return {
        init: function (options) {
            o = options;
            Setup();
        }
    }
} ();





