Ženy spí jinak než muži. Jejich spánek je křehčí, říká neuroložka

29. 9. 2022

Sdílet

Autor: Vitalia.cz/Karel Choc
Ženy, muži, děti. Každý z nich spí jinak. Dětský spánek je delší a má více hlubokých fází. Ženy potřebují spát více než muži, v životě je ale častěji postihuje nespavost. Muže zase nepravidelnosti v dýchání při spánku. Proč, to v rozhovoru pro Vitalia.cz popisuje neuroložka Soňa Nevšímalová.

Patří mezi nejrespektovanější osobnosti české medicíny a její renomé v oblasti neurologie, dětské neurologie a spánkové medicíny přesahuje hranice země. Tak o profesorce Soně Nevšímalové hovoří kolegové.

Co se dozvíte v článku
  1. Se spánkem pomáhá už půl století
  2. Na vesnici se spí jinak než ve městě
  3. Ženy trápí nespavost, muže spánková apnoe
  4. Pomoc hledejte po třech měsících potíží
  5. Na spánkovou laboratoř se čeká půl roku

Se spánkem pomáhá už půl století

Pokud píšete na téma poruchy spánku, dříve či později se setkáte s její prací. Soňa Nevšímalová více než pět desítek let pomáhá nejen dětem, má za sebou velké množství odborných publikací, zahraničních aktivit, ale i rozhovorů a vyjádření do médií. O svém oboru – neurologii – umí hovořit poutavě a srozumitelně. Navíc s energií, která je u dámy jejího věku obdivuhodná.

Noční sovy mají svoji diagnózu – nazývá se zpožděná fáze spánku Přečtěte si také:

Noční sovy mají svoji diagnózu – nazývá se zpožděná fáze spánku

Soňa Nevšímalová od roku 1971 působí na Neurologické klinice 1. lékařské fakulty Univerzity Karlovy a Všeobecné fakultní nemocnice, kterou v letech 1998 až 2006 vedla a kde se podílela na založení Centra pro poruchy spánku a bdění. Její specializací je totiž spánková medicína. Tedy obor, který přímo vybízí k tomu ptát se, neboť potíže se spánkem mohou člověka hluboce poznamenat, přitom nejsou vůbec ojedinělé.

Počty lidí s poruchami spánku podle lékařky nijak rapidně nerostou. Toto téma je ale viditelnější, protože jsme více informovaní a zdokonalují se diagnostické postupy. Co se ovšem dle Soni Nevšímalo mění, je spektrum poruch spánku. „Častěji se objevuje nadměrná denní spavost u těch, kteří si uměle zkracují délku potřeby svého spánku. Přibývá také nespavosti při náročných povoláních u workoholiků a v důsledku směnného provozu. Nárůst obezity vede k častějšímu výskytu spánkové apnoe,“ podotýká profesorka neurologie v rozhovoru pro Vitalia.cz. Kvůli jejímu časovému zaneprázdnění vznikl prostřednictvím e-mailu.

Na vesnici se spí jinak než ve městě

Spí lidé ve městech jinak než ti na vesnicích?

Domnívám se, že u nás takové studie neexistují, pouze v cizině. Myslím si, že ale ano. Na venkově, zvláště pokud mají ještě hospodářství s péčí o zvířata, se jejich spánkový cyklus řídí více astronomickým časem – to znamená spíše dřívější vstávání i uléhání. Spánek je určitě méně rušen nočním světelným šumem (reklamy, osvětlení ulic apod.). i civilizačním hlukem aut, tramvají nebo letadel. Aspoň takto jsem vnímala některé mé pacienty. Např. u nadměrné denní spavosti (narkolepsie) jim nepřipadal divný denní spánek, když vstávali ráno velmi brzy.

Které prostředí je pro spánek vlastně nejlepší?

Teplota v místnosti by určitě měla být chladnější (17–18 stupňů), ložnice by měla být, pokud možno, izolovaná od hluku a bez přímého osvitu z okolí. V ložnici by určitě neměla být umístěna televize ani jiný mediální zdroj modrého světla (zapnutý počítač, mobil, tablet…). Pokud jde o děti, které se bojí úplné tmy, ideální je lampička s tlumeným infračerveným světlem.

