Anna Preclíková: Čas hormonální jógy pro muže teprve nastane

30. 8. 2018

Sdílet

Autor: Archív autorky
Lektorka hormonální jógové terapie se věnuje nejen ženám. Připravuje i speciální lekce pro muže či diabetiky. „Prostřednictvím hormonální jógy lze u mužů přispět ke znovutvorbě testosteronu a obnově erekce. Dále ke snížení stresu, celkovému uvolnění organismu a vyrovnanosti, což jsou faktory rovněž přispívající k obnově sexuálních funkcí, kvalitě spermií a plodnosti,“ říká k syndromu mužského stárnutí.

Na vysoké vystudovala marketing, ale po letech ve světě tvrdého byznysu se Anna Preclíková rozhodla vydat jinou životní cestou. Absolvovala profesní výcvik u brazilské terapeutky Dinah Rodrigues a stala se certifikovanou lektorkou hormonální jógové terapie (HJT) pro muže, ženy a diabetiky. Cvičení hormonální jógy totiž podle ní pomáhá měnit životy, a to nejenom ženám, o nichž se v souvislosti s hormonální jógou dosud převážně mluví: „Pomáhá ženám, mužům, nemocným… Důležité je rozhodnout se. Teprve v okamžiku, kdy si dovolíme udělat něco sami pro sebe, může se náš život začít zlepšovat.“

Aničku Preclíkovou jsem poznala na kurzu hormonální jógy pro ženy, který probíhal v Horních Počernicích. Zaujal mě nejen způsob, jakým své lekce vede (citlivě a důsledně zároveň), ale rovněž celá Aniččina osobnost, která mě jednoduše fascinovala. Jako by z ní vyzařovalo něco nesmírně ženského. Po skončení kurzu jsme se několikrát sešly. Naposledy po jejím čerstvém absolvování dalšího vzdělání v oblasti jógy. Výsledný rozhovor se tentokrát točí převážně kolem mužů a diabetiků ve vztahu k hormonální jógové terapii.


Autor: Archiv autorky

Anna Preclíková absolvovala profesní výcvik u brazilské terapeutky Dinah Rodrigues

Aničko, jaké byly tvé první zkušenosti s jógou a proč ses rozhodla zabývat se hormonální jógou profesionálně? 

Jóga jako taková mi pomohla najít cestu k sobě. Bylo to v období, kdy jsem opouštěla svět tvrdého byznysu, práci ve vydavatelském domě. Uvažovala jsem, jakým směrem se vydám, a zároveň cítila, kolik možností a nových cest se otevírá. Chtěla jsem pracovat s lidmi, něco hodnotného jim předávat. Po cvičení klasické hatha jógy jsem doslova objevila sama sebe. Poznala jsem cvičení, které mi celý život chybělo. Vnímala jsem změnu už po několika pohybech a dýchání. Odtud následoval jen krůček k józe hormonální. Slyšela jsem o úžasné terapii, která pomáhá ženám s početím, s problémy při menstruaci, s polycystickými vaječníky… Navíc jsem v práci měla kolegyni, která díky hormonální józe přišla do jiného stavu a porodila vymodlené miminko. Chtěla jsem tuto metodu vyzkoušet. A protože jsem pak byla nadšená, jak úžasně působí na mé tělo i psychiku, rozhodla jsem se hormonální józe věnovat naplno a šířit tuto myšlenku a radost mezi ostatní.

Musela sis následně doplnit nějaké vzdělání?

Rozhodně. Abych mohla hormonální jógu vyučovat, musela jsem absolvovat certifikovaný kurz hormonální jógové terapie přímo u zdroje, u autorky této úžasné metody, Brazilky Dinah Rodrigues. Kurzu se mohli zúčastnit pouze lidé, kteří již měli diplom učitele klasické jógy.

O Dinah se říká, že je velmi důsledná a přísná učitelka. Souhlasíš s tímto tvrzením?

Ano, v tom se všechny studentky shodují. Dinah je velmi náročná ohledně správného provedení cviků, což však považuji za správné. Z lidského hlediska na mě působila jako úchvatná, inspirativní a nesmírně vitální dáma. Musím zmínit, že letos v květnu jí bylo jednadevadesát let, a i přes tento svůj vysoký věk nadále jezdí po světě a školí své budoucí lektorky. Kurz hormonální jógové terapie jsem u Dinah absolvovala minulý rok. A protože Dinah navštívila Prahu i letos, pokračovala jsem ve svém vzdělávání a podařilo se mi zdárně projít dalšími výcviky HJT, které byly tentokrát zaměřeny na muže a diabetiky.

