;(function($){
	var bbAccordion = {
		url : BASE_URL + 'accordion/list/get/id/',
		height : 281,
		anim_time : 1000,
		init_rows : 2,	// number of product init rows
		
		init : function(index, element){
			$('a.more', element).click( bbAccordion.load );
			$('a.less', element).click( bbAccordion.hide );
		},

		hide : function(event){
			var elem = $(event.target);
			var li = elem.parents('li.show_all_link');
			var ul = li.prev('li').find('ul.current_list');
			var h = bbAccordion.height * bbAccordion.init_rows;

			ul.animate({height : h}, bbAccordion.anim_time, function(){
				var index_to_hide = bbAccordion.init_rows * 4 - 1;
				$('.item:gt(' + index_to_hide + ')', ul).hide();
				$('.more', li).show();
				$('.less', li).hide();
			});
		},

		show : function(ul, li){
			new_height = bbAccordion.height * Math.ceil( $(ul.children('li:visible'), ul).size() / 4);
			ul.animate({height : new_height}, bbAccordion.anim_time);
			
			li.removeClass('w8');
			$('.more', li).hide();
			$('.less', li).show();
		},

		load : function(event){
			var elem = $(event.target);
			var li = elem.parents('li.show_all_link');
			var ul = li.prev('li').find('ul.current_list');

			var lis = $('>li', ul);
			if(lis.size() > bbAccordion.init_rows * 4){
				lis.show();
				bbAccordion.show(ul, li);
				return;
			}
			var cat_id = li.attr('id').replace('li_more_', '');

			li.addClass('w8');

			var url = bbAccordion.url + cat_id;
			if(current_list_sort){
				url += '/order/' + current_list_sort;
			}
			if(current_list_dir){
				url += '/dir/' + current_list_dir;
			}

			if(bb_lay_price_from_val){
				url += '/price_from/' + bb_lay_price_from_val;
			}
			if(bb_lay_price_to_val){
				url += '/price_to/' + bb_lay_price_to_val;
			}

			// categories list from layered navigation
			url += bbAccordion.getLayeredCats(cat_id);
			
			$.ajax({
				url		: url,
				type	: 'GET',
				success	: function(data){bbAccordion.onAjaxSuccess(elem, data);},
				error	: function(){bbAccordion.onAjaxError(elem);}
			});
		},

		getLayeredCats : function(cat_id)
		{
			var layered_cats = $('#lay_cat_' + cat_id);
			if(layered_cats.size() > 0){
				var lis = $('li.active', layered_cats);
				if(lis.size() > 0){
					var cats = [];
					lis.each( function(){
						cats.push( $(this).attr('id').replace('lay_cat_', '') );
					});
					return '/cats/' + cats.join(',');
				}
			}
			
			return '';
		},

		onAjaxSuccess : function(elem, data){
			var li = elem.parents('li.show_all_link');
			var ul = li.prev('li').find('ul.current_list');
			ul.height(bbAccordion.height * bbAccordion.init_rows);
			
			var del = $('.item', ul);

			del.remove();
			ul.html(data);
			
			bbAccordion.show(ul, li);
			$('a.quickview', ul).bbQuickview();
		},

		onAjaxError : function(elem){
			
		}
	};
	

	$.fn.bbAccordion = function(){
		return this.each( bbAccordion.init );
	};
	
})(jQuery);


jQuery(document).ready( function($){
	$('.show_all_link').bbAccordion();
});

