Menu Zavřít

Výplata nemocenské a její specifika. Kdy a jak je možné čerpat dávky za dočasnou pracovní neschopnost?

22. 8. 2022
Doba čtení: 5 minut
Autor: Depositphotos

Každý zaměstnanec nebo podnikatel se dříve či později ocitne v dočasné pracovní neschopnosti. Aby se člověk mohl v klidu kurýrovat doma a zároveň nepřišel o výdělek, existují zákonem stanovené formy podpory, kterými jsou náhrada mzdy a výplata nemocenské. Pro možnost jejich čerpání ale musí pacient splňovat určité podmínky.

Jak fungují dávky nemocenské

Český systém nemocenského pojištění zajišťuje šest druhů dávek, které mají pojištěncům finančně pomoci v období, kdy kvůli pracovní neschopnosti přicházejí o část výdělku. Každý zaměstnanec musí ze zákona odvádět zálohy na nemocenské pojištění. Díky těmto zálohám je následně možné čerpat některý z uvedených typů příspěvků:

  1. nemocenské,
  2. ošetřovné,
  3. dlouhodobé ošetřovné,
  4. peněžitá pomoc v mateřství,
  5. otcovské,
  6. vyrovnávací příspěvek v těhotenství a mateřství.

Nemocenské dávky čerpají pojištěnci od 15. kalendářního dne dočasné pracovní neschopnosti. Do té doby jim zaměstnavatel poskytuje náhradu mzdy za pracovní dny. Tuto náhradu je však možné čerpat pouze v době trvání pracovního poměru u daného zaměstnavatele. Pokud v průběhu nemoci v zaměstnání skončíte, nebude vám dále poskytována. Výplata nemocenských dávek je přitom možná až za 380 dnů trvání nemoci za předpokladu, že jste stále ekonomicky aktivním občanem.

Komu vzniká nárok na nemocenskou

Jak bylo výše zmíněno, základním požadavkem pro možnost čerpání nemocenské dávky je účast na nemocenském pojištění. U zaměstnanců vzniká tato povinnost prvním dnem nástupu do zaměstnání a zálohy za něj odvádí zaměstnavatel. U osob samostatně výdělečně činných (OSVČ) je to den, který uvedly v přihlášce k účasti na zdravotním pojištění. 

Zákon o nemocenském pojištění dále řeší takzvanou ochrannou lhůtu. Jedná se o institut, který je možné využít v případě, že jste bezprostředně po ukončení pracovního poměru náhle onemocněli. V takovém případě vám totiž automaticky skončí i účast na pojištění, které je základem pro čerpání dávek. Pakliže se nacházíte v této ochranné lhůtě, máte nárok na čerpání nemocenské dávky, a to v rozsahu sedmi kalendářních dnů.

Nárok na dávky v dočasné pracovní neschopnosti má také pojištěnec, který se nachází v procesu oddlužení. Nemocenská v insolvenci podléhá pravidlům, která upravuje insolvenční zákon. Pro potřeby oddlužení se u zaměstnanců provádí pravidelné srážky ze mzdy, a jelikož jsou nemocenské dávky náhradou této mzdy v období dočasné pracovní neschopnosti, podléhají těmto srážkám také. 

Kdo platí nemocenskou

Prvních 14 dní se zaměstnanci vyplácí náhrada mzdy, kterou odvádí zaměstnavatel. Po dvou týdnech dočasné pracovní neschopnosti je už povinností ČSSZ výplata nemocenské. Náhrada mzdy se vztahuje pouze na pracovní dny. V případě nemocenských dávek se jedná o dny kalendářní, v nichž jsou zahrnuty také víkendy a svátky. U osob samostatně výdělečně činných je situace trochu jiná. Prvních 14 dní zůstávají bez příjmů a od 15. dne pracovní neschopnosti jim nemocenské dávky vyplácí také správa sociálního zabezpečení. 

Výpočet nemocenských dávek

Výplata nemocenské dávky a její výše se odvíjí od takzvaného denního vyměřovacího základu. Ten zjistíme tak, že vydělíme celkový hrubý příjem za posledních 12 kalendářních měsíců počtem kalendářních dnů za toto období. Započítávají se veškeré příjmy, které podléhají odvodu na sociálním pojistném (pojistné na sociální zabezpečení a příspěvek na státní politiku zaměstnanosti).

Tento vyměřovací základ je dále redukován na základě redukčních hranic a teprve následně se z takto upraveného základu vypočítá nemocenská výplata. Jednotlivé redukční hranice pro rok 2024 zahrnují následující částky:

  • 1. redukční hranice – 1466 korun,
  • 2. redukční hranice – 2199 korun,
  • 3. redukční hranice – 4397 korun.

