//------------------------------------------------------------------------------
// Copyright (c) 2007 Ste Brennan (dnaide.com)
// Licensed under the MIT (MIT-LICENSE.txt)
// validationaide_uncompressed.js
//------------------------------------------------------------------------------
function ValidatorRule(a,b,c){this.validationMethod=c;this.errorMessage=b?b:"Validation failed.";this.name=a}ValidatorRule.prototype={doValidation:function(a,b){return this.validationMethod(a,b)}};function ValidatorRuleCollection(){this.items={}}ValidatorRuleCollection.prototype={add:function(a,b,c){this.items[a]=new ValidatorRule(a,b,c)}};
jQuery.validationAide={getDefaultValidationRules:function(){var a=new ValidatorRuleCollection;a.add("validator-required","Value required",function(b,c){if(b=="")return false;return true});a.add("validator-email","Invalid email address",function(b,c){if(b=="")return true;return/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(b)});a.add("validator-number","Invalid number",function(b,c){if(b=="")return true;return!isNaN(b)&&!/^\s+$/.test(b)});a.add("validator-digits","Only digits allowed",function(b,
c){if(b=="")return true;return!/[^\d]/.test(b)});a.add("validator-alphanum","Only letters (a-z) or numbers (0-9) allowed",function(b,c){if(b=="")return true;return!/\W/.test(b)});a.add("validator-date-ddmmyyyy","Invalid date, must be dd/mm/yyyy",function(b,c){if(b=="")return true;c=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!c.test(b))return false;b=new Date(b.replace(c,"$2/$1/$3"));return parseInt(RegExp.$2,10)==1+b.getMonth()&&parseInt(RegExp.$1,10)==b.getDate()&&parseInt(RegExp.$3,10)==b.getFullYear()});
a.add("validator-date-mmddyyyy","Invalid date, must be mm/dd/yyyy",function(b,c){if(b=="")return true;c=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!c.test(b))return false;b=new Date(b.replace(c,"$2/$1/$3"));return parseInt(RegExp.$1,10)==1+b.getMonth()&&parseInt(RegExp.$2,10)==b.getDate()&&parseInt(RegExp.$3,10)==b.getFullYear()});a.add("validator-url","Invalid URL.",function(b,c){if(b=="")return true;return/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(b)});return a},
extendOptions:function(a){a=jQuery.extend({},a||{});if(typeof a.showInlineMessages=="undefined")a.showInlineMessages=false;if(typeof a.inlineShowSpeed=="undefined")a.inlineShowSpeed="";if(typeof a.inlineMessageElementIdPrefix=="undefined")a.inlineMessageElementIdPrefix="ValidationInlineErrorMessage-";if(typeof a.inlineMessageCssClass=="undefined")a.inlineMessageCssClass="validation-inline-error-message";if(typeof a.inlineFieldMessageFormat=="undefined")a.inlineFieldMessageFormat="##MESSAGE##";if(typeof a.showSummary==
"undefined")a.showSummary=true;if(typeof a.summaryElementId=="undefined")a.summaryElementId="ClientValidationSummary";if(typeof a.summaryMessage=="undefined")a.summaryMessage="Please correct the following:";if(typeof a.summaryFieldMessageFormat=="undefined")a.summaryFieldMessageFormat="##FIELD## - ##MESSAGE##";if(typeof a.fieldErrorCssClass=="undefined")a.fieldErrorCssClass="validation-failed";if(typeof a.fieldMessageSeparator=="undefined")a.fieldMessageSeparator=" - ";return a},resetForm:function(a,
b){typeof jQuery.fn.fieldStringVal!="function"&&alert("Warning, validation will not work unless stringaide is loaded!");var c=jQuery.validationAide.extendOptions(b);c.showSummary&&jQuery("#"+c.summaryElementId).html("").hide();jQuery(a+" :input").each(function(){var i="#"+c.inlineMessageElementIdPrefix+this.id;jQuery(i).remove();jQuery(this).removeClass(c.fieldErrorCssClass)})},validateForm:function(a,b,c,i,k){jQuery.validationAide.resetForm(a,c);var d=jQuery.validationAide.extendOptions(c),m=true;
b=b?b:jQuery.validationAide.getDefaultValidationRules();var l="",n="",r=true;if(d.showSummary)var o=[],p=[];jQuery(a+" :input").each(function(){var h=this.id;if(h!=""){var j=jQuery(this),g=new String(j.attr("class"));g=jQuery.trim(g);if(g.length>0)for(var e=g.split(" "),f=0;f<e.length;f++)if(g=b.items[e[f]]){var q=j.fieldStringVal();typeof i=="function"&&i(q,this);var s=g.doValidation(q,this);typeof k=="function"&&k(q,this,s);if(!s){m=false;if(r){n=l=h;r=false}j.addClass(d.fieldErrorCssClass);e=j.attr("title");
if(!e||e=="undefined")if(!e||e=="undefined")e=h;e=e;g=g.errorMessage;if(e.indexOf(d.fieldMessageSeparator)>-1){g=e.split(d.fieldMessageSeparator);e=g[0];g=g[1]}if(d.showSummary){p.push(h);f=new String(d.summaryFieldMessageFormat);f=f.replace("##FIELD##",e);f=f.replace("##MESSAGE##",g);o.push(f)}if(d.showInlineMessages){h=d.inlineMessageElementIdPrefix+h;f=new String(d.inlineFieldMessageFormat);f=f.replace("##FIELD##",e);f=f.replace("##MESSAGE##",g);j.after('<div id="'+h+'" class="'+d.inlineMessageCssClass+
'">'+f+"</div>");if(d.inlineShowSpeed!=""){jQuery("#"+h).hide();jQuery("#"+h).show(d.inlineShowSpeed)}}break}}}});if(!m&&d.showSummary){a="";if(d.summaryMessage!="")a=d.summaryMessage;a+="<ul>";for(c=0;c<o.length;c++)a+='<li><a href="#" onclick="location.hash = \'#'+p[c]+"'; jQuery('#"+p[c]+"')[0].focus(); return false;\">"+o[c]+"</a></li>";a+="</ul>";jQuery("#"+d.summaryElementId).html(a).show();l=d.summaryElementId}if(l!="")location.hash="#"+l;n!=""&&jQuery("#"+n)[0].focus();return m}};
jQuery.fn.validationAideEnable=function(a,b,c,i){jQuery.validationAide.resetForm("#"+this[0].id,b);this.unbind("submit");this.bind("submit",function(){return jQuery.validationAide.validateForm("#"+this.id,a,b,c,i)});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(a,b,c,i,k){jQuery.validationAide.resetForm(a,c);this.unbind("click");this.bind("click",function(){jQuery(a).validationAideEnable(b,c,i,k)});return this};