PageSourceSearch

https://www.ekoforumzenica.ba/wp-content/plugins/everlightbox/public/js/everlightbox.js?ver=1.2.0

js ekoforumzenica.ba collected 2026-10-02 12:27:14 UTC 47,066 bytes, 1,092 lines download raw bytes

1/**
2 * Module: WP-JS-Hooks
3 * Props: Carl Danley & 10up
4 */
5!function(a){"use strict";var b=function(){function a(a,b,c,d){return"string"==typeof a&&"function"==typeof b&&(c=parseInt(c||10,10),h("actions",a,b,c,d)),k}function b(){var a=Array.prototype.slice.call(arguments),b=a.shift();return"string"==typeof b&&j("actions",b,a),k}function c(a,b){return"string"==typeof a&&g("actions",a,b),k}function d(a,b,c,d){return"string"==typeof a&&"function"==typeof b&&(c=parseInt(c||10,10),h("filters",a,b,c,d)),k}function e(){var a=Array.prototype.slice.call(arguments),b=a.shift();return"string"==typeof b?j("filters",b,a):k}function f(a,b){return"string"==typeof a&&g("filters",a,b),k}function g(a,b,c,d){if(l[a][b])if(c){var e,f=l[a][b];if(d)for(e=f.length;e--;){var g=f[e];g.callback===c&&g.context===d&&f.splice(e,1)}else for(e=f.length;e--;)f[e].callback===c&&f.splice(e,1)}else l[a][b]=[]}function h(a,b,c,d,e){var f={callback:c,priority:d,context:e},g=l[a][b];g?(g.push(f),g=i(g)):g=[f],l[a][b]=g}function i(a){for(var b,c,d,e=1,f=a.length;f>e;e++){for(b=a[e],c=e;(d=a[c-1])&&d.priority>b.priority;)a[c]=a[c-1],--c;a[c]=b}return a}function j(a,b,c){var d=l[a][b];if(!d)return"filters"===a?c[0]:!1;var e=0,f=d.length;if("filters"===a)for(;f>e;e++)c[0]=d[e].callback.apply(d[e].context,c);else for(;f>e;e++)d[e].callback.apply(d[e].context,c);return"filters"===a?c[0]:!0}var k={removeFilter:f,applyFilters:e,addFilter:d,removeAction:c,doAction:b,addAction:a},l={actions:{},filters:{}};return k};a.wp=a.wp||{},a.wp.hooks=new b}(window);
6
7var everlightboxQualifyURL = function (url) {
8    var img = document.createElement('img');
9    img.src = url; // set string url
10    url = img.src; // get qualified url
11    img.src = null; // no server request
12    return url;
13};
14
15function evshare(e) {
16	var $ = jQuery;
17    var slide = $( '#everlightbox-slider .slide.current' );
18    var text = document.title;
19    if(slide.find(".everlightbox-caption").length) 
20        text = slide.find(".everlightbox-caption").text();
21
22    var image = $( '#everlightbox-slider .slide.current img' ).attr("src");
23	
24	var social = $(e).data("social");
25	
26	var url = "";
27	
28	if(social == "pinterest") {
29		url = "http://pinterest.com/pin/create/button/?url=" + encodeURIComponent(location.href) + "&description=" + encodeURI(text);
30		url += ("&media=" + encodeURIComponent(everlightboxQualifyURL(image)));
31	}
32	if(social == "twitter") {
33		url = "https://twitter.com/intent/tweet?url=" + encodeURI(location.href.split('#')[0]) + "&text=" + encodeURI(text)
34	}
35	if(social == "gplus") {
36		url = "https://plus.google.com/share?url=" + encodeURI(location.href);
37	}
38	if(social == "houzz") {
39		url = "http://www.houzz.com/imageClipperUpload?imageUrl=" + encodeURIComponent(everlightboxQualifyURL(image)) +
40                    "&link=" + encodeURI(location.href) + "&title=" + encodeURI(text);
41	}
42    if(social == "facebook") {
43	    url = "//www.facebook.com/sharer.php?u=" + location.href;
44    }
45		
46    var w = window.open(url, "ftgw", "location=1,status=1,scrollbars=1,width=600,height=400");
47    w.moveTo((screen.width / 2) - (300), (screen.height / 2) - (200));
48}
49
50;( function ( window, document, $, undefined ) {    
51    
52    $.everlightbox = function( elem, options ) {
53        // Default options
54        var ui,
55            defaults = {
56                useCSS : true,
57                useSVG : true,
58                initialIndexOnArray : 0,
59                vimeoColor : 'cccccc',
60                beforeOpen: null,
61                afterOpen: null,
62                afterClose: null,
63                afterMedia: null,
64                nextSlide: null,
65                prevSlide: null,
66                loopAtEnd: false,
67                keyboard: true,
68                autoplayVideos: false,
69                queryStringData: {},
70                toggleClassOnLoad: '',
71                facebookIcon: false,
72                twitterIcon: false,
73                pinterestIcon: false,
74                houzzIcon: false,
75                googleplusIcon: false,
76                tumblrIcon: false,
77                facebookLike: false,
78                facebookCommentCount: false,
79                downloadIcon: false,
80                fullscreenIcon: false,
81                facebookComments: false,
82                closeBg: false,
83                anchorButtonsToEdges: false,
84                rootCssClass: '',
85                selector: '.everlightbox-trigger'
86            },
87
88            plugin = this,
89            elements = [], // slides array [ { href:'...', title:'...' }, ...],
90            $elem,
91            isMobile = navigator.userAgent.match( /(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i ),
92            isTouch = isMobile !== null || document.createTouch !== undefined || ( 'ontouchstart' in window ) || ( 'onmsgesturechange' in window ) || navigator.msMaxTouchPoints,
93            supportSVG = !! document.createElementNS && !! document.createElementNS( 'http://www.w3.org/2000/svg', 'svg').createSVGRect,
94            winWidth = window.innerWidth ? window.innerWidth : $( window ).width(),
95            winHeight = window.innerHeight ? window.innerHeight : $( window ).height(),
96            currentX = 0,
97        /* jshint multistr: true */
98            html = '<div id="everlightbox-overlay">\
99					<div id="everlightbox-container">\
100						<div id="everlightbox-slider"></div>\
101						<a id="everlightbox-prev"><i class="ev-icon-left-open-big"></i></a>\
102						<a id="everlightbox-next"><i class="ev-icon-right-open-big"></i></a>\
103					</div>\
104			</div>';
105
106        plugin.settings = {};
107
108        $.everlightbox.close = function () {
109            ui.closeSlide();
110        };
111
112        $.everlightbox.extend = function () {
113            return ui;
114        };
115
116        plugin.init = function() {
117
118            plugin.settings = $.extend( {}, defaults, options );
119
120            if ( $.isArray( elem ) ) {
121
122                elements = elem;
123                ui.target = $( window );
124                ui.init( plugin.settings.initialIndexOnArray );
125
126            } else if( plugin.settings.selector ) {
127                $( document ).on( 'click', plugin.settings.selector, function( event ) {
128                    // console.log( isTouch );
129
130                    if ( event.target.parentNode.className === 'slide current' ) {
131
132                        return false;
133                    }
134
135                    if ( ! $.isArray( elem ) ) {
136                        ui.destroy();
137                        $elem = $( plugin.settings.selector );
138                        ui.actions();
139                    }
140
141                    elements = [];
142                    var index, relType, relVal;
143
144                    // Allow for HTML5 compliant attribute before legacy use of rel
145                    if ( ! relVal ) {
146                        relType = 'data-rel';
147                        relVal = $( this ).attr( relType );
148                    }
149
150                    if ( ! relVal ) {
151                        relType = 'rel';
152                        relVal = $( this ).attr( relType );
153                    }
154
155                    if ( relVal && relVal !== '' && relVal !== 'nofollow' ) {
156                        $elem = $( plugin.settings.selector ).filter( '[' + relType + '="' + relVal + '"]' );
157                    } else {
158                        $elem = $( plugin.settings.selector );
159                    }
160
161                    $elem.each( function() {
162
163                        var title = null,
164                            href = null;
165
166                        if ( $( this ).data( 'title' ) ) {
167                            title = $( this ).data( 'title' );
168                        }
169
170                        if ( !title && $( this ).attr( 'title' ) ) {
171                            title = $( this ).attr( 'title' );
172                        }
173
174                        if ( !title && $( this ).attr( 'data-caption-title' ) ) {
175                            title = $( this ).attr( 'data-caption-title' );
176                        }
177
178
179                        if ( $( this ).attr( 'href' ) ) {
180                            href = $( this ).attr( 'href' );
181                        }
182
183                        elements.push( {
184                            href: href,
185                            title: title
186                        } );
187                    } );
188
189                    index = $elem.index( $( this ) );
190                    event.preventDefault();
191                    event.stopPropagation();
192                    ui.target = $( event.target );
193                    ui.init( index );
194                } );
195            }
196        };
197
198        plugin.next = function () {
199            ui.getNext();
200        };
201
202        plugin.prev = function () {
203            ui.getPrev();
204        };
205
206        ui = {
207
208            /**
209             * Initiate Swipebox
210             */
211            init : function( index ) {
212                if ( plugin.settings.beforeOpen ) {
213                    plugin.settings.beforeOpen();
214                }
215                this.target.trigger( 'everlightbox-start' );
216                $.everlightbox.isOpen = true;
217                this.build();
218                this.openSlide( index );
219                this.openMedia( index );
220                this.preloadMedia( index+1 );
221                this.preloadMedia( index-1 );
222                if ( plugin.settings.afterOpen ) {
223                    plugin.settings.afterOpen(index);
224                }
225                $(window).bind('everlightbox.next', this.getNext);
226            },
227
228            /**
229             * Built HTML containers and fire main functions
230             */
231            build : function () {
232                var $this = this, bg;
233
234                $( 'body' ).append( html );
235
236                $("#everlightbox-overlay").addClass('everlightbox-theme-'+plugin.settings.rootCssClass)
237                                          .addClass(isMobile ? 'everlightbox-mobile' : 'everlightbox-no-mobile');
238
239                $.each( elements,  function() {
240                    $( '#everlightbox-slider' ).append( '<div class="slide"></div>' );
241                } );
242
243                $this.setDim();
244                $this.actions();
245
246                if ( isTouch ) {
247                    $this.gesture();
248                }
249
250                // Devices can have both touch and keyboard input so always allow key events
251                if(plugin.settings.keyboard)
252                    $this.keyboard();
253
254                $this.setupSocial();
255                $this.resize();
256
257            },
258
259            /**
260             * Set dimensions depending on windows width and height
261             */
262            setDim : function () {
263
264                var width, height, sliderCss = {};
265
266                // Reset dimensions on mobile orientation change
267                if ( 'onorientationchange' in window ) {
268
269                    window.addEventListener( 'orientationchange', function() {
270                        if ( window.orientation === 0 ) {
271                            width = winWidth;
272                            height = winHeight;
273                        } else if ( window.orientation === 90 || window.orientation === -90 ) {
274                            width = winHeight;
275                            height = winWidth;
276                        }
277                    }, false );
278
279
280                } else {
281
282                    width = window.innerWidth ? window.innerWidth : $( window ).width();
283                    height = window.innerHeight ? window.innerHeight : $( window ).height();
284                }
285
286                sliderCss = {
287                    width : '100%',
288                    height : height
289                };
290
291                $('#everlightbox-overlay').css( sliderCss );
292                $("#everlightbox-slider .slide").each(function (i, slide) {
293                    $img = $(slide).find("img");
294                    var w = $img.width();
295                    var h = $img.height();
296                    var pos = $img.position();
297                    if(w && h && !plugin.settings.anchorButtonsToEdges) {
298                        $(slide).find(".everlightbox-glass").css({
299                            top: pos.top,
300                            left: pos.left,
301                            width: w,
302                            height: h
303                        });
304                    }
305                    var data = { slide: $(slide), width: w, height: h, position: pos };
306                    wp.hooks.applyFilters('everlightbox.setDim', data);
307                });
308            },
309
310            getCurrentTitle: function () {
311                var slide = $( '#everlightbox-slider .slide.current' );
312                if(slide.find(".everlightbox-caption").length) 
313                    return slide.find(".everlightbox-caption").text();
314
315                return document.title;
316            },
317
318            setupSocial: function () {
319                
320            },
321
322            /**
323             * Reset dimensions on window resize event
324             */
325            resize : function () {
326                var $this = this;
327
328                $( window ).resize( function() {
329                    $this.setDim();
330                } ).resize();
331            },
332
333            /**
334             * Check if device supports CSS transitions
335             */
336            supportTransition : function () {
337
338                var prefixes = 'transition WebkitTransition MozTransition OTransition msTransition KhtmlTransition'.split( ' ' ),
339                    i;
340
341                for ( i = 0; i < prefixes.length; i++ ) {
342                    if ( document.createElement( 'div' ).style[ prefixes[i] ] !== undefined ) {
343                        return prefixes[i];
344                    }
345                }
346                return false;
347            },
348
349            /**
350             * Check if CSS transitions are allowed (options + devicesupport)
351             */
352            doCssTrans : function () {
353                if ( plugin.settings.useCSS && this.supportTransition() ) {
354                    return true;
355                }
356            },
357
358            /**
359             * Touch navigation
360             */
361            gesture : function () {
362
363                var $this = this,
364                    index,
365                    hDistance,
366                    vDistance,
367                    hDistanceLast,
368                    vDistanceLast,
369                    hDistancePercent,
370                    vSwipe = false,
371                    hSwipe = false,
372                    hSwipMinDistance = 10,
373                    vSwipMinDistance = 50,
374                    startCoords = {},
375                    endCoords = {},
376                    bars = $( 'dummy' ),
377                    slider = $( '#everlightbox-slider' );
378
379                bars.addClass( 'visible-bars' );
380                $this.setTimeout();
381
382                $( 'body' ).bind( 'touchstart', function( event ) {
383
384                    $( this ).addClass( 'touching' );
385                    index = $( '#everlightbox-slider .slide' ).index( $( '#everlightbox-slider .slide.current' ) );
386                    endCoords = event.originalEvent.targetTouches[0];
387                    startCoords.pageX = event.originalEvent.targetTouches[0].pageX;
388                    startCoords.pageY = event.originalEvent.targetTouches[0].pageY;
389
390                    $( '#everlightbox-slider' ).css( {
391                        '-webkit-transform' : 'translate3d(' + currentX +'%, 0, 0)',
392                        'transform' : 'translate3d(' + currentX + '%, 0, 0)'
393                    } );
394
395                    $( '.touching' ).bind( 'touchmove',function( event ) {
396                        event.preventDefault();
397                        event.stopPropagation();
398                        endCoords = event.originalEvent.targetTouches[0];
399
400                        if ( ! hSwipe ) {
401                            vDistanceLast = vDistance;
402                            vDistance = endCoords.pageY - startCoords.pageY;
403                            if ( Math.abs( vDistance ) >= vSwipMinDistance || vSwipe ) {
404                                var opacity = 0.75 - Math.abs(vDistance) / slider.height();
405
406                                slider.css( { 'top': vDistance + 'px' } );
407                                slider.css( { 'opacity': opacity } );
408
409                                vSwipe = true;
410                            }
411                        }
412
413                        hDistanceLast = hDistance;
414                        hDistance = endCoords.pageX - startCoords.pageX;
415                        hDistancePercent = hDistance * 100 / winWidth;
416
417                        if ( ! hSwipe && ! vSwipe && Math.abs( hDistance ) >= hSwipMinDistance ) {
418                            $( '#everlightbox-slider' ).css( {
419                                '-webkit-transition' : '',
420                                'transition' : ''
421                            } );
422                            hSwipe = true;
423                        }
424
425                        if ( hSwipe ) {
426
427                            // swipe left
428                            if ( 0 < hDistance ) {
429
430                                // first slide
431                                if ( 0 === index ) {
432                                    // console.log( 'first' );
433                                    $( '#everlightbox-overlay' ).addClass( 'leftSpringTouch' );
434                                } else {
435                                    // Follow gesture
436                                    $( '#everlightbox-overlay' ).removeClass( 'leftSpringTouch' ).removeClass( 'rightSpringTouch' );
437                                    $( '#everlightbox-slider' ).css( {
438                                        '-webkit-transform' : 'translate3d(' + ( currentX + hDistancePercent ) +'%, 0, 0)',
439                                        'transform' : 'translate3d(' + ( currentX + hDistancePercent ) + '%, 0, 0)'
440                                    } );
441                                }
442
443                                // swipe rught
444                            } else if ( 0 > hDistance ) {
445
446                                // last Slide
447                                if ( elements.length === index +1 ) {
448                                    // console.log( 'last' );
449                                    $( '#everlightbox-overlay' ).addClass( 'rightSpringTouch' );
450                                } else {
451                                    $( '#everlightbox-overlay' ).removeClass( 'leftSpringTouch' ).removeClass( 'rightSpringTouch' );
452                                    $( '#everlightbox-slider' ).css( {
453                                        '-webkit-transform' : 'translate3d(' + ( currentX + hDistancePercent ) +'%, 0, 0)',
454                                        'transform' : 'translate3d(' + ( currentX + hDistancePercent ) + '%, 0, 0)'
455                                    } );
456                                }
457
458                            }
459                        }
460                    } );
461
462                    return false;
463
464                } ).bind( 'touchend',function( event ) {
465                    event.preventDefault();
466                    event.stopPropagation();
467
468                    $( '#everlightbox-slider' ).css( {
469                        '-webkit-transition' : '-webkit-transform 0.4s ease',
470                        'transition' : 'transform 0.4s ease'
471                    } );
472
473                    vDistance = endCoords.pageY - startCoords.pageY;
474                    hDistance = endCoords.pageX - startCoords.pageX;
475                    hDistancePercent = hDistance*100/winWidth;
476
477                    // Swipe to bottom to close
478                    if ( vSwipe ) {
479                        vSwipe = false;
480                        if ( Math.abs( vDistance ) >= 2 * vSwipMinDistance && Math.abs( vDistance ) > Math.abs( vDistanceLast ) ) {
481                            var vOffset = vDistance > 0 ? slider.height() : - slider.height();
482                            slider.animate( { top: vOffset + 'px', 'opacity': 0 },
483                                300,
484                                function () {
485                                    $this.closeSlide();
486                                } );
487                        } else {
488                            slider.animate( { top: 0, 'opacity': 1 }, 300 );
489                        }
490
491                    } else if ( hSwipe ) {
492
493                        hSwipe = false;
494
495                        // swipeLeft
496                        if( hDistance >= hSwipMinDistance && hDistance >= hDistanceLast) {
497
498                            $this.getPrev();
499
500                            // swipeRight
501                        } else if ( hDistance <= -hSwipMinDistance && hDistance <= hDistanceLast) {
502
503                            $this.getNext();
504                        }
505
506                    } else { // Top and bottom bars have been removed on touchable devices
507                        // tap
508                        if ( ! bars.hasClass( 'visible-bars' ) ) {
509                            $this.setTimeout();
510                        } else {
511                            $this.clearTimeout();
512                        }
513                    }
514
515                    $( '#everlightbox-slider' ).css( {
516                        '-webkit-transform' : 'translate3d(' + currentX + '%, 0, 0)',
517                        'transform' : 'translate3d(' + currentX + '%, 0, 0)'
518                    } );
519
520                    $( '#everlightbox-overlay' ).removeClass( 'leftSpringTouch' ).removeClass( 'rightSpringTouch' );
521                    $( '.touching' ).off( 'touchmove' ).removeClass( 'touching' );
522
523                } );
524            },
525
526            /**
527             * Set timer to hide the action bars
528             */
529            setTimeout: function () {
530                if ( plugin.settings.hideBarsDelay > 0 ) {
531                    var $this = this;
532                    $this.clearTimeout();
533                    $this.timeout = window.setTimeout( function() {
534                            $this.hideBars();
535                        },
536
537                        plugin.settings.hideBarsDelay
538                    );
539                }
540            },
541
542            /**
543             * Clear timer
544             */
545            clearTimeout: function () {
546                window.clearTimeout( this.timeout );
547                this.timeout = null;
548            },
549
550            /**
551             * Keyboard navigation
552             */
553            keyboard : function () {
554                var $this = this;
555                $( window ).bind( 'keyup', function( event ) {
556                    event.preventDefault();
557                    event.stopPropagation();
558
559                    if ( event.keyCode === 37 ) {
560
561                        $this.getPrev();
562
563                    } else if ( event.keyCode === 39 ) {
564
565                        $this.getNext();
566
567                    } else if ( event.keyCode === 27 ) {
568                        $this.closeSlide();
569                    }
570                } );
571            },
572
573            /**
574             * Navigation events : go to next slide, go to prevous slide and close
575             */
576            actions : function () {
577                var $this = this,
578                    action = 'touchend click'; // Just detect for both event types to allow for multi-input
579
580                if ( elements.length < 2 ) {
581
582                    $( '#everlightbox-bottom-bar' ).hide();
583
584                } else {
585                    $( '#everlightbox-prev' ).bind( action, function( event ) {
586                        event.preventDefault();
587                        event.stopPropagation();
588                        $this.getPrev();
589                        $this.setTimeout();
590                    } );
591
592                    $( '#everlightbox-next' ).bind( action, function( event ) {
593                        event.preventDefault();
594                        event.stopPropagation();
595                        $this.getNext();
596                        $this.setTimeout();
597                    } );
598                }
599
600                $( 'body' ).on(action, '.everlightbox-close', function() {
601                    $this.closeSlide();
602                } );
603            },
604
605            /**
606             * Set current slide
607             */
608            setSlide : function ( index, isFirst ) {
609
610                isFirst = isFirst || false;
611
612                var slider = $( '#everlightbox-slider' );
613
614                currentX = -index*100;
615
616                if ( this.doCssTrans() ) {
617                    slider.css( {
618                        '-webkit-transform' : 'translate3d(' + (-index*100)+'%, 0, 0)',
619                        'transform' : 'translate3d(' + (-index*100)+'%, 0, 0)'
620                    } );
621                } else {
622                    slider.animate( { left : ( -index*100 )+'%' } );
623                }
624
625                $( '#everlightbox-slider .slide' ).removeClass( 'current' );
626                $( '#everlightbox-slider .slide' ).eq( index ).addClass( 'current' );
627                
628
629                if ( isFirst ) {
630                    slider.fadeIn();
631                }
632
633                $( '#everlightbox-prev, #everlightbox-next' ).removeClass( 'disabled' );
634
635                if ( index === 0 ) {
636                    $( '#everlightbox-prev' ).addClass( 'disabled' );
637                } else if ( index === elements.length - 1 && plugin.settings.loopAtEnd !== true ) {
638                    $( '#everlightbox-next' ).addClass( 'disabled' );
639                }
640            },
641
642            /**
643             * Open slide
644             */
645            openSlide : function ( index ) {
646                $( 'html' ).addClass( 'everlightbox-html' );
647                if ( isTouch ) {
648                    $( 'html' ).addClass( 'everlightbox-touch' );
649
650                } else {
651                    $( 'html' ).addClass( 'everlightbox-no-touch' );
652                }
653                $( window ).trigger( 'resize' ); // fix scroll bar visibility on desktop
654                this.setSlide( index, true );
655                wp.hooks.applyFilters('everlightbox.openSlide', index);
656            },
657
658            /**
659             * Set a time out if the media is a video
660             */
661            preloadMedia : function ( index ) {
662                var $this = this,
663                    src = null;
664
665                if ( elements[ index ] !== undefined ) {
666                    src = elements[ index ].href;
667                }
668
669                if ( ! $this.isVideo( src ) ) {
670                    setTimeout( function() {
671                        $this.openMedia( index );
672                    }, 1000);
673                } else {
674                    $this.openMedia( index );
675                }
676            },
677
678            /**
679             * Open
680             */
681            openMedia : function ( index ) {
682                var $this = this,
683                    src,
684                    slide;
685
686                if ( elements[ index ] !== undefined ) {
687                    src = elements[ index ].href;
688                }
689
690                if ( index < 0 || index >= elements.length ) {
691                    return false;
692                }
693
694                slide = $( '#everlightbox-slider .slide' ).eq( index );
695
696                if ( ! $this.isVideo( src ) ) {
697                    slide.addClass( 'slide-loading' );
698                    $this.loadMedia( src, function() {
699                        slide.removeClass( 'slide-loading' );
700                        slide.html(this);
701                        slide.prepend("<div class='everlightbox-backstage'></div>");
702
703                        if(plugin.settings.closeBg)
704                            slide.find(".everlightbox-backstage").click(function () {
705                                $this.closeSlide();
706                            });
707
708                        var $img = this;
709                        var img_pos = this.position();
710
711                        var $glass = $("<div class='everlightbox-glass'></div>");
712                        $glass.css({
713                            top: plugin.settings.anchorButtonsToEdges ? 0 : img_pos.top,
714                            left: plugin.settings.anchorButtonsToEdges ? 0 : img_pos.left,
715                            width: plugin.settings.anchorButtonsToEdges ? '100%' : $img.width(),
716                            height: plugin.settings.anchorButtonsToEdges ? '100%' : $img.height(),
717                            zIndex: 1000
718                        });
719
720                        slide.append($glass);
721                        $glass.append("<div class='everlightbox-top-bar'></div>");
722                        var $topbar = $glass.find(".everlightbox-top-bar");
723
724                        $glass.append("<div class='everlightbox-bottom-bar'></div>");
725                        var $bottombar = $glass.find(".everlightbox-bottom-bar");
726
727                        $topbar.append("<div class='everlightbox-right-side'></div>");
728                        var $topbarRight = $topbar.find(".everlightbox-right-side");
729
730                        $topbar.append("<div class='everlightbox-left-side'></div>");
731                        var $topbarLeft = $topbar.find(".everlightbox-left-side");
732                        
733                        var title = null;
734                        if ( elements[ index ] !== undefined ) {
735                            title = elements[ index ].title;
736                        }
737
738                        if ( title ) {
739                            $topbar.append("<p class='everlightbox-caption'><span>"+title+"</span></p>");
740                        }
741                        
742                        if(plugin.settings.fullscreenIcon) {
743                            $topbarRight.append('<a title="Fullscreen" data-status="off" class="everlightbox-fullscreen everlightbox-button"><i class="ev-icon-resize-full"></i><i class="ev-icon-resize-small"></i></a>');
744                            $topbarRight.find(".everlightbox-fullscreen").on("touchstart click", function () {
745
746                                var status = $(this).data("status");
747                                if(status == "off") {
748                                    var elem = document.getElementById("everlightbox-overlay");
749                                    if (elem.requestFullscreen) {
750                                        elem.requestFullscreen();
751                                    } else if (elem.msRequestFullscreen) {
752                                        elem.msRequestFullscreen();
753                                    } else if (elem.mozRequestFullScreen) {
754                                        elem.mozRequestFullScreen();
755                                    } else if (elem.webkitRequestFullscreen) {
756                                        elem.webkitRequestFullscreen();
757                                    }
758                                    $(this).data("status", "on");
759                                    $(this)
760                                } else {
761                                    if (document.cancelFullScreen) {
762                                        document.cancelFullScreen();
763                                    } else if (document.mozCancelFullScreen) {
764                                        document.mozCancelFullScreen();
765                                    } else if (document.webkitCancelFullScreen) {
766                                        document.webkitCancelFullScreen();
767                                    }
768                                    $(this).data("status", "off");
769                                }
770                                $(this).toggleClass("on");
771                            });
772                        }
773
774                        $topbarRight.append('<a class="everlightbox-close everlightbox-button"><i class="ev-icon-cancel"></i></a>');
775
776                        var social = [];
777                        if(plugin.settings.facebookIcon)
778                            social.push('<a onclick="evshare(this)" data-social="facebook" title="Share on Facebook" class="everlightbox-button everlightbox-facebook"><i class="ev-icon-facebook"></i></a>');
779                        if(plugin.settings.pinterestIcon)
780                            social.push('<a onclick="evshare(this)" data-social="pinterest" title="Share on Pinterest" class="everlightbox-button everlightbox-pinterest"><i class="ev-icon-pinterest"></i></a>');
781                        if(plugin.settings.tumblrIcon)
782                            social.push('<a onclick="evshare(this)" data-social="tumblr" title="Share on Tumblr" class="everlightbox-button everlightbox-tumblr"><i class="ev-icon-tumblr"></i></a>');
783                        if(plugin.settings.twitterIcon)
784                            social.push('<a onclick="evshare(this)" data-social="twitter" title="Share on Twitter" class="everlightbox-button everlightbox-twitter"><i class="ev-icon-twitter"></i></a>');
785                        if(plugin.settings.houzzIcon)
786                            social.push('<a onclick="evshare(this)" data-social="houzz" share="Share on Houzz" class="everlightbox-button everlightbox-houzz"><i class="ev-icon-houzz"></i></a>');
787                        if(plugin.settings.googleplusIcon)
788                            social.push('<a onclick="evshare(this)" data-social="gplus" title="Share on Google+" class="everlightbox-button everlightbox-googleplus"><i class="ev-icon-gplus"></i></a>');
789                        if(plugin.settings.downloadIcon)
790                            social.push('<a title="Download image" href="'+ this.attr("src") +'" download class="everlightbox-button everlightbox-download"><i class="ev-icon-install"></i></a>');
791                        if(plugin.settings.facebookLike)
792                            social.push('<div class="everlightbox-button fb-like" data-href="'+ this.attr("src") +'" data-layout="everlightbox-button" data-action="like" data-size="small" data-show-faces="false" data-share="false"></div>');
793
794                        if(social.length) {
795                            $bottombar.append("<div class='everlightbox-social'>" + social.join('') + "</div>");
796                            $bottombar.find(".everlightbox-social").children().last(
796).addClass("last-element");
797                        }
798
799                        if(plugin.settings.facebookLike) {
800                            if (typeof FB != "undefined" && FB != null)
801                                FB.XFBML.parse($glass.find(".everlightbox-social").get(0));
802                        }
803
804                        if(plugin.settings.facebookComments)
805                        {
806                            $topbarLeft.append('<a title="Show comments" class="everlightbox-comments everlightbox-button"><i class="ev-icon-commenting-o"></i></a>');
807
808                            if(plugin.settings.facebookCommentCount)  {
809                                $.get(everlightbox_ajax_object.ajaxurl, {
810                                    url: $img.attr("src"),
811                                    action: 'fetch_comments_count',
812                                    everlightbox: plugin.settings.nonce
813                                }, function (r) {
814                                    if(r) {
815                                        try {
816                                            var data = JSON.parse(r);
817                                            if(data && data.share && data.share.comment_count && data.share.comment_count > 0)
818                                                $topbarLeft.append("<span class='everlightbox-comment-count'>"+ data.share.comment_count +" " +
819                                                    plugin.settings.labels["comments"] +  "</span>");
820                                        } catch(err) {
821                                            console.info(err);
822                                        }
823                                    }
824                                });
825                            }
826
827                            $topbar.on("touchstart click", ".everlightbox-comments, .everlightbox-comment-count", function () {
828                                $topbarLeft.find(".everlightbox-comments").toggleClass("everlightbox-comments-active");
829                                if($topbarLeft.find(".everlightbox-comments").hasClass("everlightbox-comments-active")) {
830                                    if($topbar.find(".fb-comments").length) {
831                                        $topbar.find(".fb-comments").show();
832                                    } else {
833                                        $topbar.append('<div class="fb-comments" data-href="'+ $img.attr("src") + '" data-width="300" data-numposts="5"></div>');
834                                        if (typeof FB != "undefined" && FB != null)
835                                            FB.XFBML.parse($topbar.get(0));
836                                    }                                    
837                                } else {
838                                    $glass.find('.fb-comments').hide();
839                                }                            
840                            });                                                        
841                        }
842                        wp.hooks.applyFilters('everlightbox.openMedia', slide);
843                        if ( plugin.settings.afterMedia ) {
844                            plugin.settings.afterMedia( index );
845                        }
846                    } );
847                } else {
848                    slide.html( $this.getVideo( src ) );
849
850                    if ( plugin.settings.afterMedia ) {
851                        plugin.settings.afterMedia( index );
852                    }
853                }
854
855            },
856
857
858            /**
859             * Check if the URL is a video
860             */
861            isVideo : function ( src ) {
862
863                if ( src ) {
864                    if ( src.match( /(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/) || src.match( /vimeo\.com\/([0-9]*)/ ) || src.match( /youtu\.be\/([a-zA-Z0-9\-_]+)/ ) ) {
865                        return true;
866                    }
867
868                    if ( src.toLowerCase().indexOf( 'everlightboxvideo=1' ) >= 0 ) {
869
870                        return true;
871                    }
872                }
873
874            },
875
876            /**
877             * Parse URI querystring and:
878             * - overrides value provided via dictionary
879             * - rebuild it again returning a string
880             */
881            parseUri : function (uri, customData) {
882                var a = document.createElement('a'),
883                    qs = {};
884
885                // Decode the URI
886                a.href = decodeURIComponent( uri );
887
888                // QueryString to Object
889                if ( a.search ) {
890                    qs = JSON.parse( '{"' + a.search.toLowerCase().replace('?','').replace(/&/g,'","').replace(/=/g,'":"') + '"}' );
891                }
892
893                // Extend with custom data
894                if ( $.isPlainObject( customData ) ) {
895                    qs = $.extend( qs, customData, plugin.settings.queryStringData ); // The dev has always the final word
896                }
897
898                // Return querystring as a string
899                return $
900                    .map( qs, function (val, key) {
901                        if ( val && val > '' ) {
902                            return encodeURIComponent( key ) + '=' + encodeURIComponent( val );
903                        }
904                    })
905                    .join('&');
906            },
907
908            /**
909             * Get video iframe code from URL
910             */
911            getVideo : function( url ) {
912                var iframe = '',
913                    youtubeUrl = url.match( /((?:www\.)?youtube\.com|(?:www\.)?youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/ ),
914                    youtubeShortUrl = url.match(/(?:www\.)?youtu\.be\/([a-zA-Z0-9\-_]+)/),
915                    vimeoUrl = url.match( /(?:www\.)?vimeo\.com\/([0-9]*)/ ),
916                    qs = '';
917                if ( youtubeUrl || youtubeShortUrl) {
918                    if ( youtubeShortUrl ) {
919                        youtubeUrl = youtubeShortUrl;
920                    }
921                    qs = ui.parseUri( url, {
922                        'autoplay' : ( plugin.settings.autoplayVideos ? '1' : '0' ),
923                        'v' : ''
924                    });
925                    iframe = '<iframe width="560" height="315" src="//' + youtubeUrl[1] + '/embed/' + youtubeUrl[2] + '?' + qs + '" frameborder="0" allowfullscreen></iframe>';
926
927                } else if ( vimeoUrl ) {
928                    qs = ui.parseUri( url, {
929                        'autoplay' : ( plugin.settings.autoplayVideos ? '1' : '0' ),
930                        'byline' : '0',
931                        'portrait' : '0',
932                        'color': plugin.settings.vimeoColor
933                    });
934                    iframe = '<iframe width="560" height="315"  src="//player.vimeo.com/video/' + vimeoUrl[1] + '?' + qs + '" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';
935
936                } else {
937                    iframe = '<iframe width="560" height="315" src="' + url + '" frameborder="0" allowfullscreen></iframe>';
938                }
939
940                return '<div class="everlightbox-video-container"><div class="everlightbox-video">' + iframe + '</div></div>';
941            },
942
943            /**
944             * Load image
945             */
946            loadMedia : function ( src, callback ) {
947                // Inline content
948                if ( src && src.trim().indexOf('#') === 0 ) {
949                    callback.call(
950                        $('<div>', {
951                            'class' : 'everlightbox-inline-container'
952                        })
953                            .append(
954                            $(src)
955                                .clone()
956                                .toggleClass( plugin.settings.toggleClassOnLoad )
957                        )
958                    );
959                }
960                // Everything else
961                else {
962                    if ( ! this.isVideo( src ) ) {
963                        var img = $( '<img>' ).on( 'load', function() {
964                            callback.call( img );
965                        } );
966
967                        img.attr( 'src', src );
968                    }
969                }
970            },
971
972            /**
973             * Get next slide
974             */
975            getNext : function () {
976                var $this = this,
977                    src,
978                    index = $( '#everlightbox-slider .slide' ).index( $( '#everlightbox-slider .slide.current' ) );
979                if ( index + 1 < elements.length ) {
980
981                    src = $( '#everlightbox-slider .slide' ).eq( index ).contents().find( 'iframe' ).attr( 'src' );
982                    $( '#everlightbox-slider .slide' ).eq( index ).contents().find( 'iframe' ).attr( 'src', src );
983                    index++;
984                    $this.setSlide( index );
985                    $this.preloadMedia( index+1 );
986                    if ( plugin.settings.nextSlide ) {
987                        plugin.settings.nextSlide(index);
988                    }
989                } else {
990
991                    if ( plugin.settings.loopAtEnd === true ) {
992                        src = $( '#everlightbox-slider .slide' ).eq( index ).contents().find( 'iframe' ).attr( 'src' );
993                        $( '#everlightbox-slider .slide' ).eq( index ).contents().find( 'iframe' ).attr( 'src', src );
994                        index = 0;
995                        $this.preloadMedia( index );
996                        $this.setSlide( index );
997                        $this.preloadMedia( index + 1 );
998                        if ( plugin.settings.nextSlide ) {
999                            plugin.settings.nextSlide(index);
1000                        }
1001                    } else {
1002                        $( '#everlightbox-overlay' ).addClass( 'rightSpring' );
1003                        setTimeout( function() {
1004                            $( '#everlightbox-overlay' ).removeClass( 'rightSpring' );
1005                        }, 500 );
1006                    }
1007                }
1008            },
1009
1010            /**
1011             * Get previous slide
1012             */
1013            getPrev : function () {
1014                var index = $( '#everlightbox-slider .slide' ).index( $( '#everlightbox-slider .slide.current' ) ),
1015                    src;
1016                if ( index > 0 ) {
1017                    src = $( '#everlightbox-slider .slide' ).eq( index ).contents().find( 'iframe').attr( 'src' );
1018                    $( '#everlightbox-slider .slide' ).eq( index ).contents().find( 'iframe' ).attr( 'src', src );
1019                    index--;
1020                    this.setSlide( index );
1021                    this.preloadMedia( index-1 );
1022                    if ( plugin.settings.prevSlide ) {
1023                        plugin.settings.prevSlide(index);
1024                    }
1025                } else {
1026                    $( '#everlightbox-overlay' ).addClass( 'leftSpring' );
1027                    setTimeout( function() {
1028                        $( '#everlightbox-overlay' ).removeClass( 'leftSpring' );
1029                    }, 500 );
1030                }
1031            },
1032            /* jshint unused:false */
1033            nextSlide : function ( index ) {
1034                // Callback for next slide
1035            },
1036
1037            prevSlide : function ( index ) {
1038                // Callback for prev slide
1039            },
1040
1041            /**
1042             * Close
1043             */
1044            closeSlide : function () {
1045                $( 'html' ).removeClass( 'everlightbox-html' );
1046                $( 'html' ).removeClass( 'everlightbox-touch' );
1047                $( window ).trigger( 'resize' );
1048                this.destroy();
1049            },
1050
1051            /**
1052             * Destroy the whole thing
1053             */
1054            destroy : function () {
1055                $( window ).unbind( 'keyup' );
1056                $( 'body' ).unbind( 'touchstart' );
1057                $( 'body' ).unbind( 'touchmove' );
1058                $( 'body' ).unbind( 'touchend' );
1059                $( '#everlightbox-slider' ).unbind();
1060                $( '#everlightbox-overlay' ).remove();
1061
1062                if ( ! $.isArray( elem ) ) {
1063                    elem.removeData( '_everlightbox' );
1064                }
1065
1066                if ( this.target ) {
1067                    this.target.trigger( 'everlightbox-destroy' );
1068                }
1069
1070                $.everlightbox.isOpen = false;
1071
1072                if ( plugin.settings.afterClose ) {
1073                    plugin.settings.afterClose();
1074                }
1075            }
1076        };
1077
1078        plugin.init();
1079    };
1080
1081    $.fn.everlightbox = function( options ) {
1082
1083        if ( ! $.data( this, '_everlightbox' ) ) {
1084            window.everlightbox = new $.everlightbox( this, options );
1085            this.data( '_everlightbox', everlightbox );
1086        }
1087
1088        return this.data( '_everlightbox' );
1089
1090    };
1091
1092}( window, document, jQuery ) );

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.