var aCity={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:"国外"}
//此文件提供WEB应用程序中常用的javascript方法。
////////////////////////////////////////////////////////////////////////////////
/*
 *--------------- 客户端表单通用验证CheckForm(oForm) -----------------
 * 功能:通用验证所有的表单元素.
 * 使用:
 *    <form name="form1" onsubmit="return CheckForm(this)">
 *    <input type="text" name="id" check="^\S+$" warning="id不能为空,且不能含有空格">
 *    <input type="submit">
 *    </form>
 * author:wanghr100(灰豆宝宝.net)
 * email:wanghr100@126.com
 * update:19:28 2004-8-23
 * 注意:写正则表达式时一定要小心.不要让"有心人"有空子钻.
 * 已实现功能:
 * 对text,password,hidden,file,textarea,select,radio,checkbox进行合法性验证
 * 待实现功能:把正则表式写成个库.
 *--------------- 客户端表单通用验证CheckForm(oForm) -----------------
 */
////////////////////////////////////////////////////////////////////////////////

//主函数
function CheckForm(oForm)
{
    var els = oForm.elements;
    //遍历所有表元素
    for(var i=0;i<els.length;i++)
    {
        //是否需要验证
        if(els[i].check)
        {
            //取得验证的正则字符串
            var sReg = els[i].check;
            //取得表单的值,用通用取值函数
            var sVal = GetValue(els[i]);
            //字符串->正则表达式,不区分大小写
            var reg = new RegExp(sReg,"i");
            if(!reg.test(sVal))
            {
                //验证不通过,弹出提示warning
                alert(els[i].warning);
                //该表单元素取得焦点,用通用返回函数
                GoBack(els[i])  
                return false;
            }
        }
    }
}

//通用取值函数分三类进行取值
//文本输入框,直接取值el.value
//单多选,遍历所有选项取得被选中的个数返回结果"00"表示选中两个
//单多下拉菜单,遍历所有选项取得被选中的个数返回结果"0"表示选中一个
function GetValue(el)
{
    //取得表单元素的类型
    var sType = el.type;
    switch(sType)
    {
        case "text":
        case "hidden":
        case "password":
        case "file":
        case "textarea": return el.value;
        case "checkbox":
        case "radio": return GetValueChoose(el);
        case "select-one":
        case "select-multiple": return GetValueSel(el);
    }
    //取得radio,checkbox的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数
    function GetValueChoose(el)
    {
        var sValue = "";
        //取得第一个元素的name,搜索这个元素组
        var tmpels = document.getElementsByName(el.name);
        for(var i=0;i<tmpels.length;i++)
        {
            if(tmpels[i].checked)
            {
                sValue += "0";
            }
        }
        return sValue;
    }
    //取得select的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数
    function GetValueSel(el)
    {
        var sValue = "";
        for(var i=0;i<el.options.length;i++)
        {
            //单选下拉框提示选项设置为value=""
            if(el.options[i].selected && el.options[i].value!="")
            {
                sValue += "0";
            }
        }
        return sValue;
    }
}

//通用返回函数,验证没通过返回的效果.分三类进行取值
//文本输入框,光标定位在文本输入框的末尾
//单多选,第一选项取得焦点
//单多下拉菜单,取得焦点
function GoBack(el)
{
    //取得表单元素的类型
    var sType = el.type;
    switch(sType)
    {
        case "text":
        case "hidden":
        case "password":
        case "file":
        case "textarea": el.focus();var rng = el.createTextRange(); rng.collapse(false); rng.select();
        case "checkbox":
        case "radio": var els = document.getElementsByName(el.name);els[0].focus();
        case "select-one":
        case "select-multiple":el.focus();
    }
}

//检测所有控件输入值的合法性

