function checkIdCardNo(idcard) {
	if(idcard.length!=15 && idcard.length!=18) return false;
	var area = [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];
	var areaCode = idcard.substr(0,2);
	var areaok = false;
	for(i=0;i<area.length;i++){
		if(areaCode==area[i]){
			areaok = true;
			break;
		}
	}
	if(!areaok) return false;
	var now = new Date();
	var nowYear = now.getFullYear();
	//身份号码位数及格式检验 
	switch(idcard.length){ 
		case 15: 
			var birthYear = 1900+parseInt(idcard.substr(6,2));
			var birthDay = idcard.substr(8,4);			
			break; 
		case 18:
			var birthYear = parseInt(idcard.substr(6,4));
			var birthDay = idcard.substr(10,4);		
			//计算校验位 
			S = (parseInt(idcard.substr(0,1)) + parseInt(idcard.substr(10,1))) * 7 
			+ (parseInt(idcard.substr(1,1)) + parseInt(idcard.substr(11,1))) * 9 
			+ (parseInt(idcard.substr(2,1)) + parseInt(idcard.substr(12,1))) * 10 
			+ (parseInt(idcard.substr(3,1)) + parseInt(idcard.substr(13,1))) * 5 
			+ (parseInt(idcard.substr(4,1)) + parseInt(idcard.substr(14,1))) * 8 
			+ (parseInt(idcard.substr(5,1)) + parseInt(idcard.substr(15,1))) * 4 
			+ (parseInt(idcard.substr(6,1)) + parseInt(idcard.substr(16,1))) * 2 
			+ parseInt(idcard.substr(7,1)) * 1 
			+ parseInt(idcard.substr(8,1)) * 6 
			+ parseInt(idcard.substr(9,1)) * 3 ;
			Y = S % 11;
			M = "F";
			JYM = "10X98765432";
			M = JYM.substr(Y,1);//判断校验位
			if(M.toLowerCase() != idcard.substr(17,1).toLowerCase()) return false; //检测ID的校验位 
			break;
		default: 
			return false; 
	}
	if(birthYear>nowYear || birthYear<nowYear-120) return false;
	if((birthYear % 4 == 0 && birthYear % 100!=0) || (birthYear % 100==0 && birthYear % 4 == 0 )){
		ereg=/^((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))$/;//测试出生日期的合法性 
	} else { 
		ereg=/^((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))$/;//测试出生日期的合法性 
	}
	if(ereg.test(birthDay)) return true; 
	else return false; 
}
