dsg.fn.initBasket = function(){
	
	var $basketControler = $j("#basket-controler");
	var $basketContent = $j("#basket-content").removeClass("no-js");
	var $basketItemCont = $basketContent.find("ul");
	var $basketElts;
	var basketTimer;
	
	/*var products = [];*/
	
	// Update items count in rendering
	function updateBasketInfos(){
		
		$basketElts = $basketItemCont.find("li:not(.last)");
		
		var items = $basketElts.length;
		
		(items == 0)? $basketControler.hide() : $basketControler.show();
		
		if (items < 2) {
			$basketItemCont.find("li.last").remove();
		}
		
		if (items > 5) {
			$basketItemCont.find("li.last span").text(items);
		}
		
		else {
			$basketItemCont.find("li.last span").text("");
		}
		
		$openedElt = $basketElts.trigger("collapse").slice(0,1).trigger("expand");
	};
	
	updateBasketInfos();
	
	/*
	// Each product...
	$basketItemCont.children("[id^=basket-prd-]").each(function(){
		
		var $this = $j(this);
		
		products.push({
			"id": this.id.slice(11),
			"image": $this.find("a.prd-image img").attr("src"),
			"title": $this.find("p.prd-name a").text(),
			"amount": $this.find("p.prd-amount").text(),
			"quantity": $this.find("p.prd-quantity").text()
		});
		
	});*/
	
	$basketItemCont
		.bind("expand", function(){
			
			$basketControler.addClass("expanded");
			
			$j("#basket-container")
				.bind("mouseleave", function(){
					basketTimer = window.setTimeout(function(){
						$basketControler.click();
					},2000);
				})
				.bind("mouseenter", function(){
					window.clearTimeout(basketTimer);
				});
				
				$basketItemCont.slideDown();
		})
		.bind("collapse", function(){
			
			$basketControler.removeClass("expanded");
			$j("#basket-container").unbind();
			
			$basketItemCont.slideUp();
		});
	
	$basketItemCont.hide();
	
	$basketControler.toggle(
		function(){
			$basketItemCont.trigger("expand");
		},
		function(){
			$basketItemCont.trigger("collapse");
		}
	);
	
	$basketElts
		.bind("collapse", function(){
			$j(this).find("a.prd-image, p.prd-amount, p.prd-quantity").hide();
		})
		.bind("expand", function(){
			$j(this).find("a.prd-image, p.prd-amount, p.prd-quantity").show();
		})
		.find("a.prd-remove").click(
			function(){
				var ajaxUrl = $j(this).attr("rel").slice(8);
				var $oElement = $j(this);
				
				$j.get(ajaxUrl, function(data){
					var aResults = data.split('::');
					
					if (aResults[0] == 'true')
					{
						if (aResults[1] == '0')
						{
							document.location.reload();
						}
						else
						{
							$oElement.parent().remove();
							updateBasketInfos();
							$j("#basket-container").find(".basket-total span").html(aResults[1]);
							$j("#basket-container").find(".basket-amount").html(aResults[2]);
						}
					}
				});
			}
		);
	
	$basketElts
		.trigger("collapse")
		.find("p.prd-name a")
		.click(function(e){
			e.preventDefault();
			$openedElt.trigger("collapse");
			$openedElt = $j(this).blur().parents("li:eq(0)").trigger("expand");
		});
	
	var $openedElt = $basketElts.slice(0,1).trigger("expand");
	
	/*// Public methods
	window.dsg.basket = {
		add: function(product){
			
		},
		remove: function(id){
			
		}
	};*/
	
	/* Basket API demo :
	
	dsg.basket.add({
		id: ,
		image: ,
		title: ,
		amount: ,
		quantity: 
	})
	
	dsg.basket.remove(54654);
	*/
};

$j(function(){
	dsg.fn.initBasket();
});