function checkAll(v_frm) {
	//var p_frm = document.forms[getNetuiTagName(v_frm)];
    var p_frm = v_frm;
	var eCount = p_frm.elements.length;
	var v="";
    
    var element_type = "";//控件类型，只针对下拉框

	var discript = "";//输入值名称

	var nullflag = "1";//是否可为空值，0－不可，1－可
	var v_type = "s";//输入值类型，s－字符串， i－整数，f－浮点数，d－日期，e－邮件，c－身份证，p－邮编,phone -电话号码,m -移动电话,ip - ip地址,t - 短时间

	var length = "";//输入值长度

	var mins = "";//最小输入值

	var maxs = "";//最大输入值


	for(var i = 0; i < eCount; i++) {
        
        element_type = "";
		discript = "";
		v_type = "s";
		length = "";
		nullflag = "1";
		maxs = "";
		mins = "";


		var e=p_frm.elements[i];
		if (e.style.behavior == null || e.style.behavior == "")
			continue;
		parseTag(e.style.behavior);
        if (( v = getNextValue()) != null) {
			element_type = v;
		}
		if (( v = getNextValue()) != null) {
			discript = v;
		}
		if ((v = getNextValue()) != null) {
			nullflag = v;
		}
		if ((v = getNextValue()) != null) {
			v_type = v;
		}
		if ((v = getNextValue()) != null) {
			length = v;
		}
		if ((v = getNextValue()) != null) {
			mins = eval(v);
		}
		if ((v = getNextValue()) != null) {
			maxs = eval(v);
		}
		if (checkValidate(element_type,e, discript, v_type, length, nullflag, maxs, mins) == "0")
			return false;
	}
	return true;
}
//判断是否是纯空格字符串
function isSpaceStr(str) {
	var e;
	var result = false;
	for(var i=0;i<str.length;i++)
	{
		e = str.charAt(i);
		if(e != " ")
		{
			result = true;
			break;
		}
	}
	return result;
}
//判断是否是纯回车
function isEnter(str)
      {
          
         var len=str.length;
         if(len<1) return false;
         for(var i=0;i<len;i++){   
            str=str.replace("\n"," ");
            str=str.replace("\r"," ");
	        if(str.substring(i,i+1)!=" "){
		              return true;
	                 }
            }
          return false;
    }
