!function(e,t){typeof exports==='object'&&typeof module!=='undefined'?t(exports):typeof define==='function'&&define.amd?define(['exports'],t):(t((e.FormValidation={})))}(this,(function(e){"use strict";function t(e){var t=e.length,n=[[0,1,2,3,4,5,6,7,8,9],[0,2,4,6,8,1,3,5,7,9]],l=0,i=0;while(t--)i+=n[l][parseInt(e.charAt(t),10)],l=1-l;return i%10===0&&i>0}function n(e){var t=e.length,n=5;for(var l=0;l1&&arguments[1]!==void 0?arguments[1]:'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',n=e.length,l=t.length,i=Math.floor(l/2);for(var a=0;a1?t-1:0),l=1;l=0&&this.fns[e].splice(n,1)}},on:function(e,t){(this.fns[e]=this.fns[e]||[]).push(t)}}}function r(){return{filters:{},add:function(e,t){(this.filters[e]=this.filters[e]||[]).push(t)},clear:function(){this.filters={}},execute:function(e,t,n){if(!this.filters[e]||!this.filters[e].length){return t}var l=t,i=this.filters[e],a=i.length;for(var r=0;r=0?d.options.item(o).value:'';case 'input':if('radio'===i||'checkbox'===i){var r=l.filter(function(e){return e.checked}).length;return r===0?'':r+''}else{return n.value};default:return''}}function c(e,t){var n=Array.isArray(t)?t:[t],l=e;n.forEach(function(e){l=l.replace('%s',e)});return l}function u(){var e=function(e){return parseFloat((''+e).replace(',','.'))};return{validate:function(t){var n=t.value;if(n===''){return{valid:!0}}var l=Object.assign({},{inclusive:!0},t.options),i=e(l.min),a=e(l.max);return l.inclusive?{message:t.l10n?c(l.message||t.l10n.between.default,[''+i,''+a]):l.message,valid:parseFloat(n)>=i&&parseFloat(n)<=a}:{message:t.l10n?c(l.message||t.l10n.between.notInclusive,[''+i,''+a]):l.message,valid:parseFloat(n)>i&&parseFloat(n)parseInt(l,10));switch(!0){case !!n&&!!l:i=c(e.l10n?e.l10n.choice.between:e.options.message,[n,l]);break;case !!n:i=c(e.l10n?e.l10n.choice.more:e.options.message,n);break;case !!l:i=c(e.l10n?e.l10n.choice.less:e.options.message,l);break;default:break}return{message:i,valid:a}}}}var v={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']}};function h(){return{validate:function(e){if(e.value===''){return{meta:{type:null},valid:!0}}if(/[^0-9-\s]+/.test(e.value)){return{meta:{type:null},valid:!1}}var n=e.value.replace(/\D/g,'');if(!t(n)){return{meta:{type:null},valid:!1}}var l=!0,i=!1,a=void 0;try{for(var r=Object.keys(v)[Symbol.iterator](),o;!(l=(o=r.next()).done);l=!0){var d=o.value;for(var s in v[d].prefix){if(e.value.substr(0,v[d].prefix[s].length)===v[d].prefix[s]&&v[d].length.indexOf(n.length)!==-1){return{meta:{type:d},valid:!0}}}}}catch(e){i=!0,a=e}finally{try{!l&&r.return&&r.return()}finally{if(i){throw a}}};return{meta:{type:null},valid:!1}}}}function b(e,t,n,l){if(isNaN(e)||isNaN(t)||isNaN(n)){return!1}if(e<1e3||e>9999||t<=0||t>12){return!1}var i=[31,e%400===0||e%100!==0&&e%4===0?29:28,31,30,31,30,31,31,30,31,30,31];if(n<=0||n>i[t-1]){return!1}if(l===!0){var a=new Date,r=a.getFullYear(),o=a.getMonth(),d=a.getDate();return e1){var s=r[1].split(':');d.setHours(s.length>0?parseInt(s[0],10):0);d.setMinutes(s.length>1?parseInt(s[1],10):0);d.setSeconds(s.length>2?parseInt(s[2],10):0)}return d},t=function(e,t){var n=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'),l=e.getDate(),i=l<10?'0'+l:l,a=e.getMonth()+1,r=a<10?'0'+a:a,o=(''+e.getFullYear()).substr(2),d=e.getFullYear(),s=e.getHours()%12||12,c=s<10?'0'+s:s,u=e.getHours(),f=u<10?'0'+u:u,m=e.getMinutes(),p=m<10?'0'+m:m,g=e.getSeconds(),v=g<10?'0'+g:g,h={H:''+u,HH:''+f,M:''+m,MM:''+p,d:''+l,dd:''+i,h:''+s,hh:''+c,m:''+a,mm:''+r,s:''+g,ss:''+v,yy:''+o,yyyy:''+d};return n.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMs])\1?|"[^"]*"|'[^']*'/g,function(e){return h[e]?h[e]:e.slice(1,e.length-1)})};return{validate:function(n){if(n.value===''){return{meta:{date:null},valid:!0}}var l=Object.assign({},{format:n.element&&n.element.getAttribute('type')==='date'?'YYYY-MM-DD':'MM/DD/YYYY',message:''},n.options),i=n.l10n?n.l10n.date.default:l.message,a={message:''+i,meta:{date:null},valid:!1},r=l.format.split(' '),o=r.length>1?r[1]:null,d=r.length>2?r[2]:null,s=n.value.split(' '),u=s[0],f=s.length>1?s[1]:null;if(r.length!==s.length){return a}var m=l.separator||(u.indexOf('/')!==-1?'/':u.indexOf('-')!==-1?'-':u.indexOf('.')!==-1?'.':'/');if(m===null||u.indexOf(m)===-1){return a}var p=u.split(m),g=r[0].split(m);if(p.length!==g.length){return a}var v=p[g.indexOf('YYYY')],h=p[g.indexOf('MM')],E=p[g.indexOf('DD')];if(!/^\d+$/.test(v)||!/^\d+$/.test(h)||!/^\d+$/.test(E)||v.length>4||h.length>2||E.length>2){return a}var V=parseInt(v,10),y=parseInt(h,10),x=parseInt(E,10);if(!b(V,y,x)){return a}var H=new Date(V,y-1,x);if(o){var A=f.split(':');if(o.split(':').length!==A.length){return a}var w=A.length>0?A[0].length<=2&&/^\d+$/.test(A[0])?parseInt(A[0],10):-1:0,C=A.length>1?A[1].length<=2&&/^\d+$/.test(A[1])?parseInt(A[1],10):-1:0,F=A.length>2?A[2].length<=2&&/^\d+$/.test(A[2])?parseInt(A[2],10):-1:0;if(w===-1||C===-1||F===-1){return a}if(F<0||F>60){return a}if(w<0||w>=24||d&&w>12){return a}if(C<0||C>59){return a}H.setHours(w);H.setMinutes(C);H.setSeconds(F)}var _=typeof l.min==='function'?l.min():l.min,I=_ instanceof Date?_:_?e(_,g,m):H,k=typeof l.max==='function'?l.max():l.max,S=k instanceof Date?k:k?e(k,g,m):H,N=_ instanceof Date?t(I,l.format):_,O=k instanceof Date?t(S,l.format):k;switch(!0){case !!N&&!O:return{message:c(n.l10n?n.l10n.date.min:i,N),meta:{date:H},valid:H.getTime()>=I.getTime()};case !!O&&!N:return{message:c(n.l10n?n.l10n.date.max:i,O),meta:{date:H},valid:H.getTime()<=S.getTime()};case !!O&&!!N:return{message:c(n.l10n?n.l10n.date.range:i,[N,O]),meta:{date:H},valid:H.getTime()<=S.getTime()&&H.getTime()>=I.getTime()};default:return{message:''+i,meta:{date:H},valid:!0}}}}}function V(){return{validate:function(e){var t='function'===typeof e.options.compare?e.options.compare.call(this):e.options.compare;return{valid:t===''||e.value!==t}}}}function y(){return{validate:function(e){return{valid:e.value===''||/^\d+$/.test(e.value)}}}}function x(){var e=function(e,t){var n=e.split(/"/),l=n.length,i=[],a='';for(var r=0;r()[\]\\.,;:\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])?)*$/,i=n.multiple===!0||''+n.multiple==='true';if(i){var a=n.separator||/[,;]/,r=e(t.value,a),o=!0,d=!1,s=void 0;try{for(var c=r[Symbol.iterator](),u;!(o=(u=c.next()).done);o=!0){var f=u.value;if(!l.test(f)){return{valid:!1}}}}catch(e){d=!0,s=e}finally{try{!o&&c.return&&c.return()}finally{if(d){throw s}}};return{valid:!0}}else{return{valid:l.test(t.value)}}}}}function H(){return{validate:function(e){if(e.value===''){return{valid:!0}}var t=void 0,n=e.options.extension?e.options.extension.toLowerCase().split(','):null,l=e.options.type?e.options.type.toLowerCase().split(','):null,i=window.File&&window.FileList&&window.FileReader;if(i){var a=e.element.files,r=a.length,o=0;if(e.options.maxFiles&&r>parseInt(''+e.options.maxFiles,10)){return{meta:{error:'INVALID_MAX_FILES'},valid:!1}}if(e.options.minFiles&&rparseInt(''+e.options.maxSize,10)){return{meta:Object.assign({},{error:'INVALID_MAX_SIZE'},d),valid:!1}}if(n&&n.indexOf(t.toLowerCase())===-1){return{meta:Object.assign({},{error:'INVALID_EXTENSION'},d),valid:!1}}if(a[s].type&&l&&l.indexOf(a[s].type.toLowerCase())===-1){return{meta:Object.assign({},{error:'INVALID_TYPE'},d),valid:!1}}}if(e.options.maxTotalSize&&o>parseInt(''+e.options.maxTotalSize,10)){return{meta:Object.assign({},{error:'INVALID_MAX_TOTAL_SIZE',totalSize:o},d),valid:!1}}if(e.options.minTotalSize&&o=n}:{message:e.l10n?c(t.message||e.l10n.greaterThan.notInclusive,''+n):t.message,valid:parseFloat(e.value)>n}}}}function w(){return{validate:function(e){var t='function'===typeof e.options.compare?e.options.compare.call(this):e.options.compare;return{valid:t===''||e.value===t}}}}function C(){return{validate:function(e){if(e.value===''){return{valid:!0}}var t=Object.assign({},{decimalSeparator:'.',thousandsSeparator:''},e.options),n=t.decimalSeparator==='.'?'\\.':t.decimalSeparator,l=t.thousandsSeparator==='.'?'\\.':t.thousandsSeparator,i=new RegExp('^-?[0-9]{1,3}('+l+'[0-9]{3})*('+n+'[0-9]+)?$'),a=new RegExp(l,'g'),r=''+e.value;if(!i.test(r)){return{valid:!1}}l&&(r=r.replace(a,''));n&&(r=r.replace(n,'.'));var o=parseFloat(r);return{valid:!isNaN(o)&&isFinite(o)&&Math.floor(o)===o}}}}function F(){return{validate:function(e){if(e.value===''){return{valid:!0}}var t=Object.assign({},{ipv4:!0,ipv6:!0},e.options),n=/^(?:(?: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]))?$/,l=/^\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:e.l10n?t.message||e.l10n.ip.ipv4:t.message,valid:n.test(e.value)};case !t.ipv4&&t.ipv6:return{message:e.l10n?t.message||e.l10n.ip.ipv6:t.message,valid:l.test(e.value)};case t.ipv4&&t.ipv6:;default:return{message:e.l10n?t.message||e.l10n.ip.default:t.message,valid:n.test(e.value)||l.test(e.value)}}}}}function _(){return{validate:function(e){if(e.value===''){return{valid:!0}}var t=Object.assign({},{inclusive:!0},e.options),n=parseFloat((''+t.max).replace(',','.'));return t.inclusive?{message:e.l10n?c(t.message||e.l10n.lessThan.default,''+n):t.message,valid:parseFloat(e.value)<=n}:{message:e.l10n?c(t.message||e.l10n.lessThan.notInclusive,''+n):t.message,valid:parseFloat(e.value)=0;n--){var l=e.charCodeAt(n);l>127&&l<=2047?t++:l>2047&&l<=65535&&(t+=2);l>=56320&&l<=57343&&n--}return''+t};return{validate:function(t){var n=Object.assign({},{trim:!1,utf8Bytes:!1},t.options),l=n.trim===!0||''+n.trim==='true'?t.value.trim():t.value;if(l===''){return{valid:!0}}var i=n.min?''+n.min:'',a=n.max?''+n.max:'',r=n.utf8Bytes?e(l):l.length,o=!0,d=t.l10n?n.message||t.l10n.stringLength.default:n.message;(i&&rparseInt(a,10))&&(o=!1);switch(!0){case !!i&&!!a:d=t.l10n?c(n.message||t.l10n.stringLength.between,[i,a]):n.message;break;case !!i:d=t.l10n?c(n.message||t.l10n.stringLength.more,parseInt(i,10)-1+''):n.message;break;case !!a:d=t.l10n?c(n.message||t.l10n.stringLength.less,parseInt(a,10)+1+''):n.message;break;default:break}return{message:d,valid:o}}}}function M(){var e={allowEmptyProtocol:!1,allowLocal:!1,protocol:'http, https, ftp'};return{validate:function(t){if(t.value===''){return{valid:!0}}var n=Object.assign({},e,t.options),l=n.allowLocal===!0||''+n.allowLocal==='true',i=n.allowEmptyProtocol===!0||''+n.allowEmptyProtocol==='true',a=n.protocol.split(',').join('|').replace(/\s/g,''),r=new RegExp("^(?:(?:"+a+")://)"+(i?'?':'')+"(?:\\S+(?::\\S*)?@)?"+"(?:"+(l?'':"(?!(?: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,}))'+(l?'?':'')+")"+"(?::\\d{2,5})?"+"(?:/[^\\s]*)?$","i");return{valid:r.test(t.value)}}}}var z={between:u,blank:f,callback:p,choice:g,creditCard:h,date:E,different:V,digits:y,emailAddress:x,file:H,greaterThan:A,identical:w,integer:C,ip:F,lessThan:_,notEmpty:I,numeric:k,promise:S,regexp:N,remote:L,stringCase:P,stringLength:T,uri:M},D=function(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}},R=function(){function e(e,t){for(var n=0;n1?n-1:0),i=1;i=0?this.invalidElements.splice(t,1):!e.valid&&t===-1&&this.invalidElements.push(e.element)}},{key:'onElementNotValidated',value:function(e){this.invalidElements.splice(this.invalidElements.indexOf(e.element),1)}},{key:'onFormInvalid',value:function(){if(this.invalidElements.length){var e=this.invalidElements[0],t={firstElement:e};this.core.emit('plugins.autofocus.prefocus',t);this.opts.onPrefocus(t);e.focus()}}}]);return t}($),K=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.opts=Object.assign({},{html5Input:!1,prefix:'data-fv-'},e);return n}R(t,[{key:'install',value:function(){var e=this,t=this.parseOptions();Object.keys(t).forEach(function(n){return e.core.addField(n,t[n])})}},{key:'parseOptions',value:function(){var e=this,t=this.opts.prefix,n={},l=this.core.getFields(),i=this.core.getFormElement(),a=[].slice.call(i.querySelectorAll('[name], ['+t+'field]'));a.forEach(function(l){var i=e.parseElement(l);if(!e.isEmptyOption(i)){var a=l.getAttribute('name')||l.getAttribute(t+'field');n[a]=Object.assign({},n[a],i)}});Object.keys(n).forEach(function(e){Object.keys(n[e].validators).forEach(function(t){n[e].validators[t].enabled=n[e].validators[t].enabled||!1;l[e]&&l[e].validators&&l[e].validators[t]&&Object.assign(n[e].validators[t],l[e].validators[t])})});return Object.assign({},l,n)}},{key:'isEmptyOption',value:function(e){var t=e.validators;return Object.keys(t).length===0&&t.constructor===Object}},{key:'parseElement',value:function(e){var t=new RegExp('^'+this.opts.prefix+'([a-z0-9-]+)(___)*([a-z0-9-]+)*$'),n=e.attributes.length,l={},i=e.getAttribute('type');for(var a=0;a=0}function ae(e,t){var n=e;while(n){if(ie(n,t)){break}n=n.parentElement}return n}var re=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.messages=new Map;n.defaultContainer=document.createElement('div');n.opts=Object.assign({},{container:function(e,t){return n.defaultContainer}},e);n.elementIgnoredHandler=n.onElementIgnored.bind(n);n.fieldAddedHandler=n.onFieldAdded.bind(n);n.fieldRemovedHandler=n.onFieldRemoved.bind(n);n.validatorValidatedHandler=n.onValidatorValidated.bind(n);n.validatorNotValidatedHandler=n.onValidatorNotValidated.bind(n);return n}R(t,[{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(e){return e.parentNode.removeChild(e)});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(e){var t=this,n=e.elements;n&&(n.forEach(function(e){var n=t.messages.get(e);n&&(n.parentNode.removeChild(n),t.messages.delete(e))}),this.prepareFieldContainer(e.field,n))}},{key:'onFieldRemoved',value:function(e){var t=this;if(!e.elements.length||!e.field){return}var n=e.elements[0].getAttribute('type'),l='radio'===n||'checkbox'===n?[e.elements[0]]:e.elements;l.forEach(function(e){if(t.messages.has(e)){var n=t.messages.get(e);n.parentNode.removeChild(n);t.messages.delete(e)}})}},{key:'prepareFieldContainer',value:function(e,t){var n=this;if(t.length){var l=t[0].getAttribute('type');'radio'===l||'checkbox'===l?this.prepareElementContainer(e,t[0],t):t.forEach(function(l){return n.prepareElementContainer(e,l,t)})}}},{key:'prepareElementContainer',value:function(e,t,n){var l=void 0;switch(!0){case 'string'===typeof this.opts.container:var i=this.opts.container;i='#'===i.charAt(0)?'[id="'+i.substring(1)+'"]':i;l=this.core.getFormElement().querySelector(i);break;default:l=this.opts.container(e,t);break}var a=document.createElement('div');l.appendChild(a);le(a,{'fv-plugins-message-container':!0});this.core.emit('plugins.message.placed',{element:t,elements:n,field:e,messageElement:a});this.messages.set(t,a)}},{key:'onValidatorValidated',value:function(e){var t=e.elements,n=e.element.getAttribute('type'),l='radio'===n||'checkbox'===n?t[0]:e.element;if(this.messages.has(l)){var i=this.messages.get(l),a=i.querySelector('[data-field="'+e.field+'"][data-validator="'+e.validator+'"]');if(!a&&!e.result.valid){var r=document.createElement('div');r.innerHTML=e.result.message;r.setAttribute('data-field',e.field);r.setAttribute('data-validator',e.validator);this.opts.clazz&&le(r,Y({},this.opts.clazz,!0));i.appendChild(r);this.core.emit('plugins.message.displayed',{element:e.element,field:e.field,message:e.result.message,messageElement:r,meta:e.result.meta,validator:e.validator})}else a&&!e.result.valid?(a.innerHTML=e.result.message,this.core.emit('plugins.message.displayed',{element:e.element,field:e.field,message:e.result.message,messageElement:a,meta:e.result.meta,validator:e.validator})):a&&e.result.valid&&i.removeChild(a)}}},{key:'onValidatorNotValidated',value:function(e){var t=e.elements,n=e.element.getAttribute('type'),l='radio'===n||'checkbox'===n?t[0]:e.element;if(this.messages.has(l)){var i=this.messages.get(l),a=i.querySelector('[data-field="'+e.field+'"][data-validator="'+e.validator+'"]');a&&i.removeChild(a)}}},{key:'onElementIgnored',value:function(e){var t=e.elements,n=e.element.getAttribute('type'),l='radio'===n||'checkbox'===n?t[0]:e.element;if(this.messages.has(l)){var i=this.messages.get(l);i.querySelectorAll('[data-field="'+e.field+'"]').forEach(function(e){i.removeChild(e)})}}}],[{key:'getClosestContainer',value:function(e,t,n){var l=e;while(l){if(l===t){break}l=l.parentElement;if(n.test(l.className)){break}}return l}}]);return t}($),oe=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.results=new Map;n.containers=new Map;n.opts=Object.assign({},{defaultMessageContainer:!0,eleInvalidClass:'',eleValidClass:'',rowClasses:'',rowValidatingClass:''},e);n.elementIgnoredHandler=n.onElementIgnored.bind(n);n.elementValidatingHandler=n.onElementValidating.bind(n);n.elementValidatedHandler=n.onElementValidated.bind(n);n.elementNotValidatedHandler=n.onElementNotValidated.bind(n);n.iconPlacedHandler=n.onIconPlaced.bind(n);n.fieldAddedHandler=n.onFieldAdded.bind(n);n.fieldRemovedHandler=n.onFieldRemoved.bind(n);return n}R(t,[{key:'install',value:function(){var e,t=this;le(this.core.getFormElement(),(e={}, Y(e,this.opts.formClass,!0), Y(e,'fv-plugins-framework',!0), e));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 re({clazz:this.opts.messageClass,container:function(e,n){var l='string'===typeof t.opts.rowSelector?t.opts.rowSelector:t.opts.rowSelector(e,n),i=ae(n,l);return re.getClosestContainer(n,i,t.opts.rowPattern)}}))}},{key:'uninstall',value:function(){var e;this.results.clear();this.containers.clear();le(this.core.getFormElement(),(e={}, Y(e,this.opts.formClass,!1), Y(e,'fv-plugins-framework',!1), e));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(e){}},{key:'onFieldAdded',value:function(e){var t=this,n=e.elements;n&&(n.forEach(function(e){var n=t.containers.get(e);if(n){var l;le(n,(l={}, Y(l,t.opts.rowInvalidClass,!1), Y(l,t.opts.rowValidatingClass,!1), Y(l,t.opts.rowValidClass,!1), Y(l,'fv-plugins-icon-container',!1), l));t.containers.delete(e)}}),this.prepareFieldContainer(e.field,n))}},{key:'onFieldRemoved',value:function(e){var t=this;e.elements.forEach(function(e){var n=t.containers.get(e);if(n){var l;le(n,(l={}, Y(l,t.opts.rowInvalidClass,!1), Y(l,t.opts.rowValidatingClass,!1), Y(l,t.opts.rowValidClass,!1), l))}})}},{key:'prepareFieldContainer',value:function(e,t){var n=this;if(t.length){var l=t[0].getAttribute('type');'radio'===l||'checkbox'===l?this.prepareElementContainer(e,t[0]):t.forEach(function(t){return n.prepareElementContainer(e,t)})}}},{key:'prepareElementContainer',value:function(e,t){var n='string'===typeof this.opts.rowSelector?this.opts.rowSelector:this.opts.rowSelector(e,t),l=ae(t,n);if(l!==t){var i;le(l,(i={}, Y(i,this.opts.rowClasses,!0), Y(i,'fv-plugins-icon-container',!0), i));this.containers.set(t,l)}}},{key:'onElementValidating',value:function(e){var t=e.elements,n=e.element.getAttribute('type'),l='radio'===n||'checkbox'===n?t[0]:e.element,i=this.containers.get(l);if(i){var a;le(i,(a={}, Y(a,this.opts.rowInvalidClass,!1), Y(a,this.opts.rowValidatingClass,!0), Y(a,this.opts.rowValidClass,!1), a))}}},{key:'onElementNotValidated',value:function(e){this.removeClasses(e.element,e.elements)}},{key:'onElementIgnored',value:function(e){this.removeClasses(e.element,e.elements)}},{key:'removeClasses',value:function(e,t){var n,l=e.getAttribute('type'),i='radio'===l||'checkbox'===l?t[0]:e;le(i,(n={}, Y(n,this.opts.eleValidClass,!1), Y(n,this.opts.eleInvalidClass,!1), n));var a=this.containers.get(i);if(a){var r;le(a,(r={}, Y(r,this.opts.rowInvalidClass,!1), Y(r,this.opts.rowValidatingClass,!1), Y(r,this.opts.rowValidClass,!1), r))}}},{key:'onElementValidated',value:function(e){var t,n=this,l=e.elements,i=e.element.getAttribute('type'),a='radio'===i||'checkbox'===i?l[0]:e.element;le(a,(t={}, Y(t,this.opts.eleValidClass,e.valid), Y(t,this.opts.eleInvalidClass,!e.valid), t));var r=this.containers.get(a);if(r){if(!e.valid){var o;this.results.set(a,!1);le(r,(o={}, Y(o,this.opts.rowInvalidClass,!0), Y(o,this.opts.rowValidatingClass,!1), Y(o,this.opts.rowValidClass,!1), o))}else{this.results.delete(a);var d=!0;this.containers.forEach(function(e,t){e===r&&n.results.get(t)===!1&&(d=!1)});if(d){var s;le(r,(s={}, Y(s,this.opts.rowInvalidClass,!1), Y(s,this.opts.rowValidatingClass,!1), Y(s,this.opts.rowValidClass,!0), s))}}}}}]);return t}($),de=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.icons=new Map;n.opts=Object.assign({},{invalid:'fv-plugins-icon--invalid',onPlaced:function(){},onSet:function(){},valid:'fv-plugins-icon--valid',validating:'fv-plugins-icon--validating'},e);n.elementValidatingHandler=n.onElementValidating.bind(n);n.elementValidatedHandler=n.onElementValidated.bind(n);n.elementNotValidatedHandler=n.onElementNotValidated.bind(n);n.elementIgnoredHandler=n.onElementIgnored.bind(n);n.fieldAddedHandler=n.onFieldAdded.bind(n);return n}R(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)}},{key:'uninstall',value:function(){this.icons.forEach(function(e){return e.parentNode.removeChild(e)});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(e){var t=this,n=e.elements;n&&(n.forEach(function(e){var n=t.icons.get(e);n&&(n.parentNode.removeChild(n),t.icons.delete(e))}),this.prepareFieldIcon(e.field,n))}},{key:'prepareFieldIcon',value:function(e,t){var n=this;if(t.length){var l=t[0].getAttribute('type');'radio'===l||'checkbox'===l?this.prepareElementIcon(e,t[0]):t.forEach(function(t){return n.prepareElementIcon(e,t)})}}},{key:'prepareElementIcon',value:function(e,t){var n=document.createElement('i');n.setAttribute('data-field',e);t.parentNode.insertBefore(n,t.nextSibling);le(n,{'fv-plugins-icon':!0});var l={classes:{invalid:this.opts.invalid,valid:this.opts.valid,validating:this.opts.validating},element:t,field:e,iconElement:n};this.core.emit('plugins.icon.placed',l);this.opts.onPlaced(l);this.icons.set(t,n)}},{key:'onElementValidating',value:function(e){var t,n=this.setClasses(e.field,e.element,e.elements,(t={}, Y(t,this.opts.invalid,!1), Y(t,this.opts.valid,!1), Y(t,this.opts.validating,!0), t)),l={element:e.element,field:e.field,iconElement:n,status:d.Validating};this.core.emit('plugins.icon.set',l);this.opts.onSet(l)}},{key:'onElementValidated',value:function(e){var t,n=this.setClasses(e.field,e.element,e.elements,(t={}, Y(t,this.opts.invalid,!e.valid), Y(t,this.opts.valid,e.valid), Y(t,this.opts.validating,!1), t)),l={element:e.element,field:e.field,iconElement:n,status:e.valid?d.Valid:d.Invalid};this.core.emit('plugins.icon.set',l);this.opts.onSet(l)}},{key:'onElementNotValidated',value:function(e){var t,n=this.setClasses(e.field,e.element,e.elements,(t={}, Y(t,this.opts.invalid,!1), Y(t,this.opts.valid,!1), Y(t,this.opts.validating,!1), t)),l={element:e.element,field:e.field,iconElement:n,status:d.NotValidated};this.core.emit('plugins.icon.set',l);this.opts.onSet(l)}},{key:'onElementIgnored',value:function(e){var t,n=this.setClasses(e.field,e.element,e.elements,(t={}, Y(t,this.opts.invalid,!1), Y(t,this.opts.valid,!1), Y(t,this.opts.validating,!1), t)),l={element:e.element,field:e.field,iconElement:n,status:d.Ignored};this.core.emit('plugins.icon.set',l);this.opts.onSet(l)}},{key:'setClasses',value:function(e,t,n,l){var i=t.getAttribute('type'),a='radio'===i||'checkbox'===i?n[0]:t;if(this.icons.has(a)){var r=this.icons.get(a);le(r,l);return r}else{return null}}}]);return t}($),se=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.invalidFields=new Map;n.opts=Object.assign({},{enabled:!0},e);n.validatorHandler=n.onValidatorValidated.bind(n);n.shouldValidateFilter=n.shouldValidate.bind(n);n.fieldAddedHandler=n.onFieldAdded.bind(n);n.elementNotValidatedHandler=n.onElementNotValidated.bind(n);n.elementValidatingHandler=n.onElementValidating.bind(n);return n}R(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(e,t,n,l){var i=(this.opts.enabled===!0||this.opts.enabled[e]===!0)&&this.invalidFields.has(t)&&!!this.invalidFields.get(t).length&&this.invalidFields.get(t).indexOf(l)===-1;return!i}},{key:'onValidatorValidated',value:function(e){var t=this.invalidFields.has(e.element)?this.invalidFields.get(e.element):[],n=t.indexOf(e.validator);e.result.valid&&n>=0?t.splice(n,1):!e.result.valid&&n===-1&&t.push(e.validator);this.invalidFields.set(e.element,t)}},{key:'onFieldAdded',value:function(e){e.elements&&this.clearInvalidFields(e.elements)}},{key:'onElementNotValidated',value:function(e){this.clearInvalidFields(e.elements)}},{key:'onElementValidating',value:function(e){this.clearInvalidFields(e.elements)}},{key:'clearInvalidFields',value:function(e){var t=this;e.forEach(function(e){return t.invalidFields.delete(e)})}}]);return t}($),ce=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.opts=Object.assign({},{selector:'[type="submit"]:not([formnovalidate])'},e);n.submitHandler=n.submitHandle.bind(n);return n}R(t,[{key:'install',value:function(){var e=this;if(!(this.core.getFormElement() instanceof HTMLFormElement)){return}var t=this.core.getFormElement();t.setAttribute('novalidate','novalidate');t.addEventListener('submit',this.submitHandler);var n=document.createElement('button');n.setAttribute('type','submit');Object.assign(n.style,{display:'none',height:'0',width:'0'});t.appendChild(n);var l=[].slice.call(t.querySelectorAll(this.opts.selector)),i=[].slice.call(t.querySelectorAll('[type="submit"]'));i.forEach(function(i){i.addEventListener('click',function(i){var a=i.currentTarget;if(!i.defaultPrevented&&a instanceof HTMLElement&&l.indexOf(a)===-1&&a!==n){t.removeEventListener('submit',e.submitHandler);t.submit();return!1}})})}},{key:'uninstall',value:function(){var e=this.core.getFormElement();e instanceof HTMLFormElement&&e.removeEventListener('submit',this.submitHandler)}},{key:'submitHandle',value:function(e){e.preventDefault();this.core.validate()}}]);return t}($),ue=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.messages=new Map;n.opts=Object.assign({},{placement:'top',trigger:'click'},e);n.iconPlacedHandler=n.onIconPlaced.bind(n);n.validatorValidatedHandler=n.onValidatorValidated.bind(n);n.elementValidatedHandler=n.onElementValidated.bind(n);n.documentClickHandler=n.onDocumentClicked.bind(n);return n}R(t,[{key:'install',value:function(){this.tip=document.createElement('div');le(this.tip,Y({'fv-plugins-tooltip':!0},'fv-plugins-tooltip--'+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(e){var t=this;le(e.iconElement,{'fv-plugins-tooltip-icon':!0});switch(this.opts.trigger){case 'hover':e.iconElement.addEventListener('mouseenter',function(n){return t.show(e.element,n)});e.iconElement.addEventListener('mouseleave',function(e){return t.hide()});break;case 'click':;default:e.iconElement.addEventListener('click',function(n){return t.show(e.element,n)});break}}},{key:'onValidatorValidated',value:function(e){if(!e.result.valid){var t=e.elements,n=e.element.getAttribute('type'),l='radio'===n||'checkbox'===n?t[0]:e.element;this.messages.set(l,e.result.message)}}},{key:'onElementValidated',value:function(e){if(e.valid){var t=e.elements,n=e.element.getAttribute('type'),l='radio'===n||'checkbox'===n?t[0]:e.element;this.messages.delete(l)}}},{key:'onDocumentClicked',value:function(e){this.hide()}},{key:'show',value:function(e,t){t.preventDefault();t.stopPropagation();if(!this.messages.has(e)){return}le(this.tip,{'fv-plugins-tooltip--hide':!1});this.tip.innerHTML=''+this.messages.get(e)+'';var n=t.target,l=n.getBoundingClientRect(),i=0,a=0;switch(this.opts.placement){case 'top':;default:i=l.top-l.height;a=l.left+l.width/2-this.tip.clientWidth/2;break;case 'top-left':i=l.top-l.height;a=l.left;break;case 'top-right':i=l.top-l.height;a=l.left+l.width-this.tip.clientWidth;break;case 'bottom':i=l.top+l.height;a=l.left+l.width/2-this.tip.clientWidth/2;break;case 'bottom-left':i=l.top+l.height;a=l.left;break;case 'bottom-right':i=l.top+l.height;a=l.left+l.width-this.tip.clientWidth;break;case 'left':i=l.top+l.height/2-this.tip.clientHeight/2;a=l.left-this.tip.clientWidth;break;case 'right':i=l.top+l.height/2-this.tip.clientHeight/2;a=l.left+l.width;break}i+=document.body.scrollTop;a+=document.body.scrollLeft;this.tip.setAttribute('style','top: '+i+'px; left: '+a+'px')}},{key:'hide',value:function(){le(this.tip,{'fv-plugins-tooltip--hide':!0})}}]);return t}($),fe=function(e){q(t,e);function t(e){D(this,t);var n=W(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.handlers=[];n.timers=new Map;n.ieVersion=function(){var e=3,t=document.createElement('div'),n=t.all||[];while(t.innerHTML='', n[0]);;return e>4?e:document.documentMode}();var l=document.createElement('div');n.defaultEvent=n.ieVersion===9||!('oninput' in l)?'keyup':'input';n.opts=Object.assign({},{delay:0,event:n.defaultEvent,threshold:0},e);n.fieldAddedHandler=n.onFieldAdded.bind(n);n.fieldRemovedHandler=n.onFieldRemoved.bind(n);return n}R(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(e){return e.element.removeEventListener(e.event,e.handler)});this.handlers=[];this.timers.forEach(function(e){return window.clearTimeout(e)});this.timers.clear();this.core.off('core.field.added',this.fieldAddedHandler).off('core.field.removed',this.fieldRemovedHandler)}},{key:'prepareHandler',value:function(e,t){var n=this;t.forEach(function(t){var l=[];switch(!0){case !!n.opts.event&&n.opts.event[e]===!1:l=[];break;case !!n.opts.event&&!!n.opts.event[e]:l=n.opts.event[e].split(' ');break;case 'string'===typeof n.opts.event&&n.opts.event!==n.defaultEvent:l=n.opts.event.split(' ');break;default:var r=t.getAttribute('type');var a=t.tagName.toLowerCase();var i='radio'===r||'checkbox'===r||'file'===r||'select'===a?'change':n.ieVersion>=10&&t.getAttribute('placeholder')?'keyup':n.defaultEvent;l=[i];break}l.forEach(function(l){var i=function(l){return n.handleEvent(l,e,t)};n.handlers.push({element:t,event:l,field:e,handler:i});t.addEventListener(l,i)})})}},{key:'handleEvent',value:function(e,t,n){var l=this;if(this.exceedThreshold(t,n)){var i=function(){return l.core.validateElement(t,n).then(function(i){l.core.emit('plugins.trigger.executed',{element:n,event:e,field:t})})},a=this.opts.delay[t]||this.opts.delay;if(a===0)i();else{var r=this.timers.get(n);r&&window.clearTimeout(r);this.timers.set(n,window.setTimeout(i,a*1e3))}}}},{key:'onFieldAdded',value:function(e){this.handlers.filter(function(t){return t.field===e.field}).forEach(function(e){return e.element.removeEventListener(e.event,e.handler)});this.prepareHandler(e.field,e.elements)}},{key:'onFieldRemoved',value:function(e){this.handlers.filter(function(t){return t.field===e.field&&e.elements.indexOf(t.element)>=0}).forEach(function(e){return e.element.removeEventListener(e.event,e.handler)})}},{key:'exceedThreshold',value:function(e,t){var n=this.opts.threshold[e]===0||this.opts.threshold===0?!1:this.opts.threshold[e]||this.opts.threshold;if(!n){return!0}var l=t.getAttribute('type');if(['button','checkbox','file','hidden','image','radio','reset','submit'].indexOf(l)!==-1){return!0}var i=this.core.getElementValue(e,t);return i.length>=n}}]);return t}($),me={Alias:X,Aria:G,AutoFocus:Z,Declarative:K,DefaultSubmit:J,Dependency:Q,Excluded:ee,Framework:oe,Icon:de,Message:re,Sequence:se,SubmitButton:ce,Tooltip:ue,Trigger:fe};function pe(e,t){return e.classList?e.classList.contains(t):new RegExp('(^| )'+t+'( |$)','gi').test(e.className)}var ge={call:m,classSet:le,closest:ae,fetch:O,format:c,hasClass:pe,isValidDate:b},ve={};e.algorithms=i;e.formValidation=U;e.filters=B;e.locales=ve;e.plugins=me;e.utils=ge;e.validators=z;e.Plugin=$;e.Status=d;Object.defineProperty(e,'__esModule',{value:!0})}))