Rychlý Američan s italskými kořeny měl obdivovatele i v Československu: Mario Andretti letos slaví 85 let

přidejte názor

Jeho jméno patří mezi ty, které se ani bdělým „dohlížitelům“ nepodařilo vymazat z tehdejších našich sdělovacích prostředků! Sportovní výkony byly a jsou totiž apolitické, proto jméno tohoto Italoameričana znal každý, kdo jen špetkou zájmu zavadil o výkony těch nejrychlejších. A Andretti se směle řadil mezi plejádu těch NEJ: Ickx, Regazzoni, Hill, Clark či Rindt…

Oslavný článek se většinou píše až „ex post“, tedy poté, když dotyčný jedinec odejde na věčnost. Ale my využíváme toho, že se Mario Gabriele Andretti tento měsíc dožívá pětaosmdesáti let, a tak je článek nejen rekapitulací kariéry a životních mezníků skvělého závodníka, ale i jakousi gratulující rukou, podanou přes Atlantik.

Trocha před- i poválečné evropské geografie…

Jeho původ odráží spletitost předválečných geografických lokací: přišel na svět v předposlední únorový den roku 1940 (toho roku měl totiž únor o jeden den více), několik hodin před svým bratrem Aldem. Jeho rodiče byli Italové, sídlící v dnešním chorvatském Motovunu, v době příchodu Maria na svět ještě součásti Itálie. Jelikož se během poválečném „vyrovnávání“ dostala součást Istrie pod Jugoslávii, rodina Andrettiů neváhala a všech pět jejich členů se okamžitě vystěhovalo do Itálie, která se jim měla stát staronovým domovem.

Video: Mario Andretti a jedno kolo v Indianapolis v roce 1966

Zdroj: Youtube.com

Mladý Mario zahořel velmi brzy pro vše, co mělo čtyři kola a vydávalo (pokud možno) co největší hluk. S rodiči našel domov v toskánské Lucce, kde otec Andretti pracoval jako zástupce americké ocelářské společnosti a koordinoval její obchodní aktivity v poválečné Itálii přelomu 40. a 50. let. Mario občas směl popojet s rodinným Fiatem 1100, pak spolu s bratrem sehnal brigádu v místním garáži, kde umývali auta a starali se o jejich základní údržbu.

Mille Miglia a Monza daly mladému životu směr

Zlom v Andrettiho životě nastal v roce 1954. Čtrnáctiletého mladíka, který se prý každou chvíli vracel domů s boulemi, odřenými koleny a jinými následky rychlé jízdy na kole, vzali provozovatelé nájemných garáží na trať tehdejší Mille Miglia. Tempo stáda nadupaných více či méně sportovních modelů určilo další směr života kluka, jenž propadl rychlosti a vysokooktanovému benzínu.

Nad čím přemýšlejí Andretti a Colin Chapman? Možná nad strategií Lotusu na příští formulovou sezónu…

Nad čím přemýšlejí Andretti a Colin Chapman? Možná nad strategií Lotusu na příští formulovou sezónu…

Autor: Lotus

Druhou životní kapitolou, která mu podle jeho vlastních slov nikdy nevymizí z paměti, byla návštěva okruhu Monza během Velké ceny Itálie 1954. Poprvé na vlastní oči viděl supermoderní techniku strojů Ferrari a Maserati, a propadl jí na celý život. Tam si Mario také vybral svůj vzor: tím byl Alberto Ascari, který ovšem po tragické havárii v Monze roku 1955 zahynul.

Cesta za oceán byla pro Andrettiho kariéru průlomová

V roce 1955 celá rodina Andrettiů odešla do USA – ne snad, že by v Itálii měli bídu, ale nejstarší Andretti cítil, že jeho vrozenému obchodnímu duchu bude více sedět dynamicky až překotně se rozvíjející americké hospodářství, nabízející uplatnění každému, kdo na to má schopnosti. Rodina se přestěhovala do pensylvánského Nazarethu a musela se okamžitě motorizovat. Mladý Mario byl po tátovi druhý, kdo zkusil řízení jejich ojetého chevroletu.

Netrvalo dlouho a Andretti zjistil, že americký automobilový sport je na hony vzdálený evropskému pojetí. V okolí nového domova se jezdily více či méně legální pouliční závody, existovalo tu také několik oválů, většinou ale s nezpevněným povrchem. Kvalitní asfaltová či betonová dráha chyběla; výkon vozů, laděných podomácku, byl zkoušený populárními čtvrtmílovými vyřazovačkami na improvizovaných dragstripech.

Šest let vězení a tvrdé lože. Trest pro génialního tvůrce z Tatry, na kterého se mělo zapomenout
Přečtěte si také:

Šest let vězení a tvrdé lože. Trest pro génialního tvůrce z Tatry, na kterého se mělo zapomenout

