var clientForms={forms:{},init:function(a){if(!clientForms.forms[a]){clientForms.forms[a]=new clientForm(document.getElementById(a))}}};function clientForm(a){this.formNode=a;this.fields=$(this.formNode).find(".clientField");this.fieldMap={};this.initialize=function(){this.initialized=true;$(this.formNode).find("div.error").hide();this.formNode._clientForm=this;var b=this;this.fields.each(function(){this._clientForm=b;b.fieldMap[this.name]=this});var c=function(){this._clientForm=b;if(this.className.indexOf("noValidate")<0){var d=this.onclick;this.onclick=function(){return b.buttonClick(d)}}};$(this.formNode).find("button").each(c);$(this.formNode).find("input:submit").each(c)};this.buttonClick=function(b){return b(this,this.validate())};this.validate=function(){var c=true;var b=this;$(this.formNode).find("div.error").html("");$(this.formNode).find("div.error").hide();this.fields.each(function(){$(this.parentNode).find("span.error").remove();if(this._validationRule){if(this._validationRule.required&&this.value==""){c=false;b.showError(this,this._validationRule.message)}else{if(this._validationRule.regex){if(this.value!=""&&!this._validationRule.regex.test(this.value)){b.showError(this,this._validationRule.message);c=false}}if(this._validationRule.compareTo){if(this._clientForm.getValue(this._validationRule.compareTo)!=this.value){b.showError(this,this._validationRule.compareMessage);c=false}}}}});return c};this.showError=function(b,d){$(this.formNode).find("div.error").show();var f=typeof(b)=="string"?this.getField(b):b;$(f.parentNode).find("span.error").remove();var e=document.createElement("span");e.className="error";e.innerHTML="&nbsp;";var c=document.createElement("div");c.innerHTML=d;$(this.formNode).find("div.error").append(c);f.parentNode.appendChild(e)};this.getField=function(b){return this.fieldMap[b]};this.getValue=function(b){var c=this.fieldMap[b];if(c){if(c.type&&c.type=="checkbox"){return c.checked?c.value:""}else{return c.value}}else{return""}};this.getValues=function(){var b={};for(var c in this.fieldMap){b[c]=this.getValue(c)}return b};this.submit=function(){$(this.formNode).parents("form").submit()};this.initialize()};