class CheckoutTicketPageController{constructor(e){this.siteId=e.site_id,this.errorMessages=e.error_messages,this.initElements(),this.addEventListeners()}initElements(){this.checkboxUseShippingData=document.getElementById("form-checkout__address_checkbox"),this.addressElements={state:document.getElementById("form-checkout__address_federal_unit"),city:document.getElementById("form-checkout__address_city"),zipCode:document.getElementById("form-checkout__address_zip_code"),streetName:document.getElementById("form-checkout__address_street_name"),number:document.getElementById("form-checkout__address_street_number"),numberDiv:document.getElementsByClassName("mp-checkout-ticket-billing-input-number")[0],neighborhood:document.getElementById("form-checkout__address_neighborhood"),numberToggle:document.getElementById("form-checkout__address_number_toggle"),complement:document.getElementById("form-checkout__address_complement")},this.errorContainers={zipCode:document.getElementById("form-checkout__address_zip_code_error"),state:document.getElementById("form-checkout__address_federal_unit_error"),city:document.getElementById("form-checkout__address_city_error"),neighborhood:document.getElementById("form-checkout__address_neighborhood_error"),streetName:document.getElementById("form-checkout__address_street_name_error"),streetNumber:document.getElementById("form-checkout__address_street_number_error")}}addEventListeners(){this.checkboxUseShippingData?.addEventListener("input",this.fillTicketAddressFieldsFromWoocommerce.bind(this)),this.addressElements?.zipCode?.addEventListener("input",this.handleZipCodeInput.bind(this)),this.addressElements?.zipCode?.addEventListener("focusout",this.validateZipCodeError.bind(this)),this.addressElements?.state?.addEventListener("input",this.handleStateInput.bind(this)),this.addressElements?.state?.addEventListener("focusout",this.validateStateError.bind(this)),this.addressElements?.city?.addEventListener("input",this.handleCityInput.bind(this)),this.addressElements?.city?.addEventListener("focusout",this.validateCityError.bind(this)),this.addressElements?.neighborhood?.addEventListener("input",this.handleNeighborhoodInput.bind(this)),this.addressElements?.neighborhood?.addEventListener("focusout",this.validateNeighborhoodError.bind(this)),this.addressElements?.streetName?.addEventListener("input",this.handleStreetNameInput.bind(this)),this.addressElements?.streetName?.addEventListener("focusout",this.validateStreetNameError.bind(this)),this.addressElements?.number?.addEventListener("input",this.handleStreetNumberInput.bind(this)),this.addressElements?.number?.addEventListener("focus",this.handleStreetNumberFocus.bind(this)),this.addressElements?.number?.addEventListener("focusout",this.validateStreetNumberError.bind(this)),this.addressElements?.numberToggle?.addEventListener("click",this.handleNumberToggle.bind(this)),this.addressElements?.complement?.addEventListener("input",this.removeCheckedFromShippingDataCheckbox.bind(this)),this.handleSubmitEvents(),this.listenToRemoveErrorFromPaymentMethod()}fillTicketAddressFieldsFromWoocommerce(){if(!this.checkboxUseShippingData.checked)return void Object.values(this.addressElements).forEach((e=>e.value=""));const e=e=>{for(const t of e){const e=document.getElementById(t);if(e&&e.value)return e.value}return""};this.addressElements.city.value=e(["billing-city","billing_city","shipping-city","shipping_city"]),this.addressElements.zipCode.value=this.validateZipCodeMask(e(["billing-postcode","billing_postcode","shipping-postcode","shipping_postcode"])),this.addressElements.streetName.value=e(["billing-address_1","billing_address_1","shipping-address_1","shipping_address_1"]),this.addressElements.complement.value=e(["billing-address_2","billing_address_2","shipping-address_2","shipping_address_2"]);const t=e(["billing-state","billing_state","shipping-state","shipping_state"]),s=e(["components-form-token-input-1","select2-billing_state-container"]);if(t)this.addressElements.state.value=t;else if(s){const e=Array.from(this.addressElements.state.options).find((e=>e.textContent.includes(s))).value;this.addressElements.state.value=e}this.addressFieldsFromTicketRowAreValid(),this.validateDocument()}removeCheckedFromShippingDataCheckbox(){this.checkboxUseShippingData.checked&&(this.checkboxUseShippingData.checked=!1)}validateDocument(){let e=document.querySelector(".mp-checkout-ticket-container");""===e.querySelector(".mp-document")?.value&&(e.querySelector(".mp-input").classList.add("mp-error"),e.querySelector("input-document").querySelector("input-helper").querySelector(".mp-helper").style.display="flex")}validateZipCodeMask(e){return e.replace(/\D/g,"").replace(/(\d{5})(\d)/,"$1-$2")}handleZipCodeInput(){this.removeCheckedFromShippingDataCheckbox(),this.addressElements.zipCode.value=this.validateZipCodeMask(this.addressElements.zipCode.value),this.validateZipCodeError(!1)}validateZipCodeError(e=!0){const t=this.addressElements.zipCode.value.replace("-","");return t?0===parseInt(t,10)?(e&&this.showError(this.addressElements.zipCode,this.errorContainers.zipCode,this.errorMessages.postalcode_error_invalid),!1):t.length<8?(e&&this.showError(this.addressElements.zipCode,this.errorContainers.zipCode,this.errorMessages.postalcode_error_partial),!1):(this.clearError(this.addressElements.zipCode,this.errorContainers.zipCode),!0):(e&&this.showError(this.addressElements.zipCode,this.errorContainers.zipCode,this.errorMessages.postalcode_error_empty),!1)}handleStateInput(){this.removeCheckedFromShippingDataCheckbox(),this.validateStateError(!1)}validateStateError(e=!0){return this.addressElements.state.value?(this.clearError(this.addressElements.state,this.errorContainers.state),!0):(e&&this.showError(this.addressElements.state,this.errorContainers.state,this.errorMessages.state_error_unselected),!1)}handleCityInput(){this.removeCheckedFromShippingDataCheckbox(),this.validateCityError(!1)}validateCityError(e=!0){return this.addressElements.city.value?this.addressElements.city.value.length<3?(e&&this.showError(this.addressElements.city,this.errorContainers.city,this.errorMessages.city_error_invalid),!1):(this.clearError(this.addressElements.city,this.errorContainers.city),!0):(e&&this.showError(this.addressElements.city,this.errorContainers.city,this.errorMessages.city_error_empty),!1)}handleNeighborhoodInput(){this.validateNeighborhoodError(!1)}validateNeighborhoodError(e=!0){return this.addressElements.neighborhood.value?this.addressElements.neighborhood.value.length<2?(e&&this.showError(this.addressElements.neighborhood,this.errorContainers.neighborhood,this.errorMessages.neighborhood_error_invalid),!1):(this.clearError(this.addressElements.neighborhood,this.errorContainers.neighborhood),!0):(e&&this.showError(this.addressElements.neighborhood,this.errorContainers.neighborhood,this.errorMessages.neighborhood_error_empty),!1)}handleStreetNameInput(){this.removeCheckedFromShippingDataCheckbox(),this.validateStreetNameError(!1)}validateStreetNameError(e=!0){return this.addressElements.streetName.value?this.addressElements.streetName.value.length<3?(e&&this.showError(this.addressElements.streetName,this.errorContainers.streetName,this.errorMessages.address_error_invalid),!1):(this.clearError(this.addressElements.streetName,this.errorContainers.streetName),!0):(e&&this.showError(this.addressElements.streetName,this.errorContainers.streetName,this.errorMessages.address_error_empty),!1)}handleStreetNumberInput(){this.validateStreetNumberError(!1)&&(this.clearError(this.addressElements.numberDiv,this.errorContainers.streetNumber,!1),this.addressElements.numberDiv.classList.add("mp-checkout-ticket-billing-input-number-focused"))}validateStreetNumberError(e=!0){return e&&this.addressElements.numberDiv.classList.contains("mp-checkout-ticket-billing-input-number-focused-error-on-focus")&&this.addressElements.numberDiv.classList.remove("mp-checkout-ticket-billing-input-number-focused-error-on-focus"),this.addressElements.numberToggle.checked?(this.clearError(this.addressElements.numberDiv,this.errorContainers.streetNumber,!1),!0):this.addressElements.number.value?0===parseInt(this.addressElements.number.value,10)?(e&&this.showError(this.addressElements.numberDiv,this.errorContainers.streetNumber,this.errorMessages.number_error_invalid),!1):(e&&this.clearError(this.addressElements.numberDiv,this.errorContainers.streetNumber,!1),e&&this.toggleFocusedClass(this.addressElements.numberDiv,!1),!0):(e&&this.showError(this.addressElements.numberDiv,this.errorContainers.streetNumber,this.errorMessages.number_error_empty),!1)}handleStreetNumberFocus(){this.toggleFocusedClass(this.addressElements.numberDiv,!0)}handleNumberToggle(){this.addressElements.number.disabled=this.addressElements.numberToggle.checked,this.addressElements.number.disabled?(this.addressElements.number.value="",this.addressElements.numberDiv.classList.remove("mp-checkout-andes-input"),this.addressElements.numberDiv.classList.add("mp-checkout-ticket-billing-input-number-disabled"),this.toggleFocusedClass(this.addressElements.numberDiv,!1),this.clearError(this.addressElements.numberDiv,this.errorContainers.streetNumber,!1)):(this.addressElements.numberDiv.classList.remove("mp-checkout-ticket-billing-input-number-disabled"),this.addressElements.numberDiv.classList.add("mp-checkout-andes-input"))}toggleFocusedClass(e,t){t?e.classList.contains("mp-checkout-ticket-billing-input-number-focused-error")?e.classList.add("mp-checkout-ticket-billing-input-number-focused-error-on-focus"):e.classList.contains("mp-checkout-andes-input-error")?e.classList.add("mp-checkout-ticket-billing-input-number-focused-error"):e.classList.add("mp-checkout-ticket-billing-input-number-focused"):e.classList.remove("mp-checkout-ticket-billing-input-number-focused")}showError(e,t,s){e.classList.remove("mp-checkout-andes-input"),e.classList.add("mp-checkout-andes-input-error");const r=t.querySelector(".mp-helper-message");r&&(r.textContent=s),t.style.display="flex"}clearError(e,t,s=!0){s&&e.classList.add("mp-checkout-andes-input"),e.classList.remove("mp-checkout-andes-input-error"),e.classList.remove("mp-checkout-ticket-billing-input-number-focused"),e.classList.remove("mp-checkout-ticket-billing-input-number-focused-error"),e.classList.remove("mp-checkout-ticket-billing-input-number-focused-error-on-focus"),t.style.display="none"}handleSubmitEvents(){jQuery("form.checkout").on("checkout_place_order_woo-mercado-pago-ticket",(()=>this.shouldSubmitTicketForm())),jQuery("form#order_review").submit((()=>this.shouldSubmitTicketForm()))}shouldSubmitTicketForm(){if(!document.getElementById("payment_method_woo-mercado-pago-ticket")?.checked)return!0;"MLB"!==this.siteId&&"MLU"!==this.siteId||this.validateDocument(),this.verifyPaymentMethods();const e="MLB"===this.siteId&&!this.addressFieldsFromTicketRowAreValid(),t=this.checkForErrors()||e;return t&&this.removeBlockOverlay(),!t}checkForErrors(){let e=!1;return document.querySelectorAll("input-helper").forEach((t=>{"none"!==t.querySelector("div").style.display&&(e=!0)})),e}verifyPaymentMethods(){let e=!1;document.querySelector(".mp-checkout-ticket-container").querySelectorAll(".mp-input-radio-radio").forEach((t=>{t.checked&&(e=!0)})),!1===e&&(CheckoutTicketPage.setDisplayOfError("fcInputTableContainer","add","mp-error","ticketContent"),CheckoutTicketPage.setDisplayOfInputHelper("mp-payment-method","flex","ticketContent"))}listenToRemoveErrorFromPaymentMethod(){let e=document.querySelector(CheckoutTicketElements.ticketContent);e?.querySelectorAll(".mp-input-table-label")?.forEach((e=>{e.addEventListener("click",(()=>{CheckoutTicketPage.setDisplayOfError("fcInputTableContainer","remove","mp-error","ticketContent"),CheckoutTicketPage.setDisplayOfInputHelper("mp-payment-method","none","ticketContent")}))}))}removeBlockOverlay(){document.querySelector("form#order_review")&&(document.querySelector(".blockOverlay").style.display="none")}addressFieldsFromTicketRowAreValid(){return[this.validateZipCodeError(),this.validateStateError(),this.validateCityError(),this.validateNeighborhoodError(),this.validateStreetNameError(),this.validateStreetNumberError()].every(Boolean)}}document.addEventListener("DOMContentLoaded",(function(){const e=setInterval((function(){if(!(document.getElementById("payment_method_woo-mercado-pago-ticket")??document.getElementById("radio-control-wc-payment-method-options-woo-mercado-pago-ticket")??document.querySelectorAll("input[value=woo-mercado-pago-ticket]")[0]))return void clearInterval(e);const t=new CheckoutTicketPageController(wc_mercadopago_ticket_checkout_params);window.addressFieldsFromTicketRowAreValid=t.addressFieldsFromTicketRowAreValid.bind(t)}),1e3)}));