const BASE_URL = 'https://electromalvi.com';

let intervalo;

// =========================
// FUNCIONES DE MODALES
// =========================
function mostrarModal(id) {
  document.querySelectorAll('.modal').forEach(modal => modal.style.display = "none");
  document.getElementById(id).style.display = "flex";
  document.getElementById("fondo-modal").style.display = "block";
  document.body.style.overflow = "hidden";
  document.body.classList.add('modal-abierto');

  const menuToggle = document.getElementById("menu-toggle");
  if (menuToggle && menuToggle.checked) menuToggle.checked = false;

  if (id === 'verificar-modal') iniciarTemporizador();
}

function cerrarModal(id) {
  document.getElementById(id).style.display = "none";
  document.getElementById("fondo-modal").style.display = "none";
  document.body.style.overflow = "auto";
  document.body.classList.remove('modal-abierto');

  if (id === 'verificar-modal') {
    const barra = document.getElementById("barra-tiempo");
    barra.parentNode.replaceChild(barra.cloneNode(true), barra);
    const btn = document.getElementById("reenviar-btn");
    btn.disabled = true;
    btn.style.display = "none";
    document.getElementById("texto-temporizador").innerText = "Espera 60 segundos para reenviar";
  }

  const msg = document.getElementById("mensaje-modal");
  if (msg) msg.style.display = "none";
}

function accederArchivos() {
  const logueado = false;
  if (!logueado) {
    mostrarModal('login-modal');
  } else {
    window.location.href = BASE_URL + '/archivos/dump';
  }
}

// =========================
// TEMPORIZADOR
// =========================
function iniciarTemporizador() {
    let tiempo = 60;
    const texto = document.getElementById("texto-temporizador");
    const botonReenviar = document.getElementById("reenviar-btn");
    const botonVerificar = document.querySelector("#form-verificar button[type='submit']");
    const barraContenedor = document.getElementById("barra-tiempo");

    const nuevaBarra = barraContenedor.cloneNode(true);
    nuevaBarra.classList.remove('barra-reiniciada');
    barraContenedor.parentNode.replaceChild(nuevaBarra, barraContenedor);
    requestAnimationFrame(() => requestAnimationFrame(() => nuevaBarra.classList.add('barra-reiniciada')));
    nuevaBarra.style.display = "block";

    botonVerificar.style.display = "block";
    botonReenviar.style.display = "none";
    botonReenviar.disabled = true;

    clearInterval(intervalo); // ⚡ IMPORTANTE: limpiar cualquier temporizador previo
    intervalo = setInterval(() => {
        tiempo--;
        texto.innerText = `Espera ${tiempo} segundos para reenviar`;

        if (tiempo <= 0) {
            clearInterval(intervalo);
            texto.innerText = "¿No recibiste el código?";
            nuevaBarra.style.display = "none";
            botonVerificar.style.display = "none";
            botonReenviar.style.display = "inline-block";
            botonReenviar.disabled = false;
        }
    }, 1000);
}


// =========================
// TOGGLE VISIBILIDAD DE CONTRASEÑA
// =========================
function togglePassword(icon) {
  const input = icon.previousElementSibling;
  input.type = input.type === "text" ? "password" : "text";
  icon.classList.toggle("fa-eye");
  icon.classList.toggle("fa-eye-slash");
}