Liší se spánek žen do spánku mužů? Pokud ano, jak?

Názory se dosti liší. Obecně se má ale za to, že ženy potřebují více spát než muži (podle některých studií až o jednu hodinu). Jejich spánek je ale fragilnější (křehčí, pozn. red.) a jsou fyziologická období, kdy jsou náchylnější k nespavosti (insomnii) – např. v průběhu těhotenství, nastupující menopauzy a některé ženy pociťují výkyvy spánku i v průběhu měsíčních ovulačních cyklů.

Syndrom neklidných nohou. Pomáhají obyčejné babské rady Přečtěte si také:

Syndrom neklidných nohou. Pomáhají obyčejné babské rady

V čem se liší spánek dětí od spánku dospělých?

Děti potřebují určitě spánku více – jejich spánek se liší jak délkou, tak ale i kvalitou. Mají více tzv. hlubokého spánku NREM (non-rapid eye movement), kdy se např. kromě jiných hormonů vylučuje i ten růstový. Jejich spánek je souvislejší – bez probouzecích reakcí. V dospělosti a zejména v průběhu stárnutí se spánek změlčuje, ubývá hlubších NREM stádií a dochází k častějším probouzecím reakcím.

Děti jsou zpět ve škole, jakou roli hraje spánek v tom, aby jim šlo učení?

Velmi podstatnou. Spánek je nesmírně důležitý jak pro jejich somatický, tak i psychický rozvoj, což dokazuje řada publikovaných studií. Při sledování dětí bydlících např. v okolí frankfurtského letiště, kde jejich spánek byl často rušen hlukem letadel, měly tyto děti horší výsledky psychologických testů i školních výsledků. Při antropometrickém měření měly dokonce i menší výšku oproti svým vrstevníkům z klidnějšího prostředí.

Co mají dělat rodiče těch menších, třeba prvňáčků, pro to, aby děti měly dostatek spánku?

K pravidelnému spánku je nutno děti vychovávat již od mala, a pokud možno soustavně. Jsme téměř výjimkou ve státech Evropské unie, kde výuka začíná zpravidla již v 8 hodin ráno. Z hlediska dětského spánku by bylo vhodné posunout začátek výuky na 9 hodin a na toto téma byly opakovaně i mezinárodní diskuze v rámci spánkových společností. Děti jsou brzkým vstáváním ochuzovány zejména o REM spánek (rapid eye movement), kterého je v ranních hodinách více. Zatím jedinou možností je dbát na to, aby šly spát večer opravdu včas.

Skutečně lze lidi dělit na sovy a skřivany? A lze sovu „přeprogramovat“ na skřivana a naopak?

Asi je potřeba odlišit geneticky daný chronotyp skutečného skřivana a sovy a tzv. sociální preference. Skutečný geneticky daný chronotyp opravdu nejde „přeprogramovat“. Žádného skřivana nenaučíme, aby měl optimum své pracovní výkonnosti kolem půlnoci, a naopak sovu nedonutíme k optimální výkonnosti v brzkých ranních hodinách. Tyto vyhraněné chronotypy tvoří ale jen okraje Gaussovy křivky, a tak většina naší populace je v rozmezí, kde si do určité míry může vyhovět – často s prací do večerních hodin. Takovému protahování práce a odkládání spánku říkáme „sociální jet lag“.

Ženy trápí nespavost, muže spánková apnoe

Přibývá v poslední době pacientů obecně, kteří mají potíže se spánkem?

Je lepší mediální informovanost, přibývá i spánkových center a laboratoří, zlepšuje se možnost diagnostiky a často i léčby. Možná se spíše mění spektrum poruch spánku. Např. častěji se objevuje syndrom insuficientního spánku (jde o noční odkládání spánku, jehož důsledkem je zvýšená potřeba denního spánku, pozn. red.), přibývá insomnií při náročných povoláních a u tzv. workoholiků a v důsledku směnného provozu i poruch cirkadiánního rytmu (našich vnitřních hodin, tedy cca 24hodinové periody ovlivněné východem a západem slunce, pozn. red.). Nárůst obezity vede i k častějšímu výskytu spánkové apnoe (při ní dochází k opakovaným zástavám dechu během spánku a k následnému snížení nasycení krve kyslíkem, pozn. red.).

