// Guarda referencia al form original (si existe)

let formConfirmacion = null;

// Acción dinámica a ejecutar (opt del backend)

let action = null;

// Objeto donde se copian todos los data-* del botón

let dataset = {};

// Recorre todos los botones que disparan el modal

document.querySelectorAll(".btnConfirmar").forEach(boton => {

    boton.addEventListener("click", function () {

        // Inserta el mensaje en el modal

        document.getElementById("modalMensaje").textContent = this.dataset.mensaje;

        // Inserta el título en el modal

        document.getElementById("modalTitulo").textContent = this.dataset.titulo;

        // Busca si el botón pertenece a un form existente

        formConfirmacion = this.closest("form");

        // Obtiene la acción dinámica (si existe)

        action = this.dataset.action || null;

        // Copia TODOS los data-* del botón a un objeto JS

        dataset = { ...this.dataset };

    });
});

// Evento del botón "Confirmar" dentro del modal

document.getElementById("modalBtnConfirmar").addEventListener("click", function (e) {

    // Evita el submit automático del botón

    e.preventDefault();

    // CASO 1: FORM EXISTENTE

    // Si hay un form padre y no hay acción dinámica

    if (formConfirmacion && !action) {

        // Envía directamente ese form

        formConfirmacion.submit();
        return;
    }

    // CASO 2: FORM DINÁMICO

    if (action) {

        // Form global del modal

        const form = document.getElementById("formConfirmacionGlobal");

        // Contenedor donde se insertan inputs ocultos

        const container = document.getElementById("modalDynamicInputs");

        // Define la URL de envío con el parámetro opt

        form.action = `index.php?opt=${action}`;

        // Limpia inputs anteriores para evitar duplicados

        container.innerHTML = '';

        // Recorre todas las claves del dataset

        Object.keys(dataset).forEach(key => {

            // Ignora atributos que no deben enviarse
            
            if ([
                'action',
                'mensaje',
                'titulo',
                'bsToggle',
                'bsTarget'
            ].includes(key)) return;

            // Crea un input hidden por cada data-*

            const input = document.createElement('input');

            input.type = 'hidden';       // oculto
            input.name = key;            // nombre (ej: mano_obra, etc)
            input.value = dataset[key];  // valor correspondiente

            // Lo agrega al form

            container.appendChild(input);
        });

        // Envía el form dinámico

        form.submit();
    }
});