V lékárnách chybí dětský Nurofen i Wobenzym, výpadky mají stále i oční antibiotika

1. 9. 2022

Sdílet

Autor: Depositphotos
Léčbu opět komplikují výpadky některých medikamentů. Rodiče mají problém sehnat volně prodejné léky pro děti na horečku a bolest. Některým dospělým pacientům už měsíce chybí lék na rychlejší hojení. Nestabilní jsou stále také dodávky očních antibiotik.

O chybějících lécích informujeme na Vitalia.cz opakovaně. A situace není ideální ani nyní při začátku nového školního roku, kdy si děti začnou přinášet nemoci ze školních a školkových kolektivů. Nejde ale jen o dětské pacienty, léky chybí i dospělým.

Co se dozvíte v článku
  1. Lékárnám dochází léky pro děti na bolest a horečku
  2. Proč chybí Nurofen a spol.
  3. Kdy budou léky pro děti opět dostupnější
  4. Chybějící léky mají alternativu
  5. Chybí také oční antibiotika Tobrex a Maxitrol
  6. Letos přibylo zánětů spojivek i planých neštovic
  7. Nejvíc se pacienti ptají na chybějící Wobenzym

Lékárnám dochází léky pro děti na bolest a horečku

Rodiče dětí aktuálně asi nejvíce pociťují výpadek léků s účinnou látkou ibuprofen, která tlumí horečku a bolest. Většina lékáren, které mají e-shopový prodej, hlásí, že mají vyprodány prakticky všechny formy volně prodejného léku Nurofen pro děti. Chybí čípky i sirupy pro nejmenší. Nelze zakoupit ani Nurofen Junior v podobě žvýkacích tobolek nebo v ústech rozpustné tabletky Nurofen pro děti Active. Obě tyto formy jsou přitom kvůli jednoduchosti jejich podání velmi oblíbené a užívají je většinou děti mladšího školního věku.

Nedostatek léků s ibuprofenem se propisuje do toho, že z pultů rychle mizí také léky s jinou účinnou látkou, která má ovšem stejné účinky. Jde o paracetamol, jímž rodiče nahrazují aktuální výpadek ibuprofenu. Navíc i tyto léky postihují výpadky, byť ne tak rozsáhlé jako u ibuprofenu. „Aktuálně je přerušení dodávek hlášeno u léčivého přípravku Paralen (100MG SUP 5) a Paralen SUS (24MG/ML POR SUS 100ML), a to z kapacitních/distribučních důvodů,“ uvádí Klára Brunclíková, mluvčí Státního ústavu pro kontrolu léčiv (SÚKL).

Jak potvrzují i lékárny, distribuční výpadky se týkají pouze léků na bolest a horečku pro děti, u těch pro dospělé žádné aktuálně nejsou. „Dětská antipyretika jsou potíž. Nurofen pro děti už nemáme skladem nikde, dětský Ibalgin rychle dochází a u Panadolu máme jen čípky (ovšem až pro děti od 15 kg). Paralen Baby máme, ovšem v tabletách, protože sirupy prostě na trhu nejsou,“ popisuje Michal Petrov, mluvčí společnosti Česká Lékárna Holding, pod níž mimo jiné patří síť lékáren Dr. Max. Dodává ale, že zcela bez léků rodiče zatím neodcházejí, protože výpadek lékárny kompenzují vlastní značkou, která je stále lokálně skladem.

„Léky s ibuprofenem je možné zaměnit za jiné, které obsahují účinnou látku paracetamol. Paralen nebo Panadol zatím dostupné jsou, ale v tuto chvíli jsem sledoval skladové zásoby dodavatelů a už vidím, že se tam objevují také výpadky. Takže je možné, že do pár týdnů dojdou zásoby také na lékárnách,“ říká Adam Socha, vedoucí lékárny Benu v jednom z pražských obchodních center.

Aktuálně hlášené výpadky si lze ověřit v online databázi přijatých hlášení. Databáze SÚKL vychází z informací, které mají povinnost sdělovat lékovému ústavu firmy, jenž k danému léku drží rozhodnutí o jeho registraci.

Proč chybí Nurofen a spol.

Důvodem výpadku léčivých přípravků s obsahem ibuprofenu jsou podle SÚKL přetrvávající výrobní problémy (u Nurofenu) a kapacitní/distribuční důvody (u Ibalginu Baby). Konkrétnější ve vysvětlování držitelé registrace být nemusí. Redaktorka Vitalia.cz proto oslovila českou pobočku britské společnosti Reckitt Benckiser Healthcare International, jež je držitelem rozhodnutí k Nurofenu, ta se ale k otázkám zaslaným e-mailem zatím nevyjádřila.

