﻿var yyyy;
var mm;
var dd;
var birthday;
var sex;
var IdCardErrorMsg='';
function getYear(){
    return yyyy;
}
function getMonth(){
    return mm;
}
function getDate(){
    return dd;
}
function getBirthday(){
    return birthday;
}
function getSex(){
    return sex;
}
function getAge(){
    var curUserYear = getYear();
    var curUserMonth = getMonth();
    var CurUserDD = getDate();

    var age = parseInt(CurYear)-parseInt(curUserYear);
    
	if(curUserMonth>CurMonth){
		age=age-1
	}else if(CurMonth==curUserMonth){
    	if(CurUserDD<CurDD)
    		age=age-1;
	}
	return age;
}
//判断是否大龄,男50,女40
function isBigAge(){
    if (parseInt(getAge())>=40 && parseInt(getSex())==2)
        return "1";
    if (parseInt(getAge())>=50 && parseInt(getSex())==1)
        return "1";
    return "0";
}

//校验身份证省份
function CheckIdCardCanton(idCard){
    var canton="110,111,120,130,131,132,133,140,142,150,152,210,211,220,222,230,231,232,310,320,321,330,331,332,340,341,342,350,352,359,360,362,370,371,372,339"+
    ",410,411,412,413,420,421,422,429,430,431,432,433,440,441,442,445,450,452,460,500,510,511,512,513,520,522"+
    ",530,532,533,540,542,610,612,620,622,623,630,632,640,642,650,652,653,654,659,710,720,730";
    var id_length=idCard.length;
    var temp_id="";
    if(id_length>3)
    	temp_id=idCard.substring(0,3);
    else
    	return true;
    if(canton.indexOf(temp_id)==-1)
		return true;
	return false;
}
//校验身份证号码
function CheckIdCardValue(idCard){
    var id=idCard;
    var id_length=id.length;

    if (id_length==0){
        IdCardErrorMsg = "<span style='margin-left:20px;'>请输入身份证号码!</span>";
        return false;
    }


//id_length!=15 && 
    if (id_length!=18){
        IdCardErrorMsg ="<span style='margin-left:20px;'>身份证号长度应为18位！</span>";
        return false;
    }

    if (id_length==15){
        yyyy="19"+id.substring(6,8);
        mm=id.substring(8,10);
        dd=id.substring(10,12);

        if (mm>12 || mm<=0){
            IdCardErrorMsg =("<span style='margin-left:20px;'>输入身份证号,月份非法！</span>");
            return false;
        }

        if (dd>31 || dd<=0){
            IdCardErrorMsg =("<span style='margin-left:20px;'>输入身份证号,日期非法！</span>");
            return false;
        }
        birthday=yyyy+ "-" +mm+ "-" +dd;

        if ("13579".indexOf(id.substring(14,15))!=-1){
            sex="1";
        }else{
            sex="2";
        }
    }else if (id_length==18){
        if (id.indexOf("X") > 0 && id.indexOf("X")!=17 || id.indexOf("x")>0 && id.indexOf("x")!=17){
            IdCardErrorMsg = ("<span style='margin-left:20px;'>身份证中\"X\"输入位置不正确！</span>");
            return false;
        }

        yyyy=id.substring(6,10);
        if (yyyy>2200 || yyyy<1900){
            IdCardErrorMsg =("<span style='margin-left:20px;'>输入身份证号,年度非法！</span>");
            return false;
        }

        mm=id.substring(10,12);
        if (mm>12 || mm<=0){
            IdCardErrorMsg = ("<span style='margin-left:20px;'>输入身份证号,月份非法！</span>");
            return false;
        }

        dd=id.substring(12,14);
        if (dd>31 || dd<=0){
            IdCardErrorMsg =("<span style='margin-left:20px;'>输入身份证号,日期非法！</span>");
            return false;
        }

        if (id.charAt(17)=="x" || id.charAt(17)=="X")
        {
            if ("x"!=GetVerifyBit(id) && "X"!=GetVerifyBit(id)){
                IdCardErrorMsg = ("<span style='margin-left:20px;'>身份证校验错误，请检查最后一位！</span>");
                return false;
            }

        }else{
            if (id.charAt(17)!=GetVerifyBit(id)){
                IdCardErrorMsg =("<span style='margin-left:20px;'>身份证校验错误，请检查最后一位！</span>");
                return false;
            }
        }

        birthday=id.substring(6,10) + "-" + id.substring(10,12) + "-" + id.substring(12,14);
        if ("13579".indexOf(id.substring(16,17)) > -1){
            sex="1";
        }else{
            sex="2";
        }
    }

    return true;
}
//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;
}
//15位转18位
function Get18(idCard){
	 if (CheckValue(idCard)){
	  var id = idCard;
	  var id18=id;
	  if (id.length==0){
	   	alert("请输入15位身份证号！");
	    return false;
	  }
	  if (id.length==15){
	   if (id.substring(6,8)>20){
	    	id18=id.substring(0,6)+"19"+id.substring(6,15);
	   }else{
	    	id18=id.substring(0,6)+"20"+id.substring(6,15);
	   }
	
	   	id18=id18+GetVerifyBit(id18);
	  }
	
	  return id18;
	 }else{
	  return false;
	 }
}


