Deprese mají i sloni. Stádo reaguje stejně jako my

18. 9. 2013

Sdílet

Autor: Isifa.cz
Slona trpícího depresí se ostatní zvířata snaží rozveselit. Plácají ho choboty, polévají vodou. Leč jen do času. Nemocného časem zaženou do buše. Podobnost s lidmi čistě náhodná?

Jaro nejkrásnější období roku. Příroda se probouzí k novému životu…

Podzim – čas mlžné melancholie. Příroda se zvolna ukládá ke spánku…

Víte co mají oba poetické popisy ročních období společného? Žně! Připouštím nadsázku ve společném jmenovateli. Leč pravdou je, že počet pacientů v psychiatrických ordinacích a množství klientů psychologů právě ve zmíněných obdobích výrazně roste. Občas se hovoří o „psychiatrických žních“.


Autor: Isifa.cz

Mám depku jako slon… I sloni trpí depresemi a stádo se k nim chová podobně jako lidé k nemocnému člověku

Je to čas značně psychicky náročný. Diagnóza mnoha příchozích je shodná – deprese. Většina z nich by na následující otázky odpověděla ano. Proč jen většina? Pro některé z nich je nesmírně těžké vstát z postele, natož pak odpovídat na cokoliv…

Test deprese – kolikrát odpovíte ano?

  1. Delší dobu se cítíte mizerně. Např. smutný, úzkostný, mrzutý, jakoby bez nálady?
  2. Situaci svou i v okolí vnímáte jako mizernou, zoufalou a bez naděje na zlepšení?
  3. Trpíte pocity viny a bezmoci vinu napravit?
  4. Váš život jako by přestal mít smysl?
  5. Co vás dříve bavilo, vás nyní netěší?
  6. Máte problémy se spánkem? Může jít o nespavost i stálou ospalost.
  7. Máte problémy s jídlem? Může jít jak o nechutenství, tak o přejídání.
  8. Cítíte se velmi unavení a odpočinek nepomáhá?
  9. Do ničeho se vám nechce, odkládáte, co jen lze …i to, co nelze?
  10. Uvažujete o tom, že lepší by bylo nebýt?
  11. Jste nervózní, podráždění, snadno vybuchnete i pro maličkost?
  12. Vaše paměť i soustředěnost jsou horší než dříve?
  13. Jste velice nerozhodní?
  14. Objevují se tělesné příznaky nepohody, např. bolest hlavy, bolesti v zádech, zácpa, průjem?
  15. Žijete ve stálém úzkostném napětí? Nedokážete se uvolnit?

Jsou lidé, kteří odpovědí 15× ano. Diagnóza je pak jasná. Jiní souhlasí jen s několika položkami. I to je dosti závažné. Ne vše lze jednoznačně vztáhnout jen k depresi. Ostatně i závažnost příznaků je rozličná.

První útok na led, chceme vidět balet…

Tak skandovali kdysi fandové brněnské hokejové Komety. Příznaky depresivních poruch nálady jsou úspěšnými útočníky na naši kondici. Balet určitě nepřipomínají. Spíše tanec živých s mrtvými – Dance Macabre.

První útočná trojice: Trvale špatná nálada, rozmrzelá „brblavost“, podrážděná zlostnost, nebo naopak zmlknutí a stažení se.

Druhá útočná trojice: Žádná radost, potěšení, spokojenost, cizím slovem anhedonie.

Třetí útočná trojice: Úzkost, strach, pocity bezmoci…

Jak známo „život není peříčko“ a může přinášet i reálné rozlady, pocity ztráty a smutky. Postižení bez deprese se s nimi dokáží vyrovnat. Překonat je a „jít dál“.

Deprese je něco jiného než přechodný smutek. Je to balvan, který se bez léčby dá stěží odložit. V nejlepším případě, pokud jde o lehkou depresi, je postižený bez nálady a žije dejme tomu jakž takž. Tj. hůř i pomaleji než dříve. U těžké deprese je velkým výkonem vstát z postele. Ženy se (za dopoledne) obvykle dokáží umýt a některé i namalovat. Muži se neholí. Obě pohlaví mají tendenci k sebeobviňování. Zmíněný pasivní obraz nemusí platit vždy. Variantou může být neklid, roztěkané pobíhání.

Přečtěte si: Neznámé sceletium má výrazné účinky na depresi

Deprese je popínavá rostlina. Zachytí se a roste

Vize krize je naplňována depresivními myšlenkami. Lze z nich utkat žíněnou košili kajícníka. Namátkou: Jsem nemožný! Všechno co se stalo, je má vina. Prohrál jsem život nejen sobě, ale i své rodině. Život je pes. Je toho všeho na mne příliš. Nejraději bych se zahrabal dva metry pod zem.

