<?php
ob_start();
ini_set('display_errors', 0); // Oculta erros na tela para não quebrar o layout
// --- CORREÇÃO DE MEMÓRIA PARA CATEGORIAS GIGANTES DE FILMES ---
ini_set('memory_limit', '-1'); 
set_time_limit(0);

session_start();
require_once 'config.php'; 

$pdo = getConexaoAtiva(); // Banco Principal (Onde ficam os streams e series)
$pdo_int = getConexaoInterna(); // Banco Local (Onde ficam as configurações do painel)

$pdo->exec("SET NAMES utf8mb4");
$pdo_int->exec("SET NAMES utf8mb4");

// ====================================================================
// INTELIGÊNCIA ARTIFICIAL: DETECTA SE É XUI ONE OU XTREAM UI
// ====================================================================
$modo_ativo = 'interno';
try {
    $modo_ativo = $pdo_int->query("SELECT modo_ativo FROM configuracoes LIMIT 1")->fetchColumn() ?: 'interno';
} catch (Exception $e) {}

$tabela_revendedores = ($modo_ativo === 'xui') ? '`users`' : '`reg_users`';

// --- INÍCIO: BUSCA DE PERSONALIZAÇÃO DINÂMICA (No Banco Interno) ---
$nome_painel = 'TOP IPTV';
$logo_url = '';
$cor_primaria = '#007bff';

try {
    $tabela_existe = $pdo_int->query("SHOW TABLES LIKE 'painel_config'")->rowCount() > 0;
    if ($tabela_existe) {
        $config_painel = $pdo_int->query("SELECT * FROM painel_config LIMIT 1")->fetch(PDO::FETCH_ASSOC);
        if ($config_painel) {
            $nome_painel = !empty($config_painel['nome_painel']) ? $config_painel['nome_painel'] : $nome_painel;
            $logo_url = !empty($config_painel['logo_url']) ? $config_painel['logo_url'] : $logo_url;
            $cor_primaria = !empty($config_painel['cor_primaria']) ? $config_painel['cor_primaria'] : $cor_primaria;
        }
    }
} catch (Exception $e) {}
// --- FIM: BUSCA DE PERSONALIZAÇÃO DINÂMICA ---


// Proteção: Somente Administradores
if (!isset($_SESSION['user_id']) || $_SESSION['user_role'] !== 'admin') { 
    header("Location: login.php"); exit; 
}

$nome_usuario = $_SESSION['username'] ?? 'Usuário';
$role = $_SESSION['user_role'];
$user_id_logado = $_SESSION['user_id'];

// Busca créditos do usuário para o menu lateral na tabela correta
try {
    $user_credits = $pdo->query("SELECT credits FROM $tabela_revendedores WHERE id = " . intval($user_id_logado))->fetchColumn() ?: 0;
} catch (Exception $e) { 
    $user_credits = 0; 
}

// ==========================================
// 1. REQUISIÇÃO AJAX: BUSCAR ITENS DA CATEGORIA
// ==========================================
if (isset($_GET['ajax_get_items'])) {
    error_reporting(0); 
    while (ob_get_level() > 0) { ob_end_clean(); } 
    
    header('Content-Type: application/json; charset=utf-8');
    header('Cache-Control: no-cache, no-store, must-revalidate'); 
    header('Pragma: no-cache');
    header('Expires: 0');
    
    $cat_id = $_GET['cat_id'] ?? '';
    $type = $_GET['cat_type'] ?? 'stream'; 

    $tabela_series = ($modo_ativo === 'xui') ? 'streams_series' : 'series';

    try {
        if ($modo_ativo === 'xui') {
            // CORREÇÃO XUI ONE: Busca simplificada. Como o ID da categoria é único, basta procurar ele literalmente dentro da coluna.
            $busca_like = "%$cat_id%";
            
            if ($type === 'series') {
                $stmt = $pdo->prepare("SELECT id, title as name, cover as logo FROM $tabela_series WHERE category_id LIKE ? ORDER BY title ASC");
            } else {
                // Serve tanto para Live (Canais) quanto para Movie (VOD) pois ambos ficam na tabela streams
                $stmt = $pdo->prepare("SELECT id, stream_display_name as name, stream_icon as logo FROM streams WHERE category_id LIKE ? ORDER BY stream_display_name ASC");
            }
            $stmt->execute([$busca_like]);
            
        } else {
            // BUSCA XTREAM UI NORMAL
            if ($type === 'series') {
                $stmt = $pdo->prepare("SELECT id, title as name, cover as logo FROM series WHERE category_id = ? ORDER BY title ASC");
            } else {
                $stmt = $pdo->prepare("SELECT id, stream_display_name as name, stream_icon as logo FROM streams WHERE category_id = ? ORDER BY stream_display_name ASC");
            }
            $stmt->execute([$cat_id]);
        }
        
        $resultados = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
        // CORREÇÃO ANTI-FALHA DE JSON: Limpa caracteres corrompidos que vêm de listas M3U e quebram a tela
        foreach ($resultados as &$r) {
            $r['name'] = mb_convert_encoding($r['name'] ?? '', 'UTF-8', 'UTF-8');
        }
        
        $json = json_encode(['status' => 'success', 'data' => $resultados]);
        
        if ($json === false) {
             echo json_encode(['status' => 'error', 'message' => 'Erro interno ao processar texto dos filmes.']);
        } else {
             echo $json;
        }

    } catch (Exception $e) {
        echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
    }
    exit; 
}

