/**
 * Unobtrusive Form Validation library
 *
 * Inspired by: Chris Campbell <particletree.com>
 * Extended by: Tino Brackebusch <itbra@web.de>
 */
var JFormValidator=new Class({initialize:function(){this.handlers=Object();this.custom=Object();this.setHandler("email",function(b){regex=/^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;return regex.test(b)});this.setHandler("fon",function(b){regex=/^[\+\d \/|-]+$/;return regex.test(b)});this.setHandler("housenumber",function(b){regex=/^\d{1,4}[a-z]{0,1}$/;return regex.test(b)});this.setHandler("name",function(b){regex=new RegExp("([<|>|\"|'|%|;|(|)|&]|[0-9])","i");return !regex.test(b)});this.setHandler("numeric",function(b){regex=/^(\d|-)?(\d|,)*\.?\d*$/;return regex.test(b)});this.setHandler("password",function(b){regex=/^\S[\S ]{2,98}\S$/;return regex.test(b)});this.setHandler("signature",function(e){if($("vorname").value&&$("nachname").value){var b=new Array();b.push($("vorname").value.trim());b.push($("nachname").value.trim());var d=e.split(" ");for(var c=0;c<d.length;c+=1){d[c]=d[c].trim()}return(b[0]+" "+b[1]===d[0]+" "+d[1])}});this.setHandler("street",function(b){regex=new RegExp("([<|>|\"|'|%|;|(|)|&]|[0-9])","i");return !regex.test(b)});this.setHandler("username",function(b){regex=new RegExp("[<|>|\"|'|%|;|(|)|&]","i");return !regex.test(b)});this.setHandler("zip",function(b){regex=/^\d{5}$/;return regex.test(b)});var a=$$("form.form-validate");a.each(function(b){this.attachToForm(b)},this)},setHandler:function(b,c,a){a=(a=="")?true:a;this.handlers[b]={enabled:a,exec:c}},attachToForm:function(a){$A(a.elements).each(function(b){b=$(b);if((b.getTag()=="input"||b.getTag()=="button")&&b.getProperty("type")=="submit"){if(b.hasClass("validate")){b.onclick=function(){if(!document.formvalidator.isValid(this.form)){$("systmessages").set("html","Bitte f&uuml;llen Sie &nbsp;&nbsp;&nbsp;<u>zumindest alle Pflichtfelder</u>&nbsp;&nbsp;&nbsp; aus, da dieses Formular sonst nicht von uns bearbeitet werden kann!");return false}else{return document.formvalidator.isValid(this.form)}}}}else{b.addEvent("blur",function(){isV=document.formvalidator.validate(this)})}});return false},isValid:function(c){var b=true;for(var a=0;a<c.elements.length;a++){if(this.validate(c.elements[a])==false){b=false;$$(".error").removeClass("hidden")}}$A(this.custom).each(function(d){if(d.exec()!=true){b=false}});return b},validate:function(b){if($(b).hasClass("required")){if(($(b).getProperty("type")=="checkbox"||$(b).getProperty("type")=="radio")&&!$(b).checked){if($(b).getParent().getElements(":checked").length<1){this.handleResponse(false,b);return false}}else{if(($(b).getProperty("type")=="select"||$(b).getProperty("type")=="select-multiple")&&!$(b).getSelected().length){this.handleResponse(false,b);return false}else{if(!($(b).getValue())){this.handleResponse(false,b);return false}}}}var a=(b.className&&b.className.search(/validate-([a-zA-Z0-9\_\-]+)/)!=-1)?b.className.match(/validate-([a-zA-Z0-9\_\-]+)/)[1]:"";if(a==""){this.handleResponse(true,b);return true}if((a)&&(a!="none")&&(this.handlers[a])&&$(b).getValue()){if(this.handlers[a].exec($(b).getValue())!=true){this.handleResponse(false,b);return false}}this.handleResponse(true,b);return true},handleResponse:function(b,a){if(!(a.labelref)){var c=$$("label");c.each(function(d){if(d.getProperty("for")==a.getProperty("id")){a.labelref=d}})}if(b==false){a.addClass("invalid");if(a.labelref){$(a.labelref).addClass("invalid")}}else{a.removeClass("invalid");if(a.labelref){$(a.labelref).removeClass("invalid")}}}});document.formvalidator=null;Window.onDomReady(function(){document.formvalidator=new JFormValidator()});
