"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),i=document.getElementById("cart-total");i&&(i.style.display="block",i.textContent=`${s.toFixed(2)} z\u0142 + VAT`);let o=document.getElementById("cart-quantity");if(o){let t=a.reduce((l,c)=>l+c.quantity,0);o.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 S(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"),i=a?.querySelector(".deletebutton")?.getAttribute("data-variant")||null;s&&r>0&&await S(s,r,i)})}async function V(e){let n=document.querySelector(".cart-list");if(!n)return;n.innerHTML="",e.forEach((a,s)=>{let i=document.createElement("div");i.className="cart-item",i.innerHTML=`
${a.ticketType.toUpperCase()}
Wariant:
 ${a.variant}
Cena:
 ${a.price} z\u0142 + VAT
Ilo\u015B\u0107:
 ${a.quantity}
`,n.appendChild(i)}),B(),document.querySelectorAll(".deletebutton").forEach(a=>{a.addEventListener("click",async s=>{let i=s.currentTarget,o=i.getAttribute("data-item-id"),t=i.getAttribute("data-variant")||null;o?await D(o,t):console.error("Failed to remove item from cart: missing item ID")})})}function H(e,n){let r=document.createElement("select");r.classList.add("form_input"),r.dataset.input="variant",r.setAttribute("validate","true");let a=document.createElement("option");return a.value="",a.disabled=!0,a.selected=!0,a.textContent=e,r.appendChild(a),n.forEach(({value:s,label:i})=>{let o=document.createElement("option");o.value=s,o.textContent=i,r.appendChild(o)}),R(r),r}function R(e){e.style.appearance="none",e.style.setProperty("-webkit-appearance","none"),e.style.setProperty("-moz-appearance","none"),e.style.paddingRight="2.5rem",e.style.boxSizing="border-box";let n=``;e.style.backgroundImage=`url("data:image/svg+xml;charset=UTF-8,${encodeURIComponent(n)}")`,e.style.backgroundRepeat="no-repeat",e.style.backgroundPosition="right 1rem center"}function q(e,n){let r=[{value:"Rynek polski",label:"Rynek polski"},{value:"Rynek zagraniczny",label:"Rynek zagraniczny"},{value:"Automatyzacja",label:"Automatyzacja"}],a=[{value:"Szczecin",label:"Szczecin"},{value:"Gda\u0144sk",label:"Gda\u0144sk"},{value:"Bydgoszcz",label:"Bydgoszcz"},{value:"Pozna\u0144",label:"Pozna\u0144"}];document.querySelectorAll(".order-item-list").forEach((i,o)=>{i&&(i.innerHTML="",e.forEach(t=>{let l=document.createElement("div");if(l.className="order-item",l.innerHTML=` ${t.ticketType.toUpperCase()} `,n===1&&o===0){let c=t.ticketType;if(c==="VIP"||c==="Premium"||c==="Standard"||c==="Objazd\xF3wka Standard"||c==="Objazd\xF3wka Premium"){let u=document.createElement("div");if(u.className="cart-product-parameter",t.variant!==null)u.innerHTML=`
Wariant:
 ${t.variant}
`;else{u.style.marginBottom="0.5rem";let d=null;c==="VIP"?d=H("Wybierz rodzaj warsztat\xF3w",r):(c==="Objazd\xF3wka Standard"||c==="Objazd\xF3wka Premium")&&(d=H("Wybierz miasto",a)),d&&(d.value=t.variant||"",u.innerHTML='
Wariant:
',u.appendChild(d),d.addEventListener("change",async()=>{t.variant=d.value,await S(t.id,t.quantity,t.variant),d.disabled=!0,d.style.cursor="not-allowed"}))}l.appendChild(u)}let p=document.createElement("div");p.className="cart-product-parameter",Array.isArray(t.attendeeName)||(t.attendeeName=[]);let m=()=>{p.innerHTML="";for(let u=0;u{t.attendeeName||(t.attendeeName=[]),t.attendeeName[u]=d.value,A[t.id]=[...t.attendeeName]}),p.appendChild(d)}};m(),l.appendChild(p);let y=document.createElement("div");y.className="cart-product-parameter",y.innerHTML=`
Ilo\u015B\u0107:
`;let v=document.createElement("div");v.className="cart-product-parameter",v.innerHTML=`
Cena:
${(t.price*t.quantity).toFixed(2)} z\u0142 + VAT
`;let E=y.querySelector('input[data-input="quantity"]');E?.addEventListener("input",async()=>{let u=parseInt(E.value,10);if(u>0){if(t.quantity=u,!t.attendeeName||t.attendeeName.length>u)t.attendeeName&&(t.attendeeName=t.attendeeName.slice(0,u));else for(;t.attendeeName.length{l.innerHTML+=`
Imi\u0119 i nazwisko #${m+1}:
 ${p}
`}),t.variant!==null&&(l.innerHTML+=`
Wariant:
 ${t.variant}
`),l.innerHTML+=`
Cena:
 ${t.price} z\u0142 + VAT
Ilo\u015B\u0107:
 ${t.quantity}
`);i.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||"",i=document.querySelector("#nazwa-firmy")?.value||"",o=document.querySelector("#Adres-Firmy")?.value||"",t=document.querySelector("#address-line1")?.value||"",l=document.querySelector("#address-line2")?.value||"",c=document.querySelector("#city")?.value||"",p=document.querySelector("#state")?.value||"",m=document.querySelector("#postal-code")?.value||"",y=document.querySelector("#country")?.value||"PL";return{email:e,name:n,nip:r,phone:a,additionalInfo:s,companyName:i,companyAddress:o,addressLine1:t,addressLine2:l,city:c,state:p,postalCode:m,country:y}},J=e=>/^\d{10}$/.test(e),x=(e,n)=>!e||e.value.trim()===""?(alert(`Prosz\u0119 uzupe\u0142ni\u0107 pole: ${n}.`),!1):!0,Q=()=>{let e=document.querySelector("#Company"),n=document.querySelector("#nip"),r=document.querySelector("#nazwa-firmy"),a=document.querySelector("#Adres-Firmy");return e?.checked?(n?.value?J(n.value.trim()):!0)?x(n,"NIP")&&x(r,"Nazwa firmy")&&x(a,"Adres firmy"):(alert("Podany NIP jest niepoprawny."),!1):!0},G=()=>{if(!Q())return!1;let r=document.querySelector('div[data-step="1"]')?.querySelectorAll("input[required], select[required]");if(!Array.from(r||[]).every(o=>o.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 i=document.querySelectorAll("input.attendee-name");for(let o of i)if(!o.value.trim())return alert("Prosz\u0119 wpisa\u0107 imi\u0119 i nazwisko dla ka\u017Cdego biletu."),!1;return!0},Y=()=>{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",g)}),e.querySelectorAll("input.attendee-name").forEach(s=>{s.addEventListener("input",g)}),n?.addEventListener("input",g),g()},Z=(e,n,r,a)=>{let s=document.querySelector(".products-cost");s&&(s.textContent=`${e.toFixed(2)} z\u0142 + VAT`);let i=document.querySelector(".coupon-amount");i&&i.parentElement&&(a>0?(i.parentElement.style.display="block",i.textContent=`${a.toFixed(2)} z\u0142`):i.parentElement.style.display="none");let o=document.querySelector(".tax");o&&(o.textContent=`${n.toFixed(2)} z\u0142`);let t=document.querySelector(".total-cost");t&&(t.textContent=`${r.toFixed(2)} z\u0142`)},M=(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"),T=document.querySelector(".company-info");T&&(T.style.display="none");var F=T?.querySelectorAll("input"),z=document.querySelector("#nip");z?.removeAttribute("required");C&&T&&F&&C.addEventListener("change",()=>{C.checked?(T.style.display="flex",z?.setAttribute("required","true")):(T.style.display="none",F.forEach(e=>e.value=""),z?.removeAttribute("required"))});var g=()=>{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"),i=[],o=[];a.forEach(m=>{if(m.value.trim()===""){let y=m.closest(".form-group")?.querySelector("label")?.textContent?.trim()||m.name||m.id;i.push(y)}}),s.forEach((m,y)=>{m.value.trim()===""&&o.push(`Bilet #${y+1}`)});let t=r.value==="true",l=i.length===0,c=o.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")'),i.length>0&&console.warn("\u{1F4C4} Pola wymagane:",i),o.length>0&&console.warn("\u{1F465} Imiona i nazwiska brakuj\u0105ce:",o),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,i,o)=>{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:i.email,customer_name:i.name,nip:i.nip,phone:i.phone,additional_info:i.additionalInfo,company_name:i.companyName,company_address:i.companyAddress,sessionID:o})})).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-address"]');e.nip!==""&&n&&r&&a?(n.textContent=e.nip,r.textContent=e.companyName,a.textContent=e.companyAddress):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",o=>{o.key==="Enter"&&o.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}Y();let a=async o=>{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:o})})).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 o=document.getElementById("coupon-code"),t=document.getElementById("coupon-feedback");if(!o||!t){console.error("Nie znaleziono elementu formularza kuponu.");return}let l=o.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=M(r,0);s=p==="percentage"?Number(v)*(m/100):m/100}),q(r,1),(()=>{document.querySelectorAll("input.attendee-name").forEach(t=>{t.removeEventListener("input",g),t.addEventListener("input",g)})})(),X?.addEventListener("click",async()=>{if(!G()||!U())return;let o=K();await ne(o);let t=await k();document.querySelectorAll("input.attendee-name").forEach(b=>{let I=b.dataset.ticketId,f=parseInt(b.dataset.attendeeIndex||"0"),h=b.value,w=t.find(_=>_.id===I);w&&(w.attendeeName||(w.attendeeName=[]),w.attendeeName[f]=h)}),q(t,2);let l=M(t,0),c=M(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}Z(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,{...o,address_line1:o.addressLine1,address_line2:o.addressLine2,city:o.city,state:o.state,postal_code:o.postalCode,country:o.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 E=e.elements({clientSecret:y.client_secret});E.create("payment").mount(v);let d=window.location.origin,L="";d.includes("konferencja.vsprint.pl")?L="https://konferencja.vsprint.pl/potwierdzenie-zamowienia":d.includes("landing.vsprint.pl")?L="https://landing.vsprint.pl/podsumowanie":(console.warn("\u26A0\uFE0F Nieznany origin, ustawiam fallback na konferencja.vsprint.pl"),L="https://konferencja.vsprint.pl/potwierdzenie-zamowienia"),n.addEventListener("submit",async b=>{b.preventDefault(),b.stopPropagation(),await E.submit();let I=await e.confirmPayment({elements:E,clientSecret:y.client_secret,redirect:"always",confirmParams:{return_url:L}}),f=document.querySelector(".w-form-done"),h=document.querySelector(".w-form-fail"),w=document.querySelector(".container-medium");I.error?(h&&(h.textContent=`P\u0142atno\u015B\u0107 nieudana: ${I.error.message}`,h.style.display="block"),f&&(f.style.display="none")):(f&&(f.textContent="P\u0142atno\u015B\u0107 zako\u0144czona sukcesem!",f.style.display="block"),h&&(h.style.display="none"),w&&(w.style.display="none"))},!0)})};document.addEventListener("DOMContentLoaded",ae);})();