// ==========================================
// 2. PROCESSAR A MUDANÇA EM MASSA
// ==========================================
$msg = "";
if (isset($_POST['mover_items'])) {
    $dest_cat_id = $_POST['dest_category'] ?? '';
    $item_ids = $_POST['item_ids'] ?? [];
    $cat_type = $_POST['cat_type'] ?? 'stream';

    if (!empty($item_ids) && $dest_cat_id !== '') {
        try {
            $tabela_series = ($modo_ativo === 'xui') ? 'streams_series' : 'series';
            
            // CORREÇÃO XUI ONE: Transforma o ID de destino no formato JSON ["123"]
            $dest_cat_val = ($modo_ativo === 'xui') ? '["' . $dest_cat_id . '"]' : $dest_cat_id;

            $inQuery = implode(',', array_fill(0, count($item_ids), '?'));
            $params = array_merge([$dest_cat_val], $item_ids);

            if ($cat_type === 'series') {
                $sql = "UPDATE $tabela_series SET category_id = ? WHERE id IN ($inQuery)";
            } else {
                $sql = "UPDATE streams SET category_id = ? WHERE id IN ($inQuery)";
            }

            $stmt = $pdo->prepare($sql);
            $stmt->execute($params);
            
            $qtd = count($item_ids);
            $msg = "<div class='alert success'><i class='fas fa-check-circle'></i> <b>Sucesso!</b> $qtd conteúdo(s) movido(s) para a nova categoria.</div>";
        } catch (Exception $e) {
            $msg = "<div class='alert danger'><i class='fas fa-times-circle'></i> <b>Erro:</b> " . $e->getMessage() . "</div>";
        }
    } else {
        $msg = "<div class='alert danger'><i class='fas fa-exclamation-triangle'></i> Selecione a categoria de destino e pelo menos um conteúdo.</div>";
    }
}

// ==========================================
// 3. BUSCAR TODAS AS CATEGORIAS (MÁGICA HÍBRIDA XUI / XTREAM)
// ==========================================
$cat_canais = [];
$cat_filmes = [];
$cat_series = [];

// Função auxiliar para testar as queries na ordem certa
function buscarCategoriasSeguro($pdo, $queries) {
    foreach ($queries as $sql) {
        try {
            $stmt = $pdo->query($sql);
            if ($stmt) {
                $res = $stmt->fetchAll(PDO::FETCH_ASSOC);
                if (!empty($res)) return $res; // Se achar dados, retorna e ignora o resto das tabelas velhas
            }
        } catch (Exception $e) {
            continue; 
        }
    }
    return [];
}

