Jaký je rozdíl mezi technickým konopím a marihuanou a kdy za ni hrozí vězení

9. 9. 2022

Sdílet

Autor: Depositphotos
Kolem pojetí konopí jako drogy a toho, co se smí a co už je přestupkem či trestným činem, v Česku panuje řada mýtů a řekněme si na rovinu, ve výkladu pravidel tak trochu i chaos.

Národní protidrogový koordinátor Jindřich Vobořil i další špičky protidrogové scény dávají najevo, že by ČR měla zčásti zlegalizovat trh s marihuanou a nijak netrestat drobné pěstitele a výrobce mastí či tinktur. Jak je to tedy nyní s pravidly, která omezují držení a nakládání s marihuanou? A co vlastně dělá z konopí nelegální drogu?

Co se dozvíte v článku
  1. Proč je konopí někdy drogou a někdy ne
  2. Jak je to s držením marihuany
  3. Jak marihuana působí na lidský organismus
  4. S čím uleví léčebné konopí
  5. Rizika marihuany

Proč je konopí někdy drogou a někdy ne

Co je a co není v případě konopí návykovou látkou, určuje hranice jedné z obsažených látek, která způsobuje, že tato rostlina má psychoaktivní účinky. Jedná se o tetrahydrokanabinol (THC), který spolu s kanabidiolem (CBD) a dalšími látkami patří k tzv. kanabinoidům. Zatímco ale množství CBD se z hlediska legálnosti či nelegálnosti konopí nesleduje, u THC je to jiné.

Do vězení kvůli pěstování šesti rostlin konopí? Protidrogový koordinátor chce legalizaci Přečtěte si také:

Do vězení kvůli pěstování šesti rostlin konopí? Protidrogový koordinátor chce legalizaci

Zákon o návykových látkách stanoví, že pokud konopí obsahuje nad 1 procento  THC, jde o drogu, tedy návykovou látku, jejíž držení, svádění k užívání, distribuce, prodej a další zákonem vyjmenovaná jednání jsou protiprávní. Pro zjednodušení o této formě konopí hovořme jako o marihuaně a pro úplnost ještě dodejme, že ona hranice 1 % byla v ČR zavedena teprve od ledna 2022, do té doby léta platilo, že konopí je marihuanou, pokud obsahují sušené části rostliny 0,3 procenta THC a více.

Pokud je obsah THC nižší než zmiňované jedno procento, můžeme o výsledném produktu či rostlině hovořit jako o technickém konopí určeném pro průmyslové a jiné účely. I to je regulováno zákonem o návykových látkách, který například ukládá ohlašovací povinnost při pěstování konopí na rozloze nad 100 metrů čtverečních a další povinnosti. 

Smartphony ovlivňují užívání marihuany Přečtěte si také:

Smartphony ovlivňují užívání marihuany

Na trhu se objevuje konopná kosmetika obsahující právě tento druh konopí, konopné masti, oleje nebo třeba i konopné čípky. Jejich výrobci většinou uvádí údaje o obsahu CBD, ale jak už jsme si řekli, z hlediska vnímání konopí jako drogy CBD, které není psychoaktivní látkou, nehraje žádnou roli.

Jak je to s držením marihuany

Zatímco vysvětlení pojmu marihuana nemusí být ještě až tak problematické, v tom, kdy je držení marihuany postižitelné, panuje o dost větší rozptyl.

Zjednodušeně lze říci, že jedinou cestou, jak marihuanu držet legálně, je používat ji pouze pro léčebné použití. Tedy ve formě individuálně připravovaného léčebného přípravku. Léčebné konopí je od 1. dubna 2013 v ČR legální. Ovšem cesta, jak se k němu dostat, není jednoduchá. Mohou ji předepsat pouze lékaři, kteří mají příslušné povolení, a zdaleka nejde o všechny odbornosti. 

V Česku jsou syntetické drogy, které už zabíjely. Nejčastěji se kouří Přečtěte si také:

V Česku jsou syntetické drogy, které už zabíjely. Nejčastěji se kouří

Léčebné konopí může být předepsáno od ledna pouze na elektronický recept, a to ten s „modrým pruhem“, tedy určený pro předepisování návykových látek. K sehnání je léčebné konopí jen v některých lékárnách. Ty jej musí uchovávat v trezoru a vedou si tzv. opiátovou knihu, správně evidenční knihu návykových látek.

