„Modrý blesk“ a jeho dějiny: Sedmdesátiny Alpine znamenají oslavy automobilového sportu nejen v Československu

přidejte názor

Bylo to úžasné stát u trati či poposedávat v křesle u namodralého přísvitu televizní obrazovky, a sledovat bleskurychlé průjezdy typicky modré „placky“ zatáčkami. Nízká Alpine A110 „zatápěla“ mladoboleslavským škodovkám na všech frontách. Dodnes u nás platí za legendu, stejně jako její slavný řidič…

Modré A110 u nás působily jako blesk z čistého nebe a málokdo tehdy věděl, že mají za sebou už pozoruhodné historické zákruty. Jelikož letos v červnu uplyne sedmdesát let od podpisu dokumentu, stvrzujícího založení světově proslulé továrny, dovolujeme si vám přinést malé ohlédnutí za tím, čím se proslavila společnost Société des automobiles Alpine.

Alpine a její zakladatel

S podnikem je nerozlučně spjaté především jedno jméno: Jean Rédélé, narozený v roce 1922 v severofrancouzském Dieppe, patří a navždy bude patřit k rodinnému stříbru francouzské školy sportovních a závodních modelů.

Video: Dobová reklama na Renault Alpine GTA

Zdroj: Youtube.com

Svou kariéru začal v těsně poválečném období jako smluvní prodejce Renaultu a velké naděje vkládal do malého 4CV (u nás láskyplně zvaného „želvička“). Tomu prorokoval zářnou budoucnost na rozdíl od modelu vyšší střední třídy, který se už koncem čtyřicátých let finalizoval s přípravou do série (budoucí Frégate).

V rámci propagace malého 4CV (a také proto, že měl poněkud neklidnou krev) neváhal už počátkem padesátých let usednout za volant 4CV v tehdy ještě prakticky sériovém provedení a vydat se dobýt legendární vavříny v Rallye Monte Carlo. 

Renault 4CV sice obsadil některá přední umístění, ale Rédélé jej v touze stále vítězit posílal i do oblastních a francouzských soutěží v Alpách. Tady se lehký diblík s motorem vzadu cítil jako doma a připravil Rédélému i nějaké to umístění na „bedně“. Závodník začal po prvních úspěších psát na karosérii 4CV jméno „Alpine“ na počest zvládnutí velehor a prý také jako symbol štěstí. Tehdy už uvažoval o vlastní strojírenské firmě…

Jean Rédélé byl charismatický Francouz z Normandie, který rád závodil, rád prodával auta a rád je vyvíjel

Jean Rédélé byl charismatický Francouz z Normandie, který rád závodil, rád prodával auta a rád je vyvíjel

Autor: Se svolením Svatopluka Jíchy, archiv autora

Nová firma dostala název podle hor

Zásadní impuls přišel v roce 1955, Rédélé neváhá, a s vizí nízkého sporťáčku s technikou populárních malých renaultů zakládá vlastní malý strojírenský podnik, pojmenovaný – jak jinak než Alpine!

Na základě kupé „Le Marquis“, které bylo Renaultem sice vystavené v Americe, ale pouze jako karosářská studie, a výrobce neplánoval jej nabídnout v sériovém provedení, zhotovil Rédélé zajímavý a karosářsky velmi pokrokový model kupé s karosérií ze sklolaminátu. Tento materiál přicházel tehdy zrovna do módy (viz například Chevrolet Corvette nebo Kaiser Darrin) a znamenal vizi budoucnosti.

Typová číslovka 106 neznamená zkratku objemu, ale neúplné číslo homologačního protokolu Renaultu 4CV, pod nímž dostalo vozidlo souhlas francouzských úřadů k provozu na tamních komunikacích. Nejen tohle ilustruje těsnou kooperaci Rédélého (Alpine) se státní automobilkou Renault, ale i použité pohonné jednotky v modelu 106. Těmi byl malý čtyřválec 750 cm3, používaný ve 4CV, ovšem Rédélém nabízený v několika výkonových stupních a také v ostrém soutěžním provedení. Nakonec – když se podíváme na fotografie raných 106, jasně rozpoznáme některé součásti, dodávané i do sériových 4CV, například ráfky…

Trojité výročí Sodomka/Karosa: Vzpomeňte s námi na geniálního karosáře a tvůrce nezapomenutelných kreací
Přečtěte si také:

