/**
* author licheng 09-06-30
* 会员注册验证以及提交
*/
// 导入 swato-form 说明类
//importjs("/script/swato/swato-form.js");
/** 注册验证控件*/
//Validator.Setup({Name : 'regForm'});
/** swato 引擎对象*/
var engine;  
/** swato 窗体对象*/
var regForm;
/** flag 校验标志*/
//var flag = false;
var regflag = false;
var emailflag = false;
var pwdflag = false;
var rpwdflag = false;
var mobileflag = false;
//提交资料按钮标记
var btnSave = false;

/**
 * 声明 window.onload 方法
 */
function initCurr() {
	// 加载 js 日志
	//getJSLogger();
	regForm = new Swato.Form("regForm");
	
	getCode('checkCodeImage2');
	
	//填写注册信息时效果
	aboutRegInfo();
}

//保存初步注册信息

function save(){
	btnSave = true;
	
	if(!document.getElementById("agree").checked){
		jAlert("必须阅读并同意相关注册协议才能注册");
		return;
	}		
	
	var f;//总标志
	
	//用flag标志的话检查用户名和邮箱的回调函数时间有先后问题，有时会出错
	//检查用户名是否为空
	var reNameObj = document.getElementById("rgREGISTER_NAME");
	checkRegName(reNameObj);
	//f = flag;
	
    //检查邮箱是否为空
    var emailObj = document.getElementById("EMAIL");
    checkEmail(emailObj)   
	//f = f && flag;
	
	var pwdObj = document.getElementById("rgPASSWORD");
	checkPwd(pwdObj);
	//f = f && flag;	

	var rpwdObj = document.getElementById("rpassword");
	checkRPwd(rpwdObj);
	//f = f && flag;	
	
	var mobObj = document.getElementById("MOBILE");
	checkMobile(mobObj);
		
	/*
	f = regflag && emailflag && pwdflag && rpwdflag && mobileflag;
	jAlert(regflag + "" + emailflag + "" + ""+pwdflag + ""+rpwdflag + ""+mobileflag);
	if (!f) {
		return;
	}
	alert("aa");
	//提交到服务器处理
	var detail = regForm.toJSON();
	engine.call("customerInfoAction.save",[detail],reCallBack);
	document.getElementById("register_button").style.display = "block";*/
}

//资料输入后,执行回调函数检测后执行此函数,如资料全部验证通过后,点击提交按钮才提交到服务器
//提交注册资料到服务器处理
function onSubmitRegisterInfo(){
	f = regflag && emailflag && pwdflag && rpwdflag && mobileflag;	
	if (!f) {
		return;
	}
	
	//提交到服务器处理
	if(btnSave){
		var detail = regForm.toJSON();
		engine.call("customerInfoAction.save",[detail],reCallBack);
		document.getElementById("register_button").style.display = "block";
	}
	btnSave = false;
}

//回调处理对象
var reCallBack = {
	//操作成功处理函数
	onSuccess:function(r){
		if(r=="true"){
			jSuccess('注册成功！请到注册邮箱进行激活！<br>感谢您的注册！马上进入会员中心。','注册成功',function(){
				window.location.href = "checkCustomerLoginState.check.do?returnUrl=customerInfoAction.custCenter.do&listIndex=8";
			});
		}else if(r == "0x"){
			//document.getElementById("authCodeMessage").innerHTML = "<font color='red'>验证码错误，请重新填写！</font>";
			//getCode('checkCodeImage');
			//document.getElementById("PASSWORD").value = "";
			//document.getElementById("rpassword").value = "";
			jAlert('验证码错误，请重新填写！');
			document.getElementById("authCode").focus();
			document.getElementById("authCode").value = "";
			getCode('checkCodeImage2','reg');
			
			document.getElementById("register_button").style.display = "none";
			return;
		}else{
			//jAlert(r);
			//getCode('checkCodeImage');
		}
	},
	//操作失败时的处理函数
	onError:function(e){
		jAlert("错误:"+e);
	}
};

/**
 * 提交验证
 * @scope private
 */		
function checkForm(){
	
     // 清除掉form卷标数据两边的空格
    trimForm('regForm');
	
    // 验证窗体信息是否正确
    if( Validator.Validate($("regForm"))){
        // 验证是否重复提交
        return true;
        
    }else{
        return false;
    }
}

//检测是否有中文，若有，字符串长度就加中文个数
String.prototype.getBytes = function() {    
    var cArr = this.match(/[^\x00-\xff]/ig);    
    return this.length + (cArr == null ? 0 : cArr.length);    
}

