var AjaxBasket = function()
{
	/**
         * functions called by buttons etc
         * @param stockcode the stockcode to add
         * @param quantity how many to add
         * @param partquantity i don't really know
         * @return nothing
         */
	this.add = function(stockcode, quantity, partquantity)
	{
		var scope = this;
		$.ajax({
			type : 'POST',
			url : '/ajaxBasket.php',
			data : 'action=add&stockcode=' + stockcode + '&quantity=' + quantity,
			success : function(response) { scope.addSuccess(json_decode(response)); },
			error : function(response) { scope.addFailure(json_decode(response)); }
		});
	};
	
	this.remove = function(stockcode)
	{
		var scope = this;
		$.ajax({
			type: 'POST',
			url : '/ajaxBasket.php',
			data : 'action=remove&stockcode=' + stockcode,
			success : function(response) { scope.removeSuccess(json_decode(response)); },
			error : function(response) { scope.removeFailure(json_decode(response)); }
		});
	};
	
	
	// called by ajax object
	
	this.addSuccess = function(response)
	{
		if(response.type == 'error') { return this.addFailure(response) }
		if(typeof this.addSuccessCallback == 'function') { this.addSuccessCallback(response); }
	};
	
	this.addFailure = function(response)
	{ 
		if(typeof this.addFailureCallback == 'function') { this.addFailureCallback(response); }
	};
	
	this.removeSuccess = function(response)
	{
		if(response.type == 'error') { return this.addFailure(response); }
		if(typeof this.removeSuccessCallback == 'function') { this.removeSuccessCallback(response); }
	};
	
	this.removeFailure = function(response)
	{
		if(typeof this.removeFailureCallback == 'function') { this.removeFailureCallback(response); }
	};
	
	// helper functions
	
	this.contains = function(stcode)
	{
		var found = false;
		$('#basket .items li').each(function(){ if(this.className == 'basket_' + stcode) { found = true; } });
		if(found) { return true; }
		return false;
	};
}



/***************************************************
*
*	customise these if needed

****************************************************/

refreshBasket = function(response)
{

	$('#basket').effect('highlight', {color : '#fff4a8'}, 1000);
	
	$('#basket .quantity .num').html(response.items);
	
	// set the new total
	$('#basket .total .num').html('&pound;' + response.total);
	
}

addBasket = function(stcode, quantity)
{
	myAjaxBasket.add(stcode, quantity);
}

AjaxBasket.prototype.removeSuccessCallback = refreshBasket;
AjaxBasket.prototype.addSuccessCallback = refreshBasket;



