(function($) {
	$.fn.paginator = function(options) {
		
		var settings = $.extend({}, $.fn.paginator.defaults, options);

		return this.each(function() {
			var $container = $(this);

			var $pages = $container.children(settings.pages);
			var $prev = $(settings.prev);
			var $next = $(settings.next);

			var $currentPage = $pages.filter(':eq(0)');
			$currentPage.siblings().hide();

			var height = $container.children(settings.pages + ':first').height();
			//alert(height);
			
			//$container.css('overflow', 'hidden').height(height);
			$container.css('overflow', 'hidden');
			//alert('sdf');
			$next.click(function() {
			
				nextPage();
				return false;
			});
			
			if($pages.size() < 2) {
				$next.addClass('disabled').addClass('next_disabled');
			}
			
			$prev.click(function() {
				prevPage();
				
				return false;
			}).addClass('disabled').addClass('prev_disabled');
			
			function nextPage() {
				var $nextPage = $currentPage.next();
				
				if($nextPage.size() > 0) {
					$currentPage.fadeOut('fast', function() {
						$nextPage.fadeIn('fast', function() {
							var newHeight = $nextPage.outerHeight(true);
							$currentPage = $nextPage;
							$container.animate({
								'height': newHeight + 'px'
							});
							
							setActive();
						});
						
					});
				}
				
			}
			
			function prevPage() {
				var $prevPage = $currentPage.prev();
			
				if($prevPage.size() > 0) {
					$currentPage.fadeOut('fast', function() {
						$prevPage.fadeIn('fast', function() {
							var newHeight = $prevPage.outerHeight(true);
							
							$currentPage = $prevPage;
							$container.animate({
								'height': newHeight + 'px'
							});
							
							setActive();
						});
						
						
					});
				}
			}
			
			function setActive() {
				if($currentPage.next().size() > 0) {
					$next.removeClass('disabled').removeClass('next_disabled');
				}
				else {
					$next.addClass('disabled').addClass('next_disabled');
				}
				
				if($currentPage.prev().size() > 0) {
					$prev.removeClass('disabled').removeClass('prev_disabled');
				}
				else {
					$prev.addClass('disabled').addClass('prev_disabled');
				}

			}
			
		});
	};
	
	$.fn.paginator.defaults = {
		'perPage': 2,
		'prev': 'a.prev',
		'next': 'a.next',
		'pages' : 'div.page',
		'numbers' : null
	};
})(jQuery);
