function fValConfig(){this.code="alt";this.emsg="emsg";this.pattern="pattern";this.errorClass="errHilite";this.useSingleClassNames=false;this.clearEvent="change";this.eventOverride=false;this.confirmMsg=fvalidate.i18n.config.confirmMsg;this.confirmAbortMsg=fvalidate.i18n.config.confirmAbortMsg;this.submitButton=["Submit","Submit2"];this.resetButton="Reset";this.ccType="Credit_Card_Type";this.ccTypeObj="form1.Credit_Card_Type";this.boxError="errors";this.boxErrorPrefix="fv_error_"}if(typeof fvalidate=="undefined"){var fvalidate=new Object()}fvalidate.addEvent=function(d,b,c,a){if(typeof d.attachEvent!="undefined"){d.attachEvent("on"+b,c)}else{if(typeof d.attachEventListener!="undefined"){d.addEventListener(b,c,Boolean(a))}}};fvalidate.addEvents=function(f,c,e,a){var d=0,b;while(b=c[d++]){this.addEvent(f,b,e,Boolean(a))}};function validateForm(m,r,o,a,s,b){r=Boolean(r);o=Boolean(o);a=Boolean(a);s=Boolean(s);b=(typeof b!="undefined")?parseInt(b,10):0;var e,l,p;if(typeof m.fv=="undefined"){m.fv=new fValidate(m,b,s)}else{m.fv._reset();m.fv.errorMode=b}var d,k=0,n=m.fv.config.code;while(d=m.elements[k++]){if(d.nodeName=="FIELDSET"){continue}l=(d[n])?d[n]:d.getAttribute(n);if(!(typeof l=="undefined"||l==null||l=="")){e=l.split("|");p=e[0];d.validated=true;if(typeof m.fv[p]=="undefined"){m.fv.devError([p,d.name],"notFound");return false}switch(e.last()){case"bok":e=e.reduce(1,1);d.bok=true;break;case"if":e=e.reduce(1,1);d._if_=true;break;case"then":e=e.reduce(1,1);d._then_=true;break;default:e=e.reduce(1,0)}if(/radio|checkbox/.test(d.type)){d.group=m.elements[d.name]}if(typeof d.fName=="undefined"){if(typeof d.group!="undefined"){for(var h=0;h<d.group.length;h++){if(m.fv.config.clearEvent!=null){g(d.group.item(h),m.fv.config.clearEvent,m.fv,"revertError",false)}}}else{g(d,m.fv.config.clearEvent,m.fv,"revertError",false)}}d.fName=d.title.format();m.fv.elem=d;m.fv.type=p;var c=new Function("obj","method","obj[method]( "+e.toArgString()+" );");c(m.fv,p);if(d.validated==false&&s==false){return false}if(d.validated==true){m.fv.revertError()}}}if(s){m.fv.showGroupError()}if(m.fv.errors.length>0){return false}if(r&&!confirm(m.fv.config.confirmMsg)){if(m.fv.config.confirmAbortMsg!=""){alert(m.fv.config.confirmAbortMsg)}return false}if(o){if(typeof m.fv.config.submitButton=="object"){var q,h=0;while(q=m.fv.config.submitButton[h++]){if(m.fv.elementExists(q)){m.elements[q].disabled=true}}}else{if(m.fv.elementExists(m.fv.config.submitButton)){m.elements[m.fv.config.submitButton].disabled=true}}}if(a&&m.fv.elementExists(m.fv.config.resetButton)){m.elements[m.fv.config.resetButton].disabled=true}return true;function g(v,f,w,x,u){var t=v;if(typeof v.attachEvent!="undefined"){v.attachEvent("on"+f,function(){w[x](t)})}else{if(typeof v.addEventListener!="undefined"){v.addEventListener(f,function(){w[x](t)},u)}else{if(m.fv.config.eventOverride){eleme["on"+f]=function(){w[x](t)}}}}}}function fValidate(e,a,d){var b=this;this.form=e;this.errorMode=a;this.groupError=d;this.errors=new Array();this.validated=true;this.config=new fValConfig();this.i18n=fvalidate.i18n;e.onreset=function(){var g,f=0;while(g=this.elements[f++]){b.revertError(g)}};c();function c(){if(typeof e.getElementsByTagName=="undefined"){return}var k=e.getElementsByTagName("label");var f,g=j=0;var h;while(f=k[g++]){if(typeof f.htmlFor=="undefined"){return}h=e.elements[f.htmlFor];if(typeof h=="undefined"){b.devError([f.htmlFor],"noLabel")}else{if(typeof h.label!="undefined"){continue}else{if(typeof h.length!="undefined"&&h.length>1&&h.nodeName!="SELECT"){for(j=0;j<h.length;j++){h.item(j).label=f}}}}h.label=f}}}fValidate.prototype._reset=function(){this.errors=new Array();this.showErrors=new Array()};fValidate.prototype.elementExists=function(a){return Boolean(typeof this.form.elements[a]!="undefined")};fValidate.prototype.throwError=function(b,e){var c=this.elem;if(typeof c.name=="undefined"){c=c[0]}if(c.bok&&this.isBlank()){c.validated=true;return}if(c.cv){return}c.validated=false;e=this.setArg(e,0);b=this.setArg(b,[]);emsgElem=(typeof this.elem.getAttribute=="undefined")?this.elem[0]:this.elem;if(emsgElem.getAttribute(this.config.emsg)){var a=emsgElem.getAttribute(this.config.emsg)}var a=this.translateMessage(b,this.i18n.errors[this.type][e]);if(this.groupError){this.errors.push({elem:c,msg:a})}else{this.showError(a,false,emsgElem);var d=(typeof c.fields!="undefined")?c.fields[0]:c;this.selectFocus(d)}};fValidate.prototype.showError=function(n,m,f){var o=this,f=this.setArg(f,this.elem),c=Boolean(f.type=="hidden"),k=(c)?null:f.label||null,n=(f.getAttribute(this.config.emsg))?f.getAttribute(this.config.emsg).replace(/\\n/g,"\n"):n,h=this.config.errorClass,g=this.config.useSingleClassNames;if(typeof this.showErrors=="undefined"){this.showErrors=new Array()}switch(this.errorMode){case 0:e();break;case 1:b();break;case 2:d();break;case 3:l();break;case 4:a();break;case 5:b();d();break;case 6:b();l();break;case 7:b();a();break;case 8:b();e();break;case 9:d();l();break;case 10:d();a();break;case 11:d();e();break;case 12:l();a();break;case 13:l();e();break;case 14:a();e();break;case 15:b();d();l();break;case 16:b();d();a();break;case 17:b();d();e();break;case 18:b();l();a();break;case 19:b();l();e();break;case 20:b();a();e();break;case 21:d();l();a();break;case 22:d();l();e();break;case 23:l();a();e();break;case 24:b();d();l();a();break;case 25:b();d();l();e();break;case 26:b();l();a();e();break;case 27:d();l();a();e();break;case 28:b();d();l();a();e();break}function e(){if(o.groupError){o.showErrors.push(n)}else{alert(n)}if(m){alert(o.i18n.groupAlert+o.showErrors.join("\n\n- "))}}function b(){if((typeof f.length!="undefined"&&f.length>1&&f.nodeName!="SELECT")||c){var p,q=0;while(p=(c)?f.fields[q++]:f.item(q++)){if(p.className!=""&&g){p.revertClass=p.className;p.className=h}else{o.addCSSClass(p,h)}}}else{if(g){f.revertClass=f.className;f.className=h}else{o.addCSSClass(f,h)}}}function d(){if(k==null){return}if(o.config.useSingleClassNames){k.className=h}else{o.addCSSClass(k,h)}}function l(){if(k==null||typeof k.innerHTML=="undefined"){return}if(typeof k.original=="undefined"){k.original=k.innerHTML}k.innerHTML=k.original+" - "+n.toHTML()}function a(){if(typeof o.boxError=="undefined"){o.boxError=document.getElementById(o.config.boxError)}if(o.boxError==null){o.devError([o.config.boxError],"noBox");return}if(typeof o.elem.name=="undefined"||o.elem.name==""){o.devError([o.elem[o.config.code]],"missingName");return}var p=o.config.boxErrorPrefix+o.elem.name,q;if(q=document.getElementById(p)){q.firstChild.nodeValue=n.toHTML()}else{q=document.createHTMLElement("li",{id:p,innerHTML:n.toHTML(),title:o.i18n.boxToolTip});o.boxError.appendChild(q);q.onclick=function(){var r=o.form.elements[this.id.replace(o.config.boxErrorPrefix,"")];if(typeof r.fields!="undefined"){r=r.fields[0]}if(typeof r.select!="undefined"){r.select()}if(typeof r.focus!="undefined"){r.focus()}}}o.boxError.style.display="block"}};fValidate.prototype.removeCSSClass=function(b,a){b.className=b.className.replace(a,"").trim()};fValidate.prototype.addCSSClass=function(b,a){this.removeCSSClass(b,a);b.className=(b.className+" "+a).trim()};fValidate.prototype.showGroupError=function(){for(var a,c,b=0;(a=this.errors[b]);b++){if(b==0){c=a.elem}this.elem=a.elem;this.showError(a.msg,Boolean(b==(this.errors.length-1)))}};fValidate.prototype.revertError=function(e){e=this.setArg(e,this.elem);var d=Boolean(e.type=="hidden"),a=this.config.errorClass,c=0,f,b;if((typeof e.length!="undefined"&&e.length>1&&e.nodeName!="SELECT")||d){if(d&&typeof e.fields!="undefined"){while(b=(d)?e.fields[c++]:e.item(c++)){if(typeof b.revertClass!="undefined"){b.className=b.revertClass}}}}else{if(this.config.useSingleClassNames){if(typeof subElement.revertClass!="undefined"){e.className=e.revertClass}}else{this.removeCSSClass(e,a)}}if(typeof e.label!="undefined"){if(this.config.useSingleClassNames){e.label.className=""}else{this.removeCSSClass(e.label,a)}e.label.innerHTML=(e.label.original||e.label.innerHTML)}if(typeof this.boxError!="undefined"){if(typeof this.boxError.normalize!="undefined"){this.boxError.normalize()}if(f=document.getElementById(this.config.boxErrorPrefix+e.name)){this.boxError.removeChild(f)}if(this.boxError.childNodes.length==0){this.boxError.style.display="none"}}};fValidate.prototype.selectFocus=function(a){if(typeof a.select!="undefined"){a.select()}if(typeof a.focus!="undefined"){a.focus()}};fValidate.prototype.typeMismatch=function(){var e={text:"text|password|textarea",ta:"textarea",hidden:"hidden",s1:"select-one",sm:"select-multiple",select:"select-one|select-multiple",rg:"radio",radio:"radio",cb:"checkbox",file:"file"};var b=false,d=new Array(),a=key=type=regex="";for(var c=0;c<arguments.length;c++){type=e[arguments[c]];regex=new RegExp(type);a+=(regex.test(this.elem.type))?"1":"0";key+="0";d.push(type)}if(key^a==0){this.devError([this.elem.fName,this.elem.type,d.join("|").replace(/\|/g,this.i18n.or)],"mismatch");this.elem.validated=false;return true}return false};fValidate.prototype.getValue=function(c){switch(c.type){case"text":case"password":case"textarea":case"hidden":case"file":return c.value;case"radio":case"select-single":if(typeof c.length=="undefined"){return c.value}else{for(var b=0;b<c.length;b++){choice=(c.type=="radio")?"checked":"selected";if(c[b][choice]){return c[b].value}}}case"select-multiple":case"checkbox":if(typeof c.length=="undefined"){return c.value}else{var a=new Array();for(var b=0;b<c.length;b++){choice=(c.type=="checkbox")?"checked":"selected";if(c[b][choice]){a.push(c[b].value)}}return a}default:return null}};fValidate.prototype.setArg=function(a,b){return(typeof a=="undefined"||a==""||a==null)?b:a};fValidate.prototype.isBlank=function(a){var b=this.form.elements[a]||this.elem;return Boolean(/^\s*$/.test(b.value))};fValidate.prototype.translateMessage=function(a,c){var d="";for(var b=0;b<c.length;b++){d+=(typeof c[b]=="number")?a[c[b]]:c[b]}return d};fValidate.prototype.devError=function(c,e){if(typeof c=="string"){e=c;c=[]}e=this.setArg(e,this.type);var d=this.i18n.devErrors[e];var b=[this.i18n.devErrors.lines[0],"----------------------------------------------------------------------------------------------",this.translateMessage(c,d),"----------------------------------------------------------------------------------------------",this.i18n.devErrors.lines[1]];alert(b.join("\n"))};fValidate.prototype.paramError=function(b,a){a=this.setArg(a,this.elem.name);this.devError([b,this.type,a],"paramError")};document.createHTMLElement=function(c,d){if(typeof document.createElement=="undefined"){return}var b=document.createElement(c);if(typeof d!="undefined"){for(var a in d){switch(true){case (a=="text"):b.appendChild(document.createTextNode(d[a]));break;case (a=="class"):b.className=d[a];break;default:b.setAttribute(a,"");b[a]=d[a]}}}return b};Array.prototype.reduce=function(c,h){var d=new Array();var g=0;for(var f=c;f<this.length-h;f++){d[g++]=this[f]}return d};Array.prototype.toArgString=function(){var b=new Array();for(var c=0;c<this.length;c++){b.push("'"+this[c]+"'")}return b.toString()};Array.prototype.last=function(){return this[this.length-1]};String.prototype.format=function(){return this.replace(/\_/g," ").replace(/\[|\]/g,"")};String.prototype.toHTML=function(){return this.replace(/\n/g,"<br />").replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;")};String.prototype.trim=function(){return this.replace(/^\s+|\s+$/,"")};String.prototype.toPattern=function(){return this.replace(/([\.\*\+\{\}\(\)\<\>\^\$\\])/g,"\\$1")};if(typeof fvalidate=="undefined"){var fvalidate=new Object()}fvalidate.i18n={errors:{blank:[["Please enter ",0]],length:[[0," must be at least ",1," characters long"],[0," must be no more than ",1," characters long.\nThe current text is ",2," characters long."]],equalto:[[0," must be equal to ",1]],number:[["The number you entered for ",0," is not valid"]],numeric:[["Only numeric values are valid for the ",0],["A minimum of ",0," numeric values are required for the ",1]],numericlen:[["Only numeric values are valid for the ",0],["Between ",0," and ",1," numeric values are required for the ",2]],alnum:[['The data you entered, "',0,'", does not match the requested format for ',1,"\nMinimum Length: ",2,"\nCase: ",3,"\nNumbers allowed: ",4,"\nSpaces allowed: ",5,"\nPunctuation characters allowed: ",6,"\n"]],decimal:[["The data you entered,",0," is not valid.  Please re-enter the ",1]],decimalr:[[0," is not a valid. Please re-enter."]],ip:[["Please enter a valid IP"],["The port number you specified, ",0,",  is out of range.\nIt must be between ",1," and ",2]],ssn:[["You need to enter a valid Social Security Number.\nYour SSN must be entered in 'XXX-XX-XXXX' format."]],money:[[0," does not match the required format of ",1]],cc:[["The ",0," you entered is not valid. Please check again and re-enter."]],ccDate:[["You credit card has expired! Please use a different card."]],zip:[["Please enter a valid 5 or 9 digit Zip code."]],phone:[["Please enter a valid phone number plus Area Code."],["Please enter a valid phone number - seven or ten digits."]],email:[["Please enter a valid email address"]],url:[[0," is not a valid domain"]],date:[["The data entered for ",0," is not a valid date\nPlease enter a date using the following format: ",1],["Date must be before ",0],["Date must be on or before ",0],["Date must be after ",0],["Date must be on or after ",0]],select:[["Please select a valid option for ",0]],selectm:[["Please select between ",0," and ",1," options for ",2,".\nYou currently have ",3," selected"]],selecti:[["Please select a valid option for ",0]],checkbox:[["Please check ",0," before continuing"],["Please select between ",0," and ",1," options for ",2,".\nYou currently have ",3," selected"]],radio:[["Please check ",0," before continuing"],["Please select an option for ",0]],comparison:[[0," must be ",1," ",2]],eitheror:[["One and only one of the following fields must be entered:\n\t-",0,"\n"]],atleast:[["At least ",0," of the following fields must be entered:\n\t-",1,"\n\nYou have only ",2," filled in.\n"]],allornone:[["All or none of the following fields must be entered and accurate:\n\t-",0,"\nYou have only ",1," accurate field entered.\n"]],file:[["The file must be one of the following types:\n",0,"\nNote: File extension may be case-sensitive."]],custom:[[0," is invalid."]],cazip:[["Please enter a valid postal code."]],ukpost:[["Please enter a valid postcode."]],germanpost:[["Please enter a valid postcode."]],swisspost:[["Please enter a valid postcode."]]},comparison:{gt:"greater than",lt:"less than",gte:"greater than or equal to",lte:"less than or equal to",eq:"equal to",neq:"not equal to"},devErrors:{number:["The lower-bound (",0,") is greater than the upper-bound (",1,") on this element: ",2],length:["The minimum length (",0,") is greater than the maxiumum legnth (",1,") on this element: ",2],cc:["Credit Card type (",0,") not found."],lines:["! WARNING ! -- fValidate developer-assist error\n","\nIf you are not the developer, please contact the website administrator regarding this error."],paramError:["You must include the '",0,"' parameter for the '",1,"' validator type on this field: ",2],notFound:["The validator '",0,"' was not found.\nRequested by: ",1],noLabel:["No element found for label: ",0],noBox:["An element with the requested id '",0,"' was not found for the 'boxError' config value."],missingName:["The hidden input calling the following logical validator must have a valid name\nattribute when used in conjunction with the 'box' error-type.\n\t",0],mismatch:["Validator/Element type mismatch.\n\nElement: ",0,"\nElement type: ",1,"\nType required by validator: ",2],noCCType:["You must include a SELECT item with Credit Card type choices!"]},config:{confirmMsg:"Your data is about to be sent.\nPlease click 'Ok' to proceed or 'Cancel' to abort.",confirmAbortMsg:"Submission cancelled.  Data has not been sent."},boxToolTip:"Click to target field",groupAlert:"The following errors occured:\n\n- ",or:" or "};fValidate.prototype.equalto=function(b){if(this.typeMismatch("text")){return}if(typeof b=="undefined"){this.paramError("oName")}var a=this.form.elements[b];if(this.elem.value!=a.value){this.throwError([this.elem.fName,a.fName])}};fValidate.prototype.eitheror=function(){if(this.typeMismatch("hidden")){return}if(typeof arguments[0]=="undefined"){this.paramError("delim");return}if(typeof arguments[1]=="undefined"){this.paramError("fields");return}var b,d=0,a=new Array(),f,e=0,c=arguments[1].split(arguments[0]);this.elem.fields=new Array();while(b=c[d++]){f=this.form.elements[b];a.push(f.fName);this.elem.fields.push(f);if(!this.isBlank(b)){e++}}if(e!=1){this.throwError([a.join("\n\t-")])}};fValidate.prototype.atleast=function(){if(this.typeMismatch("hidden")){return}if(typeof arguments[0]==undefined){this.paramError("qty");return}if(typeof arguments[1]==undefined){this.paramError("delim");return}if(typeof arguments[2]==undefined){this.paramError("fields");return}var b,d=0,a=new Array(),f,e=0,c=arguments[2].split(arguments[1]);this.elem.fields=new Array();while(b=c[d++]){f=this.form.elements[b];a.push(f.fName);this.elem.fields.push(f);if(!this.isBlank(b)){e++}}if(e<arguments[0]){this.throwError([arguments[0],a.join("\n\t-"),e])}};fValidate.prototype.allornone=function(){if(this.typeMismatch("hidden")){return}if(typeof arguments[0]=="undefined"){this.paramError("delim");return}if(typeof arguments[1]=="undefined"){this.paramError("fields");return}var b,d=0,a=new Array(),f,e=0,c=arguments[1].split(arguments[0]);this.elem.fields=new Array();while(b=c[d++]){f=this.form.elements[b];a.push(f.fName);this.elem.fields.push(f);if(!this.isBlank(b)){e++}}if(e>0&&e<c.length){this.throwError([a.join("\n\t-"),e])}};fValidate.prototype.comparison=function(field1,operator,field2){if(this.typeMismatch("hidden")){return}var elem1=this.form.elements[field1],elem2=this.form.elements[field2],value1=this.getValue(elem1),value2=this.getValue(elem2);i18n=this.i18n.comparison;i=-1;var operators=[[">",i18n.gt],["<",i18n.lt],[">=",i18n.gte],["<=",i18n.lte],["==",i18n.eq],["!=",i18n.neq]];while(operators[++i][0]!=operator){}this.elem.fields=[elem1,elem2];if(!eval(value1+operator+value2)){this.throwError([elem1.fName,operators[i][1],elem2.fName])}};fValidate.prototype.blank=function(){if(this.typeMismatch("text")){return}if(this.isBlank()){this.throwError([this.elem.fName])}};fValidate.prototype.number=function(d,e,c){if(this.typeMismatch("text")){return}var b=(d==0)?parseInt(this.elem.value,10):parseFloat(this.elem.value);e=this.setArg(e,0);c=this.setArg(c,Number.infinity);if(e>c){this.devError([e,c,this.elem.name]);return}var a=Boolean(isNaN(b)||b!=this.elem.value);if(!a){switch(true){case (e!=false&&c!=false):a=!Boolean(e<=b&&b<=c);break;case (e!=false):a=Boolean(b<e);break;case (c!=false):a=Boolean(b>c);break}}if(a){this.throwError([this.elem.fName]);return}this.elemPass=true};fValidate.prototype.numeric=function(a){if(this.typeMismatch("text")){return}a=this.setArg(a,"*");var b=new RegExp((a=="*")?"^\\d+$":"^\\d{"+parseInt(a,10)+"}\\d*$");if(!b.test(this.elem.value)){if(a=="*"){this.throwError([this.elem.fName])}else{this.throwError([a,this.elem.fName],1)}}};fValidate.prototype.numericlen=function(a,b){if(this.typeMismatch("text")){return}a=this.setArg(a,"*");b=this.setArg(a,"9999");var c=new RegExp((a=="*")?"^\\d+$":"^\\d{"+parseInt(a,10)+","+parseInt(b,10)+"}$");if(!c.test(this.elem.value)){if(a=="*"){this.throwError([this.elem.fName])}else{this.throwError([a,b,this.elem.fName],1)}}};fValidate.prototype.length=function(a,b){if(this.typeMismatch("text")){return}var c=this.elem.value.length;a=Math.abs(a);b=Math.abs(this.setArg(b,Number.infinity));if(a>b){this.devError([a,b,this.elem.name]);return}if(a>parseInt(c,10)){this.throwError([this.elem.fName,a])}if(c>b){this.throwError([this.elem.fName,b,c],1)}};fValidate.prototype.alnum=function(d,a,k,f,c){if(this.typeMismatch("text")){return}a=this.setArg(a,"a");k=(k=="true"||k=="1");f=(f=="true"||f=="1");var e="",h=["None","Any","No","No","Any"];if(d!="*"){d=parseInt(d,10);h[0]=d}else{d=0}switch(a.toUpperCase()){case"U":e+="A-Z";h[1]="UPPER";break;case"L":e+="a-z";h[1]="lower";break;case"C":e+="A-Z][a-z";h[1]="Intial capital";d--;break;default:e+="a-zA-Z";break}if(k==true){e+="0-9";h[2]="Yes"}if(f==true){e+=" ";h[3]="Yes"}if(c=="any"){h[4]="Any"}else{if(c=="none"){h[4]="None"}else{c=c.replace(/pipe/g,"|");e+=c;h[4]=c}}var b=(d!="*")?"{"+d+",}":"+";var g=(c=="any")?new RegExp("^(["+e+"]|[^a-zA-Z0-9\\s])"+b+"$"):new RegExp("^["+e+"]"+b+"$");if(!g.test(this.elem.value)){this.throwError([this.elem.value,this.elem.fName,h[0],h[1],h[2],h[3],h[4]])}};fValidate.prototype.equalto=function(b){if(this.typeMismatch("text")){return}if(typeof b=="undefined"){this.paramError("oName")}var a=this.form.elements[b];if(this.elem.value!=a.value){this.throwError([this.elem.fName,a.fName])}};fValidate.prototype.ssn=function(){if(this.typeMismatch("text")){return}if(!(/^\d{3}\-\d{2}\-\d{4}$/.test(this.elem.value))){this.throwError()}};fValidate.prototype.select=function(){if(this.typeMismatch("s1")){return}if(this.elem.selectedIndex==0){this.throwError([this.elem.fName])}};fValidate.prototype.selectm=function(d,a){if(this.typeMismatch("sm")){return}if(typeof d=="undefined"){this.paramError("minS")}if(a==999||a=="*"||typeof a=="undefined"||a>this.elem.length){a=this.elem.length}var e=0;for(var c,b=0;(c=this.elem.options[b]);b++){if(c.selected){e++}}if(e<d||e>a){this.throwError([d,a,this.elem.fName,e])}};fValidate.prototype.selecti=function(a){if(this.typeMismatch("s1")){return}if(typeof a=="undefined"){this.paramError("indexes");return}a=a.split(",");var c=true;for(var b=0;b<a.length;b++){if(this.elem.options[a[b]].selected){c=false;break}}if(!c){this.throwError([this.elem.fName])}};fValidate.prototype.cazip=function(){var a=this.elem;if(this.typeMismatch("text")){return}a.value=a.value.toUpperCase();if(!(/^[A-Z][0-9][A-Z] [0-9][A-Z][0-9]$/.test(a.value))){this.throwError()}};fValidate.prototype.capost=fValidate.prototype.cazip;fValidate.prototype.ukpost=function(){var a=this.elem;if(this.typeMismatch("text")){return}a.value=a.value.toUpperCase();if(!(/^[A-Z]{1,2}\d[\dA-Z] ?\d[A-Z]{2}$/.test(a.value))){this.throwError()}};fValidate.prototype.germanpost=function(){var a=this.elem;if(this.typeMismatch("text")){return}a.value=a.value.toUpperCase();if(!(/^(?:CH\-)\d{4}$/.test(a.value))){this.throwError()}};fValidate.prototype.swisspost=function(){var a=this.elem;if(this.typeMismatch("text")){return}a.value=a.value.toUpperCase();if(!(/^(?:D\-)\d{5}$/.test(this.elem.value))){this.throwError()}};fValidate.prototype.email=function(b){if(this.typeMismatch("text")){return}if(typeof b=="undefined"){b=0}var a=[/.+@.+\..+$/i,/^\w.+@\w.+\.[a-z]+$/i,/^\w[-_a-z~.]+@\w[-_a-z~.]+\.[a-z]{2}[a-z]*$/i,/^\w[\w\d]+(\.[\w\d]+)*@\w[\w\d]+(\.[\w\d]+)*\.[a-z]{2,7}$/i];if(!a[b].test(this.elem.value)){this.throwError()}};fValidate.prototype.url=function(b,c,f){if(this.typeMismatch("text")){return}this.setArg(b,"http");var e="^(?:("+b.replace(/\,/g,"|")+")\\:\\/\\/)";var a=(Boolean(f)==true)?"(\\?.*)?$":"$";if(Boolean(c)==true){e+="?"}var d=new RegExp(e+"([\\w\\d-]+\\.?)+"+a);if(!d.test(this.elem.value)){this.throwError([this.elem.fName])}};fValidate.prototype.ip=function(d,a){if(this.typeMismatch("text")){return}d=this.setArg(d,0);a=this.setArg(a,99999);if(!(/^\d{1,3}(\.\d{1,3}){3}(:\d+)?$/.test(this.elem.value))){this.throwError()}else{var b,c=0,e=this.elem.value.split(/[.:]/);while(b=e[c++]){if(c==5){if(b<d||b>a){this.throwError([b,d,a],1)}}else{if(b<0||b>255){this.throwError()}}}}};fValidate.prototype.decimal=function(a,d){if(this.typeMismatch("text")){return}var c="",b=this.elem;if(a!="*"){a=parseInt(a,10)}if(d!="*"){d=parseInt(d,10)}if(a==0){c="^\\.[0-9]{"+d+"}$"}else{if(a=="*"){c="^[0-9]*\\.[0-9]{"+d+"}$"}else{if(d=="*"){c="^[0-9]{"+a+"}\\.[0-9]+$"}else{c="^[0-9]{"+a+"}\\.[0-9]{"+d+"}$"}}}c=new RegExp(c);if(!c.test(b.value)){this.throwError([b.value,b.fName])}};fValidate.prototype.decimalr=function(f,d,b,e){if(this.typeMismatch("text")){return}f=(f=="*")?0:parseInt(f,10);d=(d=="*")?"":parseInt(d,10);b=(b=="*")?0:parseInt(b,10);e=(e=="*")?"":parseInt(e,10);var a="^[0-9]{"+f+","+d+"}\\.[0-9]{"+b+","+e+"}$";var c=new RegExp(a);if(!c.test(this.elem.value)){this.throwError([this.elem.fName])}return true};fValidate.prototype.zip=function(a){if(this.typeMismatch("text")){return}a=this.setArg(a,"- ");var b=new RegExp("^[0-9]{5}(|["+a.toPattern()+"][0-9]{4})?$");if(!b.test(this.elem.value)){this.throwError()}};fValidate.prototype.phone=function(b){if(this.typeMismatch("text")){return}b=this.setArg(b,0);var a=[/^(\(?\d\d\d\)?)?[ -]?\d\d\d[ -]?\d\d\d\d$/,/^(\(\d\d\d\) )?\d\d\d[ -]\d\d\d\d$/];if(!a[b].test(this.elem.value)){if(b==1){this.throwError()}else{this.throwError([],1)}}};fValidate.prototype.date=function(m,f,e,g){if(this.typeMismatch("text")){return}if(typeof m=="undefined"){this.paramError("formatStr");return}f=this.setArg(f,"/");var n=[this.elem.fName,m.replace(/\//g,f)];var p=m.split("/");var d=this.elem.value.split(f);var h=new Object();for(var l=0;l<p.length;l++){switch(p[l].charAt(0).toLowerCase()){case"m":h.months=l;break;case"d":h.days=l;break;case"y":h.years=l;break}}var k=new Date(d[h.years],d[h.months]-1,d[h.days]);if(isNaN(k)||k.getDate()!=d[h.days]||k.getMonth()!=d[h.months]-1||k.getFullYear().toString().length!=m.match(/y/g).length){this.throwError(n);return}var c=this.form.elements[g];if(typeof c!="undefined"){g=c.validDate||c.value}var b=(g=="today")?new Date():new Date(g);b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0);var a=b.getTime()-k.getTime();var o=false;switch(parseInt(e)){case 1:o=Boolean(a>0);n=1;break;case 2:o=Boolean((a+86400000)>0);n=2;break;case 3:o=Boolean(a<0);n=3;break;case 4:o=Boolean((a-86400000)<0);n=4;break;default:o=true}if(!o){this.throwError([g],n)}this.elem.validDate=k.toString()};fValidate.prototype.money=function(f,a,d){if(this.typeMismatch("text")){return}f=(f==" ")?false:f.toPattern();a=(a==" ")?false:a.toPattern();d=(d==" ")?false:d.toPattern();var b,e;switch(true){case Boolean(f&&a&&d):e="^"+f+"(?:(?:[0-9]{1,3}"+a+")(?:[0-9]{3}"+a+")*[0-9]{3}|[0-9]{1,3})("+d+"[0-9]{2})$";b=f+"XX"+a+"XXX"+d+"XX";break;case Boolean(f&&a&&!d):e="^"+f+"(?:(?:[0-9]{1,3}"+a+")(?:[0-9]{3}"+a+")*[0-9]{3}|[0-9]{1,3})$";b=""+f+"XX"+a+"XXX";break;case Boolean(f&&!a&&d):e="^"+f+"[0-9]*(\\.[0-9]{2})$";b=""+f+"XXXXX"+d+"XX";break;case Boolean(!f&&a&&d):e="^(?:(?:[0-9]{1,3}"+a+")(?:[0-9]{3}"+a+")*[0-9]{3}|[0-9]{1,3})("+d+"[0-9]{2})?$";b="XX"+a+"XXX"+d+"XX";break;case Boolean(f&&!a&&!d):e="^"+f+"[0-9]*$";b=""+f+"XXXXX";break;case Boolean(!f&&a&&!d):e="^(?:(?:[0-9]{1,3}"+a+")(?:[0-9]{3}"+a+")*[0-9]{3}|[0-9]{1,3})$";b="XX"+a+"XXX";break;case Boolean(!f&&!a&&d):e="^[0-9]*("+d+"[0-9]{2})$";b="XXXXX"+d+"XX";break;case Boolean(!f&&!a&&!d):e="^.?(?:(?:[0-9]{1,3}.?)(?:[0-9]{3}.?)*[0-9]{3}|[0-9]{1,3})(.[0-9]{2})?$";b="[?]XX[?]XXX[?XX]"}var c=new RegExp(e);if(!c.test(this.elem.value)){this.throwError([this.elem.fName,b.replace(/\\/g,"")])}};fValidate.prototype.checkbox=function(e,d){if(this.typeMismatch("cb")){return}if(typeof e=="undefined"){this.paramError("minC");return}if(this.elem==this.form.elements[this.elem.name]&&!this.elem.checked){this.throwError([this.elem.fName])}else{this.elem=this.form.elements[this.elem.name];var a=this.elem.length;var c=0;if(d==999||d=="*"||typeof d=="undefined"||d>this.elem.length){d==a}var b=a;while(b-->0){if(this.elem[b].checked){c++}}if(c<e||c>d){this.throwError([e,d,this.elem[0].fName,c])}}};fValidate.prototype.radio=function(){if(this.typeMismatch("rg")){return}if(this.elem==this.form.elements[this.elem.name]&&!this.elem.checked){this.throwError([this.elem.fName])}else{this.elem=this.form.elements[this.elem.name];for(var a=0;a<this.elem.length;a++){if(this.elem.item(a).checked){return}}this.throwError([this.elem[0].fName])}};fValidate.prototype.eitheror=function(){if(this.typeMismatch("hidden")){return}if(typeof arguments[0]=="undefined"){this.paramError("delim");return}if(typeof arguments[1]=="undefined"){this.paramError("fields");return}var b,d=0,a=new Array(),f,e=0,c=arguments[1].split(arguments[0]);this.elem.fields=new Array();while(b=c[d++]){f=this.form.elements[b];a.push(f.fName);this.elem.fields.push(f);if(!this.isBlank(b)){e++}}if(e!=1){this.throwError([a.join("\n\t-")])}};fValidate.prototype.atleast=function(){if(this.typeMismatch("hidden")){return}if(typeof arguments[0]==undefined){this.paramError("qty");return}if(typeof arguments[1]==undefined){this.paramError("delim");return}if(typeof arguments[2]==undefined){this.paramError("fields");return}var b,d=0,a=new Array(),f,e=0,c=arguments[2].split(arguments[1]);this.elem.fields=new Array();while(b=c[d++]){f=this.form.elements[b];a.push(f.fName);this.elem.fields.push(f);if(!this.isBlank(b)){e++}}if(e<arguments[0]){this.throwError([arguments[0],a.join("\n\t-"),e])}};fValidate.prototype.allornone=function(){if(this.typeMismatch("hidden")){return}if(typeof arguments[0]=="undefined"){this.paramError("delim");return}if(typeof arguments[1]=="undefined"){this.paramError("fields");return}var b,d=0,a=new Array(),f,e=0,c=arguments[1].split(arguments[0]);this.elem.fields=new Array();while(b=c[d++]){f=this.form.elements[b];a.push(f.fName);this.elem.fields.push(f);if(!this.isBlank(b)){e++}}if(e>0&&e<c.length){this.throwError([a.join("\n\t-"),e])}};fValidate.prototype.comparison=function(field1,operator,field2){if(this.typeMismatch("hidden")){return}var elem1=this.form.elements[field1],elem2=this.form.elements[field2],value1=this.getValue(elem1),value2=this.getValue(elem2);i18n=this.i18n.comparison;i=-1;var operators=[[">",i18n.gt],["<",i18n.lt],[">=",i18n.gte],["<=",i18n.lte],["==",i18n.eq],["!=",i18n.neq]];while(operators[++i][0]!=operator){}this.elem.fields=[elem1,elem2];if(!eval(value1+operator+value2)){this.throwError([elem1.fName,operators[i][1],elem2.fName])}};fValidate.prototype.file=function(b,a){if(this.typeMismatch("file")){return}if(typeof b=="undefined"){this.paramError("extensions");return}a=Boolean(a)?"":"i";var c=new RegExp("^.+\\.("+b.replace(/,/g,"|")+")$",a);if(!c.test(this.elem.value)){this.throwError([b.replace(/,/g,"\n")])}};fValidate.prototype.custom=function(a,c){if(this.typeMismatch("text")){return}a=(a)?a.replace(/[^gim]/ig):"";var b=new RegExp(this.elem.getAttribute(this.config.pattern),a);if(!b.test(this.elem.value)){this.throwError([this.elem.fName])}};fValidate.prototype.cc=function(){if(this.typeMismatch("text")){return}var c=this.form.elements[this.config.ccType];if(!c){this.devError("noCCType");return}var b=c.options[c.selectedIndex].value.toUpperCase();var a={VISA:/^4\d{12}(\d{3})?$/,MC:/^5[1-5]\d{14}$/,DISC:/^6011\d{12}$/,AMEX:/^3[4|7]\d{13}$/,DINERS:/^3[0|6|8]\d{12}$/,ENROUTE:/^2[014|149]\d{11}$/,JCB:/^3[088|096|112|158|337|528]\d{12}$/,SWITCH:/^(49030[2-9]|49033[5-9]|49110[1-2]|4911(7[4-9]|8[1-2])|4936[0-9]{2}|564182|6333[0-4][0-9]|6759[0-9]{2})\d{10}(\d{2,3})?$/,DELTA:/^4(1373[3-7]|462[0-9]{2}|5397[8|9]|54313|5443[2-5]|54742|567(2[5-9]|3[0-9]|4[0-5])|658[3-7][0-9]|659(0[1-9]|[1-4][0-9]|50)|844[09|10]|909[6-7][0-9]|9218[1|2]|98824)\d{10}$/,SOLO:/^(6334[5-9][0-9]|6767[0-9]{2})\d{10}(\d{2,3})?$/};if(c.validated==false&&this.groupError==true){return}if(typeof a[b]=="undefined"&&c.validated==false&&this.groupError==false){this.devError([b]);return}this.elem.value=this.elem.value.replace(/[^\d]/g,"");if(!a[b].test(this.elem.value)||!this.elem.value.luhn()){this.throwError([this.elem.fName])}};String.prototype.luhn=function(){var i=this.length;var checkSum="",digit;while(digit=this.charAt(--i)){checkSum+=(i%2==0)?digit*2:digit}checkSum=eval(checkSum.split("").join("+"));return(checkSum%10==0)};fValidate.prototype.ccDate=function(d,c){if(this.typeMismatch("s1")){return}c=parseInt(this.getValue(this.form.elements[c]),10)+2000;d=parseInt(this.getValue(this.form.elements[d]),10);var a=new Date();var b=new Date(c,d);if(b<a){alert(["Card Expired",a,b].join("\n"))}};

