/**
 * Инициализация базового шаблона: боковая панель, язык, Service Worker.
 * Вынесено из base.html для соблюдения правил проекта (без inline-скриптов).
 */
(function () {
    'use strict';

    document.addEventListener('DOMContentLoaded', function () {
        var menuToggle = document.getElementById('menuToggle');
        var sidebarToggle = document.getElementById('sidebarToggle');
        var sidebar = document.getElementById('sidebar');
        var sidebarOverlay = document.getElementById('sidebarOverlay');

        function openSidebar() {
            sidebar.classList.add('active');
            sidebarOverlay.classList.add('active');
            document.body.style.overflow = 'hidden';
        }

        function closeSidebar() {
            sidebar.classList.remove('active');
            sidebarOverlay.classList.remove('active');
            document.body.style.overflow = '';
        }

        if (menuToggle) {
            menuToggle.addEventListener('click', openSidebar);
        }

        if (sidebarToggle) {
            sidebarToggle.addEventListener('click', closeSidebar);
        }

        if (sidebarOverlay) {
            sidebarOverlay.addEventListener('click', closeSidebar);
        }

        // Закрытие при клике на ссылку на мобильных
        if (window.innerWidth < 992) {
            var navLinks = document.querySelectorAll('.sidebar-nav .nav-link');
            navLinks.forEach(function (link) {
                link.addEventListener('click', closeSidebar);
            });
        }
    });

    // Переключатель языка (NFR-016). Синхронизация с Vue-админкой: localStorage + custom event.
    document.querySelectorAll('[data-lang]').forEach(function (el) {
        el.addEventListener('click', function (e) {
            e.preventDefault();
            var lang = this.getAttribute('data-lang');
            if (!window.__i18n || !window.__i18n.supported.includes(lang)) return;
            window.__i18n.load(lang).then(function () {
                window.__i18n.setLocale(lang);
                document.documentElement.lang = lang === 'en' ? 'en' : 'ru';
                window.__i18n.apply();
                try { localStorage.setItem('cascad360_admin_locale', lang); } catch (err) { /* ignore */ }
                window.dispatchEvent(new CustomEvent('admin-locale-changed', { detail: { locale: lang } }));
            });
        });
    });

    // Регистрация Service Worker (NFR-016, PWA)
    if ('serviceWorker' in navigator) {
        var swUrl = document.querySelector('meta[name="sw-url"]');
        if (swUrl) {
            navigator.serviceWorker.register(swUrl.getAttribute('content')).catch(function () { /* ignore */ });
        }
    }
})();
