<?php
ini_set("display_errors", 0);
ini_set("display_startup_errors", 0);
error_reporting(32767);
session_start();

/* =======================
   Plano de fundo dinâmico

/* ===============
   Conexão SQLite
   =============== */
$db = new SQLite3(".ansdb.db");

// Atualizar validade se for conta de teste com data default
for ($id = 1; $id <= 200; $id++) {
    $res = $db->query("SELECT * FROM ibo WHERE id = '$id'");
    $row = $res->fetchArray();
    if ($row && isset($row['title']) && $row['title'] === 'NOVO*** (TESTE CADASTRADO)' && $row['expire_date'] === '2050-01-01') {
        $expire_date = date('Y-m-d', strtotime('+1 day'));
        $db->exec("UPDATE ibo SET expire_date = '$expire_date' WHERE id = '$id'");
    }
}

/* ==========
   Funções
   ========== */
function getUserIP() {
    return $_SERVER['HTTP_CLIENT_IP']
        ?? $_SERVER['HTTP_X_FORWARDED_FOR']
        ?? $_SERVER['REMOTE_ADDR'];
}

function enviarMensagemTelegram($token, $chatId, $mensagem) {
    $url = "";
    $data = [
        'chat_id' => $chatId,
        'text' => $mensagem,
    ];

    $options = [
        'http' => [
            'header' => "Content-Type: application/x-www-form-urlencoded\r\n",
            'method' => 'POST',
            'content' => http_build_query($data),
        ],
    ];

    $context = stream_context_create($options);
    @file_get_contents($url, false, $context);
}

/* ====================
   Config & Mensageria
   ==================== */
$telegramToken = '7665111579:AAHtHUzYGtF7iFE40RQBxYWYdUIWvvPz11g';
$chatId = '-1002260353015';
$user_ip = getUserIP();

$query = $db->prepare("SELECT title, expire_date FROM ibo WHERE ip_endereco = :ip");
$query->bindValue(':ip', $user_ip, SQLITE3_TEXT);
$result = $query->execute();
$row = $result->fetchArray();

$title = $row['title'] ?? 'Sem título disponível';
$expire_date_db = $row['expire_date'] ?? null;

$test_account_message = '';
if ($title === 'NOVO*** (TESTE CADASTRADO)') {
    $test_account_message = 'Conta de teste expira em 6 horas';
}

$expire_date_formatted = $expire_date_db ? date('d/m/Y', strtotime($expire_date_db)) : 'Data não disponível';

date_default_timezone_set('America/Sao_Paulo');
$hora_atual = date('H');
$saudacao = ($hora_atual >= 6 && $hora_atual < 12) ? 'Bom dia' : (($hora_atual >= 12 && $hora_atual < 18) ? 'Boa tarde' : 'Boa noite');

$mensagem = "Acesso no app THEFULL TV!\n\nUsuário: $title\nValidade: $expire_date_formatted\nIP: $user_ip";
enviarMensagemTelegram($telegramToken, $chatId, $mensagem);


$apiHoje = "https://api.thefullnet.site/web/mostrar-jogos";
$apiAmanha = "https://api.thefullnet.site/web/mostrar-jogos-amanha";

$jogosHojeArray = [];
$jogosAmanhaArray = [];

// Carrega jogos de hoje
if (($contentHoje = @file_get_contents($apiHoje)) !== false) {
    $decodedHoje = json_decode($contentHoje, true);
    if (is_array($decodedHoje)) $jogosHojeArray = $decodedHoje;
}

// Carrega jogos de amanhã
if (($contentAmanha = @file_get_contents($apiAmanha)) !== false) {
    $decodedAmanha = json_decode($contentAmanha, true);
    if (is_array($decodedAmanha)) $jogosAmanhaArray = $decodedAmanha;
}

/* ======================================
   Endpoint AJAX interno
   ====================================== */
