Příspěvek na péči

Trápí vás nepříjemné zdravotními problémy, což vás dlouhodobě stojí nemalé peníze? Řešením by pro vás mohl být příspěvek na péči. Ten je určen lidem, kteří z důvodu nepříznivého zdravotního stavu potřebují pomoc jiné osoby při zvládání základních životních potřeb, a to v rozsahu stanoveném stupněm závislosti dle zákona o sociálních službách.

Příspěvek na péči je sociální dávka poskytovaná na základě zákona č. 108/2006 Sb., o sociálních službách a vyhlášky č. 505/2006 Sb., kterou se provádějí některá ustanovení tohoto zákona. Jeho prostřednictvím se stát podílí na zajištění pomoci osobám, které o sebe z důvodu nemoci, úrazu nebo jiných zdravotních komplikací dlouhodobě nezvládají pečovat, a jsou proto závislé na jiných. Náklady na vyplácení příspěvku na péči se hradí ze státního rozpočtu.

Z poskytnutého příspěvku se následně hradí pomoc, kterou dotyčnému dle jeho vlastního rozhodnutí poskytuje osoba blízká, asistent sociální péče, registrovaný poskytovatel sociálních služeb, dětský domov nebo také speciální lůžkové zdravotnické zařízení hospicového typu. Příspěvek přitom náleží osobě, o kterou je pečováno, nikoliv člověku, jenž péči zajišťuje.

Kdo je osoba blízká?

Pokud jde o příspěvek na péči o osobu blízkou, podle § 24 zákona o důchodovém pojištění splňují definici osoby blízké tito lidé:

  • manžel či manželka,
  • příbuzný v přímé linii,
  • dítě vlastní, osvojené i převzaté do trvalé péče,
  • sourozenec,
  • snacha či zeť,
  • manžel rodiče kteréhokoliv z manželů.

Hodnotí-li se osoba blízká, definice ovšem uvádí, že se ne vždy musí jednat o příbuzného. Může to být naopak i člověk, který s dotyčným sdílí společnou domácnost a dělí se s ním o náklady na bydlení.

VIDEO: Příspěvek na péči

Zdroj: youtube.com/@uradpracecr6914

Nárok na příspěvek na péči

Pokud se chcete ucházet o příspěvek na péči, podmínky jsou jasně dané. Nárok na příspěvek má osoba starší 1 roku, která z důvodu dlouhodobě nepříznivého zdravotního stavu potřebuje pomoc jiné fyzické osoby při zvládání základních životních potřeb v rozsahu, který je stanovený na základě stupně závislosti dotyčného.

Stupeň závislosti se vždy hodnotí podle počtu základních životních potřeb, které člověk není schopný bez cizí pomoci sám zvládnout. Mezi hodnocené parametry (někdy označované také jako stupně bezmocnosti) patří:

  • mobilita,
  • orientace,
  • komunikace,
  • stravování,
  • oblékání a obouvání,
  • tělesná hygiena,
  • výkon fyziologické potřeby,
  • péče o zdraví,
  • osobní aktivity,
  • péče o domácnost (ne pro osoby mladší 18 let).

Bližší vymezení schopností zvládat základní životní potřeby a způsob jejich hodnocení je stanoven vyhláškou č. 505/2006 Sb.

Příspěvek na péči: stupně závislosti

Od toho, jak velké potíže při zvládání základních životních potřeb daná osoba pociťuje, se odvíjí stupeň závislosti na druhých. Podle toho, kolik položek z výše uvedeného seznamu člověk nezvládá, rozlišujeme tyto skupiny:

  • I. stupeň závislosti (lehká závislost) – zahrnuje dospělé osoby, které nedokáží vykonat 3–4 základní životní potřeby, a děti, které nezvládají plnění 3 životních potřeb,
  • II. stupeň závislosti (středně těžká závislost) – dospělí samostatně nedokáží plnit 5–6 základních potřeb, v případě dětí je to 4–5 potřeb,
  • III. stupeň závislosti (těžká závislost) – sem patří dospělí jedinci, kteří potřebují pomoc se 7–8 životními potřebami a děti, které nezvládají 6–7 těchto potřeb,
  • IV. stupeň závislosti (úplná závislost) – u dospělých se jedná o 9–10 nezvládnutých životních potřeb, v případě dětí je to 8–10 úkonů, které nedokáží samostatně plnit.

