KL.Interval=null;

var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}  

KL.CheckReg = function(obj,type){
   obj.className = "";
   var user = new Array();
   user["Action"]=type;
   user["Value"]=escape(obj.value);
   
   //字符串
   var ok;
   var error;
   switch(type)
   {
     case "Name":ok="恭喜您！该用户名可以使用！"; error="该用户名已经被占用或限制使用！";break;
     case "Email":ok="恭喜您！该Email可以使用！"; error="很抱歉！该Email已经被使用过！";break;
	 case "Carid":ok="恭喜您！该身份证可以使用！"; error="很抱歉！该身份证号码已经被注册过！";break;
     case "Code":ok="验证码格式正确！"; error="验证码格式错误！";break;
   }
   //客户端验证
   var exp;
   var client_result = false;
   switch(type)
   {
       case "Email":
          exp=/^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$/;
          client_result = exp.test(obj.value);
          break;
	   case "Carid":
          client_result = CheckCarid(obj.value);
          break; 
       case "Name":
          var exp1=/(^[0-1](\d){10,11}$)/g;
          exp = /^(\w+$)|([\u4e00-\u9fa5]+$)|([\u4e00-\u9fa5]+\w+$)/g;

          client_result = (!(exp1.test(obj.value)) && exp.test(obj.value) && obj.value.getBytes()>=3 && obj.value.getBytes()<12);
		  
          break;
		  
       case "Code":exp=/^.+$/;break;
   }

   //客户端验证结果显示
   if(client_result){
       $("_" + obj.id).innerHTML="";
       $("_" + obj.id).className = "Load";
       new Ajax().Post("ajax/reghandler.ashx",user,callback);         
   }
   else{
      if(type=="Email" || type == "Mobile" || type=="Carid"){
         $("_" + obj.id).innerHTML ="格式错误！"; 
         $("_" + obj.id).className="Alert";
      }
      if(type=="Name"){
         $("_" + obj.id).innerHTML ="该用户名不能使用！"; 
         $("_" + obj.id).className="Alert";
      }
   }

   //服务器端验证结果
   function callback(s){
      switch(s)
      {
         case "False":  
         $("_" + obj.id).innerHTML =error; $("_" + obj.id).className="Alert";
         break;
         case "True": 
             $("_" + obj.id).innerHTML =ok; $("_" + obj.id).className="OK";
             switch(type)
             {
                case "Name":KL.CheckInfo.Name=true;break;
                case "Email":KL.CheckInfo.Email=true;break;
				case "Carid":KL.CheckInfo.Carid=true;break;
             }
             break;
        default:$("_" + obj.id).innerHTML =""; $("_" + obj.id).className="";alert(s); break;
      }
   }
}

KL.CheckPass = function(obj){
   $("CheckPass").style.visibility="visible";
   obj.className = "";
   var s = obj.value.checkStrong();
   switch(s){
       case 0:
       case 1: $("CheckPass").className="CheckPass";
       break;
       case 2: $("CheckPass").className="CheckPass1";
       KL.CheckInfo.PassStrong=true;
       break;
       case 3: $("CheckPass").className="CheckPass2";
       KL.CheckInfo.PassStrong =true;
       break;
   }
}

KL.CheckRepeatPass =function (obj,aim){
   var s = (obj.value == $(aim).value);
   if(s && obj.value!="" && KL.CheckInfo.PassStrong==true){
       $("_" + obj.id).innerHTML ="填写正确！";
       $("_" + obj.id).className="OK";
       KL.CheckInfo.Password=true;
   }
   else{
       $("_" + obj.id).innerHTML ="填写错误或密码强度为弱！";
       $("_" + obj.id).className="Alert";
   }
}

KL.CheckInfo={
   Name:false,
   Password:false,
   Email:false,
   Carid:false,
   PassStrong:false
}

KL.CheckForm=function(){
      KL.CheckReg($("username"),"Name");

   if($("password").value==""){
      KL.CheckPass($("password"));
      KL.CheckRepeatPass($("repeat"),'password');
   }
      KL.CheckReg($("email"),"Email");
   if(KL.CheckInfo.Name&&KL.CheckInfo.Password&&KL.CheckInfo.Email)
      return true;
   else{
      window.scrollTo(0,200);
      return false;
   }
}

function CheckCarid(sId){
  var iSum=0
  var info=""
 if(!/^\d{17}(\d|x)$/i.test(sId))
 {
        return false;
 }
    sId=sId.replace(/x$/i,"a");
    if(aCity[parseInt(sId.substr(0,2))]==null)
 {
     return false; 
 }
    sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));
    var d=new Date(sBirthday.replace(/-/g,"/"))
    if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))
 {
     return false; 
 }
 
    for(var i = 17;i>=0;i --) 
 {
     iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11) 
 }
    if(iSum%11!=1)
 {
     return false; 
 }
    return true;
}