(function($){$.fn.validate=function(options){var defaults={lang:'de',addReqStar:false,errorClass:'inputError',noErrorClass:'noInputError',errorMessageInInput:false,displayErrorsWithSymbols:false,errorDiv:'',successDiv:'',editDiv:'',errorWrapperElement:'errorWrapper',textareaMinLength:0,ajaxUrl:'',ajaxLoader:'',ajaxResponseDiv:'',ajaxSuccessImage:'',ajaxErrorImage:'',ajaxInputAlreadySent:'',ajaxSuccessMessage:'',conversionTrackingDiv:'',conversionTrackingCode:0,conversionParamsDiv:''};var options=$.extend(defaults,options);error=[];var validations={requiredUrl:/^(http[s]?\:\/\/)?(www\.)?[öüäa-zA-Z0-9-\.]+\.([a-z]{2,4})[A-Za-z0-9-_%&\?\/.=]*$/,requiredAz:/^[a-zA-Z- ÖÜÄöäüßÃàáâÆæåãèéëìíòóôõùúÁÀCcDÉÈEeÍÌNnÇÕÓÒRrŠšTtÚUuÝýŽžÑñÿ\/\.]+$/,requiredEmail:/^([0-9a-zA-Z]+([_.-]?[0-9a-zA-Z]+)*@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$/,requiredAz09:/^[0-9a-zA-Z- .:ÖÜÄöäüßÃàáâÆæåãèéëìíòóôõùúÁÀCcDÉÈEeÍÌNnÇÕÓÒRrŠšTtÚUuÝýŽžÑñÿ\/\(\)]+$/,required09:/^[0-9]+$/};if(options.lang=='de'){var errorMessages={lengthMessage:'Bitte ausfüllen',requiredAz:'Bitte ausfüllen',generalSuccessMessage:'Daten wurden erfolgreich gesendet'};var validationMessages={requiredAz:'Keine Sonderzeichen erlaubt',requiredAz09:'Keine Sonderzeichen erlaubt',required09:'Nur Zahlen erlaubt',requiredEmail:'Bitte eine gültige Email eingeben',requiredMinLengthPrefix:'Bitte geben Sie mindestens ',requiredMinLengthSuffix:' Zeichen ein',requiredOption:'Bitte auswählen'};}
if(options.lang=='en'){var errorMessages={lengthMessage:'Please fill in',requiredAz:'Please fill in',generalSuccessMessage:'Data sent successfully'};var validationMessages={requiredAz:'No special characters allowed',requiredAz09:'No special characters allowed',required09:'Only Numbers allowed',requiredEmail:'Please fill in a valid email address',requiredMinLengthPrefix:'Please fill in at least ',requiredMinLengthSuffix:' characters',requiredOption:'Please choose'};}
if(options.lang=='it'){var errorMessages={lengthMessage:'Please fill in',requiredAz:'Please fill in',generalSuccessMessage:'Data sent successfully'};var validationMessages={requiredAz:'No special characters allowed',requiredAz09:'No special characters allowed',required09:'Only Numbers allowed',requiredEmail:'Please fill in a valid email address',requiredMinLengthPrefix:'Please fill in at least ',requiredMinLengthSuffix:' characters',requiredOption:'Please choose'};}
var validationErrors={generalError:false,requiredAz:false,requiredEmail:false,requiredMinLength:false,requiredAz09:false,required09:false,requiredOption:false}
if(options.displayErrorsWithSymbols){this.find('input:text').each(function(){var id=$(this).attr('id');var requiredClass=$(this).attr("class");if(options.addReqStar){addReqStar(id);}
$(this).focus(function(){showEditSymbol(id);});$(this).blur(function(){if(!$(this).hasClass("required")){hideEditSymbol(id);}});});this.find('select').each(function(){var id=$(this).attr('id');if(!$(this).hasClass('noReqStar')){if(options.addReqStar){addReqStar(id);validateOnChange(id);}}});this.find('textarea').each(function(){var id=$(this).attr('id');$(this).focus(function(){showEditSymbol(id);});$(this).blur(function(){});});}
this.find('input:text').each(function(){clearInput($(this).attr('id'));validateOnKeyUp($(this).attr('id'));validateOnBlur($(this).attr('id'));});this.find('textarea').each(function(){clearInput($(this).attr('id'));validateOnKeyUp($(this).attr('id'));validateOnBlur($(this).attr('id'));});function validateOnKeyUp(id){if(!options.displayErrorsWithSymbols){return;}
$("#"+id).keyup(function(){if($(this).hasClass("requiredAz")){if(!validations.requiredAz.test($(this).val())){validationErrors.requiredAz=displayError(id,$(this).val(),validationMessages.requiredAz);$(this).removeClass(options.noErrorClass).addClass(options.errorClass);}else{displaySuccess(id);}}
if($(this).hasClass("requiredAz09")){if(!validations.requiredAz09.test($(this).val())){validationErrors.requiredAz09=displayError(id,$(this).val(),validationMessages.requiredAz);$(this).removeClass(options.noErrorClass).addClass(options.errorClass);}else{displaySuccess(id);}}
if($(this).hasClass("requiredEmail")){if(!validations.requiredEmail.test($(this).val())){validationErrors.requiredEmail=displayError(id,$(this).val(),validationMessages.requiredEmail);$(this).removeClass(options.noErrorClass).addClass(options.errorClass);}else{displaySuccess(id);}}
if($(this).hasClass("validate09")){if($(this).val().length<7){validationErrors.required09=displayError(id,$(this).val(),validationMessages.required09);$(this).removeClass(options.noErrorClass).addClass(options.errorClass);}else{if(!validations.required09.test($(this).val())){validationErrors.required09=displayError(id,$(this).val(),validationMessages.required09);$(this).removeClass(options.noErrorClass).addClass(options.errorClass);}else{displaySuccess(id);}}}
if($(this).hasClass("validateUrl")){if(!validations.requiredUrl.test($(this).val())){validationErrors.requiredUrl=displayError(id,$(this).val(),validationMessages.requiredUrl);$(this).removeClass(options.noErrorClass).addClass(options.errorClass);}else{displaySuccess(id);}}
if($(this).hasClass("requiredMinLength")){if($(this).val().length<options.textareaMinLength){validationErrors.requiredMinLength=displayError(id,$(this).val(),validationMessages.requiredMinLengthPrefix+options.textareaMinLength+validationMessages.requiredMinLengthSuffix);$(this).removeClass(options.noErrorClass).addClass(options.errorClass);if(options.lang=="de"){$(this).parent().next().css({"cursor":"help"}).attr('title','Bitte mindestens '+options.textareaMinLength+' Zeichen eingeben!');}
if(options.lang=="en"){$(this).parent().next().css({"cursor":"help"}).attr('title','Please fill in at least '+options.textareaMinLength+' characters!');}
if(options.lang=="de"){$(this).parent().next().css({"cursor":"help"}).attr('title','Please fill in at least '+options.textareaMinLength+' characters!');}}else{displaySuccess(id);}}});}
function validateOnBlur(id){if(!options.displayErrorsWithSymbols){return;}
$("#"+id).blur(function(){if($(this).hasClass("requiredAz")){if(!validations.requiredAz.test($(this).val())){validationErrors.requiredAz=displayError(id,$(this).val(),validationMessages.requiredAz);$(this).removeClass(options.noErrorClass).addClass(options.errorClass);}else{displaySuccess(id);}}
if($(this).hasClass("requiredAz09")){if(!validations.requiredAz09.test($(this).val())){validationErrors.requiredAz09=displayError(id,$(this).val(),validationMessages.requiredAz);$(this).removeClass(options.noErrorClass).addClass(options.errorClass);}else{displaySuccess(id);}}
if($(this).hasClass("requiredEmail")){if(!validations.requiredEmail.test($(this).val())){validationErrors.requiredEmail=displayError(id,$(this).val(),validationMessages.requiredEmail);$(this).removeClass(options.noErrorClass).addClass(options.errorClass);}else{displaySuccess(id);}}
if($(this).hasClass("requiredMinLength")){if($(this).val().length<options.textareaMinLength){validationErrors.requiredMinLength=displayError(id,$(this).val(),validationMessages.requiredMinLengthPrefix+options.textareaMinLength+validationMessages.requiredMinLengthSuffix);$(this).removeClass(options.noErrorClass).addClass(options.errorClass);}else{displaySuccess(id);}}});}
function validateOnChange(id){$("#"+id).change(function(){validationErrors.requiredOption=false;var val=jQuery.trim($(this).val());var el=$(this).attr('id');if(val==-1){validationErrors.requiredOption=displayError(el,val,validationMessages.requiredOption);}else{displaySuccess(el);}});}
function displaySuccess(id){$("#"+id).css({"cursor":"text"}).attr('title','');var requiredClass=$("#"+id).attr("class");if(options.displayErrorsWithSymbols){if($("#"+id).parent().next().hasClass(options.successDiv)||$("#"+id).parent().next().hasClass(options.errorDiv)||$("#"+id).parent().next().hasClass(options.editDiv)){$("#"+id).parent().next().remove();}
if(!$("#"+id).parent().next().hasClass(options.successDiv)){$("#"+id).parent().after("<div class='"+options.successDiv+"'></div>");}}
if(requiredClass=="requiredOption inputError"){if($("#"+id).next().length){$("#"+id).removeClass(options.errorClass).addClass(options.noErrorClass);$("#"+id).next().find('div').removeClass(options.errorClass).addClass(options.noErrorClass);}}}
function displayError(id,val,valMessage){var error=true;var requiredClass=$("#"+id).attr("class");if(options.displayErrorsWithSymbols){if($("#"+id).parent().next().attr("class")!=options.errorDiv){$("#"+id).parent().after("<div class='"+options.errorDiv+"'></div>");$("#"+id).parent().parent().find("."+options.successDiv).each(function(){$(this).remove();});$("#"+id).parent().parent().find("."+options.editDiv).each(function(){$(this).remove();});}}else{if(options.errorMessageInInput){$("#"+id).val(valMessage);}
if($("#"+id+"_prefilledValue").length){$("#"+id).val($("#"+id+"_prefilledValue").val());}else{$("#"+id).val(valMessage);}
if($("#"+id+"_errorMessage").length){$("#"+id).val($("#"+id+"_errorMessage").val());}else{$("#"+id).val(valMessage);}
$("#"+id).removeClass(options.noErrorClass).addClass(options.errorClass);if($("#"+id).hasClass("requiredOption")){if($("#"+id).next().length){$("#"+id).next().find('div').removeClass(options.noErrorClass).addClass(options.errorClass);}}}
return error;}
function clearInput(el){$("#"+el).focus(function(){var cleared=false;var val=jQuery.trim($(this).val());var el=$(this).attr('id');if($("#"+el+"_prefilledValue").length){if(val==$("#"+el+"_prefilledValue").val()){$(this).val('');cleared=true;}}
if($("#"+el+"_errorMessage").length){if(val==$("#"+el+"_errorMessage").val()){$(this).val('');cleared=true;}}
if(val==validationMessages.requiredMinLengthPrefix+options.textareaMinLength+validationMessages.requiredMinLengthSuffix){$(this).val('');cleared=true;}
if(cleared){$(this).removeClass(options.errorClass).addClass(options.noErrorClass);}});}
function showEditSymbol(id){if($("#"+id).parent().next().hasClass(options.errorDiv)||$("#"+id).parent().next().hasClass(options.successDiv)){$("#"+id).parent().next().remove();$("#"+id).parent().after("<div class='"+options.editDiv+"'></div>");}
if(!$("#"+id).parent().next().hasClass(options.editDiv)){$("#"+id).parent().after("<div class='"+options.editDiv+"'></div>");}}
function hideEditSymbol(id){if($("#"+id).parent().next().hasClass(options.editDiv)||$("#"+id).parent().next().hasClass(options.errorDiv)||$("#"+id).parent().next().hasClass(options.successDiv)){$("#"+id).parent().next().remove();}}
function addReqStar(id){var requiredClass=$("#"+id).attr("class");if(requiredClass.substring(0,8)=="required"){$("#"+id).parent().prev().append("<div class='reqStar'>*</div>");}}
return this.submit(function(event){var validationErrors={generalError:false,requiredAz:false,requiredEmail:false,requiredMinLength:false,requiredAz09:false,required09:false,requiredOption:false}
form=$(this);form.find('.requiredOption').each(function(){validationErrors.requiredOption=false;var val=jQuery.trim($(this).val());var el=$(this).attr('id');if(val==-1){validationErrors.requiredOption=displayError(el,val,validationMessages.requiredOption);}else{displaySuccess(el);}});form.find('.requiredAz09').each(function(){validationErrors.requiredAz09=false;var val=jQuery.trim($(this).val());var el=$(this).attr('id');if(!validations.requiredAz09.test(val)){validationErrors.requiredAz09=displayError(el,val,validationMessages.requiredAz09);$(this).removeClass(options.noErrorClass).addClass(options.errorClass);}else{displaySuccess(el);}});form.find('.required09').each(function(){validationErrors.required09=false;var val=jQuery.trim($(this).val());var el=$(this).attr('id');if(!validations.required09.test(val)){validationErrors.required09=displayError(el,val,validationMessages.required09);$(this).removeClass(options.noErrorClass).addClass(options.errorClass);}else{displaySuccess(el);}});form.find('.requiredAz').each(function(){validationErrors.requiredAz=false;var val=jQuery.trim($(this).val());var el=$(this).attr('id');if(!validations.requiredAz.test(val)){validationErrors.requiredAz=displayError(el,val,validationMessages.requiredAz);$(this).removeClass(options.noErrorClass).addClass(options.errorClass);}else{displaySuccess(el);}});form.find('.requiredEmail').each(function(){validationErrors.requiredEmail=false;var val=jQuery.trim($(this).val());var el=$(this).attr('id');if(!validations.requiredEmail.test(val)){validationErrors.requiredEmail=displayError(el,val,validationMessages.requiredEmail);$(this).removeClass(options.noErrorClass).addClass(options.errorClass);}else{displaySuccess(el);}});form.find('.requiredMinLength').each(function(){validationErrors.requiredMinLength=false;var val=jQuery.trim($(this).val());var el=$(this).attr('id');if(val.length<options.textareaMinLength){validationErrors.requiredMinLength=displayError(el,val,validationMessages.requiredMinLengthPrefix+options.textareaMinLength+validationMessages.requiredMinLengthSuffix);$(this).removeClass(options.noErrorClass).addClass(options.errorClass);}else{displaySuccess(el);}
if($("#"+el+"_errorMessage").length){if(val==$("#"+el+"_errorMessage").val()){$(this).val($("#"+el+"_errorMessage").val());validationErrors.requiredMinLength=true;$(this).removeClass(options.noErrorClass).addClass(options.errorClass);}}});form.find('input:text').each(function(){var requiredClass=$(this).attr("class");if(!options.displayErrorsWithSymbols){validationErrors.generalError=false;var val=jQuery.trim($(this).val());var el=$(this).attr('id');if(val.length<=1){if($("#"+el+"_errorMessage").length){$(this).val($("#"+el+"_errorMessage").val());}else{$(this).val(errorMessages.lengthMessage);}
$(this).removeClass(options.noErrorClass).addClass(options.errorClass);validationErrors.generalError=true;}
if($("#"+el+"_prefilledValue").length){if(val==$("#"+el+"_prefilledValue").val()){if($("#"+el+"_errorMessage").length){$(this).val($("#"+el+"_errorMessage").val());}else{$(this).val(errorMessages.lengthMessage);}
$(this).removeClass(options.noErrorClass).addClass(options.errorClass);validationErrors.generalError=true;}}
if($("#"+el+"_errorMessage").length){if(val==$("#"+el+"_errorMessage").val()){if($("#"+el+"_errorMessage").length){$(this).val($("#"+el+"_errorMessage").val());}else{$(this).val(errorMessages.lengthMessage);}
$(this).removeClass(options.noErrorClass).addClass(options.errorClass);validationErrors.generalError=true;}}}else{}});error=false;for(key in validationErrors){if(validationErrors[key]==true){error=true;}}
if(error){event.preventDefault();}else{var permitAjaxRequest=true;if($("#"+options.ajaxInputAlreadySent).val()=="true"){permitAjaxRequest=false;}
if(options.ajaxUrl&&permitAjaxRequest){$.ajax({type:"POST",url:options.ajaxUrl,data:form.serialize(),beforeSend:function(e){if(options.ajaxLoader){$("#"+options.ajaxLoader).show();}},success:function(e){if(options.ajaxLoader){$("#"+options.ajaxLoader).hide();}
if($("#"+options.conversionTrackingDiv).length){if(options.conversionTrackingCode>0){$.getScript("http://www.googleadservices.com/pagead/conversion.js");if($("#"+options.conversionParamsDiv).length){var conversionParams=$("#"+options.conversionParamsDiv).val();}else{var conversionParams=$("#conversionParams").val();}
var conversionCode="<img src='http://www.googleadservices.com/pagead/conversion/"+options.conversionTrackingCode+"/imp.gif?"+conversionParams+"'>";$("#"+options.conversionTrackingDiv).html(conversionCode).show();}}
if($("#"+options.ajaxResponseDiv).length){if($("#"+options.ajaxSuccessMessage).length){var successMessage=$("#"+options.ajaxSuccessMessage).val();}else{var successMessage=errorMessages.generalSuccessMessage;}
$("#"+options.ajaxResponseDiv).html(successMessage).show();}else{alert(e);}
if(options.ajaxInputAlreadySent){$("#"+options.ajaxInputAlreadySent).val('true');}
if($("#"+options.ajaxSuccessImage).length){$("#"+options.ajaxSuccessImage).show();}},error:function(e){if(options.ajaxLoader){$("#"+options.ajaxLoader).hide();}}});return false;}
return false;}
form.find('input:text').each(function(){$(this).focus(function(){var cleared=false;var el=$(this).attr('id');var val=jQuery.trim($(this).val());if($("#"+el+"_prefilledValue").length){if(val==$("#"+el+"_prefilledValue").val()){$(this).val('');cleared=true;}}
if($("#"+el+"_errorMessage").length){if(val==$("#"+el+"_errorMessage").val()){$(this).val('');cleared=true;}}
for(var key in validationMessages){if(val==validationMessages[key]){$(this).val('');cleared=true;}}
if(val==errorMessages.lengthMessage){$(this).val('');cleared=true;}
if(cleared){$(this).parent().after("<div class='"+options.successDiv+"'></div>");$(this).removeClass(options.errorClass).addClass(options.noErrorClass);}});});form.find('textarea').each(function(){$(this).focus(function(){var cleared=false;var val=jQuery.trim($(this).val());var el=$(this).attr('id');if($("#"+el+"_prefilledValue").length){if(val==$("#"+el+"_prefilledValue").val()){$(this).val('');cleared=true;}}
if($("#"+el+"_errorMessage").length){if(val==$("#"+el+"_errorMessage").val()){$(this).val('');cleared=true;}}
if(val==validationMessages.requiredMinLengthPrefix+options.textareaMinLength+validationMessages.requiredMinLengthSuffix){$(this).val('');cleared=true;}
if(cleared){$(this).removeClass(options.errorClass).addClass(options.noErrorClass);}});});function displayError(id,val,valMessage){var error=true;var requiredClass=$("#"+id).attr("class");if(options.displayErrorsWithSymbols){if($("#"+id).parent().next().attr("class")!=options.errorDiv){$("#"+id).parent().after("<div class='"+options.errorDiv+"'></div>");$("#"+id).val('');}}else{if(options.errorMessageInInput){$("#"+id).val(valMessage);}
if($("#"+id+"_prefilledValue").length){$("#"+id).val($("#"+id+"_prefilledValue").val());}else{$("#"+id).val(valMessage);}
if($("#"+id+"_errorMessage").length){$("#"+id).val($("#"+id+"_errorMessage").val());}else{$("#"+id).val(valMessage);}
$("#"+id).removeClass(options.noErrorClass).addClass(options.errorClass);if($("#"+id).hasClass("requiredOption")){if($("#"+id).next().length){$("#"+id).next().find('div').removeClass(options.noErrorClass).addClass(options.errorClass);}}}
return error;}
function displaySuccess(id){var requiredClass=$("#"+id).attr("class");if(options.displayErrorsWithSymbols){if($("#"+id).parent().next().hasClass(options.successDiv)||$("#"+id).parent().next().hasClass(options.errorDiv)||$("#"+id).parent().next().hasClass(options.editDiv)){$("#"+id).parent().next().remove();}
if(!$("#"+id).parent().next().hasClass(options.successDiv)){$("#"+id).parent().after("<div class='"+options.successDiv+"'></div>");}}
if(requiredClass=="requiredOption inputError"){if($("#"+id).next().length){$("#"+id).removeClass(options.errorClass).addClass(options.noErrorClass);$("#"+id).next().find('div').removeClass(options.errorClass).addClass(options.noErrorClass);}}}});};})(jQuery);
