Zákon o poplatcích za udržování patentů a dodatkových ochranných osvědčení pro léčiva a pro přípravky na ochranu rostlin a o změně některých zákonů (úplné znění)

Předpis č. 173/2002 Sb.

Znění od 29. 9. 2005

173/2002 Sb. Zákon o poplatcích za udržování patentů a dodatkových ochranných osvědčení pro léčiva a pro přípravky na ochranu rostlin a o změně některých zákonů

173

ZÁKON

ze dne 9. dubna 2002

o poplatcích za udržování patentů a dodatkových ochranných osvědčení pro léčiva a pro přípravky na ochranu rostlin a o změně některých zákonů

Parlament se usnesl na tomto zákoně České republiky:

ČÁST PRVNÍ

POPLATKY ZA UDRŽOVÁNÍ PATENTŮ A DODATKOVÝCH OCHRANNÝCH OSVĚDČENÍ PRO LÉČIVA A PRO PŘÍPRAVKY NA OCHRANU ROSTLIN

§ 1

Předmět úpravy

(1) Podle tohoto zákona jsou vyměřovány a vybírány poplatky za udržování patentu v platnosti (dále jen "udržovací poplatky za patent"), poplatky za udržování evropského patentu s účinky pro Českou republiku v platnosti (dále jen "udržovací poplatky za evropský patent"), poplatky za udržování dodatkového ochranného osvědčení pro léčiva a pro přípravky na ochranu rostlin v platnosti (dále jen "udržovací poplatky za dodatková osvědčení").1)

(2) Poplatky podle odstavce 1 vyměřuje a vybírá Úřad průmyslového vlastnictví (dále jen "Úřad").

§ 2

Sazby

Sazby udržovacích poplatků za patent, udržovacích poplatků za evropský patent a udržovacích poplatků za dodatková osvědčení jsou stanoveny v sazebníku udržovacích poplatků, který je uveden v příloze k tomuto zákonu.

§ 3

Poplatník

(1) Poplatníkem udržovacích poplatků za patent je majitel patentu.

(2) Poplatníkem udržovacích poplatků za evropský patent je majitel evropského patentu s účinky pro Českou republiku (dále jen "evropský patent").

(3) Poplatníkem udržovacích poplatků za dodatková osvědčení je majitel dodatkového ochranného osvědčení pro léčiva a pro přípravky na ochranu rostlin (dále jen "dodatkové osvědčení").

§ 4

Osvobození od poplatků

Od placení udržovacích poplatků je osvobozena Česká republika.

§ 5

Vyměření a splatnost udržovacího poplatku za patent

(1) Udržovací poplatky za patent se platí za jednotlivá roční období trvání patentu, počínaje dnem podání přihlášky vynálezu.

(2) První udržovací poplatek za patent vyměří Úřad rozhodnutím, a to ve výši odpovídající sazbám udržovacích poplatků za patent za období ode dne podání přihlášky vynálezu do dne splatnosti vyměřeného udržovacího poplatku za patent. Tento poplatek je splatný nejdéle do 3 měsíců ode dne nabytí právní moci rozhodnutí o udělení patentu.

(3) Udržovací poplatek za patent za následující roční období je splatný bez vyměření nejpozději dnem, ve kterém uplyne předchozí roční období.

§ 6

Splatnost udržovacího poplatku za evropský patent

(1) Udržovací poplatky za evropský patent se platí za jednotlivá roční období trvání platnosti evropského patentu, počínaje dnem podání evropské patentové přihlášky s účinky pro Českou republiku.

(2) První udržovací poplatek za evropský patent se platí bez vyměření až za roční období, která následují po ročním období, ve kterém bylo udělení evropského patentu oznámeno v Evropském patentovém věstníku.

(3) Stane-li se první udržovací poplatek za evropský patent splatným do 2 měsíců ode dne oznámení o udělení evropského patentu v Evropském patentovém věstníku, je tento poplatek řádně zaplacen, je-li zaplacen ve lhůtě 2 měsíců ode dne tohoto oznámení.

(4) Udržovací poplatek za evropský patent za následující roční období je splatný bez vyměření nejpozději dnem, ve kterém uplyne předchozí roční období.

§ 7

Splatnost udržovacího poplatku za dodatková osvědčení

