﻿var Regs=function(){
	this.passed = false;
	this.className = [ 'nor', 'err', 'oks', 'wat' ];
	this.checkItems = [ "Username", "Nickname","Truename","Identitycard","Mobile", "Password", "PasswordConfirm", "Question", "Answer", "Email", "Code" ];
	this.messages = {
		'Username'				: '使用英文、数字，总字符数在 4 - 16 之间。',
		'Nickname'				: '使用汉字，英文、数字，总字符数在 4 - 16 之间。',
		'Truename'              : '使用汉字，总字符数在 4 - 10 之间。',
		'Identitycard'          : '使用数字，总字符数为 15 或 18。',
		'Mobile'                : '使用数字，总字符数为 11 或 10。',		
		'Password'				: '使用数字和字母，长度为 6 - 20 个字符。',
		'PasswordConfirm'	    : '再次输入密码以保证密码无误。',
		'Email'					: '推荐填写：<a href="http://mail.qq.com" target="_blank">QQ 邮箱</a>、<a href="http://mail.163.com" target="_blank">163 邮箱</a>、<a href="http://cn.mail.yahoo.com/" target="_blank">Yahoo 邮箱</a>',
		'Question'				: '使用汉字，英文、数字，总字符数在 4 - 20 之间。',
		'Answer'                : '使用汉字，英文、数字，总字符数在 4 - 20 之间。',
		'Code'					: '输入上图中的数字，若无法辨别请点击图片更换。'
	};

	// 提交注册信息时验证
	this.checkForm = function (){
		this.passed = true;
		for ( var i = 0; i < this.checkItems.length; i ++ ){
			obj = $( "tip" + this.checkItems[i] );
			if ( obj.className != this.className[2] ){
				var check = eval ( "this.check" + this.checkItems[i] + "()" );
				if ( check == 'checking' ){
					this.passed = false;
				}
				else{
					this.passed = this.passed && check;
				}
			}
		}
		//return this.passed;
		if(this.passed){
            var regJson=new JsonCmd();
            regJson.cmdName="RegAdd";
            regJson.cmdParm.push(["JsRegAdd",{
                "UserName":$("rg_Username").value,
                "NickName":escape($("rg_Nickname").value),
                "PassWord":$("rg_Password").value,
                "Email":$("rg_Email").value,
                "TrueName":escape($("rg_Truename").value),
                "CDTypeId":$("hd_type").value,
                "CardNo":$("rg_Identitycard").value,
                "PassFAQ":escape($("rg_Question").value),
                "PassDH":escape($("rg_Answer").value),
                "Mobile":$("rg_Mobile").value,
                "TypeId":"2"
            }]);
            SendToServer(regJson);	
		}
	}

	// 显示所有提示
	this.showAllTips = function (){
		for ( var i in this.checkItems ){
			var obj;
			if ( obj = $( 'tip' + this.checkItems[i] ) ){
				obj.innerHTML = eval ( "this.messages." + this.checkItems[i] );
			}
		}
	}

	this.showTip = function ( chkItem, tipType, message ){
		var obj;
		if ( obj = $( 'tip' + chkItem ) ){
			if ( tipType == null ) tipType = 0;
			if(chkItem=='Identitycard'){
			    var msg=eval ( "this.messages." + chkItem )
			    var val=Number($("hd_type").value);
			    if(val!=1) msg='请输入你真实的证件号码。';			    
			    if ( message == null ) message = msg;
			}else{
				if ( message == null ) message = eval ( "this.messages." + chkItem );
			}
			if ( tipType > 0 || obj.className != this.className[2] || obj.className == '' )
			{
				obj.innerHTML = message;
				obj.className = this.className[tipType];
			}
		}
	}
	
	this.hideTip = function ( chkItem ){
		var obj;
		if ( obj = $( 'tip' + chkItem ) )
		{
			if ( obj.className != this.className[2] )
			{
				obj.style.display = "none";
			}
		}
	}
	// 检查用户名
	this.checkUsername = function ( checkSystem ){
		var message = '';
		var val=$("rg_Username").value.replace(/\s*/g,"");
		if ( checkSystem == null ) checkSystem = true;	
		if(val.length==0){
		    message='请输入用户名';
		}
		else if(val.length<4){
		    message='用户名太短，总字符数应在 4 - 16 之间';
		}
		else if(val.length>16){
		    message='用户名太长，总字符数应在 4 - 16 之间';
		}
		else{	
		    var r=val.match(/^[A-Za-z0-9]{4,20}$/)
	        if(r==null){
	            message='用户名只能使用英文、数字，总字符数在 4 - 20 之间！';
	        }
	    }
	    
		if ( message != '' ){
			this.showTip ( 'Username', 1, message );
			return false;
		}
		else if ( checkSystem ){
			this.sndUser();
			return 'checking';
		}
		return true;
	}

	// Ajax 检查用户名
	this.sndUser = function (){
		this.showTip ( 'Username', 3, '正在检测用户名...' );
        var regJson=new JsonCmd();
        regJson.cmdName="RegUser";
        regJson.cmdParm.push(["JsRegUser",{"UserName":$("rg_Username").value}]);
        SendToServer(regJson);		
	}

	// 检查用户名回调函数
	this.retUser = function (backJson){
		if ( backJson.Msg == 'OK' ){
			this.showTip ( 'Username', 2, '您填写的用户名可以成功注册' );
			return true;
		}
		else if ( backJson.Msg != '' ){
			this.showTip ( 'Username', 1,  backJson.Msg );
			return false;
		}
		else{
			this.hideTip ( 'Username' );
		}
	}

	// 检查昵称
	this.checkNickname = function ( checkSystem ){
		var message = '';
		if ( checkSystem == null ) checkSystem = true;
		var val=$("rg_Nickname").value.replace(/\s*/g,"");
		if ( val.length == 0 ){
			message = "请填写昵称";
		}
		else if(Regs.getLen(val)<4){
		    message='昵称太短，总字符数应在 4 - 16 之间';
		}
		else if(Regs.getLen(val)>16){
		    message='昵称太长，总字符数应在 4 - 16 之间'
		}
		else if ( val.indexOf (' ') >= 0 || val.indexOf ('\\') >= 0 || val.indexOf ('\'') >= 0 || val.indexOf ('\"') >= 0 )
		{
			message = '昵称包含非法字符';
		}		
		if ( message != '' ){
			this.showTip ( 'Nickname', 1, message );
			return false;
		}
		else if ( checkSystem ){
			this.sndNick ();
			return 'checking';
		}
		return true;
	}

	// Ajax 检查昵称
	this.sndNick = function ()
	{
		this.showTip ( 'Nickname', 3, '正在检测昵称...' );
        var regJson=new JsonCmd();
        regJson.cmdName="RegNick";
        regJson.cmdParm.push(["JsRegNick",{"NickName":escape($("rg_Nickname").value)}]);
        SendToServer(regJson);
	}

	// 检查昵称回调函数
	this.retNick = function (backJson)
	{
		if ( backJson.Msg == 'OK' ){
			this.showTip( 'Nickname', 2, '您填写的昵称可以成功注册' );
			return true;
		}
		else if ( backJson.Msg != '' ){
			this.showTip ( 'Nickname', 1, backJson.Msg );
			return false;
		}
		else{
			this.hideTip ( 'Nickname' );
		}
	}
	
	//检查用户真实姓名
	this.checkTruename=function(checkSystem){
	    var message='';
	    var val=$("rg_Truename").value.replace(/\s*/g,"");

        if(val.length==0){
            message='请填写真实姓名';
        }
        else{
            var r=val.match(/^[Α-￥]+$/);
            if(r==null){
                message='真实姓名只能为汉字！';
            }
            else{
                if(Regs.getLen(val)<4){
                    message='真实姓名太短，总字符数在 4 - 10 之间。';
                }
                else if(Regs.getLen(val)>10){
                    message='真实姓名太长，总字符数在 4 - 10 之间。';
                }
            }
        }
    
	    if( message!=''){
	        this.showTip('Truename',1,message);
	        return;
	    }
	    else{
			this.showTip ( 'Truename', 2, '填写正确' );
			return true;
	    }
	}
	
	//检测用户身份证
	this.checkIdentitycard=function(checkSystem){
	    var message='';
	    var val=$("rg_Identitycard").value.replace(/\s*/g,"");
	    if(val.length==0){
	        message='请填写证件号码';
	    }
	    else{
	        if($("hd_type").value=="1"){
	            var r = val.match(/^\d{15}$|^\d{18}$|^\d{17}[a-zA-Z]{1}$/);
	            if(r==null){
	                message='身份证号长度为 15 或 18 字符';
	            }
	        }
	        else {
	            if(val==null||val==""){
	                message='您未填写证件号码，请填写。';
	            }
	        }
	    }
	    
	    if( message!=''){
	        this.showTip('Identitycard',1,message);
	        return false;
	    }
	    else{
			this.showTip ( 'Identitycard', 2, '填写正确' );
			return true;
	    }	    
	}
	
	//检测用户联系电话
	this.checkMobile=function(checkSystem){
	    var message='';
	    var val=$("rg_Mobile").value.replace(/\s*/g,"");
	    if(val.length==0){
	        message='请填写手机号码';
	    }
	    else{
	        var r=val.match(/\d{11}/ig);
	        if(r==null){
	            message='手机号码长度为 11 或 10 字节';
	        }
	    }
	    if( message!=''){
	        this.showTip('Mobile',1,message);
	        return false;
	    }
	    else{
			this.showTip ( 'Mobile', 2, '填写正确' );
			return true;
	    }
	}

	// 检查密码
	this.checkPassword = function (){
		var message = '';
		if ( $("rg_Password").value.length < 6 || $("rg_Password").value.length > 20 ){
			message = '密码长度必须为 6 - 20 字符';
		}
		else if ( $("rg_Password").value != '' && $("rg_Password").value == $("rg_Username").value ){
			message = '为了您的账号安全，密码请不要与用户名相同';
		}
		/*
		else if ( get_strong_level ( this.objForm.password.value, 6 ) < 2 )
		{
			message = '您的密码强度太弱';
		}
		*/

		if ( message != '' ){
			this.showTip ( 'Password', 1, message );
			return false;
		}
		else{
			this.showTip ( 'Password', 2, '填写正确' );
			return true;
		}	
	}

	// 检查密码确认
	this.checkPasswordConfirm = function (){
		var message = '';
		if ( $("rg_PasswordConfirm").value != $("rg_Password").value ){
			message = '两次填写的密码不一致, 请检查并重新填写';
		}
		else if ( $("rg_Password").value == '' ){
			message = '请填写密码';
		}
		
		if ( message != '' ){
			this.showTip ( 'PasswordConfirm', 1, message );
			return false;
		}
		else{
			this.showTip ( 'PasswordConfirm', 2, '填写正确' );
			return true;
		}
	}
    //检测邮箱
	this.checkEmail = function ( username, checkSystem ){
		var message = '';
		checkSystem = checkSystem != null ? checkSystem : true;
		if ( $("rg_Email").value.length == 0 ){
			message = "请填写您的邮箱地址";
		}
		var r=$("rg_Email").value.match(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/);
		if(r==null){
		    message='您的邮箱地址格式不正确';
		}
		
		if ( message != '' ){
			this.showTip ( 'Email', 1, message );
			return false;
		}
		else if ( checkSystem ){
            this.showTip ( 'Email', 2, '填写正确' );
			return true;
		}
	}
    //检测密码问题
	this.checkQuestion = function (){
		var message = '';
		if ( $("rg_Question").value.length == 0 ){
			message = "请填写密码问题";
		}
		else if ( $("rg_Question").value.indexOf (' ') >= 0 || $("rg_Question").value.indexOf ('\\') >= 0 || $("rg_Question").value.indexOf ('\'') >= 0 || $("rg_Question").value.indexOf ('\"') >= 0 ){
			message = '密码问题包含非法字符';
		}	
		if ( message != '' ){
			this.showTip ( 'Question', 1, message );
			return false;
		}
		else{
			this.showTip ( 'Question', 2, '填写正确' );
			return true;
		}	
	}
    //检测密码答案
	this.checkAnswer = function (){
		var message = '';
		if ( $("rg_Answer").value == '' ){
			message = '请填写密码答案。';
			ret = false;
		}
		else if (  $("rg_Answer").value ==  $("rg_Question").value ){
			message = '为了您的账号安全，密码提示答案请不要与问题相同';
			ret = false;
		}
		else{
			message = '填写正确';
			ret = true;
		}
		this.showTip ( 'Answer', ret ? 2 : 1, message );
		return ret;
	}
    //验证码检测
	this.checkCode = function (){
		this.sndCode();
	}
	this.sndCode=function(){
        var regJson=new JsonCmd();
        regJson.cmdName="RegYzm";
        SendToServer(regJson);
	}
	this.retCode=function(backJson){
	    var Code=backJson.Yzm;
		if ( $("rg_Code").value.toUpperCase () != Code.toUpperCase () )	{
			this.showTip ( 'Code', 1, '验证码不正确, 请检查并重新填写' );
			return false;
		}
		else{
			this.showTip ( 'Code', 2, '填写正确' );
			return true;
		}
	}
}

