import {compute,money,summary,whatsapp} from './engine.mjs'; const esc=v=>String(v).replace(/[&<>"']/g,c=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c])); const unit={device:'pro Gerät',user:'pro Benutzer',hour:'pro Stunde',once:'pauschal',monthly:'pro Monat',page:'pro Seite'}; document.querySelectorAll('[data-polat-calculator]').forEach(root=>{ if(root.dataset.initialized)return;root.dataset.initialized='true'; const cfg=JSON.parse(root.dataset.pricing),contact=JSON.parse(root.dataset.contact||'{}'),uid=root.id; const field=(id,label,body)=>``; const options=items=>items.map(x=>``).join(''); const num=(name,value,max,step='1')=>``; let controls=''; if(cfg.area==='web'){ controls=field('kind','1. Website oder Paket',``)+`
`+field('pages','2. Zusätzliche Seiten',num('pages',0,100))+`Nur Seiten über den enthaltenen Umfang hinaus werden zusätzlich berechnet.
`+field('term','3. Laufende Website-Verwaltung',``)+`Neue Funktionen, größere Erweiterungen und externe Hosting-, Domain- oder Lizenzkosten werden separat vereinbart.
`; }else{ const items=cfg.items.filter(x=>['once','device','user'].includes(x.basis)); controls=``+field('channel','2. Supportart',``)+field('hours','Gewünschte Supportstunden',num('hours',0,100,cfg.hour_step||'any'))+`${cfg.hour_step?`Abrechnungsschritt: ${cfg.hour_step} Stunden.`:'Gewünschter Zeitbedarf. Stundensatz und Abrechnungstakt werden im Angebot festgelegt.'}
`+field('care','3. Monatliche IT-Betreuung',``)+`Paketumfang, Gerätegrenzen, Lizenzen und Servicezeiten werden individuell vereinbart.
`; } root.innerHTML=``; const form=root.querySelector('form');let lastText=''; function state(){const fd=new FormData(form);return cfg.area==='web'?{kind:fd.get('kind'),pages:fd.get('pages'),term:fd.get('term')}:{rows:fd.getAll('service').map(id=>({id,qty:fd.get('qty-'+id)||1})),hours:fd.get('hours'),channel:fd.get('channel'),care:fd.get('care')};} function update(){ form.querySelectorAll('[type=number]').forEach(i=>{let v=Number(i.value);if(i.value===''||!Number.isFinite(v))v=Number(i.min||0);v=Math.min(Number(i.max),Math.max(Number(i.min),v));if(i.step==='1')v=Math.floor(v);i.value=String(v);}); form.querySelectorAll('[name=service]').forEach(c=>{const q=form.querySelector(`[name="qty-${c.value}"]`);if(q)q.disabled=!c.checked;}); const s=state(); if(cfg.area==='web'){const base=cfg.items.find(x=>x.id===s.kind);const enabled=['website','bundle'].includes(s.kind);form.querySelector('[name=pages]').disabled=!enabled;form.querySelector('.pc-included').textContent=base.description+(base.included?` Enthalten: ${base.included} Inhaltsseiten.`:'');} const r=compute(cfg,s);lastText=summary(cfg,r); root.querySelector('.pc-lines').innerHTML=r.lines.map(l=>`Wählen Sie die gewünschte Leistung.
'; root.querySelector('.pc-totals').innerHTML=[['Einmalig',r.once],['Monatlich',r.monthly]].map(([label,p])=>`