Za parkovné fakultní nemocnice inkasují miliony ročně. Některé letos zdražily

22. 1. 2024

Sdílet

Autor: Depositphotos
Aby se nestaly odstavnými parkovišti a měly peníze na správu areálu. To jsou dva důvody, proč fakultní nemocnice po celé zemi vybírají od pacientů nebo návštěv poplatky za parkování. A ty nejsou nízké. Nemocnice na nich ročně vybírají několik milionů korun. Zmapovali jsme proto, na kolik parkovné vyjde a kde zdražili.

Poplatky za parkování v nemocnicích jsme zmapovali anketou, kterou jsme oslovili fakultní nemocnice (FN). Zdravotnická zařízení s největší kapacitou lůžek, tedy i vysokým počtem hospitalizovaných pacientů, spoustou ambulancí a rušným provozem.

Co se dozvíte v článku
  1. Nejvíce zaplatíte v Praze a Brně
  2. Přepočítané parkovné
  3. Zdražovalo se v Olomouci a Praze
  4. Kolik stojí parkování ve FN
  5. Výjimky z parkovného
  6. Při hospitalizaci výhodněji
  7. Kde berou jen hotovost
  8. Kolik nemocnice vyberou za rok
  9. Výše ročního výběru
  10. Kam putují vybrané peníze
  11. Proč není parkování zdarma
  12. Výsledky naší ankety

Za stání řidiči zaplatí ve všech fakultních nemocnicích, podmínky a cena parkovného se ale liší. Stejně jako sumy, které na parkovném nemocnicedokáží za rok vybrat.

Pokud jde o plánovanou cestu autem, je dobré si podmínky prostudovat předem. Všechny nemocnice je uvádí na svých webech. Srovnání najdete i v textu níže. Kdo si cenu předem nezjistí, může být při výjezdu z areálu nemile překvapen. Parkovné se totiž může za den vyšplhat i nad 500 korun a vyjde vás dráž než třeba zastavení v centru metropole.

Nejvíce zaplatíte v Praze a Brně

Výši a podmínky výběru poplatku za parkování, někde hovoří o vjezdovném,si nemocnice určují samy. Ministerstvo zdravotnictví výši parkovného nijak centrálně nereguluje, potvrzuje mluvčí rezortu Ondřej Jakob. Právě ministerstvo, až na jednu výjimku, fakultky zřizuje.

Zubaři dělají po zavedení pevné platby za pacienty méně druhých prohlídek Přečtěte si také:

Zubaři dělají po zavedení pevné platby za pacienty méně druhých prohlídek

V přepočtu na půlhodinu, bereme-li v úvahu vždy ten nejvyšší tarif, je nejdražší parkování v Praze ve Fakultní Thomayerově nemocnici, v tomtéž městě na Bulovce a v brněnské FN u sv. Anny, kde vyjde půlhodina na 50 korun. O deset korun méně stojí parkovné v přepočtu na půl hodiny ve Všeobecné fakultní nemocnice v Praze na Karlově náměstí, Institutu klinické a experimentální medicíny (IKEM) a ve Fakultní nemocnici Ostrava. Naopak v přepočtu nejméně zaplatí řidiči ve fakultkách Hradec Králové a Plzeň, kde vyjde půlhodina na desetikorunu.

Přepočítané parkovné

na půl hodiny

  • FN Thomayerova – 50 Kč
  • FN Bulovka – 50 Kč
  • FN u sv. Anny – 50 Kč
  • Všeobecná FN – 40 Kč
  • IKEM – 40 Kč
  • FN Ostrava – 40 Kč
  • FN Motol – 30 Kč
  • ÚVN – 30 Kč
  • FN Královské Vinohrady – 30 Kč
  • FN Brno – 25 Kč
  • FN Olomouc – 15 Kč
  • FN Hradec Králové – 10 Kč
  • FN Plzeň – 10 Kč

Parkovné ve FN jsme přepočetli na půl hodiny. Protože některé nemocnice mají ale několik tarifů a různé výjimky, brali jsem v přepočítaném přehledu vždy v potaz nejvyšší možné parkovné, které nemocnice vybírá. Přehled jsme seřadili sestupně.

Zdroj: Vitalia.cz

Zdražovalo se v Olomouci a Praze

