﻿﻿//根据身份证显示生日、性别、地区（为完成）
function showBirthday(idCardType,val,xx){  

    var yyyy="";         //年
    var mm="";           //月
    var dd="";           //日
    var sex="";          //性别：1-男，2-女
   if (idCardType=="请选择") {
   	    alert("请选择证件类型");
   	    return;
   }
   
   if (idCardType!="身份证") {
   	return;
   }      
       
   var verifyInfo = checkIDCardNum(val);
   //如果身份证号码不合法，改变身份证号码输入框颜色，并把其他置空
   if (verifyInfo[0]==false) { 
        
		 if(xx==1){
			 document.getElementById("phiddnum1").style.border='red solid 1px';
			 document.getElementById("birth1").value="";
			 document.getElementById("phgend1").value=""; 
		 }else {
			 document.getElementById("phiddnum").style.border='red solid 1px';
			 document.getElementById("birth").value="";
			 document.getElementById("phgend").value=""; 
		 }
        //自己改写了
        /*if(typeof(year)!="undefined") 
            year.value = "";  
        if(typeof(month)!="undefined") 
            month.value = "";      
        if(typeof(day)!="undefined") 
            day.value = "";
        */      
        
        //document.getElementById("bdyear").value="";
   		//document.getElementById("bdmonth").value="";
   		//document.getElementById("bdday").value="";
        
        
  	    return;
   }
   else{                       
        
		 if(xx==1) document.getElementById("phiddnum1").style.border='#999 solid 1px';
		 else document.getElementById("phiddnum").style.border='#999 solid 1px';
        yyyy=verifyInfo[1];
        mm=verifyInfo[2];
        dd=verifyInfo[3];
        sex=verifyInfo[4];
   }          
   
   var birthdayValue = yyyy+'-'+mm+'-'+dd;
   
   if(xx==1){
	   document.getElementById("birth1").value=birthdayValue;
   		document.getElementById("births1").value=birthdayValue;
   }else{
	   document.getElementById("birth").value=birthdayValue;
	   document.getElementById("births").value=birthdayValue;
   }
   //document.getElementById("bdyear").value=yyyy;
   //document.getElementById("bdmonth").value=mm;
   //document.getElementById("bdday").value=dd;
   
    /*document.getElementById("bdyear1").value=yyyy;
	document.getElementById("bdmonth1").value=mm;
	document.getElementById("bdday1").value=dd;*/
   	
   if (sex==1){
        
		if(xx==1) {document.getElementById("phgend1").value='男'; document.getElementById("phgends1").value='男'; }
		else{
			document.getElementById("phgend").value='男'; 
			document.getElementById("phgends").value='男'; 
		}
        //document.getElementById("sex1").value='男'; 
   }else{
       
	   if(xx==1) {document.getElementById("phgend1").value='女';document.getElementById("phgends1").value='女'; }
	   else{
	   	 document.getElementById("phgend").value='女';
	     document.getElementById("phgends").value='女';
	   }
       //document.getElementById("sex1").value='女';
   }
}            

function showBirthdayall(idCardType,val,idnum,xb,sr,xb2,sr2){  

    var yyyy="";         //年
    var mm="";           //月
    var dd="";           //日
    var sex="";          //性别：1-男，2-女
   if (idCardType=="请选择") {
   	    alert("请选择证件类型");
   	    return;
   }
   
   if (idCardType!="身份证") {
   	return;
   }      
       
   var verifyInfo = checkIDCardNum(val);
   //如果身份证号码不合法，改变身份证号码输入框颜色，并把其他置空
   if (verifyInfo[0]==false) { 
        
			 document.getElementById(idnum).style.border='red solid 1px';
			 document.getElementById(sr).value="";
			 document.getElementById(xb).value=""; 
        //自己改写了
        /*if(typeof(year)!="undefined") 
            year.value = "";  
        if(typeof(month)!="undefined") 
            month.value = "";      
        if(typeof(day)!="undefined") 
            day.value = "";
        */      
        
        //document.getElementById("bdyear").value="";
   		//document.getElementById("bdmonth").value="";
   		//document.getElementById("bdday").value="";
        
        
  	    return;
   }
   else{                       
        
		document.getElementById(idnum).style.border='#999 solid 1px';
        yyyy=verifyInfo[1];
        mm=verifyInfo[2];
        dd=verifyInfo[3];
        sex=verifyInfo[4];
   }          
   
   var birthdayValue = yyyy+'-'+mm+'-'+dd;
   
	document.getElementById(sr).value=birthdayValue;
   	document.getElementById(sr2).value=birthdayValue;
   //document.getElementById("bdyear").value=yyyy;
   //document.getElementById("bdmonth").value=mm;
   //document.getElementById("bdday").value=dd;
   
    /*document.getElementById("bdyear1").value=yyyy;
	document.getElementById("bdmonth1").value=mm;
	document.getElementById("bdday1").value=dd;*/
   	
   if (sex==1){
        
			document.getElementById(xb).value='男'; 
			document.getElementById(xb2).value='男'; 
        //document.getElementById("sex1").value='男'; 
   }else{
       
	   	 document.getElementById(xb).value='女';
	     document.getElementById(xb2).value='女';
       //document.getElementById("sex1").value='女';
   }
}            


