(function(n,t){typeof exports=="object"&&typeof module!="undefined"?t(exports):typeof define=="function"&&define.amd?define(["exports"],t):(n=n||self,t(n.FormValidation={}))})(this,function(n){"use strict";function b(n){for(var r=n.length,u=[[0,1,2,3,4,5,6,7,8,9],[0,2,4,6,8,1,3,5,7,9]],t=0,i=0;r--;)i+=u[t][parseInt(n.charAt(r),10)],t=1-t;return i%10==0&&i>0}function tt(n){for(var r=n.length,t=5,i=0;i<r;i++)t=((t||10)*2%11+parseInt(n.charAt(i),10))%10;return t===1}function it(n){for(var u=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",f=n.length,t=u.length,i=Math.floor(t/2),r=0;r<f;r++)i=((i||t)*2%(t+1)+u.indexOf(n.charAt(r)))%t;return i===1}function rt(n){for(var u=[[0,1,2,3,4,5,6,7,8,9],[1,2,3,4,0,6,7,8,9,5],[2,3,4,0,1,7,8,9,5,6],[3,4,0,1,2,8,9,5,6,7],[4,0,1,2,3,9,5,6,7,8],[5,9,8,7,6,0,4,3,2,1],[6,5,9,8,7,1,0,4,3,2],[7,6,5,9,8,2,1,0,4,3],[8,7,6,5,9,3,2,1,0,4],[9,8,7,6,5,4,3,2,1,0]],f=[[0,1,2,3,4,5,6,7,8,9],[1,5,7,6,2,8,3,0,9,4],[5,8,0,3,7,9,6,1,4,2],[8,9,1,6,0,4,3,5,2,7],[9,4,5,3,1,2,6,8,7,0],[4,2,8,6,5,7,3,9,0,1],[2,7,9,3,8,0,6,4,1,5],[7,0,4,6,9,1,3,2,5,8]],r=n.reverse(),i=0,t=0;t<r.length;t++)i=u[i][f[t%8][r[t]]];return i===0}function f(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}function k(n,t){for(var i,r=0;r<t.length;r++)i=t[r],i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(n,i.key,i)}function u(n,t,i){return t&&k(n.prototype,t),i&&k(n,i),n}function t(n,t,i){return t in n?Object.defineProperty(n,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[t]=i,n}function h(n,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");n.prototype=Object.create(t&&t.prototype,{constructor:{value:n,writable:!0,configurable:!0}});t&&a(n,t)}function e(n){return e=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},e(n)}function a(n,t){return a=Object.setPrototypeOf||function(n,t){return n.__proto__=t,n},a(n,t)}function i(n){if(n===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return n}function c(n,t){return t&&(typeof t=="object"||typeof t=="function")?t:i(n)}function ft(){return{fns:{},clear:function(){this.fns={}},emit:function(n){for(var i=arguments.length,r=new Array(i>1?i-1:0),t=1;t<i;t++)r[t-1]=arguments[t];(this.fns[n]||[]).map(function(n){return n.apply(n,r)})},off:function(n,t){if(this.fns[n]){var i=this.fns[n].indexOf(t);i>=0&&this.fns[n].splice(i,1)}},on:function(n,t){(this.fns[n]=this.fns[n]||[]).push(t)}}}function et(){return{filters:{},add:function(n,t){(this.filters[n]=this.filters[n]||[]).push(t)},clear:function(){this.filters={}},execute:function(n,t,i){var r;if(!this.filters[n]||!this.filters[n].length)return t;var u=t,f=this.filters[n],e=f.length;for(r=0;r<e;r++)u=f[r].apply(u,i);return u},remove:function(n,t){this.filters[n]&&(this.filters[n]=this.filters[n].filter(function(n){return n!==t}))}}}function d(n,t,i,r){var o=(i.getAttribute("type")||"").toLowerCase(),s=i.tagName.toLowerCase(),u,f,e;switch(s){case"textarea":return i.value;case"select":return u=i,f=u.selectedIndex,f>=0?u.options.item(f).value:"";case"input":return"radio"===o||"checkbox"===o?(e=r.filter(function(n){return n.checked}).length,e===0?"":e+""):i.value;default:return""}}function o(n,t){var r=Array.isArray(t)?t:[t],i=n;return r.forEach(function(n){i=i.replace("%s",n)}),i}function ot(){var n=function(n){return parseFloat("".concat(n).replace(",","."))};return{validate:function(t){var r=t.value;if(r==="")return{valid:!0};var i=Object.assign({},{inclusive:!0},t.options),u=n(i.min),f=n(i.max);return i.inclusive?{message:t.l10n?o(i.message||t.l10n.between["default"],["".concat(u),"".concat(f)]):i.message,valid:parseFloat(r)>=u&&parseFloat(r)<=f}:{message:t.l10n?o(i.message||t.l10n.between.notInclusive,["".concat(u),"".concat(f)]):i.message,valid:parseFloat(r)>u&&parseFloat(r)<f}}}}function st(){return{validate:function(){return{valid:!0}}}}function v(n,t){var i,u,c,l;if("function"==typeof n)return n.apply(this,t);if("string"==typeof n){i=n;"()"===i.substring(i.length-2)&&(i=i.substring(0,i.length-2));var e=i.split("."),o=e.pop(),r=window,f=!0,s=!1,h=undefined;try{for(u=e[Symbol.iterator]();!(f=(c=u.next()).done);f=!0)l=c.value,r=r[l]}catch(a){s=!0;h=a}finally{try{f||u["return"]==null||u["return"]()}finally{if(s)throw h;}}return typeof r[o]=="undefined"?null:r[o].apply(this,t)}}function ht(){return{validate:function(n){var t=v(n.options.callback,[n]);return"boolean"==typeof t?{valid:t}:t}}}function ct(){return{validate:function(n){var u="select"===n.element.tagName.toLowerCase()?n.element.querySelectorAll("option:checked").length:n.elements.filter(function(n){return n.checked}).length,t=n.options.min?"".concat(n.options.min):"",i=n.options.max?"".concat(n.options.max):"",r=n.l10n?n.options.message||n.l10n.choice["default"]:n.options.message,f=!(t&&u<parseInt(t,10)||i&&u>parseInt(i,10));switch(!0){case!!t&&!!i:r=o(n.l10n?n.l10n.choice.between:n.options.message,[t,i]);break;case!!t:r=o(n.l10n?n.l10n.choice.more:n.options.message,t);break;case!!i:r=o(n.l10n?n.l10n.choice.less:n.options.message,i)}return{message:r,valid:f}}}}function lt(){return{validate:function(n){var r,i,u,t,f;if(n.value==="")return{meta:{type:null},valid:!0};if(/[^0-9-\s]+/.test(n.value))return{meta:{type:null},valid:!1};if(r=n.value.replace(/\D/g,""),!b(r))return{meta:{type:null},valid:!1};for(i=0,u=Object.keys(l);i<u.length;i++){t=u[i];for(f in l[t].prefix)if(n.value.substr(0,l[t].prefix[f].length)===l[t].prefix[f]&&l[t].length.indexOf(r.length)!==-1)return{meta:{type:t},valid:!0}}return{meta:{type:null},valid:!1}}}}function g(n,t,i,r){var e;if(isNaN(n)||isNaN(t)||isNaN(i)||n<1e3||n>9999||t<=0||t>12||(e=[31,n%400==0||n%100!=0&&n%4==0?29:28,31,30,31,30,31,31,30,31,30,31],i<=0||i>e[t-1]))return!1;if(r===!0){var u=new Date,f=u.getFullYear(),o=u.getMonth(),s=u.getDate();return n<f||n===f&&t-1<o||n===f&&t-1===o&&i<s}return!0}function at(){var n=function(n,t,i){var o=t.indexOf("YYYY"),s=t.indexOf("MM"),h=t.indexOf("DD"),e,u,f,r;return o===-1||s===-1||h===-1?null:(e=n.split(" "),u=e[0].split(i),u.length<3)?null:(f=new Date(parseInt(u[o],10),parseInt(u[s],10)-1,parseInt(u[h],10)),e.length>1&&(r=e[1].split(":"),f.setHours(r.length>0?parseInt(r[0],10):0),f.setMinutes(r.length>1?parseInt(r[1],10):0),f.setSeconds(r.length>2?parseInt(r[2],10):0)),f)},t=function(n,t){var h=t.replace(/Y/g,"y").replace(/M/g,"m").replace(/D/g,"d").replace(/:m/g,":M").replace(/:mm/g,":MM").replace(/:S/,":s").replace(/:SS/,":ss"),i=n.getDate(),c=i<10?"0".concat(i):i,r=n.getMonth()+1,l=r<10?"0".concat(r):r,a="".concat(n.getFullYear()).substr(2),v=n.getFullYear(),u=n.getHours()%12||12,y=u<10?"0".concat(u):u,f=n.getHours(),p=f<10?"0".concat(f):f,e=n.getMinutes(),w=e<10?"0".concat(e):e,o=n.getSeconds(),b=o<10?"0".concat(o):o,s={H:"".concat(f),HH:"".concat(p),M:"".concat(e),MM:"".concat(w),d:"".concat(i),dd:"".concat(c),h:"".concat(u),hh:"".concat(y),m:"".concat(r),mm:"".concat(l),s:"".concat(o),ss:"".concat(b),yy:"".concat(a),yyyy:"".concat(v)};return h.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMs])\1?|"[^"]*"|'[^']*'/g,function(n){return s[n]?s[n]:n.slice(1,n.length-1)})};return{validate:function(i){var e,p,s,r,u;if(i.value==="")return{meta:{date:null},valid:!0};var f=Object.assign({},{format:i.element&&i.element.getAttribute("type")==="date"?"YYYY-MM-DD":"MM/DD/YYYY",message:""},i.options),a=i.l10n?i.l10n.date["default"]:f.message,v={message:"".concat(a),meta:{date:null},valid:!1},h=f.format.split(" "),ot=h.length>1?h[1]:null,lt=h.length>2?h[2]:null,d=i.value.split(" "),y=d[0],at=d.length>1?d[1]:null;if(h.length!==d.length||(e=f.separator||(y.indexOf("/")!==-1?"/":y.indexOf("-")!==-1?"-":y.indexOf(".")!==-1?".":"/"),e===null||y.indexOf(e)===-1)||(p=y.split(e),s=h[0].split(e),p.length!==s.length))return v;var it=p[s.indexOf("YYYY")],rt=p[s.indexOf("MM")],ut=p[s.indexOf("DD")];if(!/^\d+$/.test(it)||!/^\d+$/.test(rt)||!/^\d+$/.test(ut)||it.length>4||rt.length>2||ut.length>2)return v;var st=parseInt(it,10),ht=parseInt(rt,10),ct=parseInt(ut,10);if(!g(st,ht,ct))return v;if(r=new Date(st,ht-1,ct),ot){if(u=at.split(":"),ot.split(":").length!==u.length)return v;var w=u.length>0?u[0].length<=2&&/^\d+$/.test(u[0])?parseInt(u[0],10):-1:0,nt=u.length>1?u[1].length<=2&&/^\d+$/.test(u[1])?parseInt(u[1],10):-1:0,tt=u.length>2?u[2].length<=2&&/^\d+$/.test(u[2])?parseInt(u[2],10):-1:0;if(w===-1||nt===-1||tt===-1||tt<0||tt>60||w<0||w>=24||lt&&w>12||nt<0||nt>59)return v;r.setHours(w);r.setMinutes(nt);r.setSeconds(tt)}var c=typeof f.min=="function"?f.min():f.min,ft=c instanceof Date?c:c?n(c,s,e):r,l=typeof f.max=="function"?f.max():f.max,et=l instanceof Date?l:l?n(l,s,e):r,b=c instanceof Date?t(ft,f.format):c,k=l instanceof Date?t(et,f.format):l;switch(!0){case!!b&&!k:return{message:o(i.l10n?i.l10n.date.min:a,b),meta:{date:r},valid:r.getTime()>=ft.getTime()};case!!k&&!b:return{message:o(i.l10n?i.l10n.date.max:a,k),meta:{date:r},valid:r.getTime()<=et.getTime()};case!!k&&!!b:return{message:o(i.l10n?i.l10n.date.range:a,[b,k]),meta:{date:r},valid:r.getTime()<=et.getTime()&&r.getTime()>=ft.getTime()};default:return{message:"".concat(a),meta:{date:r},valid:!0}}}}}function vt(){return{validate:function(n){var t="function"==typeof n.options.compare?n.options.compare.call(this):n.options.compare;return{valid:t===""||n.value!==t}}}}function yt(){return{validate:function(n){return{valid:n.value===""||/^\d+$/.test(n.value)}}}}function pt(){var n=function(n,t){for(var u,e,o,s=n.split(/"/),h=s.length,f=[],i="",r=0;r<h;r++)if(r%2==0)if(u=s[r].split(t),e=u.length,e===1)i+=u[0];else{for(f.push(i+u[0]),o=1;o<e-1;o++)f.push(u[o]);i=u[e-1]}else i+='"'+s[r],r<h-1&&(i+='"');return f.push(i),f};return{validate:function(t){var i;if(t.value==="")return{valid:!0};var r=Object.assign({},{multiple:!1,separator:/[,;]/},t.options),u=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,e=r.multiple===!0||"".concat(r.multiple)==="true";if(e){var o=r.separator||/[,;]/,f=n(t.value,o),s=f.length;for(i=0;i<s;i++)if(!u.test(f[i]))return{valid:!1};return{valid:!0}}return{valid:u.test(t.value)}}}}function wt(){return{validate:function(n){var r,t;if(n.value==="")return{valid:!0};var u,e=n.options.extension?n.options.extension.toLowerCase().split(","):null,s=n.options.type?n.options.type.toLowerCase().split(","):null,h=window.File&&window.FileList&&window.FileReader;if(h){var i=n.element.files,o=i.length,f=0;if(n.options.maxFiles&&o>parseInt("".concat(n.options.maxFiles),10))return{meta:{error:"INVALID_MAX_FILES"},valid:!1};if(n.options.minFiles&&o<parseInt("".concat(n.options.minFiles),10))return{meta:{error:"INVALID_MIN_FILES"},valid:!1};for(r={},t=0;t<o;t++){if(f+=i[t].size,u=i[t].name.substr(i[t].name.lastIndexOf(".")+1),r={ext:u,file:i[t],size:i[t].size,type:i[t].type},n.options.minSize&&i[t].size<parseInt("".concat(n.options.minSize),10))return{meta:Object.assign({},{error:"INVALID_MIN_SIZE"},r),valid:!1};if(n.options.maxSize&&i[t].size>parseInt("".concat(n.options.maxSize),10))return{meta:Object.assign({},{error:"INVALID_MAX_SIZE"},r),valid:!1};if(e&&e.indexOf(u.toLowerCase())===-1)return{meta:Object.assign({},{error:"INVALID_EXTENSION"},r),valid:!1};if(i[t].type&&s&&s.indexOf(i[t].type.toLowerCase())===-1)return{meta:Object.assign({},{error:"INVALID_TYPE"},r),valid:!1}}if(n.options.maxTotalSize&&f>parseInt("".concat(n.options.maxTotalSize),10))return{meta:Object.assign({},{error:"INVALID_MAX_TOTAL_SIZE",totalSize:f},r),valid:!1};if(n.options.minTotalSize&&f<parseInt("".concat(n.options.minTotalSize),10))return{meta:Object.assign({},{error:"INVALID_MIN_TOTAL_SIZE",totalSize:f},r),valid:!1}}else if(u=n.value.substr(n.value.lastIndexOf(".")+1),e&&e.indexOf(u.toLowerCase())===-1)return{meta:{error:"INVALID_EXTENSION",ext:u},valid:!1};return{valid:!0}}}}function bt(){return{validate:function(n){if(n.value==="")return{valid:!0};var t=Object.assign({},{inclusive:!0},n.options),i=parseFloat("".concat(t.min).replace(",","."));return t.inclusive?{message:n.l10n?o(t.message||n.l10n.greaterThan["default"],"".concat(i)):t.message,valid:parseFloat(n.value)>=i}:{message:n.l10n?o(t.message||n.l10n.greaterThan.notInclusive,"".concat(i)):t.message,valid:parseFloat(n.value)>i}}}}function kt(){return{validate:function(n){var t="function"==typeof n.options.compare?n.options.compare.call(this):n.options.compare;return{valid:t===""||n.value===t}}}}function dt(){return{validate:function(n){var i;if(n.value==="")return{valid:!0};var r=Object.assign({},{decimalSeparator:".",thousandsSeparator:""},n.options),u=r.decimalSeparator==="."?"\\.":r.decimalSeparator,f=r.thousandsSeparator==="."?"\\.":r.thousandsSeparator,e=new RegExp("^-?[0-9]{1,3}(".concat(f,"[0-9]{3})*(").concat(u,"[0-9]+)?$")),o=new RegExp(f,"g"),t="".concat(n.value);return e.test(t)?(f&&(t=t.replace(o,"")),u&&(t=t.replace(u,".")),i=parseFloat(t),{valid:!isNaN(i)&&isFinite(i)&&Math.floor(i)===i}):{valid:!1}}}}function gt(){return{validate:function(n){if(n.value==="")return{valid:!0};var t=Object.assign({},{ipv4:!0,ipv6:!0},n.options),i=/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\/([0-9]|[1-2][0-9]|3[0-2]))?$/,r=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*(\/(\d|\d\d|1[0-1]\d|12[0-8]))?$/;switch(!0){case t.ipv4&&!t.ipv6:return{message:n.l10n?t.message||n.l10n.ip.ipv4:t.message,valid:i.test(n.value)};case!t.ipv4&&t.ipv6:return{message:n.l10n?t.message||n.l10n.ip.ipv6:t.message,valid:r.test(n.value)};case t.ipv4&&t.ipv6:default:return{message:n.l10n?t.message||n.l10n.ip["default"]:t.message,valid:i.test(n.value)||r.test(n.value)}}}}}function ni(){return{validate:function(n){if(n.value==="")return{valid:!0};var t=Object.assign({},{inclusive:!0},n.options),i=parseFloat("".concat(t.max).replace(",","."));return t.inclusive?{message:n.l10n?o(t.message||n.l10n.lessThan["default"],"".concat(i)):t.message,valid:parseFloat(n.value)<=i}:{message:n.l10n?o(t.message||n.l10n.lessThan.notInclusive,"".concat(i)):t.message,valid:parseFloat(n.value)<i}}}}function ti(){return{validate:function(n){return{valid:n.value!==""}}}}function ii(){return{validate:function(n){var i,t,f;if(n.value==="")return{valid:!0};i=Object.assign({},{decimalSeparator:".",thousandsSeparator:""},n.options);t="".concat(n.value);t.substr(0,1)===i.decimalSeparator?t="0".concat(i.decimalSeparator).concat(t.substr(1)):t.substr(0,2)==="-".concat(i.decimalSeparator)&&(t="-0".concat(i.decimalSeparator).concat(t.substr(2)));var r=i.decimalSeparator==="."?"\\.":i.decimalSeparator,u=i.thousandsSeparator==="."?"\\.":i.thousandsSeparator,e=new RegExp("^-?[0-9]{1,3}(".concat(u,"[0-9]{3})*(").concat(r,"[0-9]+)?$")),o=new RegExp(u,"g");return e.test(t)?(u&&(t=t.replace(o,"")),r&&(t=t.replace(r,".")),f=parseFloat(t),{valid:!isNaN(f)&&isFinite(f)}):{valid:!1}}}}function ri(){return{validate:function(n){return v(n.options.promise,[n])}}}function ui(){return{validate:function(n){var t,i,r;return n.value===""?{valid:!0}:(t=n.options.regexp,t instanceof RegExp?{valid:t.test(n.value)}:(i=t.toString(),r=n.options.flags?new RegExp(i,n.options.flags):new RegExp(i),{valid:r.test(n.value)}))}}}function nt(n,t){var i=function(n){return Object.keys(n).map(function(t){return"".concat(encodeURIComponent(t),"=").concat(encodeURIComponent(n[t]))}).join("&")};return new Promise(function(r,u){var f=Object.assign({},{crossDomain:!1,headers:{},method:"GET",params:{}},t),l=Object.keys(f.params).map(function(n){return"".concat(encodeURIComponent(n),"=").concat(encodeURIComponent(f.params[n]))}).join("&"),h=n.indexOf("?"),c="GET"===f.method?"".concat(n).concat(h?"?":"&").concat(l):n,e,s,o;f.crossDomain?(e=document.createElement("script"),s="___fetch".concat(Date.now(),"___"),window[s]=function(n){delete window[s];r(n)},e.src="".concat(c).concat(h?"&":"?","callback=").concat(s),e.async=!0,e.addEventListener("load",function(){e.parentNode.removeChild(e)}),e.addEventListener("error",function(){return u}),document.head.appendChild(e)):(o=new XMLHttpRequest,o.open(f.method,c),o.setRequestHeader("X-Requested-With","XMLHttpRequest"),"POST"===f.method&&o.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),Object.keys(f.headers).forEach(function(n){return o.setRequestHeader(n,f.headers[n])}),o.addEventListener("load",function(){r(JSON.parse(this.responseText))}),o.addEventListener("error",function(){return u}),o.send(i(f.params)))})}function fi(){var n={crossDomain:!1,data:{},headers:{},method:"GET",validKey:"valid"};return{validate:function(t){var i,r,u;return t.value===""?Promise.resolve({valid:!0}):(i=Object.assign({},n,t.options),r=i.data,"function"==typeof i.data&&(r=i.data.call(this,t)),"string"==typeof r&&(r=JSON.parse(r)),r[i.name||t.field]=t.value,u="function"==typeof i.url?i.url.call(this,t):i.url,nt(u,{crossDomain:i.crossDomain,headers:i.headers,method:i.method,params:r}).then(function(n){return Promise.resolve({message:n.message,meta:n,valid:"".concat(n[i.validKey])==="true"})})["catch"](function(){return Promise.reject({valid:!1})}))}}}function ei(){return{validate:function(n){if(n.value==="")return{valid:!0};var t=Object.assign({},{"case":"lower"},n.options),i=(t["case"]||"lower").toLowerCase();return{message:t.message||(n.l10n?"upper"===i?n.l10n.stringCase.upper:n.l10n.stringCase["default"]:t.message),valid:"upper"===i?n.value===n.value.toUpperCase():n.value===n.value.toLowerCase()}}}}function oi(){var n=function(n){for(var t,r=n.length,i=n.length-1;i>=0;i--)t=n.charCodeAt(i),t>127&&t<=2047?r++:t>2047&&t<=65535&&(r+=2),t>=56320&&t<=57343&&i--;return"".concat(r)};return{validate:function(t){var i=Object.assign({},{trim:!1,utf8Bytes:!1},t.options),e=i.trim===!0||"".concat(i.trim)==="true"?t.value.trim():t.value;if(e==="")return{valid:!0};var r=i.min?"".concat(i.min):"",u=i.max?"".concat(i.max):"",s=i.utf8Bytes?n(e):e.length,h=!0,f=t.l10n?i.message||t.l10n.stringLength["default"]:i.message;(r&&s<parseInt(r,10)||u&&s>parseInt(u,10))&&(h=!1);switch(!0){case!!r&&!!u:f=t.l10n?o(i.message||t.l10n.stringLength.between,[r,u]):i.message;break;case!!r:f=t.l10n?o(i.message||t.l10n.stringLength.more,parseInt(r,10)-1+""):i.message;break;case!!u:f=t.l10n?o(i.message||t.l10n.stringLength.less,parseInt(u,10)+1+""):i.message}return{message:f,valid:h}}}}function si(){var n={allowEmptyProtocol:!1,allowLocal:!1,protocol:"http, https, ftp"};return{validate:function(t){if(t.value==="")return{valid:!0};var i=Object.assign({},n,t.options),r=i.allowLocal===!0||"".concat(i.allowLocal)==="true",u=i.allowEmptyProtocol===!0||"".concat(i.allowEmptyProtocol)==="true",f=i.protocol.split(",").join("|").replace(/\s/g,""),e=new RegExp("^(?:(?:"+f+")://)"+(u?"?":"")+"(?:\\S+(?::\\S*)?@)?(?:"+(r?"":"(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})")+"(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-?)*[a-z\\u00a1-\\uffff0-9])*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))"+(r?"?":"")+")(?::\\d{2,5})?(?:/[^\\s]*)?$","i");return{valid:e.test(t.value)}}}}function ci(n,t){var i=Object.assign({},{fields:{},locale:"en_US",plugins:{}},t),r=new hi(n,i.fields);return r.setLocale(i.locale,i.localization),Object.keys(i.plugins).forEach(function(n){return r.registerPlugin(n,i.plugins[n])}),Object.keys(y).forEach(function(n){return r.registerValidator(n,y[n])}),Object.keys(i.fields).forEach(function(n){return r.addField(n,i.fields[n])}),r}function di(n,t){t.split(" ").forEach(function(t){n.classList?n.classList.add(t):" ".concat(n.className," ").indexOf(" ".concat(t," "))&&(n.className+=" ".concat(t))})}function gi(n,t){t.split(" ").forEach(function(t){n.classList?n.classList.remove(t):n.className=n.className.replace(t,"")})}function r(n,t){var i=[],r=[];Object.keys(t).forEach(function(n){n&&(t[n]?i.push(n):r.push(n))});r.forEach(function(t){return gi(n,t)});i.forEach(function(t){return di(n,t)})}function nr(n,t){var i=n.matches||n.webkitMatchesSelector||n.mozMatchesSelector||n.msMatchesSelector,r;return i?i.call(n,t):(r=[].slice.call(n.parentElement.querySelectorAll(t)),r.indexOf(n)>=0)}function p(n,t){for(var i=n;i;){if(nr(i,t))break;i=i.parentElement}return i}function sr(n,t){return n.classList?n.classList.contains(t):new RegExp("(^| )".concat(t,"( |$)"),"gi").test(n.className)}var ut={luhn:b,mod11And10:tt,mod37And36:it,verhoeff:rt},l={AMERICAN_EXPRESS:{length:[15],prefix:["34","37"]},DANKORT:{length:[16],prefix:["5019"]},DINERS_CLUB:{length:[14],prefix:["300","301","302","303","304","305","36"]},DINERS_CLUB_US:{length:[16],prefix:["54","55"]},DISCOVER:{length:[16],prefix:["6011","622126","622127","622128","622129","62213","62214","62215","62216","62217","62218","62219","6222","6223","6224","6225","6226","6227","6228","62290","62291","622920","622921","622922","622923","622924","622925","644","645","646","647","648","649","65"]},ELO:{length:[16],prefix:["4011","4312","4389","4514","4573","4576","5041","5066","5067","509","6277","6362","6363","650","6516","6550"]},FORBRUGSFORENINGEN:{length:[16],prefix:["600722"]},JCB:{length:[16],prefix:["3528","3529","353","354","355","356","357","358"]},LASER:{length:[16,17,18,19],prefix:["6304","6706","6771","6709"]},MAESTRO:{length:[12,13,14,15,16,17,18,19],prefix:["5018","5020","5038","5868","6304","6759","6761","6762","6763","6764","6765","6766"]},MASTERCARD:{length:[16],prefix:["51","52","53","54","55"]},SOLO:{length:[16,18,19],prefix:["6334","6767"]},UNIONPAY:{length:[16,17,18,19],prefix:["622126","622127","622128","622129","62213","62214","62215","62216","62217","62218","62219","6222","6223","6224","6225","6226","6227","6228","62290","62291","622920","622921","622922","622923","622924","622925"]},VISA:{length:[16],prefix:["4"]},VISA_ELECTRON:{length:[16],prefix:["4026","417500","4405","4508","4844","4913","4917"]}},y={between:ot,blank:st,callback:ht,choice:ct,creditCard:lt,date:at,different:vt,digits:yt,emailAddress:pt,file:wt,greaterThan:bt,identical:kt,integer:dt,ip:gt,lessThan:ni,notEmpty:ti,numeric:ii,promise:ri,regexp:ui,remote:fi,stringCase:ei,stringLength:oi,uri:si},hi=function(){function n(t,i){f(this,n);this.elements={};this.ee=ft();this.filter=et();this.plugins={};this.results=new Map;this.validators={};this.form=t;this.fields=i}return u(n,[{key:"on",value:function(n,t){this.ee.on(n,t);return this}},{key:"off",value:function(n,t){return this.ee.off(n,t),this}},{key:"emit",value:function(n){for(var r,i=arguments.length,u=new Array(i>1?i-1:0),t=1;t<i;t++)u[t-1]=arguments[t];return(r=this.ee).emit.apply(r,[n].concat(u)),this}},{key:"registerPlugin",value:function(n,t){if(this.plugins[n])throw new Error("The plguin ".concat(n," is registered"));return t.setCore(this),t.install(),this.plugins[n]=t,this}},{key:"deregisterPlugin",value:function(n){var t=this.plugins[n];return t&&t.uninstall(),delete this.plugins[n],this}},{key:"registerValidator",value:function(n,t){if(this.validators[n])throw new Error("The validator ".concat(n," is registered"));return this.validators[n]=t,this}},{key:"registerFilter",value:function(n,t){return this.filter.add(n,t),this}},{key:"deregisterFilter",value:function(n,t){return this.filter.remove(n,t),this}},{key:"executeFilter",value:function(n,t,i){return this.filter.execute(n,t,i)}},{key:"addField",value:function(n,t){var i=Object.assign({},{selector:"",validators:{}},t);return this.fields[n]=this.fields[n]?{selector:i.selector||this.fields[n].selector,validators:Object.assign({},this.fields[n].validators,i.validators)}:i,this.elements[n]=this.queryElements(n),this.emit("core.field.added",{elements:this.elements[n],field:n,options:this.fields[n]}),this}},{key:"removeField",value:function(n){if(!this.fields[n])throw new Error("The field ".concat(n," validators are not defined. Please ensure the field is added first"));var t=this.elements[n],i=this.fields[n];return delete this.elements[n],delete this.fields[n],this.emit("core.field.removed",{elements:t,field:n,options:i}),this}},{key:"validate",value:function(){var n=this;return this.emit("core.form.validating"),this.filter.execute("validate-pre",Promise.resolve(),[]).then(function(){return Promise.all(Object.keys(n.fields).map(function(t){return n.validateField(t)})).then(function(t){switch(!0){case t.indexOf("Invalid")!==-1:return n.emit("core.form.invalid"),Promise.resolve("Invalid");case t.indexOf("NotValidated")!==-1:return n.emit("core.form.notvalidated"),Promise.resolve("NotValidated");default:return n.emit("core.form.valid"),Promise.resolve("Valid")}})})}},{key:"validateField",value:function(n){var t=this,r=this.results.get(n),i,u;return r==="Valid"||r==="Invalid"?Promise.resolve(r):(this.emit("core.field.validating",n),i=this.elements[n],i.length===0)?(this.emit("core.field.valid",n),Promise.resolve("Valid")):(u=i[0].getAttribute("type"),"radio"===u||"checkbox"===u||i.length===1?this.validateElement(n,i[0]):Promise.all(i.map(function(i){return t.validateElement(n,i)})).then(function(i){switch(!0){case i.indexOf("Invalid")!==-1:return t.emit("core.field.invalid",n),t.results.set(n,"Invalid"),Promise.resolve("Invalid");case i.indexOf("NotValidated")!==-1:return t.emit("core.field.notvalidated",n),t.results["delete"](n),Promise.resolve("NotValidated");default:return t.emit("core.field.valid",n),t.results.set(n,"Valid"),Promise.resolve("Valid")}}))}},{key:"validateElement",value:function(n,t){var r=this,i,f,u,e;return(this.results["delete"](n),i=this.elements[n],f=this.filter.execute("element-ignored",!1,[n,t,i]),f)?(this.emit("core.element.ignored",{element:t,elements:i,field:n}),Promise.resolve("Ignored")):(u=this.fields[n].validators,this.emit("core.element.validating",{element:t,elements:i,field:n}),e=Object.keys(u).map(function(i){return function(){return r.executeValidator(n,t,i,u[i])}}),this.waterfall(e).then(function(u){var f=u.indexOf("Invalid")===-1,e;return r.emit("core.element.validated",{element:t,elements:i,field:n,valid:f}),e=t.getAttribute("type"),("radio"===e||"checkbox"===e||i.length===1)&&r.emit(f?"core.field.valid":"core.field.invalid",n),Promise.resolve(f?"Valid":"Invalid")})["catch"](function(u){return r.emit("core.element.notvalidated",{element:t,elements:i,field:n}),Promise.resolve(u)}))}},{key:"executeValidator",value:function(n,t,i,r){var s=this,u=this.elements[n],f=this.filter.execute("validator-name",i,[i,n]),e,c,o;if(r.message=this.filter.execute("validator-message",r.message,[this.locale,n,f]),!this.validators[f]||r.enabled===!1)return this.emit("core.validator.validated",{element:t,elements:u,field:n,result:this.normalizeResult(n,f,{valid:!0}),validator:f}),Promise.resolve("Valid");var l=this.validators[f],h=this.getElementValue(n,t,f),a=this.filter.execute("field-should-validate",!0,[n,t,h,i]);return a?(this.emit("core.validator.validating",{element:t,elements:u,field:n,validator:i}),e=l().validate({element:t,elements:u,field:n,l10n:this.localization,options:r,value:h}),c="function"==typeof e.then,c?e.then(function(r){var f=s.normalizeResult(n,i,r);return s.emit("core.validator.validated",{element:t,elements:u,field:n,result:f,validator:i}),f.valid?"Valid":"Invalid"}):(o=this.normalizeResult(n,i,e),this.emit("core.validator.validated",{element:t,elements:u,field:n,result:o,validator:i}),Promise.resolve(o.valid?"Valid":"Invalid"))):(this.emit("core.validator.notvalidated",{element:t,elements:u,field:n,validator:i}),Promise.resolve("NotValidated"))}},{key:"getElementValue",value:function(n,t,i){var r=d(this.form,n,t,this.elements[n]);return this.filter.execute("field-value",r,[r,n,t,i])}},{key:"getElements",value:function(n){return this.elements[n]}},{key:"getFields",value:function(){return this.fields}},{key:"getFormElement",value:function(){return this.form}},{key:"getPlugin",value:function(n){return this.plugins[n]}},{key:"updateFieldStatus",value:function(n,t,i){var f=this,r=this.elements[n],u=r[0].getAttribute("type"),e="radio"===u||"checkbox"===u?[r[0]]:r;if(e.forEach(function(r){return f.updateElementStatus(n,r,t,i)}),!i)switch(t){case"NotValidated":this.emit("core.field.notvalidated",n);this.results["delete"](n);break;case"Validating":this.emit("core.field.validating",n);this.results["delete"](n);break;case"Valid":this.emit("core.field.valid",n);this.results.set(n,"Valid");break;case"Invalid":this.emit("core.field.invalid",n);this.results.set(n,"Invalid")}return this}},{key:"updateElementStatus",value:function(n,t,i,r){var f=this,u=this.elements[n],o=this.fields[n].validators,e=r?[r]:Object.keys(o);switch(i){case"NotValidated":e.forEach(function(i){return f.emit("core.validator.notvalidated",{element:t,elements:u,field:n,validator:i})});this.emit("core.element.notvalidated",{element:t,elements:u,field:n});break;case"Validating":e.forEach(function(i){return f.emit("core.validator.validating",{element:t,elements:u,field:n,validator:i})});this.emit("core.element.validating",{element:t,elements:u,field:n});break;case"Valid":e.forEach(function(i){return f.emit("core.validator.validated",{element:t,field:n,result:{message:o[i].message,valid:!0},validator:i})});this.emit("core.element.validated",{element:t,elements:u,field:n,valid:!0});break;case"Invalid":e.forEach(function(i){return f.emit("core.validator.validated",{element:t,field:n,result:{message:o[i].message,valid:!1},validator:i})});this.emit("core.element.validated",{element:t,elements:u,field:n,valid:!1})}return this}},{key:"resetForm",value:function(n){var t=this;return Object.keys(this.fields).forEach(function(i){return t.resetField(i,n)}),this.emit("core.form.reset",{reset:n}),this}},{key:"resetField",value:function(n,t){if(t){var i=this.elements[n],r=i[0].getAttribute("type");i.forEach(function(n){"radio"===r||"checkbox"===r?(n.removeAttribute("selected"),n.removeAttribute("checked"),n.checked=!1):(n.setAttribute("value",""),(n instanceof HTMLInputElement||n instanceof HTMLTextAreaElement)&&(n.value=""))})}return this.updateFieldStatus(n,"NotValidated"),this.emit("core.field.reset",{field:n,reset:t}),this}},{key:"revalidateField",value:function(n){return this.updateFieldStatus(n,"NotValidated"),this.validateField(n)}},{key:"disableValidator",value:function(n,t){return this.toggleValidator(!1,n,t)}},{key:"enableValidator",value:function(n,t){return this.toggleValidator(!0,n,t)}},{key:"updateValidatorOption",value:function(n,t,i,r){return this.fields[n]&&this.fields[n].validators&&this.fields[n].validators[t]&&(this.fields[n].validators[t][i]=r),this}},{key:"destroy",value:function(){var n=this;return Object.keys(this.plugins).forEach(function(t){return n.plugins[t].uninstall()}),this.ee.clear(),this.filter.clear(),this.results.clear(),this.plugins={},this}},{key:"setLocale",value:function(n,t){return this.locale=n,this.localization=t,this}},{key:"waterfall",value:function(n){return n.reduce(function(n,t){return n.then(function(n){return t().then(function(t){return n.push(t),n})})},Promise.resolve([]))}},{key:"queryElements",value:function(n){var t=this.fields[n].selector?"#"===this.fields[n].selector.charAt(0)?'[id="'.concat(this.fields[n].selector.substring(1),'"]'):this.fields[n].selector:'[name="'.concat(n,'"]');return[].slice.call(this.form.querySelectorAll(t))}},{key:"normalizeResult",value:function(n,t,i){var r=this.fields[n].validators[t];return Object.assign({},i,{message:i.message||r.message||(this.localization&&this.localization[t]&&this.localization[t]["default"]?this.localization[t]["default"]:"")||"The field ".concat(n," is not valid")})}},{key:"toggleValidator",value:function(n,t,i){var u=this,r=this.fields[t].validators;return i&&r&&r[i]?this.fields[t].validators[i].enabled=n:i||Object.keys(r).forEach(function(i){return u.fields[t].validators[i].enabled=n}),this.updateFieldStatus(t,"NotValidated",i)}}]),n}(),s=function(){function n(t){f(this,n);this.opts=t}return u(n,[{key:"setCore",value:function(n){return this.core=n,this}},{key:"install",value:function(){}},{key:"uninstall",value:function(){}}]),n}(),li={getFieldValue:d},ai=function(n){function t(n){var r;return f(this,t),r=c(this,e(t).call(this,n)),r.opts=n||{},r.validatorNameFilter=r.getValidatorName.bind(i(r)),r}return h(t,n),u(t,[{key:"install",value:function(){this.core.registerFilter("validator-name",this.validatorNameFilter)}},{key:"uninstall",value:function(){this.core.deregisterFilter("validator-name",this.validatorNameFilter)}},{key:"getValidatorName",value:function(n){return this.opts[n]||n}}]),t}(s),vi=function(n){function t(){var n;return f(this,t),n=c(this,e(t).call(this,{})),n.elementValidatedHandler=n.onElementValidated.bind(i(n)),n.fieldValidHandler=n.onFieldValid.bind(i(n)),n.fieldInvalidHandler=n.onFieldInvalid.bind(i(n)),n.messageDisplayedHandler=n.onMessageDisplayed.bind(i(n)),n}return h(t,n),u(t,[{key:"install",value:function(){this.core.on("core.field.valid",this.fieldValidHandler).on("core.field.invalid",this.fieldInvalidHandler).on("core.element.validated",this.elementValidatedHandler).on("plugins.message.displayed",this.messageDisplayedHandler)}},{key:"uninstall",value:function(){this.core.off("core.field.valid",this.fieldValidHandler).off("core.field.invalid",this.fieldInvalidHandler).off("core.element.validated",this.elementValidatedHandler).off("plugins.message.displayed",this.messageDisplayedHandler)}},{key:"onElementValidated",value:function(n){n.valid&&(n.element.setAttribute("aria-invalid","false"),n.element.removeAttribute("aria-describedby"))}},{key:"onFieldValid",value:function(n){var t=this.core.getElements(n);t&&t.forEach(function(n){n.setAttribute("aria-invalid","false");n.removeAttribute("aria-describedby")})}},{key:"onFieldInvalid",value:function(n){var t=this.core.getElements(n);t&&t.forEach(function(n){return n.setAttribute("aria-invalid","true")})}},{key:"onMessageDisplayed",value:function(n){var i;n.messageElement.setAttribute("role","alert");n.messageElement.setAttribute("aria-hidden","false");var r=this.core.getElements(n.field),u=r.indexOf(n.element),t="js-fv-".concat(n.field,"-").concat(u,"-").concat(Date.now(),"-message");n.messageElement.setAttribute("id",t);n.element.setAttribute("aria-describedby",t);i=n.element.getAttribute("type");("radio"===i||"checkbox"===i)&&r.forEach(function(n){return n.setAttribute("aria-describedby",t)})}}]),t}(s),yi=function(n){function i(n){var t;return f(this,i),t=c(this,e(i).call(this,n)),t.opts=Object.assign({},{html5Input:!1,pluginPrefix:"data-fvp-",prefix:"data-fv-"},n),t}return h(i,n),u(i,[{key:"install",value:function(){var t=this,n;this.parsePlugins();n=this.parseOptions();Object.keys(n).forEach(function(i){return t.core.addField(i,n[i])})}},{key:"parseOptions",value:function(){var i=this,r=this.opts.prefix,n={},t=this.core.getFields(),u=this.core.getFormElement(),f=[].slice.call(u.querySelectorAll("[name], [".concat(r,"field]")));return f.forEach(function(t){var f=i.parseElement(t),u;i.isEmptyOption(f)||(u=t.getAttribute("name")||t.getAttribute("".concat(r,"field")),n[u]=Object.assign({},n[u],f))}),Object.keys(n).forEach(function(i){Object.keys(n[i].validators).forEach(function(r){n[i].validators[r].enabled=n[i].validators[r].enabled||!1;t[i]&&t[i].validators&&t[i].validators[r]&&Object.assign(n[i].validators[r],t[i].validators[r])})}),Object.assign({},t,n)}},{key:"createPluginInstance",value:function(n,t){for(var u=n.split("."),i=window||this,r=0,f=u.length;r<f;r++)i=i[u[r]];if(typeof i!="function")throw new Error("the plugin ".concat(n," doesn't exist"));return new i(t)}},{key:"parsePlugins",value:function(){for(var e,o=this,u=this.core.getFormElement(),s=new RegExp("^".concat(this.opts.pluginPrefix,"([a-z0-9-]+)(___)*([a-z0-9-]+)*$")),h=u.attributes.length,i={},r=0;r<h;r++){var c=u.attributes[r].name,f=u.attributes[r].value,n=s.exec(c);n&&n.length===4&&(e=this.toCamelCase(n[1]),i[e]=Object.assign({},n[3]?t({},this.toCamelCase(n[3]),f):{enabled:""===f||"true"===f},i[e]))}Object.keys(i).forEach(function(n){var t=i[n],f=t.enabled,r=t["class"],u;f&&r&&(delete t.enabled,delete t.clazz,u=o.createPluginInstance(r,t),o.core.registerPlugin(n,u))})}},{key:"isEmptyOption",value:function(n){var t=n.validators;return Object.keys(t).length===0&&t.constructor===Object}},{key:"parseElement",value:function(n){for(var u,r,f,s,h=new RegExp("^".concat(this.opts.prefix,"([a-z0-9-]+)(___)*([a-z0-9-]+)*$")),c=n.attributes.length,i={},e=n.getAttribute("type"),o=0;o<c;o++){if(u=n.attributes[o].name,r=n.attributes[o].value,this.opts.html5Input)switch(!0){case"minlength"===u:i.stringLength=Object.assign({},{enabled:!0,min:parseInt(r,10)},i.stringLength);break;case"maxlength"===u:i.stringLength=Object.assign({},{enabled:!0,max:parseInt(r,10)},i.stringLength);break;case"pattern"===u:i.regexp=Object.assign({},{enabled:!0,regexp:r},i.regexp);break;case"required"===u:i.notEmpty=Object.assign({},{enabled:!0},i.notEmpty);break;case"type"===u&&"color"===r:i.color=Object.assign({},{enabled:!0,type:"hex"},i.color);break;case"type"===u&&"email"===r:i.emailAddress=Object.assign({},{enabled:!0},i.emailAddress);break;case"type"===u&&"url"===r:i.uri=Object.assign({},{enabled:!0},i.uri);break;case"type"===u&&"range"===r:i.between=Object.assign({},{enabled:!0,max:parseFloat(n.getAttribute("max")),min:parseFloat(n.getAttribute("min"))},i.between);break;case"min"===u&&e!=="date"&&e!=="range":i.greaterThan=Object.assign({},{enabled:!0,min:parseFloat(r)},i.greaterThan);break;case"max"===u&&e!=="date"&&e!=="range":i.lessThan=Object.assign({},{enabled:!0,max:parseFloat(r)},i.lessThan)}f=h.exec(u);f&&f.length===4&&(s=this.toCamelCase(f[1]),i[s]=Object.assign({},f[3]?t({},this.toCamelCase(f[3]),r):{enabled:""===r||"true"===r},i[s]))}return{validators:i}}},{key:"toUpperCase",value:function(n){return n.charAt(1).toUpperCase()}},{key:"toCamelCase",value:function(n){return n.replace(/-./g,this.toUpperCase)}}]),i}(s),pi=function(n){function t(){var n;return f(this,t),n=c(this,e(t).call(this,{})),n.onValidHandler=n.onFormValid.bind(i(n)),n}return h(t,n),u(t,[{key:"install",value:function(){var n=this.core.getFormElement();if(n.querySelectorAll('[type="submit"][name="submit"]').length)throw new Error("Do not use `submit` for the name attribute of submit button");this.core.on("core.form.valid",this.onValidHandler)}},{key:"uninstall",value:function(){this.core.off("core.form.valid",this.onValidHandler)}},{key:"onFormValid",value:function(){var n=this.core.getFormElement();n instanceof HTMLFormElement&&n.submit()}}]),t}(s),wi=function(n){function t(n){var r;return f(this,t),r=c(this,e(t).call(this,n)),r.opts=n||{},r.triggerExecutedHandler=r.onTriggerExecuted.bind(i(r)),r}return h(t,n),u(t,[{key:"install",value:function(){this.core.on("plugins.trigger.executed",this.triggerExecutedHandler)}},{key:"uninstall",value:function(){this.core.off("plugins.trigger.executed",this.triggerExecutedHandler)}},{key:"onTriggerExecuted",value:function(n){var t,e,o,r;if(this.opts[n.field]){var s=this.opts[n.field].split(" "),i=!0,u=!1,f=undefined;try{for(t=s[Symbol.iterator]();!(i=(e=t.next()).done);i=!0)o=e.value,r=o.trim(),this.opts[r]&&this.core.revalidateField(r)}catch(h){u=!0;f=h}finally{try{i||t["return"]==null||t["return"]()}finally{if(u)throw f;}}}}}]),t}(s),bi=function(n){function t(n){var r;return f(this,t),r=c(this,e(t).call(this,n)),r.opts=Object.assign({},{excluded:t.defaultIgnore},n),r.ignoreValidationFilter=r.ignoreValidation.bind(i(r)),r}return h(t,n),u(t,null,[{key:"defaultIgnore",value:function(n,t){var r=!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length),i=t.getAttribute("disabled");return i===""||i==="disabled"||t.getAttribute("type")==="hidden"||!r}}]),u(t,[{key:"install",value:function(){this.core.registerFilter("element-ignored",this.ignoreValidationFilter)}},{key:"uninstall",value:function(){this.core.deregisterFilter("element-ignored",this.ignoreValidationFilter)}},{key:"ignoreValidation",value:function(n,t,i){return this.opts.excluded.apply(this,[n,t,i])}}]),t}(s),ki=function(n){function t(n){var r;return f(this,t),r=c(this,e(t).call(this,n)),r.statuses=new Map,r.opts=Object.assign({},{onStatusChanged:function(){}},n),r.elementValidatingHandler=r.onElementValidating.bind(i(r)),r.elementValidatedHandler=r.onElementValidated.bind(i(r)),r.elementNotValidatedHandler=r.onElementNotValidated.bind(i(r)),r.elementIgnoredHandler=r.onElementIgnored.bind(i(r)),r.fieldAddedHandler=r.onFieldAdded.bind(i(r)),r.fieldRemovedHandler=r.onFieldRemoved.bind(i(r)),r}return h(t,n),u(t,[{key:"install",value:function(){this.core.on("core.element.validating",this.elementValidatingHandler).on("core.element.validated",this.elementValidatedHandler).on("core.element.notvalidated",this.elementNotValidatedHandler).on("core.element.ignored",this.elementIgnoredHandler).on("core.field.added",this.fieldAddedHandler).on("core.field.removed",this.fieldRemovedHandler)}},{key:"uninstall",value:function(){this.statuses.clear();this.core.off("core.element.validating",this.elementValidatingHandler).off("core.element.validated",this.elementValidatedHandler).off("core.element.notvalidated",this.elementNotValidatedHandler).off("core.element.ignored",this.elementIgnoredHandler).off("core.field.added",this.fieldAddedHandler).off("core.field.removed",this.fieldRemovedHandler)}},{key:"areFieldsValid",value:function(){return Array.from(this.statuses.values()).every(function(n){return n==="Valid"})}},{key:"getStatues",value:function(){return this.statuses}},{key:"onFieldAdded",value:function(n){this.statuses.set(n.field,"NotValidated")}},{key:"onFieldRemoved",value:function(n){this.statuses.has(n.field)&&this.statuses["delete"](n.field);this.opts.onStatusChanged(this.areFieldsValid())}},{key:"onElementValidating",value:function(n){this.statuses.set(n.field,"Validating");this.opts.onStatusChanged(!1)}},{key:"onElementValidated",value:function(n){if(this.statuses.set(n.field,n.valid?"Valid":"Invalid"),n.valid)this.opts.onStatusChanged(this.areFieldsValid());else this.opts.onStatusChanged(!1)}},{key:"onElementNotValidated",value:function(n){this.statuses.set(n.field,"NotValidated");this.opts.onStatusChanged(!1)}},{key:"onElementIgnored",value:function(n){this.statuses.set(n.field,"Ignored");this.opts.onStatusChanged(!1)}}]),t}(s),w=function(n){function o(n){var t;return f(this,o),t=c(this,e(o).call(this,n)),t.messages=new Map,t.defaultContainer=document.createElement("div"),t.opts=Object.assign({},{container:function(){return t.defaultContainer}},n),t.elementIgnoredHandler=t.onElementIgnored.bind(i(t)),t.fieldAddedHandler=t.onFieldAdded.bind(i(t)),t.fieldRemovedHandler=t.onFieldRemoved.bind(i(t)),t.validatorValidatedHandler=t.onValidatorValidated.bind(i(t)),t.validatorNotValidatedHandler=t.onValidatorNotValidated.bind(i(t)),t}return h(o,n),u(o,[{key:"install",value:function(){this.core.getFormElement().appendChild(this.defaultContainer);this.core.on("core.element.ignored",this.elementIgnoredHandler).on("core.field.added",this.fieldAddedHandler).on("core.field.removed",this.fieldRemovedHandler).on("core.validator.validated",this.validatorValidatedHandler).on("core.validator.notvalidated",this.validatorNotValidatedHandler)}},{key:"uninstall",value:function(){this.core.getFormElement().removeChild(this.defaultContainer);this.messages.forEach(function(n){return n.parentNode.removeChild(n)});this.messages.clear();this.core.off("core.element.ignored",this.elementIgnoredHandler).off("core.field.added",this.fieldAddedHandler).off("core.field.removed",this.fieldRemovedHandler).off("core.validator.validated",this.validatorValidatedHandler).off("core.validator.notvalidated",this.validatorNotValidatedHandler)}},{key:"onFieldAdded",value:function(n){var i=this,t=n.elements;t&&(t.forEach(function(n){var t=i.messages.get(n);t&&(t.parentNode.removeChild(t),i.messages["delete"](n))}),this.prepareFieldContainer(n.field,t))}},{key:"onFieldRemoved",value:function(n){var t=this,i,r;n.elements.length&&n.field&&(i=n.elements[0].getAttribute("type"),r="radio"===i||"checkbox"===i?[n.elements[0]]:n.elements,r.forEach(function(n){if(t.messages.has(n)){var i=t.messages.get(n);i.parentNode.removeChild(i);t.messages["delete"](n)}}))}},{key:"prepareFieldContainer",value:function(n,t){var r=this,i;t.length&&(i=t[0].getAttribute("type"),"radio"===i||"checkbox"===i?this.prepareElementContainer(n,t[0],t):t.forEach(function(i){return r.prepareElementContainer(n,i,t)}))}},{key:"prepareElementContainer",value:function(n,t,i){var e,u,f;switch(!0){case"string"==typeof this.opts.container:u=this.opts.container;u="#"===u.charAt(0)?'[id="'.concat(u.substring(1),'"]'):u;e=this.core.getFormElement().querySelector(u);break;default:e=this.opts.container(n,t)}f=document.createElement("div");e.appendChild(f);r(f,{"fv-plugins-message-container":!0});this.core.emit("plugins.message.placed",{element:t,elements:i,field:n,messageElement:f});this.messages.set(t,f)}},{key:"onValidatorValidated",value:function(n){var s=n.elements,e=n.element.getAttribute("type"),o="radio"===e||"checkbox"===e?s[0]:n.element,f,i,u;this.messages.has(o)&&(f=this.messages.get(o),i=f.querySelector('[data-field="'.concat(n.field,'"][data-validator="').concat(n.validator,'"]')),i||n.result.valid?i&&!n.result.valid?(i.innerHTML=n.result.message,this.core.emit("plugins.message.displayed",{element:n.element,field:n.field,message:n.result.message,messageElement:i,meta:n.result.meta,validator:n.validator})):i&&n.result.valid&&f.removeChild(i):(u=document.createElement("div"),u.innerHTML=n.result.message,u.setAttribute("data-field",n.field),u.setAttribute("data-validator",n.validator),this.opts.clazz&&r(u,t({},this.opts.clazz,!0)),f.appendChild(u),this.core.emit("plugins.message.displayed",{element:n.element,field:n.field,message:n.result.message,messageElement:u,meta:n.result.meta,validator:n.validator})))}},{key:"onValidatorNotValidated",value:function(n){var f=n.elements,r=n.element.getAttribute("type"),u="radio"===r||"checkbox"===r?f[0]:n.element,t,i;this.messages.has(u)&&(t=this.messages.get(u),i=t.querySelector('[data-field="'.concat(n.field,'"][data-validator="').concat(n.validator,'"]')),i&&t.removeChild(i))}},{key:"onElementIgnored",value:function(n){var f=n.elements,i=n.element.getAttribute("type"),r="radio"===i||"checkbox"===i?f[0]:n.element,t,u;this.messages.has(r)&&(t=this.messages.get(r),u=[].slice.call(t.querySelectorAll('[data-field="'.concat(n.field,'"]'))),u.forEach(function(n){t.removeChild(n)}))}}],[{key:"getClosestContainer",value:function(n,t,i){for(var r=n;r;){if(r===t)break;if(r=r.parentElement,i.test(r.className))break}return r}}]),o}(s),tr=function(n){function o(n){var t;return f(this,o),t=c(this,e(o).call(this,n)),t.results=new Map,t.containers=new Map,t.opts=Object.assign({},{defaultMessageContainer:!0,eleInvalidClass:"",eleValidClass:"",rowClasses:"",rowValidatingClass:""},n),t.elementIgnoredHandler=t.onElementIgnored.bind(i(t)),t.elementValidatingHandler=t.onElementValidating.bind(i(t)),t.elementValidatedHandler=t.onElementValidated.bind(i(t)),t.elementNotValidatedHandler=t.onElementNotValidated.bind(i(t)),t.iconPlacedHandler=t.onIconPlaced.bind(i(t)),t.fieldAddedHandler=t.onFieldAdded.bind(i(t)),t.fieldRemovedHandler=t.onFieldRemoved.bind(i(t)),t}return h(o,n),u(o,[{key:"install",value:function(){var n,i=this;r(this.core.getFormElement(),(n={},t(n,this.opts.formClass,!0),t(n,"fv-plugins-framework",!0),n));this.core.on("core.element.ignored",this.elementIgnoredHandler).on("core.element.validating",this.elementValidatingHandler).on("core.element.validated",this.elementValidatedHandler).on("core.element.notvalidated",this.elementNotValidatedHandler).on("plugins.icon.placed",this.iconPlacedHandler).on("core.field.added",this.fieldAddedHandler).on("core.field.removed",this.fieldRemovedHandler);this.opts.defaultMessageContainer&&this.core.registerPlugin("___frameworkMessage",new w({clazz:this.opts.messageClass,container:function(n,t){var r="string"==typeof i.opts.rowSelector?i.opts.rowSelector:i.opts.rowSelector(n,t),u=p(t,r);return w.getClosestContainer(t,u,i.opts.rowPattern)}}))}},{key:"uninstall",value:function(){var n;this.results.clear();this.containers.clear();r(this.core.getFormElement(),(n={},t(n,this.opts.formClass,!1),t(n,"fv-plugins-framework",!1),n));this.core.off("core.element.ignored",this.elementIgnoredHandler).off("core.element.validating",this.elementValidatingHandler).off("core.element.validated",this.elementValidatedHandler).off("core.element.notvalidated",this.elementNotValidatedHandler).off("plugins.icon.placed",this.iconPlacedHandler).off("core.field.added",this.fieldAddedHandler).off("core.field.removed",this.fieldRemovedHandler)}},{key:"onIconPlaced",value:function(){}},{key:"onFieldAdded",value:function(n){var i=this,u=n.elements;u&&(u.forEach(function(n){var f=i.containers.get(n),u;f&&(r(f,(u={},t(u,i.opts.rowInvalidClass,!1),t(u,i.opts.rowValidatingClass,!1),t(u,i.opts.rowValidClass,!1),t(u,"fv-plugins-icon-container",!1),u)),i.containers["delete"](n))}),this.prepareFieldContainer(n.field,u))}},{key:"onFieldRemoved",value:function(n){var i=this;n.elements.forEach(function(n){var f=i.containers.get(n),u;f&&r(f,(u={},t(u,i.opts.rowInvalidClass,!1),t(u,i.opts.rowValidatingClass,!1),t(u,i.opts.rowValidClass,!1),u))})}},{key:"prepareFieldContainer",value:function(n,t){var r=this,i;t.length&&(i=t[0].getAttribute("type"),"radio"===i||"checkbox"===i?this.prepareElementContainer(n,t[0]):t.forEach(function(t){return r.prepareElementContainer(n,t)}))}},{key:"prepareElementContainer",value:function(n,i){var e="string"==typeof this.opts.rowSelector?this.opts.rowSelector:this.opts.rowSelector(n,i),f=p(i,e),u;f!==i&&(r(f,(u={},t(u,this.opts.rowClasses,!0),t(u,"fv-plugins-icon-container",!0),u)),this.containers.set(i,f))}},{key:"onElementValidating",value:function(n){var e=n.elements,u=n.element.getAttribute("type"),o="radio"===u||"checkbox"===u?e[0]:n.element,f=this.containers.get(o),i;f&&r(f,(i={},t(i,this.opts.rowInvalidClass,!1),t(i,this.opts.rowValidatingClass,!0),t(i,this.opts.rowValidClass,!1),i))}},{key:"onElementNotValidated",value:function(n){this.removeClasses(n.element,n.elements)}},{key:"onElementIgnored",value:function(n){this.removeClasses(n.element,n.elements)}},{key:"removeClasses",value:function(n,i){var f,o=n.getAttribute("type"),s="radio"===o||"checkbox"===o?i[0]:n,e,u;r(s,(f={},t(f,this.opts.eleValidClass,!1),t(f,this.opts.eleInvalidClass,!1),f));e=this.containers.get(s);e&&r(e,(u={},t(u,this.opts.rowInvalidClass,!1),t(u,this.opts.rowValidatingClass,!1),t(u,this.opts.rowValidClass,!1),u))}},{key:"onElementValidated",value:function(n){var e,c=this,l=n.elements,h=n.element.getAttribute("type"),o="radio"===h||"checkbox"===h?l[0]:n.element,i,u,s,f;r(o,(e={},t(e,this.opts.eleValidClass,n.valid),t(e,this.opts.eleInvalidClass,!n.valid),e));i=this.containers.get(o);i&&(n.valid?(this.results["delete"](o),s=!0,this.containers.forEach(function(n,t){n===i&&c.results.get(t)===!1&&(s=!1)}),s&&r(i,(f={},t(f,this.opts.rowInvalidClass,!1),t(f,this.opts.rowValidatingClass,!1),t(f,this.opts.rowValidClass,!0),f))):(this.results.set(o,!1),r(i,(u={},t(u,this.opts.rowInvalidClass,!0),t(u,this.opts.rowValidatingClass,!1),t(u,this.opts.rowValidClass,!1),u))))}}]),o}(s),ir=function(n){function o(n){var t;return f(this,o),t=c(this,e(o).call(this,n)),t.icons=new Map,t.opts=Object.assign({},{invalid:"fv-plugins-icon--invalid",onPlaced:function(){},onSet:function(){},valid:"fv-plugins-icon--valid",validating:"fv-plugins-icon--validating"},n),t.elementValidatingHandler=t.onElementValidating.bind(i(t)),t.elementValidatedHandler=t.onElementValidated.bind(i(t)),t.elementNotValidatedHandler=t.onElementNotValidated.bind(i(t)),t.elementIgnoredHandler=t.onElementIgnored.bind(i(t)),t.fieldAddedHandler=t.onFieldAdded.bind(i(t)),t}return h(o,n),u(o,[{key:"install",value:function(){this.core.on("core.element.validating",this.elementValidatingHandler).on("core.element.validated",this.elementValidatedHandler).on("core.element.notvalidated",this.elementNotValidatedHandler).on("core.element.ignored",this.elementIgnoredHandler).on("core.field.added",this.fieldAddedHandler)}},{key:"uninstall",value:function(){this.icons.forEach(function(n){return n.parentNode.removeChild(n)});this.icons.clear();this.core.off("core.element.validating",this.elementValidatingHandler).off("core.element.validated",this.elementValidatedHandler).off("core.element.notvalidated",this.elementNotValidatedHandler).off("core.element.ignored",this.elementIgnoredHandler).off("core.field.added",this.fieldAddedHandler)}},{key:"onFieldAdded",value:function(n){var i=this,t=n.elements;t&&(t.forEach(function(n){var t=i.icons.get(n);t&&(t.parentNode.removeChild(t),i.icons["delete"](n))}),this.prepareFieldIcon(n.field,t))}},{key:"prepareFieldIcon",value:function(n,t){var r=this,i;t.length&&(i=t[0].getAttribute("type"),"radio"===i||"checkbox"===i?this.prepareElementIcon(n,t[0]):t.forEach(function(t){return r.prepareElementIcon(n,t)}))}},{key:"prepareElementIcon",value:function(n,t){var i=document.createElement("i"),u;i.setAttribute("data-field",n);t.parentNode.insertBefore(i,t.nextSibling);r(i,{"fv-plugins-icon":!0});u={classes:{invalid:this.opts.invalid,valid:this.opts.valid,validating:this.opts.validating},element:t,field:n,iconElement:i};this.core.emit("plugins.icon.placed",u);this.opts.onPlaced(u);this.icons.set(t,i)}},{key:"onElementValidating",value:function(n){var i,u=this.setClasses(n.field,n.element,n.elements,(i={},t(i,this.opts.invalid,!1),t(i,this.opts.valid,!1),t(i,this.opts.validating,!0),i)),r={element:n.element,field:n.field,iconElement:u,status:"Validating"};this.core.emit("plugins.icon.set",r);this.opts.onSet(r)}},{key:"onElementValidated",value:function(n){var i,u=this.setClasses(n.field,n.element,n.elements,(i={},t(i,this.opts.invalid,!n.valid),t(i,this.opts.valid,n.valid),t(i,this.opts.validating,!1),i)),r={element:n.element,field:n.field,iconElement:u,status:n.valid?"Valid":"Invalid"};this.core.emit("plugins.icon.set",r);this.opts.onSet(r)}},{key:"onElementNotValidated",value:function(n){var i,u=this.setClasses(n.field,n.element,n.elements,(i={},t(i,this.opts.invalid,!1),t(i,this.opts.valid,!1),t(i,this.opts.validating,!1),i)),r={element:n.element,field:n.field,iconElement:u,status:"NotValidated"};this.core.emit("plugins.icon.set",r);this.opts.onSet(r)}},{key:"onElementIgnored",value:function(n){var i,u=this.setClasses(n.field,n.element,n.elements,(i={},t(i,this.opts.invalid,!1),t(i,this.opts.valid,!1),t(i,this.opts.validating,!1),i)),r={element:n.element,field:n.field,iconElement:u,status:"Ignored"};this.core.emit("plugins.icon.set",r);this.opts.onSet(r)}},{key:"setClasses",value:function(n,t,i,u){var e=t.getAttribute("type"),o="radio"===e||"checkbox"===e?i[0]:t,f;return this.icons.has(o)?(f=this.icons.get(o),r(f,u),f):null}}]),o}(s),rr=function(n){function t(n){var r;return f(this,t),r=c(this,e(t).call(this,n)),r.invalidFields=new Map,r.opts=Object.assign({},{enabled:!0},n),r.validatorHandler=r.onValidatorValidated.bind(i(r)),r.shouldValidateFilter=r.shouldValidate.bind(i(r)),r.fieldAddedHandler=r.onFieldAdded.bind(i(r)),r.elementNotValidatedHandler=r.onElementNotValidated.bind(i(r)),r.elementValidatingHandler=r.onElementValidating.bind(i(r)),r}return h(t,n),u(t,[{key:"install",value:function(){this.core.on("core.validator.validated",this.validatorHandler).on("core.field.added",this.fieldAddedHandler).on("core.element.notvalidated",this.elementNotValidatedHandler).on("core.element.validating",this.elementValidatingHandler).registerFilter("field-should-validate",this.shouldValidateFilter)}},{key:"uninstall",value:function(){this.invalidFields.clear();this.core.off("core.validator.validated",this.validatorHandler).off("core.field.added",this.fieldAddedHandler).off("core.element.notvalidated",this.elementNotValidatedHandler).off("core.element.validating",this.elementValidatingHandler).deregisterFilter("field-should-validate",this.shouldValidateFilter)}},{key:"shouldValidate",value:function(n,t,i,r){var u=(this.opts.enabled===!0||this.opts.enabled[n]===!0)&&this.invalidFields.has(t)&&!!this.invalidFields.get(t).length&&this.invalidFields.get(t).indexOf(r)===-1;return!u}},{key:"onValidatorValidated",value:function(n){var t=this.invalidFields.has(n.element)?this.invalidFields.get(n.element):[],i=t.indexOf(n.validator);n.result.valid&&i>=0?t.splice(i,1):n.result.valid||i!==-1||t.push(n.validator);this.invalidFields.set(n.element,t)}},{key:"onFieldAdded",value:function(n){n.elements&&this.clearInvalidFields(n.elements)}},{key:"onElementNotValidated",value:function(n){this.clearInvalidFields(n.elements)}},{key:"onElementValidating",value:function(n){this.clearInvalidFields(n.elements)}},{key:"clearInvalidFields",value:function(n){var t=this;n.forEach(function(n){return t.invalidFields["delete"](n)})}}]),t}(s),ur=function(n){function t(n){var r;return f(this,t),r=c(this,e(t).call(this,n)),r.isFormValid=!1,r.opts=Object.assign({},{aspNetButton:!1,selector:'[type="submit"]:not([formnovalidate])'},n),r.submitHandler=r.handleSubmitEvent.bind(i(r)),r.buttonClickHandler=r.handleClickEvent.bind(i(r)),r}return h(t,n),u(t,[{key:"install",value:function(){var t=this,n;this.core.getFormElement()instanceof HTMLFormElement&&(n=this.core.getFormElement(),this.selectorButtons=[].slice.call(n.querySelectorAll(this.opts.selector)),this.submitButtons=[].slice.call(n.querySelectorAll('[type="submit"]')),n.setAttribute("novalidate","novalidate"),n.addEventListener("submit",this.submitHandler),this.submitButtons.forEach(function(n){n.addEventListener("click",t.buttonClickHandler)}))}},{key:"uninstall",value:function(){var t=this,n=this.core.getFormElement();n instanceof HTMLFormElement&&n.removeEventListener("submit",this.submitHandler);this.submitButtons.forEach(function(n){n.removeEventListener("click",t.buttonClickHandler)})}},{key:"handleSubmitEvent",value:function(n){this.validateForm(n)}},{key:"handleClickEvent",value:function(n){var t=n.currentTarget,i;t instanceof HTMLElement&&this.selectorButtons.indexOf(t)!==-1&&(this.opts.aspNetButton&&this.isFormValid===!0||(i=this.core.getFormElement(),i.removeEventListener("submit",this.submitHandler),this.clickedButton=n.target,this.validateForm(n)))}},{key:"validateForm",value:function(n){var t=this;n.preventDefault();this.core.validate().then(function(n){n==="Valid"&&t.opts.aspNetButton&&!t.isFormValid&&t.clickedButton&&(t.isFormValid=!0,t.clickedButton.removeEventListener("click",t.buttonClickHandler),t.clickedButton.click())})}}]),t}(s),fr=function(n){function o(n){var t;return f(this,o),t=c(this,e(o).call(this,n)),t.messages=new Map,t.opts=Object.assign({},{placement:"top",trigger:"click"},n),t.iconPlacedHandler=t.onIconPlaced.bind(i(t)),t.validatorValidatedHandler=t.onValidatorValidated.bind(i(t)),t.elementValidatedHandler=t.onElementValidated.bind(i(t)),t.documentClickHandler=t.onDocumentClicked.bind(i(t)),t}return h(o,n),u(o,[{key:"install",value:function(){this.tip=document.createElement("div");r(this.tip,t({"fv-plugins-tooltip":!0},"fv-plugins-tooltip--".concat(this.opts.placement),!0));document.body.appendChild(this.tip);this.core.on("plugins.icon.placed",this.iconPlacedHandler).on("core.validator.validated",this.validatorValidatedHandler).on("core.element.validated",this.elementValidatedHandler);"click"===this.opts.trigger&&document.addEventListener("click",this.documentClickHandler)}},{key:"uninstall",value:function(){this.messages.clear();document.body.removeChild(this.tip);this.core.off("plugins.icon.placed",this.iconPlacedHandler).off("core.validator.validated",this.validatorValidatedHandler).off("core.element.validated",this.elementValidatedHandler);"click"===this.opts.trigger&&document.removeEventListener("click",this.documentClickHandler)}},{key:"onIconPlaced",value:function(n){var t=this;r(n.iconElement,{"fv-plugins-tooltip-icon":!0});switch(this.opts.trigger){case"hover":n.iconElement.addEventListener("mouseenter",function(i){return t.show(n.element,i)});n.iconElement.addEventListener("mouseleave",function(){return t.hide()});break;case"click":default:n.iconElement.addEventListener("click",function(i){return t.show(n.element,i)})}}},{key:"onValidatorValidated",value:function(n){if(!n.result.valid){var i=n.elements,t=n.element.getAttribute("type"),r="radio"===t||"checkbox"===t?i[0]:n.element;this.messages.set(r,n.result.message)}}},{key:"onElementValidated",value:function(n){if(n.valid){var i=n.elements,t=n.element.getAttribute("type"),r="radio"===t||"checkbox"===t?i[0]:n.element;this.messages["delete"](r)}}},{key:"onDocumentClicked",value:function(){this.hide()}},{key:"show",value:function(n,t){if(t.preventDefault(),t.stopPropagation(),this.messages.has(n)){r(this.tip,{"fv-plugins-tooltip--hide":!1});this.tip.innerHTML='<span class="fv-plugins-tooltip__content">'.concat(this.messages.get(n),"<\/span>");var e=t.target,i=e.getBoundingClientRect(),u=0,f=0;switch(this.opts.placement){case"top":default:u=i.top-i.height;f=i.left+i.width/2-this.tip.clientWidth/2;break;case"top-left":u=i.top-i.height;f=i.left;break;case"top-right":u=i.top-i.height;f=i.left+i.width-this.tip.clientWidth;break;case"bottom":u=i.top+i.height;f=i.left+i.width/2-this.tip.clientWidth/2;break;case"bottom-left":u=i.top+i.height;f=i.left;break;case"bottom-right":u=i.top+i.height;f=i.left+i.width-this.tip.clientWidth;break;case"left":u=i.top+i.height/2-this.tip.clientHeight/2;f=i.left-this.tip.clientWidth;break;case"right":u=i.top+i.height/2-this.tip.clientHeight/2;f=i.left+i.width}u=u+document.body.scrollTop;f=f+document.body.scrollLeft;this.tip.setAttribute("style","top: ".concat(u,"px; left: ").concat(f,"px"))}}},{key:"hide",value:function(){r(this.tip,{"fv-plugins-tooltip--hide":!0})}}]),o}(s),er=function(n){function t(n){var r,u;return f(this,t),r=c(this,e(t).call(this,n)),r.handlers=[],r.timers=new Map,r.ieVersion=function(){for(var n=3,t=document.createElement("div"),i=t.all||[];t.innerHTML="<!--[if gt IE "+ ++n+"]><br><![endif]-->",i[0];);return n>4?n:document.documentMode}(),u=document.createElement("div"),r.defaultEvent=r.ieVersion===9||!("oninput"in u)?"keyup":"input",r.opts=Object.assign({},{delay:0,event:r.defaultEvent,threshold:0},n),r.fieldAddedHandler=r.onFieldAdded.bind(i(r)),r.fieldRemovedHandler=r.onFieldRemoved.bind(i(r)),r}return h(t,n),u(t,[{key:"install",value:function(){this.core.on("core.field.added",this.fieldAddedHandler).on("core.field.removed",this.fieldRemovedHandler)}},{key:"uninstall",value:function(){this.handlers.forEach(function(n){return n.element.removeEventListener(n.event,n.handler)});this.handlers=[];this.timers.forEach(function(n){return window.clearTimeout(n)});this.timers.clear();this.core.off("core.field.added",this.fieldAddedHandler).off("core.field.removed",this.fieldRemovedHandler)}},{key:"prepareHandler",value:function(n,t){var i=this;t.forEach(function(t){var r=[];switch(!0){case!!i.opts.event&&i.opts.event[n]===!1:r=[];break;case!!i.opts.event&&!!i.opts.event[n]:r=i.opts.event[n].split(" ");break;case"string"==typeof i.opts.event&&i.opts.event!==i.defaultEvent:r=i.opts.event.split(" ");break;default:var u=t.getAttribute("type"),f=t.tagName.toLowerCase(),e="radio"===u||"checkbox"===u||"file"===u||"select"===f?"change":i.ieVersion>=10&&t.getAttribute("placeholder")?"keyup":i.defaultEvent;r=[e]}r.forEach(function(r){var u=function(r){return i.handleEvent(r,n,t)};i.handlers.push({element:t,event:r,field:n,handler:u});t.addEventListener(r,u)})})}},{key:"handleEvent",value:function(n,t,i){var e=this,r,u,f;this.exceedThreshold(t,i)&&(r=function(){return e.core.validateElement(t,i).then(function(){e.core.emit("plugins.trigger.executed",{element:i,event:n,field:t})})},u=this.opts.delay[t]||this.opts.delay,u===0?r():(f=this.timers.get(i),f&&window.clearTimeout(f),this.timers.set(i,window.setTimeout(r,u*1e3))))}},{key:"onFieldAdded",value:function(n){this.handlers.filter(function(t){return t.field===n.field}).forEach(function(n){return n.element.removeEventListener(n.event,n.handler)});this.prepareHandler(n.field,n.elements)}},{key:"onFieldRemoved",value:function(n){this.handlers.filter(function(t){return t.field===n.field&&n.elements.indexOf(t.element)>=0}).forEach(function(n){return n.element.removeEventListener(n.event,n.handler)})}},{key:"exceedThreshold",value:function(n,t){var i=this.opts.threshold[n]===0||this.opts.threshold===0?!1:this.opts.threshold[n]||this.opts.threshold,r,u;return i?(r=t.getAttribute("type"),["button","checkbox","file","hidden","image","radio","reset","submit"].indexOf(r)!==-1)?!0:(u=this.core.getElementValue(n,t),u.length>=i):!0}}]),t}(s),or={Alias:ai,Aria:vi,Declarative:yi,DefaultSubmit:pi,Dependency:wi,Excluded:bi,FieldStatus:ki,Framework:tr,Icon:ir,Message:w,Sequence:rr,SubmitButton:ur,Tooltip:fr,Trigger:er},hr={call:v,classSet:r,closest:p,fetch:nt,format:o,hasClass:sr,isValidDate:g};n.Plugin=s;n.algorithms=ut;n.filters=li;n.formValidation=ci;n.locales={};n.plugins=or;n.utils=hr;n.validators=y;Object.defineProperty(n,"__esModule",{value:!0})});
(function(n,t){typeof exports=="object"&&typeof module!="undefined"?module.exports=t():typeof define=="function"&&define.amd?define(t):(n=n||self,n.FormValidation=n.FormValidation||{},n.FormValidation.plugins=n.FormValidation.plugins||{},n.FormValidation.plugins.Bootstrap3=t())})(this,function(){"use strict";function u(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}function r(n,t){for(var i,r=0;r<t.length;r++)i=t[r],i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(n,i.key,i)}function f(n,t,i){return t&&r(n.prototype,t),i&&r(n,i),n}function e(n,i){if(typeof i!="function"&&i!==null)throw new TypeError("Super expression must either be null or a function");n.prototype=Object.create(i&&i.prototype,{constructor:{value:n,writable:!0,configurable:!0}});i&&t(n,i)}function n(t){return n=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},n(t)}function t(n,i){return t=Object.setPrototypeOf||function(n,t){return n.__proto__=t,n},t(n,i)}function o(n){if(n===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return n}function s(n,t){return t&&(typeof t=="object"||typeof t=="function")?t:o(n)}var h=FormValidation.utils.classSet,i=FormValidation.utils.hasClass,c=FormValidation.plugins.Framework;return function(t){function r(t){return u(this,r),s(this,n(r).call(this,Object.assign({},{formClass:"fv-plugins-bootstrap3",messageClass:"help-block",rowClasses:"has-feedback",rowInvalidClass:"has-error",rowPattern:/^(.*)(col|offset)-(xs|sm|md|lg)-[0-9]+(.*)$/,rowSelector:".form-group",rowValidClass:"has-success"},t)))}return e(r,t),f(r,[{key:"onIconPlaced",value:function(n){var t,r,u;h(n.iconElement,{"form-control-feedback":!0});t=n.element.parentElement;i(t,"input-group")&&t.parentElement.insertBefore(n.iconElement,t.nextSibling);r=n.element.getAttribute("type");("checkbox"===r||"radio"===r)&&(u=t.parentElement,i(t,r)?t.parentElement.insertBefore(n.iconElement,t.nextSibling):i(t.parentElement,r)&&u.parentElement.insertBefore(n.iconElement,u.nextSibling))}}]),r}(c)});
(function(n){"use strict";function i(n){return i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(n){return typeof n}:function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},i(n)}n=n&&n.hasOwnProperty("default")?n["default"]:n;var r=FormValidation.formValidation,t=n.fn.jquery.split(" ")[0].split(".");if(+t[0]<2&&+t[1]<9||+t[0]==1&&+t[1]==9&&+t[2]<1)throw new Error("The J plugin requires jQuery version 1.9.1 or higher");n.fn.formValidation=function(t){var u=arguments;return this.each(function(){var e=n(this),f=e.data("formValidation"),o="object"===i(t)&&t;f||(f=r(this,o),e.data("formValidation",f).data("FormValidation",f));"string"==typeof t&&f[t].apply(f,Array.prototype.slice.call(u,1))})}})(jQuery);
$(function(){$("form.cms-form").each(function(){var n=$(this),i=n.closest(".form-div"),r=i.data("form-id"),t=null,u="#response-"+r;$(".response-div").each(function(){$(this).data("form-id")===r&&(t=$(this))});n.formValidation({fields:{firstname:{validators:{notEmpty:{message:"Please enter your first name."}}},lastname:{validators:{notEmpty:{message:"Please enter your first name."}}},homestreet:{validators:{notEmpty:{message:"Please enter your street address."}}},homecity:{validators:{notEmpty:{message:"Please enter your city."}}},homezip:{validators:{notEmpty:{message:"Please enter your postal code."}}},billingstreet:{validators:{notEmpty:{message:"Please enter your street address."}}},billingcity:{validators:{notEmpty:{message:"Please enter your city."}}},billingzip:{validators:{notEmpty:{message:"Please enter your postal code."}}},birthdate:{validators:{notEmpty:{message:"Please enter your date of birth."},date:{format:"YYYY/MM/DD",message:"Please enter a valid date"}}},company:{validators:{notEmpty:{message:"Please enter your company name."}}},whoareyou:{validators:{notEmpty:{message:"Please make a selection."}}},website:{validators:{notEmpty:{message:"Please enter your website URL."}}},email:{validators:{notEmpty:{message:"Please enter your email address."},remote:{message:"Please enter a valid email.",method:"POST",url:"/Util/Address/ValidateEmailDomain"}}},confirmEmail:{validators:{callback:{message:"Please verify your email.",callback:function(t){return t.value.toLowerCase()==n.find('input[name="email"]').val().toLowerCase()}}}},phone:{validators:{notEmpty:{message:"Please enter your phone number."},remote:{data:function(){var t=n.find('select[name="country"]').val();return(t===""||t===undefined)&&(t=window.geoData.CountryISO2),(t===""||t===undefined)&&(t="US"),{countryIso2:t}},message:"Please enter a valid phone number.",method:"POST",url:"/Util/Address/ValidatePhoneNumber"}}},comments:{validators:{notEmpty:{message:"Please enter your comments."}}}},plugins:{trigger:new FormValidation.plugins.Trigger({delay:{email:1,phone:1}}),bootstrap3:new FormValidation.plugins.Bootstrap3,submitButton:new FormValidation.plugins.SubmitButton,icon:new FormValidation.plugins.Icon({valid:"fa fa-check",invalid:"fa fa-times",validating:"fa fa-refresh"})}}).data("formValidation").on("core.validator.validated",function(t){if(t.field==="phone"&&t.validator==="remote"&&t.result.valid){var i=n.find("#phone");i.val(t.result.meta.phoneNumber)}}).on("core.form.valid",function(){$.post("/Form/Process",n.serialize(),function(n){var r=n.retSubHead,f=n.retHead,e=n.retBody;t.find(".response-subhead").text(r);t.find(".response-head").text(f);t.find(".response-body").html(e);i.slideUp(function(){t.slideDown();var n=$(u).offset().top-150;$("html,body").animate({scrollTop:n},1500,function(){})})})})});$("#comment").on("input",function(){var t=$(this).attr("maxlength"),i=$(this).val().length,n=$(this).closest(".form-group").find("span[name='charCount']");n.length>0&&n.text(t-i)});$("select[name='country']").change(function(){var n=$("option:selected",this),t=$(".phone-country-code");t.text("+"+n.data("phone-country-code"))});$("input, select, textarea").each(function(){if($(this).attr("data-fv-notempty")){var n=this.id;$("[for="+n+"]").addClass("required")}});$("#pageUrl").val(window.location.href)});
