1var currentCategory = 'all'; 2var ajaxRunning = false; 3 4jQuery(document).ready(function() { 5 6 initializeSlider(); 7 8 jQuery(".gallery").on("click", ".thumbnail_wrapper li", function () { 9 10 var sliderIndex = jQuery(this).attr('data-counter'); 11 sliderIndex = parseInt(sliderIndex) - 1; 12 jQuery('.gallery .mt_slider').slick('slickGoTo', sliderIndex, true); 13 jQuery("body").addClass("gallery_lightbox_open"); 14 jQuery(".lightbox__wrapper").attr("aria-hidden", "false"); 15 16 }); 17 18 // Add keyboard support for gallery thumbnails 19 jQuery(".gallery").on("keydown", ".thumbnail_wrapper li a", function (e) { 20 if (e.key === "Enter" || e.key === " ") { 21 e.preventDefault(); 22 var sliderIndex = jQuery(this).closest('li').attr('data-counter'); 23 sliderIndex = parseInt(sliderIndex) - 1; 24 jQuery('.gallery .mt_slider').slick('slickGoTo', sliderIndex, true); 25 jQuery("body").addClass("gallery_lightbox_open"); 26 jQuery(".lightbox__wrapper").attr("aria-hidden", "false"); 27 } 28 }); 29 30 jQuery(".lightbox .lightbox__close").on("click", function () { 31 pauseYouTubeVideo(); 32 pauseVideo(); 33 jQuery("body").removeClass("gallery_lightbox_open"); 34 jQuery(".lightbox__wrapper").attr("aria-hidden", "true"); 35 }); 36 37 // Add keyboard support for lightbox close button 38 jQuery(".lightbox .lightbox__close").on("keydown", function (e) { 39 if (e.key === "Enter" || e.key === " ") { 40 e.preventDefault(); 41 pauseYouTubeVideo(); 42 pauseVideo(); 43 jQuery("body").removeClass("gallery_lightbox_open"); 44 jQuery(".lightbox__wrapper").attr("aria-hidden", "true"); 45 } 46 }); 47 48 // Add Escape key support to close lightbox 49 jQuery(document).on("keydown", function (e) { 50 if (e.key === "Escape" && jQuery("body").hasClass("gallery_lightbox_open")) { 51 pauseYouTubeVideo(); 52 pauseVideo(); 53 jQuery("body").removeClass("gallery_lightbox_open"); 54 jQuery(".lightbox__wrapper").attr("aria-hidden", "true"); 55 } 56 }); 57 58 jQuery('.gallery .mt_slider').on('beforeChange', function(event, slick, currentSlide, nextSlide){ 59 pauseYouTubeVideo(); 60 pauseVideo(); 61 }); 62 63 jQuery('.gallery .mt_slider').on('afterChange', function(event, slick, currentSlide, nextSlide){ 64 65 updateCurrentCounter(currentSlide); 66 updateCaption(); 67 playVideo(); 68 playYoutubeVideo(); 69 70 if(currentCategory != 'all') { 71 var category = jQuery('div.slick-active').find('.slide_wrap').attr('data-category'); 72 if(category != currentCategory) { 73 currentCategory = category; 74 updateTotalCount(); 75 var type = 'category_switch'; 76 var pagenumber = ''; 77 renderGalleryImages(pagenumber, type); 78 jQuery('#category_selector button').removeClass('selectivo__option--selected'); 79 jQuery('#category_selector button.'+category).addClass('selectivo__option--selected'); 80 updateDropdownButtonText(category); 81 } 82 } 83 }); 84 85 jQuery('a#load_more').click(function(){ 86 var type = 'loadmore'; 87 var pagenumber = jQuery('input[name=current_page_'+currentCategory+']').val(); 88 renderGalleryImages(pagenumber, type); 89 }); 90 91 // Add keyboard support for Load More button 92 jQuery('a#load_more').on('keydown', function(e){ 93 if (e.key === "Enter" || e.key === " ") { 94 e.preventDefault(); 95 var type = 'loadmore'; 96 var pagenumber = jQuery('input[name=current_page_'+currentCategory+']').val(); 97 renderGalleryImages(pagenumber, type); 98 } 99 }); 100 101 jQuery('div#category_selector button').click(function(){ 102 var selectedCategory = jQuery(this).attr('data-category'); 103 if( selectedCategory != currentCategory ) { 104 currentCategory = selectedCategory; 105 updateTotalCount(); 106 var type = 'category_switch'; 107 var pagenumber = ''; 108 renderGalleryImages(pagenumber, type); 109 updateDropdownButtonText(selectedCategory); 110 } 111 }); 112 113}); 114 115function refreshGalleryAos() { 116 if (typeof AOS !== 'undefined') { 117 AOS.refresh(); 118 } 119} 120 121function updateCaption() { 122 var caption = jQuery('div.slick-active').find('.slide_wrap').attr('data-caption'); 123 jQuery('.mt_gallery_caption p').html(caption); 124} 125 126function pauseVideo() { 127 if( jQuery('div.slick-active').find('video').length > 0 ) { 128 let video = document.getElementById( jQuery('div.slick-active').find('video').attr('id') ); 129 if (!video.paused) { 130 video.pause(); 131 } 132 } 133} 134 135function playVideo() { 136 if( jQuery('div.slick-active').find('video').length > 0 ) { 137 let video = document.getElementById( jQuery('div.slick-active').find('video').attr('id') ); 138 if (video.paused) { 139 video.play(); 140 } 141 } 142} 143 144function pauseYouTubeVideo() { 145 if( jQuery('div.slick-active').find('iframe.youtube').length > 0 ) { 146 let iframe = jQuery('div.slick-active').find('iframe.youtube')[0]; 147 // Stop any currently playing YouTube video by removing and recreating iframe 148 if (iframe && iframe.src) {
149 let originalSrc = iframe.src; 150 let parentNode = iframe.parentNode; 151 let className = iframe.className; 152 let width = iframe.getAttribute('width'); 153 let height = iframe.getAttribute('height'); 154 let style = iframe.getAttribute('style'); 155 // Remove the iframe to stop the video 156 iframe.remove(); 157 // Recreate the iframe with the same src but without autoplay 158 let newIframe = document.createElement('iframe'); 159 newIframe.src = originalSrc.replace(/autoplay=1/g, 'autoplay=0'); 160 newIframe.className = className; 161 if (width) newIframe.setAttribute('width', width); 162 if (height) newIframe.setAttribute('height', height); 163 if (style) newIframe.setAttribute('style', style); 164 newIframe.setAttribute('allowfullscreen', ''); 165 newIframe.setAttribute('frameborder', '0'); 166 // Insert the new iframe in the parent node 167 parentNode.appendChild(newIframe); 168 } 169 } 170 } 171 172function playYoutubeVideo() { 173 if( jQuery('div.slick-active').find('iframe.youtube').length > 0 ) { 174 let iframe = jQuery('div.slick-active').find('iframe.youtube')[0]; 175 if (iframe && iframe.contentWindow) { 176 iframe.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', '*'); 177 } 178 } 179} 180 181function updateTotalCount() { 182 var totalCount = jQuery('input[name=hidden_category_counter_'+currentCategory+']').val(); 183 jQuery('div.mt_gallery_caption span.total_slide').html(totalCount); 184} 185 186function updateCurrentCounter(currentSlide) { 187 if(currentCategory == 'all') { 188 var slideCounter = parseInt(currentSlide) + 1; 189 } else { 190 var slideCounter = jQuery('div.slick-active').find('.slide_wrap').attr('data-category-counter'); 191 } 192 jQuery('div.mt_gallery_caption span.current_slide').html(slideCounter); 193} 194 195// Update the dropdown button text 196function updateDropdownButtonText(category) { 197 var categoryText = jQuery('#category_selector button.' + category).text(); 198 jQuery('.selectivo__label').text(categoryText); 199} 200 201function renderGalleryImages(pagenumber, type) { 202 203 if(ajaxRunning) { 204 return false; 205 } 206 207 if(pagenumber == '') { 208 var nextPageNumber = 1; 209 } else { 210 var nextPageNumber = parseInt(pagenumber) + 1; 211 } 212 213 var pagination_limit = jQuery('input[name=hidden_pagination_limit]').val(); 214 var totalPages = jQuery('input[name=hidden_totalpages_'+currentCategory+']').val(); 215 216 jQuery.ajax({ 217 url : ajax_url, 218 type : 'POST', 219 data : { 220 action : 'render_gallery_images', 221 pagenumber : nextPageNumber, 222 pagination_limit : pagination_limit, 223 category : currentCategory 224 }, 225 beforeSend: function() { 226 ajaxRunning = true; 227 jQuery('a#load_more').html('Please Wait'); 228 }, 229 success : function (html ) { 230 if(type == 'loadmore') { 231 jQuery('div.thumbnail_wrapper ul').append(html); 232 } else { 233 jQuery('div.thumbnail_wrapper ul').html(html); 234 } 235 236 if(totalPages <= nextPageNumber) { 237 jQuery('a#load_more').hide(); 238 } else if( totalPages > nextPageNumber ) { 239 jQuery('a#load_more').show(); 240 } 241 242 //if(type == 'loadmore') { 243 // jQuery('html,body').animate({ 244 // scrollTop: jQuery(".gallery-img-ajx").offset().top - 100 245 // },'slow'); 246 //} 247 248 refreshGalleryAos(); 249 250 jQuery('div.thumbnail_wrapper ul li').removeClass('gallery-img-ajx'); 251 252 jQuery('input[name=current_page_'+currentCategory+']').val(nextPageNumber); 253 254 jQuery('a#load_more').html('Load More'); 255 256 ajaxRunning = false; 257 } 258 }); 259} 260 261function initializeSlider() { 262 jQuery(".gallery .mt_slider").slick({ 263 dots:false, 264 adaptiveHeight: true 265 }); 266}
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.