{"version":3,"sources":["forms.js"],"names":["typeahead","$","each","$input","data","url","role","bloodhound","Bloodhound","datumTokenizer","tokenizers","whitespace","datum","text","queryTokenizer","remote","filter","tags","map","tag","initialize","minLength","highlight","name","limit","source","ttAdapter","tagsinput","typeaheadjs","removeAttr","styleSummary","$this","vse","submit","validator","cancelSubmit","valid","find","addClass","document","on","trigger","tooltip","window","autosize","ajaxStart","ajaxStop","$form","setTimeout","selectpicker","reset","removeClass","html","formId","attr","formaction","is","value1","operator","value2","passOnNull","isNullish","input","undefined","value1nullish","value2nullish","isNumeric","length","isDate","dateTest","RegExp","test","isTime","isBool","parseFloat","replace","Date","parse","setValidationValues","options","ruleName","value","rules","message","messages","range","methods","element","param","type","checked","$element","call","AutoNumeric","unformat","_config","number","setDefaults","ignore","onfocusout","checkable","submitted","optional","nodeName","toLowerCase","val","errorElement","errorClass","errorPlacement","error","insertAfter","parent","prop","$formGroup","closest","hasError","unhighlight","isAllValid","key","hasOwnProperty","addMethod","params","dependentProperty","parents","dependentValue","dependentTestValue","pattern","dependentPropertyElement","getElementsByName","index","toString","getElementById","unobtrusive","adapters","findIndex","adapter","splice","addBool","add","async","prefix","substr","lastIndexOf","additionalfields","split","i","fieldName","paramName","paramNameWithoutPrefix","indexOf","field","form","displayName","labels","innerHTML","dependentDisplayName","dependentproperty","passonnull","dependentvalue","count","parameters","paramSettings","othervalue","isValid","allowedTypes","item","trim","files","fileName","extension","inArray","allowedSize","fileSize","size","displaySize","comparison","parseInt","fn","clearValidation","validate","successList","push","showErrors","resetForm","hasClass"],"mappings":"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","file":"forms.js","sourcesContent":["function typeahead() {\r\n $('[data-typeahead-url]:not(.tt-hint)')\r\n .each(function () {\r\n const $input = $(this),\r\n typeahead = $input.data('is-typeaheaded'),\r\n url = $input.data('typeahead-url'),\r\n role = $input.data('role');\r\n\r\n if ((typeof typeahead === 'undefined' || !typeahead) && typeof url !== 'undefined' && url) {\r\n const bloodhound = new Bloodhound({\r\n datumTokenizer: datum => Bloodhound.tokenizers.whitespace(datum.text),\r\n queryTokenizer: Bloodhound.tokenizers.whitespace,\r\n //prefetch: {\r\n // url,\r\n // filter(tags) {\r\n // return tags.map(tag => tag.text);\r\n // }\r\n //},\r\n remote: {\r\n url: url,\r\n filter(tags) {\r\n return tags.map(tag => tag.text);\r\n }\r\n }\r\n });\r\n bloodhound.initialize();\r\n\r\n if (typeof role === 'undefined') {\r\n $input.typeahead({\r\n minLength: 1,\r\n highlight: true\r\n }, {\r\n name: 'bloodhound',\r\n limit: 10,\r\n source: bloodhound.ttAdapter()\r\n });\r\n } else if (role === 'tagsinput') {\r\n $input.tagsinput({\r\n /*maxTags: 3,*/\r\n typeaheadjs: [\r\n {\r\n minLength: 1,\r\n highlight: true\r\n }, {\r\n name: 'bloodhound',\r\n limit: 10,\r\n source: bloodhound.ttAdapter()\r\n }\r\n ]\r\n });\r\n }\r\n\r\n $input.data('is-typeaheaded', true);\r\n $('input.tt-hint').removeAttr(\"data-typeahead-url data-val data-val-required data-val-maxlength data-val-maxlength-max\");\r\n }\r\n });\r\n}\r\n\r\nfunction styleSummary() {\r\n $('form').each(function () {\r\n const $this = $(this),\r\n vse = $this.data('vse');\r\n\r\n if (!vse) {\r\n $this.data('vse', true);\r\n $this.submit(function () {\r\n const validator = $this.data('validator');\r\n if (!validator || !validator.cancelSubmit) {\r\n if (!$this.valid()) {\r\n $this.find('.validation-summary-errors').each(function () {\r\n $(this).addClass('alert bg-warning alert-styled-left');\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\n(() => {\r\n $(document).on('change', 'select', function () { $(this).trigger('focusout'); }); // fix bootstrap-select \r\n\r\n typeahead();\r\n\r\n $('[data-toggle=\"tooltip\"]').tooltip();\r\n\r\n if (window.autosize) {\r\n autosize($('textarea'));\r\n }\r\n\r\n $('.validation-summary-errors').addClass('alert bg-warning alert-styled-left');\r\n\r\n styleSummary();\r\n\r\n $(document)\r\n .ajaxStart(() => {\r\n\r\n })\r\n .ajaxStop(() => {\r\n typeahead();\r\n autosize($('textarea'));\r\n $('.validation-summary-errors').addClass('alert bg-warning alert-styled-left');\r\n styleSummary();\r\n });\r\n\r\n $(document).on('reset', 'form', function () {\r\n const $form = $(this);\r\n setTimeout(() => $form.find('.js-select').selectpicker('refresh').trigger('change'));\r\n\r\n $form.find(\"input.js-numeric\").each(function () {\r\n var $input = $(this),\r\n data = $input.data('bs.numeric');\r\n data.reset();\r\n });\r\n\r\n $form.find('.validation-summary-errors').removeClass('alert bg-warning alert-styled-left').html('');\r\n });\r\n\r\n $(document).on('click', '.ie button[type=submit][form]:not(.js-bootbox-confirm, .js-bootbox-alert, .js-bootbox-prompt, .js-bootbox-custom)', function () {\r\n const formId = $(this).attr('form');\r\n var $form = $('#' + formId),\r\n formaction = $(this).attr('formaction');\r\n if (formaction) {\r\n $form.attr('action', formaction);\r\n }\r\n $form.submit();\r\n }).on('click', '.ie button[type=reset][form]:not(.js-bootbox-confirm, .js-bootbox-alert, .js-bootbox-prompt, .js-bootbox-custom)', function () {\r\n const formId = $(this).attr('form');\r\n $(`#${formId}`)[0].reset();\r\n });\r\n\r\n var is = function (value1, operator, value2, passOnNull) {\r\n if (passOnNull) {\r\n const isNullish = (input) => input == null || input == undefined || input == '';\r\n\r\n const value1nullish = isNullish(value1);\r\n const value2nullish = isNullish(value2);\r\n\r\n if ((value1nullish && !value2nullish) ||\r\n (value2nullish && !value1nullish) ||\r\n (value1nullish && value2nullish)) {\r\n return true;\r\n }\r\n }\r\n\r\n const isNumeric = (input) => (input - 0) == input && input.length > 0;\r\n\r\n const isDate = (input) => {\r\n const dateTest = new RegExp(/(?=\\d)^(?:(?!(?:10\\D(?:0?[5-9]|1[0-4])\\D(?:1582))|(?:0?9\\D(?:0?[3-9]|1[0-3])\\D(?:1752)))((?:0?[13578]|1[02])|(?:0?[469]|11)(?!\\/31)(?!-31)(?!\\.31)|(?:0?2(?=.?(?:(?:29.(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:(?:\\d\\d)(?:[02468][048]|[13579][26])(?!\\x20BC))|(?:00(?:42|3[0369]|2[147]|1[258]|09)\\x20BC))))))|(?:0?2(?=.(?:(?:\\d\\D)|(?:[01]\\d)|(?:2[0-8])))))([-.\\/])(0?[1-9]|[12]\\d|3[01])\\2(?!0000)((?=(?:00(?:4[0-5]|[0-3]?\\d)\\x20BC)|(?:\\d{4}(?!\\x20BC)))\\d{4}(?:\\x20BC)?)(?:$|(?=\\x20\\d)\\x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]\\d){0,2}(?:\\x20[aApP][mM]))|(?:[01]\\d|2[0-3])(?::[0-5]\\d){1,2})?$/);\r\n return dateTest.test(input);\r\n };\r\n\r\n const isTime = (input) => /^\\d{2}:\\d{2}(:\\d{2}){0,1}$/.test(input);\r\n\r\n var isBool = (input) => input === true || input === false || input === 'true' || input === 'false';\r\n\r\n if (isDate(value1)) {\r\n if (isTime(value1)) {\r\n value1 = parseFloat(value1.replace(':', ''));\r\n value2 = parseFloat(value2.replace(':', ''));\r\n } else {\r\n value1 = Date.parse(value1);\r\n value2 = Date.parse(value2);\r\n }\r\n }\r\n else if (isTime(value1)) {\r\n value1 = parseFloat(value1.replace(':', ''));\r\n value2 = parseFloat(value2.replace(':', ''));\r\n }\r\n else if (isBool(value1)) {\r\n if (value1 == 'false' || value1 == 'False') value1 = false;\r\n if (value2 == 'false' || value2 == 'False') value2 = false;\r\n value1 = !!value1;\r\n value2 = !!value2;\r\n }\r\n else if (isNumeric(value1)) {\r\n value1 = parseFloat(value1);\r\n value2 = parseFloat(value2);\r\n }\r\n\r\n switch (operator) {\r\n case 'EqualTo': if (value1 == value2) return true; break;\r\n case 'NotEqualTo': if (value1 != value2) return true; break;\r\n case 'GreaterThan': if (value1 > value2) return true; break;\r\n case 'LessThan': if (value1 < value2) return true; break;\r\n case 'GreaterThanOrEqualTo': if (value1 >= value2) return true; break;\r\n case 'LessThanOrEqualTo': if (value1 <= value2) return true; break;\r\n case 'RegExMatch': return (new RegExp(value2)).test(value1);\r\n case 'NotRegExMatch': return !(new RegExp(value2)).test(value1);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n var setValidationValues = function (options, ruleName, value) {\r\n options.rules[ruleName] = value;\r\n if (options.message) {\r\n options.messages[ruleName] = options.message;\r\n }\r\n };\r\n //var getId = function (element, dependentProperty) {\r\n // var pos = element.id.lastIndexOf('_') + 1;\r\n // return element.id.substr(0, pos) + dependentProperty.replace(/\\./g, '_');\r\n //};\r\n\r\n\r\n const range = $.validator.methods.range;\r\n $.validator.methods.range = function (value, element, param) {\r\n if (element.type === 'checkbox') {\r\n return element.checked;\r\n } else {\r\n const $element = $(element),\r\n data = $element.data('bs.numeric');\r\n return range.call(this, data ? AutoNumeric.unformat($element[0], data._config) : value, element, param);\r\n }\r\n }\r\n const number = $.validator.methods.number;\r\n $.validator.methods.number = function (value, element) {\r\n const $element = $(element),\r\n data = $element.data('bs.numeric');\r\n return number.call(this, data ? AutoNumeric.unformat($element[0], data._config) : value, element);\r\n }\r\n\r\n $.validator.setDefaults({\r\n ignore: 'input[type=hidden],.ignore,.note-editable.panel-body', // fixes hidden select\r\n onfocusout(element) {\r\n if (!this.checkable(element) && (element.name in this.submitted || !this.optional(element))) {\r\n this.element(element);\r\n } else {\r\n if (element.nodeName.toLowerCase() === 'select' && $(element).data('val-required') && !$(element).val()) {\r\n this.element(element);\r\n }\r\n }\r\n },\r\n errorElement: 'span',\r\n errorClass: 'help-block',\r\n errorPlacement(error, element) {\r\n error.insertAfter(element.parent('.input-group').length || element.prop('type') === 'checkbox' || element.prop('type') === 'radio' ? element.parent() : element);\r\n },\r\n highlight(element) {\r\n const $element = $(element),\r\n $formGroup = $element.closest('.form-group');\r\n let hasError = $formGroup.data('has-error');\r\n\r\n if (hasError === undefined) {\r\n hasError = {};\r\n $formGroup.find('input[data-val=true],textarea[data-val=true],select[data-val=true]').each(function () {\r\n hasError[$(this).attr('id')] = false;\r\n });\r\n }\r\n\r\n hasError[$element.attr('id')] = true;\r\n\r\n $formGroup.data('has-error', hasError).addClass('has-error');\r\n },\r\n unhighlight(element) {\r\n const $element = $(element),\r\n $formGroup = $element.closest('.form-group');\r\n let hasError = $formGroup.data('has-error');\r\n\r\n if (hasError === undefined) {\r\n hasError = {};\r\n $formGroup.find('input[data-val=true],textarea[data-val=true],select[data-val=true]').each(function () {\r\n hasError[$(this).attr('id')] = false;\r\n });\r\n }\r\n\r\n hasError[$element.attr('id')] = false;\r\n $formGroup.data('has-error', hasError);\r\n\r\n let isAllValid = true;\r\n for (let key in hasError) {\r\n if (hasError.hasOwnProperty(key) && hasError[key]) {\r\n isAllValid = false;\r\n break;\r\n }\r\n }\r\n\r\n if (isAllValid) {\r\n $formGroup.removeClass('has-error');\r\n }\r\n }\r\n });\r\n\r\n // Add Custom validation of requiredIf\r\n //$.validator.addMethod(\"requiredIf\", function (value, element, parameters) {\r\n // var paramSettings = parameters[1];\r\n // let desiredvalue = paramSettings.desiredvalue;\r\n // desiredvalue = (desiredvalue === null || desiredvalue === undefined ? '' : desiredvalue).toString().toLowerCase();\r\n // let actualvalue = $(\"#\" + paramSettings.dependentproperty).val();\r\n // actualvalue = (actualvalue === null || actualvalue === undefined ? '' : actualvalue).toString().toLowerCase();\r\n // let isValid = false;\r\n // if ($.trim(desiredvalue) === $.trim(actualvalue)) {\r\n // isValid = $.validator.methods.required.call(this, value, element, paramSettings);\r\n // return isValid;\r\n // }\r\n // if (paramSettings.commaseparated === \"true\") {\r\n // if (desiredvalue.split(\",\").indexOf($.trim(actualvalue)) >= 0) {\r\n // isValid = $.validator.methods.required.call(this, value, element, paramSettings);\r\n // return isValid;\r\n // }\r\n // }\r\n // return true;\r\n //});\r\n //$.validator.unobtrusive.adapters.add(\"requiredIf\", [\"dependentproperty\", \"desiredvalue\", \"commaseparated\"], function (options) {\r\n // let displayName = null;\r\n\r\n // if (options.element.labels && options.element.labels[0]) {\r\n // displayName = options.element.labels[0].innerHTML;\r\n // }\r\n\r\n // displayName = displayName || options.element.name;\r\n\r\n // options.rules['requiredIf'] = [displayName, options.params];\r\n // options.messages['requiredIf'] = options.message;\r\n //});\r\n $.validator.addMethod(\"enforcetrue\", function (value, element, param) {\r\n return element.checked;\r\n });\r\n $.validator.addMethod(\"is\", function (value, element, params) {\r\n const dependentProperty = params[2];\r\n const operator = params[3];\r\n const passOnNull = params[4];\r\n var $form = $(element).parents(\"form\");\r\n\r\n const dependentValue = $form.find(`[name=\"${dependentProperty}\"]`)[0].value;\r\n\r\n return is(value, operator, dependentValue, passOnNull);\r\n });\r\n\r\n $.validator.addMethod(\"requiredif\", function (value, element, params) {\r\n const dependentProperty = params[3];\r\n const dependentTestValue = params[2];\r\n const operator = params[4];\r\n const pattern = params[5];\r\n const dependentPropertyElement = document.getElementsByName(dependentProperty);\r\n var dependentValue = null;\r\n\r\n if (dependentPropertyElement.length > 1) {\r\n for (var index = 0; index != dependentPropertyElement.length; index++)\r\n if (dependentPropertyElement[index]['checked']) {\r\n dependentValue = dependentPropertyElement[index].value;\r\n break;\r\n }\r\n\r\n if (dependentValue == null)\r\n dependentValue = false;\r\n } else {\r\n dependentValue = dependentPropertyElement[0].value;\r\n }\r\n\r\n if (is(dependentValue, operator, dependentTestValue)) {\r\n if (pattern == null) {\r\n if (value != null && value.toString().replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '') != '')\r\n return true;\r\n } else {\r\n return (new RegExp(pattern)).test(value);\r\n }\r\n } else {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n $.validator.addMethod('requiredifempty', function (value, element, params) {\r\n const dependentProperty = params[2];\r\n const dependentValue = document.getElementById(dependentProperty).value;\r\n\r\n if (dependentValue == null || dependentValue.toString().replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '') == '') {\r\n if (value != null && value.toString().replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '') != '') {\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n $.validator.addMethod('requiredifnotempty', function (value, element, params) {\r\n const dependentProperty = params[2];\r\n const dependentValue = document.getElementById(dependentProperty).value;\r\n\r\n if (dependentValue != null && dependentValue.toString().replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '') != '') {\r\n if (value != null && value.toString().replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '') != '')\r\n return true;\r\n }\r\n else\r\n return true;\r\n\r\n return false;\r\n });\r\n\r\n // adding async for remote since we're seeing race condition with an ajax form submit\r\n var index = $.validator.unobtrusive.adapters.findIndex(adapter => adapter.name === 'remote');\r\n if (index > -1) {\r\n $.validator.unobtrusive.adapters.splice(index, 1);\r\n }\r\n $.validator.unobtrusive.adapters.addBool(\"enforcetrue\");\r\n $.validator.unobtrusive.adapters.add('remote', ['url', 'type', 'async', 'additionalfields'], function (options) {\r\n var value = {\r\n url: options.params.url,\r\n type: options.params.type || 'GET',\r\n async: options.params.async == null ? true : (options.params.async == 'true'),\r\n data: {}\r\n },\r\n prefix = options.element.name.substr(0, options.element.name.lastIndexOf('.') + 1);\r\n\r\n $.each((options.params.additionalfields || options.element.name).replace(/^\\s+|\\s+$/g, '').split(/\\s*,\\s*/g), function (i, fieldName) {\r\n var paramName = fieldName;\r\n var paramNameWithoutPrefix = fieldName;\r\n if (fieldName.indexOf('*.') === 0) {\r\n paramName = fieldName.replace('*.', prefix);\r\n paramNameWithoutPrefix = fieldName.replace('*.', '');\r\n }\r\n\r\n value.data[paramNameWithoutPrefix] = function () {\r\n var field = $(options.form).find(':input').filter(\"[name='\" + paramName.replace(/([!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~])/g, \"\\\\$1\") + \"']\");\r\n // For checkboxes and radio buttons, only pick up values from checked fields.\r\n if (field.is(':checkbox')) {\r\n return field.filter(':checked').val() || field.filter(':hidden').val() || '';\r\n }\r\n else if (field.is(':radio')) {\r\n return field.filter(':checked').val() || '';\r\n }\r\n return field.val();\r\n };\r\n });\r\n\r\n setValidationValues(options, 'remote', value);\r\n });\r\n\r\n $.validator.unobtrusive.adapters.add(\"is\", [\"dependentproperty\", \"operator\", \"passonnull\"], function (options) {\r\n let displayName = null;\r\n\r\n if (options.element.labels && options.element.labels[0]) {\r\n displayName = options.element.labels[0].innerHTML;\r\n }\r\n\r\n displayName = displayName || options.element.name;\r\n let dependentDisplayName = null;\r\n const dependentProperty = $('#' + options.params.dependentproperty);\r\n\r\n if (dependentProperty && dependentProperty[0] && dependentProperty[0].labels && dependentProperty[0].labels[0]) {\r\n dependentDisplayName = dependentProperty[0].labels[0].innerHTML;\r\n }\r\n\r\n dependentDisplayName = dependentDisplayName || options.params.dependentproperty;\r\n\r\n setValidationValues(options, \"is\", [\r\n displayName,\r\n dependentDisplayName,\r\n options.params.dependentproperty,\r\n options.params.operator,\r\n options.params.passonnull]);\r\n });\r\n\r\n $.validator.unobtrusive.adapters.add(\"requiredif\", [\"dependentproperty\", \"dependentvalue\", \"operator\", \"pattern\"], function (options) {\r\n let displayName = null;\r\n\r\n if (options.element.labels && options.element.labels[0]) {\r\n displayName = options.element.labels[0].innerHTML;\r\n }\r\n\r\n displayName = displayName || options.element.name;\r\n let dependentDisplayName = $(`label[for=\"${options.params.dependentproperty}\"]`).text()\r\n || options.params.dependentproperty;\r\n\r\n setValidationValues(options, \"requiredif\", [displayName, dependentDisplayName, options.params.dependentvalue, options.params.dependentproperty, options.params.operator, options.params.pattern]);\r\n });\r\n\r\n $.validator.unobtrusive.adapters.add('requiredifempty', ['dependentproperty'], function (options) {\r\n let displayName = null;\r\n\r\n if (options.element.labels && options.element.labels[0]) {\r\n displayName = options.element.labels[0].innerHTML;\r\n }\r\n\r\n displayName = displayName || options.element.name;\r\n let dependentDisplayName = null;\r\n let dependentProperty = $('#' + options.params.dependentproperty);\r\n\r\n if (dependentProperty && dependentProperty[0] && dependentProperty[0].labels && dependentProperty[0].labels[0]) {\r\n dependentDisplayName = dependentProperty[0].labels[0].innerHTML;\r\n }\r\n\r\n dependentDisplayName = dependentDisplayName || options.params.dependentproperty;\r\n\r\n setValidationValues(options, 'requiredifempty', [displayName, dependentDisplayName, options.params.dependentproperty]);\r\n });\r\n\r\n $.validator.unobtrusive.adapters.add('requiredifnotempty', ['dependentproperty'], function (options) {\r\n let displayName = null;\r\n\r\n if (options.element.labels && options.element.labels[0]) {\r\n displayName = options.element.labels[0].innerHTML;\r\n }\r\n\r\n displayName = displayName || options.element.name;\r\n\r\n let dependentDisplayName = null;\r\n const dependentProperty = $('#' + options.params.dependentproperty);\r\n\r\n if (dependentProperty && dependentProperty[0] && dependentProperty[0].labels && dependentProperty[0].labels[0]) {\r\n dependentDisplayName = dependentProperty[0].labels[0].innerHTML;\r\n }\r\n\r\n dependentDisplayName = dependentDisplayName || options.params.dependentproperty;\r\n\r\n setValidationValues(options, 'requiredifnotempty', [displayName, dependentDisplayName, options.params.dependentproperty]);\r\n });\r\n\r\n // Validate Rule Expression\r\n $.validator.addMethod(\"ruleexpression\", function (value, element) {\r\n let count = 0;\r\n for (let i = 0; i < value.length; i++) {\r\n if (value[i] === '(') {\r\n count++;\r\n } else if (value[i] === ')') {\r\n count--;\r\n }\r\n }\r\n return count === 0;\r\n });\r\n $.validator.unobtrusive.adapters.add(\"ruleexpression\", function (options) {\r\n let displayName = null;\r\n\r\n if (options.element.labels && options.element.labels[0]) {\r\n displayName = options.element.labels[0].innerHTML;\r\n }\r\n\r\n displayName = displayName || options.element.name;\r\n\r\n options.rules['ruleexpression'] = [displayName, true];\r\n options.messages['ruleexpression'] = options.message;\r\n });\r\n\r\n\r\n // Date Greater Than\r\n $.validator.addMethod('dategreaterthan',\r\n function (value, element, parameters) {\r\n const paramSettings = parameters[2];\r\n let othervalue = $('#' + paramSettings.dependentproperty).val();\r\n othervalue = (othervalue === null || othervalue === undefined ? '' : othervalue).toString().toLowerCase();\r\n\r\n let isValid = true;\r\n\r\n if (!/Invalid|NaN/.test(new Date(value)) && !/Invalid|NaN/.test(new Date(othervalue))) {\r\n if (new Date(value) <= new Date(othervalue)) {\r\n isValid = false;\r\n }\r\n }\r\n else if (!/Invalid|NaN/.test(new Date('1/1/2000 ' + value)) && !/Invalid|NaN/.test(new Date('1/1/2000 ' + value))) {\r\n if (new Date('1/1/2000 ' + value) <= new Date('1/1/2000 ' + othervalue)) {\r\n isValid = false;\r\n }\r\n } else {\r\n isValid = false;\r\n }\r\n\r\n return isValid;\r\n });\r\n $.validator.unobtrusive.adapters.add(\"dategreaterthan\", [\"dependentproperty\"], function (options) {\r\n let displayName = null;\r\n\r\n if (options.element.labels && options.element.labels[0]) {\r\n displayName = options.element.labels[0].innerHTML;\r\n }\r\n\r\n displayName = displayName || options.element.name;\r\n\r\n let dependentDisplayName = null;\r\n const dependentProperty = $('#' + options.params.dependentproperty);\r\n\r\n if (dependentProperty && dependentProperty[0] && dependentProperty[0].labels && dependentProperty[0].labels[0]) {\r\n dependentDisplayName = dependentProperty[0].labels[0].innerHTML;\r\n }\r\n\r\n dependentDisplayName = dependentDisplayName || options.params.dependentproperty;\r\n\r\n options.rules['dategreaterthan'] = [displayName, dependentDisplayName, options.params];\r\n options.messages['dategreaterthan'] = options.message;\r\n });\r\n\r\n // File Form Extensions\r\n\r\n $.validator.addMethod('formfileextensions',\r\n function (value, element, parameters) {\r\n var isValid = true;\r\n const allowedTypes = parameters[1].split(',').map((item) => item.trim().toLowerCase());\r\n\r\n if (element.files === undefined ||\r\n element.files === null ||\r\n allowedTypes === undefined ||\r\n allowedTypes === null) {\r\n return true; // fallback to server validation\r\n }\r\n\r\n\r\n for (let i = 0; i < element.files.length; i++) {\r\n const fileName = element.files[i].name;\r\n const extension = fileName.substr(fileName.lastIndexOf('.')).toLowerCase();\r\n\r\n if ($.inArray(extension, allowedTypes) < 0) {\r\n isValid = false;\r\n }\r\n\r\n }\r\n\r\n return isValid;\r\n });\r\n $.validator.unobtrusive.adapters.add(\"formfileextensions\", [\"extensions\"], function (options) {\r\n let displayName = null;\r\n\r\n if (options.element.labels && options.element.labels[0]) {\r\n displayName = options.element.labels[0].innerHTML;\r\n }\r\n\r\n displayName = displayName || options.element.name;\r\n\r\n options.rules['formfileextensions'] = [displayName, options.params[\"extensions\"]];\r\n options.messages['formfileextensions'] = options.message;\r\n });\r\n\r\n $.validator.addMethod('formfilesize',\r\n function (value, element, parameters) {\r\n var isValid = true;\r\n const allowedSize = parameters[2];\r\n\r\n if (element.files === undefined ||\r\n element.files === null ||\r\n allowedSize === undefined ||\r\n allowedSize === null) {\r\n return true; // fallback to server validation\r\n }\r\n\r\n for (let i = 0; i < element.files.length; i++) {\r\n const fileSize = element.files[i].size;\r\n if (fileSize > allowedSize) {\r\n isValid = false;\r\n }\r\n }\r\n return isValid;\r\n });\r\n $.validator.unobtrusive.adapters.add(\"formfilesize\", [\"filesize\"], function (options) {\r\n let displayName = null;\r\n\r\n if (options.element.labels && options.element.labels[0]) {\r\n displayName = options.element.labels[0].innerHTML;\r\n }\r\n\r\n displayName = displayName || options.element.name;\r\n var fileSize = options.params[\"filesize\"];\r\n var displaySize = \"\";\r\n if (fileSize >= 1024 * 1024)\r\n displaySize = (fileSize / 1048576) + \" Mb\";\r\n else if (fileSize >= 1024)\r\n displaySize = (fileSize / 1024) + \" Kb\";\r\n else\r\n displaySize = fileSize + \" bytes\";\r\n\r\n options.rules['formfilesize'] = [displayName, displaySize, fileSize];\r\n options.messages['formfilesize'] = options.message;\r\n });\r\n\r\n $.validator.addMethod('comparevalue', function (value, element, parameters) {\r\n switch (parameters.comparison) {\r\n case 2:\r\n return value !== parameters.value;\r\n case 3:\r\n return value > parameters.value;\r\n case 4:\r\n return value < parameters.value;\r\n case 5:\r\n return value >= parameters.value;\r\n case 6:\r\n return value <= parameters.value;\r\n default:\r\n return value === parameters.value;\r\n }\r\n });\r\n\r\n $.validator.unobtrusive.adapters.add('comparevalue', ['comparison', 'value'], function (options) {\r\n let displayName = null;\r\n\r\n if (options.element.labels && options.element.labels[0]) {\r\n displayName = options.element.labels[0].innerHTML;\r\n }\r\n\r\n displayName = displayName || options.element.name;\r\n\r\n options.rules['comparevalue'] = {\r\n displayName,\r\n comparison: parseInt(options.params.comparison, 10),\r\n value: options.params.value\r\n };\r\n options.messages['comparevalue'] = options.message;\r\n });\r\n\r\n $.fn.clearValidation = function () {\r\n var validator = $(this).validate();\r\n $('[name]', this).each(function () {\r\n validator.successList.push(this);\r\n validator.showErrors();\r\n });\r\n validator.resetForm();\r\n validator.reset();\r\n };\r\n\r\n $(\".input-validation-error\").each(function (i, element) {\r\n const $element = $(element);\r\n if ($element.closest('.form-group').hasClass('has-error') == false) {\r\n $element.closest('.form-group').addClass('has-error');\r\n }\r\n if ($element.hasClass('js-form-detail-answer')) {\r\n if ($element.closest('.panel-heading').hasClass('has-error') == false) {\r\n $element.closest('.panel-heading').addClass('has-error');\r\n }\r\n }\r\n });\r\n})();"]}