72/1994 Sb. Zákon, kterým se upravují některé spoluvlastnické vztahy k budovám a některé vlastnické vztahy k bytům a nebytovým prostorům a doplňují některé zákony (zákon o vlastnictví bytů)
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);
}
}
}