<?php
/**
 * tv.php - aahaber.com Canlı Televizyon İzle & EPG Rehberi (SEO Uyumlu)
 */

// 1. Slug & Türkçe Karakter Temizleme Fonksiyonu
if (!function_exists('aahaber_slugify')) {
    function aahaber_slugify($text) {
        $char_map = [
            'İ' => 'i', 'I' => 'i', 'ı' => 'i',
            'Ğ' => 'g', 'ğ' => 'g',
            'Ü' => 'u', 'ü' => 'u',
            'Ş' => 's', 'ş' => 's',
            'Ö' => 'o', 'ö' => 'o',
            'Ç' => 'c', 'ç' => 'c'
        ];
        $text = strtr($text, $char_map);
        $text = strtolower($text);
        $text = preg_replace('/[^a-z0-9]+/i', '-', $text);
        return trim($text, '-');
    }
}

// 2. Kanalları Yükle & Filtrele
$raw_tv_json = @file_get_contents(__DIR__ . '/data/tv_tr.json');
$tv_channels_data = $raw_tv_json ? json_decode($raw_tv_json, true) : [];
if (!is_array($tv_channels_data)) $tv_channels_data = [];

$blocked_channel_names = ['ibrahimlive', 'tele 1', 'tele1'];
$tv_channels_data = array_values(array_filter($tv_channels_data, function($ch) use ($blocked_channel_names) {
    $clean = strtolower(str_replace([' ', '-', '_'], '', $ch['name'] ?? ''));
    foreach ($blocked_channel_names as $b) {
        $b_clean = strtolower(str_replace([' ', '-', '_'], '', $b));
        if ($clean === $b_clean || strpos($clean, $b_clean) !== false) return false;
    }
    return true;
}));

// 3. Parametreleri Çözümle (kanal / k / slug & ulke)
$selected_country = isset($_GET['ulke']) ? strtolower(trim($_GET['ulke'])) : 'tr';
if ($selected_country === 'il' || $selected_country === 'israel') $selected_country = 'tr';

$requested_slug = isset($_GET['kanal']) ? trim($_GET['kanal']) : (isset($_GET['k']) ? trim($_GET['k']) : (isset($_GET['slug']) ? trim($_GET['slug']) : ''));
$requested_channel = null;

if (!empty($requested_slug)) {
    // Hem 'atv' hem de 'atv-canli-izle' biçimlerini destekle
    $clean_slug = preg_replace('/-(canli-izle|canli-yayin|canli|izle)$/i', '', $requested_slug);
    foreach ($tv_channels_data as $ch) {
        $s = aahaber_slugify($ch['name'] ?? '');
        if ($s === $clean_slug || $s === $requested_slug || ($ch['nanoid'] ?? '') === $requested_slug) {
            $requested_channel = $ch;
            $requested_channel['slug'] = $s;
            break;
        }
    }
}

