Jírovec maďal zdobí parky, aleje i zahrady. Z jeho semen se připravují léčivé tinktury a masti

28. 2. 2024 7:30
přidejte názor
Autor: Depositphotos/NewAfrica

Kdo by neznal koňské kaštany, z nichž si děti na podzim vyrábí nejrůznější panáčky, zvířátka nebo jiné dekorace. Jedná se o semena stromu označovaného jako jírovec maďal, který dnes roste v mírném pásmu celého evropského kontinentu. Své využití si našel ve farmaceutickém a kosmetickém průmyslu, ale vysazuje se také jako okrasná dřevina.

Co je jírovec?

Co se dozvíte v článku
  1. Co je jírovec?
  2. Jírovec maďal
  3. Jak vypadá jírovec maďal?
  4. Kde roste jírovec maďal?
  5. Obsažené látky
  6. Jaké má jírovec maďal léčivé účinky?
  7. Má jírovec maďal nežádoucí účinky?
  8. Jaké má jírovec maďal využití?
  9. Pěstování koňského kaštanu

Jírovec (latinsky Aesculus) je rostlinný rod z čeledi mýdelníkovité (Sapindaceae), který je mezi lidmi známý jednoduše jako kaštan. Zahrnuje řadu opadavých stromů (nebo vzácněji keřů), které se vyznačují bohatě rozvětvenou korunou. Zajímavá je také přítomnost velkých zimních pupenů, jež mohou být v některých případech pryskyřičnatě lepkavé a schované pod překrývajícími se šupinami.

Listy jírovců bývají dlanitě složené, což znamená, že je tvoří několik samostatných lístků s pilovitými či vroubkovitými okraji. Později se objevují také nápadné květy, které jsou uspořádané do válcovitých nebo kuželovitých thyrsů (druh složeného květenství). Plodem jsou pak kulovité až hruškovité tobolky, které mohou mít hladký, bradavčitý či ostnitý povrch a obsahují malé množství semen.

V současné době botanikové rozlišují celkem 12 různých druhů kaštanů, ale i celou řadu hybridů, které vznikly zkřížením některých z původních zástupců. Setkat se s nimi můžete především na území Evropy, Asie a Severní Ameriky. Právě na americkém kontinentě roste nejvíce druhů (celkem 7), zatímco v Asii najdete řadu endemitů typických pouze pro konkrétní oblasti.

Jaké má jírovec druhy?

  • Jírovec maďal (Aesculus hippocastanum),
  • jírovec žlutý (Aesculus flava),
  • jírovec čínský (Aesculus chinensis),
  • jírovec lysý (Aesculus glabra),
  • jírovec kalifornský (Aesculus californica),
  • jírovec indický (Aesculus indica),
  • jírovec drobnokvětý (Aesculus parviflora),
  • jírovec pávie (Aesculus pavia),
  • jírovec lesní (Aesculus sylvatica),
  • jírovec japonský (Aesculus turbinata),
  • Aesculus parryi,
  • Aesculus wangii.

Na evropském území je původní pouze jediný druh, což je konkrétně jírovec maďal, jenž pochází z Balkánského poloostrova. Právě ten se hojně pěstuje také v České republice, kde můžete narazit na celou řadu různých kultivarů. Rozšířil se sem údajně ve druhé polovině 16. století a v současné době patří mezi velmi oblíbené druhy vysazované v parcích či alejích.

Kromě toho se pak můžete setkat také s různými hybridy a vyšlechtěnými druhy, kam patří například jírovec Bushův (Aesculus x bushii), jírovec pleťový (Aesculus x carnea) nebo jírovec smíšený (Aesculus x hybrida). Botanikové sem ovšem řadí také jírovec marylandský (Aesculus x marylandica), jenž roste na území Severní Ameriky, jírovec proměnlivý (Aesculus x mutabilis) nebo jírovec přehlížený (Aesculus x neglecta). [1, 2, 3, 4, 5]

Jírovec maďal

Pravděpodobně nejznámějším zástupcem výše popsaného rodu je jírovec maďal (latinský název Aesculus hippocastanum), což je opadavý listnatý strom dorůstající zhruba do výšky 30 m. Mnohdy se označuje také jako kaštan koňský a kromě toho se můžete setkat i s dalšími lidovými názvy, jako je planý kaštan, divoký kaštan nebo pouze maďal. V angličtině je pak známý jako horse chestnut.

Spoustu lidí pravděpodobně zajímá, proč se vlastně tomuto stromu říká koňský kaštan. Jizva, která zbyde na místě, odkud upadl list jírovce, vypadá totiž jako okované koňské kopyto. Kromě toho zde hraje roli podobnost s pravým kaštanem a někteří tvrdí, že plod tohoto stromu lidem kdysi připomínal koňské oko, zatímco semena mohou pomoci koním, které trápí dýchavičnost.

