(function(){ "use strict"; var TK="public_Xy1nf2DH5Cs368QMUjqH9333Ucrzs6uv"; var SL=["spray-paint"]; var MC=4; var lid=null; var gen=0; Ecwid.OnAPILoaded.add(()=>{ Ecwid.OnPageLoaded.add(pg=>{ td(); if(pg.type==="PRODUCT"&&pg.productId&&(!SL.length||SL.some(s=>location.pathname.toLowerCase().indexOf(s.toLowerCase())>-1))){ document.documentElement.classList.add("cg-on"); lid=pg.productId; init(pg.productId); } }); }); window.cgReload=id=>{ id=id||lid; if(!id){console.warn("[CG] no product id yet");return;} td(); document.documentElement.classList.add("cg-on"); init(id); }; function td(){ gen++; document.documentElement.classList.remove("cg-on"); var w=document.getElementById("cg-w"); w&&w.remove(); } function init(id){ var sid=Ecwid.getOwnerId(); var rq=gen; fetch("https://app.ecwid.com/api/v3/"+sid+"/products/"+id+"?token="+TK) .then(r=>r.json()) .then(pr=>{ if(rq!==gen)return; var op=(pr.options||[]).find(o=>o.choices&&o.choices.some(c=>c.hexCodes&&c.hexCodes.length)); if(op&&op.choices.length>=MC){render(pr,op);} else{document.documentElement.classList.remove("cg-on");} }) .catch(console.error); } function tc(hex){ var n=parseInt(hex.slice(1),16); return((n>>16)*299+(n>>8&255)*587+(n&255)*114)/1000>150?"#111":"#fff"; } function render(pr,op){ var EM="No colours selected yet"; var w=document.createElement("div"); w.id="cg-w"; w.innerHTML='
All colours
'+ ''+ '
'+ '
'+EM+'
'+ '
'; var grid=w.querySelector(".cg-gr"),sm=w.querySelector(".cg-sm"),ab=w.querySelector(".cg-ab"); var sr=w.querySelector(".cg-se"); var P={}; sr.oninput=()=>{ var q=sr.value.toLowerCase(); grid.querySelectorAll(".cg-cd").forEach(c=>{ c.style.display=c.querySelector(".cg-nm").textContent.toLowerCase().indexOf(q)>-1?"":"none"; }); }; op.choices.forEach(ch=>{ var hex=ch.hexCodes&&ch.hexCodes[0]?"#"+ch.hexCodes[0].replace("#","").slice(0,6):"#e5e5e5"; var unit=(pr.price||0)+(ch.priceModifier||0); var cb=(pr.combinations||[]).find(c=>c.options&&c.options.some(o=>o.value===ch.text)); var oos=cb&&!cb.inStock; var el=document.createElement("div"); el.className="cg-cd"+(oos?" cg-oos":""); el.style.setProperty("--cg-colour",hex); el.style.color=tc(hex); el.innerHTML='
'+ ''+ '0
'; el.querySelector(".cg-nm").textContent=ch.text; var q=el.querySelector(".cg-qt"); function setQty(n){ n=Math.max(0,n); q.textContent=n; if(n>0){P[ch.text]={qty:n,unit:unit};el.classList.add("cg-a");} else{delete P[ch.text];el.classList.remove("cg-a");} refresh(); } el.querySelector(".cg-mi").onclick=()=>setQty(parseInt(q.textContent,10)-1); el.querySelector(".cg-pl").onclick=()=>setQty(parseInt(q.textContent,10)+1); grid.appendChild(el); }); function refresh(){ var qty=0,total=0; Object.keys(P).forEach(k=>{qty+=P[k].qty;total+=P[k].qty*P[k].unit;}); sm.textContent=qty?qty+" item"+(qty>1?"s":"")+" selected · "+ (typeof Ecwid.formatCurrency==="function"?Ecwid.formatCurrency(total):total.toFixed(2)):EM; ab.disabled=qty===0; } ab.onclick=()=>{ var keys=Object.keys(P); if(!keys.length)return; ab.disabled=true;ab.textContent="Adding…"; var left=keys.length; keys.forEach(t=>{ var o={};o[op.name]=t; Ecwid.Cart.addProduct({id:pr.id,quantity:P[t].qty,options:o,callback:()=>{ if(--left===0){ ab.textContent="Added!"; setTimeout(()=>{ P={}; grid.querySelectorAll(".cg-cd").forEach(c=>{ c.classList.remove("cg-a");c.querySelector(".cg-qt").textContent="0"; }); refresh();ab.textContent="Add to Bag"; },1200); } }}); }); }; var a=document.querySelector(".product-details")||document.body; a.parentNode.insertBefore(w,a.nextSibling); } })();