async function getUserGroups(userId) {
    try {
        const response = await fetch(`/api2/idusers/user/${userId}/groups`);
        if (!response.ok) throw new Error('Ошибка получения групп пользователя');
        
        const groups = await response.json();
        return groups;
    } catch (error) {
        console.error('Ошибка получения групп пользователя:', error);
        return [];
    }
}

// Получаем ID текущего пользователя и загружаем его группы
async function loadCurrentUserGroups() {
    try {
        // Получаем информацию о текущем пользователе
        const userResponse = await fetch('/api/user');
        if (!userResponse.ok) {
            console.error('Ошибка получения информации о пользователе');
            return [];
        }
        
        const userData = await userResponse.json();
        if (!userData.user) {
            console.error('Пользователь не аутентифицирован');
            return [];
        }
        
        const currentUserId = userData.user.id;
        console.log('Текущий пользователь:', userData.user);
        
        // Получаем группы текущего пользователя
        const groups = await getUserGroups(currentUserId);
        console.log('Группы текущего пользователя:', groups);
        
        // Преобразуем массив строк в массив объектов
        const groupsAsObjects = groups.map(groupName => ({
            name: groupName,
            description: '',
            service_type: 'ldap' // Предполагаем LDAP, так как группы из LDAP
        }));
        
        console.log('Группы как объекты:', groupsAsObjects);
        
        // Создаем плавающую кнопку если нужно
        createAdminFloatingButton(groupsAsObjects);
        
        return groupsAsObjects;
    } catch (error) {
        console.error('Ошибка загрузки групп текущего пользователя:', error);
        return [];
    }
}

// Инициализация при загрузке страницы
document.addEventListener('DOMContentLoaded', function() {
    // Проверяем авторизацию и загружаем группы
    checkAuthAndLoadGroups();
});

// Функция проверки авторизации и загрузки групп
async function checkAuthAndLoadGroups() {
    try {
        const response = await fetch('/api/user');
        if (!response.ok) {
            console.log('Пользователь не аутентифицирован');
            return;
        }
        
        const data = await response.json();
        if (data.user) {
            // Загружаем группы текущего пользователя
            loadCurrentUserGroups();
        }
    } catch (error) {
        console.error('Ошибка проверки авторизации:', error);
    }
}

// Создание плавающей кнопки администрации
function createAdminFloatingButton(groups) {
    // Проверяем, есть ли у пользователя группа "LDAP - Администрация"
    const hasAdminGroup = groups.some(group => {
        if (!group || typeof group !== 'object') {
            console.warn('Некорректный формат группы:', group);
            return false;
        }
        return group.name === 'LDAP - Администрация' || 
               (group.name && group.name.includes('Администрация'));
    });
    
    console.log('Есть группа администрации:', hasAdminGroup);
    console.log('Все группы для проверки:', groups);
    
    if (!hasAdminGroup) return;
    
    // Удаляем старую кнопку если существует
    const existingButton = document.getElementById('adminFloatingButton');
    if (existingButton) existingButton.remove();
    
    // Создаем плавающую кнопку
    const button = document.createElement('button');
    button.id = 'adminFloatingButton';
    button.className = 'admin-floating-button';
    button.innerHTML = `
        <i class="fas fa-users-cog"></i>
        <span>Администрация</span>
    `;
    
    // Добавляем обработчик клика
    button.addEventListener('click', () => {
        showAdminGroupsModal(groups);
    });
    
    // Добавляем кнопку в body
    document.body.appendChild(button);
    
    console.log('Плавающая кнопка создана');
}