// =========================
// MANEJO DE FORMULARIOS + SLIDERS
// =========================
document.addEventListener("DOMContentLoaded", () => {
  // Login
  const formLogin = document.getElementById("form-login");
  if (formLogin) {
    formLogin.addEventListener("submit", async (e) => {
      e.preventDefault();
      try {
        const res = await fetch(BASE_URL + "/auth/login.php", {
          method: "POST",
          body: new FormData(formLogin),
          credentials: 'same-origin'
        });

        if (!res.ok) {
          mostrarMensaje("Error del servidor: " + res.status, false);
          return;
        }

        const text = await res.text();
        let data;
        try {
          data = JSON.parse(text);
        } catch(jsonErr) {
          console.error("Respuesta no es JSON:", text);
          mostrarMensaje("Error: respuesta invalida del servidor", false);
          return;
        }

        if (data.success) {
          location.href = data.rol === 'admin' ? BASE_URL + "/admin/panel.php" : BASE_URL + "/index.php";
        } else {
          mostrarMensaje(data.mensaje || "Error desconocido", false);
        }
      } catch(err) {
        console.error("Error en login:", err);
        mostrarMensaje("Error de conexion. Intenta de nuevo.", false);
      }
    });
  }

  // Registro
  const formRegistro = document.getElementById("form-registro");
  if (formRegistro) {
    const passwordInput = formRegistro.querySelector("input[name='password']");
    const confirmarInput = formRegistro.querySelector("input[name='confirmar']");
    const mensajeCoincidencia = document.getElementById("mensaje-coincidencia");

    confirmarInput.addEventListener("input", () => {
      mensajeCoincidencia.style.display = confirmarInput.value !== passwordInput.value ? "block" : "none";
      mensajeCoincidencia.textContent = "Las contraseñas no coinciden";
    });

    formRegistro.addEventListener("submit", async (e) => {
      e.preventDefault();
      const formData = new FormData(formRegistro);
      if (formData.get("password") !== formData.get("confirmar")) {
        mostrarMensaje("Las contraseñas no coinciden.", false, "mensaje-registro");
        return;
      }
      document.getElementById("loader-registro").style.display = "block";
      const res = await fetch(BASE_URL + "/auth/registro.php", { method: "POST", body: formData });
      document.getElementById("loader-registro").style.display = "none";
      const data = await res.json();
      if (data.success) {
        sessionStorage.setItem("origen_codigo", "registro");
        cerrarModal('registro-modal');
        mostrarModal('verificar-modal');
      } else {
        mostrarMensaje(data.mensaje, false, "mensaje-registro");
      }
    });
  }

  // Recuperar contraseña
  const formRecuperar = document.getElementById("form-recuperar");
  if (formRecuperar) {
    formRecuperar.addEventListener("submit", async (e) => {
      e.preventDefault();
      document.getElementById("loader-recuperar").style.display = "block";
      const res = await fetch(BASE_URL + "/auth/recuperar.php", { method: "POST", body: new FormData(formRecuperar) });
      document.getElementById("loader-recuperar").style.display = "none";
      const data = await res.json();
      if (data.success) {
        sessionStorage.setItem("origen_codigo", "recuperar");
        cerrarModal('recuperar-modal');
        mostrarModal('verificar-modal');
      } else {
        mostrarMensaje(data.mensaje, false, "mensaje-recuperar");
      }
    });
  }

  // Verificar código

const formVerificar = document.getElementById("form-verificar");
if (formVerificar) {
    formVerificar.addEventListener("submit", async (e) => {
        e.preventDefault();
        const res = await fetch(BASE_URL + "/auth/verificar_codigo.php", { method: "POST", body: new FormData(formVerificar) });
        const data = await res.json();
        if (data.success) {
            if (data.accion === 'redirigir') {
                window.location.href = data.url;
            } else if (data.accion === 'modal') {
                clearInterval(intervalo); // ⚡ DETIENE EL TEMPORIZADOR al pasar al modal nueva-clave
                cerrarModal('verificar-modal');
                mostrarModal(data.modal);
            }
        } else {
            mostrarMensaje(data.mensaje, false, "mensaje-verificar");
        }
    });
}

const formNuevaClave = document.getElementById("form-nueva-clave");
if (formNuevaClave) {
    formNuevaClave.addEventListener("submit", async (e) => {
        e.preventDefault();
        const res = await fetch(BASE_URL + "/auth/nueva_clave.php", { method: "POST", body: new FormData(formNuevaClave) });
        const data = await res.json();
        if (data.success) {
            mostrarMensaje(data.mensaje, true, "mensaje-nueva-clave");
            setTimeout(() => {
                cerrarModal('nueva-clave-modal');
                // ✅ Redirige manualmente al login, sin que backend limpie la sesión todavía.
                window.location.href = BASE_URL + '/index.php';
            }, 1500);
        } else {
            mostrarMensaje(data.mensaje, false, "mensaje-nueva-clave");
        }
    });
}



  // Reenviar código
  const btnReenviar = document.getElementById("reenviar-btn");
  if (btnReenviar) {
    btnReenviar.addEventListener("click", async () => {
      const origen = sessionStorage.getItem("origen_codigo");
      const url = BASE_URL + (origen === "registro" ? "/auth/registro.php" : "/auth/recuperar.php");
      const emailInput = document.querySelector(`#form-${origen} input[name="email"]`);
      if (!emailInput) return mostrarMensaje("No se encontró el correo.", false);

      const formData = new FormData();
      formData.append("email", emailInput.value);
      formData.append("reenviar", "1");

      const loaderReenviar = document.getElementById("loader-reenviar");
      if (loaderReenviar) loaderReenviar.style.display = "block";

      const res = await fetch(url, { method: "POST", body: formData });
      loaderReenviar.style.display = "none";

      const data = await res.json();
      if (data.success) {
        mostrarMensaje("Código reenviado correctamente.", true);
        iniciarTemporizador();
      } else {
        mostrarMensaje(data.mensaje || "No se pudo reenviar el código.", false);
      }
    });
  }



// =========================
// SLIDER DE FRASES (FADE + swipe + autoplay una sola vez)
// =========================
const fraseSlider = document.getElementById("frase-slider");
if (fraseSlider) {
  const frases = fraseSlider.querySelectorAll(".frase-slide");
  let currentFrase = 0;
  let autoSlideFrase;

  function showFrase(index) {
    frases.forEach((frase, i) => {
      frase.classList.toggle("active", i === index);
    });
  }

  function nextFrase() {
    if (currentFrase < frases.length - 1) {
      currentFrase++;
      showFrase(currentFrase);
    } else {
      clearInterval(autoSlideFrase); // Detener al llegar al final
    }
  }

  function prevFrase() {
    currentFrase = (currentFrase - 1 + frases.length) % frases.length;
    showFrase(currentFrase);
  }

  function iniciarAutoFrase() {
    autoSlideFrase = setInterval(nextFrase, 5000);
  }

  function detenerAutoFrase() {
    clearInterval(autoSlideFrase);
  }

  showFrase(currentFrase);
  iniciarAutoFrase();

  // Swipe táctil
  let startX = 0;
  let isSwiping = false;

  fraseSlider.addEventListener("touchstart", (e) => {
    detenerAutoFrase();
    startX = e.touches[0].clientX;
    isSwiping = true;
  });

  fraseSlider.addEventListener("touchmove", (e) => {
    if (!isSwiping) return;
    const diffX = e.touches[0].clientX - startX;

    if (Math.abs(diffX) > 50) {
      isSwiping = false;
      diffX > 0 ? prevFrase() : nextFrase();
    }
  });

  fraseSlider.addEventListener("touchend", () => {
    isSwiping = false;
  });
}
});

// =========================
// POPUP DE MENSAJES
// =========================
function mostrarMensaje(mensaje, exito = true, id = "mensaje-modal") {
  const msg = document.getElementById(id);
  if (!msg) return;
  msg.innerText = mensaje;
  msg.style.display = "block";
  msg.style.backgroundColor = exito ? "#e0f7e9" : "#fdecea";
  msg.style.color = exito ? "#2e7d32" : "#c0392b";
  setTimeout(() => { msg.style.display = "none"; }, 5000);
}
