{"version":3,"sources":["core/validate.js","rules/core.js","rules/upload.js"],"names":["validity","node","rule","param","valid","dmx","rules","setMessage","console","warn","bootstrap3forms","validate","setBootstrapMessage","setErrorMessage","message","getAttribute","Array","isArray","replace","match","i","setCustomValidity","html5Types","email","url","date","time","week","month","number","color","range","html5Attributes","document","addEventListener","event","querySelector","tagName","elements","length","type","firstCheckbox","name","dirty","call","requestUpdate","willValidate","hasAttribute","value","attr","attributes","attribute","test","substr","toLowerCase","id","form","err","getElementById","createElement","className","group","closest","insertAdjacentElement","innerText","classList","remove","add","elm","contains","nextSibling","parentElement","formGroup","feedback","getCount","element","nodeName","array","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","countrycode","ibancheck","cChar","bbanpattern","bbancountrypatterns","ibanregexp","p","toUpperCase","ibancheckdigits","leadingZeroes","cRest","cOperator","substring","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","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\r\n document.addEventListener(\"DOMContentLoaded\", function(event) {\r\n dmx.bootstrap3forms = !!document.querySelector('script[src$=\"dmxBootstrap3Forms.js\"]');\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 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 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 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.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.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.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 = \"dmxValidatorError\" + node.form.getAttribute('id') + (node.getAttribute('name') || node.getAttribute('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.innerText = 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.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 = \"dmxValidatorError\" + node.form.getAttribute('id') + (node.getAttribute('name') || node.getAttribute('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.innerText = 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 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"]}