// function cambiarTab(evt, tabId) {
//   let contenidos = document.getElementsByClassName("tab-contenido");
//   for (let i = 0; i < contenidos.length; i++) {
//     contenidos[i].style.display = "none";
//   }
//   let botones = document.getElementsByClassName("tab-btn");
//   for (let i = 0; i < botones.length; i++) {
//     botones[i].classList.remove("activo");
//   }
//   document.getElementById(tabId).style.display = "block";
//   evt.currentTarget.classList.add("activo");
// }
function cambiarTab(event, tabId) {
    // ... Tu lógica existente para ocultar tablas y poner clases activas en los botones ...

    // 🆕 NUEVA LÍNEA DE CONTROL: Guardamos la pestaña en el formulario
    // Extraemos si es 'enviadas', 'recibidas' o 'papelera' quitando el prefijo 'tab-'
    const nombreTab = tabId.replace('tab-', '');
    const inputTab = document.getElementById('tab_actual');
    if (inputTab) {
        inputTab.value = nombreTab;
    }
}

function mostrarDetalle(texto) {
    document.getElementById("textoDetalle").innerText = texto;
    document.getElementById("modalDetalle").style.display = "block";
}

function cerrarModalDetalle() {
    document.getElementById("modalDetalle").style.display = "none";
}


// 1. CONSTANTES GLOBALES (Unificadas letra por letra con tu HTML)
const tipoCarta = document.getElementById("tipoCarta");
const remitente = document.getElementById("campoRemitente");
const destinatario = document.getElementById("campoDestinatario");
const campoGestion = document.getElementById("campoGestion");
const campoPlantillasWord = document.getElementById("campoPlantillasWord");

// 🔥 ATENCIÓN: Asegúrate de que el ID en tu HTML sea "numero_carta" o cambia esta variable
const numeroCarta = document.getElementById("numero_carta") || document.getElementById("numeroCarta");

// 2. CONTROL DEL FORMULARIO PRINCIPAL (Enviadas vs Recibidas)
function cambiarFormulario() {
    if (!tipoCarta || !numeroCarta) return;

    if (tipoCarta.value === "recibida") {
        if (remitente) remitente.style.display = "block";
        if (destinatario) destinatario.style.display = "none";
        if (campoGestion) campoGestion.style.display = "none";
        if (campoPlantillasWord) campoPlantillasWord.style.display = "none";

        // En recibidas siempre es manual y editable libremente
        // Ocultamos o desmarcamos el selector de modo si existiera para recibidas
        const contenedorModo = document.getElementById("contenedor-modo-numero");
        if (contenedorModo) contenedorModo.style.display = "none";

        numeroCarta.readOnly = false;
        numeroCarta.style.backgroundColor = "#ffffff";
        numeroCarta.value = "";
        numeroCarta.placeholder = "Ej: HC.N° 20/2026";
    } else {
        if (remitente) remitente.style.display = "none";
        if (destinatario) destinatario.style.display = "block";
        if (campoGestion) campoGestion.style.display = "block";
        if (campoPlantillasWord) campoPlantillasWord.style.display = "block";

        // En enviadas mostramos las opciones de modo (Auto / Manual)
        const contenedorModo = document.getElementById("contenedor-modo-numero");
        if (contenedorModo) contenedorModo.style.display = "block";

        // Respetar el radio button que esté seleccionado actualmente
        const radioAuto = document.querySelector('input[name="modo_numero"]:checked');
        if (radioAuto && radioAuto.value === "manual") {
            configurarModoNumero(false);
        } else {
            configurarModoNumero(true);
        }
    }
}

// 3. CONTROL DE MODO HÍBRIDO (Automático vs Manual)
function configurarModoNumero(esAutomatico) {
    // 🆕 CAMBIO AQUÍ: Buscamos la caja de texto por sus dos posibles nombres para que no falle
    const inputNumero = document.getElementById("numero_carta") || document.getElementById("numeroCarta") || numeroCarta;
    if (!inputNumero) return;

    // Validar que solo aplique si estamos en modo "enviada"
    if (tipoCarta && tipoCarta.value === "recibida") return;

    if (esAutomatico) {
        inputNumero.readOnly = true;
        inputNumero.style.backgroundColor = "#edf2f7"; // Fondo gris de bloqueo
        inputNumero.placeholder = "Calculando...";

        // 🔥 CAMBIO AQUÍ: Usamos la variable unificada inputNumero
        if (typeof cargarCorrelativoEnviado === "function") {
            cargarCorrelativoEnviado(); // Ejecuta la petición AJAX remota
        }
    } else {
        inputNumero.readOnly = false;
        inputNumero.style.backgroundColor = "#ffffff"; // Fondo blanco para escribir
        inputNumero.value = ""; // Limpiar para entrada manual o S/N
        inputNumero.placeholder = "Ej: 21 o S/N";
        inputNumero.focus();
    }
}