/**
* 检验用户指定的对象是否合法
* @param element        用户需要校验的对象
* @param discript       对象的描述

* @param type           对象的类型:
*                       i  整数
*                       f  浮点
*                       s  字符
*                       d  日期
*                       e  邮件
*                       c  身份证
                        n  验证用户名的
*                       p  邮编
* @param length         对象的最大长度

* @param type           能否为空：

*                       1  可以为空
*                       0  不能为空
* @param maxs           最大值

* @param mins           最小值

* @return               全部条件合法返回true；否则返回false
*/
function checkValidate(element_type,element, discript, type, length, nullflag, maxs, mins) {
    if (element == "") {
        window.alert("函数调用出错,请输入控件!")
        return(0);
    }

    if (discript == "") {
        window.alert("函数调用出错,请输入控件描述!")
        return(0);
    }

    if (nullflag == 0) {
        if (element_type == "select") {
            if ( element.style.display=="block" || element.style.display=="") {
                if (element.value == "0") {
                    window.alert("请选择" + discript + "！");
                    element.focus();
                    return(0);  
                }
            }
        } else {
            if (element.value == "" || !isSpaceStr(element.value) || !isEnter(element.value)) {
                window.alert("请输入" + discript + "！");
                element.focus();
                return(0);
            }
        }
    }else
	{
		if(element.value=="")  
  		     return(1);
	}
    if (type != "") {
        switch (type) {
    		case "i"://整数
    			{
    				if (element.value.length != 0 && isInteger(element.value) != true) {
    					window.alert(discript + "必须输入整数！")
    					element.focus();
    					return(0);
    				}else if (element.value.length == 0 ){
    				    //element.value = "0" ;
    				}
    				break;
    			}

    		case "f"://浮点数

    			{
    				if (element.value.length != 0 && isNaN(element.value) == true) {
    			        window.alert(discript + "必须输入数字！")
    					element.focus();
    					return(0);
    				} if (element.value.length == 0 ){
    				    //element.value = "0" ;
    				}
    				break;
    			}
    		case "s"://字符串

    			{
    				break;
    			}
    		case "d"://日期
    			{
    				if (element.value.length != 0 && isDate(element.value) == false) {
    			        window.alert(discript + "必须输入有效日期!(日期格式:yyyy-mm-dd)")
    					element.focus();
    					return(0);
    				}
    			    break;
    			}
    	    case "e"://邮件
    			{
    				if (element.value.length != 0 && isEmail(element.value) == false) {
    			        window.alert("请输入有效的" + discript + "！")
    					element.focus();
    					return(0);
    				}
    			    break;
    			}
    		case "c"://身份证

    			{
    				if (element.value.length != 0 && cidInfo(element.value) == false) {
    			        window.alert("请输入有效的" + discript + "！")
    					element.focus();
    					return(0);
    				}
    			    break;
    			}
    		case "p"://邮编
    			{
    				if (element.value.length != 0 && isPostCode(element.value) == false) {
    			        window.alert("请输入有效的" + discript + "！")
    					element.focus();
    					return(0);
    				}
    			    break;
    			}
			case "m"://移动电话
    			{
    				if (element.value.length != 0 && isMoveTel(element.value) == false) {
    			        window.alert("请输入有效的" + discript + "！")
    					element.focus();
    					return(0);
    				}
    			    break;
    			}
			case "ip"://ip地址
    			{
    				if (element.value.length != 0 && isIP3(element.value) == false) {
    			        window.alert("请输入有效的" + discript + "！")
    					element.focus();
    					return(0);
    				}
    			    break;
    			}
			case "t"://短时间 (13:04:15)
    			{
    				if (element.value.length != 0 && isShortTime(element.value) == false) {
    			        window.alert("请输入有效的" + discript + "！")
    					element.focus();
    					return(0);
    				}
    			    break;
    			}
			case "phone"://电话号码
    			{
    				if (element.value.length != 0 && PhonesCheck(element.value) == false) {
    			        window.alert("请输入有效的" + discript + "！")
    					element.focus();
    					return(0);
    				}
    			    break;
    			}
    		case "quhao"://电话号码(区号+电话)
    			{
    				if (element.value.length != 0 && PhonesQHCheck(element.value) == false) {
    			        window.alert("请输入有效的" + discript + "！ (格式:区号-电话)")
    					element.focus();
    					return(0);
    				}
    			    break;
    			}	
    		case "simpleP"://简单电话号码(数字,'(',')','-')
    			{
    				if (element.value.length != 0 && SimplePhone(element.value) == false) {
    			        window.alert("请输入有效的" + discript + "！")
    					element.focus();
    					return(0);
    				}
    			    break;
    			}    			
    		case "n"://用户名只能是数字字母开头，包含字母数字下划线和点。
    			{

    			   if (element.value.length != 0 && namevalidate(element.value,discript)== false) {
    			     element.focus();
    					return(0);
    				}
    			    break;
    			}    				
    	}
    }

    if (length != "" && type != "d") {
        if (lengthCheck(element.value, length)) {
    	    window.alert(discript + "的长度必须小于" + length + "个字符！");
    	    element.focus();
    	    return(0);
    	}
    }

    if (maxs != "" && mins != "") 
	{
		if(type =="s" || type == "n")
		{
			if (lenInFact(element)<mins || lenInFact(element)>maxs) 
			{
				window.alert(discript + "的长度必须小于"+ maxs + "个字符, 大于"  + mins + "个字符！");
				element.focus();
				return(0);
			}
		}
		else
		{
			if (element.value < mins || element.value > maxs) 
			{
				window.alert(discript + "的值必须小于" + maxs + ", 大于" + mins + "！");
				element.focus();
				return(0);
			}
		}
    } 
	else 
	{
        if (maxs != "") 
		{
		　　
			if(type =="s")
			{
	    	    if (lenInFact(element)> maxs) 
				{
	    	        window.alert(discript + "的长度必须小于" + maxs + "个字符!");
	    		    element.focus();
	    		    return(0);
	    	    }
	    	}
	    	else
	    	{
	    		if (element.value > maxs) 
				{
	    	        window.alert(discript + "的值必须小于" + maxs + "！");
	    		    element.focus();
	    		    return(0);
	    	    }
	    	}
	    	
        }
        if (mins != "") 
		{
			if(type =="s")
			{
	    	    if (lenInFact(element) < mins) 
				{
	    	        window.alert(discript + "的长度必须大于" + mins + "个字符！");
	    		    element.focus();
	    		    return(0);
	    	    }
	    	}
	    	else
	    	{
	    		if (element.value < mins) 
				{
	    	        window.alert(discript + "的值必须大于" + mins + "！");
	    		    element.focus();
	    		    return(0);
	    	    }
	    	}
        }
    }

    return(1);
}
//电话号码的验证

