var ruleta = document.getElementById("ruleta");
var puntero = document.getElementById("puntero");
let gira = 0;
let giraDos = 0;

const rangos = [
  { articulo: "Freidora de aire", inicio: 330, final: 16 },
  { articulo: "Articulo plastico", inicio: 15, final: 16 },
  { articulo: "Sandwichera", inicio: 150, final: 196 },
  { articulo: "Kits Protex", inicio: 170, final: 16 },
  { articulo: "Cubeta", inicio: 20, final: 52 },
  { articulo: "Lonchera", inicio: 42, final: 88 },
  { articulo: "Recipiente plastico", inicio: 130, final: 160 },
  { articulo: "Kits Cuidado Oral", inicio: 220, final: 232 },
  { articulo: "Plancha", inicio: 150, final: 232 },
  { articulo: "Caldero", inicio: 30, final: 194 },
  { articulo: "Abanico de piso", inicio: 296, final: 328 },
];

let articuloGanador = "";

// Variables para el modal y formulario
const modal = document.getElementById("popup-modal");
const form = document.getElementById("user-form");
const userNameInput = document.getElementById("user-name");

let nombreUsuario = "";

// Mostrar el modal al cargar la página
window.onload = function () {
  modal.style.display = "flex";
};

// Lista de PINs válidos
const validPins = ["1989", "4708", "6823", "7591", "3664", "3520", "4528", "9033", "3688", "6159", "2258"];

// Manejar el envío del formulario
form.addEventListener("submit", function (e) {
  e.preventDefault();
  nombreUsuario = userNameInput.value.trim(); // Eliminar espacios en blanco

  if (!nombreUsuario) {
    alert("Por favor, completa todos los campos.");
    return;
  }

  // Validar si el PIN es válido
  if (!validPins.includes(nombreUsuario)) {
    alert("PIN inválido. Por favor, inténtelo de nuevo.");
    return;
  }

  // Si el PIN es válido, ocultar el modal y continuar
  modal.style.display = "none";
  document.querySelector(".content").style.display = "block"; // Mostrar el contenido principal
});

// Calcular el ángulo intermedio de un rango
function calcularAngulo(rango) {
  if (rango.inicio > rango.final) {
    return (rango.inicio + (360 - rango.inicio + rango.final) / 2) % 360;
  }
  return rango.inicio + (rango.final - rango.inicio) / 2;
}

// Girar la ruleta a un artículo específico
function girarRuletaAArticulo(nombreArticulo) {
  let rangoSeleccionado = rangos.find(
    (rango) => rango.articulo === nombreArticulo
  );

  if (rangoSeleccionado) {
    let anguloFinal = calcularAngulo(rangoSeleccionado);
    gira = 1440 + anguloFinal; // 1440 asegura varias vueltas antes de detenerse en el artículo ganador
    ruleta.style.transition = "all 5s ease-out";
    ruleta.style.transform = `rotate(${gira}deg)`;
  } else {
    console.log("Artículo no encontrado.");
  }
}

// Fin de la rodada
ruleta.addEventListener("transitionend", function () {
  puntero.style.pointerEvents = "auto"; // Reactivar clics
  ruleta.style.transition = "none";
  giraDos = gira % 360;
  ruleta.style.transform = `rotate(${giraDos}deg)`;

  mostrarConfetiConTexto(articuloGanador);
});

// Obtener dirección IP
async function obtenerIP() {
  const response = await fetch("https://api.ipify.org?format=json");
  const data = await response.json();
  return data.ip;
}

// Obtener artículo ganador
async function obtenerArticuloGanador() {
  const userAgent = navigator.userAgent;
  const ipAddress = await obtenerIP();

  fetch("seleccionar_premio.php", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      user_agent: userAgent,
      ip_address: ipAddress,
      nombre_usuario: nombreUsuario,
    }),
  })
    .then((response) => response.json())
    .then((data) => {
      articuloGanador = data.nombre;
      girarRuletaAArticulo(articuloGanador);
    })
    .catch((error) =>
      console.error("Error al obtener el artículo ganador:", error)
    );
}

// Bloquear interacción con la ruleta mientras gira
puntero.addEventListener("mousedown", function () {
  if (!nombreUsuario) {
    alert("Por favor, completa el formulario antes de continuar.");
    return;
  }

  puntero.style.pointerEvents = "none"; // Bloquear clics
  obtenerArticuloGanador();
});

// Mostrar confeti con texto
function mostrarConfetiConTexto(texto) {
  const duration = 5 * 1000;
  const end = Date.now() + duration;

  (function frame() {
    confetti({
      particleCount: 7,
      angle: 60,
      spread: 55,
      origin: { x: 0 },
      scalar: 1.2,
    });
    confetti({
      particleCount: 7,
      angle: 120,
      spread: 55,
      origin: { x: 1 },
      scalar: 1.2,
    });

    if (Date.now() < end) {
      requestAnimationFrame(frame);
    }
  })();

  console.log("¡Felicidades! Ganaste: " + texto);
}

const fullscreenBtn = document.getElementById("fullscreen-btn");

fullscreenBtn.addEventListener("click", () => {
  if (!document.fullscreenElement) {
    document.documentElement.requestFullscreen().catch((err) => {
      console.error(
        `Error al intentar entrar en pantalla completa: ${err.message}`
      );
    });
  } else {
    document.exitFullscreen().catch((err) => {
      console.error(
        `Error al intentar salir de pantalla completa: ${err.message}`
      );
    });
  }
});

// Mostrar el popup de agradecimiento
function mostrarMensajeAgradecimiento() {
  const modal = document.getElementById("thank-you-modal");
  const mensaje = document.getElementById("thank-you-message");
  const detalles = document.getElementById("thank-you-details");
  const botonRedirigir = document.getElementById("redirect-button");

  // Personalizar contenido del mensaje
  mensaje.textContent = `🎊🎉¡Felicidades!🎉🎊`;
  detalles.textContent = `🎁 Has ganado "${articuloGanador}" 🎁`;

  modal.style.display = "flex"; // Mostrar el modal
  
  botonRedirigir.addEventListener("click", () => {
    // Abre el enlace en una nueva pestaña
    window.open("https://form.jotform.com/250134957677669", "_blank");

    // Actualiza la pestaña actual
    window.location.href = window.location.href; // Redirige a la misma URL actual
  });
}


// Fin de la rodada
ruleta.addEventListener("transitionend", function () {
  puntero.style.pointerEvents = "auto"; // Reactivar clics
  ruleta.style.transition = "none";
  giraDos = gira % 360;
  ruleta.style.transform = `rotate(${giraDos}deg)`;

  mostrarConfetiConTexto(articuloGanador); // Mostrar confeti
  mostrarMensajeAgradecimiento(); // Mostrar mensaje de agradecimiento
});

