Zákon o veterinární péči a o změně některých souvisejících zákonů (veterinární zákon) - Oddíl 1 - Povinnosti chovatelů

Předpis č. 166/1999 Sb.

Znění od 24. 7. 2021

166/1999 Sb. Zákon o veterinární péči a o změně některých souvisejících zákonů (veterinární zákon)

Oddíl 1

Povinnosti chovatelů

§ 4

(1) Chovatel je povinen

a) chovat zvířata způsobem, v prostředí a podmínkách, které vyžadují jejich biologické potřeby, fyziologické funkce a zdravotní stav a předcházet poškození jejich zdraví,

b) sledovat zdravotní stav zvířat, v odůvodněných případech jim včas poskytnout první pomoc a požádat o odbornou veterinární pomoc,

c) bránit vzniku a šíření nákaz a jiných onemocnění zvířat a plnit povinnosti stanovené tímto zákonem nebo na jeho základě k zdolávání těchto nákaz nebo jiných onemocnění zvířat7c),

d) poskytnout nezbytnou součinnost a pomoc k tomu, aby mohlo být řádně provedeno nařízené vyšetření zvířete, odběr vzorků, ochranné očkování nebo jiný odborný veterinární úkon, například fixace zvířete, předvedení zvířete v zájmovém chovu,

e) podávat zvířatům léčivé přípravky, jejichž výdej je vázán na předpis veterinárního lékaře, jen podle jeho pokynů,

f) zajistit, aby byli psi, jakož i lišky a jezevci držení v zajetí, ve stáří od 3 do 6 měsíců platně očkováni proti vzteklině a poté během doby účinnosti předchozí použité očkovací látky přeočkováni, uchovávat doklad o očkování po dobu platnosti očkování a na požádání jej předložit úřednímu veterinárnímu lékaři,

g) zajistit, aby bylo neprodleně a v rozsahu nezbytně nutném pro vyloučení podezření z onemocnění vzteklinou veterinárně vyšetřeno zvíře, které poranilo člověka nebo s ním přišlo do přímého kontaktu způsobem nebo za okolností, které mohou vyvolávat podezření z onemocnění touto nákazou,

h) dodržovat povinnosti plynoucí z předpisů Evropské unie7g),

i) zabezpečit provádění vyšetření, zdravotních zkoušek a povinných preventivních a diagnostických úkonů v rámci veterinární kontroly zdraví, kontroly dědičnosti zdraví a kontroly pohody zvířat, a to v rozsahu a lhůtách stanovených Ministerstvem zemědělství (dále jen „ministerstvo“) podle § 44 odst. 1 písm. d), uchovávat jejich výsledky po dobu nejméně 3 let a na požádání je předkládat úřednímu veterinárnímu lékaři. Je-li třeba provést též laboratorní vyšetření vzorků, musí být toto vyšetření provedeno v laboratoři uvedené v § 52 odst. 3.

(2) K inseminaci, přenosu embryí a přirozené plemenitbě lze používat jen zvířata, která podle výsledků vyšetření splňují podmínky stanovené tímto zákonem a plemenářským zákonem.8)

(3) Chovatel, který chová 3 a více psů samičího pohlaví starších 12 měsíců, je povinen tuto skutečnost písemně nebo prostřednictvím informačního systému Státní veterinární správy oznámit krajské veterinární správě Státní veterinární správy nebo Městské veterinární správě v Praze Státní veterinární správy (dále jen „krajská veterinární správa“) nejpozději do 7 dnů ode dne, kdy počet chovaných psů samičího pohlaví starších 12 měsíců dosáhl 3 a více chovaných zvířat; v oznámení chovatel uvede počet chovaných zvířat a místo jejich chovu.

(4) Chovatel uvedený v odstavci 3 je dále povinen oznámit krajské veterinární správě písemně nebo prostřednictvím informačního systému Státní veterinární správy snížení počtu jím chovaných psů samičího pohlaví starších 12 měsíců pod 3, a to nejpozději do 7 dnů ode dne, kdy tato skutečnost nastala.

(5) Žije-li více chovatelů ve společné domácnosti, ve které chovají 3 a více psů samičího pohlaví starších 12 měsíců, má oznamovací povinnost podle odstavců 3 a 4 pouze jeden z nich.