(1) Udržovací poplatky za dodatková osvědčení se platí za jednotlivá roční období trvání platnosti dodatkového osvědčení, počínaje dnem podání přihlášky vynálezu nebo podání evropské patentové přihlášky s účinky pro Českou republiku, která navazují na poslední roční období platnosti patentu nebo platnosti evropského patentu.

(2) První udržovací poplatek za dodatkové osvědčení je splatný před uplynutím posledního ročního období platnosti patentu nebo evropského patentu nebo do 2 měsíců ode dne nabytí právní moci rozhodnutí o udělení dodatkového ochranného osvědčení, podle toho, která z těchto lhůt uplyne později.

(3) Udržovací poplatek za dodatkové osvědčení za následující roční období je splatný bez vyměření nejpozději dnem, ve kterém uplyne předchozí roční období.

Společná ustanovení o placení udržovacích poplatků

§ 8

(1) Poplatník je povinen u každé platby udržovacího poplatku za patent, udržovacího poplatku za evropský patent nebo udržovacího poplatku za dodatkové osvědčení (dále jen "udržovací poplatek") uvést, kterého patentu, evropského patentu nebo dodatkového osvědčení se platba udržovacího poplatku týká. Nelze-li jednoznačně zjistit účel platby, Úřad poplatníka vyzve, aby ve stanovené lhůtě tento účel písemně sdělil. Nevyhoví-li poplatník této výzvě, má se za to, že k platbě nedošlo a Úřad platbu vrátí.

(2) Není-li splatný udržovací poplatek zaplacen ve stanovené výši, vyzve Úřad poplatníka k jeho doplacení ve lhůtě 15 dnů ode dne doručení výzvy. Po marném uplynutí této lhůty se má za to, že udržovací poplatek nebyl zaplacen. Úřad platbu, kterou v neúplné výši obdržel, poplatníkovi do 30 dnů ode dne marného uplynutí lhůty vrátí. Ustanovení odstavce 4 tím není dotčeno.

(3) Udržovací poplatek lze řádně zaplatit nejdříve jeden rok přede dnem jeho splatnosti. Udržovací poplatek, který byl zaplacen ve stanovené výši předčasně, Úřad uzná za řádně zaplacený jen na základě písemné žádosti poplatníka, jen je-li zaplacen ve výši stanovené tímto zákonem.

(4) Nebyl-li udržovací poplatek zaplacen ve stanovené lhůtě nebo má-li se za to, že nebyl zaplacen podle odstavce 2, může jej poplatník uhradit dodatečně ve lhůtě 6 měsíců ode dne jeho splatnosti. V tomto případě je poplatník povinen zároveň se splatným udržovacím poplatkem uhradit penále ve výši, které se rovná výši splatného udržovacího poplatku.

§ 9

(1) Úřad zaplacený udržovací poplatek vrátí, jestliže nevznikla povinnost jej platit; to neplatí, jestliže na základě žádosti poplatníka podle § 8 odst. 3 Úřad uznal udržovací poplatek, který dosud nebyl splatný, za řádně zaplacený.

(2) Úřad vrátí bez žádosti poplatníkovi částku, o kterou zaplatil na udržovací poplatek více, než byl povinen, převyšuje-li tato částka 50 Kč.

(3) Úřad nevrátí již zaplacený udržovací poplatek, došlo-li po jeho zaplacení k zániku či zrušení patentu, evropského patentu nebo dodatkového osvědčení, a to včetně udržovacího poplatku zaplaceného předčasně podle § 8 odst. 3.

§ 10

Způsob placení udržovacích poplatků

(1) Udržovací poplatky se platí v české měně

a) bezhotovostním převodem z účtu vedeného u banky nebo pobočky zahraniční banky na příslušný účet Úřadu,

a) bezhotovostním převodem z účtu vedeného u banky nebo pobočky zahraniční banky nebo spořitelního a úvěrního družstva na příslušný účet Úřadu,

b) v hotovosti

1. prostřednictvím banky nebo pobočky zahraniční banky anebo držitele poštovní licence na příslušný účet Úřadu,

1. prostřednictvím banky nebo pobočky zahraniční banky nebo spořitelního a úvěrního družstva anebo držitele poštovní licence na příslušný účet Úřadu,

2. jejím složením v pokladně Úřadu; na přijatou platbu je Úřad povinen vydat potvrzení,

c) šekem.

(2) Čísla příslušných účtů pro placení udržovacích poplatků Úřad zveřejní ve Věstníku Úřadu průmyslového vlastnictví.

