
//申惠锋  2004-03-24  使用客户端进行数据校验

/**********************************************************************
使用示例
	<SCRIPT LANGUAGE="JavaScript">
		var obj=new chkForm("Form1")
		obj.isPass("控件名称","isZero");		//不能为空
		obj.isPass("控件名称","isNumeric");		//数字校验
		obj.isPass("控件名称","isDate");		//日期校验
		obj.isPass("控件名称","isEmail");		//Email校验  
		obj.isPass("控件名称","isEnglish");		//输入英文
		obj.isPass("控件名称","isEN");			//英文和数字
		obj.isPass("控件名称","isChinese");		//输入中文
		obj.isPass("控件名称","isNoChinese");	//不能输入中文
		obj.isPass("控件名称","isImage");	//选择上传文件不是图片文件
	</SCRIPT>
	说明：
	     所有验证都可以自定义提示语,如:
			obj.isPass("控件名称","isEmail","请输入正确的Email格式");
			
******************************************************************************/
function chkForm(frmName)
{
	this.frmName=frmName;
	this.chkFunBody = "";
	this.isPass = function(eleName,chkFun,strMsg)
	{
		this.chkFunBody += chkFun+"("+this.frmName+"."+eleName
		if(strMsg)this.chkFunBody +=",\""+strMsg+"\""
		this.chkFunBody +=") && "
		var tmp = "return( "+ this.chkFunBody +" true)"
		eval(this.frmName+".onsubmit=Function('"+tmp+"');");
	}
}
function String.prototype.trim(){return this.replace(/(^\s*)|(\s*$)/g, "");}


function isDate(s,msg)
{
	if (s.value.length==0)return true;
	if (!msg)msg='不存在该日期﹐请改正！！';
	var str=s.value
	var reg = /^(\d{4})(-|\/)(0?[1-9]|1[0-2])(-|\/)(0?[1-9]|[12][0-9]|3[01])$/g; 
	var r = reg.exec(str); 
	if(r==null){alert(msg);s.select();return false;}
	var d = new Date(r[1], r[3]-1,r[5]); 
	var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
	var reg=/(\/|-)(0*)( *)([1-9])/g
	var t=s.value.replace(reg,'$1$4')
	if (newStr==t){return true;}
	s.focus();
	s.select();
	alert(msg);
	return false;
}

function isEmail(s,msg)
{
	if (s.value.length==0)return true;
	var reg = /^([a-z]){1,}([\.a-z0-9_\-]){1,}([a-z0-9]){1,}@([a-z0-9_-]){3,}(\.([a-z0-9]){2,4}){1,2}$/gi; 
	if (reg.test(s.value))return true;
	else
	{
		alert((msg?msg:'请输入标准格式E_mail'));
		s.focus();
		s.select()
		return false;
	}
}

function isEnglish(s,msg)
{
	var reg=/^[a-z]*$/gi
	if(reg.test(s.value))return true
	else 
	{
		alert((msg?msg:'该栏只能输入英文﹐请改正！！'));
		s.focus();
		s.select();
		return false;
	}
}

function isChinese(s,msg)
{
	var reg = /[^\u4E00-\u9FA5]/g;
	if (reg.test(s.value))
	{
		s.focus();
		s.select()
		alert((msg?msg:'该栏只能输入中文﹐请改正！！'));
		return false;
	}
	return true;
}

function isNoChinese(s,msg)
{
	var reg = /[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi;
	if (reg.test(s.value))
	{
		s.select()
		alert((msg?msg:'该栏不能输入中文及全角符号﹐请改正！！'));
		return false;
	}
	return true;
}

function isZero(s,msg)
{
	var str=s.value.trim();
	if (str.length!=0)return true
	else 
	{
		alert((msg?msg:'该栏不能为空﹐请改正！！'));
		try
		{
			s.focus();
			s.select();
			return false;
		}
		catch(e)
		{
			return false;
		}
	}
}

function isNumeric(s,msg)
{
	if (s.value*1!=s.value)
	{
		alert((msg?msg:'该栏只能只能输入数字﹐请改正！！'))
		s.focus();
		s.select()
		return false
	}
	return true
}

function isEN(s,msg)
{
	var reg=/^[a-z0-9.]*$/gi
	if(reg.test(s.value))return true
	else 
	{
		alert();
		s.focus();
		s.select();
		return false;
	}
}

var isImage;	
function isImage(s,msg) 
{ 
	isImage = true;
	var img=null; 
	if(img)img.removeNode(true); 
	img=document.createElement("img"); 
	img.style.position="absolute"; 
	img.style.visibility="hidden"; 
	img.width = 0; 
	img.height = 0; 
	var _st = img.attachEvent;
	img.attachEvent = function(md,fr) {
		if(typeof fr == 'function'){
			var argu = Array.prototype.slice.call(arguments,2);
			var f = (function(){ fr.apply(null,argu); });
			return _st(md,f);
		}
		return _st(md,fr);
	}
	img.attachEvent("onerror",UploadErrMsg,s,msg); 
	document.body.appendChild(img); 
	img.src=s.value; 
	return isImage;
} 

function UploadErrMsg(s,msg) 
{ 
	alert((msg?msg:'选择的不是图片文件！！'));
	s.focus();	
	s.value = "";
	isImage = false;
} 


function StringLength(s,msg)
{	
	if(s.value.length == "9")return true
	else 
	{
		alert((msg?msg:'输入字符串数量不对！！'));
		s.focus();
		s.select();
		return false;
	}
	
}

function IDCard(s,msg)
{
var idcard=s.value;
if (idcard!="")
	{
    if (idcard.length==15 || idcard.length==18)
        {
        if (checkIDCard(idcard))
				{
				if (idcard.length==15)
					{ 
						bornday='19'+idcard.substring(6,8)+'-'+idcard.substring(8,10)+'-'+idcard.substring(10,12);
						my_month=idcard.substring(8,10);
						my_day=idcard.substring(10,12);
					}
				else
					{ 
					bornday=idcard.substring(6,10)+'-'+idcard.substring(10,12)+'-'+idcard.substring(12,14);
					my_month=idcard.substring(10,12);
					my_day=idcard.substring(12,14);
					}
				

					my_month1=my_month;
					if (my_month.substring(0,1)=="0")
					{
					my_month1=my_month.substring(1,2);
					}		
                
				 
					if ((parseInt(my_month1)<1) || (parseInt(my_month1)>12))
					{
					alert('身份证输入月份不合法！');
					s.select();
					s.focus();
					return false;
					}
					 
					 my_day1=my_day;
					if (my_day.substring(0,1)=="0")
					{
					my_day1=my_day.substring(1,2);
					}		 
					if ((parseInt(my_day1)<1) || (parseInt(my_day1)>31))
					{
					alert('身份证输入日期不合法！！');
					s.select();
					s.focus();
					return false;
					}				
				return true;
            }
        else
            {
            alert ("身份证号码只有最后一位可能为非数字！！");
            s.select();
           s.focus();
            return false;
			}
       }
    else
       {
       alert ("身份证号码位数只能是15位或18位！！");
       s.select();
       s.focus();
	   return false;
	   }
	}else
	{
       alert ("请输入身份证号码！！");
       s.select();
      s.focus();
	   return false;	
	}

}


function checkIDCard(str)
{
    var strlength;
    var k;
    var ch;
    strlength=str.length;
    for(k=0;k<strlength-1;k++)
        {
        ch=str.substring(k,k+1);
        if(!(ch==0||ch==1||ch==2||ch==3||ch==4||ch==5||ch==6||ch==7||ch==8||ch==9))
            {
            return true;
            }
       }  
    return true;
}
