/*! ATOGOVAU 2025-03-15 21:01:11, Copyright (c) 2025 Australian Taxation Office */ !function(a){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?a(require("knockout"),exports):"function"==typeof define&&define.amd?define(["knockout","exports"],a):a(ko,ko.validation={})}(function(a,b){function c(a,c,d){return c.validator(a(),void 0===d.params?!0:d.params)?!0:(a.error=b.formatMessage(d.message||c.message,d.params),a.__valid__(!1),!1)}function d(a,c,d){a.isValidating(!0);var e=function(e){var f=!1,g="";return a.__valid__()?(e.message?(f=e.isValid,g=e.message):f=e,f||(a.error=b.formatMessage(g||d.message||c.message,d.params),a.__valid__(f)),void a.isValidating(!1)):void a.isValidating(!1)};c.validator(a(),d.params||!0,e)}if(void 0===typeof a)throw"Knockout is required, please ensure it is loaded before loading this validation plug-in";var e=b;a.validation=e;var f={registerExtenders:!0,messagesOnModified:!0,errorsAsTitleOnModified:!1,messageTemplate:null,insertMessages:!0,parseInputAttributes:!1,writeInputAttributes:!1,decorateElement:!1,errorClass:null,errorElementClass:"validationElement",errorMessageClass:"validationMessage",grouping:{deep:!1,observable:!0}},g=a.utils.extend({},f),h=["required","pattern","min","max","step"],i=function(a){window.setImmediate?window.setImmediate(a):window.setTimeout(a,0)},j=function(){var a=(new Date).getTime(),b={},c="__ko_validation__";return{isArray:function(a){return a.isArray||"[object Array]"===Object.prototype.toString.call(a)},isObject:function(a){return null!==a&&"object"==typeof a},values:function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(a[c]);return b},getValue:function(a){return"function"==typeof a?a():a},hasAttribute:function(a,b){return null!==a.getAttribute(b)},isValidatable:function(a){return a&&a.rules&&a.isValid&&a.isModified},insertAfter:function(a,b){a.parentNode.insertBefore(b,a.nextSibling)},newId:function(){return a+=1},getConfigOptions:function(a){var b=j.contextFor(a);return b||g},setDomData:function(a,d){var e=a[c];e||(a[c]=e=j.newId()),b[e]=d},getDomData:function(a){var d=a[c];return d?b[d]:void 0},contextFor:function(a){switch(a.nodeType){case 1:case 8:var b=j.getDomData(a);if(b)return b;if(a.parentNode)return j.contextFor(a.parentNode)}return void 0},isEmptyVal:function(a){return void 0===a?!0:null===a?!0:""===a?!0:void 0}}}(),k=function(){var c=0;return{utils:j,init:function(d,e){c>0&&!e||(d=d||{},d.errorElementClass=d.errorElementClass||d.errorClass||g.errorElementClass,d.errorMessageClass=d.errorMessageClass||d.errorClass||g.errorMessageClass,a.utils.extend(g,d),g.registerExtenders&&b.registerExtenders(),c=1)},configure:function(a){b.init(a)},reset:function(){g=$.extend(g,f)},group:function(b,c){var c=a.utils.extend(g.grouping,c),d=a.observableArray([]),e=null,f=function h(b,e){var f=[],g=a.utils.unwrapObservable(b);e=void 0!==e?e:c.deep?1:-1,a.isObservable(b)&&(b.isValid||b.extend({validatable:!0}),d.push(b)),g&&(j.isArray(g)?f=g:j.isObject(g)&&(f=j.values(g))),0!==e&&a.utils.arrayForEach(f,function(a){a&&!a.nodeType&&h(a,e+1)})};return c.observable?(f(b),e=a.computed(function(){var b=[];return a.utils.arrayForEach(d(),function(a){a.isValid()||b.push(a.error)}),b})):e=function(){var c=[];return d([]),f(b),a.utils.arrayForEach(d(),function(a){a.isValid()||c.push(a.error)}),c},e.showAllMessages=function(b){void 0==b&&(b=!0),e(),a.utils.arrayForEach(d(),function(a){a.isModified(b)})},b.errors=e,b.isValid=function(){return 0===b.errors().length},b.isAnyMessageShown=function(){var b=!1;return e(),a.utils.arrayForEach(d(),function(a){!a.isValid()&&a.isModified()&&(b=!0)}),b},e},formatMessage:function(a,b){return"function"==typeof a?a(b):a.replace(/\{0\}/gi,b)},addRule:function(a,b){return a.extend({validatable:!0}),a.rules.push(b),a},addAnonymousRule:function(a,c){var d=j.newId();void 0===c.message&&(c.message="Error"),b.rules[d]=c,b.addRule(a,{rule:d,params:c.params})},addExtender:function(c){a.extenders[c]=function(a,d){return d.message||d.onlyIf?b.addRule(a,{rule:c,message:d.message,params:j.isEmptyVal(d.params)?!0:d.params,condition:d.onlyIf}):b.addRule(a,{rule:c,params:d})}},registerExtenders:function(){if(g.registerExtenders)for(var c in b.rules)b.rules.hasOwnProperty(c)&&(a.extenders[c]||b.addExtender(c))},insertValidationMessage:function(a){var b=document.createElement("SPAN");return b.className=j.getConfigOptions(a).errorMessageClass,j.insertAfter(a,b),b},parseInputValidationAttributes:function(c,d){a.utils.arrayForEach(h,function(a){j.hasAttribute(c,a)&&b.addRule(d(),{rule:a,params:c.getAttribute(a)||!0})})},writeInputValidationAttributes:function(b,c){var d=c();if(d&&d.rules){var e=d.rules();a.utils.arrayForEach(h,function(c){var d,f=a.utils.arrayFirst(e,function(a){return a.rule.toLowerCase()===c.toLowerCase()});f&&(d=f.params,"pattern"==f.rule&&f.params instanceof RegExp&&(d=f.params.source),b.setAttribute(c,d))}),e=null}}}}();a.utils.extend(e,k),e.rules={},e.rules.required={validator:function(a,b){var c,d=/^\s+|\s+$/g;return void 0===a||null===a?!b:(c=a,"string"==typeof a&&(c=a.replace(d,"")),b?(c+"").length>0:!0)},message:"This field is required."},e.rules.min={validator:function(a,b){return j.isEmptyVal(a)||a>=b},message:"Please enter a value greater than or equal to {0}."},e.rules.max={validator:function(a,b){return j.isEmptyVal(a)||b>=a},message:"Please enter a value less than or equal to {0}."},e.rules.minLength={validator:function(a,b){return j.isEmptyVal(a)||a.length>=b},message:"Please enter at least {0} characters."},e.rules.maxLength={validator:function(a,b){return j.isEmptyVal(a)||a.length<=b},message:"Please enter no more than {0} characters."},e.rules.pattern={validator:function(a,b){return j.isEmptyVal(a)||null!=a.toString().match(b)},message:"Please check this value."},e.rules.step={validator:function(a,b){return j.isEmptyVal(a)||100*a%(100*b)===0},message:"The value must increment by {0}"},e.rules.email={validator:function(a,b){return b?j.isEmptyVal(a)||b&&/^((([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.test(a):!0},message:"Please enter a proper email address"},e.rules.date={validator:function(a,b){return b?j.isEmptyVal(a)||b&&!/Invalid|NaN/.test(new Date(a)):!0},message:"Please enter a proper date"},e.rules.dateISO={validator:function(a,b){return b?j.isEmptyVal(a)||b&&/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(a):!0},message:"Please enter a proper date"},e.rules.number={validator:function(a,b){return b?j.isEmptyVal(a)||b&&/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(a):!0},message:"Please enter a number"},e.rules.digit={validator:function(a,b){return b?j.isEmptyVal(a)||b&&/^\d+$/.test(a):!0},message:"Please enter a digit"},e.rules.phoneUS={validator:function(a,b){return b?"string"!=typeof a?!1:j.isEmptyVal(a)?!0:(a=a.replace(/\s+/g,""),b&&a.length>9&&a.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/)):!0},message:"Please specify a valid phone number"},e.rules.equal={validator:function(a,b){var c=b;return a===j.getValue(c)},message:"Values must equal"},e.rules.notEqual={validator:function(a,b){var c=b;return a!==j.getValue(c)},message:"Please choose another value."},e.rules.unique={validator:function(b,c){var d=j.getValue(c.collection),e=j.getValue(c.externalValue),f=0;return b&&d?(a.utils.arrayFilter(a.utils.unwrapObservable(d),function(a){b===(c.valueAccessor?c.valueAccessor(a):a)&&f++}),(void 0!==e&&b!==e?1:2)>f):!0},message:"Please make sure the value is unique."},function(){e.registerExtenders()}(),a.bindingHandlers.validationCore=function(){return{init:function(c,d){var e=j.getConfigOptions(c);if(e.parseInputAttributes&&i(function(){b.parseInputValidationAttributes(c,d)}),e.insertMessages&&j.isValidatable(d())){var f=b.insertValidationMessage(c);e.messageTemplate?a.renderTemplate(e.messageTemplate,{field:d()},null,f,"replaceNode"):a.applyBindingsToNode(f,{validationMessage:d()})}e.writeInputAttributes&&j.isValidatable(d())&&b.writeInputValidationAttributes(c,d),e.decorateElement&&j.isValidatable(d())&&a.applyBindingsToNode(c,{validationElement:d()})},update:function(){}}}(),function(){var b=a.bindingHandlers.value.init;a.bindingHandlers.value.init=function(c,d,e,f,g){return b(c,d,e),a.bindingHandlers.validationCore.init(c,d,e,f,g)}}(),a.bindingHandlers.validationMessage={update:function(b,c){var d=c(),e=j.getConfigOptions(b),f=(a.utils.unwrapObservable(d),!1),g=!1;d.extend({validatable:!0}),f=d.isModified(),g=d.isValid();var h=function(){return!e.messagesOnModified||f?g?null:d.error:null},i=function(){return!e.messagesOnModified||f?!g:!1};a.bindingHandlers.text.update(b,h),a.bindingHandlers.visible.update(b,i)}},a.bindingHandlers.validationElement={update:function(b,c){var d=c(),e=j.getConfigOptions(b),f=(a.utils.unwrapObservable(d),!1),g=!1;d.extend({validatable:!0}),f=d.isModified(),g=d.isValid();var h=function(){var a={},b=f?!g:!1;return e.decorateElement||(b=!1),a[e.errorElementClass]=b,a};a.bindingHandlers.css.update(b,h);var i=b.getAttribute("data-orig-title"),k=b.title,l=("true"==b.getAttribute("data-orig-title"),function(){return!e.errorsAsTitleOnModified||f?g?{title:i||k,"data-orig-title":null}:{title:d.error,"data-orig-title":i||k}:void 0});a.bindingHandlers.attr.update(b,l)}},a.bindingHandlers.validationOptions=function(){return{init:function(b,c){var d=a.utils.unwrapObservable(c());if(d){var e=a.utils.extend({},g);a.utils.extend(e,d),j.setDomData(b,e)}}}}(),a.extenders.validation=function(c,d){return a.utils.arrayForEach(j.isArray(d)?d:[d],function(a){b.addAnonymousRule(c,a)}),c},a.extenders.validatable=function(c,d){if(d&&!j.isValidatable(c)){c.error=null,c.rules=a.observableArray(),c.isValidating=a.observable(!1),c.__valid__=a.observable(!0),c.isModified=a.observable(!1);var e=a.computed(function(){c(),c.rules();return b.validateObservable(c),!0});c.isValid=a.computed(function(){return c.__valid__()});var f=c.subscribe(function(){c.isModified(!0)});c._disposeValidation=function(){c.isValid.dispose(),c.rules.removeAll(),c.isModified._subscriptions.change=[],c.isValidating._subscriptions.change=[],c.__valid__._subscriptions.change=[],f.dispose(),e.dispose(),delete c.rules,delete c.error,delete c.isValid,delete c.isValidating,delete c.__valid__,delete c.isModified}}else d===!1&&j.isValidatable(c)&&c._disposeValidation&&c._disposeValidation();return c},e.validateObservable=function(a){for(var e,f,g=0,h=a.rules(),i=h.length;i>g;g++)if(f=h[g],!f.condition||f.condition())if(e=b.rules[f.rule],e.async||f.async)d(a,e,f);else if(!c(a,e,f))return!1;return a.error=null,a.__valid__(!0),!0},a.validatedObservable=function(c){if(!b.utils.isObject(c))return a.observable(c).extend({validatable:!0});var d=a.observable(c);return d.errors=b.group(c),d.isValid=a.computed(function(){return 0===d.errors().length}),d},e.localize=function(a){var c;for(c in a)b.rules.hasOwnProperty(c)&&(b.rules[c].message=a[c])},a.applyBindingsWithValidation=function(c,d,e){var f,g,h=arguments.length;h>2?(f=d,g=e):2>h?f=document.body:arguments[1].nodeType?f=d:g=arguments[1],b.init(),g&&b.utils.setDomData(f,g),a.applyBindings(c,d)};var l=a.applyBindings;a.applyBindings=function(a,c){b.init(),l(a,c)}}); //# sourceMappingURL=knockout.validation-1.0.2.min.js.map