§ 11

Řízení

(1) Nestanoví-li tento zákon jinak, nelze u udržovacího poplatku

a) prominout zmeškání lhůty k jeho zaplacení,

b) povolit posečkání s jeho placením, ani

c) povolit jeho zaplacení ve splátkách.

(2) Není-li tímto zákonem stanoveno jinak, platí pro řízení ve věcech udržovacích poplatků ustanovení zvláštního právního předpisu upravujícího správu daní a poplatků.2)

§ 12

Rozpočtové určení udržovacích poplatků

Udržovací poplatky jsou příjmem státního rozpočtu. Úřad za Českou republiku poměrnou část příjmu z udržovacího poplatku za evropský patent odvádí Evropské patentové organizaci způsobem, ve výši a lhůtách, stanovených mezinárodní smlouvou, která byla schválena Parlamentem, ratifikována a vyhlášena a jíž je Česká republika vázána.3)

§ 13

Přechodná ustanovení

(1) Pokud byl první správní poplatek za udržování patentu v platnosti vyměřen přede dnem nabytí účinnosti tohoto zákona, avšak je splatný po dni nabytí účinnosti tohoto zákona, postupuje se podle dosavadních předpisů.

(2) Pokud byl správní poplatek za udržování patentu v platnosti splatný a zaplacený podle dosavadních předpisů přede dnem nabytí účinnosti tohoto zákona, pokládá se za řádně zaplacený podle tohoto zákona pro celé období, pro které byl zaplacen.

(3) Pokud byl správní poplatek za udržování patentu v platnosti, který je splatný po dni nabytí účinnosti tohoto zákona, zaplacen předem, pokládá se tento správní poplatek za udržovací poplatek za patent podle tohoto zákona, pokud splňuje podmínky tímto zákonem stanovené.

(4) Pokud nebyl správní poplatek za udržování patentu v platnosti, který byl splatný přede dnem nabytí účinnosti tohoto zákona, zaplacen ve stanovené výši, je poplatník povinen doplatit správní poplatek podle dosavadních právních předpisů; při výzvě Úřadu k doplacení správního poplatku se postupuje podle tohoto zákona.

(5) Pokud lhůta k zaplacení správního poplatku za udržování patentu v platnosti podle dosavadních právních předpisů marně uplynula přede dnem nabytí účinnosti tohoto zákona a tento správní poplatek byl zaplacen podle dosavadních právních předpisů v další lhůtě 6 měsíců, považuje se tento správní poplatek za udržovací poplatek za patent podle tohoto zákona.

ČÁST DRUHÁ

Změna zákona o správních poplatcích

§ 14

Zákon č. 368/1992 Sb., o správních poplatcích, ve znění zákona č. 10/1993 Sb., zákona č. 72/1994 Sb., zákona č. 85/1994 Sb., zákona č. 273/1994 Sb., zákona č. 36/1995 Sb., zákona č. 118/1995 Sb., zákona č. 160/1995 Sb., zákona č. 301/1995 Sb., zákona č. 151/1997 Sb., zákona č. 305/1997 Sb., zákona č. 149/1998 Sb., zákona č. 157/1998 Sb., zákona č. 167/1998 Sb., zákona č. 63/1999 Sb., zákona č. 166/1999 Sb., zákona č. 167/1999 Sb., zákona č. 223/1999 Sb., zákona č. 326/1999 Sb., zákona č. 352/1999 Sb., zákona č. 357/1999 Sb., zákona č. 360/1999 Sb., zákona č. 363/1999 Sb., zákona č. 46/2000 Sb., zákona č. 62/2000 Sb., zákona č. 117/2000 Sb., zákona č. 133/2000 Sb., zákona č. 151/2000 Sb., zákona č. 153/2000 Sb., zákona č. 154/2000 Sb., zákona č. 156/2000 Sb., zákona č. 158/2000 Sb., zákona č. 227/2000 Sb., zákona č. 241/2000 Sb., zákona č. 242/2000 Sb., zákona č. 307/2000 Sb., zákona č. 365/2000 Sb., zákona č. 140/2001 Sb., zákona č. 231/2001 Sb., zákona č. 76/2002 Sb., zákona č. 120/2002 Sb., zákona č. 146/2002 Sb. a zákona č. 149/2002 Sb., se mění takto:

