Vitamín C je pro lidský organismus nepostradatelný. Najdete ho v čerstvém ovoci a zelenině

22. 4. 2021 8:00
1 nový názor
Autor: Pixabay

Jedním z nejdůležitějších vitamínů, které lidské tělo pro správné fungování potřebuje, je vitamín C. Ten plní celou řadu významných funkcí včetně zachování energetického metabolismu nebo ochrany buněk před oxidačním stresem. Nejlepším zdrojem této látky je čerstvé ovoce a zelenina, ale najdete ho také v různých potravinových doplňcích.

Co je vitamín C?

Co se dozvíte v článku
  1. Co je vitamín C?
  2. Jaké má vitamín C účinky?
  3. Doporučená denní dávka vitamínu C
  4. Vitamín C pro děti
  5. V čem je vitamín C?
  6. Jak užívat vitamín C?
  7. Nedostatek vitamínu C
  8. Předávkování vitamínem C

Kyselina L-askorbová, kterou lidé označují také jako vitamín C, je ve vodě rozpustná látka charakteristická svými silně redukčními účinky. Ty jsou dány její snadnou oxidací na dehydroaskorbát. Pokud jde o chemický název, můžete se setkat také s variantou L-enantiomer kyseliny askorbové, přičemž sumární vzorec je C6H8O6.

Přestože je člověk jedním z mála živočichů (včetně primátů, morčat, kapybar a indických netopýrů), kteří si sami nedokáží kyselinu askorbovou vyrobit, vitamín C je pro lidské tělo naprosto nepostradatelný. Vzhledem k tomu, že má na organismus výrazný vliv a plní zde mnoho důležitých funkcí, je proto nutné tuto látku přijímat v potravě.

Chemicky poprvé vitamín C v roce 1928 izoloval maďarský biochemik a fyziolog Albert Szent-Györgyi, který tuto látku označil za kyselinu hexuronovou. O čtyři roky později prokázal Charles Glen King, že jde o stejnou látku, kterou můžete najít v ovoci či zelenině a která úspěšně brání rozvoji kurdějí. Přesnou chemickou strukturu kyseliny askorbové pak jako první dokázal vypracovat Sir Walter Norman Haworth, který tuto látku také úspěšně vyrobil syntetickou cestou.

Jaké má vitamín C účinky?

Vitamín C je známý svými antioxidačními schopnostmi, díky kterým výrazně přispívá k ochraně organismu před oxidačním (oxidativním) stresem. Tak se označuje nerovnováha mezi tvorbou volných radikálů, které vznikají jako vedlejší produkt látkové výměny a okysličování například při aktivním sportu, a schopností organismu rychle odbourávat a detoxikovat reaktivní meziprodukty. 

Co se týče účinků kyseliny askorbové, vitamín C je nezbytný pro energetický metabolismus, má výrazný vliv na činnost jednotlivých orgánů a také na správné fungování imunitního systémů. V rámci metabolismu aminokyselin je pak tato látka potřebná pro hydroxylaci prolinu a lysinu, čímž se výrazně podílí na syntéze kolagenu.

Kromě výše zmíněných účinků se pak vitamín C podílí také na syntéze karnitinu a metabolismu tyrosinu, podporuje vstřebávání železa, ovlivňuje beta-oxidaci mastných kyselin a urychluje detoxikaci cizorodých látek. Zároveň stimuluje tvorbu bílých krvinek, podporuje růst i správnou činnost nervové soustavy a hraje důležitou roli při vývoji kostí, zubů, dásní, kůže či chrupavek.

Vitamín C zajišťuje:

  • pružnost pokožky,
  • funkci cév,
  • funkci svalů,
  • funkci šlach,
  • stavbu kostí,
  • činnost nervového systému,
  • ochranu buněk před oxidačním stresem,
  • ochranu buněk před volnými radikály,
  • zachování energetického metabolismu,
  • správnou funkci imunitního systému,
  • vstřebávání železa (hlavně z rostlinných zdrojů),
  • snižování míry únavy a vyčerpání,
  • beta-oxidaci mastných kyselin,
  • vyšší aktivitu mikrosomálních enzymů.

Pokud jde o to, jak působí vitamín C na pleť, důležité je zmínit, že nejen podporuje tvorbu kolagenu, ale zároveň působí jako antioxidant, čímž napomáhá k udržení přirozené pružnosti pokožky, zajišťuje jí vitalitu a udržuje svěží vzhled. Aby kyselina askorbová skutečně plnila tuto funkci, je nutné ji tělu pravidelně dodávat v potřebném množství, a to jak vnitřně, tak ideální i ve formě krémů nebo masek.