// 4. SEO Başlık, Açıklama, Canonical & Schema Yapılandırması
if ($requested_channel) {
    $current_channel_name = $requested_channel['name'];
    $current_channel_cat = $requested_channel['category'] ?? 'Ulusal';
    $current_channel_slug = $requested_channel['slug'];

    $page_title = "{$current_channel_name} Canlı İzle — Kesintisiz HD Canlı Yayın | aahaber.com";
    $page_desc = "{$current_channel_name} canlı yayınını donmadan, kesintisiz ve yüksek HD kalitede aahaber.com üzerinden izleyin. {$current_channel_name} canlı yayın akışı ve rehberi.";
    $page_keywords = "{$current_channel_name} canlı izle, {$current_channel_name} kesintisiz, {$current_channel_name} canlı yayın, canlı tv izle, aahaber";
    $canonical_url = "tv.php?kanal=" . urlencode($current_channel_slug . '-canli-izle');

    $schema_json = [
        "@context" => "https://schema.org",
        "@type" => "BroadcastService",
        "name" => $current_channel_name,
        "broadcastDisplayName" => $current_channel_name,
        "videoFormat" => "HD",
        "inLanguage" => "tr",
        "isLiveBroadcast" => true,
        "description" => $page_desc,
        "url" => $canonical_url
    ];
} elseif ($selected_country !== 'tr') {
    $countries_meta_raw = @file_get_contents(__DIR__ . '/data/countries_metadata.json');
    $c_meta = $countries_meta_raw ? json_decode($countries_meta_raw, true) : [];
    $country_name = $c_meta[$selected_country]['name_tr'] ?? strtoupper($selected_country);
    
    $current_channel_name = "{$country_name} Televizyonları";
    $current_channel_cat = "Uluslararası";
    $current_channel_slug = '';

    $page_title = "{$country_name} Canlı TV Kanalları İzle — Kesintisiz HD Yayın | aahaber.com";
    $page_desc = "{$country_name} televizyon kanallarını canlı, HD kalitede ve kesintisiz aahaber.com üzerinden izleyin.";
    $canonical_url = "tv.php?ulke=" . urlencode($selected_country);
} else {
    $first_channel = !empty($tv_channels_data[0]) ? $tv_channels_data[0] : null;
    $current_channel_name = $first_channel ? $first_channel['name'] : 'Canlı TV';
    $current_channel_cat = $first_channel['category'] ?? 'Ulusal';
    $current_channel_slug = $first_channel ? aahaber_slugify($first_channel['name']) : '';

    $page_title = "Canlı TV İzle — aahaber.com Kesintisiz Canlı Televizyon";
    $page_desc = "Türkiye ve dünyanın 170+ popüler televizyon kanalını HD kalitede canlı izleyin. EPG yayın akışı rehberi ve nostaljik TV temaları.";
    $canonical_url = "tv.php";
}

$page_active = "tv";
$search_placeholder = "Kanal ara (örn: TRT, ATV, NTV, beIN)...";

require_once __DIR__ . '/ust.php';
?>

