Event.observe(window,"load",function(){$$("form.validate").each(function(a){a.validator=new Validation(a,{immediate:true})})});var Validator=Class.create();Validator.prototype={initialize:function(b,d,a,c){if(typeof a=="function"){this.options=$H(c);this._test=a}else{this.options=$H(a);this._test=function(){return true}}this.error=d||"Validation failed.";this.className=b},test:function(b,a){return this._test(b,a)&&this.options.all(function(c){return Validator.methods[c.key]?Validator.methods[c.key](b,a,c.value):true})}};Validator.methods={pattern:function(a,c,b){return Validation.get("IsEmpty").test(a)||b.test(a)},minLength:function(b,c,a){return b.length>=a},maxLength:function(b,c,a){return b.length<=a},min:function(b,c,a){return b>=parseFloat(a)},max:function(b,c,a){return b<=parseFloat(a)},notOneOf:function(b,c,a){return $A(a).all(function(a){return b!=a})},oneOf:function(b,c,a){return $A(a).any(function(a){return b==a})},is:function(b,c,a){return b==a},isNot:function(b,c,a){return b!=a},equalToField:function(b,c,a){return b==$F(a)},notEqualToField:function(b,c,a){return b!=$F(a)},include:function(c,a,b){return $A(b).all(function(b){return Validation.get(b).test(c,a)})}};var Validation=Class.create();Validation.prototype={initialize:function(d,c){this.options=Object.extend({onSubmit:true,stopOnFirst:false,immediate:false,focusOnError:true,useTitles:false,onFormValidate:function(){},onElementValidate:function(){}},c||{});this.form=$(d);this.options.onSubmit&&Event.observe(this.form,"submit",this.onSubmit.bind(this),false);if(this.options.immediate){var a=this.options.useTitles,b=this.options.onElementValidate;Form.getElements(this.form).each(function(c){Event.observe(c,"blur",function(c){Validation.validate(Event.element(c),{useTitle:a,onElementValidate:b})})})}},onSubmit:function(a){if(!this.validate())Event.stop(a);else{jQuery("#submit").attr("disabled","disabled");jQuery.throbberShow({parent:"div.procedureContent",image:"../../Content/images/throbbers/bigThrobber.gif"})}},validate:function(){var a=false,b=this.options.useTitles,c=this.options.onElementValidate;if(this.options.stopOnFirst)a=Form.getElements(this.form).all(function(a){return Validation.validate(a,{useTitle:b,onElementValidate:c})});else a=Form.getElements(this.form).collect(function(a){return Validation.validate(a,{useTitle:b,onElementValidate:c})}).all();!a&&this.options.focusOnError&&Form.getElements(this.form).findAll(function(a){return $(a).hasClassName("validation-failed")}).first().focus();this.options.onFormValidate(a,this.form);return a},reset:function(){Form.getElements(this.form).each(Validation.reset)}};Object.extend(Validation,{validate:function(a,b){b=Object.extend({useTitle:false,onElementValidate:function(){}},b||{});a=$(a);var c=a.classNames();return result=c.all(function(d){var c=Validation.test(d,a,b.useTitle);b.onElementValidate(c,a);return c})},test:function(c,a,h){var e=Validation.get(c),d="__advice"+c.camelize();try{if(Validation.isVisible(a)&&!e.test($F(a),a)){if(!a[d]){var b=Validation.getAdvice(c,a);if(b==null){var g=h?a&&a.title?a.title:e.error:e.error;b='<span class="validation-advice" id="advice-'+c+"-"+Validation.getElmID(a)+'" style="display:none">'+g+"</span>";switch(a.type.toLowerCase()){case"checkbox":case"radio":var f=a.parentNode;if(f)new Insertion.Bottom(f,b);else new Insertion.After(a,b);break;default:new Insertion.After(a,b)}b=Validation.getAdvice(c,a)}if(typeof Effect=="undefined")b.style.display="block";else new Effect.Appear(b,{duration:1})}a[d]=true;a.removeClassName("validation-passed");a.addClassName("validation-failed");return false}else{var b=Validation.getAdvice(c,a);b!=null&&b.hide();a[d]="";a.removeClassName("validation-failed");a.addClassName("validation-passed");return true}}catch(i){throw i;}},isVisible:function(a){while(a.tagName!="BODY"){if(!$(a).visible())return false;a=a.parentNode}return true},getAdvice:function(b,a){return $("advice-"+b+"-"+Validation.getElmID(a))||$("advice-"+Validation.getElmID(a))},getElmID:function(a){return a.id?a.id:a.name},reset:function(a){a=$(a);var b=a.classNames();b.each(function(b){var c="__advice"+b.camelize();if(a[c]){var d=Validation.getAdvice(b,a);d.hide();a[c]=""}a.removeClassName("validation-failed");a.removeClassName("validation-passed")})},add:function(a,d,e,c){var b={};b[a]=new Validator(a,d,e,c);Object.extend(Validation.methods,b)},addAllThese:function(b){var a={};$A(b).each(function(b){a[b[0]]=new Validator(b[0],b[1],b[2],b.length>3?b[3]:{})});Object.extend(Validation.methods,a)},"get":function(a){return Validation.methods[a]?Validation.methods[a]:Validation.methods._LikeNoIDIEverSaw_},methods:{_LikeNoIDIEverSaw_:new Validator("_LikeNoIDIEverSaw_","",{})}});Validation.add("IsEmpty","",function(a){return a==null||a.length==0});Validation.addAllThese([["required","This is a required field.",function(a){return!Validation.get("IsEmpty").test(a)}],["validate-number","Please enter a valid number in this field.",function(a){return Validation.get("IsEmpty").test(a)||!isNaN(a)&&!/^\s+$/.test(a)}],["validate-digits","Please use numbers only in this field. please avoid spaces or other characters such as dots or commas.",function(a){return Validation.get("IsEmpty").test(a)||!/[^\d]/.test(a)}],["validate-alpha","Please use letters only (a-z) in this field.",function(a){return Validation.get("IsEmpty").test(a)||/^[a-zA-Z]+$/.test(a)}],["validate-alphanum","Please use only letters (a-z) or numbers (0-9) only in this field. No spaces or other characters are allowed.",function(a){return Validation.get("IsEmpty").test(a)||!/\W/.test(a)}],["validate-date","Please enter a valid date.",function(a){var b=new Date(a);return Validation.get("IsEmpty").test(a)||!isNaN(b)}],["validate-time","Please enter a valid time (for example: 9:00).",function(a){return Validation.get("IsEmpty").test(a)||/^(([1-9]|10|11|12)[:][0-5][0-9])$|^([1-9]|10|11|12)$/.test(a)}],["validate-email","Please enter a valid email address. For example fred@domain.com .",function(a){return Validation.get("IsEmpty").test(a)||/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,4}$/.test(a)}],["validate-url","Please enter a valid URL.",function(a){return Validation.get("IsEmpty").test(a)||/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(a)}],["validate-date-au","Please use this date format: dd/mm/yyyy. For example 17/03/2006 for the 17th of March, 2006.",function(b){if(Validation.get("IsEmpty").test(b))return true;var c=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!c.test(b))return false;var a=new Date(b.replace(c,"$2/$1/$3"));return parseInt(RegExp.$2,10)==1+a.getMonth()&&parseInt(RegExp.$1,10)==a.getDate()&&parseInt(RegExp.$3,10)==a.getFullYear()}],["validate-currency-dollar","Please enter a valid $ amount. For example $100.00 .",function(a){return Validation.get("IsEmpty").test(a)||/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(a)}],["validate-selection","Please make a selection",function(b,a){return a.options?a.selectedIndex>0:!Validation.get("IsEmpty").test(b)}],["validate-one-required","Please select one of the above options.",function(d,b){var c=b.parentNode,a=c.getElementsByTagName("INPUT");return $A(a).any(function(a){return $F(a)})}],["validate-compare-date","Starting Date must occur before Ending Date",function(i,h){var g={lt:function(b,a){return b<a},lte:function(b,a){return b<=a},gt:function(b,a){return b>a},gte:function(b,a){return b>=a},e:function(b,a){return b==a}},f=h.readAttribute("validateOptions"),c=f.evalJSON(true);if($(c.sister).value=="")return true;var d=new Date,e=new Date,a=i.split("/"),b=$(c.sister).value.split("/");d.setFullYear(a[2],a[0],a[1]);e.setFullYear(b[2],b[0],b[1]);return g[c.type](d,e)}],["validate-compare-fields","Fields must be exactly the same",function(e,d){var c={lt:function(b,a){return b<a},lte:function(b,a){return b<=a},gt:function(b,a){return b>a},gte:function(b,a){return b>=a},e:function(b,a){return b==a}},b=d.readAttribute("validateOptions"),a=b.evalJSON(true);return c[a.type](e,$(a.sister).value)}],["validate-compare-value","Fields must be exactly the same",function(e,d){var c={lt:function(b,a){return b<a},lte:function(b,a){return b<=a},gt:function(b,a){return b>a},gte:function(b,a){return b>=a},e:function(b,a){return b==a}},b=d.readAttribute("validateOptions"),a=b.evalJSON(true);return c[a.type](e,a.value)}]])
