window.googletag = window.googletag || { cmd: [] }; const defaultPostAttributes = { type: 'unknown', categories: 'unknown', tags: 'unknown', id: 'unknown', social: 'unknown' }; 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/SportsJOE/SportsJOE_Left_Skin', [1, 1], 'div-gpt-ad-1705415191735-0', 'leftSkin'); defineSlot('/247211819/SportsJOE/SportsJOE_Right_Skin', [2, 2], 'div-gpt-ad-1705415332110-0', 'rightSkin'); if(postAttributes.type === 'home') { defineSlot('/247211819/SportsJOE/SportsJOE_Top', [[970, 90], [970, 250], [728, 90]], 'div-gpt-ad-1705414965404-0', 'skinTop'); defineSlot('/247211819/SportsJOE/SportsJOE_in_content_1', [[300, 250], [320, 50], [1, 2]], 'div-gpt-ad-1705413839336-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'); } 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-1705415191735-0','div-gpt-ad-1705415332110-0']); if(postAttributes.type === 'home') { displaySlots(['div-gpt-ad-1705414965404-0','div-gpt-ad-1705413839336-0']); } } catch (err) { console.error("An error occurred while setting up ads:", err); } });
Search icon

Football

11th Jul 2016

WATCH: Young Portugal fan consoling a dejected Frenchman is easily the most beautiful moment of Euro 2016

The beautiful game

Ben Kiely

Wow.

Cast your minds back to the end of June, when Euro 2016 all kicked off. There was a fearful air on the continent at the beginning of the tournament with the threat of terror attacks, bomb threats and the worst side of humanity expected to dominate the headlines over the course of the competition.

Then the hooliganism started, and we saw awful scenes of Russia fans clashing with the English as the actual football being played became secondary in the news to the violence on display in France.

It was all looking a bit grim.

However, after enduring the lows of the opening few days of Euro 2016, we witnessed humanity at its peak following Sunday night’s final.

France lost out to Portugal with Eder bagging the winner after extra time. The hosts were the favourites to win the game, but a resilient performance from Portugal inspired a great victory. With expectations reaching such extreme heights, the fall after the loss was tough to take for some fans.

One such fan, a dejected French supporter was filmed looking absolutely dejected in the fan zone after the game. Thankfully the cameras stayed on him long enough to capture a beautiful moment when a young Portugal fan saw that he was in distress and consoled him.

SNAPCHAT