function PaoValidation(a){return this instanceof PaoValidation?!!a.$addons.length&&(this.$form=a.$el,this.$addons=a.$addons,this.form=a,void(this.validationState=this.getInitialState())):new PaoValidation(a)}PaoValidation.prototype.getInitialState=function(){var a={};return jQuery.each(this.$addons,function(){a[jQuery(this).attr("id")]={validity:!0,message:""}}),a},PaoValidation.prototype.getValidationState=function(){return this.validationState},PaoValidation.prototype.validateAddon=function(a,t=!1){var i=a.data("restrictions"),e=a.attr("id"),o=!0;return this.validationState[e]||(this.validationState[e]={validity:!0,message:""}),a.closest(".wc-pao-addon-container").is(":visible")&&(jQuery.isEmptyObject(i)||((o=(o="required"in i&&"yes"===i.required?this.validateRequired(a):o)&&a.is(".wc-pao-addon-custom-price")?this.validateDecimals(a):o)&&"content"in i&&("only_letters"===i.content?o=this.validateLetters(a):"only_numbers"===i.content?o=this.validateNumbers(a):"only_letters_numbers"===i.content?o=this.validateLettersNumbers(a):"email"===i.content&&(o=this.validateEmail(a))),(o=o&&"min"in i?this.validateMin(a,i.min):o)&&"max"in i&&(o=this.validateMax(a,i.max))),t)&&this.printMessage(a),this.validationState[e].validity},PaoValidation.prototype.validate=function(a=!1){var t=!0,i=this;return jQuery.each(i.$addons,function(){i.validateAddon(jQuery(this),a)||(t=!1)}),t},PaoValidation.prototype.printMessage=function(a){var t,a=a.attr("id"),i=this.$form.find("#"+a),e=a+"-validation-notice",o=this.validationState[a].message;i.is(":radio")||i.is(":checkbox")?((t=i.closest(".wc-pao-addon-container .wc-pao-addon-wrap")).find(".wc-pao-validation-notice").remove(),this.validationState[a].validity||t.append(''+o+"")):(i.closest(".wc-pao-addon-container").find(".wc-pao-validation-notice").remove(),this.validationState[a].validity||i.after(''+o.replace(//g,">")+""))},PaoValidation.prototype.validateRequired=function(a){var t=!0,i="",e="",o=a.attr("id");if(a.is(":checkbox")||a.is(":radio")){var n,r=(n=a.closest(".wc-pao-addon-container")).find(".wc-pao-addon-field"),d=this,t=!1;if(jQuery.each(r,function(){jQuery(this).is(":checked")&&(t=!0)}),t)return void jQuery.each(r,function(){var a=jQuery(this).attr("id");d.validationState[a]={validity:t,message:i,reason:e}});i=woocommerce_addons_params.i18n_validation_required_select}else a.hasClass("wc-pao-addon-image-swatch-select")?(n=a.closest(".wc-pao-addon-container"),t=!1,jQuery.each(n.find(".wc-pao-addon-image-swatch"),function(){jQuery(this).hasClass("selected")&&(t=!0)}),t||(i=woocommerce_addons_params.i18n_validation_required_select)):a.val()||(t=!1,"file"===a.attr("type")?void 0!==a.data("value")&&""!==a.data("value")?t=!0:i=woocommerce_addons_params.i18n_validation_required_file:"number"===a.attr("type")||a.is(".wc-pao-addon-custom-price")?i=woocommerce_addons_params.i18n_validation_required_number:a.is("input")||a.is("textarea")?i=woocommerce_addons_params.i18n_validation_required_input:a.is("select")&&(i=woocommerce_addons_params.i18n_validation_required_select));return t||(e="required"),this.validationState[o]={validity:t,message:i,reason:e},this.validationState[o].validity},PaoValidation.prototype.validateLetters=function(a){var t=!/[`!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~\d]/g.test(a.val()),i="",e="",o=a.attr("id");return(t=a.val()?t:!0)||(i=woocommerce_addons_params.i18n_validation_letters_only,e="letters"),this.validationState[o]={validity:t,message:i,reason:e},this.validationState[o].validity},PaoValidation.prototype.validateNumbers=function(a){var t=/^[0-9]*$/g.test(a.val()),i="",e="",o=a.attr("id");return(t=a.val()?t:!0)||(i=woocommerce_addons_params.i18n_validation_numbers_only,e="numbers"),this.validationState[o]={validity:t,message:i,reason:e},this.validationState[o].validity},PaoValidation.prototype.validateLettersNumbers=function(a){var t=!/[`!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~]/g.test(a.val()),i="",e="",o=a.attr("id");return(t=a.val()?t:!0)||(i=woocommerce_addons_params.i18n_validation_letters_and_numbers_only,e="letters_numbers"),this.validationState[o]={validity:t,message:i,reason:e},this.validationState[o].validity},PaoValidation.prototype.validateEmail=function(a){var t=/^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(a.val()),i="",e="",o=a.attr("id");return(t=a.val()?t:!0)||(i=woocommerce_addons_params.i18n_validation_email_only,e="email"),this.validationState[o]={validity:t,message:i,reason:e},this.validationState[o].validity},PaoValidation.prototype.validateDecimals=function(a){var t=!0,i="",e="",o=a.attr("id"),n=a.val(),r=new RegExp(`^-?\\d+(?:\\${woocommerce_addons_params.currency_format_decimal_sep}\\d+)?$`);return a.val()?r.test(n)||(t=!1,i=woocommerce_addons_params.i18n_validation_decimal_separator.replace("%c",woocommerce_addons_params.currency_format_decimal_sep),e="decimals"):t=!0,this.validationState[o]={validity:t,message:i,reason:e},this.validationState[o].validity},PaoValidation.prototype.validateMin=function(a,t){var i,e=!0,o="",n="",r=a.attr("id");return a.val()?"number"===a.attr("type")||a.is(".wc-pao-addon-custom-price")?(i=(i=a.val()).includes(".")?parseFloat(i):i.includes(woocommerce_addons_params.currency_format_decimal_sep)?parseFloat(i.replace(woocommerce_addons_params.currency_format_decimal_sep,".")):parseInt(i))t&&(o=!1,n=woocommerce_addons_params.i18n_validation_max_characters.replace("%c",t)):o=!0,this.validationState[r]={validity:o,message:n,reason:i=o?i:"max"},this.validationState[r].validity};