// 4. PETICIÓN AJAX DEL CORRELATIVO AUTOMÁTICO
function cargarCorrelativoEnviado() {
    if (!numeroCarta) return;

    const inputGestion = document.getElementById("gestionAnio") || document.getElementById("gestion");
    if (!inputGestion) {
        numeroCarta.value = "Error Año";
        return;
    }

    const gestion = inputGestion.value;

    fetch('buscar_correlativo.php?gestion=' + gestion)
        .then(response => response.text())
        .then(siguiente_numero => {
            // Solo asignamos el número si el modo automático sigue activo
            const radioAuto = document.querySelector('input[name="modo_numero"]:checked');
            if (!radioAuto || radioAuto.value === "auto") {
                numeroCarta.value = siguiente_numero.trim();
            }
        })
        .catch(error => {
            console.error('Error al traer correlativo:', error);
            numeroCarta.value = "Error";
        });
}

// Escuchadores de eventos estructurales
if (tipoCarta) tipoCarta.addEventListener("change", cambiarFormulario);

// Si cambian el año en el formulario de enviadas, recalculamos el correlativo automático inmediatamente
const inputAnio = document.getElementById("gestionAnio") || document.getElementById("gestion");
if (inputAnio) {
    inputAnio.addEventListener("change", function () {
        const radioAuto = document.querySelector('input[name="modo_numero"]:checked');
        if (radioAuto && radioAuto.value === "auto" && tipoCarta.value === "enviada") {
            cargarCorrelativoEnviado();
        }
    });
}

// Carga inicial al abrir el sistema
document.addEventListener("DOMContentLoaded", function () {
    cambiarFormulario();
});

// 5. PROCESO DE PLANTILLAS WORD
function descargarPlantillaSeleccionada() {
    const selector = document.getElementById("selectorPlantilla");
    if (!selector) return;

    const rutaArchivo = selector.value;
    if (rutaArchivo === "") {
        alert("Por favor, seleccione una plantilla de la lista antes de descargar.");
        return;
    }

    const enlaceTemporal = document.createElement("a");
    enlaceTemporal.href = rutaArchivo;
    enlaceTemporal.download = rutaArchivo.split('/').pop();
    document.body.appendChild(enlaceTemporal);
    enlaceTemporal.click();
    document.body.removeChild(enlaceTemporal);
}



// 6. GESTIÓN DEL MODAL NUEVA EMPRESA
function abrirModalEmpresa() {
    document.getElementById("modalEmpresa").style.display = "block";
}

function cerrarModalEmpresa() {
    document.getElementById("modalEmpresa").style.display = "none";
}

function guardarEmpresa() {
    let nombre = document.getElementById("nombreEmpresa").value;
    let direccion = document.getElementById("direccionEmpresa").value;
    let telefono = document.getElementById("telefonoEmpresa").value;

    fetch("guardar_empresa.php", {
            method: "POST",
            headers: {
                "Content-Type": "application/x-www-form-urlencoded"
            },
            body: `nombre=${encodeURIComponent(nombre)}&direccion=${encodeURIComponent(direccion)}&telefono=${encodeURIComponent(telefono)}`
        })
        .then(res => res.json())
        .then(data => {
            if (data.success) {
                alert("Empresa creada");
                let selectR = document.querySelector("select[name='id_remitente']");
                let selectD = document.querySelector("select[name='id_destinatario']");
                let option = new Option(data.nombre, data.id);

                if (selectR) selectR.add(option.cloneNode(true));
                if (selectD) selectD.add(option.cloneNode(true));

                cerrarModalEmpresa();

                // Limpiar inputs del modal
                document.getElementById("nombreEmpresa").value = "";
                document.getElementById("direccionEmpresa").value = "";
                document.getElementById("telefonoEmpresa").value = "";
            } else {
                alert("Error al guardar");
            }
        });
}