Jaké jsou nejčastější příčiny těchto potíží?

Záleží na věku a pohlaví. U kojenců a batolat jsou poruchy spánku nejčastěji způsobeny výchovnými problémy, u dětí předškolního a školního věku převládají parasomnie (některé z abnormálních epizod při spánku, např. noční děs, noční můra, náměsíčnost apod., pozn. red.) a také spánková obrna, u dospívajících zpožděná fáze usínání (a probouzení). Ženy častěji trpí insomnií a v pozdějším věku syndromem neklidných končetin. U mužů převládá spánková apnoe a v pozdějším věku je předmětem výzkumu porucha chování v REM spánku, která může být předzvěstí některých neurodegenerativních onemocnění. Přičemž poruchou chování v REM spánku rozumíme neadekvátní chování, často i agresivní, v průběhu této fáze spánku.

Může být jednou z příčin poruch spánku covid-19? Existují již studie, které by dokládaly, že tato choroba ovlivňuje kvalitu spánku?

Takových studií je v zahraničí ohromná spousta. Pokud vím, v naší populaci zatím existuje pouze jediná studie na toto téma, a to kolektivu lékařky Jitky Buškové z Národního ústavu duševního zdraví. Poruchy spánku, nejčastěji nespavost, nalezli u více než 1/3 pacientů a obtíže přetrvávaly po dobu týdnů i měsíců od prodělané infekce. Častý je i výskyt velmi nepříjemných až děsivých snů, jejichž příčina dosud není jednoznačně vysvětlena.

Přes 60 procent lidí, kteří měli covid, trpí nespavostí. Trápí je i noční můry Přečtěte si také:

Přes 60 procent lidí, kteří měli covid, trpí nespavostí. Trápí je i noční můry

Pomoc hledejte po třech měsících potíží

Co by měl člověk udělat jako první krok, když má problém usnout nebo je kvalita spánku špatná?

Asi se zamyslet nad způsobem svého života, příčině své nespokojenosti a obtíží, a pokud to lze, příčiny odstranit, nebo alespoň zmírnit.

Existuje hranice, kdy už by s problémem měl jít ten, koho poruchy spojené se spánkem trápí, určitě k lékaři? A na jakého lékaře se obrátit jako první?

Mezinárodní klasifikace uvádí u většiny poruch k jejich diagnostice trvání obtíží alespoň 3 měsíce. Určitě prvním lékařem, který by měl být navštíven, je pediatr či praktický lékař. Ten určí závažnost problému a potřebu specializovaného vyšetření. Kromě center s komplexním zaměřením existuje v naší republice nepoměrně více center či laboratoří zaměřených na poruchy dýchání ve spánku, tedy spánkovou apnoi.

S jakými nejčastějšími potížemi se u pacientů setkáváte?

Kromě poruch spánku u dětí se celý život specializuji na tzv. skupinu centrálních hypersomnií – do které patří hlavně narkolepsie (denní usínání kdykoliv a kdekoliv, pozn. red.) a idiopatická hypersomnie (nadměrná denní spavost provázená často i prodlouženým nočním spánkem, protože tělo si v noci není schopno odpočinout, pozn. red.). Pochopitelně do mé ordinace přicházejí i pacienti s jinými poruchami spánku.

V čem jsou specifičtí dětští pacienti?

Ti nejmenší určitě tím, že nedovedou své potíže popsat, a i u předškolních či mladších školních dětí jsme zpravidla odkázáni na vysvětlení jejich rodičů. Vyšetření ve spánkové laboratoři vyžaduje citlivý přístup, mnohem větší trpělivost než u dospělých a často i větší zkušenost. Menší děti jsou obvykle vyšetřovány v přítomnosti některého z rodičů (včetně nočních monitorací). Možná i z těchto důvodů se zatím jen poměrně velmi málo spánkových center a laboratoří v naší republice specializuje na poruchy spánku a bdění u dětí.

Škola začíná moc brzy a děti chodí spát moc pozdě Přečtěte si také:

Škola začíná moc brzy a děti chodí spát moc pozdě

Kde tato pracoviště lze v ČR najít?

