/* global Swal */

function validarFormularioEditarGalonera(evento) {
  evento.preventDefault();

  // CÓDIGO (obligatorio, solo letras/números/guion, 3-50 chars)
  const codigoEl = document.getElementById('codigo');
  const codigoRaw = (codigoEl?.value || '').trim();
  const codigo = codigoRaw.toUpperCase();
  const reCodigo = /^[A-Z0-9\-]{3,50}$/;

  if (!codigo) {
    Swal.fire({
      width: '23rem',
      position: 'center',
      icon: 'info',
      title: 'Por favor, ingrese el Código',
      showConfirmButton: false,
      timer: 1500
    });
    return;
  }
  if (!reCodigo.test(codigo)) {
    Swal.fire({
      width: '26rem',
      position: 'center',
      icon: 'info',
      title: 'Código inválido',
      text: 'Use solo letras, números o guiones (mín. 3 y máx. 50 caracteres).',
      showConfirmButton: false,
      timer: 2200
    });
    return;
  }

  // CAPACIDAD (obligatorio, número entre 0 y 9999.99)
  const capEl = document.getElementById('capacidad_litros');
  let capStr = (capEl?.value || '').trim().replace(',', '.');
  const capacidad = parseFloat(capStr);

  if (!capStr.length || isNaN(capacidad)) {
    Swal.fire({
      width: '24rem',
      position: 'center',
      icon: 'info',
      title: 'Ingrese la capacidad en litros',
      showConfirmButton: false,
      timer: 1800
    });
    return;
  }
  if (capacidad < 0 || capacidad > 9999.99) {
    Swal.fire({
      width: '26rem',
      position: 'center',
      icon: 'info',
      title: 'Capacidad fuera de rango',
      text: 'Debe estar entre 0 y 9999.99 litros.',
      showConfirmButton: false,
      timer: 2200
    });
    return;
  }

  // TIPO DE COMBUSTIBLE (obligatorio)
  const tipoSel = document.getElementById('tipo_combustible_id');
  const tipo = (tipoSel?.value || '').trim();
  if (!tipo) {
    Swal.fire({
      width: '24rem',
      position: 'center',
      icon: 'info',
      title: 'Seleccione el tipo de combustible',
      showConfirmButton: false,
      timer: 1800
    });
    return;
  }

  // Normaliza antes de enviar
  if (codigoEl) codigoEl.value = codigo;
  if (capEl) capEl.value = capacidad.toFixed(2);

  // ✅ Todo OK, enviar
  document.getElementById('Editar_Galonera').submit();
}

document.addEventListener("DOMContentLoaded", function () {
  const form = document.getElementById("Editar_Galonera");
  if (form) {
    form.addEventListener("submit", validarFormularioEditarGalonera);
  }

  // Validaciones en tiempo real
  const codigoInput = document.getElementById("codigo");
  if (codigoInput) {
    codigoInput.addEventListener("input", function () {
      // Mayúsculas y solo A-Z, 0-9, guion; máximo 50 chars
      this.value = this.value
        .toUpperCase()
        .replace(/[^A-Z0-9\-]/g, '')
        .slice(0, 50);
    });
  }

  const capInput = document.getElementById("capacidad_litros");
  if (capInput) {
    capInput.addEventListener("input", function () {
      // Permite números y un punto decimal; limita a dos decimales visibles
      let v = this.value.replace(',', '.').replace(/[^0-9.]/g, '');
      const parts = v.split('.');
      if (parts.length > 2) {
        v = parts[0] + '.' + parts.slice(1).join('');
      }
      // No forzamos dos decimales aquí para no molestar al escribir
      this.value = v;
    });
    capInput.addEventListener("blur", function () {
      let n = parseFloat((this.value || '').replace(',', '.'));
      if (!isNaN(n)) {
        if (n < 0) n = 0;
        if (n > 9999.99) n = 9999.99;
        this.value = n.toFixed(2);
      }
    });
  }

  const tipoSelect = document.getElementById("tipo_combustible_id");
  if (tipoSelect) {
    tipoSelect.addEventListener("change", function () {
      // Evita seleccionar vacío si el usuario abre y cierra el select
      if (!this.value) {
        this.setCustomValidity('Seleccione un tipo de combustible');
      } else {
        this.setCustomValidity('');
      }
    });
  }
});