(6) Oznamovací povinnost podle odstavců 3 a 4 se nevztahuje na

a) útulek pro zvířata,

b) hotel nebo penzion pro zvířata,

c) osobu, jejíž oznamovací povinnost upravuje zvláštní právní předpis9),

d) ozbrojené síly, bezpečnostní sbory, Vojenskou policii nebo obecní policii68), nebo

e) chovatele vodicích nebo asistenčních psů podle zvláštních právních předpisů69).

(7) Očkování psa proti vzteklině podle odstavce 1 je platné, pouze pokud pes splňuje podmínky na označení zvířat v zájmovém chovu stanovené v čl. 17 odst. 1 předpisu Evropské unie o veterinárních podmínkách pro neobchodní přesuny zvířat v zájmovém chovu65), s výjimkou psa, který byl označen čitelným tetováním provedeným před 3. červencem 2011. Chovatel, který chová psa, je dále povinen zajistit označení psa čipem do 3 měsíců věku, nejpozději však před přechodem k novému majiteli. Chovatel, který chová psa, je povinen zajistit, aby identifikační číslo psa bylo zaznamenáno v dokladu o očkování psa. Identifikačním číslem psa se rozumí alfanumerický kód zobrazený transpondérem, který umožňuje zjistit totožnost konkrétního psa.

§ 4a

(1) Chovatel je povinen zajistit, aby psi, kočky a fretky v zájmovém chovu, pokud jsou přemísťováni v rámci neobchodního přesunu mezi členskými státy nebo mezi členskými státy a územími a třetími zeměmi podle čl. 13 odst. 1 předpisu Evropské unie o veterinárních podmínkách pro neobchodní přesuny zvířat v zájmovém chovu48), splňovali podmínky stanovené tímto předpisem.

(2) Je-li přemísťováno více než pět zvířat uvedených v odstavci 1, která nesplňují podmínky uvedené v článku 5 odst. 2 předpisu Evropské unie o veterinárních podmínkách pro neobchodní přesuny zvířat v zájmovém chovu48), je chovatel povinen zajistit splnění požadavků uvedených v hlavě IV.

(3) Doklad, který umožňuje zjistit totožnost zvířete a kontrolu jeho nákazového statusu (dále jen „pas“)49), 50), vydává veterinární lékař schválený pro tuto činnost krajskou veterinární správou.

(4) Schválený veterinární lékař při vydání a vyplnění pasu postupuje podle čl. 22 předpisu Evropské unie o veterinárních podmínkách pro neobchodní přesuny zvířat v zájmovém chovu48) a je povinen uchovávat záznamy uvedené v čl. 22 odst. 3 předpisu Evropské unie o veterinárních podmínkách pro neobchodní přesuny zvířat v zájmovém chovu48) po dobu nejméně 3 let, předávat tyto záznamy Komoře veterinárních lékařů České republiky (dále jen „Komora“) a na požádání je předložit úřednímu veterinárnímu lékaři.

(5) Schválení soukromého veterinárního lékaře může být krajskou veterinární správou pozastaveno nebo odejmuto, jestliže tento lékař vydal pas s prokazatelně nepravdivými údaji, vyplněný neúplně nebo nesprávně, anebo v rozporu s podmínkami stanovenými tímto zákonem nebo předpisem Evropské unie o veterinárních podmínkách pro neobchodní přesuny zvířat v zájmovém chovu48).

(6) Evidenci pasů vede Komora. Komora umožní orgánům veterinární správy získávat z evidence veškeré údaje potřebné k výkonu veterinárního dozoru.

(7) Prováděcí právní předpis upraví podrobněji označování psů, koček a fretek v zájmovém chovu a stanoví způsob výroby, vydávání a číslování pasů, vedení jejich evidence, způsob a lhůty pro předávání údajů do této evidence, obsah této evidence, požadavky na zaznamenávání údajů do pasu a jeho vzor.

§ 4b

(1) Ústřední veterinární správa Státní veterinární správy (dále jen „Ústřední veterinární správa“) registruje na základě písemné žádosti

a) osobu pro účely výroby pasů (dále jen „výrobce pasů“), která k žádosti přiloží návrh pasu odpovídající vzoru uvedenému v prováděcím právním předpisu, a

