Jsme svědky epidemie císařských řezů

31. 8. 2012

Sdílet

ROZHOVOR – Už čtvrtina porodů v ČR je císařským řezem. „Ženám, které hájí porod jako přirozenou věc, rozhodně fandím,“ říká profesor ALEŠ ROZTOČIL. Ale kdyby měl rodit, chce císaře.

Císařským řezem v České republice rodí již čtvrtina žen, ale nejen u nás. „Je to celosvětový trend,“ říká prof. Aleš Roztočil, primář gynekologicko-porodnického oddělení nemocnice v Jihlavě.


Autor: archív Aleše Roztočila

„Císaře ženám nerozmlouváme,“ říká Aleš Roztočil

Jsou situace, kdy to jinak nejde, někdy se k nim přistupuje kvůli bolesti nebo obavám z bolesti, stále stoupajícímu věku matek, jindy chce rodička mít pochvu jako žena, která ještě nerodila. Kvůli sobě nebo kvůli mužům. Císařské řezy jsou žádané, a často i zbytečné.

Jsou dnes porody císařským řezem módní záležitostí?

Já bych neřekl, že je to móda, ale indikace k císařskému řezu a frekvence jeho používání se v posledních deseti letech velice zvýraznila. Před deseti lety byla v ČR frekvence těchto porodů kolem 10 – 12 %, dnes je to asi 25 %. Není to ale záležitost pouze České republiky, nýbrž celého rozvinutého světa – jsme svědky jakési epidemie císařských řezů. V USA rodí tímto způsobem 30 % žen, v Itálii dokonce až 60 %. To už se blíží Brazílii, která má až 80 % v některých oblastech. Ovšem Brazílie má 250 milionů obyvatel, Indiánky v Amazonii jistě rodí normálně. A chybí celostátní statistiky. Ale velké porodnice v Sao Paulo mají těch 80 %.

Jaké jsou podle vás hlavní důvody té „epidemie“?

Těch důvodu je samozřejmě celá řada, jsou určité patologické polohy – například při poloze koncem pánevním volí porodník dnes už výhradně císařský řez. Máme také velice senzitivní přístroje k monitoringu srdeční aktivity plodu, které mají zároveň ale nízkou specificitu. Jinými slovy ty šumy, ty zdánlivé patologie, které přístroje zachytí, způsobí často falešný poplach, takže kvůli tomu se také dělají často zbytečné císařské řezy. Dále nám stárne populace, takže ženy teď rodí poprvé kolem třicítky a co si budeme povídat, kolem těch 22 let, kdy rodily ženy před revolucí, je organismus připravený na těhotenství lépe než ve 30 nebo 32 letech. Existuje také určité procento žen, které mají určité psychologické indikace, například nadměrný strach z bolestivosti nebo o osud dítěte, ohledně časných komplikací porodu jako krvácení a bolest nebo ohledně pozdních komplikací jako je třeba neudržení moči, stolice atd. Ty potom raději hledají možnost, jak těhotenství ukončit císařským řezem a nevystavovat se rizikům spontánního porodu.

Je obava z přirozeného porodu zbytečná, nebo odůvodněná?

Těžko říct, jestli je zbytečná. Ve většině případů asi ano, pokud se týká bolesti a osudu dítěte. Ale teď mi ukažte z toho množství žen, které císařský řez žádají, které jsou ty, u kterých je to zbytečné, a které jsou ty, u nichž nějaký důvod bude. My nevíme, jestli žena bude mít nadměrné bolesti při porodu nebo ne, když ji vidíme v ambulanci.

Ta bolestivost se ale dá řešit v průběhu porodu analgetiky a epidurální anestezií.

Ano, to se samozřejmě dá, bolest dokážeme do určité míry zvládnout.

Rozhovor: Jakákoliv bolest se dá zmírnit

Myslíte, že jsou dnes lidé vůči bolesti méně odolní než dříve?

V současné době spíš lidi nechtějí vnímat bolest, protože si mohou vybrat. Dneska když jdete k zubaři, tak vám už v podstatě žádné výkony bez umrtvení nedělají. Když vás trochu bolí hlava, vezmete si ibuprofen. Lidé v naší civilizaci nechtějí vnímat bolest a porod je obvykle spojován s bolestí.