Danou rostlinu byste si však rozhodně neměli plést se zmiňovaným pravým kaštanem, což je kaštanovník setý (Castanea sativa). Jeho kaštany jsou totiž jedlé a připravují se třeba jako pečená pochoutka, která se prodává na trzích. Kaštany jírovce maďalu však lidé nikdy nekonzumují, ale používají je například jako krmivo pro lesní zvířata. [6, 7, 8, 9]

Jak vypadá jírovec maďal?

Mezi charakteristické znaky koňského kaštanu patří především jeho mohutná, kulovitá koruna, jejíž větve bývají ve stáří převislé. Kmen v průměru dosahuje klidně i velikosti 2 m. V mládí bývá porostlý hladkou borkou tmavě šedé barvy, která však postupem času hrubne a začíná se v malých šupinách odlupovat. Její zbarvení se mění na černavé, ale na lomu mívá červenohnědý odstín.

Na větvích má jírovec maďal listy, které jsou vstřícné, dlouze řapíkaté a dlanitě složené. Skládají se z pěti až sedmi samostatných lístků podlouhle obvejčitého tvaru, jejichž okraje jsou nestejně zubaté. Obvykle dorůstají do délky 10–25 cm, přičemž lícová strana je lysá a sytě zelená, na rubu se však nachází rezavé chloupky.

Pokud jde o to, jaké má jírovec maďal květy, typicky bývají uspořádané ve vzpřímených latách, které jsou bohaté, husté a zhruba 30 cm dlouhé. Jejich kalich je zelený a chlupatý, zatímco korunní lístky mají bílou barvu, zprohýbané okraje a objevují se na nich žluté či růžové skvrny. Pupeny jsou velké a lepkavé. Plod jírovce maďalu je pak světle zelená, ostnitá tobolka s 1–3 semeny (kaštany). [10, 11, 12, 13]

Kde roste jírovec maďal?

Původní domovinou tohoto mohutného stromu je malá horská oblast na Balkánském poloostrově, tedy konkrétně část území Severní Makedonie, severního Řecka, Albánie, Srbska a Bulharska. V současné době se ovšem jírovec maďal vyskytuje prakticky po celé Evropě (s výjimkou severních států) a sekundárně se rozšířil také do Severní Ameriky, do Asie nebo třeba na Nový Zéland.

Původní areál rozšíření zahrnoval především listnaté a smíšené lesy Balkánského poloostrova, kde roste dodnes, a to od nížin až po stanoviště nacházející se v nadmořské výšce kolem 1500 m. V našich končinách obývá především parky a zahrady, ale vysazuje se také jako okrasná solitéra nebo základ různých alejí a stromořadí. Poměrně často navíc zplaňuje a objevuje se také v lesích (může působit dojmem původního druhu). [14, 15, 16, 17, 18]

Sedmikráska chudobka má hojivé a protizánětlivé účinky. Vyšlechtěné odrůdy se pěstují pro okrasné účely
Přečtěte si také:

Sedmikráska chudobka má hojivé a protizánětlivé účinky. Vyšlechtěné odrůdy se pěstují pro okrasné účely

Obsažené látky

Jírovec maďal kvete od května do června. Následně vytváří své charakteristické plody, což jsou kulovité, ostnité tobolky zelené barvy, uvnitř kterých se nachází poměrně velká, leskle hnědá semena (kaštany). Ta dozrávají a začínají opadávat v průběhu září nebo října. Právě semena jírovce maďalu si přitom našla využití v lidovém léčitelství, ale zpracovat se dají i jeho květy nebo kůra mladých větví.

Veškeré aktivní látky získávané z koňských kaštanů, které mají podobu extraktu, se jednotně označují jako (HCSE). Hlavní složkou jsou v tomto případě triterpeny, které tvoří až 10 % celkového obsahu. Patří sem konkrétně aescin, což je látka zodpovědná za pozitivní účinky jírovce na lidské zdraví. Zároveň se však uvádí, že může být toxická, a proto by se lidé měli vyhnout dlouhodobému vnitřnímu užívání. Kromě toho jsou zde pak zastoupeny také další flavonoidy, jako je kvercetin či kaempferol. [19, 20, 21, 22]

Jaké má jírovec maďal léčivé účinky?

Přestože to možná někteří lidé vůbec netuší, jírovec maďal patří mezi oblíbené léčivky. Aktivní látky, které se z něj získávají (HCSE), pomáhají zvyšovat odolnost vlásečnic, zlepšují žilní tonus i průtok krve a zajišťují větší pružnost a pevnost cévních stěn. Právě z toho důvodu se hodí při léčbě chronické žilní nedostatečnosti (CVI), křečových žil, trombózy, bércových vředů či hemoroidů.

