jQuery(function($) { var updateOnScroll = false; $('.dmg-gallery').each(function(i, el) { var $gallery = $(el); $gallery.isotope({ itemSelector: '.dmg_masonry_gallery_item', masonry : { columnWidth: '.dmg-gallery-sizer', gutter : '.dmg-gutter-sizer', percentPosition: true } }); $gallery.imagesLoaded(function() { $gallery.isotope('layout'); }); $gallery.imagesLoaded().progress( function() { $gallery.isotope('layout'); }); $gallery.on('layoutComplete', function(){ $(window).trigger("scroll"); }); $('img.lazyload').load(function() { $gallery.isotope('layout'); }); dmg_lightbox( $gallery ); }); if (updateOnScroll) { var scrollTO = null; $(window).scroll(function() { clearTimeout(scrollTO); scrollTO = setTimeout(function() { $('.dmg-gallery').isotope('layout'); }, 300); }); } $(window).on('scroll', function() { var top = $(window).scrollTop(); $('.dmg_masonry_gallery').each(function(i, el) { var $gallery = $(el), sideFilters = $gallery.find('.dmg-gallery-filter-side').eq(0); if ( sideFilters.length ) { var menuHeight = 0, $menu = $('#main-header'); if ( $menu.length ) menuHeight = $menu.outerHeight(); var galleryTop = $gallery.offset().top var max = $gallery.outerHeight() - sideFilters.outerHeight(); if ( top + menuHeight > galleryTop ) { if ( (top - menuHeight) > max ) { sideFilters.css('top', max + 'px'); } else { sideFilters.css('top', (top - menuHeight) + 'px'); } } else { sideFilters.css('top', '0'); } $gallery.find('.dmg-gallery').css('min-height', sideFilters.outerHeight() + 'px'); } }); }); $(document).on('lazyloaded', function(e) { console.log("lazy"); var $gallery = $(e.target).parents('.dmg-gallery'); if ($gallery.length) { $gallery.isotope('layout'); } }); $('.dmg-gallery-filter').on('click', function() { var $this = $(this), value = $this.attr('data-value'), $wrapper = $this.parents('.dmg-gallery-wrapper'), $filter = $wrapper.find('.dmg-gallery-filter-categories'); if ($this.hasClass('dmg-filter-active')) return; $filter.attr('data-value', value); $filter.find('.dmg-filter-active').removeClass('dmg-filter-active'); $this.addClass('dmg-filter-active'); executeFilter('category', $wrapper); }); $('.dmg-gallery-page-button').on('click', function() { var $this = $(this), page = $this.attr('data-value'), $wrapper = $this.parents('.dmg-gallery-wrapper'), $paginator = $wrapper.find('.dmg-gallery-pagination'), excludeMovement = false, max = Number($paginator.attr('data-max')), current = Number($paginator.attr('data-value')); if ( page == 'more') { page = 1; excludeMovement = true; var pageSize = Number($paginator.attr('data-page-size')), more = Number($paginator.attr('data-more')); $paginator.attr('data-page-size', pageSize + more); if ( pageSize >= more * (max-1)) { $this.addClass('dmg-page-disabled'); } } else if (page == 'prev') { if ( current > 1) page = current - 1; else return; } else if ( page == 'next') { if ( current < max) page = current + 1; else return; } else if (page == $paginator.attr('data-value')) return; $paginator.attr('data-value', page); $paginator.find('.dmg-gallery-page-button-active').removeClass('dmg-gallery-page-button-active'); $paginator.find('.dmg-gallery-page-button[data-value="' + page + '"]').addClass('dmg-gallery-page-button-active'); executeFilter('page', $wrapper, excludeMovement); }); function dmg_lightbox( $gallery ) { if ($gallery.hasClass('dmg-modal-gallery')) { var legend = $gallery.hasClass('dmg-modal-gallery-with-title'); $gallery.find('a.dmg_masonry_gallery_item').not('.dmg-minimized-link').not('.dmg-out-filter').magnificPopup({ type: 'image', closeOnContentClick: false, closeBtnInside: false, mainClass: 'mfp-with-zoom mfp-img-mobile', image : { titleSrc : function(item) { if ( legend ) { var title = '' + item.el.attr('data-title') + '' || '' ; var caption = item.el.attr('data-caption') || '' ; if ( $gallery.hasClass('dmg-modal-title__title_caption')) { return '' + title + '
' + caption + ''; } else if ( $gallery.hasClass('dmg-modal-title__caption')) { return '' + caption + ''; } else if ( $gallery.hasClass('dmg-modal-title__in_title')) { return '' + title + '
' + caption + ''; } else if ( $gallery.hasClass('dmg-modal-title__in_title_caption')) { return '' + title + '
' + caption + ''; } else if ( $gallery.hasClass('dmg-modal-title__in_caption')) { return '' + caption + ''; } else return title; } } }, gallery: { enabled: true, tPrev: '', tNext: '', tCounter: '' }, zoom: { enabled: true, duration: 300, // don't foget to change the duration also in CSS opener: function(element) { return element.find('img'); } }, callbacks: { change: function() { if (this.isOpen) { this.wrap.addClass('mfp-open'); } }, open: function() { if ( $gallery.hasClass('dmg-modal-title__in_title') || $gallery.hasClass('dmg-modal-title__in_title_caption') || $gallery.hasClass('dmg-modal-title__in_caption') ) { $(this.container).addClass('dmg-modal-in-data'); } } } }); } } function executeFilter(type, $wrapper, excludeMovement) { var $filter = $wrapper.find('.dmg-gallery-filter-categories'), withFilter = $filter.length > 0, category = null, $paginator = $wrapper.find('.dmg-gallery-pagination'), withPagination = $paginator.length > 0, page = 0, pageSize = 0, $gallery = $wrapper.find('.dmg-gallery'), items = $gallery.find('.dmg_masonry_gallery_item'), hasSideFilter = $gallery.parents('.dmg_masonry_gallery').find('.dmg-gallery-filter-side').length > 0; $gallery.find('.dmg-out-page').removeClass('dmg-out-page'); $gallery.find('.dmg-out-filter').removeClass('dmg-out-filter'); items.addClass('dmg-in-filter'); if (withFilter) { category = $filter.attr('data-value'); $.each(items, function(index, item) { var $item = $(item); var categories = $item.attr('data-categories') if (category && categories.split(',').indexOf(category) < 0) { $item.removeClass('dmg-in-filter'); $item.addClass('dmg-out-filter'); } }); } if (withPagination) { pageSize = $paginator.attr('data-page-size'); if (type == 'category') { $paginator.attr('data-value', 1); $paginator.attr('data-page-size', $paginator.attr('data-more')); $paginator.find('.dmg-page-disabled').removeClass('dmg-page-disabled'); $paginator.find('.dmg-gallery-page-button-active').removeClass('dmg-gallery-page-button-active'); $paginator.find('.dmg-gallery-page-button') .not('.dmg-gallery-page-button-prev') .not('.dmg-gallery-page-button-next') .not('.dmg-gallery-page-button-more') .eq(0).addClass('dmg-gallery-page-button-active'); var categoryTotal = $gallery.find('.dmg-in-filter').length, categoryPages = Math.ceil(categoryTotal/pageSize); $paginator.attr('data-max', categoryPages); $paginator.find('.dmg-gallery-page-button') .not('.dmg-gallery-page-button-prev') .not('.dmg-gallery-page-button-next') .not('.dmg-gallery-page-button-more') .each(function(i, button) { if (i >= categoryPages) $(button).addClass('dmg-page-disabled'); }); if ( categoryPages <= 1 ) { $paginator.find('.dmg-gallery-page-button-more').addClass('dmg-page-disabled'); } else { $paginator.find('.dmg-gallery-page-button-next').removeClass('dmg-page-disabled'); } } page = $paginator.attr('data-value'); var min = pageSize * (page - 1), max = pageSize * page; filteredItems = []; if (category) { filteredItems = items.filter('.dmg-in-filter'); } else { filteredItems = items; } if ( page == 1 ) { $paginator.find('.dmg-gallery-page-button-prev').addClass('dmg-page-disabled'); } else { $paginator.find('.dmg-gallery-page-button-prev').removeClass('dmg-page-disabled'); } if ( page == $paginator.attr('data-max') ) { $paginator.find('.dmg-gallery-page-button-next').addClass('dmg-page-disabled'); } else { $paginator.find('.dmg-gallery-page-button-next').removeClass('dmg-page-disabled'); } $.each(filteredItems, function(index, item) { if (index < min || index >= max) $(item).addClass('dmg-out-page'); }); } if (( type == 'page' && !excludeMovement && $paginator.hasClass('dmg-gallery-pagination-scrollable')) || hasSideFilter) { var offset = Number($paginator.attr('data-offset')); if ( isNaN(offset) || offset < 0 ) offset = 0; $([document.documentElement, document.body]).animate({ scrollTop: $gallery.offset().top - offset }, 750); } $gallery.addClass('execute-filter'); $gallery.isotope({ filter: function() { return $(this).hasClass('dmg-in-filter') && !$(this).hasClass('dmg-out-page'); } }); dmg_lightbox( $gallery ); } $("img.dmg-lazyload").lazyload(); $("img.dmg-lazyload").on("load", function() { $(this).parents('.dmg-gallery').isotope('layout'); }); });