Od Chevroletu Bel Air k Hudsonu Hornet

Mario Andretti uvažoval o dráze automechanika, pokud možno v některé z mnoha závodních stájí. První „ostré“ zkušenosti získal za volantem rodinného Chevroletu Bel Air z roku 1957, u nějž s bratrem Aldem upravili sání, přidali vstřikování paliva a některé další záležitosti. Prvním vozem, který si bratrská dvojice koupila, byl kdysi nesmírně populární Hudson Hornet s proudnicovou karosérií, držitel mnoha vítězství v raných padesátých letech. Jenže jejich Hornet z roku 1948 měl blíže do ohrady s vyřazenými vozy než ke speciálu. Andrettiovi se nezalekli, a aniž by cokoliv řekli rodičům, začali pracovat na oživení stroje. Dostavily se první úspěchy, ale i prohry.

Populární a specificky americkou disciplínou jsou monoposty na ploché dráze. Začínala na nich celá plejáda jezdců

Populární a specificky americkou disciplínou jsou monoposty na ploché dráze. Začínala na nich celá plejáda jezdců

Autor: Motorsport Hall of Fame

Později Aldo Andretti prodělal těžkou autonehodu a více se k závodění nevrátil. I nad Mariovou kariérou se stahovaly mraky, rodina žádala okamžitě přestat s hazardérstvím, jak nazývala účast ve startovním poli. Ale Mario vytrval, byl dokonce ochotný rozházet si to s celou rodinou, ale od závodů ustoupit nechtěl.

Americká plochá dráha a Indy daly světu mnoho nových talentů…

Počátkem šedesátých let se mladý jezdec zhlédl v populárních závodech „midgetů“, tedy výkonných monopostů, jezdících tehdy většinou na oválné ploché dráze. Mario si pořád ještě jako jezdec nevydělával tolik, aby pokryl náklady, takže jezdil jen na poloviční úvazek a mimo pracovní dny.

Velkým cílem jezdce byla účast v poháru Indy s tím, že tam by se konečně mohl profesionalizovat. V Indy se točily mnohem větší peníze, ovšem i zcela jiné nároky a rovněž i nebezpečí. Po dlouhé snaze vstoupil Andretti do poháru Indy v roce 1964, nejlépe si vedl na trati v pensylvánském Langhorne. Po několika dalších startech si Andretti vydobyl pověst dráhového rváče, zejména za volantem kompresorového speciálu Brawner Hawk s vidlicovým osmiválcem Ford.

Přihlásila se stará touha po F1

Ale Mario nezapomněl na řev formulových monopostů v Monze a stále toužil být slavným pilotem F1. Vítězství na nejslavnějších amerických dráhách v Daytoně či Indianapolis bylo super, ale do světového ohlasu na triumfy nejslavnějších es v F1 přece jen mělo daleko. Ale Andretti se dočkal: v roce 1965 si jej konečně všiml boss Lotusu Colin Chapman a závazně Andrettimu přislíbil místo za volantem formulového speciálu.

Za Marcellem Gandinim: automobilový svět opustil jeden z velikánů, tvůrce Miury, Countachu a BX
Přečtěte si také:

Za Marcellem Gandinim: automobilový svět opustil jeden z velikánů, tvůrce Miury, Countachu a BX

Nemůžeme uvádět všechny šampionáty Indy, jichž se Andretti zúčastnil a ani celkový seznam jeho (většinou vynikajícího) umístění. Úspěšně jezdil v Sebringu, Riverside, ale zejména v Indy, kde se cítil jako doma. Významným mezníkem se stalo Andrettiho vítězství v legendárním závodu do vrchu Pikes Peak. Tím Mario dokázal, že je všestranně použitelným jezdcem, nejen oválovým a okruhovým, ale i na těžších silničních úsecích. Pro úplnost dodejme, že vyhrával i poháry NASCAR.

Vraťme se k nejslavnějším závodům F1. Chapman dodržel slovo, a tak se už v roce 1968 mohl Andretti po senzační jízdě blýsknout za volantem Lotusu ve Watkins Glen. O rok později na něj připadla pozice náhradníka za tragicky zesnulého Jima Clarka. Andretti souhlasil, ale nikoliv na „plný úvazek“: jednak se s Clarkem velmi dobře znal a nechtěl usednout do „horkého sedadla“ tak brzy po Clarkově odchodu, jednak měl tehdy mnohem vyšší příjmy na amerických okruzích, než jako začátečník – byť dobrý a vyježděný – v F1. Ale s Chapmanem se dohodl na nepravidelném obsazování.

Nejdříve Lotus, pak Scuderia Ferrari, pak zase Lotus

