$(function(){
	validate();
});

jQuery.validator.addMethod("checkUserInfo",function(value, element,param){ 
	if(this.optional(element)){
		return true;
	}
	var cached = this.valueCache[element.name];
	if(!cached){
		this.valueCache[element.name] = cached = {
			old: null,
			valid: true,
			message: this.defaultMessage(element,"checkUserInfo")
		};
	}
	this.settings.messages[element.name].remote = typeof cached.message == "function" ? cached.message(value) : cached.message;
	if( cached.old !== value){
		cached.old = value;
		var validator = this;
		this.startRequest();
		jQuery('.check[@for='+element.name+']').show();
		jQuery.ajax({
            url: param,
            mode: "abort",
            port: "validate",
            dataType: "json",
            method:'post',
            data: {account: value},
            success: function(response) {
                if ( response.has_error ) {
                    var errors = {};
                    errors[element.name] =  validator.defaultMessage( element, "checkUserInfo" );
                    validator.showErrors(errors);
                }
                cached.valid = !response.has_error;
                validator.pendingRequest--;
                jQuery('.check[@for='+element.name+']').hide();
            }
        });
		return true;
	}
	return cached.valid;
}, "*该Email已经注册过");

function validate(){
	$('#user_register').validate({
		rules:{
			account:{
				required:true,
				email: true,
				checkUserInfo:'/app/greare/account/check_account'
			},
			username:{
				required:true,
				checkUserInfo:'/app/greare/account/check_username'
			},
			password:{
				required:true,
				minLength:6
			}
		},
		messages:{
			account:{
				required:"留个邮箱地址吧",
				email:'请输入正确的email格式',
				checkUserInfo:'该Email已经注册过'
			},
			username:{
				required:"用户名不能为空",
				checkUserInfo:'这个名字已经被注册过了'
			},
			password:{
				required:'设置一个密码吧',
				minLength:'密码设置的太短'
			}
			
		},
		submitHandler: function(form) {
			try{
				form.submit();
			}catch(e){
				alert(e);
			}
			return false;
		}
	});
}