// Funktion zum Überprüfen von gespeicherten Daten (Benutzername und Standort)
  function checkStoredData() {
    const username = localStorage.getItem("username");
    const locationGranted = localStorage.getItem("locationGranted");
  console.log(localStorage.getItem("username"));
  console.log("!",username);
    if (username) {
      document.getElementById("username").value = username;
    }
    if (locationGranted === "true") {
      document.getElementById("location").checked = true;
    } else {
      document.getElementById("location").checked = false;
    }
  }

// Funktion zum Speichern der Benutzerdaten
function saveData() {
  const usernameInput = document.getElementById("username").value;
  const locationGranted = document.getElementById("location").checked;

  if (usernameInput.length < 6) {
    showAlert("Der Benutzername muss mindestens 6 Zeichen lang sein"); // Popup bei Fehler
  } else {
    localStorage.setItem("username", usernameInput);
    localStorage.setItem("locationGranted", locationGranted);

    if (locationGranted) {
      checkLocationPermission(); // Standortberechtigung prüfen
    } else {
      window.location.href = "showmap.html";
    }
  }
}

// Funktion, um das Popup anzuzeigen
function showAlert(message) {
  // Das Popup anzeigen
  document.getElementById("alert-popup").style.display = "flex";
  // Den Text im Popup anpassen
  document.querySelector("#alert-popup .popup-box p").textContent = message;
}

// Funktion zur Überprüfung der Standortberechtigung
function checkLocationPermission() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(
      function (position) {
        // Erfolg: Weiterleitung nach showmap.html
        setTimeout(function () {
          window.location.href = "showmap.html";
        }, 30);
      },
      function (error) {
        let errorMessage =
          "Standort Freigabe bitte in den Einstellungen des Browsers erlauben";

        // Detaillierte Fehlermeldung anzeigen
        if (error.code === error.PERMISSION_DENIED) {
          errorMessage =
            "Standortfreigabe wurde abgelehnt. Bitte aktivieren Sie die Standortfreigabe in den Browsereinstellungen.";
        } else if (error.code === error.POSITION_UNAVAILABLE) {
          errorMessage =
            "Der Standort konnte nicht ermittelt werden. Bitte überprüfen Sie Ihre Verbindung oder Ihren Standort.";
        } else if (error.code === error.TIMEOUT) {
          errorMessage =
            "Die Anfrage nach dem Standort hat zu lange gedauert. Bitte versuchen Sie es erneut.";
        } else if (error.code === error.UNKNOWN_ERROR) {
          errorMessage =
            "Ein unbekannter Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.";
        }
        // Fehlerdetails in der Konsole ausgeben
        console.error("Geolocation Error Code: ", error.code);
        console.error("Geolocation Error Message: ", error.message);

        // Zeigt die detaillierte Fehlermeldung im Popup an
        showAlert(errorMessage);
      }
    );
  } else {
    // Fehler: Zeigt das Popup an, wenn der Browser keine Geolocation-Unterstützung bietet
    showAlert("Ihr Browser unterstützt keine Standort Freigabe.");
  }
}



//------------------
// Funktion, um das Tracking zu pausieren

function pauseTracking() {
  if (watchId) {
    //  console.log('Tracking pausiert');
    navigator.geolocation.clearWatch(watchId); // Standortüberwachung anhalten
    //      watchId = null;
    trackingPaused = true; // Tracking pausieren

    // Überprüfen, ob der userMarker existiert und von der Karte entfernen
    if (userMarker) {
      map.removeLayer(userMarker); // Marker von der Karte entfernen
      userMarker = null; // Sicherstellen, dass der Marker nicht mehr existiert
    }
  }
}

let isFirstUpdate = true; // Flag, um sicherzustellen, dass die Karte nur beim ersten Tracking-Start zentriert wird
//let userMarker; // Marker für den Benutzer
// let watchId; // ID für die Standortüberwachung

// Funktion zum Starten des Trackings
function startTracking() {
  return new Promise((resolve, reject) => {
    if (navigator.geolocation) {
      watchId = navigator.geolocation.watchPosition(
        (position) => {
          const lat = position.coords.latitude;
          const lon = position.coords.longitude;
          userPosition = [lat, lon];

          // Marker setzen, auch wenn die Karte verschoben wurde
          if (!userMarker) {
            // Wenn der Marker noch nicht existiert, erstellen wir ihn
            userMarker = L.marker(userPosition).addTo(map);
          } else {
            // Wenn der Marker bereits existiert, nur die Position aktualisieren
            userMarker.setLatLng(userPosition);
          }

          setLocation(lat, lon); // Marker an den neuen Standort setzen
          document.getElementById("location-icon").classList.add("pulsieren");
          trackingPaused = false; // Tracking-Status (ob pausiert oder nicht)

          // Karte nur beim ersten Update auf die Benutzerposition zentrieren
          if (isFirstUpdate) {
            map.setView(userPosition, 17); // Karte zentrieren, wenn der Standort zum ersten Mal verfügbar ist
            isFirstUpdate = false; // Flag setzen, um zu verhindern, dass die Karte bei späteren Updates neu zentriert wird
          }

          resolve(userPosition); // Promise auflösen, wenn der Standort abgerufen wurde
        },
        (error) => {
          console.log("Fehler beim Abrufen des Standorts:", error);
          reject(error); // Promise ablehnen, wenn ein Fehler auftritt
        },
        {
          enableHighAccuracy: true,
          timeout: 10000, // Maximale Wartezeit für den Standort (10 Sekunden)
          maximumAge: 1000 // Maximale Zeit, die der Standort alt sein kann (1 Sekunde)
        }
      );
    } else {
      console.log("Geolocation wird von diesem Browser nicht unterstützt.");
      reject(new Error("Geolocation nicht unterstützt")); // Ablehnung, falls Geolocation nicht unterstützt wird
    }
  });
}
/*
// Funktion zum Stoppen des Trackings  -> stand schon in showmap.html
function stopTracking() {
  if (watchId) {
    navigator.geolocation.clearWatch(watchId); // stoppt die Standortüberwachung
    watchId = null; // Setzt die watchId zurück
    console.log("Tracking gestoppt.");

    // Setze isFirstUpdate zurück, damit beim nächsten Start wieder zentriert wird
    isFirstUpdate = true;
  }
}
*/

// Funktion, die beim Klicken auf den Standort-Button ausgeführt wird
async function handleLocationButtonClick() {
  const locationButton = document.getElementById("location-button");
  map.closePopup(); // yyy
  
  if (watchId) {
    // Wenn Tracking läuft, stoppen
    stopTracking();
    locationButton.classList.remove("clicked");
  } else {
    // Wenn Tracking nicht läuft, starten
    try {
      const userPosition = await startTracking(); // Warten, bis der Standort verfügbar ist
      locationButton.classList.add("clicked");
    } catch (error) {
      console.log("Fehler beim Abrufen des Standorts:", error);
    }
  }
}