Významným mezníkem v Andrettiho závodní kariéře je podepsání smlouvy s tovární stájí Ferrari v roce 1971. Ovšem situace se nevyvinula tak, jak si jezdec předsevzal. Několik závodů pro technickou poruchu nedokončil, v sezóně 1971 vyhrál jen na jihoafrickém okruhu Kyalami. Od Scuderia Ferrari dal poté ruce pryč…

Původní kompresorový Brawner Hawk se nedochoval, v americkém Indianapolis Motor Speedway Museu je k vidění pečlivě upravená replika

Původní kompresorový Brawner Hawk se nedochoval, v americkém Indianapolis Motor Speedway Museu je k vidění pečlivě upravená replika

Autor: Indianapolis Motor Speedway Museum

V sedmdesátých letech jezdil Andretti pro stáj Parnelliho Jonese s podporou pneumatikářského koncernu Firestone. Střídal Jonesův tým s Lotusem, až se k tomuto legendárnímu závodnímu vozu natrvalo vrátil v roce 1976. Jezdil na nejznámějších formulových tratích světa a v roce 1978 si připsal první (a jediný) světový mistrovský titul.

Do další dekády vstupuje Andretti se smluvně zajištěným formulovým speciálem Alfa Romeo. Bylo to ovšem jen vystoupení krátkodobé, protože jezdec v polovině 80. let skončil s aktivní činností v kokpitu F1. V podnicích Indy ovšem pokračoval, a to až do konce minulého tisíciletí!

Ani v pozdních létech neztratil Andretti nic ze svého šarmu. Veselým a jiskrným chlapíkem zůstal…

Ani v pozdních létech neztratil Andretti nic ze svého šarmu. Veselým a jiskrným chlapíkem zůstal…

Autor: Motorsport Hall of Fame

Andretti neodpočívá ani ve věku 85 let!

Dnes prožívá Mario Andretti podzim svého života v rodinném sídle, postaveném ve městě Nazareth, tedy tam, kde Amerika dala rodině Andrettiových první domov. Odtud jeli v roce 1965 slavnostně převzít doklady o americkém občanství. Sídlo se na počest rodného města jmenuje Montona. Andretti se ani po ukončení profesionální závodnické kariéry nestáhl do ústraní, spolupracoval při vývoji závodních vozidel a nejnovějších technologií, účastnil se prezentací a testovacích jízd závodních a sportovních vozů, a mnoho času věnoval i dětem a širšímu příbuzenstvu.

Mario Andretti pochází z generace, která dala světu například Nikiho Laudu, bratry Fittipaldi, Ronnieho Petersona a další hvězdy okruhů let šedesátých a sedmdesátých. Popřejme mu mnoho šťastných a krásných let v plném zdraví!

Zdroj: archiv autora, Motorsport Hall of Fame, NASCAR Digital Media

  • Žádné názory
  • Našli jste v článku chybu?
