Příznivý efekt česneku na rakovinu, cukrovku, kůži i obezitu

22. 3. 2018

Sdílet

Zatímco česnek je dnes považován zejména za běžnou surovinu do kuchyně, v dobách minulých byl vysoce ceněn především díky četným, zdraví prospěšným vlastnostem. I když si to dnes tolik neuvědomujeme, česnek je všelék.

Naši předkové česnek používali například pro odpuzování hmyzu, středověká Evropa jej dokonce užívala při boji s morovou epidemií a Egypťané pohřbívali hlavičky česneku spolu se svými mrtvými.

Současná věda potvrzuje babské rady: česnek je všelék; v první části materiálu o česneku jsme zmínili jen některé jeho pozitivní účinky na nejrůznější zdravotní obtíže. Dnes se podíváme na studie dokládající příznivý efekt česneku na rakovinu, cukrovku, kůži, obezitu a jiné, jak je shromáždila Jen Miller v unikátním komplexním přehledu citujícím desítky vědeckých pramenů (v angličtině na www.jenreviews.com/garlic).

Každých 100 gramů česneku odpovídá zhruba 150 kaloriím a obsahuje 33 gramů sacharidů a 6,36 gramu bílkovin. Česnek je také zásobárnou vitamínů B1, B2, B3, B6, folátu, vitamínu C, vápníku, železa, hořčíku, manganu, fosforu, draslíku, sodíku a zinku. Velmi efektivní složkou česneku je síru obsahující alicin, který má antibakteriální a antifungální (působící proti houbám) vlastnosti a některé zdroje uvádějí, že může pomoci zabránit vzniku určitých forem rakoviny.

Protirakovinné účinky česneku

Česnek má silné protirakovinné vlastnosti proti hlavním typům rakoviny postihujícím člověka. Studie na zvířatech i člověku ukázaly, že česnek má schopnost potlačit vývoj nádorů v játrech, prsou, žaludku, plicích, jícnu, kůži, prostatě, střevech a močovém měchýři.

Jiná studie, provedená v Číně, dokázala, že česnek je účinný při snižování rizika rakoviny prostaty u mužů, ale jeho účinky na nádory prostaty jsou méně účinné u mužů s pokročilým karcinomem prostaty ve srovnání s těmi s lokalizovaným typem rakoviny.


Autor: Depositphotos.com

Nejlepší způsob, jak získat z česneku co nejvíce zdravých složek, je jeho naprosté rozmačkání. Tak se z česneku uvolní všechny zdraví prospěšné sloučeniny.

Díky diallylsulfidu je tato cibulovina účinná při prevenci rakoviny jícnu – trávicího traktu. Sloučenina brání tvorbě nádorů a metabolismu látky způsobující rakovinu. Alicin, rovněž obsažený v česneku, zpomaluje o celých 50 % šíření buněk karcinomu tlustého střeva, dělohy a prsou. Vědci se domnívají, že rovněž pomáhá v boji proti rakovině tím, že odstraňuje volné radikály, opravuje poškozenou DNA, stimuluje činnosti esenciálních enzymů, zvyšuje hladiny glutathionu a zabraňuje poškození chromozomů. Selen zase dokáže zničit geny podílející se na karcinogenezi.

Extrakty z česneku pomáhají při ochraně před poškozením střev během chemoterapie. Česnek může nejen pomoci snížit výskyt rakoviny, ale i snížit počet úmrtí na tuto zákeřnou nemoc. Selen silně působí proti riziku vzniku rakoviny tlustého střeva, plic, prostaty a jater, stejně jako ke snížení mortality z těchto nádorů.

Rovněž v česneku obsažený vitamín C má protirakovinné účinky, protože dokáže zastavit volné radikály dříve, než mohou vytvořit nádory nebo způsobit poškození DNA. Nízký příjem vitamínu C nebo jeho nedostatek může vést ke zvýšenému riziku vzniku rakoviny děložního čípku.

Kontrola hladiny cukru v těle