1. V poznámkách k části VIII sazebníku správních poplatků se v bodě 1 číslice "114" zrušuje.

2. V sazebníku správních poplatků se položka 114 včetně poznámek zrušuje.

ČÁST TŘETÍ

Změna zákona o vynálezech a zlepšovacích návrzích

§ 15

Zákon č. 527/1990 Sb., o vynálezech a zlepšovacích návrzích, ve znění zákona č. 519/1991 Sb., zákona č. 116/2000 Sb. a zákona č. 207/2000 Sb., se mění takto:

1. V § 19 odstavec 4 včetně poznámky pod čarou č. 3a) zní:

"(4) Za udržování platnosti patentu, k němuž majitel nabídl licenci podle odstavce 1, se platí poplatky podle zvláštního právního předpisu3a) pouze v poloviční výši.

3a) Zákon č. 173/2002 Sb., o poplatcích za udržování patentů a dodatkových ochranných osvědčení pro léčiva a pro přípravky na ochranu rostlin a o změně některých zákonů.".

2. V § 21 odst. 2 se slovo "správní" zrušuje a odkaz na poznámku pod čarou č. 4) se nahrazuje odkazem na poznámku pod čarou č. 3a).

3. V § 21 odstavec 3 zní:

"(3) Práva třetích osob, které v dobré víře započaly po marném uplynutí lhůty k zaplacení poplatku s využíváním předmětu vynálezu nebo k takovému využívání provedly vážné a účinné přípravy, nejsou zaplacením tohoto poplatku v dodatečné lhůtě dotčena.".

4. V § 22 písm. b) se slova "správní poplatky4) za udržování platnosti patentu" nahrazují slovy "poplatky za udržování patentu v platnosti3a)".

5. § 35g zní:

"§ 35g

(1) Za udržování evropského patentu v platnosti je majitel povinen platit poplatky podle zvláštního právního předpisu.3a)

(2) Práva třetích osob, které v dobré víře započaly po marném uplynutí lhůty k zaplacení poplatku s využíváním předmětu vynálezu nebo k takovému využívání provedly vážné a účinné přípravy, nejsou zaplacením tohoto poplatku v dodatečné lhůtě dotčena.".

6. V § 35m odst. 3 se slova "správní poplatky podle zvláštního právního předpisu4)" nahrazují slovy "poplatky podle zvláštního právního předpisu3a)".

7. V § 35m odst. 4 se slova "po marném uplynutí lhůty k zaplacení poplatku za udržování osvědčení v platnosti v dobré víře započaly" nahrazují slovy "v dobré víře započaly po marném uplynutí lhůty k zaplacení poplatku za udržování osvědčení v platnosti,".

8. V § 35n odst. 1 písm. c) se slovo "správní" zrušuje.

9. V § 88 se věta druhá zrušuje.

ČÁST ČTVRTÁ

Změna zákona, kterým se mění některé zákony na ochranu průmyslového vlastnictví

§ 16

V čl. X zákona č. 116/2000 Sb., kterým se mění některé zákony na ochranu průmyslového vlastnictví, se slova "dnem 1. července 2002" nahrazují slovy "dnem, v němž se stane ratifikovaná a vyhlášená Úmluva o udělování evropských patentů pro Českou republiku závazná".

ČÁST PÁTÁ

ÚČINNOST

§ 17

Tento zákon nabývá účinnosti dnem, v němž se stane ratifikovaná a vyhlášená Úmluva o udělování evropských patentů pro Českou republiku závazná.

Klaus v. r.

Havel v. r.

Zeman v. r.

Příloha k zákonu č. 173/2002 Sb.

Sazebník udržovacích poplatků

1. Sazebník poplatků za udržování patentů v platnosti

a) za první rok ode dne podání přihlášky vynálezu 1 000 Kč,

b) za druhý rok ode dne podání přihlášky vynálezu 1 000 Kč,

c) za třetí rok ode dne podání přihlášky vynálezu 1 000 Kč,

d) za čtvrtý rok ode dne podání přihlášky vynálezu 1 000 Kč,

e) za pátý rok ode dne podání přihlášky vynálezu 2 000 Kč,

f) za šestý rok ode dne podání přihlášky vynálezu 2 000 Kč,

g) za sedmý rok ode dne podání přihlášky vynálezu 2 000 Kč,