Regs.Yzm=function(){
    $("rg_img").src="/control/yzmPic.aspx?nl=4&wd=60&ht=20&n="+Math.random();
}

// 检查密码强度
Regs.ckStrong=function ( password ){
	var strong = Regs.getLevel ( password, 6 );

	var objS1 = $( 'sp_p1' );
	var objS2 = $( 'sp_p2' );
	var objS3 = $( 'sp_p3' );

	if ( strong == 1 ){
		objS1.className = 'p1';
		objS2.className = 'p0';
		objS3.className = 'p0';
	}
	else if ( strong == 2 ){
		objS1.className = 'p2';
		objS2.className = 'p2';
		objS3.className = 'p0';
	}
	else if ( strong >= 3 )	{
		objS1.className = 'p3';
		objS2.className = 'p3';
		objS3.className = 'p3';
	}
	else{
		objS1.className = 'p0';
		objS2.className = 'p0';
		objS3.className = 'p0';
	}
}

Regs.getLevel=function( string, minLength ){
	if ( minLength == null ) minLength = 1;
	if ( string.length < minLength ){
		return 0;
	}

	var ls = 0;
	if ( string.match(/[a-z]/ig ) ){
		ls ++;
	}
	if ( string.match(/[0-9]/ig ) ){
		ls ++;
	}
	if ( string.match(/(.[^a-z0-9])/ig ) )	{
		ls ++;
	}
	if ( string.length >= 10 ){
		ls ++;
	}

	var firstChar = string.substr ( 0, 1 );
	var repeat = 1;
	for ( var i = 1; i < string.length; i ++ ){
		if ( string.substr ( i, 1 ) == firstChar ){
			repeat ++;
		}
		else{
			break;
		}
	}
	if ( string.length == repeat ){
		ls --;
	}

	var seq = '01234567890abcdefghijklmnopqrstuvwxyz';
	if ( seq.indexOf ( string.toLowerCase () ) >= 0 ){
		ls --;
	}
	ls = Math.max ( ls, 1 );
	return ls;
}

Regs.ckPhone=function( form )
{
	var phone = form.bind_value.value;
    if ( phone == '' ){
		showMessage ( '请填写手机号码！' );
		form.bind_value.focus ();
		return false;
	}
	if ( !phone.match ( /^[0-9]{11}$/ ) ){
		showMessage ( '您的手机号码格式无效，请重新填写！' );
		form.bind_value.select ();
		return false;
	}
	return true;
}

Regs.getLen=function(str) { 
    var len = 0; 
    if(str != null && str.length>0){
        for(var i=0;i<str.length;i++){ 
            char = str.charCodeAt(i); 
            if(!(char>255)){ 
                len = len + 1; 
            }else { 
                len = len + 2; 
            } 
        } 
    }
    return len;
} 

Regs.retAdd=function(backJson){
    if(backJson.Msg=="OK"){
        $("reg_01").style.display="none";
        $("reg_02").style.display="block";
        $("sp_true").innerHTML=$("rg_Truename").value;
        $("sp_iden").innerHTML=$("rg_Identitycard").value;
        $("sp_faq").innerHTML=$("rg_Question").value;
        $("sp_dh").innerHTML=$("rg_Answer").value;
    }else{
        alert(backJson.Msg);
    }
}