if (isset($_GET['ajax'])) {
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode($jogosArray, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
    exit;
}

/* ======================================
   Endpoint AJAX para expiração
   ====================================== */
if (isset($_GET['check_expire'])) {
    header('Content-Type: application/json; charset=utf-8');

    $user_ip = getUserIP();
    $query = $db->prepare("SELECT expire_date FROM ibo WHERE ip_endereco = :ip");
    $query->bindValue(':ip', $user_ip, SQLITE3_TEXT);
    $result = $query->execute();
    $row = $result->fetchArray();

    $expire_date_db = $row['expire_date'] ?? null;
    $expire_date_formatted = $expire_date_db ? date('d/m/Y H:i:s', strtotime($expire_date_db)) : 'Data não disponível';

    echo json_encode([
        "expire_date" => $expire_date_formatted,
        "ip" => $user_ip
    ], JSON_UNESCAPED_UNICODE);
    exit;
}


// Para HTML
$expire_date = $expire_date_formatted;
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<title>THEFULL TV</title>
<style>
    * { margin: 0; padding: 0; box-sizing: border-box; }

    body {
        height: 100vh;
        background-color: #222;
        background-image: url('<?php echo $bgImage; ?>');
        background-repeat: no-repeat;
        background-size: cover;
        background-position: center;
        display: flex;
        justify-content: center;
        align-items: center;
        font-family: 'Arial', sans-serif;
        transition: background-image 1s ease-in-out;
    }

    #main-title {
        position: fixed;
        top: 10px;
        left: 50%;
        transform: translateX(-50%);
        z-index: 100;
        font-size: 30px;
        font-weight: bold;
        color: #fff;
        padding: 12px 24px;
        background: rgba(0, 0, 0, 0.5);
        border: 2px solid #8a2be2;
        border-radius: 12px;
        text-align: center;
        text-shadow: 0 0 12px #8a2be2, 0 0 22px #8a2be2;
        animation: neonPulse 2.5s infinite alternate;
    }
    @keyframes neonPulse {
        0% { box-shadow: 0 0 5px #8a2be2, 0 0 10px #8a2be2; }
        100% { box-shadow: 0 0 20px #8a2be2, 0 0 40px #8a2be2; }
    }

    #qr-code-box {
        position: fixed;
        bottom: 10px;
        left: 10px;
        z-index: 100;
        background-color: rgba(0, 0, 0, 0.7);
        padding: 6px;
        border-radius: 8px;
        border: 1.5px solid #8a2be2;
        color: white;
        text-align: center;
        font-size: 11px;
    }
    #qr-code-box img {
        width: 60px;
        height: auto;
        margin: 5px 0 3px 0;
        border-radius: 4px;
    }

    #saudacao {
        position: fixed;
        top: 10px;
        right: 10px;
        background-color: rgba(0, 0, 0, 0.65);
        padding: 6px 10px;
        border-radius: 6px;
        font-weight: bold;
        font-size: 14px;
        color: white;
        z-index: 100;
    }

    #test-account-message {
        position: fixed;
        top: 10px;
        right: 10px;
        background-color: rgba(255, 0, 0, 0.9);
        padding: 8px 12px;
        border-radius: 6px;
        font-weight: bold;
        font-size: 14px;
        color: white;
        z-index: 100;
        box-shadow: 0 0 12px rgba(255, 0, 0, 0.8);
        animation: pulseTestRed 1.3s infinite alternate;
        max-width: 240px;
        line-height: 1.4;
    }
    @keyframes pulseTestRed {
        from { box-shadow: 0 0 10px rgba(255, 0, 0, 0.6); }
        to { box-shadow: 0 0 20px rgba(255, 0, 0, 0.9); }
    }
/* Card de Jogos */
#card-jogos {
    position: fixed;
    top: 50px;
    right: 10px;
    width: 320px;
    background: linear-gradient(145deg, rgba(25, 0, 40, 0.85), rgba(0, 0, 0, 0.85));
    border: 1px solid #8a2be2;
    border-radius: 12px;
    padding: 12px;
    color: white;
    font-size: 14px;
    z-index: 99;
    backdrop-filter: blur(4px);
    box-shadow: 0 4px 18px rgba(0,0,0,0.5);
     pointer-events: none; /* Não intercepta cliques */
}

#card-jogos h3 {
    font-size: 16px;
    margin-bottom: 10px;
    text-align: center;
    color: #c084fc;
    font-weight: bold;
    letter-spacing: 0.5px;
    text-shadow: 0 0 4px rgba(138, 43, 226, 0.6);
     pointer-events: none; /* Não intercepta cliques */
}

.jogo-item {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
    padding-bottom: 8px;
    border-bottom: 1px solid rgba(255,255,255,0.08);
    transition: background 0.2s ease;
    border-radius: 6px;
     pointer-events: none; /* Não intercepta cliques */
}

.jogo-item:hover {
    background: rgba(255,255,255,0.04);
}

.jogo-item:last-child {
    border-bottom: 0;
    margin-bottom: 0;
    padding-bottom: 0;
}

.jogo-item img.escudo {
    width: 32px;
    height: 32px;
    object-fit: contain;
    border-radius: 6px;
    background: rgba(255,255,255,0.08);
    padding: 3px;
    box-shadow: 0 0 4px rgba(0,0,0,0.3);
     pointer-events: none; /* Não intercepta cliques */
}

.jogo-info {
    flex: 1;
    min-width: 0;
}

.jogo-info a {
    color: #fff;
    text-decoration: none;
    font-weight: 600;
    font-size: 14px;
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
     pointer-events: none; /* Não intercepta cliques */
}

.jogo-info a:hover {
    text-decoration: underline;
}

