(function () {
  "use strict";

  const DEFAULT_LANG = "es-ES";

  function getCurrentLang() {
    // Viene del servidor (Thymeleaf): <html th:lang="${#locale.language}">
    return document.documentElement.lang || DEFAULT_LANG;
  }

  function setFlag(lang) {
    const img = document.getElementById("header-lang-img");
    if (!img) return;
    img.src = (lang === "en-GB")
      ? "/assets/images/flags/gb.svg"
      : "/assets/images/flags/spain.svg";
  }

  function onLanguageClick(e) {
    e.preventDefault();
    const lang = this.dataset.lang;
    if (!lang || lang === getCurrentLang()) return;

    // Guarda la preferencia (opcional)
    try { localStorage.setItem("language", lang); } catch {}

    // Redirige con ?lang=... para que Spring cambie el Locale y renderice en ese idioma
    const url = new URL(location.href);
    url.searchParams.set("lang", lang);
    location.assign(url);
  }

  function initLanguage() {
    // Usa el idioma actual que viene del servidor
    const current = getCurrentLang();
    setFlag(current);

    // Enlaces/ botones de idioma: .language[data-lang="en|es"]
    document.querySelectorAll(".language").forEach(a => {
      a.addEventListener("click", onLanguageClick);
    });

    // (Opcional) si guardaste algo en localStorage y quieres forzar
    // la alineación al entrar por 1ª vez:
    const saved = localStorage.getItem("language");
    if (saved && saved !== current) {
      const url = new URL(location.href);
      url.searchParams.set("lang", saved);
      location.replace(url); // alinea y no deja historial extra
    }
  }

  document.addEventListener("DOMContentLoaded", initLanguage);
})();
