
function Validator()
{this.R=new Array();this.total=0;this.submitted=0;this.requiredCheckBoxes=new Array();this.requiredCheckBoxesKAy=new Array();this.RCBErrorMsg="";this.activateRCBChecking=false;this.datesBetween=new Array();this.datesStart="";this.datesFinish="";this.datesParentStart="";this.datesParentFinish="";this.datesAlertFinish="";this.datesAlertStart="";this.activateDates=false;this.confirmPara=new Object();this.addRequired=addRequired;this.validate=validate;this.addCheckBox=addCheckBox;this.addCheckBoxKAy=addCheckBoxKAy;this.setRCBErrorMsg=setRCBErrorMsg;this.compareDates=compareDates;this.focusme=focusme;this.password_valid=password_valid;this.date_valid=date_valid;this.emailValid=emailValid;this.subst=subst;this.findMyPos=findMyPos;this.isDigits=isDigits;this.isInteger=isInteger;this.isURL=isURL;this.isDigit=isDigit;this.BigFields=BigFields;this.RangeFields=RangeFields;this.validateLogin=validateLogin;}
function addRequired(_ob,_requiredtext,_invalidtext,_type)
{this.R[this.total]=new Object();this.R[this.total].ob=_ob;this.R[this.total].text=_requiredtext;this.R[this.total].invalid=_invalidtext;this.R[this.total].tip=_type;this.total++;}
function addCheckBox(_obj)
{for(var i=0;i<this.requiredCheckBoxes.length;i++)
{if(this.requiredCheckBoxes[i].obj==_obj)return;}
var len=this.requiredCheckBoxes.length;this.requiredCheckBoxes[len]=new Object();this.requiredCheckBoxes[len].obj=_obj;}
function addCheckBoxKAy(id,_requiredtext)
{var len=this.requiredCheckBoxesKAy.length;this.requiredCheckBoxesKAy[len]=new Object();this.requiredCheckBoxesKAy[len].obj=document.getElementById(id);this.requiredCheckBoxesKAy[len].text=_requiredtext;}
function setRCBErrorMsg(_msg)
{this.RCBErrorMsg=_msg;this.activateRCBChecking=true;}
function test_area(src){var test_area="^\\s*(\\S{1,25}\\s+)*\\S{0,25}$";var regex=new RegExp(test_area);return regex.test(src);}
function wrapto(max,maxlen,ta)
{text=""+ta.value;var temp="";var chcount=0;var ch="";if(maxlen>0&&text.length>maxlen)text=text.substring(0,maxlen);for(var i=0;i<text.length;i++)
{ch=text.charAt(i);if(ch=='\n'||ch==' '||ch=='\t')
{temp+=ch;chcount=0;}else
{if(chcount==max)
{temp+=' ';temp+=ch;chcount=1;}else
{temp+=ch;chcount++;}}}
if(maxlen>0&&temp.length>maxlen)temp=temp.substring(0,maxlen);ta.value=temp;}
function checkAreaLen(maxLen,area)
{str=area.value;len=str.length;if(len>maxLen)area.value=str.substring(0,maxLen);area.focus();}
function compareDates(date1,date2)
{var month1=parseInt(date1.substring(0,1))*10+parseInt(date1.substring(1,2));var day1=parseInt(date1.substring(3,4))*10+parseInt(date1.substring(4,5));var year1=parseInt(date1.substring(6,10));var month2=parseInt(date2.substring(0,1))*10+parseInt(date2.substring(1,2));var day2=parseInt(date2.substring(3,4))*10+parseInt(date2.substring(4,5));var year2=parseInt(date2.substring(6,10));if(year1<year2)return-1;if(year1>year2)return 1;if(month1<month2)return-1;if(month1>month2)return 1;if(day1<day2)return-1;if(day1>day2)return 1;return 0;}
function strtrim()
{return this.replace(/^\s+/,'').replace(/\s+$/,'');}
String.prototype.trim=strtrim;function validate()
{if(this.submitted==1)
{alert("This form has been submitted");return false;}
for(var i=0;i<this.R.length;i++)
{if(this.R[i].tip=="")
{if(this.R[i].ob.value.trim()=="")
{alert(""+this.R[i].text);focusme(this.R[i].ob);return false;}}
if(this.R[i].tip=="email")
{if(!emailValid(this.R[i]))return false;}
if(this.R[i].tip=="password")
{this.confirmPara=null;for(var j=0;j<this.R.length;j++)
{if(this.R[j].tip=="confirm")
{this.confirmPara=this.R[j];break;}}
if(!this.password_valid(this.R[i]))return false;}
if(this.R[i].tip=="start")
{if(!date_valid(this.R[i]))return false;}
if(this.R[i].tip=="finish")
{if(!date_valid(this.R[i]))return false;}
if(this.R[i].tip=="integer")
{if(this.R[i].ob.value.trim()=="")
{alert(""+this.R[i].text);focusme(this.R[i].ob);return false;}
if(!isInteger(this.R[i].ob.value))
{alert(""+this.R[i].invalid);focusme(this.R[i].ob);return false;}}
if(this.R[i].tip=="real")
{if(this.R[i].ob.value.trim()=="")
{alert(""+this.R[i].text);focusme(this.R[i].ob);return false;}
if(!isReal(this.R[i].ob.value))
{alert(""+this.R[i].invalid);focusme(this.R[i].ob);return false;}}
if(this.R[i].tip=="hidden")
{if(this.R[i].ob.value.trim()=="")
{alert(""+this.R[i].text);return false;}}
if(this.R[i].tip=="select")
{if(this.R[i].ob.value.trim()=="")
{alert(""+this.R[i].text);return false;}}
if(this.R[i].tip=="textarea")
{if(this.R[i].ob.value.length>500)
{alert(""+this.R[i].invalid);focusme(this.R[i].ob);return false;}}
if(this.R[i].tip=="login")
{if(this.R[i].ob.value.trim()=="")
{alert(""+this.R[i].text);focusme(this.R[i].ob);return false;}
if(!validateLogin(this.R[i].ob.value))
{alert(""+this.R[i].invalid);focusme(this.R[i].ob);return false;}}
if(this.R[i].tip=="url")
{if(this.R[i].ob.value.trim()=="")
{if(this.R[i].text!="")
{alert(""+this.R[i].text);focusme(this.R[i].ob);return false;}}
if(!isURL(this.R[i].ob.value))
{alert(""+this.R[i].invalid);focusme(this.R[i].ob);return false;}}
if(this.R[i].tip=="percent")
{if(this.R[i].ob.value.trim()=="")
{alert(""+this.R[i].text);focusme(this.R[i].ob);return false;}
if(!isInteger(this.R[i].ob.value)||parseInt(this.R[i].ob.value)>100)
{alert(""+this.R[i].invalid);focusme(this.R[i].ob);return false;}}
if(this.R[i].tip=="digits")
{if(this.R[i].ob.value.trim()=="")
{alert(""+this.R[i].text);focusme(this.R[i].ob);return false;}
if(!isDigits(this.R[i].ob.value))
{alert(""+this.R[i].invalid);focusme(this.R[i].ob);return false;}}}
for(var i=0;i<this.requiredCheckBoxesKAy.length;i++)
{if(!(this.requiredCheckBoxesKAy[i].obj.checked)){this.requiredCheckBoxesKAy[i].obj.focus();alert(this.requiredCheckBoxesKAy[i].text);return false;}}
var selectedRCBCount=0;for(var i=0;i<this.requiredCheckBoxes.length;i++)
{if(this.requiredCheckBoxes[i].obj.checked)selectedRCBCount++;}
if(this.activateRCBChecking)
if(selectedRCBCount<1)
{alert(RCBErrorMsg);return false;}
if(this.activateDates)
{if(compareDates(this.datesStart.value,this.datesParentStart)==-1)
{this.datesStart.focus();this.datesStart.select();alert(this.datesAlertStart);return false;}
if(compareDates(this.datesFinish.value,this.datesParentFinish)==1)
{this.datesFinish.focus();this.datesFinish.select();alert(this.datesAlertFinish);return false;}}
submitted=1;return true;}
function focusme(me)
{me.focus();me.select();}
function password_valid(MyObj)
{var len=5;var S=MyObj.ob.value;if(S=="")
{alert(""+MyObj.text);focusme(MyObj.ob);return false;}
if(S.length>len)
{if(this.confirmPara!=null)
{if(this.confirmPara.ob.value==S){return true;}
else
{alert(this.confirmPara.invalid);focusme(MyObj.ob);return false;}}
return true;}else
{alert(MyObj.invalid);focusme(MyObj.ob);return false;}}
function date_valid(MyObj)
{var len=5;var S=MyObj.ob.value;if(S=="")
{alert(""+MyObj.text);focusme(MyObj.ob);return false;}
if(MyObj.tip=='start')
{var finishPara=new Object();for(var i=0;i<R.length;i++)
{if(this.R[i].tip=="finish")
{finishPara=this.R[i];break;}}
if(compareDates(finishPara.ob.value,S)>-1){return true;}
else
{alert(finishPara.text);focusme(MyObj.ob);return false;}
return true;}
return true;}
function emailValid(MyObj)
{var S=MyObj.ob.value.trim();if(S=="")
{alert(""+MyObj.text);focusme(MyObj.ob);return false;}
var emailReg="^[A-Za-z][A-Za-z0-9_\.\-]*\@(((([A-Za-z]+([\-]?[A-Za-z0-9])+|[A-Za-z])[\.])+[A-Za-z]{2,4})|((([01]?[0-9]{1,2})|(2(([0-4][0-9])|(5[0-5]))))[\.]){3}(([01]?[0-9]{1,2})|(2(([0-4][0-9])|(5[0-5])))))$";var regex=new RegExp(emailReg);if(regex.test(S))
{return true;}else
{alert(MyObj.invalid);focusme(MyObj.ob);return false;}}
function isNameValid(name)
{var nameReg="^[\\w_]+$";var regex=new RegExp(nameReg);return regex.test(name);}
function subst(aString,c1,c2)
{if(aString=="")return(aString);if(c1=="")return(aString);var argc=subst.arguments.length;if(argc<4){n=0}else{n=subst.arguments[3]};var i=aString.indexOf(c1,n);if(i<0)return(aString);var s1=aString.substring(0,i);var s2=aString.substring(i+c1.length,aString.length);return subst(s1+c2+s2,c1,c2,(i+c2.length));}
function findMyPos(me)
{for(i=0;i<me.form.length;i++)
if(me.form.elements[i].value==me.value&&me.form.elements[i].name==me.name)
{return i;}}
function isDigits(val)
{if(val.length<1)return false;for(var i=0;i<val.length;i++)
{if(!isDigit(val.charAt(i))){return false;}}
return true;}
function isInteger(val)
{if(val.length<1)return false;if(val.length>1&&val.charAt(0)=='0'){return false;}
for(var i=0;i<val.length;i++)
{if(!isDigit(val.charAt(i))){return false;}}
return true;}
function isReal(val)
{if(val.length<1)return false;var regularExpression=/^\d+[\.\,]?\d+$/;if(isInteger(val)){return true;}
else
{return regularExpression.test(val);}}
function isURL(val)
{if(val==""){return true;}
if(val.indexOf('http://')!=-1||val.indexOf('https://')!=-1||val.indexOf('ftp://')!=-1||val.indexOf('gopher://')!=-1||val.indexOf('news:')!=-1||val.indexOf('mailto:')!=-1){return true;}
return false;}
function isDigit(num)
{var string="1234567890";if(string.indexOf(num)!=-1)
{return true;}
return false;}
function isAZChar(ch)
{if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){return true;}
else{return false;}}
function BigFields(textdata,obj1,obj2)
{if(obj1.value>obj2.value)
{alert(""+textdata);focusme(obj1);return false;};return true;}
function RangeFields(textdata,obj1,range1,obj2,range2)
{if((obj1.value<range1)||(obj2.value>range2))
{alert(""+textdata);return false;}else
{return true;}}
function validateLogin(login)
{var checkStr=login
var invalidChars=0;for(i=0;i<checkStr.length;i++)
{if(checkStr.charAt(i)==' ')
invalidChars++;else if(checkStr.charAt(i)==',')
invalidChars++;else if(checkStr.charAt(i)==':')
invalidChars++;else if(checkStr.charAt(i)==';')
invalidChars++;else if(checkStr.charAt(i)=='/')
invalidChars++;else if(checkStr.charAt(i)=='*')
invalidChars++;else if(checkStr.charAt(i)=='?')
invalidChars++;else if(checkStr.charAt(i)=='"')
invalidChars++;else if(checkStr.charAt(i)=='>')
invalidChars++;else if(checkStr.charAt(i)=='<')
invalidChars++;else if(checkStr.charAt(i)=='|')
invalidChars++;else if(checkStr.charAt(i)=='{')
invalidChars++;else if(checkStr.charAt(i)=='}')
invalidChars++;else if(checkStr.charAt(i)=='[')
invalidChars++;else if(checkStr.charAt(i)==']')
invalidChars++;else if(checkStr.charAt(i)=='!')
invalidChars++;else if(checkStr.charAt(i)=='#')
invalidChars++;else if(checkStr.charAt(i)=='$')
invalidChars++;else if(checkStr.charAt(i)=='%')
invalidChars++;else if(checkStr.charAt(i)=='^')
invalidChars++;else if(checkStr.charAt(i)=='&')
invalidChars++;else if(checkStr.charAt(i)=='(')
invalidChars++;else if(checkStr.charAt(i)==')')
invalidChars++;else if(checkStr.charAt(i)=='~')
invalidChars++;else if(checkStr.charAt(i)=='`')
invalidChars++;else if(checkStr.charAt(i)=='=')
invalidChars++;else if(checkStr.charAt(i)=='+')
invalidChars++;else if(checkStr.charAt(i)=='\'')
invalidChars++;}
if(invalidChars>0)return false;return true;}