Depresivnímu člověku je jasná i černá budoucnost: Je zle a bude ještě hůř. Nikdy už to lepší nebude. Myšlenky se vnucují jakoby samy, automaticky. Jsou přinejmenším zkreslené a často bezdůvodné. V souhrnu vytvářejí tzv. naučenou bezmocnost a pocit méněcennosti.

Po takové, často dlouhodobé přípravě se ani nelze divit specificky depresivním formám chování. Patří mezi ně: pasivita, vyhýbání se činnosti, odkládání toho, co je jen trochu únosné a hledání zdůvodnění zoufalých pocitů. Např. zdravotní sestra vyhledala psychologa s tím, že vyhodila omylem svazek receptů. Mohou se dostat do nepovolaných rukou a být zneužity drogově závislými. Ukázalo se, že šlo o žádanky o léky v ústavní lékárně. Riziko zneužití bylo vzhledem k systému kontroly nulové. Zdá se, jako by deprese byla popínavá rostlina – zachytí se na tyčce – problému a roste.

Orientační zkouška deprese

Psychoterapeut John Tesdale vychází v „rychlém testu“ z určení zaměřeného na styl uvažování v náročných situacích s negativním dopadem na psychickou kondici. Prostě takových, v nichž se nic nedaří. Pro depresi skóruje:

  1. Jednoznačná tendence vidět za všech okolností vinu a chyby u sebe.
  2. Pocit vlastní neschopnosti až méněcennosti.
  3. Pesimismus – žádná naděje, že jednou (snad) bude lépe.

Jde vskutku jen o orientační míru. Každé z tří možných „ano“ za zamyšlení však určitě stojí.

Sloni mají jasno

Pro lehčí či středně intenzivní deprese je typická zvýšená potřeba povzbuzení, ocenění, naslouchání chmurným vývodům. Neboj, bude lépe. Se soucitem je to složitější. Depresanta může i popuzovat. Výroky typu: Hlavu vzhůru, nesmíš se tomu podávat! ho spíše popuzují. Trpělivost lidí v okolí nemocného bývá poměrně velká, ne však věčná.

I ve volně žijících stádech slonů jsou jedinci trpící depresí. Ostatní zvířata se je snaží rozveselit. Plácají je choboty, polévají vodou, i když jí mají málo. Leč jen do času. Najednou se situace jakoby zlomí a nemocného slona zaženou do buše. Určitá podobnost s lidmi je čistě náhodná?

K tématu: S optimismem na depresi nechoďte

Nebudu brát léky, nechci být narkoman

Nutno přiznat, že se socialistické zdravotní výchově něco přece jen podařilo. Vytvořit málem fobii z užívání léků u osob, jež jsou ohroženy ledasčím, nikoliv však drogovou závislostí. Tací se jednoznačně brání užívání léků. Soudí: To musím zvládnout sám!

Idea je to sice obdivuhodná, leč ne vždy reálná. Jistěže platí, že léky nemohou vyřešit těžkou situaci, ani odstranit závažné sociální nebo finanční problémy. Mohou ale obrazně připomínat bagr, který upraví pozemek tak, aby se na něm dalo stavět. Jinými slovy samy neřeší, leč učiní vás schopnými přiměřeně řešit. Z toho vyplývá, že antidepresiva nejsou léky „pro blázny“ ani „proti bláznění“. Jsou to léky proti depresi.

Dealeři farmaceutických firem dokáží velmi konkrétně motivovat lékaře k předpisu svých (zaručeně nejlepších) léků. Jsem psycholog, léky předepsat nemohu a tak nehrozí, že by mi některý dealer dal třeba jen reklamní tužku. Ostatně pokud by nad psychoterapií a poradenstvím drtivě zvítězily „léky na hlavu“, budu takříkajíc bez chleba. Bez sebemenších postranních či zištných důvodů mohu na základě zkušenosti říci: Vhodně zvolená, lékařem předepsaná antidepresiva leckdy dokáží zázraky.

Někteří psychologové tvrdí, že farmaka a „léčbu slovem“ není vhodné kombinovat. Myslím si pravý opak. Jen prosím nepovažujte za antidepresivum (návykový) lexaurin z kamarádčiny kabelky.

Přečtěte si: Antidepresiva: snadná cesta ke štěstí?

V čem může pomoci psycholog?

Podpoří vás v přesvědčení, že deprese je léčitelná nemoc. Nebude mentorovat ani šířit „dobré rady“ typu: Vzchop se. Chce to jen pevnou vůli. Uvědom si, že proti opravdovým nešťastníkům se máš jako prase v žitě.

