var vReg = {
	encoding:'utf-8',
	author:'zhangxuemin',
	date:'2009.3.11',
	validate: null
};

var img_wrong = "/images/icon_wrong.gif";
var img_right = "/images/icon_right.gif";
var img_icon = "/images/icon_info.gif";
var img_wait = "/images/0005.gif";
(function(){

	//注册用户：onfocus()事件  对象取得焦点时
	vReg.onregfocus = function(id,info_id){
		var value = JQ.trim(JQ('#'+id).val());
		JQ('#'+id).addClass('focus');
		if(value == ""){
			if(id == 'username'){
					//用户名
				JQ('#'+info_id).html("<img src='"+img_icon+"' align='absmiddle' /> 3-16个字符， 请用英文小写、汉字、数字、下划线，下划线不能在末尾.");				
			}else if(id == 'password'){
					//密码
				JQ('#'+info_id).html("<img src='"+img_icon+"' align='absmiddle' /> 密码长度是6-16位之间的字符，且字母区分大小写.");				
			}else if(id == 'repeatpwd'){
					//重复密码			
			}else if(id == 'email'){
					//邮箱
				JQ('#'+info_id).html("<img src='"+img_icon+"' align='absmiddle' /> 例如:yourname@hkyoula.com ");
			}else if(id == 'validate'){
					//验证码
				JQ('#'+info_id).html("<img src='"+img_icon+"' align='absmiddle' /> 请输入验证码. ");
			}
		}	
	};

	//注册用户：onblur()事件   当对象失去焦点
	vReg.onregblur = function(id,info_id){
		JQ('#'+info_id).html("<img src='"+img_wait+"' align='absmiddle' /> ");
		var value = JQ.trim(JQ('#'+id).val());
		JQ('#'+id).val(value);
		if(id == 'username'){
				//会员名
			if(value == ''){
				JQ('#'+info_id).html('');
				vReg.validate[0] = false;
			}else{
				checkusername(value, info_id);
			}
		}else if(id == 'email'){
				//邮箱
			if(value == ''){
				JQ('#'+info_id).html('');
				vReg.validate[1] = false;
			}else{
				checkemail(value, info_id);
			}
		}else if(id == 'password'){
			if(value == ''){
				JQ('#'+info_id).html('');
				vReg.validate[2] = false;
			}else{
				checkpassword(value, info_id);
			}			
			if(JQ('#repeatpwd').val().length!=0){
				if(JQ('#repeatpwd').val() != value){
					JQ('#repeatpwd_info').html("<img src='"+img_wrong+"' align='absmiddle' /> 两次输入的密码不一致，请重新输入 ");
					vReg.validate[3] = false;					
				}else {
					JQ('#repeatpwd_info').html("<img src='"+img_right+"' align='absmiddle' /> ");
					vReg.validate[3] = true;					
				}
			}
		}else if(id == 'repeatpwd'){
			if(value == ''){
				JQ('#'+info_id).html('');
				vReg.validate[3] = false;				
			}else if(JQ('#password').val() != value){
					JQ('#repeatpwd_info').html("<img src='"+img_wrong+"' align='absmiddle' /> 两次输入的密码不一致，请重新输入 ");
					vReg.validate[3] = false;					
			}else {
				JQ('#'+info_id).html("<img src='"+img_right+"' align='absmiddle' /> ");
				vReg.validate[3] = true;				
			}
		}else if(id == 'validate'){
			//验证码
			if( value=="" ){
				JQ('#'+info_id).html('');
				vReg.validate[4] = false;				
			}else{
				JQ('#'+info_id).html('&nbsp;');
				vReg.validate[4] = true;				
			}
		}
	};
	
	//密码验证
	checkpassword = function(value, id){
		if (value.length < 6 || value.length > 16) {
			JQ('#'+id).html("<img src='"+img_wrong+"' align='absmiddle' /> 密码长度需要在6-16位之间，请重新输入");
			vReg.validate[2] = false;			
		}else{
			var flag = true;
            var errmsg = "";
            for (var i = 0; i < value.length; i++) {
                var temp = value.charCodeAt(i);
                if(temp == 32) {
                    flag = false;
					errmsg = "密码中不能包含空格，请重新输入";
                    break;
                } else if (temp == 38) {
					flag = false;
					errmsg = "密码中不能包含&，请重新输入";
					break;
				}
            }
            if (flag) {
				JQ('#'+id).html("<img src='"+img_right+"' align='absmiddle' /> ");
				vReg.validate[2] = true;				
			} else {
				JQ('#'+id).html("<img src='"+img_wrong+"' align='absmiddle' /> "+errmsg);
				vReg.validate[2] = false;			
			}
		}
	};	
	
	//邮箱验证
	checkemail = function(value, id){		
		var re2 = /[ａ-ｚＡ-Ｚ０-９！＠＃￥％＾＆＊（）＿＋｛｝［］｜：＂＇；．，／？＜＞｀～　]/;
		if (re2.test(value)) {
			JQ('#'+id).html("<img src='"+img_wrong+"' align='absmiddle' /> 邮箱不能用全角");			
			vReg.validate[1] = false;			
		}else{
			var re = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
			if(re.test(value)){			
				searchemail(value);	
			}else{
				JQ('#'+id).html("<img src='"+img_wrong+"' align='absmiddle' /> 邮箱地址格式不正确");
				vReg.validate[1] = false;				
			}
		}
	};
	
	//用户名验证
	checkusername = function(value, id){
		if(/\s/.test(value)){ 
			JQ('#'+id).html("<img src='"+img_wrong+"' align='absmiddle' /> 会员名不能包含空格，请重新输入！   ");
			vReg.validate[0] = false;
			return ;		
		}		
		var re2 = /[ａ-ｚＡ-Ｚ０-９！＠＃￥％＾＆＊（）＿＋｛｝［］｜：＂＇；．，／？＜＞｀～　]/;
		if (re2.test(value)) {
			JQ('#'+id).html("<img src='"+img_wrong+"' align='absmiddle' /> 会员名不能用全角");
			vReg.validate[0] = false;
			return ;
		}		
		var re = /^[a-z \u4E00-\u9FA5\uF900-\uFA2D]+[a-zA-Z\u4E00-\u9FA5\uF900-\uFA2D 0-9\-\_]*$/;
		if (re.test(value)) {
			if(value.length >= 3 && value.length <= 16){			
				searchuser(value);
			}else{
				JQ('#'+id).html("<img src='"+img_wrong+"' align='absmiddle' />  会员名长度需要在3-16位之间，请重新输入!   ");
				vReg.validate[0] = false;				
			}	
		}
		else{
			var code1 = value.charCodeAt(0);
			if (code1 >= 97 && code1 <= 122) {
				JQ('#'+id).html("<img src='"+img_wrong+"' align='absmiddle' />  只能由小写字母、汉字、数字、横线和下划线组成，请重新输入");
			}else {
				JQ('#'+id).html("<img src='"+img_wrong+"' align='absmiddle' /> 用户名需要以小写字母或者汉字开头，请重新输入");
			}
			vReg.validate[0] = false;			
		}	
	};
	
	 var xmlHttp = false;	 
	 //ajax 检查用户名是否可用
	 searchuser = function(username){	 	
	 	var url = encodeURI("/usermanage.do?method=checkusername&username="+username);
	 	xmlHttp = zXmlHttp.createRequest();
	 	xmlHttp.open("post",url,true);
	 	xmlHttp.onreadystatechange = getUername;
	 	xmlHttp.send(null);
	 };	 
     getUername = function(){     
      	if(xmlHttp.readyState == 4 && xmlHttp.status == 200){
      		var getValue = xmlHttp.responseText;
      		if(getValue != null && getValue == "entity"){
      			JQ('#username_info').html("<img src='"+img_wrong+"' align='absmiddle' /> 对不起，该用户名已经被注册！   ");
				vReg.validate[0] = false;
      		}
      		else if(getValue == "nonentity"){
				JQ('#username_info').html("<img src='"+img_right+"' align='absmiddle' /> ");
				vReg.validate[0] = true;
			}      		
		}
      } ;    
      
      //ajax 检查email是否可用
     searchemail = function(email){
        var url = "/usermanage.do?method=checkemail&email="+email;
	   	xmlHttp = zXmlHttp.createRequest();
	    xmlHttp.open("post",url,true);
	    xmlHttp.onreadystatechange = getEmail;
	    xmlHttp.send(null);
     };      
     getEmail = function(){
      	if(xmlHttp.readyState == 4 && xmlHttp.status == 200){
      		var getValue = xmlHttp.responseText;
      		if(getValue == "entity"){      			
      			JQ('#email_info').html("<img src='"+img_wrong+"' align='absmiddle' /> 对不起，该邮箱已经被注册！   ");
				vReg.validate[1] = false;
			}else{
				JQ('#email_info').html("<img src='"+img_right+"' align='absmiddle' />  ");
				vReg.validate[1] = true;
				return true;
			}   
		};
      }
            
	//更改验证码图片
	vReg.changeVCode = function(picid){
		var d = new Date();
		document.getElementById(picid).src = '/image?tm='+d.getTime();
	}	
	
	//注册表单提交验证
	vReg.regSubmit = function(item){

		try{ 
			if(!vReg.validate[0]){
					JQ("#username").focus();
				return false;			
			}else if(!vReg.validate[2]){		
					JQ('#password').focus();
				return false;
			}else if(!vReg.validate[3]){				
				if(JQ('#repeatpwd').val() == "")
					JQ('#repeatpwd_info').html("<img src='"+img_wrong+"' align='absmiddle' /> 请再次输入密码！   ");
				else
					JQ('#repeatpwd').focus();
				return false;
			}else if(!vReg.validate[1]){
					JQ('#email').focus();
				return false;
			}else if(!vReg.validate[4]){
					JQ('#validate').focus();
				return false;
			}
					else if(!(document.getElementById('shopagree').checked))
			{
				alert("您必须同意服务条款后才能注册！");
				return false;
			}
			else{
				var url = "/usermanage.do?method=regist";
				document.forms['userForm'].action = url ;
				document.forms['userForm'].target ="" ;
				document.forms['userForm'].submit();
				return true;
			}			
		}catch(e){
			return false;
		}
	};

})();