b) osobu pro účely distribuce pasů (dále jen „distributor pasů“).

(2) Výrobce pasů je povinen

a) zajistit, aby pasy odpovídaly vzoru uvedenému v prováděcím právním předpisu,

b) opatřit pasy číslem z řady přidělené Ústřední veterinární správou v souladu s čl. 21 odst. 3 předpisu Evropské unie o veterinárních podmínkách pro neobchodní přesuny zvířat v zájmovém chovu48),

c) dodávat pasy pouze distributorovi pasů,

d) předávat záznamy o vyrobených pasech Komoře způsobem stanoveným prováděcím právním předpisem a na požádání je předkládat Státní veterinární správě,

e) oznámit Ústřední veterinární správě bez zbytečného odkladu změny údajů rozhodných z hlediska registrace a

f) oznámit Ústřední veterinární správě ukončení výroby pasů.

(3) Distributor pasů je povinen

a) dodávat pasy pouze veterinárním lékařům schváleným k vydávání pasů podle § 4a,

b) uchovávat záznamy o dodaných pasech podle čl. 23 odst. 2 předpisu Evropské unie o veterinárních podmínkách pro neobchodní přesuny zvířat v zájmovém chovu48) po dobu nejméně 3 let,

c) předávat záznamy o dodaných pasech podle čl. 23 odst. 2 předpisu Evropské unie o veterinárních podmínkách pro neobchodní přesuny zvířat v zájmovém chovu48) Komoře způsobem stanoveným prováděcím právním předpisem a na požádání je předkládat Státní veterinární správě,

d) oznámit Ústřední veterinární správě bez zbytečného odkladu změny údajů rozhodných z hlediska registrace a

e) oznámit Ústřední veterinární správě ukončení distribuce pasů.

§ 5

(1) Chovatel hospodářských zvířat je dále povinen

a) zabezpečit v rozsahu odpovídajícím druhu zvířat, způsobu jejich chovu a ustájení čištění, dezinfekci, dezinsekci a deratizaci stájí, jiných prostorů a zařízení, v nichž jsou chována zvířata, jakož i čištění a dezinfekci technologických zařízení, dopravních prostředků, strojů, nástrojů, nářadí, pracovních pomůcek a jiných předmětů, které přicházejí do přímého styku se zvířaty, používat k tomu přípravky schválené podle tohoto zákona nebo zvláštních právních předpisů9a), dodržovat návod k jejich použití a zacházet s vedlejšími živočišnými produkty způsobem stanoveným tímto zákonem a předpisy Evropské unie9b),

b) v případě nebezpečí zavlečení nákazy nebo nemoci přenosné ze zvířat na člověka zřídit, popřípadě umístit prostředky sloužící k ochraně proti nákazám a nemocem přenosným ze zvířat na člověka a dbát o jejich řádnou funkci,

c) k napájení zvířat používat vodu, která neohrožuje zdravotní stav zvířat a zdravotní nezávadnost jejich produktů, a ke krmení zvířat používat jen zdravotně nezávadná krmiva,

d) podávat zvířatům pouze léčivé přípravky v souladu s pravidly pro jejich používání při poskytování veterinární péče5), veterinární přípravky schválené podle tohoto zákona, doplňkové látky v souladu se zvláštními právními předpisy4) a dodržovat podmínky pro podávání některých látek a přípravků zvířatům, jejichž produkty jsou určeny k výživě lidí (§ 19), poskytovat nezbytnou součinnost orgánům, které provádějí odběr vzorků a šetření v souvislosti s plněním plánu sledování přítomnosti některých látek a jejich reziduí u zvířat, v živočišných produktech, krmivech a napájecí vodě (dále jen „plán sledování některých látek a jejich reziduí“), a dodržovat opatření přijatá na základě tohoto šetření,

e) nepodávat zvířatům látky a přípravky, jejichž používání u hospodářských zvířat nebo u zvířat, jejichž produkty jsou určeny k výživě lidí, není povoleno (§ 19 odst. 1 a 3)9c),

f) předkládat na požádání úřednímu veterinárnímu lékaři záznamy stanovené zvláštním právním předpisem9d) a umožnit přístup k těmto záznamům také soukromému veterinárnímu lékaři, který vydává potvrzení o zdravotním stavu zvířete a o nákazové situaci v místě původu (dále jen „zdravotní potvrzení“),

