function ValidatorRule(C,B,A){this.validationMethod=A;this.errorMessage=B?B:"Validation failed.";this.name=C}ValidatorRule.prototype={doValidation:function(B,A){return this.validationMethod(B,A)}};function ValidatorRuleCollection(){this.items={}}ValidatorRuleCollection.prototype={add:function(B,A,C){this.items[B]=new ValidatorRule(B,A,C)}};jQuery.validationAide={getDefaultValidationRules:function(){var A=new ValidatorRuleCollection();A.add("validator-required","Value required",function(C,B){if(C==""){return false}return true});A.add("validator-email","Invalid email address",function(C,B){if(C==""){return true}return/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(C)});A.add("validator-number","Invalid number",function(C,B){if(C==""){return true}return(!isNaN(C)&&!/^\s+$/.test(C))});A.add("validator-digits","Only digits allowed",function(C,B){if(C==""){return true}return !/[^\d]/.test(C)});A.add("validator-alphanum","Only letters (a-z) or numbers (0-9) allowed",function(C,B){if(C==""){return true}return !/\W/.test(C)});A.add("validator-date-ddmmyyyy","Invalid date, must be dd/mm/yyyy",function(D,B){if(D==""){return true}var C=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!C.test(D)){return false}var E=new Date(D.replace(C,"$2/$1/$3"));return(parseInt(RegExp.$2,10)==(1+E.getMonth()))&&(parseInt(RegExp.$1,10)==E.getDate())&&(parseInt(RegExp.$3,10)==E.getFullYear())});A.add("validator-date-mmddyyyy","Invalid date, must be mm/dd/yyyy",function(D,B){if(D==""){return true}var C=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!C.test(D)){return false}var E=new Date(D.replace(C,"$2/$1/$3"));return(parseInt(RegExp.$1,10)==(1+E.getMonth()))&&(parseInt(RegExp.$2,10)==E.getDate())&&(parseInt(RegExp.$3,10)==E.getFullYear())});A.add("validator-url","Invalid URL.",function(C,B){if(C==""){return true}return/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(C)});return A},extendOptions:function(A){var B=jQuery.extend({},A||{});if(typeof B.showInlineMessages=="undefined"){B.showInlineMessages=false}if(typeof B.inlineShowSpeed=="undefined"){B.inlineShowSpeed=""}if(typeof B.inlineMessageElementIdPrefix=="undefined"){B.inlineMessageElementIdPrefix="ValidationInlineErrorMessage-"}if(typeof B.inlineMessageCssClass=="undefined"){B.inlineMessageCssClass="validation-inline-error-message"}if(typeof B.inlineFieldMessageFormat=="undefined"){B.inlineFieldMessageFormat="##MESSAGE##"}if(typeof B.showSummary=="undefined"){B.showSummary=true}if(typeof B.summaryElementId=="undefined"){B.summaryElementId="ClientValidationSummary"}if(typeof B.summaryMessage=="undefined"){B.summaryMessage="Please correct the following:"}if(typeof B.summaryFieldMessageFormat=="undefined"){B.summaryFieldMessageFormat="##FIELD## - ##MESSAGE##"}if(typeof B.fieldErrorCssClass=="undefined"){B.fieldErrorCssClass="validation-failed"}if(typeof B.fieldMessageSeparator=="undefined"){B.fieldMessageSeparator=" - "}return B},resetForm:function(C,B){if(typeof jQuery.fn.fieldStringVal!="function"){alert("Warning, validation will not work unless stringaide is loaded!")}var A=jQuery.validationAide.extendOptions(B);if(A.showSummary){jQuery("#"+A.summaryElementId).html("").hide()}jQuery(C+" :input").each(function(){var D="#"+A.inlineMessageElementIdPrefix+this.id;jQuery(D).remove();jQuery(this).removeClass(A.fieldErrorCssClass)})},validateForm:function(N,H,L,K,B){jQuery.validationAide.resetForm(N,L);var D=jQuery.validationAide.extendOptions(L);var G=true;H=H?H:jQuery.validationAide.getDefaultValidationRules();var C="";var F="";var A=true;if(D.showSummary){var M=new Array();var J=new Array()}jQuery(N+" :input").each(function(){var c=this.id;if(c!=""){var O=jQuery(this);var a=new String(O.attr("class"));a=jQuery.trim(a);if(a.length>0){var W=a.split(" ");for(var S=0;S<W.length;S++){var b=H.items[W[S]];if(b){var Q=O.fieldStringVal();if(typeof K=="function"){K(Q,this)}var V=b.doValidation(Q,this);if(typeof B=="function"){B(Q,this,V)}if(!V){G=false;if(A){C=c;F=c;A=false}O.addClass(D.fieldErrorCssClass);var Y=O.attr("title");if(!Y||Y=="undefined"){if(!Y||Y=="undefined"){Y=c}}var U=Y;var X=b.errorMessage;if(U.indexOf(D.fieldMessageSeparator)>-1){var T=U.split(D.fieldMessageSeparator);U=T[0];X=T[1]}if(D.showSummary){J.push(c);var R=new String(D.summaryFieldMessageFormat);R=R.replace("##FIELD##",U);R=R.replace("##MESSAGE##",X);M.push(R)}if(D.showInlineMessages){var Z=D.inlineMessageElementIdPrefix+c;var P=new String(D.inlineFieldMessageFormat);P=P.replace("##FIELD##",U);P=P.replace("##MESSAGE##",X);O.after('<div id="'+Z+'" class="'+D.inlineMessageCssClass+'">'+P+"</div>");if(D.inlineShowSpeed!=""){jQuery("#"+Z).hide();jQuery("#"+Z).show(D.inlineShowSpeed)}}break}}}}}});if(!G&&D.showSummary){var E="";if(D.summaryMessage!=""){E=D.summaryMessage}E+="<ul>";for(var I=0;I<M.length;I++){E+='<li><a href="#" onclick="location.hash = \'#'+J[I]+"'; jQuery('#"+J[I]+"')[0].focus(); return false;\">"+M[I]+"</a></li>"}E+="</ul>";jQuery("#"+D.summaryElementId).html(E).show();C=D.summaryElementId}if(C!=""){location.hash="#"+C}if(F!=""){jQuery("#"+F)[0].focus()}return G}};jQuery.fn.validationAideEnable=function(C,B,A,D){jQuery.validationAide.resetForm("#"+this[0].id,B);this.unbind("submit");this.bind("submit",function(){return jQuery.validationAide.validateForm("#"+this.id,C,B,A,D)});return this};jQuery.fn.validationAideDisable=function(){this.unbind("submit");return this};jQuery.fn.validationAideDisableOnClick=function(A){this.unbind("click");this.bind("click",function(){jQuery(A).unbind("submit")});return this};jQuery.fn.validationAideEnableOnClick=function(E,C,B,A,D){jQuery.validationAide.resetForm(E,B);this.unbind("click");this.bind("click",function(){jQuery(E).validationAideEnable(C,B,A,D)});return this};