Výčet pozitivních účinků vitamínu C na lidský organismus je velice pestrý. Všeobecně lidé uznávají také vliv kyseliny askorbové na psychické rozpoložení pacientů, přičemž tato látka představuje mimo jiné i důležitý faktor, který se společně s dalšími činiteli podílí na snižování míry únavy a celkového vyčerpání. Podle odborníků dále působí vitamín C na vlasy, a to tím způsobem, že je dokáže zhruba o 2 až 3 tóny zesvětlit.

Doporučená denní dávka vitamínu C

Vzhledem k tomu, že je kyselina askorbová pro lidský organismus velice důležitá, se pacienti často ptají, jaké má vitamín C dávkování a kdy je vhodné tuto látku užívat. Podle lékařů se doporučená denní dávka pro dospělého člověka pohybuje v rozmezí od 80 do 100 miligramů, přičemž u některých osob jeho potřeba výrazně stoupá. Sem patří například:

  • alkoholici a drogově závislí lidé,
  • kuřáci, kteří by měli přijímat zhruba o 50 až 100 % vyšší dávku,
  • sportovci, kteří se věnují aktivnímu pohybu,
  • pacienti vystavení značné fyzické námaze či psychickému stresu,
  • osoby, které se zotavují po operaci, nemoci či úrazu,
  • lidé užívající antibiotika či medikamenty s kortizonem,
  • těhotné ženy, jejichž potřeba stoupá zhruba o 30 %,
  • matky, které by měly vitamín C při kojení přijímat v dávkách vyšších zhruba o 60 %,
  • pacienti, kteří se potýkají s nachlazením nebo infekcí,
  • lidé trpící některými typy chorob (nádory, diabetes, renální insuficience).

Zatímco pravidelná konzumace vitamínu C samozřejmě slouží jako prevence proti rozvoji projevů, které by u pacientů mohl vyvolat jeho deficit, zároveň jde o výtečný způsob, jak posílit imunitní systém a zabránit rozvoji degenerativních onemocnění.

Vitamín C pro děti

Dětský organismus samozřejmě potřebuje vitamín C stejně jako organismus dospělých. Dávkování by se ovšem mělo lišit v závislosti na věku malého pacienta, a to následovně:

  • kojenci – zhruba 50 miligramů denně,
  • batolata – zhruba 50 až 60 miligramů denně,
  • předškoláci – zhruba 60 až 70 miligramů denně,
  • školáci – zhruba 70 až 90 miligramů denně.

U dětí je stejně jako v případě dospělých pacientů dobré užívat vitamín C pravidelně a v přiměřených dávkách. V ideálním případě byste proto měli konzumaci vitamínu C každý den rozdělit do dvou nebo tří porcí, což tělo dokáže využít mnohem lépe než v rámci jednorázového podání kyseliny askorbové.

V čem je vitamín C?

Hlavním zdrojem vitamínu C jsou vybrané druhy ovoce a zeleniny. Největší obsah této látky má přitom rakytník, černý rybíz nebo třeba šípek, ale najdete ho také v dalších potravinách, jako jsou například citrusové plody, jablka, rajčata, paprika nebo třeba brokolice.

Co se týče konkrétního množství kyseliny askorbové, v následujícím přehledu je uveden přibližný obsah vitamínu C ve 100 gramech vybraných druhů ovoce a zeleniny:

  • šípek – 200 miligramů,
  • černý rybíz – 200 miligramů,
  • růžičková kapusta – 115 miligramů,
  • kiwi – 90 miligramů,
  • brokolice – 90 miligramů,
  • červený rybíz – 80 miligramů,
  • jahody – 70 miligramů,
  • pomeranč – 50 miligramů,
  • křen – 50 miligramů,
  • květák – 40 miligramů,
  • citron – 40 miligramů,
  • grep – 40 miligramů,
  • mrkev – 35 miligramů,
  • rajčata – 25 miligramů,
  • česnek – 17 miligramů,
  • celer – 8 miligramů.

Pokud jde o to, co obsahuje vitamín C, nejbohatším přírodním zdrojem této látky je Acerola neboli tropická třešeň, která se suší a zpracovává na jemný prášek. Tato rostlina pochází ze střední Ameriky a v dnešní době se pěstuje hlavně v Brazílii. Jedná se o vysoký teplomilný keř s oranžovými nebo červenými plody, které svou chutí připomínají citróny, ale obsahují daleko větší množství vitamínu C.

V potravinářském průmyslu se pak vitamín C používá jako konzervant k omezení oxidace v potravinách. Snižuje například oxidaci tuků, a proto se hojně přidává například do uzenin, kde pomáhá zachovat jejich červenou barvu.