g) v případě, že chová zvěř ve farmovém chovu, oznámit krajské veterinární správě nejméně 7 dnů předem zahájení a ukončení své chovatelské činnosti ve vztahu k farmovému chovu zvěře,

h) dodávat na jatky pouze jatečná zvířata s pravdivě a úplně uvedenými informacemi o potravinovém řetězci v souladu s přílohou II oddílu III nařízení (ES) č. 853/2004, kterým se stanoví zvláštní hygienická pravidla pro potraviny živočišného původu; určeným obdobím ve smyslu přílohy II oddílu III bodu 3 písm. c) nařízení (ES) č. 853/2004 se rozumí 60 dnů přede dnem dodání jatečného zvířete na jatky,

i) uvádět na trh pouze zvířata, kterým nebyly podávány nepovolené nebo zakázané4) látky nebo přípravky (§ 19), vést záznamy o tom, kdy a které léčivé přípravky a látky, jimiž mohou být nepříznivě ovlivněny živočišné produkty, byly podány zvířatům, neprodleně předkládat tyto záznamy veterinárnímu lékaři, aby v nich zaznamenal podání léčivých přípravků zvířatům nebo očkování zvířat, uchovávat tyto záznamy nejméně po dobu 5 let a dodržovat ochranné lhůty.

(2) Chovatel, který chová včelstva, je dále povinen neprodleně po zjištění úhynu včelstev na stanovišti včelstev hlásit úhyn nad limit stanovený prováděcím právním předpisem krajské veterinární správě.

(3) Mor včelího plodu a hnilobu včelího plodu je zakázáno léčit.

(4) Chovatel, který jako podnikatel10) chová hospodářská zvířata pro účely podnikání, je dále povinen

a) oznámit krajské veterinární správě nejméně 7 dnů předem zahájení a ukončení podnikatelské činnosti, jakož i informovat krajskou veterinární správu bez zbytečného odkladu o změnách, k nimž má dojít ve způsobu ustájení nebo v druzích chovaných zvířat,

b) zajistit, aby práce při ošetřování zvířat a získávání jejich produktů vykonávaly pouze osoby způsobilé k takové činnosti podle zvláštních právních předpisů11), které mají základní znalosti o péči o zvířata a o hygienických požadavcích na získávání živočišných produktů,

c) zpracovat podle schválených zásad pohotovostní plán pro případ výskytu nebezpečných nákaz a nemocí přenosných ze zvířat na člověka, jakož i pro případ vzniku mimořádné situace (dále jen „pohotovostní plán“), zajistit, aby pohotovostní plán byl přístupný všem osobám uvedeným v písmenu b) a při každé změně chovu zvířat, nejméně však jednou ročně, pohotovostní plán aktualizovat,

d) zpracovat vlastní ozdravovací program v souladu s celostátním programem tlumení jedné nebo více nákaz, nemocí přenosných ze zvířat na člověka a původců těchto nákaz a nemocí (dále jen „program ozdravování zvířat“), předložit jej včetně příslušných změn ke schválení krajské veterinární správě nejpozději do 60 dnů od data zveřejnění programu ozdravování zvířat ve Věstníku Ministerstva zemědělství a postupovat podle tohoto programu.

(5) Chovatel, který chová drůbež v rámci svého podnikání, je dále povinen neprodleně po zjištění poklesu v příjmu potravy a vody, poklesu v produkci vajec nebo zvýšené úmrtnosti drůbeže nad limity stanovené prováděcím právním předpisem hlásit tyto skutečnosti krajské veterinární správě.

(6) Pro chovatele, který chová hmyz určený k lidské spotřebě nebo k výrobě zpracované živočišné bílkoviny, platí povinnosti chovatele hospodářských zvířat uvedené v odstavci 1 písm. a) až e) a i) a v odstavci 4 písm. a).

(7) Prováděcí právní předpis stanoví

a) veterinární požadavky na prostředí, v němž jsou zvířata chována, na jejich ošetřování a ochranu před nákazami a nemocemi přenosnými ze zvířat na člověka a na jejich uvádění na trh,

b) které látky a přípravky nelze uvádět do oběhu a podávat zvířatům, které látky a přípravky nelze podávat zvířatům určitých druhů a které látky a přípravky lze podávat zvířatům určitých druhů jen za určitých podmínek a tyto podmínky,

