Expedice Antarktida: místo posledního odpočinku Snow Cruiseru zatím nenalezeno!

přidejte názor

Subkontinenty věčného sněhu, ledu a klimatu stálé zimy, tak se dají charakterizovat Arktida a Antarktida. Nedá se tvrdit, že by si je člověk podmanil, spíše je jen navštěvuje a s milosrdným svolením jejich nehostinného podnebí tu a tam realizuje nějaký svůj výzkumný projekt. Jména prvních polárníků, kteří prošlapali cestu do středů obou věčně zmrzlých polárních čepic, jsou dodnes ctěna, ale mnohem více je těch, jimž tamní kruté podmínky odepřely přístup či návrat domů.

Už v první dekádě minulého století se některé pokrokové polárnické hlavy zamyslely nad tím, zda by nešlo použít při výzkumu obou polovin zaledněného světadílu nejmodernějšího technického vynálezu, jímž tehdy byl automobil. Ten se nedávno lehce přehoupl od symbolu výstřednosti svých majitelů k reálně sloužícímu dopravnímu prostředku. A tak se i stalo: prvním speciálem, jehož kola se dotkla antarktického ledovce, byl otevřený (!) čtyřválec Arrol-Johnston, použitý Shackletonovou expedicí k jižnímu pólu v roce 1907.

Zdroj: Youtube.com

Vozidlo o výkonu 14 koní bylo poháněné benzínem s vysokou příměsí alkoholu a mělo chlazení vzduchem. Mohlo mít přední kola upevněná v lyžích a vzadu speciální protiskluzové obruče. Byla to však marná snaha. Arrol-Johnston stále zapadal, a dokonce se mu navzdory mrazům a větru přehřál motor. Poškozené vozidlo se s expedicí dostalo zpět do Evropy, několik let bylo vystavováno v Anglii a pak jeho stopa mizí. Přední lyže vlastní jedno novozélandské muzeum, náhradní kolo s několika dalšími součástkami bylo ještě před několika léty k vidění na mysu Cape Royds, který se stal Shackletonovou základnou v dobách jeho výpravy. 

Dalším pokusem byl speciálně vybavený Austin 7, Američané vážně uvažovali o účelové stavbě na bázi proslulého „Téčka“ a později i „Áčka“, dnes již zapomenutou aktivitou jistého texaského milionáře byla (nakonec nedotažená) příprava polárního šestiválce Studebaker, ale pak doba odvážných jednotlivců skončila. Čas a antarktické poměry přály velkým výpravám, vybaveným speciální technikou a dostatečně finančně zajištěným.

Sněhový křižník vznikl pod dojmem záchrany života

Tento úvod byl nutný proto, abychom mohli začít vyprávění o prvním vážně míněném a realizovaném polárnickém speciálu, jehož cesta byla sledovaná opravdu celým tehdejším světem (v předválečném Československu o ní napsal třeba časopis Ozvěny domova a světa). Na myšlenku obřího vozidla přišel polární badatel Thomas Charles Poulter během Byrdovy druhé antarktické expedice. V ní zastával post druhého důstojníka, jeho vědeckým oborem bylo bádání v oblasti seismologie, geologie a geofyziky. Zkušený Poulter tehdy zachránil admirálu Byrdovi život, když jej za nesmírně obtížných podmínek přepravil nehostinnou pustinou. A právě obtíže této cesty vedly k tomu, že ihned po návratu začal rozkreslovat první skici budoucího speciálu. 

Tatra V 855: Padá sníh, pojedeme na (aero)saních!
Přečtěte si také:

Tatra V 855: Padá sníh, pojedeme na (aero)saních!

