1(function($) { 2 'use strict'; 3 4 function getVideoId(url) { 5 if ('false' === url) return false; 6 var result = /(?:\?v=|\/embed\/|\.be\/)([-a-z0-9_]+)/i.exec(url) || /^([-a-z0-9_]+)$/i.exec(url); 7 8 return result ? result[1] : false; 9 } 10 11 function onPlayerReady(event) { 12 if ($(event.target).closest('.mbr-slider').hasClass('in')) { 13 event.target.playVideo(); 14 } 15 } 16 17 var isBuilder = $('html').hasClass('is-builder'); 18 19 /* get youtube id */ 20 if (!isBuilder) { 21 /* google iframe */ 22 var tag = document.createElement('script'); 23 tag.src = "https://www.youtube.com/iframe_api"; 24 var firstScriptTag = document.getElementsByTagName('script')[0]; 25 firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 26 var players = []; 27 28 $('.carousel-item.video-container img').css('display','none'); 29 30 /* google iframe api init function */ 31 window.onYouTubeIframeAPIReady = function() { 32 var ytp = ytp || {}; 33 ytp.YTAPIReady || (ytp.YTAPIReady = !0, 34 jQuery(document).trigger("YTAPIReady")); 35 36 $('.video-slide').each(function(i) { 37 $('.video-container').eq(i).append('<div id ="mbr-video-' + i + '" class="mbr-background-video" data-video-num="' + i + '"></div>') 38 .append('<div class="item-overlay"></div>'); 39 $(this).attr('data-video-num', i); 40 41 if ($(this).attr('data-video-url').indexOf('vimeo.com') !== -1) { 42 var options = { 43 id: $(this).attr('data-video-url'), 44 width: '100%', 45 height: '100%', 46 loop: true 47 }; 48 49 var player = new Vimeo.Player('mbr-video-' + i, options); 50 51 player.playVideo = Vimeo.play; 52 } else { 53 var player = new YT.Player('mbr-video-' + i, { 54 height: '100%', 55 width: '100%', 56 videoId: getVideoId($(this).attr('data-video-url')), 57 events: { 58 'onReady': onPlayerReady 59 }, 60 playerVars: { 61 rel: 0 62 } 63 }); 64 } 65 66 players.push(player); 67 }); 68 }; 69 } 70 71 function updateMasonry(event){ 72 var $section = $(event.target); 73 if (typeof $.fn.masonry !== 'undefined') { 74 $section.outerFind('.mbr-gallery').each(function() { 75 var $msnr = $(this).find('.mbr-gallery-row').masonry({ 76 itemSelector: '.mbr-gallery-item:not(.mbr-gallery-item__hided)', 77 percentPosition: true, 78 horizontalOrder: true 79 }); 80 // reload masonry (need for adding new or re-sort items) 81 $msnr.masonry('reloadItems'); 82 $msnr.on('filter', function() { 83 $msnr.masonry('reloadItems'); 84 $msnr.masonry('layout'); 85 // update parallax backgrounds 86 $(window).trigger('update.parallax'); 87 }.bind(this, $msnr)); 88 // layout Masonry after each image loads 89 $msnr.imagesLoaded().progress(function() { 90 $msnr.masonry('layout'); 91 }); 92 }); 93 } 94 }; 95 96 /* Masonry Grid */ 97 $(document).on('add.cards', function(event) { 98 var $section = $(event.target), 99 allItem = $section.find('.mbr-gallery-filter-all'); 100 var filterList = []; 101 $section.on('click', '.mbr-gallery-filter li > .btn', function(e) { 102 e.preventDefault(); 103 var $li = $(this).closest('li'); 104 105 $li.parent().find('li').removeClass('active'); 106 $li.addClass('active'); 107 108 var $mas = $li.closest('section').find('.mbr-gallery-row'); 109 var filter = $(this).html().trim(); 110 111 $section.find('.mbr-gallery-item').each(function(i, el) { 112 var $elem = $(this); 113 var tagsAttr = $elem.attr('data-tags'); 114 var tags = tagsAttr.split(','); 115 116 var tagsTrimmed = tags.map(function(el) { 117 return el.trim(); 118 }); 119 120 if ($.inArray(filter, tagsTrimmed) === -1 && !$li.hasClass('mbr-gallery-filter-all')) { 121 $elem.addClass('mbr-gallery-item__hided'); 122 123 $elem.css('left', '300px'); 124 } else { 125 $elem.removeClass('mbr-gallery-item__hided'); 126 } 127 }); 128 129 $mas.closest('.mbr-gallery-row').trigger('filter'); 130 }); 131 }) 132 $(document).on('add.cards changeParameter.cards', function(event) { 133 var $section = $(event.target), 134 allItem = $section.find('.mbr-gallery-filter-all'); 135 var filterList = []; 136 $section.find('.mbr-gallery-item').each(function(el) { 137 var tagsAttr = ($(this).attr('data-tags') || "").trim(); 138 var tagsList = tagsAttr.split(','); 139 140 tagsList.map(function(el) { 141 var tag = el.trim(); 142 143 if ($.inArray(tag, filterList) === -1) 144 filterList.push(tag); 145 }); 146 }); 147 148 if ($section.find('.mbr-gallery-filter').length > 0 && $(event.target).find('.mbr-gallery-filter').hasClass('gallery-filter-active')) { 149 var filterHtml = ''; 150 151 $section.find('.mbr-gallery-filter ul li:not(li:eq(0))').remove(); 152 153 filterList.map(function(el) { 154 filterHtml += '<li><a class="btn btn-md btn-primary-outline" href>' + el + '</a></li>'; 155 }); 156 $section.find('.mbr-gallery-filter ul').append(allItem).append(filterHtml); 157 158 } else { 159 $section.find('.mbr-gallery-item__hided').removeClass('mbr-gallery-item__hided'); 160 $section.find('.mbr-gallery-row').trigger('filter'); 161 } 162 163 updateMasonry(event); 164 }); 165 166 $(document).on('change.cards', function(event) { 167 updateMasonry(event); 168 }); 169 170 $('.mbr-gallery-item').on('click', 'a', function(e) { 171 e.stopPropagation(); 172 }); 173 174 var timeout2, timeout, objectLightBox; 175 176 /* Lightbox Fit */ 177 function styleVideo($carouselItem, wndH, windowPadding, bottomPadding){ 178 $carouselItem.css({ 179 'top': windowPadding, 180 'height': wndH - 2 * windowPadding - 2 * bottomPadding 181 }) 182 } 183 184 function styleImg($carouselItem, wndH, wndW, windowPadding, bottomPadding){ 185 var $currentImg = $carouselItem.find('img'); 186
187 var setWidth, setTop; 188 var lbW = $currentImg[0].naturalWidth; 189 var lbH = $currentImg[0].naturalHeight; 190 191 // height change 192 if (wndW / wndH > lbW / lbH) { 193 var needH = wndH - bottomPadding * 2; 194 setWidth = needH * lbW / lbH; 195 } else { // width change 196 setWidth = wndW - bottomPadding * 2; 197 } 198 // check for maw width 199 setWidth = setWidth >= lbW ? lbW : setWidth; 200 201 // set top to vertical center 202 setTop = (wndH - setWidth * lbH / lbW) / 2; 203 204 $currentImg.css({ 205 width: parseInt(setWidth), 206 height: setWidth * lbH / lbW 207 }); 208 $carouselItem.css('top', setTop + windowPadding); 209 } 210 211 function timeOutCarousel($lightBox, wndW, wndH, windowPadding, bottomPadding, flagResize){ 212 var $carouselItems = $lightBox.find('.modal-dialog .carousel-item'); 213 214 $carouselItems.each(function() { 215 if ((!flagResize && !$(this)[0].classList.contains('carousel-item-next') && !$(this)[0].classList.contains('carousel-item-prev')) || (flagResize && !$(this)[0].classList.contains('active'))){ 216 if ($(this)[0].classList.contains('video-container')){ 217 styleVideo($(this), wndH, windowPadding, bottomPadding); 218 } 219 else{ 220 styleImg($(this), wndH, wndW, windowPadding, bottomPadding); 221 } 222 } 223 }); 224 } 225 226 function fitLightbox() { 227 var windowPadding = 0; 228 var bottomPadding = 10; 229 var wndW = $(window).width() - windowPadding * 2; 230 var wndH = $(window).height() - windowPadding * 2; 231 232 if (!objectLightBox) { 233 return; 234 } 235 236 var $carouselItemActive, flagResize = false; 237 if (objectLightBox.find('.modal-dialog .carousel-item.carousel-item-next, .modal-dialog .carousel-item.carousel-item-prev').length){ 238 $carouselItemActive = objectLightBox.find('.modal-dialog .carousel-item.carousel-item-next, .modal-dialog .carousel-item.carousel-item-prev'); 239 } 240 else{ 241 $carouselItemActive = objectLightBox.find('.modal-dialog .carousel-item.active'); 242 flagResize = true; 243 } 244 245 if($carouselItemActive[0].classList.contains('video-container')){ 246 styleVideo($carouselItemActive, wndH, windowPadding, bottomPadding); 247 } 248 else{ 249 styleImg($carouselItemActive, wndH, wndW, windowPadding, bottomPadding); 250 } 251 252 clearTimeout(timeout); 253 254 timeout = setTimeout( timeOutCarousel, 200, objectLightBox, wndW, wndH, windowPadding, bottomPadding, flagResize); 255 256 } 257 258 /* pause/start video on different events and fit lightbox */ 259 var $window = $(document).find('.mbr-gallery'); 260 261 $window.on('show.bs.modal', function(e) { 262 clearTimeout(timeout2); 263 264 timeout2 = setTimeout(function() { 265 var index = $(e.relatedTarget).parent().index(); 266 var slide = $(e.target).find('.carousel-item').eq(index).find('.mbr-background-video'); 267 $(e.target).find('.carousel-item .mbr-background-video'); 268 if (slide.length > 0) { 269 var player = players[+slide.attr('data-video-num')]; 270 player.playVideo ? player.playVideo() : player.play(); 271 } 272 }, 500); 273 274 objectLightBox = $(e.target); 275 276 fitLightbox(); 277 278 }); 279 280 $window.on('slide.bs.carousel', function(e) { 281 var ytv = $(e.target).find('.carousel-item.active .mbr-background-video'); 282 if (ytv.length > 0) { 283 var player = players[+ytv.attr('data-video-num')]; 284 player.pauseVideo ? player.pauseVideo() : player.pause(); 285 } 286 }); 287 288 $(window).on('resize load', fitLightbox); 289 290 $window.on('slid.bs.carousel', function(e) { 291 var ytv = $(e.target).find('.carousel-item.active .mbr-background-video'); 292 293 if (ytv.length > 0) { 294 var player = players[+ytv.attr('data-video-num')]; 295 player.playVideo ? player.playVideo() : player.play(); 296 } 297 298 }); 299 300 $window.on('hide.bs.modal', function(e) { 301 players.map(function(player, i) { 302 player.pauseVideo ? player.pauseVideo() : player.pause(); 303 }); 304 305 objectLightBox = null; 306 }); 307}(jQuery));
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.