//要求：
　　//(1)电话号码由数字、"("、")"和"-"构成
　　//(2)电话号码为3到8位
　　//(3)如果电话号码中包含有区号，那么区号为三位或四位
　　//(4)区号用"("、")"或"-"和其他部分隔开
　　//(5)移动电话号码为11或12位，如果为12位,那么第一位为0
　　//(6)11位移动电话号码的第一位和第二位为"13"
　　//(7)12位移动电话号码的第二位和第三位为"13"
　　//根据这几条规则，可以与出以下正则表达式：
　　//(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)
function PhoneCheck(s) {
	var str=s;
	var reg=/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/
	
	//var reg=/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}1[3,5][0-9]{9}$)/	
	
	if(reg.test(str)){
		return true;
	}
	else{
		return false;
	}
}

function PhonesCheck(s) {
	var str=s;
	var reg=/(^(\([\d]{3,4}\)|[\d]{3,4}\-){0,1}[\d]{3,8}(\([\d]{1,4}\)|\-[\d]{1,4}){0,1}$)|(^0{0,1}13[\d]{9}$)/;
	
	//var reg=/(^(\([\d]{3,4}\)|[\d]{3,4}\-){0,1}[\d]{3,8}(\([\d]{1,4}\)|\-[\d]{1,4}){0,1}$)|(^0{0,1}1[3,5][\d]{9}$)/;
		
	if(reg.test(str)){
		return true;
	}
	else{
		return false;
	}
}

function PhonesQHCheck(s) {
	var str=s;
	
	var reg=/(^[0-9]{3,4}\-[0-9]{3,8}$)/
		
	if(reg.test(str)){
		return true;
	}
	else{
		return false;
	}
}

function SimplePhone(str){
	var count;
	var numflag;
	for(count = 0; count < str.length; count++){
		numchar = str.charAt(count);
		numflag = 0;
        if(numchar == "(" || numchar == ")" || numchar == "-" ){
			numflag = 1;
		}else{
			numvalue = numchar - '0';
    		if (numvalue >= 0 && numvalue <= 9){
				numflag = 1;
			}
		}
		if(numflag == 0){
			return false;
		}
	}
	return true;
}
 function namevalidate(str,discript){


 //验证用户名是否正确（以数字字母开头结尾，由字母数字，"_",".",组成的字符串）
 	   var startchar = str.charAt(0);
 

  　 var lastchar = str.charAt(str.length-1);
 　 if(!(/^[a-zA-Z0-9]$/.test(startchar))){
 　  alert(discript + "必须以数字或字母开头！");
 　  return false;
 　 }
  　if(!(/^[a-zA-Z0-9]$/.test(lastchar))){
  　　 alert(discript + "必须以数字或字母结尾！");
  　　 return false;
 　 }
  
　　var patrn=/^([a-zA-Z0-9]|[._-]){4,16}$/;

　　if (!patrn.test(str)) 
　　{
　　　alert(discript + "中包含不合法字符或长度不符合要求，请详细阅读提示信息后重新输入！");
　　　return false;  
　　}
　return true; 

}



//移动电话(手机）
//样式:13531214732或013531214732
function isMoveTel(elem){
	var pattern=/^0{0,1}(13|15)[0-9]{9}$/;
	if(pattern.test(elem)){
		return true;
	}else{
		//elert("电话号码不正确");
		return false;
	}
}

//验证IP地址
function isIP3(elem){
  var pattern=/(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])/;
  if(pattern.test(elem)){
    return true;
  }else{
	//alert("ip格式不正确");
    return false;
  }
 }

//短时间(形如:  13:04:06)
//更具弹性的正则表达式:/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/
function isShortTime(elem){
	var pattern=/^([0-9]{1,2})(:)([0-9]{1,2})(:)([0-9]{1,2})$/;
	var temp=elem.match(pattern);
	if(temp==null)
		return false;
	if(temp[1]>=24)
		return false;
	if(temp[3]>=60)
		return false;
	if(temp[5]>=60)
		return false;
	return true;
}
//判断是否整数
function isInteger(integer) {
    var count;
    var numchar;
    var numvalue;
    for (count = 0; count < integer.length; count++) {
    	numchar = integer.charAt(count);
    	numvalue = numchar - '0';
    	if (!(numvalue >= 0 && numvalue <= 9))
    		return false;
    }
    return true;
}