To už obsadil pozici vědeckého ředitele výzkumné nadace chicagského Armour Institute of Technology. Projekt vozidla byl schválený, dostal kód I-69, neoficiální jméno „Snow Cruiser“, limit dvou let (1937 až 1939) na přípravu dokumentace, a finanční injekci 150 000 dolarů. Stavba, provoz a předpokládaný návrat z Antarktidy měly proběhnout pod dohledem US Antarctic Service, která se podílela i na úhradě nákladů na jeho cestu zemí věčného ledu. Projekt byl schválený koncem dubna 1939, v srpnu téhož roku začala náročná stavba. Ta probíhala v obřích Pullmanových strojírnách v Chicagu. Jakkoliv byla lhůta na vypracování plánů dostatečná, vlastní stavba, jízdní a provozní testy, a dodání do bostonského přístavu musely proběhnout v šibeniční lhůtě necelých třech měsíců!

Nedostatečná síla obřího speciálu!

Samotný Snow Cruiser byl skutečným obrem. Odlehčená konstrukce v dnešním slova smyslu byla tehdy těžko proveditelná, a tak pohotovostní hmotnost nízkého a téměř oválného vozidla s nesmyslně velkým předním a zadním převisem činila 35 tun. Aerodynamická „karosérie“ spočívala na čtyřech ohromných kolech s pneumatikami, vhodnými do bažinatého terénu. Byly však stejně dobře použitelné i na sněhu? To zatím nikdo netušil. Extrémně krátký časový harmonogram nedával šanci ke zkouškám v hlubokém sněhu…

Outstream Placeholder

Z přední části sedmnáctimetrového trupu vyčníval velitelský můstek – tedy kabina řidiče, navigátora/radisty, velitele, pilota a mechanika. Uvnitř trupu se nacházely nejen motory, ale i skladiště, nádrže a nevelké obytné prostory. Horní část trupu měla úchyty pro lehký pětimístný dvouplošník Beechcraft, vybavený přistávacími lyžemi. Vozidlo si s sebou vezlo další dvě kola s pneumatikami, která se mohla připevnit ke stávajícím. Účelem této dvojmontáže bylo zabránit propadu těžkého stroje do sněhu a zvýšit trakci. 

Nejkurióznější a zároveň bezmála tragickou stránkou celého projektu se stal pohon. Namísto klasického jednoduchého motoru byl zvolený dieselelektrický pohon, známý ze železničních trakčních vozidel a později i těžkých stavebních strojů. Zdrojem síly komplikovaného pohonu se stala dvojice řadových šestiválců Cummins H6, každý o objemu 11 litrů a výkonu 150 koní. Montoval se například do těžkých řad nákladních vozidel International a proslul i za války ve vojenské technice. Ale nikoho tehdy nenapadla reálná úvaha, jak bude dvojice běžných agregátů pohánět čtveřici elektromotorů a hýbat 35 tunami hmotnosti v neprobádaném terénu, který v sobě skrýval ledové pasti, naváté a záludné násypy a podobné překážky. 

Každý elektromotor GE dával pouhých 75 koní, výkon na pohyb a s tím spojené aktivity vozidla tedy činil jen 300 koní! Vozidlo vezlo zásobu paliva na 8 000 kilometrů (bezmála 10 000 litrů) plus 3 500 litrů leteckého benzínu. Uvažovaná maximální rychlost se blížila padesátce, ale vozidlu se nikdy nepodařilo jí dosáhnout – a to ani na silnicích během přepravy do Bostonu. Představa kolosu, který mezitím dostal přezdívky Tučňák, Želva či Brouk, řítícího se po ledové pláni vstříc jižnímu pólu padesátikilometrovou rychlosti, byla prý expertům k smíchu už tehdy…

Varovné příznaky už během první cesty