h) za osmý rok ode dne podání přihlášky vynálezu 2 000 Kč,

i) za devátý rok ode dne podání přihlášky vynálezu 3 000 Kč,

j) za desátý rok ode dne podání přihlášky vynálezu 4 000 Kč,

k) za jedenáctý rok ode dne podání přihlášky vynálezu 6 000 Kč,

l) za dvanáctý rok ode dne podání přihlášky vynálezu 8 000 Kč,

m) za třináctý rok ode dne podání přihlášky vynálezu 10 000 Kč,

n) za čtrnáctý rok ode dne podání přihlášky vynálezu 12 000 Kč,

o) za patnáctý rok ode dne podání přihlášky vynálezu 14 000 Kč,

p) za šestnáctý rok ode dne podání přihlášky vynálezu 16 000 Kč,

q) za sedmnáctý rok ode dne podání přihlášky vynálezu 18 000 Kč,

r) za osmnáctý rok ode dne podání přihlášky vynálezu 20 000 Kč,

s) za devatenáctý rok ode dne podání přihlášky vynálezu 22 000 Kč,

t) za dvacátý rok ode dne podání přihlášky vynálezu 24 000 Kč.

2. Sazebník poplatků za udržování evropských patentů v platnosti

a) za první rok ode dne podání evropské patentové přihlášky 1 000 Kč,

b) za druhý rok ode dne podání evropské patentové přihlášky 1 000 Kč,

c) za třetí rok ode dne podání evropské patentové přihlášky 1 000 Kč,

d) za čtvrtý rok ode dne podání evropské patentové přihlášky 1 000 Kč,

e) za pátý rok ode dne podání evropské patentové přihlášky 2 000 Kč,

f) za šestý rok ode dne podání evropské patentové přihlášky 2 000 Kč,

g) za sedmý rok ode dne podání evropské patentové přihlášky 2 000 Kč,

h) za osmý rok ode dne podání evropské patentové přihlášky 2 000 Kč,

i) za devátý rok ode dne podání evropské patentové přihlášky 3 000 Kč,

j) za desátý rok ode dne podání evropské patentové přihlášky 4 000 Kč,

k) za jedenáctý rok ode dne podání evropské patentové přihlášky 6 000 Kč,

l) za dvanáctý rok ode dne podání evropské patentové přihlášky 8 000 Kč,

m) za třináctý rok ode dne podání evropské patentové přihlášky 10 000 Kč,

n) za čtrnáctý rok ode dne podání evropské patentové přihlášky 12 000 Kč,

o) za patnáctý rok ode dne podání evropské patentové přihlášky 14 000 Kč,

p) za šestnáctý rok ode dne podání evropské patentové přihlášky 16 000 Kč,

q) za sedmnáctý rok ode dne podání evropské patentové přihlášky 18 000 Kč,

r) za osmnáctý rok ode dne podání evropské patentové přihlášky 20 000 Kč,

s) za devatenáctý rok ode dne podání evropské patentové přihlášky 22 000 Kč,

t) za dvacátý rok ode dne podání evropské patentové přihlášky 24 000 Kč.

3. Sazebník poplatků za udržování dodatkových osvědčení v platnosti

a) za první rok platnosti dodatkového osvědčení 26 000 Kč,

b) za druhý rok platnosti dodatkového osvědčení 28 000 Kč,

c) za třetí rok platnosti dodatkového osvědčení 30 000 Kč,

d) za čtvrtý rok platnosti dodatkového osvědčení 32 000 Kč,

e) za pátý rok platnosti dodatkového osvědčení 34 000 Kč.

1) Zákon č. 527/1990 Sb., o vynálezech a zlepšovacích návrzích, ve znění pozdějších předpisů.

2) Zákon č. 337/1992 Sb., o správě daní a poplatků, ve znění pozdějších předpisů.

3) Úmluva o udělování evropských patentů (Evropská patentová úmluva) přijatá v Mnichově dne 5. října 1973, ve znění aktu revidujícího článek 63 Evropské patentové úmluvy ze dne 17. prosince 1991 a rozhodnutí správní rady Evropské patentové organizace z 21. prosince 1978, 13. prosince 1994, 20. října 1995, 5. prosince 1996 a 10. prosince 1998 a Revizní akt Úmluvy o udělování evropských patentů přijatý v Mnichově 29. listopadu 2000.

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); } } }
OSZAR »