function checkIdentityCard(idcard) {
    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:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}
    var Y,JYM;
    var S,M;
    var idcard_array = new Array();
    idcard_array = idcard.split("");
    //地区校验
    if (area[parseInt(idcard.substr(0, 2))] == null) return false;
    //身份证号码位数及格式校验
    switch (idcard.length) {
        case 15:
            if ((parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0 || ((parseInt(idcard.substr(6, 2)) + 1900) % 100 == 0 && (parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0 )) {
                ereg = /^[1-9][0-9]{5}[0-9]{2}((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]))[0-9]{3}$/;//测试出生日期的合法性
            }
            else {
                ereg = /^[1-9][0-9]{5}[0-9]{2}((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]))[0-9]{3}$/;//测试出生日期的合法性
            }
            if (idcard == '111111111111111')
                return false;
            if (ereg.test(idcard)) return true;
            else return false;
            break;
        case 18:
            //18位身份证号码检测
            //出生日期的合法性检测
            //闰年月日:((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]))
            //平年月日:((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 (parseInt(idcard.substr(6, 4)) % 4 == 0 || (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard.substr(6, 4)) % 4 == 0 )) {
                ereg = /^[1-9][0-9]{5}19[0-9]{2}((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]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式
            }
            else {
                ereg = /^[1-9][0-9]{5}19[0-9]{2}((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]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
            }
            if (ereg.test(idcard)) {//测试出生日期的合法性
                //计算校验位
                S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
                        + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
                        + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
                        + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
                        + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
                        + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
                        + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
                        + parseInt(idcard_array[7]) * 1
                        + parseInt(idcard_array[8]) * 6
                        + parseInt(idcard_array[9]) * 3;
                Y = S % 11;
                M = "F";
                JYM = "10X98765432";
                M = JYM.substr(Y, 1);//判断校验位
                if (M == idcard_array[17]) return true; //检测ID的校验位
                else return false;
            }
            else return false;
            break;
        default:
            return false;
            break;
    }
}

/**
	机票验证
	@param str  被检查的字符串
*/

function isTicket(str){

	var len = str.length;
	if(len!=13)
		return false;
	
	var regex = /^999\d{10}$/gi; 
	var result =  regex.test(str);
	return  result;
}
/**
* 判断字符长度
* @param str 被检查的字符串
* @return 检查字符串的长度
*/
function getStrLength(str) {
    var len = str.length;
    for (i = 0; i < len; i++) {
        if (str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255) {
         len++;
      }
    }
    return len;
}
/**
判断是否为正确电话号码
@param telStr 被检查的电话号码
@return 返回true或false
**/
function isMobile(telStr){
	
	var No="0123456789()+-";
	if(telStr.length==0)
	return false;
	for(var i=0;i<telStr.length;i++){
		var Checkstr=telStr.charAt(i);
		if(No.indexOf(Checkstr)==-1)
		return false;
	}
	return true;
}
/**
* 检测是否是数字（正整型）
* @param str 被检查的字符串
* @return true; false
*/
function isNumber(str) {
   var Letters = "0123456789";
   if(str.length==0)
	   return false

    for (i = 0; i < str.length; i++) {

	  var checkChar = str.charAt(i);
      if (Letters.indexOf(checkChar) == -1)
         return false;
    }
     return true;
}

/**
手机号码检验
* @param str 被检查的字符串

* @return true; false
*/
function isPhone(str){
   var Letters = "0123456789";
   if(str.length==0)
	   return false
   if(str.length!=11)
   	   return false;
   for(i = 0; i < str.length; i++){
	  var checkChar = str.charAt(i);
	  if(i==0&&parseInt(checkChar)!=1)
	  	 return false;
      if (Letters.indexOf(checkChar) == -1)
         return false;
   }
   return true;
}



//校验register.email是否正确
function isEmail(str){
	if(str.length=0)
	return false;
	if(str.charAt(0)=="."||
		str.charAt(0)=="@"||
		str.indexOf('@',0)==-1||
		str.indexOf('.',0)==-1||
		str.lastIndexOf('@')==
		str.length-1 ||
		str.lastIndexOf('.')==
		str.length-1 )
		return false;
		return true;
}

