Validator={
Require:/.+/,
Email:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
Phone:/^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/,
Mobile:/^((\(\d{2,3}\))|(\d{3}\-))?((13\d{9})|(15\d{9}))$/,
Url:/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
Currency:/^\d+(\.\d+)?$/,
Number:/^\d+$/,
Zip:/^[1-9]\d{5}$/,
QQ:/^[1-9]\d{4,8}$/,
Integer:/^[-\+]?\d+$/,
Double:/^[-\+]?\d+(\.\d+)?$/,
English:/^[A-Za-z]+$/,
Chinese:/^[\u0391-\uFFE5]+$/,
UserName:/^[a-z]\w{3,}$/i,
Repeat:"value==document.getElementsByName(getAttribute('To'))[0].value",
Range:"getAttribute('Min')<(value|0)&&(value|0)<getAttribute('Max')",
Custom:"this.Exec(value,getAttribute('RegExp'))",
Group:"this.MustChecked(getAttribute('Name'),getAttribute('Min'),getAttribute('Max'))",
LimitBit:"this.Limit(this.LenB(value),getAttribute('Min'),getAttribute('Max'))",
Filter:"this.DoFilter(value,getAttribute('Accept'))",
Date:"this.IsDate(value,getAttribute('min'),getAttribute('format'))",
IdCard:"this.IsIdCard(value)",
ErrorItem:[document.forms[0]],
ErrorMessage:["因为您的操作还存在以下错误从而导致提交失败:"],
Validate:function(TheForm){
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])=="") continue;
this.ClearState(Obj.elements[i]);
if(getAttribute("Require")=="false"&&value=="") continue;
switch(_DataType){
case "Repeat":
case "Range":
case "Custom":
case "Group":
case "LimitBit":
case "Filter":
case "Date":
case "IdCard":
if(!eval(this[_DataType])){
this.AddError(i);
}
break;
default:
if(!this[_DataType].test(value)){
this.AddError(i);
}
break;
}}}
if(this.ErrorMessage.length>1){
var ErrCount=this.ErrorItem.length;
for(var i=1;i<ErrCount;i++){
try{
var span=document.createElement("span");
span.id="__ErrorMessagePanel";
this.ErrorItem[i].parentNode.appendChild(span);
span.innerHTML="&nbsp;"+this.ErrorMessage[i];
}
catch(e){
alert(e.description);
}}
this.ErrorItem[1].focus();
return false;
}
return true;
},
AddError:function(Index){
this.ErrorItem[this.ErrorItem.length]=this.ErrorItem[0].elements[Index];
this.ErrorMessage[this.ErrorMessage.length]="<img src='/homepage/Images/Script/07.gif' width='8' height='7'>";
},
ClearState:function(Elem){
with(Elem){
var lastNode=parentNode.childNodes[parentNode.childNodes.length-1];
if(lastNode.id=="__ErrorMessagePanel")
parentNode.removeChild(lastNode);
}},
Exec:function(Obj,Reg){
return new RegExp(Reg,"g").test(Obj);
},
MustChecked:function(Name,Min,Max){
var Groups=document.getElementsByName(Name);
var HasChecked=0;
Min=Min||1;
Max=Max||Groups.length;
for(var i=Groups.length-1;i>=0;i--)
if(Groups[i].checked) HasChecked++;
return Min<=HasChecked&&HasChecked<=Max;
},
DoFilter:function(Input,Filter){
return new RegExp("^.+\.(?=EXT)(EXT)$".replace(/EXT/g,Filter.split(/\s*,\s*/).join("|")),"gi").test(Input);
},
Limit:function(Len,Min,Max){
Min=Min||0;
Max=Max||Number.MAX_VALUE;
return Min<=Len&&Len<=Max;
},
LenB:function(Str){
return Str.replace(/[^\x00-\xff]/g,"**").length;
},
IsDate:function(Obj,FormatString){
FormatString=FormatString||"ymd";
var M,Year,Month,Day;
switch(FormatString){
case "ymd":
M=Obj.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));
if(M==null) return false;
Day=M[6];
Month=M[5]*1;
Year=(M[2].length==4)?M[2]:GetFullYear(parseInt(M[3],10));
break;
case "dmy":
M=Obj.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));
if(M==null) return false;
Day=M[1];
Month=M[3]*1;
Year=(M[5].length==4)?M[5]:GetFullYear(parseInt(M[6],10));
break;
default:
break;
}
if(!parseInt(Month)) return false;
Month=Month==0 ?12:Month;
var date=new Date(Year,Month-1,Day);
return(typeof(date)=="object"&&Year==date.getFullYear()&&Month==(date.getMonth()+1)&&Day==date.getDate());
function GetFullYear(y){return((y<30?"20":"19")+y)|0;}},
IsIdCard:function(Number){
var DateValue,Ai;
var Verify="10x98765432";
var Wi=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
var AreaValue=['','','','','','','','','','','','北京','天津','河北','山西','内蒙古','','','','','','辽宁','吉林','黑龙江','','','','','','','','上海','江苏','浙江','安微','福建','江西','山东','','','','河南','湖北','湖南','广东','广西','海南','','','','重庆','四川','贵州','云南','西藏','','','','','','','陕西','甘肃','青海','宁夏','新疆','','','','','','台湾','','','','','','','','','','香港','澳门','','','','','','','','','国外'];
var RegValue=Number.match(/^(\d{2})\d{4}(((\d{2})(\d{2})(\d{2})(\d{3}))|((\d{4})(\d{2})(\d{2})(\d{3}[x\d])))$/i);
if(RegValue==null) return false;
if(RegValue[1]>=AreaValue.length||AreaValue[RegValue[1]]=="") return false;
if(RegValue[2].length==12){
Ai=Number.substr(0,17);
DateValue=[RegValue[9],RegValue[10],RegValue[11]].join("-");
}else{
Ai=Number.substr(0,6)+"19"+Number.substr(6);
DateValue=["19"+RegValue[4],RegValue[5],RegValue[6]].join("-");
}
if(!this.IsDate(DateValue,"ymd")) return false;
var Sum=0;
for(var i=0;i<=16;i++){
Sum+=Ai.charAt(i) * Wi[i];
}
Ai+=Verify.charAt(Sum%11);
return(Number.length ==15||Number.length==18&&Number==Ai);
}}