var Validator=new Hash({exps:new Hash({alpha:/^[a-zA-z\s\D]+$/,alphaStrict:/^[a-zA-z]+$/,alphaNum:/^[0-9a-zA-Z\s\D]+$/,alphaNumStrict:/^[0-9a-zA-Z]+$/,number:/^[0-9]+$/,email:/^[a-z0-9_+.-]+\@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/,URL:/https?:\/\/([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+([a-zA-Z]{2,9})(:\d{1,4})?([-\w\/#~:.?+=&%@~]*)/}),test:function(b,a){return($type(b)=="string")?(this.exps.get(a)||this.exps.get("alphaNum")).test(b):null;},isEmpty:function(a){return a.replace(/\s/g,"").length==0;},ofLength:function(b,c,a){c=c||0;a=a||10000000000000000;return b.length>=c&&b.length<=a;},isEqual:function(b,a){return b==a;},addType:function(c,b){if($type(c)=="string"&&$type(b)=="regexp"){var a="is"+c.capitalize();this.exps.set(c,b);this.set(a,function(d){return this.test(d,c);});return true;}else{return false;}},addTypes:function(b){var a=this;if($type(b)=="object"){b=$H(b);b.each(function(c,d){a.addType(d,c);});return true;}else{return false;}}});(function(){Validator.exps.each(function(b,a){Validator.addType(a,b);});})();if($type(Validator)=="hash"){Validator.addType=function(d,c){if($type(d)=="string"&&$type(c)=="regexp"){var a="is"+d.capitalize();this.exps.set(d,c);this.set(a,function(e){return this.test(e,d);});var b={};b[a]=function(){return this.validate(d);};Native.implement([String,Element],b);return true;}else{return false;}};String.implement({validate:function(a){return Validator.test(this,a);},isEmpty:function(){return Validator.isEmpty(this);},ofLength:function(b,a){return Validator.ofLength(this,b,a);},isEqual:function(a){return Validator.isEqual(a,this);}});Validator.Stringable=["input","textarea"];Validator.canValidate=function(a){return Validator.Stringable.contains(a.get("tag"));};Element.implement({validate:function(a){return Validator.canValidate(this)?Validator.test(this.value,a):null;},isEmpty:function(){return Validator.canValidate(this)?Validator.isEmpty(this.value):null;},ofLength:function(b,a){return Validator.canValidate(this)?Validator.ofLength(this.value,b,a):null;},isEqual:function(a){return Validator.canValidate(this)?Validator.isEqual(a,this.value):null;}});(function(){var a={};Validator.exps.getKeys().each(function(b){var c="is"+b.capitalize();a[c]=function(){return this.validate(b);};});Native.implement([String,Element],a);})();}(function(){Element.implement({valid:function(b){if(!b){this.addClass("error");}else{this.removeClass("error");}return this;}});var a=function(){$("reaction-form").addEvent("submit",function(h){h.stop();var j=false;var d=this.getElement('input[name="name"]');var c=this.getElement('input[name="email"]');var b=this.getElement('input[name="url"]');var i=this.getElement('textarea[name="comment"]');var g=this.getElement('input[name="humanity"]');[d,c,i,g].each(function(e){if(e.isEmpty()){e.valid(false);j=true;}else{e.valid(true);}});if(!d.ofLength(3,100)){d.valid(false);j=true;}else{d.valid(true);}if(!c.isEmail()){c.valid(false);j=true;}else{c.valid(true);}if(!b.isEmpty()&&!b.isURL()){b.valid(false);j=true;}else{b.valid(true);}if(!g.get("value").toLowerCase().isEqual("panglosian")){g.valid(false);j=true;}else{g.valid(true);}if(!j){var f=new Request({url:this.get("action"),onComplete:function(k){var e=JSON.decode(k);}});this.submit();}});};window.addEvent("domready",a);})();