<?php
session_start();
require_once 'config.php';

$pdo = getConexaoAtiva(); // Banco Principal (Xtream ou XUI)
$pdo_int = getConexaoInterna(); // Banco Local (Configs)

$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) {}

// DESCOBRE DINAMICAMENTE A TABELA DE CATEGORIAS
$tabela_categorias = 'stream_categories';
if ($modo_ativo === 'xui') {
    try { 
        $pdo->query("SELECT 1 FROM streams_categories LIMIT 1"); 
        $tabela_categorias = 'streams_categories'; 
    } catch (Exception $e) {
        try { 
            $pdo->query("SELECT 1 FROM categories LIMIT 1"); 
            $tabela_categorias = 'categories'; 
        } catch (Exception $e2) {
            $tabela_categorias = 'stream_categories';
        }
    }
}

// --- INÍCIO: BUSCA DE PERSONALIZAÇÃO DINÂMICA ---
$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) {}

if (!isset($_SESSION['user_id'])) { header("Location: login.php"); exit; }

$role = $_SESSION['user_role'];
$nome_usuario = $_SESSION['username'];
$user_id_logado = $_SESSION['user_id'];
$mensagem = "";

try {
    $user_credits = $pdo_int->query("SELECT credits FROM reg_users WHERE id = " . intval($user_id_logado))->fetchColumn() ?: 0;
} catch (Exception $e) { $user_credits = 0; }

define('TMDB_API_KEY', 'f99aa9ae1fe7619969cc7db0938c1ae5');

$cat_filter = $_GET['category'] ?? 'todos';
$limit_filter = isset($_GET['limit']) ? (int)$_GET['limit'] : 20;
$search_filter = $_GET['search'] ?? '';
$paged = isset($_GET['paged']) ? (int)$_GET['paged'] : 1;
if ($paged < 1) $paged = 1;
$offset = ($paged - 1) * $limit_filter;