Kalendář ukazoval 24. říjen 1939 a Snow Cruiser byl hotový. Také prý odzkoušený, čemuž výrobce mohl věnovat jen několik dní. Ovšem i během nich se ukázal osudový nedostatek použitých pneumatik, tedy jen minimální adheze. Cruiser se mohl vydat na tisícimílovou pouť z Chicaga do vojenského přístavu v Bostonu, kde na něj čekala loď USS North Star. Už na běžných silnicích se ale ukázalo, o jak nevhodné a k poruchám náchylné vozidlo se jedná. Při cestě Indianou bok stroje odřel a lehce poškodil truck s návěsem, několik desítek mil poté se porouchalo palivové čerpadlo. Poslední šance k poznání nevyzrálé koncepce přišla ve chvíli, kdy Cruiser srazil roh mostu a spadl do potoku. Tam se navzdory „bahenním“ pneumatikám zabořil tak, že jeho vyproštění trvalo tři dny! 

Konečně Boston! Ale na předměstí už čekalo více než sto tisíc lidí na průjezd sněhového křižníku, takže tohle americké velkoměsto zažilo do té doby největší dopravní zácpu. To už ale musely být vyměněné dva elektromotory, které se během cesty a vyprošťování zadřely. K lodi se Cruiser dostal 12. listopadu 1939, tři dny nato zvedla North Star kotvy směrem k antarktické Velrybí zátoce. Tam se loď s Cruiserem dostala za dva měsíce plavby, sněžný obr byl pod velením doktora Thomase Poultera. 

Vyložení vozidla se ukázalo být větším problémem, než se předpokládalo, protože těžké dřevěné trámy, z nichž se stavěla rampy na ledový šelf, omývaný vodami Rossova moře, se lámaly jako dřívka. Cruiser málem stihla fatální nehoda už při sjíždění z rampy, která nakonec musela být mnohem strmější, než výprava plánovala. Zadní kola se začala propadat a jen díky tomu, že Poulter u řízení vymáčkl ze strojů výkon do poslední špetky, podařilo se Cruiseru dostat na pevninu.

První a zakrátko i poslední antarktické putování

Základna badatelů se jmenovala Little America III. Už při první jízdě za výzkumnými projekty (sluneční záření, tloušťka ledové vrstvy, magnetismus) se ukázalo, že i ta nejmenší sněhová vlnka znamená zaboření a znehybnění sněžného gigantu. Nepomohla ani montáž zdvojených kol na přední nápravu. Dotyková plocha se sice zvětšila, ale zároveň vzrostla i celková hmotnost, takže se vozidlo bořilo dál. Osádka až na ledu přišla na to, že jistější bude jízda na zpětný chod, protože kola s dvojmontáží budou vzadu – čili tak, jak se osvědčilo u běžných terénních nákladních vozidel té doby. Jenže i tady se ukázaly nedostatky. 

Na antarktických ledových pláních se Snow Cruiser měl cítit jako doma. Ale nic mu nebylo vzdálenější…Zdroj: United States Antarctic Service (Public Domain)

Elektromotory se přehřívaly, protože musely maximum výkonu předávat stále prokluzujícím kolům, spalovací agregáty potřebovaly neustálou údržbu, jelikož byly neodzkoušené. Nakonec cesta, kterou Snow Cruiser urazil, měřila 92 mil, čili necelých 150 km, to vše na zpátečku. Byl konec, Snow Cruiser se stal nehybnou obytnou základnou. Už se vlastní sílou nikdy nepohnul a bylo jasné, že se jen těžko dostane zpět do Států. Tam odletěl Thomas Poulter počátkem roku 1940, zbytek výzkumníků pokračoval ve stanoveném programu až do vstupu USA do války. Svět měl náhle jiné starosti než se zajímat o osud čtyř zarostlých mužů v dusné atmosféře kolem zmrtvělého stroje. 

V květnu 1941 se zbytek expedice vrátil domů. Snow Cruiser zůstal tak, jak se zastavil. Kolem něj se válely pozůstatky po výpravě, zbytky dřevěných beden, nepotřebné součástky a kanystry. Uvnitř vozidla zbyly stohy novin a časopisů, balíčky cigaret a potraviny. Před odletem jeho polohu včetně zbytků základny Little America III. označili členové týmu pomocí bambusových tyčí s barevnými bójkami. 

