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');
});
});