PageSourceSearch

https://canlitv.com/js/canlitv.js?ver=1.17

js canlitv.com collected 2026-10-02 19:09:31 UTC 20,705 bytes, 567 lines download raw bytes

1//---- Kanal listesi içi kategori seçimi  -----
2function ListeSayfa(sorgu,aktif){
3	if(sorgu.indexOf("kanal-bilgi")>0){
4		window.open(sorgu,"_blank");
5		}else{
6			donusum = "kanal_liste";
7			var ss = new Array();
8			ss = sorgu.replace("-tv-kanallari", "");
9			ss = ss.replace("-kanallari", "");
10			ss = ss.split("/").pop()
11			yukleniyor();
12			if(makeRequest("/modul/liste.php?kat="+ss+"&Kanal_id="+aktif)){return false;} else {return true;};
13		}
14}
15//---------------------------------------------------------------
16function YayinSec(yid,tab){
17	donusum = "yayin";
18		document.getElementById("ytab_0").className = "mtab";
19		document.getElementById("ytab_1").className = "mtab";
20		document.getElementById("ytab_2").className = "mtab";
21		document.getElementById("ytab_3").className = "mtab";
22		document.getElementById("ytab_4").className = "mtab";
23		document.getElementById("ytab_"+tab).className = "mtab_a";
24	yukleniyor();
25	if(makeRequest("/modul/ek.yayin.php?yid="+yid+"&rid="+Math.random())){return false;} else {return true;};
26}
27function ReytingSec(tur){
28	donusum = "reyting";
29	document.getElementById("rtab_program_tum").className = "mtab";
30	document.getElementById("rtab_program_ab").className = "mtab";
31	document.getElementById("rtab_program_abc").className = "mtab";
32	document.getElementById("rtab_tv").className = "mtab";
33	//document.getElementById("rtab_radyo").className = "mtab";
34	document.getElementById("rtab_gazete").className = "mtab";
35	document.getElementById("rtab_"+tur).className = "mtab_a";
36	yukleniyor();
37	if(makeRequest("/modul/ek.reyting.php?reyting="+tur+"&rid="+Math.random())){return false;} else {return true;};
38}
39
40
41//---- Kanal listesi tür seçimi (tv, radyo, kamera, favori) -----
42function TurSec(tur,aktif){
43	donusum = "kanal_liste";
44	document.getElementById("tab_tv").className = "tab";
45	//document.getElementById("tab_radyo").className = "tab";
46	document.getElementById("tab_kamera").className = "tab";
47	document.getElementById("tab_favori").className = "tab";
48	document.getElementById("tab_"+tur).className = "tab_a";
49	yukleniyor();
50	if(tur=="favori"){
51		if(makeRequest("/modul/liste.php?tur="+tur+"&fid="+getCookie("favori")+"&Kanal_id="+aktif)){return false;} else {return true;};
52	} else {
53		if(makeRequest("/modul/liste.php?tur="+tur+"&Kanal_id="+aktif)){return false;} else {return true;};
54	}
55}
56//-------------------------------------------
57
58//----- favori ekleme / kaldırma kodu ---------
59function FavoriEkle(id){
60	//alert(id);
61	var kid = new Array();
62	kid = getCookie("favori").split(",");
63	if(kid.length<50){
64		setCookie("favori",getCookie("favori") + (getCookie("favori") != "" ? "," : "") + id,3650);
65		document.querySelector('.ft_' + id + ' a:nth-child(4)').style.display = "none";
66		document.querySelector('.ft_' + id + ' a:nth-child(5)').style.display = "inline-block";
67
68		//document.getElementById("fe_"+id).className = "gizle";
69		//document.getElementById("fk_"+id).className = "goster";
70	} else {
71		alert("Favorilere en fazla 50 kanal ekleyebilirsiniz");
72	}
73}
74function FavoriKaldir(id, gizle) {
75    var kid = getCookie("favori").split(",");
76    var nf = "";
77    for (var k = 0; k < kid.length; k++) {
78        if (kid[k] != id) {
79            if (nf !== "") nf += ",";
80            nf += kid[k];
81        }
82    }
83    setCookie("favori", nf, 3650);
84
85    var ftElem = document.querySelector('.ft_' + id);
86    if (ftElem) {
87        var linkler = ftElem.querySelectorAll('a');
88        if (linkler[4]) linkler[4].style.display = "none"; // 5. link (index 4)
89        if (linkler[3]) linkler[3].style.display = "inline-block"; // 4. link (index 3)
90    }
91}
92//------------------------------------------
93
94//----- Arama fonsiyonu için karakter çevirme ------
95function cevir(metin){
96	metin = metin.replace("Ğ","G");
97	metin = metin.replace("Ü","U");
98	metin = metin.replace("Ş","S");
99	metin = metin.replace("İ","I");
100	metin = metin.replace("Ö","O");
101	metin = metin.replace("Ç","C");
102	metin = metin.replace("ğ","g");
103	metin = metin.replace("ü","u");
104	metin = metin.replace("ş","s");
105	metin = metin.replace("ı","i");
106	metin = metin.replace("ö","o");
107	metin = metin.replace("ç","c");
108	return metin;
109}
110//----------------------------------------------
111
112//----- Kanal listesi içinde kanal arama ------
113function KanalAra(){
114	donusum = "kanal_liste";
115	document.getElementById("tab_tv").className = "tab";
116	//document.getElementById("tab_radyo").className = "tab";
117	document.getElementById("tab_kamera").className = "tab";
118	document.getElementById("tab_favori").className = "tab";
119	yukleniyor();
120	if(makeRequest("/modul/liste.php?ara="+cevir(document.getElementById('ara').value))){return false;} else {return true;};
121}
122//------------------------------------------
123
124//----- liste yüklenme animasyonu ---------
125function yukleniyor(){
126	document.getElementById(donusum).innerHTML = '<div align="center"><br /><br /><br /><br /><br /><br /><br /><br /><br /><img src="temalar/kirmizi/resimler/yukleniyor.gif" /><br /><br /></div>';
127}
128//------------------------------------------
129
130function over(satir){
131	satir.className = "aktif";
132}
133function out(satir){
134	satir.className = "";
135}
136
137
138//-------------cookie------------------------
139function setCookie(c_name,value,expiredays){
140	var exdate=new Date();
141	exdate.setDate(exdate.getDate()+expiredays);
142	document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toUTCString());
143}
144
145function setCookie_seconds(name,value,seconds) {
146	var expires = "";
147	if (seconds) {
148		var date = new Date();
149		date.setTime(date.getTime() + (seconds*1000));
150		expires = "; expires=" + date.toUTCString();
151	}
152	document.cookie = name + "=" + (value || "")  + expires + "; path=/";
153}
154
155function getCookie(c_name){
156	if (document.cookie.length>0)
157	  {
158	  c_start=document.cookie.indexOf(c_name + "=");
159	  if (c_start!=-1)
160		{
161		c_start=c_start + c_name.length+1;
162		c_end=document.cookie.indexOf(";",c_start);
163		if (c_end==-1) c_end=document.cookie.length;
164		return unescape(document.cookie.substring(c_start,c_end));
165		}
166	  }
167	return "";
168}
169//--------------cookie------------------------
170
171//-------------veri_al------------------------
172function makeRequest(url){
173	http_request = false;
174	if (window.XMLHttpRequest) { // Mozilla, Safari,...
175		http_request = new XMLHttpRequest();
176		if (http_request.overrideMimeType) {
177			http_request.overrideMimeType('text/xml; charset=utf-8');
178		}
179	} else if (window.ActiveXObject) { // IE
180		try {
181			http_request = new ActiveXObject("Msxml2.XMLHTTP");
182		} catch (e) {
183			try {
184			http_request = new ActiveXObject("Microsoft.XMLHTTP");
185			} catch (e) {}
186		}
187	}
188	if (!http_request) {
189		alert('Hata : XMLHTTP örnegi oluturulamiyor !');
190		return 0;
191	}
192	http_request.onreadystatechange = alertContents;
193	http_request.open("GET", url, true);
194    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
195    //http_request.setRequestHeader("Connection", "close");
196	http_request.send(null);
197	return 1;
198}
199
200function alertContents() {
201	if (http_request.readyState == 4) {
202		if (http_request.status == 200) {
203			if(donusum=="simdi"){
204				var ds = http_request.responseText;
205				dds = ds.split("|");
206				SimdiTanimla(dds[0],dds[1],dds[2],dds[3]);
207			} else {
208				document.getElementById(donusum).innerHTML = http_request.responseText;
209				if(donusum=="kanal_liste"){
210					ListeSonrasi();
211					kanalRakamla();
212					}
213			}
214		} else {
215			alert('Hata : Veri aktarimi yapılamıyor !'+'\n'+'Lütfen tekrar deneyiniz.');
216		}
217	}
218}
219//-------------veri_al------------------------
220
221//-------------- yayında bandı --------------------
222var programListesi, serverZaman, hesapliZaman;
223function saniyedenSureye(d) {
224	d = Number(d);
225	var h = Math.floor(d / 3600);
226	var m = Math.floor(d % 3600 / 60);
227	var s = Math.floor(d % 3600 % 60);
228	return ((h > 0 ? h + ":" + (m < 10 ? "0" : "") : "") + m + ":" + (s < 10 ? "0" : "") + s);
229}
230function zamanHesapla(){
231	hesapliZaman=new Date(new Date().getTime()-zamanFarki);
232	var hours = hesapliZaman.getHours();
233	var minutes = "0" + hesapliZaman.getMinutes();
234	var seconds = "0" + hesapliZaman.getSeconds();
235}
236
237function saniyedenSureye2(ekelnecekSaniye){
238	var sureZaman = new Date(null);
239	sureZaman.setSeconds(ekelnecekSaniye);
240	var hours = sureZaman.getHours();
241	var minutes = "0" + sureZaman.getMinutes();
242	var seconds = "0" + sureZaman.getSeconds();
243}
244
245function yayinBandiIsle() {
246    for (let pl = 0; pl < programListesi.length; pl++) {
247        if (hesapliZaman.getTime() > programListesi[pl].zaman && hesapliZaman.getTime() < programListesi[pl + 1].zaman) {
248            document.querySelector(".ustYazi").innerHTML = programListesi[pl].program + " (" + programListesi[pl].bassaat + ")";
249            document.querySelector(".altYazi").innerHTML = "(" + programListesi[pl + 1].bassaat + ") " + programListesi[pl + 1].program;
250            let fark = programListesi[pl + 1].zaman - programListesi[pl].zaman;
251            let fark2 = hesapliZaman.getTime() - programListesi[pl].zaman;
252            let widthPercent = Math.round((fark2 / fark) * 10000) / 100;
253            document.querySelector(".bandIc").style.width = widthPercent + "%";
254            let kalanSaniye = (programListesi[pl + 1].zaman - hesapliZaman.getTime()) / 1000;
255            document.querySelector(".kalanSure em").innerHTML = saniyedenSureye(kalanSaniye);
256        }
257    }
258}
259
260document.addEventListener("DOMContentLoaded", function() {
261    if (aktifKanal){
262        fetch("/modul/ajax-yayin-akisi.php?kanal_id=" + aktifKanal)
263            .then(response => response.text())
264            .then(data => {
265                programListesi = JSON.parse(data);
266                serverZaman = new Date(programListesi[0].serverZaman * 1);
267                zamanFarki = Date.now() - serverZaman.getTime();
268                setInterval(zamanHesapla, 500);
269                setInterval(yayinBandiIsle, 500);
270            });
271    }
272});
273
274// kanal numaralandırma
275function kanalRakamla() {
276    let kanalRakam = 0;
277    let kanalGenislik = 255;
278
279    // #kanal_liste içindeki tüm ul > li > ilk çocukları seçiyoruz
280    const items = document.querySelectorAll("#kanal_liste ul li :nth-child(1)");
281
282    items.forEach(item => {
283        if (item.innerHTML.trim() !== "") {
284            kanalRakam++;
285
286            // Genişlik ayarı
287            if (kanalRakam > 99) kanalGenislik = 240;
288            else if (kanalRakam > 9) kanalGenislik = 248;
289
290            item.style.width = kanalGenislik + "px";
291
292            // Eğer rakam eklemek istersen
293            // item.innerHTML = kanalRakam + ". " + item.innerHTML;
294        }
295    });
296
297    return false;
298}
299//---------------------------------------------------------------------
300var yorum_modul=0;
301function yorum_gizle(){
302	if (yorum_modul==0){
303		document.getElementById("yorum_yap").style.display="block";
304		yorum_modul=1;
305	}
306	else{
307		document.getElementById("yorum_yap").style.display="none";
308		yorum_modul=0
309	}
310
311}
312
313// Yorum gönderimi (2026-09-30): sunucu doğrulaması + spam koruması modul/ajax-yorum.php'de, JSON döner.
314function yorum_gonder(tekrar) {
315    if (getCookie("yorum_zaman") === "1") {
316        alert("Bu kadar sık yorum gönderemezsiniz");
317        return false;
318    }
319
320    const isim   = document.querySelector("#isim");
321    const email  = document.querySelector("#email");
322    const mesaj  = document.querySelector("#mesajj");
323    const form   = document.querySelector("#yorumGonder");
324    const buton  = document.querySelector("#gonder");
325
326    if (isim.value.trim().length < 2) { alert("İsim alanını doldurmadınız"); isim.focus(); return false; }
327    if (!/^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/.test(email.value.trim())) { alert("Geçerli bir e-posta adresi yazın"); email.focus(); return false; }
328    if (mesaj.value.trim().length < 3) { alert("Mesaj alanını doldurmadınız"); mesaj.focus(); return false; }
329    if (buton.disabled) return false;
330
331    buton.disabled = true;
332    fetch("/modul/ajax-yorum.php", {
333        method: "POST",
334        body: new FormData(form)
335    })
336    .then(response => response.json())
337    .then(v => {
338        buton.disabled = false;
339        if (v.t && form.yorum_t) form.yorum_t.value = v.t;
340        if (v.ok) {
341            setCookie_seconds("yorum_zaman", "1", 60);
342            form.innerHTML = '<div class="yollandi"><b>Yorumunuz başarıyla alındı.</b><br>Editörlerimiz tarafından incelendikten sonra yayına alınacaktır.<br>İlginiz için teşekkür ederiz.</div>';
343            return;
344        }
345        if (v.alan === "sure" && !tekrar) { buton.disabled = true; setTimeout(() => { buton.disabled = false; yorum_gonder(true); }, 3500); return; } // sayfa uzun süre açık kaldı: yeni belirteç en az 3 sn sonra geçerli, bir kez daha dene
346        alert(v.mesaj || "Yorumunuz gönderilemedi, lütfen tekrar deneyin.");
347        const alan = v.alan && form.elements[v.alan];
348        if (alan && alan.focus) alan.focus();
349    })
350    .catch(() => {
351        buton.disabled = false;
352        alert("Yorumunuz gönderilemedi. Bağlantınızı kontrol edip tekrar deneyin.");
353    });
354
355    return false;
356}
357
358function hata_bildir(id) {
359    if (getCookie("hata_zaman") === "1") {
360        return false;
361    }
362    setCookie_seconds("hata_zaman", "1", 60);
363
364    fetch("/modul/ajax-hata.php?id=" + id, {
365        method: "POST"
366    })
367    .then(response => response.text())
368    .then(data => {
369        const btn = document.querySelector(".button-hata");
370        if (btn) btn.innerHTML = "Bildirildi!";
371    });
372
373    return false;
374}
375
376function yayinAkisiGoster(id) {
377    const kutular = document.querySelectorAll(".yayinAkisiKutu");
378    kutular.forEach(kutu => kutu.classList.add("gizlen"));
379
380    const secilenKutu = document.querySelector(".yayinAkisiKutu_" + id);
381    if (secilenKutu) {
382        secilenKutu.classList.remove("gizlen");
383    }
384	
385    for (let x = 0; x <= 6; x++) {
386        const menuEleman = document.querySelector(".yamenu_" + x);
387        if (!menuEleman) continue;
388
389        if (x === id) {
390            menuEleman.classList.remove("smenuk2");
391            menuEleman.classList.add("smenuk2_a");
392        } else {
393            menuEleman.classList.remove("smenuk2_a");
394            menuEleman.classList.add("smenuk2");
395        }
396    }
397}
398
399kanalRakamla();
400
401if (aktifKanal > 0) {
402    document.getElementById("sitene-ekle").value = 
403        '<iframe title="canli tv" width="560" height="315" src="https://www.canlitv.you/embed/?id=' 
404        + aktifKanal + '" frameborder="0" allowfullscreen></iframe>';
405}
406
407function ListeSonrasi() {
408	// ul>li içindeki linkler
409	const kanalLinks = document.querySelectorAll("#kanal_liste ul li a");
410	// bağımsız .kat linkleri
411	const katLinks = document.querySelectorAll(".kat");
412	const allLinks = [...kanalLinks, ...katLinks];
413
414	allLinks.forEach(link => {
415		// data-tag ile bayrak ekleme
416		const ulke = link.getAttribute('data-tag');
417		if (ulke) {
418			link.style.backgroundImage = "url(/bayraklar/" + ulke + ".png)";
419		}
420
421		// data-kat ile kategori görseli ekleme
422		const kategori = link.getAttribute('data-kat');
423		if (kategori) {
424			link.innerHTML = "<img height='13' width='51' src='/resimler/turler/" + cevir(kategori) +
425							 ".png' alt='" + cevir(kategori) + "'>";
426		}
427
428		const parentLi = link.closest("li"); // li varsa bul
429		const allLiLinks = parentLi ? parentLi.querySelectorAll("a") : [];
430		const kIdClass = parentLi ? Array.from(parentLi.classList).find(cls => cls.startsWith("ft_")) : null;
431		const kId = kIdClass ? kIdClass.split("_")[1] : null;
432
433		// ul>li içindeki 2. ve 3. link
434		if (allLiLinks[1] === link || allLiLinks[2] === link) {
435			link.addEventListener("click", function(event) {
436				event.preventDefault();
437				event.stopPropagation();
438				ListeSayfa(this.href, 0);
439			});
440		}
441		// ul>li içindeki favori ekle (4. link)
442		else if (allLiLinks[3] === link && kId) {
443			link.addEventListener("click", function(event) {
444				event.preventDefault();
445				event.stopPropagation();
446				FavoriEkle(kId);
447			});
448		}
449		// ul>li içindeki favori kaldır (5. link)
450		else if (allLiLinks[4] === link && kId) {
451			link.addEventListener("click", function(event) {
452				event.preventDefault();
453				event.stopPropagation();
454				FavoriKaldir(kId);
455			});
456		}
457		// ul>li dışında kalan kat class'lı linkler
458		else if (link.classList.contains("kat")) {
459			link.addEventListener("click", function(event) {
460				event.preventDefault();
461				event.stopPropagation();
462				ListeSayfa(this.href, 0);
463			});
464		}
465	});
466
467    // Favorilere eklenmiş kanalların buton görünümü
468    const favoriler = getCookie("favori").split(",");
469    favoriler.forEach(fv => {
470        const ftElem = document.querySelector(".ft_" + fv);
471        if (ftElem) {
472            const links = ftElem.querySelectorAll("a");
473            if (links[3]) links[3].style.display = "none";       // 4. link
474            if (links[4]) links[4].style.display = "inline-block"; // 5. link
475        }
476    });
477
478    // DOMContentLoaded yerine burada
479    const aktifElem = document.querySelector(".ft_" + aktifKanal);
480    if (aktifElem) aktifElem.classList.add("aktif");
481
482    const yorumlar = document.querySelector(".yorumlar");
483    const kanalBilgiSol = document.querySelector(".kanal-bilgi-sol");
484    if (yorumlar && kanalBilgiSol) {
485        yorumlar.style.height = (kanalBilgiSol.offsetHeight - 390) + "px";
486    }
487
488    // Kanal liste içi arama
489    function aramaIcinTemizle(kanalAdi) {
490        kanalAdi = kanalAdi.toLowerCase();
491        const chars = {'c':'ç','ı':'i','ğ':'g','ö':'o','ü':'u','ş':'s',' ':'','\.':''};
492        kanalAdi = kanalAdi.replace(/[çığöüş .]/g, m => chars[m] || m);
493        return kanalAdi;
494    }
495
496    const aramaInput = document.querySelector(".arama_text");
497    if (aramaInput) {
498        aramaInput.addEventListener("keyup", function() {
499            const arananKelime = aramaIcinTemizle(this.value);
500
501            document.querySelectorAll("#kanal_liste ul li").forEach(li => {
502                const aElem = li.querySelector("a");
503                let kontrolEdilenKelime = "";
504                if (aElem) {
505                    const dataArama = aElem.getAttribute("data-arama") || "";
506                    kontrolEdilenKelime = aramaIcinTemizle(aElem.innerHTML + " " + dataArama);
507                }
508                li.style.display = (kontrolEdilenKelime.indexOf(arananKelime) === -1) ? "none" : "block";
509            });
510        });
511		aramaInput.addEventListener("change", function() {
512			console.log("Arama tamamlandı, değer: " + aramaInput.value);			
513			fetch("/ajax/arama-data.php?word="+aramaInput.value)
514		});
515		
516		let debounceTimer;
517		aramaInput.addEventListener("input", function() {
518			return 0;
519			clearTimeout(debounceTimer);
520			debounceTimer = setTimeout(() => {
521				if(aramaInput.value.length>1){
522					console.log("Yazım tamamlandı, değer: " + aramaInput.value);
523					fetch("/ajax/arama-data.php?word="+aramaInput.value)
524				}
525			}, 2000);
526		});
527    }
528}
529
530// Fonksiyon çağır
531ListeSonrasi();
532
533// Aktif ziyaretçiler barları
534document.querySelectorAll("#aktif-ziyaretciler ul li span em").forEach(em => {
535    const widthPercent = em.getAttribute("data-width");
536    if (widthPercent) em.style.width = widthPercent + "%";
537    if (em.offsetWidth < 40) em.style.width = "40px";
538});
539
540// Reyting sayfaları yüzde barları
541document.querySelectorAll("li span em").forEach(em => {
542    const yuzde = em.getAttribute("data-yuzde");
543    if (yuzde) em.style.width = yuzde + "%";
544});
545
546// Reyting anasayfa barları yükleme
547function reytingAnasayfaBarlarYukle() {
548    const tvReytingSutun = document.querySelector(".kanal-reytigleri .tv-reyting-sutun");
549    if (!tvReytingSutun) return; // Eğer element yoksa fonksiyondan çık
550
551    let enYuzde = 0;
552    const enFazla = tvReytingSutun.offsetHeight - 70;
553
554    document.querySelectorAll(".kanal-reytigleri .reyting-yuzde-bar").forEach(bar => {
555        const deger = parseInt(bar.getAttribute("data-reyting-degeri")) || 0;
556        if (enYuzde < deger) enYuzde = deger;
557    });
558
559    const oran = enFazla / enYuzde;
560
561    document.querySelectorAll(".kanal-reytigleri .reyting-yuzde-bar").forEach(bar => {
562        const deger = parseInt(bar.getAttribute("data-reyting-degeri")) || 0;
563        bar.style.height = (deger * oran) + "px";
564    });
565}
566
567reytingAnasayfaBarlarYukle();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.