(function($){
"use strict";
$.fn.avia_masonry=function(options){
if(!this.length) return this;
var the_body=$('body'),
the_win=$(window),
isMobile=$.avia_utilities.isMobile,
loading=false,
methods={
masonry_filter: function(){
var current=$(this),
linktext=current.html(),
selector=current.data('filter'),
masonry=current.parents('.av-masonry').eq(0),
container=masonry.find('.av-masonry-container').eq(0),
links=masonry.find('.av-masonry-sort a'),
activeCat=masonry.find('.av-current-sort-title');
links.removeClass('active_sort');
current.addClass('active_sort');
container.attr('id', 'masonry_id_'+selector);
if(activeCat.length) activeCat.html(linktext);
methods.applyMasonry(container, selector, function(){
container.css({overflow:'visible'});
});
setTimeout(function(){ the_win.trigger('debouncedresize'); }, 500);
return false;
},
applyMasonry: function(container, selector, callback){
var filters=selector ? {filter: '.'+selector}:{};
filters['layoutMode']='packery';
filters['packery']={gutter:0};
filters['percentPosition']=true;
filters['itemSelector']="a.isotope-item, div.isotope-item";
filters['originLeft']=$('body').hasClass('rtl') ? false:true;
container.isotope(filters, function(){
the_win.trigger('av-height-change');
});
if(typeof callback==='function'){
setTimeout(callback, 0);
}},
show_bricks: function(bricks, callback){
bricks.each(function(i){
var currentLink=$(this),
browserPrefix=$.avia_utilities.supports('transition'),
multiplier=isMobile ? 0:100;
setTimeout(function(){
if(browserPrefix===false){
currentLink.css({visibility:"visible", opacity:0}).animate({opacity:1},1500);
}else{
currentLink.addClass('av-masonry-item-loaded');
}
if(i==bricks.length - 1&&typeof callback=='function'){
callback.call();
the_win.trigger('av-height-change');
}}, (multiplier * i));
});
},
loadMore: function(e){
e.preventDefault();
if(loading) return false;
loading=true;
var current=$(this),
data=current.data(),
masonry=current.parents('.av-masonry').eq(0),
container=masonry.find('.av-masonry-container'),
items=masonry.find('.av-masonry-entry'),
loader=$.avia_utilities.loading(),
finished=function(){ loading=false; loader.hide(); the_body.trigger('av_resize_finished'); };
if(!data.offset){ data.offset=0; }
data.offset +=data.items;
data.action='avia_ajax_masonry_more';
data.loaded=[];
items.each(function(){
var item_id=$(this).data('av-masonry-item');
if(item_id) data.loaded.push(item_id);
});
$.ajax({
url: avia_framework_globals.ajaxurl,
type: "POST",
data:data,
beforeSend: function(){
loader.show();
},
success: function(response){
if(response.indexOf("{av-masonry-loaded}")!==-1){
var response=response.split('{av-masonry-loaded}'),
new_items=$(response.pop()).filter('.isotope-item');
if(new_items.length > data.items){
new_items=new_items.not(new_items.last());
}else{
current.addClass('av-masonry-no-more-items');
}
var load_container=$('<div class="loadcontainer"></div>').append(new_items);
$.avia_utilities.preload({container: load_container, single_callback:  function(){
var links=masonry.find('.av-masonry-sort a'),
filter_container=masonry.find('.av-sort-by-term'),
allowed_filters=filter_container.data("av-allowed-sort");
filter_container.hide();
loader.hide();
container.isotope('insert', new_items);
$.avia_utilities.avia_ajax_call(masonry);
setTimeout(function(){ methods.show_bricks(new_items , finished); },150);
setTimeout(function(){ the_win.trigger('av-height-change'); }, 550);
if(links){
$(links).each(function(filterlinkindex){
var filterlink=$(this),
sort=filterlink.data('filter');
if(new_items){
$(new_items).each(function(itemindex){
var item=$(this);
if(item.hasClass(sort)&&allowed_filters.indexOf(sort)!==-1){
var term_count=filterlink.find('.avia-term-count').text();
filterlink.find('.avia-term-count').text(' ' + (parseInt(term_count) + 1) + ' ');
if(filterlink.hasClass('avia_hide_sort')){
filterlink.removeClass('avia_hide_sort').addClass('avia_show_sort');
masonry.find('.av-masonry-sort .'+sort+'_sep').removeClass('avia_hide_sort').addClass('avia_show_sort');
masonry.find('.av-masonry-sort .av-sort-by-term').removeClass('hidden');
}}
});
}});
}
filter_container.fadeIn();
}});
}else{
finished();
}},
error: finished,
complete: function(){
setTimeout(function(){ the_win.trigger('debouncedresize'); }, 500);
}});
}};
return this.each(function(){
var masonry=$(this),
container=masonry.find('.av-masonry-container'),
bricks=masonry.find('.isotope-item'),
filter=masonry.find('.av-masonry-sort').css({visibility:"visible", opacity:0}).on('click', 'a',  methods.masonry_filter),
load_more=masonry.find('.av-masonry-load-more').css({visibility:"visible", opacity:0});
$.avia_utilities.preload({container: container, single_callback:  function(){
var start_animation=function(){
filter.animate({opacity:1}, 400);
if(container.outerHeight() + container.offset().top + $('#footer').outerHeight() > $(window).height()){
$('html').css({'overflow-y':'scroll'});
}
methods.applyMasonry(container, false, function(){
masonry.addClass('avia_sortable_active');
container.removeClass('av-js-disabled ');
});
methods.show_bricks(bricks, function(){
load_more.css({opacity:1}).on('click',  methods.loadMore);
});
};
if(isMobile){
start_animation();
}else{
masonry.waypoint(start_animation , { offset: '80%'});
}
$(window).on('debouncedresize', function(){
methods.applyMasonry(container, false, function(){
masonry.addClass('avia_sortable_active');
});
});
}});
});
};}(jQuery));