Podle Michala Petrova je příčinou nedostatek ibuprofenu na trhu. Zástupce lékáren sítě Benu vidí ve výpadcích širší kontext. „Vypuknutí války na Ukrajině provázelo nekontrolované nakupování Ibalginu, Nurofenu a dalších důležitých přípravků pro děti. Tím došlo k vyprázdnění skladových zásob u dodavatelů,“ podotýká Adam Socha. Co se týká ČR, dodávky léčiv pro Ukrajinu zajišťovalo centrálně Ministerstvo zdravotnictví, které veřejnost odrazovalo od živelného nákupu léků a samo spolupracovalo přímo s farmaceutickými společnostmi. Nicméně v jiných zemích mohla být situace odlišná.

U léků, které chybějí, ač jejich dodávky nebyly přerušeny, je důvodem jejich překotné skupování, za kterým kromě zákazníků stojí i lékárny. „Jelikož došlo k přerušení dodávek některých léčivých přípravků s velkým tržním podílem (viz např. Nurofen), tak lze očekávat nárůst spotřeby alternativních léčivých přípravků a jejich předzásobování ze strany lékáren, což může nepříznivě ovlivnit dostupnost těchto léčivých přípravků,“ podotýká Klára Brunclíková.

Setkali jste se v poslední době s tím, že nebyl k sehnání lék, který jste nutně potřebovali?

Kdy budou léky pro děti opět dostupnější

Ať už jsou důvody jakékoliv, důležité pro malé pacienty je, kdy bude situace v lékárnách klidnější. 

Dodávky Paralenu SUS by měly být podle SÚKL obnoveny na začátku října. „U perorální suspenze obnovení dodávek očekává dne 10. 10. 2022. K obnovení dodávek paracetamolových čípků by mělo dojít v dohledné době (držitel v tuto chvíli upřesňuje termín obnovení dodávek),“ podotýká mluvčí SÚKL.

„Od září 2022 by mělo docházet k postupnému návratu léčivých přípravků Nurofen na trh v ČR, a situace by se tak měla již stabilizovat,“ podotýká Klára Brunclíková. U léku Nurofen pro děti Active by měly být dodávky obnoveny v polovině září. Termín polovina září platí také pro obnovení dodávek sirupu stejné značky, přičemž u pomerančové příchutě by obnovení dodávek mělo nastat do 30. září, u jahodové příchutě až o měsíc později. Čípky Nurofen o síle 60 mg by zpět na trhu mohly být v polovině října.

Termíny, kdy by měly být obnoveny dodávky antipyretik pro děti s ibuprofenem

Autor: SÚKL

Chybějící léky mají alternativu

Nicméně pokud by sezóna respiračních viróz dorazila dříve a s velkou razancí, jak tomu bylo loni, zcela bez léků na horečku a bolest by rodiče a malí pacienti zůstat neměli.

„Pro dětské pacienty by s léčivou látkou paracetamol měly být na trhu dostupné následující léčivé přípravky: Panadol pro děti jahoda (24MG/ML POR SUS 100ML III), Panadol Baby (125MG SUP 10), Panadol Junior (250MG SUP 10) a Paralen (125MG TBL NOB 20),“ vyjmenovává Klára Brunclíková.

S ibuprofenem by podle SÚKL měly být na trhu pro děti léky Ibuprofen Dr. Max (100MG/5ML POR SUS 1X100ML) či Nurofen Junior pomeranč (100MG CPS MDM 12).

Pokud by rodiče tyto léky nesehnali, je možností ještě jejich individuální příprava. „Jsme schopni zajistit laboratorně připravené čípky. To je vcelku běžné, substance dostupná je,“ potvrzuje Michal Petrov. Upozorňuje ale, že takto připravený lék nehradí zdravotní pojišťovny a vychází dráž. „Asi na dvojnásobek ceny oproti průmyslově vyráběným čípkům,“ dodává zástupce lékáren Dr. Max. Individuálně připravené léky také mají zpravidla rychlejší expiraci.

