PageSourceSearch

https://alliancabeneficios.com.br/assets/gallery/script.js

js alliancabeneficios.com.br collected 2026-10-02 01:18:15 UTC 12,562 bytes, 343 lines download raw bytes

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');
76                $msnr.imagesLoaded().progress(function() {
77                    $msnr.masonry({
78                        itemSelector: '.mbr-gallery-item:not(.mbr-gallery-item__hided)',
79                        percentPosition: true,
80                        horizontalOrder: true
81                    });
82
83                    // reload masonry (need for adding new or re-sort items)
84                    $msnr.masonry('reloadItems');
85                
86                    $msnr.on('filter', function() {
87                        $msnr.masonry('reloadItems');
88                        $msnr.masonry('layout');
89                        // update parallax backgrounds
90                        $(window).trigger('update.parallax');
91                    }.bind(this, $msnr));
92                    $msnr.imagesLoaded().progress(function() {
93                        $msnr.masonry('layout');
94                    });
95                })
96            });
97        }
98    };
99
100    /* Masonry Grid */
101    $(document).on('add.cards', function(event) {
102        var $section = $(event.target);
103        $section.on('click', '.mbr-gallery-filter li', function(e) {
104            e.preventDefault();
105            var $li = $(this).closest('li');
106
107            $li.parent().find('li').removeClass('active');
108            $li.addClass('active');
109
110            var $mas = $li.closest('section').find('.mbr-gallery-row');
111            var filter = $(this)[0].textContent.trim();
112
113            $section.find('.mbr-gallery-item').each(function(i, el) {
114                var $elem = $(this);
115                var tagsAttr = $elem.attr('data-tags');
116                var tags = tagsAttr.split(',');
117
118                var tagsTrimmed = tags.map(function(el) {
119                    return el.trim();
120                });
121
122                if ($.inArray(filter, tagsTrimmed) === -1 && !$li.hasClass('mbr-gallery-filter-all')) {
123                    $elem.addClass('mbr-gallery-item__hided');
124
125                    $elem.css('left', '300px');
126                } else {
127                    $elem.removeClass('mbr-gallery-item__hided');
128                }
129            });
130
131            $mas.closest('.mbr-gallery-row').trigger('filter');
132        });
133    });
134
135    if (isBuilder) {
136        $(document).on('changeButtonColor.cards', function(event) {
137            var $section = $(event.target);
138
139            if ($section.find('.mbr-gallery-filter').length > 0 && $(event.target).find('.mbr-gallery-filter').hasClass('gallery-filter-active')) {
140                var classAttr = ($section.find('.mbr-gallery-filter .mbr-gallery-filter-all').find('a').attr('class') || '').replace(/(^|\s)active(\s|$)/, ' ').trim();
141
142                $section.find('.mbr-gallery-filter ul li:not(.mbr-gallery-filter-all) a').attr('class', classAttr);
143            }
144
145            updateMasonry(event);
146        });
147    }
148
149    $(document).on('add.cards changeParameter.cards', function(event) {
150        var $section = $(event.target);
151        var filterList = [];
152
153        $section.find('.mbr-gallery-item').each(function(el) {
154            var tagsList = ($(this).attr('data-tags') || "").trim().split(',');
155
156            tagsList.map(function(el) {
157                el = el.trim();
158                if ($.inArray(el, filterList) === -1) filterList.push(el);
159            });
160        });
161
162        if ($section.find('.mbr-gallery-filter').length > 0 && $(event.target).find('.mbr-gallery-filter').hasClass('gallery-filter-active')) {
163            var filterHtml = '';
164
165            $section.find('.mbr-gallery-filter ul li:not(.mbr-gallery-filter-all)').remove();
166
167            var allItem = $section.find('.mbr-gallery-filter .mbr-gallery-filter-all'),
168                childItem = allItem.clone();
169                childItem.find('a').removeClass('active');
170 
171            filterList.map(function(el) {
172                if(childItem.find('a').length) childItem.find('a').text(el);
173                else childItem.text(el);
174                filterHtml += '<li>' + childItem.html() + '</li>';
175            });
176            childItem.remove();
177
178            $section.find('.mbr-gallery-filter ul').append(filterHtml);
179
180        }
181
182        updateMasonry(event);
183    });
184
185    $(document).on('change.cards', function(event) {
186        updateMasonry(event);
187    });
188
189    $(document).on('lazyload', function(event) {
190        updateMasonry(event);
191        $(window).scrollEnd(function(){
192            updateMasonry(event);
193        }, 250)
194    });
195
196    $('.mbr-gallery-item').on('click', 'a', function(e) {
197        e.stopPropagation();
198    });
199
200    var timeout2, timeout, objectLightBox;
201
202    /* Lightbox Fit */
203    function styleVideo($carouselItem, wndH, windowPadding, bottomPadding){
204        $carouselItem.css({
205            'top': windowPadding,
206            'height': wndH - 2 * windowPadding - 2 * bottomPadding
207        })
208    }
209
210    function styleImg($carouselItem, wndH, wndW, windowPadding, bottomPadding){
211        var $currentImg = $carouselItem.find('img');
212        if ($currentImg[0].complete && $currentImg[0].naturalWidth>50 && $currentImg[0].naturalHeight>50) {
213            setCSStoImage($currentImg,$carouselItem, wndH, wndW, windowPadding, bottomPadding)
214        } else {
215            $currentImg.one('load', function() {
216                setCSStoImage($currentImg,$carouselItem, wndH, wndW, windowPadding, bottomPadding)
217            })
218        }
219    }
220
221    function setCSStoImage(image,item, wndH, wndW, windowPadding, bottomPadding) {
222        var setWidth, setTop;
223
224        var lbW = image[0].naturalWidth;
225        var lbH = image[0].naturalHeight;
226
227        // height change
228        if (wndW / wndH > lbW / lbH) {
229            var needH = wndH - bottomPadding * 2;
230            setWidth = needH * lbW / lbH;
231        } else { // width change
232            setWidth = wndW - bottomPadding * 2;
233        }
234        // check for maw width
235        setWidth = setWidth >= lbW ? lbW : setWidth;
236
237        // set top to vertical center
238        setTop = (wndH - setWidth * lbH / lbW) / 2;
239
240        image.css({
241            width: parseInt(setWidth),
242            height: setWidth * lbH / lbW
243        });
244        item.css('top', setTop + windowPadding);
245    }
246
247    function timeOutCarousel($lightBox, wndW, wndH, windowPadding, bottomPadding, flagResize){
248        var $carouselItems = $lightBox.find('.modal-dialog .carousel-item');
249
250        $carouselItems.each(function() {
251            if ((!flagResize && !$(this)[0].classList.contains('carousel-item-next') && !$(this)[0].classList.contains('carousel-item-prev')) || (flagResize && !$(this)[0].classList.contains('active'))){
252                if ($(this)[0].classList.contains('video-container')){
253                    styleVideo($(this), wndH, windowPadding, bottomPadding);
254                }
255                else{
256                    styleImg($(this), wndH, wndW, windowPadding, bottomPadding);
257                }
258            }
259        });
260    }
261
262    function fitLightbox() {
263        var windowPadding = 0;
264        var bottomPadding = 10;
265        var wndW = $(window).width() - windowPadding * 2;
266        var wndH = $(window).height() - windowPadding * 2;
267
268        if (!objectLightBox) {
269            return;
270        }
271
272        var $carouselItemActive, flagResize = false;
273        if (objectLightBox.find('.modal-dialog .carousel-item.carousel-item-next, .modal-dialog .carousel-item.carousel-item-prev').length){
274            $carouselItemActive = objectLightBox.find('.modal-dialog .carousel-item.carousel-item-next, .modal-dialog .carousel-item.carousel-item-prev');
275        }
276        else{
277            $carouselItemActive = objectLightBox.find('.modal-dialog .carousel-item.active');
278            flagResize = true;
279        }
280
281        if($carouselItemActive[0].classList.contains('video-container')){
282            styleVideo($carouselItemActive, wndH, windowPadding, bottomPadding);
283        }
284        else{
285            styleImg($carouselItemActive, wndH, wndW, windowPadding, bottomPadding);
286        }
287
288        clearTimeout(timeout);
289
290        timeout = setTimeout( timeOutCarousel, 200, objectLightBox, wndW, wndH, windowPadding, bottomPadding, flagResize);
291
292    }
293
294    /* pause/start video on different events and fit lightbox */
295    var $window = $(document).find('.mbr-gallery');
296
297    $window.on('show.bs.modal', function(e) {
298        clearTimeout(timeout2);
299
300        timeout2 = setTimeout(function() {
301            var index = $(e.relatedTarget).parent().attr('data-video-num');
302            var slide = $(e.target).find('.carousel-item .mbr-background-video[data-video-num=' + index + ']');
303            $(e.target).find('.carousel-item .mbr-background-video');
304            if (slide.length > 0 && slide.closest('.carousel-item').hasClass('active')) {
305                var player = players[+slide.attr('data-video-num')];
306                player.playVideo ? player.playVideo() : player.play();
307            }
308        }, 500);
309
310        objectLightBox = $(e.target);
311
312        fitLightbox();
313
314    });
315
316    $window.on('slide.bs.carousel', function(e) {
317        var ytv = $(e.target).find('.carousel-item.active .mbr-background-video');
318        if (ytv.length > 0) {
319            var player = players[+ytv.attr('data-video-num')];
320            player.pauseVideo ? player.pauseVideo() : player.pause();
321        }
322    });
323
324    $(window).on('resize load', fitLightbox);
325
326    $window.on('slid.bs.carousel', function(e) {
327        var ytv = $(e.target).find('.carousel-item.active .mbr-background-video');
328
329        if (ytv.length > 0) {
330            var player = players[+ytv.attr('data-video-num')];
331            player.playVideo ? player.playVideo() : player.play();
332        }
333        
334    });
335
336    $window.on('hide.bs.modal', function(e) {
337        players.map(function(player, i) {
338            player.pauseVideo ? player.pauseVideo() : player.pause();
339        });
340
341        objectLightBox = null;
342    });
343}(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.