PageSourceSearch

https://hnonline.sk/templates/site/js/custom.js?1778863260

js hnonline.sk collected 2026-10-01 09:10:02 UTC 42,261 bytes, 1,030 lines download raw bytes

1try { 
2  console.log("%c Custom.js ::::: jQuery version " + jQuery.fn.jquery + " -----------", "color: green;");
3} catch (ex) {
4  console.log("%c Custom.js ::::: jQuery version undefined -----------", "color: red;");    
5}
6
7var scrollTop = 0;
8var screenStickyWidth = 1024;
9var screenMenuWallStickyWidth = 1024;
10var screenMenuNotCollapsed = 1024;
11
12document.addEventListener('click', function(event) {
13  if (getViewPortWidth() >= screenMenuNotCollapsed) {      
14    if (event.target.classList.contains('navbar-toggler') || event.target.classList.contains('navbar-toggler-icon')) { return; }  
15    var navbarOffCanvas = document.querySelector('.navbar--offcanvas.navbar--show');
16    if (navbarOffCanvas) {
17      if (!navbarOffCanvas.contains(event.target)) {
18        jQuery('.navbar--offcanvas').removeClass('navbar--show');
19        jQuery('body').removeClass('body--offcanvas-shown');        
20      }
21    }
22  }  
23});
24
25// --- navbar collapsed height 
26jQuery(function() {
27  jQuery(".navbar-main .navbar-collapse").css("max-height", window.innerHeight);  
28});    
29jQuery(window).resize(function() {
30    jQuery(".navbar-main .navbar-collapse").css("max-height", window.innerHeight);  
31});  
32// --- navbar collapsed height 
33
34// --- navbar on hover for dropdown menu
35if (siteTemplate != 'brainee') {
36  /* jQuery('.navbar li.dropdown').hover(function() {
37    if (jQuery(window).width() >= screenMenuNotCollapsed ) jQuery(this).find('> .dropdown-menu').stop(true, true).delay(200).fadeIn(500);
38  }, function() {
39    if (jQuery(window).width() >= screenMenuNotCollapsed ) jQuery(this).find('> .dropdown-menu').stop(true, true).delay(200).fadeOut(500);
40  });
41	jQuery(document).on('keydown', function(e) {
42	  if (e.key === 'Escape') {
43		jQuery('.navbar li.dropdown > .dropdown-menu').stop(true, true).fadeOut(300);
44	  }
45	}); */
46	jQuery(document).ready(function() {
47	  // Spriječi zatvaranje parenta kad klikneš nested dropdown toggle
48	  jQuery('.navbar li.dropdown .dropdown-menu .dropdown-toggle').on('click', function(e) {
49		e.stopPropagation();
50	  });
51	  jQuery('.navbar li.dropdown').on('show.bs.dropdown', function() {
52		jQuery(this).find('> .dropdown-menu').stop(true, true).fadeIn(300);
53	  });
54
55	  jQuery('.navbar li.dropdown').on('hide.bs.dropdown', function() {
56		jQuery(this).find('> .dropdown-menu').stop(true, true).fadeOut(300);
57	  });
58
59	});
60}
61	
62jQuery(window).resize(function() {
63  if (jQuery(window).width() >= screenMenuNotCollapsed ) jQuery(this).find('> .dropdown-menu').stop(true, true).delay(200).fadeOut(500);  
64});  
65// --- navbar on hover for dropdown menu
66
67// --- menu on touch screen above collapsed menu resolution ---
68var blTouchMenu = false;
69if (getViewPortWidth() >= screenMenuNotCollapsed) {        
70  if ("ontouchstart" in document.documentElement) {
71    jQuery('body').bind('touchstart', function(e) {
72      if (!blTouchMenu) jQuery(".navbar-nav .dropdown .dropdown-menu").hide();
73      blTouchMenu = false;    
74    });    
75    jQuery('.navbar-nav .dropdown').bind('touchstart', function(e) {
76      if (jQuery(this).children(".dropdown-menu").css("display") == "none") {
77        jQuery(".navbar-nav .dropdown .dropdown-menu").hide();
78        jQuery(this).children(".dropdown-menu").toggle();
79        e.preventDefault();        
80      }    
81      blTouchMenu = true;    
82    });
83  }
84}
85// --- menu on touch screen above collapsed menu resolution ---
86
87// --- sticky menu ---
88// Returns a function, that, when invoked, will only be triggered at most once
89// during a given window of time. Normally, the throttled function will run
90// as much as it can, without ever going more than once per `wait` duration;
91// but if you'd like to disable the execution on the leading edge, pass
92// `{leading: false}`. To disable execution on the trailing edge, ditto.
93function throttle(func, wait, options) {
94  var context, args, result;
95  var timeout = null;
96  var previous = 0;
97  if (!options) options = {};
98  var later = function() {
99  previous = options.leading === false ? 0 : Date.now();
100  timeout = null;
101  result = func.apply(context, args);
102  if (!timeout) context = args = null;
103  };
104  return function() {
105  var now = Date.now();
106  if (!previous && options.leading === false) previous = now;
107  var remaining = wait - (now - previous);
108  context = this;
109  args = arguments;
110  if (remaining <= 0 || remaining > wait) {
111    if (timeout) {
112    clearTimeout(timeout);
113    timeout = null;
114    }
115    previous = now;
116    result = func.apply(context, args);
117    if (!timeout) context = args = null;
118  } else if (!timeout && options.trailing !== false) {
119    timeout = setTimeout(later, remaining);
120  }
121  return result;
122  };
123};	
124
125var makeStickyElements = function () {
126  screenWidth = getViewPortWidth();	
127	if (screenWidth >= screenMenuWallStickyWidth) { 
128    jQuery(window).scroll(throttle(menuOnScroll, 16));						
129  }
130};
131
132var menuOnScroll = function () {
133  scrollTop = jQuery(this).scrollTop();
134  stickyMenu();
135  stickyWallBanners();      
136}
137
138makeStickyElements();
139
140function stickyMenu() {
141  screenWidth = getViewPortWidth();	
142	if (screenWidth >= screenMenuWallStickyWidth) {
143    var scrollHeightOffset = 0;
144    if ( (siteTemplate == 'hnonline') || (siteTemplate == 'hnonline2') || (siteTemplate == 'svetevity') ) {
145      if (jQuery('.container--break-menu').length > 0) {
146        scrollHeightOffset += parseInt(jQuery('.container--break-00').outerHeight(true)); 
147      }
148      if (jQuery('.header__wrap').length > 0) {      
149        scrollHeightOffset += parseInt(jQuery('.header__wrap').outerHeight(true)); 
150      }
151      if(!jQuery('#t3-header').hasClass('fixed-allways')) {
152        if (scrollTop <= scrollHeightOffset) {				
153          jQuery('#t3-header').removeClass('fixed-top');
154        } else {
155          jQuery('#t3-header').addClass('fixed-top');
156        }		
157      }   
158    } else {
159      if (jQuery('.t3-header').length > 0) {
160        scrollHeightOffset += parseInt(jQuery('.container--break-00').outerHeight(true)); 
161      }
162      if (jQuery('.t3-header').length > 0) {      
163        scrollHeightOffset += parseInt(jQuery('.t3-header').outerHeight(true)); 
164      }
165      if(!jQuery('#t3-mainnav').hasClass('fixed-allways')) {
166        if (scrollTop <= scrollHeightOffset) {				
167          jQuery('#t3-mainnav').removeClass('fixed-top');
168        } else {
169          jQuery('#t3-mainnav').addClass('fixed-top');
170        }		
171      }   
172    }
173  } else {
174    jQuery('#t3-header').removeClass('fixed-top');    
175    jQuery('#t3-mainnav').removeClass('fixed-top');    
176  }
177}
178
179function stickyWallBanners() {
180  screenWidth = getViewPortWidth();	
181	if (screenWidth >= screenMenuWallStickyWidth) {
182    var scrollHeightOffset = 0;
183    //scrollHeightOffset += jQuery('.searchBox').css('display') =='none' ? 0 : parseInt(jQuery('.searchBox').outerHeight(true));    
184    scrollHeightOffset += parseInt(jQuery('.container--break-00').outerHeight(true));    
185    scrollHeightOffset += parseInt(jQuery('.t3-header').outerHeight(true)); 
186    if (jQuery('.container--break-menu').length > 0) {
187      scrollHeightOffset += parseInt(jQuery('.container--break-menu').outerHeight(true)); 
188    }  
189		if (scrollTop < scrollHeightOffset) {			
190			jQuery('.position_wall_left').removeClass('wall--fixed');
191			jQuery('.position_wall_right').removeClass('wall--fixed');			
192		} else {
193			jQuery('.position_wall_left').addClass('wall--fixed');
194			jQuery('.position_wall_right').addClass('wall--fixed');
195		}
196	}
197}
198
199jQuery(window).resize(function () {
200  stickyMenu();
201  stickyWallBanners();  
202});
203
204function getViewPortWidth () {
205  return document.body.clientWidth;
206}
207// --- sticky menu ---
208
209// --- side sticky
210var initStickyModCols = function (columns) {
211  jQuery.each(columns, function (i, v) {
212      var column = jQuery(this);
213      var columnParent = column.parent();
214      //rowHeight=column.parent().parent().height();
215      rowHeight=column.closest(".row");
216      column.parent().height(rowHeight);
217
218      //jQuery(".row--sticky").trigger("sticky_kit:recalc");
219
220      if (screenWidth >= screenStickyWidth) {
221          column.stick_in_parent({
222              offset_top: 53, spacer: false
223          });
224      } else {
225          column.stick_in_parent({
226              offset_top: 53, spacer: false
227          });
228      }    
229
230      jQuery(window).resize(function (data) {
231          if (jQuery(this).width() < screenStickyWidth) {
232              columnParent.height(column.outerHeight());
233              column.trigger("sticky_kit:detach");
234          } else {
235              rowHeight = column.closest('.row').height();
236              columnParent.height(rowHeight);
237              if (!column.hasClass('is_stuck')) {
238                  StickyRecalc();
239                  column.stick_in_parent();
240              }
241          }
242      });            
243  });
244};
245
246// wait for all page to load including images
247jQuery(window).bind("load", function() {
248  screenWidth = jQuery(window).width();	  
249  if (screenWidth >= screenStickyWidth) {
250    setTimeout( StickyModCols, 1000 );  
251    setInterval( StickyRecalc(), 5000)    
252  }
253  try{/^https:\/\/brainee\.hnonline\.sk\/notsorry\/.+\/\d+-/.test(window.location)&&(document.getElementsByClassName("grid__head--title")[0].style.position="relative",document.getElementsByClassName("grid__head--title")[0].style.top="39px",document.getElementsByClassName("grid__head--title")[0].style.width="fit-content")}catch(e){}try{document.getElementsByClassName("mobile-menu")[0].checkVisibility()&&(document.getElementsByClassName("item__time--mod card__time")[0].style.top="23px",document.getElementsByClassName("item__time--mod card__time")[0].style.left="-143px",document.getElementsByClassName("item__time--mod card__time")[0].style.whiteSpace="nowrap",document.getElementsByClassName("item__time--mod card__time")[0].style.paddingBottom="20px",document.head.appendChild(document.createElement("style")).innerHTML=".item__time--mod::after{content:none}")}catch(e){}
254});
255
256function StickyRecalc() {
257  jQuery(".row--sticky").each(function( index ) {
258    jQuery(this).trigger("sticky_kit:recalc");
259  });  
260}
261
262function StickyModCols() {
263  initStickyModCols(jQuery(".row--sticky"));
264}
265// --- side sticky
266
267// --- responsive embed videos  ---
268jQuery(function() {
269  var $allHVideos = jQuery(".itemFullText iframe[src*='//media.hnonline.sk']");
270  $allHVideos.each(function() {
271      jQuery(this).removeAttr('style');
272   });
273});
274
275var videoSelector = ".itemFullText iframe[src*='//player.vimeo.com'], .itemFullText iframe[src*='//www.youtube.com'], .card__youtube-wrap iframe[src*='//www.youtube.com'], .itemFullText iframe[src*='streamable.com'], .itemFullText object, .itemFullText embed";
276var previewVideoSelector = ".card__article iframe[src*='//player.vimeo.com']";
277
278function videosAspectRatio(mySelector) {
279  var $allVideos = jQuery(mySelector);
280  $allVideos.each(function() {
281    console.log('videosAspectRatio', mySelector);
282
283      if (!Number.isNaN(this.height / this.width)) {
284        jQuery(this)
285          // jQuery .data does not work on object/embed elements
286            .attr('data-aspectRatio', this.height / this.width)
287            .removeAttr('height')
288            .removeAttr('width');
289        } 
290    });
291}
292
293function videosAspectRatioResize(mySelector) {
294  var $allVideos = jQuery(mySelector);
295  $allVideos.each(function() {
296    var $el = jQuery(this);
297    $el.width('100%');
298    $el.height($el.width() * $el.attr('data-aspectRatio'));
299  });
300}
301
302/*
303jQuery(function() {
304  var $previewVideos = jQuery(".card__article iframe[src*='//player.vimeo.com'], .card__article iframe[src*='//www.youtube.com']");
305  //$fluidEl = jQuery(".itemFullText");
306  $previewVideos.each(function() {
307    jQuery(this)
308        .attr('data-aspectRatio', this.height / this.width)
309        .removeAttr('height')
310        .removeAttr('width');
311  });
312  jQuery(window).resize(function() {
313    $previewVideos.each(function() {
314        var $el = jQuery(this);
315        var newWidth = $el.closest('.card__article').width();        
316        $el .width(newWidth)
317            .height(newWidth * $el.attr('data-aspectRatio'));
318    });
319  }).resize();
320});
321*/
322// --- responsive embed videos  ---
323
324// --- scripts for embeds
325function executeEmbedScripts () {
326    jQuery(function() {
327      jQuery("<div>").attr("class", "embed-scripts").appendTo("body");
328
329      if (jQuery(".instagram-media").length > 0 ) { 
330        //jQuery("<script>").attr("async", "").attr("src", "//www.instagram.com/embed.js").appendTo(".embed-scripts");
331      }
332      if (jQuery(".se-embed--twitter").length > 0 ) { 
333        jQuery("<script>").attr("async", "").attr("src", "https://platform.twitter.com/widgets.js").appendTo(".embed-scripts");
334      }
335      if (jQuery(".se-embed--vimeo").length > 0 ) { 
336        jQuery("<script>").attr("async", "").attr("src", "https://player.vimeo.com/api/player.js").appendTo(".embed-scripts");
337      }  
338      if (jQuery(".se-embed--apester").length > 0 ) { 
339        jQuery("<script>").attr("async", "").attr("src", "https://static.apester.com/js/sdk/latest/apester-sdk.js").appendTo(".embed-scripts");
340      }    
341      if (jQuery(".se-embed--playbuzz").length > 0 ) { 
342        (function(d,s,id){
343          var js,fjs=d.getElementsByTagName(s)[0];
344          if(d.getElementById(id))return;
345          js=d.createElement(s);
346          js.id=id;
347          js.src='https://embed.playbuzz.com/sdk.js';
348          fjs.parentNode.insertBefore(js,fjs);
349          }(document,'script','playbuzz-sdk')
350        );
351      }
352      if (jQuery(".container-wrapper-genially").length > 0 ) { 
353        (function (d) { var js, id = "genially-embed-js", ref = d.getElementsByTagName("script")[0]; if (d.getElementById(id)) { return; } js = d.createElement("script"); js.id = id; js.async = true; js.src = "https://view.genial.ly/static/embed/embed.js"; ref.parentNode.insertBefore(js, ref); }(document));    
354      }  
355      if (jQuery(".tiktok-embed").length > 0 ) { 
356        jQuery("<script>").attr("async", "").attr("src", "https://www.tiktok.com/embed.js").appendTo(".embed-scripts");
357      }    
358
359      videosAspectRatio(videoSelector);
360      videosAspectRatio(previewVideoSelector);
361      
362      jQuery(window).resize(function() {
363        videosAspectRatioResize(videoSelector);
364        videosAspectRatioResize(previewVideoSelector);
365      }).resize();      
366
367      console.log('PhotoswipeGalleries');
368      try { photoswipeEmbedGalleries();
369      } catch (ex) { /*console.log(ex)*/ };
370
371      try { photoswipeRelatedGalleries();
372      } catch (ex) { /*console.log(ex)*/ };      
373
374      console.log('EmbedArticleImages');  
375      try { //embedArticleImage();            
376      } catch (ex) { /*console.log(ex)*/ }; 
377
378      console.log('photoswipeEmbedImage');  
379      try { if (typeof photoswipeEmbedImage === "function") { photoswipeEmbedImage(); }           
380      } catch (ex) { /*console.log(ex)*/ }; 
381
382      console.log('VastVideoObserver');
383      try { vastYoutubeVideosInitObserver(); } catch (ex) { /*console.log(ex);*/ }
384      try { vastMafraVideosInitObserver(); } catch (ex) { /*console.log(ex);*/ }                                
385    });
386}
387jQuery(function() { executeEmbedScripts(); });
388
389// embed article image / picmx
390// now in custom_nojq.js
391function embedArticleImage () {
392  var embedArticleOrigImages = document.querySelectorAll('[data-orig-img]:not(.cropped-image-set)');
393  if (embedArticleOrigImages.length > 0) {
394      embedArticleOrigImages.forEach(function(imgELement) {
395		    console.log('----- embedArticleImage ----- ', imgELement);
396            var embedArticleVideo = imgELement.getAttribute('data-article-video');
397            if ( embedArticleVideo && embedArticleVideo.includes("jwplayer.com") ) {
398              var urlJWVideoID = embedArticleVideo.replace('https://cdn.jwplayer.com/players/', '').split('-')[0];
399              imgELement.setAttribute('src', 'https://cdn.jwplayer.com/v2/media/' + urlJWVideoID + '/poster.jpg');
400              imgELement.parentNode.style.paddingBottom = '66.7%';
401              imgELement.parentNode.style.overflow = 'hidden';
402              imgELement.style.objectFit = 'cover';
403              imgELement.style.objectPosition = 'center';
404              imgELement.style.height = '100%';
405              imgELement.classList.add('cropped-image-set')
406            } else {
407              var origImgURL = new URL(imgELement.getAttribute('data-orig-img'));
408              if (origImgURL.toString().indexOf('%7BmediaFile%7D') === -1) {   
409                console.log(origImgURL.toString()) ;       
410                var origImgPath = origImgURL.pathname;
411        
412                var imgPath = origImgPath.substring(0, origImgPath.lastIndexOf('/')+1);
413                var imgNameExt = origImgPath.substring(origImgPath.lastIndexOf('/')+1);                    
414        
415                var imgName = imgNameExt.substring(0, imgNameExt.lastIndexOf('.'));                                        
416                var imgExt  = imgNameExt.substring(imgNameExt.lastIndexOf('.')).toLowerCase();                                                            
417        
418                var newImgUrl = origImgURL.protocol + '//' + origImgURL.host + imgPath + 'h_' + imgName + '_480' + imgExt + origImgURL.search
419        
420                console.log(newImgUrl);
421        
422                imgELement.setAttribute('src', newImgUrl);
423                imgELement.classList.add('cropped-image-set')
424              }
425            }
426      });
427  }
428}
429
430// embed youtube iframe api
431var embedYTVideos;
432//function onYouTubeIframeAPIReady() {
433//  var videos = document.getElementsByClassName("card__youtube");
434//  embedYTVideos = videos;
435//  var i;
436//  for (i = 0; i < videos.length; i++) {
437//    var videoDivID = videos[i]['id'];
438//    var videoID = videos[i].getAttribute('data-videoID'); 
439//    if ( document.getElementsByClassName('itemView').length === 0 ) {
440//      var videoWidth  = parseInt(getComputedStyle(videos[i].parentNode.parentNode).width.replace("px", ""));
441//      var videoHeight = parseInt(getComputedStyle(videos[i].parentNode.parentNode).height.replace("px", ""));      
442//      videos[i].style.width = videoWidth + 'px';        
443//      videos[i].style.height = videoHeight + 'px';  
444//    } else {
445//      var videoWidth = parseInt(getComputedStyle(videos[i]).width.replace("px", ""));
446//      var videoHeight = parseInt(videoWidth/1600*900);      
447//    }
448//
449//    var player;
450//    player = new YT.Player(videoDivID, {
451//      videoId: videoID,     // YouTube Video ID
452//      width: videoWidth,    // Player width (in px)
453//      height: videoHeight,  // Player height (in px)   
454//      playerVars: {
455//        autoplay: 0,        // Auto-play the video on load
456//        controls: 1,        // Show pause/play buttons in player
457//        showinfo: 0,        // Hide the video title
458//        modestbranding: 1,  // Hide the Youtube Logo
459//        loop: 1,            // Run the video in a loop, not working
460//        fs: 0,              // Hide the full screen button
461//        cc_load_policy: 0,  // Hide closed captions
462//        iv_load_policy: 3,  // Hide the Video Annotations
463//        autohide: 1         // Hide video controls when playing
464//      },
465//      events: {
466//        'onReady': onYTPlayerReady,
467//        'onStateChange': onYTPlayerStateChange,
468//        'onError': onYTPlayerError        
469//      }
470//    });
471//  }
472//  function onYTPlayerReady(e) {
473//    e.target.mute();
474//    e.target.playVideo();    
475//    /* 
476//    var videoDivId = "YouTubeVideoPlayer-"+e.target.getVideoData()['video_id'];
477//    var elYT = document.getElementById(videoDivId);  
478//    var videoWidth = parseInt(getComputedStyle(elYT).width.replace("px", ""));
479//    var videoHeight = parseInt(videoWidth/1600*900);        
480//    elYT.parentNode.style.height = videoHeight + 'px';  
481//    if ( document.getElementsByClassName('itemView').length === 0 ) {
482//      elYT.parentNode.parentNode.style.background = 'black';        
483//    }
484//    */
485//
486//    // e.target.setLoop(true); // not working
487//    //elYT.style.height = videoHeight + 'px'; 
488//    //elYTCard = elYT.parentNode.closest('.card__article');
489//    //elYTCardInfo = elYTCard.getElementsByClassName('card__info');
490//    //elYTCardInfoOffset = elYTCardInfo[0].offsetLeft;
491//  }    
492//  function onYTPlayerStateChange(e) {
493//    if (e.data == YT.PlayerState.ENDED) {
494//      e.target.playVideo();     
495//    }       
496//    /*if (e.data == YT.PlayerState.PAUSED) {
497//      var videoDivId = "YouTubeVideoPlayer-"+e.target.getVideoData()['video_id'];
498//      elYT = document.getElementById(videoDivId);   
499//      elYT.style.border = "2px solid red";
500//    }*/    
501//  }    
502//  function onYTPlayerError(e) {
503//  }    
504//}
505
506window.addEventListener('resize', function(event) {
507  if (typeof embedYTVideos !== typeof undefined) { 
508    for (i = 0; i < embedYTVideos.length; i++) {
509      var videoWidth;
510      var videoHeight;
511      if ( document.getElementsByClassName('itemView').length === 0 ) {
512        videoWidth  = parseInt(getComputedStyle(embedYTVideos[i].parentNode.parentNode).width.replace("px", ""));
513        videoHeight = parseInt(getComputedStyle(embedYTVideos[i].parentNode.parentNode).height.replace("px", ""));      
514      } else {
515        videoWidth = parseInt(getComputedStyle(embedYTVideos[i].parentNode).width.replace("px", ""));
516        videoHeight = parseInt(videoWidth/1600*900);  
517      }
518      embedYTVideos[i].style.width = videoWidth + 'px';        
519      embedYTVideos[i].style.height = videoHeight + 'px';          
520    }           
521  }
522});   
523
524// --- scripts for embeds
525
526// --- back to top button
527jQuery(function () {
528  jQuery('.impressum__back2top').click(function(){
529    jQuery('html, body').animate({scrollTop:0}, 'slow');
530    return false;
531  });    
532});    
533
534// --- anchor by js 
535jQuery(function() {
536  jQuery('.anchor-js').click(function(event) {
537    event.preventDefault();
538    window.location.href = jQuery(this).attr('data-href');
539  });
540});
541// --- anchor by js 
542
543// --- se link ---
544jQuery(function() {
545  if (jQuery(".btn--selink").length > 0 ) {    
546    var selink = getCookie("selink");
547    if (selink.length > 0) {
548      var btnSeLink = jQuery('.btn--selink');
549      var cmsurl = btnSeLink.attr("data-href");
550      btnSeLink.attr('href', selink + encodeURIComponent(window.btoa(cmsurl)));
551      btnSeLink.removeClass('d-none');
552    }
553  }
554});
555// --- se link ---
556
557// --- item print 
558jQuery(function() {
559  jQuery('.item__share-print').click(function(event) {
560    event.preventDefault();
561    window.print();
562  });
563});
564// --- item print
565
566// --- cookie info ---
567function getCookie(cname) {
568  var name = cname + "=";
569  var ca = document.cookie.split(';');
570  for(var i = 0; i < ca.length; i++) {
571      var c = ca[i];
572      while (c.charAt(0) == ' ') {
573          c = c.substring(1);
574      }
575      if (c.indexOf(name) == 0) {
576          return c.substring(name.length, c.length);
577      }
578  }
579  return "";
580}
581function setCookie(cname, cvalue, exdays) {
582  var d = new Date();
583  d.setTime(d.getTime() + (exdays*24*60*60*1000));
584  var expires = "expires="+ d.toUTCString();
585  document.cookie = cname + "=" + cvalue + ";" + expires + ";";
586}
587// --- cookie info ---
588
589function adFreeRightWidget() {
590    var widget = '<div id="cx_9717b1a0acc544d412a6b0610b3b9b263b64e5f8"></div>\n\
591                    <script type="text/javascript">\n\
592                        var cX = window.cX = window.cX || {}; cX.callQueue = cX.callQueue || [];\n\
593                        cX.CCE = cX.CCE || {}; cX.CCE.callQueue = cX.CCE.callQueue || [];\n\
594                        cX.CCE.run({\n\
595                            widgetId: "9717b1a0acc544d412a6b0610b3b9b263b64e5f8",\n\
596                            targetElementId: "cx_9717b1a0acc544d412a6b0610b3b9b263b64e5f8"\n\
597                        });\n\
598                    </script>';
599    jQuery('.position_item_right_01_top').append(widget);
600}
601
602function onNetworkTVEmbed () {
603    let targetNode = document.head;
604    observerOptions = {childList: true},
605    observer = new MutationObserver(changeVideoPosition);
606
607    function changeVideoPosition (mutations) {
608        for (let mutation of mutations) {
609            for (var i = 0; i < mutation.addedNodes.length; i++) {
610                if (mutation.addedNodes[i].classList.contains('onnetworkplayercontainer')) {
611                    var index = mutation.addedNodes[i].id.slice(-1);
612                    jQuery('#onNetworkEmbedDiv-' + index).append(mutation.addedNodes[i]);
613                }
614            }
615        }
616    }
617
618    observer.observe(targetNode, observerOptions);
619}
620
621function getInterview() {
622    if (jQuery('.item__interview').length) {
623        var interview = jQuery('.item__interview')[0];
624
625        function loadInterview() {
626            var reqData = {
627                option: 'com_ajax',
628                group: 'system',
629                plugin: 'ocm',
630                task: 'loadInterview',
631                view: 'item',
632                format: 'raw',
633                article_id: jQuery(interview).data('id'),
634            };
635            jQuery.ajax({
636                url: '/',
637                method: 'POST',
638                data: reqData,
639                cache: false,
640                dataType: 'html'
641            }).done(function(data){
642                jQuery('.item__interview').html(data);
643            }).fail(function(jqXHR, textStatus, errorThrown){
644                console.log(textStatus);
645            });
646        }
647
648        loadInterview();
649//        setInterval(function(){
650//            loadInterview();
651//        }, 60000);
652    }
653}
654
655getInterview();
656
657// megaboard / wallpaper overlap issue
658var posBreak00 = document.querySelector('.position_break_00_top');
659function megaboardIntersection(entries) {
660  entries.map((entry) => {
661    if (entry.isIntersecting) {
662      posBreak00.classList.add('megaboard-overlap');   
663      //entry.target.classList.add('megaboard-overlap')
664    } else {
665      posBreak00.classList.remove('megaboard-overlap');
666      //entry.target.classList.remove('megaboard-overlap')
667    }
668  });
669}
670const megaboardObserver = new IntersectionObserver(megaboardIntersection);
671const megaBoard = document.querySelector('.position_megaboard_top');
672if (megaBoard) { megaboardObserver.observe(megaBoard); }
673//const se__images = document.querySelectorAll('.se__img');
674//se__images.forEach(image => imgObserver.observe(image));
675
676jQuery(function() {
677  if (jQuery('#infinite-scroll-itemlist .infinite-scroll-items').length > 0 && jQuery('.category-infinite-scroll').length == 0) {
678    container = jQuery('#infinite-scroll-itemlist .infinite-scroll-items');
679    container.infinitescroll({
680        "loading":{"msgText":" &nbsp;","finishedMsg":"","img":"/templates/site/images/gifs/loader.gif","finished":function(){
681                videosAspectRatio(videoSelector);
682                videosAspectRatio(previewVideoSelector);
683                jQuery(window).resize(function() {
684                  videosAspectRatioResize(videoSelector);
685                  videosAspectRatioResize(previewVideoSelector);
686                }).resize();
687            }
688        },
689        "contentSelector":"#infinite-scroll-itemlist .infinite-scroll-items",
690        "itemSelector":"#infinite-scroll-itemlist .infinite-scroll-items >",
691        "navSelector":"#infinite-scroll-itemlist ul.pagination",
692        "nextSelector":"#infinite-scroll-itemlist ul.pagination li.next a:first",
693        "path":function(index){
694            var next = jQuery("#infinite-scroll-itemlist ul.pagination li.next a:first").attr('href');
695            var query = next.split('?');
696            var urlParams = new URLSearchParams(query[1]);
697            var start =  urlParams.get('start');
698            var new_start = parseInt(start) * (index - 1);
699            var url = next.replace(/start=\d+/i, 'start=' + new_start);
700            var page =  urlParams.get('page');
701            var new_page = parseInt(page) + (index - 2);
702            url.replace(/page=\d+/i, 'page=' + new_page);
703            return url;
704        }
705    });
706  }
707});
708
709jQuery(function() {
710    if (jQuery('.category-infinite-scroll').length > 0) {
711        /*jQuery(window).scroll(function(){
712            var position = jQuery(window).scrollTop();
713            var bottom = jQuery(document).height() - jQuery(window).height();
714            if (position == bottom) {*/
715                jQuery('.category-infinite-scroll').on("click", function(index) {
716                    var next = jQuery('.category-infinite-scroll .next').children(':first');
717                    var total = jQuery('.category-infinite-scroll').data('total');
718                    var pagenumber = next.attr('data-page');
719                    var loader = jQuery('#infinite-scroll-itemlist .spinner-border');
720                    if (parseInt(pagenumber) <= total && loader.hasClass('d-none')) {
721                        var module_id = jQuery('.infinite-scroll-items').data('module_id');
722                        var category_id = jQuery('.infinite-scroll-items').data('category_id');
723                        loader.removeClass('d-none');
724                        var request = {
725                                'option' : 'com_ajax',
726                                'module' : 'ocm_media',
727                                'method' : 'reloadModule',
728                                'modid'  : module_id,
729                                'page'   : pagenumber,
730                                'format' : 'raw',
731                                'getCategoryIdFromPath' : category_id ? 1 : 0,
732                                'categoryIdFromPath' : category_id
733                        };
734                        jQuery.ajax({
735                            type   : 'POST',
736                            data   : request,
737                            success: function (response) {
738                                jQuery('.infinite-scroll-items').append(response);
739                                if (parseInt(pagenumber) >= total) {
740                                    jQuery('.category-infinite-scroll').remove();
741                                } else {
742                                    next.attr('data-page', parseInt(pagenumber) + 1);
743                                }
744                                loader.addClass('d-none');
745
746                                videosAspectRatio(videoSelector);
747                                videosAspectRatio(previewVideoSelector);
748                                jQuery(window).resize(function() {
749                                  videosAspectRatioResize(videoSelector);
750                                  videosAspectRatioResize(previewVideoSelector);
751                                }).resize();
752
753                                try { vastYoutubeVideosInitObserver(); } catch (ex) { /*console.log(ex);*/ }
754                                try { vastMafraVideosInitObserver(); } catch (ex) { /*console.log(ex);*/ }                                
755                            }
756                        });
757                    }
758                });
759                /*jQuery('.category-infinite-scroll .next').trigger("click");
760            }
761        });*/
762    }
763});
764
765// infinite-scroll - observer
766var infiniteScrollObserverOptions = {
767  root: null, // null means root is viewport
768  rootMargin: '500px',
769  threshold: 0.01 // trigger callback when 1% of the element is visible
770}
771//function infiniteScrollIntersection(entries) {
772//  entries.map((entry) => {
773//    if (entry.isIntersecting) {
774//      console.log('infinite scroll intersection');
775//      try { jQuery('.category-infinite-scroll .next').trigger("click");
776//      } catch (ex) {console.log(ex); }
777//    } 
778//  });
779//}
780//jQuery(function() {
781//  const infiniteScrollObserver = new IntersectionObserver(infiniteScrollIntersection, infiniteScrollObserverOptions);
782//  const infiniteScrollEnd = document.querySelectorAll('.infinite-scroll-end');
783//  if (infiniteScrollEnd.length > 0) {
784//    console.log('infinite scroll observer');
785//    infiniteScrollObserver.observe(infiniteScrollEnd[0]);
786//  }
787//});
788
789var userSubscriber = 'no';
790if (localStorage.getItem('subscriber') !== null) { 
791  userSubscriber = localStorage.getItem('subscriber');
792  if (userSubscriber == 'yes') {
793    document.querySelector('body').classList.add('subscriber--yes');
794    document.querySelector('body').classList.remove('subscriber--no');    
795  } else {
796    document.querySelector('body').classList.add('subscriber--no');
797    document.querySelector('body').classList.remove('subscriber--yes');
798  }
799}
800
801// vast video autoplay
802var vastObserverOptions = {
803  root: null, // null means root is viewport
804  rootMargin: '0px',
805  threshold: 0.01 // trigger callback when 1% of the element is visible
806}
807
808// vast mafra videos
809function vastMafraVideosIntersection(entries) {
810  entries.map((entry) => {
811    if (entry.isIntersecting) {
812      try {
813        var videoIframe = entry.target;
814        var videoURL = new URL(videoIframe.getAttribute('src'));
815        var videoParams = new URLSearchParams(videoURL.search);
816        if (videoParams.has('autoplay') !== true) {
817          videoParams.append('autoplay', 1);
818          var newVideoURL = videoURL.protocol + '//' + videoURL.hostname + videoURL.pathname + '?' + videoParams.toString();
819          videoIframe.setAttribute('src', newVideoURL);
820        }
821      } catch (error) {
822        console.error(error);
823      }
824    }
825  });
826}
827
828// vast main image video
829function vastMafraVideosInitObserver() {
830  var vastMafraVideos = document.querySelectorAll('.js-player-viewport-status');
831  vastMafraVideos.forEach(function(vastMafraVideo) {
832    if (!vastMafraVideo.hasAttribute('data-observed')) {
833      vastMafraVideo.setAttribute('data-observed', 'true');          
834      console.log("%c APV ::::: video " + vastMafraVideo.classList, "color: gray;");
835      vastMafraVideosObserver.observe(vastMafraVideo);
836    }
837  });
838}
839
840const vastMafraVideosObserver = new IntersectionObserver(vastMafraVideosIntersection, vastObserverOptions);
841setTimeout(vastMafraVideosInitObserver(), 500);
842
843// vast embed video
844function vastEmbedVideosInitObserver() {
845  var vastEmbedVideos = document.querySelectorAll(':scope .se-embed--video .se__video[src^="https://media.hnonline.sk/embed"]');
846  vastEmbedVideos.forEach(function(vastEmbedVideo) {
847    if (!vastEmbedVideo.hasAttribute('data-observed')) {
848      vastEmbedVideo.setAttribute('data-observed', 'true');        
849      console.log("%c APV ::::: embed video " + vastEmbedVideo.classList, "color: gray;");
850      vastEmbedVideosObserver.observe(vastEmbedVideo);
851    }
852  });
853}
854
855const vastEmbedVideosObserver = new IntersectionObserver(vastMafraVideosIntersection, vastObserverOptions);
856setTimeout(vastEmbedVideosInitObserver, 500);
857
858// youtube vast
859function vastYoutubeVideosIntersection(entries) {
860  entries.map((entry) => {
861    if (entry.isIntersecting) {
862      try {
863        var videoIframe = entry.target;
864        videoIframe.contentWindow.postMessage('startVideo', '*');
865      } catch (error) {
866        console.error(error);
867      }
868    }
869  });
870}
871
872function vastYoutubeVideosInitObserver() {
873  var vastYoutubeVideos = document.querySelectorAll('[src^="/templates/site/vast/iframe_youtube.php"]');
874  vastYoutubeVideos.forEach(function(vastYoutubeVideo) {
875    if (!vastYoutubeVideo.hasAttribute('data-observed')) {
876      vastYoutubeVideo.setAttribute('data-observed', 'true');
877      console.log("%c APV ::::: iframe youtube " + vastYoutubeVideo.classList, "color: gray;");
878      vastYoutubeVideosObserver.observe(vastYoutubeVideo);
879    }
880  });
881}
882
883const vastYoutubeVideosObserver = new IntersectionObserver(vastYoutubeVideosIntersection, vastObserverOptions);
884setTimeout(vastYoutubeVideosInitObserver, 500);
885
886jQuery(function() {
887    if (jQuery('.user-infinite-scroll').length > 0) {
888        jQuery('.user-infinite-scroll').on("click", function(index) {
889            var next = jQuery('.user-infinite-scroll .next').children(':first');
890            var total = jQuery('.user-infinite-scroll').data('total');
891            var pagenumber = next.attr('data-page');
892            var loader = jQuery('#user-infinite-scroll-itemlist .spinner-border');
893            if (parseInt(pagenumber) <= total && loader.hasClass('d-none')) {
894                var user_id = jQuery('.infinite-scroll-items').data('user_id');
895                loader.removeClass('d-none');
896                var request = {
897                        'option' : 'com_ocm',
898                        'view' : 'ajax',
899                        'task': 'getUserItems',
900                        'user_id'  : user_id,
901                        'page'   : pagenumber,
902                        'layout' : 'user2_ajax',
903                        'format' : 'html'
904                };
905                jQuery.ajax({
906                    type   : 'POST',
907                    data   : request,
908                    success: function (response) {
909                        console.log(response);
910                        jQuery('.infinite-scroll-items').append(response);
911                        if (parseInt(pagenumber) >= total) {
912                            jQuery('.user-infinite-scroll').remove();
913                        } else {
914                            next.attr('data-page', parseInt(pagenumber) + 1);
915                        }
916                        loader.addClass('d-none');
917
918                        videosAspectRatio(videoSelector);
919                        videosAspectRatio(previewVideoSelector);
920                        jQuery(window).resize(function() {
921                          videosAspectRatioResize(videoSelector);
922                          videosAspectRatioResize(previewVideoSelector);
923                        }).resize();
924
925                        try { vastYoutubeVideosInitObserver(); } catch (ex) { /*console.log(ex);*/ }
926                        try { vastMafraVideosInitObserver(); } catch (ex) { /*console.log(ex);*/ }
927                    }
928                });
929            }
930        });
931    }
932});
933
934// START POLLS
935jQuery(function () {
936    if (jQuery('.poll-form').length) {
937        var rcscript = document.createElement("script");
938        rcscript.setAttribute("src", 'https://www.google.com/recaptcha/api.js?render=6LcreBgnAAAAAJm0r1D9rQnaAyGak66aUeEBjVnO');
939        rcscript.setAttribute("async", "async");
940        document.head.appendChild(rcscript);
941    }
942    // Vox populi - VOTE
943    jQuery('body').on('submit', '.poll-form', function (event) {
944        event.preventDefault();
945        var self = jQuery(this);
946        grecaptcha.ready(function() {
947           grecaptcha.execute('6LcreBgnAAAAAJm0r1D9rQnaAyGak66aUeEBjVnO', {action: 'poll'}).then(function(rctoken) {
948                request = {
949                    'option': 'com_ocm',
950                    'view': 'ajax',
951                    'task': 'pollVote',
952                    'id': self.data('id'),
953                    'vote': self.find('input[type="radio"]:checked').val(),
954                    'modid': self.data('module_id'),
955                    'grecaptcha': rctoken,
956                    'format': 'json'
957                };
958
959                if (request.vote == -1) {
960                    alert("Prosím, zvoľte jednu z odpovedí.");
961                } else jQuery.ajax({
962                    type: 'POST',
963                    data: request,
964                    success: function (response) {
965                        if (!response) return;
966                        var d = new Date();
967                        d.setTime(d.getTime() + (10*1000));
968                        var expires = "expires="+ d.toUTCString();
969                        document.cookie = "pollResult=" + self.data('id') + ";" + expires + ";";
970                        location.reload();
971                    }
972                });
973            });
974        });
975    });
976
977    // Vox populi - Back to votes
978    jQuery('body').on('click', '.btn-poll-back', function (e) {
979        e.preventDefault();
980        var results = jQuery(this).closest('.poll-wrapper').find('.poll-results');
981        var questions = jQuery(this).closest('.poll-wrapper').find('.poll-form');
982
983        results.empty();
984        questions.show();
985    });
986
987    // Vox populi - Show poll results
988    jQuery('body').on('click', '.btn-poll-result', function (event) {
989        event.preventDefault();
990        var parent = jQuery(this).prev('.poll-form');
991        request = {
992            'option': 'com_ocm',
993            'view': 'ajax',
994            'task': 'pollVote',
995            'id': jQuery(this).data('result_id'),
996            'modid': parent.data('module_id'),
997            'subtask': 'result',
998            'format': 'json'
999        };
1000
1001        jQuery.ajax({
1002            type: 'POST',
1003            data: request,
1004            success: function (response) {
1005                parent.hide();
1006                parent.parent().find('.poll-results').html(response);
1007            }
1008        });
1009    });
1010
1011    var poll = getCookie("pollResult");
1012
1013    if (poll) {
1014        if (jQuery('.poll-wrapper#poll-' + poll).length) {
1015            jQuery('.poll-wrapper#poll-' + poll + ' .btn-poll-result').click();
1016            jQuery('html, body').scrollTop(jQuery('.poll-wrapper#poll-' + poll).offset().top - 80);
1017        }
1018    }
1019    jQuery('.poll-form').each(function(){
1020        var id = jQuery(this).attr('data-id');
1021        var c = getCookie("sp_poll_voted_" + id);
1022        if (c) {
1023            if (jQuery('.poll-wrapper#poll-' + id).length) {
1024                jQuery('.poll-wrapper#poll-' + id + ' .btn-poll-result').click();
1025            }
1026        }
1027    });
1028});
1029
1030// END POLLS

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.