String.prototype.getBytes = function() {    
	var cArr = this.match(/[^\x00-\xff]/ig);
	return this.length + (cArr == null ? 0 : cArr.length);
}

var appServer = "";

jQuery.fn.extend({
  setClass:function(val){
	return this.attr("class", "").addClass(val);
  },
  setHtml: function(val){
    var cl = this.attr("class");
    // <img style="z-index: 10; left: 6px; top: 0px; position: absolute;" src="' + appServer + '/images/front/v2/tit2.gif"/>
    //var str = '<img style="z-index: 10; left: 6px; top: 0px; position: absolute;" src="' + appServer + '/images/front/v2/tit2.gif"/><span style="border: 1px solid rgb(198, 215, 224); padding: 5px; background: rgb(245, 245, 245) none repeat scroll 0% 0%; width: 256px; color: rgb(153, 153, 153); font-size: 12px; line-height: 15px; position: absolute; top: -18px; left: 12px; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"><font class="' + cl + '">' + val + '</font></span>';
    //var str = '<img style="z-index: 10; left: 6px; top: 0px; position: absolute;" src="' + appServer + '/images/front/v2/tit2.gif"/><span style="border:1px solid #c6d7e0; width:256px; padding:5px; color:#999;font-size:12px;line-height:15px; position:absolute; top:-8px;left:12px; background:#f5f5f5;">' + val + '</span>';
    var str = '<img src="' + appServer + '/images/front/v2/tit2.gif" style="z-index:10; left:6px;top:-14px!important;top:0;position:absolute"/> <span style="border:1px solid #c6d7e0; width:256px; padding:3px; color:#999;font-size:12px;line-height:15px;position:absolute;top:-20px!important;top:-4px; left:12px; background:#f5f5f5;">' + val + '</span>';
    str = (cl == "emInfo" ? str : val);
    return this.html(str);
  },
  setOk: function(){
  	return this.attr("class", "").html("<img src='"+ appServer +"/images/front/v2/ok.gif'/>");
  }
});