//验证身份证号码是否正确
function checkIDCardNum(idCardNum){
    var id_length=idCardNum.length; 
    var yyyy="";         //年
    var mm="";           //月
    var dd="";           //日
    var sex="";          //性别：1-男，2-女
          
    if (id_length==0){
        alert("请输入身份证号码!");
        return [false,yyyy,mm,dd,sex];
    }

    if (id_length!=15 && id_length!=18){
        alert("身份证号长度应为15位或18位！");
        return [false,yyyy,mm,dd,sex];
    } 
                 
    //验证15位身份证号码   
    if (id_length==15){   
        //校验每一位的合法性
        for(var i=0;i<15;i++){
            if(idCardNum.charAt(i)<'0'||idCardNum.charAt(i)>'9'){
                alert("身份证号码必须是数字");
                return [false,yyyy,mm,dd,sex];
                break;
            }
        }
        
        if(parseInt(idCardNum.substring(6,8))<10){
            yyyy = '20'+idCardNum.substring(6,8);
        }
        else{
            yyyy = '19'+idCardNum.substring(6,8);
        }
        //yyyy="19"+idCardNum.substring(6,8);
        mm=idCardNum.substring(8,10);
        dd=idCardNum.substring(10,12);
   
        if (mm>12 || mm<=0){
            alert("输入身份证号,月份非法！");
            return [false,yyyy,mm,dd,sex];
        }

        if (dd>31 || dd<=0){
            alert("输入身份证号,日期非法！");
            return [false,yyyy,mm,dd,sex];
        }

        birthday=yyyy+ "-" +mm+ "-" +dd;
                               
        if ("13579".indexOf(idCardNum.substring(14,15))!=-1){
            sex="1";
        }
        else{
            sex="2";
        }
    }
    else if (id_length==18){
        var powers=new Array("7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"); 
        var parityBits=new Array("1","0","x","X","9","8","7","6","5","4","3","2");    
        var power = 0;
        var parityBit=idCardNum.substr(17);  
        
        //校验每一位的合法性
        for(var i=0;i<17;i++){ 
        
            if(idCardNum.charAt(i)<'0'||idCardNum.charAt(i)>'9'){
                alert("身份证号码必须是数字");
                return [false,yyyy,mm,dd,sex];
                break;
            }     
            else{
                //加权
                power+=parseInt(idCardNum.charAt(i))*parseInt(powers[i]); 
            }
        }      
        
        //取模   
        //var mod=parseInt(power)%11;  
        
        //if(parityBit[mod]!=parityBit){   
        //    alert("验证码错误");
        //    return [false,yyyy,mm,dd,sex];
        //}   
        
        if (idCardNum.indexOf("X") > 0 && idCardNum.indexOf("X")!=17 || idCardNum.indexOf("x")>0 && idCardNum.indexOf("x")!=17){
            alert("身份证中\"X\"输入位置不正确！");
            return [false,yyyy,mm,dd,sex];
        }

        yyyy=idCardNum.substring(6,10); 
        
        if (yyyy>2200 || yyyy<1900){
            alert("输入身份证号,年度非法！");
            return [false,yyyy,mm,dd,sex];
        }

        mm=idCardNum.substring(10,12);
        if (mm>12 || mm<=0){
            alert("输入身份证号,月份非法！");
            return [false,yyyy,mm,dd,sex];
        }
       
        dd=idCardNum.substring(12,14);
        if (dd>31 || dd<=0){
            alert("输入身份证号,日期非法！");
            return [false,yyyy,mm,dd,sex];
        }
        
        if (idCardNum.charAt(17)=="x" || idCardNum.charAt(17)=="X")
        {
            if ("x"!=GetVerifyBit(idCardNum) && "X"!=GetVerifyBit(idCardNum)){
                //alert("身份证校验错误，请检查最后一位！");
                //return [false,yyyy,mm,dd,sex];
            }

        }else{
            if (idCardNum.charAt(17)!=GetVerifyBit(idCardNum)){
                //alert("身份证校验错误，请检查最后一位！");
                //return [false,yyyy,mm,dd,sex];
            }
        }
        
        birthday=idCardNum.substring(6,10) + "-" + idCardNum.substring(10,12) + "-" + idCardNum.substring(12,14);
        
        if ("13579".indexOf(idCardNum.substring(16,17)) > -1){
            sex="1";
        }else{
            sex="2";
        }
    }

    return [true,yyyy,mm,dd,sex];

} 