A musí být porod opravdu vždycky tak bolestivý?

Ne, nemusí. Ženy, které se k vaginálnímu porodu staví velmi pozitivně a jsou připraveny chodit do různých kurzů, které vědí, co je čeká, mají u sebe blízkou osobu, nebo když třeba rodí do vody, protože voda působí velice analgeticky, když si můžou zvolit polohu, jakou chtějí, mají kolem sebe v průběhu porodu lidi, ke kterým mají důvěru, tak takové ženy mívají méně úzkosti. Úzkost vyvolává napětí a bolest. Pozitivně naladěná žena obvykle vnímá bolest méně než žena, která má strach.

Existuje „orgastický porod“, jak tvrdí některé propagátorky New Age?

Dělám porodnictví 34 roků, a že bych zažil orgasmus u ženy na porodním sále, to tedy ne. Ale taky jsem o tom četl. Nevím, ale vždycky říkám všem svým kolegům, že žena je nádoba tajemná a věřím tomu, že i porod může být orgastický. Však ono se taky donedávna nevědělo, že některé ženy při kojení prožívají orgasmus. Navíc ony ty protipóly se někdy slévají – orgasmus je maximální prožití slasti, a bolest z porodu může být na opačném pólu, takže se někde protnou.

Jsou mezi ženami ve vnímání bolesti z porodu velké individuální rozdíly? Mně například jedna kamarádka popisovala normální fyziologický porod bez komplikací jako naprosté peklo, kdežto druhá jako takové silnější menstruační bolesti.

Přesně tak, ve vnímání je obrovský rozdíl. Existuje medicínská škála bolesti se stupnicí od nuly do desítky. Při nule necítíte nic, při desítce se chce člověku skákat z okna. A ten průměrný porod je někde u osmičky. Ale přesto je to individuální, některé ženy rodí s úsměvem na rtech, těší se na miminko. Pro některé je to naopak horší než ledvinová kolika.

Přečtěte si: Že by porod bolel? Nepamatuju si!

U porodu císařským řezem je pak ale zase dlouhá rekonvalescence.

Jistě, císařský řez je velká břišní operace. Vždyť si vezměte, že miminko váží 3,5 kg a je uprostřed velkého a velice prokrveného orgánu, jakým je děloha. A jako porodník musíte udělat takovou dírku, kterou miminko vyndáte. A pak ji zase musíte zašít. Ale metody císařského řezu prodělaly tak obrovskou revoluci, že teď operujeme víceméně natupo, takže  tkáně moc nezhmoždíme. My si rozřízneme jen kůži a pak operujeme jak Filipínci, že ten malý otvor roztahujeme prsty (přečtěte si: Lékaři, léčitelé a šamani).

Za druhé – ženy dnes dostanou dostatek tekutin, léky na stažení dělohy, používají se materiály, které se v těle rozpustí. My už dokážeme břicho zašít tak, že se vůbec nevyndávají ani stehy. Pochopitelně tam ale pořád zůstává jizva na děloze a ve stěně břišní, takže rekonvalescence je určitě delší než u vaginálního porodu. Ale i u vaginálního porodu může být dlouhá, pokud musí lékař použít kleště nebo pokud dojde k velkému poranění – z toho poranění vznikne krevní sraženina, kterou musíme vyoperovat. I po císařském řezu ale dnes chodí ženy 3. nebo 4. den domů. My v Jihlavě nemáme už rozdíl mezi ženami, které rodí vaginálně nebo císařským řezem. Chodí domů v podstatě stejně.

Když žena porodí císařským řezem jednou, musí tak rodit i podruhé?

Ne, nemusí, pokud se neopakují indikace. My sledujeme jizvu ultrazvukem. Pokud je ale moc úzká, užší než dva milimetry, tak se znovu volí císařský řez. Většinou tak 60 % žen v ČR po císařském řezu rodí druhé dítě zase císařským řezem. Ale není to pravidlo, mnoho žen porodí po císařském řezu spodem.

Když ženy rodí v některých zemích tak často císařským řezem, není to taky z jiných než zdravotních důvodů?