Také u sirupů existuje cesta jeho přípravy v lékárně, je ale složitější. „Laboratorně připravené sirupy, to už zdaleka standardní záležitost není. Nejde tu přitom jen o ‚namíchání‘, ale i o to, jak to chuťově přiblížit tomu, na co jsou děti zvyklé zejména u Nurofenu,“ popisuje Michal Petrov. „Pokud jde o namíchání, sirup na bázi ibuprofenu připravit neumíme, ale dokážeme to na bázi paracetamolu. K přípravě není nutný recept od lékaře,“ podotýká.

Chybí také oční antibiotika Tobrex a Maxitrol

V lékárnách aktuálně ale nechybějí jen antipyretika pro děti. Potíže mohou způsobovat také pokračující výpadky očních antibiotik, které používají děti i dospělí. O těch jsme informovali již v červnu, kdy dočasně nešlo sehnat prakticky žádné antibiotické oční kapky. Nyní je situace o něco lepší, ale stále ne ideální.

V ČR chybí důležité léky. Které jsou nedostupné a proč? Přečtěte si také:

V ČR chybí důležité léky. Které jsou nedostupné a proč?

„Vím, že když jsem sloužil pohotovost, tak z očních antibiotik nebyl Tobrex a není ani Maxitrol. Ale nějakou formou se to teď řešit dá, protože k dostání jsou kapky Gentamicin a Tobradex s kortikoidy,“ popisuje praktický lékař pro dospělé Michal Bábíček, první místopředseda Sdružení praktických lékařů ČR.

Web SÚKL u Tobrexu uvádí, že 29. července 2022 bylo ústavu nahlášeno přerušení dodávek z výrobních důvodů. Dodávky do ČR byly 23. srpna obnoveny. Maxitrol měl dle oficiálních informací několikaměsíční výpadek, ale již před půlrokem. „Aktuálně neevidujeme přerušení dodávek na trh v ČR,“ potvrzuje mluvčí SÚKL Klára Brunclíková.

Podle SÚKL ale situace s antibiotickými kapkami i bez aktuálního distribučního výpadku, může být nestabilní. A to z příčin, které nastaly už na začátku roku. „U léčivých přípravků Maxitrol, Tobrex a Tobradex skutečně došlo k závažnějšímu přerušení dodávek na konci roku 2021, které přetrvávalo až do prvního kvartálu roku 2022. Důvodem byla probíhající změna v registraci dotčených léčivých přípravků, kvůli které tyto přípravky nebylo bohužel možné propustit na trh,“ uvádí Klára Brunclíková. 

„V souvislosti s výpadkem předmětných léčivých přípravků došlo k výraznému navýšení spotřeb alternativních léčivých přípravků v daných terapeutických skupinách, a tedy i k následnému vyprodání zásob, což zapříčinilo jejich následný/opakovaný výpadek na trhu. Zároveň došlo k předzásobování ze strany lékáren, které opět nepříznivě ovlivnilo dostupnost těchto léčivých přípravků. Situace se však postupně stabilizuje,“ dodává.

Z léčiv, které se používají v oftalmologii, nyní aktuálně chybí tyto:

Kortikoidy a antiinfektiva:

  • Dexa-Gentamicin (0,3MG/G+5MG/G OPH UNG 2,5G) – přerušení dodávek dne 31. srpna 2022, obnovení dodávek plánováno na 25. září 2022
  • Gentadex (5MG/ML+1MG/ML OPH GTT SOL 1X5ML) – přerušení dodávek dne 31. srpna 2022, obnovení dodávek plánováno na 25. září 2022

Antibiotika:

  • Kanamycin-POS (6,2MG/G OPH UNG 2,5G) – přerušení dodávek dne 11. srpna 2022, obnovení dodávek plánováno na říjen 2022
  • Kanamycin-POS 6,2MG/ML OPH GTT SOL 5ML) – přerušení dodávek dne 1. července 2022, obnovení dodávek plánováno na září 2022
  • Ophthalmo-Framykoin comp. (OPH UNG 5G) – přerušení dodávek dne 13. července 2022, obnovení dodávek plánováno na 30. září 2022

Zdroj: SÚKL

Letos přibylo zánětů spojivek i planých neštovic

Příčiny výpadků ale nemusí být jen na straně výrobce. Podle dětské lékařky Ilony Hülleové je letos vyšší nemocnost. „Zánětů spojivek je letos daleko více, než bývalo. Čím to je, nevím. Na jaře jsem si myslela, že to může být spojeno s nástupem pylové sezóny, ale ta vyšší nemocnost přetrvává i teď v létě. V tomto období záněty spojivek pacienti mívají, ale ne tolik,“ popisuje předsedkyně Sdružení praktických lékařů pro děti a dorost ČR s tím, že vyšší počty nemocných jsou i nyní na přelomu srpna a září.