Výše dávek se kromě toho odvíjí také od počtu kalendářních dnů, kdy je zaměstnanec nebo OSVČ v pracovní neschopnosti. Procentuální výpočet nemocenské na základě tohoto kritéria je vyjádřen následovně:

  • za 15.–30. den pracovní neschopnosti náleží pojištěnci 60 procent z redukovaného denního vyměřovacího základu,
  • za 31.60. den pracovní neschopnosti náleží pojištěnci 66 procent z redukovaného denního vyměřovacího základu,
  • od 61. dne pracovní neschopnosti náleží pojištěnci 72 procent z redukovaného denního vyměřovacího základu.

Nemocenská: termín výplaty

Kromě částky, kterou dostanete, vás bude asi také zajímat, kdy se vyplácí nemocenská. Termín výplaty nemocenské je vždy individuální a nedá se určit s jistotou. Správa sociálního zabezpečení má zákonem stanovenou lhůtu na zaslání peněz pojištěnci, která je stanovena na 30 dní od chvíle doručení dokladu od zaměstnavatele, jenž potvrzuje nárok zaměstnance na tyto dávky.

A jak zjistit, kdy mi přijde nemocenská? Nejjednodušším řešením je zavolat přímo na správu sociálního zabezpečení. Datum výplaty nemocenské bývá podobné jako termín výplaty mzdy či platu, protože dávky se vyplácí podobným způsobem, a sice zpětně za daný měsíc. V případě, že vám z nějakého důvodu nebudou peníze doručeny, stačí na webu ČSSZ vyplnit a zaslat příslušný formulář pro prošetření problému.

Nemocenská a OSVČ

Pro osoby samostatně výdělečně činné platí stejné obecné podmínky jako pro zaměstnance, tedy že musí být účastníky nemocenského pojištění. Navíc je v jejich případě nutné, aby účast na nemocenském pojištění předcházející prvnímu dni vzniku dočasné pracovní neschopnosti trvala minimálně tři měsíce. Aby mohla OSVČ pobírat nemocenské dávky, nesmí během doby trvání nemoci vykonávat samostatnou výdělečnou činnost. Stejně jako u zaměstnanců vzniká OSVČ nárok na nemocenskou, uzná-li ji lékař dočasně práce neschopnou a tato neschopnost trvá déle než dva týdny.

CIF25

Pakliže osoba samostatně výdělečně činná onemocní, není jí od lékaře vystavena e-neschopenka, jak je tomu v případě zaměstnanců, ale průkaz dočasně práce neschopného pojištěnce. Lékař pak sám pošle na Českou správu sociálního zabezpečení tiskopis a žádost o nemocenské dávky pro pojištěnce v elektronické podobě. Stejně jako zaměstnanec musí pak i OSVČ dodržovat lékařem stanovený režim a také umožnit případnou kontrolu ze strany ČSSZ.

U pracovní neschopnosti, která trvá déle než 14 dní, potvrzuje lékař nejméně jedenkrát měsíčně její trvání, aby mohla být výplata nemocenské dávky provedena. Většinou tak učiní v den pravidelné kontroly pacienta. Povinností OSVČ je pak ohlásit návrat k samostatně výdělečné činnosti po ukončení pracovní neschopnosti. Pakliže by tak neučinila, nedošlo by k vyplacení nemocenské. Tiskopis pro tyto účely se nachází na webových stránkách ČSSZ a lze jej zaslat elektronicky pomocí datové schránky či elektronického podpisu nebo Českou poštou.

Kdy chodí nemocenská?
Nemocenská se vyplácí stejně jako ve většině případů mzda či plat zpětně za daný měsíc. Správa sociálního zabezpečení má stanovenou lhůtu pro výplatu na 30 dnů ode dne, kdy je jim od zaměstnavatele doručen doklad potvrzující nárok na výplatu nemocenské dávky. U OSVČ zasílá toto potvrzení lékař po pravidelné kontrole pacienta.
Platí se nemocenská i o víkendu?
Nemocenské dávky se vyplácí za kalendářní dny, které zahrnují také víkendy a svátky. Naproti tomu náhradu mzdy, jíž čerpá zaměstnanec prvních 14 dnů trvání pracovní neschopnosti, odvádí zaměstnavatel pouze za pracovní dny bez víkendů.
Má OSVČ nárok na nemocenskou?
Ano, má, ale pouze za předpokladu, že splňuje zákonem dané podmínky. Osoba samostatně výdělečně činná musí být přihlášena k účasti na nemocenském pojištění, a to minimálně tři měsíce před začátkem dočasné pracovní neschopnosti. Dále nesmí v průběhu nemoci vykonávat výdělečnou činnost. Nemocenské dávky pobírá od 15. dne trvání nemoci, prvních 14 dní zůstává bez příjmů.
Kam volat, když nepřijde nemocenská?
V případě, že se výplata nemocenských dávek výrazně opozdila, máte možnost podat žádost o prozkoumání tohoto problému na správu sociálního zabezpečení. Učiníte tak vyplněním příslušného formuláře, který najdete na jejich webových stránkách. Následně jej odešlete elektronicky nebo prostřednictvím České pošty.
  • 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 »