Za borůvkovou rodinu vlastně mohou komunisté

10. 7. 2015

Sdílet

Autor: Archiv Dominiky Kozarzewske
V zemědělství byla relativní svoboda, říká dcera polských farmářů. Její rodina propadla borůvkám v sedmdesátých letech a od té doby se plantáže rozrostly na desítky hektarů.

Rodiče Dominiky Kozarzewske to k zemědělství táhlo prakticky už za studií. Borůvkám se od té doby v Polsku věnují už čtyři desítky let a také sama Dominika šla v jejich stopách. Dnes je prezidentkou sdružení pěstitelů Polskie Jagody, které si klade za cíl šířit „borůvkovou osvětu“, a obhospodařuje plantáže o rozloze sto osmdesát hektarů, které se nacházejí v blízkosti Národního parku Roztocze, na březích řeky Tanew.

Polskie Jagody zahrnují celkem pět plantáží, na nichž dnes rodiče Dominiky Kozarzewske působí jako poradci.

Borůvková rodina

Matka Hanna se o borůvky začala zajímat již v sedmdesátých letech během svých studií přírodních věd na Varšavské univerzitě. Její diplomová práce se dokonce zabývala hnojením borůvek. Zato Dominičin otec studoval polskou literaturu a byl zaměstnán v Ústřední knihovně ve Varšavě.

„Protože v té době bylo Polsko pod nadvládou komunistů, oba rodiče hledali takovou práci, při níž by nemuseli být závislí na státu, a právě zemědělci měli relativní svobodu. Proto rodiče koupili pozemek a začali budovat borůvkové školky a plantáže,“ vypráví Dominika Kozarzewska, která už navazuje na rodinnou tradici. „Mám svou práci velmi ráda, díky pěstování ovoce jsem v kontaktu s přírodou. Takže myslím, že ráda naváži na to, co tu moji rodiče vytvořili,“ říká. Rodina vlastní borůvkovou farmu nedaleko od Varšavy, zároveň je akcionářem farem v polském Lublinu, ale i v Chorvatsku. Borůvky jen pěstují, dále nezpracovávají, nicméně sdružení producentů Polskie Jagody jako celek vyrábí stoprocentní borůvkové šťávy.

Firma jako jakákoli jiná

Starat se v sezóně o borůvkové plantáže znamená brzké vstávání a vpustit na farmu sběrače. Následuje vytvoření plánu dne s lidmi, kteří na sběr dohlížejí a jsou za něj zodpovědní, tak, aby s plody mohli vzápětí pracovat v balírně. „Moje matka má na starosti dění na poli, takže kontroluje rostliny a rozhoduje o tom, kde se bude sbírat dál. Otec organizuje prodej ovoce a stará se o papírování. Také hodně cestují po jiných farmách v rámci sdružení, ty své mohou klidně na chvíli opustit, protože tu mají schopné zaměstnance, někteří tu pracují dokonce více než třicet let,“ popisuje Dominika Kozarzewska.

Podle jejích slov se společnosti daří. Těžší to mají v Polsku například zemědělci, kteří mají jen malou farmu, vyprodukují málo a jen stěží se tímto způsobem uživí. „Větší farmy s intenzivnější produkcí jako je ta naše zase musí řešit jiné problémy: dostatek pracovních sil, management i financování. V tom je to podobné jako jakékoliv jiné společnosti. EU sice nabízí řadu grantů, takže zemědělci, kteří chtějí rozvíjet své farmy a investovat, mají spoustu nových možností, ale na druhou stranu získat grant znamená dost papírování,“ říká prezidentka sdružení Polskie Jagody.

Kongres, který se v Polsku uskutečnil v půlce června v rámci kampaně Síla ovoce, bere jako dobrou příležitost ukázat zahraničním hostům, že polské měkké ovoce je zdravé, chutné a pěstované ekologicky udržitelným způsobem. „Doufám, že se to v budoucnu odrazí i ve zvýšené spotřebě našeho ovoce,“ přeje si Dominika Kozarzewska. Její společnost zatím nevyváží na český trh, ale věří v možnosti spolupráce do budoucna. Vývozy polského ovoce rostou poměrně rychle.

V Evropě první, na Severní Ameriku Polsko nemá

V Polsku je do komerčního pěstování bobulového ovoce zapojeno asi tři sta tisíc farem. Co se týče borůvek, Polsko je jejich největším pěstitelem v rámci Evropy, v roce 2012 dosahovala tamní produkce dvanáct tisíc tun. Celkově zabírá Evropa pouhých třináct procent světové produkce borůvek s šestapadesáti tisíc vypěstovaných tun před dvěma lety, k dalším významným borůvkářům v EU patří Německo, Francie, Nizozemsko a Španělsko. Většina borůvek, osmdesát pět procent, však pochází ze Severní Ameriky, především USA a Kanady.

