var nameCatchURL = "?m=ajax&a=validate_username";
var passCachURL = "?m=ajax&a=validate_password_strength";
var mailCachURL = "?m=ajax&a=validate_email";
var safeCachURL = "?m=ajax&a=kitty_auth_pic";
var usernameNoE = false;
var passANoE = false;
var passBNoE = false;
var emailNoE = false;
var readProtocol = false;
var nameReg = /^[A-Za-z0-9\u0391-\uFFE5]+$/;
var eamilReg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
var rightImages = ' <img src="images/right.gif" align="absmiddle" />';
//var errorImages = ' <img src="images/error.gif" align="absmiddle" />';
var errorImages = '';
var passTagArr = new Array(
'<div class="r0">弱</div><div class="r0">中</div><div class="r0">强</div>',
'<div class="r1">弱</div><div class="r0">中</div><div class="r0">强</div>',
'<div class="r0">弱</div><div class="r2">中</div><div class="r0">强</div>',
'<div class="r0">弱</div><div class="r0">中</div><div class="r2">强</div>',
'<div class="r0">弱</div><div class="r0">中</div><div class="r2">强</div>'
);
var errTag = new Array(
'<span class="erro2" style="color:#FF0000;">&nbsp;对不起，该用户名已有人使用,请重新输入。</span>',
'',
'<span class="erro2" style="color:#FF0000;">&nbsp;用户名格式不正确,请重新输入。</span>',
'<span class="erro2" style="color:#FF0000;">&nbsp;和前面输入的密码不一致。</span>',
'<span class="erro2" style="color:#FF0000;">&nbsp;Email不能为空输入。</span>',
'<span class="erro2" style="color:#FF0000;">&nbsp;注册前请认真阅读薇拉用户协议输入。</span>',
'<span class="erro2" style="color:#FF0000;">&nbsp;请填写通行证用户名。</span>',
'<span class="erro2" style="color:#FF0000;">&nbsp;请先输入通行证密码。</span>',
'<span class="erro2" style="color:#FF0000;">&nbsp;通行证密码强度太弱，请重设密码。</span>',
'<span class="erro2" style="color:#FF0000;">&nbsp;通行证密码长度太短，请重设密码。</span>'
);

var errnameTag = new Array(
'<span class="erro2" style="color:#FF0000;">&nbsp;用户名格式不正确,请重新输入。</span>',
'<span class="erro2" style="color:#3c0;">&nbsp;恭喜您，该用户名可以使用。</span>',
'<span class="erro2" style="color:#FF0000;">&nbsp;对不起，该用户名已有人使用。</span>',
'<span class="erro2" style="color:#FF0000;">&nbsp;通行证注册功能暂时不能使用，请稍候再尝试。若果对您的使用产生不便，敬请原谅。</span>',
'<span class="erro2" style="color:#FF0000;">&nbsp;该用户名已有人使用,请重新输入。</span>'
);
var errEmailTag = new Array(
'<span class="erro2" style="color:#FF0000;">&nbsp;Email格式错误,请重新输入。</span>',
'<span class="erro2" style="color:#FF0000;">&nbsp;对不起，该Email已经注册。</span>',
''
);
var minPasswordLength = 6;

var nameRed = false;
var mailRed = false;

//验证密码强度计时器
var passwordStrengthTimer;

function showE(id , msg){
$("#"+id).html(msg);
}

function rightE(id){
$("#"+id).html(rightImages);
}
function errorE(id){
$("#"+id).html(errorImages);
}
function initRight(){
if(usernameNoE){$("#rightName").html(rightImages);}
if(emailNoE){$("#rightMail").html(rightImages);}
if(readProtocol){var opp = $("#userProtocol")[0];opp.checked = true;}
}
function nameR(){
	$("#rightName").html("");
	var f = $("#name_input").val();
	showE("name_reg","");
	if(f==""){showE("name_reg",errTag[6]);return;}
	if(f.replace(nameReg,"")!=""){
		showE("name_reg",errTag[2]);
		return;
		}
	showE("name_reg","");
	if(nameRed){nameRed=false; return;}
	nameRed = true;
	obj = new Object();
	obj.username = f;
	$.post(
		nameCatchURL,
		obj,/*{username:f},*/
		function(data){
			if(data == 3)
			{
				showE("name_reg",errnameTag[3]);
				$("#regForm").submit(
					function(){return false;}
				);
				$("#updata").click(
					function(){return false;}
				);
			}
			else if(data==4){showE("name_reg",errnameTag[data]);}
			else if(data!=1){showE("name_reg",errnameTag[data]);}
			else if(data==1){usernameNoE = true; rightE("rightName");$("#r_submit_sub").removeAttr("disabled","disabled");
			}
			else{usernameNoE = false;errorE("rightName");}
			nameRed = false;
		}
	);
}