//检测用户名是否可用
function checkRegName(obj){
    var regName = obj.value;
    
    var regM = document.getElementById("regNameMessage");
    
    if(regName.trim() == ""){
		regM.innerHTML = "<font color='red'>会员名不能为空！</font>";
		document.getElementById("regNImgEro").style.display = "inline";
		document.getElementById("regNImgSuc").style.display = "none";
		regflag = false;
		return;
    }
    
    //驗證用戶輸入的資料長度是否符合要求
    //var strLength = new RegExp("^.{4,18}$");
    //if(strLength.test(regName)){
  	if(regName.getBytes() <= 18 && regName.getBytes() >= 4){
	    //驗證用戶輸入的資料格式是否符合要求
	    //var reg = new RegExp("^[a-zA-Z][a-z0-9A-Z_]{5,18}$");
	    var reg = new RegExp("[ ,\\`,\\~,\\!,\\@,\#,\\$,\\%,\\^,\\+,\\*,\\&,\\\\,\\/,\\?,\\|,\\:,\\.,\\<,\\>,\\{,\\},\\(,\\),\\',\\;,\\=,\"]");
	    if(!reg.test(regName)){
			var json = {
				REGISTER_NAME:regName
			};
			engine.call("customerInfoAction.checkRegName",json,retnVal);
		}else{
			regM.innerHTML = "<font color='red'>会员名格式有误！不能含特殊字符，如：, ` ~ ! @ # $ % ^ + & * \\ / ? | : . < > {} () [] = \" 等</font>";
			document.getElementById("regNImgEro").style.display = "inline";
			document.getElementById("regNImgSuc").style.display = "none";
			regflag = false;
			return;
		}
	}else{
		regM.innerHTML = "<font color='red'>会员名长度有误！</font>";
		document.getElementById("regNImgEro").style.display = "inline";
		document.getElementById("regNImgSuc").style.display = "none";
		regflag = false;
		return;
	}
}
//用戶名檢測返回資料
var retnVal = {
	//操作成功處理函數
	onSuccess:function(r){
		if(r == 2){
			document.getElementById("regNameMessage").innerHTML = "<font color='red'>会员名已存在！</font>";
			document.getElementById("regNImgEro").style.display = "inline";
			document.getElementById("regNImgSuc").style.display = "none";
			regflag = false;
		}else if(r == 3){
			document.getElementById("regNameMessage").innerHTML = "<font color='red'>会员名校验出错，请与管理员联系！</font>";
			document.getElementById("regNImgEro").style.display = "inline";
			document.getElementById("regNImgSuc").style.display = "none";
			regflag = false;
		}else {
			document.getElementById("regNImgEro").style.display = "none";
			document.getElementById("regNImgSuc").style.display = "inline";
			document.getElementById("regNameMessage").innerHTML = "";			
			regflag = true;
			onSubmitRegisterInfo();
		}
	},
	//操作失敗時的處理函數
	onError:function(e){
		jAlert("错误:"+e);
		regflag = false;
	}
};

//验证手机格式
function checkMobile(obj){
	var mobile = obj.value;
    var eMsg = document.getElementById("mobileMessage");
    
    if(obj.value.trim() == ""){
		eMsg.innerHTML = "<font color='red'>手机号码不能为空！</font>";
		document.getElementById("mobileImgEro").style.display = "inline";
		document.getElementById("mobileImgSuc").style.display = "none";
		mobileflag = false;
		return;
    }
     
    //驗證用戶輸入的資料格式是否符合要求
    //var reg = new RegExp("^(13|15)[0-9]{9}$");
    var reg = new RegExp("^(\\d{11})$");
    if(reg.test(mobile)){
       /** 
		engine.call("customerInfoAction.checkMobile",[mobile],{
			onSuccess:function(r){ 
				if(r && r.length == 0){
					document.getElementById("mobileImgEro").style.display = "none";
					document.getElementById("mobileImgSuc").style.display = "inline";
					document.getElementById("mobileMessage").innerHTML = "";			
					mobileflag = true;
				}else{
					document.getElementById("mobileImgEro").style.display = "inline";
					document.getElementById("mobileImgSuc").style.display = "none";
					document.getElementById("mobileMessage").innerHTML = "<font color='red'>手机号码已存在，请重试!</font>";			
					mobileflag = false;
				}
			},
			onError:function(e){
				jAlert("错误:"+e);
		        mobileflag = false;
			}
		});
		**/
		document.getElementById("mobileImgEro").style.display = "none";
		document.getElementById("mobileImgSuc").style.display = "inline";
		document.getElementById("mobileMessage").innerHTML = "";
		mobileflag = true;
	}else{
		eMsg.innerHTML = "<font color='red'>手机号码格式不正确！</font>";
		document.getElementById("mobileImgEro").style.display = "inline";
		document.getElementById("mobileImgSuc").style.display = "none";
		mobileflag = false;
		return;
	}
}

