PageSourceSearch

https://zembrzyce.pl/media/com_igallery/js/ignitegallery-42.js?0159ce

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

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.