PageSourceSearch

https://score808.store/wp-content/themes/jalalive/assets/js/livescore.js?ver=1.1.12

js score808.store collected 2026-10-10 00:46:42 UTC 18,909 bytes, 423 lines download raw bytes

1
2( function () {
3	'use strict';
4
5	function qs( s, r ) { return ( r || document ).querySelector( s ); }
6	function qsa( s, r ) { return Array.prototype.slice.call( ( r || document ).querySelectorAll( s ) ); }
7
8	document.addEventListener( 'DOMContentLoaded', function () {
9
10		qsa( '[data-jala-datepick]' ).forEach( function ( inp ) {
11
12			var openPicker = function () {
13				if ( typeof inp.showPicker === 'function' ) {
14					try { inp.showPicker(); } catch ( err ) {}
15				}
16			};
17			inp.addEventListener( 'click', openPicker );
18			inp.addEventListener( 'focus', openPicker );
19			inp.addEventListener( 'change', function () {
20				var d = inp.value;
21				if ( ! /^\d{4}-\d{2}-\d{2}$/.test( d ) ) { return; }
22				var base = inp.getAttribute( 'data-base' ) || location.pathname;
23				var sport = inp.getAttribute( 'data-sport' ) || '';
24				var url = base + ( base.indexOf( '?' ) > -1 ? '&' : '?' ) + 'date=' + encodeURIComponent( d );
25				if ( sport ) { url += '&sport=' + encodeURIComponent( sport ); }
26				location.href = url;
27			} );
28		} );
29
30		qsa( '[data-jala-comp-select]' ).forEach( function ( sel ) {
31			sel.addEventListener( 'change', function () {
32				var base = sel.getAttribute( 'data-base' ) || location.pathname;
33				var param = sel.getAttribute( 'data-param' ) || 'comp';
34				var sport = sel.getAttribute( 'data-sport' ) || '';
35				var extra = sel.getAttribute( 'data-extra' ) || '';
36				var url = base + ( base.indexOf( '?' ) > -1 ? '&' : '?' ) + param + '=' + encodeURIComponent( sel.value );
37				if ( sport ) { url += '&sport=' + encodeURIComponent( sport ); }
38				if ( extra ) { url += '&' + extra; }
39				location.href = url;
40			} );
41		} );
42
43		qsa( '[data-jala-combo]' ).forEach( function ( combo ) {
44			var toggle = qs( '[data-jala-combo-toggle]', combo );
45			var panel = qs( '[data-jala-combo-panel]', combo );
46			var search = qs( '[data-jala-combo-search]', combo );
47			var items = qsa( '[data-name]', combo );
48			if ( ! toggle || ! panel ) { return; }
49			toggle.addEventListener( 'click', function ( e ) {
50				e.stopPropagation();
51				var open = panel.classList.toggle( 'hidden' ) === false;
52				toggle.setAttribute( 'aria-expanded', open ? 'true' : 'false' );
53				if ( open && search ) { search.value = ''; items.forEach( function ( i ) { i.style.display = ''; } ); search.focus(); }
54			} );
55			if ( search ) {
56				search.addEventListener( 'input', function () {
57					var q = search.value.toLowerCase().trim();
58					items.forEach( function ( i ) {
59						i.style.display = ( ! q || i.getAttribute( 'data-name' ).indexOf( q ) > -1 ) ? '' : 'none';
60					} );
61				} );
62				search.addEventListener( 'click', function ( e ) { e.stopPropagation(); } );
63			}
64			document.addEventListener( 'click', function ( e ) {
65				if ( ! combo.contains( e.target ) ) { panel.classList.add( 'hidden' ); toggle.setAttribute( 'aria-expanded', 'false' ); }
66			} );
67		} );
68
69		var lw = qs( '[data-jala-league]' );
70		if ( lw ) {
71			var toggle = qs( '[data-jala-league-toggle]', lw );
72			var menu = qs( '[data-jala-league-menu]', lw );
73			var label = qs( '[data-jala-league-label]', lw );
74			if ( toggle && menu ) {
75				toggle.addEventListener( 'click', function ( e ) { e.stopPropagation(); menu.classList.toggle( 'hidden' ); } );
76				document.addEventListener( 'click', function ( e ) { if ( ! lw.contains( e.target ) ) { menu.classList.add( 'hidden' ); } } );
77			}
78			qsa( '[data-jala-league-opt]', lw ).forEach( function ( opt ) {
79				opt.addEventListener( 'click', function () {
80					var want = opt.getAttribute( 'data-jala-league-opt' );
81					if ( label ) { label.textContent = opt.textContent.trim(); }
82					if ( menu ) { menu.classList.add( 'hidden' ); }
83					qsa( '[data-ls-id][data-comp]' ).forEach( function ( card ) {
84						var show = ( ! want ) || ( card.getAttribute( 'data-comp' ) === want );
85						card.style.display = show ? '' : 'none';
86					} );
87
88					qsa( '[data-jala-group]' ).forEach( function ( g ) {
89						var any = qsa( '[data-ls-id]', g ).some( function ( c ) { return c.style.display !== 'none'; } );
90						g.style.display = any ? '' : 'none';
91					} );
92				} );
93			} );
94		}
95
96		qsa( '[data-jala-pop-league]' ).forEach( function ( pbtn ) {
97			pbtn.addEventListener( 'click', function () {
98				var want = pbtn.getAttribute( 'data-jala-pop-league' );
99				qsa( '[data-ls-id][data-comp]' ).forEach( function ( card ) {
100					card.style.display = ( ! want || card.getAttribute( 'data-comp' ) === want ) ? '' : 'none';
101				} );
102				qsa( '[data-jala-group]' ).forEach( function ( g ) {
103					var any = qsa( '[data-ls-id]', g ).some( function ( c ) { return c.style.display !== 'none'; } );
104					g.style.display = any ? '' : 'none';
105				} );
106				var ll = qs( '[data-jala-league-label]' );
107				if ( ll ) { ll.textContent = pbtn.getAttribute( 'title' ) || want; }
108				var top = qs( '[data-jala-match-wrap]' );
109				if ( top && top.scrollIntoView ) { top.scrollIntoView( { behavior: 'smooth', block: 'start' } ); }
110			} );
111		} );
112
113		qsa( '[data-jala-acc-toggle]' ).forEach( function ( btn ) {
114			btn.addEventListener( 'click', function () {
115				var acc = btn.closest( '[data-jala-acc]' );
116				if ( ! acc ) { return; }
117				var body = qs( '[data-jala-acc-body]', acc );
118				if ( ! body ) { return; }
119				var hidden = body.classList.toggle( 'hidden' );
120				var icon = qs( 'svg', btn );
121				if ( icon ) { icon.style.transform = hidden ? 'rotate(-90deg)' : ''; }
122			} );
123		} );
124
125		var tocNav = qs( '[data-jala-toc]' );
126		if ( tocNav ) {
127			var content = qs( '[data-jala-content]' );
128			var heads = content ? qsa( 'h2, h3', content ).filter( function ( h ) { return h.textContent.trim(); } ) : [];
129			if ( heads.length < 2 ) {
130				var grid = qs( '[data-jala-toc-grid]' );
131				var wrap = qs( '[data-jala-toc-wrap]' );
132				if ( wrap ) { wrap.style.display = 'none'; }
133				if ( grid ) { grid.style.gridTemplateColumns = '1fr'; }
134			} else {
135				heads.forEach( function ( h, i ) {
136					if ( ! h.id ) { h.id = 'jala-h-' + i; }
137					var a = document.createElement( 'a' );
138					a.href = '#' + h.id;
139					a.className = 'flex items-center gap-3 text-left px-3 py-2.5 rounded-lg border border-transparent text-[#A3A3A3] hover:text-[#E5E5E5] hover:bg-white/5 text-sm transition-colors';
140					var dot = document.createElement( 'span' );
141					dot.className = 'w-1.5 h-1.5 rounded-full bg-[#525252] shrink-0';
142					var t = document.createElement( 'span' );
143					t.className = 'truncate';
144					t.textContent = ( i + 1 ) + '. ' + h.textContent.trim();
145					a.appendChild( dot );
146					a.appendChild( t );
147					a.addEventListener( 'click', function ( e ) {
148						e.preventDefault();
149						h.scrollIntoView( { behavior: 'smooth', block: 'start' } );
150						qsa( 'a', tocNav ).forEach( function ( x ) { x.className = 'flex items-center gap-3 text-left px-3 py-2.5 rounded-lg border border-transparent text-[#A3A3A3] hover:text-[#E5E5E5] hover:bg-white/5 text-sm transition-colors'; } );
151						a.className = 'flex items-center gap-3 text-left px-3 py-2.5 rounded-lg bg-[#FACC15]/10 border border-[#FACC15]/30 text-[#FACC15] font-semibold text-sm transition-colors';
152					} );
153					tocNav.appendChild( a );
154				} );
155			}
156		}
157
158		qsa( '[data-jala-subtab]' ).forEach( function ( b ) {
159			b.addEventListener( 'click', function () {
160				var bar = b.closest( '[data-jala-subtabs]' );
161				if ( ! bar ) { return; }
162				var wrap = bar.parentNode;
163				var key = b.getAttribute( 'data-jala-subtab' );
164				qsa( '[data-jala-subtab]', bar ).forEach( function ( t ) {
165					var on = ( t === b );
166					t.className = 'px-3 py-1.5 rounded-md text-xs font-bold transition-colors ' + ( on ? 'active text-[#FACC15] bg-[#1A1A1A]' : 'text-[#A3A3A3] hover:text-[#E5E5E5]' );
167				} );
168				qsa( '[data-jala-subpanel]', wrap ).forEach( function ( p ) {
169					p.style.display = ( p.getAttribute( 'data-jala-subpanel' ) === key ) ? '' : 'none';
170				} );
171			} );
172		} );
173
174		qsa( '[data-jala-yt-play]' ).forEach( function ( btn ) {
175			btn.addEventListener( 'click', function () {
176				var wrap = btn.closest( '[data-jala-yt]' );
177				if ( ! wrap ) { return; }
178				var vid = wrap.getAttribute( 'data-jala-yt' );
179				if ( ! vid ) { return; }
180				wrap.innerHTML = '<iframe class="w-full h-full" style="width:100%;height:100%;border:0;" src="https://www.youtube-nocookie.com/embed/' + encodeURIComponent( vid ) + '?autoplay=1&rel=0" title="YouTube" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';
181			} );
182		} );
183
184		var jalaScorerStat = 'goals';
185		var jalaScorerCellIdx = { goals: 3, assists: 4, penalty: 5, minutes: 6 };
186		function jalaSortScorer( stat ) {
187			var scorerBody = qs( '[data-jala-scorer-body]' );
188			if ( ! scorerBody ) { return; }
189			jalaScorerStat = stat;
190			var rows = qsa( '[data-jala-scorer-row]', scorerBody );
191			rows.sort( function ( a, b ) {
192				return ( parseInt( b.getAttribute( 'data-' + stat ), 10 ) || 0 ) - ( parseInt( a.getAttribute( 'data-' + stat ), 10 ) || 0 );
193			} );
194			rows.forEach( function ( r ) {
195				scorerBody.appendChild( r );
196				var tds = r.children;
197				[ 3, 4, 5, 6 ].forEach( function ( ci ) {
198					if ( tds[ ci ] ) { tds[ ci ].classList.remove( 'text-[#FACC15]' ); tds[ ci ].classList.add( 'text-[#A3A3A3]' ); }
199				} );
200				var idx = jalaScorerCellIdx[ stat ];
201				if ( tds[ idx ] ) { tds[ idx ].classList.remove( 'text-[#A3A3A3]' ); tds[ idx ].classList.add( 'text-[#FACC15]' ); }
202			} );
203			qsa( '[data-jala-rank]', scorerBody ).forEach( function ( s, i ) { s.textContent = ( i + 1 ); } );
204			qsa( '[data-jala-col]' ).forEach( function ( th ) {
205				var on = ( th.getAttribute( 'data-jala-col' ) === stat );
206				th.classList.remove( 'text-[#FACC15]', 'text-[#A3A3A3]' );
207				th.classList.add( on ? 'text-[#FACC15]' : 'text-[#A3A3A3]' );
208			} );
209		}
210
211		window.jalaReapplyScorer = function () { if ( 'goals' !== jalaScorerStat ) { jalaSortScorer( jalaScorerStat ); } };
212		qsa( '[data-jala-stat-tab]' ).forEach( function ( tab ) {
213			tab.addEventListener( 'click', function () {
214				var stat = tab.getAttribute( 'data-jala-stat-tab' );
215				qsa( '[data-jala-stat-tab]' ).forEach( function ( t ) {
216					var on = ( t === tab );
217					t.className = 'px-3 py-1.5 rounded-md text-xs font-bold transition-colors whitespace-nowrap ' + ( on ? 'bg-[#1A1A1A] text-[#FACC15]' : 'text-[#A3A3A3] hover:text-[#E5E5E5]' );
218				} );
219				jalaSortScorer( stat );
220			} );
221		} );
222
223		var jalaHomeWrap = qs( '[data-jala-match-wrap]' );
224		if ( jalaHomeWrap ) {
225			var jalaMoreBtn = qs( '[data-jala-load-more]' );
226			window.jalaHome = window.jalaHome || { filter: '', revealed: 0,
227				initial: ( parseInt( jalaHomeWrap.getAttribute( 'data-jala-initial' ), 10 ) || 12 ),
228				step: jalaMoreBtn ? ( parseInt( jalaMoreBtn.getAttribute( 'data-step' ), 10 ) || 9 ) : 9 };
229			window.jalaApplyHome = function () {
230				var st = window.jalaHome;
231				var wraps = qsa( '[data-jala-mc]', jalaHomeWrap );
232				var matched = 0, totalMatch = 0;
233				wraps.forEach( function ( w ) {
234					var a = w.querySelector( '[data-bucket]' );
235					var ok = true;
236					if ( 'hot' === st.filter ) { ok = !! a && a.getAttribute( 'data-hot' ) === '1'; }
237					else if ( st.filter ) { ok = !! a && a.getAttribute( 'data-bucket' ) === st.filter; }
238					w.classList.remove( 'jala-mc-hidden' );
239					if ( ! ok ) { w.style.display = 'none'; return; }
240					totalMatch++;
241					if ( ! st.filter ) {
242						w.style.display = ( matched < ( st.initial + st.revealed ) ) ? '' : 'none';
243					} else {
244						w.style.display = '';
245					}
246					matched++;
247				} );
248				if ( jalaMoreBtn && jalaMoreBtn.parentNode ) {
249					var showMore = ( ! st.filter ) && totalMatch > ( st.initial + st.revealed );
250					jalaMoreBtn.parentNode.style.display = showMore ? '' : 'none';
251				}
252			};
253			if ( jalaMoreBtn ) {
254				jalaMoreBtn.addEventListener( 'click', function () {
255					window.jalaHome.revealed += window.jalaHome.step;
256					window.jalaApplyHome();
257				} );
258			}
259			window.jalaApplyHome();
260		}
261
262		var lsBox = qs( '[data-jala-livescore][data-jala-poll]' );
263		if ( lsBox ) {
264			var mlId = lsBox.getAttribute( 'data-jala-match-id' );
265			var mlUrl = lsBox.getAttribute( 'data-jala-live-url' );
266			var srvBucket = lsBox.getAttribute( 'data-jala-bucket' ) || '';
267			var mlMode = lsBox.getAttribute( 'data-jala-poll' ) || 'live';
268			var shEl = qs( '[data-jala-sh]', lsBox ), saEl = qs( '[data-jala-sa]', lsBox ), minEl = qs( '[data-jala-minute]', lsBox );
269			if ( mlId && mlUrl ) {
270				var mlInterval = ( 'live' === mlMode ) ? 20000 : 30000;
271				var mlT = setInterval( function () {
272					if ( document.hidden ) { return; }
273					fetch( mlUrl + ( mlUrl.indexOf( '?' ) > -1 ? '&' : '?' ) + 'id=' + encodeURIComponent( mlId ), { cache: 'no-store', credentials: 'same-origin' } )
274						.then( function ( r ) { return r.json(); } )
275						.then( function ( d ) {
276							if ( ! d || ! d.ok ) { return; }
277
278							if ( d.bucket && d.bucket !== srvBucket ) {
279								clearInterval( mlT );
280
281								if ( d.is_finished ) {
282									if ( shEl ) { shEl.textContent = d.home; }
283									if ( saEl ) { saEl.textContent = d.away; }
284									var lb = minEl ? minEl.parentElement : null;
285									if ( lb && lb.parentNode ) {
286										var ft = document.createElement( 'span' );
287										ft.className = 'text-[10px] font-bold bg-[#262626] text-[#A3A3A3] px-2 py-0.5 rounded';
288										ft.textContent = 'FT';
289										lb.parentNode.replaceChild( ft, lb );
290									}
291									return;
292								}
293								var rk = 'jala_rl_' + mlId;
294								try { if ( ! sessionStorage.getItem( rk ) ) { sessionStorage.setItem( rk, d.bucket ); setTimeout( function () { location.reload(); }, 900 ); } } catch ( e ) { setTimeout( function () { location.reload(); }, 900 ); }
295								return;
296							}
297
298							if ( d.is_live ) {
299								if ( shEl ) { shEl.textContent = d.home; }
300								if ( saEl ) { saEl.textContent = d.away; }
301								if ( minEl && d.minute ) { minEl.textContent = d.minute; }
302							}
303						} )
304						.catch( function () {} );
305				}, mlInterval );
306			}
307		}
308
309		var wrap = qs( '[data-jala-match-wrap]' );
310		if ( wrap ) {
311			var baseSecs = parseInt( wrap.getAttribute( 'data-jala-refresh' ), 10 ) || 30;
312			var REFRESH = Math.max( 10, baseSecs ) * 1000;
313			var refreshing = false;
314			var cardsUrl = wrap.getAttribute( 'data-jala-cards-url' );
315			var cardsLang = wrap.getAttribute( 'data-jala-lang' ) || '';
316			setInterval( function () {
317				if ( refreshing || document.hidden ) { return; }
318
319				if ( qsa( '[data-bucket="live"]', wrap ).length === 0 ) {
320					window.__jalaTick = ( window.__jalaTick || 0 ) + 1;
321					if ( window.__jalaTick % 2 !== 0 ) { return; }
322				}
323				refreshing = true;
324				var done = function () { refreshing = false; };
325
326				var applied = function () { if ( window.jalaApplyHome ) { window.jalaApplyHome(); } };
327				if ( cardsUrl ) {
328
329					var curl = cardsUrl + ( cardsUrl.indexOf( '?' ) > -1 ? '&' : '?' ) + 'lang=' + encodeURIComponent( cardsLang );
330					fetch( curl, { credentials: 'same-origin' } )
331						.then( function ( r ) { return r.json(); } )
332						.then( function ( j ) {
333							if ( j && typeof j.html === 'string' && j.html !== '' ) {
334								wrap.innerHTML = j.html;
335								applied();
336							}
337						} )
338						.catch( function () {} )
339						.then( done );
340				} else {
341
342					var rurl = location.href + ( location.href.indexOf( '?' ) > -1 ? '&' : '?' ) + '_jr=' + Date.now();
343					fetch( rurl, { credentials: 'same-origin', cache: 'no-store', headers: { 'X-Jala-Refresh': '1' } } )
344						.then( function ( r ) { return r.text(); } )
345						.then( function ( html ) {
346							var doc = new DOMParser().parseFromString( html, 'text/html' );
347							var fresh = doc.querySelector( '[data-jala-match-wrap]' );
348							if ( fresh ) {
349								wrap.innerHTML = fresh.innerHTML;
350								applied();
351							}
352						} )
353						.catch( function () {} )
354						.then( done );
355				}
356			}, REFRESH );
357		}
358
359		qsa( '[data-jala-copy]' ).forEach( function ( btn ) {
360			btn.addEventListener( 'click', function ( e ) {
361				e.preventDefault();
362				var url = btn.getAttribute( 'data-jala-copy' ) || location.href;
363				var done = function () {
364					var old = btn.getAttribute( 'aria-label' );
365					btn.classList.add( 'text-[#FACC15]' );
366					btn.setAttribute( 'aria-label', 'Tersalin' );
367					setTimeout( function () { btn.classList.remove( 'text-[#FACC15]' ); if ( old ) { btn.setAttribute( 'aria-label', old ); } }, 1500 );
368				};
369				if ( navigator.clipboard && navigator.clipboard.writeText ) {
370					navigator.clipboard.writeText( url ).then( done ).catch( function () {} );
371				} else {
372					var t = document.createElement( 'textarea' );
373					t.value = url; document.body.appendChild( t ); t.select();
374					try { document.execCommand( 'copy' ); done(); } catch ( err ) {}
375					document.body.removeChild( t );
376				}
377			} );
378		} );
379		qsa( '[data-jala-bookmark]' ).forEach( function ( btn ) {
380			var key = 'jala_bm_' + location.pathname;
381			var sync = function () {
382				var on = false;
383				try { on = '1' === localStorage.getItem( key ); } catch ( err ) {}
384				btn.classList.toggle( 'text-[#FACC15]', on );
385				btn.classList.toggle( 'border-[#FACC15]/40', on );
386			};
387			btn.addEventListener( 'click', function ( e ) {
388				e.preventDefault();
389				try {
390					var on = '1' === localStorage.getItem( key );
391					if ( on ) { localStorage.removeItem( key ); } else { localStorage.setItem( key, '1' ); }
392				} catch ( err ) {}
393				sync();
394			} );
395			sync();
396		} );
397
398		qsa( '[data-jala-refresh-zone]' ).forEach( function ( zone ) {
399			var zid = zone.getAttribute( 'data-jala-refresh-zone' );
400			if ( ! zid ) { return; }
401			var zsecs = parseInt( zone.getAttribute( 'data-jala-interval' ), 10 ) || 60;
402			var ZINT = Math.max( 15, zsecs ) * 1000;
403			var zbusy = false;
404			setInterval( function () {
405				if ( zbusy || document.hidden ) { return; }
406				zbusy = true;
407				var zurl = location.href + ( location.href.indexOf( '?' ) > -1 ? '&' : '?' ) + '_jr=' + Date.now();
408				fetch( zurl, { credentials: 'same-origin', cache: 'no-store', headers: { 'X-Jala-Refresh': '1' } } )
409					.then( function ( r ) { return r.text(); } )
410					.then( function ( html ) {
411						var doc = new DOMParser().parseFromString( html, 'text/html' );
412						var fresh = doc.querySelector( '[data-jala-refresh-zone="' + zid + '"]' );
413						if ( fresh && fresh.innerHTML !== zone.innerHTML ) {
414							zone.innerHTML = fresh.innerHTML;
415							if ( 'topskor' === zid && typeof window.jalaReapplyScorer === 'function' ) { window.jalaReapplyScorer(); }
416						}
417					} )
418					.catch( function () {} )
419					.then( function () { zbusy = false; } );
420			}, ZINT );
421		} );
422	} );
423}() );

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.