document.addEventListener("DOMContentLoaded", async () => {
  const serverUrlInput = document.getElementById("serverUrlInput");
  const saveSettingsBtn = document.getElementById("saveSettingsBtn");
  const statusDiv = document.getElementById("status");

  // Load saved Server URL
  if (chrome.storage && chrome.storage.local) {
    chrome.storage.local.get(["serverUrl"], (res) => {
      if (res.serverUrl) {
        serverUrlInput.value = res.serverUrl;
      }
    });
  }

  // Save Settings
  saveSettingsBtn.addEventListener("click", () => {
    let url = serverUrlInput.value.trim();
    if (!url) return;
    if (url.endsWith("/")) {
      url = url.slice(0, -1);
    }
    
    if (chrome.storage && chrome.storage.local) {
      chrome.storage.local.set({ serverUrl: url }, () => {
        statusDiv.className = "status";
        statusDiv.textContent = "Server URL salvato con successo!";
        setTimeout(() => { statusDiv.textContent = ""; }, 2000);
      });
    } else {
      statusDiv.className = "status error";
      statusDiv.textContent = "Storage API non disponibile.";
    }
  });

  // Autofill button click handler
  document.getElementById("fillButton").addEventListener("click", async () => {
    statusDiv.textContent = "";
    statusDiv.className = "status";

    try {
      const text = await navigator.clipboard.readText();
      let data;
      try {
        data = JSON.parse(text);
      } catch (e) {
        throw new Error("Nessun dato valido negli appunti. Clicca su 'Copia per DropPoint' nel gestionale.");
      }

      if (data.source !== "gestionale-posta-privata" || !data.f24) {
        throw new Error("I dati copiati non contengono informazioni F24 valide.");
      }

      const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
      if (!tab) {
        throw new Error("Nessuna scheda attiva trovata.");
      }

      chrome.tabs.sendMessage(tab.id, { action: "autofill-f24", payload: data.f24 }, (response) => {
        if (chrome.runtime.lastError) {
          statusDiv.className = "status error";
          statusDiv.textContent = "Assicurati che la pagina sia caricata e di essere sul portale DropPoint.";
          console.error(chrome.runtime.lastError);
        } else if (response && response.success) {
          statusDiv.textContent = "Campi compilati con successo!";
        } else {
          statusDiv.className = "status error";
          statusDiv.textContent = response ? response.error : "Errore durante la compilazione.";
        }
      });
    } catch (error) {
      statusDiv.className = "status error";
      statusDiv.textContent = error.message;
    }
  });
});