Jak užívat vitamín C?

Jestliže se rozhodnete pro konzumaci potravin v jiném než syrovém stavu, měli byste mít vždy na paměti, že při tepelném zpracování dochází k úbytku obsaženého vitamínu C zhruba o 10 % za každých pět minut vaření. Velké ztráty pak způsobuje také tepelná konzervace a blanšírování, přičemž nejšetrnější je naopak dušení v páře nebo mražení.

Ačkoliv je tedy vitamín C ve vyšším množství obsažen třeba v bramborách (zhruba 20 mg/100 g), kterých lidé na našem území konzumují poměrně hodně, tento údaj se vztahuje pouze k potravinám v syrovém stavu. Jakmile brambory upečete, uvaříte nebo jinak zpracujete, drtivou většinu prospěšné kyseliny askorbové zničíte, jelikož je citlivá na teplotu a oxidaci.

Samozřejmě, že je nejlepší vitamín C přijímat přirozeným způsobem spolu s konzumovanými potravinami, a to ideálně v syrovém stavu. Někdy to však bohužel nestačí, a proto kromě přírodních zdrojů kyseliny askorbové existuje i celá řada potravinových doplňků, které mají podobný účinek. Sem patří například:

  • šumivé tablety,
  • žvýkací tablety,
  • bonbony s různými příchutěmi
  • kapsle s postupným uvolňováním,
  • vitamín C v lipozomální formě.

Vzhledem k nižší dostupnosti některých druhů ovoce a zeleniny mimo sezónu a ke ztrátám této zdraví prospěšné látky v průběhu tepelného zpracování je vhodné vitamín C přijímat ve formě kvalitních výše zmíněných doplňků stravy, které by měly lidskému organismu zajistit pravidelný přísun kyseliny askorbové.

Mezi dlouhodobě oblíbené doplňky s obsahem vitamínu C patří například Celaskon. Skvělým způsobem, jak si zajistit přísun vitamínu C, jsou pak hlavně kapsle s prodlouženým uvolňováním, které obsahují drobné perličky postupně uvolňující kyselinu askorbovou v tenkém střevě, čímž se zajistí také postupné vstřebávání do krevního oběhu pacienta.

Chcete-li zajistit co nejlepší využití vitamínu C, sáhněte po lipozomální formě. Díky tomu, že je zde vitamín C uzavřený v molekule lipozomu, se lépe vstřebává a do těla je uvolňován postupně. Tím je možné zabezpečit dlouhodobě vyšší hladinu vitamínu C v organismu. Pokud vás pak trápí akutní onemocnění, jako je například chřipka nebo nachlazení, je vhodné užívat tablety vitamínu C v kombinaci se šípkem.

Nedostatek vitamínu C

Deficit vitamínu C se může u některých pacientů projevit zpomalením růstu, zvýšenou kazivostí zubů a narušením stavby kostí. Mezi další možné komplikace, které s mírnou hypovitaminózou souvisí, se pak řadí například:

  • zvýšená únava,
  • svalová slabost,
  • bolest kloubů,
  • krvácení do kloubů,
  • deformace kloubů,
  • žaludeční obtíže,
  • zvýšená lámavost vlásečnic,
  • snížená tvorba mléka,
  • vyšší náchylnost k infekcím,
  • zhoršené hojení ran.

Extrémní nedostatek vitamínu C (avitaminóza) způsobuje rozvoj onemocnění známého jako kurděje (skorbut). Dnes se naštěstí tato choroba objevuje jen ve velice vzácných případech, ale v minulosti způsobovala lidem obrovské problémy. K typickým projevům patří například anémie, krvácivost, otoky kloubů a dásní, ztráta zubů, časté infekce, křehké kosti, atrofie, žaludeční vředy nebo sterilita.

Předávkování vitamínem C

Pokud jde o konzumaci výše zmíněných potravin, spoustu lidí také zajímá, zda může způsobit vitamín C předávkování a jak se případně taková situace projevuje. Ke klasické hypervitaminóze u tohoto vitamínu nedochází a akutní toxicita kyseliny askorbové je malá. Po vysazení déletrvajících zvýšených dávek vitamínu C ale může paradoxně dojít k hypovitaminóze

Naše tělo neumí zpracovat veškerý vitamín C, který mu ve formě stravy či potravinových doplňků dodáváme. Jednorázově využije pouze určité množství této látky, ale její zásoby si dále nevytváří. Jelikož je kyselina askorbová rozpustná ve vodě, zbytek, který tělo není schopné zpracovat, je následně vyloučen močí. Podle lékařů by ovšem příjem vitamínu C raději neměl překročit 1000 miligramů za den.

