//<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
//--身份证号码验证-支持新的带x身份证
function isIdCardNo(num) 
{
    var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
    var error;
    var varArray = new Array();
    var intValue;
    var lngProduct = 0;
    var intCheckDigit;
    var intStrLen = num.length;
    var idNumber = num;    
    var firt6 = idNumber.substring(0,6);
	
    // initialize
    if ((intStrLen != 15) && (intStrLen != 18)) {
        error = "输入身份证号码长度不对！";
        alert(error);
        //frmAddUser.txtIDCard.focus();
        return false;
    }    
    // check and set value
    for(i=0;i<intStrLen;i++) {
        varArray[i] = idNumber.charAt(i);
        if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
            error = "错误的身份证号码！";
            alert(error);
            //frmAddUser.txtIDCard.focus();
            return false;
        } else if (i < 17) {
            varArray[i] = varArray[i]*factorArr[i];
        }
    }
	
    // check the district value
    //var distStr = num.substr(0,6);
    //if (district(distStr) == false) {
	    //alert("行政区划代码不正确!");
		//return false; 
	//}
	
    if (intStrLen == 18) {
        //check date
        var date8 = idNumber.substring(6,14);
        if (checkDate(date8) == false) {
            error = "身份证中日期信息不正确！";
            alert(error);
            return false;
        }        
        // calculate the sum of the products
        for(i=0;i<17;i++) {
            lngProduct = lngProduct + varArray[i];
        }        
        // calculate the check digit
        intCheckDigit = 12 - lngProduct % 11;
        switch (intCheckDigit) {
            case 10:
                intCheckDigit = 'X';
                break;
            case 11:
                intCheckDigit = 0;
                break;
            case 12:
                intCheckDigit = 1;
                break;
        }        
        // check last digit
        if (varArray[17].toUpperCase() != intCheckDigit) {
            //error = "身份证效验位错误!...正确为： " + intCheckDigit + ".";
            error = "身份证最后一位有误!";
            alert(error);
            return false;
        }
    } 
    else{        
        //length is 15  check date
        var date6 = idNumber.substring(6,12);
        if (checkDate(date6) == false) {
            alert("身份证日期信息有误！");
            return false;
        }
    }
    //alert ("Correct.");
	document.Form1.Submit.disabled=false;
    return true;
}

function checkDate(dateStr)
{ 
	//length is 15
    if(dateStr.length == 6){
	    dateStr = "19" + "" + dateStr
	}
	//YYYYMMDD 格式，考虑闰年
	var matchArray = dateStr.match(/^((((1[6-9]|[2-9]\d)\d{2})(0?[13578]|1[02])(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})(0?[13456789]|1[012])(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})(0?2)(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))(0?2)(29)))$/);
    
	if (matchArray == null)
	{
	    //alert("出生日期不正确!");
		return false; 
    }
}  

function district(Str)
{ 
	var matchArr = Str.match(/^(((1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|71|8[12])(0[1-9]|[12]\d|3[0-4]|[45][0-3]|90)(([0-4]|8)\d)))$/);
	if (matchArr == null)
	{
	    //alert("行政区划代码不正确!");
		return false; 
    }
}  
//-->