PageSourceSearch

https://matchmakerireland.com/media/com_igallery/js/ignitegallery-42.js?a6fed0

js matchmakerireland.com collected 2026-09-24 23:34:46 UTC 131,722 bytes, 2,879 lines download raw bytes

1window.lazySizesConfig = window.lazySizesConfig || {};
2lazySizesConfig.expand = 1000;
3
4jQuery(document).ready(function($)
5{
6    $('.ig-main-scope-wrapper').each(function(index,el)
7    {
8        var lastVisible = $(el).is(':visible');
9        if(!lastVisible)
10        {
11            $(el).css('visibility','hidden');
12        }
13
14        function checkIfVisibleChanged()
15        {
16            var visibleNow = $(el).is(':visible');
17
18            if(visibleNow != lastVisible)
19            {
20                if(visibleNow)
21                {
22                    $(el).resize();
23                    iguiUIkit.update($(el));
24                    setTimeout(function(){$(el).css('visibility','visible');$(el).find('.ig-thumbs-grid').css('visibility','visible');}, 70);
25                }
26                else
27                {
28                    $(el).css('visibility','hidden');
29                    $(el).find('.ig-thumbs-grid').css('visibility','hidden');
30                }
31
32                lastVisible = visibleNow;
33            }
34        }
35
36        setInterval(checkIfVisibleChanged, 50);
37
38    });
39
40    //menu grid
41    $('.ig-menu-grid').each(function(index,el)
42    {
43        var menuGrid = $(el);
44        menuGrid.data('init',0);
45        var menuGridType = menuGrid.attr('data-ig-menugridtype');
46        var maxColumnWidth = parseInt(menuGrid.attr('data-ig-maxmenuwidth'));
47        var maxColumnHeight = parseInt(menuGrid.attr('data-ig-maxmenuheight'));
48        var menuGridPadding = parseInt(menuGrid.attr('data-ig-menugridmargin'));
49
50        //masonry grid
51        function masonryGrid()
52        {
53            var containerWidth = parseInt(menuGrid.parent().width());
54            var columns = Math.ceil(containerWidth/(maxColumnWidth + (menuGridPadding * 2)));
55
56            var gutterTotalSpace = menuGridPadding * (columns -1);
57            var columnsTotalSpace = containerWidth - (gutterTotalSpace);
58            var oneColumnSpace = columnsTotalSpace/columns;
59
60            menuGrid.find('.ig-menu-grid-item').each(function(index,el)
61            {
62                $(el).css('width',oneColumnSpace+'px');
63                $(el).css('margin-bottom',(menuGridPadding -1)+'px');
64
65                if($(el).find('img').length)
66                {
67                    var imgWidth = $(el).find('img').attr('width');
68                    var imgHeight = $(el).find('img').attr('height');
69
70                    var newHeight = Math.ceil(((oneColumnSpace/imgWidth) * imgHeight)) + 1;
71                    if(newHeight > imgHeight)
72                    {
73                        newHeight = imgHeight;
74                    }
75
76                    if($(el).find('.ig-menu-grid-text').length && $(el).find('.ig-menu-grid-text').hasClass('igui-overlay') == false)
77                    {
78                        newHeight = parseInt(newHeight) + parseInt($(el).find('.ig-menu-grid-text').outerHeight()) + 10;
79                    }
80
81                    $(el).css('height',newHeight+'px');
82                }
83            });
84
85            menuGrid.isotopeIG({
86                layoutMode: 'masonry',
87                itemSelector: '.ig-menu-grid-item',
88                masonry: {
89                    columnWidth: oneColumnSpace,
90                    gutter: menuGridPadding,
91                    resize: false,
92                    fitWidth: true,
93                    transitionDuration: 0
94                }
95            });
96
97
98            if(menuGrid.data('init') == 0)
99            {
100                document.addEventListener('lazyloaded', function(e)
101                {
102                    menuGrid.isotopeIG('layout');
103                });
104            }
105            menuGrid.data('init',1);
106        }
107
108        if(menuGridType == 'by_columns')
109        {
110            masonryGrid();
111            setTimeout(function(){masonryGrid();}, 200);
112            setTimeout(function(){masonryGrid();}, 500);
113
114            $(window).resize(function()
115            {
116                if(menuGrid.data('resizing') == 0)
117                {
118                    masonryGrid();
119                    setTimeout(function(){masonryGrid();}, 100);
120                    setTimeout(function(){masonryGrid();}, 200);
121                    setTimeout(function(){masonryGrid();}, 500);
122                    menuGrid.data('resizing',1);
123                }
124                setTimeout(function(){menuGrid.data('resizing',0);}, 50);
125            });
126        }
127
128        function metroMenuGrid()
129        {
130            var containerWidth = parseInt(menuGrid.parent().width());
131
132            var columns = Math.ceil(containerWidth/(maxColumnWidth + (menuGridPadding * 1.5)));
133            var gutterTotalSpace = menuGridPadding * (columns -1);
134            var columnsTotalSpace = containerWidth - (gutterTotalSpace);
135            var oneColumnSpace = columnsTotalSpace/columns;
136            var twoColumnSpace = (oneColumnSpace*2) + menuGridPadding;
137
138
139            var lastContainerWidth = menuGrid.data('last-grid-width');
140            if(typeof lastContainerWidth === 'undefined'){lastContainerWidth = 0}
141
142            if(containerWidth != lastContainerWidth)
143            {
144                menuGrid.find('.ig-menu-grid-item').each(function(index,el)
145                {
146                    if( $(el).attr('data-widthdouble') == 1 )
147                    {
148                        $(el).css('width',twoColumnSpace+'px');
149                    }
150                    else
151                    {
152                        $(el).css('width',oneColumnSpace+'px');
153                    }
154
155                    if( $(el).attr('data-heightdouble') == 1 )
156                    {
157                        $(el).css('height',twoColumnSpace+'px');
158                    }
159                    else
160                    {
161                        $(el).css('height',oneColumnSpace+'px');
162                    }
163
164                });
165
166                menuGrid.isotopeIG({
167                    layoutMode: 'packery',
168                    itemSelector: '.ig-menu-grid-item',
169                    packery: {
170                        gutter: menuGridPadding,
171                        resize: false,
172                        rowHeight: oneColumnSpace
173                    }
174                });
175            }
176
177            menuGrid.data('last-grid-width',containerWidth);
178
179            if(menuGrid.data('init') == 0)
180            {
181                document.addEventListener('lazyloaded', function(e)
182                {
183                    menuGrid.isotopeIG('layout')
184                });
185            }
186            menuGrid.data('init',1);
187        }
188
189        if(menuGridType == 'metro')
190        {
191            metroMenuGrid();
192            setTimeout(function(){metroMenuGrid();}, 200);
193            setTimeout(function(){metroMenuGrid();}, 500);
194
195            $(window).resize(function()
196            {
197                if(menuGrid.data('resizing') == 0)
198                {
199                    metroMenuGrid();
200                    setTimeout(function(){metroMenuGrid();}, 100);
201                    setTimeout(function(){metroMenuGrid();}, 200);
202                    setTimeout(function(){metroMenuGrid();}, 500);
203                    menuGrid.data('resizing',1);
204                }
205
206                setTimeout(function(){menuGrid.data('resizing',0);}, 50);
207            });
208        }
209
210        //rows grid
211        function rowsGrid()
212        {
213            var containerWidth = parseInt(menuGrid.parent().width());
214            var columns = Math.ceil(containerWidth/(maxColumnWidth + (menuGridPadding * 2)));
215
216            var gutterTotalSpace = menuGridPadding * (columns -1);
217            var columnsTotalSpace = containerWidth - (gutterTotalSpace);
218            var oneColumnSpace = columnsTotalSpace/columns;
219
220            menuGrid.find('.ig-menu-grid-item').each(function(index,el)
221            {
222                $(el).css('width',oneColumnSpace+'px');
223                $(el).css('margin-bottom',(menuGridPadding -1)+'px');
224
225                if($(el).find('img').length)
226                {
227                    var imgWidth = $(el).find('img').attr('width');
228                    var imgHeight = $(el).find('img').attr('height');
229
230                    var newHeight = Math.ceil(((oneColumnSpace/imgWidth) * imgHeight)) + 1;
231                    if(newHeight > imgHeight)
232                    {
233                        newHeight = imgHeight;
234                    }
235
236                    if($(el).find('.ig-menu-grid-text').length && $(el).find('.ig-menu-grid-text').hasClass('igui-overlay') == false)
237                    {
238                        newHeight = parseInt(newHeight) + parseInt($(el).find('.ig-menu-grid-text').outerHeight()) + 10;
239                    }
240
241                    $(el).css('height',newHeight+'px');
242                }
243            });
244
245            menuGrid.isotopeIG({
246                layoutMode: 'fitRows',
247                itemSelector: '.ig-menu-grid-item',
248                fitRows: {
249                    gutter: (menuGridPadding -1),
250                }
251            });
252
253
254            if(menuGrid.data('init') == 0)
255            {
256                document.addEventListener('lazyloaded', function(e)
257                {
258                    menuGrid.isotopeIG('layout');
259                });
260            }
261            menuGrid.data('init',1);
262        }
263
264        if(menuGridType == 'by_rows')
265        {
266            rowsGrid();
267            setTimeout(function(){rowsGrid();}, 200);
268            setTimeout(function(){rowsGrid();}, 500);
269
270            $(window).resize(function()
271            {
272                if(menuGrid.data('resizing') == 0)
273                {
274                    rowsGrid();
275                    setTimeout(function(){rowsGrid();}, 100);
276                    setTimeout(function(){rowsGrid();}, 200);
277                    setTimeout(function(){rowsGrid();}, 500);
278                    menuGrid.data('resizing',1);
279                }
280                setTimeout(function(){menuGrid.data('resizing',0);}, 50);
281            });
282        }
283
284        //justified grid
285        var thumbSizes = [];
286        var largestHeight = 0;
287        var sumHeights = 0;
288        var smallestHeight = 5000;
289        var spacing = parseInt(menuGrid.attr('data-ig-menugridmargin'));
290        menuGrid.find('.ig-menu-grid-item').each(function(index,el)
291        {
292            if($(el).find('.ig-menu-grid-image').length)
293            {
294                var width = $(el).find('.ig-menu-grid-image').attr('width');
295                var height = $(el).find('.ig-menu-grid-image').attr('height');
296                if( !$(el).find('.ig-menu-grid-text').hasClass('igui-overlay') )
297                {
298                    height = parseInt(height) + (parseInt($(el).find('.ig-menu-grid-text').height()) * 1.2);
299                }
300            }
301            else
302            {
303                width = maxColumnWidth;
304                height = maxColumnHeight;
305            }
306
307            thumbSizes.push({width: width,height: height});
308            largestHeight = height > largestHeight ? height : largestHeight;
309            sumHeights = sumHeights + parseInt(height);
310            smallestHeight = height < smallestHeight ? height : smallestHeight;
311        });
312
313        var averageHeight = Math.round(sumHeights/(menuGrid.find('.ig-menu-grid-item').length));
314        var targetHeight = $(window).width() > 1000 ? smallestHeight*0.8 : smallestHeight*0.6;
315
316        function menuJustifiedGrid()
317        {
318            if(menuGrid.width() < 300)
319            {
320                menuGrid.css('height','auto');
321                menuGrid.find('.ig-menu-grid-item').css({'width':'auto', 'height':'auto', 'top':'auto', 'left':'auto','position':'static'});
322                rowsGrid();
323            }
324            else
325            {
326                menuGrid.removeClass('igui-child-width-1-1 igui-child-width-1-2 igui-child-width-1-3 igui-child-width-1-4 igui-child-width-1-5 igui-child-width-1-6 igui-child-width-1-7 igui-child-width-1-8 igui-child-width-1-9 igui-child-width-1-10  igui-child-width-1-11 igui-child-width-1-12 igui-child-width-1-13 igui-child-width-1-14 igui-child-width-1-15 igui-grid-small igui-grid-medium igui-grid-collapse');
327
328                var justifiedData = require('justified-layout')(thumbSizes,
329                {
330                    containerWidth:menuGrid.width(),
331                    targetRowHeight: targetHeight,
332                    boxSpacing:spacing,
333                    targetRowHeightTolerance: 0.15
334                });
335
336                $.each(justifiedData.boxes,function(index,box)
337                {
338                    menuGrid.find('.ig-menu-grid-item').eq(index).css({'width':box.width, 'height':box.height, 'top':box.top, 'left':box.left,'position':'absolute'});
339                });
340                menuGrid.css('height',justifiedData.containerHeight+'px');
341
342                if(menuGrid.data('init') == 0)
343                {
344                    document.addEventListener('lazyloaded', function(e)
345                    {
346                        menuJustifiedGrid();
347                    });
348                }
349                menuGrid.data('init',1);
350            }
351        }
352
353        if(menuGridType == 'justified')
354        {
355            menuJustifiedGrid();
356
357            $(window).resize(function()
358            {
359                menuJustifiedGrid();
360            });
361        }
362
363
364        $('.ig-menu-grid-link').each(function(index,el)
365        {
366            $(el).imagesLoaded( function()
367            {
368                $(el).find('.ig-menu-grid-text').css('display','block');
369            });
370        });
371
372        setTimeout(function(){menuGrid.css('visibility','visible');}, 700);
373
374        if(menuGrid.attr('data-ig-menuclick') == 'lightbox')
375        {
376            $('.ig-menu-grid-link').on('click', function(e)
377            {
378                e.preventDefault();
379                $('body, html').css('overflow','hidden');
380                var galleryId = $(this).attr('data-gallery-id');
381                var htmlId = 'ig-menu-to-lbox-'+galleryId;
382                var link = menuGrid.attr('data-ig-basehref') + '/index.php?option=com_igallery&view=category&tmpl=component&lboxview=1&igid=' + galleryId + '&shareurl=' + encodeURIComponent(window.location.href);
383                var iframe = $('<iframe src=' + link + ' style="display:none; width:100vw; height:100vh; height:100dvh; background-color:#000; position:fixed; top:0px; left:0px; z-index:10000000000;" id="' + htmlId + '" class="ig-menu-to-lbox" frameborder="0" scrolling="no"></iframe>');
384
385                $(document.body).append(iframe);
386                $('#'+htmlId).css('display','block');
387
388                if(menuGrid.attr('data-ig-lightbox-fullscreen') == 'open-fullscreen')
389                {
390                    $('#'+htmlId).fullScreen(true);
391                }
392
393
394                window.igCloseModal = function()
395                {
396                    if($(document).fullScreen())
397                    {
398                        $(document).fullScreen(false);
399                    }
400                    $('.ig-menu-to-lbox').remove();
401                    $('body, html').css('overflow','auto');
402                };
403
404            });
405        }
406
407    });
408
409
410
411    $('.ig-gallery-wrapper').each(function(index,el)
412    {
413        var panel = null;
414        var panelIds = Array();
415        var isIOS = (navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? true : false);
416        var isAndroid = (navigator.userAgent.toLowerCase().indexOf("android") > -1);
417
418        var galleryWrapper = $(el);
419        var lboxWrapper = $('#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid') );
420        galleryWrapper.data('hits-pause',0);
421        galleryWrapper.data('swipe-active',0);
422        galleryWrapper.data('firstShown', false);
423        galleryWrapper.data('lboxPlaying', false);
424        galleryWrapper.data('lboxRecaptchaInit',0);
425
426        var imgsToPreload = [];
427
428        galleryWrapper.find(".ig-description-overlay a").click(function(e)
429        {
430            e.stopPropagation();
431        });
432
433        if(window.location.href.search('thumb_limitstart') != -1 && getUrlParamater('i') == 'unset')
434        {
435            //window.location.hash = 'ig-gallery-wrapper-' + galleryWrapper.attr('data-ig-uniqueid');
436        }
437
438        if(galleryWrapper.attr('data-ig-disable-rightclick') == 1)
439        {
440            galleryWrapper.find('.ig-slideshow-image, .ig-thumbs-grid-image, .ig-thumbs-grid-hover').on('contextmenu',function(){
441                alert(galleryWrapper.attr('data-ig-rightclick-msg'));
442                return false;
443            });
444
445            galleryWrapper.find('.ig-thumbs-grid-image').on('dragstart', function(event){
446                event.preventDefault();
447            });
448        }
449
450        //slideshow
451        if(galleryWrapper.attr('data-ig-show-main-image') == 1)
452        {
453            var imgHash = getUrlParamater('i');
454
455            var slideShowInitIndex = 0;
456            if(imgHash.length > 0)
457            {
458                var elementToFind = galleryWrapper.find(".ig-slideshow-item[data-ig-imagehash='" + imgHash + "']");
459                if (elementToFind.length)
460                {
461                    slideShowInitIndex = elementToFind.index();
462                    loadImageNow(slideShowInitIndex);
463                    addToPreload(slideShowInitIndex + 1);
464                    addToPreload(slideShowInitIndex + 2);
465                    addToPreload(slideShowInitIndex + 3);
466                    addToPreload(slideShowInitIndex + 4);
467                    addToPreload(slideShowInitIndex + 5);
468                    addToPreload(slideShowInitIndex + 6);
469                    addToPreload(slideShowInitIndex - 1);
470                    addToPreload(slideShowInitIndex - 2);
471                }
472            }
473
474            if (slideShowInitIndex == 0)
475            {
476                for (var i = 0; i < 20; i++) {
477                    addToPreload(i);
478                }
479            }
480
481            var velocity = parseFloat( galleryWrapper.find('.ig-slideshow').attr('data-ig-transition-duration') );
482            velocity = velocity == 0 ? 200 : velocity;
483
484            var autoplay = Boolean(Number(galleryWrapper.find('.ig-slideshow').attr('data-ig-autoplay')));
485            var finite = galleryWrapper.find('.ig-slideshow').attr('data-ig-infinite') == 1 ? false : true;
486
487            var slideshow = iguiUIkit.slideshow(galleryWrapper.find('.ig-slideshow'),
488            {
489                animation: galleryWrapper.find('.ig-slideshow').attr('data-ig-fade'),
490                index: slideShowInitIndex,
491                finite: finite,
492                velocity: (400/velocity),
493                ratio: galleryWrapper.find('.ig-slideshow').attr('data-ig-ratio'),
494                autoplay: autoplay,
495                autoplayInterval: parseInt(galleryWrapper.find('.ig-slideshow').attr('data-ig-interval')),
496                maxHeight: parseInt(galleryWrapper.find('.ig-slideshow').attr('data-ig-max-height'))
497            });
498
499            //allow creation of custom links that load a slideshow image
500            $('.ig-slideshow-custom-link').on('click', function(e)
501            {
502                e.preventDefault();
503                var galleryId = $(this).attr('data-gallery-id');
504                var imageIndex = $(this).attr('data-image-index') > 0 ? $(this).attr('data-image-index') -1 : 0;
505                if(galleryId == galleryWrapper.attr('data-ig-uniqueid'))
506                {
507                    slideshow.show(imageIndex);
508                }
509            });
510
511            galleryWrapper.find('.ig-slideshow').find('iframe').each(function (index, el)
512            {
513                iguiUIkit.video(el, {automute: false,autoplay:false});
514            });
515
516            if(galleryWrapper.find('.ig-slideshow .ig-description-overlay').length && galleryWrapper.find('.ig-slideshow .ig-dotnav').length )
517            {
518                galleryWrapper.find('.ig-slideshow .ig-dotnav').css('margin-bottom','8px');
519                galleryWrapper.find('.ig-slideshow .ig-description-overlay').css('padding-bottom','28px');
520            }
521
522            galleryWrapper.find('.ig-slideshow-notlazy').parent().each(function (index, el)
523            {
524                $(el).imagesLoaded( function()
525                {
526                    $(el).find('.ig-description-overlay').css('visibility','visible');
527                });
528            });
529
530            galleryWrapper.find('.ig-slideshow-image').on('load', function()
531            {
532                $(this).parent().find('.ig-description-overlay').css('visibility','visible');
533            });
534
535            if(galleryWrapper.find('.ig-play-icon').length)
536            {
537                if(autoplay)
538                {
539                    galleryWrapper.find('.ig-pause-icon').css('display','inline-block');
540                    galleryWrapper.find('.ig-play-icon').css('display','none');
541                }
542
543                galleryWrapper.find('.ig-play-icon').on('click', function(event)
544                {
545                    slideshow.autoplay = true;
546                    slideshow.startAutoplay();
547                    galleryWrapper.find('.ig-play-icon').css('display','none');
548                    galleryWrapper.find('.ig-pause-icon').css('display','inline-block');
549                    galleryWrapper.data('lboxPlaying', true);
550                });
551
552                galleryWrapper.find('.ig-pause-icon').on('click', function(event)
553                {
554                    slideshow.stopAutoplay();
555                    slideshow.autoplay = false;
556                    galleryWrapper.find('.ig-pause-icon').css('display','none');
557                    galleryWrapper.find('.ig-play-icon').css('display','inline-block');
558                    galleryWrapper.data('lboxPlaying', false);
559                });
560
561                galleryWrapper.find('.ig-slideshow-button, .ig-slideshow-image').on('click', function(event)
562                {
563                    galleryWrapper.find('.ig-pause-icon').css('display','none');
564                    galleryWrapper.find('.ig-play-icon').css('display','inline-block');
565                });
566            }
567
568            galleryWrapper.find('.ig-slideshow').on('beforeitemshow', function ()
569            {
570                loadImageNow(slideshow.index);
571                addToPreload(slideshow.index + 1);
572                addToPreload(slideshow.index + 2);
573                addToPreload(slideshow.index + 3);
574                addToPreload(slideshow.index + 4);
575                addToPreload(slideshow.index - 1);
576                addToPreload(slideshow.index - 2);
577
578                setTimeout(checkImageHeight, 20);
579                setTimeout(checkImageHeight, 50);
580                setTimeout(checkImageHeight, 80);
581                setTimeout(checkImageHeight, 100)
582                setTimeout(checkImageHeight, 150);
583
584                iframeWidth();
585                setTimeout(iframeWidth, 100);
586                setTimeout(iframeWidth, 400);
587
588
589            });
590
591            if(galleryWrapper.find('.ig-gdpr-slideshow-submit').length)
592            {
593                var gdprAlready = localStorage.getItem('ig-gdpr') == '1' ? true : false;
594                if(gdprAlready)
595                {
596                    galleryWrapper.find('.ig-gdpr-slideshow').css('display','none');
597                    galleryWrapper.find('.ig-gdpr-preview').css('display','none');
598                }
599                else
600                {
601                    galleryWrapper.find('.ig-gdpr-slideshow-submit').each(function(index,el)
602                    {
603                        $(el).on('click', function(e)
604                        {
605                            localStorage.setItem('ig-gdpr','1');
606                            var elIndex = $(el).parent().attr('data-index');
607                            loadImageNow(slideshow.index);
608                            galleryWrapper.find('.ig-gdpr-slideshow').css('display','none');
609                            galleryWrapper.find('.ig-gdpr-preview').css('display','none');
610
611                            galleryWrapper.find('.ig-slideshow-item').each(function(index,el)
612                            {
613                                var iframeObj = $(el).find('iframe');
614
615                                if(iframeObj.length)
616                                {
617                                    var dataSrc = iframeObj.attr('data-ig-lazy-src');
618                                    if(typeof dataSrc !== 'undefined')
619                                    {
620                                        if (dataSrc.indexOf('youtu') !== -1 || dataSrc.indexOf('vimeo') !== -1)
621                                        {
622                                            addToPreload(index);
623                                        }
624                                    }
625
626                                }
627                            });
628                        });
629
630                    });
631                }
632            }
633
634            function iframeWidth()
635            {
636                var iframe = galleryWrapper.find('.ig-slideshow-item').eq(slideshow.index).find('iframe');
637                if(iframe.length == 0){return;}
638
639                var ssWidth = galleryWrapper.find('.ig-slideshow').width();
640                var ssHeight = galleryWrapper.find('.ig-slideshow').height();
641                var ssRatio = ssWidth/ssHeight;
642
643                var ifrWidth = $(iframe).width();
644                var ifrHeight = $(iframe).height();
645                var iframeRatio = ifrWidth/ifrHeight;
646
647                if(ifrWidth < 50 || ifrHeight < 50 || ssWidth < 50 || ssHeight < 50){return;}
648
649                if(iframeRatio >= ssRatio)
650                {
651                    var newWidth = ssWidth;
652                    var newHeight = Math.round( (newWidth/ifrWidth) * ifrHeight );
653                }
654                else
655                {
656                    var newHeight = ssHeight;
657                    var newWidth = Math.round( (newHeight/ifrHeight) * ifrWidth );
658                }
659
660                $(iframe).css('width',newWidth+'px');
661                $(iframe).css('height',newHeight+'px');
662            }
663
664            function checkImageHeight()
665            {
666                var wrapperHeight = galleryWrapper.find('.igui-slideshow-items').height();
667
668                if(wrapperHeight > 100)
669                {
670                    var currentImg = galleryWrapper.find('.ig-slideshow-item').eq(slideshow.index).find('.ig-slideshow-image');
671                    var imageHeight = currentImg.height();
672
673                    if(imageHeight > wrapperHeight)
674                    {
675                        galleryWrapper.find('.ig-slideshow-item.igui-active .ig-slideshow-item-inner-lboxon, .ig-slideshow-item.igui-active ig-slideshow-item-inner').css('height',wrapperHeight+'px');
676                    }
677
678                    if(wrapperHeight > (imageHeight + 10))
679                    {
680                        var naturalImgHeight = parseInt( currentImg.prop('naturalHeight') );
681                        if(naturalImgHeight > (wrapperHeight + 3))
682                        {
683                            galleryWrapper.find('.ig-slideshow-item.igui-active .ig-slideshow-item-inner-lboxon').css('height','auto');
684                        }
685                    }
686                }
687            }
688
689            setInterval(checkImageHeight, 300);
690        }
691
692        function addToPreload(index)
693        {
694            if(galleryWrapper.attr('data-ig-show-main-image') == 0 || galleryWrapper.find('.ig-slideshow').attr('data-ig-preload-main') == 0)
695            {
696                return;
697            }
698
699            var gdprConsent = parseInt(galleryWrapper.attr('data-ig-gdpr'));
700            var gdprAlready = localStorage.getItem('ig-gdpr') == '1' ? true : false;
701            var isGdprVid = false;
702            var iframeObj = galleryWrapper.find('.ig-slideshow-item').eq(index).find('iframe');
703
704            if(iframeObj.length)
705            {
706                var dataSrc = iframeObj.attr('data-ig-lazy-src');
707                if(typeof dataSrc !== 'undefined')
708                {
709                    if( dataSrc.indexOf('youtu') !== -1 || dataSrc.indexOf('vimeo') !== -1)
710                    {
711                        isGdprVid = true;
712                    }
713                }
714            }
715
716            if(gdprConsent == 1 && !gdprAlready && isGdprVid)
717            {
718                return;
719            }
720
721            if(index < galleryWrapper.find('.ig-slideshow-item').length && index >= 0)
722            {
723                if( imgsToPreload.indexOf(index) == -1 )
724                {
725                    imgsToPreload.push(index);
726                }
727            }
728        }
729
730        function preloadImage()
731        {
732            if(imgsToPreload.length)
733            {
734                index = imgsToPreload.shift();
735                imgObj = galleryWrapper.find('.ig-slideshow-item').eq(index).find('img.ig-slideshow-image');
736
737                if(imgObj.length)
738                {
739                    if(imgObj.data('preloaded') != 1)
740                    {
741                        var lazySrc = imgObj.attr('data-ig-lazy-src');
742                        if(typeof lazySrc === 'undefined'){lazySrc = imgObj.attr('data-ig-lazy-data-src');}
743                        if(typeof lazySrc !== 'undefined')
744                        {
745                            imgObj.attr('src',lazySrc);
746                            imgObj.data('preloaded',1);
747                        }
748                    }
749                }
750
751                iframeObj = galleryWrapper.find('.ig-slideshow-item').eq(index).find('iframe, video');
752                if(iframeObj.length)
753                {
754                    if(iframeObj.data('preloaded') != 1)
755                    {
756                        iframeObj.attr('src',iframeObj.attr('data-ig-lazy-src'));
757                        iframeObj.data('preloaded',1);
758                    }
759                }
760
761            }
762        }
763
764        function loadImageNow(index)
765        {
766            var imgObj = galleryWrapper.find('.ig-slideshow-item').eq(index).find('img.ig-slideshow-image');
767            if(imgObj.length)
768            {
769
770                if(imgObj.data('preloaded') != 1)
771                {
772                    var lazySrc = imgObj.attr('data-ig-lazy-src');
773                    if(typeof lazySrc !== 'undefined')
774                    {
775                        imgObj.attr('src',lazySrc);
776                        imgObj.data('preloaded',1);
777                    }
778                }
779            }
780
781            iframeObj = galleryWrapper.find('.ig-slideshow-item').eq(index).find('iframe, video');
782            if(iframeObj.length)
783            {
784                if(iframeObj.data('preloaded') != 1)
785                {
786                    var gdprConsent = parseInt(galleryWrapper.attr('data-ig-gdpr'));
787                    var gdprAlready = localStorage.getItem('ig-gdpr') == '1' ? true : false;
788                    var isGdprVid = false;
789                    var dataSrc = iframeObj.attr('data-ig-lazy-src');
790                    if(typeof dataSrc !== 'undefined')
791                    {
792                        if( dataSrc.indexOf('youtu') !== -1 || dataSrc.indexOf('vimeo') !== -1)
793                        {
794                            isGdprVid = true;
795                        }
796                    }
797
798                    if(gdprConsent == 1 && !gdprAlready && isGdprVid)
799                    {
800                        return;
801                    }
802
803                    var lazySrc = iframeObj.attr('data-ig-lazy-src');
804                    if(typeof lazySrc !== 'undefined')
805                    {
806                        iframeObj.attr('src',iframeObj.attr('data-ig-lazy-src'));
807                        iframeObj.data('preloaded',1);
808                    }
809
810                }
811            }
812        }
813
814        if(galleryWrapper.attr('data-ig-show-main-image') == 1)
815        {
816            setInterval(preloadImage ,750);
817        }
818
819        var lastItemshowIndex = -1;
820
821        galleryWrapper.find('.ig-slideshow').on('itemshow', function()
822        {
823            if(lastItemshowIndex == slideshow.index)
824            {
825                return;
826            }
827
828            loadImageNow(slideshow.index);
829
830            //swap descriptions
831            galleryWrapper.find('.ig-image-description').css('display','none');
832            galleryWrapper.find('.ig-image-description').eq(slideshow.index).css('display','block');
833
834            //swap active thumb
835            galleryWrapper.find('.ig-scroller-img-wrapper').removeClass('ig-active-thumb');
836            galleryWrapper.find('.ig-scroller-img-wrapper').eq(slideshow.index).addClass('ig-active-thumb');
837
838            //swap comments
839            if(galleryWrapper.find('.ig-comments').length)
840            {
841                var commentContent = galleryWrapper.find('.ig-slideshow-item').eq(slideshow.index).find('.ig-comments-content').html();
842                galleryWrapper.find('.ig-comments').find('.ig-comments-list').html(commentContent);
843                galleryWrapper.find('.ig-comment-count').html(galleryWrapper.find('.ig-slideshow-item').eq(slideshow.index).find('.ig-comments-content .ig-comment').length);
844
845                galleryWrapper.find('.ig-comments-textarea-wrapper').css('display','none');
846            }
847
848            //swap rating
849            if(galleryWrapper.find('.ig-rating').length)
850            {
851                var rating = galleryWrapper.find('.ig-slideshow-item').eq(slideshow.index).attr('data-ig-rating').toString();
852                var ratingWidth = rating.length < 2 ? 23 : 28;
853                var ratingWidth = rating.length > 2 ? 33 : ratingWidth;
854                galleryWrapper.find('.ig-rating').css('width',ratingWidth+'px');
855                galleryWrapper.find('.ig-rating-number').html(rating);
856            }
857
858
859            //add hit
860            if(galleryWrapper.attr('data-ig-collecthits') == 1)
861            {
862                if(galleryWrapper.data('hits-pause') == 0)
863                {
864                    var imageid = galleryWrapper.find('.ig-slideshow-item').eq(slideshow.index).attr('data-ig-imageid');
865                    var hitUrl = galleryWrapper.attr('data-ig-basehref') + '/index.php?option=com_igallery&task=imagefront.addHit&format=raw&id=' + imageid;
866                    $.ajax({url: hitUrl, success: function(result){}});
867
868                    galleryWrapper.data('hits-pause',1);
869                    setTimeout(function(){galleryWrapper.data('hits-pause',0)}, 500);
870                }
871            }
872
873            //swap hit
874            var hitCount = galleryWrapper.find('.ig-slideshow-item').eq(slideshow.index).attr('data-ig-hits');
875            galleryWrapper.find('.ig-hits-number').html(hitCount);
876
877            //swap image number
878            galleryWrapper.find('.ig-image-number').html(slideshow.index + 1);
879
880            //swap hash
881            if(galleryWrapper.attr('data-ig-showhash') == 'hash' && $(this).data('firstShown') == true && !lboxWrapper.hasClass('igui-open') && galleryWrapper.attr('data-ig-show-main-image') == 1)
882            {
883                imageUrl(slideshow.index,true);
884            }
885
886            $(this).data('firstShown', true);
887            lastItemshowIndex = slideshow.index;
888
889            //check thumb position
890            var currentThumb = galleryWrapper.find('.ig-scroller-img-wrapper').eq(slideshow.index);
891
892            if(galleryWrapper.find('.ig-thumb-scroller-horizontal').length)
893            {
894                var thumbPosition = currentThumb.position().left;
895                var containerWidth = galleryWrapper.find('.ig-thumb-scroller').width();
896
897                if(slideshow.index == 0)
898                {
899                    galleryWrapper.find('.ig-thumb-scroller-inner').scrollTo(0,400);
900                }
901                else if(thumbPosition > (containerWidth + galleryWrapper.find('.ig-thumb-scroller-inner').scrollLeft()))
902                {
903                    galleryWrapper.find('.ig-thumb-scroller-inner').scrollTo(currentThumb,400);
904                }
905                else if(thumbPosition < galleryWrapper.find('.ig-thumb-scroller-inner').scrollLeft() )
906                {
907                    var position = thumbPosition - (containerWidth - currentThumb.width());
908                    var position = position < 0 ? 0 : position;
909                    galleryWrapper.find('.ig-thumb-scroller-inner').scrollTo(position,400);
910                }
911
912            }
913            else if(galleryWrapper.find('.ig-thumb-scroller-vertical').length)
914            {
915                var thumbPosition = currentThumb.position().top;
916                var containerHeight = galleryWrapper.find('.ig-thumb-scroller').height();
917
918                if(slideshow.index == 0)
919                {
920                    galleryWrapper.find('.ig-thumb-scroller-inner').scrollTo(0,400);
921                }
922                else if(thumbPosition > (containerHeight + galleryWrapper.find('.ig-thumb-scroller-inner').scrollTop()))
923                {
924                    galleryWrapper.find('.ig-thumb-scroller-inner').scrollTo(currentThumb,400);
925                }
926                else if(thumbPosition < galleryWrapper.find('.ig-thumb-scroller-inner').scrollTop() )
927                {
928                    var position = thumbPosition - (containerHeight - currentThumb.height());
929                    var position = position < 0 ? 0 : position;
930
931                    galleryWrapper.find('.ig-thumb-scroller-inner').scrollTo(position,400);
932                }
933            }
934        });
935
936        galleryWrapper.find('.ig-slideshow-matchheight').matchHeightx({byRow: false,target: galleryWrapper.find('.igui-slideshow-items')});
937        setTimeout(function(){galleryWrapper.find('.ig-slideshow-matchheight').matchHeightx({byRow: false,target: galleryWrapper.find('.igui-slideshow-items')});}, 300);
938
939        //thumbnail scroller main
940        var thumbScrollerWrapper = galleryWrapper.find('.ig-thumb-scroller-main');
941        var vertical = thumbScrollerWrapper.hasClass('ig-thumb-scroller-vertical');
942        var hoverRightThumbArrow = false;
943        var hoverLeftThumbArrow = false;
944        var hoverDownThumbArrow = false;
945        var hoverUpThumbArrow = false;
946
947        galleryWrapper.find('.ig-thumb-scroller-down').on('click', function(e)
948        {
949            e.preventDefault();
950            e.stopPropagation();
951            thumbScrollerWrapper.find('.ig-thumb-scroller-inner').stop();
952            var pixels = thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTop() + 350;
953            thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTo(pixels, 500,{easing:'linear',onAfter: function()
954                {
955                    if(hoverDownThumbArrow)
956                    {
957                        thumbScrollerWrapper.find('.ig-thumb-scroller-down').trigger('mouseenter');
958                    }
959                }});
960        });
961
962        galleryWrapper.find('.ig-thumb-scroller-up').on('click', function(e)
963        {
964            e.preventDefault();
965            e.stopPropagation();�
965
966            thumbScrollerWrapper.find('.ig-thumb-scroller-inner').stop();
967            var pixels = thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTop() - 350;
968
969            thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTo(pixels, 500,{easing:'linear',onAfter: function()
970                {
971                    if(hoverUpThumbArrow)
972                    {
973                        thumbScrollerWrapper.find('.ig-thumb-scroller-up').trigger('mouseenter');
974                    }
975                }});
976        });
977
978        thumbScrollerWrapper.find('.ig-thumb-scroller-left').on('click', function(e)
979        {
980            e.preventDefault();
981            e.stopPropagation();
982            thumbScrollerWrapper.find('.ig-thumb-scroller-inner').stop();
983            var scrollPx = $(window).width() < 600 ? $(window).width()-50 : 600;
984            var pixels = thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollLeft() - scrollPx;
985
986            thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTo(pixels, 700,{easing:'linear',onAfter: function()
987                {
988                    if(hoverLeftThumbArrow)
989                    {
990                        thumbScrollerWrapper.find('.igui-slidenav-previous').trigger('mouseenter');
991                    }
992                }});
993        });
994
995        thumbScrollerWrapper.find('.ig-thumb-scroller-right').on('click', function(e)
996        {
997            e.preventDefault();
998            e.stopPropagation();
999            thumbScrollerWrapper.find('.ig-thumb-scroller-inner').stop();
1000            var scrollPx = $(window).width() < 600 ? $(window).width()-50 : 600;
1001            var pixels = thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollLeft() + scrollPx;
1002
1003            thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTo(pixels, 700,{easing:'linear',onAfter: function()
1004                {
1005                    if(hoverRightThumbArrow)
1006                    {
1007                        thumbScrollerWrapper.find('.igui-slidenav-next').trigger('mouseenter');
1008                    }
1009                }});
1010        });
1011
1012        setTimeout(function()
1013        {
1014            if(thumbScrollerWrapper.find('.ig-slider-items').height() < galleryWrapper.height() && vertical)
1015            {
1016                galleryWrapper.find('.ig-thumb-scroller-down').css('visibility','hidden');
1017                galleryWrapper.find('.ig-thumb-scroller-up').css('visibility','hidden');
1018            }
1019
1020            if(thumbScrollerWrapper.width() < galleryWrapper.width() && !vertical)
1021            {
1022                thumbScrollerWrapper.find('.igui-slidenav-previous').css('visibility','hidden');
1023                thumbScrollerWrapper.find('.igui-slidenav-next').css('visibility','hidden');
1024            }
1025
1026        }, 300);
1027
1028        if( getComputedStyle(document.documentElement).direction != 'rtl' && !isIOS && !isAndroid)
1029        {
1030
1031            //right arrow hover
1032            thumbScrollerWrapper.find('.ig-thumb-scroller-right').on('mouseenter', function()
1033            {
1034                hoverRightThumbArrow = true;
1035                var duration = (thumbScrollerWrapper.find('.ig-slider-items')[0].scrollWidth  - (thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollLeft() + thumbScrollerWrapper.width())) * 3;
1036                thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTo('max', duration, {easing: 'linear'});
1037            });
1038
1039            thumbScrollerWrapper.find('.ig-thumb-scroller-right').on('mouseleave', function()
1040            {
1041                thumbScrollerWrapper.find('.ig-thumb-scroller-inner').stop();
1042                hoverRightThumbArrow = false;
1043            });
1044
1045            //left arrow hover
1046            thumbScrollerWrapper.find('.ig-thumb-scroller-left').on('mouseenter', function()
1047            {
1048                hoverLeftThumbArrow = true;
1049                var duration = thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollLeft() * 3;
1050                thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTo(0, duration,{easing:'linear'});
1051            });
1052
1053            thumbScrollerWrapper.find('.ig-thumb-scroller-left').on('mouseleave', function()
1054            {
1055                thumbScrollerWrapper.find('.ig-thumb-scroller-inner').stop();
1056                hoverLeftThumbArrow = false;
1057            });
1058
1059            //down arrow hover
1060            thumbScrollerWrapper.find('.ig-thumb-scroller-down').on('mouseenter', function()
1061            {
1062                hoverDownThumbArrow = true;
1063                var duration = (thumbScrollerWrapper.find('.ig-slider-items')[0].scrollHeight  - (thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTop() + thumbScrollerWrapper.height())) * 3;
1064                thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTo('max', duration, {easing: 'linear'});
1065            });
1066
1067            thumbScrollerWrapper.find('.ig-thumb-scroller-down').on('mouseleave', function()
1068            {
1069                thumbScrollerWrapper.find('.ig-thumb-scroller-inner').stop();
1070                hoverDownThumbArrow = false;
1071            });
1072
1073            //up arrow hover
1074            thumbScrollerWrapper.find('.ig-thumb-scroller-up').on('mouseenter', function()
1075            {
1076                hoverUpThumbArrow = true;
1077                var duration = thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTop() * 3;
1078                thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTo(0, duration,{easing:'linear'});
1079            });
1080
1081            thumbScrollerWrapper.find('.ig-thumb-scroller-up').on('mouseleave', function()
1082            {
1083                thumbScrollerWrapper.find('.ig-thumb-scroller-inner').stop();
1084                hoverUpThumbArrow = false;
1085            });
1086        }
1087
1088        //overlay buttons
1089        galleryWrapper.find('.ig-slideshow-overlay').find('.ig-download-button').on('click', function(event)
1090        {
1091            var imageid = galleryWrapper.find('.ig-slideshow-item').eq(slideshow.index).attr('data-ig-imageid');
1092            window.location.href = galleryWrapper.attr('data-ig-basehref') + '/index.php?option=com_igallery&task=imagefront.download&format=raw&type=main&id=' + imageid;
1093        });
1094
1095        galleryWrapper.find('.ig-slideshow-overlay').find('.ig-facebook-share').on('click', function(event)
1096        {
1097            var urlToShare = 'http://www.facebook.com/sharer.php?u=' + encodeURIComponent( imageUrl(slideshow.index,false) );
1098            window.open(urlToShare, '_blank', 'height=450, width=550, top=' + ($(window).height() / 2 - 275) + ', left=' + ($(window).width() / 2 - 225) + ', toolbar=0, location=0, menubar=0, directories=0, scrollbars=0').focus();
1099        });
1100
1101        galleryWrapper.find('.ig-slideshow-overlay').find('.ig-twitter-share').on('click', function(event)
1102        {
1103            var urlToShare = 'http://twitter.com/share?url=' + encodeURIComponent( imageUrl(slideshow.index,false) );
1104            window.open(urlToShare, '_blank', 'height=450, width=550, top=' + ($(window).height() / 2 - 275) + ', left=' + ($(window).width() / 2 - 225) + ', toolbar=0, location=0, menubar=0, directories=0, scrollbars=0').focus();
1105
1106        });
1107
1108        galleryWrapper.find('.ig-slideshow-overlay').find('.ig-pinterest-share').on('click', function(event)
1109        {
1110            var imagePathLong = galleryWrapper.find('.ig-slideshow-image').eq(slideshow.index).attr('src');
1111            var imgPathShort = imagePathLong.slice(imagePathLong.indexOf('images/igallery'));
1112            var imgUrl = galleryWrapper.attr('data-ig-basehref-long') + imgPathShort;
1113
1114            var description  = galleryWrapper.find('.ig-image-description').eq(slideshow.index).text();
1115            description = description.length > 0 ? description : galleryWrapper.find('.ig-slideshow-image').eq(slideshow.index).attr('alt');
1116
1117            var href = 'https://pinterest.com/pin/create/button/?url=' + encodeURIComponent( imageUrl(slideshow.index,false) ) + '&media=' + encodeURIComponent(imgUrl) + '&description=' + description;
1118            window.open(href, '_blank', 'height=450, width=550, top=' + ($(window).height() / 2 - 275) + ', left=' + ($(window).width() / 2 - 225) + ', toolbar=0, location=0, menubar=0, directories=0, scrollbars=0').focus();
1119        });
1120
1121        galleryWrapper.find('.ig-slideshow-overlay').find('.ig-rating').on('click', function(event)
1122        {
1123            var imageid = galleryWrapper.find('.ig-slideshow-item').eq(slideshow.index).attr('data-ig-imageid');
1124            var ratingUrl = galleryWrapper.attr('data-ig-basehref') + '/index.php?option=com_igallery&task=imagefront.addRating&format=raw&rating=5&imageid=' + imageid;
1125
1126            $.ajax
1127            ({
1128                url: ratingUrl,
1129                error: function(response){console.log(response);},
1130                success: function(response)
1131                {
1132                    console.log(response);
1133                    responseObj = $.parseJSON(response);
1134
1135                    if(responseObj.success == 1)
1136                    {
1137                        var currentRating = galleryWrapper.find('.ig-slideshow-item').eq(slideshow.index).attr('data-ig-rating');
1138                        galleryWrapper.find('.ig-rating-number').html(parseInt(currentRating) + 1);
1139                        galleryWrapper.find('.ig-slideshow-item').eq(slideshow.index).attr('data-ig-rating',(parseInt(currentRating) + 1));
1140                    }
1141
1142                }
1143            });
1144        });
1145
1146        galleryWrapper.find('.ig-add-comment-text').click(function(event)
1147        {
1148            galleryWrapper.find('.ig-comments-textarea-wrapper').css('display','block');
1149            if(typeof slideshow != 'undefined')
1150            {
1151                slideshow.stopAutoplay();
1152                slideshow.autoplay = false;
1153                galleryWrapper.data('lboxPlaying', false);
1154                galleryWrapper.find('.ig-pause-icon').css('display','none');
1155                galleryWrapper.find('.ig-play-icon').css('display','inline-block');
1156            }
1157        });
1158
1159        if(typeof slideshow == 'undefined' && galleryWrapper.find('.ig-comments').length)
1160        {
1161            var slideshow = {index:0};
1162            var commentContent = galleryWrapper.find('.ig-slideshow-item').eq(slideshow.index).find('.ig-comments-content').html();
1163            galleryWrapper.find('.ig-comments').find('.ig-comments-list').html(commentContent);
1164            galleryWrapper.find('.ig-comment-count').html(galleryWrapper.find('.ig-slideshow-item').eq(slideshow.index).find('.ig-comments-content .ig-comment').length);
1165        }
1166
1167        galleryWrapper.find('.ig-comments-form').submit(function(event)
1168        {
1169            event.preventDefault();
1170            var imageid = galleryWrapper.find('.ig-slideshow-item').eq(slideshow.index).attr('data-ig-imageid');
1171            var commentUrl = galleryWrapper.attr('data-ig-basehref') + '/index.php?option=com_igallery&task=imagefront.addComment&format=raw&imageid=' + imageid;
1172            var postData = galleryWrapper.find('.ig-comments-form').serialize();
1173            var commentText = galleryWrapper.find('.igui-textarea').val();
1174
1175            if(galleryWrapper.find('.ig-comments-form').find('#dynamic_recaptcha_1').length)
1176            {
1177                //postData = postData +'&g-recaptcha-response='+grecaptcha.getResponse();
1178            }
1179
1180            $.ajax
1181            ({
1182                type: "POST",
1183                url: commentUrl,
1184                data: postData,
1185                error: function(response){console.log(response);},
1186                success: function(response)
1187                {
1188                    console.log(response);
1189                    responseObj = $.parseJSON(response);
1190
1191                    if(responseObj.success == 1)
1192                    {
1193                        var commentsContentWrapper = galleryWrapper.find('.ig-slideshow-item').eq(slideshow.index).find('.ig-comments-content');
1194                        var usersName = galleryWrapper.find('.ig-comments-text-summary').attr('data-ig-current-user-name');
1195                        commentsContentWrapper.append('<div class="ig-comment-data">'+usersName+'</div><div>'+commentText+'</div>');
1196                        galleryWrapper.find('.ig-comments-list').html(commentsContentWrapper.html());
1197                        galleryWrapper.find('.igui-textarea').val('');
1198                    }
1199
1200                }
1201            });
1202        });
1203
1204        //thumbs grid functions
1205        var thumbGridWrapper = galleryWrapper.find('.ig-thumbs-grid');
1206        var thumbGridType = thumbGridWrapper.attr('data-ig-grid-type');
1207        thumbGridWrapper.data('resizing',0);
1208
1209        if(thumbGridWrapper.length)
1210        {
1211            thumbGridWrapper.data('init',0);
1212
1213            function justifiedGrid()
1214            {
1215                var thumbSizes = [];
1216                var largestHeight = 0;
1217                var smallestHeight = 5000;
1218                var sumHeights = 0;
1219                var spacing = parseInt(galleryWrapper.find('.ig-thumbs-grid').attr('data-ig-thumb-spacing'));
1220
1221                galleryWrapper.find('.ig-thumbs-grid').find('.ig-thumbs-grid-image:visible').each(function(index,el)
1222                {
1223                    thumbSizes.push({width: $(el).attr('width'),height: $(el).attr('height')});
1224                    largestHeight = $(el).attr('height') > largestHeight ? $(el).attr('height') : largestHeight;
1225                    smallestHeight = $(el).attr('height') < smallestHeight ? $(el).attr('height') : smallestHeight;
1226                    sumHeights = sumHeights + parseInt($(el).attr('height'));
1227                });
1228
1229                var averageHeight = Math.round(sumHeights/(galleryWrapper.find('.ig-thumbs-grid-image').length));
1230                var targetHeight = $(window).width() > 1000 ? smallestHeight*0.8 : smallestHeight*0.6;
1231
1232                if(thumbGridWrapper.width() < 300)
1233                {
1234                    thumbGridWrapper.css('height','auto');
1235                    thumbGridWrapper.find('.ig-thumbs-grid-block').css({'width':'auto', 'height':'auto', 'top':'auto', 'left':'auto','position':'static'});
1236                    thumbRowsGrid();
1237                }
1238                else
1239                {
1240                    var justifiedData = require('justified-layout')(thumbSizes,
1241                        {
1242                            containerWidth:galleryWrapper.find('.ig-thumbs-grid').width(),
1243                            targetRowHeight:targetHeight,
1244                            boxSpacing:spacing,
1245                            targetRowHeightTolerance: 0.15
1246                        });
1247
1248                    $.each(justifiedData.boxes,function(index,box)
1249                    {
1250                        galleryWrapper.find('.ig-thumbs-grid-block:visible').eq(index).css({'width':box.width, 'height':box.height, 'top':box.top, 'left':box.left,'position':'absolute'});
1251                    });
1252
1253                    galleryWrapper.find('.ig-thumbs-grid').css('height',justifiedData.containerHeight+'px');
1254
1255                    if(thumbGridWrapper.data('init') == 0)
1256                    {
1257                        document.addEventListener('lazyloaded', function(e)
1258                        {
1259                            justifiedGrid();
1260                        });
1261                    }
1262                    thumbGridWrapper.data('init',1);
1263                }
1264            }
1265
1266
1267            if(thumbGridType == 'justified')
1268            {
1269                justifiedGrid();
1270                $(window).resize(function()
1271                {
1272                    justifiedGrid();
1273                });
1274            }
1275
1276            if(galleryWrapper.find('.ig-tags-button-wrapper').length && thumbGridType == 'justified')
1277            {
1278                $('.ig-tags-button').on('click', function(event)
1279                {
1280                    var filterValue = $(this).attr('data-filter');
1281                    thumbGridWrapper.find('.ig-thumbs-grid-block').css({'width':'auto', 'height':'auto', 'top':'auto', 'left':'auto','position':'static'});
1282                    thumbGridWrapper.find('.ig-thumbs-grid-block:not('+filterValue+')').css('display','none');
1283                    thumbGridWrapper.find(filterValue).css('display','block');
1284                    justifiedGrid();
1285
1286                    galleryWrapper.find('.ig-tags-button').removeClass('ig-tags-button-active');
1287                    $(this).addClass('ig-tags-button-active');
1288
1289                    var panelWrapper = $('#ig-lightbox-'+galleryWrapper.attr('data-ig-uniqueid'));
1290                    $(document).off('show shown beforeitemshow itemshown beforehide hidden', '#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid'));
1291                    panelWrapper.remove();
1292                    galleryWrapper.data('lightboxInit',0);
1293
1294                    panel = createPanel(filterValue);
1295                    galleryWrapper.data('tag-filter',filterValue);
1296
1297                    var panelWrapper = $('#ig-lightbox-'+galleryWrapper.attr('data-ig-uniqueid'));
1298                });
1299
1300                if(galleryWrapper.find('.ig-tags-button-wrapper').attr('data-show-all') == 0)
1301                {
1302                    setTimeout(function(){galleryWrapper.find('.ig-tags-button').eq(0).click();}, 200);
1303                }
1304            }
1305
1306            function masonryThumbsGrid()
1307            {
1308                var maxColumnWidth = parseInt(thumbGridWrapper.attr('data-ig-max-width'));
1309                var gridPadding = parseInt(thumbGridWrapper.attr('data-ig-thumb-spacing'));
1310                var containerWidth = parseInt(galleryWrapper.width());
1311
1312                var columns = Math.ceil(containerWidth/(maxColumnWidth + (gridPadding * 1.5)));
1313                var gutterTotalSpace = gridPadding * (columns -1);
1314                var columnsTotalSpace = containerWidth - (gutterTotalSpace);
1315                var oneColumnSpace = columnsTotalSpace/columns;
1316
1317                var lastContainerWidth = thumbGridWrapper.data('last-grid-width');
1318                if(typeof lastContainerWidth === 'undefined'){lastContainerWidth = 0}
1319
1320                if(containerWidth != lastContainerWidth)
1321                {
1322                    thumbGridWrapper.find('.ig-thumbs-grid-block').each(function(index,el)
1323                    {
1324                        $(el).css('width',oneColumnSpace+'px');
1325                        $(el).css('margin-bottom',gridPadding+'px');
1326
1327                        var imgWidth = $(el).find('img').attr('width');
1328                        var imgHeight = $(el).find('img').attr('height');
1329
1330                        var newHeight = Math.ceil(((oneColumnSpace/imgWidth) * imgHeight)) + 1;
1331                        if(newHeight > imgHeight)
1332                        {
1333                            newHeight = imgHeight;
1334                        }
1335
1336                        if($(el).find('.ig-thumb-text_below').length > 0)
1337                        {
1338                            newHeight = parseInt(newHeight) + parseInt($(el).find('.ig-thumb-text_below').outerHeight());
1339                        }
1340
1341                        $(el).css('height',newHeight+'px');
1342                    });
1343
1344                    thumbGridWrapper.isotopeIG({
1345                        layoutMode: 'masonry',
1346                        itemSelector: '.ig-thumbs-grid-block',
1347                        masonry: {
1348                            columnWidth: oneColumnSpace,
1349                            gutter: gridPadding,
1350                            resize: false,
1351                            fitWidth: true,
1352                            transitionDuration: 0
1353                        }
1354                    });
1355                }
1356
1357                thumbGridWrapper.data('last-grid-width',containerWidth);
1358
1359                if(thumbGridWrapper.data('init') == 0)
1360                {
1361                    document.addEventListener('lazyloaded', function(e)
1362                    {
1363                        thumbGridWrapper.isotopeIG('layout');
1364                    });
1365                }
1366                thumbGridWrapper.data('init',1);
1367
1368            }
1369
1370
1371            if(thumbGridType == 'by_columns')
1372            {
1373                masonryThumbsGrid();
1374                setTimeout(function(){masonryThumbsGrid();}, 250);
1375                setTimeout(function(){masonryThumbsGrid();}, 500);
1376                setTimeout(function(){masonryThumbsGrid();}, 700);
1377                setTimeout(function(){masonryThumbsGrid();}, 1000);
1378                setTimeout(function(){masonryThumbsGrid();}, 1600);
1379
1380                $(window).resize(function()
1381                {
1382                    if(thumbGridWrapper.data('resizing') == 0)
1383                    {
1384                        masonryThumbsGrid();
1385                        thumbGridWrapper.data('resizing',1);
1386                        setTimeout(function(){masonryThumbsGrid();}, 100);
1387                        setTimeout(function(){masonryThumbsGrid();}, 250);
1388                        setTimeout(function(){masonryThumbsGrid();}, 500);
1389                    }
1390
1391                    setTimeout(function(){thumbGridWrapper.data('resizing',0);}, 50);
1392
1393                });
1394            }
1395
1396            function metroThumbsGrid()
1397            {
1398                var maxColumnWidth = parseInt(thumbGridWrapper.attr('data-ig-max-width'));
1399                var gridPadding = parseInt(thumbGridWrapper.attr('data-ig-thumb-spacing'));
1400                var containerWidth = parseInt(galleryWrapper.width());
1401
1402                var columns = Math.ceil(containerWidth/(maxColumnWidth + (gridPadding * 1.5)));
1403                var gutterTotalSpace = gridPadding * (columns -1);
1404                var columnsTotalSpace = containerWidth - (gutterTotalSpace);
1405                var oneColumnSpace = columnsTotalSpace/columns;
1406                var twoColumnSpace = (oneColumnSpace*2) + gridPadding;
1407
1408                if(columns == 1)
1409                {
1410                    thumbRowsGrid();
1411                    return;
1412                }
1413
1414                var lastContainerWidth = thumbGridWrapper.data('last-grid-width');
1415                if(typeof lastContainerWidth === 'undefined'){lastContainerWidth = 0}
1416
1417                if(containerWidth != lastContainerWidth)
1418                {
1419                    thumbGridWrapper.find('.ig-thumbs-grid-block').each(function(index,el)
1420                    {
1421                        if( $(el).attr('data-widthdouble') == 1 )
1422                        {
1423                            $(el).css('width',twoColumnSpace+'px');
1424                        }
1425                        else
1426                        {
1427                            $(el).css('width',oneColumnSpace+'px');
1428                        }
1429
1430                        if( $(el).attr('data-heightdouble') == 1 )
1431                        {
1432                            $(el).css('height',twoColumnSpace+'px');
1433                        }
1434                        else
1435                        {
1436                            $(el).css('height',oneColumnSpace+'px');
1437                        }
1438
1439                    });
1440
1441                    thumbGridWrapper.isotopeIG({
1442                        layoutMode: 'packery',
1443                        itemSelector: '.ig-thumbs-grid-block',
1444                        packery: {
1445                            gutter: gridPadding,
1446                            resize: false,
1447                            rowHeight: oneColumnSpace
1448                        }
1449                    });
1450                }
1451
1452                thumbGridWrapper.data('last-grid-width',containerWidth);
1453
1454                if(thumbGridWrapper.data('init') == 0)
1455                {
1456                    document.addEventListener('lazyloaded', function(e)
1457                    {
1458                        thumbGridWrapper.isotopeIG('layout')
1459                    });
1460                }
1461                thumbGridWrapper.data('init',1);
1462            }
1463
1464            if(thumbGridType == 'metro')
1465            {
1466                metroThumbsGrid();
1467                setTimeout(function(){metroThumbsGrid();}, 200);
1468                setTimeout(function(){metroThumbsGrid();}, 500);
1469
1470                $(window).resize(function()
1471                {
1472                    if(thumbGridWrapper.data('resizing') == 0)
1473                    {
1474                        metroThumbsGrid();
1475                        setTimeout(function(){metroThumbsGrid();}, 100);
1476                        setTimeout(function(){metroThumbsGrid();}, 200);
1477                        setTimeout(function(){metroThumbsGrid();}, 500);
1478                        thumbGridWrapper.data('resizing',1);
1479                    }
1480
1481                    setTimeout(function(){thumbGridWrapper.data('resizing',0);}, 50);
1482                });
1483            }
1484
1485            function thumbRowsGrid()
1486            {
1487                var maxColumnWidth = parseInt(thumbGridWrapper.attr('data-ig-max-width'));
1488                var gridPadding = parseInt(thumbGridWrapper.attr('data-ig-thumb-spacing'));
1489                var containerWidth = parseInt(galleryWrapper.width());
1490
1491                var columns = Math.ceil(containerWidth/(maxColumnWidth + (gridPadding * 1.5)));
1492                var gutterTotalSpace = gridPadding * (columns -1);
1493                var columnsTotalSpace = containerWidth - (gutterTotalSpace);
1494                var oneColumnSpace = columnsTotalSpace/columns;
1495
1496                var lastContainerWidth = thumbGridWrapper.data('last-grid-width');
1497                if(typeof lastContainerWidth === 'undefined'){lastContainerWidth = 0}
1498
1499                if(containerWidth != lastContainerWidth)
1500                {
1501                    thumbGridWrapper.find('.ig-thumbs-grid-block').each(function(index,el)
1502                    {
1503                        $(el).css('width',oneColumnSpace+'px');
1504                        $(el).css('margin-bottom',gridPadding+'px');
1505
1506                        var imgWidth = $(el).find('img').attr('width');
1507                        var imgHeight = $(el).find('img').attr('height');
1508
1509                        var newHeight = Math.ceil(((oneColumnSpace/imgWidth) * imgHeight)) + 1;
1510                        if(newHeight > imgHeight)
1511                        {
1512                            newHeight = imgHeight;
1513                        }
1514
1515                        if($(el).find('.ig-thumb-text_below').length > 0)
1516                        {
1517                            newHeight = parseInt(newHeight) + parseInt($(el).find('.ig-thumb-text_below').outerHeight());
1518                        }
1519
1520                        $(el).css('height',newHeight+'px');
1521
1522                    });
1523
1524                    thumbGridWrapper.isotopeIG({
1525                        layoutMode: 'fitRows',
1526                        itemSelector: '.ig-thumbs-grid-block',
1527                        fitRows: {
1528                            gutter: (gridPadding-1),
1529                        }
1530                    });
1531                }
1532
1533                thumbGridWrapper.data('last-grid-width',containerWidth);
1534
1535                if(thumbGridWrapper.data('init') == 0)
1536                {
1537                    document.addEventListener('lazyloaded', function(e)
1538                    {
1539                        thumbGridWrapper.isotopeIG('layout')
1540                    });
1541                }
1542                thumbGridWrapper.data('init',1);
1543
1544            }
1545
1546            if(thumbGridType == 'by_rows')
1547            {
1548                thumbRowsGrid();
1549                setTimeout(function(){thumbRowsGrid();}, 200);
1550                setTimeout(function(){thumbRowsGrid();}, 500);
1551
1552                $(window).resize(function()
1553                {
1554                    if(thumbGridWrapper.data('resizing') == 0)
1555                    {
1556                        thumbRowsGrid();
1557                        setTimeout(function(){thumbRowsGrid();}, 100);
1558                        setTimeout(function(){thumbRowsGrid();}, 200);
1559                        setTimeout(function(){thumbRowsGrid();}, 500);
1560                        thumbGridWrapper.data('resizing',1);
1561                    }
1562
1563                    setTimeout(function(){thumbGridWrapper.data('resizing',0);}, 50);
1564
1565                });
1566            }
1567
1568            $('.ig-grid-img-link').each(function(index,el)
1569            {
1570                $(el).imagesLoaded( function()
1571                {
1572                    $(el).find('.ig-thumb-text').css('display','inline');
1573                });
1574            });
1575
1576            if(galleryWrapper.find('.ig-tags-button-wrapper').length && thumbGridType != 'justified')
1577            {
1578                galleryWrapper.find('.ig-tags-button').on('click', function(event)
1579                {
1580                    var filterValue = $(this).attr('data-filter');
1581                    thumbGridWrapper.isotopeIG({ filter: filterValue });
1582
1583                    galleryWrapper.find('.ig-tags-button').removeClass('ig-tags-button-active');
1584                    $(this).addClass('ig-tags-button-active');
1585
1586                    var panelWrapper = $('#ig-lightbox-'+galleryWrapper.attr('data-ig-uniqueid'));
1587                    $(document).off('show', '#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid'));
1588                    panelWrapper.remove();
1589                    galleryWrapper.data('lightboxInit',0);
1590
1591                    panel = createPanel(filterValue);
1592                    galleryWrapper.data('tag-filter',filterValue);
1593
1594                    var panelWrapper = $('#ig-lightbox-'+galleryWrapper.attr('data-ig-uniqueid'));
1595
1596                });
1597
1598                if(galleryWrapper.find('.ig-tags-button-wrapper').attr('data-show-all') == 0)
1599                {
1600                    setTimeout(function(){galleryWrapper.find('.ig-tags-button').eq(0).click();}, 200);
1601                }
1602            }
1603
1604            setTimeout(function(){thumbGridWrapper.css('visibility','visible');}, 600);
1605        }
1606
1607        //lightbox
1608        if( galleryWrapper.find('.igui-slideshow-items').attr('data-ig-lightbox') == 1 || galleryWrapper.attr('data-ig-lbox-view') == 1)
1609        {
1610            galleryWrapper.data('lightboxInit',0);
1611            var templateHtmlWrapper = galleryWrapper.find('#ig-lightbox-template-' + galleryWrapper.attr('data-ig-uniqueid'));
1612            var templateHtml = templateHtmlWrapper.html();
1613            galleryWrapper.data('templateHtml',templateHtml);
1614            templateHtmlWrapper.empty();
1615
1616            function createPanel(filterValue)
1617            {
1618                if(filterValue == '*')
1619                {
1620                    var thumbClassSelector = 'ig-scroller-img-wrapper';
1621                    var lboxImgClassSelector = 'ig-lightbox-link';
1622                }
1623                else
1624                {
1625                    var thumbClassSelector = filterValue.substr(1);
1626                    var lboxImgClassSelector = filterValue.substr(1);
1627                }
1628
1629                templateHtml = $(galleryWrapper.data('templateHtml'));
1630
1631
1632                if( templateHtml.find('.ig-slider-items').length)
1633                {
1634                    templateHtml.find('.ig-scroller-img-wrapper').each(function(index,el)
1635                    {
1636                        var tagsArray = $(el).attr('class').split(' ');
1637
1638                        if(tagsArray.indexOf(thumbClassSelector) != -1)
1639                        {
1640
1641                        }
1642                        else
1643                        {
1644                            $(el).remove();
1645                        }
1646                    });
1647                }
1648
1649                templateHtml = templateHtml.prop('outerHTML');
1650
1651                var items = [];
1652                panelIds = Array();
1653                var slideshowElms = Array();
1654                var slideshowIndxs = Array();
1655                var panelIndex = 0;
1656                var gdprIndexes = Array();
1657                var gdprCount = 0;
1658                galleryWrapper.find('.ig-lightbox-link').each(function(index,el)
1659                {
1660                    if($(el).hasClass(lboxImgClassSelector))
1661                    {
1662                        var gdprConsent = parseInt(galleryWrapper.attr('data-ig-gdpr'));
1663                        var gdprAlready = localStorage.getItem('ig-gdpr') == '1' ? true : false;
1664                        var gdprImgSrc = $(el).attr('data-gdpr-image');
1665                        if(gdprConsent == 1 && !gdprAlready && gdprImgSrc.length > 0)
1666                        {
1667                            var lboxImgSrc = gdprImgSrc;
1668                            gdprIndexes.push(gdprCount);
1669                        }
1670                        else
1671                        {
1672                            var lboxImgSrc = $(el).attr('href');
1673                        }
1674
1675                        var item =
1676                        {
1677                            source:lboxImgSrc,
1678                            caption:$(el).parent().find('.ig-lightbox-description-content').html(),
1679                            alt:$(el).parent().find('.ig-slideshow-image').attr('alt')
1680                        };
1681
1682                        items.push(item);
1683                        panelIds.push($(el).attr('data-ig-imageid'));
1684
1685                        slideshowElms[panelIndex] = galleryWrapper.find('.ig-slideshow-item').eq(index);
1686                        slideshowIndxs[panelIndex] = index;
1687                        panelIndex++;
1688                        gdprCount++;
1689                    }
1690
1691                });
1692
1693                galleryWrapper.data('gdpr-indexes',gdprIndexes);
1694
1695                var velocity = parseFloat( galleryWrapper.find('.igui-slideshow-items').attr('data-ig-lightbox-transition-duration') );
1696                velocity = velocity == 0 ? 200 : velocity;
1697
1698                var finite = galleryWrapper.find('.igui-slideshow-items').attr('data-ig-lightbox-infinite') == 1 ? false : true;
1699                var lboxAutoplay = galleryWrapper.attr('data-ig-lbox-autoplay') == 1 ? true : false;
1700
1701                panel = iguiUIkit.lightboxPanel(
1702                {
1703                    items: items,
1704                    delayControls: 6000,
1705                    template:templateHtml,
1706                    videoAutoplay: lboxAutoplay,
1707                    velocity: (800/velocity),
1708                    autoplayInterval: galleryWrapper.find('.igui-slideshow-items').attr('data-ig-lightbox-interval'),
1709                    autoplay: false,
1710                    preload: 2,
1711                    finite:finite,
1712                    animation: galleryWrapper.find('.igui-slideshow-items').attr('data-ig-lightbox-fade')
1713                });
1714
1715                var lboxWrapper = $('#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid') );
1716
1717
1718                $(document).off('shown', '#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid'));
1719                $(document).on('shown', '#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid'), function()
1720                {
1721                    $('.igui-lightbox li').on('click', function(event)
1722                    {
1723                        event.stopPropagation();
1724                    });
1725
1726                    var reCaptchaId = lboxWrapper.find('.ig-recaptcha').attr('id');
1727                    var reCaptchaSiteKey = lboxWrapper.find('.ig-recaptcha').attr('data-sitekey');
1728                    if(typeof reCaptchaSiteKey !== 'undefined' && galleryWrapper.data('lboxRecaptchaInit') == 0)
1729                    {
1730                        grecaptcha.render(reCaptchaId, {'sitekey' : reCaptchaSiteKey});
1731                        galleryWrapper.data('lboxRecaptchaInit',1);
1732                    }
1733                });
1734
1735                $(document).off('show', '#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid'));
1736                $(document).on('show', '#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid'), function()
1737                {
1738                    var openLboxFullscreen = galleryWrapper.find('.igui-slideshow-items').attr('data-ig-lightbox-fullscreen') == 'open-fullscreen' ? 1 : 0;
1739
1740                    if(openLboxFullscreen)
1741                    {
1742                        lboxWrapper.fullScreen(true);
1743                    }
1744
1745                    var thumbGridWrapper = galleryWrapper.find('.ig-thumbs-grid');
1746                    if(thumbGridWrapper.length)
1747                    {
1748                        thumbGridWrapper.css('width', thumbGridWrapper.width() + 'px');
1749                    }
1750
1751                    if(galleryWrapper.data('lightboxInit') == 0)
1752                    {
1753
1754                        lboxWrapper.find('.ig-close-modal').on('click', function(event)
1755                        {
1756                            window.parent.igCloseModal();
1757                        });
1758
1759                        lboxWrapper.find('.ig-fullscreen-on').on('click', function(event)
1760                        {
1761                            event.preventDefault();
1762                            event.stopPropagation();
1763                            lboxWrapper.fullScreen(true);
1764                            lboxWrapper.find('.ig-fullscreen-on').css('display','none');
1765                            lboxWrapper.find('.ig-fullscreen-off').css('display','inline-block');
1766                        });
1767
1768                        lboxWrapper.find('.ig-fullscreen-off').on('click', function(event)
1769                        {
1770                            event.preventDefault();
1771                            event.stopPropagation();
1772                            lboxWrapper.fullScreen(false);
1773                            lboxWrapper.find('.ig-fullscreen-off').css('display','none');
1774                            lboxWrapper.find('.ig-fullscreen-on').css('display','inline-block');
1775                        });
1776
1777                        $(document).bind('fullscreenchange', function()
1778                        {
1779                            if(!$(document).fullScreen())
1780                            {
1781                                lboxWrapper.find('.ig-fullscreen-off').css('display','none');
1782                                lboxWrapper.find('.ig-fullscreen-on').css('display','inline-block');
1783                            }
1784
1785                            if(openLboxFullscreen && !$(document).fullScreen() && lboxWrapper.data('add-lbox-comment') !== 1)
1786                            {
1787                                panel.hide();
1788                            }
1789
1790                            if(galleryWrapper.data('lboxPlaying') == true)
1791                            {
1792                                panel.stopAutoplay();
1793                                panel.startAutoplay();
1794                            }
1795                        });
1796
1797                        //init rating
1798                        lboxWrapper.find('.ig-rating').on('click', function(event)
1799                        {
1800                            event.stopPropagation();
1801                            var imageid = panelIds[panel.index];
1802                            var ratingUrl = galleryWrapper.attr('data-ig-basehref') + '/index.php?option=com_igallery&task=imagefront.addRating&format=raw&rating=5&imageid=' + imageid;
1803
1804                            $.ajax
1805                            ({
1806                                url: ratingUrl,
1807                                error: function(response){console.log(response);},
1808                                success: function(response)
1809                                {
1810                                    console.log(response);
1811                                    responseObj = $.parseJSON(response);
1812
1813                                    if(responseObj.success == 1)
1814                                    {
1815                                        var currentRating = galleryWrapper.find('.ig-slideshow-item').eq(panel.index).attr('data-ig-rating');
1816                                        lboxWrapper.find('.ig-rating-number').html(parseInt(currentRating) + 1);
1817                                        galleryWrapper.find('.ig-slideshow-item').eq(panel.index).attr('data-ig-rating',(parseInt(currentRating) + 1));
1818
1819                                    }
1820
1821                                }
1822                            });
1823                        });
1824
1825                        lboxWrapper.find('.ig-add-comment-text').click(function(event)
1826                        {
1827                            lboxWrapper.find('.ig-comments-textarea-wrapper').css('display','block');
1828                            if($(document).fullScreen() && lboxWrapper.find('.ig-comments-form').find('.ig-recaptcha').length)
1829                            {
1830                                lboxWrapper.data('add-lbox-comment',1);
1831                                $(document).fullScreen(false);
1832                                setTimeout(function(){lboxWrapper.data('add-lbox-comment',0);}, 1000);
1833                            }
1834                        });
1835
1836                        lboxWrapper.find('.ig-comments-form').submit(function(event)
1837                        {
1838                            event.preventDefault();
1839
1840                            var imageid = panelIds[panel.index]
1841                            var commentUrl = galleryWrapper.attr('data-ig-basehref') + '/index.php?option=com_igallery&task=imagefront.addComment&format=raw&imageid=' + imageid;
1842                            var postData = lboxWrapper.find('.ig-comments-form').serialize();
1843                            var commentText = lboxWrapper.find('.igui-textarea').val();
1844
1845                            if(lboxWrapper.find('.ig-comments-form').find('#dynamic_recaptcha_1').length)
1846                            {
1847                                //postData = postData +'&g-recaptcha-response='+grecaptcha.getResponse();
1848                            }
1849
1850                            $.ajax
1851                            ({
1852                                type: "POST",
1853                                url: commentUrl,
1854                                data: postData,
1855                                error: function(response){console.log(response);},
1856                                success: function(response)
1857                                {
1858                                    console.log(response);
1859                                    responseObj = $.parseJSON(response);
1860
1861                                    if(responseObj.success == 1)
1862                                    {
1863                                        galleryWrapper.find('.ig-comments-content').each(function(index,el)
1864                                        {
1865                                            if( $(this).attr('data-img-id') == panelIds[panel.index])
1866                                            {
1867                                                var commentsContentWrapper = $(this);
1868                                                var usersName = lboxWrapper.find('.ig-comments-text-summary').attr('data-ig-current-user-name');
1869                                                commentsContentWrapper.append('<div class="ig-comment-data">'+usersName+'</div><div>'+commentText+'</div>');
1870                                                lboxWrapper.find('.ig-comments-list').html(commentsContentWrapper.html());
1871                                                lboxWrapper.find('.igui-textarea').val('');
1872                                            }
1873                                        });
1874
1875                                    }
1876
1877                                }
1878                            });
1879
1880                            grecaptcha.reset();
1881                        });
1882
1883                        //init thumbnail scroller
1884                        var thumbScrollerWrapper = lboxWrapper.find('.ig-thumb-scroller-lbox');
1885                        var vertical = thumbScrollerWrapper.hasClass('ig-thumb-scroller-vertical');
1886
1887                        thumbScrollerWrapper.find('.ig-scroller-img-wrapper').each(function(index,el)
1888                        {
1889                            $(el).off('click');
1890                            $(el).on('click', function(e)
1891                            {
1892                                e.stopPropagation();
1893                                e.preventDefault();
1894                                panel.show(index);
1895                            });
1896                        });
1897
1898                        var hoverRightThumbArrow = false;
1899                        var hoverLeftThumbArrow = false;
1900                        var hoverDownThumbArrow = false;
1901                        var hoverUpThumbArrow = false;
1902
1903                        thumbScrollerWrapper.find('.ig-thumb-scroller-down').on('click', function(e)
1904                        {
1905                            e.preventDefault();
1906                            e.stopPropagation();
1907                            var pixels = thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTop() + 350;
1908                            thumbScrollerWrapper.find('.ig-thumb-scroller-inner').stop();
1909
1910                            thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTo(pixels, 500,{easing:'linear',onAfter: function()
1911                                {
1912                                    if(hoverDownThumbArrow)
1913                                    {
1914                                        thumbScrollerWrapper.find('.ig-thumb-scroller-down').trigger('mouseenter');
1915                                    }
1916                                }});
1917                        });
1918
1919                        thumbScrollerWrapper.find('.ig-thumb-scroller-up').on('click', function(e)
1920                        {
1921                            e.preventDefault();
1922                            e.stopPropagation();
1923                            thumbScrollerWrapper.find('.ig-thumb-scroller-inner').stop();
1924                            var pixels = thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTop() - 350;
1925
1926                            thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTo(pixels, 500,{easing:'linear',onAfter: function()
1927                                {
1928                                    if(hoverUpThumbArrow)
1929                                    {
1930                                        thumbScrollerWrapper.find('.ig-thumb-scroller-up').trigger('mouseenter');
1931                                    }
1932                                }});
1933                        });
1934
1935                        thumbScrollerWrapper.find('.ig-thumb-scroller-left').on('click', function(e)
1936                        {
1937                            e.preventDefault();
1938                            e.stopPropagation();
1939                            thumbScrollerWrapper.find('.ig-thumb-scroller-inner').stop();
1940                            var pixels = thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollLeft() - 700;
1941
1942                            thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTo(pixels, 700,{easing:'linear',onAfter: function()
1943                                {
1944                                    if(hoverLeftThumbArrow)
1945                                    {
1946                                        thumbScrollerWrapper.find('.ig-thumb-scroller-left').trigger('mouseenter');
1947                          
1947          }
1948                                }});
1949                        });
1950
1951                        thumbScrollerWrapper.find('.ig-thumb-scroller-right').on('click', function(e)
1952                        {
1953                            e.preventDefault();
1954                            e.stopPropagation();
1955                            thumbScrollerWrapper.find('.ig-thumb-scroller-inner').stop();
1956                            var pixels = thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollLeft() + 700;
1957
1958                            thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTo(pixels, 700,{easing:'linear',onAfter: function()
1959                                {
1960                                    if(hoverRightThumbArrow)
1961                                    {
1962                                        thumbScrollerWrapper.find('.ig-thumb-scroller-right').trigger('mouseenter');
1963                                    }
1964                                }});
1965                        });
1966
1967                        if( getComputedStyle(document.documentElement).direction != 'rtl' && !isIOS && !isAndroid)
1968                        {
1969
1970                            //right arrow hover
1971                            thumbScrollerWrapper.find('.ig-thumb-scroller-right').on('mouseenter', function()
1972                            {
1973                                hoverRightThumbArrow = true;
1974                                var duration = (thumbScrollerWrapper.find('.ig-slider-items')[0].scrollWidth  - (thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollLeft() + thumbScrollerWrapper.width())) * 3;
1975                                thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTo('max', duration, {easing: 'linear'});
1976                            });
1977
1978                            thumbScrollerWrapper.find('.ig-thumb-scroller-right').on('mouseleave', function()
1979                            {
1980                                thumbScrollerWrapper.find('.ig-thumb-scroller-inner').stop();
1981                                hoverRightThumbArrow = false;
1982                            });
1983
1984                            //left arrow hover
1985                            thumbScrollerWrapper.find('.ig-thumb-scroller-left').on('mouseenter', function()
1986                            {
1987                                hoverLeftThumbArrow = true;
1988                                var duration = thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollLeft() * 3;
1989                                thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTo(0, duration,{easing:'linear'});
1990                            });
1991
1992                            thumbScrollerWrapper.find('.ig-thumb-scroller-left').on('mouseleave', function()
1993                            {
1994                                thumbScrollerWrapper.find('.ig-thumb-scroller-inner').stop();
1995                                hoverLeftThumbArrow = false;
1996                            });
1997
1998                            //down arrow hover
1999                            thumbScrollerWrapper.find('.ig-thumb-scroller-down').on('mouseenter', function()
2000                            {
2001                                hoverDownThumbArrow = true;
2002                                var duration = (thumbScrollerWrapper.find('.ig-slider-items')[0].scrollHeight  - (thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTop() + thumbScrollerWrapper.height())) * 3;
2003                                thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTo('max', duration, {easing: 'linear'});
2004                            });
2005
2006                            thumbScrollerWrapper.find('.ig-thumb-scroller-down').on('mouseleave', function()
2007                            {
2008                                thumbScrollerWrapper.find('.ig-thumb-scroller-inner').stop();
2009                                hoverDownThumbArrow = false;
2010                            });
2011
2012                            //up arrow hover
2013                            thumbScrollerWrapper.find('.ig-thumb-scroller-up').on('mouseenter', function()
2014                            {
2015                                hoverUpThumbArrow = true;
2016                                var duration = thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTop() * 3;
2017                                thumbScrollerWrapper.find('.ig-thumb-scroller-inner').scrollTo(0, duration,{easing:'linear'});
2018                            });
2019
2020                            thumbScrollerWrapper.find('.ig-thumb-scroller-up').on('mouseleave', function()
2021                            {
2022                                thumbScrollerWrapper.find('.ig-thumb-scroller-inner').stop();
2023                                hoverUpThumbArrow = false;
2024                            });
2025                        }
2026
2027                        setTimeout(function()
2028                        {
2029                            var innerWrapper = thumbScrollerWrapper.find('.ig-thumb-scroller-inner');
2030
2031                            if(thumbScrollerWrapper.find('.ig-slider-items').height() < $(window).height() && vertical)
2032                            {
2033                                thumbScrollerWrapper.find('.ig-thumb-scroller-down').css('visibility','hidden');
2034                                thumbScrollerWrapper.find('.ig-thumb-scroller-up').css('visibility','hidden');
2035                            }
2036
2037
2038                            if(innerWrapper.prop('scrollWidth') <= innerWrapper.width() && !vertical)
2039                            {
2040                                thumbScrollerWrapper.find('.igui-slidenav-previous').css('visibility','hidden');
2041                                thumbScrollerWrapper.find('.igui-slidenav-next').css('visibility','hidden');
2042                            }
2043
2044                        }, 200);
2045
2046                        //lightbox zoom
2047                        lboxWrapper.find('.ig-zoomin-button').on('click', function(event)
2048                        {
2049                            alignZoomWrapper(lboxWrapper);
2050                            lboxWrapper.find('.ig-zoomout-button').css('display','inline-block');
2051                        });
2052
2053                        lboxWrapper.find('.ig-zoomout-button').on('click', function(event)
2054                        {
2055                            removeZoom(lboxWrapper);
2056                        });
2057
2058                        $(window).resize(function()
2059                        {
2060                            removeZoom(lboxWrapper);
2061                        });
2062
2063                        galleryWrapper.data('lightboxInit',1);
2064                    }
2065
2066                    lboxWrapper.find('.ig-thumb-scroller-inner').scrollTo(lboxWra
2066pper.find('.ig-scroller-img-wrapper').eq(panel.index));
2067
2068
2069                    if(lboxWrapper.find('.ig-lbox-play-icon').length)
2070                    {
2071                        lboxWrapper.find('.ig-lbox-play-icon').css('display','inline-block');
2072                        lboxWrapper.find('.ig-lbox-pause-icon').css('display','none');
2073
2074                        lboxWrapper.find('.ig-lbox-play-icon').on('click', function(event)
2075                        {
2076                            panel.autoplay = true;
2077                            panel.startAutoplay();
2078                            lboxWrapper.find('.ig-lbox-play-icon').css('display','none');
2079                            lboxWrapper.find('.ig-lbox-pause-icon').css('display','inline-block');
2080                            galleryWrapper.data('lboxPlaying', true);
2081                        });
2082
2083                        lboxWrapper.find('.ig-lbox-pause-icon').on('click', function(event)
2084                        {
2085                            panel.stopAutoplay();
2086                            panel.autoplay = false;
2087                            lboxWrapper.find('.ig-lbox-pause-icon').css('display','none');
2088                            lboxWrapper.find('.ig-lbox-play-icon').css('display','inline-block');
2089                            galleryWrapper.data('lboxPlaying', false);
2090                        });
2091
2092                        lboxWrapper.find('.ig-lightbox-button, .igui-lightbox-items li').on('click', function(event)
2093                        {
2094                            lboxWrapper.find('.ig-lbox-pause-icon').css('display','none');
2095                            lboxWrapper.find('.ig-lbox-play-icon').css('display','inline-block');
2096                        });
2097                    }
2098
2099                    if(lboxWrapper.find('.ig-image-total').length)
2100                    {
2101                        lboxWrapper.find('.ig-image-total').html(items.length);
2102                    }
2103
2104                    //add lbox mousewheel
2105                    var thumbVertical = lboxWrapper.find('.ig-thumb-scroller-lbox').hasClass('ig-thumb-scroller-vertical');
2106                    if(galleryWrapper.attr('data-ig-ismac')==0 && thumbVertical==false)
2107                    {
2108                        lboxWrapper.data('mousewheel',0);
2109                        lboxWrapper.on('wheel', function(event)
2110                        {
2111                            if(event.originalEvent.deltaY !== 0 && lboxWrapper.data('mousewheel') == 0)
2112                            {
2113                                if(event.originalEvent.deltaY < 0)
2114                                {
2115                                    panel.show(panel.index+1);
2116                                }
2117                                else
2118                                {
2119                                    panel.show(panel.index-1);
2120                                }
2121                                lboxWrapper.data('mousewheel',1);
2122                                setTimeout(function(){lboxWrapper.data('mousewheel',0);}, 800);
2123                            }
2124                        });
2125                    }
2126
2127                });
2128
2129                $(document).off('beforeitemshow', '#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid'));
2130                $(document).on('beforeitemshow', '#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid'), function()
2131                {
2132                    var lboxWrapper = $('#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid') );
2133
2134                    //swap rating
2135                    if(lboxWrapper.find('.ig-rating').length)
2136                    {
2137                        var rating = slideshowElms[panel.index].attr('data-ig-rating').toString();
2138                        var ratingWidth = rating.length < 2 ? 24 : 29;
2139                        var ratingWidth = rating.length > 2 ? 34 : ratingWidth;
2140                        lboxWrapper.find('.ig-rating').css('width',ratingWidth+'px');
2141                        lboxWrapper.find('.ig-rating-number').html(rating);
2142                    }
2143
2144                    if(lboxWrapper.find('.ig-zoomin-button').length)
2145                    {
2146                        removeZoom(lboxWrapper);
2147                    }
2148
2149                    //swap hit
2150                    var hitCount = slideshowElms[panel.index].attr('data-ig-hits');
2151                    lboxWrapper.find('.ig-hits-number').html(hitCount);
2152
2153                    //swap image number
2154                    lboxWrapper.find('.ig-image-number').html(panel.index + 1);
2155
2156                    //swap hash
2157                    if(galleryWrapper.attr('data-ig-showhash') == 'hash')
2158                    {
2159                        imageUrl(slideshowIndxs[panel.index],true);
2160                    }
2161
2162                    //position bottom wrapper
2163                    var bottomWrapper = lboxWrapper.find('.ig-lightbox-bottom-wrapper');
2164                    var leftWrapper = lboxWrapper.find('.ig-lightbox-left-wrapper');
2165                    var rightWrapper = lboxWrapper.find('.ig-lightbox-right-wrapper');
2166                    var desOverlayWrapper = lboxWrapper.find('.ig-lightbox-descriptions-overlay');
2167
2168                    if(bottomWrapper.length)
2169                    {
2170                        var bottomHeight = bottomWrapper.height() + 10;
2171
2172                        if(leftWrapper.length)
2173                        {
2174                            if(leftWrapper.find('.ig-thumb-scroller').length > 0)
2175                            {
2176                                bottomWrapper.css('margin-left',leftWrapper.width()+'px');
2177                            }
2178                        }
2179
2180                        if(desOverlayWrapper.length > 0)
2181                        {
2182                            desOverlayWrapper.css('margin-bottom',bottomHeight+'px');
2183                        }
2184
2185                        if(rightWrapper.length)
2186                        {
2187                            if(rightWrapper.find('.ig-thumb-scroller').length > 0)
2188                            {
2189                                bottomWrapper.css('margin-right',rightWrapper.width()+'px');
2190                            }
2191                        }
2192
2193                        lboxWrapper.find('.igui-lightbox-items').find('li').css('bottom',bottomHeight+'px');
2194
2195                        var imageHeight = ( ( $(window).height() - bottomHeight ) / $(window).height() ) * 100;
2196                        lboxWrapper.find('.igui-lightbox-items').find('li').css('max-height',imageHeight+'vh');
2197                    }
2198
2199                    //position left wrapper
2200                    if(leftWrapper.length)
2201                    {
2202                        if(bottomWrapper.find('.ig-thumb-scroller').length)
2203                        {
2204                            var wrapperHeight = (typeof bottomHeight) !== 'undefined' ? $(window).height() - (bottomHeight + 10) : $(window).height();
2205                            leftWrapper.css('height',wrapperHeight+'px');
2206                        }
2207                        else
2208                        {
2209                            var wrapperHeight = $(window).height();
2210                            leftWrapper.css('height',wrapperHeight+'px');
2211                        }
2212
2213                        var leftWidth = leftWrapper.width();
2214
2215                        if(desOverlayWrapper.length > 0)
2216                        {
2217                            desOverlayWrapper.css('margin-left',leftWidth+'px');
2218                        }
2219
2220                        lboxWrapper.find('.igui-lightbox-items').find('li').css('left',leftWidth+'px');
2221
2222                        var imageWidth = ( ( $(window).width() - leftWidth ) / $(window).width() ) * 100;
2223                        lboxWrapper.find('.igui-lightbox-items').find('li').css('max-width',imageWidth+'vw');
2224
2225                        lboxWrapper.children('.ig-lightbox-button-left').css('left',leftWidth+'px');
2226
2227                    }
2228
2229                    //position right wrapper
2230                    if(rightWrapper.length)
2231                    {
2232                        if(bottomWrapper.find('.ig-thumb-scroller').length)
2233                        {
2234                            var wrapperHeight = typeof bottomHeight !== 'undefined' ? $(window).height() - (bottomHeight + 10) - 48 : ($(window).height() - 48);
2235                            rightWrapper.css('height',wrapperHeight+'px');
2236                        }
2237                        else
2238                        {
2239                            var wrapperHeight = ($(window).height() - 48);
2240                            rightWrapper.css('height',wrapperHeight+'px');
2241                        }
2242
2243
2244                        if(rightWrapper.find('.ig-thumb-scroller').length)
2245                        {
2246                            lboxWrapper.find('.ig-thumb-scroller, .ig-thumb-scroller-vert-inner, .ig-thumb-scroller-inner').css('height',wrapperHeight+'px');
2247                        }
2248
2249                        var rightWidth = rightWrapper.width();
2250
2251                        if(desOverlayWrapper.length > 0)
2252                        {
2253                            desOverlayWrapper.css('margin-right',rightWidth+'px');
2254                        }
2255
2256                        lboxWrapper.find('.igui-lightbox-items').find('li').css('right',rightWidth+'px');
2257
2258                        var imageWidth = ( ( $(window).width() - rightWidth ) / $(window).width() ) * 100;
2259                        lboxWrapper.find('.igui-lightbox-items').find('li').css('max-width',rightWidth+'vw');
2260
2261                        lboxWrapper.find('.ig-lightbox-button-right').css('right',rightWidth+'px');
2262                    }
2263
2264                    //swap comments
2265                    if(lboxWrapper.find('.ig-comments').length)
2266                    {
2267                        galleryWrapper.find('.ig-comments-content').each(function(index,el)
2268                        {
2269                            if( $(this).attr('data-img-id') == panelIds[panel.index])
2270                            {
2271                                var commentContent = $(this).html();
2272                                lboxWrapper.find('.ig-comments-list').html(commentContent);
2273
2274                                var commentCount = $(this).find('.ig-comment').length;
2275                                lboxWrapper.find('.ig-comment-count').html(commentCount);
2276
2277                                lboxWrapper.find('.ig-comments-textarea-wrapper').css('display','none');
2278                            }
2279                        });
2280                    }
2281
2282                    //check thumb position
2283                    var currentThumb = lboxWrapper.find('.ig-scroller-img-wrapper').eq(panel.index);
2284
2285                    if(lboxWrapper.find('.ig-thumb-scroller-horizontal').length)
2286                    {
2287                        var thumbPosition = currentThumb.position().left;
2288                        var containerWidth = lboxWrapper.find('.ig-thumb-scroller').width();
2289
2290                        if(panel.index == 0)
2291                        {
2292                            lboxWrapper.find('.ig-thumb-scroller-inner').scrollTo(0,400);
2293                        }
2294                        else if(thumbPosition > (containerWidth + lboxWrapper.find('.ig-thumb-scroller-inner').scrollLeft()))
2295                        {
2296                            lboxWrapper.find('.ig-thumb-scroller-inner').scrollTo(currentThumb,400);
2297                        }
2298                        else if(thumbPosition < lboxWrapper.find('.ig-thumb-scroller-inner').scrollLeft() )
2299                        {
2300                            var position = thumbPosition - (containerWidth - currentThumb.width());
2301                            var position = position < 0 ? 0 : position;
2302                            lboxWrapper.find('.ig-thumb-scroller-inner').scrollTo(position,400);
2303                        }
2304
2305                    }
2306                    else if(lboxWrapper.find('.ig-thumb-scroller-vertical').length)
2307                    {
2308                        var thumbPosition = currentThumb.position().top;
2309                        var containerHeight = lboxWrapper.find('.ig-thumb-scroller').height();
2310
2311                        if(panel.index == 0)
2312                        {
2313                            lboxWrapper.find('.ig-thumb-scroller-inner').scrollTo(0,400);
2314                        }
2315                        else if(thumbPosition > (containerHeight + lboxWrapper.find('.ig-thumb-scroller-inner').scrollTop()))
2316                        {
2317                            lboxWrapper.find('.ig-thumb-scroller-inner').scrollTo(currentThumb,400);
2318                        }
2319                        else if(thumbPosition < lboxWrapper.find('.ig-thumb-scroller-inner').scrollTop() )
2320                        {
2321                            var position = thumbPosition - (containerHeight - currentThumb.height());
2322                            var position = position < 0 ? 0 : position;
2323                            lboxWrapper.find('.ig-thumb-scroller-inner').scrollTo(position,400);
2324                        }
2325                    }
2326
2327                    lboxWrapper.find('.igui-lightbox-items').find('li').css('visibility','visible');
2328                });
2329
2330
2331                $(document).off('itemshown', '#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid'));
2332                $(document).on('itemshown', '#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid'), function()
2333                {
2334                    var lboxWrapper = $('#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid') );
2335                    lboxWrapper.off('click');
2336
2337                    //gdpr
2338                    var gdprConsent = parseInt(galleryWrapper.attr('data-ig-gdpr'));
2339                    var gdprAlready = localStorage.getItem('ig-gdpr') == '1' ? true : false;
2340
2341                    if(gdprConsent == 1 && !gdprAlready)
2342                    {
2343                        insertGDPRLbox();
2344                        setTimeout(function(){insertGDPRLbox();}, 500);
2345                        setTimeout(function(){insertGDPRLbox();}, 1000);
2346                        setTimeout(function(){insertGDPRLbox();}, 1500);
2347                        setTimeout(function(){insertGDPRLbox();}, 2000);
2348                    }
2349
2350                    function insertGDPRLbox()
2351                    {
2352                        var currentLI = lboxWrapper.find('.igui-lightbox-items').find('li').eq(panel.index);
2353                        if(currentLI.find('.ig-gdpr-lbox').length == 0 && currentLI.find('img').length > 0)
2354                        {
2355                            if($.inArray(panel.index, galleryWrapper.data('gdpr-indexes')) !== -1)
2356                            {
2357                                currentLI.append(
2358                                    '<div class="ig-gdpr-lbox">'
2359                                    + '<div class="ig-gdpr-lbox-inner igui-position-center"><div class="ig-gdpr-lbox-message">' + galleryWrapper.find('#ig-gdpr-message').html() + '</div>'
2360                                    + '<button type="submit" class="ig-gdpr-lbox-submit">'+galleryWrapper.find('#ig-gdpr-button-text').html()+'</button><br />'
2361                                    + '<div class="ig-preview-play-icon-gdpr" data-igui-icon="icon:play; ratio:2"></div>'
2362                                    + '</div></div>');
2363                            }
2364
2365                            currentLI.find('.ig-gdpr-lbox-submit').off('click');
2366                            currentLI.find('.ig-gdpr-lbox-submit').on('click', function (e)
2367                            {
2368                                localStorage.setItem('ig-gdpr', '1');
2369                                galleryWrapper.data('ig-keep-fullscreen',1);
2370                                var lastPanelIndex = panel.index;
2371                                panel.hide();
2372
2373                                var panelWrapper = $('#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid'));
2374                                $(document).off('show', '#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid'));
2375                                panelWrapper.remove();
2376                                galleryWrapper.data('lightboxInit', 0);
2377
2378                                var panelFilter = typeof galleryWrapper.data('tag-filter') !== 'undefined' ? galleryWrapper.data('tag-filter') : '*';
2379                                panel = createPanel(panelFilter);
2380                                setTimeout(function(){panel.show(lastPanelIndex);}, 100);
2381                                setTimeout(function(){galleryWrapper.data('ig-keep-fullscreen',0);},1500);
2382
2383                            });
2384                        }
2385                    }
2386
2387                    lboxWrapper.find('.ig-download-button').off('click');
2388                    lboxWrapper.find('.ig-download-button').on('click', function(event)
2389                    {
2390                        event.stopPropagation();
2391                        var imageid = panelIds[panel.index];
2392                        window.location.href = galleryWrapper.attr('data-ig-basehref') + '/index.php?option=com_igallery&task=imagefront.download&format=raw&type=lbox&id=' 
2392+ imageid;
2393                    });
2394
2395                    lboxWrapper.find('.ig-facebook-share').off('click');
2396                    lboxWrapper.find('.ig-facebook-share').on('click', function(event)
2397                    {
2398                        event.stopPropagation();
2399                        var urlToShare = 'http://www.facebook.com/sharer.php?u=' + encodeURIComponent(  imageUrl(slideshowIndxs[panel.index],false) );
2400                        window.open(urlToShare, '_blank', 'height=450, width=550, top=' + ($(window).height() / 2 - 275) + ', left=' + ($(window).width() / 2 - 225) + ', toolbar=0, location=0, menubar=0, directories=0, scrollbars=0').focus();
2401                    });
2402
2403                    lboxWrapper.find('.ig-twitter-share').off('click');
2404                    lboxWrapper.find('.ig-twitter-share').on('click', function(event)
2405                    {
2406                        event.stopPropagation();
2407                        var urlToShare = 'http://twitter.com/share?url=' + encodeURIComponent( imageUrl(slideshowIndxs[panel.index],false) );
2408                        window.open(urlToShare, '_blank', 'height=450, width=550, top=' + ($(window).height() / 2 - 275) + ', left=' + ($(window).width() / 2 - 225) + ', toolbar=0, location=0, menubar=0, directories=0, scrollbars=0').focus();
2409
2410                    });
2411
2412                    lboxWrapper.find('.ig-pinterest-share').off('click');
2413                    lboxWrapper.find('.ig-pinterest-share').on('click', function(event)
2414                    {
2415                        event.stopPropagation();
2416
2417                        var imagePathLong = lboxWrapper.find('.igui-lightbox-items li').eq(panel.index).find('img').attr('src');
2418                        var imgPathShort = imagePathLong.slice(imagePathLong.indexOf('images/igallery'));
2419                        var imgUrl = galleryWrapper.attr('data-ig-basehref-long') + imgPathShort;
2420                        var description  = galleryWrapper.find('.ig-image-description').eq(slideshowIndxs[panel.index]).text();
2421                        description = description.length > 0 ? description : galleryWrapper.find('.ig-slideshow-image').eq(slideshowIndxs[panel.index]).attr('alt');
2422
2423                        var href = 'https://pinterest.com/pin/create/button/?url=' + encodeURIComponent( imageUrl(slideshowIndxs[panel.index],false) ) + '&media=' + encodeURIComponent(imgUrl) + '&description=' + description;
2424                        window.open(href, '_blank', 'height=450, width=550, top=' + ($(window).height() / 2 - 275) + ', left=' + ($(window).width() / 2 - 225) + ', toolbar=0, location=0, menubar=0, directories=0, scrollbars=0').focus();
2425                    });
2426
2427                    //swap active thumb
2428                    lboxWrapper.find('.ig-scroller-img-wrapper').removeClass('ig-active-thumb');
2429                    lboxWrapper.find('.ig-scroller-img-wrapper').eq(panel.index).addClass('ig-active-thumb');
2430
2431
2432                    //add hit
2433                    if(galleryWrapper.attr('data-ig-collecthits') == 1)
2434                    {
2435                        var imageid = panelIds[panel.index];
2436                        var hitUrl = galleryWrapper.attr('data-ig-basehref') + '/index.php?option=com_igallery&task=imagefront.addHit&format=raw&id=' + imageid;
2437                        $.ajax({url: hitUrl, success: function(result){}});
2438                    }
2439
2440                    //disable right click
2441                    if(galleryWrapper.attr('data-ig-disable-rightclick') == 1)
2442                    {
2443                        lboxWrapper.find('.igui-lightbox-items').find('li').eq(panel.index).off('contextmenu');
2444                        lboxWrapper.find('.igui-lightbox-items').find('li').eq(panel.index).on('contextmenu',function(){
2445                            alert(galleryWrapper.attr('data-ig-rightclick-msg'));
2446                            return false;
2447                        });
2448                    }
2449
2450                    if(lboxWrapper.find('.igui-lightbox-items').find('iframe').length)
2451                    {
2452                        lboxWrapper.find('.igui-lightbox-button').removeClass('igui-transition-fade');
2453                    }
2454                });
2455
2456                $(document).off('beforehide', '#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid'));
2457                $(document).on('beforehide', '#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid'), function()
2458                {
2459                    if(galleryWrapper.attr('data-ig-show-main-image') == 1)
2460                    {
2461                        slideshow.show(slideshowIndxs[panel.index]);
2462                    }
2463
2464                    if($(document).fullScreen() && galleryWrapper.data('ig-keep-fullscreen') !== 1)
2465                    {
2466                        $(document).fullScreen(false);
2467                    }
2468
2469                    var lboxWrapper = $('#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid') );
2470                    var thumbPosition = lboxWrapper.find('.ig-thumb-scroller').attr('data-ig-lbox-thumbs-position');
2471                    if(thumbPosition == 'below')
2472                    {
2473                        //galleryWrapper.data('lboxThumbScroller', lboxWrapper.find('.ig-thumb-scroller').detach() );
2474                    }
2475
2476                });
2477
2478                $(document).off('hidden', '#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid'));
2479                $(document).on('hidden', '#ig-lightbox-' + galleryWrapper.attr('data-ig-uniqueid'), function()
2480                {
2481                    var thumbGridWrapper = galleryWrapper.find('.ig-thumbs-grid');
2482                    if(thumbGridWrapper.length)
2483                    {
2484                        thumbGridWrapper.css('width', '100%');
2485                    }
2486
2487                    panel.stopAutoplay();
2488                    panel.autoplay = false;
2489
2490                    if(galleryWrapper.attr('data-ig-show-main-image') == 0)
2491                    {
2492                        var currentUrlParam = getUrlParamater('i');
2493                        if(currentUrlParam != 'unset')
2494                        {
2495                            var url = window.location.href;
2496                            if(url.indexOf('?i='+currentUrlParam) !== -1)
2497                            {
2498                                newUrl = url.replace('?i='+currentUrlParam,'');
2499                            }
2500                            else if(url.indexOf('&i='+currentUrlParam) !== -1)
2501                            {
2502                                newUrl = url.replace('&i='+currentUrlParam,'');
2503                            }
2504
2505                            history.replaceState({imgId:0}, document.title, newUrl);
2506                        }
2507                    }
2508
2509                    if( typeof(window.parent.igCloseModal) == 'function')
2510                    {
2511                        window.parent.igCloseModal();
2512                    }
2513
2514                    lboxWrapper.off('wheel');
2515                });
2516
2517                galleryWrapper.find('.ig-grid-img-link').each(function(index,el)
2518                {
2519
2520                    var linkEl = galleryWrapper.find('.ig-slideshow-item').eq($(this).parent().index());
2521                    var link = linkEl.attr('data-ig-image-link');
2522
2523                    if( link.length < 2 && galleryWrapper.attr('data-ig-show-main-image') == 0)
2524                    {
2525
2526                        $(this).off('click');
2527                        var gridImgId = $(this).attr('data-img-id');
2528
2529                        var gridIndex = 0;
2530                        $.each(panelIds, function(index,value)
2531                        {
2532                            if(gridImgId == value)
2533                            {
2534                                gridIndex = index;
2535                            }
2536                        });
2537
2538                        $(this).on('click', function(e)
2539                        {
2540                            panel.show(gridIndex);
2541                        });
2542
2543                        $(this).find('a').on('click', function(e)
2544                        {
2545                            e.stopPropagation();
2546                        });
2547                    }
2548
2549                });
2550
2551                return panel;
2552            }
2553
2554            panel = createPanel('*');
2555
2556            if(galleryWrapper.attr('data-ig-lbox-view') == 1)
2557            {
2558                panel.show(0);
2559            }
2560
2561            function alignZoomWrapper(lboxWrapperEl)
2562            {
2563                var zoomWrapper = lboxWrapperEl.find('.zoom-image-holder');
2564                var imgElement = lboxWrapperEl.find('.igui-lightbox-items li').eq(panel.index).find('img');
2565                var currentImgPosition = imgElement.position();
2566                var imgParentLeft = parseInt( lboxWrapperEl.find('.igui-lightbox-items li').eq(panel.index).css('left') );
2567
2568                var isEmpty = zoomWrapper.find('img').length == 1 ? false : true;
2569
2570                if(isEmpty)
2571                {
2572                    zoomWrapper.css('visibility','hidden');
2573                    var imgClone = imgElement.clone();
2574                    zoomWrapper.empty();
2575                    zoomWrapper.append(imgClone);
2576                    zoomWrapper.find('img').css({height:'auto',position:'relative','max-width':'100%'});
2577                }
2578
2579                zoomWrapper.css(
2580                {
2581                    'top':currentImgPosition.top,
2582                    left:(currentImgPosition.left + imgParentLeft),
2583                    display:'block',
2584                    padding:'0px',
2585                    width:imgElement.width(),
2586                    height:imgElement.height(),
2587                    overflow:'hidden',
2588                    cursor: 'grab'
2589                });
2590
2591                setTimeout(alignZoom, 80,true,lboxWrapperEl);
2592            }
2593
2594            function alignZoom(doZoom,lboxWrapperEl)
2595            {
2596                var zoomWrapper = lboxWrapperEl.find('.zoom-image-holder');
2597                var zoomContainment = lboxWrapperEl.find('.zoom-image-containment');
2598
2599                if(doZoom)
2600                {
2601                    var newWidth = zoomWrapper.find('img').width() * 1.3;
2602                    var newHeight = zoomWrapper.find('img').height() * 1.3;
2603                    var newLeft = (newWidth - zoomWrapper.width())/2;
2604                    var newTop = (newHeight - zoomWrapper.height())/2;
2605
2606                    zoomWrapper.find('img').css(
2607                    {
2608                        width: newWidth+'px',
2609                        height: newHeight+'px',
2610                        left: -newLeft+'px',
2611                        top: -newTop+'px',
2612                        'max-width': 'none'
2613                    });
2614                }
2615
2616                var horzExtra = zoomWrapper.find('img').width() - zoomWrapper.width();
2617                var vertExtra = zoomWrapper.find('img').height() - zoomWrapper.height();
2618
2619                var newWidth = (horzExtra * 2) + zoomWrapper.width();
2620                var newHeight = (vertExtra * 2) + zoomWrapper.height();
2621
2622                var xPos = zoomWrapper.offset().left - horzExtra;
2623                var yPos = zoomWrapper.position().top - vertExtra;
2624
2625                zoomContainment.css(
2626                {
2627                    display:'block',
2628                    width:newWidth+'px',
2629                    height:newHeight+'px',
2630                    top: yPos+'px',
2631                    left: xPos+'px'
2632                });
2633
2634                zoomWrapper.css('visibility','visible');
2635
2636                if(draggable !== undefined)
2637                {
2638                    draggable.draggabilly('destroy');
2639                }
2640
2641                var draggable = zoomWrapper.find('img').draggabilly(
2642                {
2643                    containment: '#zoom-image-containment-' + galleryWrapper.attr('data-ig-uniqueid')
2644                });
2645            }
2646
2647            function removeZoom(lboxWrapperEl)
2648            {
2649                var zoomWrapper = lboxWrapperEl.find('.zoom-image-holder');
2650                var isEmpty = zoomWrapper.find('img').length == 1 ? false : true;
2651
2652                if(!isEmpty)
2653                {
2654                    var zoomContainment = lboxWrapperEl.find('.zoom-image-containment');
2655                    zoomWrapper.empty();
2656                    zoomWrapper.css('display','none');
2657                    zoomContainment.css('display','none');
2658                    lboxWrapperEl.find('.ig-zoomout-button').css('display','none');
2659                }
2660            }
2661
2662
2663
2664            //allow creation of custom links to open the lightbox
2665            $('.ig-lightbox-custom-link').on('click', function(e)
2666            {
2667                e.preventDefault();
2668                var galleryId = $(this).attr('data-gallery-id');
2669                var imageIndex = $(this).attr('data-image-index') > 0 ? $(this).attr('data-image-index') -1 : 0;
2670                if(galleryId == galleryWrapper.attr('data-ig-uniqueid'))
2671                {
2672                    panel.show(imageIndex);
2673                }
2674            });
2675
2676            //if grid and hash then show lbox on page load
2677            var imgHash = getUrlParamater('i');
2678            imgHash = imgHash.replace(/_/g,'-');
2679            if(imgHash != 'unset' && galleryWrapper.attr('data-ig-show-main-image') == 0)
2680            {
2681                var elementToFind = galleryWrapper.find(".ig-slideshow-item[data-ig-imagehash='" + imgHash + "']");
2682                if(elementToFind.length)
2683                {
2684                    panel.show(elementToFind.index());
2685                }
2686            }
2687
2688        }
2689
2690        galleryWrapper.find('.ig-slideshow-item-inner').each(function(index,el)
2691        {
2692            if($(this).parent().attr('data-ig-image-link').length > 0)
2693            {
2694                $(this).css('cursor','pointer');
2695            }
2696        });
2697
2698        galleryWrapper.find('.ig-slideshow-item-inner-lboxon, .ig-slideshow-item-inner').on('click', function(e)
2699        {
2700            e.preventDefault();
2701
2702            var link = $(this).parent().attr('data-ig-image-link');
2703            if( link.length > 2)
2704            {
2705                if($(this).parent().attr('data-ig-link-new') == 1)
2706                {
2707                    window.open(link);
2708                }
2709                else
2710                {
2711                    window.location = link;
2712                }
2713            }
2714            else if( galleryWrapper.find('.igui-slideshow-items').attr('data-ig-lightbox') == 1 )
2715            {
2716                panel.show(slideshow.index);
2717            }
2718        });
2719
2720
2721        galleryWrapper.find('.ig-grid-img-link').off('click');
2722        galleryWrapper.find('.ig-grid-img-link').on('click', function(e)
2723        {
2724            e.preventDefault();
2725            var linkEl = galleryWrapper.find('.ig-slideshow-item').eq($(this).parent().index());
2726            var link = linkEl.attr('data-ig-image-link');
2727
2728            if( link.length > 2)
2729            {
2730                if(linkEl.attr('data-ig-link-new') == 1)
2731                {
2732                    window.open(link);
2733                }
2734                else
2735                {
2736                    window.location = link;
2737                }
2738            }
2739            else
2740            {
2741                if(galleryWrapper.attr('data-ig-show-main-image') == 1)
2742                {
2743                    e.preventDefault();
2744                    slideshow.show($(this).parent().index());
2745                }
2746                else if( galleryWrapper.find('.igui-slideshow-items').attr('data-ig-lightbox') == 1 )
2747                {
2748                    panel.show($(this).parent().index());
2749                }
2750
2751            }
2752
2753        });
2754
2755        thumbScrollerWrapper.find('.ig-img-link').each(function(index,el)
2756        {
2757            $(el).on('click', function(e)
2758            {
2759                e.preventDefault();
2760                var linkEl = galleryWrapper.find('.ig-slideshow-item').eq($(this).parent().index());
2761                var link = linkEl.attr('data-ig-image-link');
2762
2763                if(galleryWrapper.find('.ig-slideshow').attr('data-ig-show-main') == 1)
2764                {
2765                    slideshow.show(index);
2766                }
2767                else if( link.length > 2)
2768                {
2769                    if(linkEl.attr('data-ig-link-new') == 1)
2770                    {
2771                        window.open(link);
2772                    }
2773                    else
2774                    {
2775                        window.location = link;
2776                    }
2777                }
2778                else if(galleryWrapper.find('.igui-slideshow-items').attr('data-ig-lightbox') == 1)
2779                {
2780                    panel.show($(this).parent().index());
2781                }
2782            });
2783        });
2784
2785        function imageUrl(index,replace)
2786        {
2787            var newUrl = '';
2788            var shareUrl = getUrlParamater('shareurl');
2789            if(shareUrl != 'unset')
2790            {
2791                var imageid = galleryWrapper.find('.ig-slideshow-item').eq(index).attr('data-ig-imageid');
2792
2793                var url = shareUrl.indexOf('?') !== -1 ? decodeURIComponent(shareUrl)+'&img='+imageid : decodeURIComponent(shareUrl)+'?img='+imageid;
2794                return url;
2795            }
2796
2797            var imgName = galleryWrapper.find('.ig-slideshow-item').eq(index).attr('data-ig-imagehash');
2798            var url = window.location.href;
2799
2800            var currentUrlParam = getUrlParamater('i');
2801
2802            if(currentUrlParam != 'unset')
2803            {
2804                if(url.indexOf('?i='+currentUrlParam+'&') !== -1)
2805                {
2806                    newUrl = url.replace('i='+currentUrlParam+'&','');
2807                    newUrl = newUrl+'&i='+imgName;
2808                }
2809                else if(url.indexOf('?i='+currentUrlParam) !== -1)
2810                {
2811                    newUrl = url.replace('?i='+currentUrlParam,'');
2812                    newUrl = newUrl+'?i='+imgName;
2813                }
2814                else if(url.indexOf('&i='+currentUrlParam) !== -1)
2815                {
2816                    newUrl = url.replace('&i='+currentUrlParam,'');
2817                    newUrl = newUrl+'&i='+imgName;
2818                }
2819            }
2820            else if(url.indexOf('?') !== -1)
2821            {
2822                newUrl = url+'&i='+imgName;
2823            }
2824            else
2825            {
2826                newUrl = url+'?i='+imgName;
2827            }
2828
2829            if(replace)
2830            {
2831                if(newUrl != url)
2832                {
2833                    history.replaceState({imgId:index}, document.title, newUrl);
2834                }
2835            }
2836            else
2837            {
2838                return newUrl;
2839            }
2840        }
2841
2842        function getUrlParamater(paramName)
2843        {
2844            var urlValue = 'unset';
2845            var url = window.location.href;
2846
2847            if(url.indexOf("?") > -1)
2848            {
2849                var queryParams = url.substr(url.indexOf("?"));
2850                var queryParamsArray = queryParams.split("&");
2851
2852                for(var i=0; i< queryParamsArray.length; i++ )
2853                {
2854                    if( queryParamsArray[i].indexOf(paramName + "=") > -1 )
2855                    {
2856                        var paramMatch = queryParamsArray[i].split("=");
2857                        urlValue = paramMatch[1];
2858                        break;
2859                    }
2860                }
2861            }
2862            return unescape(urlValue);
2863        }
2864
2865    });
2866
2867    $('.ig-slideshow-image, .ig-scroller-img, .ig-menu-grid-image, .ig-thumbs-grid-image').hover(function()
2868        {
2869            $(this).data('originalTitle',$(this).attr('title'));
2870            $(this).removeAttr('title');
2871        },
2872        function()
2873        {
2874            $(this).attr('title',$(this).data('originalTitle'));
2875        });
2876
2877
2878
2879});

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.