Podávání velmi vysokých dávek (více než 2000 miligramů denně) může způsobit podráždění žaludku a zažívacího traktu, přičemž u pacientů pak dochází k rozvoji akutních průjmů, bolestí hlavy, křečí nebo také zvracení. Dávky, které převyšují 3000–4000 miligramů vitamínu C denně pak již organismus nedokáže efektivně vyloučit a v některých případech mohou vznikat ledvinové kameny.

Příliš vysoké dávky vitamínu C mohou interferovat s některými léčivy. Nebezpečná bývá třeba kombinace s některými stopovými prvky, jako jsou například přechodné kovy, což může způsobit tvorbu reaktivních forem kyslíku. Velké množství kyseliny askorbové pak může v některých případech interferovat také s běžnými klinickobiochemickými testy.

Zdroje: wikiskripta.eu, lekarna.cz, mojeambulance.cz

Co je vitamín C?
Jako vitamín C nebo také kyselina askorbová se označuje látka, která je rozpustná ve vodě, má charakteristické redukční účinky a je pro lidský organismus nepostradatelná. Člověk si jako jeden z mála živočichů nedokáže vitamín C sám vyrobit, a proto ho musí přijímat společně s potravou nebo ve formě doplňků stravy.
Jaké má vitamín C účinky?
Vitamín C přispívá k ochraně organismu před oxidačním stresem, podporuje vstřebávání železa a je také nezbytný pro energetický metabolismus. Dále jsou známé jeho výrazné účinky na fungování imunitního systému a činnost jednotlivých orgánů, přičemž hraje důležitou roli hlavně při vývoji kostí, zubů, dásní, kůže nebo chrupavek. Kromě toho zajišťuje pružnost pokožky, ovlivňuje činnost nervového systému, snižuje míru únavy a vyčerpání a může mít vliv také na celkové psychické rozpoložení pacientů.
V čem je vitamín C?
Lidé se nejčastěji ptají, co obsahuje vitamín C a odkud mají tuto důležitou látku čerpat. Hlavním zdrojem kyseliny askorbové jsou přitom vybrané druhy ovoce a zeleniny, jako jsou například citrusové plody, rakytník, černý rybíz, šípek, jablka, rajčata, papriky, brokolice, jahody nebo květák. Nejbohatší přírodní zdroj je pak Acerola (tropická třešeň), z níž se vyrábí jemný prášek. Pokud jde o potravinové doplňky, dostupné jsou například šumivé tablety, bonbony, kapsle s postupným uvolňováním nebo vitamín C v lipozomální formě.
Co způsobuje nedostatek vitamínu C?
Deficit vitamínu C se může projevit hned několika různými symptomy, kam patří zpomalení růstu, zvýšená kazivost zubů nebo třeba narušení stavby kostí. Mezi další komplikace, které mírnou hypovitaminózu doprovázejí, se dále řadí zvýšená únava, svalová slabost, bolesti a deformace kloubů, žaludeční obtíže, vyšší náchylnost k infekcím nebo třeba zhoršené hojení ran. Extrémní nedostatek vitamínu C pak způsobuje rozvoj onemocnění známého jako kurděje.
pavel hanousek (neregistrovaný)
dobrý den ,myslim že mám dlouhodobě deficit vit C(pry se to nezjištuje z krve???) 2011-operace prost.+ozařováni +2xATB -přemnožené masivně kvasinky , na to prokanazol !!! a tim hodně vit c se vytlouk ??? dusledek -2017 -3xATB na chlamydie , 2019 3xATB na helibactor -zase vit C se "vytlouk" 2020 chřipka ,které sem se nemohl zbavit -vit C -ovoce ,zelenina nešla konzumovat .-dráždilo to !!!! hlavně pálivé plosky , k tomu unava , skoro po každem jidle stolice -3-5x deně -tim se vše jen zhoršilo , a trvá to dodnes , vyšetřeni z krve -vše v normě i zatim PSA -na tumory , ale časté stolice mě asi zbavuji živin i zbytku vit C ????, dle dokt. mám jist zeleninu ,ale ono to moc nejde , dráždito ke stolicim !!! a unava větši atd. chci se zeptat -nepomohlo by mi malé dávky -infuzi -kapačky vit c aspon na čas ??? tělo ho asi potřebuje ??? nejen zaživáni!!!??? tim by se obešel zaž. trakt ,aspon na čas, než se podrážděný trakt sklidni ???? diky pavel h. senior praha
  • 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 »