Pro svůj hypoglykemický účinek funguje česnek při prevenci a léčbě diabetu mellitus. Studie na krysách zjistila, že sloučeniny česneku jsou účinné při snižování hladiny cukru v krvi u osob trpících chemickou indukovanou chronickou hyperglykemií.

Etanolový extrakt z česneku může pomoci snížit hladinu cukru v krvi u myší trpících chemicky indukovaným diabetem. Další studie na myších zase prokázala, že česnekový extrakt byl účinný při prevenci hyperglykemie vyvolané stresem, která je vysokým rizikovým faktorem pro rozvoj diabetu.

Studie na vzorku lidské populace teorii potvrdila. Dokázala, že prášek z česneku snižuje koncentraci glukózy v krvi a zvyšuje mikrocirkulaci kůže, čímž pomáhá kontrolovat cukrovku. Kombinace česneku a standardních antidiabetických léčiv pomohla zvýšit glykemickou kontrolu u pacientů s diabetem typu II.

Vápník, jenž je v česneku obsažen ve významném množství, může pomoci předcházet vzniku syndromu inzulínové rezistence, který často předchází rozvoji diabetu. Rozvoji této choroby dokáže účinně zabránit rovněž thiamin.

Česnek zbaví tasemnice i salmonely

Vědci prokázali, že česnek je díky protizánětlivým, antifungálním, antibakteriálním a antivirovým vlastnostem účinný v boji s mikroby. Extrakty z česneku fungují rovněž proti řadě prvoků a zředěný česnek vykazuje protiparazitické účinky proti tasemnici dětské i giardióze (parazitárnímu průjmovému onemocnění střevního traktu zvířat a člověka způsobené bičíkovcem lamblií střevní).

Vědci také zjistili, že extrakty z česneku jsou užitečné při léčbě kryptosporidiózy, choroby způsobené parazitem známým jako Cryptosporidium, jenž může být pravděpodobným důvodem průjmu u jedinců s diagnózou HIV. Pokud jde o virus lidské imunodeficience (HIV), studie přesvědčivě ukázaly, že sloučeniny česneku jsou účinné v boji proti HIV infekcím v buňkách. A i zde hraje roli selen, klíčová složka česneku, který dokáže zabránit rozvoji viru HIV v AIDS a brání šíření dalších virových infekcí.

Kromě mnoha jiných je česnek také účinným antibakteriálním činidlem proti běžným bakteriím, jako je například Salmonella.

Různé sloučeniny česneku jsou účinné při prevenci a snižování bakteriální infekce Helicobacter pylori, která způsobuje dvanáctníkové a žaludeční vředy.

I u mikrobů má alicin své místo, jelikož vykazuje antibakteriální účinnost proti bakteriím rezistentním na antibiotika. Výzkumníci také dokázali, že česnekový extrakt je účinný při léčbě zlatého stafylokoka a E. coli, což z něj činí silné antibiotikum.

Česnek může zlepšit zdraví kostí

Česnek obsahuje živiny, které jsou nezbytné pro optimální zdraví kostí, a jejich nedostatky mohou mít za následek kostní onemocnění, jako je osteoporóza.

Skupina výzkumných pracovníků provedla studie na zvířatech u samic potkanů ​​a zjistila, že extrakt z česneku podporuje přenos vápníku ze střev do kostí, čímž pomáhá posílit kosterní svaly krys. Česnekový olej je rovněž účinný při zlepšování obsahu minerálů v kostech, stejně jako pevnosti v tahu kostí. Může pomoci zabránit ztrátě kostní minerální látky způsobené nedostatkem ovariálního hormonu.


Autor: Depositphotos.com

Jezte česnek! Klasický stroužek není jediná jedlá součást rostliny. Velice chutné a zdravé jsou i zelené výhonky mladého česneku.

Pravidelná konzumace česneku pomáhá zabránit vzniku osteoartrózy kyčelního kloubu.

