Trophies take pride of place in glass cabinets, framed shirts of club legends adorn the walls and artistic graffiti depicts famous nights in the club’s history.

But it’s something going on in the rooms deeper inside the stadium that is ensuring Leverkusen is keeping its eye very much on the future.

The Bundesliga side are one of several top level European clubs, as well as NBA and NFL teams, using Catapult Sports technology to help analyze player performance.

Using a highly sensitive GPS tracker — inserted into a training vest between the shoulder blades — the data provides a detailed breakdown of an individual’s top speed, acceleration, distance covered, deceleration and weight distribution, among other statistics.

Gone are the days of slacking off in training. Players can be held accountable for their performances — and how they look after their bodies in between.

“The focus on fitness now is absolutely huge, there’s just no other way,” Kevin Volland, Leverkusen’s club record signing, tells CNN.

“Maybe 10-20 years ago, you could have a beer or two,” he quips.

‘);$vidEndSlate.removeClass(‘video__end-slate–inactive’).addClass(‘video__end-slate–active’);}};CNN.autoPlayVideoExist = (CNN.autoPlayVideoExist === true) ? true : false;var configObj = {thumb: ‘none’,video: ‘sports/2017/09/06/bayer-leverkusen-future-of-performance-bundesliga-football-germany-orig.cnn’,width: ‘100%’,height: ‘100%’,section: ‘international’,profile: ‘expansion’,network: ‘cnn’,markupId: ‘body-text_11’,adsection: ‘const-article-inpage’,frameWidth: ‘100%’,frameHeight: ‘100%’,posterImageOverride: {“mini”:{“height”:124,”width”:220,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170906181932-leverkusen-tease-small-169.jpg”},”xsmall”:{“height”:173,”width”:307,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170906181932-leverkusen-tease-medium-plus-169.jpg”},”small”:{“height”:259,”width”:460,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170906181932-leverkusen-tease-large-169.jpg”},”medium”:{“height”:438,”width”:780,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170906181932-leverkusen-tease-exlarge-169.jpg”},”large”:{“height”:619,”width”:1100,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170906181932-leverkusen-tease-super-169.jpg”},”full16x9″:{“height”:900,”width”:1600,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170906181932-leverkusen-tease-full-169.jpg”},”mini1x1″:{“height”:120,”width”:120,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170906181932-leverkusen-tease-small-11.jpg”}}},autoStartVideo = false,callbackObj,containerEl,currentVideoCollection = [],currentVideoCollectionId = ”,isLivePlayer = false,moveToNextTimeout,mutePlayerEnabled = false,nextVideoId = ”,nextVideoUrl = ”,turnOnFlashMessaging = false,videoPinner,videoEndSlateImpl;if (CNN.autoPlayVideoExist === false) {autoStartVideo = false;if (autoStartVideo === true) {if (turnOnFlashMessaging === true) {autoStartVideo = false;containerEl = jQuery(document.getElementById(configObj.markupId));CNN.VideoPlayer.showFlashSlate(containerEl);} else {CNN.autoPlayVideoExist = true;}}}configObj.autostart = autoStartVideo;CNN.VideoPlayer.setPlayerProperties(configObj.markupId, autoStartVideo, isLivePlayer, mutePlayerEnabled);CNN.VideoPlayer.setFirstVideoInCollection(currentVideoCollection, configObj.markupId);videoEndSlateImpl = new CNN.VideoEndSlate(‘body-text_11’);/*** Finds the next video ID and URL in the current collection, if available.* @param currentVideoId The video that is currently playing* @param containerId The parent container Id of the video element*/function findNextVideo(currentVideoId) {var i,vidObj;if (currentVideoId && jQuery.isArray(currentVideoCollection) && currentVideoCollection.length > 0) {for (i = 0; i 0) {videoEndSlateImpl.showEndSlateForContainer();}}}callbackObj = {onPlayerReady: function (containerId) {CNN.VideoPlayer.reportLoadTime(containerId);CNN.VideoPlayer.handleInitialExpandableVideoState(containerId);CNN.VideoPlayer.handleAdOnCVPVisibilityChange(containerId, CNN.pageVis.isDocumentVisible());if (Modernizr && !Modernizr.phone && !Modernizr.mobile && !Modernizr.tablet) {var containerClassId = ‘#’ + containerId;if (jQuery(containerClassId).parents(‘.js-pg-rail-tall__head’).length) {videoPinner = new CNN.VideoPinner(containerClassId);videoPinner.init();} else {CNN.VideoPlayer.hideThumbnail(containerId);}}},/** Listen to the metadata event which fires right after the ad ends and the actual video playback begins*/onContentEntryLoad: function(containerId, playerId, contentid, isQueue) {CNN.VideoPlayer.showSpinner(containerId);},onContentMetadata: function (containerId, playerId, metadata, contentId, duration, width, height) {var endSlateLen = jQuery(document.getElementById(containerId)).parent().find(‘.js-video__end-slate’).eq(0).length;CNN.VideoSourceUtils.updateSource(containerId, metadata);if (endSlateLen > 0) {videoEndSlateImpl.fetchAndShowRecommendedVideos(metadata);}},onAdPlay: function (containerId, cvpId, token, mode, id, duration, blockId, adType) {clearTimeout(moveToNextTimeout);CNN.VideoPlayer.hideSpinner(containerId);if (Modernizr && !Modernizr.phone && !Modernizr.mobile && !Modernizr.tablet) {if (typeof videoPinner !== ‘undefined’ && videoPinner !== null) {videoPinner.setIsPlaying(true);videoPinner.animateDown();}}},onContentPlay: function (containerId, cvpId, event) {var playerInstance,prevVideoId;/** When the video content starts playing, inject analytics data* for Aspen (if enabled) and the companion ad layout* (if it was set when the ad played) should switch back to* epic ad layout. onContentPlay calls updateCompanionLayout* with the ‘restoreEpicAds’ layout to make this switch*/if (CNN.companion && typeof CNN.companion.updateCompanionLayout === ‘function’) {CNN.companion.updateCompanionLayout(‘restoreEpicAds’);}clearTimeout(moveToNextTimeout);CNN.VideoPlayer.hideSpinner(containerId);if (CNN.VideoPlayer.getLibraryName(containerId) === ‘fave’) {playerInstance = FAVE.player.getInstance(containerId) || null;} else {playerInstance = containerId && window.cnnVideoManager.getPlayerByContainer(containerId).videoInstance.cvp || null;}prevVideoId = (window.jsmd && window.jsmd.v && (window.jsmd.v.eVar18 || window.jsmd.v.eVar4)) || ”;if (playerInstance && typeof playerInstance.reportAnalytics === ‘function’) {if (prevVideoId.length === 0 && document.referrer && document.referrer.search(//videos//) >= 0) {prevVideoId = document.referrer.replace(/^(?:http|https)://[^/]/videos/(.+.w+)(?:/video/playlists/.*)?$/, ‘/video/$1’);if (prevVideoId === document.referrer) {prevVideoId = ”;}}playerInstance.reportAnalytics(‘videoPageData’, {videoCollection: currentVideoCollectionId,videoBranding: CNN.omniture.branding_content_page,templateType: CNN.omniture.template_type,nextVideo: nextVideoId,previousVideo: prevVideoId,referrerType: ”,referrerUrl: document.referrer});}if (Modernizr && !Modernizr.phone && !Modernizr.mobile && !Modernizr.tablet) {if (typeof videoPinner !== ‘undefined’ && videoPinner !== null) {videoPinner.setIsPlaying(true);videoPinner.animateDown();}}},onContentReplayRequest: function (containerId, cvpId, contentId) {if (Modernizr && !Modernizr.phone && !Modernizr.mobile && !Modernizr.tablet) {if (typeof videoPinner !== ‘undefined’ && videoPinner !== null) {videoPinner.setIsPlaying(true);var $endSlate = jQuery(document.getElementById(containerId)).parent().find(‘.js-video__end-slate’).eq(0);if ($endSlate.length > 0) {$endSlate.removeClass(‘video__end-slate–active’).addClass(‘video__end-slate–inactive’);}}}},onContentBegin: function (containerId, cvpId, contentId) {CNN.VideoPlayer.mutePlayer(containerId);if (CNN.companion && typeof CNN.companion.updateCompanionLayout === ‘function’) {CNN.companion.updateCompanionLayout(‘removeEpicAds’);}CNN.VideoPlayer.hideSpinner(containerId);clearTimeout(moveToNextTimeout);CNN.VideoSourceUtils.clearSource(containerId);jQuery(document).triggerVideoContentStarted();},onContentComplete: function (containerId, cvpId, contentId) {if (CNN.companion && typeof CNN.companion.updateCompanionLayout === ‘function’) {CNN.companion.updateCompanionLayout(‘restoreFreewheel’);}navigateToNextVideo(contentId, containerId);},onContentEnd: function (containerId, cvpId, contentId) {if (Modernizr && !Modernizr.phone && !Modernizr.mobile && !Modernizr.tablet) {if (typeof videoPinner !== ‘undefined’ && videoPinner !== null) {videoPinner.setIsPlaying(false);}}},onCVPVisibilityChange: function (containerId, cvpId, visible) {CNN.VideoPlayer.handleAdOnCVPVisibilityChange(containerId, visible);}};if (typeof configObj.context !== ‘string’ || configObj.context.length 0) {configObj.adsection = window.ssid;}CNN.autoPlayVideoExist = (CNN.autoPlayVideoExist === true) ? true : false;CNN.VideoPlayer.getLibrary(configObj, callbackObj, isLivePlayer);});/* videodemanddust is a default feature of the injector */CNN.INJECTOR.scriptComplete(‘videodemanddust’);

The why? and the what?

The data is used to devise specific training and recovery plans to cater for a player’s strengths and weaknesses.

“It’s pretty incredible what’s (technology) out there these days,” Volland says. “It can be a little more stress for players and the whole team but it’s all part of it, everyone benefits from it.

“All the fitness trainers then know where you stand, so you can build up your condition and get to what’s ideal for you in particular.”

For football clubs and in particular their players, the “why?” is becoming just as important as the “what?”

Volland says players are now no longer blindly following the advice of coaches, instead choosing to understand the reasoning behind their instructions.

“Every player is, in fact, quite interested to meet with the fitness trainer to take a look (at the data),” he explains. “You see the averages, you see your own results.”

Over two days club coaches set up a series of circuits designed to measure the individual skill sets of every player.

Balance, strength and endurance tests are at the forefront of the assessment process, with players then sorted into three groups — average or above and below — based on how well they perform.

“It helps you pinpoint what your weaknesses might be,” the 25-year-old says. “It gives you good feedback, in particular on the medical side of things.

“For me, for example, I realized that my balance when I’m on a see-saw board can lack a little — others I did better.”

Testing the Catapult

‘);$vidEndSlate.removeClass(‘video__end-slate–inactive’).addClass(‘video__end-slate–active’);}};CNN.autoPlayVideoExist = (CNN.autoPlayVideoExist === true) ? true : false;var configObj = {thumb: ‘none’,video: ‘sports/2017/05/02/as-monaco-8-foods-boost-athletic-performance-nutrition-uefa-champions-league-intv.cnn’,width: ‘100%’,height: ‘100%’,section: ‘international’,profile: ‘expansion’,network: ‘cnn’,markupId: ‘body-text_29’,adsection: ‘const-article-inpage’,frameWidth: ‘100%’,frameHeight: ‘100%’,posterImageOverride: {“mini”:{“height”:124,”width”:220,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170502125643-monaco-nutrition-tease-small-169.jpg”},”xsmall”:{“height”:173,”width”:307,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170502125643-monaco-nutrition-tease-medium-plus-169.jpg”},”small”:{“height”:259,”width”:460,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170502125643-monaco-nutrition-tease-large-169.jpg”},”medium”:{“height”:438,”width”:780,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170502125643-monaco-nutrition-tease-exlarge-169.jpg”},”large”:{“height”:619,”width”:1100,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170502125643-monaco-nutrition-tease-super-169.jpg”},”full16x9″:{“height”:900,”width”:1600,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170502125643-monaco-nutrition-tease-full-169.jpg”},”mini1x1″:{“height”:120,”width”:120,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170502125643-monaco-nutrition-tease-small-11.jpg”}}},autoStartVideo = false,callbackObj,containerEl,currentVideoCollection = [],currentVideoCollectionId = ”,isLivePlayer = false,moveToNextTimeout,mutePlayerEnabled = false,nextVideoId = ”,nextVideoUrl = ”,turnOnFlashMessaging = false,videoPinner,videoEndSlateImpl;if (CNN.autoPlayVideoExist === false) {autoStartVideo = false;if (autoStartVideo === true) {if (turnOnFlashMessaging === true) {autoStartVideo = false;containerEl = jQuery(document.getElementById(configObj.markupId));CNN.VideoPlayer.showFlashSlate(containerEl);} else {CNN.autoPlayVideoExist = true;}}}configObj.autostart = autoStartVideo;CNN.VideoPlayer.setPlayerProperties(configObj.markupId, autoStartVideo, isLivePlayer, mutePlayerEnabled);CNN.VideoPlayer.setFirstVideoInCollection(currentVideoCollection, configObj.markupId);videoEndSlateImpl = new CNN.VideoEndSlate(‘body-text_29’);/*** Finds the next video ID and URL in the current collection, if available.* @param currentVideoId The video that is currently playing* @param containerId The parent container Id of the video element*/function findNextVideo(currentVideoId) {var i,vidObj;if (currentVideoId && jQuery.isArray(currentVideoCollection) && currentVideoCollection.length > 0) {for (i = 0; i 0) {videoEndSlateImpl.showEndSlateForContainer();}}}callbackObj = {onPlayerReady: function (containerId) {CNN.VideoPlayer.reportLoadTime(containerId);CNN.VideoPlayer.handleInitialExpandableVideoState(containerId);CNN.VideoPlayer.handleAdOnCVPVisibilityChange(containerId, CNN.pageVis.isDocumentVisible());if (Modernizr && !Modernizr.phone && !Modernizr.mobile && !Modernizr.tablet) {var containerClassId = ‘#’ + containerId;if (jQuery(containerClassId).parents(‘.js-pg-rail-tall__head’).length) {videoPinner = new CNN.VideoPinner(containerClassId);videoPinner.init();} else {CNN.VideoPlayer.hideThumbnail(containerId);}}},/** Listen to the metadata event which fires right after the ad ends and the actual video playback begins*/onContentEntryLoad: function(containerId, playerId, contentid, isQueue) {CNN.VideoPlayer.showSpinner(containerId);},onContentMetadata: function (containerId, playerId, metadata, contentId, duration, width, height) {var endSlateLen = jQuery(document.getElementById(containerId)).parent().find(‘.js-video__end-slate’).eq(0).length;CNN.VideoSourceUtils.updateSource(containerId, metadata);if (endSlateLen > 0) {videoEndSlateImpl.fetchAndShowRecommendedVideos(metadata);}},onAdPlay: function (containerId, cvpId, token, mode, id, duration, blockId, adType) {clearTimeout(moveToNextTimeout);CNN.VideoPlayer.hideSpinner(containerId);if (Modernizr && !Modernizr.phone && !Modernizr.mobile && !Modernizr.tablet) {if (typeof videoPinner !== ‘undefined’ && videoPinner !== null) {videoPinner.setIsPlaying(true);videoPinner.animateDown();}}},onContentPlay: function (containerId, cvpId, event) {var playerInstance,prevVideoId;/** When the video content starts playing, inject analytics data* for Aspen (if enabled) and the companion ad layout* (if it was set when the ad played) should switch back to* epic ad layout. onContentPlay calls updateCompanionLayout* with the ‘restoreEpicAds’ layout to make this switch*/if (CNN.companion && typeof CNN.companion.updateCompanionLayout === ‘function’) {CNN.companion.updateCompanionLayout(‘restoreEpicAds’);}clearTimeout(moveToNextTimeout);CNN.VideoPlayer.hideSpinner(containerId);if (CNN.VideoPlayer.getLibraryName(containerId) === ‘fave’) {playerInstance = FAVE.player.getInstance(containerId) || null;} else {playerInstance = containerId && window.cnnVideoManager.getPlayerByContainer(containerId).videoInstance.cvp || null;}prevVideoId = (window.jsmd && window.jsmd.v && (window.jsmd.v.eVar18 || window.jsmd.v.eVar4)) || ”;if (playerInstance && typeof playerInstance.reportAnalytics === ‘function’) {if (prevVideoId.length === 0 && document.referrer && document.referrer.search(//videos//) >= 0) {prevVideoId = document.referrer.replace(/^(?:http|https)://[^/]/videos/(.+.w+)(?:/video/playlists/.*)?$/, ‘/video/$1’);if (prevVideoId === document.referrer) {prevVideoId = ”;}}playerInstance.reportAnalytics(‘videoPageData’, {videoCollection: currentVideoCollectionId,videoBranding: CNN.omniture.branding_content_page,templateType: CNN.omniture.template_type,nextVideo: nextVideoId,previousVideo: prevVideoId,referrerType: ”,referrerUrl: document.referrer});}if (Modernizr && !Modernizr.phone && !Modernizr.mobile && !Modernizr.tablet) {if (typeof videoPinner !== ‘undefined’ && videoPinner !== null) {videoPinner.setIsPlaying(true);videoPinner.animateDown();}}},onContentReplayRequest: function (containerId, cvpId, contentId) {if (Modernizr && !Modernizr.phone && !Modernizr.mobile && !Modernizr.tablet) {if (typeof videoPinner !== ‘undefined’ && videoPinner !== null) {videoPinner.setIsPlaying(true);var $endSlate = jQuery(document.getElementById(containerId)).parent().find(‘.js-video__end-slate’).eq(0);if ($endSlate.length > 0) {$endSlate.removeClass(‘video__end-slate–active’).addClass(‘video__end-slate–inactive’);}}}},onContentBegin: function (containerId, cvpId, contentId) {CNN.VideoPlayer.mutePlayer(containerId);if (CNN.companion && typeof CNN.companion.updateCompanionLayout === ‘function’) {CNN.companion.updateCompanionLayout(‘removeEpicAds’);}CNN.VideoPlayer.hideSpinner(containerId);clearTimeout(moveToNextTimeout);CNN.VideoSourceUtils.clearSource(containerId);jQuery(document).triggerVideoContentStarted();},onContentComplete: function (containerId, cvpId, contentId) {if (CNN.companion && typeof CNN.companion.updateCompanionLayout === ‘function’) {CNN.companion.updateCompanionLayout(‘restoreFreewheel’);}navigateToNextVideo(contentId, containerId);},onContentEnd: function (containerId, cvpId, contentId) {if (Modernizr && !Modernizr.phone && !Modernizr.mobile && !Modernizr.tablet) {if (typeof videoPinner !== ‘undefined’ && videoPinner !== null) {videoPinner.setIsPlaying(false);}}},onCVPVisibilityChange: function (containerId, cvpId, visible) {CNN.VideoPlayer.handleAdOnCVPVisibilityChange(containerId, visible);}};if (typeof configObj.context !== ‘string’ || configObj.context.length 0) {configObj.adsection = window.ssid;}CNN.autoPlayVideoExist = (CNN.autoPlayVideoExist === true) ? true : false;CNN.VideoPlayer.getLibrary(configObj, callbackObj, isLivePlayer);});/* videodemanddust is a default feature of the injector */CNN.INJECTOR.scriptComplete(‘videodemanddust’);

As the afternoon sun beats down on the pristine training pitches adjacent to the BayArena, Leverkusen youth team coach Tim Riedel leads out a group of six journalists to test the technology.

Normally accustomed to commanding a group of elite athletes, the panting and wheezing after only two widths of the pitch provides him with an altogether different challenge.

After undergoing a rigorous and draining one-hour session — just a third of the time Leverkusen’s players spend training and the equivalent of their warmup — the data from the GPS tracker is downloaded and portrayed in bar graphs.

This allows the coaches, but more importantly the players, to easily digest the data and subsequently plan their personalized training and recovery programs.

Unsurprisingly, the performance of Leverkusen’s professionals was often as much as 50% higher than that of the journalists.

Riedel says the players become very competitive when comparing results, which in turn gives them an added incentive to work that much harder.

One of the measured variables is distance covered at high intensity (over 25 km/h), something which the now departed midfielder Kevin Kampl — “the runner of the team,” as Riedel described him — was vastly superior at compared to the rest of his teammates. Kampl joined RB Leipzig on August 31.

Winger Karim Bellarabi, meanwhile, is by far the quickest member of the squad and is able to reach a top speed of 33 km/h.

“It (the data) helps you to see ‘OK, so I need to work harder here’ which you can then utilize when you’re doing some individual training workouts,” Volland says.

“It’s important though not just for the endurance aspect — but also in regards to the recovery.”

Catapult Technology is only used by Leverkusen during training and practice matches, as the Bundesliga uses Opta Sports’ data to analyze player performance during the season.

During one of these training sessions, Leverkusen opened its doors to hundreds of fans in an attempt to galvanize the players ahead of a crucial derby match against local rivals Cologne last season.

Hoards of supporters lined the pathway as the players made their way onto the training pitch, with the electric atmosphere more akin to that of a matchday than a pre-game practice.

Being innovators in technology has helped Leverkusen qualify for European football every year since 2009-10, though numerical data is always prone to throw up an anomaly.

The 2016-17 season was the first time in history that Cologne finished above Leverkusen in the league.

Despite going 2-0 down early in the second half, Leverkusen rallied to level the scores and secure their place in the Bundesliga after a season of teetering precariously on the brink of relegation.

Tactics and nutrition

‘);$vidEndSlate.removeClass(‘video__end-slate–inactive’).addClass(‘video__end-slate–active’);}};CNN.autoPlayVideoExist = (CNN.autoPlayVideoExist === true) ? true : false;var configObj = {thumb: ‘none’,video: ‘sports/2017/05/02/as-monaco-nutrition-program-champions-league.cnn’,width: ‘100%’,height: ‘100%’,section: ‘international’,profile: ‘expansion’,network: ‘cnn’,markupId: ‘body-text_50’,adsection: ‘const-article-inpage’,frameWidth: ‘100%’,frameHeight: ‘100%’,posterImageOverride: {“mini”:{“height”:124,”width”:220,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170502144449-as-monaco-nutrition-program-champions-league-00001520-small-169.jpg”},”xsmall”:{“height”:173,”width”:307,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170502144449-as-monaco-nutrition-program-champions-league-00001520-medium-plus-169.jpg”},”small”:{“height”:259,”width”:460,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170502144449-as-monaco-nutrition-program-champions-league-00001520-large-169.jpg”},”medium”:{“height”:438,”width”:780,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170502144449-as-monaco-nutrition-program-champions-league-00001520-exlarge-169.jpg”},”large”:{“height”:619,”width”:1100,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170502144449-as-monaco-nutrition-program-champions-league-00001520-super-169.jpg”},”full16x9″:{“height”:900,”width”:1600,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170502144449-as-monaco-nutrition-program-champions-league-00001520-full-169.jpg”},”mini1x1″:{“height”:120,”width”:120,”type”:”jpg”,”uri”:”//i2.cdn.cnn.com/cnnnext/dam/assets/170502144449-as-monaco-nutrition-program-champions-league-00001520-small-11.jpg”}}},autoStartVideo = false,callbackObj,containerEl,currentVideoCollection = [],currentVideoCollectionId = ”,isLivePlayer = false,moveToNextTimeout,mutePlayerEnabled = false,nextVideoId = ”,nextVideoUrl = ”,turnOnFlashMessaging = false,videoPinner,videoEndSlateImpl;if (CNN.autoPlayVideoExist === false) {autoStartVideo = false;if (autoStartVideo === true) {if (turnOnFlashMessaging === true) {autoStartVideo = false;containerEl = jQuery(document.getElementById(configObj.markupId));CNN.VideoPlayer.showFlashSlate(containerEl);} else {CNN.autoPlayVideoExist = true;}}}configObj.autostart = autoStartVideo;CNN.VideoPlayer.setPlayerProperties(configObj.markupId, autoStartVideo, isLivePlayer, mutePlayerEnabled);CNN.VideoPlayer.setFirstVideoInCollection(currentVideoCollection, configObj.markupId);videoEndSlateImpl = new CNN.VideoEndSlate(‘body-text_50’);/*** Finds the next video ID and URL in the current collection, if available.* @param currentVideoId The video that is currently playing* @param containerId The parent container Id of the video element*/function findNextVideo(currentVideoId) {var i,vidObj;if (currentVideoId && jQuery.isArray(currentVideoCollection) && currentVideoCollection.length > 0) {for (i = 0; i 0) {videoEndSlateImpl.showEndSlateForContainer();}}}callbackObj = {onPlayerReady: function (containerId) {CNN.VideoPlayer.reportLoadTime(containerId);CNN.VideoPlayer.handleInitialExpandableVideoState(containerId);CNN.VideoPlayer.handleAdOnCVPVisibilityChange(containerId, CNN.pageVis.isDocumentVisible());if (Modernizr && !Modernizr.phone && !Modernizr.mobile && !Modernizr.tablet) {var containerClassId = ‘#’ + containerId;if (jQuery(containerClassId).parents(‘.js-pg-rail-tall__head’).length) {videoPinner = new CNN.VideoPinner(containerClassId);videoPinner.init();} else {CNN.VideoPlayer.hideThumbnail(containerId);}}},/** Listen to the metadata event which fires right after the ad ends and the actual video playback begins*/onContentEntryLoad: function(containerId, playerId, contentid, isQueue) {CNN.VideoPlayer.showSpinner(containerId);},onContentMetadata: function (containerId, playerId, metadata, contentId, duration, width, height) {var endSlateLen = jQuery(document.getElementById(containerId)).parent().find(‘.js-video__end-slate’).eq(0).length;CNN.VideoSourceUtils.updateSource(containerId, metadata);if (endSlateLen > 0) {videoEndSlateImpl.fetchAndShowRecommendedVideos(metadata);}},onAdPlay: function (containerId, cvpId, token, mode, id, duration, blockId, adType) {clearTimeout(moveToNextTimeout);CNN.VideoPlayer.hideSpinner(containerId);if (Modernizr && !Modernizr.phone && !Modernizr.mobile && !Modernizr.tablet) {if (typeof videoPinner !== ‘undefined’ && videoPinner !== null) {videoPinner.setIsPlaying(true);videoPinner.animateDown();}}},onContentPlay: function (containerId, cvpId, event) {var playerInstance,prevVideoId;/** When the video content starts playing, inject analytics data* for Aspen (if enabled) and the companion ad layout* (if it was set when the ad played) should switch back to* epic ad layout. onContentPlay calls updateCompanionLayout* with the ‘restoreEpicAds’ layout to make this switch*/if (CNN.companion && typeof CNN.companion.updateCompanionLayout === ‘function’) {CNN.companion.updateCompanionLayout(‘restoreEpicAds’);}clearTimeout(moveToNextTimeout);CNN.VideoPlayer.hideSpinner(containerId);if (CNN.VideoPlayer.getLibraryName(containerId) === ‘fave’) {playerInstance = FAVE.player.getInstance(containerId) || null;} else {playerInstance = containerId && window.cnnVideoManager.getPlayerByContainer(containerId).videoInstance.cvp || null;}prevVideoId = (window.jsmd && window.jsmd.v && (window.jsmd.v.eVar18 || window.jsmd.v.eVar4)) || ”;if (playerInstance && typeof playerInstance.reportAnalytics === ‘function’) {if (prevVideoId.length === 0 && document.referrer && document.referrer.search(//videos//) >= 0) {prevVideoId = document.referrer.replace(/^(?:http|https)://[^/]/videos/(.+.w+)(?:/video/playlists/.*)?$/, ‘/video/$1’);if (prevVideoId === document.referrer) {prevVideoId = ”;}}playerInstance.reportAnalytics(‘videoPageData’, {videoCollection: currentVideoCollectionId,videoBranding: CNN.omniture.branding_content_page,templateType: CNN.omniture.template_type,nextVideo: nextVideoId,previousVideo: prevVideoId,referrerType: ”,referrerUrl: document.referrer});}if (Modernizr && !Modernizr.phone && !Modernizr.mobile && !Modernizr.tablet) {if (typeof videoPinner !== ‘undefined’ && videoPinner !== null) {videoPinner.setIsPlaying(true);videoPinner.animateDown();}}},onContentReplayRequest: function (containerId, cvpId, contentId) {if (Modernizr && !Modernizr.phone && !Modernizr.mobile && !Modernizr.tablet) {if (typeof videoPinner !== ‘undefined’ && videoPinner !== null) {videoPinner.setIsPlaying(true);var $endSlate = jQuery(document.getElementById(containerId)).parent().find(‘.js-video__end-slate’).eq(0);if ($endSlate.length > 0) {$endSlate.removeClass(‘video__end-slate–active’).addClass(‘video__end-slate–inactive’);}}}},onContentBegin: function (containerId, cvpId, contentId) {CNN.VideoPlayer.mutePlayer(containerId);if (CNN.companion && typeof CNN.companion.updateCompanionLayout === ‘function’) {CNN.companion.updateCompanionLayout(‘removeEpicAds’);}CNN.VideoPlayer.hideSpinner(containerId);clearTimeout(moveToNextTimeout);CNN.VideoSourceUtils.clearSource(containerId);jQuery(document).triggerVideoContentStarted();},onContentComplete: function (containerId, cvpId, contentId) {if (CNN.companion && typeof CNN.companion.updateCompanionLayout === ‘function’) {CNN.companion.updateCompanionLayout(‘restoreFreewheel’);}navigateToNextVideo(contentId, containerId);},onContentEnd: function (containerId, cvpId, contentId) {if (Modernizr && !Modernizr.phone && !Modernizr.mobile && !Modernizr.tablet) {if (typeof videoPinner !== ‘undefined’ && videoPinner !== null) {videoPinner.setIsPlaying(false);}}},onCVPVisibilityChange: function (containerId, cvpId, visible) {CNN.VideoPlayer.handleAdOnCVPVisibilityChange(containerId, visible);}};if (typeof configObj.context !== ‘string’ || configObj.context.length 0) {configObj.adsection = window.ssid;}CNN.autoPlayVideoExist = (CNN.autoPlayVideoExist === true) ? true : false;CNN.VideoPlayer.getLibrary(configObj, callbackObj, isLivePlayer);});/* videodemanddust is a default feature of the injector */CNN.INJECTOR.scriptComplete(‘videodemanddust’);

Source link