Jak bys stručně představila hormonální jógu pro ženy?

Hormonální jógová terapie dle Dinah Rodrigues je dynamická forma jógy, speciálně sestavená tak, aby reaktivovala tvorbu ženských pohlavních hormonů a uvedla je do rovnováhy. Představuje sadu speciálních cviků doplněných o dechové a další techniky. Je dynamická, ale nikoli technicky obtížná. Má léčebný a relaxační efekt. Vede k vyrovnání hladiny ženských hormonů, pomáhá při neplodnosti a premenstruačním syndromu. Cvičení je prospěšné i v období menopauzy, při emočních výkyvech a snížené funkci štítné žlázy. Dochází při něm k harmonizaci a reaktivaci žláz s vnitřní sekrecí. Cvičení je zaměřeno na vaječníky, štítnou žlázu a hypofýzu.


Autor: Archiv autorky

Vystudovala nejprve střední pedagogickou školu a v devadesátých letech, kdy bylo málo učitelů, za podpory metodičky dokonce dva roky učila. Život ji pak vedl trochu jiným směrem, přesto se k předávání vědomostí nakonec vrátila.

Jedná se o převratnou novinku?

Kdepak. HJT pro ženy je na světě už téměř dvacet let. Dinah ji sestavila v devadesátých letech minulého století. Výsledku předcházelo studium ženské fyziologie, spolupráce s fyzioterapeuty a lékaři a samozřejmě učení u jógových mistrů. Vznikla tak metoda, která by se dala označit za malý zázrak. Během mé roční praxe jsem byla opakovaně svědkem radosti, kterou ženy prožívají, když se jim díky HJT podaří otěhotnět. Třeba první miminko ve třiačtyřiceti letech, anebo situace po vysazení dlouhodobě užívané hormonální antikoncepce, kdy menstruace ne a ne přijít. To se bohužel stává. No a už během několika týdnů trvání kurzu mi ženy hlásí, že menstruace přišla a problém byl odstraněn, došlo k vyrovnání hladiny pohlavních hormonů.

Pojďme se nyní věnovat mužům v souvislosti s HJT.

Lektorský kurz HJT pro muže, který jsem letos absolvovala, měl podtitul andropauza. Dinah nám kladla na srdce, abychom s tímto pojmem zacházeli opatrně a do názvu svých lektorských kurzů ho raději nedávali, protože muži jsou zkrátka muži a k období svého přechodu se staví odmítavě. O nějaké andropauze sice slyšeli, ale konkrétně jich se rozhodně netýká.

Mužské klimakterium

Tzv. andropauza má podobné příznaky jako přechod u žen, které jsou však velmi individuální. K nim se přidává pokles sexuální výkonnosti, sexuálního apetitu, případně i poruchy erekce.

Muži samozřejmě andropauzu mají a zažívají řadu symptomů a rizik s ní spojených. Přibližně kolem padesátého roku věku začíná hladina mužských pohlavních hormonů pozvolna klesat. Některé publikace uvádějí, že se tak děje mnohem dříve, dokonce již po třicítce, ale ten padesátý rok je zlomový, protože mezi padesátým a padesátým pátým rokem se příznaky nedostatku testosteronu začínají projevovat. Nutno podotknout, že hladiny těchto hormonů klesají pozvolna a skutečná andropauza, tedy naprosté zastavení tvorby testosteronu, nastává až ve velmi pozdním věku muže. Nemáme-li na mysli tuto konečnou fázi, je možná vhodnější používat termín „syndrom mužského stárnutí“. Ten s sebou přináší změny sexuální výkonnosti, dynamiky osobnosti, výkyvy psychiky a nálad. Prostřednictvím HJT lze u mužů přispět ke znovutvorbě testosteronu a obnově erekce. Dále pak ke snížení stresu, celkovému uvolnění organismu a vyrovnanosti, což jsou faktory rovněž přispívající k obnově sexuálních funkcí, kvalitě spermií a plodnosti.

Jak náročná je sestava cviků pro muže a čím se od ženské verze liší? 

