PageSourceSearch

https://birdlifemalta.org/wp-content/themes/birdlife/js/lightGallery.js?ver=1.0.0

js birdlifemalta.org collected 2026-10-02 03:57:40 UTC 33,656 bytes, 690 lines download raw bytes

1/** ==========================================================
2
3* jquery lightGallery.js v1.1.2
4* http://sachinchoolur.github.io/lightGallery/
5* Released under the Apache License - http://opensource.org/licenses/Apache-2.0  ---- FREE ----
6
7=========================================================/**/
8;
9(function ($) {
10    "use strict";
11    $.fn.lightGallery = function (options) {
12        var defaults = {
13            mode: 'slide',
14            useCSS: true,
15            easing: 'ease', //'cubic-bezier(0.25, 0, 0.25, 1)',//
16            speed: 1000,
17            closable: true,
18            loop: false,
19            auto: false,
20            pause: 4000,
21            preload:1,//number of preload slides. will exicute only after the current slide is fully loaded. ex:// you clicked on 4th image and if preload = 1 then 3rd slide and 5th slide will be loaded in the background after the 4th slide is fully loaded.. if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ...
22            escKey: true,
23            rel: false,
24            lang: {
25                allPhotos: 'All photos'
26            },
27            exThumbImage: false,
28            index: false,
29            thumbnail: true,
30            caption: true,
31            captionLink: false,
32            desc: true,
33            counter: false,
34            controls: true,
35            hideControlOnEnd: false,
36            mobileSrc: false,
37            mobileSrcMaxWidth: 640,
38            //touch
39            swipeThreshold: 50,
40            vimeoColor: 'CCCCCC',
41            videoAutoplay: true,
42            videoMaxWidth: 855,
43            dynamic: false,
44            //callbacks
45            dynamicEl: [],
46            onOpen: function () {},
47            onSlideBefore: function () {},
48            onSlideAfter: function () {},
49            onSlideNext: function () {},
50            onSlidePrev: function () {},
51            onBeforeClose: function () {},
52            onCloseAfter: function () {}
53        },
54            el = $(this),
55            $children,
56            index,
57            lightGalleryOn = false,
58            html = '<div id="lightGallery-outer"><div id="lightGallery-Gallery"><div id="lightGallery-slider"></div><a id="lightGallery-close" class="close"></a></div></div>',
59            isTouch = document.createTouch !== undefined || ('ontouchstart' in window) || ('onmsgesturechange' in window) || navigator.msMaxTouchPoints,
60            $gallery, $galleryCont, $slider, $slide, $prev, $next, prevIndex, $thumb_cont, $thumb, windowWidth, interval, usingThumb = false,
61            aTiming = false,
62            aSpeed = false;
63        var settings = $.extend(true, {}, defaults, options);
64        var lightGallery = {
65            init: function () {
66                el.each(function () {
67                    var $this = $(this);
68                    if (settings.dynamic == true) {
69                        $children = settings.dynamicEl;
70                        index = 0;
71                        prevIndex = index;
72                        setUp.init(index);
73                    } else {
74                        $children = $(this).children();
75                        $children.click(function (e) {
76                            if (settings.rel == true && $this.data('rel')) {
77                                var rel = $this.data('rel');
78                                $children = $('[data-rel="' + rel + '"]').children();
79                            } else {
80                                $children = $this.children();
81                            }
82                            e.preventDefault();
83                            e.stopPropagation();
84                            index = $children.index(this);
85                            prevIndex = index;
86                            setUp.init(index);
87                        });
88                    }
89                });
90            },
91        };
92        var setUp = {
93            init: function () {
94                this.start();
95                this.build();
96            },
97            start: function () {
98                this.structure();
99                this.getWidth();
100                this.closeSlide();
101            },
102            build: function () {
103                this.autoStart();
104                this.addCaption();
105                this.addDesc(); //description
106                this.counter();
107                this.slideTo();
108                this.buildThumbnail();
109                this.keyPress();
110                if(settings.index) {
111                    this.slide(settings.index);
112                }
113                else {
114                    this.slide(index);
115                }
116                this.touch();
117                this.enableTouch();
118
119                setTimeout(function () {
120                    $gallery.addClass('opacity');
121                }, 50);
122            },
123            structure: function () {
124                $('body').append(html).addClass('lightGallery');
125                $galleryCont = $('#lightGallery-outer');
126                $gallery = $('#lightGallery-Gallery');
127                $slider = $gallery.find('#lightGallery-slider');
128                var slideList = '';
129                if (settings.dynamic == true) {
130                    for (var i = 0; i < settings.dynamicEl.length; i++) {
131                        slideList += '<div class="lightGallery-slide"></div>';
132                    }
133                } else {
134                    $children.each(function () {
135                        slideList += '<div class="lightGallery-slide"></div>';
136                    });
137                }
138                $slider.append(slideList);
139                $slide = $gallery.find('.lightGallery-slide');
140            },
141            closeSlide: function () {
142                var $this = this;
143                if(settings.closable) {
144                    $('.lightGallery-slide')
145                        .on('click', function(event) {
146                            console.log(event.target);
147                            if($(event.target).is('.lightGallery-slide')) {
148                                $this.destroy();
149                            }
150                        })
151                    ;
152                }
153                $('#lightGallery-close').bind('click touchend', function () {
154                    $this.destroy();
155                });
156            },
157            getWidth: function () {
158                var resizeWindow = function () {
159                    windowWidth = $(window).width();
160                };
161                $(window).bind('resize.lightGallery', resizeWindow());
162            },
163            doCss: function () {
164                var support = function () {
165                    var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];
166                    var root = document.documentElement;
167                    for (var i = 0; i < transition.length; i++) {
168                        if (transition[i] in root.style) {
169                            //cssPrefix = transition[i].replace('Transition', '').toLowerCase();
170                            //cssPrefix == 'transition' ? cssPrefix = 'transition' : cssPrefix = ('-'+cssPrefix+'-transition');
171                            return true;
172                        }
173                    }
174                };
175                if (settings.useCSS && support()) {
176                    return true;
177                }
178                return false;
179            },
180            enableTouch: function () {
181                var $this = this;
182                if (isTouch){
183                    var startCoords = {},
184                        endCoords = {};
185                    $('body').on('touchstart.lightGallery', function(e) {
186                        endCoords = e.originalEvent.targetTouches[0];
187                        startCoords.pageX = e.originalEvent.targetTouches[0].pageX;
188                        startCoords.pageY = e.originalEvent.targetTouches[0].pageY;
189                    });
190                    $('body').on('touchmove.lightGallery', function(e) {
191                        var orig = e.originalEvent;
192                        endCoords = orig.targetTouches[0];
193                        e.preventDefault();
194                    });
195                    $('body').on('touchend.lightGallery', function(e) {
196                        var distance = endCoords.pageX - startCoords.pageX,
197                        swipeThreshold = settings.swipeThreshold;
198                        if( distance >= swipeThreshold ){
199                            $this.prevSlide();
200                            clearInterval(interval);
201                        }
202                        else if( distance <= - swipeThreshold ){
203                            $this.nextSlide();
204                            clearInterval(interval);
205                        }
206                    });
207                }
208            },
209            touch: function () {
210                var xStart, xEnd;
211                var $this = this;
212                $('.lightGallery').bind('mousedown', function (e) {
213                    e.stopPropagation();
214                    e.preventDefault();
215                    xStart = e.pageX;
216                });
217                $('.lightGallery').bind('mouseup', function (e) {
218                    e.stopPropagation();
219                    e.preventDefault();
220                    xEnd = e.pageX;
221                    if (xEnd - xStart > 20) {
222                        $this.prevSlide();
223                    } else if (xStart - xEnd > 20) {
224                        $this.nextSlide();
225                    }
226                });
227            },
228            isVideo: function (src) {
229                var youtube = src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com)\/(?:watch\?v=|embed\/)?([a-z0-9_\-]+)/i);
230                var vimeo = src.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i);
231                if (youtube || vimeo) {
232                    return true;
233                }
234            },
235            loadVideo: function (src, _id) {
236                var youtube = src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com)\/(?:watch\?v=|embed\/)?([a-z0-9_\-]+)/i);
237                var vimeo = src.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i);
238                var video = '';
239                var a ='';
240                if (youtube) {
241                    if (settings.videoAutoplay === true && lightGalleryOn === false) {
242                        a = '?autoplay=1&rel=0&wmode=opaque';
243                    } else {
244                        a = '?wmode=opaque';
245                    }
246                    video = '<iframe id="video' + _id + '" width="560" height="315" src="//www.youtube.com/embed/' + youtube[1] + a + '" frameborder="0" allowfullscreen></iframe>';
247                } else if (vimeo) {
248                    if (settings.videoAutoplay === true && lightGalleryOn === false) {
249                        a = 'autoplay=1&amp;';
250                    } else {
251                        a = '';
252                    }
253                    video = '<iframe id="video' + _id + '" width="560" height="315"  src="http://player.vimeo.com/video/' + vimeo[1] + '?' + a + 'byline=0&amp;portrait=0&amp;color=' + settings.vimeoColor + '" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';
254                }
255                return '<div class="video_cont" style="max-width:' + settings.videoMaxWidth + 'px !important;"><div class="video">' + video + '</div></div>';
256            },
257            loadContent: function (index,rec) {
258                var $this = this;
259                var i, j, l = $children.length - index;
260                var src;
261                if(settings.preload>$children.length){
262                    settings.preload = $children.length;
263                }
264                if (settings.mobileSrc === true && windowWidth <= settings.mobileSrcMaxWidth) {
265                    if (settings.dynamic == true) {
266                        src = settings.dynamicEl[index]['mobileSrc'];
267                    } else {
268                        src = $children.eq(index).attr('data-responsive-src');
269                    }
270                } else {
271                    if (settings.dynamic == true) {
272                        src = settings.dynamicEl[index]['src'];
273                    } else {
274                        src = $children.eq(index).attr('data-src');
275                    }
276                }
277                if (!$this.isVideo(src)) {
278                    if(!$slide.eq(index).hasClass('loaded')){
279                        $slide.eq(index).prepend('<img src="' + src + '" />');
280                        $slide.eq(index).addClass('loaded');
281                    }
282                    if(rec===false){
283                        var complete = false;
284                        if ($slide.eq(index).find('img')[0].complete){
285                            complete = true;    
286                        }
287                        if(!complete){
288                            $slide.eq(index).find('img').on('load error',function(){
289                                var newIndex = index;
290                                for(var k =0;k<=settings.preload;k++){
291                                    if(k>=$children.length-index){
292                                        break;
293                                    }
294                                    $this.loadContent(newIndex+k,true);  
295                                }
296                                for(var h =0;h<=settings.preload;h++){
297                                    if(newIndex-h<0){
298                                        break;
299                                    }
300                                    $this.loadContent(newIndex-h,true);  
301                                }
302                            });
303                        }else{
304                            var newIndex = index;
305                            for(var k =0;k<=settings.preload;k++){
306                                if(k>=$children.length-index){
307                                    break;
308                                }
309                                $this.loadContent(newIndex+k,true);  
310                            }
311                            for(var h =0;h<=settings.preload;h++){
312                                if(newIndex-h<0){
313                                    break;
314                                }
315                                $this.loadContent(newIndex-h,true);  
316                            }    
317                        }
318                    }
319                } else {
320                    if(!$slide.eq(index).hasClass('loaded')){
321                        if(rec===false && lightGalleryOn === true && settings.preload===0){
322                            setTimeout(function () {
323                                $slide.eq(index).prepend($this.loadVideo(src, index));
324                            }, settings.speed);
325                        }else{
326                            $slide.eq(index).prepend($this.loadVideo(src, index));
327                        }
328                        $slide.eq(index).addClass('loaded');
329
330                        if (settings.auto && settings.videoAutoplay === true) {
331                            clearInterval(interval);
332                        }
333                    }
334
335                    if(rec===false){
336                        var complete = false;
337                        if ($slide.eq(index).find('iframe')[0].complete){
338                            complete = true;    
339                        }
340                        if(!complete){
341                            $slide.eq(index).find('iframe').on('load error',function(){
342                                var newIndex = index;
343                                for(var k =0;k<=settings.preload;k++){
344                                    if(k>=$children.length-index){
345                                        break;
346                                    }
347                                    $this.loadContent(newIndex+k,true);  
348                                }
349                                for(var h =0;h<=settings.preload;h++){
350                                    $this.loadContent(newIndex-h,true);  
351                                }
352                            });
353                        }else{
354                            var newIndex = index;
355                            for(var k =0;k<=settings.preload;k++){
356                                $this.loadContent(newIndex+k,true);  
357                            }
358                            for(var h =0;h<=settings.preload;h++){
359                                $this.loadContent(newIndex-h,true);  
360                            }    
361                        }
362                    }
363
364
365                }
366            },
367            addCaption: function () {
368                if (settings.caption === true) {
369                    var i, title = false;
370                    for (i = 0; i < $children.length; i++) {
371                        if (settings.dynamic == true) {
372                            title = settings.dynamicEl[i]['caption'];
373                        } else {
374                            title = $children.eq(i).attr('data-title');
375                        }
376                        if (typeof title == 'undefined' || title == null) {
377                            title = 'image ' + i + '';
378                        }
379                        if (settings.captionLink === true) {
380                            var link = null;
381                            if (settings.dynamic == true) {
382                                link = settings.dynamicEl[i]['link'];
383                            } else {
384                                link = $children.eq(i).attr('data-link');
385                            }
386                            if (typeof link !== 'undefined' && link !== '') {
387                                link = link
388                            } else {
389                                link = '#'
390                            }
391                            $slide.eq(i).append('<div class="info group"><a href="' + link + '" class="title">' + title + '</a></div>');
392                        } else {
393                            $slide.eq(i).append('<div class="info group"><span class="title">' + title + '</span></div>');
394                        }
395                    }
396                }
397            },
398            addDesc: function () {
399                if (settings.desc === true) {
400                    var i, description = false;
401                    for (i = 0; i < $children.length; i++) {
402                        if (settings.dynamic == true) {
403                            description = settings.dynamicEl[i]['desc'];
404                        } else {
405                            description = $children.eq(i).attr('data-desc');;
406                        }
407                        if (typeof description == 'undefined' || description == null) {
408                            description = 'image ' + i + '';
409                        }
410                        if (settings.caption === false) {
411                            $slide.eq(i).append('<div class="info group"><span class="desc">' + description + '</span></div>');
412                        } else {
413                            $slide.eq(i).find('.info').append('<span class="desc">' + description + '</span>');
414                        }
415                    }
416                }
417            },
418            counter: function() {
419                if (settings.counter === true) {
420                    var slideCount = $("#lightGallery-slider > div").length;
421                    $gallery.append("<div id='lightGallery_counter'><span id='lightGallery_counter_current'></span> / <span id='lightGallery_counter_all'>"+slideCount+"</span></div>");
422                }
423            },
424            buildThumbnail: function () {
425                if (settings.thumbnail === true && $children.length > 1) {
426                    var $this = this;
427                    $gallery.append('<div class="thumb_cont"><div class="thumb_info"><span class="close ib"><i class="bUi-iCn-rMv-16" aria-hidden="true"></i></span></div><div class="thumb_inner"></div></div>');
428                    $thumb_cont = $gallery.find('.thumb_cont');
429                    $prev.after('<a class="cLthumb"></a>');
430                    $gallery.find('.cLthumb').bind('click touchend', function () {
431                        $thumb_cont.addClass('open');
432                        if ($this.doCss() && settings.mode === 'slide') {
433                            $slide.eq(index).prevAll().removeClass('nextSlide').addClass('prevSlide');
434                            $slide.eq(index).nextAll().removeClass('prevSlide').addClass('nextSlide');
435                        }
436                    });
437                    $gallery.find('.close').bind('click touchend', function () {
438                        $thumb_cont.removeClass('open');
439                    });
440                    var thumbInfo = $gallery.find('.thumb_info');
441                    var $thumb_inner = $gallery.find('.thumb_inner');
442                    var thumbList = '';
443                    var thumbImg;
444                    if (settings.dynamic == true) {
445                        for (var i = 0; i < settings.dynamicEl.length; i++) {
446                            thumbImg = settings.dynamicEl[i]['thumb'];
447                            thumbList += '<div class="thumb"><img src="' + thumbImg + '" /></div>';
448                        }
449                    } else {
450                        $children.each(function () {
451                            if (settings.exThumbImage === false || typeof $(this).attr(settings.exThumbImage) == 'undefined' || $(this).attr(settings.exThumbImage) == null) {
452                                thumbImg = $(this).find('img').attr('src');
453                            } else {
454                                thumbImg = $(this).attr(settings.exThumbImage);
455                            }
456                            thumbList += '<div class="thumb"><img src="' + thumbImg + '" /></div>';
457                        });
458                    }
459                    $thumb_inner.append(thumbList);
460                    $thumb = $thumb_inner.find('.thumb');
461                    $thumb.bind('click touchend', function () {
462                        usingThumb = true;
463                        var index = $(this).index();
464                        $thumb.removeClass('active');
465                        $(this).addClass('active');
466                        $this.slide(index);
467                        clearInterval(interval);
468                    });
469                    thumbInfo.prepend('<span class="ib count">' + settings.lang.allPhotos + ' (' + $thumb.length + ')</span>');
470                }
471            },
472            slideTo: function () {
473                var $this = this;
474                if (settings.controls === true && $children.length > 1) {
475                    $gallery.append('<div id="lightGallery-action"><a id="lightGallery-prev"></a><a id="lightGallery-next"></a></div>');
476                    $prev = $gallery.find('#lightGallery-prev');
477                    $next = $gallery.find('#lightGallery-next');
478                    $prev.bind('click', function () {
479                        $this.prevSlide();
480                        clearInterval(interval);
481                    });
482                    $next.bind('click', function () {
483                        $this.nextSlide();
484                        clearInterval(interval);
485                    });
486                }
487            },
488            autoStart: function () {
489                var $this = this;
490                if (settings.auto === true) {
491                    interval = setInterval(function () {
492                        if (index + 1 < $children.length) {
493                            index = index;
494                        } else {
495                            index = -1;
496                        }
497                        index++;
498                        $this.slide(index);
499                    }, settings.pause);
500                }
501            },
502            keyPress: function () {
503                var $this = this;
504                $(window).bind('keyup.lightGallery', function (e) {
505                    e.preventDefault();
506                    e.stopPropagation();
507                    if (e.keyCode === 37) {
508                        $this.prevSlide();
509                        clearInterval(interval);
510                    }
511                    if (e.keyCode === 38 && settings.thumbnail ==
511= true) {
512                        if (!$thumb_cont.hasClass('open')) {
513                            if ($this.doCss() && settings.mode === 'slide') {
514                                $slide.eq(index).prevAll().removeClass('nextSlide').addClass('prevSlide');
515                                $slide.eq(index).nextAll().removeClass('prevSlide').addClass('nextSlide');
516                            }
517                            $thumb_cont.addClass('open');
518                        }
519                    } else if (e.keyCode === 39) {
520                        $this.nextSlide();
521                        clearInterval(interval);
522                    }
523                    if (e.keyCode === 40 && settings.thumbnail === true) {
524                        if ($thumb_cont.hasClass('open')) {
525                            $thumb_cont.removeClass('open');
526                        }
527                    } else if (settings.escKey === true && e.keyCode === 27) {
528                        if (settings.thumbnail === true && $thumb_cont.hasClass('open')) {
529                            $thumb_cont.removeClass('open');
530                        } else {
531                            $this.destroy();
532                        }
533                    }
534                });
535            },
536            nextSlide: function () {
537                var $this = this;
538                index = $slide.index($slide.eq(prevIndex));
539                if (index + 1 < $children.length) {
540                    index++;
541                    $this.slide(index);
542                } else {
543                    if (settings.loop) {
544                        index = 0;
545                        $this.slide(index);
546                    } else if (settings.mode === 'fade' && settings.thumbnail === true && $children.length > 1) {
547                        $thumb_cont.addClass('open');
548                    }
549                }
550                settings.onSlideNext.call(this);
551            },
552            prevSlide: function () {
553                var $this = this;
554                index = $slide.index($slide.eq(prevIndex));
555                if (index > 0) {
556                    index--;
557                    $this.slide(index);
558                } else {
559                    if (settings.loop) {
560                        index = $children.length - 1;
561                        $this.slide(index);
562                    } else if (settings.mode === 'fade' && settings.thumbnail === true && $children.length > 1) {
563                        $thumb_cont.addClass('open');
564                    }
565                }
566                settings.onSlidePrev.call(this);
567            },
568            slide: function (index) {
569                this.loadContent(index,false);
570                if (lightGalleryOn) {
571                    if (!$slider.hasClass('on')) {
572                        $slider.addClass('on');
573                    }
574                    if (this.doCss() && settings.speed !== '') {
575                        if (!$slider.hasClass('speed')) {
576                            $slider.addClass('speed');
577                        }
578                        if (aSpeed === false) {
579                            $slider.css('transition-duration', settings.speed + 'ms');
580                            aSpeed = true;
581                        }
582                    }
583                    if (this.doCss() && settings.easing !== '') {
584                        if (!$slider.hasClass('timing')) {
585                            $slider.addClass('timing');
586                        }
587                        if (aTiming === false) {
588                            $slider.css('transition-timing-function', settings.easing);
589                            aTiming = true;
590                        }
591                    }
592                    settings.onSlideBefore.call(this);
593                }
594                if (settings.mode === 'slide') {
595                    var isiPad = navigator.userAgent.match(/iPad/i) != null;
596                    if (this.doCss() && !$slider.hasClass('slide') && !isiPad) {
597                        $slider.addClass('slide');
598                    }else if(this.doCss() && !$slider.hasClass('useLeft') &&isiPad){
599                        $slider.addClass('useLeft');
600                    }
601                    /*                  if(this.doCss()){
602                        $slider.css({ 'transform' : 'translate3d('+(-index*100)+'%, 0px, 0px)' });
603                    }*/
604                    if (!this.doCss() && !lightGalleryOn) {
605                        $slider.css({
606                            left: (-index * 100) + '%'
607                        });
608                        //$slide.eq(index).css('transition','none');
609                    } else if (!this.doCss() && lightGalleryOn) {
610                        $slider.animate({
611                            left: (-index * 100) + '%'
612                        }, settings.speed, settings.easing);
613                    }
614                } else if (settings.mode === 'fade') {
615                    if (this.doCss() && !$slider.hasClass('fadeM')) {
616                        $slider.addClass('fadeM');
617                    } else if (!this.doCss() && !$slider.hasClass('animate')) {
618                        $slider.addClass('animate');
619                    }
620                    if (!this.doCss() && !lightGalleryOn) {
621                        $slide.fadeOut(100);
622                        $slide.eq(index).fadeIn(100);
623                    } else if (!this.doCss() && lightGalleryOn) {
624                        $slide.eq(prevIndex).fadeOut(settings.speed, settings.easing);
625                        $slide.eq(index).fadeIn(settings.speed, settings.easing);
626                    }
627                }
628                if (index + 1 >= $children.length && settings.auto && settings.loop === false) {
629                    clearInterval(interval);
630                }
631                $slide.eq(prevIndex).removeClass('current');
632                $slide.eq(index).addClass('current');
633                if (this.doCss() && settings.mode === 'slide') {
634                    if (usingThumb === false) {
635                        $('.prevSlide').removeClass('prevSlide');
636                        $('.nextSlide').removeClass('nextSlide');
637                        $slide.eq(index - 1).addClass('prevSlide');
638                        $slide.eq(index + 1).addClass('nextSlide');
639                    } else {
640                        $slide.eq(index).prevAll().removeClass('nextSlide').addClass('prevSlide');
641                        $slide.eq(index).nextAll().removeClass('prevSlide').addClass('nextSlide');
642                    }
643                }
644                if (settings.thumbnail === true && $children.length > 1) {
645                    $thumb.removeClass('active');
646                    $thumb.eq(index).addClass('active');
647                }
648                if (settings.controls && settings.hideControlOnEnd && settings.loop === false && $children.length > 1) {
649                    var l = $children.length;
650                        l = parseInt(l)-1;
651                    if (index === 0) {
652                        $prev.addClass('disabled');
653                        $next.removeClass('disabled');
654                    } else if (index === l) {
655                        $prev.removeClass('disabled');
656                        $next.addClass('disabled');
657                    } else {
658                        $prev.add($next).removeClass('disabled');
659                    }
660                }
661                prevIndex = index;
662                lightGalleryOn === false ? settings.onOpen.call(this) : settings.onSlideAfter.call(this);
663                lightGalleryOn = true;
664                usingThumb = false;
665                if (settings.counter) {
666                    $("#lightGallery_counter_current").text(index+1);
667                }
668            },
669            destroy: function () {
670                settings.onBeforeClose.call(this);
671                lightGalleryOn = false;
672                aTiming = false;
673                aSpeed = false;
674                usingThumb = false;
675                clearInterval(interval);
676                $('.lightGallery').off('mousedown mouseup');
677                $('body').off('touchstart.lightGallery touchmove.lightGallery touchend.lightGallery');
678                $(window).off('resize.lightGallery keyup.lightGallery');
679                $gallery.addClass('fadeM');
680                setTimeout(function () {
681                    $galleryCont.remove();
682                    $('body').removeClass('lightGallery');
683                }, 500);
684                settings.onCloseAfter.call(this);
685            }
686        };
687        lightGallery.init();
688        return this;
689    };
690}(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.