﻿/**********************************************
表单验证
***********************************************/
var _sub=false;
var _alert="";
function checkForm(formObj){
    try
    {
        _alert="";
	    var elementArray = formObj.elements;
	    var chkFunction;
	    for (var i=0; i<elementArray.length; i++)
	    {
		    chkFunction = "";
		    if(elementArray[i].getAttribute('Chk')!=null)
		    {
			    chkFunction = elementArray[i].getAttribute('Chk')+"('"+elementArray[i].id.toString()+"');"	
		    }
		    //判断是否允许空值,同时借此判断是验证文件框
		    if(elementArray[i].getAttribute('AllowNull')!=null)
		    {
			    if(elementArray[i].getAttribute('AllowNull') == "True")	
			    {
				    //只有在值不为空的情况下验证
				    if(elementArray[i].value.length > 0)	
				    {
					    //如果有自定义验证,则优先执行
					    if(elementArray[i].getAttribute('ChkPatrn') != null && elementArray[i].getAttribute('ChkPatrn')!="")
					    {
						    checkStr(eval(elementArray[i].getAttribute('ChkPatrn')),elementArray[i],elementArray[i].title + "：格式不正确");
					    }
					    //否则执行预定义验证
					    else
					    {
						    eval(chkFunction);
					    }
				    }
			    }
			    //不允许为空
			    else
			    {
					    chkNotNull(elementArray[i].id.toString());
					    //如果有自定义验证,则优先执行
					    if(elementArray[i].getAttribute('ChkPatrn') != null && elementArray[i].getAttribute('ChkPatrn')!="")
					    {
						    checkStr(eval(elementArray[i].getAttribute('ChkPatrn')),elementArray[i],elementArray[i].title + "：格式不正确");
					    }
					    //否则执行预定义验证
					    else if(chkFunction != "")
					    {
						    eval(chkFunction);
					    }
					    //执行不为空验证
					    else
					    {
						    chkNotNull(elementArray[i].id.toString());
					    }
			    }
		    }
	    }
    }
    catch(e)
    {
        return false;
    }
    if(_alert=="")return true;
    else{alert(_alert);_alert="";return false;}
}

function checkForm_Init()
{
    var elementArray  = document.getElementsByTagName("*");
    for (var i=0; i<elementArray.length; i++)
    {
	    if(elementArray[i].getAttribute('AllowNull')!=null)
	    {
		    if(elementArray[i].getAttribute('AllowNull') == "True")	
		    {
		        elementArray[i].onblur = function()
		            {
			            if(this.value.length > 0)
			            {
			                if(this.getAttribute('ChkPatrn') != null && this.getAttribute('ChkPatrn')!="")
			                {
				                 checkStr(eval(this.getAttribute('ChkPatrn')),this,this.title + "：格式不正确",true);
			                }
			                else(this.getAttribute('Chk') != "")
			                {
				                 eval(this.getAttribute('Chk')+"('"+this.id+"',true)");
			                }
			            }			        
			        }
		    }
		    else
		    {
			    elementArray[i].onblur = function()
			        {
			            if(chkNotNull(this.id))
			            {
			                if(this.getAttribute('ChkPatrn') != null && this.getAttribute('ChkPatrn')!="")
			                {
				                 checkStr(eval(this.getAttribute('ChkPatrn')),this,this.title + "：格式不正确",true);
			                }
			                else if(this.getAttribute('Chk') != "")
			                {
				                 eval(this.getAttribute('Chk')+"('"+this.id+"',true)");
			                }
			                else
			                {
				                 chkNotNull(this.id);
			                }
			            }			        
			        }
		    }
	    }
    }
}

function ro(objId)
{
	return document.getElementById(objId);
} 
/**********************************************
正则表达式验证
***********************************************/
function checkStr(filter,frm,errMsg,init)
{
	if (!filter.test(frm.value)) {
	    try
	    {
		    if(_alert=="")
		    {
		        frm.focus();
		    }
		}
		catch(e){}
		if(!init)_alert+= "- " + frm.title +"：" + errMsg+"\n";
		if(!frm.parentNode.getElementsByTagName("leehom")[0])
        {
            var oC=document.createElement("leehom");
            oC.appendChild(document.createTextNode(errMsg));
	        frm.parentNode.appendChild(oC);
        }
        return false;
	}
	else
	{
	    try
	    {
            frm.parentNode.removeChild(frm.parentNode.getElementsByTagName("leehom")[0]);
        }
        catch(e){}
	}
	return true;
} 
/**********************************************
已有表单验证
***********************************************/
function chkBigThanZero(objId,init)
{
    return checkStr(/^\w{1,255}$/,ro(objId),"请填写正整数",init);
}
function chkIDCard(objId,init)
{
    return checkStr(/^\d{17}[\d|X]|\d{15}$/,ro(objId),"请填写正确的身份证号",init);
}
function chkLetter(objId,init)
{
	return checkStr(/^\w{1,255}$/,ro(objId),"请填写字母,数字,下划线的组合",init);
}
function chkNotNull(objId,init)
{
	return checkStr(/^[\s\S]+$/,ro(objId),"请填写",init);
}
function chkSelect(objId,init)
{
    return checkStr(/^[1-9][0-9]?[0-9]?[0-9]?$/,ro(objId),"请选择",init);
}
function chkNumber(objId,init)
{
	return checkStr(/^[\d\.]+$/,ro(objId),"请填写数字",init);
}
function chkMail(objId,init)
{
	return checkStr(/^\w{1,30}@\w{1,15}(\.\w{1,10}){1,4}$/,ro(objId),"请填写正确的email地址",init);
}
function chkIP(objId,init)
{
	return checkStr(/^(\d{1,3}\.){3}\.\d{1,3}$/,ro(objId),"请填写正确的IP地址",init);
}
function chkDate(objId,init)
{
	return checkStr(/^\d{2,4}(-\d{1,2}){2}$/,ro(objId),"日期格式请填写为:xxxx-xx-xx 格式",init);
}
function chkTime(objId,init)
{
	return checkStr(/^\d{1,2}(:\d{1,2}){2}$/,ro(objId),"时间格式请填写为:xx:xx:xx 格式",init);
}
function chkDateTime(objId,init)
{
	return checkStr(/^\d{2,4}(-\d{1,2}){2}(\s{1,3}\d{1,2}(:\d{1,2}){2})?$/,ro(objId),"日期时间格式请填写为:xxxx-xx-xx xx:xx:xx 格式",init);
}
function chkTelNum(objId,init)
{
	return checkStr(/^\d{3,4}-\d{6,8}|\d{10,12}$/,ro(objId),"请填写正确的电话号码",init);
}
function chkMemberID(objId,init)
{
	return checkStr(/^(\w|[\u4E00-\u9FA5]){2,8}$/,ro(objId),"用户帐号不能含有特殊符号，且只能2-8位",init);
}
function chkMemberPass(objId,init)
{
	return checkStr(/^.{6,20}$/,ro(objId),"用户密码请填写6到20位间",init);
}
function chkUrl(objId,init)
{
	return checkStr(/^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/,ro(objId),"请填写正确的url地址，如 http://www.csint.cn/",init);
}
function chkNothing(objId,init)
{
    return true;
}