

var BasketHelper = Class.create(
{
	initialize : function(containerId, countContainerId, basketIconId, baseUrl)
	{	
		this.containerId = containerId;
	    this.countContainerId = countContainerId;
		this.listItemBasketId = basketIconId;
		this.baseUrl = baseUrl;
	},	
	
	container: function() { return $(this.containerId); },
	
	countContainer: function() { return $(this.countContainerId); },
	
	listItemBasket: function() { return $(this.listItemBasketId); },
	
	GetBasket : function ()
	{
	    // Do nothing if no basket container to update
        var basketHolder = this.container();
	    if (!basketHolder) { return; }
	    
	    var url = this.baseUrl + "BasketDisplay.aspx?r=" + Math.floor(Math.random()*1000);
	
	    new Ajax.Request(url,
	    {
		    method: 'get',
		    onSuccess: function(transport)
		    {			  
			    var resp = transport.responseText;
			    basketHolder.update(resp);
			    basketHolder.innerHTML = resp;		
						
		    }.bind(this)
	    });
	},
	
	GetBasketCount : function()
	{
	    // Do nothing if no icon or count to update
	    var basketIcon = this.listItemBasket();
	    var countHolder = this.countContainer();
	    if (!basketIcon && !countHolder) { return; }
	    
		var url = this.baseUrl + "BasketCount.aspx?r=" + Math.floor(Math.random()*1000);
		
		new Ajax.Request(url,
		{
			method: 'get',
			onSuccess: function(transport)
			{	
				var resp = transport.responseText;
				
				if (basketIcon)
				{
				    if(resp == "0")
				    {
					    basketIcon.removeClassName('selected');
				    }
				    else
				    {
					    basketIcon.addClassName('selected');
				    }
				}
                
	            if (countHolder)
	            {
    				countHolder.innerHTML = resp;				
	            }
    		}.bind(this)
		});
	},

	AddToBasket : function(cartPara, onSuccessCallback)
	{
	    
		var ts = Date.parse( new Date() );
		var url = this.baseUrl + "AddToCart.aspx?" + cartPara + "&ts=" + ts;
	   
		new Ajax.Request(url,
		{
			method: 'post',
			onSuccess: function(transport)
			{
			    
				this.GetBasket();
				this.GetBasketCount();
				
				if(onSuccessCallback)
				{
					onSuccessCallback();
				}
								
			}.bind(this)
		});
	}
	
});


