Depresi provází smutek i myšlenky na smrt. Jak ji úspěšně léčit?

20. 10. 2021 8:00
přidejte názor
Autor: Shutterstock

Smutek k životu patří stejně přirozeně jako radost či vztek. Pokud se ale vyskytuje bez zjevného důvodu nebo nás začne omezovat v každodenním životě, stává se nebezpečným. Může se totiž jednat o příznak deprese, duševního onemocnění, které se projevuje patologickým smutkem a celkovou ztrátou zájmu. Jeho průběh je různý – od snížené schopnosti prožívat radost, až po myšlenky na smrt či pokusy o sebevraždu.

Co je to deprese?

Co se dozvíte v článku
  1. Co je to deprese?
  2. Nejčastější příčiny deprese
  3. Příznaky deprese
  4. Typy deprese
  5. Depresivní poruchy
  6. Diagnostika deprese
  7. Léčba deprese
  8. Rizika deprese
  9. Prognóza nemoci

Hovorovým spojením „mám depresi“ lidé obvykle demonstrují špatnou náladu, která se nijak nevymyká normálu. Ve skutečnosti se však pod pojmem deprese ukrývá závažné duševní onemocnění, které je typické dlouhotrvajícím smutkem, úzkostí i děsivými myšlenkami na smrt. Na rozdíl od lidové „depky“, kterou dotyční prožívají v důsledku nějaké životní události, v případě reálného onemocnění důvod pro negativní pocity častokrát zcela chybí, anebo není tak silný, aby mohl útlum takového rozsahu reálně vyvolat.

Depresivní porucha patří mezi afektivní poruchy a postihuje typicky pacienty kolem 25. roku života. V posledních letech ale věkový průměr nemocných výrazně klesá, a tak kromě teenagerů není zcela výjimečná ani deprese u dětí. Mezi ohroženou skupinu patří zejména ženy, u kterých je rozvoj nemoci někdy přisuzován častěji se měnící hladině hormonů. Právě to může být důvod, proč je onemocnění části pacientek diagnostikováno během gravidity.

Kromě deprese v těhotenství, se kterou se podle statistik potýká každá 5. nastávající maminka, se u žen vyskytuje také deprese po porodu, tedy poporodní deprese, ale i deprese v menopauze. Ta kromě poklesu hladiny hormonů často souvisí také s procesem neplodnosti, stárnutí a myšlenkami na blížící se stáří a smrt. Duševním onemocněním o něco častěji trpí také starší lidé, zvláště pak ti, kteří žijí sami anebo v ústavech sociální péče.

Nejčastější příčiny deprese

Na tom, co přesně depresi způsobuje, se odborníci zcela neshodnou. Obecně se ale udává, že rozvoji onemocnění často předchází nějaký stresující zážitek. Dále se za spouštěč nemoci označuje:

  • úraz, při kterém došlo k poškození mozku,
  • vystavení toxickým látkám,
  • hormony,
  • dědičnost.

V rámci dělení deprese na základě jejích příčin pak rozlišujeme její endogenní a exogenní formu.

Endogenní deprese

Endogenní deprese vzniká v důsledku příčin vnitřního charakteru, které na první pohled nemusejí být příliš patrné. Konkrétněji za ní stojí nevyváženost chemického prostředí v mozku, k čemuž mají někteří jedinci vrozené předpoklady, jindy se ale onemocnění rozvine bez zjevných důvodů. Jedná se o nejzávažnější formu deprese, přičemž příbuzní nemocného mají až třikrát větší pravděpodobnost, že se u nich onemocnění rozvine.

Exogenní deprese

Jak už název napovídá, v případě exogenní deprese stojí za obtížemi faktory přicházející zvenčí. Obtíže se typicky rozvíjejí po složité životní události, jakou může být třeba smrt blízké osoby, rozvod nebo finanční potíže. Vyvolat depresi ale může i stresující zážitek, jako přepadení, znásilnění, živelná pohroma či pandemie.

Příznaky deprese

Pokud jde o to, jaké má deprese projevy, v tomto případě velmi záleží na subjektivním vnímání každého pacienta. Onemocnění se totiž může projevovat mnoha odlišnými způsoby. S tím, co trápí jednoho pacienta, se tak ten druhý vůbec potýkat nemusí. To samé platí samozřejmě i naopak. Obecně se za psychické a fyzické projevy deprese považují tyto:

  • nedostatek energie,
  • smutná nálada,
  • plačtivost,
  • úzkost,
  • duševní napětí,
  • ztráta schopnosti těšit se ze života,
  • poruchy spánku,
  • pocit vlastní zbytečnosti,
  • změny nálad,
  • ztráta libida,
  • poruchy soustředění,
  • hádavost,
  • změna váhy.