<div class="tv-page-container">

  <!-- Üst Breadcrumb ve Bilgi Şeridi -->
  <div class="tv-header-banner">
    <div class="tv-breadcrumb">
      <a href="index.php">Haberler</a>
      <span>&rsaquo;</span>
      <span style="color: var(--text-main); font-weight: 700;">Televizyon İzle</span>
    </div>

    <div class="tv-banner-notice">
      <span class="tv-live-pulse-dot"></span>
      <span>Canlı Yayın Akışı & EPG Rehberi Aktif (170+ TV Kanalı)</span>
    </div>
  </div>

  <!-- 2 Kolonlu Canlı TV Sahnesi Düzeni -->
  <div class="tv-main-layout">

    <!-- 1. SOL KOLON: Oynatıcı & Canlı EPG Kartı -->
    <div class="tv-stage-col">

      <!-- TV Görünüm / Tema Seçici -->
      <div class="tv-skin-switcher-bar">
        <div class="skin-switcher-title">
          <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><rect x="2" y="7" width="20" height="15" rx="2" ry="2"></rect><polyline points="17 2 12 7 7 2"></polyline></svg>
          <span>TV Görünümü:</span>
        </div>
        <div class="skin-switcher-options" id="tvSkinSelector">
          <button type="button" class="skin-btn active" data-skin="modern-oled" onclick="window.switchTVSkin('modern-oled')">
            <span class="skin-icon">✨</span>
            <span class="skin-label">Modern OLED</span>
          </button>
          <button type="button" class="skin-btn" data-skin="retro-crt" onclick="window.switchTVSkin('retro-crt')">
            <span class="skin-icon">📺</span>
            <span class="skin-label">Nostaljik Tüplü TV</span>
          </button>
          <button type="button" class="skin-btn" data-skin="cyber-neon" onclick="window.switchTVSkin('cyber-neon')">
            <span class="skin-icon">⚡</span>
            <span class="skin-label">Cyberpunk HUD</span>
          </button>
          <button type="button" class="skin-btn" data-skin="nordic-wood" onclick="window.switchTVSkin('nordic-wood')">
            <span class="skin-icon">🪵</span>
            <span class="skin-label">Nordik Ahşap TV</span>
          </button>
        </div>
      </div>

      <!-- TV Tiyatro / Sahne Kapsayıcısı -->
      <div id="tvHeroStage" class="tv-hero-stage skin-modern-oled">

        <!-- 1. Üst Dekorlar -->
        <div class="tv-stage-top-decor">
          <div class="crt-antenna-rig">
            <div class="crt-rod crt-rod-left"></div>
            <div class="crt-antenna-pivot"></div>
            <div class="crt-rod crt-rod-right"></div>
          </div>
          <div class="cyber-top-strip">
            <div class="cyber-strip-left">
              <span class="cyber-blink-dot"></span>
              <span>FEED: SAT-OPTICAL // 4K 60FPS</span>
            </div>
            <div class="cyber-strip-right">
              <span>SECURITY: ENCRYPTED // CH-LIVE</span>
            </div>
          </div>
        </div>

        <!-- 2. TV Kabin & Kasa Çerçevesi -->
        <div class="tv-cabinet-wrapper">
          
          <div id="tvPlayerWrapper" class="tv-player-box">
            <!-- Native Video Element (HLS .m3u8) -->
            <video id="tvVideoPlayer" class="tv-media-element" playsinline controls preload="auto"></video>

            <!-- YouTube Embed -->
            <div id="tvYoutubeWrap" class="tv-youtube-container" style="display: none;">
              <iframe id="tvYoutubeFrame" src="" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
            </div>

            <!-- Yükleniyor Katmanı -->
            <div id="tvPlayerLoader" class="tv-player-overlay tv-loader-overlay" style="display: none;">
              <div class="tv-spinner"></div>
              <p class="tv-loader-text">Yayın Bağlanıyor, Lütfen Bekleyin...</p>
            </div>

            <!-- Hata Katmanı -->
            <div id="tvPlayerError" class="tv-player-overlay tv-error-overlay" style="display: none;">
              <span class="tv-error-icon">⚠️</span>
              <h4 class="tv-error-title">Yayın Başlatılamadı</h4>
              <p class="tv-error-msg">Yayın sunucusundan yanıt alınamadı veya yayın kaynağı geçici olarak çevrimdışı.</p>
              <button type="button" id="tvRetryBtn" class="tv-btn-retry">Tekrar Dene</button>
            </div>

            <div class="crt-screen-reflection"></div>
            <div class="cyber-corner-bracket corner-tl"></div>
            <div class="cyber-corner-bracket corner-tr"></div>
            <div class="cyber-corner-bracket corner-bl"></div>
            <div class="cyber-corner-bracket corner-br"></div>
          </div>

          <!-- Retro CRT Yan Kontrol Paneli -->
          <div class="crt-side-panel">
            <div class="crt-brand-badge">
              <span>SONY</span>
              <small>TRINITRON</small>
            </div>
            <div class="crt-rotary-group">
              <div class="crt-rotary-dial" id="crtChannelDial" title="Sonraki Kanalı Aç">
                <div class="crt-knob-circle">
                  <span class="knob-marker"></span>
                </div>
                <span class="crt-knob-text">CH SELECT</span>
              </div>
              <div class="crt-rotary-dial" id="crtVolumeDial" title="Sesi Aç / Kapat">
                <div class="crt-knob-circle">
                  <span class="knob-marker"></span>
                </div>
                <span class="crt-knob-text">VOLUME</span>
              </div>
            </div>
            <div class="crt-speaker-grille">
              <span></span><span></span><span></span><span></span><span></span><span></span>
            </div>
            <div class="crt-power-section" id="crtPowerBtn" title="Yayın Duraklat / Oynat">
              <span class="crt-power-led active"></span>
              <span class="crt-power-btn-cap">PWR</span>
            </div>
          </div>

        </div>

        <!-- 3. Nordik Ahşap Soundbar -->
        <div class="nordic-soundbar-row">
          <div class="nordic-fabric-mesh"></div>
          <div class="nordic-metal-badge">
            <span class="nordic-status-led"></span>
            <span>BANG & OLUFSEN TONE STUDIO</span>
          </div>
        </div>

        <!-- 4. Alt Standlar -->
        <div class="tv-stage-base">
          <div class="oled-stand-mount">
            <div class="oled-stand-neck"></div>
            <div class="oled-stand-foot">
              <span class="oled-logo-emboss">OLED ULTRA HD</span>
            </div>
          </div>
          <div class="nordic-easel-legs">
            <div class="nordic-leg-bar leg-l"></div>
            <div class="nordic-leg-bar leg-r"></div>
          </div>
        </div>

      </div>

      <!-- Video Altı Kontrol ve Kanal Bilgi Barı -->
      <div class="tv-player-bar">
        <div class="tv-now-playing-info">
          <span id="tvCurrentChannelBadge" class="tv-channel-tag">HD TV</span>
          <h2 id="tvCurrentChannelTitle">Kanal Seçiniz</h2>
          <span class="tv-live-pill-tag">
            <span class="tv-live-pulse-dot"></span>
            Canlı Yayın
          </span>
        </div>
        <div class="tv-player-tools">
          <a href="#" id="tvYtDirectBtn" class="tv-yt-link-btn" target="_blank" rel="noopener noreferrer" title="YouTube'da Canlı İzle" style="display: none;">
            <svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>
            <span>YouTube'da Aç</span>
          </a>
          <button type="button" id="tvFavToggleBtn" class="tv-tool-btn" title="Favorilere Ekle / Çıkar">
            <span class="tv-fav-star">☆</span>
          </button>
          <button type="button" id="tvPipBtn" class="tv-tool-btn" title="Resim İçinde Resim (PiP)">🔲</button>
          <button type="button" id="tvFullscreenBtn" class="tv-tool-btn" title="Tam Ekran">⛶</button>
        </div>
      </div>

      <!-- Canlı EPG (Yayın Akışı) Bilgi Kartı -->
      <div id="tvEpgBar" class="tv-epg-card" style="display: none;">
        <div class="tv-epg-now">
          <div class="tv-epg-badge-wrap">
            <span class="tv-epg-pulse-dot"></span>
            <span class="tv-epg-badge">ŞU AN YAYINDA</span>
            <span id="tvEpgNowTime" class="tv-epg-time">--:--</span>
          </div>
          <h3 id="tvEpgNowTitle" class="tv-epg-title">--</h3>
          <div class="tv-epg-progress-wrap">
            <div id="tvEpgProgressFill" class="tv-epg-progress-fill" style="width: 0%;"></div>
          </div>
        </div>

        <div class="tv-epg-next-col" id="tvEpgNextBox" style="display: none;">
          <span class="tv-epg-next-label">SIRADAKİ PROGRAM</span>
          <h4 id="tvEpgNextTitle" class="tv-epg-next-title">--</h4>
          <span id="tvEpgNextTime" class="tv-epg-next-time">--:--</span>
        </div>

        <div class="tv-epg-action">
          <button type="button" id="tvEpgModalBtn" class="tv-epg-open-btn" title="Günün Tüm Yayın Akışı">
            <span>📋</span>
            <span>Yayın Akışı</span>
          </button>
        </div>
      </div>

      <!-- Kanal Tanıtımı & SEO Bilgi Paneli -->
      <section class="tv-seo-info-card" id="tvSeoInfoCard">
        <div class="tv-seo-header">
          <div class="tv-seo-title-group">
            <h2 id="tvSeoChannelTitle"><?= htmlspecialchars($current_channel_name) ?> Canlı Yayın İzle</h2>
            <span class="tv-seo-badge" id="tvSeoChannelCategory"><?= htmlspecialchars($current_channel_cat) ?></span>
          </div>
          <span class="tv-seo-live-indicator">
            <span class="tv-live-pulse-dot"></span>
            CANLI YAYIN
          </span>
        </div>
        <p class="tv-seo-description" id="tvSeoDescription">
          <?= htmlspecialchars($current_channel_name) ?> canlı yayınını donmadan, kesintisiz ve yüksek HD görüntü kalitesiyle aahaber.com üzerinden izleyebilirsiniz. Günün canlı yayın akışı rehberine, dizi ve program detaylarına anında erişin.
        </p>
        <div class="tv-seo-features">
          <div class="tv-feat-item">
            <span class="tv-feat-icon">📺</span>
            <div><strong>HD Canlı Yayın</strong><span>720p / 1080p Yüksek Çözünürlük</span></div>
          </div>
          <div class="tv-feat-item">
            <span class="tv-feat-icon">⚡</span>
            <div><strong>Kesintisiz HLS Akış</strong><span>Düşük gecikmeli yerel oynatıcı</span></div>
          </div>
          <div class="tv-feat-item">
            <span class="tv-feat-icon">📱</span>
            <div><strong>Tüm Cihazlarla Uyumlu</strong><span>Mobil, tablet ve masaüstü</span></div>
          </div>
        </div>
      </section>

    </div>

    <!-- 2. SAĞ KOLON: Kanallar & Filtreler Yan Paneli -->
    <aside class="tv-sidebar-col">
      <div class="tv-sidebar-inner">

        <!-- Ülke Seçimi -->
        <div class="tv-country-bar">
          <div class="tv-country-head">
            <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><circle cx="12" cy="12" r="10"/><path d="M2 12h20"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg>
            <span>Yayın Ülkesi:</span>
            <span id="tvCountryCountTag" class="tv-country-count-tag">162 TV</span>
          </div>
          <div class="custom-country-picker" id="tvCountryPicker">
            <button type="button" class="country-picker-btn" id="tvCountryTrigger" aria-haspopup="listbox" aria-expanded="false">
              <img id="tvSelectedFlag" class="country-flag-icon" src="https://flagcdn.com/w40/tr.png" width="20" height="14" alt="TR">
              <span id="tvSelectedName" class="country-selected-label">Türkiye</span>
              <svg class="picker-chevron" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"/></svg>
            </button>
            <div class="country-dropdown-menu" id="tvCountryDropdown" style="display: none;">
              <div class="country-search-box">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
                <input type="text" id="tvCountrySearchInput" placeholder="Ülke ara (örn: Almanya, İngiltere)..." autocomplete="off">
              </div>
              <div class="country-options-scroll" id="tvCountryOptionsList"></div>
            </div>
            <select id="tvCountrySelect" style="display: none;">
              <option value="tr" selected>Türkiye</option>
            </select>
          </div>
        </div>

        <!-- Arama & Temizleme Kutusu -->
        <div class="tv-search-wrap">
          <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
          <input type="text" id="tvChannelSearch" placeholder="Kanal ara (örn: TRT, ATV, NTV)..." autocomplete="off">
          <button type="button" id="tvSearchClear" class="tv-search-clear-btn" style="display: none;">&times;</button>
        </div>

        <!-- Sekmeler: Tümü / Favorilerim -->
        <div class="tv-sidebar-tabs">
          <button type="button" class="tv-tab-btn active" data-tab="all">
            Tüm Kanallar <span id="tvTotalBadge" class="tv-badge">0</span>
          </button>
          <button type="button" class="tv-tab-btn" data-tab="favorites">
            ⭐ Favorilerim <span id="tvFavBadge" class="tv-badge">0</span>
          </button>
        </div>

        <!-- Kategori Filtre Butonları -->
        <div id="tvCategoriesBar" class="tv-categories-scroll"></div>

        <!-- Kanallar Listesi -->
        <div id="tvChannelsList" class="tv-channels-list"></div>

        <!-- Boş Sonuç Ekranı -->
        <div id="tvEmptyState" class="tv-empty-state" style="display: none;">
          <span style="font-size: 32px; display: block; margin-bottom: 6px;">📺</span>
          <p>Aradığınız kriterlere uygun kanal bulunamadı.</p>
        </div>

      </div>
    </aside>

  </div>