Jaká je výše příspěvku na péči?

Pokud jde o částku, kterou v rámci příspěvku na péči stát vyplácí, vždy je kromě stupně závislosti nutné zohlednit také to, zda se jedná o dítě, nebo jde o osobu, která již dovršila dospělosti. V roce 2019 navíc zaznamenal příspěvek na péči zvýšení, a to u lidí zařazených do dvou nejvyšších stupňů závislosti.

Příspěvek na péči pro osoby mladší 18 let:

  • I. stupeň závislosti – 3300 Kč za kalendářní měsíc,
  • II. stupeň závislosti – 6600 Kč za kalendářní měsíc,
  • III. stupeň závislosti – 13 900 Kč za kalendářní měsíc, 
  • IV. stupeň závislosti – 19 200 Kč za kalendářní měsíc.

Příspěvek na péči pro osoby starší 18 let:

  • I. stupeň závislosti – 880 Kč za kalendářní měsíc,
  • II. stupeň závislosti – 4400 Kč za kalendářní měsíc,
  • III. stupeň závislosti – 12 800 Kč za kalendářní měsíc, 
  • IV. stupeň závislosti – 19 200 Kč za kalendářní měsíc.

Zvýšení příspěvku na péči

Existují i situace, kdy může dojít ke zvýšení příspěvku na péči, a to konkrétně o 2000 Kč měsíčně. V prvním případě se toto navýšení týká nezaopatřeného dítěte do 18 let věku, kterému příspěvek na péči náleží. Zde ovšem platí celá řada výjimek. Jednou z nich je například situace, kdy je dítě v plném přímém zaopatření zařízení pro péči o děti a mládež.

Zvýšení příspěvku se dále netýká dítěte, kterému náleží příspěvek na úhradu potřeb dítěte ze systému dávek pěstounské péče podle zákona o sociálně-právní ochraně dětí, ale také dítěte, jemuž příspěvek na úhradu potřeb ze systému dávek pěstounské péče nenáleží, jelikož požívá důchod z důchodového pojištění, který je vyšší než tento příspěvek.

Druhá situace, kdy může dojít ke zvýšení, se týká rodiče, kterému příspěvek na péči náleží, a který pečuje o nezaopatřené dítě do 18 let věku. Podmínkou nicméně je, že rozhodný příjem oprávněné osoby a osob s ní společně posuzovaných musí být nižší než dvojnásobek částky životního minima oprávněné osoby a osob s ní společně posuzovaných podle zákona o životním a existenčním minimu.

Žádost o příspěvek na péči

Žádost se podává na kontaktním pracovišti krajské pobočky Úřadu práce, přičemž příslušnost se určuje dle místa trvalého pobytu žadatele. Potřebné formuláře jsou k dispozici na všech kontaktních pracovištích Úřadu práce, kde je možné vytištěný a vyplněný tiskopis předepsaný ministerstvem také podat. Pokud máte o danou sociální dávku zájem, momentálně existuje pro příspěvek na péči o osobu blízkou formulář také v elektronické podobě.

Elektronické podání formuláře je možné provést dvěma způsoby, a to konkrétně formou odeslání s elektronickým podpisem žadatele, kde bude kvalifikovaný certifikát vybaven Identifikátorem klienta MPSV, nebo odesláním přes datovou schránku. Pro odesílání formulářů z datové schránky přitom fyzická osoba nemusí vlastnit kvalifikovaný certifikát.

Rozhodnutí o přiznání příspěvku na péči

Příspěvek na péči může být dotyčné osobě přiznán pouze na základě podané žádosti, přičemž je nutné, aby zároveň došlo i k posouzení jejího zdravotního stavu. Po podání žádost je tedy nejprve nutné zahájit sociální šetření, které provádí sociální pracovník krajské pobočky Úřadu práce. Ten zjišťuje schopnost samostatného života žadatele v jeho přirozeném sociálním prostředí.