To víte, že je. Vezměte si, že když ženě projde 3,5kilový objekt, který má 51cm, pochvou, tak to nechá na té pochvě u většiny žen trvalé následky. Urologové říkají, že dochází k odtržení svaloviny pánevní, do budoucna to vede k sestupu rodidel, močové inkontinenci atd. Pochva se roztáhne… takže ženy například v Brazílii to nedělají kvůli bolesti, ale kvůli tomu, aby měly stále pochvu jako žena, která nerodila.

Takže kvůli mužům?

Možná i kvůli sobě. Ony ty Brazilky neřeší ani tu inkontinenci. Ale na to začínají myslet ženy i u nás, obávají se právě inkontinence v budoucnu, a tak volí císařský řez. Není jich moc, ale jsou.

Je ale obava z možné inkontinence indikací pro císařský řez? Protože ne všude vám ho udělají na požádání. V některých porodnicích musíte před komisi.

Pravidla pro provedení císařského řezu u nás v podstatě nejsou, takže to není císařský řez na přání, ale my tomu říkáme císařský řez z psychologické indikace. Pokud má žena úzkosti, říká se tomu „mateřská úzkost“, lékař většinou císařský řez neodmítne. Komisi mají v pražském Ústavu pro péči o matku a dítě v Podolí. Tam jim lékař vysvětlí asi dvakrát rizika císařského řezu, a když to ta žena vydrží a absolvuje ještě pohovor s psychologem, tak jí nakonec ten císařský řez taky udělají.

Čtěte téma: Císařské řezy na přání

Mé kolegyni ho ale nepovolili s tím, že má dost širokou pánev na to, aby zvládla normální porod. Nakonec ale byla po porodu tak potrhaná a stejně ji museli operovat, že to vyšlo skoro nastejno.

Právě proto my ty ženy nepřemlouváme. Císařský řez pochopitelně může mít určité komplikace, v následné graviditě může dojít k poruchám placentace – může být nízko, může hluboko prorůstat do svaloviny, žena může být opravdu ohrožena na životě prasknutím dělohy. Jenže u nás ženy rodí jednou, dvakrát. Pro ženu, která má rodit třeba pětkrát, je špatné ukončit první těhotenství císařským řezem. Ale jeden dva porody císařským řezem, to ženy většinou zvládají celkem dobře.

Když má ale žena bolesti po císařském řezu a chce kojit, tak ani nemůže brát analgetika, ne?

Může brát paralen nebo ibuprofen, tyto léky nejsou pro novorozence toxické.

Jak starý je vlastně císařský řez?

To nikdo neví, ale říká se, že ho znali už Babyloňané. V Chammurapiho zákoníku je zmíněn jakýsi fond pro řezance, tedy děti narozené císařským řezem ženám, které zemřely, čili sirotky. Takže pravděpodobně když porod nešel, tak se udělal císařský řez už ve starověku. Dělaly se císařské řezy i v antické době, ale strašně málo, a ty ženy většinou zemřely. První doložený řez udělal v Evropě koncem 16. století švýcarský zvěrokleštič jménem Jacob Nufer na svojí ženě. Ta to přežila. Ale pak ty ženské umíraly na vykrvácení nebo na sepsi, úmrtnost byla 95%. Navíc tehdy se císařský řez nedělal zdravé ženě jako teď, ale ženě, která rodila třeba tři dny a už byla na pokraji smrti. Dítě bylo většinou mrtvé a matka taky nepřežila. Na druhé straně se občas našly výjimky. Jakási německá selka měla prý těch císařských řezů deset! Ona si je pak už dělala sama.

To zní dost nechutně!

Já dělal jednou ženě asi osmý císařský řez – to jde dobře, operujete v jizvě, kterou tvoří jen vazivo. To už vůbec nekrvácí. Jen jizvu rozříznete, vyndáte dítě a zase zašijete. Takže já se vůbec nedivím, že už si to pak ta selka mohla dělat sama. A ta paní, které jsem dělal ten osmý řez, stále nechce sterilizaci, takže jistě přijde zase znovu. Už ji tu každý zná.

