"use strict";(()=>{var O=document.querySelector("#cart-button"),re=document.querySelector("#added-to-cart"),A={};async function k(){try{let n=await(await fetch("https://koszyk.vsprint.pl/api/cart",{credentials:"include"})).json();if(!Array.isArray(n))throw new Error("Received data is not an array");return n}catch(e){return console.error("Failed to fetch cart items:",e),[]}}async function N(){O?.classList.remove("hide");let e=document.querySelector(".state-default"),n=document.querySelector(".state-empty"),r=document.querySelector(".state-error");try{let a=await k(),s=a.reduce((t,l)=>t+l.price*l.quantity,0),o=document.getElementById("cart-total");o&&(o.style.display="block",o.textContent=`${s.toFixed(2)} z\u0142 + VAT`);let i=document.getElementById("cart-quantity");if(i){let t=a.reduce((l,c)=>l+c.quantity,0);i.textContent=t.toString()}e&&n&&r&&(a.length>0?(n.style.display="none",r.style.display="none",e.style.display="block"):(e.style.display="none",r.style.display="none",n.style.display="flex")),await V(a)}catch(a){console.error("Failed to update cart UI:",a),e&&n&&r&&(n.style.display="none",e.style.display="none",r.style.display="flex")}}async function D(e,n=null){try{let r=n==="null"?null:n,a=await fetch(`https://koszyk.vsprint.pl/api/cart/${e}`,{method:"DELETE",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({variant:r})});if(!a.ok)throw new Error(`Failed to remove item: ${a.statusText}`);window.dataLayer.push({ecommerce:null}),window.dataLayer.push({event:"remove_from_cart",ecommerce:{items:[{item_id:e,item_name:e,affiliation:"Konferencja App"}]}}),await N()}catch(r){console.error("Failed to remove item from cart:",r)}}async function q(e,n,r=null){try{let a=await fetch(`https://koszyk.vsprint.pl/api/cart/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({variant:r==="null"?null:r,quantity:n,attendeeName:A[e]||[]})});if(!a.ok)throw new Error(`Failed to update item quantity: ${a.statusText}`);window.location.href.includes("koszyk")||await N()}catch(a){console.error("Failed to update item quantity:",a)}}function B(){document.addEventListener("change",async e=>{let n=e.target;if(!n.classList.contains("is-quantity"))return;let r=parseInt(n.value,10),a=n.closest(".cart-item"),s=a?.querySelector(".deletebutton")?.getAttribute("data-item-id"),o=a?.querySelector(".deletebutton")?.getAttribute("data-variant")||null;s&&r>0&&await q(s,r,o)})}async function V(e){let n=document.querySelector(".cart-list");if(!n)return;n.innerHTML="",e.forEach((a,s)=>{let o=document.createElement("div");o.className="cart-item",o.innerHTML=`
`);o.appendChild(l)}))})}function W(e,n,r){let a=e.querySelector(".text-weight-semibold.text-color-brand");a&&(a.textContent=`${(n*r).toFixed(2)} z\u0142 + VAT`)}async function P(){try{return(await(await fetch("https://koszyk.vsprint.pl/api/session-id",{method:"GET",headers:{"Content-Type":"application/json"},credentials:"include"})).json()).sessionID}catch(e){return console.error("B\u0142\u0105d podczas pobierania ID sesji:",e),null}}function U(){let e=document.querySelectorAll('select[data-input="variant"][validate="true"]'),n=!0;return e.forEach(r=>{r.value===""&&(alert("Prosz\u0119 wybra\u0107 wariant warsztat\xF3w przed przej\u015Bciem dalej."),n=!1)}),n}var K=()=>{let e=document.querySelector("#Email")?.value||"",n=document.querySelector("#wf-ecom-shipping-name")?.value||"",r=document.querySelector("#nip")?.value||"",a=document.querySelector("#Telefon")?.value||"",s=document.querySelector("#DodatkoweInformacje")?.value||"",o=document.querySelector("#nazwa-firmy")?.value||"",i=document.querySelector("#Kod-pocztowy")?.value||"",t=document.querySelector("#Miasto")?.value||"",l=document.querySelector("#Adres-Firmy")?.value||"",c=document.querySelector("#address-line1")?.value||"",p=document.querySelector("#address-line2")?.value||"",m=document.querySelector("#city")?.value||"",y=document.querySelector("#state")?.value||"",v=document.querySelector("#postal-code")?.value||"",f=document.querySelector("#country")?.value||"PL";return{email:e,name:n,nip:r,phone:a,additionalInfo:s,companyName:o,companyZip:i,companyCity:t,companyAddress:l,addressLine1:c,addressLine2:p,city:m,state:y,postalCode:v,country:f}},Z=e=>/^\d{10}$/.test(e),L=(e,n)=>!e||e.value.trim()===""?(alert(`Prosz\u0119 uzupe\u0142ni\u0107 pole: ${n}.`),!1):!0,J=()=>{let e=document.querySelector("#Company"),n=document.querySelector("#nip"),r=document.querySelector("#nazwa-firmy"),a=document.querySelector("#Kod-pocztowy"),s=document.querySelector("#Miasto"),o=document.querySelector("#Adres-Firmy");return e?.checked?(n?.value?Z(n.value.trim()):!0)?L(n,"NIP")&&L(r,"Nazwa firmy")&&L(a,"Kod pocztowy")&&L(s,"Miasto")&&L(o,"Adres firmy"):(alert("Podany NIP jest niepoprawny."),!1):!0},Q=()=>{if(!J())return!1;let r=document.querySelector('div[data-step="1"]')?.querySelectorAll("input[required], select[required]");if(!Array.from(r||[]).every(i=>i.value.trim()!==""))return alert("Prosz\u0119 uzupe\u0142ni\u0107 wszystkie wymagane pola."),!1;if(document.querySelector("#is-items")?.value!=="true")return alert("Koszyk musi zawiera\u0107 przedmioty."),!1;let o=document.querySelectorAll("input.attendee-name");for(let i of o)if(!i.value.trim())return alert("Prosz\u0119 wpisa\u0107 imi\u0119 i nazwisko dla ka\u017Cdego biletu."),!1;return!0},G=()=>{let e=document.querySelector('div[data-step="1"]'),n=document.querySelector("#is-items");if(n&&(n.value=String(!0)),!e)return;e.querySelectorAll("input[required], select[required]").forEach(s=>{s.addEventListener("input",T)}),e.querySelectorAll("input.attendee-name").forEach(s=>{s.addEventListener("input",T)}),n?.addEventListener("input",T),T()},Y=(e,n,r,a)=>{let s=document.querySelector(".products-cost");s&&(s.textContent=`${e.toFixed(2)} z\u0142 + VAT`);let o=document.querySelector(".coupon-amount");o&&o.parentElement&&(a>0?(o.parentElement.style.display="block",o.textContent=`${a.toFixed(2)} z\u0142`):o.parentElement.style.display="none");let i=document.querySelector(".tax");i&&(i.textContent=`${n.toFixed(2)} z\u0142`);let t=document.querySelector(".total-cost");t&&(t.textContent=`${r.toFixed(2)} z\u0142`)},x=(e,n)=>(e.reduce((a,s)=>a+s.price*s.quantity,0)-n).toFixed(2),X=document.querySelector('a[data-form="next-btn"]'),$=document.querySelector('div[data-step="1"]'),j=document.querySelector('div[data-step="2"]'),C=document.querySelector("#Company"),g=document.querySelector(".company-info");g&&(g.style.display="none");var F=g?.querySelectorAll("input"),z=document.querySelector("#nip");z?.removeAttribute("required");C&&g&&F&&C.addEventListener("change",()=>{C.checked?(g.style.display="flex",z?.setAttribute("required","true")):(g.style.display="none",F.forEach(e=>e.value=""),z?.removeAttribute("required"))});var T=()=>{let e=document.querySelector('a[data-form="next-btn"]'),n=document.querySelector('div[data-step="1"]'),r=document.querySelector("#is-items");if(!n||!e||!r)return;let a=n.querySelectorAll("input[required], select[required]"),s=n.querySelectorAll("input.attendee-name"),o=[],i=[];a.forEach(m=>{if(m.value.trim()===""){let y=m.closest(".form-group")?.querySelector("label")?.textContent?.trim()||m.name||m.id;o.push(y)}}),s.forEach((m,y)=>{m.value.trim()===""&&i.push(`Bilet #${y+1}`)});let t=r.value==="true",l=o.length===0,c=i.length===0,p=l&&c&&t;console.clear(),p?console.log("\u2705 Wszystkie dane s\u0105 poprawne. Przycisk \u201EDalej\u201D dost\u0119pny."):(console.group("\u{1F512} Przycisk \u201EDalej\u201D zablokowany \u2013 brakuje:"),t||console.warn('\u{1F6D2} Koszyk jest pusty (isItemsInput !== "true")'),o.length>0&&console.warn("\u{1F4C4} Pola wymagane:",o),i.length>0&&console.warn("\u{1F465} Imiona i nazwiska brakuj\u0105ce:",i),console.groupEnd()),e.disabled=!p,e.style.cursor=p?"pointer":"not-allowed",e.style.opacity=p?"1":"0.5",e.style.display="block"},ee=async()=>{$&&j?($.style.display="none",j.style.display="flex",window.scrollTo({top:0,behavior:"smooth"})):console.error("One of the step wrappers is not found.")},te=async(e,n,r,a,s,o,i)=>{try{return console.log("Sending to backend:",s),await(await fetch("https://koszyk.vsprint.pl/api/create-payment-intent",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({products_cost:Math.round(e*100),tax_cost:Math.round(n*100),total_amount:Math.round(r*100),coupon_amount:Math.round(a*100),currency:"PLN",items:s.flatMap(l=>Array.from({length:l.quantity},(c,p)=>({id:l.id,ticketType:l.ticketType,quantity:1,price:l.price,variant:l.variant||null,attendeeName:l.attendeeName?.[p]||""}))),customer_email:o.email,customer_name:o.name,nip:o.nip,phone:o.phone,additional_info:o.additionalInfo,company_name:o.companyName,company_zip:o.companyZip,company_city:o.companyCity,company_address:o.companyAddress,sessionID:i})})).json()}catch(t){return console.error("Error creating payment intent:",t),null}};async function ne(e){let n=document.querySelector('div[data-output="nip"]'),r=document.querySelector('div[data-output="company-name"]'),a=document.querySelector('div[data-output="company-zip"]'),s=document.querySelector('div[data-output="company-city"]'),o=document.querySelector('div[data-output="company-address"]');e.nip!==""&&n&&r&&o&&a&&s?(n.textContent=e.nip,r.textContent=e.companyName,o.textContent=e.companyAddress,a.textContent=e.companyZip,s.textContent=e.companyCity):e.nip===""&&n&&n.parentElement&&(n.parentElement.style.display="none")}var ae=async()=>{let e=window.Stripe?.("pk_live_51QebhPBRhKsel0GPxR0Z3cpb7mXwBvS7pm2HiDTkCyWCJ59IzEcFarfmXsqgnR0RpMuFtF01Ew1CvHN1oJ8mbAGV00eCKC7aDn",{stripeAccount:"acct_1QebhPBRhKsel0GP"});if(!e){console.error("Stripe nie zosta\u0142o zainicjalizowane.");return}let n=document.querySelector('[data-element="payment_form"]');if(n)n.addEventListener("keydown",i=>{i.key==="Enter"&&i.preventDefault()});else{console.error("Payment form element could not be found. Ensure that the form has the correct data-element attribute.");return}let r=await k();if(r.length===0&&window.location.pathname.includes("/koszyk")){alert("Tw\xF3j koszyk jest pusty. Dodaj przedmioty do koszyka."),window.location.href="/";return}G();let a=async i=>{try{return await(await fetch("https://koszyk.vsprint.pl/api/validate-coupon",{credentials:"include",method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({couponCode:i})})).json()}catch(t){return console.error("Error checking coupon:",t),{isValid:!1,discountType:null,amount:0}}},s=0;document.getElementById("apply-coupon")?.addEventListener("click",async()=>{let i=document.getElementById("coupon-code"),t=document.getElementById("coupon-feedback");if(!i||!t){console.error("Nie znaleziono elementu formularza kuponu.");return}let l=i.value.trim(),{isValid:c,discountType:p,amount:m}=await a(l);if(!c){t.textContent="Nieprawid\u0142owy kupon.",t.style.display="block",t.style.color="#b42318",t.classList.remove("hide");return}let y=p==="fixed"?`Zni\u017Cka: ${(m/100).toFixed(2)} z\u0142`:`Zni\u017Cka: ${m}%`;t.innerHTML=`Kupon zosta\u0142 dodany. ${y} Cena zostanie zrabatowana w kolejnym kroku.`,t.style.display="block",t.style.color="#027a48",t.classList.remove("hide");let v=x(r,0);s=p==="percentage"?Number(v)*(m/100):m/100}),M(r,1),(()=>{document.querySelectorAll("input.attendee-name").forEach(t=>{t.removeEventListener("input",T),t.addEventListener("input",T)})})(),X?.addEventListener("click",async()=>{if(!Q()||!U())return;let i=K();await ne(i);let t=await k();document.querySelectorAll("input.attendee-name").forEach(b=>{let S=b.dataset.ticketId,E=parseInt(b.dataset.attendeeIndex||"0"),w=b.value,h=t.find(_=>_.id===S);h&&(h.attendeeName||(h.attendeeName=[]),h.attendeeName[E]=w)}),M(t,2);let l=x(t,0),c=x(t,s),p=(Number(c)*.23).toFixed(2);if(c=(Number(c)*1.23).toFixed(2),Number(c)<=2){alert("Suma produkt\xF3w w koszyku musi wynosi\u0107 wi\u0119cej ni\u017C 2.00 z\u0142, aby kontynuowa\u0107.");return}Y(Number(l),Number(p),Number(c),Number(s)),await ee();let m=await P(),y=await te(Number(l),Number(p),Number(c),Number(s),t,{...i,address_line1:i.addressLine1,address_line2:i.addressLine2,city:i.city,state:i.state,postal_code:i.postalCode,country:i.country},m);if(!y){console.error("Payment intent is missing.");return}let v=document.querySelector('[data-element="stripe"]');if(!v){console.error("Stripe element could not be found. Ensure that the element has the correct data-element attribute.");return}let f=e.elements({clientSecret:y.client_secret});f.create("payment").mount(v);let d=window.location.origin,I="";d.includes("konferencja.vsprint.pl")?I="https://konferencja.vsprint.pl/potwierdzenie-zamowienia":d.includes("landing.vsprint.pl")?I="https://landing.vsprint.pl/podsumowanie":(console.warn("\u26A0\uFE0F Nieznany origin, ustawiam fallback na konferencja.vsprint.pl"),I="https://konferencja.vsprint.pl/potwierdzenie-zamowienia"),n.addEventListener("submit",async b=>{b.preventDefault(),b.stopPropagation(),await f.submit();let S=await e.confirmPayment({elements:f,clientSecret:y.client_secret,redirect:"always",confirmParams:{return_url:I}}),E=document.querySelector(".w-form-done"),w=document.querySelector(".w-form-fail"),h=document.querySelector(".container-medium");S.error?(w&&(w.textContent=`P\u0142atno\u015B\u0107 nieudana: ${S.error.message}`,w.style.display="block"),E&&(E.style.display="none")):(E&&(E.textContent="P\u0142atno\u015B\u0107 zako\u0144czona sukcesem!",E.style.display="block"),w&&(w.style.display="none"),h&&(h.style.display="none"))},!0)})};document.addEventListener("DOMContentLoaded",ae);})();