{"version":3,"sources":["core/validate.js","rules/core.js","rules/upload.js"],"names":["html5Types","email","url","date","time","week","month","number","color","range","html5Attributes","validity","node","rule","param","valid","dmx","rules","message","getAttribute","Array","isArray","replace","match","i","setCustomValidity","bootstrap5forms","validate","setBootstrap5Message","bootstrap4forms","setBootstrap4Message","bootstrap3forms","setBootstrapMessage","setErrorMessage","setMessage","console","warn","document","addEventListener","event","querySelector","array","querySelectorAll","filter","test","length","tagName","elements","classList","add","type","firstCheckbox","name","dirty","call","requestUpdate","willValidate","hasAttribute","value","attr","attributes","attribute","substr","toLowerCase","validateReset","remove","closest","id","form","err","getElementById","createElement","className","group","insertAdjacentElement","textContent","elm","contains","nextSibling","parentElement","formGroup","feedback","appendChild","getCount","element","nodeName","options","reduce","n","opt","selected","checked","Object","assign","required","min","max","pattern","RegExp","minlength","maxlength","alphanumeric","lettersonly","letterswithbasicpunc","nowhitespace","digits","creditcard","cDigit","nCheck","nDigit","bEven","charAt","parseInt","bic","iban","ibancheck","bbanpattern","p","toUpperCase","ibancheckdigits","leadingZeroes","cRest","AL","AD","AT","AZ","BE","BH","BA","BR","BG","CR","HR","CY","CZ","DK","DO","EE","FO","FI","FR","GE","DE","GI","GR","GL","GT","HU","IS","IE","IL","IT","KZ","KW","LV","LB","LI","LT","LU","MK","MT","MR","MU","MC","MD","ME","NL","NO","PK","PS","PL","PT","RO","SM","SA","RS","SK","SI","ES","SE","CH","TN","TR","AE","GB","VG","substring","indexOf","vat","integer","ipv4","ipv6","minitems","maxitems","equalto","target","notequalto","accept","allowed","split","files","file","ok","j","check","minsize","size","maxsize","mintotalsize","maxtotalsize","minfiles","maxfiles"],"mappings":"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","file":"../dmxValidator/dmxValidator.js","sourcesContent":["(function() {\r\n\r\n var html5Types = {\r\n 'email': 'email',\r\n 'url': 'url',\r\n 'date': 'date',\r\n 'time': 'time',\r\n 'week': 'week',\r\n 'month': 'month',\r\n 'number': 'number',\r\n 'color': 'color',\r\n 'range': 'number'\r\n };\r\n\r\n var html5Attributes = ['min', 'max', 'accept', 'pattern', 'minlength', 'maxlength'];\r\n\r\n dmx.bootstrap3forms = false;\r\n dmx.bootstrap4forms = false;\r\n dmx.bootstrap5forms = false;\r\n\r\n document.addEventListener(\"DOMContentLoaded\", function(event) {\r\n dmx.bootstrap3forms = !!document.querySelector('script[src$=\"dmxBootstrap3Forms.js\"]');\r\n dmx.bootstrap4forms = !!dmx.array(document.querySelectorAll('link[href]')).filter(function(node) { return /bootstrap[\\/@]4(\\.\\d+)?(\\.\\d+)?(-beta\\.?\\d+)?\\/(dist\\/)?\\w+\\/bootstrap(\\.rtl)?(\\.min)?\\.css/.test(node.getAttribute('href')); }).length;\r\n dmx.bootstrap5forms = !!dmx.array(document.querySelectorAll('link[href]')).filter(function(node) { return /bootstrap[\\/@]5(\\.\\d+)?(\\.\\d+)?(-beta\\.?\\d+)?\\/(dist\\/)?\\w+\\/bootstrap(\\.rtl)?(\\.min)?\\.css/.test(node.getAttribute('href')); }).length;\r\n });\r\n\r\n dmx.rules = {};\r\n\r\n dmx.validate = function(node) {\r\n if (node.tagName == 'FORM') {\r\n var valid = true;\r\n\r\n for (var i = 0; i < node.elements.length; i++) {\r\n if (!dmx.validate(node.elements[i])) {\r\n valid = false;\r\n }\r\n }\r\n\r\n if (dmx.bootstrap4forms || dmx.bootstrap5forms) {\r\n node.classList.add('was-validated');\r\n }\r\n\r\n return valid;\r\n }\r\n\r\n if (node.type == 'checkbox' || node.type == 'radio') {\r\n var firstCheckbox = document.querySelector('[name=\"' + node.name + '\"]');\r\n if (firstCheckbox && node != firstCheckbox) {\r\n return dmx.validate(firstCheckbox);\r\n }\r\n }\r\n\r\n if (!node.dirty) {\r\n node.dirty = true;\r\n if (dmx.bootstrap3forms) {\r\n var setCustomValidity = node.setCustomValidity;\r\n node.setCustomValidity = function(message) {\r\n setCustomValidity.call(node, message);\r\n dmx.validate.setBootstrapMessage(node, message);\r\n };\r\n }\r\n }\r\n\r\n dmx.requestUpdate();\r\n\r\n if (!node.willValidate) {\r\n node.setCustomValidity('');\r\n return true;\r\n }\r\n\r\n // Google reCAPTCHA v2\r\n if (node.getAttribute('name') == 'g-recaptcha-response' && !validity(node, 'required')) {\r\n return false;\r\n }\r\n\r\n if (node.hasAttribute('required') && !validity(node, 'required')) {\r\n return false;\r\n }\r\n\r\n if (node.value && node.value.length) {\r\n for (var type in html5Types) {\r\n if (node.type == type && !validity(node, html5Types[type])) {\r\n return false;\r\n }\r\n }\r\n\r\n for (var i in html5Attributes) {\r\n var attr = html5Attributes[i];\r\n if (node.hasAttribute(attr) && !validity(node, attr, node.getAttribute(attr))) {\r\n return false;\r\n }\r\n }\r\n\r\n for (var i = 0; i < node.attributes.length; i++) {\r\n var attribute = node.attributes[i];\r\n\r\n if (/^data-rule-/.test(attribute.name)) {\r\n var rule = attribute.name.substr(10).toLowerCase();\r\n\r\n if (!validity(node, rule, attribute.value)) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n node.setCustomValidity('');\r\n\r\n return true;\r\n };\r\n\r\n dmx.validateReset = function(node) {\r\n if (node.tagName == 'FORM') {\r\n for (var i = 0; i < node.elements.length; i++) {\r\n dmx.validateReset(node[i]);\r\n }\r\n\r\n if (dmx.bootstrap4forms || dmx.bootstrap5forms) {\r\n node.classList.remove('was-validated');\r\n }\r\n\r\n return;\r\n }\r\n\r\n node.dirty = false;\r\n\r\n if (dmx.bootstrap5forms) {\r\n dmx.validate.setBootstrap5Message(node, '');\r\n node.classList.remove('is-valid', 'is-invalid');\r\n } else if (dmx.bootstrap4forms) {\r\n dmx.validate.setBootstrap4Message(node, '');\r\n node.classList.remove('is-valid', 'is-invalid');\r\n } else if (dmx.bootstrap3forms) {\r\n dmx.validate.setBootstrapMessage(node, '');\r\n node.closest('.form-group').remove('has-success', 'has-success', 'has-feedback');\r\n } else {\r\n dmx.validate.setErrorMessage(node, '');\r\n node.classList.remove('dmxValidator-valid', 'dmxValidator-invalid');\r\n }\r\n }\r\n\r\n function validity(node, rule, param) {\r\n var valid = true;\r\n\r\n if (dmx.rules[rule]) {\r\n valid = dmx.rules[rule].validity(node, param);\r\n if (!valid) setMessage(node, rule, param);\r\n } else {\r\n console.warn('Validation rule ' + rule + ' not found!');\r\n }\r\n\r\n if (valid) {\r\n if (dmx.bootstrap5forms) {\r\n dmx.validate.setBootstrap5Message(node, '');\r\n } else if (dmx.bootstrap4forms) {\r\n dmx.validate.setBootstrap4Message(node, '');\r\n } else if (dmx.bootstrap3forms) {\r\n dmx.validate.setBootstrapMessage(node, '');\r\n } else {\r\n dmx.validate.setErrorMessage(node, '');\r\n }\r\n }\r\n\r\n return valid;\r\n }\r\n\r\n function setMessage(node, rule, param) {\r\n var message = node.getAttribute('data-msg-' + rule) || dmx.rules[rule].message;\r\n if (Array.isArray(param)) {\r\n message = message.replace(/\\{(\\d)\\}/g, function(match, i) {\r\n return param[i];\r\n });\r\n } else {\r\n message = message.replace(/\\{0\\}/g, param);\r\n }\r\n\r\n node.setCustomValidity(message);\r\n\r\n if (dmx.bootstrap5forms) {\r\n dmx.validate.setBootstrap5Message(node, message);\r\n } else if (dmx.bootstrap4forms) {\r\n dmx.validate.setBootstrap4Message(node, message);\r\n } else if (dmx.bootstrap3forms) {\r\n dmx.validate.setBootstrapMessage(node, message);\r\n } else {\r\n dmx.validate.setErrorMessage(node, message);\r\n }\r\n }\r\n\r\n dmx.validate.setErrorMessage = function(node, message) {\r\n if (node.hasAttribute('data-msg-custom') || !(node.getAttribute('name') || node.getAttribute('id'))) {\r\n return;\r\n }\r\n\r\n var type = node.type.toLowerCase();\r\n var id = 'dmxValidatorError' + (node.form ? node.form.getAttribute('id') : '') + (node.getAttribute('name') || node.getAttribute('id'));\r\n var err = document.getElementById(id);\r\n\r\n if (!err) {\r\n err = document.createElement('span');\r\n err.id = id;\r\n err.className = 'dmxValidator-error';\r\n\r\n if (type == 'checkbox' || type == 'radio') {\r\n var group = node.closest('.checkbox-group, .radio-group');\r\n\r\n if (group) {\r\n group.insertAdjacentElement('afterend', err);\r\n } else {\r\n node.insertAdjacentElement('afterend', err);\r\n }\r\n } else {\r\n node.insertAdjacentElement('afterend', err);\r\n }\r\n }\r\n\r\n err.textContent = message;\r\n\r\n if (message) {\r\n node.classList.remove('dmxValidator-valid');\r\n node.classList.add('dmxValidator-invalid');\r\n } else {\r\n node.classList.remove('dmxValidator-invalid');\r\n node.classList.add('dmxValidator-valid');\r\n }\r\n }\r\n\r\n dmx.validate.setBootstrapMessage = function(node, message) {\r\n if (node.hasAttribute('data-msg-custom') || !(node.getAttribute('name') || node.getAttribute('id'))) {\r\n return;\r\n }\r\n\r\n var type = node.type.toLowerCase();\r\n var id = 'dmxValidatorError' + (node.form ? node.form.getAttribute('id') : '') + (node.getAttribute('name') || node.getAttribute('id'));\r\n var err = document.getElementById(id);\r\n\r\n if (!err) {\r\n err = document.createElement('span');\r\n err.id = id;\r\n err.className = 'help-block';\r\n\r\n if (type == 'checkbox' || type == 'radio') {\r\n var group = node.closest('.checkbox-group, .radio-group');\r\n\r\n if (group) {\r\n group.insertAdjacentElement('beforeend', err);\r\n } else {\r\n var elm = node.closest('.checkbox, .radio');\r\n if (elm) {\r\n elm.insertAdjacentElement('afterend', err);\r\n }\r\n }\r\n } else if (node.classList.contains('filestyle')) {\r\n node.nextSibling.insertAdjacentElement('afterend', err);\r\n } else if (node.parentElement.classList.contains('input-group')) {\r\n node.parentElement.insertAdjacentElement('afterend', err);\r\n } else {\r\n node.insertAdjacentElement('afterend', err);\r\n }\r\n }\r\n\r\n var formGroup = node.closest('.form-group');\r\n if (type != 'hidden' && node.name != 'g-recaptcha-response' && formGroup) {\r\n var feedback = formGroup.querySelector('.form-control-feedback');\r\n\r\n if (type != 'checkbox' && type != 'radio') {\r\n formGroup.classList.add('has-feedback');\r\n\r\n if (!feedback) {\r\n feedback = document.createElement('span');\r\n feedback.className = 'glyphicon form-control-feedback';\r\n var elm = formGroup.querySelector('.input-group, .checkbox-group, input, select, textarea, button');\r\n elm.insertAdjacentElement('afterend', feedback);\r\n }\r\n }\r\n\r\n if (message) {\r\n formGroup.classList.remove('has-success');\r\n formGroup.classList.add('has-error');\r\n if (feedback) {\r\n feedback.classList.remove('glyphicon-ok');\r\n feedback.classList.add('glyphicon-remove');\r\n }\r\n } else {\r\n formGroup.classList.remove('has-error');\r\n if (feedback) feedback.classList.remove('glyphicon-remove');\r\n if (!(node.form && node.form.hasAttribute('data-novalid'))) {\r\n formGroup.classList.add('has-success');\r\n if (feedback) feedback.classList.add('glyphicon-ok');\r\n }\r\n }\r\n }\r\n\r\n err.textContent = message;\r\n }\r\n\r\n dmx.validate.setBootstrap4Message = function(node, message) {\r\n if (node.hasAttribute('data-msg-custom') || !(node.getAttribute('name') || node.getAttribute('id'))) {\r\n return;\r\n }\r\n\r\n var type = node.type.toLowerCase();\r\n var id = 'dmxValidatorError' + (node.form ? node.form.getAttribute('id') : '') + (node.getAttribute('name') || node.getAttribute('id'));\r\n var err = document.getElementById(id);\r\n\r\n if (!err) {\r\n err = document.createElement('div');\r\n err.id = id;\r\n err.className = 'invalid-feedback';\r\n node.parentElement.appendChild(err);\r\n }\r\n\r\n if (node.hasAttribute('medium-editor-textarea-id')) {\r\n node = document.getElementById(node.getAttribute('medium-editor-textarea-id'));\r\n }\r\n\r\n if (type != 'hidden' && node.name != 'g-recaptcha-response') {\r\n if (message) {\r\n node.classList.remove('is-valid');\r\n node.classList.add('is-invalid');\r\n } else {\r\n node.classList.remove('is-invalid');\r\n node.classList.add('is-valid');\r\n }\r\n }\r\n\r\n err.textContent = message;\r\n }\r\n\r\n dmx.validate.setBootstrap5Message = function(node, message) {\r\n if (node.hasAttribute('data-msg-custom') || !(node.getAttribute('name') || node.getAttribute('id'))) {\r\n return;\r\n }\r\n\r\n var type = node.type.toLowerCase();\r\n var id = 'dmxValidatorError' + (node.form ? node.form.getAttribute('id') : '') + (node.getAttribute('name') || node.getAttribute('id'));\r\n var err = document.getElementById(id);\r\n\r\n if (!err) {\r\n err = document.createElement('div');\r\n err.id = id;\r\n err.className = 'invalid-feedback';\r\n node.parentElement.appendChild(err);\r\n }\r\n\r\n if (node.hasAttribute('medium-editor-textarea-id')) {\r\n node = document.getElementById(node.getAttribute('medium-editor-textarea-id'));\r\n }\r\n\r\n if (type != 'hidden' && node.name != 'g-recaptcha-response') {\r\n if (message) {\r\n node.classList.remove('is-valid');\r\n node.classList.add('is-invalid');\r\n } else {\r\n node.classList.remove('is-invalid');\r\n node.classList.add('is-valid');\r\n }\r\n }\r\n\r\n err.textContent = message;\r\n }\r\n\r\n})();\r\n","(function() {\r\n\r\nObject.assign(dmx.rules, {\r\n\r\n required: {\r\n message: 'This field is required.',\r\n validity: function(element) {\r\n if (element.type.toLowerCase() == 'checkbox' || element.type.toLowerCase() == 'radio') {\r\n //return element.checked;\r\n if (element.name) {\r\n return !!document.querySelector('[name=\"' + element.name + '\"]:checked');\r\n } else {\r\n return element.checked;\r\n }\r\n }\r\n\r\n if (element.hasAttribute('medium-editor-textarea-id')) {\r\n return !!(element.value && !/^\\s*]*>\\s*]*>\\s*<\\/p>\\s*$/.test(element.value))\r\n }\r\n\r\n return !!(element.value && element.value.length);\r\n }\r\n },\r\n\r\n email: {\r\n message: 'Please enter a valid email address.',\r\n validity: function(element) {\r\n return /^(?!\\.)((?!.*\\.{2})[a-zA-Z0-9\\u0080-\\u00FF\\u0100-\\u017F\\u0180-\\u024F\\u0250-\\u02AF\\u0300-\\u036F\\u0370-\\u03FF\\u0400-\\u04FF\\u0500-\\u052F\\u0530-\\u058F\\u0590-\\u05FF\\u0600-\\u06FF\\u0700-\\u074F\\u0750-\\u077F\\u0780-\\u07BF\\u07C0-\\u07FF\\u0900-\\u097F\\u0980-\\u09FF\\u0A00-\\u0A7F\\u0A80-\\u0AFF\\u0B00-\\u0B7F\\u0B80-\\u0BFF\\u0C00-\\u0C7F\\u0C80-\\u0CFF\\u0D00-\\u0D7F\\u0D80-\\u0DFF\\u0E00-\\u0E7F\\u0E80-\\u0EFF\\u0F00-\\u0FFF\\u1000-\\u109F\\u10A0-\\u10FF\\u1100-\\u11FF\\u1200-\\u137F\\u1380-\\u139F\\u13A0-\\u13FF\\u1400-\\u167F\\u1680-\\u169F\\u16A0-\\u16FF\\u1700-\\u171F\\u1720-\\u173F\\u1740-\\u175F\\u1760-\\u177F\\u1780-\\u17FF\\u1800-\\u18AF\\u1900-\\u194F\\u1950-\\u197F\\u1980-\\u19DF\\u19E0-\\u19FF\\u1A00-\\u1A1F\\u1B00-\\u1B7F\\u1D00-\\u1D7F\\u1D80-\\u1DBF\\u1DC0-\\u1DFF\\u1E00-\\u1EFF\\u1F00-\\u1FFFu20D0-\\u20FF\\u2100-\\u214F\\u2C00-\\u2C5F\\u2C60-\\u2C7F\\u2C80-\\u2CFF\\u2D00-\\u2D2F\\u2D30-\\u2D7F\\u2D80-\\u2DDF\\u2F00-\\u2FDF\\u2FF0-\\u2FFF\\u3040-\\u309F\\u30A0-\\u30FF\\u3100-\\u312F\\u3130-\\u318F\\u3190-\\u319F\\u31C0-\\u31EF\\u31F0-\\u31FF\\u3200-\\u32FF\\u3300-\\u33FF\\u3400-\\u4DBF\\u4DC0-\\u4DFF\\u4E00-\\u9FFF\\uA000-\\uA48F\\uA490-\\uA4CF\\uA700-\\uA71F\\uA800-\\uA82F\\uA840-\\uA87F\\uAC00-\\uD7AF\\uF900-\\uFAFF\\.!#$%&'*+-/=?^_`{|}~\\-\\d]+)@(?!\\.)([a-zA-Z0-9\\u0080-\\u00FF\\u0100-\\u017F\\u0180-\\u024F\\u0250-\\u02AF\\u0300-\\u036F\\u0370-\\u03FF\\u0400-\\u04FF\\u0500-\\u052F\\u0530-\\u058F\\u0590-\\u05FF\\u0600-\\u06FF\\u0700-\\u074F\\u0750-\\u077F\\u0780-\\u07BF\\u07C0-\\u07FF\\u0900-\\u097F\\u0980-\\u09FF\\u0A00-\\u0A7F\\u0A80-\\u0AFF\\u0B00-\\u0B7F\\u0B80-\\u0BFF\\u0C00-\\u0C7F\\u0C80-\\u0CFF\\u0D00-\\u0D7F\\u0D80-\\u0DFF\\u0E00-\\u0E7F\\u0E80-\\u0EFF\\u0F00-\\u0FFF\\u1000-\\u109F\\u10A0-\\u10FF\\u1100-\\u11FF\\u1200-\\u137F\\u1380-\\u139F\\u13A0-\\u13FF\\u1400-\\u167F\\u1680-\\u169F\\u16A0-\\u16FF\\u1700-\\u171F\\u1720-\\u173F\\u1740-\\u175F\\u1760-\\u177F\\u1780-\\u17FF\\u1800-\\u18AF\\u1900-\\u194F\\u1950-\\u197F\\u1980-\\u19DF\\u19E0-\\u19FF\\u1A00-\\u1A1F\\u1B00-\\u1B7F\\u1D00-\\u1D7F\\u1D80-\\u1DBF\\u1DC0-\\u1DFF\\u1E00-\\u1EFF\\u1F00-\\u1FFF\\u20D0-\\u20FF\\u2100-\\u214F\\u2C00-\\u2C5F\\u2C60-\\u2C7F\\u2C80-\\u2CFF\\u2D00-\\u2D2F\\u2D30-\\u2D7F\\u2D80-\\u2DDF\\u2F00-\\u2FDF\\u2FF0-\\u2FFF\\u3040-\\u309F\\u30A0-\\u30FF\\u3100-\\u312F\\u3130-\\u318F\\u3190-\\u319F\\u31C0-\\u31EF\\u31F0-\\u31FF\\u3200-\\u32FF\\u3300-\\u33FF\\u3400-\\u4DBF\\u4DC0-\\u4DFF\\u4E00-\\u9FFF\\uA000-\\uA48F\\uA490-\\uA4CF\\uA700-\\uA71F\\uA800-\\uA82F\\uA840-\\uA87F\\uAC00-\\uD7AF\\uF900-\\uFAFF\\-\\.\\d]+)((\\.([a-zA-Z\\u0080-\\u00FF\\u0100-\\u017F\\u0180-\\u024F\\u0250-\\u02AF\\u0300-\\u036F\\u0370-\\u03FF\\u0400-\\u04FF\\u0500-\\u052F\\u0530-\\u058F\\u0590-\\u05FF\\u0600-\\u06FF\\u0700-\\u074F\\u0750-\\u077F\\u0780-\\u07BF\\u07C0-\\u07FF\\u0900-\\u097F\\u0980-\\u09FF\\u0A00-\\u0A7F\\u0A80-\\u0AFF\\u0B00-\\u0B7F\\u0B80-\\u0BFF\\u0C00-\\u0C7F\\u0C80-\\u0CFF\\u0D00-\\u0D7F\\u0D80-\\u0DFF\\u0E00-\\u0E7F\\u0E80-\\u0EFF\\u0F00-\\u0FFF\\u1000-\\u109F\\u10A0-\\u10FF\\u1100-\\u11FF\\u1200-\\u137F\\u1380-\\u139F\\u13A0-\\u13FF\\u1400-\\u167F\\u1680-\\u169F\\u16A0-\\u16FF\\u1700-\\u171F\\u1720-\\u173F\\u1740-\\u175F\\u1760-\\u177F\\u1780-\\u17FF\\u1800-\\u18AF\\u1900-\\u194F\\u1950-\\u197F\\u1980-\\u19DF\\u19E0-\\u19FF\\u1A00-\\u1A1F\\u1B00-\\u1B7F\\u1D00-\\u1D7F\\u1D80-\\u1DBF\\u1DC0-\\u1DFF\\u1E00-\\u1EFF\\u1F00-\\u1FFF\\u20D0-\\u20FF\\u2100-\\u214F\\u2C00-\\u2C5F\\u2C60-\\u2C7F\\u2C80-\\u2CFF\\u2D00-\\u2D2F\\u2D30-\\u2D7F\\u2D80-\\u2DDF\\u2F00-\\u2FDF\\u2FF0-\\u2FFF\\u3040-\\u309F\\u30A0-\\u30FF\\u3100-\\u312F\\u3130-\\u318F\\u3190-\\u319F\\u31C0-\\u31EF\\u31F0-\\u31FF\\u3200-\\u32FF\\u3300-\\u33FF\\u3400-\\u4DBF\\u4DC0-\\u4DFF\\u4E00-\\u9FFF\\uA000-\\uA48F\\uA490-\\uA4CF\\uA700-\\uA71F\\uA800-\\uA82F\\uA840-\\uA87F\\uAC00-\\uD7AF\\uF900-\\uFAFF]){2,63})+)$/i.test(element.value);\r\n }\r\n },\r\n\r\n url: {\r\n message: 'Please enter a valid URL.',\r\n validity: function(element) {\r\n return /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})).?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test(element.value);\r\n }\r\n },\r\n\r\n date: {\r\n message: 'Please enter a valid date.',\r\n validity: function(element) {\r\n return /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test(element.value);\r\n }\r\n },\r\n\r\n time: {\r\n message: 'Please enter a valid time.',\r\n validity: function(element) {\r\n return /^([01][0-9]|2[0-4]):[0-5][0-9](:([0-5][0-9]|60))?$/.test(element.value);\r\n }\r\n },\r\n\r\n month: {\r\n message: 'Please enter a valid month.',\r\n validity: function(element) {\r\n return /^\\d{4}-(0[1-9]|1[012])$/.test(element.value);\r\n }\r\n },\r\n\r\n week: {\r\n message: 'Please enter a valid week.',\r\n validity: function(element) {\r\n return /^\\d{4}-W(0[1-9]|[1-4][0-9]|5[0-3])$/.test(element.value);\r\n }\r\n },\r\n\r\n color: {\r\n message: 'Please enter a color in the format #xxxxxx.',\r\n validity: function(element) {\r\n return /^#[a-fA-F0-9]{6}$/.test(element.value);\r\n }\r\n },\r\n\r\n number: {\r\n message: 'Please enter a valid number.',\r\n validity: function(element) {\r\n return /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test(element.value);\r\n }\r\n },\r\n\r\n min: {\r\n message: 'Please enter a value greater than or equal to {0}.',\r\n validity: function(element, param) {\r\n return +element.value >= param;\r\n }\r\n },\r\n\r\n max: {\r\n message: 'Please enter a value less than or equal to {0}.',\r\n validity: function(element, param) {\r\n return +element.value <= param;\r\n }\r\n },\r\n\r\n pattern: {\r\n message: 'Invalid format.',\r\n validity: function(element, param) {\r\n if (!/^text|search|url|tel|email|password$/i.test(element.type)) {\r\n return true;\r\n }\r\n\r\n if (typeof param == 'string') {\r\n param = new RegExp('^(?:' + param + ')$');\r\n }\r\n\r\n return param.test(element.value);\r\n }\r\n },\r\n\r\n minlength: {\r\n message: 'Please enter at least {0} characters.',\r\n validity: function(element, param) {\r\n return element.value.length >= param;\r\n }\r\n },\r\n\r\n maxlength: {\r\n message: 'Please enter no more than {0} characters.',\r\n validity: function(element, param) {\r\n return element.value.length <= param;\r\n }\r\n },\r\n\r\n alphanumeric: {\r\n message: 'Letters, numbers, and underscores only please.',\r\n validity: function(element) {\r\n return /^\\w+$/i.test(element.value);\r\n }\r\n },\r\n\r\n lettersonly: {\r\n message: 'Letters only please.',\r\n validity: function(element) {\r\n return /^[a-z]+$/i.test(element.value);\r\n }\r\n },\r\n\r\n letterswithbasicpunc: {\r\n message: 'Letters or punctuation only please.',\r\n validity: function(element) {\r\n return /^[a-z\\-.,()'\"\\s]+$/i.test(element.value);\r\n }\r\n },\r\n\r\n nowhitespace: {\r\n message: 'No white space please.',\r\n validity: function(element) {\r\n return /^\\S+$/i.test(element.value);\r\n }\r\n },\r\n\r\n digits: {\r\n message: 'Please enter only digits.',\r\n validity: function(element) {\r\n return /^\\d+$/.test(element.value);\r\n }\r\n },\r\n\r\n creditcard: {\r\n message: 'Please enter a valid credit card number.',\r\n validity: function(element) {\r\n var value = element.value;\r\n\r\n // accept only spaces, digits and dashes\r\n if ( /[^0-9 \\-]+/.test( value ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tvar nCheck = 0,\r\n\t\t\t\tnDigit = 0,\r\n\t\t\t\tbEven = false,\r\n\t\t\t\tn, cDigit;\r\n\r\n\t\t\tvalue = value.replace( /\\D/g, \"\" );\r\n\r\n\t\t\t// Basing min and max length on\r\n\t\t\t// http://developer.ean.com/general_info/Valid_Credit_Card_Types\r\n\t\t\tif ( value.length < 13 || value.length > 19 ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tfor ( n = value.length - 1; n >= 0; n--) {\r\n\t\t\t\tcDigit = value.charAt( n );\r\n\t\t\t\tnDigit = parseInt( cDigit, 10 );\r\n\t\t\t\tif ( bEven ) {\r\n\t\t\t\t\tif ( ( nDigit *= 2 ) > 9 ) {\r\n\t\t\t\t\t\tnDigit -= 9;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tnCheck += nDigit;\r\n\t\t\t\tbEven = !bEven;\r\n\t\t\t}\r\n\r\n\t\t\treturn ( nCheck % 10 ) === 0;\r\n }\r\n },\r\n\r\n bic: {\r\n message: 'Please specify a valid BIC code.',\r\n validity: function(element) {\r\n return /^([A-Z]{6}[A-Z2-9][A-NP-Z1-2])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test(element.value);\r\n }\r\n },\r\n\r\n iban: {\r\n message: 'Please specify a valid IBAN.',\r\n validity: function(element) {\r\n // remove spaces and to upper case\r\n \tvar iban = element.value.replace(/ /g, \"\").toUpperCase(),\r\n \t\tibancheckdigits = \"\",\r\n \t\tleadingZeroes = true,\r\n \t\tcRest = \"\",\r\n \t\tcOperator = \"\",\r\n \t\tcountrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;\r\n\r\n \t// check the country code and find the country specific format\r\n \tcountrycode = iban.substring(0, 2);\r\n \tbbancountrypatterns = {\r\n \t\t\"AL\": \"\\\\d{8}[\\\\dA-Z]{16}\",\r\n \t\t\"AD\": \"\\\\d{8}[\\\\dA-Z]{12}\",\r\n \t\t\"AT\": \"\\\\d{16}\",\r\n \t\t\"AZ\": \"[\\\\dA-Z]{4}\\\\d{20}\",\r\n \t\t\"BE\": \"\\\\d{12}\",\r\n \t\t\"BH\": \"[A-Z]{4}[\\\\dA-Z]{14}\",\r\n \t\t\"BA\": \"\\\\d{16}\",\r\n \t\t\"BR\": \"\\\\d{23}[A-Z][\\\\dA-Z]\",\r\n \t\t\"BG\": \"[A-Z]{4}\\\\d{6}[\\\\dA-Z]{8}\",\r\n \t\t\"CR\": \"\\\\d{17}\",\r\n \t\t\"HR\": \"\\\\d{17}\",\r\n \t\t\"CY\": \"\\\\d{8}[\\\\dA-Z]{16}\",\r\n \t\t\"CZ\": \"\\\\d{20}\",\r\n \t\t\"DK\": \"\\\\d{14}\",\r\n \t\t\"DO\": \"[A-Z]{4}\\\\d{20}\",\r\n \t\t\"EE\": \"\\\\d{16}\",\r\n \t\t\"FO\": \"\\\\d{14}\",\r\n \t\t\"FI\": \"\\\\d{14}\",\r\n \t\t\"FR\": \"\\\\d{10}[\\\\dA-Z]{11}\\\\d{2}\",\r\n \t\t\"GE\": \"[\\\\dA-Z]{2}\\\\d{16}\",\r\n \t\t\"DE\": \"\\\\d{18}\",\r\n \t\t\"GI\": \"[A-Z]{4}[\\\\dA-Z]{15}\",\r\n \t\t\"GR\": \"\\\\d{7}[\\\\dA-Z]{16}\",\r\n \t\t\"GL\": \"\\\\d{14}\",\r\n \t\t\"GT\": \"[\\\\dA-Z]{4}[\\\\dA-Z]{20}\",\r\n \t\t\"HU\": \"\\\\d{24}\",\r\n \t\t\"IS\": \"\\\\d{22}\",\r\n \t\t\"IE\": \"[\\\\dA-Z]{4}\\\\d{14}\",\r\n \t\t\"IL\": \"\\\\d{19}\",\r\n \t\t\"IT\": \"[A-Z]\\\\d{10}[\\\\dA-Z]{12}\",\r\n \t\t\"KZ\": \"\\\\d{3}[\\\\dA-Z]{13}\",\r\n \t\t\"KW\": \"[A-Z]{4}[\\\\dA-Z]{22}\",\r\n \t\t\"LV\": \"[A-Z]{4}[\\\\dA-Z]{13}\",\r\n \t\t\"LB\": \"\\\\d{4}[\\\\dA-Z]{20}\",\r\n \t\t\"LI\": \"\\\\d{5}[\\\\dA-Z]{12}\",\r\n \t\t\"LT\": \"\\\\d{16}\",\r\n \t\t\"LU\": \"\\\\d{3}[\\\\dA-Z]{13}\",\r\n \t\t\"MK\": \"\\\\d{3}[\\\\dA-Z]{10}\\\\d{2}\",\r\n \t\t\"MT\": \"[A-Z]{4}\\\\d{5}[\\\\dA-Z]{18}\",\r\n \t\t\"MR\": \"\\\\d{23}\",\r\n \t\t\"MU\": \"[A-Z]{4}\\\\d{19}[A-Z]{3}\",\r\n \t\t\"MC\": \"\\\\d{10}[\\\\dA-Z]{11}\\\\d{2}\",\r\n \t\t\"MD\": \"[\\\\dA-Z]{2}\\\\d{18}\",\r\n \t\t\"ME\": \"\\\\d{18}\",\r\n \t\t\"NL\": \"[A-Z]{4}\\\\d{10}\",\r\n \t\t\"NO\": \"\\\\d{11}\",\r\n \t\t\"PK\": \"[\\\\dA-Z]{4}\\\\d{16}\",\r\n \t\t\"PS\": \"[\\\\dA-Z]{4}\\\\d{21}\",\r\n \t\t\"PL\": \"\\\\d{24}\",\r\n \t\t\"PT\": \"\\\\d{21}\",\r\n \t\t\"RO\": \"[A-Z]{4}[\\\\dA-Z]{16}\",\r\n \t\t\"SM\": \"[A-Z]\\\\d{10}[\\\\dA-Z]{12}\",\r\n \t\t\"SA\": \"\\\\d{2}[\\\\dA-Z]{18}\",\r\n \t\t\"RS\": \"\\\\d{18}\",\r\n \t\t\"SK\": \"\\\\d{20}\",\r\n \t\t\"SI\": \"\\\\d{15}\",\r\n \t\t\"ES\": \"\\\\d{20}\",\r\n \t\t\"SE\": \"\\\\d{20}\",\r\n \t\t\"CH\": \"\\\\d{5}[\\\\dA-Z]{12}\",\r\n \t\t\"TN\": \"\\\\d{20}\",\r\n \t\t\"TR\": \"\\\\d{5}[\\\\dA-Z]{17}\",\r\n \t\t\"AE\": \"\\\\d{3}\\\\d{16}\",\r\n \t\t\"GB\": \"[A-Z]{4}\\\\d{14}\",\r\n \t\t\"VG\": \"[\\\\dA-Z]{4}\\\\d{16}\"\r\n \t};\r\n\r\n \tbbanpattern = bbancountrypatterns[countrycode];\r\n \t// As new countries will start using IBAN in the\r\n \t// future, we only check if the countrycode is known.\r\n \t// This prevents false negatives, while almost all\r\n \t// false positives introduced by this, will be caught\r\n \t// by the checksum validation below anyway.\r\n \t// Strict checking should return FALSE for unknown\r\n \t// countries.\r\n \tif (typeof bbanpattern !== \"undefined\") {\r\n \t\tibanregexp = new RegExp(\"^[A-Z]{2}\\\\d{2}\" + bbanpattern + \"$\", \"\");\r\n \t\tif (!(ibanregexp.test(iban))) {\r\n \t\t\treturn false; // invalid country specific format\r\n \t\t}\r\n \t}\r\n\r\n \t// now check the checksum, first convert to digits\r\n \tibancheck = iban.substring(4, iban.length) + iban.substring(0, 4);\r\n \tfor (i = 0; i < ibancheck.length; i++) {\r\n \t\tcharAt = ibancheck.charAt(i);\r\n \t\tif (charAt !== \"0\") {\r\n \t\t\tleadingZeroes = false;\r\n \t\t}\r\n \t\tif (!leadingZeroes) {\r\n \t\t\tibancheckdigits += \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\".indexOf(charAt);\r\n \t\t}\r\n \t}\r\n\r\n \t// calculate the result of: ibancheckdigits % 97\r\n \tfor (p = 0; p < ibancheckdigits.length; p++) {\r\n \t\tcChar = ibancheckdigits.charAt(p);\r\n \t\tcOperator = \"\" + cRest + \"\" + cChar;\r\n \t\tcRest = cOperator % 97;\r\n \t}\r\n \treturn cRest === 1;\r\n }\r\n },\r\n\r\n vat: {\r\n message: 'Please specify a valid VAT Number.',\r\n validity: function(element) {\r\n return /^((AT)?U[0-9]{8}|(BE)?0[0-9]{9}|(BG)?[0-9]{9,10}|(CY)?[0-9]{8}L|(CZ)?[0-9]{8,10}|(DE)?[0-9]{9}|(DK)?[0-9]{8}|(EE)?[0-9]{9}|(EL|GR)?[0-9]{9}|(ES)?[0-9A-Z][0-9]{7}[0-9A-Z]|(FI)?[0-9]{8}|(FR)?[0-9A-Z]{2}[0-9]{9}|(GB)?([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})|(HU)?[0-9]{8}|(IE)?[0-9]S[0-9]{5}L|(IT)?[0-9]{11}|(LT)?([0-9]{9}|[0-9]{12})|(LU)?[0-9]{8}|(LV)?[0-9]{11}|(MT)?[0-9]{8}|(NL)?[0-9]{9}B[0-9]{2}|(PL)?[0-9]{10}|(PT)?[0-9]{9}|(RO)?[0-9]{2,10}|(SE)?[0-9]{12}|(SI)?[0-9]{8}|(SK)?[0-9]{10})$/.test(element.value);\r\n }\r\n },\r\n\r\n integer: {\r\n message: 'A positive or negative non-decimal number please.',\r\n validity: function(element) {\r\n return /^-?\\d+$/.test(element.value);\r\n }\r\n },\r\n\r\n ipv4: {\r\n message: 'Please enter a valid IP v4 address.',\r\n validity: function(element) {\r\n return /^(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/i.test(element.value);\r\n }\r\n },\r\n\r\n ipv6: {\r\n message: 'Please enter a valid IP v6 address.',\r\n validity: function(element) {\r\n return /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(element.value);\r\n }\r\n },\r\n\r\n minitems: {\r\n message: 'Please select at least {0} items.',\r\n validity: function(element, param) {\r\n return getCount(element) >= param;\r\n }\r\n },\r\n\r\n maxitems: {\r\n message: 'Please select no more tham {0} items.',\r\n validity: function(element, param) {\r\n return getCount(element) <= param;\r\n }\r\n },\r\n\r\n equalto: {\r\n message: 'Please enter the same value again.',\r\n validity: function(element, param) {\r\n if (param[0] != '#') param = '[name=\"' + param + '\"]';\r\n var target = document.querySelector(param);\r\n if (!target) {\r\n console.warn('Target element ' + param + ' for equalTo rule not found.');\r\n return true;\r\n }\r\n return element.value == target.value;\r\n }\r\n },\r\n\r\n notequalto: {\r\n message: 'Please enter a different value, values must not be the same.',\r\n validity: function(element, param) {\r\n if (param[0] != '#') param = '[name=\"' + param + '\"]';\r\n var target = document.querySelector(param);\r\n if (!target) {\r\n console.warn('Target element ' + param + ' for equalTo rule not found.');\r\n return true;\r\n }\r\n return element.value != target.value;\r\n }\r\n }\r\n\r\n});\r\n\r\nfunction getCount(element) {\r\n if (element.nodeName == 'SELECT') {\r\n return dmx.array(element.options).reduce(function(n, opt) {\r\n return n + opt.selected;\r\n }, 0);\r\n }\r\n\r\n if (element.type.toLowerCase() == 'checkbox') {\r\n return dmx.array(element.form.elements).reduce(function(n, elm) {\r\n return n + (elm.name == element.name && elm.checked);\r\n }, 0);\r\n }\r\n\r\n return 1;\r\n}\r\n\r\n})();\r\n","(function() {\r\n\r\nObject.assign(dmx.rules, {\r\n\r\n accept: {\r\n message: 'This file type is not allowed for upload.',\r\n validity: function(element, param) {\r\n if (element.type.toLowerCase() != 'file') {\r\n return true;\r\n }\r\n\r\n var allowed = param.replace(/\\s/g, '').split(',');\r\n\r\n if (element.files && element.files.length) {\r\n for (var i = 0; i < element.files.length; i++) {\r\n var file = element.files[i], ok = false;\r\n\r\n for (var j = 0; j < allowed.length; j++) {\r\n var check = allowed[j];\r\n\r\n if (check.charAt(0) == '.') {\r\n if (file.name.match(new RegExp('\\\\' + check + '$', 'i'))) {\r\n ok = true;\r\n break;\r\n }\r\n } else if (/(audio|video|image)\\/\\*/i.test(check)) {\r\n if (file.type.match(new RegExp('^' + check.replace(/\\*/g, '.*') + '$', 'i'))) {\r\n ok = true;\r\n break;\r\n }\r\n } else {\r\n if (file.type.toLowerCase() == check.toLowerCase()) {\r\n ok = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (!ok) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n },\r\n\r\n minsize: {\r\n message: 'Please select a file of at least {0} bytes.',\r\n validity: function(element, param) {\r\n if (element.type.toLowerCase() != 'file') {\r\n return true;\r\n }\r\n\r\n if (element.files && element.files.length) {\r\n for (var i = 0; i < element.files.length; i++) {\r\n if (element.files[i].size < param) return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n },\r\n\r\n maxsize: {\r\n message: 'Please select a file of no more than {0} bytes.',\r\n validity: function(element, param) {\r\n if (element.type.toLowerCase() != 'file') {\r\n return true;\r\n }\r\n\r\n if (element.files && element.files.length) {\r\n for (var i = 0; i < element.files.length; i++) {\r\n if (element.files[i].size > param) return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n },\r\n\r\n mintotalsize: {\r\n message: 'Total size of selected files should be at least {0} bytes.',\r\n validity: function(element, param) {\r\n if (element.type.toLowerCase() != 'file') {\r\n return true;\r\n }\r\n\r\n if (element.files && element.files.length) {\r\n var size = 0;\r\n for (var i = 0; i < element.files.length; i++) {\r\n size += element.files[i].size;\r\n }\r\n if (size < param) return false;\r\n }\r\n\r\n return true;\r\n }\r\n },\r\n\r\n maxtotalsize: {\r\n message: 'Total size of selected files should be no more than {0} bytes.',\r\n validity: function(element, param) {\r\n if (element.type.toLowerCase() != 'file') {\r\n return true;\r\n }\r\n\r\n if (element.files && element.files.length) {\r\n var size = 0;\r\n for (var i = 0; i < element.files.length; i++) {\r\n size += element.files[i].size;\r\n }\r\n if (size > param) return false;\r\n }\r\n\r\n return true;\r\n }\r\n },\r\n\r\n minfiles: {\r\n message: 'Please select at least {0} files.',\r\n validity: function(element, param) {\r\n if (element.type.toLowerCase() != 'file') {\r\n return true;\r\n }\r\n\r\n if (element.files && element.files.length) {\r\n if (element.files.length < param) return false;\r\n }\r\n\r\n return true;\r\n }\r\n },\r\n\r\n maxfiles: {\r\n message: 'Please select no more than {0} files.',\r\n validity: function(element, param) {\r\n if (element.type.toLowerCase() != 'file') {\r\n return true;\r\n }\r\n\r\n if (element.files && element.files.length) {\r\n if (element.files.length > param) return false;\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n});\r\n\r\n})();\r\n"]}