Trojité výročí Sodomka/Karosa: Vzpomeňte s námi na geniálního karosáře a tvůrce nezapomenutelných kreací

Alpine 106 (někdy zvaná i A106) debutovala na pařížském autosalónu 1957, ale to už měla za sebou řadu vítězství i trofejí za další slušná umístění.

Po malé A106 následoval větší model

Jedinou slabinou se v pozdějších letech výroby stal její maličký motor, který se sice hodil k pohonu skromného rodinného vozítka, ale v době, kdy evropští konkurenti Alpine začínali osazovat své speciály silnými agregáty, znamenal určitý handicap. Nouzovým řešením se stala montáž upravené devítistovky z většího Renaultu Dauphine, ale ostré provedení prý nemělo potřebnou odolnost, navíc už Rédélé připravoval k montáži větší model.

Ten se veřejnosti prezentoval sice už v roce 1957, do výroby se ale dostal až o rok později, a to ještě v malých počtech. Do léta roku 1960 byl totiž hnacím motorem Rédélého manufaktury jen A106.

Jean Rédélé prodával renaulty, ale neklidná krev jej hnala do závodů. S „želvičkou“ 4CV se účastnil i Rallye Monte Carlo, samozřejmě nikoliv ve světlém saku a s kravatou

Jean Rédélé prodával renaulty, ale neklidná krev jej hnala do závodů. S „želvičkou“ 4CV se účastnil i Rallye Monte Carlo, samozřejmě nikoliv ve světlém saku a s kravatou

Autor: Renault

Alpine 108 sázela na upravenou mechaniku a koncepci většího Renaultu Dauphine, který ve Francii pomalu přebíral žezlo nejpopulárnějšího renaultu (než se objevil „kombíček“ R4). Po ukončení výroby A 106 se mohla manufaktura rozběhnout naplno, symbolem rozvoje firmy se stala dvojice modelů – kupé a kabriolet, oba s náběhem v polovině roku 1960. Na jejich liniích už můžeme vysledovat jasné tvary pozdějšího A110, ten už tehdy existoval v ideových návrzích. A108 se dodával pět let, a to nejen z francouzské strojírny Alpine v Dieppe (Normandie), ale i brazilskou pobočkou Willys.

Nejznámější A110 vypadala v prvních letech jinak

Opravdovou legendu představuje samozřejmě A110, známá především výkonem, který ji řadí na místo prvního francouzského supersportu. Ale začátky tohoto kupé byly mnohem skromnější. A110 byla ve vývoji už od konce 50. let a vycházela z A108.

Model debutoval v roce 1963. Jeho jízdní zkoušky probíhaly od roku 1961 ještě s agregáty Dauphine, ovšem Rédélé, úzce spolupracující s Renaultem, dávno věděl, že se chystá nejnovější Renault 8, opět s koncepcí „vše vzadu“ a mající jedinečný agregát se schopností technicky snést naladění na vysoký výkon a případné převrtání.

Rychlé A110 se nevyráběly jen ve Francii, ale také ve Španělsku aktivitou koncernu FASA

Rychlé A110 se nevyráběly jen ve Francii, ale také ve Španělsku aktivitou koncernu FASA

Autor: Se svolením Svatopluka Jíchy, archiv autora

A110 měla dvě generace, odlišené i tvarově. Zatímco první řada byla více podobná A108 (a částečně i A106), ta druhá zpodobňuje nekompromisní speciál, schopný s patřičně vyladěným motorem dosáhnout rychlostí hodně vysoko přes dvousetkilometrovou hranici…

Třebaže základní a první provedení A110 mělo vzadu poměrně krotký čtyřválec, movitý zákazník si mohl objednat hliníkový agregát Gordini 1300 cm3 s výkonem téměř stovky koní. Pro kupátko s hmotností 700 kg to znamenalo katapult dopředu!

Ve své době s nejsilnějším agregátem z R16 TS!

Dalším výkonovým stupněm Alpine byla montáž pohonné jednotky, dodávané do Renaultu 16 TS, v té době nejvýkonnějšího vozidla značky Renault. Šestnáctistovka, kterou Renault používal ještě dvě desítky let po premiéře, umožnila nárůst výkonu (díky specifickému příslušenství) až na 125 koní, rychlost kupé (byly ale i kabriolety) poprvé překročila hranici 200 km/h. 