Rok po válce připlula na místo posledního odpočinku Cruiseru další expedice. Vozidlo našla neporušené, jen zaváté sněhem a podle jejich zpráv by prý bývalo stačilo dohustit pneumatiky a zprovoznit pohonné jednotky. Ale právě to prý by byl ten největší problém, takže Cruiser zůstal v Antarktidě. V 50. letech, v době eskalace studené války a počátku zbrojního šílenství obou světových velmocí, se začaly americké úřady obávat, aby se zamrzlý Snow Cruiser nestal kořistí tehdejšího Sovětského svazu, jenž měl kromě severní polokoule své zájmy i na jižní. Uplynulo několik let, než se zformovala další expedice, která měla prověřit přítomnost či nepřítomnost vozidla. V roce 1958 se mrtvý Cruiser podařilo najít a ze strachu před ukořistěním nepřítelem jej americké námořnictvo pomocí buldozerů zahrnulo sněhem do výšky několika metrů. To bylo také patrně naposledy, kdy lidské oko prokazatelně zahlédlo legendární stroj.

Poslední zoufalé pokusy o zvětšení průchodnosti polárního speciálu představovaly řetězy a jízda na zpátečko s dvojmontážíZdroj: United States Antarctic Service (Public Domain)

Místo konce jen samé hypotézy…

Je známo, že ledový šelf se základnou Little America III. prošel velkými proměnami. Roztrhl se na několik částí, některé se úplně odtrhly a zůstaly osamocené v moři, kde se převracely či dále trhaly. V roce 1963 spatřili námořníci z lodi USS Edisto čerstvě odlomenou část ledovce o tloušťce mnoha metrů, odkud v místě lomu vystupovaly kusy dřevěných baráků a další pozůstatky. Podle fotografií byly zbytky identifikované jako pozůstatky Little America III. Ovšem co se stalo s Cruiserem, nález nevysvětluje. 

Přešlo mnoho desítek let, ale dalším generacím nadšenců nedává zasypaný Snow Cruiser spát. Velkou pozornost v akademickém světě vyvolala práce Teda Scambose a Clarence Novaka, zveřejněná v roce 2005. Oba vědci v ní rozvíjejí hypotézu, podloženou počítačovou simulací pohybu mořských proudů, driftů ledových ker a změn v konfiguraci pobřeží. Podle všeho se největší úlomek s teoretickým výskytem Snow Cruiseru nacházel cca 18 km od pobřeží šelfového ledovce. Patrně se odlomil a „osamostatnil“ dříve, než jeho menší část spatřila posádka lodi Edisto. Pak se kus ledovce s Cruiserem vydal pravděpodobně na západ a začal se trhat a rozpouštět. 

Odlomená kra, kterou zahlédli v roce 1958 námořníci z lodi USS Edisto. Jsou vidět trosky polární stanice Little America III. Je tam někde ještě Snow Cruiser? Nevíme…
Zdroj: US Navy

Na toto téma existuje téměř nekonečné množství teorií, ale žádná s možností reálného ověření. Je možné, že Snow Cruiser stále vězí v ledové tloušťce některého úlomku, ale většina vědců se přiklání k tomu, že stroj se po rozmělnění a částečném rozpuštění kry potopil na mořské dno. Ať už je to tak či tak, možná dnes patří mezi nejznámější pojízdné artefakty, trávící na dně světových moří svá poslední léta: Chrysler Norseman na Andrea Dorii, Renault v lodním bunkeru Titaniku nebo tisíce kusů vojenské techniky na trasách spojeneckých konvojů do Evropy a Tichomoří. Popřejme mu vzpomínku a lehké spočinutí… 

Zdroj: archiv autora, AP, Antarctic Sun, Thule, Pullman, 2fifty9, US Navy

  • Žá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 »