Jedná se o dynamickou sestavu cviků, zaměřených na stimulaci žláz s vnitřní sekrecí. Podobně jako u té ženské trvá zvládnutá sestava přibližně třicet až čtyřicet minut. Cviky nejsou náročné. I zde jsou používány dechové techniky, včetně hlubokého břišního dýchání, a prvky relaxace spojené s vizualizací, takzvané jóga nidry. Relaxace je zde malinko jiná než u ženské sestavy, taková chlapská. I ona působí psychosomaticky a antistresově. Jen dodávám, že aby byla sestava účinná, je potřeba zacvičit ji celou, nevynechávat relaxační části.

Často v souvislosti se cvičením zmiňuješ faktor stresu…

Stres je bohužel součástí dnešní doby. Když přijdeš na kurz hormonální jógy, neznamená to, že stres přestane existovat. Součástí výuky je předání antistresových technik, které pomáhají zklidnit napjatou mysl a dát tělu pokyn, aby relaxovalo. Během relaxačních fází cvičení dochází k uvolnění nervového systému. Relaxačními technikami uvolňujeme tělo a mysl a stáváme se pozorovateli sebe samých, což umožňuje vnést do našeho života nadhled a klid. Najednou zjistíme, že emoce nad námi nemají takový vliv. Že je dokážeme zachytit, uvědomit si je a popřípadě odhalit, proč se do nich cyklíme, co je skutečnou příčinou problému.

Mají větší zájem o HJT ženy, nebo muži?

Zatím převažují ženy. Ženy zkrátka daleko více řeší těhotenství, přechod, problémy s vaječníky. Jsou zvyklé o svých problémech hovořit a vzájemně sdílet zkušenosti. Věřím, že čas HJT pro muže ještě přijde. Že oni svou cestu objeví. A moc ráda bych se o to sama zasloužila.

Nehraje u mužů roli tak trochu ostych? Myslíš, že budou chodit k ženám-lektorkám? 

Myslím, že někteří muži naopak ženské vedení a přístup ocení. Jiní zase upřednostní lektora v podobě muže. Každému vyhovuje něco jiného. Nicméně, ostýchavým zájemcům o cvičení HJT mohu vyhovět například prostřednictvím individuální výukové formy. A napadá mě ještě další možnost: Nedávno mě jedna z žen inspirovala nápadem vyzkoušet kurzy párové hormonální terapie. Zkrátka učit se hormonální jógu v páru, rovnou se svým manželem či partnerem. I takto by bylo možné individuální lekce upravit.

Považuješ se za přísnou, nebo hodnou lektorku?

Jsem sama zvědavá, jak se mužům se mnou bude pracovat. Zda ocení můj precizní přístup a smysl pro detail, kterým jsem vyhlášená u žen. Někdy si říkám, jestli nejsem důsledná až příliš, avšak v konečném důsledku je velmi důležité, aby cviky byly prováděny správně a ženy i muži odcházeli z kurzu s vědomím, že si něco odnášejí. Označila bych se za důslednou a pečující lektorku.

Co bys řekla o hormonální sestavě pro diabetiky?

Jedna z forem cvičení HJT byla Dinah speciálně navržena pro pacienty s diabetem. Sestava opět vychází z fyziologie a je obohacena o dechové a relaxační prvky. Jejím prostřednictvím dochází k aktivaci slinivky, ledvin, nadledvinek, jater a hypofýzy. Cvičení přispívá k celkovému snížení hladiny krevního cukru, harmonizuje slinivku a odbourává stres. Diabetiků v poslední době rapidně přibývá. Za původce tohoto civilizačního onemocnění je považována nejen genetika, ale také nezdravý životní styl a zmiňovaná přemíra stresu. Stres zvyšuje hladiny cukru v krvi.

Je cvičení určeno vyloženě lidem nemocným?

Jedná se o sérii cviků primárně určených pro diabetiky, avšak cvičit ji může každý, kdo si potřebuje aktivovat třetí čakru neboli zažívání. Cvičení vede k posílení imunity, pomáhá játrům a ledvinám s detoxikací. Když jsem se připravovala na lektorské kurzy, tak jsem tuto sestavu cvičila opravdu poctivě, abych přísným měřítkem Dinah prošla. A musím říct, že jsem si ji doslova zamilovala. Sama se potýkám se sníženou funkcí slinivky břišní, mé tělo netráví pšenici. Během cvičení a po něm se cítím velice dobře, připadám si více ukotvená sama v sobě. Mám zkrátka radost ze života. Doporučila bych diabetickou sestavu všem lidem, kteří čelí problémům s trávením.