.jogo-meta {
    font-size: 12px;
    opacity: 0.85;
    margin-top: 2px;
}

.jogo-transmissao {
    font-size: 12px;
    margin-top: 2px;
    color: #ffd54f;
    font-weight: 500;
    display: flex;
    align-items: center;
    gap: 4px;
     pointer-events: none; /* Não intercepta cliques */
}

.jogo-transmissao::before {
    content: "📺";
    font-size: 13px;
     pointer-events: none; /* Não intercepta cliques */
}

@media (max-width: 480px) {
    #card-jogos {
        width: 92vw;
        right: 4vw;
    }
}
#video-fundo {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    z-index: -1;
}

#video-fundo iframe {
    width: 100%;
    height: 100%;
    pointer-events: none; /* Não intercepta cliques */
}

</style>
</head>
<body>

<script>
    // Lista de IDs dos vídeos do YouTube
    const videos = [
        "pyeJE7wmL9s",
        "smavD1fopZ8",
        "qnR0s1QVknI"
    ];

    const iframe = document.getElementById("video-frame");

    function trocarVideo() {
        // Escolhe um ID aleatório
        const id = videos[Math.floor(Math.random() * videos.length)];
        iframe.src = `https://www.youtube.com/embed/${id}?autoplay=1&mute=1&loop=1&playlist=${id}&controls=0&showinfo=0&modestbranding=1`;
    }

    // Primeiro vídeo
    trocarVideo();

    // Troca a cada 30 segundos
    setInterval(trocarVideo, 60000);
</script>


<?php if ($test_account_message): ?>
    <div id="test-account-message"><?php echo $test_account_message; ?></div>
<?php else: ?>
    <div id="saudacao"><?php echo htmlspecialchars($saudacao); ?></div>
<?php endif; ?>

<!-- Card de jogos -->
<div id="card-jogos">
    <h3 id="titulo-jogos">Jogos de Hoje</h3>
    <div id="lista-jogos">
        <?php if (!empty($jogosArray)): ?>
            <?php
            $max = min(4, count($jogosArray));
            for ($i = 0; $i < $max; $i++):
                $jogo = $jogosArray[$i];
            ?>
            <div class="jogo-item">
                <img class="escudo" src="<?php echo htmlspecialchars($jogo['imagem_casa']); ?>"
                     alt="<?php echo htmlspecialchars($jogo['time_casa']); ?>"
                     onerror="this.onerror=null;this.src='https://www.futebolnatv.com.br/assets/img/loadteam.png';">
                <div class="jogo-info">
                    <?php if (!empty($jogo['link_jogo'])): ?>
                        <a href="<?php echo htmlspecialchars($jogo['link_jogo']); ?>" target="_blank" rel="noopener">
                            <?php echo htmlspecialchars($jogo['time_casa']); ?> x <?php echo htmlspecialchars($jogo['time_fora']); ?>
                        </a>
                    <?php else: ?>
                        <div><?php echo htmlspecialchars($jogo['time_casa']); ?> x <?php echo htmlspecialchars($jogo['time_fora']); ?></div>
                    <?php endif; ?>
                    <div class="jogo-meta">
                        <?php echo htmlspecialchars($jogo['hora_jogo'] ?: ''); ?>
                        <?php if (!empty($jogo['campeonato'])) echo ' — ' . htmlspecialchars($jogo['campeonato']); ?>
                    </div>
                </div>
                <img class="escudo" src="<?php echo htmlspecialchars($jogo['imagem_fora']); ?>"
                     alt="<?php echo htmlspecialchars($jogo['time_fora']); ?>"
                     onerror="this.onerror=null;this.src='https://www.futebolnatv.com.br/assets/img/loadteam.png';">
            </div>
            <?php endfor; ?>
        <?php else: ?>
            <div style="text-align:center; opacity:0.8;">Nenhum jogo disponível</div>
        <?php endif; ?>
    </div>
</div>


<!-- QR Code -->
<div id="qr-code-box">
    <div style="font-size: 14px;">QRCODE SUPORTE</div>
    <img src="./qrcode_suporte.png" alt="QR Code Suporte">
    <div style="margin-top: 5px;">
        Expira: <span id="expire_date"><?php echo htmlspecialchars($expire_date); ?></span>
    </div>
</div>

<body id="bodyBg">
<script>
function atualizarBackground() {
    fetch("fundo.php")
        .then(res => res.text())
        .then(img => {
            if (img.trim() !== "") {
                document.getElementById("bodyBg").style.backgroundImage = `url('${img}')`;
            }
        });
}

// Atualiza a cada 5 segundos (tempo real "simulado")
setInterval(atualizarBackground, 5000);

// Chama já na abertura
atualizarBackground();
</script>
</body>