Klinické studie také prokázaly, že jírovec maďal tlumí noční křeče v nohách (pomáhá proti takzvaným těžkým nohám), má protizánětlivé účinky a urychluje vstřebávání otoků (především lymfatických cév a uzlin). Kromě toho může údajně snižovat hladinu cholesterolu v krvi, což je nápomocné třeba u pacientů trpících cukrovkou nebo jaterními chorobami.

Z kaštanů se připravuje tinktura, která se užívá vnitřně, ale dají se také zpracovat do podoby různých zevně aplikovaných mastí či gelů. Ty působí mimo jiné jako lék na revmatoidní artritidu, bolavé klouby nebo křečové žíly. Kromě toho jírovec maďal údajně podporuje rychlejší vstřebávání modřin a krevních podlitin, brání nepříjemnému svědění a zmírňuje křeče.

Dále se podařilo prokázat, že extrakt z koňských kaštanů obsahuje silné antioxidanty, které pomáhají chránit organismus před působením škodlivých volných radikálů. Díky svým antiedematózním a protizánětlivým vlastnostem může být také vhodným lékem na varikokélu a potažmo i mužskou neplodnost. [23, 24, 25, 26, 27, 28]

Má jírovec maďal nežádoucí účinky?

Pokud budete konzumovat tinkturu nebo další produkty s extraktem z jírovce maďalu krátkodobě, neměl by to být žádný problém. V některých případech se ovšem mohou objevit vedlejší účinky, kam patří například závratě, bolesti hlavy, nevolnost, křeče nebo svědění pokožky. Proto se doporučuje vždy konzultovat užívání dané rostliny se svým ošetřujícím lékařem.

Vzhledem k obsaženému aescinu, který může být toxický, byste v žádném případě neměli konzumovat koňské kaštany, květy, listy nebo kůru z mladých větví jírovce maďalu v syrovém stavu. Mohlo by to způsobit otravu, která se projevuje třeba nevolností, celkovou slabostí, průjmem, zvracením, svalovými záškuby nebo paralýzou.

Aplikace přípravků s extraktem z koňského kaštanu na pokožku se zdá být bezpečná, ale výjimečně se může objevit nepříjemná alergická reakce. Jelikož účinky jírovce maďalu na lidský organismus nejsou podrobně zmapovány, raději by se mu měly vyhýbat děti, těhotné a kojící ženy, ale i osoby potýkající se s onemocněním ledvin či jater nebo s nějakou krvácivou chorobou. [29, 30, 31, 32]

Používáte léčivé přípravky s výtažkem z jírovce maďalu?

Jaké má jírovec maďal využití?

Vzhledem k tomu, jaké má jírovec maďal účinky na lidské zdraví, se extrakt z vybraných částí dané rostliny využívá v lidovém léčitelství. Je vhodný pro vnitřní i vnější aplikaci, ale obecně se nedoporučuje pro dlouhodobou konzumaci a některé skupiny lidí by se mu měly zcela vyhýbat. Nejčastěji se přitom z jírovce maďalu připravují následující produkty:

  • jírovec maďal tinktura,
  • mazání z koňských kaštanů,
  • gel z jírovce maďalu,
  • čaj z kůry, listů či květů jírovce.

Jírovec maďal se zpracovává ve farmaceutickém průmyslu pro výrobu některých léčiv. Kromě toho si můžete doma připravit třeba odvar z kůry, jenž se přidává do koupelí. To by mělo údajně přinést úlevu osobám, jež se potýkají s křečovými žílami a bolavými klouby. Čaj z květů a listů dané rostliny je pak možné vyzkoušet, pokud bojujete s kožními záněty, varixy, otoky nebo také s kašlem.

Extrakt z jírovce maďalu se mnohdy kombinuje také s dalšími bylinkami, jako je komonice lékařská, třezalka nebo ginkgo biloba. Vzniklá směs se pak ve formě mazání používá třeba ve chvíli, kdy člověka trápí nějaké cévní onemocnění. Koňský kaštan se však zpracovává také společně s kostivalem lékařským nebo s heřmánkem, což funguje jako lék na revmatické bolesti a křečové žíly. V kosmetickém průmyslu pak slouží jako základ pleťových vod, gelů a mastí.

Ačkoliv se přípravky obsahující extrakt z koňského kaštanu nehodí jako lék na neduhy malých pacientů, pro děti je důležité hlavně to, jaké má jírovec maďal plody. Z nasbíraných semen si totiž vyrábějí zvířátka nebo panáčky. Nosí je ovšem i do lesa, jelikož si na nich může pochutnat třeba spárkatá zvěř. Pro koně jsou však navzdory svému jménu jedovaté.