function checkIDCardNumNo(idCardNum){
    var id_length=idCardNum.length; 
    var yyyy="";         //年
    var mm="";           //月
    var dd="";           //日
    var sex="";          //性别：1-男，2-女
          
    if (id_length==0){
        //alert("请输入身份证号码!");
        return [false,yyyy,mm,dd,sex];
    }

    if (id_length!=15 && id_length!=18){
        //alert("身份证号长度应为15位或18位！");
        return [false,yyyy,mm,dd,sex];
    } 
                 
    //验证15位身份证号码   
    if (id_length==15){   
        //校验每一位的合法性
        for(var i=0;i<15;i++){
            if(idCardNum.charAt(i)<'0'||idCardNum.charAt(i)>'9'){
                //alert("身份证号码必须是数字");
                return [false,yyyy,mm,dd,sex];
                break;
            }
        }
        
        if(parseInt(idCardNum.substring(6,8))<10){
            yyyy = '20'+idCardNum.substring(6,8);
        }
        else{
            yyyy = '19'+idCardNum.substring(6,8);
        }
        //yyyy="19"+idCardNum.substring(6,8);
        mm=idCardNum.substring(8,10);
        dd=idCardNum.substring(10,12);
   
        if (mm>12 || mm<=0){
            //alert("输入身份证号,月份非法！");
            return [false,yyyy,mm,dd,sex];
        }

        if (dd>31 || dd<=0){
            //alert("输入身份证号,日期非法！");
            return [false,yyyy,mm,dd,sex];
        }

        birthday=yyyy+ "-" +mm+ "-" +dd;
                               
        if ("13579".indexOf(idCardNum.substring(14,15))!=-1){
            sex="1";
        }
        else{
            sex="2";
        }
    }
    else if (id_length==18){
        var powers=new Array("7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"); 
        var parityBits=new Array("1","0","x","X","9","8","7","6","5","4","3","2");    
        var power = 0;
        var parityBit=idCardNum.substr(17);  
        
        //校验每一位的合法性
        for(var i=0;i<17;i++){ 
        
            if(idCardNum.charAt(i)<'0'||idCardNum.charAt(i)>'9'){
                //alert("身份证号码必须是数字");
                return [false,yyyy,mm,dd,sex];
                break;
            }     
            else{
                //加权
                power+=parseInt(idCardNum.charAt(i))*parseInt(powers[i]); 
            }
        }      
        
        //取模   
        //var mod=parseInt(power)%11;  
        
        //if(parityBit[mod]!=parityBit){   
        //    alert("验证码错误");
        //    return [false,yyyy,mm,dd,sex];
        //}   
        
        if (idCardNum.indexOf("X") > 0 && idCardNum.indexOf("X")!=17 || idCardNum.indexOf("x")>0 && idCardNum.indexOf("x")!=17){
            //alert("身份证中\"X\"输入位置不正确！");
            return [false,yyyy,mm,dd,sex];
        }

        yyyy=idCardNum.substring(6,10); 
        
        if (yyyy>2200 || yyyy<1900){
            //alert("输入身份证号,年度非法！");
            return [false,yyyy,mm,dd,sex];
        }

        mm=idCardNum.substring(10,12);
        if (mm>12 || mm<=0){
            //alert("输入身份证号,月份非法！");
            return [false,yyyy,mm,dd,sex];
        }
       
        dd=idCardNum.substring(12,14);
        if (dd>31 || dd<=0){
            //alert("输入身份证号,日期非法！");
            return [false,yyyy,mm,dd,sex];
        }
        
        if (idCardNum.charAt(17)=="x" || idCardNum.charAt(17)=="X")
        {
            if ("x"!=GetVerifyBit(idCardNum) && "X"!=GetVerifyBit(idCardNum)){
               // alert("身份证校验错误，请检查最后一位！");
                //return [false,yyyy,mm,dd,sex];
            }

        }else{
            if (idCardNum.charAt(17)!=GetVerifyBit(idCardNum)){
                //alert("身份证校验错误，请检查最后一位！");
                //return [false,yyyy,mm,dd,sex];
            }
        }
        
        birthday=idCardNum.substring(6,10) + "-" + idCardNum.substring(10,12) + "-" + idCardNum.substring(12,14);
        
        if ("13579".indexOf(idCardNum.substring(16,17)) > -1){
            sex="1";
        }else{
            sex="2";
        }
    }

    return [true,yyyy,mm,dd,sex];

} 
//15位转18位中,计算校验位即最后一位
function GetVerifyBit(id){
    var result;
    var nNum=eval(id.charAt(0)*7+id.charAt(1)*9+id.charAt(2)*10+id.charAt(3)*5+id.charAt(4)*8+id.charAt(5)*4+id.charAt(6)*2+id.charAt(7)*1+id.charAt(8)*6+id.charAt(9)*3+id.charAt(10)*7+id.charAt(11)*9+id.charAt(12)*10+id.charAt(13)*5+id.charAt(14)*8+id.charAt(15)*4+id.charAt(16)*2);
    
    nNum=nNum%11;
    switch (nNum) {
       case 0 :
          result="1";
          break;
       case 1 :
          result="0";
          break;
       case 2 :
          result="X";
          break;
       case 3 :
          result="9";
          break;
       case 4 :
          result="8";
          break;
       case 5 :
          result="7";
          break;
       case 6 :
          result="6";
          break;
       case 7 :
          result="5";
          break;
       case 8 :
          result="4";
          break;
       case 9 :
          result="3";
          break;
       case 10 :
          result="2";
          break;
    }
    //document.write(result);
    
    return result;
}  
