PageSourceSearch

https://www.bonusfinder.com/wp-content/cache/min/1/wp-content/mu-p…/personalization-banner.js?ver=1790070200

js bonusfinder.com collected 2026-09-25 18:46:49 UTC 4,009 bytes, 17 lines download raw bytes

1document.addEventListener('DOMContentLoaded',function(){var banner;if(getCookie('g_uuid')&&!getCookie('personalization_banner_checked')){const state=getBannerState().state;let offer=getBannerState().offer;if(state!=='closed'){let hasBanner=JSON.parse(localStorage.getItem('personalization-banner'));if(hasBanner){if(Date.now()>hasBanner.expires){localStorage.removeItem('personalization-banner');hasBanner=!1}}
2if(hasBanner){$('#personalization-banner-holder').html(hasBanner.value);bannerGeneralFunction(state)}else{if(offer){offer=offer}else{offer=0}
3fetch(`${ajaxurl}?action=get_personalization_banner&offer=${offer}`).then(response=>{if(!response.ok){throw new Error(`Server error: ${response.status}`)}
4return response.text()}).then(html=>{const trimmed=html.trim();if(trimmed==='0'||trimmed===''||trimmed.includes('Service Temporarily Unavailable')){console.warn('Invalid or empty banner response, skipping injection.');return}
5$('#personalization-banner-holder').html(trimmed);const ttl=3600*1000*24;const now=Date.now();window.localStorage.setItem('personalization-banner',JSON.stringify({value:trimmed,expires:now+ttl}));bannerGeneralFunction(state)}).catch(error=>{console.error('API Error:',error)})}}}
6function bannerGeneralFunction(state){const banner=document.getElementById('personalization-banner');const arrow=document.getElementById('personalization-banner-arrow');const closeBtn=document.getElementById('personalization-banner-close');const minimized=document.getElementById('personalization-banner-minimized');if(state==='minimized'){minimizeBanner(banner,minimized)}else{showBanner(banner,minimized)}
7let currentState=state;arrow.addEventListener('click',function(){minimizeBanner(banner,minimized);setBannerState('minimized');currentState='minimized'});minimized.addEventListener('click',function(){expandBanner(banner,minimized);setBannerState('expanded');currentState='expanded'});closeBtn.addEventListener('click',function(e){e.preventDefault();hideBanner(banner,minimized);setBannerState('closed');currentState='closed'});let lastScrollY=window.scrollY;let scrollCooldown=!1;const COOLDOWN_DURATION=300;const SCROLL_BUFFER=10;let bannerBottom=null;let scrollScheduled=!1;function onScroll(){scrollScheduled=!1;if(!bannerBottom){const bannerTop=banner.getBoundingClientRect().top+window.scrollY;bannerBottom=bannerTop+banner.offsetHeight}
8if(currentState!=='expanded')return;if(scrollCooldown)return;const currentScrollY=window.scrollY;const scrollingDown=currentScrollY>lastScrollY;if(scrollingDown&&currentScrollY>bannerBottom+SCROLL_BUFFER){minimizeBanner(banner,minimized);triggerScrollCooldown()}else if(!scrollingDown&&currentScrollY<bannerBottom-SCROLL_BUFFER){expandBanner(banner,minimized);triggerScrollCooldown()}
9lastScrollY=currentScrollY}
10window.addEventListener('scroll',function(){if(scrollScheduled)return;scrollScheduled=!0;requestAnimationFrame(onScroll)},{passive:!0});function triggerScrollCooldown(){scrollCooldown=!0;setTimeout(()=>{scrollCooldown=!1;lastScrollY=window.scrollY},COOLDOWN_DURATION)}}
11function setBannerState(state){localStorage.setItem('personalizationBannerState',JSON.stringify({state,timestamp:Date.now(),offer:document.getElementById('personalization-banner').dataset.selectedOffer}))}
12function getBannerState(){const data=localStorage.getItem('personalizationBannerState');if(!data)return{state:'expanded'};try{const parsed=JSON.parse(data);if(parsed.state==='closed'&&Date.now()-parsed.timestamp>24*60*60*1000){localStorage.removeItem('personalization-banner');return{state:'expanded',offer:parsed.offer}}
13return parsed}catch{return{state:'expanded'}}}
14function showBanner(banner,minimized){banner.style.display='';minimized.style.display='none'}
15function hideBanner(banner,minimized){banner.style.display='none';minimized.style.display='none'}
16function minimizeBanner(banner,minimized){banner.style.display='none';minimized.style.display=''}
17function expandBanner(banner,minimized){banner.style.display='';minimized.style.display='none'}})

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.