function Validator(){
this.init();
}
Validator.prototype.init=function(){
this.NbErrors=0;
this.ErrorMessage="";
this.Header="Some required fields are missing...";
this.UsernameMinLength=4;
this.UsernameMaxLength=10;
this.PasswordMinLength=4;
this.PasswordMaxLength=10;
this.PasswordAllowDigit=true;
this.PasswordAllowLower=true;
this.PasswordAllowUpper=true;
this.PasswordMinOneDigit=true;
this.PasswordMinOneLower=true;
this.PasswordMinOneUpper=true;
this.AllTextFieldsRequired=false;
this.arrRequired=new Array();
this.DefineRegexpWebColor=/[0-9A-F]{6}/gi;
this.DefineRegexpPhoneNumber=/(\d{3}-\d{3}-\d{4})/gi;
this.DefineRegexpUrl=/(https?:\/\/)/gi;
this.DefineRegexpEmail=/([\w\_\.\-]+\@[\w\_\.\-]+\.[a-zA-Z]{2,5})/i;
this.DefineCanadianPostalCode=/([ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]\s\d[ABCEGHJKLMNPRSTVWXYZ]\d)/i;
};
Validator.prototype.Confirmation=function(_1){
var _2=false;
_2=confirm(_1);
if(_2){
_2=true;
}
return _2;
};
Validator.prototype.SetRequiredField=function(_3,_4){
this.arrRequired.push(new Array(_3,_4));
};
Validator.prototype.SetInitialMessage=function(_5){
var _6=_5.split("###");
for(var i=0;i<_6.length;i++){
this.AddErrMsg(_6[i]);
}
};
Validator.prototype.MissingFields=function(){
var _8=false;
var _9=false;
this.NbErrors=0;
this.ErrorMessage="";
if(this.AllTextFieldsRequired){
var _a;
for(var e=0;e<document.forms[0].elements.length;e++){
_a=document.forms[0].elements[e];
if(_a.type.toLowerCase()=="text"){
if(this.Trim(_a.value)==""){
_8=true;
}
}
}
}else{
for(var i=0;i<this.arrRequired.length;i++){
_9=false;
if(typeof (FCKeditorAPI)!="undefined"){
if(FCKeditorAPI.GetInstance(this.arrRequired[i][0])){
_9=true;
if(FCKeditorAPI.GetInstance(this.arrRequired[i][0]).GetXHTML().length==0){
this.AddErrMsg(this.arrRequired[i][1]);
}
}
}
if(!_9){
if(this.Trim(document.getElementById(this.arrRequired[i][0]).value)==""){
this.AddErrMsg(this.arrRequired[i][1]);
}
}
}
if(this.NbErrors==0){
_8=false;
}else{
_8=true;
}
}
return _8;
};
Validator.prototype.GetErrorMessage=function(){
if(this.ErrorMessage!=""){
return this.Header+"\n\n"+this.ErrorMessage;
}else{
return this.Header;
}
};
Validator.prototype.AddErrMsg=function(_d){
if(_d!=""){
this.ErrorMessage=this.ErrorMessage+"- "+_d+"\n";
this.NbErrors=this.NbErrors+1;
}
};
Validator.prototype.IsDigit=function(ch){
return ((ch>="0")&&(ch<="9"));
};
Validator.prototype.IsInteger=function(s){
var _10=/^-?[0-9]+$/;
var _11;
_11=true;
if(!_10.test(s)){
_11=false;
}
_10=null;
return _11;
};
Validator.prototype.IsCanadianPostalCode=function(s){
return this.DefineCanadianPostalCode.test(s);
};
Validator.prototype.IsEmpty=function(s){
return ((s==null)||(s.length==0));
};
Validator.prototype.IsWebColor=function(_14){
return _14.match(this.DefineRegexpWebColor);
};
Validator.prototype.IsBetween=function(_15,_16,_17){
var _18=parseInt(_18,10);
if(_18>=_16&&_18<=_17){
return true;
}else{
return false;
}
};
Validator.prototype.IsDate=function(_19){
var _1a=new RegExp("^\\d{4}-\\d{1,2}-\\d{1,2}$");
var _1b=false;
var _1c;
var _1d,iMonth,iDay;
if(_1a.test(_19)){
_1c=_19.split("-");
_1d=parseInt(_1c[0],10);
iMonth=parseInt(_1c[1],10);
iDay=parseInt(_1c[2],10);
if(iMonth>=1&&iMonth<=12){
if(iDay>=1&&iDay<=this.GetDaysArray(_1d)[iMonth]){
_1b=true;
}
}
}
_1a=null;
return _1b;
};
Validator.prototype.IsValidUsername=function(_1e){
var re=/([a-zA-Z0-9]+)/;
var _20=-1;
str=_1e;
if(str!=""){
if(!str.match(re)||str.length<this.UsernameMinLength||str.length>this.UsernameMaxLength){
_20=0;
}else{
_20=1;
}
}
return _20;
};
Validator.prototype.IsValidPassword=function(_21){
var _22=false;
var _23=/(\d+)/;
var _24=/([a-z]+)/;
var _25=/([A-Z]+)/;
var _26=/\s+/;
var _27=false;
var _28=false;
var _29=false;
var _2a=-1;
var str;
str=_21;
if(str!=""){
_27=str.match(_23);
_28=str.match(_24);
_29=str.match(_25);
if(str.length<this.PasswordMinLength||str.length>this.PasswordMaxLength){
_22=true;
}
if(str.match(_26)){
_22=true;
}
if(!_22){
if(this.PasswordAllowDigit){
if(this.PasswordMinOneDigit){
if(!_27){
_22=true;
}
}
}else{
if(_27){
_22=true;
}
}
}
if(!_22){
if(this.PasswordAllowLower){
if(this.PasswordMinOneLower){
if(!_28){
_22=true;
}
}
}else{
if(_28){
_22=true;
}
}
}
if(!_22){
if(this.PasswordAllowUpper){
if(this.PasswordMinOneUpper){
if(!_29){
_22=true;
}
}
}else{
if(_29){
_22=true;
}
}
}
if(_22){
_2a=0;
}else{
_2a=1;
}
}
return _2a;
};
Validator.prototype.IsStartDateLower=function(_2c,end){
if(_2c>end){
return false;
}
return true;
};
Validator.prototype.IsRangeInOneYear=function(_2e,end){
var _30=new Date();
var _31=new Date();
var _32;
_30.setTime(Math.abs(_2e.getTime()-end.getTime()));
_31=_30.getTime();
_32=Math.floor(_31/(1000*60*60*24));
_31-=_32*(1000*60*60*24);
if(_32>365){
return false;
}
return true;
};
Validator.prototype.AreSameValue=function(_33,_34){
var _35=-1;
if(document.getElementById){
var _36=document.getElementById(_33);
var _37=document.getElementById(_34);
if(_36!=null&&_37!=null){
if(_36.value==""&&_37.value==""){
_35=-1;
}else{
if((_36.value==_37.value)&&(_36.value!=""&&_37.value!="")){
_35=1;
}else{
_35=0;
}
}
}
}
return _35;
};
Validator.prototype.CheckInteger=function(_38,_39){
var _3a=/^-?[0-9]+$/;
if(document.getElementById){
var _3b=document.getElementById(_38);
if(_3b!=null){
var s=_3b.value;
if(!_3a.test(s)){
this.AddErrMsg(_39);
}
}
}
_3a=null;
};
Validator.prototype.CheckIntegerRange=function(_3d,_3e,_3f,_40){
var _41=/^-?[0-9]+$/;
if(document.getElementById){
var _42=document.getElementById(_3d);
if(_42!=null){
var s=_42.value;
if(!_41.test(s)){
this.AddErrMsg(_40);
}else{
if(!((parseInt(s,10)>=_3e||_3e==null)&&(parseInt(s,10)<=_3f||_3f==null))){
this.AddErrMsg(_40);
}
}
}
}
_41=null;
};
Validator.prototype.CheckFloat=function(_44,_45){
if(document.getElementById){
var _46=document.getElementById(_44);
if(_46!=null){
var s=_46.value;
s=s.replace(",",".");
if(isNaN(s)){
this.AddErrMsg(_45);
}else{
_46.value=s;
}
}
}
};
Validator.prototype.CheckPrice=function(_48,_49){
if(document.getElementById){
var _4a=document.getElementById(_48);
if(_4a!=null){
var s=_4a.value;
s=s.replace(",",".");
if(isNaN(s)){
this.AddErrMsg(_49);
}else{
_4a.value=this.FormatCurrency(s);
}
}
}
};
Validator.prototype.CheckPhoneNumber=function(_4c,_4d){
var str;
var _4f;
if(document.getElementById){
var _50=document.getElementById(_4c);
if(_50!=null){
str=_50.value;
_4f=str.search(this.DefineRegexpPhoneNumber);
if(_4f!=0&&str!=""){
this.AddErrMsg(_4d);
}
}
}
};
Validator.prototype.CheckWebColor=function(_51,_52){
var _53=/[0-9A-F]{6}/gi;
var str;
var _55;
if(document.getElementById){
var _56=document.getElementById(_51);
if(_56!=null){
str=_56.value;
_55=str.search(this.DefineRegexpWebColor);
if(_55!=0&&str!=""){
this.AddErrMsg(_52);
}
}
}
};
Validator.prototype.CheckUrl=function(_57,_58){
var str;
var _5a;
if(document.getElementById){
var _5b=document.getElementById(_57);
if(_5b!=null){
str=_5b.value;
_5a=str.search(this.DefineRegexpUrl);
if(_5a!=0&&str!=""){
this.AddErrMsg(_58);
}
}
}
};
Validator.prototype.CheckEmail=function(_5c,_5d){
var str;
var _5f;
if(document.getElementById){
var _60=document.getElementById(_5c);
if(_60!=null){
str=_60.value;
_5f=str.search(this.DefineRegexpEmail);
if(_5f!=0&&str!=""){
this.AddErrMsg(_5d);
}
}
}
};
Validator.prototype.CheckCanadianPostalCode=function(_61,_62){
var str;
var _64;
if(document.getElementById){
var _65=document.getElementById(_61);
if(_65!=null){
str=_65.value;
_64=this.IsCanadianPostalCode(str);
if(_64==false){
this.AddErrMsg(_62);
}
}
}
};
Validator.prototype.CheckDate=function(_66,_67){
var str;
var _69=false;
if(document.getElementById){
var _6a=document.getElementById(_66);
if(_6a!=null){
str=_6a.value;
_69=this.IsDate(str);
if(!_69){
this.AddErrMsg(_67);
}
}
}
};
Validator.prototype.CheckFilename=function(_6b,_6c){
var re=/^[A-Za-z0-9_-]+\.[A-Za-z0-9]+$/g;
var _6e=_6b.value;
_6e=_6e.substring(_6e.lastIndexOf("\\")+1);
if(re.test(_6e)==false){
this.AddErrMsg(_6c);
}
};
Validator.prototype.CheckMaxLength=function(_6f,_70,_71){
var _72=false;
if(typeof (FCKeditorAPI)!="undefined"){
if(FCKeditorAPI.GetInstance(_6f)){
if(FCKeditorAPI.GetInstance(_6f).GetXHTML().length>_70){
_72=true;
this.AddErrMsg(_71);
}
}
}
if(!_72){
if(document.getElementById){
var _73=document.getElementById(_6f);
if(_73!=null){
if(_73.value.length>_70){
this.AddErrMsg(_71);
if(_73.type.toLowerCase()!="hidden"){
}
}
}
}
}
};
Validator.prototype.CheckUsername=function(_74,_75){
if(document.getElementById){
var _76=document.getElementById(_74);
if(_76!=null){
if(this.IsValidUsername(_76.value)==0){
this.AddErrMsg(_75);
}
}
}
};
Validator.prototype.CheckPassword=function(_77,_78){
if(document.getElementById){
var _79=document.getElementById(_77);
if(_79!=null){
if(this.IsValidPassword(_79.value)==0){
this.AddErrMsg(_78);
}
}
}
};
Validator.prototype.CheckDateRange=function(_7a,_7b,_7c,_7d){
var _7e;
var _7f;
var _80;
var _81;
var _82;
var _83;
if(document.getElementById){
var _84=document.getElementById(_7a);
var _85=document.getElementById(_7b);
if(_84!=null&&_84.disabled!=true&&_85!=null&&_85.disabled!=true){
_7e=_84.value;
_80=this.IsDate(_7e);
_7f=_85.value;
_81=this.IsDate(_7f);
_82=true;
if(_7c){
_7e=_7e.replace("-","/");
_7e=_7e.replace("-","/");
start=new Date(_7e);
_7f=_7f.replace("-","/");
_7f=_7f.replace("-","/");
end=new Date(_7f);
_82=this.IsStartDateLower(start,end);
_83=this.IsRangeInOneYear(start,end);
}
if(_80==false||_81==false||_82==false||_83==false){
this.AddErrMsg(_7d);
}
}
}
};
Validator.prototype.GetDaysInFebruary=function(_86){
return (((_86%4==0)&&((!(_86%100==0))||(_86%400==0)))?29:28);
};
Validator.prototype.GetDaysArray=function(_87){
var arr=new Array();
arr[1]=31;
arr[2]=this.GetDaysInFebruary(_87);
arr[3]=31;
arr[4]=30;
arr[5]=31;
arr[6]=30;
arr[7]=31;
arr[8]=31;
arr[9]=30;
arr[10]=31;
arr[11]=30;
arr[12]=31;
return arr;
};
Validator.prototype.StripCharsInBag=function(s,bag){
var i;
var _8c="";
for(i=0;i<s.length;i++){
var c=s.charAt(i);
if(bag.indexOf(c)==-1){
_8c+=c;
}
}
return _8c;
};
Validator.prototype.Trim=function(s){
while(s.substring(0,1)==" "){
s=s.substring(1,s.length);
}
while(s.substring(s.length-1,s.length)==" "){
s=s.substring(0,s.length-1);
}
return s;
};
Validator.prototype.GetRandomNum=function(_8f,_90){
return (Math.floor(Math.random()*(_90-_8f))+_8f);
};
Validator.prototype.GetRandomChar=function(){
var _91="0123456789";
var _92="abcdefghijklmnopqrstuvwxyz";
var _93="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var _94="";
_94+=_91;
_94+=_92;
_94+=_93;
return _94.charAt(this.GetRandomNum(0,_94.length));
};
Validator.prototype.GetRandomPassword=function(){
var rc;
var pwd="";
var _97=this.GetRandomNum(this.PasswordMinLength,this.PasswordMaxLength);
do{
rc="";
for(var idx=0;idx<_97;++idx){
rc=rc+this.GetRandomChar();
}
pwd=rc;
}while(!this.IsValidPassword(pwd));
return pwd;
};
Validator.prototype.FormatCurrency=function(num){
num=num.toString().replace(/\$|\,/g,"");
if(isNaN(num)){
num="0";
}
sign=(num==(num=Math.abs(num)));
num=Math.floor(num*100+0.50000000001);
cents=num%100;
num=Math.floor(num/100).toString();
if(cents<10){
cents="0"+cents;
}
for(var i=0;i<Math.floor((num.length-(1+i))/3);i++){
num=num.substring(0,num.length-(4*i+3))+num.substring(num.length-(4*i+3));
}
return (((sign)?"":"-")+num+"."+cents);
};
Validator.prototype.GetCheckedValue=function(_9b){
var _9c="";
if(document.getElementsByName){
var _9d=document.getElementsByName(_9b);
if(_9d!=null){
var _9e=_9d.length;
if(_9e=="undefined"){
_9c=_9d.value;
}
for(var i=0;i<_9d.length;i++){
if(_9d[i].checked){
_9c=_9d[i].value;
}
}
}
}
return _9c;
};