// CORREÇÃO DE PRIORIDADE: Se for XUI, obriga a procurar nas tabelas do XUI primeiro!
if ($modo_ativo === 'xui') {
    $q_canais = [
        "SELECT id, category_name FROM streams_categories WHERE category_type = 'live' ORDER BY category_name ASC",
        "SELECT id, category_name FROM categories WHERE category_type = 'live' OR type = 1 ORDER BY category_name ASC",
        "SELECT id, category_name FROM stream_categories WHERE category_type = 'live' ORDER BY category_name ASC"
    ];
    $q_filmes = [
        "SELECT id, category_name FROM streams_categories WHERE category_type = 'movie' OR category_type = 'vod' ORDER BY category_name ASC",
        "SELECT id, category_name FROM categories WHERE category_type = 'movie' OR type = 2 ORDER BY category_name ASC",
        "SELECT id, category_name FROM vod_categories ORDER BY category_name ASC"
    ];
    $q_series = [
        "SELECT id, category_name FROM streams_categories WHERE category_type = 'series' ORDER BY category_name ASC",
        "SELECT id, category_name FROM categories WHERE category_type = 'series' OR type = 3 ORDER BY category_name ASC",
        "SELECT id, category_name FROM series_categories ORDER BY category_name ASC"
    ];
} else {
    // Modo Xtream UI Padrão
    $q_canais = [
        "SELECT id, category_name FROM stream_categories WHERE category_type = 'live' ORDER BY category_name ASC",
        "SELECT id, category_name FROM stream_categories ORDER BY category_name ASC"
    ];
    $q_filmes = [
        "SELECT id, category_name FROM vod_categories ORDER BY category_name ASC",
        "SELECT id, category_name FROM stream_categories WHERE category_type = 'movie' ORDER BY category_name ASC"
    ];
    $q_series = [
        "SELECT id, category_name FROM series_categories ORDER BY category_name ASC",
        "SELECT id, category_name FROM stream_categories WHERE category_type = 'series' ORDER BY category_name ASC"
    ];
}

$cat_canais = buscarCategoriasSeguro($pdo, $q_canais);
$cat_filmes = buscarCategoriasSeguro($pdo, $q_filmes);
$cat_series = buscarCategoriasSeguro($pdo, $q_series);