//验证Email
function checkEmail(obj){
	var email = obj.value;
    var eMsg = document.getElementById("emailMessage");
    
    if(obj.value.trim() == ""){
		eMsg.innerHTML = "<font color='red'>电子邮箱不能为空！</font>";
		document.getElementById("emImgEro").style.display = "inline";
		document.getElementById("emImgSuc").style.display = "none";
		emailflag = false;
		return;
    }
     //驗證用戶輸入的郵箱格式是否符合要求
    var str = new RegExp(".+@.+");   //.+@.+表示@前后至少有一个字符，.表示字符，+表示至少有一个   
    if(str.test(email)){
    //驗證用戶輸入的資料格式是否符合要求
	    var reg = new RegExp("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
	    if(reg.test(email)){
			var json = {
				EMAIL:email
			};	
			engine.call("customerInfoAction.checkEmail",json,retnVal1);
		}else{
			eMsg.innerHTML = "<font color='red'>电子邮箱格式有误！</font>";
			document.getElementById("emImgEro").style.display = "inline";
			document.getElementById("emImgSuc").style.display = "none";
			emailflag = false;
			return;
		}
	}else{
			eMsg.innerHTML = "<font color='red'>电子邮箱格式有误！</font>";
			document.getElementById("emImgEro").style.display = "inline";
			document.getElementById("emImgSuc").style.display = "none";
			emailflag = false;
			return;
	}
}

//郵箱檢測返回資料
var retnVal1 = {
	//操作成功處理函數
	onSuccess:function(r){
		if(r == 2){
			document.getElementById("emailMessage").innerHTML = "<font color='red'>电子邮箱已存在！</font>";
			document.getElementById("emImgEro").style.display = "inline";
			document.getElementById("emImgSuc").style.display = "none";
			emailflag = false;			
		}else if(r == 3){
			document.getElementById("emailMessage").innerHTML = "<font color='red'>电子邮件校验出错，请与管理员联系</font>";
			document.getElementById("emImgEro").style.display = "inline";
			document.getElementById("emImgSuc").style.display = "none";
			emailflag = false;
		} else {
			document.getElementById("emImgEro").style.display = "none";
			document.getElementById("emImgSuc").style.display = "inline";
			document.getElementById("emailMessage").innerHTML = "";			
			emailflag = true;
			onSubmitRegisterInfo();
		} 
	},
	//操作失敗時的處理函數
	onError:function(e){
		jAlert("错误:"+e);
		emailflag = false;
	}
};

//验证密码
function checkPwd(obj){
	var rpwd = document.getElementById("rpassword").value;
	var pwdsRegExp = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,18}$");
	if(obj.value.trim() != ""){
		if(obj.value.length < 6 || obj.value.length >18){
			obj.value = "";
			document.getElementById("pwMessage").innerHTML = "<font color='red'>密码长度只能在6-18位之间！</font>";
			document.getElementById("pwImgEro").style.display = "inline";
			document.getElementById("pwImgSuc").style.display = "none";
			pwdflag = false;
		}else if(!pwdsRegExp.test(obj.value.trim())){
			obj.value = "";
			document.getElementById("pwMessage").innerHTML = "<font color='red'>密码必须是字母与数字的组合，并且以字母开头！</font>";
			document.getElementById("pwImgEro").style.display = "inline";
			document.getElementById("pwImgSuc").style.display = "none";
			pwdflag = false;
		}else if(rpwd != "" && rpwd != obj.value){
			obj.value = "";
			document.getElementById("pwMessage").innerHTML = "<font color='red'>两次密码输入不一致！</font>";
			document.getElementById("pwImgEro").style.display = "inline";
			document.getElementById("pwImgSuc").style.display = "none";
			pwdflag = false;
		} else {
			document.getElementById("pwImgEro").style.display = "none";
			document.getElementById("pwImgSuc").style.display = "inline";
			document.getElementById("pwMessage").innerHTML = "";
			pwdflag = true;
		}
	}else{
		obj.value = "";
		document.getElementById("pwMessage").innerHTML = "<font color='red'>密码不能为空！</font>";
		document.getElementById("pwImgEro").style.display = "inline";
		document.getElementById("pwImgSuc").style.display = "none";
		pwdflag = false;
	}
	return ;
}