function mailR(){
$("#rightMail").html("");
var _this = $("#email")[0];
showE("email_saf","");
if(_this.value == ""){
	////showE("email_saf",errTag[4]);
	emailNoE = false;
	return;
	}
if(_this.value.replace(eamilReg,"")!=""){
	showE("email_saf",errEmailTag[0]);emailNoE = false;
	errorE("rightMail");
}else{
	if(mailRed){mailRed=false; return;}
	mailRed = true;
	$.post(
		mailCachURL,
		 {mail:$("#email").val()},
		 function(data){
				showE("email_saf",errEmailTag[data]);
				if(data<2){
					emailNoE = false;
					errorE("rightMail");
				}else{
					emailNoE = true;
					rightE("rightMail");
					if ( (usernameNoE == true) && (passANoE == true) && (passBNoE == true) && (emailNoE == true) )
					{
						if( $("#submit_sub").attr("cant_register") != 1 )
						{	
							$("#submit_sub").removeAttr("disabled","disabled");
						}	
					}
					
				}
				mailRed = false;
			 }
		   )
	}
}


function passAR(){
	showE("prewrite","");
	$("#rightPass").html("");
	//$("#passB").val("");
	//showE("pstrength","");
	/*$.post(
		   passCachURL,
		   {username:$("#name_input").val(),password:$("#passA").val()},
		   function(data){
			   if(data!=0)showE("pstrength",passTagArr[data]);
				if(data<2){passANoE = false;}else{passANoE = true;}
		   }
		)*/
	
	if( passwordStrengthTimer != null )
	{
		clearTimeout( passwordStrengthTimer );
	}
	
	if( $("#passA").val() == "" )
	{
		return;
	}
	
	passwordStrengthTimer = setTimeout(
		function(){
			obj = new Object();
			obj.username = $("#name_input").val();
			obj.password = $("#passA").val();
			
			$.post(
				passCachURL,
				obj,
				function( data ){
//					showE("pstrength",passTagArr[data]);
//						if(data<2){
//					passANoE = false; 
//					//errorE("rightPass");
//					}else{
//						passANoE = true;
//						rightE("rightPass");
//					}
//					safpassA();
					
					if( $("#passA").val().length < minPasswordLength )
					{
						passANoE = false; 
						showE("prewrite",errTag[9]);
						return;
					}
					
					passANoE = true;
					rightE("rightPass");
					
					if( $("#passB").val().length > 0 )
					{
						passBR();
					}
				}
			);
		} ,
		500
	);
	
//	var data = validate_password($("#name_input").val(),$("#passA").val())
//	showE("pstrength",passTagArr[data]);
//	if(data<2){
//		passANoE = false; 
//		//errorE("rightPass");
//		}else{
//			passANoE = true;
//			rightE("rightPass");
//		}
	
}

function safpassA(){
	if(!passANoE){showE("prewrite",errTag[8]);/*$("#passB")[0].value = ""; $("#passA")[0].value = "";*/errorE("rightPass");return true;}
	{showE("prewrite","");return false;}
}

function safpassB(){
	setTimeout(
		function(){
			if(!passANoE){showE("prewrite",errTag[8]);errorE("rightPass");}
		}
	) ,
	passwordStrengthTimer
}

