const ConfiguratorTxt={selectOption:"Choose at least 1 option",minString:"Min. number of characters ",maxString:"Max. number of characters ",minDigit:"Minimum value ",maxDigit:"Maximum value "};Configurator=function(e){const t=this;this.params=e||{},this.vars={dependencies:"object"==typeof configuratorDependencies&&configuratorDependencies},this.customDelay={set:function(e,t){this.del(),this.timeoutID=window.setTimeout((()=>{t&&t()}),e)},del:function(){"number"==typeof this.timeoutID?window.clearTimeout(this.timeoutID):delete this.timeoutID}},this.generateInputText=e=>{const t=e.getAttribute("type"),o=e.getAttribute("data-min"),r=e.getAttribute("data-max"),c=e.value;let n="";if("number"===t){if(o&&parseFloat(c,10)<parseFloat(o)||r&&parseFloat(c)>parseFloat(r))return o||r}else if(o&&c.length<o||r&&c.length>r){for(let e=0;e<o;e++)n+="a";return n}return c},this.fetchPrice=async()=>{document.getElementById("projector_prices_wrapper").classList.add("load-content");const e=new URLSearchParams(new FormData(document.getElementById("projector_form")));let o=[];const r=[...e.keys()].reduce(((t,r,c,n)=>(n.indexOf(r)!==c&&t.indexOf(r)<0&&(t=[...t,r],o=[...o,e.getAll(r)]),t)),[]);r.length&&r.forEach(((t,r)=>{e.delete(t),o[r].forEach(((o,r)=>{e.set(`${t}[${r}]`,o)}))}));const c=document.querySelectorAll(".configurator__item[data-limits]:not(.--hide) input");c.length&&c.forEach((o=>{e.set(o.getAttribute("name"),t.generateInputText(o,e.get(o.getAttribute("name"))))})),[...e.keys()].find((e=>"number"===e))||e.set("number",document.getElementById("projector_number").value),[...e.keys()].find((e=>"size"===e))||e.set("size",document.getElementById("projector_size_hidden").value),[...e.keys()].find((e=>"product"===e))||e.set("product",document.getElementById("projector_product_hidden").value);try{const t=await fetch("/ajax/calculatePrice.php",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"},body:e}),o=await t.json();return document.getElementById("projector_prices_wrapper").classList.remove("load-content"),o}catch(e){return document.getElementById("projector_prices_wrapper").classList.remove("load-content"),!1}},this.setPrice=async e=>{e&&document.getElementById("projector_prices_wrapper").classList.add("load-content"),this.customDelay.set(500,(async()=>{const e=await this.fetchPrice();e&&(e.priceformula_calculation_error&&e.priceformula_calculation_error_msg?document.getElementById("projector_prices_wrapper").classList.add("load-content"):document.getElementById("projector_price_value").innerHTML=document.getElementById("projector_configurator").hasAttribute("data-netto")?e.worth_net_formatted:e.worth_formatted,this.setPriceCallback&&this.setPriceCallback(e))}))},this.toggleDependencies=(e,t,o)=>{if(this.vars.dependencies&&this.vars.dependencies[e]&&this.vars.dependencies[e][t]){const r=document.querySelector(`.configurator__item[data-name="${e}"]`),c=r.querySelectorAll('input[type="checkbox"]:checked');let n=!0;"checkbox"!==r.getAttribute("data-type")||c.length||(n=!1),Object.keys(this.vars.dependencies[e][t]).forEach((r=>{let a;c.length?(a=!!Array.isArray(this.vars.dependencies[e][t][r])&&[],c.forEach((o=>{Array.isArray(this.vars.dependencies[e][t][r])?a.push(...this.vars.dependencies[e][o.value][r]):!0===this.vars.dependencies[e][o.value][r]&&(a=!0)}))):a=this.vars.dependencies[e][t][r];const i=document.querySelector(`.configurator__item[data-name="${r}"]`);i&&(i.classList.contains("--dependencies")||i.classList.add("--dependencies"),(a.length||!0===a)&&n?(i.classList.contains("--hide")&&i.classList.remove("--hide"),"select"===i.getAttribute("data-type")?i.querySelectorAll("option, .f-dropdown-li").forEach((e=>{e.classList.remove("--show"),e.classList.remove("--last")})):i.querySelectorAll(".f-group").forEach((e=>{e.classList.remove("--show")})),i.querySelectorAll("option, input").forEach((e=>{e.disabled=!1})),a.length&&(a.forEach(((e,t)=>{const r=i.querySelector(`[value="${e}"]`);if(r)if("OPTION"===r.tagName){const c=i.querySelector(`[data-value="${e}"]`);c&&(c.closest(".f-dropdown-li").classList.add("--show"),t+1===a.length&&c.closest(".f-dropdown-li").classList.add("--last")),r.classList.add("--show"),0===t&&(r.selected=!0,c&&(o&&c.classList.add("--without"),c.click()))}else r.closest(".f-group").classList.add("--show"),0===t&&"checkbox"!==r.type&&(r.checked=!0)})),"checkbox"===i.getAttribute("data-type")&&i.querySelectorAll(".f-group:not(.--show)").forEach((e=>{e.querySelector("input").checked=!1})))):(i.classList.add("--hide"),i.querySelectorAll("option, input").forEach((e=>{e.disabled=!0}))))}))}o||this.setPrice(),this.validateCheckbox()&&this.removeAlert()},this.hideDependenciesOnInit=()=>{this.vars.dependencies&&Object.keys(this.vars.dependencies).forEach((e=>{let o=!1;Object.keys(t.vars.dependencies[e]).sort().forEach((e=>{const t=document.getElementById(e),r=document.querySelector(`.f-dropdown-item[data-value="${e}"]`);(r&&r.classList.contains("--selected")||t&&t.checked)&&(o=e)})),o&&t.toggleDependencies(e,o,!0)}))},this.afterGenerateDropdown=e=>{e.querySelectorAll(".f-dropdown-item").forEach((e=>{const t=`${e.hasAttribute("data-icon")?`<span class="configurator__icon"><img src="${e.getAttribute("data-icon")}" alt="${e.innerHTML}" /></span>`:""}<span class="configurator__name">${e.innerHTML}</span>${e.hasAttribute("data-price")?`<span class="configurator__price">${e.getAttribute("data-price")}</span>`:""}`;e.innerHTML=t})),e.querySelector(".f-dropdown-button").innerHTML=e.querySelector(".f-dropdown-item.--selected").innerHTML},this.afterClickDropdown=e=>{const o=e.closest(".configurator__item").getAttribute("data-name"),r=e.querySelector(".f-dropdown-item").getAttribute("data-value");e.querySelector(".f-dropdown-item").classList.contains("--without")?(t.toggleDependencies(o,r,!0),e.querySelector(".f-dropdown-item").classList.remove("--without")):t.toggleDependencies(o,r)},this.configuratorSelects=()=>{app_shop.fn.configuratorDropdowns=new SelectToDropdown({selector:this.dropdownSelectorCallback?this.dropdownSelectorCallback:".configurator .f-select",generateDropdownCallback:this.dropdownGenerateCallback?this.dropdownGenerateCallback:this.afterGenerateDropdown,clickDropdownCallback:!!this.dropdownClickCallback&&this.dropdownClickCallback,afterClickDropdownCallback:this.dropdownAfterClickCallback?this.dropdownAfterClickCallback:this.afterClickDropdown,disableMobileView:!this.dropdownMobileCallback||this.dropdownMobileCallback})},this.addAlert=(e,t)=>{if(!e.classList.contains("--alert")){const o=document.createElement("div");o.classList.add("configurator__alert"),o.innerHTML=t,e.classList.add("--alert"),e.insertBefore(o,e.firstChild)}},this.removeAlert=()=>{const e=document.querySelector(".configurator__alert");e&&(e.closest(".--alert").classList.remove("--alert"),e.parentNode.removeChild(e))},this.validateCheckbox=()=>{const e=document.querySelectorAll(".configurator__item[data-required]:not(.--hide)");let o=!0;return e.forEach((e=>{const r=e.querySelector('input[type="checkbox"]:checked');o&&(r||(o=!1,t.removeAlert(),t.addAlert(e,ConfiguratorTxt.selectOption)))})),o},this.initEvents=()=>{document.getElementById("projector_form").addEventListener("change",(function(e){if(e.target.closest(".configurator")&&"input"!==e.target.closest(".configurator__item").getAttribute("data-type")){const o=e.target.closest(".configurator__item").getAttribute("data-name"),r=e.target.value;t.toggleDependencies(o,r)}})),document.querySelectorAll('.configurator input[type="number"], .configurator input[type="text"]').forEach((e=>{e.addEventListener("input",(function(e){e.target.reportValidity(),t.setPrice()}))})),document.getElementById("projector_form").addEventListener("submit",(function(e){t.validateCheckbox()||e.preventDefault();const o=[];document.querySelectorAll('.configurator input[type="checkbox"]:checked').forEach((e=>{const t=e.getAttribute("name");o.push(t)}));[...new Set(o)].forEach((e=>{const t=document.querySelectorAll(`.configurator input[name="${e}"]:checked`);t.length>1&&t.forEach(((t,o)=>{t.setAttribute("name",`${e}[${o}]`)}))}))}))},this.init=()=>{document.getElementById("projector_prices_wrapper").classList.add("load-content");const{dropdownSelectorCallback:e,dropdownGenerateCallback:t,dropdownClickCallback:o,dropdownAfterClickCallback:r,dropdownMobileCallback:c,setPriceCallback:n}=this.params;this.dropdownSelectorCallback=e,this.dropdownGenerateCallback=t,this.dropdownClickCallback=o,this.dropdownAfterClickCallback=r,this.dropdownMobileCallback=c,this.setPriceCallback=n,this.configuratorSelects(),this.hideDependenciesOnInit(),this.initEvents()}};