// popup.js

document.addEventListener("DOMContentLoaded", async () => {
  document.getElementById("project-name").innerText = PROJECT_NAME;

  const options = await loadOptions();
  const bannerElement = document.getElementById("project-banner");
  if (bannerElement && (options.showBanner ?? SHOW_BANNER_DEFAULT)) {
    bannerElement.innerText = `Erstellt mit ${PROJECT_NAME} – deinem datenschutzfreundlichen Helfer gegen unerlaubte Cookie-Banner.`;
  }

  const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
  document.getElementById("current-url").value = tab.url;

  const violationsDiv = document.getElementById("violations");
  VIOLATION_TYPES.forEach(type => {
    const label = document.createElement("label");
    label.innerHTML = `<input type="checkbox" value="${type}"> ${type}`;
    violationsDiv.appendChild(label);
  });

  document.getElementById("screenshot-btn").addEventListener("click", createScreenshot);
  // PDF-Funktion aktuell deaktiviert:
  // document.getElementById("create-pdf-btn").addEventListener("click", preparePDF);
  document.getElementById("create-email-btn").addEventListener("click", prepareEmail);
  document.getElementById("open-options-btn").addEventListener("click", openOptions);
});

// Optionen laden
async function loadOptions() {
  const result = await chrome.storage.local.get('options');
  return result.options || {};
}

// Screenshot erstellen und speichern
async function createScreenshot() {
  try {
    const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
    const imageUri = await chrome.tabs.captureVisibleTab(tab.windowId, { format: "png" });

    const url = new URL(tab.url);
    const domain = url.hostname.replace('www.', '');

    const now = new Date();
    const timestamp = now.getFullYear().toString()
      + String(now.getMonth() + 1).padStart(2, '0')
      + String(now.getDate()).padStart(2, '0')
      + String(now.getHours()).padStart(2, '0')
      + String(now.getMinutes()).padStart(2, '0');

    const filename = `${timestamp}_${domain}.png`;

    const response = await fetch(imageUri);
    const blob = await response.blob();
    const blobUrl = URL.createObjectURL(blob);

    await chrome.downloads.download({
      url: blobUrl,
      filename: `cookiekop/screenshots/${filename}`, // Vorschlagpfad
      saveAs: true
    });

    // Kein alert mehr notwendig!
  } catch (error) {
    console.error("Fehler beim Screenshot:", error);
    alert("Screenshot konnte nicht gespeichert werden.");
  }
}

// (PDF erstellen Funktion bleibt auskommentiert – später aktivieren)

// E-Mail vorbereiten
async function prepareEmail() {
  const url = document.getElementById("current-url").value;
  const violations = Array.from(document.querySelectorAll('#violations input:checked')).map(input => input.value);
  const note = document.getElementById("custom-note").value;
  const options = await loadOptions();

  let body = `Sehr geehrte Damen und Herren,\n\n`;
  body += `ich möchte folgende Verstöße gegen die DSGVO im Zusammenhang mit dem Cookie-Banner melden:\n\n`;
  violations.forEach(v => {
    body += `- ${v}\n`;
  });
  body += `\nURL: ${url}\n`;
  if (note) {
    body += `\nZusätzliche Hinweise: ${note}\n`;
  }

  if (options.showBanner ?? true) {
    body += `\n\nErstellt mit CookieKop – https://gitlab.com/1337gut/cookiekop`;
  }

  body += `\n\nMit freundlichen Grüßen\n\n`;

  const subject = encodeURIComponent("Meldung eines Cookie-Banner-Verstoßes");
  const bodyEncoded = encodeURIComponent(body);

  let recipient = "poststelle@lda.bayern.de"; // Fallback
  if (options?.state) {
    try {
      const response = await fetch('data/datenschutzbehoerden.json');
      const authorities = await response.json();
      const found = authorities.find(entry => entry.bundesland === options.state);
      if (found && found.email) {
        recipient = found.email;
      }
    } catch (error) {
      console.error("Fehler beim Laden der Behördenliste:", error);
    }
  }

  const mailtoLink = `mailto:${recipient}?subject=${subject}&body=${bodyEncoded}`;

  try {
    await chrome.tabs.create({ url: mailtoLink });
  } catch (error) {
    console.error("Fehler beim Öffnen von mailto:", error);
    fallbackCopyEmailText(body);
  }
}

// Fallback: E-Mail-Text in Zwischenablage kopieren
function fallbackCopyEmailText(text) {
  navigator.clipboard.writeText(text).then(() => {
    alert("E-Mail-Text wurde kopiert. Bitte öffne dein E-Mail-Programm und füge ihn ein (Strg+V).");
  }).catch(err => {
    console.error("Kopieren fehlgeschlagen:", err);
    alert("Fehler beim Kopieren des E-Mail-Texts.");
  });
}

// Optionen-Seite öffnen
function openOptions() {
  chrome.runtime.openOptionsPage();
}