// 7. GESTIÓN DEL MODAL EDITAR CARTA
function abrirModalEditar(id, tipo, idEmpresa, fecha, descripcion, nombrePdf) {
    document.getElementById("id_editar").value = id;
    document.getElementById("tipo_carta_editar").value = tipo;
    document.getElementById("empresa_editar").value = idEmpresa;
    document.getElementById("fecha_editar").value = fecha;
    document.getElementById("descripcion_editar").value = descripcion;
    document.getElementById("texto_pdf_actual").textContent = "Archivo actual: " + nombrePdf;

    const labelEmpresa = document.getElementById("label_empresa_editar");
    if (labelEmpresa) {
        labelEmpresa.textContent = (tipo === 'enviada') ? "Empresa Destinataria:" : "Empresa Remitente:";
    }

    document.getElementById("modalEditarCarta").style.display = "flex";
}

function cerrarModalEditar() {
    document.getElementById("modalEditarCarta").style.display = "none";
}

// Cerrar modales haciendo clic afuera
window.onclick = function (e) {
    let modalEmpresa = document.getElementById("modalEmpresa");
    let modalEditar = document.getElementById("modalEditarCarta");
    if (e.target === modalEmpresa) modalEmpresa.style.display = "none";
    if (e.target === modalEditar) modalEditar.style.display = "none";
}



function filtrarTablaCombinado() {
    const textoFiltro = document.getElementById("buscadorTexto").value.toLowerCase().trim();
    const fechaFiltro = document.getElementById("buscadorFecha").value;

    // 🔬 DIAGNÓSTICO 1: Ver si captura bien los inputs
    console.log("🔍 Buscando texto:", textoFiltro, "| Fecha:", fechaFiltro);

    let tbodyId = "tbody-enviadas";

    // Verificamos cuál pestaña está visible en tu HTML real
    const tabEnviadas = document.getElementById("tab-enviadas");
    const tabRecibidas = document.getElementById("tab-recibidas");
    const tabPapelera = document.getElementById("tab-papelera");

    if (tabRecibidas && tabRecibidas.style.display === "block") {
        tbodyId = "tbody-recibidas";
    } else if (tabPapelera && tabPapelera.style.display === "block") {
        tbodyId = "tbody-papelera";
    }

    // 🔬 DIAGNÓSTICO 2: Ver qué contenedor decide filtrar
    console.log("📂 Pestaña detectada activa:", tbodyId);

    const tbody = document.getElementById(tbodyId);
    if (!tbody) {
        console.error("❌ ERROR: No se encontró el elemento HTML con ID:", tbodyId);
        return;
    }

    const filas = tbody.getElementsByTagName("tr");
    console.log("📊 Total filas encontradas en esta pestaña:", filas.length);

    let fechaBuscada = "";
    if (fechaFiltro) {
        const partes = fechaFiltro.split("-");
        fechaBuscada = partes[2] + "/" + partes[1] + "/" + partes[0];
    }

    for (let i = 0; i < filas.length; i++) {
        const fila = filas[i];
        if (fila.cells.length < 2) continue;

        const textoFila = fila.textContent.toLowerCase();
        const celdaFecha = fila.cells[2] ? fila.cells[2].textContent.trim() : "";

        const coincideTexto = (textoFiltro === "") || textoFila.includes(textoFiltro);
        const coincideFecha = (fechaBuscada === "") || celdaFecha.includes(fechaBuscada);

        if (coincideTexto && coincideFecha) {
            fila.style.display = "";
        } else {
            fila.style.display = "none";
        }
    }
}
document.addEventListener("DOMContentLoaded", function () {
    // Averiguar si venimos de un filtro de una pestaña específica
    const urlParams = new URLSearchParams(window.location.search);
    const tabUrl = urlParams.get('tab'); // Puede ser 'enviadas', 'recibidas' o 'papelera'

    if (tabUrl) {
        // Simulamos un clic o llamamos a tu función para abrir la pestaña correcta
        const botonTab = document.getElementById('btn-tab-' + tabUrl);
        if (botonTab) {
            botonTab.click();
        }
    } else {
        // Comportamiento por defecto original de tu sistema
        cambiarFormulario();
    }
});