Pro letošní rok se parkovné ve velkých špitálech většinou nezdražuje. Výjimkou je Olomouc, kde od 1. ledna došlo ke změně poplatku za vjezd do areálu z původních 20 za každou započatou hodinu na 30 korun. Poplatek 5 Kč za průjezd areálem při jeho opuštění do 30 minut od vjezdu zůstává nezměněn,  informovala nemocnice v předstihu na webu.

Parkovné navýšila také pražská Fakultní Thomayerova nemocnice. Od 1. ledna letošního roku se cena zvýšila ze 40 Kč na 50 Kč. Nejde tedy o žádné dramatické navýšení ceny parkovného a odpovídá současné situaci, uvádí mluvčí Petr Sulek.

Kolik stojí parkování ve FN

Přehled základních sazeb parkovného v areálech nemocnic

Pražské fakultní nemocnice

  • FN Motol – za každou započatou půlhodinu 30 Kč, existují tři časová pásma, kdy je parkovné v areálu zvýhodněno: od 6 do 16 h je jedna hodina parkování zdarma, od 16 do 21 h jsou tři hodiny parkování zdarma, od 21 do 6 h je pět hodin parkování zdarma.
  • Všeobecná FN – půlhodina zdarma, pak každá další započatá půlhodina 40 Kč.
  • FN Královské Vinohrady – do půl hodiny zdarma, do hodiny 60 Kč, pak každá započatá půlhodina 30 Kč. O víkendu do půl hodiny zdarma, do hodiny 20 Kč, pak každá započatá půlhodina 15 Kč. Pro hospitalizované je to 300 Kč za den
  • FN Thomayerova – první půlhodina zdarma, pak 50 Kč za každou započatou půlhodinu.
  • ÚVN – 30 Kč za každou započatou půlhodinu.
  • IKEM – půl hodiny zdarma, dále 40 Kč za každou započatou půlhodinu.
  • FN Bulovka – do půl hodiny zdarma, pak za první a druhou započatou hodinu 50 Kč, za třetí a další 100 Kč (platí od 5 do 22 h). Nebo za druhou, třetí a čtvrtou hodinu 20 Kč, za pátou a další započatou 100 Kč (platí od 22 do 5 h).

Mimopražské fakultní nemocnice

  • FN u Sv. Anny Brno – do půl hodiny zdarma, do dvou hodin od vjezdu každá započatá hodina 60 Kč, od dvou hodin výše každá započatá hodina 100 Kč.
  • FN Brno areál Bohunice: pro pacienty 50 Kč za každé dvě (i započaté) hodiny, návštěvy do půl hodiny zdarma, jinak 50 Kč za (i započatou) hodinu, návštěvy u pacientů na lůžku jednorázově 50 Kč (v návštěvních hodinách od 14 do 18 h)
    areál Dětské nemocnice: platí se při vjezdu kauce 100 Kč, parkovné je 50 Kč za hodinu, návštěvy hospitalizovaných platí jednorázově 50 Kč
    – areál porodnice na Obilním trhu: platí se při vjezdu kauce 100 Kč, parkovné je 50 Kč za hodinu, návštěvy hospitalizovaných platí jednorázově 50 Kč.
  • FN Olomouc – parkování do půl hodiny 5 Kč, za každou další započatou hodinu 30 Kč.
  • FN Plzeň – 20 Kč za každou započatou hodinu.
  • FN Hradec Králové – do půl hodiny zdarma, pak 10 Kč za každou započatou půlhodinu.
  • FN Ostrava – od 6:00 do 15:30 první půlhodina zdarma, pak každá započatá půlhodina 40 Kč, maximální parkovné je 600 Kč, sankce za ztrátu parkovacího lístku činí 600 Kč. Od 15:30 do 6:00 první čtyři hodiny parkování zdarma.

Zdroj: weby nemocnic (s ověřením platnosti sazeb u mluvčích FN)

Výjimky z parkovného

Z placení parkovného existují výjimky. Bezplatné parkování umožňuje většina nemocnic držitelům průkazu pro zdravotně postižené (ZTP, ZTP/P). Ale pozor, ve Všeobecné FN pro ně výjimka neplatí a třeba v Královských Vinohradech platí bezplatné parkování pro tyto řidiče jen po dobu čtyř hodin.

Ve FN Motol za parkování neplatí také rodiče hospitalizovaných dětí. Od nemocnice ale musí mít vyplněný formulář, který předkládají při výjezdu.