Jedná se pouze o výčet projevů deprese, s kterými se pacienti potýkají. Kromě výše zmíněných je pro ně typický také prohlubující se sociální distanc, jenž souvisí se ztrátou koníčků, které dotyčného dříve naplňovaly. Celkový stav pacienta se samozřejmě vždy odvíjí od stupně deprese. Nemoc navíc postižení často přičítají vlastnímu selhání, slabosti či lenosti. Emoce a myšlenky, které je provází, dotyční obvykle nejsou schopní ani popsat. V celé situaci se ztrácejí a připadá jim bezvýchodná.

Zcela typické jsou pro depresi například tyto myšlenky:

Uklidil jsem v garáži všechno nářadí, už to opravdu bylo potřeba. Myslím, že bych z toho měl mít radost, ale nic necítím. Je mi to lhostejné, jako ostatně všechno.

Jenom ležím nebo sedím. Nechce se mi jíst, nepřevlékám se, nečistím si zuby. Telefon se mi vybil před měsícem a nedala jsem ho nabít. Nedokážu chtít nic kromě smrti. Děsí mě představa, že takhle to bude navždy, a zatím marně sbírám sílu, abych s tím skoncovala.

Na rozdíl od nemocí, které se projevují viditelnými příznaky, nemocného s depresí okolí nemusí vůbec poznat. A ani pacienti samotní o svých problémech zpravidla nemluví. V takových případech je nutné, aby zapracovalo pacientovo okolí a všímalo si jakékoli změny chování.

S depresí jdou rovněž ruku v ruce myšlenky na smrt či sebevraždu, v horším případě i pokusy o ni. Z toho důvodu se nemoc rozhodně nevyplatí podceňovat a bagatelizovat.

Typy deprese

Obecně depresi dělíme na základě závažnosti jejího průběhu na:

  • mírnou – pacient se nutí do běžných činností, nic ho netěší, ztrácí chuť k jídlu a stahuje se do sebe, své povinnosti ale plnit zvládá,
  • středně těžkou – nemocný bojuje s pocitem neštěstí, nic ho nebaví a jeho stav mu neumožňuje pracovat,
  • těžkou – postižený je ve velmi silném útlumu, není schopný vykonávat ani každodenní činnosti, je celkově zpomalený, utápí se v černých myšlenkách, může se u něj objevit neklid či dezorganizované chování.

Mírnou a středně těžkou depresi mohou doprovázet také takzvané agitované formy deprese. Jedná se o úzkost, psychomotorický neklid, posedlost horečnatou činností či bezcílným pobíháním. Pro tyto dvě formy onemocnění jsou navíc typické i fyzické projevy deprese, kromě výše popsaných obtíží tak pacienty běžně trápí také:

U nejtěžší formy deprese mohou nemocného pronásledovat také psychotické projevy, jakými jsou typicky bludy či halucinace.

Depresivní poruchy

Depresi lze dále dělit na další podtypy, přičemž pro každý z nich je typický jiný průběh. Lišit se mohou i konkrétními příznaky.

Klinická deprese

Základním typem onemocnění je klinická deprese, jež se projevuje dlouhotrvajícími pocity smutku a neštěstí, melancholií, ale i neschopností prožívat pozitivní emoce. Pacienta zpravidla trápí také nedostatek energie a současně klesá jeho zájem o dosavadní koníčky a sociální život. Zhoršuje se rovněž jeho schopnost koncentrace. Klid nemá dotyčný obvykle ani večer, kdy se dostavují obtíže spojené se spánkem. Obecně jsou stavy deprese nejsilnější ráno po probuzení.

Maniodeprese

Maniodeprese, maniodepresivní psychóza či také bipolární porucha. Tři různé názvy označují jeden a ten samý problém, který úzce souvisí právě s depresí. Pacienti totiž střídavě zažívají epizody mánie a deprese, a to během různě dlouhých časových období. A zatímco během deprese pacienty trápí příznaky typické pro toto onemocnění, tedy smutek, úzkost, nezájem o sociální život, ale také duševní neklid a útlum, manická epizoda jim přináší pocit absolutního štěstí, hyperaktivitu, roztěkanost, nerozvážnost, melodramatické reakce, pocit moci, zuřivost a agresi.