Je to jedině ve Fakultní nemocnici Motol, kde vyšetřují děti od novorozeneckého věku. U nás na klinice, kde vyšetřujeme děti v batolecím, ale spíše v předškolním věku. A pak je to Ostrava. To jsou jediná tři akreditovaná komplexní pracoviště v celé ČR. Pak jsou ještě menší pracoviště zaměřená na poruchy dýchání při některých odděleních otholaryngologie.

Jak potíže pacienta, dospělého i dítěte můžete řešit? Jaké máte možnosti?

V našem spánkovém centru se zabýváme prakticky všemi základními poruchami spánku: spánkovou apnoí (největší počet pacientů), centrálními hypersomniemi, parasomniemi u dětí i dospělých, mimovolnými poruchami pohybu ve spánku i poruchami cirkadiánního rytmu. Insomnie pro převahu příčin psychologického či psychiatrického původu (nejčastěji deprese) přenecháváme raději psychiatrům. Naprostá většina diagnostikovaných pacientů – pokud je zapotřebí – získá adekvátní léčbu.

Trápí vás nespavost?

Na spánkovou laboratoř se čeká půl roku

K čemu slouží vyšetření ve spánkové laboratoři, pro koho je určeno a jak může pacientovi pomoci?

U každého pacienta, který je nejprve vyšetřen ambulantně, je nutno zvážit, jaký přínos monitorace spánku může přinést a zda je vhodná. U většiny poruch spánku a bdění (s výjimkou insomnie) bývá ke správné diagnóze zapotřebí. Např. u spánkové apnoe dospělých není nutné celonoční video – polysomnografické monitorování –, ale pouze polygrafie (bez monitorace EEG křivky). Naopak u centrálních hypersomnií se kromě nočního spánku sleduje i denní tendence k usínání, případně i delší než 24hodinové monitorace. U poruch cirkadiánního rytmu i některých dalších onemocnění je výhodné domácí aktigrafické monitorování (miniaturní počítač velikosti náramkových hodinek) o trvání zpravidla 2 týdnů, které registruje cyklus spánku a bdění.

Sklenice teplého mléka na noc? K čemu opravdu vede Přečtěte si také:

Sklenice teplého mléka na noc? K čemu opravdu vede

Slyšela jsem, že spánkové laboratoře čelí přetlaku pacientů a čekací lhůty na vyšetření jsou dlouhé. Je to pravda?

Ano, to je jistě pravda, často jsou čekací doby řady měsíců až půl roku.

Čím to je způsobeno?

Nedostatkem spánkových laboratoří a center a jejich nerovnoměrným rozložením v naší republice. Je to personální a finanční otázka. Máme tady školení zakončené teoretickou a praktickou zkouškou. Je ale otázka, jestli ten, kdo ho absolvuje, si spánkovou laboratoř skutečně zařídí. Zda na to má prostředky, a to personální i finanční, protože laboratoř je potřeba vybavit přístroji. 

Pokud se na vyšetření čeká dlouho, nemůže to pacientovi potíže prohloubit?

Musí se rozlišit, o jakou diagnózu jde. Většina laboratoří řeší spánkovou apnoi. Její součástí je i denní spavost. Pokud jí trpí třeba řidič, který není včas diagnostikován a léčen, může u něj být vyšší riziko autohavárie. Pokud pacient se spánkovou apnoí není správně léčen, tak by neměl řídit. To se týká i narkolepsie, kdy může usnout za volantem. Myslím si ale, že za 21 let, které uplynuly od založení České společnosti pro výzkum spánku a spánkovou medicínu, jsme tady učinili, co se týká spánkových laboratoří, ohromný pokrok.

Prof. MUDr. Soňa Nevšímalová, DrSc.

Je erudovanou dětskou i dospělou neuroložkou, specializuje se zejména na spánkovou medicínu. Konkrétně na výzkum poruch spánku a bdění. Působí na Neurologické klinice 1. lékařské fakulty Univerzity Karlovy a Všeobecné fakultní nemocnice a je místopředsedkyní České společnosti pro výzkum spánku a spánkovou medicínu. Je mimo jiné držitelkou prezidentské medaile Za zásluhy.

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 »