Ve FN Ostrava umožňují bezplatné stání těm, kdo dojíždí na dialýzu, chemoterapii a biologickou léčbu. A také dárcům krve, ale pouze těm dojíždějícím a pouze po dobu, která je pro odběr a s tím spojené záležitosti nutná. Dárci krve neplatí třeba ani v Thomayerově nemocnici nebo ve FN Hradci Králové.

Ve FN Plzeň jsou od parkovného osvobozeni pacienti, kteří potřebují urgentní ošetření, a ti, kteří se opakovaně a dlouhodobě léčí na hematoonkologii, mamodiagnostice, dialýze, ve spánkové laboratoři či anesteziologickém oddělení dlouhodobé intenzivní péče a dlouhodobé intenzivní ošetřovatelské péče. Parkovné neplatí ani jejich doprovod.

Výjimky ale nejsou pravidlem. Třeba FN Bulovka jej umožňuje jen zdravotně postiženým, ostatní návštěvníci platí po půlhodině vždy.

Přibývá ordinací, kde musíte platit. Někde se bez peněz už ani neobjednáte Přečtěte si také:

Přibývá ordinací, kde musíte platit. Někde se bez peněz už ani neobjednáte

Kromě výjimek v některých nemocnicích fungují také zvýhodněná časová pásma, ve kterých je parkovné výrazně levnější, nebo nulové. Třeba FN Motol má taková pásma tři, přičemž od 21 do 6 hodin se v nemocnici dá parkovat až pět hodin zdarma, od 16 do 21 hodin lze v Motole parkovat až tři hodiny zdarma a od 6 do 16 hodin je to až hodina zdarma. Pokud ovšem tento čas překročíte, zaplatíte parkovné za celou dobu stání, tj. od chvíle vjezdu do areálu. Ve FN Ostrava platí od 15:30 do 6:00 čtyři hodiny parkování zdarma. Některé další nemocnice (třeba Bulovka nebo Královské Vinohrady) sice parkovné vybírají i v noci, poplatek je ale v tu dobu nižší.

Při hospitalizaci výhodněji

Strop parkovného zavedla pouze FN Ostrava. Na webu uvádí, že maximální částka hrazená za parkování může činit 600 Kč. Z kontextu vyplývá, že tato částka je míněna jako denní maximum.

Řada nemocnic pak má speciální cenu parkovného pro hospitalizované pacienty. V pražských Královských Vinohradech platí 300 Kč za každý započatý den. Ve FN Brno umožňují hospitalizovaným pacientům parkovat za 400 Kč po celou dobu pobytu na lůžku. Ve FN u sv. Anny v Brně pak za den hospitalizovaní pacienti zaplatí stokorunu. Ve FN Plzeň jim náleží poloviční sleva z parkovného. 

Pozor si musí dávat řidiči na ztrátu parkovacího lístku. Některé nemocnice si za něj účtují pokutu. Např. ve FN Olomouc činí 500 Kč, ve FN Ostravě za ztrátu zaplatíte 600 Kč, v Fakultní Thomayerově nemocnici je to 1000 Kč. Stejná částka se platí při poškození či ztrátě karty také ve FN Motol, FN Bulovce a FN Hradec Králové.

Ve FN Brno mají při vjezdu do areálu stanovenou také kauci. Návštěvníci areálu Dětské nemocnice a porodnice na Obilním trhu zaplatí k parkovnému ještě částku minimálně 100 Kč. Je vratná při odjezdu z areálu. V tomto je FN ojedinělá, žádná jiná nemocnice kauci nevybírá.

Kde berou jen hotovost

Nemocnice se také liší v tom, jakým způsobem umožňují hrazení parkovného. Většinou řidič musí do automatu. Stále jsou ale taková zdravotnická zařízení, kde je nutné mít mince a bankovky. Třeba v Thomayerově FN, kde se platí pouze hotovostí u parkovacího automatu.

Kartou zatím nezaplatíte ani v Hradci Králové, kde ovšem už lze parkovné uhradit prostřednictvím SMS či aplikací Sejf.

Kolik nemocnice vyberou za rok

