class strongValidation{constructor(e){this.form=jQuery(e).find("form"),this.formID=this.form.data("formid"),this.defaults={ajaxUrl:"",display:{successMessage:!1},scroll:{onError:!0,onErrorOffset:100,onSuccess:!0,onSuccessOffset:100},fields:{}},this.settings={},this.rules={},this.init()}setOpts(e){this.settings=jQuery.extend({},this.defaults,e)}setRules(){for(var e=0;e=48&&e.keyCode<=53){var s=e.keyCode-48;jQuery(this).find('input[type="radio"][value='+s+"]").trigger("click")}}customValidators(){jQuery.validator.addMethod("ratingRequired",(function(e,s){return jQuery(s).find("input:checked").val()>0}),jQuery.validator.messages.required)}validateForm(){var e=this;this.form.validate({onfocusout:!1,focusInvalid:!1,invalidHandler:function(s,t){if(t.numberOfInvalids())if(e.settings.scroll.onError){if(void 0!==t.errorList[0]){var i=jQuery(t.errorList[0].element),r=i.closest(".form-field").offset().top-e.settings.scroll.onErrorOffset;jQuery("html, body").animate({scrollTop:r},800,(function(){i.focus()}))}}else t.errorList[0].element.focus()},submitHandler:function(){if(e.disableForm(),""!==e.settings.ajaxUrl){window.onbeforeunload=function(){return"Please wait while the form is submitted."};var s={url:e.settings.ajaxUrl,data:{action:"wpmtst_form2"},success:function(s){e.showResponse(s)}};e.form.ajaxSubmit(s)}else e.form.get(0).submit()},rules:this.rules,errorPlacement:function(e,s){e.appendTo(s.closest("div.form-field"))},highlight:function(e,s,t){"checkbox"===e.type||"rating"===jQuery(e).data("fieldType")?jQuery(e).closest(".field-wrap").addClass(s).removeClass(t):jQuery(e).addClass(s).removeClass(t)},unhighlight:function(e,s,t){"checkbox"===e.type||"rating"===jQuery(e).data("fieldType")?jQuery(e).closest(".field-wrap").removeClass(s).addClass(t):jQuery(e).removeClass(s).addClass(t)}})}showResponse(e){window.onbeforeunload=null,this.enableForm();var s=JSON.parse(e);if(s.success)this.form.parent().html(s.message),this.scrollOnSuccess();else for(var t in s.errors)s.errors.hasOwnProperty(t)&&this.form.children(".field-"+t).find("span.error").remove().end().append(''+s.errors[t]+"")}scrollOnSuccess(){var e,s;this.settings.scroll.onSuccess&&((e=jQuery(".wpmtst-form-id-"+this.formID).find(".wpmtst-testimonial-success").offset())&&(s=e.top-this.settings.scroll.onSuccessOffset,jQuery("#wpadminbar").length&&(s-=32),jQuery("html, body").animate({scrollTop:s},800)))}}