Poporodní deprese

Zcela specifickým typem deprese je poporodní deprese, kterou možná znáte také pod pojmem poporodní psychóza. Jak už název napovídá, postihuje pouze čerstvé matky, a to s odstupem několika týdnů až měsíců po porodu. Pro nemoc je typická úzkost a deprese, kterou doprovází také výrazná únava. Pacientky přestávají být schopné pečovat o dítě i samy o sebe, výjimkou nejsou ani bludy a halucinace. Některé ženy tak musejí být hospitalizovány.

Poporodní depresi si lidé často pletou se stavem, který se označuje jako poporodní blues, tedy s pochmurnou náladou doprovázenou plačtivostí a pocitem neschopnosti. Tyto obtíže zažívá velké množství novopečených maminek a jsou zpravidla důsledkem velké životní změny. Tyto ženy mívají strach z toho, že mateřskou roli nebudou schopny zvládnout, děsí je rovněž obavy o zdraví miminka. Tato nálada se objevuje zhruba 2–3 dny po porodu, kdy se výrazně mění hladina hormonů.

Deprese v menopauze

Příznaky deprese se velmi typicky pojí také s obdobím menopauzy, tedy klimakteria nebo také přechodu. Stejně jako u poporodní deprese, i v tomto případě za obtížemi stojí měnící se hladina hormonů. Na rozvoj deprese má ale vliv také celá řada dalších faktorů, typicky hlavně ztráta plodnosti, stárnutí a strach z blížící se smrti.

Dystymie

Dystymie je afektivní porucha, která tak trochu balancuje na pomezí deprese. Je totiž typická obecně chmurným postojem k životu, kdy je nemocný mnohem citlivější než jeho okolí a velice špatně snáší jakékoli životní nezdary, a to včetně těch naprosto banálních. Tito lidé se rovněž neumějí uvolnit, chybí jim smysl pro spontánnost a umění improvizace. Paradoxem je, že i přesto, že nejsou příliš schopní prožívat radostné chvíle, stávají se často nejúspěšnějšími pracovníky. Zaměstnání totiž zpravidla věnují veškerou energii.

Larvovaná deprese

Larvovaná deprese se od ostatních podtypů nemoci liší především tím, že se neprojevuje psychickými obtížemi. Hlavní roli hrají v tomto případě fyzické projevy deprese. Konkrétně nemocné zpravidla trápí třeba:

Nevýhodou této formy deprese je fakt, že bývá velice obtížně diagnostikovatelná. Nemocný tak musí zpravidla nejprve projít celou řadou vyšetření.

Diagnostika deprese

Deprese je pacientovi diagnostikována v momentě, kdy její epizoda trvá minimálně po dobu dvou týdnů a zároveň není způsobena požitím psychoaktivních látek. Aby se jednalo čistě o depresi, vyloučeny musejí být také manické či hypomanické příznaky. Kromě toho dotyčného musí trápit alespoň dva z následujících projevů:

  • ztráta radosti a zájmu o aktivity, které ho do té doby bavily,
  • depresivní nálada různě silného stupně, která převažuje po většinu dne,
  • snížená energie či zvýšená únava.

Dále je třeba, aby se u pacienta vyskytoval jeden z následujících příznaků:

  • myšlenky na smrt či sebevraždu,
  • bezdůvodné výčitky a pocity viny,
  • ztráta sebedůvěry a sebeúcty,
  • nesoustředěnost, nerozhodnost,
  • změna chuti k jídlu,
  • poruchy spánku.

Někteří lidé se také ptají, zda pomůže k odhalení deprese test. Ačkoli se tento postup nedá považovat za oficiální diagnostiku, může pacientovi sloužit jako částečné potvrzení toho, že ho skutečně trápí psychické problémy, a to ještě před návštěvou lékaře. Vyplnit si dotyčný může například Beckovu stupnici deprese, která rovněž odhalí potenciální závažnost onemocnění.

Léčba deprese

Účinný způsob, jak se zbavit deprese, představují už více než 60 let léky na depresi, konkrétně tedy antidepresiva. Ta musí dotyčný brát dlouhodobě, nikoli však po celý život, jak se někteří mylně domnívají. Nástup účinků se zpravidla objevuje po 10 dnech až 3 týdnech od prvního užití, přičemž jako první si pozitivních změn všímá pacientovo okolí, až později i on sám.

