window.googletag = window.googletag || { cmd: [] }; const defaultPostAttributes = { type: 'unknown', categories: 'unknown', tags: 'unknown', id: 'unknown', social: 'unknown', staging: 1 }; const socialNetworks = { facebook: [], twitter: ['t.co'], linkedin: [], instagram: [], pinterest: [], tiktok: [], snapchat: [], 'linkin.bio': [], }; const postAttributes = Object.assign({}, defaultPostAttributes, window.postAttributes || {}); function addBettingWidgetIfNotHidden(version = "desktop") { if (postAttributes.hide_non_gam !== 'hide') { const containerDiv = document.createElement('div'); const widgetWrapper = document.createElement('div'); const scriptElement = document.createElement('script'); // Set properties for desktop or mobile const targetElementId = version === "desktop" ? 'betting-widget-container' : 'btw-wrapper-mob'; const targetElement = document.getElementById(targetElementId); if (!targetElement) { return; // Exit early if there's no target element } widgetWrapper.className = version === "desktop" ? 'btw-wrapper' : ''; if (version === "desktop") { containerDiv.className = 'col-span-12 border-t-[0.5px] mt-7'; containerDiv.style.paddingTop = '1.75rem'; } // Set common attributes for the script element scriptElement.async = true; scriptElement.src = 'https://betting-widget.s3.eu-west-2.amazonaws.com/app.js'; scriptElement.setAttribute('version', version); widgetWrapper.appendChild(scriptElement); containerDiv.appendChild(widgetWrapper); targetElement.appendChild(containerDiv); } } function getReferringNetwork(aliases) { const ref = document.referrer; // Loop through the socialNetwork and aliases entries for (const [socialNetwork, aliasList] of Object.entries(aliases)) { if (ref.includes(socialNetwork) || aliasList.some(alias => ref.includes(alias))) { return socialNetwork; } } return 'unknown'; } function isMobileDevice() { return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); } function defineSizeMappings() { return { top: googletag.sizeMapping() .addSize([1024, 0], [[970, 250], [728, 90], [970, 90]]) .addSize([768, 0], [[728, 90]]) .addSize([0, 0], []) .build(), rhs: googletag.sizeMapping() .addSize([1024, 0], [[300, 600], [160, 600], [300, 250]]) .addSize([0, 0], []) .build(), inContent: googletag.sizeMapping() .addSize([1024, 0], [[300, 250], [1, 2]]) .addSize([0, 0], [[300, 250], [320, 50], [1, 2]]) .build(), leftSkin: googletag.sizeMapping() .addSize([760, 0], [[1, 1]]) .addSize([0, 0], []) .build(), rightSkin: googletag.sizeMapping() .addSize([760, 0], [[2, 2]]) .addSize([0, 0], []) .build(), skinTop: googletag.sizeMapping() .addSize([1480, 0], [[970, 90], [970, 250], [728, 90]]) .addSize([0, 0], []) .build(), skinTopMobile: googletag.sizeMapping() .addSize([768, 0], []) .addSize([0, 0], [[300, 250], [320, 50], [1, 2]]) .build(), mobileSticky: googletag.sizeMapping() .addSize([768, 0], []) .addSize([0, 0], [[320, 50]]) .build() }; } function defineSkinUnits() { defineSlot('/247211819/Joe.ie/Joe.ie_Left_Skin', [1, 1], 'div-gpt-ad-1681213692194-0', 'leftSkin'); defineSlot('/247211819/Joe.ie/Joe.ie_Right_Skin', [2, 2], 'div-gpt-ad-1681214169885-0', 'rightSkin'); if(postAttributes.type === 'home') { defineSlot('/247211819/Joe.ie/Joe.ie_top', [[970, 90], [970, 250], [728, 90]], 'div-gpt-ad-1681222708979-0', 'skinTop'); defineSlot('/247211819/Joe.ie/Joe.ie_in_content_1', [[300, 250], [320, 50], [1, 2]], 'div-gpt-ad-1681213026600-0', 'skinTopMobile'); } } function setLazyLoad() { googletag.pubads().enableLazyLoad({ fetchMarginPercent: 100, renderMarginPercent: 50, mobileScaling: 1.0 }); } function addTargeting(postAttributes) { googletag.pubads().setTargeting('type', postAttributes.type ?? 'unknown'); googletag.pubads().setTargeting('category', postAttributes.categories ?? 'unknown'); googletag.pubads().setTargeting('tag', postAttributes.tags ?? 'unknown'); googletag.pubads().setTargeting('id', String(postAttributes.id) ?? 'unknown'); googletag.pubads().setTargeting('social', getReferringNetwork(socialNetworks) ?? 'unknown'); googletag.pubads().setTargeting('staging', String(postAttributes.staging) ?? 'unknown'); } function defineAndDisplaySlot(adUnitPath, sizes, elementId, sizeMappingKey) { defineSlot(adUnitPath, sizes, elementId, sizeMappingKey); googletag.display(elementId); } // Only define the ad slot and add it to a list function defineSlot(adUnitPath, sizes, elementId, sizeMappingKey) { const isMobile = isMobileDevice(); const restrictedUnits = ['top', 'rhs']; if (restrictedUnits.includes(adUnitPath) && isMobile) { return; } const sizeMappings = defineSizeMappings(); const mapping = sizeMappings[sizeMappingKey]; const slot = googletag.defineSlot(adUnitPath, sizes, elementId); slot.defineSizeMapping(mapping); slot.addService(googletag.pubads()); } // Function to display a list of ad slots function displaySlots(slotIds) { slotIds.forEach(id => { googletag.display(id); }); } // Function to fire after unit render function renderCallback(event) { if (event.slot.getAdUnitPath().includes('mobile_sticky')) { if (event.isEmpty) { return; } if (document.getElementById('qc-cmp2-persistent-link')) { document.getElementById('qc-cmp2-persistent-link').style.bottom = document.getElementsByClassName('sticky-footer-container')[0].offsetHeight+'px'; } } } googletag.cmd.push(function () { try { defineSkinUnits(); googletag.pubads().enableSingleRequest(); setLazyLoad(); addTargeting(postAttributes); googletag.pubads().setCentering(true); googletag.pubads().addEventListener('slotRenderEnded', function(event) {renderCallback(event);}); googletag.enableServices(); displaySlots(['div-gpt-ad-1681213692194-0','div-gpt-ad-1681214169885-0']); if(postAttributes.type === 'home') { displaySlots(['div-gpt-ad-1681222708979-0','div-gpt-ad-1681213026600-0']); } } catch (err) { console.error("An error occurred while setting up ads:", err); } });
Search icon

Movies & TV

26th Aug 2019

A fourth and final season of 13 Reasons Why is on the way

Rudi Kinsella

13 reasons why season 4

After the ending of Season 3, there just had to be.

Despite its many controversies and extreme cheesiness, 13 Reasons Why is still quite a watchable show.

With exciting storylines, topics that are often ignored in television and damn-good cliffhangers, the Netflix sensation is undeniably one of the streaming service’s biggest success stories.

So it’s no surprise that the show has just been renewed for a fourth and final season.

After the events of the third season, we knew that there was going to be more.

There always is with that bloody school…

We won’t dish out any spoilers, but if you’ve seen the final minutes of the last season, you’ll know that some members of the gang could be fairly screwed.

According to Deadline, the final season of the drama from Paramount Television and Anonymous Content will feature the core cast’s graduation.

The showrunners recently decided to remove a scene from the first season of the show, which vividly depicted the suicide of the main character.

Other serious topics that the series has dealt with throughout include sexual assault, bullying, immigration and homophobia.

The fourth and final season of the show is already in production, so we can expect to see it on Netflix at some point in 2020.