function passBR(){
	$("#rightRePass").html("");
	showE("prewrite2","");
	var vpassA = $("#passA")[0].value;
	var vpassB = $("#passB")[0].value;
	
	if(vpassA ==""){showE("prewrite2",errTag[7]);passBNoE = false; return;}
	
	if(vpassA != vpassB ||  vpassB==""){
		showE("prewrite2",errTag[3]);passBNoE = false;errorE("rightRePass");
		}else{passBNoE = true;rightE("rightRePass");}
}
function saffecodeRclick(){
		if(this.id=="kitty_auth_big_pics")return;
		if($(this).attr("c")==0){
			$(this).css("border","1px solid red");
			$(this).attr("c",1);
		}else{
			$(this).css("border","1px solid #ccc");
			$(this).attr("c",0);
		}
		kitty_auth_serial = "";
		for(var i=0;i<10;i++){
		kitty_auth_serial +=""+$("#AjaxCodePic .safecodeImg").eq(i).attr("c");
		}
		$("#kitty_auth_serial" ).val(kitty_auth_serial);
}

function saffecodeRmover(){
	if(this.id=="kitty_auth_big_pics")return;
	$("#kitty_auth_big_pics").attr("src",$(this).attr("src").replace("30x30","66x66"));
	if($(this).attr("c")==0){$(this).css("border","1px solid #00f");}
}
function saffecodeRmout(){
	if(this.id=="kitty_auth_big_pics")return;
	if($(this).attr("c")==0){$(this).css("border","1px solid #ccc");}
}
function userProtocolR(){
	var opp = $("#userProtocol")[0];
	if(opp.checked){readProtocol=true;showE("protocol_saf","");}else{readProtocol=false;showE("protocol_saf",errTag[5]);}
}

var submitTimesRecord = 0;
function updataR(){
	if( $( "#name_input" )[0].value == "" )
	{
		showE("name_reg",errTag[6]);
		usernameNoE = false;
	}
	userProtocolR();
	if($("#email")[0].value == ""){
	showE("email_saf",errTag[4]);
	emailNoE = false;
	return;
	}
	safpassA();
	passBR();
	alert(passANoE);
	alert(passBNoE);
	if(usernameNoE && passANoE && passBNoE && emailNoE && readProtocol){
		$("#regForm").submit();
	}
}

function updataQKR(){
	if(usernameNoE && passANoE && emailNoE){
		$("#regForm").submit();
	}
	if($("#email")[0].value == ""){
	showE("email_saf",errTag[4]);
	emailNoE = false;
	return;
	}

}




function safeCodeReflash(){
	$.post(
		   safeCachURL,
		   function(data){
			   $("#AjaxCodePic").html(data);
				$("#AjaxCodePic img").mouseover(saffecodeRmover);
				$("#AjaxCodePic img").mouseout(saffecodeRmout);
				$("#AjaxCodePic img").click(saffecodeRclick);
				$("#kitty_auth_serial").val("0000000000");
				$("#reflashCode").click(safeCodeReflash);
			}
		   );
}


function oldpass(){
	if($("#old_password").val() == ""){
		$("#oldP").html('<span class="erro2">请输入旧密码。</span>');
		return false;
		}else{ return true;}
}

function updataRESETPASS(){
	oldpass();
	if(passANoE && passBNoE){$("#passChangForm").submit();}
	
}


/*** 注册新马甲 **/
var maJiaCachURL ="?m=ajax&a=validate_social_username";
var maJiapass = false;
var maJiaLoading = false;
var maJiaTempTag = '<div class="erro2">请填写：马甲用户名 / E-mail地址。</div>';
var saverErr = '<div class="erro2">服务器通讯错误,请稍后重试！</div>';
var maJiaBackTag = new Array();
maJiaBackTag[0] = '<div class="erro2">可以使用。</div>';
maJiaBackTag[1] = '<div class="erro2">已经被使用。</div>';
maJiaBackTag[3] = '<div class="erro2">用户名不能为空。</div>';
maJiaBackTag[-4] = '<div class="erro2">服务器通讯错误,请稍后重试!</div>';


function maJiaR(){
maJiapass = false;
if(maJiaLoading)return;
maJiaLoading = true;
showE("rsu_name_reg",'');
showE("rsu_name_reg",'<span style="color:#fff;">loading...</span>');
	var f = $("#rsu_name").val();
	if(f==""){showE("rsu_name_reg",maJiaTempTag);maJiaLoading=false; return;}
	$("#majiaupdata")[0].disabled = true;
	$.post(
		maJiaCachURL,
		{username:f},
		function(data){
			data = parseInt(data);
			maJiaLoading = false;
			$("#majiaupdata")[0].disabled = false;
			if(typeof(data)!= "number" ){showE("rsu_name_reg",saverErr);return;}
			showE("rsu_name_reg",maJiaBackTag[data]);
			if(data==0){maJiapass=true;}

		}
	);
}