Antidepresiva na úzkost a depresi představují sloučeninu hned několika účinných látek, které pozitivně ovlivňují nerovnováhu mozkových neurotransmiterů. I přes poměrně konkrétní název se tyto léky nepoužívají jen na léčbu deprese, lékaři je nasazují i v případě:

Dobrou zprávou je, že lze užívat také antidepresiva v těhotenství, a to bez obav z toho, že by měla negativní vliv na plod.

Co se týče toho, jak dlouho brát antidepresiva, rozhodně se nejedná o celoživotní povinnost. Je však nutné setrvat ještě několik měsíců po odeznění akutních příznaků, dokud se pacientův stav zcela nestabilizuje. Následně je medikamenty možné vysadit. Podstatné ale je, že toto rozhodnutí musí vždy učinit lékař!

V případě předčasného vysazení antidepresiv by se pacientův stav mohl opět zhoršit a došlo by k opětovnému rozvoji obtíží. Koneckonců, právě předčasné vysazení antidepresiv stojí za velkým množstvím relapsů. Vliv na neúspěšnou léčbu antidepresivy má také:

  • nedostatečné dávky léků,
  • časté a neindikované změny v medikaci,
  • nepodání léků proti úzkosti v případě indikace,
  • nedostatečná komunikace mezi lékařem a pacientem.

Kolem antidepresiv koluje celá řada mýtů. Tím nejrozšířenějším je, že způsobují závislost a zároveň mění osobnost nemocného. Není to pravda. Kromě toho, že tyto léky nezpůsobují závislost, jsou k lidskému organismu také velice šetrné. Není tedy nutné přemýšlet nad tím, jak se dostat z deprese bez antidepresiv.

Medikamentózní léčbu může někdy lékař doplnit o doporučení na psychoterapii. Ta má stejně jako antidepresiva prokazatelný vliv na strukturu centrální nervové soustavy. Vyžaduje ale mnohem větší úsilí, a vzhledem k tomu, že zpravidla není hrazena pojišťovnou, stojí také větší množství peněz. Složitější je tato léčba i v otázce její časové náročnosti.

Oproti lékům se její účinky projevují po delší době, výsledky navíc nebývají tak příznivé, což je dáno tím, že mají pacienti tendenci sezení zanedbávat, a to hlavně v momentě, kdy dojde ke zlepšení obtíží. Psychoterapie se proto doporučuje spíše u reaktivních typů deprese, anebo v kombinaci se zmíněnými antidepresivy.

Přírodní antidepresiva

Některé jedince rovněž zajímá, zda je možné koupit antidepresiva bez předpisu. Vzhledem k tomu, že jsou veškerá antidepresiva na předpis, tato možnost bohužel není. Pokud vás však trápí skleslá nálada a byla u vás zároveň vyloučena deprese, můžete zkusit některá „přírodní antidepresiva“, kam se řadí:

Léky na uklidnění pak může nahradit také čokoláda, kešu ořechy, ale i běžné aktivity, jako je poslech hudby. V případě psychické nepohody je dobré vsadit také na aromaterapii a masáž, která pomůže uvolnit nahromaděný stres.

Rizika deprese

Pravděpodobně nejzávažnějším rizikem, které se s depresí přímo pojí, jsou myšlenky na smrt či sebevraždu, o kterých pacienti se svým okolím ale zpravidla nemluví. Hrozí u nich navíc mnohem vyšší pravděpodobnost, že se o sebevraždu nakonec skutečně pokusí. Nemoc jako takovou se proto rozhodně nevyplácí podceňovat, stejně tak není dobré pacienty s depresí stigmatizovat. Přeci jen se jedná o plnohodnotnou nemoc, kterou si stejně jako pacienti s cukrovkou, hepatitidou či rakovinou sami nevybrali.

Prognóza nemoci

Trvale se z deprese vyléčí zhruba polovina pacientů, zhruba čtvrtina se pak potýká s jejími opakovanými vzplanutími, kterými jsou nejvíce ohroženi ti jedinci, u kterých se onemocnění objevilo zcela náhle.

Zdroje: cpzp.cz, vipharm.cz, vitalia.cz

  • Žádné názory
  • Našli jste v článku chybu?
'; 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'; } }
'; 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 »