Mazlíčci mají hřbitov. Mrtvorozené děti spalovnu

16. 12. 2013

Sdílet

Autor: Isifa.cz
ROZHOVOR – Slovo pochovat má v českém jazyce dvojí význam: vzít chlácholivě do náručí a pohřbít. Někdy není rodičům dopřána ani jedna z těchto možností. Jana Hynková to chce změnit.

Dítě se narodí předčasně mrtvé, do náruče ho nikdy nevezmou. Následně je zlikvidováno v nemocniční spalovně odpadu jakožto anatomicko-patologický odpad. „Rodiče dětí zemřelých do 22. týdne těhotenství nedosáhnou vydání tělíčka k pohřbení, nemohou rozhodnout o tom, jak bude s jejich dítětem naloženo,“ popisuje JANA HYNKOVÁobčanského sdružení Tobit, jež založila právě kvůli možnosti potracené a mrtvorozené děti důstojně pohřbít.

Pro představu velikost plodu ve 22. týdnu je cca 25 cm, váží zhruba 500 g a matka zřetelně cítí jeho pohyby. S pozůstatky dětí, které zemřou později, a to až do konce těhotenství, se nakládá stejně, pokud v určené krátké lhůtě neprojeví nikdo zájem o jejich pohřbení. Končí v nemocniční spalovně.

Úřady si problematiku už roky přehazují jak horký brambor. A pokud téma někdo otevře, snese se na něj vlna kritiky. „Já to přisuzuji tomu, že jsme ateistická společnost a že to není téma, které by někoho nějak pálilo,“ domnívá se Jana Hynková.

Ať si zákon říká cokoli, pro matku je rostoucí plod v jejím břiše již dlouho jejím dítětem, i když se ještě nenarodilo. Proč ho nesmí pohřbít a jak jí je?

Pro mě to byl šok. Potratila jsem v 21. týdnu těhotenství. To již máte s dítětem hodně silnou vazbu. Dlouho už víte, že jste těhotná, připravujete se na to. Cítila jsem ho, ozývá se od 17., 18. týdne. Považovala jsem za samozřejmé, že se s ním budeme moci důstojně rozloučit. To se nestalo. Nemocnice odmítla vydat miminko k pohřbení.

Zjistila jsem, že ačkoli u nás mají hřbitovy domácí mazlíčci, tak bohužel svoje dítě k pohřbení nedostanu. Zajímala jsem se o to, jak vlastně skončí. A průšvih pro mě byl, že jsem na to přišla – dostane nálepku „anatomicko-patologický odpad“ a skončí s dalším biologickým odpadem spáleným v nemocniční spalovně. Nemohla jsem se s tím dlouho vyrovnat.

Snažila jsem se řešit vydání miminka přes pohřební službu. Koukali, jako že jsem spadla z višně. Prý to jsme tady ještě neměli. Mrtvé miminko po narození – to ano, ale potracené? To v žádném případě.

S jakými reakcemi se vlastně setkáváte? J. X. Doležal v článku pro Reflex to postavil tak, že už nevíme, co roupama … a že „věnovat úsilí péči o důstojné zacházení s mrtvě narozenými embryi opravdu není na místě…“

Jsme podle něj zbohatlická společnost, která si vymýšlí problémy, kde nejsou. To se mě docela dotklo. Ale jsem mu za ten článek vděčná, alespoň vyvolal reakce a diskuzi. Kdokoli do toho rýpne a má jiný názor, než že by pozůstatky měly skončit v nemocniční spalovně, tak je okamžitě označen jako protipotratový aktivista, že je zaměřený proti právu svobodného rozhodnutí ženy apod. Já nechci nikomu říkat, co má a nemá v souladu se svým svědomím dělat, ale požaduji, aby tu byla možnost volby a aby rodiče měli právo o zacházení se svým dítětem rozhodnout.

V diskuzích na toto téma se zapojují hlavně ženy, muži reagují i podle mé zkušenosti jinak…

Nechci paušalizovat. Manžel pro mě byl po potratu oporou, ale v tomhle měl jiný názor. On to neprožíval, on tam neměl hormony, neměl vazbu k dítěti. Chtěl to radši rychle uzavřít, zavřít Pandořinu skříňku a směřovat dál, do světlé šťastné budoucnosti.

A já jsem se nakonec smířila s tím, že miminko zůstane nepohřbené.

Ale pokračovala jste dál v úsilí tu situaci změnit…

