-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathvalidanguage.js
More file actions
3 lines (3 loc) · 53.6 KB
/
validanguage.js
File metadata and controls
3 lines (3 loc) · 53.6 KB
1
2
3
var validanguage={useLibrary:"none",version:"1.0.0",settings:{showAlert:false,focusOnerror:false,validateAllFieldsOnsubmit:true,onsuccess:"validanguage.hideError",onerror:"validanguage.showError",errorMsg:"You have entered an invalid entry in the form",requiredErrorMsg:"You have skipped a required field",minlengthErrorMsg:"The indicated field must be at least {!minlength} characters long",maxlengthErrorMsg:"The indicated field may not be longer than {!maxlength} characters",characterValidationErrorMsg:"You have entered invalid characters",onErrorClassName:"vdError",noErrorClassName:"vdNoError",passedFieldClassName:"passedField",failedFieldClassName:"failedField",errorMsgSpanSuffix:"_errorMsg",showFailedFields:false,errorListText:"<strong>Please correct the following fields:</strong>",errorDivId:"vdErrorDiv",errorListId:"vdErrorList",errorListItemSuffix:"_vd_li",showSubmitMessageId:"vdSubmitMessage",showSubmitMessageMessage:"Loading",emptyOptionElements:[" ","0"," ",""],defaultValidationHandlers:["submit"],defaultTransformationHandlers:["blur"],callToggleTransformationsOnload:true,toggleVisibilityDefaultsToHidden:true,ajaxTimeout:30,submitFormOnExpiredAjax:true,cacheAjaxLookups:true,loadCommentAPI:true,commentDelimiter:"\n",validationErrorColor:"#FF6666",retriggerErrors:true,normalTextboxColor:"",timeDelay:100,typingDelay:1100,validateRequiredAlternativesOnclick:true,errorOnMatch:false,onload:function(){},foo:""},ajaxLookup:{},alertCounter:true,debug:false,el:{},fields:{},forcedSubmission:false,forms:{},formLookup:{},ignoreTheseKeyCodes:[8,37,38,39,40,46],requiredAlternatives:[],supportedEvents:["blur","change","keypress","keyup","keydown","submit","click","typing","focus"],supportedEventHandlers:["onblur","onchange","onkeypress","onkeyup","onkeydown","onsubmit","onclick","ontyping","onfocus"],typingDelay:[],vdLoaded:false,addEvent:function(D,B,A){if(D.addEventListener){D.addEventListener(B,A,false);return true}else{if(D.attachEvent){var C=D.attachEvent("on"+B,A);return C}}},addEventInit:function(){switch(this.useLibrary){case"prototype":case"scriptaculous":this.addEvent=function(C,A,B){Event.observe(C,A,B)};break;case"dojo":this.addEvent=function(C,A,B){dojo.connect(C,"on"+A,B)};break;case"jquery":this.addEvent=function(D,B,C){if(D==window){jQuery(document).ready(C)}else{var A="#"+D.id;jQuery(A).bind(B,C)}};break}},addOrCreateValidationWrapper:function(B,A,F){var E=B.id;if(A=="submit"){if(this.empty(F)){return }var D=validanguage.formLookup[E];if(typeof D=="number"){var C=document.forms[D]}else{var C=document.getElementById(D)}if(typeof validanguage.forms[D].validations=="undefined"){validanguage.forms[D].validations=[];this.addEvent(C,A,function(I){var H=I||window.evt;var G=validanguage.validationWrapper(I);if(G==false){H.returnValue=false;if(H.preventDefault){H.preventDefault()}return false}else{return true}})}validanguage.forms[D].validations[validanguage.forms[D].validations.length]={element:B,validationsCounter:F}}else{if(typeof validanguage.el[E].handlers=="undefined"){validanguage.el[E].handlers={}}if(typeof validanguage.el[E].handlers[A]=="undefined"){validanguage.el[E].handlers[A]=[];if(A=="typing"){this.addEvent(B,"keyup",function(G){validanguage.validationWrapper(G,"typingTimeout")})}else{this.addEvent(B,A,function(G){validanguage.validationWrapper(G)})}}validanguage.el[E].handlers[A][validanguage.el[E].handlers[A].length]=F}},addValidation:function(F,D,A){if(typeof A[0]=="undefined"){A=[A]}if(typeof D=="string"){D=[D]}var E=this.el[F].validations;for(var C=E.length-1;C>-1;C--){if(A[0]=="*"||this.inArray(E[C].name,A)){for(var B=D.length-1;B>-1;B--){this.addOrCreateValidationWrapper(document.getElementById(F),D[B])}}}},ajax:function(B,C){if(window.ActiveXObject){var A=new ActiveXObject("Microsoft.XMLHTTP")}else{if(window.XMLHttpRequest){var A=new XMLHttpRequest()}}A.open("POST",B,true);A.onreadystatechange=function(){if(A.readyState==4){C(A.responseText)}};A.send(null)},ajaxInit:function(){switch(this.useLibrary){case"prototype":case"scriptaculous":this.ajax=function(B,C,A){if(validanguage.empty(A)){A={}}A.onSuccess=C;new Ajax.Request(B,A)};break;case"dojo":this.ajax=function(B,C,A){if(validanguage.empty(A)){A={}}A.url=B;A.handle=C;dojo.xhrGet(A)};break;case"jquery":this.ajax=function(B,C,A){if(validanguage.empty(A)){A={}}A.url=B;A.success=C;jQuery.ajax(A)};break}},ajaxValidationWrapper:function(C,B){var A=(typeof this.formLookup[C]=="undefined")?"forms":"fields";if(this.empty(validanguage[A][C][B].dispatchedAjax)){window.clearInterval(validanguage[A][C][B].ajaxInterval)}else{for(var D in validanguage[A][C][B].dispatchedAjax){if(typeof time=="function"){continue}if(validanguage[A][C][B].dispatchedAjax[D]+(validanguage.settings.ajaxTimeout*1000)<new Date().getTime()){if(this.debug){console.log("Aborting request...")}delete this[A][C][B].failedValidations[D];if(this.empty(this[A][C][B].failedValidations)){this[A][C][B].failedValidations="callManually"}delete this[A][C][B].dispatchedAjax;if(A=="forms"&&this.validateForm(C).result===true){if(this.debug){console.log("Request Aborted.")}if(this.settings.submitFormOnExpiredAjax){this.forcedSubmission=true;document.getElementById(C).submit()}}return }}}},callToggleTransformationsOnload:function(){if(this.settings.callToggleTransformationsOnload){for(var F in this.el){if(typeof this.el[F].transformations!="undefined"){for(var E=this.el[F].transformations.length-1;E>-1;E--){if(typeof this.el[F].transformations[E].name=="undefined"){continue}var A=this.el[F].transformations[E].name;if(typeof A=="string"&&A.indexOf("validanguage.toggle")>-1){var D=this.resolveArray(A,"function");var C=D.length;for(var B=0;B<C;B++){D[B].call(document.getElementById(F))}}}}}}},concatCollection:function(F,E){var D;var A=new Array();var C=F.length;var B=E.length;for(D=0;D<C;D++){A.push(F[D])}for(D=0;D<B;D++){A.push(E[D])}return A},empty:function(E,D){if(E==null||E==undefined||E==NaN||E==="null"||(E==""&&typeof E=="string")){return true}if(D==true&&E==false){return true}if(typeof E=="object"){for(var B in E){if(typeof E[B]=="function"){continue}var C=true;for(var A in E[B]){if(E[B][A]===E){C=false}}if(C&&validanguage.empty(E[B],D)==false){return false}}return true}else{return false}},format:function(I,H,L){var K=this.value;var F=K;if(H!=null&&typeof H=="string"){var G=H.length;for(var G=H.length-1;G>-1;G--){while(K.indexOf(H.charAt(G))!=-1){K=K.replace(H.charAt(G),"","g")}}}if(this.priorStrippedValue&&(this.priorStrippedValue==K)){return }this.priorStrippedValue=K;if(L!=null){var B=(typeof L=="string")?new RegExp(L):L;var N=B.exec(K);if(N==null){return }}else{var M=I.replace(/[^x]/g,"");if(K.length!=M.length){return }}var J=validanguage.getCaretPos(this);var G=I.length;var O=K.length;var D=-1;var A="";var C=0;for(var E=0;E<G;E++){if(I.charAt(E)=="x"){C++;if(C>O){break}}A+=(I.charAt(E)=="x")?K.charAt(++D):I.charAt(E)}if(A!=F){this.value=A;if(J==F.length){J=A.length}validanguage.setCaretPos(this,J)}},getAjaxLookupIndex:function(C,A){for(var B=this.ajaxLookup[C].length-1;B>-1;B--){if(this.ajaxLookup[C][B].counter==A){return B}}return 0},getCaretPos:function(B){if(B.createTextRange&&this.browser!="opera"){if(B.nodeName.toLowerCase()=="input"){var A=document.selection.createRange().duplicate();A.moveEnd("character",B.value.length);if(A.text==""){return B.value.length}return B.value.lastIndexOf(A.text)}else{return 0}}else{return B.selectionStart}},getComments:function(A){if(!A){A=document.documentElement}var C=new Array();var B=(A.childNodes)?A.childNodes.length:0;for(var D=0;D<B;D++){if(A.childNodes[D].nodeType==8){C[C.length]=A.childNodes[D]}else{if(A.childNodes[D].nodeType==1){C=C.concat(this.getComments(A.childNodes[D]))}}}return C},getDateTimeDefaultOptions:function(A,B){if(A==null){A={}}if(typeof A.dateOrder=="undefined"){A.dateOrder=B.dateOrder}A.dateOrder=A.dateOrder.toLowerCase();if(typeof A.allowedDelimiters=="undefined"||typeof A.allowedDelimiters!="string"){A.allowedDelimiters="./-"}if(typeof A.twoDigitYearsAllowed=="undefined"){A.twoDigitYearsAllowed=false}if(typeof A.oneDigitDaysAndMonthsAllowed=="undefined"){A.oneDigitDaysAndMonthsAllowed=true}if(typeof A.maxYear=="undefined"){A.maxYear=new Date().getFullYear()+15}if(typeof A.minYear=="undefined"){A.minYear=1900}if(typeof A.rejectDatesInTheFuture=="undefined"){A.rejectDatesInTheFuture=false}if(typeof A.rejectDatesInThePast=="undefined"){A.rejectDatesInThePast=false}if(typeof A.timeIsRequired=="undefined"){A.timeIsRequired=false}if(typeof A.timeUnits=="undefined"){A.timeUnits="hms"}if(typeof A.microsecondPrecision=="undefined"){A.microsecondPrecision=6}return A},getElSetting:function(A,E,D){var B=this.getFormSettings(E);var C=B[A];if(typeof D!="undefined"&&typeof D[A]!="undefined"){C=D[A]}else{if(typeof this.el[E][A]!="undefined"){C=this.el[E][A]}}return C},getFormSettings:function(B){var A=(document.getElementById(B).nodeName.toLowerCase()=="form")?B:this.formLookup[B];return this.forms[A].settings},getSettingFromComment:function(I,E){var D=" "+I+"=";var G=E.indexOf(D);if(G==-1){return null}var A=(G*1)+(D.length*1);var C="\\"+E.charAt(A);var F=D+C+"(.+?)"+C;var B=new RegExp(F);var H=B.exec(E,"gi");if(H==null){return null}else{if(H[1]){if(H[1]=="true"){H[1]=true}if(H[1]=="false"){H[1]=false}return H[1]}}},hideError:function(){var B=validanguage.getFormSettings(this.id);var A=document.getElementById(this.id+B.errorMsgSpanSuffix);if(A!=null){A.innerHTML="";var C=A.parentNode;C.style.display="none";C.className=B.noErrorClassName}if(!this.className.match(validanguage.settings.passedFieldClassName)){this.className+=" "+validanguage.settings.passedFieldClassName}if(this.className.match(validanguage.settings.failedFieldClassName)){this.className=this.className.replace(validanguage.settings.failedFieldClassName,"")}if(!B.showFailedFields){return }if(document.getElementById(this.id+B.errorListItemSuffix)!=null){var D=document.getElementById(B.errorListId);D.removeChild(document.getElementById(this.id+B.errorListItemSuffix));if(D.getElementsByTagName("LI").length==0){document.getElementById(B.errorDivId).style.display="none"}}},inArray:function(C,B){for(var A=B.length-1;A>-1;A--){if(B[A]===C){return true}}return false},inheritIfDefined:function(B,E,A,D){if(typeof E.length=="undefined"){return false}for(var C=E.length-1;C>-1;C--){if(typeof B[E[C]]!="undefined"&&(this.empty(D)||typeof B[E[C]]==D)){A[E[C]]=B[E[C]]}}},init:function(){if(typeof validanguageLibrary!="undefined"){this.useLibrary=validanguageLibrary}this.addEventInit();this.ajaxInit();this.addEvent(window,"load",function(){validanguage.populate.call(validanguage)})},insertAfter:function(A,B){if(B.nextSibling){if(B.nextSibling.nodeName.toLowerCase()=="label"){B.parentNode.insertBefore(A,B.nextSibling.nextSibling)}else{B.parentNode.insertBefore(A,B.nextSibling)}}else{B.parentNode.appendChild(A)}},isExpiredAjax:function(C,B){if(this.empty(C)||this.empty(B)){return false}var E=this.getAjaxLookupIndex(C,B);var A=this.ajaxLookup[C];var F=A[E].eventType;for(var D=A.length-1;D>0;D--){if(F==A[D].eventType){if(A[D].counter==B){return false}else{return true}}}return false},loadCommentAPI:function(O,H){var D=["mode","expression","suppress","onsubmit","onblur","onchange","onkeypress","onkeyup","onkeydown","onclick","ontyping","onfocus","errorMsg","onerror","onsuccess","focusOnError","showAlert","required","requiredAlternatives","maxlength","minlength","regex","field","errorOnMatch","modifiers","transformations","validations"];var L=(this.empty(H))?this.getComments(O):H;var B=L.length;for(var N=0;N<B;N++){var K=(this.empty(H))?L[N].nodeValue:L[N];var Q=K.split(validanguage.settings.commentDelimiter);var C=Q.length;for(var S=0;S<C;S++){var I=Q[S];I=I.replace(/\n/g," ");I=I.replace(/\r/g," ");var E=/<validanguage/i;if(E.test(I)){var T=this.getSettingFromComment("target",I);var P=[];if(this.empty(T,true)){continue}T=this.resolveArray(T,"string");for(var M=D.length-1;M>-1;M--){var A=this.getSettingFromComment(D[M],I);if(!(A==null||(typeof A=="string"&&A==""))){P[D[M]]=A}}M=T.length;for(var J=0;J<M;J++){var G=T[J];var F=document.getElementById(G);if(typeof this.el[G]=="undefined"||F==null){this.el[G]={}}if(typeof P.expression!="undefined"){this.el[G].characters={};this.inheritIfDefined(P,["expression","errorMsg","mode","suppress","onerror","onsuccess"],this.el[G].characters);this.inheritIfDefined(P,this.supportedEventHandlers,this.el[G].characters)}if(typeof P.regex!="undefined"){this.el[G].regex={expression:P.regex};this.inheritIfDefined(P,["errorOnMatch","modifiers"],this.el[G].regex);this.inheritIfDefined(P,this.supportedEventHandlers,this.el[G].regex)}this.inheritIfDefined(P,this.supportedEventHandlers,this.el[G],"string");this.inheritIfDefined(P,["minlength","maxlength","requiredAlternatives","required","focusOnError","showAlert","onsuccess","onerror","errorMsg"],this.el[G]);if(typeof P.minlength!="undefined"){this.el[G].minlengthEvents={};this.inheritIfDefined(P,this.supportedEventHandlers,this.el[G].minlengthEvents)}if(typeof P.maxlength!="undefined"){this.el[G].maxlengthEvents={};this.inheritIfDefined(P,this.supportedEventHandlers,this.el[G].maxlengthEvents)}if(typeof P.required!="undefined"){this.el[G].requiredEvents={};this.inheritIfDefined(P,this.supportedEventHandlers,this.el[G].requiredEvents)}if(typeof this.el[G].validations=="undefined"){this.el[G].validations=[]}if(typeof this.el[G].transformations=="undefined"){this.el[G].transformations=[]}var R=["focusOnError","showAlert","onsuccess","onerror","errorMsg","isAjax"];if(typeof P.validations!="undefined"&&!this.empty(P.validations)){this.el[G].validations[this.el[G].validations.length]={};this.el[G].validations[this.el[G].validations.length-1].name=P.validations;this.inheritIfDefined(P,this.supportedEventHandlers,this.el[G].validations[this.el[G].validations.length-1]);this.inheritIfDefined(P,R,this.el[G].validations[this.el[G].validations.length-1])}if(typeof P.transformations!="undefined"&&!this.empty(P.transformations)){this.el[G].transformations[this.el[G].transformations.length]={};this.el[G].transformations[this.el[G].transformations.length-1].name=P.transformations;this.inheritIfDefined(P,this.supportedEventHandlers,this.el[G].transformations[this.el[G].transformations.length-1])}}}}}},loadElAPI:function(C){if(typeof C=="string"){C=document.getElementById(C)}for(var V in this.el){try{if(typeof document.getElementById(V)==undefined||this.empty(document.getElementById(V))){continue}}catch(T){continue}if((C!=null)&&((C.id!=V)&&(!C.elements[V]))){continue}var S=document.getElementById(V);var U=validanguage.getFormSettings(V);if(typeof this.el[V].validations=="undefined"){this.el[V].validations=[]}if(typeof this.el[V].field=="undefined"){this.el[V].field=V}if(typeof this.el[V].required!="undefined"&&this.el[V].required==true){this.el[V].validations[this.el[V].validations.length]={};this.el[V].validations[this.el[V].validations.length-1].name="validanguage.validateRequired";this.el[V].validations[this.el[V].validations.length-1].errorMsg=(typeof this.el[V].errorMsg=="undefined")?U.requiredErrorMsg:this.el[V].errorMsg;this.inheritIfDefined(this.el[V],this.supportedEventHandlers,this.el[V].validations[this.el[V].validations.length-1]);if(typeof this.el[V]["requiredEvents"]!="undefined"){this.inheritIfDefined(this.el[V]["requiredEvents"],this.supportedEventHandlers,this.el[V].validations[this.el[V].validations.length-1])}if(U.validateRequiredAlternativesOnclick==true&&typeof this.el[V].requiredAlternatives!="undefined"){var R=(typeof this.el[V].onsuccess!="undefined")?this.el[V].onsuccess:U.onsuccess;var F=(typeof this.el[V].onerror!="undefined")?this.el[V].onerror:U.onerror;var E=this.resolveArray(this.el[V].requiredAlternatives,"string");for(var H=E.length-1;H>-1;H--){this.requiredAlternatives[E[H]]={};if(!((typeof document.getElementById(E[H]).type!="undefined")&&(document.getElementById(E[H]).type=="checkbox"||document.getElementById(E[H]).type=="radio"))){continue}this.requiredAlternatives[E[H]].onsuccess=R;this.requiredAlternatives[E[H]].onerror=F;this.requiredAlternatives[E[H]].errorMsg=(typeof this.el[V].errorMsg=="undefined")?U.requiredErrorMsg:this.el[V].errorMsg;this.requiredAlternatives[E[H]].parentId=V;this.addEvent(document.getElementById(E[H]),"click",function(W){validanguage.validateRequiredAlternatives(W)})}}}if(typeof this.el[V].regex!="undefined"){this.el[V].validations[this.el[V].validations.length]={};this.el[V].validations[this.el[V].validations.length-1].name="validanguage.validateRegex";var D=(typeof this.el[V].errorMsg=="undefined")?U.errorMsg:this.el[V].errorMsg;if(typeof this.el[V].regex.errorMsg!="undefined"){D=this.el[V].regex.errorMsg}this.el[V].validations[this.el[V].validations.length-1].errorMsg=D;this.inheritIfDefined(this.el[V],this.supportedEventHandlers,this.el[V].validations[this.el[V].validations.length-1]);this.inheritIfDefined(this.el[V].regex,this.supportedEventHandlers,this.el[V].validations[this.el[V].validations.length-1]);if(typeof this.el[V].regex.errorOnMatch=="undefined"){this.el[V].regex.errorOnMatch=U.errorOnMatch}}if(typeof this.el[V].maxlength!="undefined"){this.el[V].validations[this.el[V].validations.length]={};this.el[V].validations[this.el[V].validations.length-1].name="validanguage.validateMaxlength";this.el[V].validations[this.el[V].validations.length-1].errorMsg=U.maxlengthErrorMsg.replace("{!maxlength}",this.el[V].maxlength);if(typeof this.el[V]["maxlengthEvents"]!="undefined"){this.inheritIfDefined(this.el[V]["maxlengthEvents"],this.supportedEventHandlers,this.el[V].validations[this.el[V].validations.length-1])}}if(typeof this.el[V].minlength!="undefined"){this.el[V].validations[this.el[V].validations.length]={};this.el[V].validations[this.el[V].validations.length-1].name="validanguage.validateMinlength";this.el[V].validations[this.el[V].validations.length-1].errorMsg=U.minlengthErrorMsg.replace("{!minlength}",this.el[V].minlength);if(typeof this.el[V]["minlengthEvents"]!="undefined"){this.inheritIfDefined(this.el[V]["minlengthEvents"],this.supportedEventHandlers,this.el[V].validations[this.el[V].validations.length-1])}}if(typeof this.el[V].characters!="undefined"&&typeof this.el[V].characters.mode!="undefined"&&typeof this.el[V].characters.expression!="undefined"){var J=this.el[V].characters.expression;J=J.replace("alphaUpper","ABCDEFGHIJKLMNOPQRSTUVWXYZ");J=J.replace("alphaLower","abcdefghijklmnopqrstuvwxyz");J=J.replace("alpha","abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");J=J.replace("numeric","0123456789");J=J.replace("special","`~!@#$%^&*()-_=+[{]}\\|;:'\",<.>/?");this.el[V].characters.characterExpression=J;var B=";";for(var O=J.length-1;O>-1;O--){B+=J.charCodeAt(O)+";"}this.el[V].characters.expression=B;if(typeof this.el[V].characters.suppress=="undefined"||this.el[V].characters.suppress==true){this.addEvent(S,"keypress",validanguage.validateKeypress)}this.el[V].validations[this.el[V].validations.length]={};this.el[V].validations[this.el[V].validations.length-1].name="validanguage.validateCharacters";this.el[V].validations[this.el[V].validations.length-1].errorMsg=true;for(var G=this.supportedEventHandlers.length-1;G>-1;G--){if(typeof this.el[V].characters[this.supportedEventHandlers[G]]!="undefined"&&this.el[V].characters[this.supportedEventHandlers[G]]==true){this.el[V].validations[this.el[V].validations.length-1][this.supportedEventHandlers[G]]=true}}if(typeof this.el[V].characters.errorMsg!="undefined"){this.el[V].validations[this.el[V].validations.length-1].errorMsg=this.el[V].characters.errorMsg}else{this.el[V].validations[this.el[V].validations.length-1].errorMsg=U.characterValidationErrorMsg}}if(typeof this.el[V].transformations=="undefined"){this.el[V].transformations=[]}var O=this.supportedEventHandlers.length;for(var N=0;N<O;N++){var A=this.supportedEventHandlers[N];if(typeof this.el[V][A]!="undefined"&&typeof this.el[V][A]!="boolean"){this.el[V].transformations[this.el[V].transformations.length]={};var K=this.el[V].transformations.length-1;this.el[V].transformations[K].name=this.el[V][A];this.el[V].transformations[K][A]=true}}var Q=this.el[V].transformations.length;for(var P=0;P<Q;P++){var I=false;var O=this.supportedEvents.length;for(var N=0;N<O;N++){if(this.supportedEvents[N]=="submit"){continue}if(typeof this.el[V].transformations[P]["on"+this.supportedEvents[N]]!="undefined"&&this.el[V].transformations[P]["on"+this.supportedEvents[N]]==true){I=true;this.addOrCreateValidationWrapper(S,this.supportedEvents[N])}}if(I==false){if(S.nodeName.toLowerCase()=="form"){this.addOrCreateValidationWrapper(S,"submit")}else{for(var M=U.defaultTransformationHandlers.length-1;M>-1;M--){this.addOrCreateValidationWrapper(S,U.defaultTransformationHandlers[M],999)}}}}if(typeof this.el[V].validations!="undefined"){var Q=this.el[V].validations.length-1;ajaxLoop:for(var P=0;P<Q;P++){if(this.el[V].validations[P].isAjax){var L=this.el[V].validations[P];this.el[V].validations.splice(P,1);this.el[V].validations.push(L);break ajaxLoop}}var Q=this.el[V].validations.length;for(var P=0;P<Q;P++){var I=false;var O=this.supportedEvents.length;for(var N=0;N<O;N++){if(typeof this.el[V].validations[P]["on"+this.supportedEvents[N]]!="undefined"&&this.el[V].validations[P]["on"+this.supportedEvents[N]]===true){I=true;this.addOrCreateValidationWrapper(S,this.supportedEvents[N],P)}}if(I==false){for(var M=U.defaultValidationHandlers.length-1;M>-1;M--){this.addOrCreateValidationWrapper(S,U.defaultValidationHandlers[M],P)}}}}}},loadForm:function(E){if(typeof E=="string"){E=document.getElementById(E)}var D=(this.empty(E.id))?this.formCounter:E.id;this.forms[D]={settings:this.settings};var H=E.getElementsByTagName("input");var B=E.getElementsByTagName("textarea");var F=E.getElementsByTagName("select");var A=this.concatCollection(H,B);var A=this.concatCollection(A,F);var G={};for(var C=A.length-1;C>-1;C--){if(typeof (A[C].id)!="undefined"&&!this.empty(A[C].id)){this.formLookup[A[C].id]=D}}},parseSubstring:function(A,G,D){var E=[];var F=D.split(A);for(var C=0;C<F.length;C++){var B=F[C].indexOf(G);if(B!=-1){E.push(F[C].substring(0,B))}}return E},populate:function(){this.sniffBrowser();if(this.browser=="ie5"){return }if(typeof console=="undefined"){this.debug=false}var A=document.getElementsByTagName("form");for(var C=0,B=A.length;C<B;C++){this.formCounter=C;this.loadForm(A[C])}if(this.browser=="konqueror"&&this.settings.loadCommentAPI==true){this.ajax(document.location.href,function(D){if(D.responseText){D=D.responseText}var E=validanguage.parseSubstring("<!--","-->",D);validanguage.loadCommentAPI(window.document,E);if(validanguage.overloadFormSettings){validanguage.overloadFormSettings()}if(validanguage.el&&!validanguage.empty(validanguage.el)){validanguage.loadElAPI();if(validanguage.callToggleTransformationsOnload){validanguage.callToggleTransformationsOnload()}validanguage.settings.onload.call(validanguage);validanguage.vdLoaded=true}})}else{if(this.settings.loadCommentAPI==true){this.loadCommentAPI()}if(this.overloadFormSettings){this.overloadFormSettings()}if(this.el&&!this.empty(this.el)){this.loadElAPI()}if(this.callToggleTransformationsOnload){this.callToggleTransformationsOnload()}this.settings.onload.call(this);this.vdLoaded=true}this.addEvent(window,"unload",function(){delete validanguage})},remainingChars:function(){var E=document.getElementById(this.id+"_remaining");var B=validanguage.el[this.id].minlength||0;var A=validanguage.el[this.id].maxlength;var C=this.value.length;var D=((C<=A)&&(C>=B))?"vdLengthPassed":"vdLengthFailed";E.innerHTML='<span class="'+D+'">'+C+"</span> / "+A},removeForm:function(B){for(var A in this.formLookup){if(typeof A=="string"&&this.formLookup[A]==B){delete this.el[A];delete this.formLookup[A]}}delete this.forms[B]},removeValidation:function(G,D,A){if(D=="*"){D=this.supportedEvents}else{if(typeof D[0]=="undefined"){D=[D]}}if(typeof A=="string"){A=[A]}for(var B=D.length-1;B>-1;B--){if(D[B]=="submit"){var E=this.forms[this.formLookup[G]].validations;formValLoop:for(var C=E.length-1;C>-1;C--){if(E[C]==undefined||E[C].element.id!=G){continue formValLoop}if(A[0]=="*"||this.inArray(this.el[G].validations[E[C].validationsCounter].name,A)){try{delete E[C]}catch(F){}}}}else{var E=this.el[G].validations;for(var C=E.length-1;C>-1;C--){if(A[0]=="*"||this.inArray(E[C].name,A)){try{delete this.el[G].handlers[D[B]][C]}catch(F){}}}}}},resolveArray:function(args,returnType,ignoreCommas){var returnArray=[];if(typeof args=="object"){var i=args.length;for(var j=0;j<i;j++){returnArray[returnArray.length]=this.resolveArray(args[j],returnType)[0]}return returnArray}if(typeof args=="function"){returnArray[0]=args;return returnArray}if(typeof args=="string"){if(returnType=="string"){args=args.replace(" ","")}if(args.indexOf(",")==-1||ignoreCommas==true){if(returnType=="function"){if(args.indexOf("(")!=-1&&args.indexOf("function")==-1){var splitAt=args.indexOf("(");var funcName=args.substring(0,splitAt);var params=args.substring(++splitAt,args.length);var args="function(text) { return "+funcName+".call(this,"+params+"}"}eval("var argsHandle="+args);returnArray[returnArray.length]=argsHandle}else{returnArray[returnArray.length]=args}}else{var tempArray=this.smartCommaSplit(args);var i=tempArray.length;if(i==1){returnArray=this.resolveArray(tempArray[0],returnType,true)}else{for(var j=0;j<i;j++){returnArray[returnArray.length]=this.resolveArray(tempArray[j],returnType)[0]}}}return returnArray}return false},setCaretPos:function(B,C){if(B.createTextRange&&this.browser!="opera"){var A=B.createTextRange();A.move("character",C);A.select()}else{if(B.selectionStart){B.focus();B.setSelectionRange(C,C)}}},setValidationStatus:function(G,F,C,E){if(C==undefined){C="submit"}else{if(!this.inArray(C,this.supportedEvents)){var B=this.getAjaxLookupIndex(G,C);C=(this.ajaxLookup[G][B].eventType)?this.ajaxLookup[G][B].eventType:"submit"}}var A=(C=="submit")?"forms":"fields";var D=(C=="submit")?validanguage.formLookup[G]:G;if(this.debug){console.log("setValidationStatus for "+G+". Pending requests before deleting:");console.dir(this[A][D][C].dispatchedAjax);console.dir(this[A][D][C].failedValidations)}if(typeof this[A][D][C].failedValidations[G]=="undefined"){if(this.debug){console.log("Exiting setValidationStatus for aborted request")}}if(F===false){if(!this.empty(E)){this[A][D][C].failedValidations[G].errorMsg=E}}else{delete this[A][D][C].failedValidations[G];if(this.empty(this[A][D][C].failedValidations)){this[A][D][C].failedValidations="callManually"}}delete this[A][D][C].dispatchedAjax[G];if(typeof B!="undefined"){this.ajaxLookup[G][B].result=F;if(!this.empty(E)){this.ajaxLookup[G][B].errorMsg=E}}if(this.debug){console.log("Pending requests after deleting:");console.dir(this[A][D][C].dispatchedAjax);console.log("Failed validations:");console.dir(this[A][D][C].failedValidations)}if(A=="forms"&&this.empty(this[A][D][C].dispatchedAjax)&&this.validateForm(D).result===true){if(this.debug){console.log("Form Submitted")}validanguage.forcedSubmission=true;document.getElementById(D).submit()}else{if(A=="fields"&&this.empty(this[A][D][C].dispatchedAjax)){if(this.debug){console.log("Throwing Event")}this.validationWrapper(G,C)}}},showError:function(G){var D=validanguage.getFormSettings(this.id);var B=document.getElementById(this.id+D.errorMsgSpanSuffix);if(B==null){var J=document.getElementById(this.id);var F=document.createElement("DIV");validanguage.insertAfter(F,J);var H='<span id="'+this.id+D.errorMsgSpanSuffix+'"> </span>';F.innerHTML=H;F.className=D.onErrorClassName;var B=document.getElementById(this.id+D.errorMsgSpanSuffix)}else{var F=B.parentNode;F.style.display="block";F.className=D.onErrorClassName}if(validanguage.useLibrary=="scriptaculous"){new Effect.Highlight(F,{startcolor:"#A85F5F",endcolor:"#C0A6A6",restorecolor:"#ddd"})}B.innerHTML=G;if(!this.className.match(validanguage.settings.failedFieldClassName)){this.className+=" "+validanguage.settings.failedFieldClassName}if(this.className.match(validanguage.settings.passedFieldClassName)){this.className=this.className.replace(validanguage.settings.passedFieldClassName,"")}if(!D.showFailedFields){return }if(document.getElementById(D.errorDivId)==null){var F=document.createElement("DIV");F.id=D.errorDivId;document.body.appendChild(F)}else{var F=document.getElementById(D.errorDivId)}if(document.getElementById(D.errorListId)==null){F.innerHTML=D.errorListText+'<br/><ul id="'+D.errorListId+'"></ul>'}var E=F.innerHTML.toLowerCase();E=E.replace(/"/g,"");var C=document.getElementById(D.errorListId);var A='<li id="'+this.id+D.errorListItemSuffix+'">'+validanguage.el[this.id].field+"</li>";var I=A.toLowerCase();I=I.replace(/"/g,"");if(E.indexOf(I)==-1){C.innerHTML+=A}document.getElementById(D.errorDivId).style.display="block"},showSubmitMessage:function(B,F){if(B==false){return }var D=validanguage.forms[this.id].settings;var A=this.getElementsByTagName("INPUT");for(var C=A.length-1;C>-1;C--){if(typeof A[C].type!="undefined"&&A[C].type=="submit"){validanguage.forms.submitButton=submitButton=A[C];break}}submitButton.style.display="none";var E=document.createElement("DIV");E.id=D.showSubmitMessageId;E.innerHTML=D.showSubmitMessageMessage;validanguage.insertAfter(E,A[C]);setTimeout(function(){validanguage.forms.submitButton.style.display="inline"},60000)},smartCommaSplit:function(G){var D=0;var E=0;var B=0;var F=[];var A=G.length;for(var C=0;C<A;C++){switch(G.charAt(C)){case"(":D++;break;case")":D--;break;case"{":E++;break;case"}":E--;break;case",":if(D==0&&E==0){F[F.length]=G.substring(B,C);B=++C}break}}F[F.length]=G.substring(B,C);return F},sniffBrowser:function(){var isIE
/*@cc_on=1@*/
;if(isIE){this.browser="ie";var version=parseFloat(navigator.appVersion.split("MSIE")[1]);if(version<6){this.browser="ie5"}}else{if(navigator.appName.indexOf("Opera")!=-1){this.browser="opera"}else{if(navigator.vendor.indexOf("Apple")!=-1){this.browser="safari"}else{if(navigator.vendor.indexOf("KDE")!=-1){this.browser="konqueror"}else{this.browser="ff"}}}}},substituteText:function(F,A){var B=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];var E=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];if(F==="lower"||validanguage.empty(F)){F=B}else{if(F==="upper"){F=E}}if(A==="lower"||validanguage.empty(A)){A=E}else{if(A==="upper"){A=E}}var D=this.value;var H=validanguage.getCaretPos(this);for(var C=F.length-1;C>-1;C--){var G=new RegExp(F[C],"g");D=D.replace(G,A[C])}this.value=D;validanguage.setCaretPos(this,H)},toggle:function(I){var Q=I.length;var T=validanguage.getFormSettings(this.id);var P=validanguage.formLookup[this.id];for(var R=0;R<Q;R++){var G=I[R];var U=validanguage.resolveArray(G.target,"string");var J=false;if(this.nodeName.toLowerCase()=="input"&&this.type.toLowerCase()=="radio"){var D=false;var C=false;for(var O=document.forms.length-1;O>-1;O--){if(document.forms[O].id==P){C=document.forms[O][this.name];break}}for(var O=C.length-1;O>-1;O--){if(C[O].checked){D=true}}if(!D){J=true}}if(G.toggle){var B=(G.toggle.visible)?validanguage.toggleCriteriaMet(this,G.toggle.visible,T):false;var E=(G.toggle.hidden)?validanguage.toggleCriteriaMet(this,G.toggle.hidden,T):false;for(var O=U.length-1;O>-1;O--){if(B&&!J){validanguage.toggleDisplay(U[O],"")}if(E||(T.toggleVisibilityDefaultsToHidden&&!B)){validanguage.toggleDisplay(U[O],"none")}}}if(typeof G.toggleAttribute!="undefined"){for(var O=U.length-1;O>-1;O--){var H=G.toggleAttribute.attribute;var M=G.toggleAttribute.value;if(G.toggleAttribute.condition=="checked"&&this.checked==true){document.getElementById(U[O])[H]=M}else{if(G.toggleAttribute.condition=="unchecked"&&this.checked==false){document.getElementById(U[O])[H]=M}else{if((this.value)&&(G.toggleAttribute.condition==this.value)){document.getElementById(U[O])[H]=M}}}}}if(typeof G.values!="undefined"){for(var O=U.length-1;O>-1;O--){if(typeof G.values.checked!="undefined"&&this.checked==true){document.getElementById(U[O]).value=G.values.checked}else{if(typeof G.values.unchecked!="undefined"&&this.checked==false){document.getElementById(U[O]).value=G.values.unchecked}else{if(typeof G.values[this.value]!="undefined"){document.getElementById(U[O]).value=G.values[this.value]}}}}}if(typeof G.dynamicSelect!="undefined"){var F=this.value;if(typeof validanguage.el[this.id]["value"]!="undefined"&&validanguage.el[this.id]["value"]==F){return }var N=document.getElementById(U[0]);for(var L in G.dynamicSelect){if(typeof G.dynamicSelect[L]=="object"){var K=G.dynamicSelect[L];if(L==this.value){while(N.options.length>0){N.remove(0)}for(var S in K){if(S=="_default"){continue}var A=document.createElement("option");A.value=S;A.text=K[S];N.options.add(A)}if(typeof K._default!="undefined"){N.value=K._default}}}}validanguage.el[this.id]["value"]=F}}},toggleCriteriaMet:function(B,C,A){if(C=="checked"){return !!(B.checked)}else{if(C=="unchecked"){return !(B.checked)}else{if(C=="empty"){return !!(validanguage.inArray(B.value,A.emptyOptionElements))}else{if(C=="notEmpty"){return !(validanguage.inArray(B.value,A.emptyOptionElements))}else{return !!(B.value==C)}}}}},toggleDisplay:function(D,C){var E=document.getElementById(D);var H=E.nodeName.toLowerCase();if(C==null||C==undefined){C=(E.style.display=="none")?"":"none"}disabledBool=(C=="none")?true:false;E.style.display=C;if(H=="input"||H=="textarea"||H=="select"){E.disabled=disabledBool;return }var I=E.getElementsByTagName("input");var B=E.getElementsByTagName("textarea");var A=E.getElementsByTagName("select");var G=this.concatCollection(I,B);var G=this.concatCollection(G,A);for(var F=G.length-1;F>-1;F--){G[F].disabled=disabledBool}},validateCharacters:function(E){var F=this.id;var D=validanguage.el[F].characters.mode;var C=validanguage.el[F].characters.characterExpression;switch(D){case"allow":outerLoop:for(var B=E.length-1;B>-1;B--){innerLoop:for(var A=C.length-1;A>-1;A--){if(C.charAt(A)==E.charAt(B)){continue outerLoop}}return false}break;case"deny":outerLoop:for(var B=E.length-1;B>-1;B--){innerLoop:for(var A=C.length-1;A>-1;A--){if(C.charAt(A)==E.charAt(B)){return false}}}break}return true},validateCreditCard:function(J,C,D){if(validanguage.empty(C)){C=["amex","disc","mc","visa"]}var J=J.replace(/\D/g,"");var B={amex:"^3[4|7]\\d{13}$",bankcard:"^56(10\\d\\d|022[1-5])\\d{10}$",diners:"^(?:3(0[0-5]|[68]\\d)\\d{11})|(?:5[1-5]\\d{14})$",disc:"^(?:6011|650\\d)\\d{12}$",electron:"^(?:417500|4917\\d{2}|4913\\d{2})\\d{10}$",enroute:"^2(?:014|149)\\d{11}$",jcb:"^(3\\d{4}|2100|1800)\\d{11}$",maestro:"^(?:5020|6\\d{3})\\d{12}$",mc:"^5[1-5]\\d{14}$",solo:"^(6334[5-9][0-9]|6767[0-9]{2})\\d{10}(\\d{2,3})?$","switch":"^(?:49(03(0[2-9]|3[5-9])|11(0[1-2]|7[4-9]|8[1-2])|36[0-9]{2})\\d{10}(\\d{2,3})?)|(?:564182\\d{10}(\\d{2,3})?)|(6(3(33[0-4][0-9])|759[0-9]{2})\\d{10}(\\d{2,3})?)$",visa:"^4\\d{12}(\\d{3})?$",voyager:"^8699[0-9]{11}$"};var E=false;for(var G=C.length;G--;G>-1){E=validanguage.validateRegex(J,{expression:B[C[G]]});if(E){break}}if(!E){return false}if(D===false){return true}var A=J.length;var F=A%2;var I=0;for(var G=0;G<A;G++){var H=J.charAt(G);if(G%2==F){H=H*2;if(H>9){H=H-9}}I=I+parseInt(H)}if(I%10==0){return true}else{return false}},validateDate:function(N,P){P=validanguage.getDateTimeDefaultOptions(P,{dateOrder:"mdy"});var C;var K="(";for(var G=P.allowedDelimiters.length-1;G>-1;G--){K+="\\"+P.allowedDelimiters.charAt(G);if(G>0){K+="|"}if(N.indexOf(P.allowedDelimiters.charAt(G))>-1){C=P.allowedDelimiters.charAt(G)}}K+=")";if(C==null){return false}var D=N.split(C);if(D.length!=3){return false}var M="^";for(var E=0;E<3;E++){switch(P.dateOrder.charAt(E)){case"y":var H=(P.twoDigitYearsAllowed)?"{2,4}":"{4}";M+="\\d"+H;break;case"m":case"d":var H=(P.oneDigitDaysAndMonthsAllowed)?"{1,2}":"{2}";M+="\\d"+H;break}if(E<2){M+=K}}M+="$";var B=new RegExp(M);var O=B.exec(N);if(O==null){return false}var J=D[P.dateOrder.indexOf("y")];var I=D[P.dateOrder.indexOf("m")];var L=D[P.dateOrder.indexOf("d")];if(J.length==3){return false}if((J<P.minYear&&J.length==4)||(J>P.maxYear)){return false}if(!validanguage.validateDateExists(J,I,L)){return false}if(P.rejectDatesInTheFuture||P.rejectDatesInThePast){var A=new Date();var F=new Date();F.setDate(L);F.setMonth(--I);F.setFullYear(J);if((P.rejectDatesInTheFuture&&F>A)||(P.rejectDatesInThePast&&F<A)){return false}}return true},validateDateExists:function(C,E,A){if(C.length==2){var D=(C>20)?"19":"20";C=D+C.toString()}if(E.charAt(0)=="0"){E=E.substr(1,1)}if(A.charAt(0)=="0"){A=A.substr(1,1)}if(E<0||E>12){return false}switch(E.toString()){case"4":case"6":case"9":case"11":var B=30;break;case"2":var B=((C%4==0)&&((!(C%100==0))||(C%400==0)))?29:28;break;default:var B=31}if(A<0||A>B){return false}return true},validateEmail:function(A){if(!A.match(/^([a-zA-Z0-9]+[a-zA-Z0-9._%-]*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4})$/)){return false}else{return true}},validateForm:function(B){var A;if(B==undefined){A=document.forms[0]}else{if(typeof B=="string"){A=document.getElementById(B)}else{A=B}}return this.validationWrapper(A,"validateForm")},validateIP:function(C){var A=C.split(".");if(A.length==4){for(var B=A.length-1;B>-1;B--){if(!(validanguage.validateNumeric(A[B])&&A[B]>=0&&A[B]<=255)){return false}}return true}return false},validateKeypress:function(E){var A=E||window.evt;var D=A.currentTarget||A.srcElement;var G=D.id;var B=validanguage.formLookup[G];var C=validanguage.getFormSettings(G);if(validanguage.browser=="ie"||validanguage.browser=="opera"){charCode=A.keyCode;if(((charCode==16)&&(A.shiftKey))||(A.ctrlKey)){return true}if(A.which==0){return true}}else{if((A.charCode==0)||(A.ctrlKey)){return true}charCode=A.which}charCode+=";";searchString=new String(validanguage.el[G].characters.expression);var F=validanguage.el[G].characters.mode;if(((searchString.search(charCode)!=-1)&&(F=="allow"))||((searchString.search(charCode)==-1)&&(F=="deny"))){return true}else{D.style.backgroundColor=C.validationErrorColor;setTimeout("document.getElementById('"+G+"').style.backgroundColor = validanguage.forms['"+B+"'].settings.normalTextboxColor",validanguage.forms[B].settings.timeDelay);A.returnValue=false;if(A.preventDefault){A.preventDefault()}return false}},validateMaxlength:function(C,A){var D=this.id;var B=(validanguage.empty(A))?validanguage.el[D].maxlength:A;if(C.length>B){return false}else{return true}},validateMinlength:function(C,A){var D=this.id;var B=(validanguage.empty(A))?validanguage.el[D].minlength:A;if(C.length<B){return false}else{return true}},validateNumeric:function(A){if(!A.match(/^\d+$/)){return false}else{return true}},validatePasswordStrength:function(text,args){if(!args){args={}}var minLength=args.minLength||6;var minStrength=args.minStrength||2;var strong=args.strong||[4];var medium=args.medium||[2,3];var mustMatch=args.mustMatch||["hasDigit"];var hasDigit=text.match(/\d/);var hasUpper=text.match(/[A-Z]/);var hasLower=text.match(/[a-z]/);var hasSpecial=text.match(/[`|~|!|@|#|\$|%|\^|&|\*|\(|\)|_|-|+|=|\{|\[|\}|\]|\\|\|]|;|:|\'|\"|\,|\<|\.|\>|\/|\?/);var strength=0;if(hasDigit){strength++}if(hasUpper){strength++}if(hasLower){strength++}if(hasSpecial){strength++}if(text.length<minLength){strength=0}var ps=document.getElementById("passwordStrength");if(ps){if(validanguage.inArray(strength,strong)){var strengthLevel="Strong"}else{if(validanguage.inArray(strength,medium)){var strengthLevel="Medium"}else{var strengthLevel="Weak"}}var msg='<span class="passwordStrengthMsg">Password Strength: '+strengthLevel+"</span>";msg+='<br/><div class="passwordClass"><div class="passwordClass'+strengthLevel+'"> </div></div><br/>';ps.innerHTML=msg}for(var i=mustMatch.length-1;i>-1;i--){eval("if (!"+mustMatch[i]+") strength=0;")}if(strength>=minStrength){return true}else{return false}},validateRegex:function(D,C){var G=this.id;var A=(validanguage.empty(C))?validanguage.el[G].regex:C;if(typeof A.modifiers=="undefined"){A.modifiers=""}if(typeof A.errorOnMatch=="undefined"){A.errorOnMatch=false}var F=(typeof A.expression=="string")?new RegExp(A.expression,A.modifiers):A.expression;var B=F.exec(D);if(B==null){var E=(A.errorOnMatch==false||A.errorOnMatch=="false")?false:true}else{var E=(A.errorOnMatch==false||A.errorOnMatch=="false")?true:false}return E},validateRequired:function(A){var G=this.id;if(typeof validanguage.el[G].requiredAlternatives=="undefined"){var E=[G]}else{var E=validanguage.resolveArray(validanguage.el[G].requiredAlternatives,"string");E[E.length]=G}for(var B=E.length-1;B>-1;B--){G=E[B];var D=document.getElementById(G);var F=D.value;var C=validanguage.validateRequiredChild.call(D,F);if(C==true){return true}}return false},validateRequiredAlternatives:function(D){var H=D||window.evt;var E=H.currentTarget||H.srcElement;var A=E.id;var C=validanguage.requiredAlternatives[A].parentId;var I=validanguage.requiredAlternatives[A].onsuccess;var F=validanguage.requiredAlternatives[A].onerror;var G=document.getElementById(C);if(validanguage.validateRequired.call(G)==true){successHandlers=validanguage.resolveArray(I,"function");for(var B=successHandlers.length-1;B>-1;B--){successHandlers[B].call(G)}}else{errorHandlers=validanguage.resolveArray(F,"function");for(var B=errorHandlers.length-1;B>-1;B--){errorHandlers[B].call(G,validanguage.requiredAlternatives[A].errorMsg)}}},validateRequiredChild:function(D){var B=(typeof this.type!="undefined")?this.type:null;if(this.nodeName.toLowerCase()=="textarea"){B="text"}if(this.nodeName.toLowerCase()=="select"){B="select"}switch(B){case"checkbox":if(this.checked==false){return false}break;case"radio":var C=validanguage.formLookup[this.id];var E=(typeof C=="number")?document.forms[C][this.name]:document.getElementById(C)[this.name];for(var A=E.length-1;A>-1;A--){if(E[A].checked==true){return true}}return false;break;case"text":case"password":case"file":if(validanguage.empty(D)){return false}break;case"select":if(validanguage.empty(D)){return false}settings=validanguage.getFormSettings(this.id);for(var A=settings.emptyOptionElements.length-1;A>-1;A--){if(D==settings.emptyOptionElements[A]){return false}}break}return true},validateTimestamp:function(G,J){J=validanguage.getDateTimeDefaultOptions(J,{dateOrder:"ymd"});var D=G.indexOf(" ");var C=(D==-1)?G:G.substr(0,D);if(!validanguage.validateDate(C,J)){return false}if(D!=-1){var B=G.substring(++D)}else{if(!J.timeIsRequired){return true}if(J.timeIsRequired){return false}}var E="^\\d{1,2}:\\d{1,2}";if(J.timeUnits.indexOf("s")!=-1){E+="(:\\d{1,2}"}if(J.timeUnits.indexOf("u")!=-1){E+="(\\.\\d{1,"+J.microsecondPrecision+"})?"}if(J.timeUnits.indexOf("s")!=-1){E+=")?"}if(J.timeUnits.indexOf("t")!=-1){E+="( ?[\\+|\\-]{1,1}(\\d|0\\d|10|11|12|13)(\\:(00|30))?)?"}E+="$";var A=new RegExp(E);var I=A.exec(B);if(I==null){return false}var H=B.split(":");if(H[0]>23){return false}if(H[1]>59){return false}if(H.length>2){var F=H[2].substr(0,2);if(F>59){return false}}return true},validateURL:function(A){if(!A.match(/^((([hH][tT][tT][pP][sS]?|[fF][tT][pP])\:\/\/)?([\w\.\-]+(\:[\w\.\&%\$\-]+)*@)?((([^\s\(\)\<\>\\\"\.\[\]\,@;:]+)(\.[^\s\(\)\<\>\\\"\.\[\]\,@;:]+)*(\.[a-zA-Z]{2,4}))|((([01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}([01]?\d{1,2}|2[0-4]\d|25[0-5])))(\b\:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3}|0)\b)?((\/[^\/][\w\.\,\?\'\\\/\+&%\$#\=~_\-@]*)*[^\.\,\?\"\'\(\)\[\]!;<>{}\s\x7F-\xFF])?)$/)){return false}else{return true}},validateUSPhoneNumber:function(A){if(!A.match(/^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/)){return false}else{return true}},validateUSSSN:function(A){if(!A.match(/^\d{3}( |-|.){0,1}\d{2}( |-|.){0,1}\d{4}$/)){return false}else{return true}},validateUSZipCode:function(A){if(!A.match(/^\d{5}( |-|.){0,1}(\d{4})?$/)){return false}else{return true}},validationWrapper:function(e,customEvent){var calledManually=false;if(validanguage.inArray(customEvent,validanguage.supportedEvents)){var $this=document.getElementById(e);var type=customEvent;var id=e;var calledManually=true}else{if(customEvent=="validateForm"){var $this=e;var form=validanguage.whichFormAmI($this);var id=form;var type="submit"}else{var evt=e||window.evt;var $this=evt.currentTarget||evt.srcElement;var type=evt.type;if(type=="submit"){var form=validanguage.whichFormAmI($this);var id=form}else{var id=$this.id;var form=validanguage.formLookup[id]}if(customEvent=="typingTimeout"){if(validanguage.typingDelay[id]){window.clearTimeout(validanguage.typingDelay[id])}eval("validanguage.typingDelay[id] = window.setTimeout(\"validanguage.validationWrapper('"+id+"', 'typing')\", validanguage.settings.typingDelay );");return true}}}if(typeof validanguage.el[form]!="undefined"&&typeof validanguage.el[form].disabled!="undefined"&&validanguage.el[form].disabled==true){return true}if(validanguage.forcedSubmission){return true}var validations=(type=="submit")?validanguage.forms[form].validations:validanguage.el[id].handlers[type];var i=validations.length;var failedValidations={};if(!validanguage.ajaxLookup[id]){validanguage.ajaxLookup[id]=[1]}var ajaxLocation=(type=="submit")?"forms":"fields";if(!validanguage[ajaxLocation][id]){validanguage[ajaxLocation][id]={}}if(!validanguage[ajaxLocation][id][type]){validanguage[ajaxLocation][id][type]={}}validanguage[ajaxLocation][id][type].dispatchedAjax={};if(typeof validanguage[ajaxLocation][id][type].failedValidations=="undefined"){validanguage[ajaxLocation][id][type].failedValidations={}}if(!calledManually&&!validanguage.empty(validanguage[ajaxLocation][id][type].failedValidations)){validanguage[ajaxLocation][id][type].failedValidations={}}if(type=="submit"){if(validanguage.empty(validanguage[ajaxLocation][form][type].failedValidations)){outerLoop:for(var j=0;j<i;j++){if(typeof validations[j]=="undefined"||validations[j]==999){continue outerLoop}id=validations[j].element.id;var $this=validations[j].element;if((typeof failedValidations[id]!="undefined")||(typeof $this.disabled!="undefined"&&$this.disabled==true)||(typeof validanguage.el[id].disabled!="undefined"&&validanguage.el[id].disabled==true)){continue outerLoop}if(typeof validanguage.el[id].failed!="undefined"&&validanguage.el[id].failed==true){failedValidations[id]={failed:true,field:validanguage.el[id].field};continue outerLoop}var validOptionalField=!!(typeof validanguage.el[id].required!="undefined"&&(validanguage.el[id].required==false||validanguage.el[id].required=="false")&&!$this.value.match(/[^\s]/));var validationsCounter=validations[j].validationsCounter;var validation=validanguage.el[id].validations[validationsCounter];var funcs=validanguage.resolveArray(validation.name,"function");innerLoop:for(var m=funcs.length-1;m>-1;m--){if(typeof failedValidations[id]!="undefined"){continue innerLoop}if(validation.isAjax&&!validOptionalField){if(!validanguage.ajaxLookup[id]){validanguage.ajaxLookup[id]=[1]}var dispatchAjax=true;if(validanguage.settings.cacheAjaxLookups&&validanguage.ajaxLookup[id].length>1){ajaxLookupLoop:for(var ajaxLookupIndex=validanguage.ajaxLookup[id].length-1;ajaxLookupIndex>-1;ajaxLookupIndex--){var lookupToCheck=validanguage.ajaxLookup[id][ajaxLookupIndex];if(lookupToCheck.value==$this.value&&typeof lookupToCheck.result=="boolean"){dispatchAjax=false;var result=lookupToCheck.result;if(result==false){failedValidations[id]=validation;failedValidations[id].field=validanguage.el[id].field;failedValidations[id].errorMsg=lookupToCheck.errorMsg}break ajaxLookupLoop}}}if(dispatchAjax){validanguage[ajaxLocation][form][type].dispatchedAjax[$this.id]=new Date().getTime();failedValidations[id]=validation;failedValidations[id].field=validanguage.el[id].field;funcs[m].call($this,$this.value,validanguage.ajaxLookup[id][0]);var ajaxCounter=validanguage.ajaxLookup[id][0]++;validanguage.ajaxLookup[id].push({counter:ajaxCounter,eventType:type,value:$this.value,result:"pending"});var result="pending"}}else{var result=(validOptionalField||funcs[m].call($this,$this.value))}if(result==false){failedValidations[id]=validation;failedValidations[id].field=validanguage.el[id].field;if(!validanguage.forms[form].settings.validateAllFieldsOnsubmit){break outerLoop}}else{var onsuccess=validanguage.getElSetting("onsuccess",id,validation);successHandlers=validanguage.resolveArray(onsuccess,"function");for(var n=successHandlers.length-1;n>-1;n--){successHandlers[n].call($this)}}}}validanguage.forms[form][type].failedValidations=failedValidations}if(!validanguage.empty(validanguage.forms[form][type].dispatchedAjax)){validanguage.forms[form][type].ajaxInterval=window.setInterval(function(){validanguage.ajaxValidationWrapper(form,type)},500);return false}failedValidations=(validanguage.forms[form][type].failedValidations==="callManually")?{}:validanguage.forms[form][type].failedValidations;validanguage.forms[form][type].failedValidations={};if(validanguage.empty(failedValidations)){var submitStatus=true}else{for(var o in failedValidations){if(typeof failedValidations[o]=="function"){continue}var id=o;$this=document.getElementById(o);validation=failedValidations[o];var focusOnerror=validanguage.getElSetting("focusOnerror",id,validation);var errorMsg=validanguage.getElSetting("errorMsg",id,validation);var onerror=validanguage.getElSetting("onerror",id,validation);errorHandlers=validanguage.resolveArray(onerror,"function");for(var m=errorHandlers.length-1;m>-1;m--){errorHandlers[m].call($this,errorMsg)}var focusOnerror=validanguage.getElSetting("focusOnerror",id,validation);if(focusOnerror==true){$this.focus()}var showAlert=validanguage.getElSetting("showAlert",id,validation);if(showAlert){alert(errorMsg)}}var submitStatus=false}var transformation=(validanguage.el[form]&&validanguage.el[form].onsubmit)?validanguage.el[form].onsubmit:[];if(typeof transformation=="string"||typeof transformation=="function"){transformation=[transformation]}for(var n=transformation.length-1;n>-1;n--){var transformations=validanguage.resolveArray(transformation[n],"function");for(var o=transformations.length-1;o>-1;o--){var returnStatus=transformations[o].call(document.getElementById(form),submitStatus,failedValidations);if(typeof returnStatus=="boolean"){submitStatus=returnStatus}}}if(customEvent=="validateForm"){return{result:submitStatus,failedValidations:failedValidations}}return submitStatus}else{var validation;if((typeof validanguage.el[id].disabled=="boolean"&&validanguage.el[id].disabled==true)||(typeof $this.disabled!="undefined"&&$this.disabled==true)){return }var transformations=validanguage.el[id].transformations;var p=transformations.length;for(var q=0;q<p;q++){if(typeof transformations[q]["on"+type]=="undefined"||transformations[q]["on"+type]!=true){continue}var transformation=validanguage.resolveArray(transformations[q].name,"function");var trLength=transformation.length;for(var m=0;m<trLength;m++){transformation[m].call($this)}}var validOptionalField=!!(typeof validanguage.el[id].required!="undefined"&&(validanguage.el[id].required==false||validanguage.el[id].required=="false")&&!$this.value.match(/[^\s]/));if(typeof validanguage.el[id].failed=="boolean"&&validanguage.el[id].failed==true){result=false}else{if(validanguage.empty(validanguage.fields[id][type].failedValidations)){var validationCounter;outerLoop:for(var j=0;j<i;j++){if(typeof validations[j]=="undefined"||validations[j]==999){continue outerLoop}else{validationCounter=validations[j]}validation=validanguage.el[id].validations[validationCounter];var funcs=validanguage.resolveArray(validation.name,"function");for(var m=funcs.length-1;m>-1;m--){if(typeof validation.isAjax!="undefined"){var dispatchAjax=true;if(validanguage.settings.cacheAjaxLookups&&validanguage.ajaxLookup[id].length>1){ajaxLookupLoop:for(var ajaxLookupIndex=validanguage.ajaxLookup[id].length-1;ajaxLookupIndex>-1;ajaxLookupIndex--){var lookupToCheck=validanguage.ajaxLookup[id][ajaxLookupIndex];if(lookupToCheck.value==$this.value&&typeof lookupToCheck.result=="boolean"){dispatchAjax=false;var result=lookupToCheck.result;if(result==false){failedValidations[id]=validation;failedValidations[id].field=validanguage.el[id].field;failedValidations[id].errorMsg=lookupToCheck.errorMsg}break ajaxLookupLoop}}}if(dispatchAjax&&!validOptionalField){validanguage.fields[id][type].dispatchedAjax[id]=new Date().getTime();failedValidations[id]=validation;failedValidations[id].field=validanguage.el[id].field;funcs[m].call($this,$this.value,validanguage.ajaxLookup[id][0]);var ajaxCounter=validanguage.ajaxLookup[id][0]++;validanguage.ajaxLookup[id].push({counter:ajaxCounter,eventType:type,value:$this.value,result:"pending"})}}else{var result=(validOptionalField||funcs[m].call($this,$this.value))}if(result==false){if(validanguage.el[id].lastFailed1){validanguage.el[id].lastFailed2=validanguage.el[id].lastFailed1}validanguage.el[id].lastFailed1=funcs[m].toString();break outerLoop}}}if(validationCounter==undefined){return true}validanguage.fields[id][type].failedValidations=failedValidations}}if(!validanguage.empty(validanguage.fields[id][type].dispatchedAjax)){validanguage.fields[id][type].ajaxInterval=window.setInterval(function(){validanguage.ajaxValidationWrapper(id,type)},500);return false}if(typeof result=="undefined"){failedValidations=(validanguage.fields[id][type].failedValidations==="callManually")?{}:validanguage.fields[id][type].failedValidations;if(failedValidations[id]&&failedValidations[id].name){validation=failedValidations[id].name}var result=validanguage.empty(failedValidations)?true:false}validanguage.fields[id][type].failedValidations={};if(result==true){validanguage.el[id].lastFailed1={};var onsuccess=validanguage.getElSetting("onsuccess",id,validation);successHandlers=validanguage.resolveArray(onsuccess,"function");for(var m=successHandlers.length-1;m>-1;m--){successHandlers[m].call($this)}return true}else{var retriggerErrors=validanguage.getElSetting("retriggerErrors",id,validation);var failedFieldClassName=validanguage.getElSetting("failedFieldClassName",id,validation);if(retriggerErrors||(validanguage.el[id].lastFailed1!=validanguage.el[id].lastFailed2)){var focusOnerror=validanguage.getElSetting("focusOnerror",id,validation);var errorMsg=(failedValidations[id]&&failedValidations[id].errorMsg)?failedValidations[id].errorMsg:validanguage.getElSetting("errorMsg",id,validation);var onerror=(failedValidations[id]&&failedValidations[id].onerror)?failedValidations[id].onerror:validanguage.getElSetting("onerror",id,validation);errorHandlers=validanguage.resolveArray(onerror,"function");for(var m=errorHandlers.length-1;m>-1;m--){errorHandlers[m].call($this,errorMsg)}var focusOnerror=validanguage.getElSetting("focusOnerror",id,validation);if(focusOnerror==true){$this.focus()}var showAlert=validanguage.getElSetting("showAlert",id,validation);if(showAlert){alert(errorMsg)}}return false}}},whichFormAmI:function(D){if(typeof D.id!="undefined"&&(!validanguage.empty(D.id))){return D.id}var A=document.forms;for(var C=0,B=A.length;C<B;C++){if(A[C]==D){return C}}}};validanguage.init();