{"version":3,"file":"./scripts/webshop.min.js","mappings":"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","sources":["webpack://frontendv2/webpack/runtime/chunk loaded","webpack://frontendv2/./src/js/library/legacy/webshop/checkout.js","webpack://frontendv2/./src/js/library/legacy/webshop/tools/03-mustache-formatting.js","webpack://frontendv2/./src/js/library/legacy/webshop/product-header.js","webpack://frontendv2/./src/js/scripts/vendor/parsley/parsley.js","webpack://frontendv2/./src/js/library/legacy/setmeetids.js","webpack://frontendv2/./src/js/library/legacy/webshop/shoppingbasket.js","webpack://frontendv2/./src/js/library/legacy/webshop/checkout-payment.js","webpack://frontendv2/./src/js/scripts/vendor/parsley/i18n.1/nl.js","webpack://frontendv2/./src/js/library/legacy/webshop/tools/02-mustache-wax.js","webpack://frontendv2/./src/js/library/legacy/webshop/offerte.js","webpack://frontendv2/./src/js/scripts/webshop.js","webpack://frontendv2/./src/js/library/legacy/webshop/product-detail-hero.js","webpack://frontendv2/./src/js/library/legacy/webshop/shoppingbasket-overlay.js","webpack://frontendv2/./src/js/library/legacy/webshop/product-header-keuze-v2.js","webpack://frontendv2/./src/js/library/legacy/webshop/proposition-hero.js","webpack://frontendv2/./src/js/library/legacy/webshop/proposition-faq.js","webpack://frontendv2/./src/js/library/legacy/webshop/harmonica.js","webpack://frontendv2/./node_modules/mustache/mustache.js","webpack://frontendv2/./src/js/library/legacy/webshop/product-tab.js","webpack://frontendv2/./src/js/library/legacy/a11y.js","webpack://frontendv2/./src/js/scripts/vendor/parsley/init.js","webpack://frontendv2/./src/js/library/legacy/webshop/product-header-keuze.js","webpack://frontendv2/./src/js/library/utils/forms_helper.js","webpack://frontendv2/webpack/bootstrap","webpack://frontendv2/webpack/runtime/global","webpack://frontendv2/webpack/runtime/hasOwnProperty shorthand","webpack://frontendv2/webpack/runtime/jsonp chunk loading","webpack://frontendv2/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var formsHelper = require('../../utils/forms_helper');\n\njQuery(function ($) {\n 'use strict';\n\n function CheckoutForm(element) {\n this.container = element;\n this.standardizedAdres = {};\n this.standardizedBezorgAdres = {};\n this.controls = {\n bedrijfsnaam: '.bedrijfsnaam',\n btwnummer: '.btwnummer',\n geboortedatum: '.geboortedatum',\n bezorgvoorletters: '.bezorgvoorletters',\n bezorgtussenvoegsel: '.bezorgtussenvoegsel',\n bezorgachternaam: '.bezorgachternaam',\n bezorgbedrijfsnaam: '.bezorgbedrijfsnaam',\n bezorgpostcode: '.checkout__bezorgadres-container [data-stadr-elem=\"postcode\"]',\n bezorghuisnummer: '.checkout__bezorgadres-container [data-stadr-elem=\"huisnummer\"]',\n bezorghuisnummertoevoeging: '.checkout__bezorgadres-container [data-stadr-elem=\"huisnummertoevoeging\"]',\n bezorgstraat: '.checkout__bezorgadres-container [data-stadr-elem=\"straat\"]',\n bezorgstraathidden: '.checkout__bezorgadres-container [data-stadr-elem=\"straathidden\"]',\n bezorgplaats: '.checkout__bezorgadres-container [data-stadr-elem=\"plaats\"]',\n bezorgplaatshidden: '.checkout__bezorgadres-container [data-stadr-elem=\"plaatshidden\"]',\n }\n this.init();\n }\n\n CheckoutForm.prototype.init = function () {\n // Initialize method\n var typeControl = this.getElement('.type:checked');\n if (typeControl.length > 0) {\n var type = typeControl.val();\n if (type === 'Zakelijk') {\n this.enableZakelijk();\n } else {\n this.enableParticulier();\n }\n }\n \n\n if (this.getElement('.differentbezorgadres').is(':checked')) {\n this.enableBezorgAdres();\n }\n };\n\n CheckoutForm.prototype.reInit = function () {\n formsHelper.reInitForms();\n this.updateMeetids();\n };\n\n CheckoutForm.prototype.enableZakelijk = function () {\n this.showFields(this.controls.bedrijfsnaam, this.controls.btwnummer);\n\n this.hideFields(this.controls.geboortedatum);\n\n this.reInit();\n }\n\n CheckoutForm.prototype.enableParticulier = function () {\n this.showFields(this.controls.geboortedatum);\n this.hideFields(this.controls.bedrijfsnaam, this.controls.btwnummer);\n\n this.reInit();\n }\n\n CheckoutForm.prototype.enableBezorgAdres = function () {\n this.enableFields(this.controls.bezorgvoorletters, this.controls.bezorgtussenvoegsel , this.controls.bezorgachternaam, this.controls.bezorgbedrijfsnaam,\n this.controls.bezorgpostcode, this.controls.bezorghuisnummer, this.controls.bezorghuisnummertoevoeging);\n\n $('#checkout-bezorgadres-container').removeClass('checkout__bezorgadres--hidden');\n\n if (!this.getElement('#checkout-bezorgadres-manual').hasClass('standardized-adres__manual-adres-container--hidden')) {\n this.enableFields(this.controls.bezorgstraat, this.controls.bezorgplaats);\n }\n\n this.reInit();\n };\n\n CheckoutForm.prototype.disableBezorgAdres = function () {\n this.disableFields(this.controls.bezorgvoorletters, this.controls.bezorgtussenvoegsel, this.controls.bezorgachternaam, this.controls.bezorgbedrijfsnaam,\n this.controls.bezorgpostcode, this.controls.bezorghuisnummer, this.controls.bezorghuisnummertoevoeging);\n\n $('#checkout-bezorgadres-container').addClass('checkout__bezorgadres--hidden');\n\n this.disableFields(this.controls.bezorgstraat, this.controls.bezorgplaats);\n\n this.reInit();\n };\n\n CheckoutForm.prototype.showFields = function () {\n var i;\n\n if (!arguments) {\n return;\n }\n for (i = 0; i < arguments.length; i++) {\n this.showField(arguments[i]);\n }\n };\n\n CheckoutForm.prototype.showField = function (elementId) {\n this.enableField(elementId);\n this.getElement(elementId).closest('.ipo-mdc-form__field-container').removeClass('ipo-mdc-form__field-container--hidden');\n };\n\n CheckoutForm.prototype.enableFields = function () {\n var i;\n\n if (!arguments) {\n return;\n }\n for (i = 0; i < arguments.length; i++) {\n this.enableField(arguments[i]);\n }\n };\n\n CheckoutForm.prototype.enableField = function (fieldId) {\n var field = this.getElement(fieldId);\n\n field.prop('disabled', false);\n field.closest('.mdc-text-field').removeClass('mdc-text-field--disabled');\n };\n\n CheckoutForm.prototype.hideFields = function () {\n var i;\n\n if (!arguments) {\n return;\n }\n for (i = 0; i < arguments.length; i++) {\n this.hideField(arguments[i]);\n }\n };\n\n CheckoutForm.prototype.hideField = function (elementId) {\n this.disableField(elementId);\n this.getElement(elementId).closest('.ipo-mdc-form__field-container').addClass('ipo-mdc-form__field-container--hidden');\n };\n\n CheckoutForm.prototype.disableFields = function () {\n var i;\n\n if (!arguments) {\n return;\n }\n for (i = 0; i < arguments.length; i++) {\n this.disableField(arguments[i]);\n }\n };\n\n CheckoutForm.prototype.disableField = function (fieldId) {\n var field = this.getElement(fieldId);\n\n field.prop('disabled', true);\n field.closest('.mdc-text-field').addClass('mdc-text-field--disabled');\n };\n\n CheckoutForm.prototype.getElement = function (elementSelector) {\n return this.container.find(elementSelector);\n };\n\n CheckoutForm.prototype.updateMeetids = function() {\n if (setmeetids) {\n setmeetids.init();\n }\n }\n\n $(document).ready(function () {\n // var checkoutForm = new CheckoutForm($('#checkout-form'));\n var checkoutFormElement = $('#checkout-form');\n if (checkoutFormElement.length > 0) \n {\n var checkoutForm = new CheckoutForm(checkoutFormElement);\n\n checkoutForm.getElement('.differentbezorgadres').click(function () {\n if ($(this).is(':checked')) {\n checkoutForm.enableBezorgAdres();\n } else {\n checkoutForm.disableBezorgAdres();\n }\n });\n \n checkoutForm.getElement('.type').change(function() {\n var type = $(this).val();\n if (type === 'Zakelijk') {\n checkoutForm.enableZakelijk();\n }\n else {\n checkoutForm.enableParticulier();\n }\n });\n }\n });\n});\n","jQuery(function ($) {\n\t'use strict';\n\n\tMustache.Formatters = {\n\t\t\"uppercase\": function (str) {\n\t\t\treturn str.toUpperCase();\n\t\t},\n\n\t\t\"formatEuro\": function(number)\n\t\t{\n\t\t\t return '€ ' + number.toLocaleString('nl-NL', { minimumFractionDigits: 2 });\n\t\t}, \n\n\t\t\"toArticleOrderPriceClass\": function(bool)\n\t\t{\n\t\t\tif (bool) {\n\t\t\t\treturn \"article-order__price-discount\";\n\t\t\t}\n\t\t\treturn \"article-order__price-price\"\n\t\t}\n\t};\n});\n","jQuery(document).ready(function($) {\n 'use strict';\n $('#shop-product-version').change(function() {\n if ($(this).val() !== '') {\n window.location.href = $(this).val();\n }\n });\n $('#shop-product-buyrent').change(function() {\n if ($(this).val() !== '') {\n window.location.href = $(this).val();\n }\n });\n});\n","/*!\n* Parsley.js\n* Version 2.6.2 - built Wed, Jan 4th 2017, 8:58 am\n* http://parsleyjs.org\n* Guillaume Potier - \n* Marc-Andre Lafortune - \n* MIT Licensed\n*/\n\n// The source code below is generated by babel as\n// Parsley is written in ECMAScript 6\n//\nvar _slice = Array.prototype.slice;\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) : typeof define === 'function' && define.amd ? define(['jquery'], factory) : global.parsley = factory(global.jQuery);\n})(this, function ($) {\n 'use strict';\n\n var globalID = 1;\n var pastWarnings = {};\n\n var ParsleyUtils__ParsleyUtils = {\n // Parsley DOM-API\n // returns object from dom attributes and values\n attr: function attr($element, namespace, obj) {\n var i;\n var attribute;\n var attributes;\n var regex = new RegExp('^' + namespace, 'i');\n\n if ('undefined' === typeof obj) obj = {};else {\n // Clear all own properties. This won't affect prototype's values\n for (i in obj) {\n if (obj.hasOwnProperty(i)) delete obj[i];\n }\n }\n\n if ('undefined' === typeof $element || 'undefined' === typeof $element[0]) return obj;\n\n attributes = $element[0].attributes;\n for (i = attributes.length; i--;) {\n attribute = attributes[i];\n\n if (attribute && attribute.specified && regex.test(attribute.name)) {\n obj[this.camelize(attribute.name.slice(namespace.length))] = this.deserializeValue(attribute.value);\n }\n }\n\n return obj;\n },\n\n checkAttr: function checkAttr($element, namespace, _checkAttr) {\n return $element.is('[' + namespace + _checkAttr + ']');\n },\n\n setAttr: function setAttr($element, namespace, attr, value) {\n $element[0].setAttribute(this.dasherize(namespace + attr), String(value));\n },\n\n generateID: function generateID() {\n return '' + globalID++;\n },\n\n /** Third party functions **/\n // Zepto deserialize function\n deserializeValue: function deserializeValue(value) {\n var num;\n\n try {\n return value ? value == \"true\" || (value == \"false\" ? false : value == \"null\" ? null : !isNaN(num = Number(value)) ? num : /^[\\[\\{]/.test(value) ? $.parseJSON(value) : value) : value;\n } catch (e) {\n return value;\n }\n },\n\n // Zepto camelize function\n camelize: function camelize(str) {\n return str.replace(/-+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n });\n },\n\n // Zepto dasherize function\n dasherize: function dasherize(str) {\n return str.replace(/::/g, '/').replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2').replace(/([a-z\\d])([A-Z])/g, '$1_$2').replace(/_/g, '-').toLowerCase();\n },\n\n warn: function warn() {\n var _window$console;\n\n if (window.console && 'function' === typeof window.console.warn) (_window$console = window.console).warn.apply(_window$console, arguments);\n },\n\n warnOnce: function warnOnce(msg) {\n if (!pastWarnings[msg]) {\n pastWarnings[msg] = true;\n this.warn.apply(this, arguments);\n }\n },\n\n _resetWarnings: function _resetWarnings() {\n pastWarnings = {};\n },\n\n trimString: function trimString(string) {\n return string.replace(/^\\s+|\\s+$/g, '');\n },\n\n namespaceEvents: function namespaceEvents(events, namespace) {\n events = this.trimString(events || '').split(/\\s+/);\n if (!events[0]) return '';\n return $.map(events, function (evt) {\n return evt + '.' + namespace;\n }).join(' ');\n },\n\n difference: function difference(array, remove) {\n // This is O(N^2), should be optimized\n var result = [];\n $.each(array, function (_, elem) {\n if (remove.indexOf(elem) == -1) result.push(elem);\n });\n return result;\n },\n\n // Alter-ego to native Promise.all, but for jQuery\n all: function all(promises) {\n // jQuery treats $.when() and $.when(singlePromise) differently; let's avoid that and add spurious elements\n return $.when.apply($, _toConsumableArray(promises).concat([42, 42]));\n },\n\n // Object.create polyfill, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create#Polyfill\n objectCreate: Object.create || (function () {\n var Object = function Object() {};\n return function (prototype) {\n if (arguments.length > 1) {\n throw Error('Second argument not supported');\n }\n if (typeof prototype != 'object') {\n throw TypeError('Argument must be an object');\n }\n Object.prototype = prototype;\n var result = new Object();\n Object.prototype = null;\n return result;\n };\n })(),\n\n _SubmitSelector: 'input[type=\"submit\"], button:submit'\n };\n\n var ParsleyUtils__default = ParsleyUtils__ParsleyUtils;\n\n // All these options could be overriden and specified directly in DOM using\n // `data-parsley-` default DOM-API\n // eg: `inputs` can be set in DOM using `data-parsley-inputs=\"input, textarea\"`\n // eg: `data-parsley-stop-on-first-failing-constraint=\"false\"`\n\n var ParsleyDefaults = {\n // ### General\n\n // Default data-namespace for DOM API\n namespace: 'data-parsley-',\n\n // Supported inputs by default\n inputs: 'input, textarea, select',\n\n // Excluded inputs by default\n excluded: 'input[type=button], input[type=submit], input[type=reset], input[type=hidden], :hidden',\n\n // Stop validating field on highest priority failing constraint\n priorityEnabled: true,\n\n // ### Field only\n\n // identifier used to group together inputs (e.g. radio buttons...)\n multiple: null,\n\n // identifier (or array of identifiers) used to validate only a select group of inputs\n group: null,\n\n // ### UI\n // Enable\\Disable error messages\n uiEnabled: true,\n\n // Key events threshold before validation\n validationThreshold: 3,\n\n // Focused field on form validation error. 'first'|'last'|'none'\n focus: 'first',\n\n // event(s) that will trigger validation before first failure. eg: `input`...\n trigger: false,\n\n // event(s) that will trigger validation after first failure.\n triggerAfterFailure: 'input',\n\n // Class that would be added on every failing validation Parsley field\n errorClass: 'parsley-error',\n\n // Same for success validation\n successClass: 'parsley-success',\n\n // Return the `$element` that will receive these above success or error classes\n // Could also be (and given directly from DOM) a valid selector like `'#div'`\n classHandler: function classHandler(ParsleyField) {},\n\n // Return the `$element` where errors will be appended\n // Could also be (and given directly from DOM) a valid selector like `'#div'`\n errorsContainer: function errorsContainer(ParsleyField) {},\n\n // ul elem that would receive errors' list\n errorsWrapper: '',\n\n // li elem that would receive error message\n errorTemplate: '
  • '\n };\n\n var ParsleyAbstract = function ParsleyAbstract() {\n this.__id__ = ParsleyUtils__default.generateID();\n };\n\n ParsleyAbstract.prototype = {\n asyncSupport: true, // Deprecated\n\n _pipeAccordingToValidationResult: function _pipeAccordingToValidationResult() {\n var _this = this;\n\n var pipe = function pipe() {\n var r = $.Deferred();\n if (true !== _this.validationResult) r.reject();\n return r.resolve().promise();\n };\n return [pipe, pipe];\n },\n\n actualizeOptions: function actualizeOptions() {\n ParsleyUtils__default.attr(this.$element, this.options.namespace, this.domOptions);\n if (this.parent && this.parent.actualizeOptions) this.parent.actualizeOptions();\n return this;\n },\n\n _resetOptions: function _resetOptions(initOptions) {\n this.domOptions = ParsleyUtils__default.objectCreate(this.parent.options);\n this.options = ParsleyUtils__default.objectCreate(this.domOptions);\n // Shallow copy of ownProperties of initOptions:\n for (var i in initOptions) {\n if (initOptions.hasOwnProperty(i)) this.options[i] = initOptions[i];\n }\n this.actualizeOptions();\n },\n\n _listeners: null,\n\n // Register a callback for the given event name\n // Callback is called with context as the first argument and the `this`\n // The context is the current parsley instance, or window.Parsley if global\n // A return value of `false` will interrupt the calls\n on: function on(name, fn) {\n this._listeners = this._listeners || {};\n var queue = this._listeners[name] = this._listeners[name] || [];\n queue.push(fn);\n\n return this;\n },\n\n // Deprecated. Use `on` instead\n subscribe: function subscribe(name, fn) {\n $.listenTo(this, name.toLowerCase(), fn);\n },\n\n // Unregister a callback (or all if none is given) for the given event name\n off: function off(name, fn) {\n var queue = this._listeners && this._listeners[name];\n if (queue) {\n if (!fn) {\n delete this._listeners[name];\n } else {\n for (var i = queue.length; i--;) if (queue[i] === fn) queue.splice(i, 1);\n }\n }\n return this;\n },\n\n // Deprecated. Use `off`\n unsubscribe: function unsubscribe(name, fn) {\n $.unsubscribeTo(this, name.toLowerCase());\n },\n\n // Trigger an event of the given name\n // A return value of `false` interrupts the callback chain\n // Returns false if execution was interrupted\n trigger: function trigger(name, target, extraArg) {\n target = target || this;\n var queue = this._listeners && this._listeners[name];\n var result;\n var parentResult;\n if (queue) {\n for (var i = queue.length; i--;) {\n result = queue[i].call(target, target, extraArg);\n if (result === false) return result;\n }\n }\n if (this.parent) {\n return this.parent.trigger(name, target, extraArg);\n }\n return true;\n },\n\n // Reset UI\n reset: function reset() {\n // Field case: just emit a reset event for UI\n if ('ParsleyForm' !== this.__class__) {\n this._resetUI();\n return this._trigger('reset');\n }\n\n // Form case: emit a reset event for each field\n for (var i = 0; i < this.fields.length; i++) this.fields[i].reset();\n\n this._trigger('reset');\n },\n\n // Destroy Parsley instance (+ UI)\n destroy: function destroy() {\n // Field case: emit destroy event to clean UI and then destroy stored instance\n this._destroyUI();\n if ('ParsleyForm' !== this.__class__) {\n this.$element.removeData('Parsley');\n this.$element.removeData('ParsleyFieldMultiple');\n this._trigger('destroy');\n\n return;\n }\n\n // Form case: destroy all its fields and then destroy stored instance\n for (var i = 0; i < this.fields.length; i++) this.fields[i].destroy();\n\n this.$element.removeData('Parsley');\n this._trigger('destroy');\n },\n\n asyncIsValid: function asyncIsValid(group, force) {\n ParsleyUtils__default.warnOnce(\"asyncIsValid is deprecated; please use whenValid instead\");\n return this.whenValid({ group: group, force: force });\n },\n\n _findRelated: function _findRelated() {\n return this.options.multiple ? this.parent.$element.find('[' + this.options.namespace + 'multiple=\"' + this.options.multiple + '\"]') : this.$element;\n }\n };\n\n var requirementConverters = {\n string: function string(_string) {\n return _string;\n },\n integer: function integer(string) {\n if (isNaN(string)) throw 'Requirement is not an integer: \"' + string + '\"';\n return parseInt(string, 10);\n },\n number: function number(string) {\n if (isNaN(string)) throw 'Requirement is not a number: \"' + string + '\"';\n return parseFloat(string);\n },\n reference: function reference(string) {\n // Unused for now\n var result = $(string);\n if (result.length === 0) throw 'No such reference: \"' + string + '\"';\n return result;\n },\n boolean: function boolean(string) {\n return string !== 'false';\n },\n object: function object(string) {\n return ParsleyUtils__default.deserializeValue(string);\n },\n regexp: function regexp(_regexp) {\n var flags = '';\n\n // Test if RegExp is literal, if not, nothing to be done, otherwise, we need to isolate flags and pattern\n if (/^\\/.*\\/(?:[gimy]*)$/.test(_regexp)) {\n // Replace the regexp literal string with the first match group: ([gimy]*)\n // If no flag is present, this will be a blank string\n flags = _regexp.replace(/.*\\/([gimy]*)$/, '$1');\n // Again, replace the regexp literal string with the first match group:\n // everything excluding the opening and closing slashes and the flags\n _regexp = _regexp.replace(new RegExp('^/(.*?)/' + flags + '$'), '$1');\n } else {\n // Anchor regexp:\n _regexp = '^' + _regexp + '$';\n }\n return new RegExp(_regexp, flags);\n }\n };\n\n var convertArrayRequirement = function convertArrayRequirement(string, length) {\n var m = string.match(/^\\s*\\[(.*)\\]\\s*$/);\n if (!m) throw 'Requirement is not an array: \"' + string + '\"';\n var values = m[1].split(',').map(ParsleyUtils__default.trimString);\n if (values.length !== length) throw 'Requirement has ' + values.length + ' values when ' + length + ' are needed';\n return values;\n };\n\n var convertRequirement = function convertRequirement(requirementType, string) {\n var converter = requirementConverters[requirementType || 'string'];\n if (!converter) throw 'Unknown requirement specification: \"' + requirementType + '\"';\n return converter(string);\n };\n\n var convertExtraOptionRequirement = function convertExtraOptionRequirement(requirementSpec, string, extraOptionReader) {\n var main = null;\n var extra = {};\n for (var key in requirementSpec) {\n if (key) {\n var value = extraOptionReader(key);\n if ('string' === typeof value) value = convertRequirement(requirementSpec[key], value);\n extra[key] = value;\n } else {\n main = convertRequirement(requirementSpec[key], string);\n }\n }\n return [main, extra];\n };\n\n // A Validator needs to implement the methods `validate` and `parseRequirements`\n\n var ParsleyValidator = function ParsleyValidator(spec) {\n $.extend(true, this, spec);\n };\n\n ParsleyValidator.prototype = {\n // Returns `true` iff the given `value` is valid according the given requirements.\n validate: function validate(value, requirementFirstArg) {\n if (this.fn) {\n // Legacy style validator\n\n if (arguments.length > 3) // If more args then value, requirement, instance...\n requirementFirstArg = [].slice.call(arguments, 1, -1); // Skip first arg (value) and last (instance), combining the rest\n return this.fn.call(this, value, requirementFirstArg);\n }\n\n if ($.isArray(value)) {\n if (!this.validateMultiple) throw 'Validator `' + this.name + '` does not handle multiple values';\n return this.validateMultiple.apply(this, arguments);\n } else {\n if (this.validateNumber) {\n if (isNaN(value)) return false;\n arguments[0] = parseFloat(arguments[0]);\n return this.validateNumber.apply(this, arguments);\n }\n if (this.validateString) {\n return this.validateString.apply(this, arguments);\n }\n throw 'Validator `' + this.name + '` only handles multiple values';\n }\n },\n\n // Parses `requirements` into an array of arguments,\n // according to `this.requirementType`\n parseRequirements: function parseRequirements(requirements, extraOptionReader) {\n if ('string' !== typeof requirements) {\n // Assume requirement already parsed\n // but make sure we return an array\n return $.isArray(requirements) ? requirements : [requirements];\n }\n var type = this.requirementType;\n if ($.isArray(type)) {\n var values = convertArrayRequirement(requirements, type.length);\n for (var i = 0; i < values.length; i++) values[i] = convertRequirement(type[i], values[i]);\n return values;\n } else if ($.isPlainObject(type)) {\n return convertExtraOptionRequirement(type, requirements, extraOptionReader);\n } else {\n return [convertRequirement(type, requirements)];\n }\n },\n // Defaults:\n requirementType: 'string',\n\n priority: 2\n\n };\n\n var ParsleyValidatorRegistry = function ParsleyValidatorRegistry(validators, catalog) {\n this.__class__ = 'ParsleyValidatorRegistry';\n\n // Default Parsley locale is en\n this.locale = 'en';\n\n this.init(validators || {}, catalog || {});\n };\n\n var typeRegexes = {\n email: /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i,\n\n // Follow https://www.w3.org/TR/html5/infrastructure.html#floating-point-numbers\n number: /^-?(\\d*\\.)?\\d+(e[-+]?\\d+)?$/i,\n\n integer: /^-?\\d+$/,\n\n digits: /^\\d+$/,\n\n alphanum: /^\\w+$/i,\n\n url: new RegExp(\"^\" +\n // protocol identifier\n \"(?:(?:https?|ftp)://)?\" + // ** mod: make scheme optional\n // user:pass authentication\n \"(?:\\\\S+(?::\\\\S*)?@)?\" + \"(?:\" +\n // IP address exclusion\n // private & local networks\n // \"(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})\" + // ** mod: allow local networks\n // \"(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})\" + // ** mod: allow local networks\n // \"(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})\" + // ** mod: allow local networks\n // IP address dotted notation octets\n // excludes loopback network 0.0.0.0\n // excludes reserved space >= 224.0.0.0\n // excludes network & broacast addresses\n // (first & last IP address of each class)\n \"(?:[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]))\" + \"|\" +\n // host name\n '(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)' +\n // domain name\n '(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*' +\n // TLD identifier\n '(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))' + \")\" +\n // port number\n \"(?::\\\\d{2,5})?\" +\n // resource path\n \"(?:/\\\\S*)?\" + \"$\", 'i')\n };\n typeRegexes.range = typeRegexes.number;\n\n // See http://stackoverflow.com/a/10454560/8279\n var decimalPlaces = function decimalPlaces(num) {\n var match = ('' + num).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n if (!match) {\n return 0;\n }\n return Math.max(0,\n // Number of digits right of decimal point.\n (match[1] ? match[1].length : 0) - (\n // Adjust for scientific notation.\n match[2] ? +match[2] : 0));\n };\n\n ParsleyValidatorRegistry.prototype = {\n init: function init(validators, catalog) {\n this.catalog = catalog;\n // Copy prototype's validators:\n this.validators = $.extend({}, this.validators);\n\n for (var name in validators) this.addValidator(name, validators[name].fn, validators[name].priority);\n\n window.Parsley.trigger('parsley:validator:init');\n },\n\n // Set new messages locale if we have dictionary loaded in ParsleyConfig.i18n\n setLocale: function setLocale(locale) {\n if ('undefined' === typeof this.catalog[locale]) throw new Error(locale + ' is not available in the catalog');\n\n this.locale = locale;\n\n return this;\n },\n\n // Add a new messages catalog for a given locale. Set locale for this catalog if set === `true`\n addCatalog: function addCatalog(locale, messages, set) {\n if ('object' === typeof messages) this.catalog[locale] = messages;\n\n if (true === set) return this.setLocale(locale);\n\n return this;\n },\n\n // Add a specific message for a given constraint in a given locale\n addMessage: function addMessage(locale, name, message) {\n if ('undefined' === typeof this.catalog[locale]) this.catalog[locale] = {};\n\n this.catalog[locale][name] = message;\n\n return this;\n },\n\n // Add messages for a given locale\n addMessages: function addMessages(locale, nameMessageObject) {\n for (var name in nameMessageObject) this.addMessage(locale, name, nameMessageObject[name]);\n\n return this;\n },\n\n // Add a new validator\n //\n // addValidator('custom', {\n // requirementType: ['integer', 'integer'],\n // validateString: function(value, from, to) {},\n // priority: 22,\n // messages: {\n // en: \"Hey, that's no good\",\n // fr: \"Aye aye, pas bon du tout\",\n // }\n // })\n //\n // Old API was addValidator(name, function, priority)\n //\n addValidator: function addValidator(name, arg1, arg2) {\n if (this.validators[name]) ParsleyUtils__default.warn('Validator \"' + name + '\" is already defined.');else if (ParsleyDefaults.hasOwnProperty(name)) {\n ParsleyUtils__default.warn('\"' + name + '\" is a restricted keyword and is not a valid validator name.');\n return;\n }\n return this._setValidator.apply(this, arguments);\n },\n\n updateValidator: function updateValidator(name, arg1, arg2) {\n if (!this.validators[name]) {\n ParsleyUtils__default.warn('Validator \"' + name + '\" is not already defined.');\n return this.addValidator.apply(this, arguments);\n }\n return this._setValidator.apply(this, arguments);\n },\n\n removeValidator: function removeValidator(name) {\n if (!this.validators[name]) ParsleyUtils__default.warn('Validator \"' + name + '\" is not defined.');\n\n delete this.validators[name];\n\n return this;\n },\n\n _setValidator: function _setValidator(name, validator, priority) {\n if ('object' !== typeof validator) {\n // Old style validator, with `fn` and `priority`\n validator = {\n fn: validator,\n priority: priority\n };\n }\n if (!validator.validate) {\n validator = new ParsleyValidator(validator);\n }\n this.validators[name] = validator;\n\n for (var locale in validator.messages || {}) this.addMessage(locale, name, validator.messages[locale]);\n\n return this;\n },\n\n getErrorMessage: function getErrorMessage(constraint) {\n var message;\n\n // Type constraints are a bit different, we have to match their requirements too to find right error message\n if ('type' === constraint.name) {\n var typeMessages = this.catalog[this.locale][constraint.name] || {};\n message = typeMessages[constraint.requirements];\n } else message = this.formatMessage(this.catalog[this.locale][constraint.name], constraint.requirements);\n\n return message || this.catalog[this.locale].defaultMessage || this.catalog.en.defaultMessage;\n },\n\n // Kind of light `sprintf()` implementation\n formatMessage: function formatMessage(string, parameters) {\n if ('object' === typeof parameters) {\n for (var i in parameters) string = this.formatMessage(string, parameters[i]);\n\n return string;\n }\n\n return 'string' === typeof string ? string.replace(/%s/i, parameters) : '';\n },\n\n // Here is the Parsley default validators list.\n // A validator is an object with the following key values:\n // - priority: an integer\n // - requirement: 'string' (default), 'integer', 'number', 'regexp' or an Array of these\n // - validateString, validateMultiple, validateNumber: functions returning `true`, `false` or a promise\n // Alternatively, a validator can be a function that returns such an object\n //\n validators: {\n notblank: {\n validateString: function validateString(value) {\n return (/\\S/.test(value)\n );\n },\n priority: 2\n },\n required: {\n validateMultiple: function validateMultiple(values) {\n return values.length > 0;\n },\n validateString: function validateString(value) {\n return (/\\S/.test(value)\n );\n },\n priority: 512\n },\n type: {\n validateString: function validateString(value, type) {\n var _ref = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];\n\n var _ref$step = _ref.step;\n var step = _ref$step === undefined ? 'any' : _ref$step;\n var _ref$base = _ref.base;\n var base = _ref$base === undefined ? 0 : _ref$base;\n\n var regex = typeRegexes[type];\n if (!regex) {\n throw new Error('validator type `' + type + '` is not supported');\n }\n if (!regex.test(value)) return false;\n if ('number' === type) {\n if (!/^any$/i.test(step || '')) {\n var nb = Number(value);\n var decimals = Math.max(decimalPlaces(step), decimalPlaces(base));\n if (decimalPlaces(nb) > decimals) // Value can't have too many decimals\n return false;\n // Be careful of rounding errors by using integers.\n var toInt = function toInt(f) {\n return Math.round(f * Math.pow(10, decimals));\n };\n if ((toInt(nb) - toInt(base)) % toInt(step) != 0) return false;\n }\n }\n return true;\n },\n requirementType: {\n '': 'string',\n step: 'string',\n base: 'number'\n },\n priority: 256\n },\n pattern: {\n validateString: function validateString(value, regexp) {\n return regexp.test(value);\n },\n requirementType: 'regexp',\n priority: 64\n },\n minlength: {\n validateString: function validateString(value, requirement) {\n return value.length >= requirement;\n },\n requirementType: 'integer',\n priority: 30\n },\n maxlength: {\n validateString: function validateString(value, requirement) {\n return value.length <= requirement;\n },\n requirementType: 'integer',\n priority: 30\n },\n length: {\n validateString: function validateString(value, min, max) {\n return value.length >= min && value.length <= max;\n },\n requirementType: ['integer', 'integer'],\n priority: 30\n },\n mincheck: {\n validateMultiple: function validateMultiple(values, requirement) {\n return values.length >= requirement;\n },\n requirementType: 'integer',\n priority: 30\n },\n maxcheck: {\n validateMultiple: function validateMultiple(values, requirement) {\n return values.length <= requirement;\n },\n requirementType: 'integer',\n priority: 30\n },\n check: {\n validateMultiple: function validateMultiple(values, min, max) {\n return values.length >= min && values.length <= max;\n },\n requirementType: ['integer', 'integer'],\n priority: 30\n },\n min: {\n validateNumber: function validateNumber(value, requirement) {\n return value >= requirement;\n },\n requirementType: 'number',\n priority: 30\n },\n max: {\n validateNumber: function validateNumber(value, requirement) {\n return value <= requirement;\n },\n requirementType: 'number',\n priority: 30\n },\n range: {\n validateNumber: function validateNumber(value, min, max) {\n return value >= min && value <= max;\n },\n requirementType: ['number', 'number'],\n priority: 30\n },\n equalto: {\n validateString: function validateString(value, refOrValue) {\n var $reference = $(refOrValue);\n if ($reference.length) return value === $reference.val();else return value === refOrValue;\n },\n priority: 256\n }\n }\n };\n\n var ParsleyUI = {};\n\n var diffResults = function diffResults(newResult, oldResult, deep) {\n var added = [];\n var kept = [];\n\n for (var i = 0; i < newResult.length; i++) {\n var found = false;\n\n for (var j = 0; j < oldResult.length; j++) if (newResult[i].assert.name === oldResult[j].assert.name) {\n found = true;\n break;\n }\n\n if (found) kept.push(newResult[i]);else added.push(newResult[i]);\n }\n\n return {\n kept: kept,\n added: added,\n removed: !deep ? diffResults(oldResult, newResult, true).added : []\n };\n };\n\n ParsleyUI.Form = {\n\n _actualizeTriggers: function _actualizeTriggers() {\n var _this2 = this;\n\n this.$element.on('submit.Parsley', function (evt) {\n _this2.onSubmitValidate(evt);\n });\n this.$element.on('click.Parsley', ParsleyUtils__default._SubmitSelector, function (evt) {\n _this2.onSubmitButton(evt);\n });\n\n // UI could be disabled\n if (false === this.options.uiEnabled) return;\n\n this.$element.attr('novalidate', '');\n },\n\n focus: function focus() {\n this._focusedField = null;\n\n if (true === this.validationResult || 'none' === this.options.focus) return null;\n\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i];\n if (true !== field.validationResult && field.validationResult.length > 0 && 'undefined' === typeof field.options.noFocus) {\n this._focusedField = field.$element;\n if ('first' === this.options.focus) break;\n }\n }\n\n if (null === this._focusedField) return null;\n\n return this._focusedField.focus();\n },\n\n _destroyUI: function _destroyUI() {\n // Reset all event listeners\n this.$element.off('.Parsley');\n }\n\n };\n\n ParsleyUI.Field = {\n\n _reflowUI: function _reflowUI() {\n this._buildUI();\n\n // If this field doesn't have an active UI don't bother doing something\n if (!this._ui) return;\n\n // Diff between two validation results\n var diff = diffResults(this.validationResult, this._ui.lastValidationResult);\n\n // Then store current validation result for next reflow\n this._ui.lastValidationResult = this.validationResult;\n\n // Handle valid / invalid / none field class\n this._manageStatusClass();\n\n // Add, remove, updated errors messages\n this._manageErrorsMessages(diff);\n\n // Triggers impl\n this._actualizeTriggers();\n\n // If field is not valid for the first time, bind keyup trigger to ease UX and quickly inform user\n if ((diff.kept.length || diff.added.length) && !this._failedOnce) {\n this._failedOnce = true;\n this._actualizeTriggers();\n }\n },\n\n // Returns an array of field's error message(s)\n getErrorsMessages: function getErrorsMessages() {\n // No error message, field is valid\n if (true === this.validationResult) return [];\n\n var messages = [];\n\n for (var i = 0; i < this.validationResult.length; i++) messages.push(this.validationResult[i].errorMessage || this._getErrorMessage(this.validationResult[i].assert));\n\n return messages;\n },\n\n // It's a goal of Parsley that this method is no longer required [#1073]\n addError: function addError(name) {\n var _ref2 = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var message = _ref2.message;\n var assert = _ref2.assert;\n var _ref2$updateClass = _ref2.updateClass;\n var updateClass = _ref2$updateClass === undefined ? true : _ref2$updateClass;\n\n this._buildUI();\n this._addError(name, { message: message, assert: assert });\n\n if (updateClass) this._errorClass();\n },\n\n // It's a goal of Parsley that this method is no longer required [#1073]\n updateError: function updateError(name) {\n var _ref3 = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var message = _ref3.message;\n var assert = _ref3.assert;\n var _ref3$updateClass = _ref3.updateClass;\n var updateClass = _ref3$updateClass === undefined ? true : _ref3$updateClass;\n\n this._buildUI();\n this._updateError(name, { message: message, assert: assert });\n\n if (updateClass) this._errorClass();\n },\n\n // It's a goal of Parsley that this method is no longer required [#1073]\n removeError: function removeError(name) {\n var _ref4 = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var _ref4$updateClass = _ref4.updateClass;\n var updateClass = _ref4$updateClass === undefined ? true : _ref4$updateClass;\n\n this._buildUI();\n this._removeError(name);\n\n // edge case possible here: remove a standard Parsley error that is still failing in this.validationResult\n // but highly improbable cuz' manually removing a well Parsley handled error makes no sense.\n if (updateClass) this._manageStatusClass();\n },\n\n _manageStatusClass: function _manageStatusClass() {\n if (this.hasConstraints() && this.needsValidation() && true === this.validationResult) this._successClass();else if (this.validationResult.length > 0) this._errorClass();else this._resetClass();\n },\n\n _manageErrorsMessages: function _manageErrorsMessages(diff) {\n if ('undefined' !== typeof this.options.errorsMessagesDisabled) return;\n\n // Case where we have errorMessage option that configure an unique field error message, regardless failing validators\n if ('undefined' !== typeof this.options.errorMessage) {\n if (diff.added.length || diff.kept.length) {\n this._insertErrorWrapper();\n\n if (0 === this._ui.$errorsWrapper.find('.parsley-custom-error-message').length) this._ui.$errorsWrapper.append($(this.options.errorTemplate).addClass('parsley-custom-error-message'));\n\n return this._ui.$errorsWrapper.addClass('filled').find('.parsley-custom-error-message').html(this.options.errorMessage);\n }\n\n return this._ui.$errorsWrapper.removeClass('filled').find('.parsley-custom-error-message').remove();\n }\n\n // Show, hide, update failing constraints messages\n for (var i = 0; i < diff.removed.length; i++) this._removeError(diff.removed[i].assert.name);\n\n for (i = 0; i < diff.added.length; i++) this._addError(diff.added[i].assert.name, { message: diff.added[i].errorMessage, assert: diff.added[i].assert });\n\n for (i = 0; i < diff.kept.length; i++) this._updateError(diff.kept[i].assert.name, { message: diff.kept[i].errorMessage, assert: diff.kept[i].assert });\n },\n\n _addError: function _addError(name, _ref5) {\n var message = _ref5.message;\n var assert = _ref5.assert;\n\n this._insertErrorWrapper();\n this._ui.$errorsWrapper.addClass('filled').append($(this.options.errorTemplate).addClass('parsley-' + name).html(message || this._getErrorMessage(assert)));\n },\n\n _updateError: function _updateError(name, _ref6) {\n var message = _ref6.message;\n var assert = _ref6.assert;\n\n this._ui.$errorsWrapper.addClass('filled').find('.parsley-' + name).html(message || this._getErrorMessage(assert));\n },\n\n _removeError: function _removeError(name) {\n this._ui.$errorsWrapper.removeClass('filled').find('.parsley-' + name).remove();\n },\n\n _getErrorMessage: function _getErrorMessage(constraint) {\n var customConstraintErrorMessage = constraint.name + 'Message';\n\n if ('undefined' !== typeof this.options[customConstraintErrorMessage]) return window.Parsley.formatMessage(this.options[customConstraintErrorMessage], constraint.requirements);\n\n return window.Parsley.getErrorMessage(constraint);\n },\n\n _buildUI: function _buildUI() {\n // UI could be already built or disabled\n if (this._ui || false === this.options.uiEnabled) return;\n\n var _ui = {};\n\n // Give field its Parsley id in DOM\n this.$element.attr(this.options.namespace + 'id', this.__id__);\n\n /** Generate important UI elements and store them in this **/\n // $errorClassHandler is the $element that woul have parsley-error and parsley-success classes\n _ui.$errorClassHandler = this._manageClassHandler();\n\n // $errorsWrapper is a div that would contain the various field errors, it will be appended into $errorsContainer\n _ui.errorsWrapperId = 'parsley-id-' + (this.options.multiple ? 'multiple-' + this.options.multiple : this.__id__);\n _ui.$errorsWrapper = $(this.options.errorsWrapper).attr('id', _ui.errorsWrapperId);\n\n // ValidationResult UI storage to detect what have changed bwt two validations, and update DOM accordingly\n _ui.lastValidationResult = [];\n _ui.validationInformationVisible = false;\n\n // Store it in this for later\n this._ui = _ui;\n },\n\n // Determine which element will have `parsley-error` and `parsley-success` classes\n _manageClassHandler: function _manageClassHandler() {\n // An element selector could be passed through DOM with `data-parsley-class-handler=#foo`\n if ('string' === typeof this.options.classHandler && $(this.options.classHandler).length) return $(this.options.classHandler);\n\n // Class handled could also be determined by function given in Parsley options\n var $handler = this.options.classHandler.call(this, this);\n\n // If this function returned a valid existing DOM element, go for it\n if ('undefined' !== typeof $handler && $handler.length) return $handler;\n\n return this._inputHolder();\n },\n\n _inputHolder: function _inputHolder() {\n // if simple element (input, texatrea, select...) it will perfectly host the classes and precede the error container\n if (!this.options.multiple || this.$element.is('select')) return this.$element;\n\n // But if multiple element (radio, checkbox), that would be their parent\n return this.$element.parent();\n },\n\n _insertErrorWrapper: function _insertErrorWrapper() {\n var $errorsContainer;\n\n // Nothing to do if already inserted\n if (0 !== this._ui.$errorsWrapper.parent().length) return this._ui.$errorsWrapper.parent();\n\n if ('string' === typeof this.options.errorsContainer) {\n if ($(this.options.errorsContainer).length) return $(this.options.errorsContainer).append(this._ui.$errorsWrapper);else ParsleyUtils__default.warn('The errors container `' + this.options.errorsContainer + '` does not exist in DOM');\n } else if ('function' === typeof this.options.errorsContainer) $errorsContainer = this.options.errorsContainer.call(this, this);\n\n if ('undefined' !== typeof $errorsContainer && $errorsContainer.length) return $errorsContainer.append(this._ui.$errorsWrapper);\n\n return this._inputHolder().after(this._ui.$errorsWrapper);\n },\n\n _actualizeTriggers: function _actualizeTriggers() {\n var _this3 = this;\n\n var $toBind = this._findRelated();\n var trigger;\n\n // Remove Parsley events already bound on this field\n $toBind.off('.Parsley');\n if (this._failedOnce) $toBind.on(ParsleyUtils__default.namespaceEvents(this.options.triggerAfterFailure, 'Parsley'), function () {\n _this3._validateIfNeeded();\n });else if (trigger = ParsleyUtils__default.namespaceEvents(this.options.trigger, 'Parsley')) {\n $toBind.on(trigger, function (event) {\n _this3._validateIfNeeded(event);\n });\n }\n },\n\n _validateIfNeeded: function _validateIfNeeded(event) {\n var _this4 = this;\n\n // For keyup, keypress, keydown, input... events that could be a little bit obstrusive\n // do not validate if val length < min threshold on first validation. Once field have been validated once and info\n // about success or failure have been displayed, always validate with this trigger to reflect every yalidation change.\n if (event && /key|input/.test(event.type)) if (!(this._ui && this._ui.validationInformationVisible) && this.getValue().length <= this.options.validationThreshold) return;\n\n if (this.options.debounce) {\n window.clearTimeout(this._debounced);\n this._debounced = window.setTimeout(function () {\n return _this4.validate();\n }, this.options.debounce);\n } else this.validate();\n },\n\n _resetUI: function _resetUI() {\n // Reset all event listeners\n this._failedOnce = false;\n this._actualizeTriggers();\n\n // Nothing to do if UI never initialized for this field\n if ('undefined' === typeof this._ui) return;\n\n // Reset all errors' li\n this._ui.$errorsWrapper.removeClass('filled').children().remove();\n\n // Reset validation class\n this._resetClass();\n\n // Reset validation flags and last validation result\n this._ui.lastValidationResult = [];\n this._ui.validationInformationVisible = false;\n },\n\n _destroyUI: function _destroyUI() {\n this._resetUI();\n\n if ('undefined' !== typeof this._ui) this._ui.$errorsWrapper.remove();\n\n delete this._ui;\n },\n\n _successClass: function _successClass() {\n this._ui.validationInformationVisible = true;\n this._ui.$errorClassHandler.removeClass(this.options.errorClass).addClass(this.options.successClass);\n },\n _errorClass: function _errorClass() {\n this._ui.validationInformationVisible = true;\n this._ui.$errorClassHandler.removeClass(this.options.successClass).addClass(this.options.errorClass);\n },\n _resetClass: function _resetClass() {\n this._ui.$errorClassHandler.removeClass(this.options.successClass).removeClass(this.options.errorClass);\n }\n };\n\n var ParsleyForm = function ParsleyForm(element, domOptions, options) {\n this.__class__ = 'ParsleyForm';\n\n this.$element = $(element);\n this.domOptions = domOptions;\n this.options = options;\n this.parent = window.Parsley;\n\n this.fields = [];\n this.validationResult = null;\n };\n\n var ParsleyForm__statusMapping = { pending: null, resolved: true, rejected: false };\n\n ParsleyForm.prototype = {\n onSubmitValidate: function onSubmitValidate(event) {\n var _this5 = this;\n\n // This is a Parsley generated submit event, do not validate, do not prevent, simply exit and keep normal behavior\n if (true === event.parsley) return;\n\n // If we didn't come here through a submit button, use the first one in the form\n var $submitSource = this._$submitSource || this.$element.find(ParsleyUtils__default._SubmitSelector).first();\n this._$submitSource = null;\n this.$element.find('.parsley-synthetic-submit-button').prop('disabled', true);\n if ($submitSource.is('[formnovalidate]')) return;\n\n var promise = this.whenValidate({ event: event });\n\n if ('resolved' === promise.state() && false !== this._trigger('submit')) {\n // All good, let event go through. We make this distinction because browsers\n // differ in their handling of `submit` being called from inside a submit event [#1047]\n } else {\n // Rejected or pending: cancel this submit\n event.stopImmediatePropagation();\n event.preventDefault();\n if ('pending' === promise.state()) promise.done(function () {\n _this5._submit($submitSource);\n });\n }\n },\n\n onSubmitButton: function onSubmitButton(event) {\n this._$submitSource = $(event.currentTarget);\n },\n // internal\n // _submit submits the form, this time without going through the validations.\n // Care must be taken to \"fake\" the actual submit button being clicked.\n _submit: function _submit($submitSource) {\n if (false === this._trigger('submit')) return;\n // Add submit button's data\n if ($submitSource) {\n var $synthetic = this.$element.find('.parsley-synthetic-submit-button').prop('disabled', false);\n if (0 === $synthetic.length) $synthetic = $('').appendTo(this.$element);\n $synthetic.attr({\n name: $submitSource.attr('name'),\n value: $submitSource.attr('value')\n });\n }\n\n this.$element.trigger($.extend($.Event('submit'), { parsley: true }));\n },\n\n // Performs validation on fields while triggering events.\n // @returns `true` if all validations succeeds, `false`\n // if a failure is immediately detected, or `null`\n // if dependant on a promise.\n // Consider using `whenValidate` instead.\n validate: function validate(options) {\n if (arguments.length >= 1 && !$.isPlainObject(options)) {\n ParsleyUtils__default.warnOnce('Calling validate on a parsley form without passing arguments as an object is deprecated.');\n\n var _arguments = _slice.call(arguments);\n\n var group = _arguments[0];\n var force = _arguments[1];\n var event = _arguments[2];\n\n options = { group: group, force: force, event: event };\n }\n return ParsleyForm__statusMapping[this.whenValidate(options).state()];\n },\n\n whenValidate: function whenValidate() {\n var _ParsleyUtils__default$all$done$fail$always,\n _this6 = this;\n\n var _ref7 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var group = _ref7.group;\n var force = _ref7.force;\n var event = _ref7.event;\n\n this.submitEvent = event;\n if (event) {\n this.submitEvent = $.extend({}, event, { preventDefault: function preventDefault() {\n ParsleyUtils__default.warnOnce(\"Using `this.submitEvent.preventDefault()` is deprecated; instead, call `this.validationResult = false`\");\n _this6.validationResult = false;\n } });\n }\n this.validationResult = true;\n\n // fire validate event to eventually modify things before every validation\n this._trigger('validate');\n\n // Refresh form DOM options and form's fields that could have changed\n this._refreshFields();\n\n var promises = this._withoutReactualizingFormOptions(function () {\n return $.map(_this6.fields, function (field) {\n return field.whenValidate({ force: force, group: group });\n });\n });\n\n return (_ParsleyUtils__default$all$done$fail$always = ParsleyUtils__default.all(promises).done(function () {\n _this6._trigger('success');\n }).fail(function () {\n _this6.validationResult = false;\n _this6.focus();\n _this6._trigger('error');\n }).always(function () {\n _this6._trigger('validated');\n })).pipe.apply(_ParsleyUtils__default$all$done$fail$always, _toConsumableArray(this._pipeAccordingToValidationResult()));\n },\n\n // Iterate over refreshed fields, and stop on first failure.\n // Returns `true` if all fields are valid, `false` if a failure is detected\n // or `null` if the result depends on an unresolved promise.\n // Prefer using `whenValid` instead.\n isValid: function isValid(options) {\n if (arguments.length >= 1 && !$.isPlainObject(options)) {\n ParsleyUtils__default.warnOnce('Calling isValid on a parsley form without passing arguments as an object is deprecated.');\n\n var _arguments2 = _slice.call(arguments);\n\n var group = _arguments2[0];\n var force = _arguments2[1];\n\n options = { group: group, force: force };\n }\n return ParsleyForm__statusMapping[this.whenValid(options).state()];\n },\n\n // Iterate over refreshed fields and validate them.\n // Returns a promise.\n // A validation that immediately fails will interrupt the validations.\n whenValid: function whenValid() {\n var _this7 = this;\n\n var _ref8 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var group = _ref8.group;\n var force = _ref8.force;\n\n this._refreshFields();\n\n var promises = this._withoutReactualizingFormOptions(function () {\n return $.map(_this7.fields, function (field) {\n return field.whenValid({ group: group, force: force });\n });\n });\n return ParsleyUtils__default.all(promises);\n },\n\n _refreshFields: function _refreshFields() {\n return this.actualizeOptions()._bindFields();\n },\n\n _bindFields: function _bindFields() {\n var _this8 = this;\n\n var oldFields = this.fields;\n\n this.fields = [];\n this.fieldsMappedById = {};\n\n this._withoutReactualizingFormOptions(function () {\n _this8.$element.find(_this8.options.inputs).not(_this8.options.excluded).each(function (_, element) {\n var fieldInstance = new window.Parsley.Factory(element, {}, _this8);\n\n // Only add valid and not excluded `ParsleyField` and `ParsleyFieldMultiple` children\n if (('ParsleyField' === fieldInstance.__class__ || 'ParsleyFieldMultiple' === fieldInstance.__class__) && true !== fieldInstance.options.excluded) if ('undefined' === typeof _this8.fieldsMappedById[fieldInstance.__class__ + '-' + fieldInstance.__id__]) {\n _this8.fieldsMappedById[fieldInstance.__class__ + '-' + fieldInstance.__id__] = fieldInstance;\n _this8.fields.push(fieldInstance);\n }\n });\n\n $.each(ParsleyUtils__default.difference(oldFields, _this8.fields), function (_, field) {\n field._trigger('reset');\n });\n });\n return this;\n },\n\n // Internal only.\n // Looping on a form's fields to do validation or similar\n // will trigger reactualizing options on all of them, which\n // in turn will reactualize the form's options.\n // To avoid calling actualizeOptions so many times on the form\n // for nothing, _withoutReactualizingFormOptions temporarily disables\n // the method actualizeOptions on this form while `fn` is called.\n _withoutReactualizingFormOptions: function _withoutReactualizingFormOptions(fn) {\n var oldActualizeOptions = this.actualizeOptions;\n this.actualizeOptions = function () {\n return this;\n };\n var result = fn();\n this.actualizeOptions = oldActualizeOptions;\n return result;\n },\n\n // Internal only.\n // Shortcut to trigger an event\n // Returns true iff event is not interrupted and default not prevented.\n _trigger: function _trigger(eventName) {\n return this.trigger('form:' + eventName);\n }\n\n };\n\n var ConstraintFactory = function ConstraintFactory(parsleyField, name, requirements, priority, isDomConstraint) {\n if (!/ParsleyField/.test(parsleyField.__class__)) throw new Error('ParsleyField or ParsleyFieldMultiple instance expected');\n\n var validatorSpec = window.Parsley._validatorRegistry.validators[name];\n var validator = new ParsleyValidator(validatorSpec);\n\n $.extend(this, {\n validator: validator,\n name: name,\n requirements: requirements,\n priority: priority || parsleyField.options[name + 'Priority'] || validator.priority,\n isDomConstraint: true === isDomConstraint\n });\n this._parseRequirements(parsleyField.options);\n };\n\n var capitalize = function capitalize(str) {\n var cap = str[0].toUpperCase();\n return cap + str.slice(1);\n };\n\n ConstraintFactory.prototype = {\n validate: function validate(value, instance) {\n var _validator;\n\n return (_validator = this.validator).validate.apply(_validator, [value].concat(_toConsumableArray(this.requirementList), [instance]));\n },\n\n _parseRequirements: function _parseRequirements(options) {\n var _this9 = this;\n\n this.requirementList = this.validator.parseRequirements(this.requirements, function (key) {\n return options[_this9.name + capitalize(key)];\n });\n }\n };\n\n var ParsleyField = function ParsleyField(field, domOptions, options, parsleyFormInstance) {\n this.__class__ = 'ParsleyField';\n\n this.$element = $(field);\n\n // Set parent if we have one\n if ('undefined' !== typeof parsleyFormInstance) {\n this.parent = parsleyFormInstance;\n }\n\n this.options = options;\n this.domOptions = domOptions;\n\n // Initialize some properties\n this.constraints = [];\n this.constraintsByName = {};\n this.validationResult = true;\n\n // Bind constraints\n this._bindConstraints();\n };\n\n var parsley_field__statusMapping = { pending: null, resolved: true, rejected: false };\n\n ParsleyField.prototype = {\n // # Public API\n // Validate field and trigger some events for mainly `ParsleyUI`\n // @returns `true`, an array of the validators that failed, or\n // `null` if validation is not finished. Prefer using whenValidate\n validate: function validate(options) {\n if (arguments.length >= 1 && !$.isPlainObject(options)) {\n ParsleyUtils__default.warnOnce('Calling validate on a parsley field without passing arguments as an object is deprecated.');\n options = { options: options };\n }\n var promise = this.whenValidate(options);\n if (!promise) // If excluded with `group` option\n return true;\n switch (promise.state()) {\n case 'pending':\n return null;\n case 'resolved':\n return true;\n case 'rejected':\n return this.validationResult;\n }\n },\n\n // Validate field and trigger some events for mainly `ParsleyUI`\n // @returns a promise that succeeds only when all validations do\n // or `undefined` if field is not in the given `group`.\n whenValidate: function whenValidate() {\n var _whenValid$always$done$fail$always,\n _this10 = this;\n\n var _ref9 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var force = _ref9.force;\n var group = _ref9.group;\n\n // do not validate a field if not the same as given validation group\n this.refreshConstraints();\n if (group && !this._isInGroup(group)) return;\n\n this.value = this.getValue();\n\n // Field Validate event. `this.value` could be altered for custom needs\n this._trigger('validate');\n\n return (_whenValid$always$done$fail$always = this.whenValid({ force: force, value: this.value, _refreshed: true }).always(function () {\n _this10._reflowUI();\n }).done(function () {\n _this10._trigger('success');\n }).fail(function () {\n _this10._trigger('error');\n }).always(function () {\n _this10._trigger('validated');\n })).pipe.apply(_whenValid$always$done$fail$always, _toConsumableArray(this._pipeAccordingToValidationResult()));\n },\n\n hasConstraints: function hasConstraints() {\n return 0 !== this.constraints.length;\n },\n\n // An empty optional field does not need validation\n needsValidation: function needsValidation(value) {\n if ('undefined' === typeof value) value = this.getValue();\n\n // If a field is empty and not required, it is valid\n // Except if `data-parsley-validate-if-empty` explicitely added, useful for some custom validators\n if (!value.length && !this._isRequired() && 'undefined' === typeof this.options.validateIfEmpty) return false;\n\n return true;\n },\n\n _isInGroup: function _isInGroup(group) {\n if ($.isArray(this.options.group)) return -1 !== $.inArray(group, this.options.group);\n return this.options.group === group;\n },\n\n // Just validate field. Do not trigger any event.\n // Returns `true` iff all constraints pass, `false` if there are failures,\n // or `null` if the result can not be determined yet (depends on a promise)\n // See also `whenValid`.\n isValid: function isValid(options) {\n if (arguments.length >= 1 && !$.isPlainObject(options)) {\n ParsleyUtils__default.warnOnce('Calling isValid on a parsley field without passing arguments as an object is deprecated.');\n\n var _arguments3 = _slice.call(arguments);\n\n var force = _arguments3[0];\n var value = _arguments3[1];\n\n options = { force: force, value: value };\n }\n var promise = this.whenValid(options);\n if (!promise) // Excluded via `group`\n return true;\n return parsley_field__statusMapping[promise.state()];\n },\n\n // Just validate field. Do not trigger any event.\n // @returns a promise that succeeds only when all validations do\n // or `undefined` if the field is not in the given `group`.\n // The argument `force` will force validation of empty fields.\n // If a `value` is given, it will be validated instead of the value of the input.\n whenValid: function whenValid() {\n var _this11 = this;\n\n var _ref10 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var _ref10$force = _ref10.force;\n var force = _ref10$force === undefined ? false : _ref10$force;\n var value = _ref10.value;\n var group = _ref10.group;\n var _refreshed = _ref10._refreshed;\n\n // Recompute options and rebind constraints to have latest changes\n if (!_refreshed) this.refreshConstraints();\n // do not validate a field if not the same as given validation group\n if (group && !this._isInGroup(group)) return;\n\n this.validationResult = true;\n\n // A field without constraint is valid\n if (!this.hasConstraints()) return $.when();\n\n // Value could be passed as argument, needed to add more power to 'field:validate'\n if ('undefined' === typeof value || null === value) value = this.getValue();\n\n if (!this.needsValidation(value) && true !== force) return $.when();\n\n var groupedConstraints = this._getGroupedConstraints();\n var promises = [];\n $.each(groupedConstraints, function (_, constraints) {\n // Process one group of constraints at a time, we validate the constraints\n // and combine the promises together.\n var promise = ParsleyUtils__default.all($.map(constraints, function (constraint) {\n return _this11._validateConstraint(value, constraint);\n }));\n promises.push(promise);\n if (promise.state() === 'rejected') return false; // Interrupt processing if a group has already failed\n });\n return ParsleyUtils__default.all(promises);\n },\n\n // @returns a promise\n _validateConstraint: function _validateConstraint(value, constraint) {\n var _this12 = this;\n\n var result = constraint.validate(value, this);\n // Map false to a failed promise\n if (false === result) result = $.Deferred().reject();\n // Make sure we return a promise and that we record failures\n return ParsleyUtils__default.all([result]).fail(function (errorMessage) {\n if (!(_this12.validationResult instanceof Array)) _this12.validationResult = [];\n _this12.validationResult.push({\n assert: constraint,\n errorMessage: 'string' === typeof errorMessage && errorMessage\n });\n });\n },\n\n // @returns Parsley field computed value that could be overrided or configured in DOM\n getValue: function getValue() {\n var value;\n\n // Value could be overriden in DOM or with explicit options\n if ('function' === typeof this.options.value) value = this.options.value(this);else if ('undefined' !== typeof this.options.value) value = this.options.value;else value = this.$element.val();\n\n // Handle wrong DOM or configurations\n if ('undefined' === typeof value || null === value) return '';\n\n return this._handleWhitespace(value);\n },\n\n // Actualize options that could have change since previous validation\n // Re-bind accordingly constraints (could be some new, removed or updated)\n refreshConstraints: function refreshConstraints() {\n return this.actualizeOptions()._bindConstraints();\n },\n\n /**\n * Add a new constraint to a field\n *\n * @param {String} name\n * @param {Mixed} requirements optional\n * @param {Number} priority optional\n * @param {Boolean} isDomConstraint optional\n */\n addConstraint: function addConstraint(name, requirements, priority, isDomConstraint) {\n\n if (window.Parsley._validatorRegistry.validators[name]) {\n var constraint = new ConstraintFactory(this, name, requirements, priority, isDomConstraint);\n\n // if constraint already exist, delete it and push new version\n if ('undefined' !== this.constraintsByName[constraint.name]) this.removeConstraint(constraint.name);\n\n this.constraints.push(constraint);\n this.constraintsByName[constraint.name] = constraint;\n }\n\n return this;\n },\n\n // Remove a constraint\n removeConstraint: function removeConstraint(name) {\n for (var i = 0; i < this.constraints.length; i++) if (name === this.constraints[i].name) {\n this.constraints.splice(i, 1);\n break;\n }\n delete this.constraintsByName[name];\n return this;\n },\n\n // Update a constraint (Remove + re-add)\n updateConstraint: function updateConstraint(name, parameters, priority) {\n return this.removeConstraint(name).addConstraint(name, parameters, priority);\n },\n\n // # Internals\n\n // Internal only.\n // Bind constraints from config + options + DOM\n _bindConstraints: function _bindConstraints() {\n var constraints = [];\n var constraintsByName = {};\n\n // clean all existing DOM constraints to only keep javascript user constraints\n for (var i = 0; i < this.constraints.length; i++) if (false === this.constraints[i].isDomConstraint) {\n constraints.push(this.constraints[i]);\n constraintsByName[this.constraints[i].name] = this.constraints[i];\n }\n\n this.constraints = constraints;\n this.constraintsByName = constraintsByName;\n\n // then re-add Parsley DOM-API constraints\n for (var name in this.options) this.addConstraint(name, this.options[name], undefined, true);\n\n // finally, bind special HTML5 constraints\n return this._bindHtml5Constraints();\n },\n\n // Internal only.\n // Bind specific HTML5 constraints to be HTML5 compliant\n _bindHtml5Constraints: function _bindHtml5Constraints() {\n // html5 required\n if (this.$element.attr('required')) this.addConstraint('required', true, undefined, true);\n\n // html5 pattern\n if ('string' === typeof this.$element.attr('pattern')) this.addConstraint('pattern', this.$element.attr('pattern'), undefined, true);\n\n // range\n if (this.$element.attr('type') !== 'date' && 'undefined' !== typeof this.$element.attr('min') && 'undefined' !== typeof this.$element.attr('max')) this.addConstraint('range', [this.$element.attr('min'), this.$element.attr('max')], undefined, true);\n\n // HTML5 min\n else if (this.$element.attr('type') !== 'date' && 'undefined' !== typeof this.$element.attr('min')) this.addConstraint('min', this.$element.attr('min'), undefined, true);\n\n // HTML5 max\n else if (this.$element.attr('type') !== 'date' && 'undefined' !== typeof this.$element.attr('max')) this.addConstraint('max', this.$element.attr('max'), undefined, true);\n\n // length\n if ('undefined' !== typeof this.$element.attr('minlength') && 'undefined' !== typeof this.$element.attr('maxlength')) this.addConstraint('length', [this.$element.attr('minlength'), this.$element.attr('maxlength')], undefined, true);\n\n // HTML5 minlength\n else if ('undefined' !== typeof this.$element.attr('minlength')) this.addConstraint('minlength', this.$element.attr('minlength'), undefined, true);\n\n // HTML5 maxlength\n else if ('undefined' !== typeof this.$element.attr('maxlength')) this.addConstraint('maxlength', this.$element.attr('maxlength'), undefined, true);\n\n // html5 types\n var type = this.$element.attr('type');\n\n if ('undefined' === typeof type) return this;\n\n // Small special case here for HTML5 number: integer validator if step attribute is undefined or an integer value, number otherwise\n if ('number' === type) {\n return this.addConstraint('type', ['number', {\n step: this.$element.attr('step') || '1',\n base: this.$element.attr('min') || this.$element.attr('value')\n }], undefined, true);\n // Regular other HTML5 supported types\n } else if (/^(email|url|range)$/i.test(type)) {\n return this.addConstraint('type', type, undefined, true);\n }\n return this;\n },\n\n // Internal only.\n // Field is required if have required constraint without `false` value\n _isRequired: function _isRequired() {\n if ('undefined' === typeof this.constraintsByName.required) return false;\n\n return false !== this.constraintsByName.required.requirements;\n },\n\n // Internal only.\n // Shortcut to trigger an event\n _trigger: function _trigger(eventName) {\n return this.trigger('field:' + eventName);\n },\n\n // Internal only\n // Handles whitespace in a value\n // Use `data-parsley-whitespace=\"squish\"` to auto squish input value\n // Use `data-parsley-whitespace=\"trim\"` to auto trim input value\n _handleWhitespace: function _handleWhitespace(value) {\n if (true === this.options.trimValue) ParsleyUtils__default.warnOnce('data-parsley-trim-value=\"true\" is deprecated, please use data-parsley-whitespace=\"trim\"');\n\n if ('squish' === this.options.whitespace) value = value.replace(/\\s{2,}/g, ' ');\n\n if ('trim' === this.options.whitespace || 'squish' === this.options.whitespace || true === this.options.trimValue) value = ParsleyUtils__default.trimString(value);\n\n return value;\n },\n\n // Internal only.\n // Returns the constraints, grouped by descending priority.\n // The result is thus an array of arrays of constraints.\n _getGroupedConstraints: function _getGroupedConstraints() {\n if (false === this.options.priorityEnabled) return [this.constraints];\n\n var groupedConstraints = [];\n var index = {};\n\n // Create array unique of priorities\n for (var i = 0; i < this.constraints.length; i++) {\n var p = this.constraints[i].priority;\n if (!index[p]) groupedConstraints.push(index[p] = []);\n index[p].push(this.constraints[i]);\n }\n // Sort them by priority DESC\n groupedConstraints.sort(function (a, b) {\n return b[0].priority - a[0].priority;\n });\n\n return groupedConstraints;\n }\n\n };\n\n var parsley_field = ParsleyField;\n\n var ParsleyMultiple = function ParsleyMultiple() {\n this.__class__ = 'ParsleyFieldMultiple';\n };\n\n ParsleyMultiple.prototype = {\n // Add new `$element` sibling for multiple field\n addElement: function addElement($element) {\n this.$elements.push($element);\n\n return this;\n },\n\n // See `ParsleyField.refreshConstraints()`\n refreshConstraints: function refreshConstraints() {\n var fieldConstraints;\n\n this.constraints = [];\n\n // Select multiple special treatment\n if (this.$element.is('select')) {\n this.actualizeOptions()._bindConstraints();\n\n return this;\n }\n\n // Gather all constraints for each input in the multiple group\n for (var i = 0; i < this.$elements.length; i++) {\n\n // Check if element have not been dynamically removed since last binding\n if (!$('html').has(this.$elements[i]).length) {\n this.$elements.splice(i, 1);\n continue;\n }\n\n fieldConstraints = this.$elements[i].data('ParsleyFieldMultiple').refreshConstraints().constraints;\n\n for (var j = 0; j < fieldConstraints.length; j++) this.addConstraint(fieldConstraints[j].name, fieldConstraints[j].requirements, fieldConstraints[j].priority, fieldConstraints[j].isDomConstraint);\n }\n\n return this;\n },\n\n // See `ParsleyField.getValue()`\n getValue: function getValue() {\n // Value could be overriden in DOM\n if ('function' === typeof this.options.value) return this.options.value(this);else if ('undefined' !== typeof this.options.value) return this.options.value;\n\n // Radio input case\n if (this.$element.is('input[type=radio]')) return this._findRelated().filter(':checked').val() || '';\n\n // checkbox input case\n if (this.$element.is('input[type=checkbox]')) {\n var values = [];\n\n this._findRelated().filter(':checked').each(function () {\n values.push($(this).val());\n });\n\n return values;\n }\n\n // Select multiple case\n if (this.$element.is('select') && null === this.$element.val()) return [];\n\n // Default case that should never happen\n return this.$element.val();\n },\n\n _init: function _init() {\n this.$elements = [this.$element];\n\n return this;\n }\n };\n\n var ParsleyFactory = function ParsleyFactory(element, options, parsleyFormInstance) {\n this.$element = $(element);\n\n // If the element has already been bound, returns its saved Parsley instance\n var savedparsleyFormInstance = this.$element.data('Parsley');\n if (savedparsleyFormInstance) {\n\n // If the saved instance has been bound without a ParsleyForm parent and there is one given in this call, add it\n if ('undefined' !== typeof parsleyFormInstance && savedparsleyFormInstance.parent === window.Parsley) {\n savedparsleyFormInstance.parent = parsleyFormInstance;\n savedparsleyFormInstance._resetOptions(savedparsleyFormInstance.options);\n }\n\n if ('object' === typeof options) {\n $.extend(savedparsleyFormInstance.options, options);\n }\n\n return savedparsleyFormInstance;\n }\n\n // Parsley must be instantiated with a DOM element or jQuery $element\n if (!this.$element.length) throw new Error('You must bind Parsley on an existing element.');\n\n if ('undefined' !== typeof parsleyFormInstance && 'ParsleyForm' !== parsleyFormInstance.__class__) throw new Error('Parent instance must be a ParsleyForm instance');\n\n this.parent = parsleyFormInstance || window.Parsley;\n return this.init(options);\n };\n\n ParsleyFactory.prototype = {\n init: function init(options) {\n this.__class__ = 'Parsley';\n this.__version__ = '2.6.2';\n this.__id__ = ParsleyUtils__default.generateID();\n\n // Pre-compute options\n this._resetOptions(options);\n\n // A ParsleyForm instance is obviously a `
    ` element but also every node that is not an input and has the `data-parsley-validate` attribute\n if (this.$element.is('form') || ParsleyUtils__default.checkAttr(this.$element, this.options.namespace, 'validate') && !this.$element.is(this.options.inputs)) return this.bind('parsleyForm');\n\n // Every other element is bound as a `ParsleyField` or `ParsleyFieldMultiple`\n return this.isMultiple() ? this.handleMultiple() : this.bind('parsleyField');\n },\n\n isMultiple: function isMultiple() {\n return this.$element.is('input[type=radio], input[type=checkbox]') || this.$element.is('select') && 'undefined' !== typeof this.$element.attr('multiple');\n },\n\n // Multiples fields are a real nightmare :(\n // Maybe some refactoring would be appreciated here...\n handleMultiple: function handleMultiple() {\n var _this13 = this;\n\n var name;\n var multiple;\n var parsleyMultipleInstance;\n\n // Handle multiple name\n if (this.options.multiple) ; // We already have our 'multiple' identifier\n else if ('undefined' !== typeof this.$element.attr('name') && this.$element.attr('name').length) this.options.multiple = name = this.$element.attr('name');else if ('undefined' !== typeof this.$element.attr('id') && this.$element.attr('id').length) this.options.multiple = this.$element.attr('id');\n\n // Special select multiple input\n if (this.$element.is('select') && 'undefined' !== typeof this.$element.attr('multiple')) {\n this.options.multiple = this.options.multiple || this.__id__;\n return this.bind('parsleyFieldMultiple');\n\n // Else for radio / checkboxes, we need a `name` or `data-parsley-multiple` to properly bind it\n } else if (!this.options.multiple) {\n ParsleyUtils__default.warn('To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.', this.$element);\n return this;\n }\n\n // Remove special chars\n this.options.multiple = this.options.multiple.replace(/(:|\\.|\\[|\\]|\\{|\\}|\\$)/g, '');\n\n // Add proper `data-parsley-multiple` to siblings if we have a valid multiple name\n if ('undefined' !== typeof name) {\n $('input[name=\"' + name + '\"]').each(function (i, input) {\n if ($(input).is('input[type=radio], input[type=checkbox]')) $(input).attr(_this13.options.namespace + 'multiple', _this13.options.multiple);\n });\n }\n\n // Check here if we don't already have a related multiple instance saved\n var $previouslyRelated = this._findRelated();\n for (var i = 0; i < $previouslyRelated.length; i++) {\n parsleyMultipleInstance = $($previouslyRelated.get(i)).data('Parsley');\n if ('undefined' !== typeof parsleyMultipleInstance) {\n\n if (!this.$element.data('ParsleyFieldMultiple')) {\n parsleyMultipleInstance.addElement(this.$element);\n }\n\n break;\n }\n }\n\n // Create a secret ParsleyField instance for every multiple field. It will be stored in `data('ParsleyFieldMultiple')`\n // And will be useful later to access classic `ParsleyField` stuff while being in a `ParsleyFieldMultiple` instance\n this.bind('parsleyField', true);\n\n return parsleyMultipleInstance || this.bind('parsleyFieldMultiple');\n },\n\n // Return proper `ParsleyForm`, `ParsleyField` or `ParsleyFieldMultiple`\n bind: function bind(type, doNotStore) {\n var parsleyInstance;\n\n switch (type) {\n case 'parsleyForm':\n parsleyInstance = $.extend(new ParsleyForm(this.$element, this.domOptions, this.options), new ParsleyAbstract(), window.ParsleyExtend)._bindFields();\n break;\n case 'parsleyField':\n parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new ParsleyAbstract(), window.ParsleyExtend);\n break;\n case 'parsleyFieldMultiple':\n parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new ParsleyMultiple(), new ParsleyAbstract(), window.ParsleyExtend)._init();\n break;\n default:\n throw new Error(type + 'is not a supported Parsley type');\n }\n\n if (this.options.multiple) ParsleyUtils__default.setAttr(this.$element, this.options.namespace, 'multiple', this.options.multiple);\n\n if ('undefined' !== typeof doNotStore) {\n this.$element.data('ParsleyFieldMultiple', parsleyInstance);\n\n return parsleyInstance;\n }\n\n // Store the freshly bound instance in a DOM element for later access using jQuery `data()`\n this.$element.data('Parsley', parsleyInstance);\n\n // Tell the world we have a new ParsleyForm or ParsleyField instance!\n parsleyInstance._actualizeTriggers();\n parsleyInstance._trigger('init');\n\n return parsleyInstance;\n }\n };\n\n var vernums = $.fn.jquery.split('.');\n if (parseInt(vernums[0]) <= 1 && parseInt(vernums[1]) < 8) {\n throw \"The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.\";\n }\n if (!vernums.forEach) {\n ParsleyUtils__default.warn('Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim');\n }\n // Inherit `on`, `off` & `trigger` to Parsley:\n var Parsley = $.extend(new ParsleyAbstract(), {\n $element: $(document),\n actualizeOptions: null,\n _resetOptions: null,\n Factory: ParsleyFactory,\n version: '2.6.2'\n });\n\n // Supplement ParsleyField and Form with ParsleyAbstract\n // This way, the constructors will have access to those methods\n $.extend(parsley_field.prototype, ParsleyUI.Field, ParsleyAbstract.prototype);\n $.extend(ParsleyForm.prototype, ParsleyUI.Form, ParsleyAbstract.prototype);\n // Inherit actualizeOptions and _resetOptions:\n $.extend(ParsleyFactory.prototype, ParsleyAbstract.prototype);\n\n // ### jQuery API\n // `$('.elem').parsley(options)` or `$('.elem').psly(options)`\n $.fn.parsley = $.fn.psly = function (options) {\n if (this.length > 1) {\n var instances = [];\n\n this.each(function () {\n instances.push($(this).parsley(options));\n });\n\n return instances;\n }\n\n // Return undefined if applied to non existing DOM element\n if (!$(this).length) {\n ParsleyUtils__default.warn('You must bind Parsley on an existing element.');\n\n return;\n }\n\n return new ParsleyFactory(this, options);\n };\n\n // ### ParsleyField and ParsleyForm extension\n // Ensure the extension is now defined if it wasn't previously\n if ('undefined' === typeof window.ParsleyExtend) window.ParsleyExtend = {};\n\n // ### Parsley config\n // Inherit from ParsleyDefault, and copy over any existing values\n Parsley.options = $.extend(ParsleyUtils__default.objectCreate(ParsleyDefaults), window.ParsleyConfig);\n window.ParsleyConfig = Parsley.options; // Old way of accessing global options\n\n // ### Globals\n window.Parsley = window.psly = Parsley;\n window.ParsleyUtils = ParsleyUtils__default;\n\n // ### Define methods that forward to the registry, and deprecate all access except through window.Parsley\n var registry = window.Parsley._validatorRegistry = new ParsleyValidatorRegistry(window.ParsleyConfig.validators, window.ParsleyConfig.i18n);\n window.ParsleyValidator = {};\n $.each('setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator'.split(' '), function (i, method) {\n window.Parsley[method] = $.proxy(registry, method);\n window.ParsleyValidator[method] = function () {\n var _window$Parsley;\n\n ParsleyUtils__default.warnOnce('Accessing the method \\'' + method + '\\' through ParsleyValidator is deprecated. Simply call \\'window.Parsley.' + method + '(...)\\'');\n return (_window$Parsley = window.Parsley)[method].apply(_window$Parsley, arguments);\n };\n });\n\n // ### ParsleyUI\n // Deprecated global object\n window.Parsley.UI = ParsleyUI;\n window.ParsleyUI = {\n removeError: function removeError(instance, name, doNotUpdateClass) {\n var updateClass = true !== doNotUpdateClass;\n ParsleyUtils__default.warnOnce('Accessing ParsleyUI is deprecated. Call \\'removeError\\' on the instance directly. Please comment in issue 1073 as to your need to call this method.');\n return instance.removeError(name, { updateClass: updateClass });\n },\n getErrorsMessages: function getErrorsMessages(instance) {\n ParsleyUtils__default.warnOnce('Accessing ParsleyUI is deprecated. Call \\'getErrorsMessages\\' on the instance directly.');\n return instance.getErrorsMessages();\n }\n };\n $.each('addError updateError'.split(' '), function (i, method) {\n window.ParsleyUI[method] = function (instance, name, message, assert, doNotUpdateClass) {\n var updateClass = true !== doNotUpdateClass;\n ParsleyUtils__default.warnOnce('Accessing ParsleyUI is deprecated. Call \\'' + method + '\\' on the instance directly. Please comment in issue 1073 as to your need to call this method.');\n return instance[method](name, { message: message, assert: assert, updateClass: updateClass });\n };\n });\n\n // ### PARSLEY auto-binding\n // Prevent it by setting `ParsleyConfig.autoBind` to `false`\n if (false !== window.ParsleyConfig.autoBind) {\n $(function () {\n // Works only on `data-parsley-validate`.\n if ($('[data-parsley-validate]').length) $('[data-parsley-validate]').parsley();\n });\n }\n\n var o = $({});\n var deprecated = function deprecated() {\n ParsleyUtils__default.warnOnce(\"Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley\");\n };\n\n // Returns an event handler that calls `fn` with the arguments it expects\n function adapt(fn, context) {\n // Store to allow unbinding\n if (!fn.parsleyAdaptedCallback) {\n fn.parsleyAdaptedCallback = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n args.unshift(this);\n fn.apply(context || o, args);\n };\n }\n return fn.parsleyAdaptedCallback;\n }\n\n var eventPrefix = 'parsley:';\n // Converts 'parsley:form:validate' into 'form:validate'\n function eventName(name) {\n if (name.lastIndexOf(eventPrefix, 0) === 0) return name.substr(eventPrefix.length);\n return name;\n }\n\n // $.listen is deprecated. Use Parsley.on instead.\n $.listen = function (name, callback) {\n var context;\n deprecated();\n if ('object' === typeof arguments[1] && 'function' === typeof arguments[2]) {\n context = arguments[1];\n callback = arguments[2];\n }\n\n if ('function' !== typeof callback) throw new Error('Wrong parameters');\n\n window.Parsley.on(eventName(name), adapt(callback, context));\n };\n\n $.listenTo = function (instance, name, fn) {\n deprecated();\n if (!(instance instanceof parsley_field) && !(instance instanceof ParsleyForm)) throw new Error('Must give Parsley instance');\n\n if ('string' !== typeof name || 'function' !== typeof fn) throw new Error('Wrong parameters');\n\n instance.on(eventName(name), adapt(fn));\n };\n\n $.unsubscribe = function (name, fn) {\n deprecated();\n if ('string' !== typeof name || 'function' !== typeof fn) throw new Error('Wrong arguments');\n window.Parsley.off(eventName(name), fn.parsleyAdaptedCallback);\n };\n\n $.unsubscribeTo = function (instance, name) {\n deprecated();\n if (!(instance instanceof parsley_field) && !(instance instanceof ParsleyForm)) throw new Error('Must give Parsley instance');\n instance.off(eventName(name));\n };\n\n $.unsubscribeAll = function (name) {\n deprecated();\n window.Parsley.off(eventName(name));\n $('form,input,textarea,select').each(function () {\n var instance = $(this).data('Parsley');\n if (instance) {\n instance.off(eventName(name));\n }\n });\n };\n\n // $.emit is deprecated. Use jQuery events instead.\n $.emit = function (name, instance) {\n var _instance;\n\n deprecated();\n var instanceGiven = instance instanceof parsley_field || instance instanceof ParsleyForm;\n var args = Array.prototype.slice.call(arguments, instanceGiven ? 2 : 1);\n args.unshift(eventName(name));\n if (!instanceGiven) {\n instance = window.Parsley;\n }\n (_instance = instance).trigger.apply(_instance, _toConsumableArray(args));\n };\n\n var pubsub = {};\n\n $.extend(true, Parsley, {\n asyncValidators: {\n 'default': {\n fn: function fn(xhr) {\n // By default, only status 2xx are deemed successful.\n // Note: we use status instead of state() because responses with status 200\n // but invalid messages (e.g. an empty body for content type set to JSON) will\n // result in state() === 'rejected'.\n return xhr.status >= 200 && xhr.status < 300;\n },\n url: false\n },\n reverse: {\n fn: function fn(xhr) {\n // If reverse option is set, a failing ajax request is considered successful\n return xhr.status < 200 || xhr.status >= 300;\n },\n url: false\n }\n },\n\n addAsyncValidator: function addAsyncValidator(name, fn, url, options) {\n Parsley.asyncValidators[name] = {\n fn: fn,\n url: url || false,\n options: options || {}\n };\n\n return this;\n }\n\n });\n\n Parsley.addValidator('remote', {\n requirementType: {\n '': 'string',\n 'validator': 'string',\n 'reverse': 'boolean',\n 'options': 'object'\n },\n\n validateString: function validateString(value, url, options, instance) {\n var data = {};\n var ajaxOptions;\n var csr;\n var validator = options.validator || (true === options.reverse ? 'reverse' : 'default');\n\n if ('undefined' === typeof Parsley.asyncValidators[validator]) throw new Error('Calling an undefined async validator: `' + validator + '`');\n\n url = Parsley.asyncValidators[validator].url || url;\n\n // Fill current value\n if (url.indexOf('{value}') > -1) {\n url = url.replace('{value}', encodeURIComponent(value));\n } else {\n data[instance.$element.attr('name') || instance.$element.attr('id')] = value;\n }\n\n // Merge options passed in from the function with the ones in the attribute\n var remoteOptions = $.extend(true, options.options || {}, Parsley.asyncValidators[validator].options);\n\n // All `$.ajax(options)` could be overridden or extended directly from DOM in `data-parsley-remote-options`\n ajaxOptions = $.extend(true, {}, {\n url: url,\n data: data,\n type: 'GET'\n }, remoteOptions);\n\n // Generate store key based on ajax options\n instance.trigger('field:ajaxoptions', instance, ajaxOptions);\n\n csr = $.param(ajaxOptions);\n\n // Initialise querry cache\n if ('undefined' === typeof Parsley._remoteCache) Parsley._remoteCache = {};\n\n // Try to retrieve stored xhr\n var xhr = Parsley._remoteCache[csr] = Parsley._remoteCache[csr] || $.ajax(ajaxOptions);\n\n var handleXhr = function handleXhr() {\n var result = Parsley.asyncValidators[validator].fn.call(instance, xhr, url, options);\n if (!result) // Map falsy results to rejected promise\n result = $.Deferred().reject();\n return $.when(result);\n };\n\n return xhr.then(handleXhr, handleXhr);\n },\n\n priority: -1\n });\n\n Parsley.on('form:submit', function () {\n Parsley._remoteCache = {};\n });\n\n window.ParsleyExtend.addAsyncValidator = function () {\n ParsleyUtils.warnOnce('Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`');\n return Parsley.addAsyncValidator.apply(Parsley, arguments);\n };\n\n // This is included with the Parsley library itself,\n // thus there is no use in adding it to your project.\n Parsley.addMessages('en', {\n defaultMessage: \"This value seems to be invalid.\",\n type: {\n email: \"This value should be a valid email.\",\n url: \"This value should be a valid url.\",\n number: \"This value should be a valid number.\",\n integer: \"This value should be a valid integer.\",\n digits: \"This value should be digits.\",\n alphanum: \"This value should be alphanumeric.\"\n },\n notblank: \"This value should not be blank.\",\n required: \"This value is required.\",\n pattern: \"This value seems to be invalid.\",\n min: \"This value should be greater than or equal to %s.\",\n max: \"This value should be lower than or equal to %s.\",\n range: \"This value should be between %s and %s.\",\n minlength: \"This value is too short. It should have %s characters or more.\",\n maxlength: \"This value is too long. It should have %s characters or fewer.\",\n length: \"This value length is invalid. It should be between %s and %s characters long.\",\n mincheck: \"You must select at least %s choices.\",\n maxcheck: \"You must select %s choices or fewer.\",\n check: \"You must select between %s and %s choices.\",\n equalto: \"This value should be the same.\"\n });\n\n Parsley.setLocale('en');\n\n /**\n * inputevent - Alleviate browser bugs for input events\n * https://github.com/marcandre/inputevent\n * @version v0.0.3 - (built Thu, Apr 14th 2016, 5:58 pm)\n * @author Marc-Andre Lafortune \n * @license MIT\n */\n\n function InputEvent() {\n var _this14 = this;\n\n var globals = window || global;\n\n // Slightly odd way construct our object. This way methods are force bound.\n // Used to test for duplicate library.\n $.extend(this, {\n\n // For browsers that do not support isTrusted, assumes event is native.\n isNativeEvent: function isNativeEvent(evt) {\n return evt.originalEvent && evt.originalEvent.isTrusted !== false;\n },\n\n fakeInputEvent: function fakeInputEvent(evt) {\n if (_this14.isNativeEvent(evt)) {\n $(evt.target).trigger('input');\n }\n },\n\n misbehaves: function misbehaves(evt) {\n if (_this14.isNativeEvent(evt)) {\n _this14.behavesOk(evt);\n $(document).on('change.inputevent', evt.data.selector, _this14.fakeInputEvent);\n _this14.fakeInputEvent(evt);\n }\n },\n\n behavesOk: function behavesOk(evt) {\n if (_this14.isNativeEvent(evt)) {\n $(document) // Simply unbinds the testing handler\n .off('input.inputevent', evt.data.selector, _this14.behavesOk).off('change.inputevent', evt.data.selector, _this14.misbehaves);\n }\n },\n\n // Bind the testing handlers\n install: function install() {\n if (globals.inputEventPatched) {\n return;\n }\n globals.inputEventPatched = '0.0.3';\n var _arr = ['select', 'input[type=\"checkbox\"]', 'input[type=\"radio\"]', 'input[type=\"file\"]'];\n for (var _i = 0; _i < _arr.length; _i++) {\n var selector = _arr[_i];\n $(document).on('input.inputevent', selector, { selector: selector }, _this14.behavesOk).on('change.inputevent', selector, { selector: selector }, _this14.misbehaves);\n }\n },\n\n uninstall: function uninstall() {\n delete globals.inputEventPatched;\n $(document).off('.inputevent');\n }\n\n });\n };\n\n var inputevent = new InputEvent();\n\n inputevent.install();\n\n var parsley = Parsley;\n return parsley;\n});\n\n","window.setmeetids = (function() {\n 'use strict';\n\n // private functions\n function setMeetIdsFrom(element) {\n 'use strict';\n var paza = element.data('paza'),\n pagename = element.data('pagename'),\n meetIds = jQuery('[data-meetid!=\"\"][data-meetid]'), //select all data-meetid elements which are not empty\n itemsCount = {};\n\n if (paza === undefined) return;\n \n function endsWith(str, suffix) {\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n }\n\n meetIds.removeData();\n\n meetIds.each(function () {\n var id = \"\" + jQuery(this).data('meetid'),\n href = jQuery(this).prop('href'),\n btnOrLnk = /-(btn|lnk)-/g;\n\n if (typeof href !== 'undefined' && href !== undefined && endsWith(href, '.pdf') && !window.location.pathname.includes('/zoeken')) {\n id = id.replace(btnOrLnk, '-pdf-');\n }\n\n id = id.replace('[[paza]]', paza).replace('[[pagename]]', pagename).replace(new RegExp('|', 'g'), '').replace(new RegExp('__', 'g'), '_');\n jQuery(this).prop('id', id);\n\n if (itemsCount[id] == undefined) {\n itemsCount[id] = { count: 1, index: 1 };\n }\n else {\n itemsCount[id].count++;\n }\n });\n\n meetIds.each(function () {\n var id = jQuery(this).prop('id'),\n item = itemsCount[id];\n\n if (id === \"ipoview-zoeken-toptaak\" && item !== undefined && item.count === 1) {\n jQuery(this).prop('id', jQuery(this).prop('id') + '-' + item.count);\n }\n\n if (item != undefined && item.count > 1) {\n jQuery(this).prop('id', jQuery(this).prop('id') + '-' + item.index++);\n }\n });\n }\n\n return {\n init: function() {\n 'use strict';\n var body = jQuery('body');\n setMeetIdsFrom(body);\n },\n setMeetIdsFrom: function(element) {\n setMeetIdsFrom(element);\n }\n }\n})();\n\nsetmeetids.init();\n","jQuery(function ($) {\n 'use strict';\n\n var $body = $('body'),\n Basket = {},\n Ecommerce = {},\n $itemCount = 0,\n $addProduct = $('.add-product'),\n $incrementProduct = $('.product-increment'),\n $decrementProduct = $('.product-decrement'),\n $checkout = $('.product-checkout'),\n $removeProduct = $('.product-remove'),\n $itemContainer = $('.basket__item-container'),\n $articleContainer = $('.shopping-basket__articles'),\n $summaryContainer = $('.cost-summary__articles'),\n $popupContainer = $('.basket'),\n $overlay = $('.popup-overlay'),\n $toggleContainer = $('.cost-summary__content'),\n $paymentButton = $('.continue-payment-button'),\n url = window.location.protocol + \"//\" + window.location.host,\n defaultErrorTemplate = $('#default-error-tpl').html(),\n RequestBoolean = true,\n $addKortingscode = $('.kortingscode-add');\n\n $addKortingscode.click(function () {\n var $input = $('input[name=kortingscode]');\n var $code = $input.val();\n window.form.getFormField($input[0]).valid = true;\n Basket.addCoupon($code);\n });\n\n $addProduct.each(function () {\n var $that = $(this);\n $(this).click(function (e) {\n var $id = $(this).attr('data-productid');\n if ($id) {\n e.preventDefault();\n var $business = $(this).attr('data-isbusiness');\n var $permission = $(this).attr('data-permissioncheckbox');\n Basket.addProduct($id, $business, $permission);\n }\n });\n });\n\n $incrementProduct.each(function () {\n var $that = $(this);\n $(this).click(function () {\n var $id = $(this).attr('data-productid');\n if ($id) {\n var $business = $(this).attr('data-isbusiness');\n var $permission = $(this).attr('data-permissioncheckbox');\n Basket.incrementProduct($id, $business, $permission);\n } \n });\n });\n\n $decrementProduct.each(function () {\n var $that = $(this);\n $(this).click(function () {\n var $id = $(this).attr('data-productid');\n if ($id) {\n Basket.decrementProduct($id);\n }\n });\n });\n\n $removeProduct.each(function () {\n var $that = $(this);\n $(this).click(function () {\n var $id = $(this).attr('data-productid');\n if ($id) {\n var $amount = $(this).closest(\"div.article-content-quantity__wrapper\").find(\".article-content-quantity\").find(\"input[id='quantity']\").val();\n Basket.removeProduct($id, $amount);\n } \n });\n });\n\n $checkout.click(function (event) {\n event.preventDefault();\n Basket.checkoutProducts(event.target.href);\n });\n\n $toggleContainer.each(function () {\n var $that = $(this);\n $(this).click(function () {\n $that.toggleClass('active');\n });\n });\n\n $paymentButton.click(function () {\n onStep5();\n });\n\n Basket = {\n checkoutProducts: function (location) {\n Security.handleRequestVerificationToken(function (token) {\n $.post('/sitecoreapi/shop/basket/get',\n {\n __RequestVerificationToken: token\n },\n function (data, status) {\n if (data.Status.Code == 'BASKET_INVALID') {\n var errorTemplate = $('#error-tpl').html();\n Basket.error(errorTemplate, data);\n }\n else {\n window.location = location;\n }\n }, 'json')\n .fail(function (response) {\n Basket.error(defaultErrorTemplate);\n });\n });\n },\n\n addCoupon: function (code) {\n Security.handleRequestVerificationToken(function (token) {\n $.post('/sitecoreapi/shop/basket/addCoupon',\n {\n __RequestVerificationToken: token,\n couponCode: code\n },\n function (data, status) {\n Basket.RequestHandler(data);\n if (RequestBoolean == true) {\n Basket.refreshcoupon(data);\n }\n\n }, 'json')\n .fail(function (response) {\n Basket.error(defaultErrorTemplate);\n });\n });\n },\n\n addProduct: function (id, businessStatus, permissionCheckbox) {\n Security.handleRequestVerificationToken(function (token) {\n $.post('/sitecoreapi/shop/basket/add',\n {\n __RequestVerificationToken: token,\n productID: id,\n business: businessStatus,\n permission: permissionCheckbox\n },\n function (data, status) {\n Basket.RequestHandler(data);\n if (RequestBoolean != false) {\n Basket.updatePopup(data);\n Ecommerce.addtobasket(id, data);\n }\n\n }, 'json')\n .fail(function (response) {\n Basket.error(defaultErrorTemplate);\n });\n });\n },\n\n removeProduct: function (id, amount) {\n Security.handleRequestVerificationToken(function (token) {\n $.post('/sitecoreapi/shop/basket/removeAll',\n {\n __RequestVerificationToken: token,\n productID: id\n },\n function (data, status) {\n Basket.RequestHandler(data);\n if (RequestBoolean == true) {\n if (data.TotalProducts > 0) {\n\n Basket.clear();\n Basket.delete(data);\n Ecommerce.removeAll(id, data, amount);\n } else {\n document.location.reload(true);\n }\n }\n }, 'json')\n .fail(function (response) {\n Basket.error(defaultErrorTemplate);\n });\n });\n },\n\n incrementProduct: function (id, businessStatus, permissionCheckbox) {\n Security.handleRequestVerificationToken(function (token) {\n $.post('/sitecoreapi/shop/basket/add',\n {\n __RequestVerificationToken: token,\n productID: id,\n business: businessStatus,\n permission: permissionCheckbox\n },\n function (data, status) {\n Basket.RequestHandler(data);\n if (RequestBoolean == true) {\n Basket.increment(data);\n Ecommerce.addtobasket(id, data, true);\n }\n\n }, 'json')\n .fail(function (response) {\n Basket.error(defaultErrorTemplate);\n });\n });\n },\n\n decrementProduct: function (id) {\n Security.handleRequestVerificationToken(function (token) {\n $.post('/sitecoreapi/shop/basket/remove',\n {\n __RequestVerificationToken: token,\n productID: id\n },\n function (data, status) {\n Basket.RequestHandler(data);\n if (RequestBoolean == true) {\n if (data.TotalProducts > 0) {\n Basket.clear();\n Basket.decrement(data, this.id);\n Ecommerce.removefrombasket(id, data);\n } else {\n document.location.reload(true);\n }\n }\n }, 'json')\n .fail(function (response) {\n Basket.error(defaultErrorTemplate, response);\n });\n });\n },\n\n RequestHandler: function (data) {\n switch (data.Status.Code) {\n case \"HAS_BUSINESS_PRODUCTS\":\n case \"HAS_PRIVATE_PRODUCTS\":\n var errorTemplate = $('#error-tpl').html();\n Basket.error(errorTemplate, data);\n RequestBoolean = false;\n break;\n default:\n Basket.clear();\n }\n },\n\n error: function (template, response) {\n $overlay.addClass('open');\n\n $overlay.on('click', function (e) {\n $(this).removeClass('open');\n $(this).empty();\n });\n\n $(document).on('keyup', function (e) {\n if (e.keyCode == 27) {\n $overlay.removeClass('open');\n $overlay.empty();\n }\n });\n\n $overlay.append(Mustache.render(template, response));\n $('.icon-close').on('click', function (e) {\n $overlay.removeClass('open');\n $overlay.empty();\n })\n\n if (response && typeof ga !== 'undefined') {\n var modalName = 'modal-' + response.Status.Code.toLowerCase();\n var path = location.pathname.toLowerCase();\n if (path.endsWith('/')) {\n path = path.slice(0, -1);\n }\n //TODO: Replace with gtag\n // eslint-disable-next-line no-undef\n // ga('set', 'dimension9', new Date().getTime());\n // eslint-disable-next-line no-undef\n // ga('send', 'pageview', path + '/' + modalName);\n\n /* eslint-disable no-undef,\n camelcase */\n _st.event.publish('virtual_pageview', '', {\n page_title: document.title + ' | ' + modalName,\n page_location: location.href.toLowerCase(),\n page_path: path + '/' + modalName\n });\n }\n },\n\n updatePopup: function (data) {\n var template = $('#popup-tpl').html();\n $('.basket').find('.TotalProducts-amount').text(data.TotalProducts);\n $('.basket').find('.TotalProducts-amount').removeClass(\"hide\");\n $popupContainer.find('.basket__overlay').remove();\n $popupContainer.append(Mustache.render(template, data));\n\n Basket.updateMeetids();\n\n setTimeout(function () {\n Basket.openPopup();\n }, 100);\n\n $('.button--back').on('click', function (e) {\n $('body').removeClass('open-basket');\n });\n\n $('.close').on('click', function (e) {\n $('body').removeClass('open-basket');\n })\n\n $('body').on('click', function () {\n $(this).removeClass('open-basket');\n })\n\n $(document).on('keyup', function (e) {\n if (e.keyCode == 27) {\n $(this).removeClass('open-basket');\n }\n });\n },\n\n increment: function (data) {\n $('.basket').find('.TotalProducts-amount').text(data.TotalProducts);\n\n var template = $('#article-tpl').html();\n $articleContainer.append(Mustache.render(template, data));\n\n var template = $('#cost-summary-tpl').html();\n $summaryContainer.empty();\n $summaryContainer.append(Mustache.render(template, data));\n\n Basket.bindEvents();\n },\n\n decrement: function (data) {\n $('.basket').find('.TotalProducts-amount').text(data.TotalProducts);\n\n var template = $('#article-tpl').html();\n $articleContainer.append(Mustache.render(template, data));\n\n var template = $('#cost-summary-tpl').html();\n $summaryContainer.empty();\n $summaryContainer.append(Mustache.render(template, data));\n\n Basket.bindEvents();\n },\n\n delete: function (data) {\n $('.basket').find('.TotalProducts-amount').text(data.TotalProducts);\n\n var template = $('#article-tpl').html();\n $articleContainer.append(Mustache.render(template, data));\n\n var template = $('#cost-summary-tpl').html();\n $summaryContainer.empty();\n $summaryContainer.append(Mustache.render(template, data));\n\n Basket.bindEvents();\n },\n\n refreshcoupon: function (data) {\n\n $('.basket').find('.TotalProducts-amount').text(data.TotalProducts);\n\n var template = $('#article-tpl').html();\n $articleContainer.append(Mustache.render(template, data));\n\n var template = $('#cost-summary-tpl').html();\n $summaryContainer.empty();\n $summaryContainer.append(Mustache.render(template, data));\n\n Basket.bindEvents();\n\n $('#kortingscode-helper-text').text(data.Status.Message);\n if (data.Status.Code == 'COUPON_ERROR') {\n $('#kortingscode-helper-text').removeClass('mdc-text-field-helper-text--success-msg');\n window.form.getFormField($('input[name = kortingscode]')[0]).valid = false;\n }\n else {\n $('input[name=kortingscode]').val('');\n window.form.getFormField($('input[name = kortingscode]')[0]).valid = true;\n $('#kortingscode-helper-text').addClass('mdc-text-field-helper-text--success-msg');\n $('.cost-summary__content').toggleClass('active')\n }\n },\n\n bindEvents: function () {\n $articleContainer.unbind('click');\n $summaryContainer.unbind('click');\n $articleContainer.on('click', '.product-decrement', function () {\n var $id = $(this).attr('data-productid');\n Basket.decrementProduct($id);\n });\n\n $articleContainer.on('click', '.product-increment', function () {\n var $id = $(this).attr('data-productid');\n var $business = $(this).attr('data-isbusiness');\n var $permission = $(this).attr('data-permissioncheckbox');\n Basket.incrementProduct($id, $business, $permission);\n });\n\n $articleContainer.on('click', '.product-remove', function () {\n var $id = $(this).attr('data-productid');\n var $amount = $(this).closest(\"div.article-content-quantity__wrapper\").find(\".article-content-quantity\").find(\"input[id='quantity']\").val();\n Basket.removeProduct($id, $amount);\n });\n\n $summaryContainer.on('click', '.cost-summary__content', function (e) {\n $(this).toggleClass('active');\n });\n Basket.updateMeetids();\n },\n\n openPopup: function () {\n $body.addClass('open-basket');\n },\n\n clear: function () {\n $itemContainer.empty();\n $articleContainer.empty();\n },\n\n updateMeetids: function () {\n if (setmeetids) {\n setmeetids.init();\n }\n },\n\n destroy: function () {\n $itemCount = 0;\n },\n };\n\n Ecommerce = {\n\n isObjectEmpty: function (object) {\n return Object.getOwnPropertyNames(object).length >= 1;\n },\n\n getCurrentProduct: function (id, data) {\n var currentProduct = {};\n var i;\n\n for (i = 0; i < data.Products.length; i++) {\n if (data.Products[i].Product.Id == id) {\n currentProduct = data.Products[i].Product;\n }\n };\n\n return currentProduct;\n },\n\n addtobasket: function (id, data, resendBasket) {\n\n var $product = this.getCurrentProduct(id, data);\n\n if (this.isObjectEmpty($product) == true) {\n //TODO: Replace with gtag\n // ga('ec:addProduct', {\n // 'id': $product.Id,\n // 'name': $product.Name,\n // 'category': '',\n // 'brand': 'Interpolis',\n // 'variant': $product.Buy ? \"Koop\" : \"Huur\",\n // 'price': $product.Buy ? $product.BuyPrice : $product.RentPrice,\n // 'quantity': '1',\n // });\n\n // ga('ec:setAction', 'add');\n // ga('send', 'event', 'shop', 'basket add', $product.Name);\n\n if (resendBasket) onStep1();\n }\n },\n\n removefrombasket: function (id, data) {\n $.post('/sitecoreapi/shop/product/get',\n {\n productID: id,\n },\n function (data, status) {\n\n //TODO: Replace with gtag\n // ga('ec:addProduct', {\n // 'id': data.Id,\n // 'name': data.Name,\n // 'category': '',\n // 'brand': 'Interpolis',\n // 'variant': data.Buy ? \"Koop\" : \"Huur\",\n // 'price': data.Buy ? data.BuyPrice : data.RentPrice,\n // 'quantity': '1',\n // });\n\n // ga('ec:setAction', 'remove');\n // ga('send', 'event', 'shop', 'basket remove', data.Name);\n\n onStep1();\n\n }, 'json')\n .fail(function (response) {\n Basket.error(defaultErrorTemplate);\n });\n },\n\n removeAll: function (id, data, amount) {\n $.post('/sitecoreapi/shop/product/get',\n {\n productID: id,\n },\n function (data, status) {\n\n //TODO: Replace with gtag\n // ga('ec:addProduct', {\n // 'id': data.Id,\n // 'name': data.Name,\n // 'category': '',\n // 'brand': 'Interpolis',\n // 'variant': data.Buy ? \"Koop\" : \"Huur\",\n // 'price': data.Buy ? data.BuyPrice : data.RentPrice,\n // 'quantity': amount,\n // });\n\n // ga('ec:setAction', 'remove');\n // ga('send', 'event', 'shop', 'basket remove', data.Name);\n\n onStep1();\n\n }, 'json')\n .fail(function (response) {\n Basket.error(defaultErrorTemplate);\n });\n }\n };\n});\n\nvar Security = {\n handleRequestVerificationToken: function (handleSucces) {\n $.ajax({\n type: 'POST',\n url: '/sitecoreapi/spa/digest',\n data: null,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'\n },\n success: function (token) {\n handleSucces(token);\n },\n dataType: 'json'\n });\n },\n};\n\nwindow.onStep1 = (function() {\n Security.handleRequestVerificationToken(function (token) {\n $.post('/sitecoreapi/shop/basket/get',\n {\n __RequestVerificationToken: token\n },\n function (data, status) {\n //TODO: Replace with gtag\n //var i;\n //var products = data.Products;\n\n // for (i = 0; i < products.length; ++i) {\n // ga('ec:addProduct', {\n // 'id': products[i].Product.Id,\n // 'name': products[i].Product.Name,\n // 'category': '',\n // 'brand': 'Interpolis',\n // 'variant': products[i].Product.Buy ? \"Koop\" : \"Huur\",\n // 'price': products[i].Product.Buy ? products[i].Product.BuyPrice : products[i].Product.RentPrice,\n // 'quantity': products[i].Amount,\n // });\n // }\n\n // ga('ec:setAction', 'checkout', { 'step': 1 });\n // ga('send', 'event', 'shop', 'checkout', 'step 1 - winkelmandje');\n }, 'json')\n .fail(function (response) {\n Basket.error(defaultErrorTemplate);\n });\n });\n});\n\nwindow.onStep2 = (function() {\n if (sessionStorage.getItem(\"basket_items\")) {\n sessionStorage.removeItem('basket_items');\n }\n Security.handleRequestVerificationToken(function (token) {\n $.post('/sitecoreapi/shop/basket/get',\n {\n __RequestVerificationToken: token\n },\n function (data, status) {\n var products = data.Products;\n sessionStorage.setItem('basket_items', JSON.stringify(products));\n step2Ga(products);\n\n }, 'json')\n .fail(function (response) {\n Basket.error(defaultErrorTemplate);\n });\n });\n});\n\nwindow.step2Ga = (function(products) {\n //TODO: Replace with gtag\n // var i;\n\n // for (i = 0; i < products.length; ++i) {\n\n // ga('ec:addProduct', {\n // 'id': products[i].Product.Id,\n // 'name': products[i].Product.Name,\n // 'category': '',\n // 'brand': 'Interpolis',\n // 'variant': products[i].Product.Buy ? \"Koop\" : \"Huur\",\n // 'price': products[i].Product.Buy ? products[i].Product.BuyPrice : products[i].Product.RentPrice,\n // 'quantity': products[i].Amount,\n // });\n // }\n\n // ga('ec:setAction', 'checkout', { 'step': 2 });\n // ga('send', 'event', 'shop', 'checkout', 'step 2 - gegevens');\n});\n\nwindow.onStep3 = (function() {\n var products = JSON.parse(sessionStorage.getItem('basket_items'));\n if (products) {\n step3Ga(products);\n } else {\n Security.handleRequestVerificationToken(function (token) {\n $.post('/sitecoreapi/shop/basket/get',\n {\n __RequestVerificationToken: token\n },\n function (data, status) {\n products = data.Products;\n sessionStorage.setItem('basket_items', JSON.stringify(products));\n step3Ga(products);\n\n }, 'json')\n .fail(function (response) {\n Basket.error(defaultErrorTemplate);\n });\n });\n }\n});\n\nwindow.step3Ga = (function(products)\n{\n //TODO: Replace with gtag\n // var i;\n\n // for (i = 0; i < products.length; ++i) {\n\n // ga('ec:addProduct', {\n // 'id': products[i].Product.Id,\n // 'name': products[i].Product.Name,\n // 'category': '',\n // 'brand': 'Interpolis',\n // 'variant': products[i].Product.Buy ? \"Koop\" : \"Huur\",\n // 'price': products[i].Product.Buy ? products[i].Product.BuyPrice : products[i].Product.RentPrice,\n // 'quantity': products[i].Amount,\n // });\n // }\n\n // ga('ec:setAction', 'checkout', { 'step': 3 });\n // ga('send', 'event', 'shop', 'checkout', 'step 3 - levering');\n});\n\nwindow.onStep4 = (function() {\n var products = JSON.parse(sessionStorage.getItem('basket_items'));\n if (products) {\n step4Ga(products);\n }\n else {\n Security.handleRequestVerificationToken(function (token) {\n $.post('/sitecoreapi/shop/basket/get',\n {\n __RequestVerificationToken: token\n },\n function (data, status) {\n products = data.Products;\n sessionStorage.setItem('basket_items', JSON.stringify(products));\n step4Ga(products);\n\n }, 'json')\n .fail(function (response) {\n Basket.error(defaultErrorTemplate);\n });\n });\n }\n});\n\nwindow.step4Ga = (function(products)\n{\n //TODO: Replace with gtag \n // var i;\n\n // for (i = 0; i < products.length; ++i) {\n\n // ga('ec:addProduct', {\n // 'id': products[i].Product.Id,\n // 'name': products[i].Product.Name,\n // 'category': '',\n // 'brand': 'Interpolis',\n // 'variant': products[i].Product.Buy ? \"Koop\" : \"Huur\",\n // 'price': products[i].Product.Buy ? products[i].Product.BuyPrice : products[i].Product.RentPrice,\n // 'quantity': products[i].Amount,\n // });\n // }\n\n // ga('ec:setAction', 'checkout', { 'step': 4 });\n // ga('send', 'event', 'shop', 'checkout', 'step 4 - betaling');\n});\n\nwindow.onStep5 = (function() {\n var products = JSON.parse(sessionStorage.getItem('basket_items'));\n if (products) {\n step5Ga(products);\n } else {\n Security.handleRequestVerificationToken(function (token) {\n $.post('/sitecoreapi/shop/basket/get',\n {\n __RequestVerificationToken: token\n },\n function (data, status) {\n products = data.Products;\n sessionStorage.setItem('basket_items', JSON.stringify(products));\n step5Ga(products);\n\n }, 'json')\n .fail(function (response) {\n Basket.error(defaultErrorTemplate);\n });\n });\n }\n});\n\nwindow.step5Ga = (function(products)\n{\n //TODO: Replace with gtag\n // var i;\n\n // for (i = 0; i < products.length; ++i) {\n\n // ga('ec:addProduct', {\n // 'id': products[i].Product.Id,\n // 'name': products[i].Product.Name,\n // 'category': '',\n // 'brand': 'Interpolis',\n // 'variant': products[i].Product.Buy ? \"Koop\" : \"Huur\",\n // 'price': products[i].Product.Buy ? products[i].Product.BuyPrice : products[i].Product.RentPrice,\n // 'quantity': products[i].Amount,\n // });\n // }\n\n // ga('ec:setAction', 'checkout', { 'step': 5 });\n // ga('send', 'event', 'shop', 'checkout', 'step 5 - afrekenen');\n});\n\nwindow.onPurchase = (function() {\n if (sessionStorage.getItem(\"basket_items\")) {\n sessionStorage.removeItem('basket_items');\n }\n Security.handleRequestVerificationToken(function (token) {\n $.post('/sitecoreapi/shop/basket/getfinal',\n {\n __RequestVerificationToken: token\n },\n function (data, status) {\n //TODO: Replace with gtag\n // var i;\n // var products = data.Products;\n\n // if (!products || products.length == 0){\n // return;\n // }\n\n // for (i = 0; i < products.length; ++i) {\n\n // ga('ec:addProduct', {\n // 'id': products[i].Product.Id,\n // 'name': products[i].Product.Name,\n // 'category': '',\n // 'brand': 'Interpolis',\n // 'variant': products[i].Product.Buy ? \"Koop\" : \"Huur\",\n // 'price': products[i].Product.Buy ? products[i].Product.BuyPrice : products[i].Product.RentPrice,\n // 'quantity': products[i].Amount,\n // });\n // }\n\n // var orderid = new Date().getTime();\n\n // ga('ec:setAction', 'purchase', {\n // 'id': orderid,\n // 'revenue': data.TotalOneOffPriceIncVAT,\n // 'tax': data.TotalOneOffVAT,\n // 'shipping': '0'\n // });\n // ga('send', 'event', 'shop', 'checkout', 'step 6 - bedankt');\n\n }, 'json')\n .fail(function (response) {\n Basket.error(defaultErrorTemplate);\n });\n });\n});\n\nwindow.onViewDetail = (function(id) {\n if (!id) {\n id = productIdToTrack;\n }\n $.post('/sitecoreapi/shop/product/get',\n {\n productID: id,\n },\n function (data, status) {\n\n //TODO: Replace with gtag\n // ga('ec:addProduct', {\n // 'id': data.Id,\n // 'name': data.Name,\n // 'category': '',\n // 'brand': 'Interpolis',\n // 'variant': data.Buy ? \"Koop\" : \"Huur\",\n // 'price': data.Buy ? data.BuyPrice : data.RentPrice,\n // });\n\n // ga('ec:setAction', 'detail');\n\t // ga('send', 'event', 'shop', 'product detail', data.Name, {'nonInteraction': 1});\n\n }, 'json')\n .fail(function (response) {\n Basket.error(defaultErrorTemplate);\n });\n});\n","jQuery(function ($) {\n 'use strict';\n\n function CheckoutPaymentForm(element) {\n this.container = element;\n this.init();\n }\n\n CheckoutPaymentForm.prototype.init = function () {\n // Initialize method\n this.overlay = $('.popup-overlay');\n\n if (this.overlay.length <= 0) {\n this.overlay = $(\"
    \", {\"class\": \"popup-overlay\"});\n this.container.append(this.overlay);\n }\n };\n\n CheckoutPaymentForm.prototype.showLoader = function() {\n this.overlay.addClass('open');\n var loaderTemplate = $('#loader-tpl').html();\n this.overlay.empty();\n this.overlay.append( Mustache.render(loaderTemplate, {Loadingtext: 'De bestelling wordt verzonden.'}));\n }\n\n CheckoutPaymentForm.prototype.getElement = function (elementSelector) {\n return this.container.find(elementSelector);\n };\n\n $(document).ready(function () {\n var checkoutFormElement = $('#checkout-form-payment');\n if (checkoutFormElement.length > 0) \n {\n var checkoutForm = new CheckoutPaymentForm(checkoutFormElement);\n\n checkoutForm.getElement('.payment-button .button').click(function() {\n // if this form is valid\n if ($(checkoutForm.container).parsley().isValid()) {\n checkoutForm.showLoader();\n }\n });\n }\n });\n});\n","// Validation errors messages for Parsley\n// Load this after Parsley\n\nParsley.addMessages('nl', {\n defaultMessage: \"Deze waarde lijkt onjuist\",\n type: {\n email: \"Dit lijkt geen geldig e-mailadres te zijn\",\n url: \"Dit lijkt geen geldige URL te zijn\",\n number: \"Deze waarde moet een nummer zijn\",\n integer: \"Deze waarde moet een nummer zijn\",\n digits: \"Deze waarde moet numeriek zijn\",\n alphanum: \"Deze waarde moet alfanumeriek zijn\"\n },\n notblank: \"Deze waarde mag niet leeg zijn\",\n required: \"Dit veld is verplicht\",\n pattern: \"Deze waarde lijkt onjuist te zijn\",\n min: \"Deze waarde mag niet lager zijn dan %s\",\n max: \"Deze waarde mag niet groter zijn dan %s\",\n range: \"Deze waarde moet tussen %s en %s liggen\",\n minlength: \"Deze tekst is te kort. Deze moet uit minimaal %s karakters bestaan\",\n maxlength: \"Deze waarde is te lang. Deze mag maximaal %s karakters lang zijn\",\n length: \"Deze waarde moet tussen %s en %s karakters lang zijn\",\n equalto: \"Deze waardes moeten identiek zijn\"\n});\n\nParsley.setLocale('nl');\n","(function(root, wax) {\n\t// Set up appropriately for the environment. Start with AMD.\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(['mustache'], function(mustache) {\n\t\t\twax(mustache || root.Mustache);\n\t\t});\n\n\t// Next for Node.js or CommonJS.\n\t} else if (typeof exports !== 'undefined') {\n\t\tvar mustache = require('mustache');\n\t\twax(mustache);\n\n\t// Finally, as a browser global.\n\t} else {\n\t\twax(root.Mustache);\n\t}\n}(this, function Wax(Mustache) {\n\tMustache.Formatters = {};\n\n\t/*\n\t *\tThis will parse a parameter from a filter:\n\t * \n\t * {{ vaue | filter : param1 : param2 : param3 }}\n\t */\n\tMustache.Context.prototype.parseParam = function parseParam(param) {\n\t\tvar isString, isInteger, isFloat;\n\t\tisString = /^[\\'\\\"](.*)[\\'\\\"]$/g;\n\t\tisInteger = /^[+-]?\\d+$/g;\n\t\tisFloat = /^[+-]?\\d*\\.\\d+$/g;\n\t\tif (isString.test(param)) {\n\t\t\treturn param.replace(isString, '$1');\n\t\t}\n\t\tif (isInteger.test(param)) {\n\t\t\treturn parseInt(param, 10);\n\t\t}\n\t\tif (isFloat.test(param)) {\n\t\t\treturn parseFloat(param);\n\t\t}\n\t\treturn this._lookup(param);\n\t};\n\n\t/*\n\t *\tThis function will resolve one filter# in the mustache expression:\n\t * \n\t * {{ value | filter1 | filter2 | ... | filterN }}\n\t */\n\tMustache.Context.prototype.applyFilter = function applyFilter(expr, fltr) {\n\t\tvar filterExp, paramsExp, match, filter, params = [expr];\n\t\tfilterExp = /^\\s*([^\\:]+)/g;\n\t\tparamsExp = /\\:\\s*([\\'][^\\']*[\\']|[\\\"][^\\\"]*[\\\"]|[^\\:]+)\\s*/g;\n\t\tmatch = filterExp.exec( fltr);\n\t\tfilter = match[1].trim();\n\t\twhile ((match = paramsExp.exec(fltr))) {\n\t\t\tparams.push(this.parseParam(match[1].trim()));\n\t\t}\n\t\t//console.log( filter);\n\t\t//console.log( params);\n\t\tif (Mustache.Formatters.hasOwnProperty(filter)) {\n\t\t\tfltr = Mustache.Formatters[filter];\n\t\t\treturn fltr.apply(fltr, params);\n\t\t}\n\t\treturn expr;\n\t};\n\n\t/*\n\t * Keep a copy of the original lookup function of Mustache\n\t */\n\tMustache.Context.prototype._lookup = Mustache.Context.prototype.lookup;\n\n\t/*\n\t * Overwrite the Context::lookup method to add filter capabilities\n\t */\n\tMustache.Context.prototype.lookup = function parseExpression(name) {\n\t\tvar i, l, expression, formatters;\n\t\tformatters = name.split(\"|\");\n\t\texpression = formatters.shift().trim();\n\t\t//console.log(expression);\n\t\texpression = this._lookup(expression);\n\t\tfor (i = 0, l = formatters.length; i < l; ++i) {\n\t\t\texpression = this.applyFilter(expression, formatters[i]);\n\t\t}\n\t\treturn expression;\n\t};\n}));","var formsHelper = require('../../utils/forms_helper');\n\njQuery(function ($) {\n 'use strict';\n\n function OfferteForm(element) {\n this.container = element;\n this.controls = {\n bedrijfsnaam: '.bedrijfsnaam',\n contactpersoon: '.contactpersoon',\n voorletters: '.voorletters',\n tussenvoegsel: '.tussenvoegsel',\n achternaam: '.achternaam',\n\n };\n this.init();\n }\n\n OfferteForm.prototype.init = function () {\n // Initialize method\n this.overlay = $('.popup-overlay');\n\n var typeControl = this.getElement('.type:checked');\n if (typeControl.length > 0) {\n var type = typeControl.val();\n if (type === 'Zakelijk') {\n this.enableZakelijk();\n } else {\n this.enableParticulier();\n }\n }\n };\n\n OfferteForm.prototype.reInit = function () {\n formsHelper.reInitForms();\n this.updateMeetids();\n };\n\n OfferteForm.prototype.showLoader = function() {\n this.overlay.addClass('open');\n var loaderTemplate = $('#loader-tpl').html();\n this.overlay.empty();\n this.overlay.append( Mustache.render(loaderTemplate, {Loadingtext: 'De aanvraag wordt verzonden.'}));\n }\n\n OfferteForm.prototype.enableZakelijk = function () {\n this.enableFields(this.controls.bedrijfsnaam);\n this.showFields(this.controls.bedrijfsnaam);\n\n this.reInit();\n }\n\n OfferteForm.prototype.enableParticulier = function () {\n this.disableFields(this.controls.bedrijfsnaam);\n this.hideFields(this.controls.bedrijfsnaam);\n\n this.reInit();\n }\n\n OfferteForm.prototype.showFields = function () {\n var i;\n\n if (!arguments) {\n return;\n }\n for (i = 0; i < arguments.length; i++) {\n this.showField(arguments[i]);\n }\n };\n\n OfferteForm.prototype.showField = function (elementId) {\n this.enableField(elementId);\n this.getElement(elementId).closest('.ipo-mdc-form__field-container').removeClass('ipo-mdc-form__field-container--hidden');\n };\n\n OfferteForm.prototype.enableFields = function () {\n var i;\n\n if (!arguments) {\n return;\n }\n for (i = 0; i < arguments.length; i++) {\n this.enableField(arguments[i]);\n }\n };\n\n OfferteForm.prototype.enableField = function (fieldId) {\n var field = this.getElement(fieldId);\n\n field.prop('disabled', false);\n field.closest('.mdc-text-field').removeClass('mdc-text-field--disabled');\n };\n\n OfferteForm.prototype.hideFields = function () {\n var i;\n\n if (!arguments) {\n return;\n }\n for (i = 0; i < arguments.length; i++) {\n this.hideField(arguments[i]);\n }\n };\n\n OfferteForm.prototype.hideField = function (elementId) {\n this.disableField(elementId);\n this.getElement(elementId).closest('.ipo-mdc-form__field-container').addClass('ipo-mdc-form__field-container--hidden');\n };\n\n OfferteForm.prototype.disableFields = function () {\n var i;\n\n if (!arguments) {\n return;\n }\n for (i = 0; i < arguments.length; i++) {\n this.disableField(arguments[i]);\n }\n };\n\n OfferteForm.prototype.disableField = function (fieldId) {\n var field = this.getElement(fieldId);\n\n field.prop('disabled', true);\n field.closest('.mdc-text-field').addClass('mdc-text-field--disabled');\n };\n\n OfferteForm.prototype.getElement = function (elementSelector) {\n return this.container.find(elementSelector);\n };\n\n OfferteForm.prototype.updateMeetids = function() {\n if (setmeetids) {\n setmeetids.init();\n }\n }\n\n $(document).ready(function () {\n // var checkoutForm = new CheckoutForm($('#checkout-form'));\n var offerteFormElement = $('#offerte-form');\n if (offerteFormElement.length > 0) \n {\n var offerteForm = new OfferteForm(offerteFormElement);\n \n offerteForm.getElement('.type').change(function() {\n var type = $(this).val();\n if (type === 'Zakelijk') {\n offerteForm.enableZakelijk();\n }\n else {\n offerteForm.enableParticulier();\n }\n });\n\n offerteForm.getElement('.offerte__submit').click(function(){\n if ($(offerteForm.container).parsley().isValid()) {\n offerteForm.showLoader();\n }\n var analyticsidElement = $('#analyticsid');\n if (analyticsidElement)\n analyticsidElement.val(window.ipcsasn);\n });\n }\n });\n});\n","window.Mustache = require('mustache');\n\n/* DEFAULTS */\nrequire('../library/legacy/a11y.js');\nrequire('./vendor/parsley/parsley.js');\nrequire('./vendor/parsley/init.js');\nrequire('./vendor/parsley/i18n.1/nl.js');\n\n// Sequence depending\nrequire('alias_stub');\n\nrequire('../library/legacy/setmeetids');\nrequire('../library/legacy/webshop/tools/02-mustache-wax.js');\nrequire('../library/legacy/webshop/tools/03-mustache-formatting.js');\nrequire('../library/legacy/webshop/offerte.js');\n\n// Sequence indifferent\nrequire('../library/legacy/webshop/checkout.js');\nrequire('../library/legacy/webshop/checkout-payment.js');\nrequire('../library/legacy/webshop/harmonica.js');\nrequire('../library/legacy/webshop/product-detail-hero.js');\nrequire('../library/legacy/webshop/product-header.js');\nrequire('../library/legacy/webshop/product-header-keuze.js');\nrequire('../library/legacy/webshop/product-header-keuze-v2.js');\nrequire('../library/legacy/webshop/product-tab.js');\nrequire('../library/legacy/webshop/proposition-hero.js');\nrequire('../library/legacy/webshop/proposition-faq.js');\nrequire('../library/legacy/webshop/shoppingbasket.js');\nrequire('../library/legacy/webshop/shoppingbasket-overlay.js');\n","/* eslint-disable max-statements */\n\n(function() {\n 'use strict';\n\n function checkControls(element, left) {\n let images = element.querySelectorAll('.prdm__image'),\n next = element.querySelector('.js-next'),\n prev = element.querySelector('.js-prev'),\n dir = -1;\n\n next.classList.remove('visually-hidden');\n prev.classList.remove('visually-hidden');\n\n for (let index = 0; index < images.length; index++) {\n if (!images[index].classList.contains('visually-hidden')) {\n if (index <= 1 && left) {\n prev.classList.add('visually-hidden');\n }\n if (index >= images.length - 2 && !left) {\n next.classList.add('visually-hidden');\n }\n if (!left) {\n dir = 1;\n }\n images[index + dir].classList.remove('visually-hidden');\n images[index].classList.add('visually-hidden');\n break;\n }\n }\n }\n\n function addControlsBlock(element) {\n let ctrl = document.createElement('div'),\n prev = document.createElement('button'),\n next = document.createElement('button'),\n prevIcon = document.createElement('div'),\n nextIcon = document.createElement('div');\n\n ctrl.classList.add('prd__controls');\n prev.classList.add('prd__prev');\n prev.setAttribute('aria-label','vorige');\n prev.classList.add('visually-hidden');\n prev.classList.add('js-prev');\n next.classList.add('prd__next');\n next.setAttribute('aria-label','volgende');\n next.classList.add('js-next');\n prevIcon.classList.add('ial-fu_025');\n nextIcon.classList.add('ial-fu_026');\n\n window.a11y.addAccesibleEventListeners(prev, function() {\n checkControls(element, true);\n });\n window.a11y.addAccesibleEventListeners(next, function() {\n checkControls(element, false);\n });\n\n prev.appendChild(prevIcon);\n next.appendChild(nextIcon);\n ctrl.appendChild(prev);\n ctrl.appendChild(next);\n element.appendChild(ctrl);\n }\n\n if (document.querySelectorAll('.js-producthero').length > 0) {\n document.querySelectorAll('.js-producthero').forEach((hero) => {\n let thumbs = hero.querySelectorAll('.prd__thumb a'),\n images = hero.querySelectorAll('.prdm__image'),\n imageContainer = hero.querySelector('.prdm__images');\n\n thumbs.forEach((thumb, index) => {\n thumb.addEventListener('mouseup', () => {\n images.forEach((image) => {\n image.classList.add('visually-hidden');\n });\n images[index].classList.remove('visually-hidden');\n });\n });\n\n images[0].classList.remove('visually-hidden');\n\n addControlsBlock(imageContainer);\n });\n }\n})();\n","jQuery(function($) {\n 'use strict';\n\n function changeStateBasketPopup() {\n if ($('body').hasClass('open-basket')) {\n $('body').removeClass('open-basket');\n } else {\n $('body').addClass('open-basket');\n }\n }\n\n $('.basket .basket__overlay, .basket .button--back, .close').click(function(event) {\n event.preventDefault();\n changeStateBasketPopup();\n });\n\n $('.basket__overlay-body').click(function(event) {\n event.preventDefault();\n event.stopPropagation();\n });\n});\n","var formsHelper = require('../../utils/forms_helper');\n\njQuery(function($) {\n 'use strict';\n\n function ProductSelection(element) {\n this.container = element;\n this.controls = {\n dropdownElements: this.container.find('.js-productselection__select'),\n controlContainers: this.container.find('.ipo-mdc-form__subgroup'),\n priceContainer: this.container.find('.js-productselection__price-container'),\n basketButton: this.container.find('.js-productselection__button'),\n basketButtonText: this.container.find('.js-productselection__button span')\n };\n this.attributes = {\n listId: this.container.data('productselection-listid'),\n basketButtonText: this.container.data('productselection-basket'),\n offerteButtonText: this.container.data('productselection-offerte'),\n unknownprice: this.container.data('productselection-price-unknown')\n };\n\n this.init();\n this.bindEvents();\n }\n\n ProductSelection.prototype.init = function() {\n this.loadItemForDropdown(0);\n };\n\n ProductSelection.prototype.dropdownChangedHandler = function(dropdownElement) {\n var selectedItem, itemType;\n\n selectedItem = dropdownElement.find('option:selected');\n itemType = selectedItem.attr('data-productselection-itemtype');\n switch(itemType) {\n case 'list':\n this.handleListChange(dropdownElement, selectedItem);\n break;\n case 'product':\n this.handleProductChange(dropdownElement, selectedItem);\n break;\n }\n };\n\n ProductSelection.prototype.handleListChange = function(changedDropdownElement, selectedItem) {\n var currentIndex;\n\n currentIndex = parseInt(changedDropdownElement.closest('.ipo-mdc-form__subgroup').attr('data-productselection-index'), 10);\n if (currentIndex >= this.controls.dropdownElements.length) {\n return;\n }\n \n this.loadItemForDropdown(currentIndex, selectedItem.val());\n };\n\n ProductSelection.prototype.loadItemForDropdown = function(currentIndex, parentId) {\n var self, dropdownElement, url;\n\n if (!this.attributes.listId) {\n return;\n }\n\n self = this;\n this.showLoading();\n this.clearPrice();\n this.showControlTillIndex(currentIndex);\n dropdownElement = this.controls.controlContainers.filter(`[data-productselection-index='${currentIndex + 1}']`).find('.js-productselection__select');\n \n if (dropdownElement && dropdownElement.length > 0) {\n url = '/sitecoreapi/shop/webapi/ProductSelection/getproductselectionitemsv2?listId=' + this.attributes.listId;\n if (parentId) {\n url = url + '&parentId=' + parentId;\n }\n $.ajax({\n url: url,\n type: 'GET'\n }).done(function(data) {\n if (data) {\n dropdownElement.find('option').not(':first').remove();\n $.each(data, function(i, item) {\n dropdownElement.append($('