//验证再次输入密码
function checkRPwd(obj){
	var pwd = document.getElementById("rgPASSWORD").value;
	var rpwd = obj.value;
	if(rpwd.trim() != ""){
		if((pwd != '') && (pwd != rpwd)){
			obj.value = "";
			document.getElementById("repwMessage").innerHTML = "<font color='red'>两次密码输入不一致！</font>";
			document.getElementById("rpwImgEro").style.display = "inline";
			document.getElementById("rpwImgSuc").style.display = "none";
			rpwdflag = false;
		} else {
			document.getElementById("rpwImgEro").style.display = "none";
			document.getElementById("rpwImgSuc").style.display = "inline";
			document.getElementById("repwMessage").innerHTML = "";
			rpwdflag = true;
		}
	}else{
		obj.value = "";
		document.getElementById("repwMessage").innerHTML = "<font color='red'>请再次输入密码！</font>";
		document.getElementById("rpwImgEro").style.display = "inline";
		document.getElementById("rpwImgSuc").style.display = "none";
		rpwdflag = false;
	}
}

//检查验证码
function checkAuthCode(obj){
	document.getElementById("authCodeMessage").innerHTML = "";
}

function showTip(id,msg) {
	document.getElementById(id).innerHTML = msg;
}

function conceal(name){
	document.getElementById(name).innerHTML = "";
}

/**
**
让Firefox支持outerHTML
***
***/
  if(typeof(HTMLElement)!="undefined" && !window.opera)
	{
	    HTMLElement.prototype.__defineGetter__("outerHTML",function()
	    {
	        var a=this.attributes, str="<"+this.tagName, i=0;for(;i<a.length;i++)
	        if(a[i].specified)
	            str+=" "+a[i].name+'="'+a[i].value+'"';
	        if(!this.canHaveChildren)
	            return str+" />";
	        return str+">"+this.innerHTML+"</"+this.tagName+">";
	    });
	    HTMLElement.prototype.__defineSetter__("outerHTML",function(s)
	    {
	        var r = this.ownerDocument.createRange();
	        r.setStartBefore(this);
	        var df = r.createContextualFragment(s);
	        this.parentNode.replaceChild(df, this);
	        return s;
	    });
	    HTMLElement.prototype.__defineGetter__("canHaveChildren",function()
	    {
	        return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(this.tagName.toLowerCase());
	    });
	}
//------ end

	//填写注册信息时效果
	function aboutRegInfo(){
		//点击某单项时样式变化
		jQuery("#form_reg_ul li").click(function(){
			jQuery(this).addClass("focus").siblings().removeClass("focus");
		});
		
		//点击"显示密码"
		jQuery("#reg_showPwd").click(function(){
			if(jQuery(this).attr("checked")){
				//密码
				document.getElementById("rgPASSWORD").outerHTML =
			    '<input class="long_txt" type="text" name="PASSWORD" id="rgPASSWORD"'+ 
			    'onblur="checkPwd(this);" DataType="Required" maxlength="16" onfocus="conceal(\'pwMessage\');showTip(\'pwMessage\',\'6-16位有效字符\');" '+
			    'value='+document.getElementById("rgPASSWORD").value + ' >';
				
				//确认密码
				document.getElementById('rpassword').outerHTML =
				'<input class="long_txt" type="text" name="rpassword" id="rpassword" '+
                'onblur="checkRPwd(this)" DataType="Required" maxlength="50" onfocus="conceal(\'repwMessage\');showTip(\'repwMessage\',\'请再次输入密码\');" '+
				'value='+document.getElementById("rpassword").value + ' >';
			}else{
				//密码
				document.getElementById("rgPASSWORD").outerHTML =
			    '<input class="long_txt" type="password" name="PASSWORD" id="rgPASSWORD"'+ 
			    'onblur="checkPwd(this);" DataType="Required" maxlength="16" onfocus="conceal(\'pwMessage\');showTip(\'pwMessage\',\'6-16位有效字符\');" '+
			    'value='+document.getElementById("rgPASSWORD").value + ' >';
			    
			    //确认密码
			    document.getElementById('rpassword').outerHTML =
				'<input class="long_txt" type="password" name="rpassword" id="rpassword" '+
                'onblur="checkRPwd(this)" DataType="Required" maxlength="50" onfocus="conceal(\'repwMessage\');showTip(\'repwMessage\',\'请再次输入密码\');" '+
				'value='+document.getElementById("rpassword").value + ' >';
			}
		});
	}