Pneumatiky Baťa: Stopy českého průmyslníka se otiskly do všech silnic předválečného Československa
Přečtěte si také:

Pneumatiky Baťa: Stopy českého průmyslníka se otiskly do všech silnic předválečného Československa

Podle typového listu se zastavila na hodnotě 210 km/h, ale například švýcarské i francouzské testy se netajily nadšením, protože měřená A110 se přiblížila k maximu 220 km/h. A to byla hodnota, jakou tehdy objemově srovnatelná Alfa Romeo nedosahovala. Tady je ovšem nutné dodat, že Alpine nikdy nepatřila k velkosériovým modelům jako AR, takže toto francouzské tvrzení považujme za vlastenecký počin továrny ze země galského kohouta…

Po patnácti úspěšných letech přechod pod Renault

V roce 1971 se Rédélé dostává do finančních potíží. Nejjednodušším řešením se stal přechod pod křídla mateřské továrny Renault, což se i stalo.
Třebaže hvězda A110 zazářila nejsilněji na sklonku let šedesátých a v první polovině následující dekády, zhotovoval Renault tato dnes již klasická vozidla až do roku 1977, kdy se už projevila jejich morální i karosářská zastaralost. Ani konkurence nespala, a to zejména Lancia, Alfa Romeo a BMW. Časy plochých a agresivních A110 byly tytam. 

Poslední francouzská vyjela 10. července 1977. Na závěr snad jen dodejme, že se tyhle silniční „štiky“ v malých počtech vyráběly i v Mexiku (DINA), Španělsku (FASA) či Bulharsku (Bulgar-Alpine). Zrovna jedna bulharská „alpinka“ má svůj domov i u nás a rozhodně nezahálí!

V sedmdesátých letech se vyráběly obě modelové řady současně

V sedmdesátých letech se vyráběly obě modelové řady současně

Autor: Se svolením Svatopluka Jíchy, archiv autora

Přichází následník s trochu jiným určením…

Už od poloviny 60. let vyvíjela strojírna Alpine modernější sportovní vůz, vhodnější i pro běžné uživatele, protože A110 byla všechno jiné než pohodlný cestovní model. Výsledek dlouholeté práce se představil na ženevském autosalónu 1971. Sklidil pozornost, ale od puristů i rozpaky, protože ti očekávali syrový a výhradně závodní model v roli nástupce A110, tedy něco na způsob strohých britských racerů bez jakéhokoliv komfortu. Nováček nesl název Alpine A310. Profiloval se jako pohodlný GT s veškerým komfortem, který bylo možné vtěsnat do nízké a krátké karosérie.

V zádi u první generace pracoval známý čtyřválec 1 600 cm3, později i 1 645 cm3. Testy renomovaných časopisů jej často braly do srovnávaček s Porsche 911 (na nějž A310 tehdy ještě „neměl“), s dvoulitrovými Fordy Capri či s Alfou Romeo GTV. Alpine A310 byl ale poněkud těžší než jeho čistě soutěžní předchůdce, a tak často skončil na druhém místě ve srovnání.

Za volantem Alpine A110: Svezli jsme se autem, které v ČR jen tak nepotkáte
Přečtěte si také:

Za volantem Alpine A110: Svezli jsme se autem, které v ČR jen tak nepotkáte

…a později i s vidlicovým šestiválcem

Ale na patřičných „místech“ se vědělo, že všeho do času. Bomba explodovala v polovině roku 1976, kdy se představil velmi nesmiřitelně vypadající a agresivní A310 V6 s mohutným oplastováním, špičkovým interiérem a zejména koncernovým vidlicovým šestiválcem 2 665 cm3, montovaným také do volva, peugeotu a renaultu. Agregát byl produktem společného vývoje PRV a s lehkou modifikací se objevil i pod kapotou nepříliš šťastného amerického DMC-12, aby s ním (a doplňkem plutoniového pohonu) absolvoval několik časoprostorových skoků v třídílném sci-fi Back to the Future.

Počátek 90. let je u Alpine ve znamení debutu velmi schopného modelu A610, dodávaného do poloviny této dekády.

V roce 1995 mizí jméno Alpine