Z ankety vyplývá, že roční příjmy z parkovného se u jednotlivých nemocnic pohybují v řádech milionů korun. Sumy se ale mezi jednotlivými nemocnicemi výrazně liší. Je to dáno i tím, že některé do nich započítávají pronájmy ploch nebo parkovné od zaměstnanců.

Z těch, které Vitalia.cz odpověděly, nejvyšší roční příjem z parkovného uvedla FN Bulovka, a to 20 milionů korun vybraných v loňském roce.

Výše ročního výběru

uvedeno v korunách

  • Bulovka – cca 20 milionů (rok 2023)
  • Všeobecná FN – 1,5 milionu Kč (vč. příjmu za vjezdové karty pro zaměstnance)
  • FN Thomayerova – cca 6 milionů
  • Hradec Králové – 10 milionů
  • Olomouc – cca 17,5 milionu (rok 2023)
  • Ostrava – 7,5 milionu (jde o příjem z parkovišť vlastněných FN)
  • Plzeň – 12 milionů (částka je za parkování návštěvníků, zaměstnanců a pronájmy ploch k parkování)

Zdroj: Anketa Vitalia.cz mezi FN

Do výčtu ročních příjmů z parkovného není zahrnut ten v největší tuzemské nemocnici, protože FN Motol na anketní otázky Vitalia.cz neodpověděla. Stejně tak FN Královské Vinohrady a Ústřední vojenská nemocnice. 

Vedoucí Centra komunikace a marketingu FN Brno Lenka Martinková sdělila, že co se týká výše ročního výběru parkovného, zdrží se odpovědi. Roční výši vybíraného parkovného neuvedl ani pražský IKEM. Z FN u sv. Anny v Brně pak přišla odpověď, že na parkovné ročně vyberou řádově nižší miliony korun.

Kam putují vybrané peníze

Až na IKEM, kde je situace s parkováním složitá kvůli dostavbě institutu, všechny nemocnice uvedly, že výběr parkovného si zajišťují samy. Nesvěřují jej tedy žádné soukromé firmě.

Jak prostředky vybrané na parkovném nemocnice mají použít, jim Ministerstvo zdravotnictví neurčuje. Zcela volnou ruku v jejich utrácení ovšem nemajíPříjmy z parkovného jsou příjmem nemocnice – státní příspěvkové organizace. Stávají se tím pádem veřejnými prostředky. Nakládat s veřejnými prostředky je potom nutné v souladu s principy 3E – tedy účelně, hospodárně a efektivně, připomíná mluvčí ministerstva Ondřej Jakob. Zda ministerstvo takové nakládání s penězi kontroluje, mluvčí nedoplnil.

Nemocnice většinou uvádějí, že vybrané parkovné končí v nákladech na provoz, někdy také v investicích do jejich majetku.

Vedoucí PR a marketingu Všeobecné FN Marie Heřmánková sdělila, že peníze jdou třeba na opravu komunikací, vjezdových bran nebo automatických závor. Podobné odůvodnění přišlo také z FN Ostrava. Příjmy z parkovného jsou využity např. na údržbu a obnovu parkovacích ploch, údržbu zeleně, opravy a údržbu závor, platebních parkovacích terminálů v areálu nemocnice a podobně, uvádí výčet Petra Petlachová, vedoucí oddělení komunikace FN Ostrava.

Z nemocnic za covidové pandemie utekly desítky milionů. Kontrola ukázala, jak se plýtvalo Přečtěte si také:

Z nemocnic za covidové pandemie utekly desítky milionů. Kontrola ukázala, jak se plýtvalo

Fakultní Thomayerova nemocnice peníze využívá třeba na opravy automatů na výběr parkovného, správu a opravy chodníků či silnic v areálu. A tak to mají i jinde. Prostředky z výběru parkovného směřují do údržby, obnovy a zajištění služby parkování ve FN Brno, vysvětluje Lenka Martinková z FN Brno. Vybrané peníze se stávají součástí rozpočtu FN Olomouc, využíváme je pro potřeby provozu a rozvoje nemocnice, uvádí mluvčí nemocnice Adam Fritscher.

Ačkoliv miliony korun ročně vypadají jako vysoké částky, v příjmech nemocnic jde jen o kapku v moři. Například roční obrat Motola, což je největší nemocnice v ČR, činil předloni 14 miliard, ve FN Brno to je necelých 13 miliard Kč a ve FN Hradec Králové 10 miliard.