<script>
const tituloJogos = document.getElementById('titulo-jogos');
const LISTA = document.getElementById('lista-jogos');
let idx = 0;
let mostrandoAmanha = false;
const PLACEHOLDER_IMG = "https://www.futebolnatv.com.br/assets/img/loadteam.png";

// Esses arrays precisam ser preenchidos com os dados de hoje e amanhã vindos do PHP
let JOGOS_HOJE = <?php echo json_encode($jogosHojeArray ?? [], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); ?> || [];
let JOGOS_AMANHA = <?php echo json_encode($jogosAmanhaArray ?? [], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); ?> || [];

function filtrarJogos(jogos) {
    return jogos.filter(j => 
        j && j.time_casa && j.time_fora &&
        j.imagem_casa && j.imagem_fora &&
        j.imagem_casa !== PLACEHOLDER_IMG &&
        j.imagem_fora !== PLACEHOLDER_IMG
    );
}
JOGOS_HOJE = filtrarJogos(JOGOS_HOJE);
JOGOS_AMANHA = filtrarJogos(JOGOS_AMANHA);

function createEscudo(src, alt) {
    const img = document.createElement('img');
    img.className = 'escudo';
    img.alt = alt || '';
    img.src = src || PLACEHOLDER_IMG;
    img.onerror = function() { this.src = PLACEHOLDER_IMG; };
    return img;
}

function renderSliceCircular(arr, start, size) {
    LISTA.innerHTML = '';
    if (!arr.length) {
        LISTA.innerHTML = '<div style="text-align:center; opacity:0.8;">Nenhum jogo disponível</div>';
        return;
    }
    for (let i = 0; i < size; i++) {
        const jogo = arr[(start + i) % arr.length];
        const divItem = document.createElement('div');
        divItem.className = 'jogo-item';
        divItem.appendChild(createEscudo(jogo.imagem_casa, jogo.time_casa));

        const info = document.createElement('div');
        info.className = 'jogo-info';
        const aOpen = jogo.link_jogo
            ? `<a href="${jogo.link_jogo}" target="_blank" rel="noopener">${jogo.time_casa} x ${jogo.time_fora}</a>`
            : `<div>${jogo.time_casa} x ${jogo.time_fora}</div>`;

        let meta = '';
        if (jogo.hora_jogo || jogo.campeonato) {
            meta += `<div class="jogo-meta">${jogo.hora_jogo || ''}${jogo.campeonato ? ' — ' + jogo.campeonato : ''}</div>`;
        }
        if (jogo.transmissao) {
            meta += `<div class="jogo-transmissao">${jogo.transmissao}</div>`;
        }
        info.innerHTML = aOpen + meta;
        divItem.appendChild(info);
        divItem.appendChild(createEscudo(jogo.imagem_fora, jogo.time_fora));
        LISTA.appendChild(divItem);
    }
}

function rotate() {
    const jogosAtuais = mostrandoAmanha ? JOGOS_AMANHA : JOGOS_HOJE;
    tituloJogos.textContent = mostrandoAmanha ? 'Jogos de Amanhã' : 'Jogos de Hoje';
    if (!jogosAtuais.length) return;

    renderSliceCircular(jogosAtuais, idx, 3);
    idx++;
    if (idx >= jogosAtuais.length) {
        idx = 0;
        mostrandoAmanha = !mostrandoAmanha;
    }
}

rotate();
setInterval(rotate, 6000);
</script>
<style>
.jogo-item:focus {
    outline: none;
    background: rgba(255, 255, 255, 0.15);
    box-shadow: 0 0 10px #8a2be2;
}
</style>

<script>
// Adiciona suporte ao controle remoto
function ativarControleRemoto() {
    const itens = document.querySelectorAll('#lista-jogos .jogo-item');
    if (!itens.length) return;

    itens.forEach((item, i) => {
        item.setAttribute('tabindex', '0'); // Permite foco
        item.addEventListener('keydown', (e) => {
            if (e.key === 'ArrowDown') {
                e.preventDefault();
                const next = itens[i + 1] || itens[0];
                next.focus();
            } else if (e.key === 'ArrowUp') {
                e.preventDefault();
                const prev = itens[i - 1] || itens[itens.length - 1];
                prev.focus();
            } else if (e.key === 'Enter') {
                const link = item.querySelector('a');
                if (link) window.location.href = link.href;
            }
        });
    });

    // Foca o primeiro item ao carregar
    itens[0].focus();
}

// Chamando após renderizar os jogos
setTimeout(ativarControleRemoto, 500);
</script>
<script>
function atualizarValidade() {
    fetch('?check_expire=1')
        .then(response => response.json())
        .then(data => {
            document.getElementById("expire_date").innerText = data.expire_date;
        })
        .catch(err => console.error("Erro ao buscar validade:", err));
}

// Atualiza a cada 5 segundos
setInterval(atualizarValidade, 5000);
</script>



</body>
</html>