Jakmile pracovník situaci prošetří, krajská pobočka Úřadu práce zašle příslušné Okresní správě sociálního zabezpečení (OSSZ) žádost o posouzení stupně závislosti dané osoby. To provádí odborný lékař, a to na základě sociálního šetření a zjištěných potřeb dotyčného. Dále je nutné také zhodnocení zaslané zdravotní dokumentace od příslušného ošetřujícího doktora či odborníka, jehož daná osoba dlouhodobě navštěvuje, a případně i vlastní vyšetření posuzujícího lékaře.

Podle toho, k jakému závěru odborný lékař dojde, vydá krajská pobočka Úřadu práce rozhodnutí o tom, zda příspěvek na péči žadateli přiznává, či nikoliv. Zde bude uvedeno také to, jaký stupeň závislosti byl zjištěn a jaká tedy bude výše příspěvku na péči. Proti rozhodnutí se lze nicméně odvolat, pokud žadatel není s výsledkem spokojený. Odvolání se pak podává prostřednictvím úřadu, jenž napadené rozhodnutí vydal, a o věci dále rozhoduje MPSV.

Jestliže se časem zdravotní stav dotyčného zhorší, může zažádat o zvýšení příspěvku na péči. K tomu slouží tiskopis pojmenovaný Návrh na změnu výše přiznaného příspěvku na péči, přičemž je nutné počítat s tím, že následovat bude další sociální šetření a vypracování nového zdravotního posudku.

Výplata příspěvku na péči

Příspěvky na péči jsou vypláceny měsíčně, a to vždy v kalendářním měsíci, za který dané osobě náleží. Převodem na platební učet zvolený příjemcem či poštovním poukazem ho vyplácí krajská pobočka Úřadu práce, která se dříve postarala o prošetření situace.

Příspěvek na péči a zaměstnání

Spoustu lidí dnes zajímá, jak je to v případě příspěvku na péči s nárokem na důchod. Péče o osobu blízkou se totiž často pojí s tím, že pečující člověk musí opustit své zaměstnání. Pro takové případy stanovil zákon o důchodovém pojištění takzvanou náhradní dobu pojištění. To jednoduše znamená, že lidem pečujícím o osobu blízkou se toto období počítá do doby pojištění, která je pro přiznání důchodu zapotřebí, ačkoliv nejsou v tu chvíli výdělečně činní.

Co je příspěvek na péči?
Jedná se o sociální dávku určenou lidem, kteří z důvodu nepříznivého zdravotního stavu potřebují pomoc druhých. Stát ji poskytuje na základě zákona č. 108/2006 Sb., o sociálních službách a vyhlášky č. 505/2006 Sb., kterou se provádějí některá ustanovení tohoto zákona. Z poskytnutých peněz se následně hradí pomoc, kterou zajišťuje osoba blízká, asistent sociální péče, registrovaný poskytovatel sociálních služeb, dětský domov nebo speciální lůžkové zdravotnické zařízení hospicového typu.
Kdo má nárok na příspěvek na péči?
Nárok na příspěvek má osoba, která je starší 1 roku a z důvodu dlouhodobě nepříznivého zdravotního stavu potřebuje pomoc jiné fyzické osoby při zvládání základních životních potřeb, a to v rozsahu, který je stanoven na základě stupně závislosti dotyčného. Ten se odvíjí od počtu životních potřeb, s nimiž si člověk nedokáže sám poradit.
Jaká je výše příspěvku na péči?
Výše příspěvku se odvíjí od stupně závislosti a zohledňuje také věk osoby, které náleží. Děti mladší 18 let mohou mít podle nezvládnutých základních životních potřeb nárok minimálně na 3300 Kč v prvním stupni závislosti a maximálně na 13 200 Kč či 19 200 Kč ve čtvrtém stupni závislosti. U dospělých se částka pohybuje v rozmezí od 880 Kč do 19 200 Kč.
Kde podat žádost o příspěvek na péči?
Žádost o příspěvek na péči se podává na kontaktním pracovišti krajské pobočky Úřadu práce a příslušnost se zde určuje dle místa trvalého pobytu žadatele. Podání je možné provést osobně za pomoci tiskopisu předepsaného ministerstvem vnitra, který je dostupný na všech kontaktních pracovištích. Další možností je pak odeslání formuláře v elektronické podobě s elektronickým podpisem žadatele, nebo přes datovou schránku.
'; 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 »