(function($) {

    $.register = $.extend({
        loginScript: function(json) {
            var protocol = (json.useSSL) ? "https://" : "http://";
            var virtualPath = json.virtualPath;

            $(document).ready(function() {                
                $(':checkbox').skinInput();
                $drawer = $('#drawerWrapper').drawer();                
                var $email = $('#email');
                $email[0].focus();
                var $password = $('#password');
                var $rememberMe = $('#rememberMe');
                var $loginBtn = $('#loginBtn');

                var $loginForm = $('#loginForm').submit(function() {
                    if ($loginBtn.hasClass("loading")) return false;
                    var errorMsg = "";
                    var email = $email.val().trim();
                    var password = $password.val().trim();
                    if (email == '') {
                        errorMsg += "Please enter your email.<br/>";
                    }
                    else {
                        if (email.match(/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/) == null) {
                            errorMsg += "The email entered is not valid.<br/>";
                        }
                    }
                    if (password == '') {
                        errorMsg += "Please enter your password.<br/>";
                    }
                    if (errorMsg.length == 0) {
                        $loginBtn.addClass("loading");
                        $.post($loginForm.attr("action"), $loginForm.serialize(), function(json) {
                            if (json.loggedIn) {
                                window.location = json.returnUrl;
                            }
                            else {
                                $loginBtn.removeClass("loading");
                                $drawer.drawer("showError", json.msg, 8000);
                            }
                        }, "json");
                    }
                    else {
                        $drawer.drawer("showError", errorMsg.substr(0, errorMsg.length - 5), 8000);
                    }
                    return false;
                });

                //
                // forgot password dialog
                //
                var $dialog_forgotPassword = $('#dialog_forgotPassword').dialog({
                    width: 300,
                    minHeight: 50,
                    autoOpen: false,
                    modal: true
                });
                $('#forgotPassword').click(function() {
                    $dialog_forgotPassword.dialog("open");
                    return false;
                });
                var $fp_email = $dialog_forgotPassword.find('#fp_email');
                var $forgotPasswordForm = $dialog_forgotPassword.find('form').submit(function() {
                    var $btn = $dialog_forgotPassword.find(':submit');
                    if ($btn.hasClass("loading")) return false;
                    var email = $fp_email.val().trim();
                    if (email.match(/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/) == null) {
                        $drawer.drawer("showError", "The email entered is not valid", 8000);
                    }
                    else {
                        $btn.addClass("loading");
                        $.getJSON($forgotPasswordForm.attr("action"), $forgotPasswordForm.serialize(), function(json) {
                            $btn.removeClass("loading");
                            if (json.error) {
                                $drawer.drawer("showError", json.msg, 8000);
                            }
                            else {
                                $dialog_forgotPassword.dialog("close");
                                $drawer.drawer("showInfo", json.msg, 8000);
                            }
                        });
                    }
                    return false;
                });
                $('#fp_cancel').click(function() {
                    $dialog_forgotPassword.dialog("close");
                });
            });
        }
    }, $.register);

})(jQuery);