/* Insert ad slots into article */ document.addEventListener('DOMContentLoaded', function () { if (document.querySelector('.article-content.post-body')) { const postBodyContentBlocks = document.querySelectorAll('.post-body > *'); let wordCount = 0; let eligiblePositions = []; let prevBlock = null; postBodyContentBlocks.forEach(block => { wordCount += block.innerText.trim().split(/\s+/).length; if (prevBlock !== null) { if ( prevBlock.tagName === 'P' || prevBlock.tagName === 'UL' || prevBlock.tagName === 'BLOCKQUOTE' || prevBlock.tagName === 'FIGURE' || prevBlock.tagName === 'DIV' ) { eligiblePositions.push(block); } } prevBlock = block; }); const numAdsToRender = Math.ceil(wordCount / 300); let firstPosition = false; let secondPosition = false; let thirdPosition = false; if (numAdsToRender === 1) { firstPosition = Math.floor(eligiblePositions.length / 2); } else if (numAdsToRender === 2) { firstPosition = Math.floor(eligiblePositions.length / 3); secondPosition = eligiblePositions.length - firstPosition; } else { firstPosition = Math.floor(eligiblePositions.length / 5); secondPosition = Math.floor(eligiblePositions.length / 2); thirdPosition = eligiblePositions.length - firstPosition; } function adMarkup(slotNumber) { return ( '
Ad
' ); } if (firstPosition) { const ad1 = document.createElement('aside'); ad1.innerHTML = adMarkup(1); document.querySelector('.post-body').insertBefore(ad1, eligiblePositions[firstPosition]); } if (secondPosition) { const ad2 = document.createElement('aside'); ad2.innerHTML = adMarkup(2); document.querySelector('.post-body').insertBefore(ad2, eligiblePositions[secondPosition]); } if (thirdPosition) { const ad3 = document.createElement('aside'); ad3.innerHTML = adMarkup(3); document.querySelector('.post-body').insertBefore(ad3, eligiblePositions[thirdPosition]); } } makeAdCalls(); }); /* End insert ad slots into article */ function makeAdCalls() { window.googletag = window.googletag || { cmd: [], }; window.stv_gam_data = window.stv_gam_data || {}; googletag.cmd.push(function () { googletag.pubads().enableSingleRequest(); googletag.enableServices(); }); function uuid() { return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) { return (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16); }); } function loadAdvert(slotEl) { const slotType = slotEl.dataset.adslot; const slotCat = slotEl.dataset.category; if (!('slotnumber' in slotEl.dataset)) { window.stv_gam_data.enableDebugging && console.log('No slot number from article-inline, assuming 1.'); var slotNo = 1; } else { var slotNo = slotEl.dataset.slotnumber; } var slotId = 'ad-' + uuid(); var slotDiv = document.createElement('div'); slotDiv.id = slotId; slotEl.appendChild(slotDiv); googletag.cmd.push(function () { var mapping1 = googletag .sizeMapping() // premium-top - top and section pages .addSize([0, 0], ['fluid', [300, 250]]) .addSize([1001, 0], ['fluid', [200, 200]]) .addSize([1151, 0], ['fluid', [250, 250]]) .addSize([1301, 0], ['fluid', [300, 250]]) .build(); var mapping2 = googletag .sizeMapping() // premium-mid - top and section pages .addSize([0, 0], []) .addSize([1001, 0], ['fluid', [728, 90], [970, 90]]) .addSize([1280, 800], ['fluid', [728, 90], [970, 90], [970, 250]]) .build(); var mapping3 = googletag .sizeMapping() // slider-inline, slider-inline-lower - top page .addSize([0, 0], ['fluid', [300, 100], [300, 250]]) .addSize([501, 0], ['fluid', [468, 60]]) .addSize( [1001, 0], [ [300, 250], [300, 600], ], ) .build(); var mapping4 = googletag .sizeMapping() .addSize([0, 0], ['fluid', [300, 250], [300, 100], [320, 480]]) .addSize([501, 0], ['fluid', [300, 250], [320, 480], [468, 60]]) .addSize([1001, 0], ['fluid', [300, 250], [320, 480]]) .addSize([1361, 0], ['fluid', [300, 250], [320, 480], [728, 90]]) .build(); if (slotType == 'premium-top') { googletag .defineSlot('/1055753/stv.tv/premium-top', [[300, 250], [250, 250], [200, 200], 'fluid'], slotId) .defineSizeMapping(mapping1) .addService(googletag.pubads()); } if (slotType == 'premium-mid') { googletag .defineSlot('/1055753/stv.tv/premium-mid', [[970, 250], [970, 90], [728, 90], 'fluid'], slotId) .defineSizeMapping(mapping2) .addService(googletag.pubads()); } if (slotType == 'slider-inline') { googletag .defineSlot('/1055753/stv.tv/slider-inline', [[300, 600], [300, 250], [468, 60], [300, 100], 'fluid'], slotId) .defineSizeMapping(mapping3) .addService(googletag.pubads()); } if (slotType.includes('home-category-')) { const id = slotType.replace('home-category-', ''); googletag .defineSlot( '/1055753/stv.tv/home-category-' + id, [[300, 600], [300, 250], [468, 60], [300, 100], 'fluid'], slotId, ) .defineSizeMapping(mapping1) .setTargeting('section', slotCat) .addService(googletag.pubads()); } if (slotType == 'slider-inline-lower') { googletag .defineSlot( '/1055753/stv.tv/slider-inline-lower', [[300, 600], [300, 250], [468, 60], [300, 100], 'fluid'], slotId, ) .defineSizeMapping(mapping3) .addService(googletag.pubads()); } if (slotType == 'slider-article') { googletag .defineSlot( '/1055753/stv.tv/slider-article', [[300, 600], [300, 250], [468, 60], [300, 100], 'fluid'], slotId, ) .defineSizeMapping(mapping3) .addService(googletag.pubads()); } if (slotType == 'article-inline') { var maps = [[300, 250], [1, 1], 'fluid']; if (slotNo == 1) { maps = [[300, 250], [320, 480], [1, 1], 'fluid']; } googletag .defineSlot('/1055753/stv.tv/article-inline-' + slotNo, maps, slotId) .defineSizeMapping(mapping4) .addService(googletag.pubads()); } window.stv_gam_data.enableDebugging && console.log( '✅ Generated element ID ' + slotId + ' for slot type ' + slotType + ' and injected ad into the DOM.', ); googletag .pubads() .setTargeting('section', [window.stv_gam_data.section]) .setTargeting('domain', [window.stv_gam_data.domain]) .setTargeting('url', [window.stv_gam_data.url]) .setTargeting('weatherArea', [window.stv_gam_data.weatherArea]) .setTargeting('isArticle', window.stv_gam_data.isArticle.toString()) .setTargeting('articleId', [window.stv_gam_data.articleId]) .setTargeting('platform', [window.stv_gam_data.platform]) .setTargeting('keywords', [window.stv_gam_data.keywords]); googletag.display(slotId); }); } const options = { rootMargin: '0px 0px 200px 0px', threshold: 0, }; const adObserver = new IntersectionObserver((slots, imgObserver) => { slots.forEach(slot => { if (slot.isIntersecting) { if (!slot.target.hasChildNodes()) { window.stv_gam_data.enableDebugging && console.log(`✅ Hit add slot for "${slot.target.dataset.adslot}" and it's empty, loading an ad.`); loadAdvert(slot.target); } else { window.stv_gam_data.enableDebugging && console.log( `🥳 Hit add slot for "${slot.target.dataset.adslot}" with id "${slot.target.firstElementChild.id}" but it already has an ad, not requesting any more.`, ); } } }); }, options); const adSlots = document.querySelectorAll('.stv-gam-slot'); if (adSlots) { adSlots.forEach(slot => { adObserver.observe(slot); }); } }