// --- PROCESSAMENTO DE AÇÕES (SALVAR FILME) ---
if (isset($_POST['action_save'])) {
    $nome = $_POST['stream_display_name'];
    $source = $_POST['stream_source'] ?? '';
    $icon = $_POST['stream_icon'] ?? '';
    $plot = $_POST['plot'] ?? '';
    $cat_id = (int)($_POST['category_id'] ?? 0);
    $direct = isset($_POST['direct_source']) ? (int)$_POST['direct_source'] : 1; // PADRÃO DIRECT PARA FILMES
    $id_filme = $_POST['movie_id'] ?? null;

    $source_banco = $source;
    if ($modo_ativo === 'xui' && substr($source, 0, 1) !== '[') {
        $source_banco = json_encode([$source], JSON_UNESCAPED_SLASHES);
    }
    
    $cat_id_banco = $cat_id;
    if ($modo_ativo === 'xui') {
        $cat_id_banco = json_encode([strval($cat_id)]);
    }

    try {
        if ($modo_ativo === 'xui') {
            if (!empty($id_filme)) {
                $curr_props = $pdo->query("SELECT movie_properties FROM streams WHERE id = " . intval($id_filme))->fetchColumn();
                $props = $curr_props ? json_decode($curr_props, true) : [];
                if (!is_array($props)) $props = [];
                
                // MÁGICA: Injeta sinopse e capa direto no JSON do XUI
                $props['plot'] = $plot;
                $props['movie_image'] = $icon;
                $props['cover_big'] = $icon;
                $props_json = json_encode($props, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
                
                $sql = "UPDATE streams SET stream_display_name = ?, stream_source = ?, stream_icon = ?, movie_properties = ?, category_id = ?, direct_source = ? WHERE id = ?";
                $res = $pdo->prepare($sql)->execute([$nome, $source_banco, $icon, $props_json, $cat_id_banco, $direct, $id_filme]);
            } else {
                $props_json = json_encode([
                    'plot' => $plot,
                    'movie_image' => $icon,
                    'cover_big' => $icon
                ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
                
                $sql = "INSERT INTO streams (stream_display_name, stream_source, stream_icon, movie_properties, category_id, type, added, direct_source) VALUES (?, ?, ?, ?, ?, 2, ?, ?)";
                $res = $pdo->prepare($sql)->execute([$nome, $source_banco, $icon, $props_json, $cat_id_banco, time(), $direct]);
            }
        } else {
            // LÓGICA XTREAM UI
            if (!empty($id_filme)) {
                $sql = "UPDATE streams SET stream_display_name = ?, stream_source = ?, stream_icon = ?, plot = ?, category_id = ?, direct_source = ? WHERE id = ? AND type = 2";
                $res = $pdo->prepare($sql)->execute([$nome, $source_banco, $icon, $plot, $cat_id_banco, $direct, $id_filme]);
            } else {
                $sql = "INSERT INTO streams (stream_display_name, stream_source, stream_icon, plot, category_id, type, added, direct_source) VALUES (?, ?, ?, ?, ?, 2, ?, ?)";
                $res = $pdo->prepare($sql)->execute([$nome, $source_banco, $icon, $plot, $cat_id_banco, time(), $direct]);
            }
        }
        if($res) $mensagem = "<div class='alert success'>Filme salvo com sucesso!</div>";
    } catch (Exception $e) {
        // Fallback anti-crash caso o banco não suporte a estrutura esperada
        try {
            if (!empty($id_filme)) {
                $sql = "UPDATE streams SET stream_display_name = ?, stream_source = ?, stream_icon = ?, category_id = ?, direct_source = ? WHERE id = ?";
                $res = $pdo->prepare($sql)->execute([$nome, $source_banco, $icon, $cat_id_banco, $direct, $id_filme]);
            } else {
                $sql = "INSERT INTO streams (stream_display_name, stream_source, stream_icon, category_id, type, added, direct_source) VALUES (?, ?, ?, ?, 2, ?, ?)";
                $res = $pdo->prepare($sql)->execute([$nome, $source_banco, $icon, $cat_id_banco, time(), $direct]);
            }
            if($res) $mensagem = "<div class='alert success'>Filme salvo com sucesso (modo de segurança)!</div>";
        } catch (Exception $e2) {
            $mensagem = "<div class='alert error'>Erro crítico ao salvar: " . htmlspecialchars($e2->getMessage()) . "</div>";
        }
    }
}

if (isset($_GET['delete'])) {
    try {
        $pdo->prepare("DELETE FROM streams WHERE id = ?")->execute([$_GET['delete']]);
    } catch (Exception $e) {}
    header("Location: filmes.php"); exit;
}

try {
    $categorias = $pdo->query("SELECT id as category_id, category_name FROM $tabela_categorias WHERE category_type = 'movie' ORDER BY category_name ASC")->fetchAll(PDO::FETCH_ASSOC);
    if (empty($categorias) && $modo_ativo === 'xui') {
        $categorias = $pdo->query("SELECT id as category_id, category_name FROM vod_categories ORDER BY category_name ASC")->fetchAll(PDO::FETCH_ASSOC);
    }
} catch (Exception $e) { $categorias = []; }

$where = ($modo_ativo === 'xui') ? " WHERE s.type IN (2, 5)" : " WHERE s.type = 2";
if ($cat_filter !== 'todos') {
    $cat_id_clean = (int)$cat_filter;
    $where .= " AND (s.category_id = $cat_id_clean OR s.category_id LIKE '%\"$cat_id_clean\"%' OR s.category_id LIKE '%[$cat_id_clean]%')";
}
if (!empty($search_filter)) {
    $where .= " AND s.stream_display_name LIKE " . $pdo->quote("%$search_filter%");
}

$total_registros = 0;
try {
    $total_registros = $pdo->query("SELECT COUNT(*) FROM streams s $where")->fetchColumn();
} catch (Exception $e) {}

$total_paginas = $limit_filter > 0 ? ceil($total_registros / $limit_filter) : 1;
if ($total_paginas < 1) $total_paginas = 1;

$join_cat = "REPLACE(REPLACE(REPLACE(s.category_id, '[', ''), ']', ''), '\"', '') = c.id";
$query = "SELECT s.*, c.category_name 
          FROM streams s 
          LEFT JOIN $tabela_categorias c ON $join_cat 
          $where
          ORDER BY s.id DESC LIMIT $limit_filter OFFSET $offset";
$filmes = [];

try {
    $filmes = $pdo->query($query)->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $e) {
    try {
        $query_fallback = "SELECT s.* FROM streams s $where ORDER BY s.id DESC LIMIT $limit_filter OFFSET $offset";
        $filmes = $pdo->query($query_fallback)->fetchAll(PDO::FETCH_ASSOC);
    } catch (Exception $e2) {}
}

if ($modo_ativo === 'xui') {
    foreach ($filmes as &$f) {
        if (isset($f['movie_properties']) && !empty($f['movie_properties'])) {
            $props = json_decode($f['movie_properties'], true);
            $f['plot'] = $props['plot'] ?? '';
        } else {
            $f['plot'] = '';
        }
    }
}
?>

<!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, maximum-scale=1.0, user-scalable=no">
    <title>Filmes VOD - <?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:#0f1114;--bg-sidebar:#1e2227;--bg-card:#272c33;--text-main:#d1d5da;--text-muted:#8a94a1;--accent:<?php echo $cor_primaria; ?>;--border-color:#3a4149;--success:#28a745;--danger:#dc3545;}
        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{width:260px;background-color:var(--bg-sidebar);border-right:1px solid var(--border-color);display:flex;flex-direction:column;transition:all 0.3s ease;z-index:1001;flex-shrink:0;}
        .sidebar-header{padding:25px 20px;text-align:center;font-size:22px;font-weight:bold;border-bottom:1px solid var(--border-color);color:white;}
        .sidebar-logo{width:100%;max-width:180px;height:auto;max-height:60px;object-fit:contain;display:block;margin:0 auto;}
        .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;flex:1;overflow-y:auto;}
        .menu-item{padding:14px 25px;color:var(--text-main);text-decoration:none;display:flex;align-items:center;transition:0.2s;font-size:15px;border-left:4px solid transparent;cursor:pointer;}
        .menu-item i:first-child{margin-right:15px;width:20px;text-align:center;font-size:16px;color:var(--text-muted);}
        .menu-item:hover,.menu-item.active{background:#2c3138;color:white;border-left-color:var(--accent);}
        .menu-item.active i{color:var(--accent);}
        .submenu{display:none;background:#121519;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 25px 8px;font-size:11px;text-transform:uppercase;color:var(--text-muted);font-weight:bold;letter-spacing:1px;}
        .logout-btn{padding:15px;background-color:var(--danger);color:white;text-align:center;text-decoration:none;font-weight:bold;margin-top:auto;}
        .main{flex:1;overflow-y:auto;display:flex;flex-direction:column;width:100%;position:relative;}
        .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);}
        .menu-toggle{display:none;background:none;border:none;color:white;font-size:24px;cursor:pointer;}
        .content-area{padding:25px;flex:1;}
        .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;}
        .filter-bar{background:var(--bg-card);padding:15px;border-radius:10px;border:1px solid var(--border-color);margin-bottom:20px;display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;}
        .filter-group{display:flex;flex-direction:column;gap:5px;flex:1;min-width:150px;}
        .filter-group label{font-size:11px;color:var(--text-muted);text-transform:uppercase;font-weight:bold;}
        .filter-bar input,.filter-bar select{background:#121519;border:1px solid var(--border-color);color:white;padding:10px;border-radius:5px;font-size:13px;width:100%;box-sizing:border-box;}
        .btn-filter{background:var(--accent);color:white;border:none;padding:10px 20px;border-radius:5px;cursor:pointer;font-weight:bold;}
        .btn-filter:hover{filter:brightness(0.85);}
        .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:20px;margin-top:20px;}
        .movie-card{background:var(--bg-card);border-radius:8px;border:1px solid var(--border-color);overflow:hidden;position:relative;transition:0.3s;}
        .movie-poster{width:100%;height:260px;object-fit:cover;background:#000;}
        .movie-info{padding:10px;}
        .movie-title{font-size:13px;font-weight:bold;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:white;}
        .movie-cat-name{font-size:10px;color:var(--accent);font-weight:bold;text-transform:uppercase;margin-bottom:3px;display:block;}
        .movie-actions{position:absolute;top:5px;right:5px;display:flex;flex-direction:column;gap:5px;opacity:0;transition:0.3s;z-index:10;}
        .movie-card:hover .movie-actions{opacity:1;}
        .btn-act{width:32px;height:32px;border-radius:6px;border:none;color:white;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;text-decoration:none;}
        .bg-edit{background:rgba(52,152,219,0.9);}
        .bg-delete{background:rgba(231,76,60,0.9);}
        .pagination{display:flex;justify-content:center;align-items:center;gap:5px;margin:30px 0;}
        .page-link{padding:8px 16px;background:var(--bg-card);border:1px solid var(--border-color);color:white;text-decoration:none;border-radius:5px;font-weight:bold;font-size:13px;}
        .page-link:hover,.page-link.active{background:var(--accent);border-color:var(--accent);}
        .modal{display:none;position:fixed;z-index:2000;left:0;top:0;width:100%;height:100%;background:rgba(0,0,0,0.9);overflow-y:auto;}
        .modal-content{background:var(--bg-card);width:95%;max-width:450px;margin:5% auto;padding:25px;border-radius:12px;border:1px solid var(--border-color);position:relative;}
        .form-group{margin-bottom:12px;}
        .form-group label{display:block;margin-bottom:4px;font-size:12px;color:var(--text-muted);}
        .form-group input,.form-group select,.form-group textarea{width:100%;padding:10px;background:#121519;border:1px solid var(--border-color);color:white;border-radius:5px;box-sizing:border-box;font-size:14px;}
        .tmdb-results{margin-top:10px;max-height:180px;overflow-y:auto;background:#121519;border-radius:5px;}
        .tmdb-item{display:flex;gap:10px;padding:8px;border-bottom:1px solid var(--border-color);cursor:pointer;align-items:center;font-size:13px;}
        .tmdb-item:hover{background:#24282d;}
        .tmdb-item img{width:35px;height:50px;object-fit:cover;}
        .btn-blue{background:var(--accent);color:white;border:none;padding:12px;border-radius:8px;font-weight:bold;cursor:pointer;width:100%;}
        .sidebar-overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);z-index:1000;}
        @media(max-width:768px){
            .menu-toggle{display:block;margin-right:15px;}
            .sidebar{position:fixed;left:-260px;height:100%;width:260px;box-shadow:10px 0 20px rgba(0,0,0,0.5);}
            .sidebar.active{left:0;}
            .sidebar-overlay.active{display:block;}
            .topbar{padding:15px 20px;justify-content:flex-start;}
            .topbar-right{margin-left:auto;}
            .topbar h2{display:none;}
            .content-area{padding:15px;}
            .filter-bar{flex-direction:column;align-items:stretch;}
            .grid{grid-template-columns:repeat(2,1fr);gap:10px;}
            .movie-poster{height:220px;}
            .movie-actions{opacity:1;}
            .modal-content{width:90%;margin:auto;}
        }
    </style>
</head>
<body>

    <div class="sidebar-overlay" id="overlay" onclick="toggleMenu()"></div>

    <?php include 'sidebar.php'; ?>

    <div class="main">
        <header class="topbar">
            <div style="display: flex; align-items: center;">
                <button class="menu-toggle" id="btn-menu" onclick="toggleMenu()"><i class="fas fa-bars"></i></button>
                <h2 style="margin:0; color: white;">Filmes VOD</h2>
            </div>
            <div class="topbar-right">
                <span class="mode-badge"><i class="fas fa-database"></i> <?php echo defined('MODO_SISTEMA') ? strtoupper(MODO_SISTEMA) : strtoupper($modo_ativo); ?></span>
            </div>
        </header>

        <div class="content-area">
            <div style="display:flex; justify-content:flex-end; align-items:center; margin-bottom:20px;">
                <button class="btn-blue" style="width:auto; padding:10px 20px; background:var(--success);" onclick="openModalAdd()">+ NOVO FILME</button>
            </div>

            <form class="filter-bar" method="GET">
                <div class="filter-group">
                    <label>Pesquisar</label>
                    <input type="text" name="search" value="<?php echo htmlspecialchars($search_filter); ?>" placeholder="Nome do filme...">
                </div>
                <div class="filter-group">
                    <label>Categoria</label>
                    <select name="category">
                        <option value="todos">Todas as Categorias</option>
                        <?php foreach($categorias as $cat): ?>
                            <option value="<?php echo $cat['category_id']; ?>" <?php echo $cat_filter == $cat['category_id'] ? 'selected' : ''; ?>>
                                <?php echo htmlspecialchars($cat['category_name']); ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
                <div class="filter-group">
                    <label>Exibir</label>
                    <select name="limit">
                        <?php 
                        $opcoes = [10, 20, 50, 100, 250, 500, 1000, 2000, 5000];
                        foreach($opcoes as $op) {
                            $sel = ($limit_filter == $op) ? 'selected' : '';
                            echo "<option value='$op' $sel>$op por página</option>";
                        }
                        ?>
                    </select>
                </div>
                <button type="submit" class="btn-filter"><i class="fas fa-filter"></i> FILTRAR</button>
            </form>

            <?php echo $mensagem; ?>

            <div class="grid">
                <?php foreach($filmes as $f): ?>
                <div class="movie-card">
                    <div class="movie-actions">
                        <button class="btn-act bg-edit" onclick='openModalEdit(<?php echo htmlspecialchars(json_encode($f), ENT_QUOTES, "UTF-8"); ?>)'>
                            <i class="fas fa-pencil-alt"></i>
                        </button>
                        <a href="?delete=<?php echo $f['id']; ?>" class="btn-act bg-delete" onclick="return confirm('Excluir?')"><i class="fas fa-trash"></i></a>
                    </div>
                    <img src="<?php echo htmlspecialchars($f['stream_icon'] ?: 'https://via.placeholder.com/170x240?text=Sem+Capa'); ?>" class="movie-poster">
                    <div class="movie-info">
                        <span class="movie-cat-name"><?php echo htmlspecialchars($f['category_name'] ?? 'Sem Categoria'); ?></span>
                        <div class="movie-title"><?php echo htmlspecialchars($f['stream_display_name']); ?></div>
                    </div>
                </div>
                <?php endforeach; if(empty($filmes)) echo "<p style='padding:20px;'>Nenhum filme encontrado.</p>"; ?>
            </div>

            <?php if($total_paginas > 1): ?>
            <div class="pagination">
                <?php 
                $url_params = "search=" . urlencode($search_filter) . "&category=$cat_filter&limit=$limit_filter";
                if($paged > 1): ?>
                    <a href="?<?php echo $url_params; ?>&paged=<?php echo $paged - 1; ?>" class="page-link">« Anterior</a>
                <?php endif; ?>
                <span style="color:var(--text-muted); margin:0 10px; font-size:13px;">Página <?php echo $paged; ?> de <?php echo $total_paginas; ?></span>
                <?php if($paged < $total_paginas): ?>
                    <a href="?<?php echo $url_params; ?>&paged=<?php echo $paged + 1; ?>" class="page-link">Próxima »</a>
                <?php endif; ?>
            </div>
            <?php endif; ?>
        </div>
        <?php include 'rodape.php'; ?>
    </div>

    <div id="modalMovie" class="modal">
        <div class="modal-content">
            <h3 id="modalTitle" style="margin-top:0;">Novo Filme</h3>
            <form method="POST">
                <input type="hidden" name="movie_id" id="movie_id">
                <div class="form-group">
                    <label>Título do Filme</label>
                    <div style="display:flex; gap:5px;">
                        <input type="text" id="movie_search_input" name="stream_display_name" placeholder="Ex: Deadpool" required>
                        <button type="button" class="btn-blue" style="width:auto; border-radius:5px;" onclick="searchTMDB()"><i class="fas fa-search"></i></button>
                    </div>
                </div>
                <div id="tmdb_results" class="tmdb-results"></div>
                
                <div class="form-group">
                    <label>Categoria</label>
                    <select name="category_id" id="field_cat">
                        <?php foreach($categorias as $cat): ?>
                            <option value="<?php echo $cat['category_id']; ?>"><?php echo htmlspecialchars($cat['category_name']); ?></option>
                        <?php endforeach; ?>
                    </select>
                </div>
                <div class="form-group">
                    <label>URL do Vídeo</label>
                    <input type="text" name="stream_source" id="field_source">
                </div>
                <div class="form-group">
                    <label>URL da Capa</label>
                    <input type="text" name="stream_icon" id="field_icon">
                </div>
                
                <div class="form-group">
                    <label>Modo de Transmissão</label>
                    <select name="direct_source" id="field_direct">
                        <option value="1">Modo DIRECT (Cliente acessa a fonte direto)</option>
                        <option value="0">Modo LIVE (Servidor puxa e distribui)</option>
                    </select>
                </div>

                <div class="form-group">
                    <label>Sinopse</label>
                    <textarea name="plot" id="field_plot" rows="3"></textarea>
                </div>
                <button type="submit" name="action_save" class="btn-blue">SALVAR FILME</button>
                <button type="button" onclick="closeModal()" style="background:none; border:none; color:var(--text-muted); width:100%; margin-top:10px; cursor:pointer;">Cancelar</button>
            </form>
        </div>
    </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');
            }
        }

        function openModalAdd() {
            document.getElementById('modalTitle').innerText = "Novo Filme";
            document.getElementById('movie_id').value = "";
            document.getElementById('movie_search_input').value = "";
            document.getElementById('field_source').value = "";
            document.getElementById('field_icon').value = "";
            document.getElementById('field_plot').value = "";
            document.getElementById('field_direct').value = "1";
            document.getElementById('tmdb_results').innerHTML = "";
            document.getElementById('modalMovie').style.display = 'block';
        }

        function openModalEdit(m) {
            document.getElementById('modalTitle').innerText = "Editar Filme";
            document.getElementById('movie_id').value = m.id;
            document.getElementById('movie_search_input').value = m.stream_display_name;
            document.getElementById('field_icon').value = m.stream_icon;
            document.getElementById('field_plot').value = m.plot || ''; 
            
            let directVal = m.direct_source !== undefined && m.direct_source !== null ? m.direct_source : 1;
            document.getElementById('field_direct').value = directVal;

            let catVal = m.category_id;
            try {
                if (typeof catVal === 'string' && catVal.startsWith('[')) {
                    let parsedCat = JSON.parse(catVal);
                    if (Array.isArray(parsedCat) && parsedCat.length > 0) {
                        catVal = parsedCat[0];
                    }
                }
            } catch (e) { }
            document.getElementById('field_cat').value = catVal;

            let rawSource = m.stream_source;
            try {
                if (rawSource.startsWith('[') && rawSource.endsWith(']')) {
                    let parsed = JSON.parse(rawSource);
                    if (Array.isArray(parsed) && parsed.length > 0) rawSource = parsed[0];
                }
            } catch (e) { }
            document.getElementById('field_source').value = rawSource;
            
            document.getElementById('modalMovie').style.display = 'block';
        }

        function closeModal() { document.getElementById('modalMovie').style.display = 'none'; }

        async function searchTMDB() {
            let input = document.getElementById('movie_search_input').value;
            if(!input) return;
            let query = input.split('/').pop().replace(/\.[^/.]+$/, "").replace(/[._-]/g, " ");
            const url = `https://api.themoviedb.org/3/search/movie?api_key=<?php echo TMDB_API_KEY; ?>&query=${encodeURIComponent(query)}&language=pt-BR`;
            try {
                const res = await fetch(url);
                const data = await res.json();
                let html = "";
                data.results.slice(0, 5).forEach(m => {
                    html += `<div class="tmdb-item" onclick="selectMovie('${m.title.replace(/'/g, "\\'")}', 'https://image.tmdb.org/t/p/w500${m.poster_path}', '${m.overview.replace(/'/g, "\\'").replace(/\n/g, " ")}')">
                        <img src="https://image.tmdb.org/t/p/w92${m.poster_path}">
                        <div><strong>${m.title}</strong><br><small>${m.release_date ? m.release_date.split('-')[0] : ''}</small></div>
                    </div>`;
                });
                document.getElementById('tmdb_results').innerHTML = html || "<p style='color:red; padding:10px;'>Nada encontrado.</p>";
            } catch(e) { console.log(e); }
        }

        function selectMovie(title, icon, plot) {
            document.getElementById('movie_search_input').value = title;
            document.getElementById('field_icon').value = icon;
            document.getElementById('field_plot').value = plot;
            document.getElementById('tmdb_results').innerHTML = "";
        }
    </script>
    <script src="tema.js"></script>
</body>
</html>
