(function(b){var a={init:function(c){var d=this;if(!d.data("jqv")||d.data("jqv")==null){c=a._saveOptions(d,c);b(".formError").live("click",function(){b(this).fadeOut(150,function(){b(this).parent(".formErrorOuter").remove();b(this).remove()})})}return this},attach:function(e){if(!b(this).is("form")){alert("Sorry, jqv.attach() only applies to a form");return this}var d=this;var c;if(e){c=a._saveOptions(d,e)}else{c=d.data("jqv")}c.validateAttribute=(d.find("[data-validation-engine*=validate]").length)?"data-validation-engine":"class";if(c.binded){d.find("["+c.validateAttribute+"*=validate]").not("[type=checkbox]").not("[type=radio]").not(".datepicker").bind(c.validationEventTrigger,a._onFieldEvent);d.find("["+c.validateAttribute+"*=validate][type=checkbox],["+c.validateAttribute+"*=validate][type=radio]").bind("click",a._onFieldEvent);d.find("["+c.validateAttribute+"*=validate][class*=datepicker]").bind(c.validationEventTrigger,{delay:300},a._onFieldEvent)}if(c.autoPositionUpdate){b(window).bind("resize",{noAnimation:true,formElem:d},a.updatePromptsPosition)}d.bind("submit",a._onSubmitEvent);return this},detach:function(){if(!b(this).is("form")){alert("Sorry, jqv.detach() only applies to a form");return this}var d=this;var c=d.data("jqv");d.find("["+c.validateAttribute+"*=validate]").not("[type=checkbox]").unbind(c.validationEventTrigger,a._onFieldEvent);d.find("["+c.validateAttribute+"*=validate][type=checkbox],[class*=validate][type=radio]").unbind("click",a._onFieldEvent);d.unbind("submit",a.onAjaxFormComplete);d.find("["+c.validateAttribute+"*=validate]").not("[type=checkbox]").die(c.validationEventTrigger,a._onFieldEvent);d.find("["+c.validateAttribute+"*=validate][type=checkbox]").die("click",a._onFieldEvent);d.die("submit",a.onAjaxFormComplete);d.removeData("jqv");if(c.autoPositionUpdate){b(window).unbind("resize",a.updatePromptsPosition)}return this},validate:function(){var c=b(this);var f=null;if(c.is("form")&&!c.hasClass("validating")){c.addClass("validating");var d=c.data("jqv");f=a._validateFields(this);setTimeout(function(){c.removeClass("validating")},100);if(f&&d.onFormSuccess){d.onFormSuccess()}else{if(!f&&d.onFormFailure){d.onFormFailure()}}}else{if(c.is("form")){c.removeClass("validating")}else{var e=c.closest("form");var d=e.data("jqv");f=a._validateField(c,d);if(f&&d.onFieldSuccess){d.onFieldSuccess()}else{if(d.onFieldFailure&&d.InvalidFields.length>0){d.onFieldFailure()}}}}return f},updatePromptsPosition:function(f){if(f&&this==window){var e=f.data.formElem;var d=f.data.noAnimation}else{var e=b(this.closest("form"))}var c=e.data("jqv");e.find("["+c.validateAttribute+"*=validate]").not(":disabled").each(function(){var i=b(this);var h=a._getPrompt(i);var g=b(h).find(".formErrorContent").html();if(h){a._updatePrompt(i,b(h),g,undefined,false,c,d)}});return this},showPrompt:function(d,f,h,c){var g=this.closest("form");var e=g.data("jqv");if(!e){e=a._saveOptions(this,e)}if(h){e.promptPosition=h}e.showArrow=c==true;a._showPrompt(this,d,f,false,e);return this},hide:function(){var e=b(this).closest("form");var d=e.data("jqv");var c=(d&&d.fadeDuration)?d.fadeDuration:0.3;var f;if(b(this).is("form")){f="parentForm"+a._getClassName(b(this).attr("id"))}else{f=a._getClassName(b(this).attr("id"))+"formError"}b("."+f).fadeTo(c,0.3,function(){b(this).parent(".formErrorOuter").remove();b(this).remove()});return this},hideAll:function(){var d=this;var c=d.data("jqv");var e=c?c.fadeDuration:0.3;b(".formError").fadeTo(e,0.3,function(){b(this).parent(".formErrorOuter").remove();b(this).remove()});return this},_onFieldEvent:function(e){var f=b(this);var d=f.closest("form");var c=d.data("jqv");c.eventTrigger="field";window.setTimeout(function(){a._validateField(f,c);if(c.InvalidFields.length==0&&c.onFieldSuccess){c.onFieldSuccess()}else{if(c.InvalidFields.length>0&&c.onFieldFailure){c.onFieldFailure()}}},(e.data)?e.data.delay:0)},_onSubmitEvent:function(){var e=b(this);var c=e.data("jqv");c.eventTrigger="submit";var d=a._validateFields(e);if(d&&c.ajaxFormValidation){a._validateFormWithAjax(e,c);return false}if(c.onValidationComplete){return !!c.onValidationComplete(e,d)}return d},_checkAjaxStatus:function(c){var d=true;b.each(c.ajaxValidCache,function(e,f){if(!f){d=false;return false}});return d},_checkAjaxFieldStatus:function(d,c){return c.ajaxValidCache[d]==true},_validateFields:function(d){var k=d.data("jqv");var e=false;d.trigger("jqv.form.validating");var m=null;d.find("["+k.validateAttribute+"*=validate]").not(":disabled").each(function(){var p=b(this);var o=[];if(b.inArray(p.attr("name"),o)<0){e|=a._validateField(p,k);if(e&&m==null){if(p.is(":hidden")&&k.prettySelect){m=p=d.find("#"+k.usePrefix+p.attr("id")+k.useSuffix)}else{m=p}}if(k.doNotShowAllErrosOnSubmit){return false}o.push(p.attr("name"));if(k.showOneMessage==true&&e){return false}}});d.trigger("jqv.form.result",[e]);if(e){if(k.scroll){var n=m.offset().top;var h=m.offset().left;var i=k.promptPosition;if(typeof(i)=="string"&&i.indexOf(":")!=-1){i=i.substring(0,i.indexOf(":"))}if(i!="bottomRight"&&i!="bottomLeft"){var g=a._getPrompt(m);if(g){n=g.offset().top}}if(k.isOverflown){var j=b(k.overflownDIV);if(!j.length){return false}var c=j.scrollTop();var f=-parseInt(j.offset().top);n+=c+f-5;var l=b(k.overflownDIV+":not(:animated)");l.animate({scrollTop:n},1100,function(){if(k.focusFirstField){m.focus()}})}else{b("html:not(:animated),body:not(:animated)").animate({scrollTop:n,scrollLeft:h},1100,function(){if(k.focusFirstField){m.focus()}})}}else{if(k.focusFirstField){m.focus()}}return false}return true},_validateFormWithAjax:function(g,e){var h=g.serialize();var f=(e.ajaxmethod)?e.ajaxmethod:"GET";var d=(e.ajaxFormValidationURL)?e.ajaxFormValidationURL:g.attr("action");var c=(e.dataType)?e.dataType:"json";b.ajax({type:f,url:d,cache:false,dataType:c,data:h,form:g,methods:a,options:e,beforeSend:function(){return e.onBeforeAjaxFormValidation(g,e)},error:function(i,j){a._ajaxError(i,j)},success:function(m){if((c=="json")&&(m!==true)){var n=false;for(var l=0;l0){y=true}var c=b(d.closest("form"));for(var u in s){s[u]=s[u].replace(" ","");if(s[u]===""){delete s[u]}}for(var u=0,l=0;u=n.maxErrorsPerField){if(!f){var o=b.inArray("required",s);f=(o!=-1&&o>=u)}break}var e=undefined;switch(s[u]){case"required":f=true;e=a._getErrorMessage(c,d,s[u],s,u,n,a._required);break;case"custom":e=a._getErrorMessage(c,d,s[u],s,u,n,a._custom);break;case"groupRequired":var w="["+n.validateAttribute+"*="+s[u+1]+"]";var q=c.find(w).eq(0);if(q[0]!=d[0]){a._validateField(q,n,r);n.showArrow=true;continue}e=a._getErrorMessage(c,d,s[u],s,u,n,a._groupRequired);if(e){f=true}n.showArrow=false;break;case"ajax":e=a._ajax(d,s,u,n);if(e){v="load"}break;case"minSize":e=a._getErrorMessage(c,d,s[u],s,u,n,a._minSize);break;case"maxSize":e=a._getErrorMessage(c,d,s[u],s,u,n,a._maxSize);break;case"min":e=a._getErrorMessage(c,d,s[u],s,u,n,a._min);break;case"max":e=a._getErrorMessage(c,d,s[u],s,u,n,a._max);break;case"past":e=a._getErrorMessage(c,d,s[u],s,u,n,a._past);break;case"future":e=a._getErrorMessage(c,d,s[u],s,u,n,a._future);break;case"dateRange":var w="["+n.validateAttribute+"*="+s[u+1]+"]";n.firstOfGroup=c.find(w).eq(0);n.secondOfGroup=c.find(w).eq(1);if(n.firstOfGroup[0].value||n.secondOfGroup[0].value){e=a._getErrorMessage(c,d,s[u],s,u,n,a._dateRange)}if(e){f=true}n.showArrow=false;break;case"dateTimeRange":var w="["+n.validateAttribute+"*="+s[u+1]+"]";n.firstOfGroup=c.find(w).eq(0);n.secondOfGroup=c.find(w).eq(1);if(n.firstOfGroup[0].value||n.secondOfGroup[0].value){e=a._getErrorMessage(c,d,s[u],s,u,n,a._dateTimeRange)}if(e){f=true}n.showArrow=false;break;case"maxCheckbox":d=b(c.find("input[name='"+h+"']"));e=a._getErrorMessage(c,d,s[u],s,u,n,a._maxCheckbox);break;case"minCheckbox":d=b(c.find("input[name='"+h+"']"));e=a._getErrorMessage(c,d,s[u],s,u,n,a._minCheckbox);break;case"equals":e=a._getErrorMessage(c,d,s[u],s,u,n,a._equals);break;case"funcCall":e=a._getErrorMessage(c,d,s[u],s,u,n,a._funcCall);break;case"creditCard":e=a._getErrorMessage(c,d,s[u],s,u,n,a._creditCard);break;case"condRequired":e=a._getErrorMessage(c,d,s[u],s,u,n,a._condRequired);if(e!==undefined){f=true}break;default:}var k=false;if(typeof e=="object"){switch(e.status){case"_break":k=true;break;case"_error":e=e.message;break;case"_error_no_prompt":return true;break;default:break}}if(k){break}if(typeof e=="string"){g+=e+"
";n.isError=true;l++}}if(!f&&d.val().length<1){n.isError=false}var m=d.prop("type");if((m=="radio"||m=="checkbox")&&c.find("input[name='"+h+"']").size()>1){d=b(c.find("input[name='"+h+"'][type!=hidden]:first"));n.showArrow=false}if(d.is(":hidden")&&n.prettySelect){d=c.find("#"+n.usePrefix+d.attr("id")+n.useSuffix)}if(n.isError){a._showPrompt(d,g,v,false,n)}else{if(!j){a._closePrompt(d)}}if(!j){d.trigger("jqv.field.result",[d,n.isError,g])}var p=b.inArray(d[0],n.InvalidFields);if(p==-1){if(n.isError){n.InvalidFields.push(d[0])}}else{if(!n.isError){n.InvalidFields.splice(p,1)}}return n.isError},_getErrorMessage:function(c,n,m,p,f,l,q){var k=m;if(m=="custom"){var j=jQuery.inArray(m,p)+1;var o=p[j];m="custom["+o+"]"}var e=(n.attr("data-validation-engine"))?n.attr("data-validation-engine"):n.attr("class");var g=e.split(" ");var h;if(m=="future"||m=="past"||m=="maxCheckbox"||m=="minCheckbox"){h=q(c,n,p,f,l)}else{h=q(n,p,f,l)}if(h!=undefined){var d=a._getCustomErrorMessage(b(n),g,k,l);if(d){h=d}}return h},_getCustomErrorMessage:function(k,d,j,h){var e=false;var g=a._validityProp[j];if(g!=undefined){e=k.attr("data-errormessage-"+g);if(e!=undefined){return e}}e=k.attr("data-errormessage");if(e!=undefined){return e}var c="#"+k.attr("id");if(typeof h.custom_error_messages[c]!="undefined"&&typeof h.custom_error_messages[c][j]!="undefined"){e=h.custom_error_messages[c][j]["message"]}else{if(d.length>0){for(var f=0;f0;f++){var l="."+d[f];if(typeof h.custom_error_messages[l]!="undefined"&&typeof h.custom_error_messages[l][j]!="undefined"){e=h.custom_error_messages[l][j]["message"];break}}}}if(!e&&typeof h.custom_error_messages[j]!="undefined"&&typeof h.custom_error_messages[j]["message"]!="undefined"){e=h.custom_error_messages[j]["message"]}return e},_validityProp:{required:"value-missing",custom:"custom-error",groupRequired:"value-missing",ajax:"custom-error",minSize:"range-underflow",maxSize:"range-overflow",min:"range-underflow",max:"range-overflow",past:"type-mismatch",future:"type-mismatch",dateRange:"type-mismatch",dateTimeRange:"type-mismatch",maxCheckbox:"range-overflow",minCheckbox:"range-underflow",equals:"pattern-mismatch",funcCall:"custom-error",creditCard:"pattern-mismatch",condRequired:"value-missing"},_required:function(g,h,e,d){switch(g.prop("type")){case"text":case"password":case"textarea":case"file":case"select-one":case"select-multiple":default:if(!b.trim(g.val())||g.val()==g.attr("data-validation-placeholder")||g.val()==g.attr("placeholder")){return d.allrules[h[e]].alertText}break;case"radio":case"checkbox":var f=g.closest("form");var c=g.attr("name");if(f.find("input[name='"+c+"']:checked").size()==0){if(f.find("input[name='"+c+"']:visible").size()==1){return d.allrules[h[e]].alertTextCheckboxe}else{return d.allrules[h[e]].alertTextCheckboxMultiple}}break}},_groupRequired:function(f,h,d,c){var g="["+c.validateAttribute+"*="+h[d+1]+"]";var e=false;f.closest("form").find(g).each(function(){if(!a._required(b(this),h,d,c)){e=true;return false}});if(!e){return c.allrules[h[d]].alertText}},_custom:function(k,l,d,g){var e=l[d+1];var j=g.allrules[e];var h;if(!j){return}if(j.regex){var f=j.regex;if(!f){alert("jqv:custom regex not found - "+e);return}var c=new RegExp(f);if(!c.test(k.val())){return g.allrules[e].alertText}}else{if(j.func){h=j.func;if(typeof(h)!=="function"){alert("jqv:custom parameter 'function' is no function - "+e);return}if(!h(k,l,d,g)){return g.allrules[e].alertText}}else{alert("jqv:custom type not allowed "+e);return}}},_funcCall:function(j,k,e,d){var c=k[e+1];var g;if(c.indexOf(".")>-1){var h=c.split(".");var f=window;while(h.length){f=f[h.shift()]}g=f}else{g=window[c]||d.customFunctions[c]}if(typeof(g)=="function"){return g(j,k,e,d)}},_equals:function(f,g,d,c){var e=g[d+1];if(f.val()!=b("#"+e).val()){return c.allrules.equals.alertText}},_maxSize:function(h,j,f,e){var d=j[f+1];var c=h.val().length;if(c>d){var g=e.allrules.maxSize;return g.alertText+d+g.alertText2}},_minSize:function(h,j,f,e){var d=j[f+1];var c=h.val().length;if(cd){var g=e.allrules.max;if(g.alertText2){return g.alertText+d+g.alertText2}return g.alertText+d}},_past:function(d,k,l,f,j){var e=l[f+1];var c=b(d.find("input[name='"+e.replace(/^#+/,"")+"']"));var g;if(e.toLowerCase()=="now"){g=new Date()}else{if(undefined!=c.val()){if(c.is(":disabled")){return}g=a._parseDate(c.val())}else{g=a._parseDate(e)}}var m=a._parseDate(k.val());if(m>g){var h=j.allrules.past;if(h.alertText2){return h.alertText+a._dateToString(g)+h.alertText2}return h.alertText+a._dateToString(g)}},_future:function(d,k,l,f,j){var e=l[f+1];var c=b(d.find("input[name='"+e.replace(/^#+/,"")+"']"));var g;if(e.toLowerCase()=="now"){g=new Date()}else{if(undefined!=c.val()){if(c.is(":disabled")){return}g=a._parseDate(c.val())}else{g=a._parseDate(e)}}var m=a._parseDate(k.val());if(mc){d.showArrow=false;if(d.allrules.maxCheckbox.alertText2){return d.allrules.maxCheckbox.alertText+" "+c+" "+d.allrules.maxCheckbox.alertText2}return d.allrules.maxCheckbox.alertText}},_minCheckbox:function(g,j,k,e,d){var c=k[e+1];var f=j.attr("name");var h=g.find("input[name='"+f+"']:checked").size();if(h=14&&d<=16&&parseInt(n)>0){var g=0,f=d-1,j=1,h,e=new String();do{h=parseInt(n.charAt(f));e+=(j++%2==0)?h*2:h}while(--f>=0);for(f=0;f");e.addClass(a._getClassName(j.attr("id"))+"formError");e.addClass("parentForm"+a._getClassName(j.parents("form").attr("id")));e.addClass("formError");switch(f){case"pass":e.addClass("greenPopup");break;case"load":e.addClass("blackPopup");break;default:}if(l){e.addClass("ajaxed")}var i=b("
").addClass("formErrorContent").html(c).appendTo(e);if(h.showArrow){var k=b("
").addClass("formErrorArrow");var d=j.data("promptPosition")||h.promptPosition;if(typeof(d)=="string"){var g=d.indexOf(":");if(g!=-1){d=d.substring(0,g)}}switch(d){case"bottomLeft":case"bottomRight":e.find(".formErrorContent").before(k);k.addClass("formErrorArrowBottom").html('
');break;case"topLeft":case"topRight":k.html('
');e.append(k);break}}if(j.closest(".ui-dialog").length){e.addClass("formErrorInsideDialog")}e.css({opacity:0,position:"absolute"});j.before(e);var g=a._calculatePosition(j,e,h);e.css({top:g.callerTopPosition,left:g.callerleftPosition,marginTop:g.marginTopSize,opacity:0}).data("callerField",j);if(h.autoHidePrompt){setTimeout(function(){e.animate({opacity:0},function(){e.closest(".formErrorOuter").remove();e.remove()})},h.autoHideDelay)}return e.animate({opacity:0.87})},_updatePrompt:function(j,f,c,g,k,h,d){if(f){if(typeof g!=="undefined"){if(g=="pass"){f.addClass("greenPopup")}else{f.removeClass("greenPopup")}if(g=="load"){f.addClass("blackPopup")}else{f.removeClass("blackPopup")}}if(k){f.addClass("ajaxed")}else{f.removeClass("ajaxed")}f.find(".formErrorContent").html(c);var i=a._calculatePosition(j,f,h);var e={top:i.callerTopPosition,left:i.callerleftPosition,marginTop:i.marginTopSize};if(d){f.css(e)}else{f.animate(e)}}},_closePrompt:function(d){var c=a._getPrompt(d);if(c){c.fadeTo("fast",0,function(){c.parent(".formErrorOuter").remove();c.remove()})}},closePrompt:function(c){return a._closePrompt(c)},_getPrompt:function(e){var f=b(e).closest("form").attr("id");var c=a._getClassName(e.attr("id"))+"formError";var d=b("."+a._escapeExpression(c)+".parentForm"+f)[0];if(d){return b(d)}},_escapeExpression:function(c){return c.replace(/([#;&,\.\+\*\~':"\!\^$\[\]\(\)=>\|])/g,"\\$1")},isRTL:function(e){var f=b(document);var c=b("body");var d=(e&&e.hasClass("rtl"))||(e&&(e.attr("dir")||"").toLowerCase()==="rtl")||f.hasClass("rtl")||(f.attr("dir")||"").toLowerCase()==="rtl"||c.hasClass("rtl")||(c.attr("dir")||"").toLowerCase()==="rtl";return Boolean(d)},_calculatePosition:function(n,h,m){var j,r,e;var i=n.width();var c=n.position().left;var o=n.position().top;var d=n.height();var l=h.height();j=r=0;e=-l;var k=n.data("promptPosition")||m.promptPosition;var f="";var g="";var p=0;var q=0;if(typeof(k)=="string"){if(k.indexOf(":")!=-1){f=k.substring(k.indexOf(":")+1);k=k.substring(0,k.indexOf(":"));if(f.indexOf(",")!=-1){g=f.substring(f.indexOf(",")+1);f=f.substring(0,f.indexOf(","));q=parseInt(g);if(isNaN(q)){q=0}}p=parseInt(f);if(isNaN(f)){f=0}}}switch(k){default:case"topRight":r+=c+i-30;j+=o;break;case"topLeft":j+=o;r+=c;break;case"centerRight":j=o+4;e=0;r=c+n.outerWidth(true)+5;break;case"centerLeft":r=c-(h.width()+2);j=o+4;e=0;break;case"bottomLeft":j=o+n.height()+5;e=0;r=c;break;case"bottomRight":r=c+i-30;j=o+n.height()+5;e=0}r+=p;j+=q;return{callerTopPosition:j+"px",callerleftPosition:r+"px",marginTopSize:e+"px"}},_saveOptions:function(e,d){if(b.validationEngineLanguage){var c=b.validationEngineLanguage.allRules}else{b.error("jQuery.validationEngine rules are not loaded, plz add localization files to the page")}b.validationEngine.defaults.allrules=c;var f=b.extend(true,{},b.validationEngine.defaults,d);e.data("jqv",f);return f},_getClassName:function(c){if(c){return c.replace(/:/g,"_").replace(/\./g,"_")}},_condRequired:function(g,h,e,d){var c,f;for(c=(e+1);c