/* CARTOP - ajustes responsivos automáticos para todos os módulos */
(function () {
    // Tabelas com 4+ colunas ganham rótulos (data-label) para virarem cartões no celular
    function rotular(t) {
        var ths = t.querySelectorAll('thead th');
        if (ths.length < 4) return;
        var labels = Array.prototype.map.call(ths, function (th) { return (th.textContent || '').trim(); });
        t.classList.add('rt');
        if (t.parentElement) t.parentElement.classList.add('rt-wrap');
        Array.prototype.forEach.call(t.querySelectorAll('tbody tr'), function (tr) {
            if (tr.getAttribute('data-rt') === '1') return;
            tr.setAttribute('data-rt', '1');
            var i = 0;
            Array.prototype.forEach.call(tr.children, function (td) {
                if (td.tagName !== 'TD') return;
                var span = td.colSpan || 1;
                if (span > 1) { td.classList.add('rt-span'); i += span; return; }
                td.setAttribute('data-label', labels[i] || '');
                i++;
            });
        });
    }
    // Rolagem horizontal segura para tabelas sem contêiner
    function envolver(t) {
        var p = t.parentElement;
        if (!p || t.getAttribute('data-rt-wrap')) return;
        t.setAttribute('data-rt-wrap', '1');
        if (p.classList.contains('table-responsive') || p.classList.contains('table-scroll')) return;
        var w = document.createElement('div'); w.className = 'table-scroll';
        p.insertBefore(w, t); w.appendChild(t);
    }
    function varrer() {
        Array.prototype.forEach.call(document.querySelectorAll('table'), function (t) { envolver(t); rotular(t); });
    }
    var agendado = false;
    function agendar() {
        if (agendado) return; agendado = true;
        (window.requestAnimationFrame || setTimeout)(function () { agendado = false; varrer(); });
    }
    function iniciar() {
        varrer();
        new MutationObserver(agendar).observe(document.body, { childList: true, subtree: true });
        // menu do cartório no celular: fecha ao escolher uma opção
        document.addEventListener('click', function (e) {
            var a = e.target.closest && e.target.closest('#main-nav a');
            if (!a || a.hasAttribute('data-bs-toggle')) return;      // abrir um submenu (Remessas, Intimações, Config) NÃO fecha o menu
            if (!a.hasAttribute('data-page') && !a.classList.contains('dropdown-item')) return;   // só fecha ao navegar de verdade
            if (window.innerWidth >= 992 || !window.bootstrap) return;
            var c = document.querySelector('#main-nav .navbar-collapse.show');
            if (c) window.bootstrap.Collapse.getOrCreateInstance(c).hide();
        });
    }
    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', iniciar); else iniciar();
})();