Česnek obsahuje významné množství vápníku. Jeho nedostatek může mít za následek výraznou ztrátu kostní hmoty, stejně jako tzv. křivici u dětí (onemocnění dětí vyvolané nedostatkem vitamínu D, které je způsobeno nedostatečnou výživou, tedy výživou chudou na tento vitamín, ale také nedostatkem slunečního záření, jehož pomocí dovede tělo tvořit z některých látek vitamín). Suplementace vápníku vede ke snížení ztrát kostní hmoty u žen po menopauze.

Pro správnou tvorbu kostí je důležitý fosfor, další významná složka česneku. Fosfor je nezbytný pro zlepšení obsahu kostních minerálů, kostní minerální hustoty a snížení rizika osteoporózy u žen a mládeže ve věku nad dvacet let. Vědci si také všimli, že zvýšení příjmu fosforu je spojeno se zvýšením příjmu vápníku, což pomáhá dále posilovat a chránit kosti.

Pro zdraví kostí je rovněž důležitá měď, jejíž nedostatek je úzce spojen s mineralizací kostí a osteoporózou. Ke ztrátě kostní hmoty a vzniku osteoporózy vede také nedostatek vitamínu C.

Nemyslí vám to? Pomůže zase česnek, a to i na demenci

Vědci prokázali, že česnek a jeho sloučeniny jsou nezbytné pro udržení zdravých kognitivních funkcí a pro prevenci kognitivních onemocnění souvisejících s věkem, jako je Alzheimerova choroba a demence. Ke kognitivním problémům patří obtíže při učení, problémy s pamětí či jazykem.

Některé účinné látky v česneku jsou zodpovědné za zlepšení funkce mozku a krátkodobé paměti u subjektů trpících chronickou hyperglykemií. Čerstvý česnek pomáhá zlepšit retenci paměti a kognitivní výkon u potkanů, jelikož pravděpodobně zlepšuje hladiny serotoninu v mozku. Snižováním oxidativního poškození a vysokými hladinami cholesterolu a homocysteinu může česnek pomoci při prevenci demencí a při prevenci kognitivního poklesu ochranou mozkových neuronů před toxicitou a smrtí.

Převratným zjištěním je, že česnek může pomoci při prevenci Alzheimerovy choroby. Dokáže vyčistit volné radikály a zabránit neuronální smrti.

Vitamín B1 zlepšuje funkce mozku, zejména krátkodobé paměti u malých dětí. Jeho nedostatek může naopak vést k rozvojovým a progresivním onemocněním mozku, jako je Alzheimerova choroba.

Pozitivní vliv česneku na kůži

Česnek obsahuje vitamín C, měď, selen a vápník, které jsou nezbytné pro podporu zdravé pokožky. Vodní extrakty z česneku jsou při místní aplikaci účinné při léčbě bradavic a jiných podobných kožních onemocnění. Pro správný zdravý stav pokožky je nezbytný vápník, zodpovědný za diferenciaci a rozmnožování kůže. Ve formě nanočástic může skutečně pomoci urychlit proces hojení ran na kůži. Vápník je rovněž nezbytný pro podporu funkce kožní bariéry a pro regulaci struktury horní vrstvy pokožky.

Selen, vitamín C a měď, obsažené v česneku, jsou díky antioxidantům rovněž důležité pro udržení zdravé pokožky. Hojení ran zase naopak urychluje vitamín C, zodpovědný za fúzi kolagenu, jež je zvláště důležitá u jedinců po operaci.

Česnek v boji proti obezitě

Česnek obsahuje thiamin a vápník, jenž jsou účinné při podpoře úbytku tělesné hmotnosti u obézních jedinců. Vápník obsažený v česneku je účinný při zvyšování regulace hmotnosti, čímž zabraňuje obezitě.

Galerie: Jsou morbidně obézní. Jídlo je zabíjí

Vysoký příjem vápníku v potravě souvisí s nižším rizikem obezity. Většina obézních lidí trpí také nedostatečností thiaminu, jež je možný z česneku efektivně získat i v rámci diety.

Stop premenstruačnímu syndromu

