/* Trang chủ (main.php) — trước đây là script nhúng cuối main.php. * Tìm kiếm + sắp xếp danh sách game qua ajax_load_game.php như cũ; chạy qua * WGNav.page nên rời trang là gỡ sự kiện và bỏ qua kết quả AJAX về muộn. */ WGNav.page('home', function (root, ctx) { var $ = window.jQuery; var $display = $(root).find('#game_display'); var $sort = $(root).find('#sort_games'); var $search = $(root).find('#gameSearch'); var $clear = $(root).find('#gameSearchClear'); var seo_name = $display.attr('data-seo') || ''; var searchTimer = null; var xhr = null; /* Search được xử lý ở SERVER (tham số `q`) nên tìm trên toàn bộ game trong DB */ function loadGames(sortVal, keyword) { $display.css('opacity', '0.5'); if (xhr) xhr.abort(); xhr = $.ajax({ url: '/ajax_load_game.php', type: 'GET', data: { sort: sortVal || $sort.val(), seo: seo_name, q: typeof keyword !== 'undefined' ? keyword : $.trim($search.val()) }, success: function (data) { if (!ctx.alive) return; $display.html(data).css('opacity', '1'); $(root).find('#searchEmpty').toggle(!$display.find('.game-col').length); }, error: function () { if (ctx.alive) $display.css('opacity', '1'); } }); } ctx.cleanup(function () { if (xhr) xhr.abort(); clearTimeout(searchTimer); }); ctx.on(root, 'change', '#sort_games', function () { loadGames($sort.val()); }); /* debounce 350ms như bản cũ */ ctx.on(root, 'input', '#gameSearch', function () { var q = $.trim($search.val()); $clear.css('display', q.length > 0 ? 'flex' : 'none'); clearTimeout(searchTimer); searchTimer = setTimeout(function () { loadGames(null, q); }, 350); }); ctx.on(root, 'click', '#gameSearchClear', function () { $search.val(''); $clear.css('display', 'none'); loadGames(null, ''); $search.focus(); }); /* Thông báo popup (main.php in dữ liệu vào #wgTbData). ?xem_popup=1 thì hiện luôn, không đếm — để admin kiểm tra. Script vẽ popup chỉ nạp một lần dù khách quay lại trang chủ nhiều lần trước khi nó tải xong. */ var tb = root.querySelector('#wgTbData'); if (tb) { var data = null; try { data = JSON.parse(tb.getAttribute('data-tb')); } catch (e) {} var force = /[?&]xem_popup=1(&|$)/.test(window.location.search); if (data) { if (!window.__wgTbLoad) { window.__wgTbLoad = window.WGThongBao ? Promise.resolve() : new Promise(function (ok, fail) { var s = document.createElement('script'); s.src = tb.getAttribute('data-js'); s.onload = ok; s.onerror = function () { window.__wgTbLoad = null; fail(); }; document.head.appendChild(s); }); } window.__wgTbLoad.then(function () { if (ctx.alive && window.WGThongBao) window.WGThongBao.show(data, { force: force }); }, function () {}); } /* Rời trang chủ khi popup còn mở (bấm Back) thì đóng theo. */ ctx.cleanup(function () { if (window.WGThongBao) window.WGThongBao.close(); }); } });