V ostatních případech jste vždy na hraně zákona nebo za ní, protože jakékoli nedovolené nakládání s marihuanou, konopím, tj. pěstování, držení, distribuce, prodej aj., je protiprávním jednáním. Pokud bychom všechna pravidla, která se prolínají řadou zákonů a vyhlášek, zjednodušili, dá se říci, že bez postihu skončí uživatel marihuany pouze tehdy, když jej policie přistihne, jak kouří, u sebe ale žádné sušené části rostliny nemá. 

Samotné užívání marihuany totiž postižitelné není. Ovšem cokoli dalšího již ano. Přičemž legislativa rozlišuje řadu situací spojených s marihuanou, které jsou charakterizovány jako přestupek (za něj hrozí pokuta až do výše 15 000 korun). Jiné jednání už je trestným činem (s hrozbou podmínky či vězení a dalších sankcí).

Léčebné konopí lidé chtějí a přeceňují, říká lékař Přečtěte si také:

Léčebné konopí lidé chtějí a přeceňují, říká lékař

Uveďme si příklad. Zatímco kouření jointa dospělým samo o sobě není přestupkem ani trestným činem, jakékoli držení marihuany, např. v sušené podobě, už v pořádku není. Přičemž do 10 gramů jde o přestupek, nad 10 gramů o trestný čin. Pokud jointa dáte kolovat, jde vždy o trestný čin.

Pokud policie dorazí kontrolovat na udání vaši zahradu a najde konopí, jste v problémech vždy. Pěstování do pěti rostlin je přestupkem, nad pět rostlin se může jednat o trestný čin. Jakmile však byť třeba jen jednu rostlinu konopí začnete zpracovávat (utrhnete ji, usušíte či jinak zpracujete), jde vždy o trestný čin, protože už jde o výrobu marihuany.

Hrana mezi přestupkem a trestným činem je v případě marihuany tak tenká, že by snesla řadu dalších příkladů. Protože by se autorka tohoto textu ale zcela jistě dříve či později dopustila nějaké chyby ve výkladu zákona, navíc by mohla jednat návodně, další příklad nepovažuje za nutné.

Jak marihuana působí na lidský organismus

Jednoduché to u marihuany není ani s hledáním jejího účinku na organismus. Je různorodý a různě se také vykládá. Zatímco někdo marihuanu velebí jako lék, jiní upozorňují na to, že její dopad při užívání může zanechat na člověku stopy v podobě nezvratných změn v organismu.

Faktem je, že marihuana je psychotropní drogou, protože dokáže ovlivňovat centrální nervovou soustavu. „Kanabis je látka, která způsobuje psychické změny, ovlivňující téměř všechny části mozku,“ podotýká například brožura s názvem Krátká intervence pro uživatele konopí, vydaná v roce 2016 vládním Národním monitorovacím střediskem pro drogy a závislosti.

Toto ovlivňování je dlouhodobé – z těla se THC vylučuje i desítky hodin. Jistá záludnost může být v tom, že THC se dokáže ukládat v tělesných tucích a z těch se může postupně uvolňovat po řadu týdnů, tedy i v době, kdy už „trávu“ třeba delší dobu neužíváte. To vysvětluje také to, proč je u uživatelů detekovatelné i po delší době.

Konopí je lék. Vědci mění pověst marihuany Přečtěte si také:

Konopí je lék. Vědci mění pověst marihuany

Výše jmenovaná brožura udává mimo jiné to, že při užívání marihuany se vytváří syndrom závislosti. Nejedná se ovšem o totožnou závislost, o které se hovoří v souvislosti s jinými drogami, jako např. heroinem nebo pervitinem. „Abstinenční příznaky u uživatelů konopí jsou daleko lehčího charakteru, než je tomu u uživatelů jiných návykových látek, proto až na výjimky není potřeba farmaceutické intervence,“ podotýká dokument s tím, že u závislých se při odnětí marihuany mohou vyskytovat podrážděnost, nervozita, tenze, ztráta chuti k jídlu, problémy se soustředěností nebo deprese. Přičemž tyto stavy přicházejí v průběhu dvou dnů a vrchol mají mezi druhým až šestým dnem bez marihuany. „Ke stabilizaci stavu dochází nejpozději do jednoho měsíce s tím, že standardní doba se uvádí do 14 dnů,“ podotýká brožura.