c) postup při zpracovávání pohotovostních plánů a ozdravovacích programů chovatelů, hlediska, podle nichž se tyto plány a programy zpracovávají, a co mají obsahovat,

d) ve kterých případech a za jakých podmínek může Státní veterinární správa povolit v mezích stanovených právními akty Evropské unie zmírnění veterinárních požadavků stanovených na zdraví zvířat a jejich pohodu,

e) limity poklesu v příjmu potravy a vody, poklesu v produkci vajec nebo zvýšené úmrtnosti drůbeže, při jejichž překročení jsou chovatelé, kteří jako podnikatelé chovají drůbež pro účely podnikání, povinni hlásit tyto skutečnosti krajské veterinární správě,

f) limit zvýšené úmrtnosti včelstev, při jehož překročení jsou chovatelé povinni hlásit tyto úhyny krajské veterinární správě.

§ 5a

(1) Jde-li o chov živočichů pocházejících z akvakultury, je chovatel povinen dále

a) požádat krajskou veterinární správu o schválení a registraci, popřípadě jen o registraci produkčního podniku akvakultury nebo zvláštního rybochovného zařízení, v němž jsou chováni vodní živočichové (dále jen „zařízení pro chov živočichů pocházejících z akvakultury“), oznámit krajské veterinární správě datum zahájení chovatelské činnosti, provozovat ji až po schválení, popřípadě registraci, a oznamovat krajské veterinární správě změny údajů uvedených v žádosti. V žádosti uvede

1. vedle údajů stanovených pro podání správním řádem číslo telefonu, faxu nebo elektronickou adresu,

2. druhy chovaných živočichů pocházejících z akvakultury, způsoby jejich chovu, zdroje vody a místa jejího vypouštění,

b) vést záznamy o přemísťování živočichů pocházejících z akvakultury a produktů z nich získaných do hospodářství nebo z hospodářství, a to způsobem, který umožní zjistit místo původu a místo určení přemísťovaných živočichů, o úhynech živočichů pocházejících z akvakultury v každé epizootologické jednotce a uchovávat protokoly o kontrolním zjištění pořízené z provedených úředních kontrol, a to po dobu nejméně 2 let od jejich převzetí.

(2) Krajská veterinární správa schválí a registruje, popřípadě jen registruje zařízení pro chov živočichů pocházejících z akvakultury, jestliže toto zařízení odpovídá svou polohou, uspořádáním, materiálním a personálním vybavením veterinárním požadavkům kladeným na taková zařízení a jejich provoz a jeho činnost nepředstavuje nepřijatelné riziko šíření nákaz do hospodářství nebo do chovných oblastí měkkýšů, anebo šíření nákaz v populaci živočichů pocházejících z akvakultury volně žijících v blízkosti hospodářství nebo chovné oblasti měkkýšů. Před případným neschválením však musí krajská veterinární správa na návrh žadatele zvážit možná opatření ke zmírnění rizika, včetně možného alternativního umístění zařízení.

(3) Jestliže krajská veterinární správa zjistí, že nejsou dodržovány povinnosti chovatele nebo pravidla pro chov živočichů pocházejících z akvakultury, stanovená tímto zákonem, může schválení a registraci pozastavit nebo odejmout.

(4) Prováděcí právní předpis stanoví

a) obsah náležitostí žádosti o schválení a registraci, popřípadě jen o registraci zařízení pro chov živočichů pocházejících z akvakultury, způsob a termíny oznamování změn údajů uvedených v žádosti,

b) která zařízení pro chov živočichů pocházejících z akvakultury mohou být pouze registrována,

c) veterinární a hygienické požadavky na živočichy pocházející z akvakultury a jejich chov, na uvádění živočichů pocházejících z akvakultury a produktů z nich získaných na trh a na vypouštění volně žijících vodních živočichů do zařízení pro chov živočichů pocházejících z akvakultury,

d) způsob vedení seznamů schválených a registrovaných, popřípadě jen registrovaných zařízení pro chov živočichů pocházejících z akvakultury a záznamů chovatele podle odstavce 1 písm. b).

Skrýt změny zákona Legenda text přidán text vypuštěn
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); } } }