
// Система управления устройствами
let deviceId = null;

// Инициализация системы устройств
function initDeviceSystem() {
    debugLog('Инициализация системы устройств...');
    
    // Пытаемся получить ID из localStorage
    try {
        const storedId = localStorage.getItem('device_id');
        if (storedId && storedId !== 'null') {
            deviceId = parseInt(storedId);
            if (!isNaN(deviceId) && deviceId > 0) {
                updateDeviceNumber();
                debugLog('ID устройства из localStorage: ' + deviceId);
                return;
            }
        }
    } catch (e) {
        debugLog('Ошибка localStorage: ' + e.message);
    }
    
    // Если ID нет или некорректный, запрашиваем новый
    requestNewDeviceId();
}

// Запрос нового ID устройства
function requestNewDeviceId() {
    debugLog('Запрос нового ID устройства...');
    
    fetch('index.php?get_device_id&t=' + Date.now())
        .then(response => {
            if (!response.ok) {
                throw new Error('HTTP ' + response.status);
            }
            return response.json();
        })
        .then(data => {
            debugLog('Получены данные от сервера: ' + JSON.stringify(data));
            
            if (data && data.device_id) {
                deviceId = parseInt(data.device_id);
                
                if (isNaN(deviceId) || deviceId <= 0) {
                    deviceId = 1; // Устанавливаем минимальный ID
                }
                
                // Сохраняем в localStorage
                try {
                    localStorage.setItem('device_id', deviceId);
                    debugLog('ID устройства сохранен: ' + deviceId);
                } catch (e) {
                    debugLog('Ошибка сохранения в localStorage: ' + e.message);
                }
                
                updateDeviceNumber();
            } else {
                debugLog('Некорректные данные от сервера, используем резервный ID');
                deviceId = Math.floor(Math.random() * 99) + 1;
                updateDeviceNumber();
            }
        })
        .catch(error => {
            debugLog('Ошибка получения ID устройства: ' + error.message);
            // Используем случайный ID как резерв
            deviceId = Math.floor(Math.random() * 99) + 1;
            updateDeviceNumber();
        });
}

// Получение ID устройства (всегда возвращает валидное число)
function getDeviceId() {
    if (deviceId === null || deviceId === undefined || isNaN(deviceId)) {
        debugLog('ВНИМАНИЕ: deviceId некорректный (' + deviceId + '), используем 1');
        deviceId = 1;
    }
    return deviceId;
}

// Обновление номера устройства в интерфейсе
function updateDeviceNumber() {
    const deviceNumberElement = document.getElementById('device-number');
    if (deviceNumberElement) {
        deviceNumberElement.textContent = deviceId || '1';
    }
    debugLog('Обновлен номер устройства в интерфейсе: ' + (deviceId || '1'));
}

// Сброс ID устройства (для отладки)
function resetDeviceId() {
    try {
        localStorage.removeItem('device_id');
        deviceId = null;
        debugLog('ID устройства сброшен');
        requestNewDeviceId();
    } catch (e) {
        debugLog('Ошибка сброса ID: ' + e.message);
    }
}

// Функция для показа номера устройства на экране
function showDeviceNumber() {
    const display = document.getElementById('content-display');
    const id = getDeviceId();
    
    display.style.backgroundColor = '#000080'; // Синий фон
    display.innerHTML = `
        <div class="device-number-display" style="color: white;">
            ${id}
        </div>
    `;
    
    debugLog('Показан номер устройства: ' + id);
}

// Принудительная установка ID устройства (для отладки)
function setDeviceId(id) {
    const newId = parseInt(id);
    if (!isNaN(newId) && newId > 0) {
        deviceId = newId;
        try {
            localStorage.setItem('device_id', deviceId);
            debugLog('ID устройства принудительно установлен: ' + deviceId);
        } catch (e) {
            debugLog('Ошибка сохранения принудительного ID: ' + e.message);
        }
        updateDeviceNumber();
        return true;
    }
    return false;
}