Našla jsem o.s. Dlouhá cesta, které se snaží tuto problematiku řešit už několik let, ale bohužel bez valného výsledku. Dlouhá cesta, potažmo její podsekce Prázdná kolébka, pracuje velmi úspěšně s rodiči, kteří přišli o děti už narozené. Vyplynula potřeba zabývat se jenom pohřbíváním hlouběji. Oslovila jsem ombudsmana, který plně podpořil práva rodičů na vydání dítěte, ať už mrtvorozeného nebo potraceného. To byla obrovská motivace, obrovský stimul. I na základě zkušeností dalších rodičů, kteří se potýkali s neochotou nemocnic vydat potracený plod, jsme následně založili o. s. Tobit.

Úprava pohřbívání spadá do kompetence tří ministerstev. Jednak pod ministerstvo zdravotnictví, které vydalo zákon o zdravotních službách, tam je pevně stanoveno, co je potratem. Ale již se tam nehovoří o tom, co je mrtvorozené dítě. Logicky lze usoudit, že co není potratem a nenarodí se živé, je mrtvorozené dítě, ale pro potřeby pohřbívání logika nestačí. Co není v zákoně stanoveno, tedy mrtvorozené dítě, nemá vlastně žádný status.

Zákon o pohřebnictví, jehož gestorem je ministerstvo pro místní rozvoj, nepočítá vůbec ani s mrtvorozenými ani s potracenými dětmi. To, co se nenarodí živé, není člověk. Nemá identitu.

I když je to třeba v osmém, devátém měsíci?

Ano… A další ministerstvo, které se na tom také částečně podílí, je ministerstvo životního prostředí, které vydalo „pokyny pro nakládání s odpady ve zdravotnictví“. Tam se dočteme, jak zacházet s produktem potratu do 12. týdne těhotenství, ale co se děje dál, s později potracenými nebo mrtvorozenými dětmi, už tam vůbec není.

Vzniká tu právní vakuum, kdy záleží na jednotlivých nemocnicích, jak si to upraví ve svých interních předpisech. Řada nemocnic nemá problém s tím vydávat rodičům k pohřbení to, co není stanovené přímo jako potrat, tedy miminka od 22. týdne. Ale kdyby se nemocnice rozhodla ostatky těchto mrtvorozených dětí nevydat, rodiče nemají žádný právní nárok je získat.

To jsou případy, kdy rodiče o vydání mrtvě narozeného dítěte požádají. Co když to neudělají?

Rodiče by do 96 hodin od úmrtí měli rozhodnout o vykonání pohřbu. Ovšem maminka je často hospitalizovaná, otec třeba ani nemusí být, 96 hodin je v takové situaci, kdy jste psychicky na dně, velice málo. Samozřejmě s tím jsou spojené ekonomické náklady, takže někdo se i z finančních důvodů rozhodne nepohřbít, pak toho následně lituje, ale už je pozdě. Když se nikdo z osob blízkých o pohřbení mrtvě narozeného dítěte nepřihlásí, nemocnice z velké části postupuje dál tak, jako že je to anatomicko-patologický odpad a třeba i miminko v 9. měsíci těhotenství spálí v nemocniční spalovně.

Jaká je praxe v jiných zemích?

Na Slovensku mají rodiče právo na vydání plodu po potratu. Stejná situace je od května i v Německu, kde sjednotili legislativu jednotlivých spolkových zemí – potracené dítě je možné pojmenovat, tím získá identitu a následně možnost pohřbení. Není to povinnost rodičů, pouze jejich právo. Jiná situace je třeba v Irsku, kde mají rodiče pohřbívací povinnost. To je zase jiný extrém, že nutí rodiče, aby i ostatky po potratu v 6., 7. týdnu těhotenství pojmenovali a pohřbívali.

Co je vaším cílem v ČR?

Nechceme nikoho nutit, aby pohřbíval své potracené nebo mrtvorozené dítě. Jde o to, aby rodiče měli volbu. Měli by mít právo rozhodnout o tom, co se bude dít s jejich počatým dítětem. Pokud požádají o to, aby tělíčko bylo vydáno k pohřbení, nemocnice by jim to měla umožnit v jakékoli fázi těhotenství.

Pomáháme rodičům, kteří jsou v této situaci, aby jim – pokud chtějí – miminko bylo vydáno. To je první zásadní krok, protože někdy jsou to dost tuhé boje. Dále jim dokážeme zajistit psychologickou pomoc. A hlavně bychom se chtěli postarat i o ty mrtvě narozené děti (a říkám záměrně mrtvě narozené děti), kterým rodiče z jakýchkoli důvodů nemají zájem či nemohou vypravit pohřeb. Získali jsme hrobové místo v Praze na Vinohradském hřbitově, kde by všechny tyto děti byly pohřbívány. Naší snahou je důstojné rozloučení i s těmi miminky, o které rodiče neprojeví zájem, aby neskončila v nemocniční spalovně.

Autor článku

Redaktorka, editorka, dlouholetá šéfredaktorka serveru Vitalia.cz (do června 2022)

'; 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 »