﻿
if (!jQuery.fn.login) {

    (function($){
    
        $.fn.login = function(options){
        
            function SendError(){
                if (EndWaitBar_) {
                    EndWaitBar_();
                    EndWaitBar_ = null;
                }
                
                $.prompt("登陆失败，请重试！", {
                    callback: function(v, m){
                        PThis_.find("#username").val("");
                        PThis_.find("#password").val("");
                        
                        ChangeVerifyImage();
                        
                        PThis_.find("#username").focus();
                        return true;
                    }
                });
            }
            
            function AfterSend(response, statusText){
                if (EndWaitBar_) {
                    EndWaitBar_();
                    EndWaitBar_ = null;
                }
                
                if (response.retCode == -1) 
                    $.prompt("验证码错误", {
                        callback: function(v, m){
                            ChangeVerifyImage();
                            PThis_.find("#verifystring").focus();
                            return true;
                        }
                    });
                else if (response.retCode == -2) 
                    $.prompt("用户名或密码错误", {
                        callback: function(v, m){
                            PThis_.find("#username").val("");
                            PThis_.find("#password").val("");
                            
                            ChangeVerifyImage();
                            
                            PThis_.find("#username").focus();
                            return true;
                        }
                    });
                else 
                    location = response.userURL;
                
                DebugMsg("response " + Log.dumpObject(response) + " statusText " + statusText);
            };
            
            function BeforSend(formData, jqForm, options){
                if (!EndWaitBar_) 
                    EndWaitBar_ = $.waitforbar();
                
                DebugMsg("formData " + Log.dumpObject(formData));
                return true;
            }
            
            function ChangeVerifyImage(){
                var newsrc = "verifyimage.action?verifyId=userlogin&rnd=" + Math.random();
                
                PThis_.find("#verifyimage").attr("src", newsrc);
                PThis_.find("#verifystring").val("");
            }
            
            this.Init = function(opts){
                DebugMsg("login Init: ");
                
                var settings = $.extend({}, DefaultSettings_, opts);
                
                this.validate(settings);
                
                this.find("#verifyimage").click(ChangeVerifyImage);
                this.find("#changeverifyimage").click(ChangeVerifyImage);
                
                this.find("#username").val("");
                this.find("#password").val("");
                this.find("#verifystring").val("");
                
                this.find("#username").focus();
                
                return this;
            };
            
            var DefaultSettings_ = {
                event: "blur",
                debug: false,
                rules: {
                    username: {
                        required: true,
                        rangelength: [2, 11]
                    },
                    password: {
                        required: true,
                        rangelength: [4, 11]
                    },
                    verifystring: {
                        required: true
                    }
                },
                submitHandler: function(form){
                    $(form).ajaxSubmit({
                        beforeSubmit: BeforSend,
                        success: AfterSend,
                        error: SendError,
                        dataType: "json"
                    });
                }
            };
            
            var EndWaitBar_ = null;
            var PasswordOld_ = "";
            
            var PThis_ = this;
            
            this.Init(options);
            return this;
        };
    })(jQuery);
}