// Функция для отображения модального окна с группами
function showAdminGroupsModal(groups) {
    // Удаляем старое модальное окно если существует
    const existingModal = document.getElementById('adminGroupsModal');
    if (existingModal) existingModal.remove();
    
    // Создаем модальное окно
    const modal = document.createElement('div');
    modal.id = 'adminGroupsModal';
    modal.className = 'admin-modal';
    
    // Формируем содержимое
    let groupsHTML = '';
    
    if (groups.length === 0) {
        groupsHTML = `
            <div class="no-groups">
                <i class="fas fa-info-circle" style="font-size: 48px; margin-bottom: 15px; color: #cbd5e0;"></i>
                <p>Пользователь не состоит ни в одной группе</p>
            </div>
        `;
    } else {
        groupsHTML = '<div class="admin-group-list">';
        groups.forEach(group => {
            const isAdminGroup = group.name.includes('Администрация');
            groupsHTML += `
                <div class="admin-group-item ${isAdminGroup ? 'admin-highlight' : ''}">
                    <div class="admin-group-name">
                        ${group.name}
                        ${isAdminGroup ? ' <i class="fas fa-crown" style="color: #f59e0b;"></i>' : ''}
                    </div>
                    <div class="admin-group-info">
                        <span>${group.description || 'Нет описания'}</span>
                        <span class="admin-group-type">${getServiceTypeName(group.service_type)}</span>
                    </div>
                </div>
            `;
        });
        groupsHTML += '</div>';
    }
    
    modal.innerHTML = `
        <div class="admin-modal-content">
            <div class="admin-modal-header">
                <div class="admin-modal-title">
                    <i class="fas fa-users"></i>
                    Мои группы
                </div>
                <button class="admin-modal-close" onclick="closeAdminGroupsModal()">
                    <i class="fas fa-times"></i>
                </button>
            </div>
            <div class="admin-modal-body">
                ${groupsHTML}
            </div>
            <div class="admin-modal-footer">
                Всего групп: ${groups.length}
            </div>
        </div>
    `;
    
    // Добавляем стиль для выделения группы администрации
    if (!document.querySelector('#admin-highlight-style')) {
        const highlightStyle = document.createElement('style');
        highlightStyle.id = 'admin-highlight-style';
        highlightStyle.textContent = `
            .admin-highlight {
                border-left: 4px solid #667eea;
                background: linear-gradient(to right, #f8fafc, #f0f9ff) !important;
            }
        `;
        document.head.appendChild(highlightStyle);
    }
    
    // Добавляем модальное окно в body
    document.body.appendChild(modal);
    
    // Показываем модальное окно
    setTimeout(() => {
        modal.classList.add('active');
    }, 10);
    
    // Закрытие по клику на фон
    modal.addEventListener('click', (e) => {
        if (e.target === modal) {
            closeAdminGroupsModal();
        }
    });
    
    // Закрытие по клавише Esc
    document.addEventListener('keydown', function closeOnEsc(e) {
        if (e.key === 'Escape') {
            closeAdminGroupsModal();
            document.removeEventListener('keydown', closeOnEsc);
        }
    });
}

// Функция для закрытия модального окна
function closeAdminGroupsModal() {
    const modal = document.getElementById('adminGroupsModal');
    if (modal) {
        modal.classList.remove('active');
        setTimeout(() => {
            modal.remove();
        }, 300);
    }
}

// Вспомогательная функция для получения имени типа сервиса
function getServiceTypeName(type) {
    switch(type) {
        case 'sberbank': return 'Сбербанк';
        case 'yandex': return 'Яндекс';
        case 'ldap': return 'LDAP';
        default: return 'Прочие';
    }
}

// Тестовая функция для отладки (удалите в продакшене)
async function testCurrentUserGroups() {
    try {
        const response = await fetch('/api/user');
        if (response.ok) {
            const data = await response.json();
            console.log('Текущий пользователь:', data.user);
            
            if (data.user) {
                const groups = await getUserGroups(data.user.id);
                console.log('Группы текущего пользователя:', groups);
            }
        }
    } catch (error) {
        console.error('Тестовая ошибка:', error);
    }
}

// Запускаем тест при загрузке (для отладки)
// testCurrentUserGroups();