</div>

<!-- EPG Yayın Akışı Modalı -->
<div id="tvEpgModal" class="tv-modal-wrap" style="display: none;">
  <div id="tvEpgModalBackdrop" class="tv-modal-backdrop"></div>
  <div class="tv-modal-box">
    <div class="tv-modal-header">
      <div class="tv-modal-title-group">
        <span style="font-size: 22px;">📋</span>
        <div>
          <h3 id="tvEpgModalTitle">Kanal Yayın Akışı</h3>
          <p class="tv-modal-subtitle">Günün Canlı Program Rehberi (EPG)</p>
        </div>
      </div>
      <button type="button" id="tvEpgModalClose" class="tv-modal-close-btn">&times;</button>
    </div>
    <div id="tvEpgModalList" class="tv-modal-body"></div>
  </div>
</div>

<script>
window.__INITIAL_TV_CHANNEL__ = <?= json_encode($requested_channel ? ($requested_channel['slug'] ?? $requested_channel['nanoid']) : null, JSON_UNESCAPED_UNICODE) ?>;
window.__INITIAL_TV_COUNTRY__ = <?= json_encode($selected_country, JSON_UNESCAPED_UNICODE) ?>;
</script>

<?php
$extra_js = ['hls.min.js', 'tv.js?v=2.6'];
require_once __DIR__ . '/alt.php';
?>