/**弹出提示信息
@obj    指定的表单控件
@message 提示信息的内容
**/
function showMsg(message,obj){
	alert(message);
	if(obj){
		obj.focus();
		obj.select();
	}
}

/**弹出提示信息，js不能对方法进行重载**/
function showSleMsg(message){
	alert(message);
}

/**弹出提示信息，js不能对方法进行重载**/
function showDivMsg(objId,divId){

}
/**
* 用来验证页面input类型为text的控件
*/

function validateInput(){
  var flag=false;		      /**确定是否弹出提示信息**/
  var message="";			  /**根据objtype验证，返回为false时，弹出的提示信息内容**/
  var obj = document.getElementsByTagName("input");
  for(var j=0;j<obj.length;j++){
	var objType=obj[j].type
	if(objType!="text")continue;
	else if(obj[j]){
		var objValue=obj[j].value;					/***取对象的值**/
		if(objValue==null||objValue.length==0)
	        objValue="";
	        
		var objDesc=obj[j].label;					/**取对象的描述**/
		if(objDesc==null||objDesc.length==0)
			objDesc="";

	   	var isEmpty=obj[j].isEmpty;					/**判断对象是否允许为空**/
	    if(isEmpty!=null){
	         if(isEmpty=="false"){
	              if(objValue==""){
	              	  message=objDesc+"不能为空!";
	                  showMsg(message,obj[j]);
	                  return false;
	               }
	          }
	     }
	
		/**当isEmpty=false的字段有值时，根据不同的dtype,进行验证**/
		 var dtype=obj[j].dtype;
		 if(dtype!=null&&objValue!=""){
			if(dtype=="mobile"){
				message=objDesc+"输入不正确!"+"\r\n"+"格式如下:028-87654433";
				flag=isMobile(objValue);
		    }else if(dtype=="identity"){
				message=objDesc+"输入不正确,请输入正确的身份证格式!";
				flag=checkIdentityCard(objValue);
			}else if(dtype=="text"){
				flag=true;
			}else if(dtype=="number"){
				message=objDesc+"输入不正确,请输入0123456789之间的数字!";
				flag=isNumber(objValue);
				
			}else if(dtype=="email"){
				message=objDesc+"输入邮箱地址不正确!"+"\r\n"+"格式如下:tiger@163.com";
				flag=isEmail(objValue);
				
			}else if(dtype=="phone"){
				message=objDesc+"不正确!"+"\r\n"+"格式如下:18612345678";
				flag=isPhone(objValue);
			}else if(dtype=="ticket"){
				message=objDesc+"不正确,"+"\r\n"+"请正确填写13位电子客票号码！";
				flag=isTicket(objValue);
			}
			
			if(!flag){
				 showMsg(message,obj[j]);
			     return false;
		 	}
		 }
		
		/**判断输入的长度是否超过最大允许长度,maxlength的长度设置为数据字段长度**/
	     var  allowlength=obj[j].maxlength;
		 if(allowlength!=null){
		  	 var allowlen=parseInt(allowlength);
		  	 var contentLength=getStrLength(objValue);
			 if(!isNaN(allowlen)){
			    if(contentLength>allowlen){
			       message=objDesc+"只能输入"+parseInt(allowlength/2)+"个汉字)!";
				   showMsg(message,obj[j]);
				   return false;
			    }
			 }
		 }
	  }
	 
	}
	 return true;
}
/**select控件判断**/
function validateSelect(objMsg){
	var message="";
	var objSelect=document.getElementsByTagName("select");
	for(var j=0;j<objSelect.length;j++){
		var objDesc=objSelect[j].label;					/**取对象的描述**/
		if(objDesc==null||objDesc.length==0)
			objDesc="";
		var objValue=objSelect[j].value;
		var isEmpty=objSelect[j].isEmpty;					/**判断对象是否允许为空**/
	    if(isEmpty!=null){
	         if(isEmpty=="false"){
	              if(objValue=="" || objValue==null){
	                  message=objDesc+"不能为空!";
	                  showSleMsg(message);
	                  return false;
	               }
	          }
	     }
	    
	}
	 return true;
}
/**表单提交数据校验**/
function formDataValid(objMsg){
	/**验证input控件**/
	if(!validateInput(objMsg))return false;
	/**验证select控件**/
	if(!validateSelect(objMsg))return false;
	return true;
}


