// -------------------------------------------------------------------------------------------
//
// AVIA Magazine function for magazine sorting
//
// -------------------------------------------------------------------------------------------
(function($)
{
	"use strict";

	var animating = false,
		methods = {

			switchMag: function(clicked, _self)
			{
				var current = $(clicked);

				if( current.is('.active_sort') || animating )
				{
					return;
				}

				var filter = current.data('filter'),
					oldContainer = _self.container.filter(':visible'),
					newContainer = _self.container.filter( '.' + filter );

				//switch Class
				animating = true;
				_self.sort_buttons.removeClass('active_sort');
				current.addClass('active_sort');

				//apply fixed heiht for transition
				_self.magazine.height(_self.magazine.outerHeight());

				//switch items
				oldContainer.avia_animate({opacity:0}, 200, function()
				{
					oldContainer.css({display:'none'});
					newContainer.css({opacity:0, display:'block'}).avia_animate({opacity:1}, 150, function()
					{
						_self.magazine.avia_animate({height: (newContainer.outerHeight() + _self.sort_bar.outerHeight())}, 150, function()
						{
							_self.magazine.height('auto');
							animating = false;
						});
					});
				});
			}
	};


	$.fn.aviaMagazine = function( options )
	{
		if( ! this.length )
		{
			return;
		}

		return this.each(function()
		{
			var _self = {};

			_self.magazine = $(this),
			_self.sort_buttons = _self.magazine.find('.av-magazine-sort a');
			_self.container = _self.magazine.find('.av-magazine-group');
			_self.sort_bar = _self.magazine.find('.av-magazine-top-bar');

			//	Hide sort buttons that link to an empty container
			_self.sort_buttons.each( function (i)
			{
				var current = $( this ),
					filter = current.data('filter'),
					entry = _self.container.filter( '.' + filter );

				if( entry.length == 0 || entry.html().trim() == '' )
				{
					current.hide();
					current.prev('span.text-sep').hide();
				}
			});

			_self.sort_buttons.on( 'click', function(e)
			{
				e.preventDefault();
				methods.switchMag(this, _self);
			});
		});
	};

}(jQuery));