1 2(function () { 3 // --- cookie helpers --- 4 function getC(n) { const m = document.cookie.match('(?:^|; )' + n.replace(/([.$?*|{}()\[\]\\\/\+^])/g, '\\$1') + '=([^;]*)'); return m ? decodeURIComponent(m[1]) : null; } 5 function setC(n, v, hours) { const d = new Date(); d.setTime(d.getTime() + hours * 3600 * 1000); document.cookie = n + '=' + encodeURIComponent(v) + ';path=/;expires=' + d.toUTCString(); } 6 7 const stateChangeed = function (show) { 8 if (show) { 9 wrap.style.display = 'block'; 10 document.body.classList.add('ads_present'); 11 } else { 12 wrap.style.display = 'none'; 13 document.body.classList.remove('ads_present'); 14 } 15 window.dispatchEvent(new Event('resize')); // for some layouts it is needed 16 }; 17 18 const wrap = document.getElementById('grbanner'); 19 if (!wrap) return; 20 21 const closeCookie = wrap.dataset.cookie || 'grbanner_closed'; 22 if (getC(closeCookie) === '1') { 23 wrap.remove(); 24 stateChangeed(false); 25 return; 26 } 27 28 // --- randomize per group (same as before) --- 29 var ads_present = false; 30 document.querySelectorAll('#grbanner .grbanner .banner').forEach(li => { 31 const opts = li.querySelectorAll('.ab_option'); 32 ads_present = true; 33 if (opts.length <= 1) return; 34 const group = li.getAttribute('data-group') || 'default'; 35 const cname = 'ab_' + group; 36 let idx = parseInt(getC(cname), 10); 37 if (isNaN(idx) || idx < 0 || idx >= opts.length) { 38 idx = Math.floor(Math.random() * opts.length); 39 setC(cname, String(idx), 1); // 1h sticky 40 } 41 opts.forEach((el, i) => { if (i !== idx) el.remove(); }); 42 }); 43 44 stateChangeed(ads_present); 45 46 // --- close button --- 47 const btn = wrap.querySelector('.grbanner-close'); 48 if (btn) { 49 btn.addEventListener('click', function () { 50 console.log("Close the banner..."); 51 setC(closeCookie, '1', 0.1); // 6 Minuten merken 52 wrap.remove(); 53 stateChangeed(false); 54 }); 55 } 56 57})();
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.