function isBlank(A){
    return A.replace(/\s+/g, "").length == 0
}
(function(B){
    function A(){
        var F = jQuery("#signup-form");
        var E = F.find("input, password");
        var D = F.hasClass("validated-by-backend");
        F.find("#user_name").isSignupFormField({
            validateWith: function(G){
				var len = G.length;
				if(len > 6 || len < 2){
					return _("只支持中文,2-6个汉字")
				}
				return isBlank(G) ? _("只支持中文,2-6个汉字") : true
				
            }
        });
        F.find("#user_screen_name").isScreenNameField();
        F.find("#user_email").isEmailField();
        F.find("#user_user_password").isSignupFormField({
            allowInput: /[^\s]/
        }).focus(function(){
            B(this).trigger("show-password-meter")
        }).isPasswordStrengthField(".password-meter", {
            username: function(){
                return F.find("#user_screen_name").val()
            }
        });
        if (D) {
            E.trigger("align-validation")
        }
        var C = F.find(".fieldWithErrors:eq(0) input");
        if (C.length > 0) {
            C.focus()
        }
        else {
            F.find("#user_email").focus()
        }
		//$('#user_screen_name_info').show();
    }
    B(document).ready(A)
})(jQuery);
(function(A){
    A.fn.isEmailField = function(){
        return this.each(function(){
            var C = /.+@.+\..+/;
            var F = A(this);
            var D = A("#email_info");
            var G = A("#avail_email_check_indicator");
            function E(){
                F.trigger("show-info");
                D.hide();
                G.show()
            }
            function H(){
                D.show();
                G.hide()
            }
            function B(){
                var I = F.val();
                if (I.match(C)) {
                    jQuery.ajax({
                        type: "GET",
                        url: "/k/ajax/email_available.php",
                        data: {
                            email: I
                        },
                        dataType: "json",
                        beforeSend: function(){
                            E()
                        },
                        success: function(J){
                            var K = J.msg;
                            if (J.valid) {
								$(':hidden[name=isok_mail]').val(1);	
                                F.trigger("is-valid")
                            }
                            else {
								if(J.msg =='Email已经被占用。'){									
									$(':hidden[name=isok_mail]').val(2);									
								}
                                F.trigger("is-invalid", J.msg)
                            }
                        },
                        beforeSend: null,
                        complete: function(){
                            H()
                        }
                    })
                }
                else {
								
					$(':hidden[name=isok_mail]').val(2);	
                    F.trigger("is-invalid", _("邮箱格式有误！"))
                }
            }
            F.isSignupFormField({
                validateWith: function(I){
                    if (isBlank(I)) {
                        return _("请输入邮件地址！")
                    }
                    else {
                        if (!I.match(C)) {
                            return _("邮箱格式有误！")
                        }
                    }
                },
                allowInput: /[^\s]/
            });
            F.blur(function(I){
                if (F.val() == "") {
                    F.trigger("show-info");
                    F.parents("tr:eq(0)").find(".label-box.info").hide();
                    F.removeClass("with-box")
                }
                else {
                    B()
                }
            });
            F.bind("value-changed", B);
            F.bind("custom-validate", B)
        })
    }
})(jQuery);
(function(A){
    A.fn.isScreenNameField = function(){
        return this.each(function(){
            var M = A(this);
            var F = A("#signup_username_url");
            var E = A("#screen_name_info");
            var D = A("#avail_screenname_check_indicator");
            var O;
            var C;
            var I;
            var N = M.val();
            var G = N;
            var H = N != "";
            var Q = /[a-zA-Z0-9_]/;
            function K(){
                if (H) {
                    F.html(M.val())
                }
            }
            function L(){
                M.trigger("show-info");
                E.hide();
                D.show()
            }
            function B(){
                E.show();
                D.hide()
            }
            function P(){
                G = O;
                jQuery.ajax({
                    type: "GET",
                    url: "/k/ajax/username_available.php",
                    data: {
                        username: O
                    },
                    dataType: "json",
                    success: function(R){
                        if (C) {
                            var S = R.msg;
                            if (R.valid) {
								$(':hidden[name=isok_uname]').val(1);				
                                M.trigger("is-valid");
                                F.removeClass("invalid").addClass("valid")
                            }
                            else {
								if(R.msg =='用户名已经被占用'){									
									$(':hidden[name=isok_uname]').val(2);									
								}
                                M.trigger("is-invalid", R.msg);
                                F.addClass("invalid").removeClass("valid")
                            }
                        }else{
								$(':hidden[name=isok_uname]').val(2);
						        M.trigger("is-invalid", R.msg);
                                F.addClass("invalid").removeClass("valid")
						}
                    },
                    beforeSend: null,
                    complete: function(){
                        clearTimeout(twttr.timeouts.availabilityTimeout);
                        B()
                    }
                })
            }
            function J(R){
                O = M.val();
                clearTimeout(twttr.timeouts.availabilityTimeout);
                C = O.match(Q);
                if (!C) {
                    G = O;
                    B();
                    return
                }
                if (O == G) {
                    return
                }
                L();
                twttr.timeouts.availabilityTimeout = setTimeout(P, 2000)
            }
            M.isSignupFormField({
                validateWith: function(R){
                    if (isBlank(R)) {
                        return _("请输入个人网址")
                    }
                    else {
                        P()
                    }
                },
                allowInput: Q
            });
            M.keyup(function(R){
                if (jQuery.inArray(R.keyCode, [16, 17, 18, 20, 27, 33, 34, 35, 37, 38, 39, 40, 144]) == -1) {
                    if (M.val() != "") {
                        H = true
                    }
                    else {
                        M.trigger("show-info")
                    }
                    K();
                    J()
                }
            });
            M.bind("value-changed", P);
            M.bind("custom-validate", P)
        })
    }
})(jQuery);
(function(A){
    A.fn.isSignupFormField = function(B){
        return this.each(function(){
            var K = A(this);
            var U = K.parents("tr:eq(0)");			
            var T = this;
            var F = U.find(".label-box");
            var D = U.find(".label-box.info");
            var V = U.find(".label-box.good");
            var L = U.find(".label-box.error");
            var E = D;
            var Q = false;
            var G = K.val();
            var J = G != "";
            var I = K.parent("div.fieldWithErrors").length > 0;
            var P = B.validateWith;
            var N = B.allowInput;
            function M(){
                E.show();
                K.addClass("with-box")
            }
            function X(){
                if (!Q) {
                    E.hide();
                    K.removeClass("with-box")
                }
            }
            function W(a){
                E.hide();
                E = a;
                M()
            }
            function H(){
                var a = K.val();
                J = (a != G);
                if (J) {
                    I = false
                }
                G = a;
                return J
            }
            function R(){
                Q = true;
                W(D)
            }
            function Z(){
                Q = true;
                W(L)
            }
            function Y(){
                Q = true;
                W(V)
            }
            function S(a){
                return P ? P(a) : true
            }
            function O(){
                if (I) {
                    K.trigger("is-invalid")
                }
                else {
                    if (J) {
                        var a = S(K.val());
                        if (a === true) {
                            K.trigger("is-valid")
                        }
                        else {
                            if (typeof(a) == "string") {
                                K.trigger("is-invalid", a)
                            }
                        }
                    }
                }
            }
            function C(){
                if (I) {
                    K.trigger("is-invalid")
                }
                else {
                    K.trigger("is-valid")
                }
            }
            K.focus(M);
            K.blur(function(){
                if (H()) {
                    K.trigger("value-changed");
                    O()
                }
                X()
            });
            K.bind("is-valid", Y);
            K.bind("is-invalid", Z);
            K.bind("show-info", R);
            K.bind("validate", O);
            K.bind("align-validation", C);
            K.bind("is-invalid", function(b, a){
                if (a) {
                    L.html(a)
                }
            });
            if (N) {
                K.keypress(function(b){
                    var a = b.which;
                    var c = String.fromCharCode(a);
                    return !!(a == 0 || a == 8 || a == 9 || a == 13 || c.match(N))
                })
            }
            F.hide()
        })
    }
})(jQuery);
