let exportedJSON = '';

function collectFormData() {
  const form = document.getElementById('mainForm');
  const data = { _meta: { version: '1.0', source: 'come2canada.life', timestamp: new Date().toISOString(), pipeline_version: 'c2c-pipeline-v2' } };

  // Text inputs & selects
  form.querySelectorAll('input[type="text"], input[type="email"], input[type="tel"], input[type="number"], input[type="date"], select, textarea').forEach(el => {
    if (el.name && el.value) data[el.name] = el.value;
  });

  // Checkboxes (multiple values)
  const cbGroups = {};
  form.querySelectorAll('input[type="checkbox"]:checked').forEach(cb => {
    if (cb.name === 'datenschutz') { data.datenschutz_akzeptiert = true; return; }
    if (!cbGroups[cb.name]) cbGroups[cb.name] = [];
    cbGroups[cb.name].push(cb.value);
  });
  Object.assign(data, cbGroups);

  // Radio buttons
  form.querySelectorAll('input[type="radio"]:checked').forEach(r => { data[r.name] = r.value; });

  // Computed fields for pipeline
  if (data.geburtsdatum) {
    const age = Math.floor((new Date() - new Date(data.geburtsdatum)) / (365.25 * 24 * 3600 * 1000));
    data._computed_age = age;
  }
  data._computed_fullname = [data.vorname, data.nachname].filter(Boolean).join(' ');

  return data;
}

async function handleSubmit(e) {
  e.preventDefault();
  const btn = document.getElementById('submitBtn');
  btn.textContent = 'Wird gesendet...';
  btn.disabled = true;

  const formData = collectFormData();
  exportedJSON = JSON.stringify(formData, null, 2);

  try {
    const resp = await fetch('https://christianwehrli.ca/c2c/api/formular', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: exportedJSON
    });
    const result = await resp.json();

    if (!result.ok) {
      btn.textContent = 'Fehler — bitte erneut versuchen';
      btn.disabled = false;
      document.getElementById('submitError').textContent = result.error || 'Unbekannter Fehler';
      document.getElementById('submitError').style.display = 'block';
      return;
    }

    // Erfolgreich
    document.getElementById('jsonOutput').textContent = exportedJSON;
    buildBestaetigung(formData);
    document.getElementById('mainForm').style.display = 'none';
    document.getElementById('successWrap').style.display = 'block';
    document.getElementById('successWrap').scrollIntoView({ behavior: 'smooth', block: 'start' });

  } catch (err) {
    btn.textContent = 'Verbindungsfehler — bitte erneut versuchen';
    btn.disabled = false;
    document.getElementById('submitError').textContent = 'Server nicht erreichbar. Bitte Verbindung prüfen.';
    document.getElementById('submitError').style.display = 'block';
  }
}

function copyJSON() {
  navigator.clipboard.writeText(exportedJSON).then(() => {
    const fb = document.getElementById('copyFb');
    fb.classList.add('show');
    setTimeout(() => fb.classList.remove('show'), 2500);
  });
}

function downloadJSON() {
  const name = (document.querySelector('[name="vorname"]')?.value || 'interessent').toLowerCase().replace(/\s+/g,'-');
  const date = new Date().toISOString().slice(0,10);
  const blob = new Blob([exportedJSON], { type: 'application/json' });
  const a = document.createElement('a');
  a.href = URL.createObjectURL(blob);
  a.download = `c2c-${name}-${date}.json`;
  a.click();
  URL.revokeObjectURL(a.href);
}

function buildBestaetigung(d) {
  const name = [d.vorname, d.nachname].filter(Boolean).join(' ');
  document.getElementById('pdf-name').textContent = name;
  document.getElementById('pdf-datum').textContent =
    'Eingegangen am ' + new Date().toLocaleDateString('de-CH',{day:'2-digit',month:'long',year:'numeric',hour:'2-digit',minute:'2-digit'});
  const secs = [
    {t:'Persönliche Angaben', f:[['Vollständiger Name',name],['E-Mail',d.email],['Telefon',d.telefon],['Geburtsdatum',d.geburtsdatum],['Geburtsland',d.geburtsland],['Wohnsitzland',d.wohnsitzland],['Staatsbürgerschaft',d.staatsbuergerschaft],['Zivilstand',d.zivilstand],['Kinder',d.kinder_anzahl]]},
    {t:'Bildung & Sprachen', f:[['Höchster Abschluss',d.bildung],['Fachrichtung',d.fachrichtung],['Institution',d.institution],['Abschluss-Jahr',d.abschluss_jahr],['ECA',d.eca],['Englisch',d.englisch],['Französisch',d.franzoesisch],['Sprachtest',d.sprachtests]]},
    {t:'Berufserfahrung', f:[['Berufsbezeichnung',d.berufsbezeichnung],['Jahre Erfahrung',d.berufsjahre],['Erfahrung in Kanada',d.erfahrung_kanada],['Selbständigkeit',d.selbstaendig],['Zertifikate',d.zertifikate]]},
    {t:'Kanada-Bezug', f:[['Stellenangebot',d.stellenangebot],['Familie in Kanada',d.familie_kanada],['Verfügbare Mittel',d.verfuegbare_mittel],['Zeitplan',d.zeitplan],['Provinzen',Array.isArray(d.provinz)?d.provinz.join(', '):d.provinz]]},
    {t:'Deine Geschichte', gross:true, f:[['Warum Kanada',d.warum_kanada],['Beitrag',d.beitrag_kanada],['5-Jahres-Plan',d.fuenf_jahres_plan],['Stärken',d.staerken],['Besonderes',d.besondere_umstaende]]},
    {t:'Gewählter Service', f:[['Service',d.service]]},
  ];
  document.getElementById('pdf-sections').innerHTML = secs.map(sec => {
    const rows = sec.f.filter(([,v])=>v&&String(v).trim()).map(([l,v])=>
      `<div style="display:flex;gap:1rem;padding:5px 0;border-bottom:0.5px solid rgba(0,0,0,0.06);font-size:${sec.gross?'.88rem':'.83rem'}">
        <div style="color:#6B6B6B;min-width:160px;flex-shrink:0;font-size:.78rem">${l}</div>
        <div style="color:#1C1C1E;line-height:1.5;flex:1">${String(v).replace(/\n/g,'<br>')}</div>
      </div>`).join('');
    if(!rows) return '';
    return `<div style="margin-bottom:1.5rem">
      <div style="font-family:'Playfair Display',serif;font-size:.92rem;font-weight:600;color:#1A3A2A;padding-bottom:.35rem;margin-bottom:.25rem;border-bottom:2px solid #f5e6e9">${sec.t}</div>
      ${rows}</div>`;
  }).join('');
}

document.addEventListener('DOMContentLoaded', function() {
  var form = document.getElementById('mainForm');
  if (form) {
    form.addEventListener('submit', function(e) {
      e.preventDefault();
      if (typeof handleSubmit === 'function') handleSubmit(e);
    });
  }
});