Jírovec maďal se navíc poměrně často pěstuje také jako okrasná rostlina, která se vysazuje jako součást alejí a jednodruhových stromořadí, ale i jako solitéra v parcích a zahradách. Nektar této rostliny obsahuje velké množství cukrů, kvůli čemuž je významná také z pohledu včelařů. Z listů, kůry a slupek plodů se pak dá získat barvivo, které se dříve používalo k barvení látek.

Možná vás také zajímá, jaké má jírovec maďal dřevo a zda se hodí pro průmyslové zpracování. Ačkoliv se na některých místech využívá třeba ve stavebnictví nebo pro výrobu nábytku, stromy pěstované na území České republiky nejsou k tomuto účelu příliš vhodné. Starší dřeviny, které se nacházejí v parcích či alejích, totiž mnohdy bývají napadené dřevokaznými houbami. [33, 34, 35, 36, 37, 38]

Pěstování koňského kaštanu

Dnes se v našich podmínkách pěstují různé kultivary koňského kaštanu, které se navzájem liší svým vzrůstem, barvou či tvarem listů. Patří sem konkrétně následující odrůdy:

  • jírovec maďal ‘Baumannii’,
  • jírovec maďal ‘Digitata’,
  • jírovec maďal ‘Laciniata’,
  • jírovec maďal ‘Memmingeri’,
  • jírovec maďal ‘Monstrosa’,
  • jírovec maďal ‘Pyramidalis’,
  • jírovec maďal ‘Umbraculifera’.

Jírovec potřebuje humózní, svěží půdu bohatou na živiny, přičemž dobře snáší i mírně vápenitou zeminu. Vybrané stanoviště by mělo být dostatečně světlé nebo pouze slabě přistíněné. Díky tomu, že je plně mrazuvzdorný minimálně do teploty –29 °C, zvládá jírovec maďal pěstování na našem území velmi dobře (údajně vydrží i silnější mrazy). Potřebuje ovšem kolem sebe dostatek prostoru, takže by minimální vzdálenost mezi exempláři měla činit 12–15 m.

V posledních desetiletích jsou nicméně koňské kaštany na území České republiky, ale i celé Evropy ohroženy přítomností klíněnky jírovcové. Jde o malého motýla, jehož larvy parazitují na listech dané dřeviny, což vede k jejich předčasnému opadávání a celkovému oslabení napadeného stromu. Také se nedoporučuje sázet jírovce ve větších skupinách, jelikož se u nich objevuje bakterióza označovaná jako slizotoková nekróza. [39, 40, 41, 42, 43]

Zdroje: botany.cz, biolib.cz, pladias.cz, botanika.wendys.cz, bylinkyprovsechny.cz, kvetenacr.cz, pyly.cz, encyklopedie.biooo.cz, ceskatelevize.cz, gardenia.net, pubmed.ncbi.nlm.nih.gov, healthline.com, webmd.com, powo.science.kew.org, sciencedirect.com, drugs.com, pfaf.org, web.archive.org

Co je jírovec maďal?
Jedná se o listnatý strom z rodu jírovec (Aesculus), který je známý také jako koňský kaštan. Dorůstá zhruba do výšky 30 m, má mohutnou korunu kulovitého tvaru a na kmeni hladkou šedou borku, která ve stáří praská a odlupuje se. Listy jsou dlanitě složené, květy se objevují ve vzpřímených latách a plodem jsou zelené tobolky s ostny, které obsahují semena.
Kde se vyskytuje jírovec maďal?
Ačkoliv se tento opadavý strom původně objevoval pouze v horské oblasti Balkánského poloostrova (konkrétně třeba na území Řecka, Severní Makedonie nebo Bulharska), dnes roste po celé Evropě. Najdete ho především v mírném pásmu, tedy samozřejmě i v našich končinách (v parcích, zahradách či alejích). Kromě toho se rozšířil i do Asie, Severní Ameriky a na Nový Zéland.
Jaké má jírovec maďal účinky na zdraví?
V lidovém léčitelství se používají především semena tohoto stromu (kaštany), ale někdy lidé zpracovávají i květy či kůru mladých větví. Díky účinným látkám, které jírovec obsahuje, zlepšuje žilní tonus, zvyšuje odolnost vlásečnic a pomáhá léčit chronickou žilní nedostatečnost, hemoroidy nebo křečové žíly. Také má protizánětlivé vlastnosti, podporuje vstřebávání otoků a brání svědění.
K čemu se používá jírovec maďal?
Přestože to spousta lidí netuší, semena, květy a kůra jírovce se používají v lidovém léčitelství, a to například ve formě tinktury, mastí, gelů nebo čajů. Kromě toho se pak daný strom vysazuje jako okrasná dřevina do zahrad, parků či alejí, její dřevo je v některých případech vhodné k výrobě nábytku či pro stavební účely a z kaštanů si děti vyrábějí panáčky nebo zvířátka.
  • Žá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 »