(function( $ ){

	$.fn.blockSlider = function( options ) {  

		// Create some defaults, extending them with any options that were provided
		var settings = $.extend( {
			'arrow_one' : '.prev-arrow',
			'arrow_two' : '.next-arrow',
			'direction' : 'vertical',
			'container' : '.item-content',
			'item' : '.item',
			'count' : 4
		}, options);

		var methods = {
			slide: function(slider,modifier){
				var max = 0;
				if( settings.direction === 'vertical' ){
					var min = Math.floor( slider.find( settings.item ).length / settings.count ) * ( slider.find( settings.item+':first' ).outerHeight() * settings.count ) * -1;
					var margin = parseInt( slider.find( settings.container ).css('margin-top') );
					var interval = margin + ( ( slider.find( settings.item+':first' ).outerHeight() * settings.count ) * modifier );
				}
				if( settings.direction === 'horizontal' ){
					var min = Math.floor( slider.find( settings.item ).length / settings.count ) * ( slider.find( settings.item+':first' ).outerWidth() * settings.count ) * -1;
					var margin = parseInt( slider.find( settings.container ).css('margin-left') );
					var interval = margin + ( ( slider.find( settings.item+':first' ).outerWidth() * settings.count ) * modifier );
				}
				

				slider.find( settings.arrow_one ).removeClass('hidden');
				slider.find( settings.arrow_two ).removeClass('hidden');

				if( interval === min || margin == max ){
					slider.find( settings.arrow_two ).addClass('hidden');
				}
				if( interval === max || margin == min ){
					slider.find( settings.arrow_one ).addClass('hidden');
				}

				if( (modifier === -1 && margin > min) || (modifier === 1 && margin < max) ){
					if( settings.direction === 'vertical' ){
						slider.find( settings.container ).animate({
							marginTop: interval+'px'
						}, 400, 'linear');
					}
					if( settings.direction === 'horizontal' ){
						slider.find( settings.container ).animate({
							marginLeft: interval+'px'
						}, 400, 'linear');
					}
				}
			}
		};

		return this.each(function() {        

			var slider = $(this);

			if( settings.direction === 'vertical' ){
				var height = slider.find( settings.item+':first' ).outerHeight() * slider.find( settings.item ).length;
				slider.find( settings.container ).css({
					height: height+'px'
				});
			}
			if( settings.direction === 'horizontal' ){
				var width = slider.find( settings.item+':first' ).outerWidth() * slider.find( settings.item ).length;
				slider.find( settings.container ).css({
					width: width+'px'
				});
			}

			slider.find( settings.arrow_one ).addClass('hidden');
			slider.find( settings.arrow_one ).click(function(){
				methods.slide(slider, 1);

				return false;
			});
			slider.find( settings.arrow_two ).click(function(){
				methods.slide(slider, -1);

				return false;
			});

		});

	};

})( jQuery );

$(function(){
	$('.month-favorites').blockSlider({
		direction: 'horizontal',
		count: 5
	});
});
