angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(n){var i=n.storageKey(),t=n.storage(),r=function(){var r=n.preferredLanguage();angular.isString(r)?n.use(r):t.put(i,n.use())};t?t.get(i)?n.use(t.get(i))["catch"](r):r():angular.isString(n.preferredLanguage())&&n.use(n.preferredLanguage())}]);angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY","$windowProvider",function(n,t){var f,v,i,k,r,h,c,g,e,ct,o,nt,y,p,l,u={},w=[],d=n,tt=[],it=!1,rt="translate-cloak",lt=!1,ut=".",ft=0,pt="2.6.1",at=function(){var n,i,r=t.$get().navigator,u=["language","browserLanguage","systemLanguage","userLanguage"];if(angular.isArray(r.languages))for(n=0;n<r.languages.length;n++)if(i=r.languages[n],i&&i.length)return i;for(n=0;n<u.length;n++)if(i=r[u[n]],i&&i.length)return i;return null},et,b,ot,st,ht;at.displayName="angular-translate/service: getFirstBrowserLanguage";et=function(){return(at()||"").split("-").join("_")};et.displayName="angular-translate/service: getLocale";var s=function(n,t){for(var i=0,r=n.length;r>i;i++)if(n[i]===t)return i;return-1},vt=function(){return this.replace(/^\s+|\s+$/g,"")},yt=function(n){for(var f,t,e,o,r,i=[],h=angular.lowercase(n),u=0,c=w.length;c>u;u++)i.push(angular.lowercase(w[u]));if(s(i,h)>-1)return n;if(v)for(t in v)if(e=!1,o=Object.prototype.hasOwnProperty.call(v,t)&&angular.lowercase(t)===angular.lowercase(n),"*"===t.slice(-1)&&(e=t.slice(0,-1)===n.slice(0,t.length-1)),(o||e)&&(f=v[t],s(i,angular.lowercase(f))>-1))return f;return r=n.split("_"),r.length>1&&s(i,angular.lowercase(r[0]))>-1?r[0]:n},a=function(n,t){if(!n&&!t)return u;if(n&&!t){if(angular.isString(n))return u[n]}else angular.isObject(u[n])||(u[n]={}),angular.extend(u[n],b(t));return this};this.translations=a;this.cloakClassName=function(n){return n?(rt=n,this):rt};b=function(n,t,i,r){var u,e,o,f;t||(t=[]);i||(i={});for(u in n)Object.prototype.hasOwnProperty.call(n,u)&&(f=n[u],angular.isObject(f)?b(f,t.concat(u),i,u):(e=t.length?""+t.join(ut)+ut+u:u,t.length&&u===r&&(o=""+t.join(ut),i[o]="@:"+e),i[e]=f));return i};this.addInterpolation=function(n){return tt.push(n),this};this.useMessageFormatInterpolation=function(){return this.useInterpolation("$translateMessageFormatInterpolation")};this.useInterpolation=function(n){return ct=n,this};this.useSanitizeValueStrategy=function(n){return it=n,this};this.preferredLanguage=function(n){return ot(n),this};ot=function(n){return n&&(f=n),f};this.translationNotFoundIndicator=function(n){return this.translationNotFoundIndicatorLeft(n),this.translationNotFoundIndicatorRight(n),this};this.translationNotFoundIndicatorLeft=function(n){return n?(y=n,this):y};this.translationNotFoundIndicatorRight=function(n){return n?(p=n,this):p};this.fallbackLanguage=function(n){return st(n),this};st=function(n){return n?(angular.isString(n)?(k=!0,i=[n]):angular.isArray(n)&&(k=!1,i=n),angular.isString(f)&&s(i,f)<0&&i.push(f),this):k?i[0]:i};this.use=function(n){if(n){if(!u[n]&&!o)throw new Error("$translateProvider couldn't find translationTable for langKey: '"+n+"'");return r=n,this}return r};ht=function(n){return n?void(d=n):g?g+d:d};this.storageKey=ht;this.useUrlLoader=function(n,t){return this.useLoader("$translateUrlLoader",angular.extend({url:n},t))};this.useStaticFilesLoader=function(n){return this.useLoader("$translateStaticFilesLoader",n)};this.useLoader=function(n,t){return o=n,nt=t||{},this};this.useLocalStorage=function(){return this.useStorage("$translateLocalStorage")};this.useCookieStorage=function(){return this.useStorage("$translateCookieStorage")};this.useStorage=function(n){return c=n,this};this.storagePrefix=function(n){return n?(g=n,this):n};this.useMissingTranslationHandlerLog=function(){return this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")};this.useMissingTranslationHandler=function(n){return e=n,this};this.usePostCompiling=function(n){return lt=!!n,this};this.determinePreferredLanguage=function(n){var t=n&&angular.isFunction(n)?n():et();return f=w.length?yt(t):t,this};this.registerAvailableLanguageKeys=function(n,t){return n?(w=n,t&&(v=t),this):w};this.useLoaderCache=function(n){return n===!1?l=void 0:n===!0?l=!0:"undefined"==typeof n?l="$translationCache":n&&(l=n),this};this.directivePriority=function(n){return void 0===n?ft:(ft=n,this)};this.$get=["$log","$injector","$rootScope","$q",function(n,t,v,w){var wt,gt,bt,kt=t.get(ct||"$translateDefaultInterpolation"),et=!1,at={},ut={},g=function(n,t,u,e){var l,o,h;return angular.isArray(n)?(l=function(n){for(var r={},f=[],o=function(n){var i=w.defer(),f=function(t){r[n]=t;i.resolve([n,t])};return g(n,t,u,e).then(f,f),i.promise},i=0,s=n.length;s>i;i++)f.push(o(n[i]));return w.all(f).then(function(){return r})},l(n)):(o=w.defer(),n&&(n=vt.apply(n)),h=function(){var n=f?ut[f]:ut[r],t,u;return(gt=0,c&&!n)&&(t=wt.get(d),(n=ut[t],i&&i.length)&&(u=s(i,t),gt=0===u?1:0,s(i,f)<0&&i.push(f))),n}(),h?h.then(function(){si(n,t,u,e).then(o.resolve,o.reject)},o.reject):si(n,t,u,e).then(o.resolve,o.reject),o.promise)},ni=function(n){return y&&(n=[y,n].join(" ")),p&&(n=[n,p].join(" ")),n},ti=function(n){r=n;v.$emit("$translateChangeSuccess",{language:n});c&&wt.put(g.storageKey(),r);kt.setLocale(r);angular.forEach(at,function(n,t){at[t].setLocale(r)});v.$emit("$translateChangeEnd",{language:n})},dt=function(n){var r,i,u;if(!n)throw"No language key specified for loading.";return r=w.defer(),v.$emit("$translateLoadingStart",{language:n}),et=!0,i=l,"string"==typeof i&&(i=t.get(i)),u=angular.extend({},nt,{key:n,$http:angular.extend({},{cache:i},nt.$http)}),t.get(o)(u).then(function(t){var i={};v.$emit("$translateLoadingSuccess",{language:n});angular.isArray(t)?angular.forEach(t,function(n){angular.extend(i,b(n))}):angular.extend(i,b(t));et=!1;r.resolve({key:n,table:i});v.$emit("$translateLoadingEnd",{language:n})},function(n){v.$emit("$translateLoadingError",{language:n});r.reject(n);v.$emit("$translateLoadingEnd",{language:n})}),r.promise};if(c&&(wt=t.get(c),!wt.get||!wt.put))throw new Error("Couldn't use storage '"+c+"', missing get() or put() method!");angular.isFunction(kt.useSanitizeValueStrategy)&&kt.useSanitizeValueStrategy(it);tt.length&&angular.forEach(tt,function(n){var i=t.get(n);i.setLocale(f||r);angular.isFunction(i.useSanitizeValueStrategy)&&i.useSanitizeValueStrategy(it);at[i.getInterpolationIdentifier()]=i});var ci=function(n){var t=w.defer();return Object.prototype.hasOwnProperty.call(u,n)?t.resolve(u[n]):ut[n]?ut[n].then(function(n){a(n.key,n.table);t.resolve(n.table)},t.reject):t.reject(),t.promise},ui=function(n,t,i,u){var f=w.defer();return ci(n).then(function(e){if(Object.prototype.hasOwnProperty.call(e,t)){u.setLocale(n);var o=e[t];"@:"===o.substr(0,2)?ui(n,o.substr(2),i,u).then(f.resolve,f.reject):f.resolve(u.interpolate(e[t],i));u.setLocale(r)}else f.reject()},f.reject),f.promise},fi=function(n,t,i,f){var e,o=u[n];if(o&&Object.prototype.hasOwnProperty.call(o,t)){if(f.setLocale(n),e=f.interpolate(o[t],i),"@:"===e.substr(0,2))return fi(n,e.substr(2),i,f);f.setLocale(r)}return e},ii=function(n){if(e){var i=t.get(e)(n,r);return void 0!==i?i:n}return n},ei=function(n,t,r,u,f){var e=w.defer(),o;return n<i.length?(o=i[n],ui(o,t,r,u).then(e.resolve,function(){ei(n+1,t,r,u,f).then(e.resolve)})):e.resolve(f?f:ii(t)),e.promise},oi=function(n,t,r,u){var f,e;return n<i.length&&(e=i[n],f=fi(e,t,r,u),f||(f=oi(n+1,t,r,u))),f},li=function(n,t,i,r){return ei(bt>0?bt:gt,n,t,i,r)},ai=function(n,t,i){return oi(bt>0?bt:gt,n,t,i)},si=function(n,t,f,o){var s=w.defer(),c=r?u[r]:u,a=f?at[f]:kt,h,l;return c&&Object.prototype.hasOwnProperty.call(c,n)?(h=c[n],"@:"===h.substr(0,2)?g(h.substr(2),t,f,o).then(s.resolve,s.reject):s.resolve(a.interpolate(h,t))):(e&&!et&&(l=ii(n)),r&&i&&i.length?li(n,t,a,o).then(function(n){s.resolve(n)},function(n){s.reject(ni(n))}):e&&!et&&l?s.resolve(o?o:l):o?s.resolve(o):s.reject(ni(n))),s.promise},hi=function(n,t,f){var o,h=r?u[r]:u,c=kt,s,l;return(at&&Object.prototype.hasOwnProperty.call(at,f)&&(c=at[f]),h&&Object.prototype.hasOwnProperty.call(h,n))?(s=h[n],o="@:"===s.substr(0,2)?hi(s.substr(2),t,f):c.interpolate(s,t)):(e&&!et&&(l=ii(n)),r&&i&&i.length?(gt=0,o=ai(n,t,c)):o=e&&!et&&l?l:ni(n)),o};if(g.preferredLanguage=function(n){return n&&ot(n),f},g.cloakClassName=function(){return rt},g.fallbackLanguage=function(n){if(void 0!==n&&null!==n){if(st(n),o&&i&&i.length)for(var t=0,r=i.length;r>t;t++)ut[i[t]]||(ut[i[t]]=dt(i[t]));g.use(g.use())}return k?i[0]:i},g.useFallbackLanguage=function(n){if(void 0!==n&&null!==n)if(n){var t=s(i,n);t>-1&&(bt=t)}else bt=0},g.proposedLanguage=function(){return h},g.storage=function(){return wt},g.use=function(n){var t,i;return n?(t=w.defer(),v.$emit("$translateChangeStart",{language:n}),i=yt(n),i&&(n=i),u[n]||!o||ut[n]?(t.resolve(n),ti(n)):(h=n,ut[n]=dt(n).then(function(i){return a(i.key,i.table),t.resolve(i.key),ti(i.key),h===n&&(h=void 0),i},function(n){h===n&&(h=void 0);v.$emit("$translateChangeError",{language:n});t.reject(n);v.$emit("$translateChangeEnd",{language:n})})),t.promise):r},g.storageKey=function(){return ht()},g.isPostCompilingEnabled=function(){return lt},g.refresh=function(n){function h(){f.resolve();v.$emit("$translateRefreshEnd",{language:n})}function c(){f.reject();v.$emit("$translateRefreshEnd",{language:n})}var f,e,s,t,l;if(!o)throw new Error("Couldn't refresh translation table, no loader registered!");if(f=w.defer(),v.$emit("$translateRefreshStart",{language:n}),n)u[n]?dt(n).then(function(t){a(t.key,t.table);n===r&&ti(r);h()},c):c();else{if(e=[],s={},i&&i.length)for(t=0,l=i.length;l>t;t++)e.push(dt(i[t])),s[i[t]]=!0;r&&!s[r]&&e.push(dt(r));w.all(e).then(function(n){angular.forEach(n,function(n){u[n.key]&&delete u[n.key];a(n.key,n.table)});r&&ti(r);h()})}return f.promise},g.instant=function(n,t,o){var s,h,l,w,a;if(null===n||angular.isUndefined(n))return n;if(angular.isArray(n)){for(var v={},c=0,b=n.length;b>c;c++)v[n[c]]=g.instant(n[c],t,o);return v}if(angular.isString(n)&&n.length<1)return n;for(n&&(n=vt.apply(n)),h=[],f&&h.push(f),r&&h.push(r),i&&i.length&&(h=h.concat(i)),l=0,w=h.length;w>l;l++)if(a=h[l],u[a]&&("undefined"!=typeof u[a][n]?s=hi(n,t,o):(y||p)&&(s=ni(n))),"undefined"!=typeof s)break;return s||""===s||(s=kt.interpolate(n,t),e&&!et&&(s=ii(n))),s},g.versionInfo=function(){return pt},g.loaderCache=function(){return l},g.directivePriority=function(){return ft},o&&(angular.equals(u,{})&&g.use(g.use()),i&&i.length))for(var vi=function(n){return a(n.key,n.table),v.$emit("$translateChangeEnd",{language:n.key}),n},ri=0,yi=i.length;yi>ri;ri++)ut[i[ri]]=dt(i[ri]).then(vi);return g}]}]);angular.module("pascalprecht.translate").factory("$translateDefaultInterpolation",["$interpolate",function(n){var u,t={},f="default",i=null,r={escaped:function(n){var i={};for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(i[t]=angular.isNumber(n[t])?n[t]:angular.element("<div><\/div>").text(n[t]).html());return i}},e=function(n){return angular.isFunction(r[i])?r[i](n):n};return t.setLocale=function(n){u=n},t.getInterpolationIdentifier=function(){return f},t.useSanitizeValueStrategy=function(n){return i=n,this},t.interpolate=function(t,r){return i&&(r=e(r)),n(t)(r||{})},t}]);angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY");angular.module("pascalprecht.translate").directive("translate",["$translate","$q","$interpolate","$compile","$parse","$rootScope",function(n,t,i,r,u,f){var e=function(){return this.replace(/^\s+|\s+$/g,"")};return{restrict:"AE",scope:!0,priority:n.directivePriority(),compile:function(t,o){var s=o.translateValues?o.translateValues:void 0,h=o.translateInterpolation?o.translateInterpolation:void 0,c=t[0].outerHTML.match(/translate-value-+/i),l="^(.*)("+i.startSymbol()+".*"+i.endSymbol()+")(.*)",a="^(.*)"+i.startSymbol()+"(.*)"+i.endSymbol()+"(.*)";return function(t,v,y){var d,tt,k,it;t.interpolateParams={};t.preText="";t.postText="";var p={},b=function(n){var r,u;(angular.isFunction(b._unwatchOld)&&(b._unwatchOld(),b._unwatchOld=void 0),angular.equals(n,"")||!angular.isDefined(n))?(r=e.apply(v.text()).match(l),angular.isArray(r)?(t.preText=r[1],t.postText=r[3],p.translate=i(r[2])(t.$parent),u=v.text().match(a),angular.isArray(u)&&u[2]&&u[2].length&&(b._unwatchOld=t.$watch(u[2],function(n){p.translate=n;w()}))):p.translate=v.text().replace(/^\s+|\s+$/g,"")):p.translate=n;w()},rt=function(n){y.$observe(n,function(t){p[n]=t;w()})},nt=!0;y.$observe("translate",function(n){"undefined"==typeof n?b(""):""===n&&nt||(p.translate=n,w());nt=!1});for(d in y)y.hasOwnProperty(d)&&"translateAttr"===d.substr(0,13)&&rt(d);if(y.$observe("translateDefault",function(n){t.defaultText=n}),s&&y.$observe("translateValues",function(n){n&&t.$parent.$watch(function(){angular.extend(t.interpolateParams,u(n)(t.$parent))})}),c){tt=function(n){y.$observe(n,function(i){var r=angular.lowercase(n.substr(14,1))+n.substr(15);t.interpolateParams[r]=i})};for(k in y)Object.prototype.hasOwnProperty.call(y,k)&&"translateValue"===k.substr(0,14)&&"translateValues"!==k&&tt(k)}var w=function(){for(var n in p)p.hasOwnProperty(n)&&ut(n,p[n],t,t.interpolateParams,t.defaultText)},ut=function(t,i,r,u,f){i?n(i,u,h,f).then(function(n){g(n,r,!0,t)},function(n){g(n,r,!1,t)}):g(i,r,!1,t)},g=function(t,i,u,f){var s;if("translate"===f){u||"undefined"==typeof i.defaultText||(t=i.defaultText);v.html(i.preText+t+i.postText);var h=n.isPostCompilingEnabled(),e="undefined"!=typeof o.translateCompile,c=e&&"false"!==o.translateCompile;(h&&!e||c)&&r(v.contents())(i)}else u||"undefined"==typeof i.defaultText||(t=i.defaultText),s=y.$attr[f].substr(15),v.attr(s,t)};t.$watch("interpolateParams",w,!0);it=f.$on("$translateChangeSuccess",w);v.text().length&&b("");w();t.$on("$destroy",it)}}}}]);angular.module("pascalprecht.translate").directive("translateCloak",["$rootScope","$translate",function(n,t){return{compile:function(i){var r=function(){i.addClass(t.cloakClassName())},u=function(){i.removeClass(t.cloakClassName())},f=n.$on("$translateChangeEnd",function(){u();f();f=null});return r(),function(n,i,f){f.translateCloak&&f.translateCloak.length&&f.$observe("translateCloak",function(n){t(n).then(u,r)})}}}}]);angular.module("pascalprecht.translate").filter("translate",["$parse","$translate",function(n,t){var i=function(i,r,u){return angular.isObject(r)||(r=n(r)(this)),t.instant(i,r,u)};return i.$stateful=!0,i}]);!function(n,t){"function"==typeof define&&define.amd?define([],function(){return t()}):"object"==typeof exports?module.exports=t():t()}(this,function(){function n(n,t){"use strict";return function(i){if(!(i&&(angular.isArray(i.files)||angular.isString(i.prefix)&&angular.isString(i.suffix))))throw new Error("Couldn't load static files, no files and prefix or suffix specified!");i.files||(i.files=[{prefix:i.prefix,suffix:i.suffix}]);for(var f=function(r){if(!r||!angular.isString(r.prefix)||!angular.isString(r.suffix))throw new Error("Couldn't load static file, no prefix or suffix specified!");var u=[r.prefix,i.key,r.suffix].join("");return angular.isObject(i.fileMap)&&i.fileMap[u]&&(u=i.fileMap[u]),t(angular.extend({url:u,method:"GET"},i.$http)).then(function(n){return n.data},function(){return n.reject(i.key)})},u=[],e=i.files.length,r=0;r<e;r++)u.push(f({prefix:i.files[r].prefix,key:i.key,suffix:i.files[r].suffix}));return n.all(u).then(function(n){for(var i,u=n.length,r={},t=0;t<u;t++)for(i in n[t])r[i]=n[t][i];return r})}}return n.$inject=["$q","$http"],angular.module("pascalprecht.translate").factory("$translateStaticFilesLoader",n),n.displayName="$translateStaticFilesLoader","pascalprecht.translate"});angular.module("ghiscoding.validation",["pascalprecht.translate"]).directive("validation",["$q","$timeout","ValidationCommon",function(n,t,i){return{restrict:"A",require:"ngModel",link:function(r,u,f,e){function v(i,f){var a=n.defer(),h=!1,v="undefined"!=typeof f?f:o.typingLimit,l=o.getFormElementByName(e.$name);if(Array.isArray(i)){if(k=[],s="",v=0,i.length>0)return"function"==typeof l.ctrl.$setTouched&&l.ctrl.$setTouched(),ft(i,typeof i);v=0}return i&&i.badInput?tt():(o.validate(i,!1),o.isFieldRequired()||ut||""!==i&&null!==i&&"undefined"!=typeof i?(l&&(l.isValidationCancelled=!1),(i||o.isFieldRequired()||ut)&&e.$setValidity("validation",!1),"SELECT"===u.prop("tagName").toUpperCase()?(h=o.validate(i,!0),e.$setValidity("validation",h),a.resolve({isFieldValid:h,formElmObj:l,value:i}),a.promise):("undefined"!=typeof i&&(0===f?(h=o.validate(i,!0),r.$evalAsync(e.$setValidity("validation",h)),a.resolve({isFieldValid:h,formElmObj:l,value:i}),t.cancel(c)):(o.updateErrorMsg(""),t.cancel(c),c=t(function(){h=o.validate(i,!0);r.$evalAsync(e.$setValidity("validation",h));a.resolve({isFieldValid:h,formElmObj:l,value:i})},v))),a.promise)):(p(),a.resolve({isFieldValid:!0,formElmObj:l,value:i}),a.promise))}function d(n,t,i){var r=v(n,0);r&&"function"==typeof r.then&&(k.push(r),parseInt(t)===i-1&&k.forEach(function(n){n.then(function(n){switch(ot){case"all":n.isFieldValid===!1&&n.formElmObj.translatePromise.then(function(t){s.length>0&&rt.displayOnlyLastErrorMsg?s="["+n.value+"] :: "+(n.formElmObj.validator&&n.formElmObj.validator.params?String.format(t,n.formElmObj.validator.params):t):s+=" ["+n.value+"] :: "+(n.formElmObj.validator&&n.formElmObj.validator.params?String.format(t,n.formElmObj.validator.params):t);o.updateErrorMsg(s,{isValid:!1});o.addToValidationSummary(n.formElmObj,s)});break;case"one":default:n.isFieldValid===!0&&(e.$setValidity("validation",!0),p())}})}))}function y(n){var t=o.getFormElementByName(e.$name),r="undefined"!=typeof e.$modelValue?e.$modelValue:n.target.value,i;t&&t.hasOwnProperty("isValidationCancelled")?(i=v(r,0),h&&o.runValidationCallbackOnPromise(i,h)):e.$setValidity("validation",!0)}function ft(n,t){var f=n.length,i,r,u;if("string"===t)for(i in n)d(n[i],i,f);else if("object"===t)for(i in n)if(n.hasOwnProperty(i)){r=n[i];for(u in r)if(r.hasOwnProperty(u)){if(a&&u!==a)continue;d(r[u],i,f)}}}function g(){p();o.removeFromValidationSummary(w);var n=o.arrayFindObject(l,"elmName",e.$name);n&&"function"==typeof n.watcherHandler&&(n.watcherHandler(),l.shift())}function p(){var n=o.getFormElementByName(e.$name);n&&(n.isValidationCancelled=!0);t.cancel(c);o.updateErrorMsg("");e.$setValidity("validation",!0);b()}function nt(){return r.$watch(function(){var n=e.$modelValue,t,i;return et()?{badInput:!0}:a&&Array.isArray(n)&&0===n.length&&Object.keys(n).length>0?(t=[],i={},i[a]=n[a],t.push(i),t):n},function(n){if(n&&n.badInput)return b(),tt();var t=v(n);h&&o.runValidationCallbackOnPromise(t,h)},!0)}function tt(){t.cancel(c);var n=o.getFormElementByName(e.$name);o.updateErrorMsg("INVALID_KEY_CHAR",{isValid:!1,translate:!0});o.addToValidationSummary(n,"INVALID_KEY_CHAR",!0)}function et(){return!!u.prop("validity")&&u.prop("validity").badInput===!0}function it(){var t=e.$modelValue||"",n;Array.isArray(t)||e.$setValidity("validation",o.validate(t,!1));n=o.getFormElementByName(e.$name);n&&(n.isValidationCancelled=!1);b();u.bind("blur",y)}function b(){"function"==typeof y&&u.unbind("blur",y)}var c,o=new i(r,u,f,e),s="",k=[],l=[],rt=o.getGlobalOptions(),w=f.name,h=f.hasOwnProperty("validationCallback")?f.validationCallback:null,ut=f.hasOwnProperty("validateOnEmpty")?o.parseBool(f.validateOnEmpty):!!rt.validateOnEmpty,ot=f.hasOwnProperty("validArrayRequireHowMany")?f.validArrayRequireHowMany:"one",a=f.hasOwnProperty("validationArrayObjprop")?f.validationArrayObjprop:null;l.push({elmName:w,watcherHandler:nt()});f.$observe("disabled",function(n){var t=""===n||("boolean"==typeof n?n:"undefined"!=typeof n&&r.$eval(n));t===!0?(p(),o.removeFromValidationSummary(w)):it()});u.on("$destroy",function(){g()});r.$watch(function(){return u.attr("validation")},function(n){if("undefined"==typeof n||""===n)g();else{o.defineValidation();it();var t=o.arrayFindObject(l,"elmName",e.$name);t||l.push({elmName:w,watcherHandler:nt()})}});u.bind("blur",y);r.$on("angularValidation.revalidate",function(n,t){var r,i,u;t==e.$name&&(e.revalidateCalled=!0,r=e.$modelValue,i=o.getFormElementByName(e.$name),i&&i.hasOwnProperty("isValidationCancelled")?(u=v(r),h&&o.runValidationCallbackOnPromise(u,h)):e.$setValidity("validation",!0))})}}}]);angular.module("ghiscoding.validation").factory("ValidationCommon",["$rootScope","$timeout","$translate","ValidationRules",function(n,t,i,r){function y(n,t,r){var y,a,s,v;if("undefined"!=typeof n&&null!=n){var h=n.ctrl&&n.ctrl.$name?n.ctrl.$name:n.attrs&&n.attrs.name?n.attrs.name:n.elm.attr("name"),f=g(h,n),o=l(e,"field",h);return o>=0&&""===t?e.splice(o,1):""!==t&&(r&&(t=i.instant(t)),y=n.attrs&&n.friendlyName?i.instant(n.friendlyName):"",a={field:h,friendlyName:y,message:t,formName:f?f.$name:null},o>=0?e[o]=a:e.push(a)),(n.scope.$validationSummary=e,f&&(f.$validationSummary=c(e,"formName",f.$name)),u&&u.controllerAs&&(u.controllerAs.$validationSummary=e,f&&f.$name))&&(s=f.$name.indexOf(".")>=0?f.$name.split(".")[1]:f.$name,v=u.controllerAs&&u.controllerAs[s]?u.controllerAs[s]:"undefined"!=typeof n.elm.controller()?n.elm.controller()[s]:null,v&&(v.$validationSummary=c(e,"formName",f.$name))),e}}function st(){var u=this,o={},n,t,s,e,f,y;if(u.validators=[],u=dt(u),n=u.validatorAttrs.rules||u.validatorAttrs.validation||"",n.indexOf("pattern=/")>=0){if(t=n.match(/pattern=(\/(?:(?!:alt).)*\/[igm]*)(:alt=(.*))?/),!t||t.length<3)throw'Regex validator within the validation needs to be define with an opening "/" and a closing "/", please review your validator.';var l=t[1],a=t[2]?t[2].replace(/\|(.*)/,""):"",v=l.match(new RegExp("^/(.*?)/([gimy]*)$")),p=new RegExp(v[1],v[2]);o={altMsg:a,message:a.replace(/:alt=/,""),pattern:p};n=n.replace("pattern="+l,"pattern")}else if(n.indexOf("regex:")>=0){if(t=n.match("regex:(.*?):regex"),t.length<2)throw'Regex validator within the validation needs to be define with an opening "regex:" and a closing ":regex", please review your validator.';s=t[1].split(":=");o={message:s[0],pattern:s[1]};n=n.replace(t[0],"regex:")}if(e=n.split("|"),e)for(u.bFieldRequired=n.indexOf("required")>=0,f=0,y=e.length;f<y;f++){var h=e[f].indexOf("alt="),c=h>=0,i=[];c?(i=e[f].substring(0,h-1).split(":"),i.push(e[f].substring(h))):i=e[f].split(":");u.validators[f]=r.getElementValidators({altText:c===!0?2===i.length?i[1]:i[2]:"",customRegEx:o,rule:i[0],ruleParams:c&&2===i.length?null:i[1]})}return u}function b(n){return it(o,"fieldName",n)}function ht(n){return n?c(o,"formName",n):o}function ct(){return u}function lt(n,t,i,r){this.scope=n;this.elm=t;this.ctrl=r;this.validatorAttrs=i;tt(t,i,r,n);this.defineValidation()}function at(){var n=this;return n.bFieldRequired}function k(n,t){var r={};for(var i in n)r[i]=n[i];for(i in t)r[i]=t[i];return r}function vt(n){var t=l(o,"fieldName",n);t>=0&&o.splice(t,1)}function yt(n,t){var o=this,i=g(n,o),s=t||e,r=l(s,"field",n),f;return(r>=0&&s.splice(r,1),r=l(e,"field",n),r>=0&&e.splice(r,1),o.scope.$validationSummary=e,i&&(i.$validationSummary=c(e,"formName",i.$name)),u&&u.controllerAs&&(u.controllerAs.$validationSummary=e,i))&&(f=i.$name.indexOf(".")>=0?i.$name.split(".")[1]:i.$name,u.controllerAs[f]&&(u.controllerAs[f].$validationSummary=c(e,"formName",i.$name))),e}function d(n,t){var i,r;return/\({1}.*\){1}/gi.test(t)?i=n.scope.$eval(t):(r=ut(n.scope,t,"."),"function"==typeof r&&(i=r())),i}function pt(n,t){var i=this;"function"==typeof n.then&&n.then(function(){d(i,t)})}function wt(n){u.displayOnlyLastErrorMsg=n}function bt(n){var t=this;return u=k(u,n),t}function nt(n,t){var r=this,e,s,l,o,h,f,c,a,v;if(t&&t.obj&&(r=t.obj,r.validatorAttrs=t.obj.attrs),e=t&&t.elm?t.elm:r.elm,s=e&&e.attr("name")?e.attr("name"):null,"undefined"==typeof s||null===s){l=e?e.attr("ng-model"):"unknown";throw'Angular-Validation Service requires you to have a (name="") attribute on the element to validate... Your element is: ng-model="'+l+'"';}o=t&&t.translate?i.instant(n):n;o=o.trim();h=s.replace(/[|&;$%@"<>()+,\[\]\{\}]/g,"").replace(/\./g,"-");f=null;r.validatorAttrs&&r.validatorAttrs.hasOwnProperty("validationErrorTo")&&(c=r.validatorAttrs.validationErrorTo.charAt(0),a="."===c||"#"===c?r.validatorAttrs.validationErrorTo:"#"+r.validatorAttrs.validationErrorTo,f=angular.element(document.querySelector(a)));f&&0!==f.length||(f=angular.element(document.querySelector(".validation-"+h)));v=!(!t||!t.isSubmitted)&&t.isSubmitted;!u.hideErrorUnderInputs&&t&&!t.isValid&&(v||r.ctrl.$dirty||r.ctrl.$touched||r.ctrl.revalidateCalled)?(f.length>0?f.html(o):e.after('<div class="validation validation-'+h+' text-danger">'+o+"<\/div>"),r.ctrl.isErrorMessageVisible=!0):(f.html(""),r.ctrl.isErrorMessageVisible=void 0)}function kt(n,t){var e,r=this,f=!0,h=!0,p=0,o={message:""};"undefined"==typeof n&&(n="");for(var d=r.ctrl&&r.ctrl.$name?r.ctrl.$name:r.attrs&&r.attrs.name?r.attrs.name:r.elm.attr("name"),c=b(d),k=r.validatorAttrs.rules||r.validatorAttrs.validation,v=0,g=r.validators.length;v<g;v++){e=r.validators[v];"autoDetect"===e.type&&(e=ci(e,n));var l=r.elm.prop("disabled"),a=r.attrs?r.attrs.ngDisabled:r.validatorAttrs.ngDisabled,nt=""===l||("boolean"==typeof l?l:"undefined"!=typeof l&&r.scope.$eval(l)),tt=""===a||("boolean"==typeof a?a:"undefined"!=typeof a&&r.scope.$eval(a));switch(e.type){case"conditionalDate":f=ui(n,e,k);break;case"conditionalNumber":f=fi(n,e);break;case"javascript":f=ei(n,e,r,c,t,o);break;case"matching":f=oi(n,e,r,o);break;case"remote":f=si(n,e,r,c,t,o);break;default:f=hi(n,e,k,r)}if((!r.bFieldRequired&&!n&&!w||nt||tt)&&(f=!0),f||(h=!1,function(n,f,e){var c=e.message,l=u.errorMessageSeparator||" ",a;e.altText&&e.altText.length>0&&(c=e.altText.replace("alt=",""));a=i(c);n.translatePromise=a;n.validator=e;a.then(function(i){o.message.length>0&&u.displayOnlyLastErrorMsg?o.message=l+(e&&e.params?String.format(i,e.params):i):o.message+=l+(e&&e.params?String.format(i,e.params):i);s(r,n,o.message,h,t)})["catch"](function(i){if(!(e.altText&&e.altText.length>0))throw String.format("Could not translate: '{0}'. Please check your Angular-Translate $translateProvider configuration.",i);o.message.length>0&&u.displayOnlyLastErrorMsg?o.message=l+c:o.message+=l+c;s(r,n,o.message,h,t)})}(c,f,e)),f&&p++,r.validRequireHowMany==p&&f){h=!0;break}}return f&&(y(r,""),r.updateErrorMsg("",{isValid:f})),c&&(c.isValid=h,h&&(c.message="")),h}function tt(n,t,r,u){var f=t.name?t.name:n.attr("name"),e=g(f,{scope:u}),c=t&&t.friendlyName?i.instant(t.friendlyName):"",s={fieldName:f,friendlyName:c,elm:n,attrs:t,ctrl:r,scope:u,isValid:!1,message:"",formName:e?e.$name:null},h=l(o,"fieldName",n.attr("name"));return h>=0?o[h]=s:o.push(s),o}function s(n,t,i,r,f){i=i.trim();t&&t.isValidationCancelled===!0&&(i="");(u.preValidateValidationSummary||"undefined"==typeof u.preValidateValidationSummary||f)&&y(t,i);(n.validatorAttrs.preValidateFormElements||u.preValidateFormElements)&&(t&&"function"==typeof n.ctrl.$setTouched&&t.ctrl.$setTouched(),n.ctrl.$dirty===!1&&nt(i,{isSubmitted:!0,isValid:r,obj:t}));f&&t&&!t.isValid?n.updateErrorMsg(i,{isValid:r,obj:t}):t&&t.isValid&&y(t,"")}function dt(n){return n.typingLimit=ot,n.validatorAttrs.hasOwnProperty("debounce")?n.typingLimit=parseInt(n.validatorAttrs.debounce,10):n.validatorAttrs.hasOwnProperty("typingLimit")?n.typingLimit=parseInt(n.validatorAttrs.typingLimit,10):u&&u.hasOwnProperty("debounce")&&(n.typingLimit=parseInt(u.debounce,10)),n.validRequireHowMany=n.validatorAttrs.hasOwnProperty("validRequireHowMany")?n.validatorAttrs.validRequireHowMany:u.validRequireHowMany,w=n.validatorAttrs.hasOwnProperty("validateOnEmpty")?ft(n.validatorAttrs.validateOnEmpty):u.validateOnEmpty,n}function it(n,t,i){if(n)for(var r=0;r<n.length;r++)if(n[r][t]===i)return n[r];return null}function c(n,t,i){var u=[],r;if(n)for(r=0;r<n.length;r++)n[r][t]===i&&u.push(n[r]);return u}function l(n,t,i){if(n)for(var r=0;r<n.length;r++)if(n[r][t]===i)return r;return-1}function rt(n,t){var i=n?n.getAttribute("name"):null,r;return n&&i&&(r=u&&u.controllerAs&&i.indexOf(".")>=0?ut(t.scope,i,"."):t.scope[i],r)?("undefined"==typeof r.$name&&(r.$name=i),r):null}function g(n,t){var e,s,i,r,f,h,c;if(u&&u.formName&&(e=document.querySelector('[name="'+u.formName+'"]'),e))return e.$name=u.formName,e;for(var l=document.getElementsByName(n),e=null,o=0;o<l.length;o++)if(i=l[o].form,r=rt(i,t),r)return r;return!i&&(s=document.querySelector('[name="'+n+'"]'),s&&(i=s.closest("form"),r=rt(i,t),r))?r:i&&(f=i?i.getAttribute("name"):null,f)?(h={$name:f,specialNote:"Created by Angular-Validation for Isolated Scope usage"},u&&u.controllerAs&&f.indexOf(".")>=0)?(c=f.split("."),t.scope[c[0]][c[1]]=h):t.scope[f]=h:null}function gt(n){return!isNaN(parseFloat(n))&&isFinite(n)}function ut(n,t,i){for(var u=i?t.split(i):t,r=0,f=u.length;r<f;r++)n[u[r]]&&(n=n[u[r]]);return n}function ft(n){return"boolean"==typeof n||"number"==typeof n?n===!0||1===n:"string"==typeof n&&(n=n.replace(/^\s+|\s+$/g,"").toLowerCase(),"true"===n||"1"===n||"false"===n||"0"===n)?"true"===n||"1"===n:void 0}function p(n,t){var u="",f="-",i=[],r=[],e="",o="",s="";switch(t.toUpperCase()){case"EURO_LONG":case"EURO-LONG":u=n.substring(0,10);f=n.substring(2,3);i=a(u,f);s=i[0];o=i[1];e=i[2];r=n.length>8?n.substring(9).split(":"):null;break;case"UK":case"EURO":case"EURO_SHORT":case"EURO-SHORT":case"EUROPE":u=n.substring(0,8);f=n.substring(2,3);i=a(u,f);s=i[0];o=i[1];e=parseInt(i[2])<50?"20"+i[2]:"19"+i[2];r=n.length>8?n.substring(9).split(":"):null;break;case"US_LONG":case"US-LONG":u=n.substring(0,10);f=n.substring(2,3);i=a(u,f);o=i[0];s=i[1];e=i[2];r=n.length>8?n.substring(9).split(":"):null;break;case"US":case"US_SHORT":case"US-SHORT":u=n.substring(0,8);f=n.substring(2,3);i=a(u,f);o=i[0];s=i[1];e=parseInt(i[2])<50?"20"+i[2]:"19"+i[2];r=n.length>8?n.substring(9).split(":"):null;break;case"ISO":default:u=n.substring(0,10);f=n.substring(4,5);i=a(u,f);e=i[0];o=i[1];s=i[2];r=n.length>10?n.substring(11).split(":"):null}var h=r&&3===r.length?r[0]:0,c=r&&3===r.length?r[1]:0,l=r&&3===r.length?r[2]:0;return new Date(e,o-1,s,h,c,l)}function et(n){n&&(u={displayOnlyLastErrorMsg:!1,errorMessageSeparator:" ",hideErrorUnderInputs:!1,preValidateFormElements:!1,preValidateValidationSummary:!0,isolatedScope:null,scope:null,validateOnEmpty:!1,validRequireHowMany:"all",resetGlobalOptionsOnRouteChange:!0},o=[],e=[])}function a(n,t){var i=[];switch(t){case"/":i=n.split("/");break;case".":i=n.split(".");break;case"-":default:i=n.split("-")}return i}function h(n,t,i){var r=!1;switch(n){case"<":r=t<i;break;case"<=":r=t<=i;break;case">":r=t>i;break;case">=":r=t>=i;break;case"!=":case"<>":r=t!=i;break;case"!==":r=t!==i;break;case"=":case"==":r=t==i;break;case"===":r=t===i;break;default:r=!1}return r}function ni(){Element.prototype.closest=function(n){var t,r=(this.document||this.ownerDocument).querySelectorAll(n),i=this;do for(t=r.length;--t>=0&&r.item(t)!==i;);while(t<0&&(i=i.parentElement));return i}}function ti(){return this.replace(/^\s+|\s+$/g,"")}function ii(){var n=Array.isArray(arguments[0])?arguments[0]:arguments;return this.replace(/{(\d+)}/g,function(t,i){return"undefined"!=typeof n[i]?n[i]:t})}function ri(n){var t=Array.isArray(arguments[1])?arguments[1]:Array.prototype.slice.call(arguments,1);return n.replace(/{(\d+)}/g,function(n,i){return"undefined"!=typeof t[i]?t[i]:n})}function ui(n,t,i){var u=!0,e=u=!1,o,r,f,s;if(n instanceof Date?e=!0:(o=new RegExp(t.pattern,t.patternFlag),e=!((!t.pattern||"/\\S+/"===t.pattern.toString()||i&&"required"===t.pattern)&&null===n)&&o.test(n)),e)if(r=t.dateType,f=n instanceof Date?n:p(n,r).getTime(),2==t.params.length){var c=p(t.params[0],r).getTime(),l=p(t.params[1],r).getTime(),a=h(t.condition[0],f,c),v=h(t.condition[1],f,l);u=a&&v}else s=p(t.params[0],r).getTime(),u=h(t.condition,f,s);return u}function fi(n,t){var i=!0,r,u;return 2==t.params.length?(r=h(t.condition[0],parseFloat(n),parseFloat(t.params[0])),u=h(t.condition[1],parseFloat(n),parseFloat(t.params[1])),i=r&&u):i=h(t.condition,parseFloat(n),parseFloat(t.params[0])),i}function ei(n,i,r,u,f,e){var h=!0,a="Custom Javascript Validation requires an error message defined as 'alt=' in your validator or defined in your custom javascript function as { isValid: bool, message: 'your error' }",c="Custom Javascript Validation requires a declared function (in your Controller), please review your code.",l,o;if(n||w){if(l=i.params[0],o=d(r,l),"boolean"==typeof o)h=!!o;else{if("object"!=typeof o)throw c;h=!!o.isValid}if(h===!1?(u.isValid=!1,t(function(){var n=e.message+" ";if(o.message&&(n+=o.message||i.altText)," "===n&&i.altText&&(n+=i.altText)," "===n)throw a;s(r,u,n,!1,f)})):h===!0&&(u.isValid=!0,s(r,u,"",!0,f)),"undefined"==typeof o)throw c;}return h}function oi(n,t,r,f){var a=!0,o=t.params[0],v=r.scope.$eval(o),c=angular.element(document.querySelector('[name="'+o+'"]')),e=t,y=r.ctrl,l=b(r.ctrl.$name);return a=!((!t.pattern||"/\\S+/"===t.pattern.toString()||rules&&"required"===t.pattern)&&null===n)&&h(t.condition,n,v)&&!!n,c&&c.attr("friendly-name")?t.params[1]=c.attr("friendly-name"):t.params.length>1&&(t.params[1]=t.params[1]),r.scope.$watch(o,function(o,c){var a=!((!t.pattern||"/\\S+/"===t.pattern.toString()||rules&&"required"===t.pattern)&&null===n)&&h(t.condition,n,v)&&!!n,p;o!==c&&(a?s(r,l,"",!0,!0):(l.isValid=!1,p=e.message,e.altText&&e.altText.length>0&&(p=e.altText.replace("alt=","")),i(p).then(function(n){var t=u.errorMessageSeparator||" ";f.message=t+(e&&e.params?String.format(n,e.params):n);s(r,l,f.message,a,!0)})),y.$setValidity("validation",a))},!0),a}function si(n,t,i,r,u,f){var e=!0,a="Remote Javascript Validation requires an error message defined as 'alt=' in your validator or defined in your custom remote function as { isValid: bool, message: 'your error' }",c="Remote Validation requires a declared function (in your Controller) which also needs to return a Promise, please review your code.",l,o,h;if(n&&u||w){if(i.ctrl.$processing=!0,l=t.params[0],o=d(i,l),v.length>1)for(;v.length>0;)h=v.pop(),h&&"function"==typeof h.abort&&h.abort();if(v.push(o),!o||"function"!=typeof o.then)throw c;i.ctrl.$setValidity("remote",!1),function(n){o.then(function(t){t=t.data||t;v.pop();i.ctrl.$processing=!1;var o=f.message+" ";if("boolean"==typeof t)e=!!t;else{if("object"!=typeof t)throw c;e=!!t.isValid}if(e===!1){if(r.isValid=!1,o+=t.message||n," "===o)throw a;s(i,r,o,!1,u)}else e===!0&&(r.isValid=!0,i.ctrl.$setValidity("remote",!0),s(i,r,"",!0,u))})}(t.altText)}return e}function hi(n,t,i,r){var e=!0,u=r.attrs?r.attrs.ngDisabled:r.validatorAttrs.ngDisabled,f=r.elm.prop("disabled"),s=""===f||("boolean"==typeof f?f:"undefined"!=typeof f&&r.scope.$eval(f)),h=""===u||("boolean"==typeof u?u:"undefined"!=typeof u&&r.scope.$eval(u)),o;return s||h?e=!0:"string"==typeof n&&""===n&&r.elm.prop("type")&&"NUMBER"===r.elm.prop("type").toUpperCase()?e=!1:(o=new RegExp(t.pattern,t.patternFlag),e=!((!t.pattern||"/\\S+/"===t.pattern.toString()||i&&"required"===t.pattern)&&null===n)&&o.test(n)),e}function ci(n,t){return gt(t)?{condition:n.conditionNum,message:n.messageNum,params:n.params,type:"conditionalNumber"}:{pattern:n.patternLength,message:n.messageLength,params:n.params,type:"regex"}}var ot=1e3,o=[],u={resetGlobalOptionsOnRouteChange:!0},v=[],e=[],w=!1,f;return n.$on("$routeChangeStart",function(){et(u.resetGlobalOptionsOnRouteChange)}),n.$on("$stateChangeStart",function(){et(u.resetGlobalOptionsOnRouteChange)}),f=function(n,t,i,r){this.bFieldRequired=!1;this.validators=[];this.typingLimit=ot;this.scope=n;this.elm=t;this.ctrl=r;this.validatorAttrs=i;this.validateOnEmpty=!1;this.validRequireHowMany="all";n&&n.$validationOptions&&(u=n.$validationOptions);n&&(u.isolatedScope||u.scope)&&(this.scope=u.isolatedScope||u.scope,u=k(n.$validationOptions,u));"undefined"==typeof u.resetGlobalOptionsOnRouteChange&&(u.resetGlobalOptionsOnRouteChange=!0);this.elm&&this.validatorAttrs&&this.ctrl&&this.scope&&(tt(this.elm,this.validatorAttrs,this.ctrl,this.scope),this.defineValidation())},f.prototype.addToValidationSummary=y,f.prototype.arrayFindObject=it,f.prototype.defineValidation=st,f.prototype.getFormElementByName=b,f.prototype.getFormElements=ht,f.prototype.getGlobalOptions=ct,f.prototype.isFieldRequired=at,f.prototype.initialize=lt,f.prototype.mergeObjects=k,f.prototype.parseBool=ft,f.prototype.removeFromValidationSummary=yt,f.prototype.removeFromFormElementObjectList=vt,f.prototype.runValidationCallbackOnPromise=pt,f.prototype.setDisplayOnlyLastErrorMsg=wt,f.prototype.setGlobalOptions=bt,f.prototype.updateErrorMsg=nt,f.prototype.validate=kt,window.Element&&!Element.prototype.closest&&(Element.prototype.closest=ni),String.prototype.trim=ti,String.prototype.format=ii,String.format=ri,f}]);angular.module("ghiscoding.validation").factory("ValidationRules",[function(){function n(n){var e="undefined"!=typeof n.altText?n.altText.replace("alt=",""):null,f=n.hasOwnProperty("customRegEx")?n.customRegEx:null,o=n.hasOwnProperty("rule")?n.rule:null,r=n.hasOwnProperty("ruleParams")?n.ruleParams:null,t={},i,n,u;switch(o){case"accepted":t={pattern:/^(yes|on|1|true)$/i,message:"INVALID_ACCEPTED",type:"regex"};break;case"alpha":t={pattern:/^([a-zа-яàáâãäåąæçćèéêëęœìíïîłńðòóôõöøśùúûñüýÿżźßÞďđ])+$/i,message:"INVALID_ALPHA",type:"regex"};break;case"alphaSpaces":case"alpha_spaces":t={pattern:/^([a-zа-яàáâãäåąæçćèéêëęœìíïîłńðòóôõöøśùúûñüýÿżźßÞďđ\s])+$/i,message:"INVALID_ALPHA_SPACE",type:"regex"};break;case"alphaNum":case"alpha_num":t={pattern:/^([a-zа-яàáâãäåąæçćèéêëęœìíïîłńðòóôõöøśùúûñüýÿżźßÞďđ0-9])+$/i,message:"INVALID_ALPHA_NUM",type:"regex"};break;case"alphaNumSpaces":case"alpha_num_spaces":t={pattern:/^([a-zа-яàáâãäåąæçćèéêëęœìíïîłńðòóôõöøśùúûñüýÿżźßÞďđ0-9\s])+$/i,message:"INVALID_ALPHA_NUM_SPACE",type:"regex"};break;case"alphaDash":case"alpha_dash":t={pattern:/^([a-zа-яàáâãäåąæçćèéêëęœìíïîłńðòóôõöøśùúûñüýÿżźßÞďđ0-9_-])+$/i,message:"INVALID_ALPHA_DASH",type:"regex"};break;case"alphaDashSpaces":case"alpha_dash_spaces":t={pattern:/^([a-zа-яàáâãäåąæçćèéêëęœìíïîłńðòóôõöøśùúûñüýÿżźßÞďđ0-9\s_-])+$/i,message:"INVALID_ALPHA_DASH_SPACE",type:"regex"};break;case"between":case"range":if(i=r.split(","),2!==i.length)throw"This validation must include exactly 2 params separated by a comma (,) ex.: between:1,5";t={patternLength:"^(.|[\\r\\n]){"+i[0]+","+i[1]+"}$",messageLength:"INVALID_BETWEEN_CHAR",conditionNum:[">=","<="],messageNum:"INVALID_BETWEEN_NUM",params:[i[0],i[1]],type:"autoDetect"};break;case"betweenLen":case"between_len":case"stringLen":case"string_len":case"stringLength":case"string_length":if(i=r.split(","),2!==i.length)throw"This validation must include exactly 2 params separated by a comma (,) ex.: between_len:1,5";t={pattern:"^(.|[\\r\\n]){"+i[0]+","+i[1]+"}$",message:"INVALID_BETWEEN_CHAR",params:[i[0],i[1]],type:"regex"};break;case"betweenNum":case"between_num":if(i=r.split(","),2!==i.length)throw"This validation must include exactly 2 params separated by a comma (,) ex.: between_num:1,5";t={condition:[">=","<="],message:"INVALID_BETWEEN_NUM",params:[i[0],i[1]],type:"conditionalNumber"};break;case"boolean":t={pattern:/^(true|false|0|1)$/i,message:"INVALID_BOOLEAN",type:"regex"};break;case"checked":t={pattern:/^true$/i,message:"INVALID_CHECKBOX_SELECTED",type:"regex"};break;case"creditCard":case"credit_card":t={pattern:/^3(?:[47]\d([ -]?)\d{4}(?:\1\d{4}){2}|0[0-5]\d{11}|[68]\d{12})$|^4(?:\d\d\d)?([ -]?)\d{4}(?:\2\d{4}){2}$|^6011([ -]?)\d{4}(?:\3\d{4}){2}$|^5[1-5]\d\d([ -]?)\d{4}(?:\4\d{4}){2}$|^2014\d{11}$|^2149\d{11}$|^2131\d{11}$|^1800\d{11}$|^3\d{15}$/,message:"INVALID_CREDIT_CARD",type:"regex"};break;case"custom":case"javascript":t={message:"",params:[r],type:"javascript"};break;case"dateEuro":case"date_euro":t={pattern:/^(?:(?:31(\/|-|\.)(?:0[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)02\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])?00))))$|^(?:0[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/,message:"INVALID_DATE_EURO",type:"regex"};break;case"dateEuroBetween":case"date_euro_between":case"betweenDateEuro":case"between_date_euro":if(i=r.split(","),2!==i.length)throw"This validation must include exactly 2 params separated by a comma (,) ex.: between_date_euro:01-01-1990,31-12-2015";t={condition:[">=","<="],dateType:"EURO_LONG",params:[i[0],i[1]],pattern:/^(?:(?:31(\/|-|\.)(?:0[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)02\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])?00))))$|^(?:0[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/,message:"INVALID_DATE_EURO_BETWEEN",type:"conditionalDate"};break;case"dateEuroMax":case"date_euro_max":case"maxDateEuro":case"max_date_euro":t={condition:"<=",dateType:"EURO_LONG",params:[r],pattern:/^(?:(?:31(\/|-|\.)(?:0[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)02\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])?00))))$|^(?:0[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/,message:"INVALID_DATE_EURO_MAX",type:"conditionalDate"};break;case"dateEuroMin":case"date_euro_min":case"minDateEuro":case"min_date_euro":t={condition:">=",dateType:"EURO_LONG",params:[r],pattern:/^(?:(?:31(\/|-|\.)(?:0[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)02\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])?00))))$|^(?:0[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/,message:"INVALID_DATE_EURO_MIN",type:"conditionalDate"};break;case"dateEuroLong":case"date_euro_long":t={pattern:/^(?:(?:31(\/|-|\.)(?:0[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{4})$|^(?:29(\/|-|\.)02\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{4})$/,message:"INVALID_DATE_EURO_LONG",type:"regex"};break;case"dateEuroLongBetween":case"date_euro_long_between":case"betweenDateEuroLong":case"between_date_euro_long":if(i=r.split(","),2!==i.length)throw"This validation must include exactly 2 params separated by a comma (,) ex.: between_date_euro_long:01-01-1990,31-12-2015";t={condition:[">=","<="],dateType:"EURO_LONG",params:[i[0],i[1]],pattern:/^(?:(?:31(\/|-|\.)(?:0[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{4})$|^(?:29(\/|-|\.)02\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{4})$/,message:"INVALID_DATE_EURO_LONG_BETWEEN",type:"conditionalDate"};break;case"dateEuroLongMax":case"date_euro_long_max":case"maxDateEuroLong":case"max_date_euro_long":t={condition:"<=",dateType:"EURO_LONG",params:[r],pattern:/^(?:(?:31(\/|-|\.)(?:0[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{4})$|^(?:29(\/|-|\.)02\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{4})$/,message:"INVALID_DATE_EURO_LONG_MAX",type:"conditionalDate"};break;case"dateEuroLongMin":case"date_euro_long_min":case"minDateEuroLong":case"min_date_euro_long":t={condition:">=",dateType:"EURO_LONG",params:[r],pattern:/^(?:(?:31(\/|-|\.)(?:0[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{4})$|^(?:29(\/|-|\.)02\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{4})$/,message:"INVALID_DATE_EURO_LONG_MIN",type:"conditionalDate"};break;case"dateEuroShort":case"date_euro_short":t={pattern:/^(0[1-9]|[12][0-9]|3[01])[-\/\.](0[1-9]|1[012])[-\/\.]\d\d$/,message:"INVALID_DATE_EURO_SHORT",type:"regex"};break;case"dateEuroShortBetween":case"date_euro_short_between":case"betweenDateEuroShort":case"between_date_euro_short":if(i=r.split(","),2!==i.length)throw"This validation must include exactly 2 params separated by a comma (,) ex.: between_date_euro_short:01-01-90,31-12-15";t={condition:[">=","<="],dateType:"EURO_SHORT",params:[i[0],i[1]],pattern:/^(0[1-9]|[12][0-9]|3[01])[-\/\.](0[1-9]|1[012])[-\/\.]\d\d$/,message:"INVALID_DATE_EURO_SHORT_BETWEEN",type:"conditionalDate"};break;case"dateEuroShortMax":case"date_euro_short_max":case"maxDateEuroShort":case"max_date_euro_short":t={condition:"<=",dateType:"EURO_SHORT",params:[r],pattern:/^(0[1-9]|[12][0-9]|3[01])[-\/\.](0[1-9]|1[012])[-\/\.]\d\d$/,message:"INVALID_DATE_EURO_SHORT_MAX",type:"conditionalDate"};break;case"dateEuroShortMin":case"date_euro_short_min":case"minDateEuroShort":case"min_date_euro_short":t={condition:">=",dateType:"EURO_SHORT",params:[r],pattern:/^(0[1-9]|[12][0-9]|3[01])[-\/\.](0[1-9]|1[012])[-\/\.]\d\d$/,message:"INVALID_DATE_EURO_SHORT_MIN",type:"conditionalDate"};break;case"dateIso":case"date_iso":t={pattern:/^(?=\d)(?:(?!(?:1582(?:\-)10(?:\-)(?:0?[5-9]|1[0-4]))|(?:1752(?:\-)0?9(?:\-)(?:0?[3-9]|1[0-3])))(?=(?:(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:\d\d)(?:[02468][048]|[13579][26]))\D0?2\D29)|(?:\d{4}\D(?!(?:0?[2469]|11)\D31)(?!0?2(?:\-)(?:29|30))))(\d{4})(\-)(0{1}\d|1[012])\2((?!00)[012]{1}\d|3[01])(?:$|(?=\d)))?((?:(?:0?[1-9]|1[012])(?::[0-5]\d){0,2})|(?:[01]\d|2[0-3])(?::[0-5]\d){2})?$/,message:"INVALID_DATE_ISO",type:"regex"};break;case"dateIsoBetween":case"date_iso_between":case"betweenDateIso":case"between_date_iso":if(i=r.split(","),2!==i.length)throw"This validation must include exactly 2 params separated by a comma (,) ex.: between_date_iso:1990-01-01,2000-12-31";t={condition:[">=","<="],dateType:"ISO",params:[i[0],i[1]],pattern:/^(?=\d)(?:(?!(?:1582(?:\-)10(?:\-)(?:0?[5-9]|1[0-4]))|(?:1752(?:\-)0?9(?:\-)(?:0?[3-9]|1[0-3])))(?=(?:(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:\d\d)(?:[02468][048]|[13579][26]))\D0?2\D29)|(?:\d{4}\D(?!(?:0?[2469]|11)\D31)(?!0?2(?:\-)(?:29|30))))(\d{4})(\-)(0{1}\d|1[012])\2((?!00)[012]{1}\d|3[01])(?:$|(?=\d)))?((?:(?:0?[1-9]|1[012])(?::[0-5]\d){0,2})|(?:[01]\d|2[0-3])(?::[0-5]\d){2})?$/,message:"INVALID_DATE_ISO_BETWEEN",type:"conditionalDate"};break;case"dateIsoMax":case"date_iso_max":case"maxDateIso":case"max_date_iso":t={condition:"<=",dateType:"ISO",params:[r],pattern:/^(?=\d)(?:(?!(?:1582(?:\-)10(?:\-)(?:0?[5-9]|1[0-4]))|(?:1752(?:\-)0?9(?:\-)(?:0?[3-9]|1[0-3])))(?=(?:(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:\d\d)(?:[02468][048]|[13579][26]))\D0?2\D29)|(?:\d{4}\D(?!(?:0?[2469]|11)\D31)(?!0?2(?:\-)(?:29|30))))(\d{4})(\-)(0{1}\d|1[012])\2((?!00)[012]{1}\d|3[01])(?:$|(?=\d)))?((?:(?:0?[1-9]|1[012])(?::[0-5]\d){0,2})|(?:[01]\d|2[0-3])(?::[0-5]\d){2})?$/,message:"INVALID_DATE_ISO_MAX",type:"conditionalDate"};break;case"dateIsoMin":case"date_iso_min":case"minDateIso":case"min_date_iso":t={condition:">=",dateType:"ISO",params:[r],pattern:/^(?=\d)(?:(?!(?:1582(?:\-)10(?:\-)(?:0?[5-9]|1[0-4]))|(?:1752(?:\-)0?9(?:\-)(?:0?[3-9]|1[0-3])))(?=(?:(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:\d\d)(?:[02468][048]|[13579][26]))\D0?2\D29)|(?:\d{4}\D(?!(?:0?[2469]|11)\D31)(?!0?2(?:\-)(?:29|30))))(\d{4})(\-)(0{1}\d|1[012])\2((?!00)[012]{1}\d|3[01])(?:$|(?=\d)))?((?:(?:0?[1-9]|1[012])(?::[0-5]\d){0,2})|(?:[01]\d|2[0-3])(?::[0-5]\d){2})?$/,message:"INVALID_DATE_ISO_MIN",type:"conditionalDate"};break;case"dateUs":case"date_us":t={pattern:/^(?:(?:(?:0[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:02(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])?00))))$|^(?:(?:0[1-9])|(?:1[0-2]))(\/|-|\.)(?:0[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/,message:"INVALID_DATE_US",type:"regex"};break;case"dateUsBetween":case"date_us_between":case"betweenDateUs":case"between_date_us":if(i=r.split(","),2!==i.length)throw"This validation must include exactly 2 params separated by a comma (,) ex.: between_date_us:01/01/1990,12/31/2015";t={condition:[">=","<="],dateType:"US_LONG",params:[i[0],i[1]],pattern:/^(?:(?:(?:0[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:02(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])?00))))$|^(?:(?:0[1-9])|(?:1[0-2]))(\/|-|\.)(?:0[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/,message:"INVALID_DATE_US_BETWEEN",type:"conditionalDate"};break;case"dateUsMax":case"date_us_max":case"maxDateUs":case"max_date_us":t={condition:"<=",dateType:"US_LONG",params:[r],pattern:/^(?:(?:(?:0[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:02(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])?00))))$|^(?:(?:0[1-9])|(?:1[0-2]))(\/|-|\.)(?:0[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/,message:"INVALID_DATE_US_MAX",type:"conditionalDate"};break;case"dateUsMin":case"date_us_min":case"minDateUs":case"min_date_us":t={condition:">=",dateType:"US_LONG",params:[r],pattern:/^(?:(?:(?:0[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:02(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])?00))))$|^(?:(?:0[1-9])|(?:1[0-2]))(\/|-|\.)(?:0[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/,message:"INVALID_DATE_US_MIN",type:"conditionalDate"};break;case"dateUsLong":case"date_us_long":t={pattern:/^(?:(?:(?:0[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:02(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0[1-9])|(?:1[0-2]))(\/|-|\.)(?:0[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{4})$/,message:"INVALID_DATE_US_LONG",type:"regex"};break;case"dateUsLongBetween":case"date_us_long_between":case"betweenDateUsLong":case"between_date_us_long":if(i=r.split(","),2!==i.length)throw"This validation must include exactly 2 params separated by a comma (,) ex.: between_date_us_long:01/01/1990,12/31/2015";t={condition:[">=","<="],dateType:"US_LONG",params:[i[0],i[1]],pattern:/^(?:(?:(?:0[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:02(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0[1-9])|(?:1[0-2]))(\/|-|\.)(?:0[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{4})$/,message:"INVALID_DATE_US_LONG_BETWEEN",type:"conditionalDate"};break;case"dateUsLongMax":case"date_us_long_max":case"maxDateUsLong":case"max_date_us_long":t={condition:"<=",dateType:"US_LONG",params:[r],pattern:/^(?:(?:(?:0[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:02(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0[1-9])|(?:1[0-2]))(\/|-|\.)(?:0[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{4})$/,message:"INVALID_DATE_US_LONG_MAX",type:"conditionalDate"};break;case"dateUsLongMin":case"date_us_long_min":case"minDateUsLong":case"min_date_us_long":t={condition:">=",dateType:"US_LONG",params:[r],pattern:/^(?:(?:(?:0[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:02(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0[1-9])|(?:1[0-2]))(\/|-|\.)(?:0[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{4})$/,message:"INVALID_DATE_US_LONG_MIN",type:"conditionalDate"};break;case"dateUsShort":case"date_us_short":t={pattern:/^(0[1-9]|1[012])[-\/\.](0[1-9]|[12][0-9]|3[01])[-\/\.]\d\d$/,message:"INVALID_DATE_US_SHORT",type:"regex"};break;case"dateUsShortBetween":case"date_us_short_between":case"betweenDateUsShort":case"between_date_us_short":if(i=r.split(","),2!==i.length)throw"This validation must include exactly 2 params separated by a comma (,) ex.: between_date_us_short:01/01/90,12/31/15";t={condition:[">=","<="],dateType:"US_SHORT",params:[i[0],i[1]],pattern:/^(0[1-9]|1[012])[-\/\.](0[1-9]|[12][0-9]|3[01])[-\/\.]\d\d$/,message:"INVALID_DATE_US_SHORT_BETWEEN",type:"conditionalDate"};break;case"dateUsShortMax":case"date_us_short_max":case"maxDateUsShort":case"max_date_us_short":t={condition:"<=",dateType:"US_SHORT",params:[r],pattern:/^(0[1-9]|1[012])[-\/\.](0[1-9]|[12][0-9]|3[01])[-\/\.]\d\d$/,message:"INVALID_DATE_US_SHORT_MAX",type:"conditionalDate"};break;case"dateUsShortMin":case"date_us_short_min":case"minDateUsShort":case"min_date_us_short":t={condition:">=",dateType:"US_SHORT",params:[r],pattern:/^(0[1-9]|1[012])[-\/\.](0[1-9]|[12][0-9]|3[01])[-\/\.]\d\d$/,message:"INVALID_DATE_US_SHORT_MIN",type:"conditionalDate"};break;case"different":case"differentInput":case"different_input":n=r.split(",");t={condition:"!=",message:"INVALID_INPUT_DIFFERENT",params:n,type:"matching"};break;case"digits":t={pattern:"^\\d{"+r+"}$",message:"INVALID_DIGITS",params:[r],type:"regex"};break;case"digitsBetween":case"digits_between":if(i=r.split(","),2!==i.length)throw"This validation must include exactly 2 params separated by a comma (,) ex.: digits_between:1,5";t={pattern:"^\\d{"+i[0]+","+i[1]+"}$",message:"INVALID_DIGITS_BETWEEN",params:[i[0],i[1]],type:"regex"};break;case"email":case"emailAddress":case"email_address":t={pattern:/^[-\wа-яàáâãäåąæçćèéêëęœìíïîłńðòóôõöøśùúûñüýÿżźßÞďđ0-9#~!$%^&*_=+\/`\|}{\'?]+(\.[-\wа-яàáâãäåąæçćèéêëęœìíïîłńðòóôõöøśùúûñüýÿżźßÞďđ0-9#~!$%^&*_=+\/`\|}{\'?]+)*@([\wа-яàáâãäåąæçćèéêëęœìíïîłńðòóôõöøśùúûñüýÿżźßÞďđ0-9_][-\wа-яàáâãäåąæçćèéêëęœìíïîłńðòóôõöøśùúûñüýÿżźßÞďđ0-9_]*(\.[-\wа-яàáâãäåąæçćèéêëęœìíïîłńðòóôõöøśùúûñüýÿżźßÞďđ0-9_]+)*([\wа-яàáâãäåąæçćèéêëęœìíïîłńðòóôõöøśùúûñüýÿżźßÞďđ]+)|(\.[\wа-яàáâãäåąæçćèéêëęœìíïîłńðòóôõöøśùúûñüýÿżźßÞďđ]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i,message:"INVALID_EMAIL",type:"regex"};break;case"exactLen":case"exact_len":t={pattern:"^(.|[\\r\\n]){"+r+"}$",message:"INVALID_EXACT_LEN",params:[r],type:"regex"};break;case"float":t={pattern:/^\d*\.{1}\d+$/,message:"INVALID_FLOAT",type:"regex"};break;case"floatSigned":case"float_signed":t={pattern:/^[-+]?\d*\.{1}\d+$/,message:"INVALID_FLOAT_SIGNED",type:"regex"};break;case"iban":t={pattern:/^[a-zA-Z]{2}\d{2}\s?([0-9a-zA-Z]{4}\s?){4}[0-9a-zA-Z]{2}$/i,message:"INVALID_IBAN",type:"regex"};break;case"enum":case"in":case"inList":case"in_list":u=RegExp().escape(r).replace(/,/g,"|");t={pattern:"^("+u+")$",patternFlag:"i",message:"INVALID_IN_LIST",params:[r],type:"regex"};break;case"int":case"integer":t={pattern:/^\d+$/,message:"INVALID_INTEGER",type:"regex"};break;case"intSigned":case"integerSigned":case"int_signed":case"integer_signed":t={pattern:/^[+-]?\d+$/,message:"INVALID_INTEGER_SIGNED",type:"regex"};break;case"ip":case"ipv4":t={pattern:/^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$/,message:"INVALID_IPV4",type:"regex"};break;case"ipv6":t={pattern:/^(::|(([a-fA-F0-9]{1,4}):){7}(([a-fA-F0-9]{1,4}))|(:(:([a-fA-F0-9]{1,4})){1,6})|((([a-fA-F0-9]{1,4}):){1,6}:)|((([a-fA-F0-9]{1,4}):)(:([a-fA-F0-9]{1,4})){1,6})|((([a-fA-F0-9]{1,4}):){2}(:([a-fA-F0-9]{1,4})){1,5})|((([a-fA-F0-9]{1,4}):){3}(:([a-fA-F0-9]{1,4})){1,4})|((([a-fA-F0-9]{1,4}):){4}(:([a-fA-F0-9]{1,4})){1,3})|((([a-fA-F0-9]{1,4}):){5}(:([a-fA-F0-9]{1,4})){1,2}))$/i,message:"INVALID_IPV6",type:"regex"};break;case"compare":case"match":case"matchInput":case"match_input":case"same":n=r.split(",");t={condition:"===",message:"INVALID_INPUT_MATCH",params:n,type:"matching"};break;case"max":t={patternLength:"^(.|[\\r\\n]){0,"+r+"}$",messageLength:"INVALID_MAX_CHAR",conditionNum:"<=",messageNum:"INVALID_MAX_NUM",params:[r],type:"autoDetect"};break;case"maxLen":case"max_len":case"maxLength":case"max_length":t={pattern:"^(.|[\\r\\n]){0,"+r+"}$",message:"INVALID_MAX_CHAR",params:[r],type:"regex"};break;case"maxNum":case"max_num":t={condition:"<=",message:"INVALID_MAX_NUM",params:[r],type:"conditionalNumber"};break;case"min":t={patternLength:"^(.|[\\r\\n]){"+r+",}$",messageLength:"INVALID_MIN_CHAR",conditionNum:">=",messageNum:"INVALID_MIN_NUM",params:[r],type:"autoDetect"};break;case"minLen":case"min_len":case"minLength":case"min_length":t={pattern:"^(.|[\\r\\n]){"+r+",}$",message:"INVALID_MIN_CHAR",params:[r],type:"regex"};break;case"minNum":case"min_num":t={condition:">=",message:"INVALID_MIN_NUM",params:[r],type:"conditionalNumber"};break;case"notIn":case"not_in":case"notInList":case"not_in_list":u=RegExp().escape(r).replace(/,/g,"|");t={pattern:"^((?!("+u+")).)+$",patternFlag:"i",message:"INVALID_NOT_IN_LIST",params:[r],type:"regex"};break;case"numeric":t={pattern:/^\d*\.?\d+$/,message:"INVALID_NUMERIC",type:"regex"};break;case"numericSigned":case"numeric_signed":t={pattern:/^[-+]?\d*\.?\d+$/,message:"INVALID_NUMERIC_SIGNED",type:"regex"};break;case"phone":t={pattern:/^([0-9]( |[-.])?)?((\(\d{3}\) ?)|(\d{3}[-.]))?\d{3}[-.]\d{4}$/,message:"INVALID_PHONE_US",type:"regex"};break;case"phoneInternational":case"phone_international":t={pattern:/^\+(?:[0-9]\x20?){6,14}[0-9]$/,message:"INVALID_PHONE_INTERNATIONAL",type:"regex"};break;case"pattern":case"regex":t={pattern:f.pattern,message:"INVALID_PATTERN",params:[f.message],type:"regex"};break;case"remote":t={message:"",params:[r],type:"remote"};break;case"required":t={pattern:/\S+/,message:"INVALID_REQUIRED",type:"regex"};break;case"size":t={patternLength:"^(.|[\\r\\n]){"+r+"}$",messageLength:"INVALID_EXACT_LEN",conditionNum:"==",messageNum:"INVALID_EXACT_NUM",params:[r],type:"autoDetect"};break;case"url":t={pattern:/^(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:\/~\+#]*[\w\-\@?^=%&amp;\/~\+#])?/i,message:"INVALID_URL",type:"regex"};break;case"time":t={pattern:/^([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$/,message:"INVALID_TIME",type:"regex"}}return t.altText=e,t}return{getElementValidators:n}}]);RegExp.prototype.escape=function(n){if(!arguments.callee.sRE)arguments.callee.sRE=new RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\)","g");return n.replace(arguments.callee.sRE,"\\$1")};angular.module("ghiscoding.validation").service("ValidationService",["$interpolate","$q","$timeout","ValidationCommon",function(n,t,i,r){function w(t,i,r){var h=this,u={},a,v;if("string"==typeof t&&"string"==typeof i?(u.elmName=t,u.rules=i,u.friendlyName="string"==typeof r?r:""):u=t,"object"!=typeof u||!u.hasOwnProperty("elmName")||!u.hasOwnProperty("rules")||!u.hasOwnProperty("scope")&&"undefined"==typeof h.validationAttrs.scope)throw"Angular-Validation-Service requires at least the following 3 attributes: {elmName, rules, scope}";return(a=u.scope?u.scope:h.validationAttrs.scope,u.elm=angular.element(document.querySelector('[name="'+u.elmName+'"]')),"object"!=typeof u.elm||0===u.elm.length)?h:((new RegExp("{{(.*?)}}").test(u.elmName)&&(u.elmName=n(u.elmName)(a)),u.name=u.elmName,h.validationAttrs.isolatedScope||u.isolatedScope)&&(v=a.$validationOptions||null,a=h.validationAttrs.isolatedScope||u.isolatedScope,v&&(a.$validationOptions=v)),u.elm.bind("blur",e=function(n){var t=h.commonObj.getFormElementByName(u.elmName),i;t&&!t.isValidationCancelled&&(h.commonObj.initialize(a,u.elm,u,u.ctrl),i=o(h,n.target.value,0),f&&h.commonObj.runValidationCallbackOnPromise(i,f))}),u=h.commonObj.mergeObjects(h.validationAttrs,u),f=u.hasOwnProperty("validationCallback")?u.validationCallback:null,c=u.hasOwnProperty("validateOnEmpty")?h.commonObj.parseBool(u.validateOnEmpty):!!p.validateOnEmpty,rt(h,a,u),u.elm.on("$destroy",function(){var n=h.commonObj.getFormElementByName(h.commonObj.ctrl.$name);n&&(s(h,n),h.commonObj.removeFromValidationSummary(u.name))}),l.push({elmName:u.elmName,watcherHandler:tt(a,u,h)}),h)}function b(n,t){var u=this,f="",e=!0,r,o,i;if("undefined"==typeof n||"undefined"==typeof n.$validationSummary)throw"checkFormValidity() requires a valid Angular Form or $scope/vm object passed as argument to work properly, for example:: fn($scope) OR fn($scope.form1) OR fn(vm) OR fn(vm.form1)";for(r=0,o=n.$validationSummary.length;r<o;r++)(e=!1,f=n.$validationSummary[r].field)&&(i=u.commonObj.getFormElementByName(f),i&&i.elm&&i.elm.length>0&&("function"!=typeof i.ctrl.$setTouched||t||i.ctrl.$setTouched(),u.commonObj.updateErrorMsg(n.$validationSummary[r].message,{isSubmitted:!t,isValid:i.isValid,obj:i})));return e}function k(n){var u=this;if("undefined"==typeof n||"undefined"==typeof n.$validationSummary)throw"clearInvalidValidatorsInSummary() requires a valid Angular Form or $scope/vm object passed as argument to work properly, for example:: fn($scope) OR fn($scope.form1) OR fn(vm) OR fn(vm.form1)";for(var i=[],t=0,r=n.$validationSummary.length;t<r;t++)i.push(n.$validationSummary[t].field);for(t=0,r=i.length;t<r;t++)i[t]&&(u.commonObj.removeFromFormElementObjectList(i[t]),u.commonObj.removeFromValidationSummary(i[t],n.$validationSummary))}function a(n,t){var i,r=this,u,f;if("undefined"==typeof n||"undefined"==typeof n.$validationSummary)throw"removeValidator() only works with Validation that were defined by the Service (not by the Directive) and requires a valid Angular Form or $scope/vm object passed as argument to work properly, for example:: fn($scope) OR fn($scope.form1) OR fn(vm) OR fn(vm.form1)";if(t instanceof Array)for(u=0,f=t.length;u<f;u++)i=r.commonObj.getFormElementByName(t[u]),i.elm.removeAttr("validation"),h(r,i,n.$validationSummary);else t instanceof Object&&t.formElmObj?(i=t.formElmObj,i.elm.removeAttr("validation"),h(t.self,i,n.$validationSummary)):(i=r.commonObj.getFormElementByName(t),i.elm.removeAttr("validation"),h(r,i,n.$validationSummary));return r}function d(n,t){var i,f=this,t=t||{},o="undefined"!=typeof t.removeAllValidators&&t.removeAllValidators,s="undefined"!=typeof t.emptyAllInputValues&&t.emptyAllInputValues,r,u,e;if("undefined"==typeof n||"undefined"==typeof n.$name)throw"resetForm() requires a valid Angular Form object passed as argument to work properly (ex.: $scope.form1).";if(r=f.commonObj.getFormElements(n.$name),r instanceof Array)for(u=0,e=r.length;u<e;u++)i=r[u],s&&i.elm.val(null),o?a(n,{self:f,formElmObj:i}):("function"==typeof i.ctrl.$setUntouched&&i.ctrl.$setUntouched(),i.ctrl.$setPristine(),f.commonObj.updateErrorMsg("",{isValid:!1,obj:i}))}function g(n){var t=this,i="boolean"!=typeof n||n;t.commonObj.setDisplayOnlyLastErrorMsg(i)}function nt(n){var t=this;return t.validationAttrs=n,t.commonObj.setGlobalOptions(n),t}function o(n,r,u){var e=t.defer(),f=!1,h="undefined"!=typeof u?u:n.commonObj.typingLimit,o=n.commonObj.getFormElementByName(n.commonObj.ctrl.$name);return r&&r.badInput?v(n,attrs.name):(n.commonObj.validate(r,!1),n.commonObj.isFieldRequired()||c||""!==r&&null!==r&&"undefined"!=typeof r?(o.isValidationCancelled=!1,(r||n.commonObj.isFieldRequired()||c)&&n.commonObj.ctrl.$setValidity("validation",!1),""!==r&&"undefined"!=typeof r||"NUMBER"!==n.commonObj.elm.prop("type").toUpperCase()?"SELECT"===n.commonObj.elm.prop("tagName").toUpperCase()?(f=n.commonObj.validate(r,!0),n.commonObj.ctrl.$setValidity("validation",f),e.resolve({isFieldValid:f,formElmObj:o,value:r}),e.promise):("undefined"!=typeof r&&(0===u?(f=n.commonObj.validate(r,!0),n.commonObj.scope.$evalAsync(n.commonObj.ctrl.$setValidity("validation",f)),e.resolve({isFieldValid:f,formElmObj:o,value:r}),i.cancel(n.timer)):(n.commonObj.updateErrorMsg(""),i.cancel(n.timer),n.timer=i(function(){f=n.commonObj.validate(r,!0);n.commonObj.scope.$evalAsync(n.commonObj.ctrl.$setValidity("validation",f));e.resolve({isFieldValid:f,formElmObj:o,value:r})},h))),e.promise):(i.cancel(n.timer),f=n.commonObj.validate(r,!0),e.resolve({isFieldValid:f,formElmObj:o,value:r}),e.promise)):(s(n,o),e.resolve({isFieldValid:!0,formElmObj:o,value:r}),e.promise))}function s(n,t){var r=t&&t.ctrl?t.ctrl:n.commonObj.ctrl;t&&(t.isValidationCancelled=!0);i.cancel(self.timer);r.$setValidity("validation",!0);n.commonObj.updateErrorMsg("",{isValid:!0,obj:t});y(n,t)}function tt(n,t,r){return n.$watch(function(){return t.ctrl=angular.element(t.elm).controller("ngModel"),it(r,t.elmName)?{badInput:!0}:t.ctrl.$modelValue},function(u,e){var s,h,c;if(u&&u.badInput)return s=r.commonObj.getFormElementByName(t.elmName),y(r,s),v(r,t.name);if(void 0===u&&void 0!==e&&!isNaN(e))return i.cancel(r.timer),void r.commonObj.ctrl.$setValidity("validation",r.commonObj.validate("",!0));t.ctrl=angular.element(t.elm).controller("ngModel");t.value=u;r.commonObj.initialize(n,t.elm,t,t.ctrl);h="undefined"==typeof u||"number"==typeof u&&isNaN(u)?0:void 0;c=o(r,u,h);f&&r.commonObj.runValidationCallbackOnPromise(c,f)},!0)}function v(n,t){i.cancel(n.timer);var r=n.commonObj.getFormElementByName(t);n.commonObj.updateErrorMsg("INVALID_KEY_CHAR",{isValid:!1,translate:!0,obj:r});n.commonObj.addToValidationSummary(r,"INVALID_KEY_CHAR",!0)}function it(n,t){var i=n.commonObj.getFormElementByName(t);return!!i&&!!i.elm.prop("validity")&&i.elm.prop("validity").badInput===!0}function h(n,t,i){var u=n.commonObj.scope?n.commonObj.scope:t.scope?t.scope:null,r;if("undefined"==typeof u)throw"removeValidator() requires a valid $scope object passed but unfortunately could not find it.";r=n.commonObj.arrayFindObject(l,"elmName",t.fieldName);r&&(r.watcherHandler(),l.shift());t.isValidationCancelled=!0;t.isValid=!0;t.attrs.validation="";s(n,t);"function"==typeof t.ctrl.$setUntouched&&t.ctrl.$setUntouched();n.commonObj.scope=u;t.ctrl.$setPristine();n.commonObj.removeFromValidationSummary(t.fieldName,i)}function y(n,t){if(t.isValidationCancelled=!0,"function"==typeof e){var i=t&&t.elm?t.elm:n.commonObj.elm;i.unbind("blur",e)}}function rt(n,t,r){t.$watch(function(){return"undefined"==typeof r.elm.attr("ng-disabled")?null:t.$eval(r.elm.attr("ng-disabled"))},function(u){if("undefined"==typeof u||null===u)return null;r.ctrl=angular.element(r.elm).controller("ngModel");n.commonObj.initialize(t,r.elm,r,r.ctrl);var s=n.commonObj.getFormElementByName(r.name);i(function(){var h=""===u||("boolean"==typeof u?u:"undefined"!=typeof u&&t.$eval(u)),i;h?(r.ctrl.$setValidity("validation",!0),n.commonObj.updateErrorMsg("",{isValid:!0,obj:s}),n.commonObj.removeFromValidationSummary(r.name)):(i=r.ctrl.$viewValue||"",n.commonObj.initialize(t,r.elm,r,r.ctrl),r.ctrl.$setValidity("validation",n.commonObj.validate(i,!1)),s&&(s.isValidationCancelled=!1),r.elm.bind("blur",e=function(t){if(s&&!s.isValidationCancelled){var i=o(n,t.target.value,10);f&&n.commonObj.runValidationCallbackOnPromise(i,f)}}))},0,!1);u&&("function"==typeof r.ctrl.$setUntouched&&r.ctrl.$setUntouched(),r.ctrl.$setValidity("validation",!0),n.commonObj.removeFromValidationSummary(r.name))})}var e,c,f,p,l=[],u=function(n){this.isValidationCancelled=!1;this.timer=null;this.validationAttrs={};this.commonObj=new r;n&&this.setGlobalOptions(n);p=this.commonObj.getGlobalOptions()};return u.prototype.addValidator=w,u.prototype.checkFormValidity=b,u.prototype.removeValidator=a,u.prototype.resetForm=d,u.prototype.setDisplayOnlyLastErrorMsg=g,u.prototype.setGlobalOptions=nt,u.prototype.clearInvalidValidatorsInSummary=k,u}])