Za jak dlouho se dá sestava odcvičit a čím se odlišuje od ženské a mužské varianty hormonální jógy?

Časově je zvládnutelná přibližně jako ta ženská. Já osobně mám diabetickou sestavu hotovou rychleji, tak do třiceti minut. Má-li pokročilý cvičenec pocit, že již sestavu ovládá, a začíná se nudit, je možné přidat nové cviky od Dinah, nebo ty stávající obměnit, aniž by došlo ke změně efektivity (například zapojením jiných svalů). Cvičení je doprovázeno nádhernými závěrečnými harmonizacemi, zaměřenými na relaxaci a pročištění myšlenek, pocitů a emocí.


Autor: Archiv autorky

Anna Preclíková: Řekla bych, že cvičení hormonální jógy pomáhá měnit životy. Ženám, mužům, nemocným. Důležité je rozhodnout se. Teprve v okamžiku, kdy si dovolíme udělat něco sami pro sebe, může se náš život začít zlepšovat.

Je sestava zvládnutelná i pro obézní jedince? 

Určitě. Cviky lze přizpůsobit individuálním omezením cvičence, aniž by došlo ke ztrátě jejich efektivity. Nezáleží na tom, zda je cvičenec obézní, nebo má endoprotézu či bolavé koleno. Podstatné je prostě začít. Dinah například měla klientku s již vážným poškozením nohy. U diabetiků dochází ke špatnému prokrvení periferních částí těla. Tato paní měla natolik poškozenou končetinu včetně prstů, že nemohla nosit ani sandály. Při pravidelné praxi hormonální jógy se rány na její noze vyléčily a mohla znovu nosit otevřenou obuv.

Zaujalo mě, že kromě lektorování se zabýváš i koučováním.

Koučink vnímám jako práci s lidmi, jejich podporu a provázení. Už když jsem jako inženýrka ekonomie pracovala v čistě obchodním prostředí, dostávalo se mi od klientů pozitivní zpětné vazby. Ráda jsem je provázela, hledala východiska a řešení. Kontakt s lidmi mi byl příjemný a oni to podle ohlasů vnímali podobně. Nyní jako certifikovaná životní koučka (akreditace MŠMT) nabízím tuto službu dále. Je určena osobám v nejrůznějších životních situacích, které potřebují ani ne tak poradit, jako najít východisko pomocí vhodně zvolených otázek a technik. Na koučování se mi líbí, že nejsem v roli toho, kdo by radil, ale spíše v úloze naslouchajícího. Samozřejmě musím klást i otázky. Ty dostávají klienta hlouběji a hlouběji, až nakonec potřebnou odpověď vysloví sám, protože ji má celou dobu ukrytou uvnitř sám sebe. Lektorování a koučink se vzájemně doplňují. Někdy je potřeba působit na fyzické tělo prostřednictvím cvičení a jindy, aby člověk byl spokojený a šťastný, potřebuje získat mentální podporu, odblokovat se a nalézt východisko v náročné životní situaci. V současnosti jsem doslova propadla studiu psychosomatiky – hledám souvislosti mezi projevy tělesných symptomů a našimi, bohužel nezdravými, mentálními programy.

Anna Preclíková

Vystudovala marketing na Vysoké škole finanční a správní v Praze. V roce 2014 opustila svět tvrdého byznysu a rozhodla se vydat jinou životní cestou. Absolvovala profesní výcvik u brazilské terapeutky Dinah Rodrigues a stala se certifikovanou lektorkou hormonální jógové terapie pro muže, ženy a diabetiky.

Působí rovněž jako akreditovaná lektorka dalšího vzdělávání a životní koučka. Je vdaná, s manželem a osmnáctiletým synem bydlí v okrese Praha-východ. Jejím největším koníčkem je práce, tedy jóga. Ve volném čase se rovněž věnuje studiu psychosomatiky, také hodně cestuje a vaří. Má ráda přírodu a koně, oslovila ji metoda přirozené komunikace.

Vedle kurzů HJT pro ženy nyní připravuje lekce pro muže a také pro diabetiky, více informací zveřejňuje na svém webu www.hormonalni-joga-cviky.cz.

Autor článku

Pro internetová a tištěná média píše od roku 2002. Zajímá se především o sociální politiku a zdravý životní styl.

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