Vládní materiál zmiňuje také pozitiva i negativa užívání marihuany. „Ve výčtu pozitiv se může objevit například uvolnění, únik z nudy, úleva od stresu, zlepšení nálady,“ uvádí dokument. Plusy pak spatřuje především v užívání k léčebným účelům. Na tomto místě je ale dobré podotknout, že marihuana je v současné době oficiálními místy chápána tak, že neléčí samotnou příčinu nemoci, ale mírní symptomy, tedy nepříjemné stavy, jež choroby doprovází. „Je indikováno jako podpůrná léčba ke zmírnění symptomů doprovázející onemocnění,“ podotýká web Státní agentury pro konopí pro léčebné použití, která spadá pod Státní ústav pro kontrolu léčiv.

S čím uleví léčebné konopí

  • Nevolnosti a zvracení při chemoterapii rakovin, léčby HIV/AIDS.
  • Snížení očního tlaku u zeleného zákalu.
  • Tlumí revmatické stavy, svalové křeče, třes končetin a deprese při roztroušené skleróze.
  • Zlepšuje pohybovou koordinaci, snižuje třes, nestabilitu ve stoje, bolest při Parkinsonově chorobě a dalších neurodegenerativních onemocněních.
  • Má tlumivý účinek na bolestivé stavy.
  • Může mírně zlepšovat depresivní stavy, mírnou úzkostlivost.
  • S dietou a cvičením může pomoci v redukci váhy.

Zdroj: Krátká intervence pro uživatele konopí, Úřad české vlády, 2016

Rizika marihuany

Mezi negativa patří to, že marihuana může prohloubit už započaté těžké deprese, případně zvýšit výskyt manických epizod u lidí, kteří trpí bipolární afektivní poruchou. Pokud jí někdo užije větší množství, může si přivodit dny až týdny trvající tzv. kanabisovou psychózu, která postihuje zejména silné uživatele marihuany. „Národní institut USA pro duševní zdraví definuje psychózu takto: je to řada ‚stavů, které postihují mozek, při nichž nastupuje jistá míra ztráty s realitou‘. Nejrozšířenějšími příznaky psychózy je mámení smyslů, halucinace a paranoia (stihomam). Když někdo zažívá stav psychózy, chová se nepřiměřeně situaci. Tak například je velmi obtížné sledovat tok jeho/jejích myšlenek od jednoho okamžiku k druhému,“ uvádí na webu pacientský spolek KoPac s tím, že studie stále jasně neprokázaly příčinnou souvislosti mezi marihuanou a psychózou.

Podle brožury pro uživatele konopí marihuana také 2× až 3× zvyšuje riziko propuknutí schizofrenie. „Kanabinoidy můžeme považovat jen za jeden z mnoha komplexních mechanismů vzniku této nemoci,“ uvádí dokument s tím, že příčinná souvislost mezi užíváním marihuany a schizofrenií ale dosud nebyla vědecky doložena.

Dlouhodobé užívání marihuany může vyvolat jemné poruchy některých kognitivních (poznávacích) funkcí. Například zhoršení v oblasti krátkodobé paměti a schopnosti soustředění. Studie pak nejsou jednotné v tom, zda tyto poruchy odezní, či nikoli, pokud člověk delší dobu marihuanu neužívá.

V souvislosti s dlouhodobým kouřením jointů zmiňuje brožura rizika, jakými jsou poškození epiteliální výstelky průdušnice a velkých průdušek, poškození dýchacích cest, zápaly plic a obecně větší náchylnost k infekcím respiračního systému. Pravidelný uživatel je vystaven také vyššímu ohrožení oběhového systému (výstelka cév a srdce, zvýšená náchylnost k ateroskleróze – kornatění tepen), oslabení imunitního systému, pravděpodobné snížení sexuální touhy, menstruační problémy a u těhotných žen může způsobit předčasný porod či snížení porodní váhy dítěte.

Rizikem je také akutní intoxikace spojená s řízením auta nebo obsluhou nebezpečných strojů. Akutní intoxikace totiž vede k poruchám kognitivních funkcí a tunelovému vidění. „Kdy se člověk soustředí pouze na určité body před sebou, unikají mu však objekty, které jsou na periferiích, mimo tento tunel,“ podotýká vládní brožura s názvem Krátká intervence pro uživatele konopí.

Autor článku

Redaktorka Vitalia.cz. Vystudovala žurnalistiku a češtinu na Univerzitě Palackého v Olomouci, pracovala v Deníku, na webu TV Nova a iDNES.cz. Píše o zdravotnictví. Je držitelkou novinářských cen Psychiatrické společností ČLS JEP za rok 2021 a 2022. 

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