Letošní rok je také četnější na výskyt planých neštovic. Státní zdravotní ústav do konce července evidoval bezmála 47 700 zaznamenaných infekcí. To je nezvyklé množství, protože třeba v roce 2014, který byl také na tuto infekci hojný, za celý rok počet nákaz činil 41 575. O to více jsou někteří rodiče mrzutí, že v lékárnách dlouhodobě nemohou sehnat chladivý gel ViraSoothe, který zmírňuje svědění jejich pokožky při vyrážce doprovázející neštovice. U něj ale nejde o výpadek dodávek, ale trvalý stav. „Výrobek jsme měli dříve v distribuci, bohužel nám ho ale výrobce přestal před více než dvěma roky dodávat a nyní již opravdu není dostupný, a to ani v doprodeji v lékárnách,“ uvádí Pavel Tomášek ze společnosti Ceumed, která gel dodávala na český trh.

„Existuje ale řada jiných produktů, které můžete použít na podporu hojení vyrážky při neštovicích. Sprej je ideální volba, zmírní svědění, podpoří hojení a vy se bolestivých puchýřků nemusíte dotýkat. Do sprchy doporučujeme používat přípravky bez obsahu mýdla – tzv. syndety,“ říká mluvčí Dr. Max lékáren Michal Petrov. „Vhodným přípravkem u neštovic je Uriage Bariederm Cica gel, který neštípe a zároveň podporuje hojení. Na dohojení pupínků je vhodný Uriage Cica krém, který zamezí vysušení a hezky dohojí stroupky bez vzniku jizviček. Pokud je svědění hodně intenzivní, můžete na noc dát Fenistil kapky,“ dodává mluvčí.

„Potkali“ jste plané neštovice? Inkubační doba je 10 až 21 dní Přečtěte si také:

„Potkali“ jste plané neštovice? Inkubační doba je 10 až 21 dní

Nejvíc se pacienti ptají na chybějící Wobenzym

Podle lékáren ale nejvíce pacienty trápí nedostatek jiného léku. „Momentálně je nejčetnější pacientskou bolestí výpadek Wobenzymu,“ uvádí Michal Petrov. Wobenzym působí proti zánětu a zkracuje dobu hojení. Nedostupné jsou už delší dobu všechny jeho formy. „Dodávky měly být obnovené v polovině roku, ale výpadek bohužel stále trvá,“ podotýká Michal Petrov. 

V databázi SÚKL stojí, že jde o nenahraditelný lék, jehož některé formy chybějí v distribuci z „výrobních důvodů“ už od března. Držitel rozhodnutí o registraci SÚKL oznámil, že dodávky by měly být postupně obnoveny, u některých forem ale až na konci září.

Michal Bábíček upozorňuje ještě na dvě záležitosti, které se týkají výpadků léků. Pacienti nyní seženou místo 21tabletového balení penicilinu pouze to o 30 tabletách. Občas nastane opakovaný výpadek u antibiotických mastí, což je dlouhodobý problém. „Buď není Framykoin, nebo Bactroban. Teď zrovna, myslím, v lékárnách není Bactroban,“ doplňuje praktický lékař. Situace není ale dramatická, protože pokud masti chybí, lékárníci i je dokáží nahradit těmi individuálně připravovanými.

Podle Michala Bábíčka je ale situace obecně taková, že chybějící léky lze něčím nahradit. „Nevybavuju si v poslední době žádný lék, jehož výpadek by mě vysloveně naštval,“ podotýká lékař.

„Výpadky komplikují život především pacientům. Lékárníci jsou naštěstí dost kvalifikovaní k tomu, aby dokázali doporučit vhodnou alternativu, jakkoli jsou situace, kdy to bez konzultace s lékařem nejde. A takové doporučení musí být samozřejmě přijatelné i pro pacienta,“ podotýká mluvčí lékáren Dr. Max Michal Petrov.

Autor článku

Redaktorka Vitalia.cz. Vystudovala žurnalistiku a češtinu na Univerzitě Palackého v Olomouci, pracovala v Deníku, na webu TV Nova a iDNES.cz. Píše o zdravotnictví. Je držitelkou novinářských cen Psychiatrické společností ČLS JEP za rok 2021 a 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 »