document.addEventListener("DOMContentLoaded", () => {
  const telefonoInputs = document.querySelectorAll('input[type="tel"], .telefono');
  const valesInput = document.getElementById("vales");
  const sueldoInput = document.getElementById("sueldo_mensual");
  const correoInput = document.getElementById("correo_personal");
  const tarjetaInput = document.getElementById("tarjeta"); // Usar esta única declaración
  const hijosInput = document.getElementById("numero_hijos");

    // 📞 Aplicar máscara: (999) 9999 999 a todos los campos telefónicos
  telefonoInputs.forEach(input => {
    input.addEventListener("input", (e) => {
      let value = e.target.value.replace(/\D/g, "");
      if (value.length > 0) value = "(" + value;
      if (value.length > 4) value = value.slice(0, 4) + ") " + value.slice(4);
      if (value.length > 10) value = value.slice(0, 10) + " " + value.slice(10);
      e.target.value = value.slice(0, 15);
    });
  });

// 💰 Formato para sueldo y vales con $
const formatCurrency = (input) => {
  input.addEventListener("input", (e) => {
    let value = e.target.value.replace(/[^0-9]/g, "");

    if (value === "") {
      e.target.value = "";
      return;
    }

    // Limitar a 99999999 centavos = $999,999.99
    let numero = parseInt(value);
    if (numero > 99999999) numero = 99999999;

    e.target.value = new Intl.NumberFormat("es-MX", {
      style: "currency",
      currency: "MXN",
      minimumFractionDigits: 2
    }).format(numero / 100);
  });
};

if (sueldoInput) formatCurrency(sueldoInput);
if (valesInput) formatCurrency(valesInput);


  // 📧 Validación de correo
  if (correoInput) {
    let correoAlertMostrada = false;
    correoInput.addEventListener("blur", (e) => {
      const value = e.target.value.trim();
      const valido = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value);
      if (!valido && !correoAlertMostrada) {
        correoAlertMostrada = true;
        Swal.fire("Correo inválido", "Por favor escribe un correo válido con @dominio.com", "warning").then(() => {
          correoInput.focus();
          correoAlertMostrada = false;
        });
      }
    });
  }

  // 💳 Solo 16 dígitos en tarjeta
  if (tarjetaInput) {
    tarjetaInput.addEventListener("input", (e) => {
      e.target.value = e.target.value.replace(/\D/g, "").slice(0, 16);
    });
  }

  // 👶 No permitir números negativos en hijos
  if (hijosInput) {
    hijosInput.addEventListener("input", (e) => {
      const value = parseInt(e.target.value);
      if (value < 0) e.target.value = 0;
    });
  }

  // Validación dinámica para Tarjeta Banorte Asignada
  const form = document.getElementById("formDatosRocasa");
  const cuentaInput = document.getElementById("numeroCuenta");
  const banorteCheckbox = document.getElementById("banorte_asignada");

  if (form && tarjetaInput && cuentaInput && banorteCheckbox) {
    function toggleObligatorios() {
      if (banorteCheckbox.checked) {
        tarjetaInput.required = true;
        cuentaInput.required = false;
        tarjetaInput.parentElement.querySelector("label").classList.add("fw-bold", "text-danger");
        cuentaInput.parentElement.querySelector("label").classList.remove("fw-bold", "text-danger");
      } else {
        tarjetaInput.required = false;
        cuentaInput.required = true;
        cuentaInput.parentElement.querySelector("label").classList.add("fw-bold", "text-danger");
        tarjetaInput.parentElement.querySelector("label").classList.remove("fw-bold", "text-danger");
      }
    }
    banorteCheckbox.addEventListener("change", toggleObligatorios);
    toggleObligatorios();

    form.addEventListener("submit", function(e) {
      if (banorteCheckbox.checked && tarjetaInput.value.trim().length !== 16) {
        e.preventDefault();
        Swal.fire("Campo obligatorio", "Debes ingresar los 16 dígitos de la tarjeta Banorte.", "warning");
        tarjetaInput.focus();
        return false;
      }
      if (!banorteCheckbox.checked && cuentaInput.value.trim() === "") {
        e.preventDefault();
        Swal.fire("Campo obligatorio", "Debes ingresar el número de cuenta.", "warning");
        cuentaInput.focus();
        return false;
      }
    });
  }
});