var page = {
	quickReg: "quick",
	emailOrMobileReg: "emailOrMobile",
	siteReg: "site",
	siteEmailOrMobileReg: "siteEmailOrMobile",
    regType: this.quickReg,	//quick - 快速注册，emailOrMobile - 手机邮箱注册，site - 其他站点注册，siteEmailOrMobile - 其他站点需要手机邮箱注册
    memberName: null,
    memberNameEm:null,
    pwd1:null,
    pwd1Em:null,
    pwd2:null,
    pwd2Em:null,
    checkCode:null,
    checkCodeEm:null,
    
    emailOrMobile: null,
    emailOrMobileEm: null,
    realName: null,
    realNameEm: null,
    idCardNo: null,
    idCardNoEm: null,
    
    //-----------输入合法性标示
    memberNameFlag:false,
	pwd1Flag:false,
	pwd2Flag:false,
	checkCodeFlag:false,
	
	emailOrMobileFlag: false,
	realNameFlag: false,
	idCardNoFlag: false,
	
    //------------显示提升信息
    memberNameInfo: function(){
        var memberName = page.memberName.val();
        if(memberName == ""){
            page.memberNameEm.setClass("emInfo").setHtml("16个字符内，一个汉字为两个字符，不能使用纯数字，一旦注册成功会员名不能修改。");
        }
    },
    
    pwd1Info: function(){
        var pwd1 = page.pwd1.val();
        if(pwd1 == ""){
        	page.pwd1Em.setClass("emInfo").setHtml("6-16字符，允许字母数字#下划线，不能使用同一或连续字母，数字，符号。");
        }
    },
    
    pwd2Info: function(){
    	var pwd2 = page.pwd2.val();
    	if(pwd2 == ""){
        	page.pwd2Em.setClass("emInfo").setHtml("再输入一遍上面的密码。");
        }
    },
    
    emailOrMobileInfo: function(){
    	var val = page.emailOrMobile.val();
    	if(val == ""){
    	    page.emailOrMobileEm.setClass("emInfo").setHtml("请输入您常用的邮箱或手机号码，方便找回密码。");
    	}
    },
    
    realNameInfo: function(){
    	var val = page.realName.val();
    	if(val == ""){
    	    page.realNameEm.setClass("emInfo").setHtml("请输入您的真实姓名。");
    	}
    },
    
    idCardNoInfo: function(){
    	var val = page.idCardNo.val();
    	if(val == ""){
    	    page.idCardNoEm.setClass("emInfo").setHtml("输入您的15或18位身份证号码。");
    	}
    },
    
    checkCodeInfo: function(){
        var checkCode = page.checkCode.val();
        if(checkCode == ""){
        	page.checkCodeEm.setClass("emInfo").setHtml("请输入左侧的验证码。");
        }else{
        	page.checkCodeEm.setClass("").setHtml("");
        }
    },
    
    //------检查输入
    checkPwd1: function(){
        page.pwd1Flag = false;
    	var pwd1 = page.pwd1.val();
    	if(pwd1 == ""){
    		page.pwd1Em.setClass("error2").setHtml("请输入密码。");
    		return false;
    	}
    	if(!checkPwd(pwd1)){
    		page.pwd1Em.setClass("error2").setHtml("6-16字符，允许字母数字#下划线，不能使用同一或连续字母，数字，符号。");
    		return false;
    	}
    	if(! swPwd(pwd1)){
    		page.pwd1Em.setClass("error2").setHtml("密码须数字、字母、#或_的组合，长度为6-16位。");
    		return false;
    	}
    	page.pwd1Flag = true;
    	page.pwd1Em.setOk();
    	return true;
    },
    
    checkPwd2: function(){
    	page.pwd2Flag = false;
        var pwd2 = page.pwd2.val();
        if(pwd2 == ""){
    		page.pwd2Em.setClass("error2").setHtml("请输入确认密码。");
    		return false;
    	}
        if(page.pwd1.val() != pwd2){
        	page.pwd2Em.setClass("error2").setHtml("两次输入的秘密不一致。");
        	return false;
        }
        page.pwd2Flag = true;
        page.pwd2Em.setOk();
        return true;
    },
    
    checkCheckCode: function(){
    	page.checkCodeFlag = false;
        var checkCode = page.checkCode.val();
        if(checkCode == ""){
            page.checkCodeEm.setClass("error2").setHtml("请输入验证码。");
            return false;
        }
        if(checkCode.match(/[\w]{4}/) != checkCode){
        	page.checkCodeEm.setClass("error2").setHtml("验证码格式不正确。");
            return false;
        }
        page.checkCodeFlag = true;
        page.checkCodeEm.setClass("").setHtml("");
        return true;
    },
    
    checkMemberName: function(){
    	page.memberNameFlag = false;
        var patn1 = /[\w_#\u4e00-\u9fa5]+/;
		var patn2 = /[\u4e00-\u9fa5]+/;
		var patn3 = /[\w_#]+/;
		var patn4 =/^[0-9]+$/;
        var memberName = page.memberName.val();
        if(memberName == ""){
            page.memberNameEm.setClass("error2").setHtml("请输入用户名。");
        	return false;
        }
        if( patn4.test(memberName)){
			page.memberNameEm.setClass("error2").setHtml("用户名不能是纯数字。");
			return false;
		}
		if(memberName == memberName.match(patn2)){
		    if(memberName.length < 1 || memberName.length > 8){
                page.memberNameEm.setClass("error2").setHtml("纯中文用户名长度必须在1-8个字符之间。");
			    return false;
		    }
		}
		if(memberName == memberName.match(patn3)){
		    if(memberName.length < 1 || memberName.length > 16){
				page.memberNameEm.setClass("error2").setHtml("非中文用户名长度必须在1-16个字符之间。");
			    return false;
		    }
		}
		if(memberName == memberName.match(patn1)){
		    if(memberName.getBytes() < 1 || memberName.getBytes() > 16){
				page.memberNameEm.setClass("error2").setHtml("长度不能超过16个字符，中文占两个字符。");
			    return false;
		    }
		}
		if(memberName != memberName.match(patn1)){
            page.memberNameEm.setClass("error2").setHtml("仅支持字母、数字、下划线、#和中文，16个字符以内。");
		    return false;
		}
		
		if(isSensitive(memberName)){
			page.memberNameEm.setClass("error2").setHtml("用户名不能包含禁用词语。");
		    return false;
		}
		
		//用户名是否重复
		$.post("/front/noLogin/chkUserName.htm", 
		       {"member.memberName" : memberName},
	           function(json){
	               if(json.flag){
	                   page.memberNameEm.setClass("error2").setHtml("该会员名已被注册，请重新输入其他会员名。");
	               }else{
	               	   page.memberNameFlag = true;
	                   page.memberNameEm.setOk();
	               }
	           },
	           "json");
	    
		return page.memberNameFlag;
    },
    
    checkEmailOrMobile: function(){
        page.emailOrMobileFlag = false;
        var val = page.emailOrMobile.val();
        if(val == ""){
            page.emailOrMobileEm.setClass("error2").setHtml("输入您常用的邮箱或手机号码。");
            return false;
        }
        
        if(/@/.test(val) && ! isEmail(val)){
            page.emailOrMobileEm.setClass("error2").setHtml("邮箱格式不正确，请重输。如rtrt@gmail.com");
        	return false;
        }
		
		if(/^1[\d]+$/.test(val) && ! isMobileNo(val)){
            page.emailOrMobileEm.setClass("error2").setHtml("手机格式不正确，请重输11位手机号码。");
           	return false;
        }
        
        if(!isEmail(val) && ! isMobileNo(val)){
        	page.emailOrMobileEm.setClass("error2").setHtml("邮箱或手机号码格式不正确。");
            return false;
        }
        
        //检查邮箱是否被绑定
        if(isEmail(val)){
        	$.post("/front/noLogin/chkEmail.htm", 
		       {"member.linkEmail" : val},
	           function(json){
	               if(json.flag){
	                   page.emailOrMobileEm.setClass("error2").setHtml("该邮箱已被其他会员绑定，请换一个。");
	               }else{
	               	   page.emailOrMobileFlag = true;
	                   page.emailOrMobileEm.setOk();
	               }
	           },
	           "json");
        }
        
        //检查手机号是否被绑定
        if(isMobileNo(val)){
        	$.post("/front/noLogin/chkMobile.htm", 
		       {"member.linkMobile" : val},
	           function(json){
	               if(json.flag){
	                   page.emailOrMobileEm.setClass("error2").setHtml("该手机号码已被其他会员绑定，请换一个。");
	               }else{
	               	   page.emailOrMobileFlag = true;
	                   page.emailOrMobileEm.setOk();
	               }
	           },
	           "json");
        }
        
        return page.emailOrMobileFlag;
    },
    
    checkRealName: function(){
        page.realNameFlag = false;
        var val = page.realName.val();
	    if(val == ""){
	        page.realNameEm.setClass("error2").setHtml("请填写真实姓名。");
	        return false;
	    }
	    
	    if(! validateRealName(val)){
	        page.realNameEm.setClass("error2").setHtml("真实姓名请使用中文，2-10个汉字。");
	        return false;
	    }
	    if(isSensitive(val)){
	        page.realNameEm.setClass("error2").setHtml("真实姓名不能包含禁用词语。");
	        return false;
	    }
	    page.realNameFlag = true;
	    page.realNameEm.setOk();
	    return true;
    },
    
    checkIdCardNo: function(){
        page.idCardNoFlag = false;
	    var obj = {value: page.idCardNo.val()};
	    if(obj.value == ""){
	        page.idCardNoEm.setClass("error2").setHtml("请填写身份证号。");
	        return false;
	    }
	    if(validateIdCard(obj) != 0){
	        page.idCardNoEm.setClass("error2").setHtml("身份证号格式不正确。");
	        return false;
	    }
	    page.idCardNoFlag = true;
	    page.idCardNoEm.setOk();
	    return true;
    }
    
}

//初始化
function init(){
    page.memberName = $("#memberName");
    page.memberNameEm = $("#memberNameEm");
    page.pwd1 = $("#pwd1");
    page.pwd1Em = $("#pwd1Em");
    page.pwd2 = $("#pwd2");
    page.pwd2Em = $("#pwd2Em");
    page.checkCode = $("#checkCode");
    page.checkCodeEm = $("#checkCodeEm");
    page.realName = $("#realName");
    page.realNameEm = $("#realNameEm");
    page.emailOrMobile = $("#emailOrMobile");
    page.emailOrMobileEm = $("#emailOrMobileEm");
    page.idCardNo = $("#idCardNo");
    page.idCardNoEm = $("#idCardNoEm");
    
    page.memberName.focus(page.memberNameInfo).blur(page.checkMemberName);
    page.pwd1.focus(page.pwd1Info).blur(page.checkPwd1).keyup(function(){pwdStrong(page.pwd1.val());});
    page.pwd2.focus(page.pwd2Info).blur(page.checkPwd2);
    
    page.emailOrMobile.focus(page.emailOrMobileInfo).blur(page.checkEmailOrMobile);
    page.realName.focus(page.realNameInfo).blur(page.checkRealName);
    page.idCardNo.focus(page.idCardNoInfo).blur(page.checkIdCardNo);
    
    page.checkCode.focus(page.checkCodeInfo).blur(function(){page.checkCodeInfo();});
    
    if(page.emailOrMobile.val() != "") {
    	page.emailOrMobile.focus();
    	page.emailOrMobile.blur();
    }
	if(page.realName.val() != ""){
		page.realName.focus();
		page.realName.blur();
	}
	if(page.idCardNo.val() != ""){
		page.idCardNo.focus();
		page.idCardNo.blur();
	}
    page.memberName.focus();

    if($("#returnCode").val() == ""){
    	if($("#site_id").val() != ""){
	    	$("#returnCode").val(page.siteReg);
	    }else{
	    	$("#returnCode").val(page.quickReg);
	    }
    }
    page.regType = $("#returnCode").val();
    showRegType();
}

function doSubmit(){
    if(! canSubmit()){
    	return false;
    }
    
    var pwd = hex_md5(page.pwd1.val());
    $("#memberPwd").val(pwd);
    
    if(page.regType == page.quickReg){
    	//快速注册
	    $("#nextCode").val(page.quickReg);
	    $("#returnCode").val(page.quickReg);
    }
    
    if(page.regType == page.siteReg){
        //其他站点注册
    	$("#nextCode").val(page.siteReg);
	    $("#returnCode").val(page.siteReg);
    }
    
    if(page.regType == page.emailOrMobileReg || page.regType == page.siteEmailOrMobileReg){
    	var str = page.emailOrMobile.val();
	    //邮箱注册
	    if(isEmail(str)){
	    	$("#linkEmail").val(str);
	    	$("#nextCode").val("email");
	    	$("#returnCode").val(page.emailOrMobileReg);
	    }
	    //手机
	    if(isMobileNo(str)){
	        $("#linkMobile").val(str);
	        $("#nextCode").val("mobile");
	        $("#returnCode").val(page.emailOrMobileReg);
	    }
    }
    page.pwd1.val("");
    page.pwd2.val("");
    document.forms[0].submit();
}

//是否可以提交
function canSubmit(){
	page.checkPwd1();
	page.checkPwd2();
	
    var flag = page.pwd1Flag && page.pwd2Flag && page.memberNameFlag;
    if(page.regType == page.quickReg || page.regType == page.siteReg){
        return flag;
    }
    if(page.regType == page.emailOrMobileReg || page.regType == page.siteEmailOrMobileReg){
        page.checkRealName();
        page.checkIdCardNo();
    	return flag && page.realNameFlag && page.idCardNoFlag && page.emailOrMobileFlag;
    }
    
    return false;
}

//切换不同的注册方式
function toggleReg(){
    page.regType = (page.regType == "" ? page.quickReg : page.regType);
    page.regType = (page.regType == page.quickReg ? page.emailOrMobileReg : page.quickReg);
    showRegType();
}

//判断显示哪种注册方式
function showRegType(){
	page.memberName.focus();
    if(page.regType == page.quickReg){
        $("#regBut").html("手机或邮箱注册");
        $("#regH").html("蝌蚪账号注册 - 快速注册");
        $("div.regByOther").hide();
    }
    if(page.regType == page.emailOrMobileReg){
    	$("#regBut").html("快速注册");
        $("#regH").html("蝌蚪账号注册 - 手机或邮箱注册");
        $("div.regByOther").show();
    }
    if(page.regType == page.siteReg){
    	$("#regH3").html("蝌蚪账号注册");
        $("div.regByOther").remove();
    }
    if(page.regType == page.siteEmailOrMobileReg){
    	$("#regH3").html("蝌蚪账号注册");
        $("div.regByOther").show();
    }
}