?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <link rel="stylesheet" href="tema.css">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Mover Conteúdos - <?php echo htmlspecialchars($nome_painel); ?></title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        :root { 
            --bg-dark: #121519; 
            --bg-sidebar: #1e2227; 
            --bg-card: #272c33; 
            --text-main: #d1d5da; 
            --text-muted: #8a94a1; 
            --accent: <?php echo $cor_primaria; ?>; 
            --border-color: #3a4149; 
            --success: #28a745; 
        }
        body { margin: 0; font-family: 'Segoe UI', sans-serif; background-color: var(--bg-dark); color: var(--text-main); display: flex; height: 100vh; overflow: hidden; }
        
        /* SIDEBAR VIA INCLUDE */
        .sidebar { width: 260px; background-color: var(--bg-sidebar); display: flex; flex-direction: column; transition: 0.3s; border-right: 1px solid var(--border-color); z-index: 1001; flex-shrink: 0;}
        .sidebar-header { padding: 25px 20px; text-align: center; font-size: 22px; font-weight: bold; color: white; border-bottom: 1px solid var(--border-color); }
        .sidebar-logo { max-width: 180px; max-height: 55px; object-fit: contain; }
        .user-info { padding: 20px; text-align: center; border-bottom: 1px solid var(--border-color); }
        .user-info .badge { background: rgba(255, 255, 255, 0.05); color: var(--accent); padding: 4px 10px; border-radius: 4px; font-size: 11px; text-transform: uppercase; font-weight: bold; margin-top: 5px; display: inline-block; }
        .credits-badge { display: block; margin-top: 10px; color: var(--success); font-weight: bold; font-size: 13px; }
        .menu-list { list-style: none; padding: 0; margin: 0; overflow-y: auto; flex: 1; }
        .menu-item { padding: 14px 20px; color: var(--text-main); text-decoration: none; display: flex; align-items: center; transition: 0.2s; border-left: 3px solid transparent; font-size: 15px; cursor: pointer; }
        .menu-item i:first-child { margin-right: 12px; width: 20px; text-align: center; color: var(--text-muted); }
        .menu-item:hover, .menu-item.active { background-color: #2c3138; color: white; border-left-color: var(--accent); }
        .menu-item.active i:first-child { color: var(--accent); }
        .submenu { display: none; background: #16191d; list-style: none; padding: 0; margin: 0; }
        .submenu .menu-item { padding-left: 52px; font-size: 14px; border-left: none; }
        .arrow-icon { margin-left: auto; transition: 0.3s; font-size: 12px; }
        .rotate { transform: rotate(180deg); }
        .menu-category { padding: 20px 20px 8px; font-size: 11px; text-transform: uppercase; color: var(--text-muted); font-weight: bold; letter-spacing: 1px; }
        .logout-btn { padding: 15px; background-color: #dc3545; color: white; text-align: center; text-decoration: none; font-weight: bold; margin-top: auto;}
        
        .main-content { flex: 1; display: flex; flex-direction: column; overflow-y: auto; position: relative; width: 100vw; max-width: 100%;}
        .topbar { display: flex; justify-content: space-between; align-items: center; padding: 15px 30px; background-color: var(--bg-sidebar); border-bottom: 1px solid var(--border-color); }
        .mode-badge { padding: 6px 15px; background: rgba(40, 167, 69, 0.15); color: var(--success); border-radius: 20px; font-size: 12px; font-weight: bold; border: 1px solid var(--success); white-space: nowrap; display: inline-block; }
        .menu-toggle { display: none; background: none; border: none; color: white; font-size: 22px; cursor: pointer; padding: 5px; }
        .sidebar-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7); z-index: 1000; }
        
        .content-area { padding: 30px; flex: 1; max-width: 1000px; margin: 0 auto; width: 100%; box-sizing: border-box; }
        .section-title { font-size: 16px; color: white; text-transform: uppercase; font-weight: bold; border-bottom: 1px solid var(--border-color); padding-bottom: 10px; margin: 10px 0 20px 0; display: flex; align-items: center; gap: 8px; }
        
        .card { background: var(--bg-card); padding: 25px; border-radius: 10px; border: 1px solid var(--border-color); margin-bottom: 25px; box-shadow: 0 4px 15px rgba(0,0,0,0.1); }
        .card h3 { margin-top: 0; color: white; border-bottom: 1px solid var(--border-color); padding-bottom: 15px; display: flex; align-items: center; gap: 10px;}
        
        .form-group { margin-bottom: 20px; }
        label { display: block; margin-bottom: 8px; font-size: 13px; font-weight: bold; color: var(--text-muted); }
        select { width: 100%; padding: 14px; background: #121519; border: 1px solid var(--border-color); color: white; border-radius: 6px; margin-bottom: 20px; font-family: inherit; font-size: 14px; cursor: pointer; }
        select:focus { outline: none; border-color: var(--accent); }
        
        .items-container { max-height: 400px; overflow-y: auto; background: #121519; border: 1px solid var(--border-color); border-radius: 6px; padding: 10px; display: none; }
        .item-row { padding: 10px; border-bottom: 1px solid #222; display: flex; align-items: center; gap: 10px; transition: 0.2s; }
        .item-row:hover { background: #1a1e23; }
        .item-row:last-child { border-bottom: none; }
        .item-row input[type="checkbox"] { width: 18px; height: 18px; cursor: pointer; accent-color: var(--accent); }
        .item-row label { margin-bottom: 0; color: white; cursor: pointer; flex: 1; font-weight: normal; }
        
        .check-all-box { padding: 15px; background: #1a1e23; border: 1px solid var(--border-color); border-radius: 6px; margin-bottom: 15px; display: none; align-items: center; gap: 10px; }
        .check-all-box input { width: 18px; height: 18px; cursor: pointer; accent-color: var(--success); }
        .check-all-box label { margin: 0; color: var(--success); cursor: pointer; font-weight: bold; }

        .btn { padding: 14px 25px; border-radius: 6px; border: none; font-weight: bold; cursor: pointer; transition: 0.2s; font-family: inherit; font-size: 14px; display: flex; align-items: center; justify-content: center; gap: 10px; }
        .btn-green { background: var(--success); color: white; width: 100%; }
        .btn-green:hover { background: #218838; }
        .btn-green:disabled { background: #555; cursor: not-allowed; color: #888; }
        
        .alert { padding: 15px; border-radius: 6px; margin-bottom: 20px; font-size: 14px; }
        .alert.success { background: rgba(40,167,69,0.1); color: var(--success); border: 1px solid var(--success); }
        .alert.danger { background: rgba(220,53,69,0.1); color: #dc3545; border: 1px solid #dc3545; }
        
        .loading-text { color: var(--accent); display: none; font-weight: bold; padding: 20px; text-align: center; }

        optgroup { font-weight: bold; color: var(--accent); background: #1a1e23; }
        option { color: white; background: #121519; font-weight: normal; }

        @media (max-width: 768px) { 
            .sidebar { position: fixed; left: -260px; height: 100%; box-shadow: 10px 0 20px rgba(0,0,0,0.5);} 
            .sidebar.active { left: 0; } 
            .menu-toggle { display: block; margin-right: 15px; } 
            .sidebar-overlay.active { display: block; } 
            .topbar { padding: 15px 20px; justify-content: flex-start;} 
            .topbar-right { margin-left: auto; }
            .content-area { padding: 15px; padding-bottom: 100px; } 
        }
    </style>
</head>
<body>
    <div class="sidebar-overlay" id="overlay" onclick="toggleMenu()"></div>
    
    <?php include 'sidebar.php'; ?>

    <div class="main-content">
        <header class="topbar">
            <div style="display:flex; align-items:center;">
                <button class="menu-toggle" onclick="toggleMenu()"><i class="fas fa-bars"></i></button>
                <h2 style="margin:0; font-size: 18px; color:white; margin-left: 10px;">Mover Conteúdos</h2>
            </div>
            <div class="topbar-right">
                <span class="mode-badge"><i class="fas fa-database"></i> MODO: <?php echo defined('MODO_SISTEMA') ? strtoupper(MODO_SISTEMA) : strtoupper($modo_ativo); ?></span>
            </div>
        </header>

        <div class="content-area">
            <div class="section-title"><i class="fas fa-folder-open"></i> Mover Canais, Filmes e Séries em Massa</div>
            
            <?php echo $msg; ?>
            
            <form method="POST" id="formMover">
                <div class="card">
                    <label><i class="fas fa-sign-out-alt"></i> 1. SELECIONE A CATEGORIA DE ORIGEM</label>
                    <select id="source_cat" required>
                        <option value="">-- Selecione uma categoria --</option>
                        
                        <optgroup label="📺 CANAIS AO VIVO">
                            <?php foreach($cat_canais as $c): ?>
                                <option value="<?php echo $c['id']; ?>" data-type="stream"><?php echo htmlspecialchars($c['category_name']); ?></option>
                            <?php endforeach; ?>
                        </optgroup>
                        
                        <optgroup label="🎬 FILMES (VOD)">
                            <?php foreach($cat_filmes as $c): ?>
                                <option value="<?php echo $c['id']; ?>" data-type="stream"><?php echo htmlspecialchars($c['category_name']); ?></option>
                            <?php endforeach; ?>
                        </optgroup>
                        
                        <optgroup label="🎞️ SÉRIES">
                            <?php foreach($cat_series as $c): ?>
                                <option value="<?php echo $c['id']; ?>" data-type="series"><?php echo htmlspecialchars($c['category_name']); ?></option>
                            <?php endforeach; ?>
                        </optgroup>
                    </select>

                    <div id="loading" class="loading-text"><i class="fas fa-spinner fa-spin"></i> Buscando conteúdos...</div>
                    
                    <div class="check-all-box" id="checkAllBox">
                        <input type="checkbox" id="checkAll">
                        <label for="checkAll">Selecionar todos os conteúdos desta categoria</label>
                    </div>

                    <div class="items-container" id="itemsContainer">
                    </div>
                </div>

                <div class="card" id="destCard" style="display: none;">
                    <label><i class="fas fa-sign-in-alt"></i> 2. SELECIONE A NOVA CATEGORIA (DESTINO)</label>
                    
                    <input type="hidden" name="cat_type" id="form_cat_type" value="stream">

                    <select name="dest_category" id="dest_cat" required>
                        <option value="">-- Selecione o destino --</option>
                    </select>

                    <button type="submit" name="mover_items" class="btn btn-green" id="btnSubmit" disabled>
                        <i class="fas fa-exchange-alt"></i> MOVER CONTEÚDOS SELECIONADOS
                    </button>
                </div>
            </form>
        </div>
        <?php include 'rodape.php'; ?>
    </div>

    <script>
        function toggleMenu() { 
            document.getElementById('sidebar').classList.toggle('active'); 
            document.getElementById('overlay').classList.toggle('active'); 
        }

        function toggleSubmenu(id) {
            const sub = document.getElementById(id);
            const arrow = document.getElementById('arrow-' + id);
            
            if (sub.style.display === "block") {
                sub.style.display = "none";
                if(arrow) arrow.classList.remove('rotate');
            } else {
                sub.style.display = "block";
                if(arrow) arrow.classList.add('rotate');
            }
        }

        const sourceSelect = document.getElementById('source_cat');
        const destSelect = document.getElementById('dest_cat');
        const itemsContainer = document.getElementById('itemsContainer');
        const checkAllBox = document.getElementById('checkAllBox');
        const checkAllInput = document.getElementById('checkAll');
        const loading = document.getElementById('loading');
        const formCatType = document.getElementById('form_cat_type');
        const destCard = document.getElementById('destCard');
        const btnSubmit = document.getElementById('btnSubmit');

        sourceSelect.addEventListener('change', function() {
            const cat_id = this.value;
            
            if (!cat_id) {
                itemsContainer.style.display = 'none';
                checkAllBox.style.display = 'none';
                destCard.style.display = 'none';
                return;
            }

            const cat_type = this.options[this.selectedIndex].getAttribute('data-type');
            const optgroupLabel = this.options[this.selectedIndex].parentElement.label;
            
            formCatType.value = cat_type; 
            
            destSelect.innerHTML = '<option value="">-- Selecione o destino --</option>';
            Array.from(sourceSelect.querySelectorAll('optgroup')).forEach(group => {
                if(group.label === optgroupLabel) {
                    destSelect.innerHTML += group.outerHTML;
                }
            });

            loading.style.display = 'block';
            itemsContainer.style.display = 'none';
            checkAllBox.style.display = 'none';
            destCard.style.display = 'none';
            itemsContainer.innerHTML = '';
            checkAllInput.checked = false;

            const urlBusca = window.location.pathname + `?ajax_get_items=1&cat_id=${cat_id}&cat_type=${cat_type}`;

            fetch(urlBusca)
                .then(async response => {
                    const text = await response.text();
                    try {
                        return JSON.parse(text);
                    } catch (e) {
                        alert("O SERVIDOR NÃO ENVIOU A LISTA. ELE RESPONDEU COM ESTE ERRO:\n\n" + text.substring(0, 300));
                        throw new Error("Erro no Formato JSON");
                    }
                })
                .then(res => {
                    loading.style.display = 'none';
                    
                    if (res.status === 'success' && res.data.length > 0) {
                        let html = '';
                        res.data.forEach(item => {
                            let icone = item.logo ? `<img src="${item.logo}" onerror="this.outerHTML='<i class=\\'fas fa-play-circle\\' style=\\'color:var(--text-muted); margin-right:5px;\\'></i>'" style="width: 32px; height: 32px; object-fit: contain; border-radius: 4px; margin-right: 10px; background: rgba(0,0,0,0.2);">` : `<i class="fas fa-play-circle" style="color:var(--text-muted); margin-right:10px; font-size: 18px;"></i>`;
                            
                            html += `
                                <div class="item-row">
                                    <input type="checkbox" name="item_ids[]" value="${item.id}" id="item_${item.id}" class="item-checkbox">
                                    <label for="item_${item.id}" style="display:flex; align-items:center;">
                                        ${icone} ${item.name}
                                    </label>
                                </div>
                            `;
                        });
                        
                        itemsContainer.innerHTML = html;
                        itemsContainer.style.display = 'block';
                        checkAllBox.style.display = 'flex';
                        destCard.style.display = 'block';
                        
                        document.querySelectorAll('.item-checkbox').forEach(cb => {
                            cb.addEventListener('change', validateForm);
                        });
                    } else {
                        itemsContainer.innerHTML = '<div style="padding:15px; color:var(--text-muted);">Nenhum conteúdo encontrado nesta categoria.</div>';
                        itemsContainer.style.display = 'block';
                    }
                    validateForm();
                })
                .catch(err => {
                    loading.style.display = 'none';
                    if (err.message !== "Erro no Formato JSON") {
                        alert('Falha na rede ou conexão recusada pelo servidor.');
                    }
                });
        });

        checkAllInput.addEventListener('change', function() {
            const checkboxes = document.querySelectorAll('.item-checkbox');
            checkboxes.forEach(cb => {
                cb.checked = this.checked;
            });
            validateForm();
        });

        function validateForm() {
            const anyChecked = document.querySelectorAll('.item-checkbox:checked').length > 0;
            const destSelected = destSelect.value !== "";
            
            if (anyChecked && destSelected) {
                btnSubmit.disabled = false;
            } else {
                btnSubmit.disabled = true;
            }
        }

        destSelect.addEventListener('change', validateForm);

        document.getElementById('formMover').addEventListener('submit', function(e) {
            const qtd = document.querySelectorAll('.item-checkbox:checked').length;
            if(!confirm(`Você tem certeza que deseja mover ${qtd} conteúdo(s)? Essa ação não pode ser desfeita.`)) {
                e.preventDefault();
            }
        });
    </script>
    <script src="tema.js"></script>
</body>
</html>