Rozebere s vámi vaši situaci a pomůže pochopit, co se vlastně děje, a jaké to má souvislosti. I jaké jsou dopady deprese. Pomůže identifikovat vjemy vyplývající z černých brýlí choroby včetně katastrofických myšlenek. Nacvičí s vámi „stop techniku“ umožňující zastavit řetěz zmíněných vzájemně se jakoby potvrzujících úvah.

Naslouchá, aniž by kritizoval nebo kladl požadavky. Podpoří sebedůvěru nebo alespoň její zbytky, naznačí kroky usnadňující zvládání problémů. Máte-li vskutku depresi, přesvědčí vás, že psychiatra netřeba se bát. Naopak je dobré za ním zajít.

Čtěte téma: První pomoc při duševní krizi

Beckova stupnice deprese

Jde o velmi rozšířenou a objektivní sebeposuzovací škálu. Použít se jí dá i jako podkladu pro hodnocení eventuálního rozvoje deprese u lidí, jež dobře známe.

Zvolíme číselnou hodnotu odpovídající charakteristiky. Zaznamenáme. Takto získané hodnoty sečteme.

Nálada

0 – nemám smutnou náladu
1 – cítím se poněkud posmutnělý, sklíčený
2 – jsem stále smutný nebo sklíčený a nemohu se z toho dostat
3 – jsem tak smutný nebo nešťastný, že to už nemohu snést

Pesimismus

0 – do budoucnosti nepohlížím nijak pesimisticky nebo beznadějně
1 – poněkud se obávám budoucnosti
2 – vidím, že se už nemám na co těšit
3 – vidím, že budoucnost je zcela beznadějná a nemůže se zlepšit

Pocit neúspěchu

0 – nemám pocit nějakého životního neúspěchu
1 – mám pocit, že jsem měl v životě více smůly a neúspěchu, než obvykle lidé mívají
2 – podívám-li se zpět na svůj život, vidím, že je to jen řada neúspěchů
3 – vidím, že jsem jako člověk (otec, manžel apod.) v životě zcela zklamal

Neuspokojení z činnosti

0 – nejsem nijak zvlášť nespokojený
1 – nemám z věcí takové potěšení, jako jsem míval
2 – už mne netěší skoro vůbec nic
3 – ať dělám cokoliv, nevzbudí to ve mně sebemenší potěšení

Vina

0 – necítím se nijak provinile
1 – občas cítím, že jsem méněcenný, horší než ostatní
2 – mám trvalý pocit viny
3 – ovládá mne pocit, že jsem zcela bezcenný, zlý, provinilý člověk

Nenávist k sobě samému

0 – necítím se zklamán sám sebou
1 – zklamal jsem se sám v sobě
2 – jsem dost znechucen sám sebou
3 – nenávidím se

Myšlenky na sebevraždu

0 – vůbec mi nenapadne na mysl, že bych si měl něco udělat
1 – mám někdy pocit, že by bylo lépe nežít
2 – často přemýšlím, jak spáchat sebevraždu
3 – kdybych měl příležitost, tak bych si vzal život

Sociální izolace

0 – neztratil jsem zájem o lidi a okolí
1 – mám poněkud menší zájem o společnost lidí než dříve
2 – ztratil jsem většinu zájmu o lidi a jsou mi lhostejní
3 – ztratil jsem veškerý zájem o lidi a nechci s nikým nic mít

Nerozhodnost

0 – dokážu se rozhodnou v běžných situacích
1 – někdy mám sklon odkládat svá rozhodnutí
2 – rozhodování v běžných věcech mi dělá obtíže
3 – vůbec v ničem se nedokážu rozhodnout

Vlastní vzhled

0 – vypadám stejně jako dříve
1 – mám starosti, že vyhlížím staře nebo neatraktivně
2 – mám pocit, že se můj zevnějšek trvale zhoršil, takže vypadám dosti nepěkně
3 – mám pocit, že vypadám hnusně až odpudivě

Potíže při práci

0 – práce mi jde od ruky jako dříve
1 – musím se nutit, když chci něco dělat
2 – dá mi velké přemáhání, abych cokoliv udělal
3 – nejsem schopen jakékoliv práce

Únavnost

0 – necítím se více unaven než obvykle
1 – unavím se snáze než dříve
2 – všechno mne unavuje
3 – únava mne zabraňuje cokoli udělat

Nechutenství

0 – mám svou obvyklou chuť k jídlu
1 – nemám takovou chuť k jídlu jak jsem míval
2 – mnohem hůře mi teď chutná jíst
3 – zcela jsem ztratil chuť k jídlu

Hodnocení výsledků:

0–8 až 9: V normě, deprese zřejmě není přítomna

9–24: Lehká až střední deprese

25 a více: Těžká deprese

Čtěte dále: Stres se projeví v obličeji i držení těla

Autor článku

PhDr. Tomáš Novák – poradenský psycholog, autor řady článků a knižních publikací.

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