PageSourceSearch

https://vafeiadisstefanos.gr/templates/resort2/js/init_photoswipe.js

js vafeiadisstefanos.gr collected 2026-09-27 14:03:02 UTC 2,884 bytes, 98 lines download raw bytes

1// Inits photoswipe. A js library for responsive, mobile friendly,
2// touch enabled lightbox.
3// This script should be loaded in the /inc/photoswipe.php file.
4
5$(document).ready(function() {
6
7  var launchPhotoswipe = function(pic, gallery) {
8    var pswpElement = document.querySelectorAll('.pswp')[0];
9    // Build items array
10    var phItems = [];
11    var itemCount = 0;
12    var picIndex = 0;
13    gallery.find('a').each(function() {
14      var cImg = $(this);
15      phItem = {
16          'src': cImg.attr('href'),
17          'w': 800,
18          'h': 600,
19          'title': cImg.attr('title')
20      };
21
22      // Small image placeholder, have to check if it exists first
23      if (cImg.find('img.thumb').length > 0) {
24        var cThumb = cImg.find('.thumb');
25        phItem.msrc = cThumb.attr('src');
26        phItem.w = cThumb.prop('naturalWidth');
27        phItem.h = cThumb.prop('naturalHeight');
28      }
29      phItems.push(phItem);
30      // Get the index of the current item so that the gallery opens with
31      // the image we clicked on.
32      if (pic.attr('href') === cImg.attr('href')) {
33        picIndex = itemCount;
34      }
35      itemCount += 1;
36    });
37
38    var thumbBounds = function(index) {
39      var th = pic.find('img');
40      var bounds = {
41        'x': th.offset().left,
42        'y': th.offset().top,
43        'w': th.width()
44      };
45      return  bounds;
46    };
47
48    // Define options
49    var phOptions = {
50      index: picIndex, // start at first slide
51      getThumbBoundsFn: thumbBounds,
52      showHideOpacity:true,
53      bgOpacity: 0.8,
54      loop: true
55    };
56
57    // Initializes and opens PhotoSwipe
58    var pswGallery = new PhotoSwipe(
59      pswpElement,
60      PhotoSwipeUI_Default,
61      phItems,
62      phOptions
63    );
64    pswGallery.init();
65  };
66
67  function attachPicEvents(galleries) {
68    // Init photoswipe everytime we click on an image link in a gallery.
69    galleries.on('click', function(e) {
70      // Make sure we got the photoswipe element.
71      var thisEl = $(e.target);
72      var thisGallery = thisEl.closest('.photoswipe-gallery, .submenu-gallery');
73      if (! thisEl.is('a')) {
74        thisEl = thisEl.closest('a');
75      }
76      var imgFormats = ['.jpg', '.jpeg', '.png', '.JPG'];
77      // Check if our element links to an image. If it does then launch Photoswipe. Else let
78      // the event do what it is supposed to do.
79      $.each(imgFormats, function(index, value) {
80        if (thisEl.attr('href').indexOf(value) >= 0) {
81          console.log(thisEl.attr('href'));
82          e.preventDefault();
83          launchPhotoswipe(thisEl, thisGallery);
84          return false;
85        }
86      });
87    });
88  }
89
90  if ( $('body.gallery').length > 0 ) {
91    attachPicEvents($('.photoswipe-gallery, .submenu-gallery'));
92  } else {
93    setTimeout(function() {
94      attachPicEvents($('.photoswipe-gallery, .submenu-gallery'));
95    }, 1000);
96  }
97
98});

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.