﻿// JScript 文件

function check_ID_card(id1, myid,t,o,kongjian) {
    var ID_card = document.getElementById(id1).value; 
    var IDcardLen = ID_card.length;   
    var fMod = 11;            //身份证算法求模关键值   
    var oldIDLen = 15;   //旧身份证长度     
    var newIDLen = 18;       //新身份证长度   
    var yearFlag = "19";     //新身份证年份标志      
    var Wi = new Array();       //位权值数组   
    var varArray = new Array();   
    var birthday = '';  //生日   
    var checkDigit = '';    //校验位   
    var numSum = 0;         //数字和   
    var regStr = /^\d{15,17}([\dxX]{1})?$/; 
    var nan=0; 
    var ko; 
    if(kongjian=="身份证")
    {
        ko="身份证"
    }
    else
    {
    ko=document.getElementById(kongjian).value;
    }
    if(ko=="身份证")
    {
  
    if ((IDcardLen != 15) && (IDcardLen != 18)) {   
        alert("身份证长度必须为15或18位.");   
        document.getElementById(myid).value="";
        document.getElementById("cardvalue").value="1";
        document.getElementById(id1).parentNode.parentNode.parentNode.parentNode.style.border="solid 1px #FF0000";
        return false;   
    }
    else
    {
        document.getElementById("cardvalue").value="0";
    }
    if(!regStr.test(ID_card)){   
        alert("身份证号码必须为数字(18位的新身份证最后一位可以是x).");  
        document.getElementById(myid).value=""; 
         document.getElementById(id1).parentNode.parentNode.parentNode.parentNode.style.border="solid 1px #FF0000";
        document.getElementById("cardvalue").value="1";
        return false;   
    }
    else
    {
        document.getElementById("cardvalue").value="0";
    }
    if(IDcardLen == 15){ 
     nan=ID_card.substring(14,15);  
        birthday = "19" + ID_card.substring(6,8) + "-" + ID_card.substring(8,10) + "-" + ID_card.substring(10,12);   
    }else{   
        birthday = ID_card.substring(6,10) + "-" + ID_card.substring(10,12) + "-" + ID_card.substring(12,14);   
    }
    if(!isDate(birthday)){   
        alert("身份证号码中的日期格式不对(第6-12位).");
        document.getElementById(myid).value="";
        document.getElementById("cardvalue").value="1";
         document.getElementById(id1).parentNode.parentNode.parentNode.parentNode.style.border="solid 1px #FF0000";
        return false;   
    }
     else
    {
        document.getElementById("cardvalue").value="0";
    }  
    if(IDcardLen == 18){   
        for(var i=0;i<newIDLen-1;i++){        
            var k = Math.pow(2,newIDLen-1-i);    
            Wi[i] = k % 11;    
        }    
        for(var i=0;i<IDcardLen-1;i++){   
            varArray[i] = ID_card.charAt(i);   
            varArray[i] = varArray[i]*Wi[i];   
            numSum = numSum + varArray[i];   
        }   
        checkDigit = 12 - numSum % 11;   
        switch (checkDigit) {   
            case 10:   
                checkDigit = 'X';   
                break;   
            case 11:   
                checkDigit = 0;   
                break;   
            case 12:   
                checkDigit = 1;   
                break;   
         }   
         // check last digit   
         if (ID_card.charAt(17).toUpperCase() != checkDigit) {   
             alert("身份证号码不对");  
             document.getElementById(myid).value=""; 
             document.getElementById("cardvalue").value="1";
              document.getElementById(id1).parentNode.parentNode.parentNode.parentNode.style.border="solid 1px #FF0000";
             return false;
         }
         else
         {
            document.getElementById("cardvalue").value="0";
         }
    }
     document.getElementById(id1).parentNode.parentNode.parentNode.parentNode.style.border="0px";
    document.getElementById(myid).value=birthday;
    
    if(IDcardLen == 18)
    {       
        nan=ID_card.substring(16,17);
        if(nan %2 ==0)
        {
            document.getElementById(o).value="false";
        }
        else
        {
            document.getElementById(o).value="true";
        }
    }
    else if(IDcardLen == 15)      
    {
        nan=ID_card.substring(14,15);
        if(nan %2 ==0)
        {
            document.getElementById(o).value="false";
        }
        else
        {
            document.getElementById(o).value="true";
        }
    }
   
    return true;   
    }
    else
    {
        return true; 
    }
}   
  
//日期格式验证(yyyy-mm-dd,其中月，日可以只有一位）   
//   
function isDate(dateStr){   
    var B, D=0;   
    // Split into $1 $2 $3   
    B = /^(\d{4})-(\d|\d\d)-(\d|\d\d)$/.test(dateStr);   
    if (B) with (RegExp){   
        // $1 $2 $3 = Y M D   
        D = new Date($1, $2-1, $3);   
        // test Y M D valid   
        B = ((D.getMonth()==$2-1) && (D.getFullYear()==$1));   
    }   
    return B;   
}  