//判断是否有效邮件
function isEmail(mail) {
    if (killSpace(mail) == "") return false;

	var v_email = mail.substring(mail.indexOf("@") + 1)
	if ( (mail.indexOf("@") == -1) ||
              (mail.indexOf("@") == 0)  ||
               (mail.indexOf("@") != mail.lastIndexOf("@")) ||
                 (v_email.indexOf(".") == -1)  ||
	                   (v_email.indexOf(".") == 0) ||
                     ((mail.indexOf(".") + 1) == mail.length) ) {
		return false;
	}
	return true;
}

//身份证简单验证，单纯的位数验证
function isIdCard(idcard){
	var re = /^[\d]{15}|[\d]{18}|[\d]{17}[Xx]$/;
	if(re.test(idcard)){
		//alert("验证通过!");
		return true;
	}
	else{
		//alert("身份证号码错误!");
		return false;
	}
}

//身份证严格验证，包括地区验证、生日验证和校验位验证
//18位公民身份证号码的编排规则:
//身份号码是特征组合码，由十七位数字本体码和一位校验码组成。
//排列顺序从左至右依次为：六位数字地址码，八位数字出生日期码，三位数字顺序码和一位校验码。其含义如下：
//1. 地址码：表示编码对象常住户口所在县(市、旗、区)的行政区划代码。（本函数只对省级地区进行检验）
//2. 出生日期码：表示编码对象出生的年、月、日，年、月、日分别用4位、2位、2位数字表示，之间不用分隔符。（出生日期合法性检验）
//3. 顺序码：表示在同一地址码所标识的区域范围内，对同年、同月、同日出生的人编定的顺序号，顺序码的奇数分配给男性，偶数分配给女性。
//校验的计算方式：
//　　1. 对前17位数字本体码加权求和
//　　公式为：S = Sum(Ai * Wi), i = 0, ... , 16
//　　其中Ai表示第i位置上的身份证号码数字值，Wi表示第i位置上的加权因子，其各位对应的值依次为： 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
//　　2. 以11对计算结果取模
//　　Y = mod(S, 11)
//　　3. 根据模的值得到对应的校验码
//　　对应关系为：
//　　   Y值： 0 1 2 3 4 5 6 7 8 9 10
//　　校验码： 1 0 X 9 8 7 6 5 4 3 2
function cidInfo(idcard){
	var Errors = new Array("验证通过!","身份证号码位数不对!","身份证号码出生日期超出范围或含有非法字符!","身份证号码校验位错误!","身份证地区非法!");
	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 idcard,Y,JYM;
	var S,M;
	var idcard_array = new Array();
	idcard_array = idcard.split("");

	//地区检验
	if(area[parseInt(idcard.substr(0,2))]==null) {
	//	alert(Errors[4]);
		return false;
	}

	//身份号码位数、出生日期的合法性检查及格式检验
	switch(idcard.length){
		case 15:
			//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(ereg.test(idcard)){
				//alert(Errors[0]);
				return true;
			}
			else{ 
				//alert(Errors[2]);
				return false; 
			}
			break;
		
		case 18:
			//18位身份号码检测
			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].toUpperCase()){ 
				//alert(Errors[0]); 
					return true;
				}
				else{
			//alert(Errors[3]);
					return false;
				}
			}
			else{
			//	alert(Errors[2]);
				return false;
			}
			break;

		default:
		//	alert(Errors[1]);
			return false;
			break;
	}
}


//判断是否为邮编

function isPostCode(postCode) {
    var v_postCode = killSpace(postCode);
    if (v_postCode == "") return false;

    if (v_postCode.length != 6) {
        //alert("邮政编码必须为6位数字！");
        return false;
    }

    if (!isInteger(v_postCode)) {
        //alert("邮政编码必须全部为数字！");
        return false;
    }else {
        return true;
    }
}