Je známo, že je česnek účinný při snižování fyzických a emočních poruch, které se vyskytují během PMS u žen.

Vzhledem k významně vysokému obsahu vápníku pomáhá česnek v boji proti symptomům premenstruační deprese, jako jsou změny nálady, závratě a psychické symptomy. Zvýšení příjmu vápníku pomáhá snižovat únavu, depresi a změny chuti k jídlu u žen trpících PMS. Tomu napomáhá i vitamín B1.

Rovněž nedostatek selenu, stopového prvku v česneku, a vitamínu B6, může vést k nepříznivým změnám nálady zejména u žen trpících PMS. Ženy s PMS, které jsou léčeny vitamínem B6 (pyridoxin), vykazují významné zlepšení, zejména pokud jde o emoční symptomy. Díky schopnosti metabolizovat esenciální mastné kyseliny pomáhá kyselina askorbová (vitamín C) ženám zvládat symptomy PMS.

Zdravá hodnota pH

Vápník a fosfor obsažené v česneku mohou tělu pomoci dosáhnout zdravé hodnoty pH, což je zásadní pro prevenci onemocnění. K podpoře alkalického prostředí pomáhá vápník. Snižuje tak bolest zad, zlepšuje růst a zvyšuje účinnost chemoterapie. Fosfor, ve formě fosfolipidů, pomáhá vyrovnávat hladiny pH těla zabráněním nadměrné hladiny jak alkalických, tak kyselých sloučenin.

Česnek pro lepší zrak

Díky velkému obsahu vitamínu B1 a thiaminu je česnek nezbytný pro podporu správného zdraví očí. Léčba thiaminem může pomoci zvrátit ztrátu zraku zejména v případech alkoholismu. Zvýšení příjmu thiaminu u alkoholiků může pomoci při léčbě nervů poškozených alkoholem, které jsou zodpovědné za pohyb očí. Vědecký výzkum také ukazuje, že thiamin je spojen s nižším rizikem vzniku glaukomu s otevřeným úhlem, který je jednou z hlavních příčin trvalé slepoty. Vědci také dokázali, že thiamin spolu s dalšími sloučeninami vitamínu B může pomoci zpomalit vývoj šedého zákalu, tzv. katarakty.

5 zajímavostí o česneku

  • Pod slovem česnek si většina z nás představí klasický stroužek. To ale není jediná jedlá součást rostliny. Velice chutné a zdravé jsou i zelené výhonky mladých rostlin. Mají stejné upotřebení jako stružky, ale jsou vynikající pro výrobu pesta, do polévek nebo k ochucení másla.
  • Největší česnekovou velmocí je Čína. Česnek pochází z centrální Asie, ale rychle se rozšířil do evropské a africké kuchyně. Nejvíce česneku se ale pěstuje stále v Číně, kde se podle studie z roku 2012 soustřeďují dvě třetiny produkce světového česneku, jež se odhaduje na zhruba 46 miliard kilogramů ročně.
  • Průměrná spotřeba česneku se odhaduje na 0,9 kg na osobu. Znamená to sníst zhruba 302 stroužků na osobu za rok.
  • Nejlepší způsob, jak získat z česneku co nejvíce zdravých složek, je jeho naprosté rozmačkání. Tak se z česneku uvolní všechny zdraví prospěšné sloučeniny.
  • Česnek má tradici sahající do dávné historie. Egyptští faraoni podporovali sílu stavitelů pyramid právě česnekem. Rovněž starodávný egyptský lékařský dokument – Ebersův papyrus – zmiňuje ohromujících dvaadvacet léčivých použití česneku. Rostlina se také objevuje v textech významných autorů historie, kteří podrobně popisují jeho různá použití a nazývají česnek „magickou rostlinou“.

Zdroj: Mentalfloss.com

Autor článku

Mgr. Kristina Vacková – pracovala v řadě odborných časopisů jako šéfredaktorka a editorka, věnovala se PR a marketingu. V současnosti žije převážně v Egyptě, kde se živí především jako fotografka. Je aktivní cestovatelka a blogerka.

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