(function($, window, document, undefined) {
'use strict';
var gridContainer = $('#grid-portfolio'),
filtersContainer = $('#filters-portfolio'),
wrap, filtersCallback;
/*********************************
init cubeportfolio
*********************************/
gridContainer.cubeportfolio({
defaultFilter: '*',
animationType: 'flipOutDelay',
gapHorizontal: 35,
gapVertical: 30,
gridAdjustment: 'responsive',
caption: 'overlayBottomReveal',
displayType: 'lazyLoading',
displayTypeSpeed: 100,
// lightbox
lightboxDelegate: '.cbp-lightbox',
lightboxGallery: true,
lightboxTitleSrc: 'data-title',
lightboxCounter: '
',
// singlePage popup
singlePageDelegate: '.cbp-singlePage',
singlePageDeeplinking: true,
singlePageStickyNavigation: true,
singlePageCounter: '',
singlePageCallback: function(url, element) {
// dont use ajax
window.location = url;
// to update singlePage content use the following method: this.updateSinglePage(yourContent)
var t = this;
// $.ajax({
// url: url,
// type: 'GET',
// dataType: 'html',
// timeout: 5000
// })
// .done(function(result) {
// t.updateSinglePage(result);
// })
// .fail(function() {
// t.updateSinglePage("Error! Please refresh the page!");
// });
},
// single page inline
singlePageInlineDelegate: '.cbp-singlePageInline',
singlePageInlinePosition: 'above',
singlePageInlineInFocus: true,
singlePageInlineCallback: function(url, element) {
// to update singlePage Inline content use the following method: this.updateSinglePageInline(yourContent)
}
});
/*********************************
add listener for filters
*********************************/
if (filtersContainer.hasClass('cbp-l-filters-dropdown')) {
wrap = filtersContainer.find('.cbp-l-filters-dropdownWrap');
wrap.on({
'mouseover.cbp': function() {
wrap.addClass('cbp-l-filters-dropdownWrap-open');
},
'mouseleave.cbp': function() {
wrap.removeClass('cbp-l-filters-dropdownWrap-open');
}
});
filtersCallback = function(me) {
wrap.find('.cbp-filter-item').removeClass('cbp-filter-item-active');
wrap.find('.cbp-l-filters-dropdownHeader').text(me.text());
me.addClass('cbp-filter-item-active');
wrap.trigger('mouseleave.cbp');
};
} else {
filtersCallback = function(me) {
me.addClass('cbp-filter-item-active').siblings().removeClass('cbp-filter-item-active');
};
}
filtersContainer.on('click.cbp', '.cbp-filter-item', function() {
var me = $(this);
if (me.hasClass('cbp-filter-item-active')) {
return;
}
// get cubeportfolio data and check if is still animating (reposition) the items.
if (!$.data(gridContainer[0], 'cubeportfolio').isAnimating) {
filtersCallback.call(null, me);
}
// filter the items
gridContainer.cubeportfolio('filter', me.data('filter'), function() {});
});
/*********************************
activate counter for filters
*********************************/
gridContainer.cubeportfolio('showCounter', filtersContainer.find('.cbp-filter-item'), function() {
// read from url and change filter active
var match = /#cbpf=(.*?)([#|?&]|$)/gi.exec(location.href),
item;
if (match !== null) {
item = filtersContainer.find('.cbp-filter-item').filter('[data-filter="' + match[1] + '"]');
if (item.length) {
filtersCallback.call(null, item);
}
}
});
/*********************************
add listener for load more
*********************************/
$('.cbp-l-loadMore-button-link').on('click.cbp', function(e) {
e.preventDefault();
var clicks, me = $(this),
oMsg;
if (me.hasClass('cbp-l-loadMore-button-stop')) {
return;
}
// get the number of times the loadMore link has been clicked
clicks = $.data(this, 'numberOfClicks');
clicks = (clicks) ? ++clicks : 1;
$.data(this, 'numberOfClicks', clicks);
// set loading status
oMsg = me.text();
me.text('LOADING...');
// perform ajax request
$.ajax({
url: me.attr('href'),
type: 'GET',
dataType: 'HTML'
}).done(function(result) {
var items, itemsNext;
// find current container
items = $(result).filter(function() {
return $(this).is('div' + '.cbp-loadMore-block' + clicks);
});
gridContainer.cubeportfolio('appendItems', items.html(),
function() {
// put the original message back
me.text(oMsg);
// check if we have more works
itemsNext = $(result).filter(function() {
return $(this).is('div' + '.cbp-loadMore-block' + (clicks + 1));
});
if (itemsNext.length === 0) {
me.text('NO MORE WORKS');
me.addClass('cbp-l-loadMore-button-stop');
}
});
}).fail(function() {
// error
});
});
})(jQuery, window, document);