(function () {
    'use strict';

    // Tab-Umschaltung der Ansprechpartner-Bereiche (Fußball/Turnen). Ohne JS
    // bleibt die Leiste hidden und beide Sektionen stehen untereinander —
    // reine Progressive Enhancement (gleiches Muster wie news-filter.js).
    // Deep-Links (#kontakt-turnen) aktivieren den passenden Tab.
    function init(root) {
        var bar = root.querySelector('[data-persons-tabs-bar]');
        if (!bar) { return; }

        var buttons = [].slice.call(bar.querySelectorAll('[data-tab-target]'));
        if (buttons.length < 2) { return; }

        var sections = buttons.map(function (btn) {
            return root.querySelector('#' + btn.getAttribute('data-tab-target'));
        });
        if (sections.some(function (s) { return !s; })) { return; }

        // Sichtbare Sektions-Überschriften weichen den Tabs (bleiben für
        // Screenreader/Outline als visually-hidden erhalten).
        root.querySelectorAll('.persons h2').forEach(function (h) {
            h.classList.add('visually-hidden');
        });

        function activate(index, writeHash) {
            buttons.forEach(function (btn, i) {
                btn.setAttribute('aria-pressed', i === index ? 'true' : 'false');
                sections[i].hidden = i !== index;
            });
            // Aktiven Bereich in die URL spiegeln (replaceState statt Hash-
            // Zuweisung: kein Scroll-Sprung, kein History-Eintrag pro Klick) —
            // #kontakt-turnen ist damit direkt teilbar.
            if (writeHash) {
                window.history.replaceState(null, '', '#' + buttons[index].getAttribute('data-tab-target'));
            }
        }

        buttons.forEach(function (btn, i) {
            btn.addEventListener('click', function () { activate(i, true); });
            btn.addEventListener('keydown', function (e) {
                var next = null;
                if (e.key === 'ArrowRight') { next = (i + 1) % buttons.length; }
                if (e.key === 'ArrowLeft')  { next = (i - 1 + buttons.length) % buttons.length; }
                if (e.key === 'Home')       { next = 0; }
                if (e.key === 'End')        { next = buttons.length - 1; }
                if (next !== null) { e.preventDefault(); buttons[next].focus(); }
            });
        });

        // Deep-Link auf eine Sektion (#kontakt-turnen) → passenden Tab öffnen.
        function fromHash() {
            var id = window.location.hash.replace('#', '');
            var index = buttons.findIndex(function (btn) {
                return btn.getAttribute('data-tab-target') === id;
            });
            activate(index >= 0 ? index : 0);
        }

        window.addEventListener('hashchange', fromHash);
        bar.hidden = false;
        fromHash();
    }

    document.querySelectorAll('[data-persons-tabs]').forEach(init);
}());