Proč není parkování zdarma

Nemocnice uvádí, že parkování v jejich areálu nemůže být bezplatné, protože zpravidla stojí na místě, kde je hustá doprava, a tak by se mohly stát levnými odstavnými parkovišti. Navíc mají povinnost zajistit průjezdnost areálu třeba pro sanitky.

Areál nemocnice je v centru Brna, všude kolem platí zónové parkování. Pokud bychom měli parkovné zdarma, pak by bylo možné, že by místa zabrali pacientům například turisté, kteří by chtěli zaparkovat zadarmo. Také je nutná údržba a opravy parkovacích ploch, sděluje Jiří Erlebach, vedoucí oddělení PR a marketingu FN u sv. Anny.

Parkovné bylo zavedeno před několika lety z důvodu regulace dopravy a rostoucí automobilové návštěvnosti v obou areálech FN Plzeň. Zároveň v areálech často parkovaly i osoby, které měly v blízkosti FN bydliště, popisuje Gabriela Levorová z tiskového odboru.

Podle mluvčího Fakultní Thomayerovy nemocnice je před jejím areálem dostatek parkovacích míst, není tedy důvod, aby auta parkovala v areálu déle než jen po dobu vyložení a naložení pacientů. V minulosti se nám běžně stávaly situace, kdy lidé z okolí naší nemocnice si nechávali své auto zdarma zaparkované v areálu nemocnice i například po dobu dvou týdnů a déle. Především k tomu docházelo během letních dovolených či prázdnin. Taková praxe však byla nepřípustná, a navíc nám způsobovala značné komplikace spojené třeba s průjezdem či parkováním našich sanitních vozů, vysvětluje Petr Sulek.

Vadí vám poplatky za parkování v nemocnicích?

Vjezdovné využíváme i jako regulátor počtu vozidel v přetíženém areálu nemocnice, říká také Jan Špeldavedoucí Odboru komunikace FN Hradec Králové. V okolí není odstavné parkoviště, tudíž poplatkem předcházíme hromadění odstavených vozidel v areálu FNB, píše mluvčí Bulovky Eva Stolejda Libigerová.

V řadě nemocnic navíc není možné parkovací kapacitu navyšovat. Například Všeobecná FN sídlí v historickém centru Prahy, kde jsou parkovací místa velmi žádaná, přitom její areál je sevřen zástavbou památkové zóny.

Počet parkovacích míst je v areálech velmi omezený, a pokud bychom rozšířili možnost bezplatného parkování v centru Prahy, tak nám zde celý dopravní systém zkolabuje, protože tuto možnost začnou využívat nejen pacienti. Tuto zkušenost už bohužel máme z doby, kdy jsme otevřeli přístup k areálu, kde bylo odběrové centrum a nebyla tam vjezdová vrátnice, podotýká vedoucí Odboru PR a marketingu Všeobecné FN Marie Heřmánková.

Areály jsou navíc dostupné velmi dobře městskou hromadnou dopravou. Např. přímo do areálu FN Motol ústí jedna ze stanic metra trasy A. Otevřena byla v dubnu 2015. A například přímo v areálu Bulovky jsou hned tři zastávky městské hromadné dopravy.

Výsledky naší ankety

V ČR je celkem 12 fakultních nemocnic, z toho šest v Praze. Zřizuje je Ministerstvo zdravotnictví. Výjimkou je Ústřední vojenská nemocnice – Vojenská fakultní nemocnice Praha, která je zřizována Ministerstvem obrany. Do ankety jsme zahrnuli také Ministerstvem zdravotnictví zřizovaný IKEM, jenž patří rovněž k největším tuzemským zdravotnickým zařízením.

Redaktorka položila 13 zdravotnickým zařízením stejné otázky. Tedy zda je výše parkovného na webových stránkách aktuální, zda si parkovné vybírají samy nemocnice, či na to mají najatou soukromou společnost, kolik zhruba na parkovném vyberou za rok, jak tyto peníze využívají a proč parkovné nemůže být levnější nebo nulové.

Ankety se zúčastnily všechny nemocnice s výjimkou tří pražských. Odpovědi nedorazily z největší tuzemské nemocnice FN Motol, z FN Královské Vinohrady a Ústřední vojenské nemocnice. Výši parkovného v nich tedy redaktorka dohledala na webu.

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 »