var Validation=Class.create();
Validation.prototype={initialize:function(_1){
this.form=document.forms[_1];
if(typeof this.form=="undefined"){
return false;
}
this.elems=document.getElementsByClassName("validate",_1);
this.configRules=[];
this.keys=[];
this.registerValidator(new Validator("email",/^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/,"Please enter a valid email"));
for(var i=0;i<this.elems.length;i++){
this.elems[i].onblur=this.attach.bindAsEventListener(this);
}
this.form.onsubmit=this.validate.bindAsEventListener(this);
},registerValidator:function(_3){
if(typeof this.form=="undefined"){
return false;
}
this.configRules.push(_3);
this.keys.push(_3.toString());
},attach:function(e){
var _5=Event.element(e);
var _6=Element.classNames(_5).toArray();
for(var i=0;i<_6.length;i++){
var _8=this.keys.indexOf(_6[i]);
if(_8!=-1){
this.configRules[_8].handleValid(_5);
}
}
},validate:function(e){
Event.stop(e);
var _a=Event.element(e);
var _b=0;
var _c;
for(var i=0;i<this.elems.length;i++){
_c=Element.classNames(this.elems[i]).toArray();
for(var k=0;k<_c.length;k++){
var _f=this.keys.indexOf(_c[k]);
if(_f!=-1){
if(!this.configRules[_f].isValid(this.elems[i])){
_b++;
this.configRules[_f].handleValid(this.elems[i]);
}
}
}
}
if(_b==0){
ajSubmit();
}
}};
var Validator=Class.create();
Validator.prototype={initialize:function(key,reg,msg){
this.key=key;
this.regex=reg;
this.msg=msg;
},isValid:function(_13){
if(this.regex!=""&&this.regex.test(_13.value)){
return true;
}else{
return false;
}
},handleValid:function(_14){
if(this.isValid(_14)){
this.validHandler(_14);
}else{
this.invalidHandler(_14);
}
},validHandler:function(_15){
if(_15.error){
Element.setStyle(_15,{border:"1px solid #ccc"});
elems=document.getElementsByClassName("invalid",_15.parentNode);
elems.each(function(_16){
new Effect.Fade(_16,{afterFinish:function(_17){
Element.remove(_17.element);
}});
});
_15.error=false;
}
},invalidHandler:function(_18){
if(!_18.error){
Element.setStyle(_18,{border:"1px solid red"});
var _19=new Insertion.After(_18,"<span class=\"invalid\" style=\"color:red;padding-left:10px;display:none\">"+this.msg+"</span>");
new Effect.Opacity(_19.element.nextSibling,{from:0,to:1,beforeSetup:function(_1a){
_1a.element.show();
}});
_18.error=true;
}
},toString:function(){
return this.key;
}};
var NameValidator=Class.create();
NameValidator.prototype=Object.extend(new Validator("name","","Please enter your name"),{initialize:function(){
},isValid:function(_1b){
if(!Field.present(_1b)){
return false;
}else{
return true;
}
}});
Event.observe(window,"load",function(){
val=new Validation("form");
val.registerValidator(new NameValidator());
});

