Validator={Require:/.+/,Email:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,Phone:/^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/,Mobile:/^((\(\d{3}\))|(\d{3}\-))?1\d{10}$/,Url:/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,IdCard:/^\d{15}(\d{2}[A-Za-z0-9])?$/,Currency:/^\d+(\.\d+)?$/,Number:/^\d+$/,Zip:/^\d{6}$/,QQ:/^[1-9]\d{4,8}$/,Integer:/^[-\+]?\d+$/,Double:/^[-\+]?\d+(\.\d+)?$/,English:/^[A-Za-z]+$/,Chinese:/^[\u0391-\uFFE5]+$/,UnSafe:/^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/,IsSafe:function(a){return !this.UnSafe.test(a)},SafeString:"this.IsSafe(value)",Limit:"this.limit(value.length,getAttribute('min'), getAttribute('max'))",LimitB:"this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",Date:"this.IsDate(value, getAttribute('min'), getAttribute('format'))",Repeat:"value == document.getElementsByName(getAttribute('to'))[0].value",Range:"getAttribute('min') < value && value < getAttribute('max')",Compare:"this.compare(value,getAttribute('operator'),getAttribute('to'))",Custom:"this.Exec(value, getAttribute('regexp'))",Group:"this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))",ErrorItem:[document.forms[0]],ErrorMessage:["以下原因导致提交失败：\t\t\t\t"],Validate:function(theForm,mode){var obj=theForm||event.srcElement;var count=obj.elements.length;this.ErrorMessage.length=1;this.ErrorItem.length=1;this.ErrorItem[0]=obj;for(var i=0;i<count;i++){with(obj.elements[i]){var _dataType=getAttribute("dataType");if(typeof(_dataType)=="object"||typeof(this[_dataType])=="undefined"){continue}this.ClearState(obj.elements[i]);if(getAttribute("require")=="false"&&value==""){continue}switch(_dataType){case"Date":case"Repeat":case"Range":case"Compare":case"Custom":case"Group":case"Limit":case"LimitB":case"SafeString":if(!eval(this[_dataType])){this.AddError(i,getAttribute("msg"))}break;default:if(!this[_dataType].test(value)){this.AddError(i,getAttribute("msg"))}break}}}if(this.ErrorMessage.length>1){mode=mode||1;var errCount=this.ErrorItem.length;switch(mode){case 2:for(var i=1;i<errCount;i++){this.ErrorItem[i].style.color="red"}case 1:alert(this.ErrorMessage.join("\n"));this.ErrorItem[1].focus();break;case 3:for(var i=1;i<errCount;i++){try{var span=document.createElement("SPAN");span.id="__ErrorMessagePanel";span.style.color="red";this.ErrorItem[i].parentNode.appendChild(span);span.innerHTML=this.ErrorMessage[i].replace(/\d+:/,"*")}catch(e){alert(e.description)}}this.ErrorItem[1].focus();break;default:alert(this.ErrorMessage.join("\n"));break}return false}return true},limit:function(b,c,a){c=c||0;a=a||Number.MAX_VALUE;return c<=b&&b<=a},LenB:function(a){return a.replace(/[^\x00-\xff]/g,"**").length},ClearState:function(elem){with(elem){if(style.color=="red"){style.color=""}var lastNode=parentNode.childNodes[parentNode.childNodes.length-1];if(lastNode.id=="__ErrorMessagePanel"){parentNode.removeChild(lastNode)}}},AddError:function(a,b){this.ErrorItem[this.ErrorItem.length]=this.ErrorItem[0].elements[a];this.ErrorMessage[this.ErrorMessage.length]=this.ErrorMessage.length+":"+b},Exec:function(b,a){return new RegExp(a,"g").test(b)},compare:function(c,a,b){switch(a){case"NotEqual":return(c!=b);case"GreaterThan":return(c>b);case"GreaterThanEqual":return(c>=b);case"LessThan":return(c<b);case"LessThanEqual":return(c<=b);default:return(c==b)}},MustChecked:function(d,f,b){var a=document.getElementsByName(d);var c=0;f=f||1;b=b||a.length;for(var e=a.length-1;e>=0;e--){if(a[e].checked){c++}}return f<=c&&c<=b},IsDate:function(h,b){b=b||"ymd";var a,e,f,c;switch(b){case"ymd":a=h.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));if(a==null){return false}c=a[6];f=a[5]--;e=(a[2].length==4)?a[2]:g(parseInt(a[3],10));break;case"dmy":a=h.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));if(a==null){return false}c=a[1];f=a[3]--;e=(a[5].length==4)?a[5]:g(parseInt(a[6],10));break;default:break}if(!parseInt(f)){return false}f=f==12?0:f;var d=new Date(e,f,c);return(typeof(d)=="object"&&e==d.getFullYear()&&f==d.getMonth()&&c==d.getDate());function g(i){return((i<30?"20":"19")+i)|0}}};