/**
* 调用此函数校验日期。

* @param s         输入日期string s,如2001-01-01
* @return          若输入的日期没有包含非法字符，以及该日期合法，则返回true；否则返回false
*/
function isDate(s) {
    if (s.length != 10 || (s.charAt(4) != '-' && s.charAt(4) != '/') || (s.charAt(7) != '-' && s.charAt(7) != '/'))
    	return false;
    if (!isInteger(s.substring(0, 4)) || !isInteger(s.substring(5, 7)) || !isInteger(s.substring(8, 10)) || eval(s.substring(0, 4)) < 1 || eval(s.substring(5, 7)) < 1 || eval(s.substring(8, 10)) < 1)
    	return false;
    if (checkDate(s.substring(0, 4), s.substring(5, 7), s.substring(8, 10)) == false)
    	return false;
    return true;
}

//检验日期是否合法

function checkDate(year, month, day) {
    var iyear;
    var imonth;
    var iday;
    if(year.length != 4 || month.length != 2 || day.length != 2)
    	return false;
    if (!isInteger(year) || !isInteger(month) || !isInteger(day))
    	return false;
    iyear = getValueOfInt(year);
    imonth = getValueOfInt(month);
    iday = getValueOfInt(day);
    if (imonth < 1 || imonth > 12) return false;
    switch(imonth) {
    	case 1:
    	case 3:
    	case 5:
    	case 7:
    	case 8:
    	case 10:
    	case 12:
    		if (iday > 31) return false;
    			break;
    	case 4:
    	case 6:
    	case 9:
    	case 11:
    		if (iday > 30) return false;
    		break;
    	default:
    		if(mod(iyear, 4) == 0 && (mod(iyear, 100) != 0 || mod(iyear, 400) == 0)) {//判断是否润年
    			if (iday > 29) return false;
    		}else {
    			if (iday > 28) return false;
    		}
    }
	return true;
}

//取得输入字符串所代表的整数值

function getValueOfInt(string) {
    var count;
    var numchar;
    var numvalue;
    var value;
    value = 0;
    for ( count = 0; count < string.length; count++) {
    	numchar = string.charAt(count);
    	numvalue = numchar - '0';
    	value = value * 10 + numvalue;
    }
    return value;
}

var e_tag; //当前正在分拆得Tag值


//开始解析分拆Tag值

function parseTag(p_tag) {
	e_tag = p_tag.substring (p_tag.indexOf("'")+1,p_tag.lastIndexOf ("'"));
}

//得到下一个分拆处理的值

function getNextValue() {
	if(e_tag == null || e_tag == "")
		return null;
	var p = e_tag.indexOf("|");
	if(p == -1)
		p = e_tag.length;
	var r = e_tag.substring(0,p);
	e_tag = e_tag.substring(p + 1, e_tag.length);
	return r;
}

//删除空格处理，供checkValidate调用
function killSpace(x) {
    while ((x.length > 0) && (x.charAt(0) == ' '))
    	x = x.substring(1, x.length)
    while ((x.length > 0) && (x.charAt(x.length - 1) == ' '))
    	x = x.substring(0, x.length - 1)
    return x;
}

//计算中文长度
function count_char(str) {
	var len = 0;
	for(i = 0; i < str.length; i++) {
		var ech = escape(str.charAt(i));
		if ( ech.length > 4 ){
//			len++;

//// 修改下面的数字，len + 1 表示2个字符代表一个中文字，len + 5 表示6个字符代表一个中文字
			len = len + 1;

/*
			if (ech>"%u07ff")
				len++;
*/
		}
		len ++;
	}
	return len;
}

//检查输入的内容是否超过指定的长度

function lengthCheck(text, size) {
	var len = count_char(text);
	if ( len > size ) {
        return true;
	}
	return false;
}


function mod(var1,var2) {
    return (var1%var2);
}


function getNetuiTagName(id) {
   return netui_names[id];
}

function getNetuiTagName(id, tag)
{
   var scopeId = getScopeId(tag);
   if (scopeId == "")
      return netui_names[id];
   else
      return netui_names[scopeId  + "__" + id];
}

function getScopeId(tag)
{
   if (tag == null)
      return "";
   if (tag.scopeId != null)
      return tag.scopeId;
   return getScopeId(tag.parentElement);
}

