document.addEventListener('DOMContentLoaded', function() { const searchInput = document.querySelector('.sponsorlar-search-input'); // Arama alanı yoksa sadece tıklama loglamaya devam ederiz. function getAllSponsorElements() { return { premium: document.querySelectorAll('.sponsorlar-card-wrapper'), gif: document.querySelectorAll('.sponsorlar-gif-item'), kart: document.querySelectorAll('.sponsorlar-card-item'), kayan: document.querySelectorAll('.sponsorlar-marquee-item'), kategori: document.querySelectorAll('.sponsorlar-kategori-baslik'), kategoriGrids: document.querySelectorAll('.sponsorlar-cards-grid'), sections: document.querySelectorAll('.sponsorlar-section, .sponsorlar-gif-section, .sponsorlar-cards-section, .sponsorlar-marquee') }; } const allSponsorSections = getAllSponsorElements(); function getSearchableText(element) { if (!element) return ''; let searchText = ''; const link = element.querySelector('a'); if (link) { const href = link.getAttribute('href') || ''; const img = link.querySelector('img'); if (img) { const alt = img.getAttribute('alt') || ''; const src = img.getAttribute('src') || ''; searchText += href + ' ' + alt + ' ' + src + ' '; } const title = link.getAttribute('title') || ''; searchText += title; } const cardText = element.querySelector('.sponsorlar-card-text'); if (cardText) { searchText += ' ' + (cardText.textContent || ''); } return searchText.toLowerCase(); } function filterSponsors(searchTerm) { const term = searchTerm.toLowerCase().trim(); const elements = getAllSponsorElements(); if (term === '') { elements.sections.forEach(section => { if (section) { section.style.removeProperty('display'); } }); elements.kategori.forEach(kategori => { if (kategori) { kategori.style.removeProperty('display'); } }); elements.kategoriGrids.forEach(grid => { if (grid) { grid.style.removeProperty('display'); } }); elements.premium.forEach(item => { if (item) { item.style.removeProperty('display'); } }); elements.gif.forEach(item => { if (item) { item.style.removeProperty('display'); } }); elements.kart.forEach(item => { if (item) { item.style.removeProperty('display'); } }); elements.kayan.forEach(item => { if (item) { item.style.removeProperty('display'); } }); return; } elements.premium.forEach(item => { if (!item) return; const text = getSearchableText(item); const matches = text.includes(term); item.style.display = matches ? '' : 'none'; }); elements.gif.forEach(item => { if (!item) return; const text = getSearchableText(item); const matches = text.includes(term); item.style.display = matches ? '' : 'none'; }); elements.kart.forEach(item => { if (!item) return; const text = getSearchableText(item); const matches = text.includes(term); item.style.display = matches ? '' : 'none'; }); elements.kayan.forEach(item => { if (!item) return; const text = getSearchableText(item); const matches = text.includes(term); item.style.display = matches ? '' : 'none'; }); elements.kategoriGrids.forEach(grid => { if (!grid) return; const hasVisibleCards = Array.from(grid.querySelectorAll('.sponsorlar-card-item')).some(card => { return card.style.display !== 'none'; }); const prevKategori = grid.previousElementSibling; if (prevKategori && prevKategori.classList.contains('sponsorlar-kategori-baslik')) { const kategoriText = prevKategori.textContent?.toLowerCase() || ''; const kategoriMatches = kategoriText.includes(term); if (kategoriMatches || hasVisibleCards) { prevKategori.style.display = ''; grid.style.display = ''; } else { prevKategori.style.display = 'none'; grid.style.display = 'none'; } } else { grid.style.display = hasVisibleCards ? '' : 'none'; } }); elements.sections.forEach(section => { if (!section) return; if (section.classList.contains('sponsorlar-section')) { const hasVisible = Array.from(section.querySelectorAll('.sponsorlar-card-wrapper')).some(item => { return item.style.display !== 'none'; }); section.style.display = hasVisible ? '' : 'none'; } else if (section.classList.contains('sponsorlar-gif-section')) { const hasVisible = Array.from(section.querySelectorAll('.sponsorlar-gif-item')).some(item => { return item.style.display !== 'none'; }); section.style.display = hasVisible ? '' : 'none'; } else if (section.classList.contains('sponsorlar-marquee')) { const hasVisible = Array.from(section.querySelectorAll('.sponsorlar-marquee-item')).some(item => { return item.style.display !== 'none'; }); section.style.display = hasVisible ? '' : 'none'; } else if (section.classList.contains('sponsorlar-cards-section')) { const hasVisibleKategori = Array.from(section.querySelectorAll('.sponsorlar-kategori-baslik')).some(kategori => { return kategori.style.display !== 'none'; }); const hasVisibleCards = Array.from(section.querySelectorAll('.sponsorlar-card-item')).some(item => { return item.style.display !== 'none'; }); section.style.display = (hasVisibleKategori || hasVisibleCards) ? '' : 'none'; } }); } if (searchInput) { /* 150ms debounce — her tuş vuruşunda filterSponsors() yüzlerce kart üzerinde classList yazıp readback yapıyor. Hızlı yazımda jank üretir. */ let _searchDebounceId = null; searchInput.addEventListener('input', function (e) { const value = e.target.value; if (_searchDebounceId) clearTimeout(_searchDebounceId); _searchDebounceId = setTimeout(function () { _searchDebounceId = null; filterSponsors(value); }, 150); }); } // Sponsor tıklamalarını logla (sayfa yönlendirmesini geciktirmeden) const lastClickAtBySponsorId = {}; function getSponsorIdFromAnchor(anchor) { const raw = anchor?.getAttribute?.('data-sponsor-id'); const sponsorId = raw ? parseInt(raw, 10) : 0; return sponsorId > 0 ? sponsorId : 0; } function logSponsorClick(sponsorId) { const now = Date.now(); if (lastClickAtBySponsorId[sponsorId] && (now - lastClickAtBySponsorId[sponsorId]) < 1000) { return; // Çok hızlı tekrar tıklamaları engelle } lastClickAtBySponsorId[sponsorId] = now; const url = 'ajax/sponsor_click.php'; const payload = new URLSearchParams({ sponsor_id: String(sponsorId) }).toString(); try { if (navigator.sendBeacon) { const blob = new Blob([payload], { type: 'application/x-www-form-urlencoded; charset=UTF-8' }); navigator.sendBeacon(url, blob); return; } } catch (e) { // sendBeacon destek/izin sorunu olursa fetch fallback'a geçiyoruz } // keepalive: sayfa navigasyonu sırasında isteğin iptal olmasını azaltır fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, body: payload, keepalive: true }).catch(() => {}); } document.addEventListener('click', function(e) { const anchor = e.target?.closest?.('a[data-sponsor-id]'); if (!anchor) return; const sponsorId = getSponsorIdFromAnchor(anchor); if (!sponsorId) return; logSponsorClick(sponsorId); }); });