var Validation=Class.create();Validation.prototype={initialize:function(D,C){this.form=$(D);this.div=$(C);this.ajaxCalls=0;this.formSubmit=false;this.totalAjaxCalls=0;Form.getElements(this.form).each(function(A){Event.observe(A,"blur",this.validateElm.bind(this),false);A.failed=false;A.error=""}.bind(this));Event.observe(this.form,"submit",this.onSubmit.bind(this),false)},onSubmit:function(B){if(!this.formSubmit){this.formSubmit=Event.element(B);this.ajaxCalls=this.totalAjaxCalls;Form.getElements(this.form).each(function(A){if(this.validate(A)){this.formSubmit=false;Event.stop(B)}}.bind(this));if(this.ajaxCalls){Event.stop(B)}}},validateElm:function(C){var D=Event.element(C);this.validate(D)},validate:function(D){var C=this.test(D);if(C){this.error(D,C)}else{this.pass(D)}return C},error:function(D,C){C=D.title+": "+C;this.div.innerHTML=C;this.div.addClassName("form-error");this.div.removeClassName("hidden");D.addClassName("validation-failed");D.removeClassName("validation-passed");D.failed=true;D.error=C},pass:function(D){if(D.failed&&!D["ajax-lookup"]){D.failed=false;D.addClassName("validation-passed");D.removeClassName("validation-failed");D.error="";var C="";Form.getElements(validate.form).each(function(A){if(A.error&&A.error!=""){C=A.error;$break}});if(C!=""){this.div.innerHTML=C}else{this.div.innerHTML="";this.div.addClassName("hidden");this.div.removeClassName("form-error")}}},test:function(D){if(D.hasClassName("required")){if(D.value.empty()){return"This field is required and cannot be left blank"}}if(D.hasClassName("validate-email")){var C=/^([A-Za-z0-9_\-\.]+)\@([A-Za-z0-9_\-]+)\.[A-Za-z]{2,4}(\.[A-Za-z]{2})?$/;if(C.test(D.value)==false){return"Please enter a valid email address. For example: bob@telkomsa.net"}if($("email-verify")){D["ajax-lookup"]=true;this.totalAjaxCalls++;this.emailDupeCheck(D)}}if(D.hasClassName("validate-username")){var C=/^.+\s$/;if(C.test(D.value)==true){return"Please enter a valid username. It may not end in a space"}var C=/[\s]{2,}/;if(C.test(D.value)==true){return"Please enter a valid username. It may not contain 2 spaces or more in a row"}var C=/^[a-zA-Z][a-zA-Z0-9\s]+/;if(C.test(D.value)==false||D.value.length>15||D.value.length<4){return"Please enter a valid username. Your Username may be 4-15 characters (a-z, A-Z, 0-9, and space), it must begin alphabetically, it cannot end in a space, and it cannot contain two spaces in a row"}D["ajax-lookup"]=true;this.totalAjaxCalls++;this.usernameDupeCheck(D)}if(D.hasClassName("validate-password")){if(D.value.length<6){return"Please enter a valid password. It may not be less than 6 characters"}var C=/^[a-zA-Z0-9]+$/;if(C.test(D.value)==false){return"Please enter a valid password. Your Password may be between 6-10 characters (a-z, A-Z, 0-9), and must not contain any spaces"}}if(D.hasClassName("validate-password-confirm")){if(D.value!=$("password").value){return"Your confirmation password does not match your original password"}}return false}};