function disableAllButton(p_frm) {
	var eCount = p_frm.elements.length;
	for(var i = 0; i < eCount; i++) {
		var e=p_frm.elements[i];
		if (e.type=="button" || e.type=="submit"){
			e.disabled=true;
		}
	}
	return true;
}
function checkNumber(obj,num){ //过滤掉数字以外的键,48-57是数字键,46是".",num是小数点后几位

    if (event.keyCode==46){
        if (obj.value.length<=0){ //如果第一个键是".",屏蔽掉

            event.keyCode=0;
			return;
            }//end if
        else {
            for (var n=0;n<obj.value.length;n++){ //如果"."过多,屏蔽掉

                if (obj.value.substring(n,n+1)=="."){
                    event.keyCode=0;
					
                    return;
                    }//end if
                }//end for n
            return ;
            }//end else
        }//end if
    if (event.keyCode<48 || event.keyCode>57){  //过滤其他键

        event.keyCode=0;
		return;
        }
    else{                                        //控制小数点后位数
        for (var n=0;n<obj.value.length;n++){
            if (obj.value.substring(n,n+1)=="."){
                if ((obj.value.length-n)>num){
                    event.keyCode=0;
				    return;     
                    }//end if
                }//end if
            }//end for n
        }
}
function checkBer(obj,num){   //控制字符输入长度
   for (var n=0;n<obj.value.length;n++){
                if ((obj.value.length-n)>=num){
                    event.keyCode=0;
                    return;
                    }//end if
            }//end for n
}

function lenInFact(obj,maxLen)
{
    var c;var len=0;var j=0;
    for(var i=0;i<obj.value.length;i++)
    {
       c=escape(obj.value.charAt(i));   
       if(c.length>4)    
       {
         len=len+2;
       }
       else
       {
         len++;
       }
       
       if(len>maxLen)    
       {
          j=i-1;
          break;
       }
    }
    return j;
}

function lenInFact(obj)
{
    var c;
    var len=0;
    for(var i=0;i<obj.value.length;i++)
    {
       c=escape(obj.value.charAt(i));   
       if(c.length>4)    
       {
         len=len+2;
       }
       else
       {
         len++;
       }
    }
    return len;
}
//区间日期检查
function checkdate(date1,date2)
{
	if(date1.value != "" && date2.value !="" && date1.value > date2.value)
    {
        alert("起始时间应小于或等于截止时间!");
        return false;
    }
	return true;
}


function checkTextLength(obj,num){   //控制TextArea输入长度
    //alert(obj.value.length);
    var maxLen=lenInFact(obj,num);
    //alert(maxLen);
    if(maxLen!=0)      
    {
      obj.value=obj.value.substring(0,maxLen);           
    }           
}

function checkMaxInput(form,maxLen,message,remLen) {
if (form.message.value.length > maxLen)
form.message.value = form.message.value.substring(0, maxLen);
else form.remLen.value = maxLen - form.message.value.length;
}

function checkInput(message,maxLen) {
if (message.value.length > maxLen) // if too long.... trim it!
message.value = message.value.substring(0, maxLen);
// otherwise, update 'characters left' counter
//else remLen.value = maxLen - message.value.length;
}
function checkMaxInput2(message,maxLen,remLen) {
if (message.value.length > maxLen)
message.value = message.value.substring(0, maxLen);
else remLen.value = maxLen - message.value.length;
}
//检查时间范围
function checkDateRange(y1,y2)
{
		
	d1 = getStringToDate(y1.value);
	d2 = getStringToDate(y2.value);
	d1m = d1.getTime();
	d2m = d2.getTime();
	if( d1m > d2m )
	{
		alert("起始时间不能大于终止时间，请重新输入！");
		y1.value = "";
		y2.value = "";
		y1.focus();
		return false;
	}
	return true;
}
function getStringToDate(y1)
{
	year1 = y1.substring(0,y1.indexOf('-'));
	tmpY1 = y1.substring(y1.indexOf('-') + 1,y1.length);
	month1 = tmpY1.substring(0,tmpY1.indexOf('-'));
	day1 = tmpY1.substring(tmpY1.indexOf('-') + 1, tmpY1.length);
	return new Date(year1, month1, day1, 0, 0, 0, 0);
}
function processSubmit(obj){
  obj.disabled=true;  
  if(checkAll(obj.form)){ 
    obj.form.submit();
  }else {
    obj.disabled=false;
  }
}
