(function(a){a.fn.validationEngineLanguage=function(){};a.validationEngineLanguage={newLang:function(){a.validationEngineLanguage.allRules={required:{regex:"none",alertText:"* This field is required",alertTextCheckboxMultiple:"* Please select an option",alertTextCheckboxe:"* This checkbox is required"},minSize:{regex:"none",alertText:"* Minimum ",alertText2:" characters allowed"},maxSize:{regex:"none",alertText:"* Maximum ",alertText2:" characters allowed"},min:{regex:"none",alertText:"* Minimum value is "},max:{regex:"none",alertText:"* Maximum value is "},past:{regex:"none",alertText:"* Date prior to "},future:{regex:"none",alertText:"* Date past "},maxCheckbox:{regex:"none",alertText:"* Checks allowed Exceeded"},minCheckbox:{regex:"none",alertText:"* Please select ",alertText2:" options"},equals:{regex:"none",alertText:"* Fields do not match"},phone:{regex:/^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/,alertText:"* Invalid phone number"},email:{regex:/^([A-Za-z0-9_\-\.\'])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,6})$/,alertText:"* Invalid email address"},integer:{regex:/^[\-\+]?\d+$/,alertText:"* Not a valid integer"},number:{regex:/^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/,alertText:"* Invalid floating decimal number"},date:{regex:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,alertText:"* Invalid date, must be in YYYY-MM-DD format"},ipv4:{regex:/^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/,alertText:"* Invalid IP address"},url:{regex:/^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/,alertText:"* Invalid URL"},bannedWord:{regex:/^((?!\b(molested|shit|piss|rape|scat|abused|forced|young|family|incest|fist|rape|raped|raping|sister|son|mom|father|virgin|toilet|sleep|sleeping|pee|pregnant|enema|dad|milk|kid|alien|monster)\b).)*$/i,alertText:"* Dont use banned words! (check the list below the form)"},onlyNumberSp:{regex:/^[0-9\ ]+$/,alertText:"* Numbers only"},onlyLetterSp:{regex:/^[a-zA-Z\ \']+$/,alertText:"* Letters only"},onlyLetterNumber:{regex:/^[0-9a-zA-Z, -]+$/,alertText:"* No special characters allowed"},onlyLetterNumberFirstNoSpace:{regex:/^[^\ ][A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/,alertText:"* No special characters allowed "},onlyLetterNumberComa:{regex:/^\u0020*\w{1,16}\u0020*(?:,\u0020*\w{1,16}\u0020*)*$/g,alertText:"* No special characters allowed,and max. 16 chars each tag"},onlyLetterNumberSpecs:{regex:/^[0-9a-zA-Z,.!\? ]+$/g,alertText:"* No special characters allowed"},ajaxUserCall:{url:"ajaxValidateFieldUser",extraData:"name=eric",alertText:"* This user is already taken",alertTextLoad:"* Validating, please wait"},ajaxNameCall:{url:"ajaxValidateFieldName",alertText:"* This name is already taken",alertTextOk:"* This name is available",alertTextLoad:"* Validating, please wait"},validate2fields:{alertText:"* Please input HELLO"}}}};a.validationEngineLanguage.newLang()})(jQuery);(function(b){var a={init:function(c){var d=this;if(d.data("jqv")===undefined||d.data("jqv")==null){a._saveOptions(d,c);b(".formError").live("click",function(){b(this).fadeOut(150,function(){b(this).remove()})})}},attach:function(e){var d=this;var c;if(e){c=a._saveOptions(d,e)}else{c=d.data("jqv")}if(!c.binded){if(c.bindMethod=="bind"){d.find("[class*=validate]").not("[type=checkbox]").bind(c.validationEventTrigger,a._onFieldEvent);d.find("[class*=validate][type=checkbox]").bind("click",a._onFieldEvent);d.bind("submit",a._onSubmitEvent)}else{if(c.bindMethod=="live"){d.find("[class*=validate]").not("[type=checkbox]").live(c.validationEventTrigger,a._onFieldEvent);d.find("[class*=validate][type=checkbox]").live("click",a._onFieldEvent);d.live("submit",a._onSubmitEvent)}}c.binded=true}},detach:function(){var d=this;var c=d.data("jqv");if(c.binded){d.find("[class*=validate]").not("[type=checkbox]").unbind(c.validationEventTrigger,a._onFieldEvent);d.find("[class*=validate][type=checkbox]").unbind("click",a._onFieldEvent);d.unbind("submit",a.onAjaxFormComplete);d.find("[class*=validate]").not("[type=checkbox]").die(c.validationEventTrigger,a._onFieldEvent);d.find("[class*=validate][type=checkbox]").die("click",a._onFieldEvent);d.die("submit",a.onAjaxFormComplete);d.removeData("jqv")}},validate:function(){return a._validateFields(this)},validateField:function(d){var c=b(this).data("jqv");return a._validateField(b(d),c)},validateform:function(){return a._onSubmitEvent(this)},showPrompt:function(d,f,h,e){var g=this.closest("form");var c=g.data("jqv");if(!h){c.promptPosition=h}c.showArrow=e===true;a._showPrompt(this,d,f,false,c)},hidePrompt:function(){var c="."+b(this).attr("id").replace(":","_")+"formError";b(c).fadeTo("fast",0.3,function(){b(this).remove()})},hide:function(){var c="parentForm"+b(this).attr("id");b("."+c).fadeTo("fast",0.3,function(){b(this).remove()})},hideAll:function(){b(".formError").fadeTo("fast",0.3,function(){b(this).remove()})},_onFieldEvent:function(){var e=b(this);var d=e.closest("form");var c=d.data("jqv");a._validateField(e,c)},_onSubmitEvent:function(){var e=b(this);var d=a._validateFields(e,true);var c=e.data("jqv");if(d&&c.ajaxFormValidation){a._validateFormWithAjax(e,c);return false}if(c.onValidationComplete){c.onValidationComplete(e,d);return false}return d},_checkAjaxStatus:function(d){var c=true;b.each(d.ajaxValidCache,function(e,f){if(f===false){c=false;return false}});return c},_validateFields:function(f,o){var p=f.data("jqv");var g=false;f.find("[class*=validate]").not(":hidden").each(function(){var d=b(this);if(!d.hasClass("ajaxed")){g|=a._validateField(d,p,o)}});g|=!a._checkAjaxStatus(p);if(g){if(p.scroll){var n=Number.MAX_VALUE;var k=b(".formError:not('.greenPopup')");for(var j=0;j<k.length;j++){var l=b(k[j]).offset().top;if(l<n){n=l}}if(!p.isOverflown){b("html:not(:animated),body:not(:animated)").animate({scrollTop:n},1100)}else{var c=b(p.overflownDIV);var e=c.scrollTop();var h=-parseInt(c.offset().top);n+=e+h-5;var m=b(p.overflownDIV+":not(:animated)");m.animate({scrollTop:n},1100)}}return false}return true},_validateFormWithAjax:function(d,c){var e=d.serialize();b.ajax({type:"GET",url:d.attr("action"),cache:false,dataType:"json",data:e,form:d,methods:a,options:c,beforeSend:function(){return c.onBeforeAjaxFormValidation(d,c)},error:function(f,g){a._ajaxError(f,g)},success:function(k){if(k!==true){var h=false;for(var j=0;j<k.length;j++){var l=k[j];var n=l[0];var g=b(b("#"+n)[0]);if(g.length==1){var m=l[2];if(l[1]===true){if(m==""){a._closePrompt(g)}else{if(c.allrules[m]){var f=c.allrules[m].alertTextOk;if(f){m=f}}a._showPrompt(g,m,"pass",false,c)}}else{h|=true;if(c.allrules[m]){var f=c.allrules[m].alertText;if(f){m=f}}a._showPrompt(g,m,"",false,c)}}}c.onAjaxFormComplete(!h,d,k,c)}else{c.onAjaxFormComplete(true,d,"",c)}}})},_validateField:function(l,q,p){if(!l.attr("id")){b.error("jQueryValidate: an ID attribute is required for this field: "+l.attr("name")+" class:"+l.attr("class"))}var o=l.attr("class");var f=/validate\[(.*)\]/.exec(o);if(f===null){return false}var k=f[1];var n=k.split(/\[|,|\]/);var d=false;var m=l.attr("name");var c="";var j=false;q.isError=false;q.showArrow=true;optional=false;for(var e=0;e<n.length;e++){var h=undefined;switch(n[e]){case"optional":optional=true;break;case"required":j=true;h=a._required(l,n,e,q);break;case"custom":h=a._customRegex(l,n,e,q);break;case"ajax":if(!p){a._ajax(l,n,e,q);d=true}break;case"minSize":h=a._minSize(l,n,e,q);break;case"maxSize":h=a._maxSize(l,n,e,q);break;case"min":h=a._min(l,n,e,q);break;case"max":h=a._max(l,n,e,q);break;case"past":h=a._past(l,n,e,q);break;case"future":h=a._future(l,n,e,q);break;case"maxCheckbox":h=a._maxCheckbox(l,n,e,q);l=b(b("input[name='"+m+"']"));break;case"minCheckbox":h=a._minCheckbox(l,n,e,q);l=b(b("input[name='"+m+"']"));break;case"equals":h=a._equals(l,n,e,q);break;case"funcCall":h=a._funcCall(l,n,e,q);break;default:}if(h!==undefined){c+=h+"<br/>";q.isError=true}}if(!j&&!optional){if(l.val()==""){q.isError=false}}var g=l.attr("type");if((g=="radio"||g=="checkbox")&&b("input[name='"+m+"']").size()>1){l=b(b("input[name='"+m+"'][type!=hidden]:first"));q.showArrow=false}if(!d){if(q.isError){a._showPrompt(l,c,"",false,q)}else{a._closePrompt(l)}}return q.isError},_required:function(f,g,e,d){switch(f.attr("type")){case"text":case"password":case"textarea":if(!f.val()){return d.allrules[g[e]].alertText}break;case"radio":case"checkbox":var c=f.attr("name");if(b("input[name='"+c+"']:checked").size()===0){if(b("input[name='"+c+"']").size()===1){return d.allrules[g[e]].alertTextCheckboxe}else{return d.allrules[g[e]].alertTextCheckboxMultiple}}break;case"select-one":if(!f.val()){return d.allrules[g[e]].alertText}break;case"select-multiple":if(!f.find("option:selected").val()){return d.allrules[g[e]].alertText}break}},_customRegex:function(g,h,e,d){var c=h[e+1];var f=new RegExp(d.allrules[c].regex);if(!f.test(g.attr("value"))){return d.allrules[c].alertText}},_funcCall:function(g,h,d,c){var f=h[d+1];var e=window[f];if(typeof(e)==="function"){return e(g,h,d,c)}},_equals:function(f,g,e,d){var c=g[e+1];if(f.attr("value")!=b("#"+c).attr("value")){return d.allrules.equals.alertText}},_maxSize:function(h,j,f,e){var d=j[f+1];var c=h.attr("value").length;if(c>d){var g=e.allrules.maxSize;return g.alertText+d+g.alertText2}},_minSize:function(h,j,f,d){var e=j[f+1];var c=h.attr("value").length;if(c<e){var g=d.allrules.minSize;return g.alertText+e+g.alertText2}},_min:function(h,j,f,d){var e=parseFloat(j[f+1]);var c=parseFloat(h.attr("value"));if(c<e){var g=d.allrules.min;if(g.alertText2){return g.alertText+e+g.alertText2}return g.alertText+e}},_max:function(h,j,f,e){var d=parseFloat(j[f+1]);var c=parseFloat(h.attr("value"));if(c>d){var g=e.allrules.max;if(g.alertText2){return g.alertText+d+g.alertText2}return g.alertText+d}},_past:function(j,k,e,c){var h=k[e+1];var d=(h.toLowerCase()=="now")?new Date():a._parseDate(h);var f=a._parseDate(j.attr("value"));if(f>d){var g=c.allrules.past;if(g.alertText2){return g.alertText+a._dateToString(d)+g.alertText2}return g.alertText+a._dateToString(d)}},_future:function(j,k,e,c){var h=k[e+1];var d=(h.toLowerCase()=="now")?new Date():a._parseDate(h);var f=a._parseDate(j.attr("value"));if(f<d){var g=c.allrules.future;if(g.alertText2){return g.alertText+a._dateToString(d)+g.alertText2}return g.alertText+a._dateToString(d)}},_maxCheckbox:function(h,j,g,f){var d=j[g+1];var e=h.attr("name");var c=b("input[name='"+e+"']:checked").size();if(c>d){f.showArrow=false;return f.allrules.maxCheckbox.alertText}},_minCheckbox:function(h,j,g,f){var d=j[g+1];var e=h.attr("name");var c=b("input[name='"+e+"']:checked").size();if(c<d){f.showArrow=false;return f.allrules.minCheckbox.alertText+" "+d+" "+f.allrules.minCheckbox.alertText2}},_ajax:function(h,j,e,d){var c=j[e+1];var g=d.allrules[c];var f=g.extraData;if(!f){f=""}if(!d.isError){b.ajax({type:"GET",url:g.url,cache:false,dataType:"json",data:"fieldId="+h.attr("id")+"&fieldValue="+h.attr("value")+"&extraData="+f,field:h,rule:g,methods:a,options:d,beforeSend:function(){var i=g.alertTextLoad;if(i){a._showPrompt(h,i,"load",true,d)}},error:function(i,k){a._ajaxError(i,k)},success:function(n){var o=n[0];var k=b(b("#"+o)[0]);if(k.length==1){var i=n[1];if(i===false){d.ajaxValidCache[o]=false;d.isError=true;var m=g.alertText;a._showPrompt(k,m,"",true,d)}else{if(d.ajaxValidCache[o]!==undefined){d.ajaxValidCache[o]=true}var l=g.alertTextOk;if(l){a._showPrompt(k,l,"pass",true,d)}else{a._closePrompt(k)}}}}})}},_ajaxError:function(c,d){if(c.status===0&&d===null){alert("The page is not served from a server! ajax call failed")}else{if(console){console.log("Ajax error: "+c.status+" "+d)}}},_dateToString:function(c){return c.getFullYear()+"-"+(c.getMonth()+1)+"-"+c.getDate()},_parseDate:function(e){var c=e.split("-");if(c!==e){c=e.split("/")}return new Date(c[0],(c[1]-1),c[2])},_showPrompt:function(h,f,g,e,d){var c=a._getPrompt(h);if(c){a._updatePrompt(h,c,f,g,e,d)}else{a._buildPrompt(h,f,g,e,d)}},_buildPrompt:function(g,c,e,i,j){var d=b("<div>");d.addClass(g.attr("id").replace(":","_")+"formError");d.addClass("parentForm"+g.parents("form").attr("id").replace(":","_"));d.addClass("formError");switch(e){case"pass":d.addClass("greenPopup");break;case"load":d.addClass("blackPopup")}if(i){d.addClass("ajaxed")}var k=b("<div>").addClass("formErrorContent").html(c).appendTo(d);if(j.showArrow){var h=b("<div>").addClass("formErrorArrow");switch(j.promptPosition){case"bottomLeft":case"bottomRight":d.find(".formErrorContent").before(h);h.addClass("formErrorArrowBottom").html('<div class="line1"><!-- --></div><div class="line2"><!-- --></div><div class="line3"><!-- --></div><div class="line4"><!-- --></div><div class="line5"><!-- --></div><div class="line6"><!-- --></div><div class="line7"><!-- --></div><div class="line8"><!-- --></div><div class="line9"><!-- --></div><div class="line10"><!-- --></div>');break;case"topLeft":case"topRight":h.html('<div class="line10"><!-- --></div><div class="line9"><!-- --></div><div class="line8"><!-- --></div><div class="line7"><!-- --></div><div class="line6"><!-- --></div><div class="line5"><!-- --></div><div class="line4"><!-- --></div><div class="line3"><!-- --></div><div class="line2"><!-- --></div><div class="line1"><!-- --></div>');d.append(h);break}}if(j.isOverflown){g.before(d)}else{b("body").append(d)}var f=a._calculatePosition(g,d,j);d.css({top:f.callerTopPosition,left:f.callerleftPosition,marginTop:f.marginTopSize,opacity:0});return d.animate({opacity:0.87})},_updatePrompt:function(h,c,f,g,e,d){if(c){if(g=="pass"){c.addClass("greenPopup")}else{c.removeClass("greenPopup")}if(g=="load"){c.addClass("blackPopup")}else{c.removeClass("blackPopup")}if(e){c.addClass("ajaxed")}else{c.removeClass("ajaxed")}c.find(".formErrorContent").html(f);var i=a._calculatePosition(h,c,d);c.animate({top:i.callerTopPosition,marginTop:i.marginTopSize})}},_closePrompt:function(d){var c=a._getPrompt(d);if(c){c.fadeTo("fast",0,function(){c.remove()})}},closePrompt:function(c){return a._closePrompt(c)},_getPrompt:function(e){var d="."+e.attr("id").replace(":","_")+"formError";var c=b(d)[0];if(c){return b(c)}},_calculatePosition:function(i,e,l){var c,j,h;var g=i.width();var k=e.height();var d=l.isOverflown;if(d){c=j=0;h=-k}else{var f=i.offset();c=f.top;j=f.left;h=0}switch(l.promptPosition){default:case"topRight":if(d){j+=g-30}else{j+=g-30;c+=-k}break;case"topLeft":c+=-k-10;break;case"centerRight":j+=g+13;break;case"bottomLeft":c=c+i.height()+15;break;case"bottomRight":j+=g-30;c+=i.height()+5}return{callerTopPosition:c+"px",callerleftPosition:j+"px",marginTopSize:h+"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")}var f=b.extend({validationEventTrigger:"blur",scroll:true,promptPosition:"topRight",bindMethod:"bind",ajaxFormValidation:false,onAjaxFormComplete:b.noop,onBeforeAjaxFormValidation:b.noop,onValidationComplete:false,isOverflown:false,overflownDIV:"",allrules:c,binded:false,showArrow:true,isError:false,ajaxValidCache:{}},d);e.data("jqv",f);return f}};b.fn.validationEngine=function(d){var c=b(this);if(!c[0]){return false}if(typeof(d)==="string"&&d.charAt(0)!="_"&&a[d]){a.init.apply(c);return a[d].apply(c,Array.prototype.slice.call(arguments,1))}else{if(typeof d==="object"||!d){a.init.apply(c,arguments);return a.attach.apply(c)}else{b.error("Method "+d+" does not exist in jQuery.validationEngine")}}}})(jQuery);