function maJiaRegFormSubmit(){
	$("#majiaRegForm").submit();
}

//暂时停用此算法
function validate_password(username,password){
    if(password=="")return 0;

    //密码与用户名相同
    if(username == password){
        return  1;
    }
    //密码包含用户名
    if(username.indexOf(password)>=0){
        return 1;
    }
    //用户名包含密码
    if(username != ""){
        if(password.indexOf(username)>=0)return 1;
    }

    //计算密码长度，作操作分配
    password_length = password.length;
    switch (password_length){
        /* 0 - 5位 */
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            //5位及以下数字
            if((""+password).replace(/^\d+$/,"") == ""){
                return 1;
            }
            //5位及以下纯字母
            if((""+password).replace(/^[A-Za-z]+$/,"") == ""){
                return 1;
            }

            return 2;
            break;
        case 6:
        case 7:
        case 8:
        case 9:	
		 //6位-9位，纯数字
            if((""+password).replace(/^\d+$/,"") == ""){
				//正向 逆向
                var little_number_dic = new Array("01234","12345","23456","34567","45678","56789","67890","78901","89012","90123",
                    "09876","98765","87654","76543","65432","54321","43210","32109","21098","10987");
                for(i = 0; i < little_number_dic.length ; i++){
                    //有任意5个连续（包括正向和反向）数字，任意5个连续相同数字
                    if((""+password).indexOf(little_number_dic[i])>=0){
                        return 1;
                    }
                }
            }
			
		  
		  //6位-9位，纯字母，字典内
		   if((""+password).replace(/^[A-Za-z]+$/,"") == ""){
			//字典 正向 逆向
		  	 var little_letter_dic = new Array(
				"ab","bc","cd","de","ef","fg","gh","hi","ij","jk","kl","lm","mn","no","op","pq","qr","rs","st","tu","uv","vw","wx","xy","yz","za",
				"zy","yx","xw","wv","vu","ut","ts","sr","rq","qp","po","on","nm","ml","lk","kj","ji","ih","hg","gf","fe","ed","dc","cb","ba","az");
			  var  lower_password = ("" + password).toLowerCase();
			    for(i = 0; i < little_letter_dic.length ; i++){
					  //有字母连续
					 if(lower_password.indexOf(little_letter_dic[i])>=0){
					 //alert(little_letter_dic[i])
						return 1;
					}
				}
				
		   }
			
            //6位-9位，字母加数字加特殊字符
            if((""+password).replace(/\w/g,"") != ""){
			//字典 正向 逆向
		  	 var little_letter_dic = new Array(
				"ab","bc","cd","de","ef","fg","gh","hi","ij","jk","kl","lm","mn","no","op","pq","qr","rs","st","tu","uv","vw","wx","xy","yz","za",
				"zy","yx","xw","wv","vu","ut","ts","sr","rq","qp","po","on","nm","ml","lk","kj","ji","ih","hg","gf","fe","ed","dc","cb","ba","az");
              var  lower_password = ("" + password).toLowerCase();
                for(i = 0; i < little_letter_dic.length ; i++){
                   //有字母连续
                    if(lower_password.indexOf(little_letter_dic[i])>=0){
                        return 3;
                    }
                }
                //并且字母不连续
                return 4;
            }else{
				//6位-9位，字母加数字，数字只有一位并且在最后
				if((""+password).replace(/^[a-zA-Z]+[\d]{1,1}$/,"") == ""){
					return 1;
				}
				 return 2;
			}
           
            break;
	 
        default:
		
            if((""+password).replace(/\w/g,"") != ""){
                return 4;
            }
			
            if((""+password).match(/\d/g) && (""+password).match(/\d/g).length > 1){
                return 3;
            }

//            if(preg_match('/^[a-zA-Z]+/',password)> 0)//            {
//                return 2;
//            }
//
//            if(preg_match('/^[a-zA-Z]+\d/',password)> 0)//            {
//                return 2;
//            }

            return 2;
            break;
    }
}