Na začátku dubna 1995 (zároveň s ukončením výroby A610) Renault definitivně opustil jméno Alpine. Byl to následek mezinárodně-právních sporů o vlastnictví názvu Alpine, který měl chráněný britský Sunbeam (že to nevadilo dříve, je s podivem, i když právě kvůli tomu nesměl Rédélé a ani později Renault prodávat na britském trhu své modely s označením Alpine. V době, kdy Renault název Alpine opustil, už nebohý Sunbeam dávno neexistoval…)

S ohledem na délku článku nemůžeme uvádět desítky prototypů, uvažovaných či pokusných modelů a specifických závodních exemplářů, ale Alpine vždy kráčela ruku v ruce s vidinou zlatých věnců a vítězných pohárů.

Od první poloviny 60. let se Rédélé snažil dobýt vítězství v poháru Formule 1, například s touto Alpine A350. Plán se nezdařil…

Od první poloviny 60. let se Rédélé snažil dobýt vítězství v poháru Formule 1, například s touto Alpine A350. Plán se nezdařil…

Autor: Renault

Vstup do F1 v 60. letech se nekonal

Nepříliš známou skutečností je koketování Rédélého s účastí značky v šampionátech F1. Počátky těchto snah se datují v roce 1963, Rédélé se chtěl spojit s mohutným zázemím Renaultu, ale nenašel pochopení. O pět let později svůj úmysl zopakoval a tentokrát s úspěchem. 

Renault společný projekt nazval A350. Základem byl velmi nadějný třílitr, zkonstruovaný Amédéem Gordinim, a byla to vlastně první spolupráce obou „mágů“. Ostré zkoušky začaly už zjara 1968, ale jejich výsledky ukázaly jistý výkonový deficit proti konkurenci, zejména Lotusu. Renault se zalekl možné prohry a jejího dopadu na prodeje osobních vozů, a celou spolupráci ukončil. Prototyp formulového vozu byl sešrotovaný…

Konstruktér McLarenu F1 rozebral francouzský sporťák Alpine. Chtěl vědět, proč je tak dobrý
Přečtěte si také:

Konstruktér McLarenu F1 rozebral francouzský sporťák Alpine. Chtěl vědět, proč je tak dobrý

Zbývá současnost: v roce 2017 se v Ženevě představil staronový model A110, který designově vychází z tvarů legendární A110, ovšem do její ryzosti, nefalšovanosti a vhodnosti pro opravdové řidiče, fajnšmekry a mistry volantu má galakticky daleko. Alpine A110 bude totiž navždy jen jedna – ta původní…

Jean Rédélé se vedle svých konstrukčních a vývojových aktivit nevzdal prodeje sériových renaultů, dodával i specifické technické díly včetně součástek do leteckého průmyslu. V devadesátých letech se stáhl do ústraní, věnoval se své zálibě v rychlých automobilech a námořních jachtách. Tento svět opustil 10. srpna 2007, o rok později mu město Dieppe nechalo instalovat sochu.

Sedmdesátá léta byla ve znamení úspěchů Vladimíra Hubáčka a jeho modré A110. Na fotografii je i závodníkův podpis

Sedmdesátá léta byla ve znamení úspěchů Vladimíra Hubáčka a jeho modré A110. Na fotografii je i závodníkův podpis

Autor: Se svolením Svatopluka Jíchy, archiv autora

Alpine v Československu mají jediný společný jmenovatel!

A co československé Alpine? Jsou nevypověditelně spojené s mistrem volantu Vladimírem Hubáčkem. Tento jezdec z nejlepších vystřídal volanty škodovek, exotického východoněmeckého Melkusu i amatérských kreací závodních vozidel v 50. letech. 

Jeho jméno je spojené nejen s Alpine A110, ale i s úspěchy v kokpitu ostrého Renaultu 8 Gordini. Úspěchy s modrou A110 se datují do první poloviny sedmdesátých let, kdy zároveň pravidelně získával titul Mistra ČSSR. S Vladimírem Hubáčkem se naše veřejnost rozloučila před čtyřmi roky, jeho Alpine A110 se čas od času blýskne na některé ze specializovaných výstav sportovních a exotických oldtimerů.

Úspěchy excelentní francouzské značky Alpine už zůstanou navěky vryté do paměti fandů vysokých výkonů a automobilového sportu. Žádné novodobě kreace neohrozí legendu triumvirátu A106, A108 a A110. Budiž všem jmenovaným typům navždy čest!

Zdroj: archiv autora, Alpine, Renault, Automobil Revue

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