Čtěte téma: Sterilizace coby ideální antikoncepce?

Kdybyste byl žena a měl rodit, rodil byste císařským řezem, nebo ne?

Je to naprosté teoretizování, protože nikdy se muž porodník nemůže vžít do ženy, která přemýšlí o tom, že bude rodit. Mně přijde skvělé rodit do vody, do porodní vany. My máme v Jihlavě vanu, ale ony ženské do ní moc nechtějí rodit. Ony tam sedí během první doby porodní, ale když přijde druhá doba porodní, tak z té vany vylezou a jdou rodit normálně na porodní křeslo. Tak ten porod do vody, ten se mi moc líbí. A jinak jak jsme my chlapi takoví sralbotkové a máme strach z bolesti, tak kdybych nemohl do vody, tak bych asi taky chtěl rodit tím císařským řezem.

Nemají děti po císařském řezu potíže s tekutinou v plicích? Při normálním porodu se tekutina díky hormonům a tlaku vyloučí.

Tekutina se z plic odsaje, to není až takový problém. Ale pediatři říkají, že děti po císařském řezu mají víc alergií a slabší imunitu, protože neprojdou těmi porodními cestami, kde je poměrně velké bakteriální osídlení.

A nemůžete ty děti nastříkat něčím, co by mělo podobné složení jako mikroflóra v pochvě? Já se o tom tuhle bavila se známým, který je dětský pneumolog.

To jsem taky kolegům navrhoval, že bychom ty děti mohli potírat matčiným poševním sekretem. Všichni se mi smáli. Ale podle mě to není špatný nápad.

Potrhané porodní cesty i problém s inkontinencí po vaginálním porodu lze ale také vyřešit chirurgicky, ne?

To víte, že ano. My operujeme hodně žen pro poruchy pánevní statiky a pro inkontinenci moči. Samozřejmě to jde spravit, ale nikdy už to nespravíte tak, jak to bylo před porodem.

U nás jsou teď dva extrémy: ženy, které chtějí rodit zásadně císařským řezem, a pak na opačném pólu alternativní matky, které se snaží dosáhnout ideálu „přirozeného porodu“, jaký podle jejich představ existuje například v Africe. Podle těchto představ žena pracuje až do porodu na poli, porodí a za chvíli už zase okopává zeleninu.

To si, doufám, už nikdo nemyslí. Afrika je nešťastný kontinent se spoustou bolesti a neštěstí, především co se týče žen. Je tam obrovská mateřská i novorozenecká úmrtnost, ženy tam chodí s píštělí. Nedělejme si iluze. Myslím ale, že ty ženy, které chtějí aktivní porod, se nepřipodobňují k nějakým Afričankám. Ony prostě jen chtějí, aby byl porod braný jako přirozená věc, kterou ony samy zvládnou. Já jim rozhodně fandím.

Jste příznivcem domácích porodů?

To tedy rozhodně ne. Je to příliš velké riziko. My tady máme v Jihlavě rodinné pokoje, sál vypadá jako obývák, ženy tu rodí se svým manželem a porodní bábou, jak chtějí. Ale jsou monitorované, a když nastanou nějaké komplikace, tak můžeme hned vedle za pár minut udělat císařský řez. Máme tam léky pro případ, že by začala krvácet, když se dítě začne dusit, můžeme hned zasáhnout. Na domácí porody v současné době nemáme v ČR podmínky.

Co si myslíte o návrhu, aby péči o těhotné převzaly místo lékařů porodní asistentky?

Já se taky narodil doma, rodila mě porodní asistentka, to bylo v 50. letech. Ono k tomu jednou dojde, dejme tomu v horizontu deseti let, ale zatím na to porodní asistentky připraveny nejsou. Na to je potřeba vzdělání, zařízené ambulance, spolupráce s lékaři. Je to taková hudba budoucnosti.

Čtěte také: Strašák jménem porod. Zbytečně?

Autor článku

Nezávislá publicistka. Věnuje se zejména popularizaci vědy a zkoumání rozličných společenských jevů. Jejími vzory jsou Nikola Tesla, HOLLY 6000 a Dr. Zoidberg.

'; 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'; } }
Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).
'; 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 »