'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
'; document.getElementById('outstream-iframe').onload = function () { setupIframe(); } replayScreen = document.getElementById('iinfoOutstreamReplay'); iinfoOutstreamPosition = document.getElementById('iinfoOutstreamPosition'); outstreamContainer = document.getElementsByClassName('outstream-container')[0]; setupReplayScreen(); } function setupIframe() { outstreamDocument = document.getElementById('outstream-iframe').contentWindow.document; let el = outstreamDocument.createElement('style'); outstreamDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:-5px;right:25px}"; videoContent = outstreamDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; if ( location.href.indexOf('rejstriky.finance.cz') !== -1 || location.href.indexOf('finance-rejstrik') !== -1 || location.href.indexOf('firmy.euro.cz') !== -1 || location.href.indexOf('euro-rejstrik') !== -1 || location.href.indexOf('/rejstrik/') !== -1 || location.href.indexOf('/rejstrik-firem/') !== -1) { outstreamDirectPlayed = true; soundAllowed = true; iinfoVastUrlIndex = 0; } if (!outstreamDirectPlayed) { console.log('OUTSTREAM direct'); setUpIMA(true); } else { if (soundAllowed) { const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('OUTSTREAM sound allowed'); setUpIMA(false); }).catch(function () { console.log('OUTSTREAM sound forbidden'); renderBanner(); }); } } else { renderBanner(); } } } function getWrapper() { let articleWrapper = document.querySelector('.rs-outstream-placeholder'); // Outstream Placeholder from RedSys manipulation if (articleWrapper && articleWrapper.style.display !== 'block') { articleWrapper.innerHTML = ""; articleWrapper.style.display = 'block'; } // Don't render OutStream on homepages if (articleWrapper === null) { if (document.querySelector('body.p-index')) { return null; } } if (articleWrapper === null) { articleWrapper = document.getElementById('iinfo-outstream'); } if (articleWrapper === null) { articleWrapper = document.querySelector('.layout-main__content .detail__article p:nth-of-type(6)'); } if (articleWrapper === null) { // Euro, Autobible, Zdravi articleWrapper = document.querySelector('.o-article .o-article__text p:nth-of-type(6)'); } if (articleWrapper === null) { articleWrapper = document.getElementById('sidebar'); } if (!articleWrapper) { console.error("Outstream wrapper of article was not found."); } return articleWrapper; } function setupDimensions() { outstreamWidth = Math.min(iinfoOutstreamPosition.offsetWidth, 480); outstreamHeight = Math.min(iinfoOutstreamPosition.offsetHeight, 320); } /** * Sets up IMA ad display container, ads loader, and makes an ad request. */ function setUpIMA(direct) { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); if (direct) { adsRequest.adTagUrl = directVast; console.log('Outstream DIRECT CAMPAING advert: ' + directVast); videoContent.muted = true; videoContent.volume = 0; outstreamDirectPlayed = true; } else { adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Outstream advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; } // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = outstreamWidth; // adsRequest.linearAdSlotHeight = outstreamHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function setupReplayScreen() { replayScreen.addEventListener('click', function () { iinfoOutstreamPosition.remove(); iinfoVastUrlIndex = 0; outstreamInit(); }); } /** * Sets the 'adContainer' div as the IMA ad display container. */ function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. outstreamDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( outstreamDocument.getElementById('adContainer'), videoContent); } function unmuteAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } } /** * Loads the video content and initializes IMA ad playback. */ function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(outstreamWidth, outstreamHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } /** * Handles the ad manager loading and sets ad event listeners. * @param { !google.ima.AdsManagerLoadedEvent } adsManagerLoadedEvent */ function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } /** * Handles actions taken in response to ad events. * @param { !google.ima.AdEvent } adEvent */ function onAdEvent(adEvent) { // Retrieve the ad from the event. Some events (for example, // ALL_ADS_COMPLETED) don't have ad object associated. const ad = adEvent.getAd(); console.log('Outstream event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: // This is the first event sent for an ad - it is possible to // determine whether the ad is a video ad or an overlay. if (!ad.isLinear()) { // Position AdDisplayContainer correctly for overlay. // Use ad.width and ad.height. videoContent.play(); } outstreamDocument.getElementById('adContainer').style.width = '100%'; outstreamDocument.getElementById('adContainer').style.maxWidth = '640px'; outstreamDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); // This event indicates the ad has started - the video player // can adjust the UI, for example display a pause button and // remaining time. if (ad.isLinear()) { // For a linear ad, a timer can be started to poll for // the remaining time. intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } outstreamDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (outstreamLastError === 303) { if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } } break; case google.ima.AdEvent.Type.COMPLETE: // This event indicates the ad has finished - the video player // can perform appropriate UI actions, such as removing the timer for // remaining time detection. if (ad.isLinear()) { clearInterval(intervalTimer); } if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } break; } } /** * Handles ad errors. * @param { !google.ima.AdErrorEvent } adErrorEvent */ function onAdError(adErrorEvent) { // Handle the error logging. console.log(adErrorEvent.getError()); outstreamLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { renderBanner(); } } function renderBanner() { if (isBanner) { console.log('Outstream: Render Banner'); iinfoOutstreamPosition.innerHTML = ""; iinfoOutstreamPosition.style.height = "330px"; iinfoOutstreamPosition.appendChild(bannerDiv); } else { console.log('Outstream: Banner is not set'); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoOutstreamPosition.remove(); outstreamInit(); } else { return false; } adVolume = 1; return true; } /** * Pauses video content and sets up ad UI. */ function onContentPauseRequested() { videoContent.pause(); // This function is where you should setup UI for showing ads (for example, // display ad timer countdown, disable seeking and more.) // setupUIForAds(); } /** * Resumes video content and removes ad UI. */ function onContentResumeRequested() { videoContent.play(); // This function is where you should ensure that your UI is ready // to play content. It is the responsibility of the Publisher to // implement this function when necessary. // setupUIForContent(); } function onActiveView() { if (outstreamContainer) { const containerOffset = outstreamContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (outstreamPaused) { adsManager.resume(); outstreamPaused = false; } return true; } else { if (!outstreamPaused) { adsManager.pause(); outstreamPaused = true; } } } return false; } let outstreamInitInterval; if (typeof cpexPackage !== "undefined") { outstreamInitInterval = setInterval(tryToInitializeOutstream, 100); } else { const wrapper = getWrapper(); if (wrapper) { let outstreamInitialized = false; window.addEventListener('scroll', () => { if (!outstreamInitialized) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { outstreamInit(); outstreamInitialized = true; } } }); } } function tryToInitializeOutstream() { const wrapper = getWrapper(); if (wrapper) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { if (cpexPackage.adserver.displayed) { clearInterval(outstreamInitInterval); outstreamInit(); } } } else { clearInterval(outstreamInitInterval); } } }
OSZAR »