Poláci jsou ovšem na své borůvky náležitě hrdí a kromě barvy, vůně a chuti vyzdvihují zdravotní přínosy.

Zdravotní přínosy borůvek

  • Díky antioxidantům fungují na posílení imunity a prevenci infekcí. Obsahují sloučeniny, které neutralizují volné radikály, a tak fungují i jako prevence proti rakovině, zpomalují proces stárnutí a jejich konzumace pomáhá předcházet řadě dalších civilizačních chorob.
  • Jejich konzumace napomáhá snižovat riziko onemocnění srdce, protože obsahují fytoestrogeny, které regulují hladinu cholesterolu, snižují hladinu špatného cholesterolu LDL a naopak zvyšují hladinu HDL – dobrého cholesterolu. Kromě toho denní konzumace borůvek zlepšuje zrak a hodí se tak pro lidi, kteří hodně vysedávají u počítače.
  • Borůvky obsahují antokyany, vitamíny A, B, C a E, zinek, draslík, sodík, mangan a selen.
  • Tyto složky zpomalují proces stárnutí mozku a také podporují paměť. Nejenže jsou borůvky nízkokalorické, a tedy vhodné i při dietě, ale rovněž zlepšují fungování trávicího traktu, urychlují proces trávení.
  • Svou roli mají i v borůvkách obsažená barviva antokyany: mají mocné antioxidační účinky, podporují odolnost cév a jsou významným pomocníkem pro zlepšení krevního obrazu. K tomu upravují průtok krve, díky čemuž je ocení lidé s nedostatečným krevním oběhem v končetinách. Borůvkový výtažek je vhodný i k léčení křečových žil.

Bývá zvykem, když má někdo něčeho přebytek, omrzí, ba dokonce znechutí se mu to. To ovšem není případ Dominiky Kozarzewske, která tvrdí, že ona ani její tři děti nejsou borůvkami nikdy unavené. „V sezóně je jíme jen tak přímo z keříků. V zimě dělám ze zmražených dorty, smoothies, zmrzliny a dřeně. Borůvkový jam, který vyrábí moje tchýně, je také skvělý na palačinky. Rovněž máme několik rodinných receptů, které si uchováváme už sto let,“ uzavírá Dominika Kozarzewska.

Borůvky pro zdraví

Borůvky jsou nejen velmi chutné, ale disponují i řadou prospěšných vlastností pro lidské tělo

  • Imunita: Borůvky mají nejvyšší obsah antioxidantů ze všeho čerstvého. Podporují obranyschopnost organismu a fungují jako prevence infekcí. 
  • Prevence proti rakovině: Vysoký obsah antioxidantů a antokyanů způsobí, že borůvky mohou být důležitým faktorem v prevenci proti rakovině, ale také mohou pomoci při léčení různých forem rakoviny.
  • Srdce: Vzhledem ke koncentraci fytoestrogenů a vlákniny – nesrovnatelné s jinými druhy ovoce – mají borůvky schopnost zabránit vniku srdečních chorob. Děje se tak díky snížení hladiny špatného cholesterolu (LDL) a zvýšení hladiny dobrého cholesterolu (HDL).
  • Mozek: antokyany, vitamíny A, B, C a E, zinek, draslík, sodík, mangan a selen obsažený v borůvkách může zpomalit nebo dokonce – jak bylo prokázáno výzkumem – zastavit proces stárnutí mozku, což nám umožňuje si po delší čas uchovat dobrou paměť.
  • Zažívací trakt: Vláknina a obsah semínek mají pozitivní vliv na funkci zažívacího systému.
  • Močové cesty: Borůvky napomáhají udržovat správnou funkci močových cest. Děje se tak díky vyplavení nahromaděných bakterií z těla, což zase působí i jako prevence proti infekcím.
  • Zrak: Borůvky jsou bohaté na sloučeniny známé jako antocyanosidy, ty zpomalují ztrátu zraku a mohou působit proti mnohým očním problémům.
  • Zabraňují procesu stárnutí: Vzhledem k vysokému obsahu antokyanů a vlákniny, jsou borůvky díky neutralizaci volných radikálů schopné zpomalit stárnutí těla.
  • Hubnutí: Nedávné studie amerických vědců prokázaly, že borůvky mohou pomoci ke snížení hmotnosti.
  • Cítit se dobře: Konzumace borůvek pomáhá lidem udržovat se v kondici a cítit se celkově lépe.

Autor článku

Psaní se věnuje už od střední školy. Jako redaktorka pracovala v regionálních přílohách MF DNES Praha a střední Čechy. Nyní je na volné noze.

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