function ShoppingCartHelper(ContextHandler)
{
	this.ContextHandler=ContextHandler;
	this.AjaxObject=null;

	this.PickShippingType=function(ShoppingCartID)
	{
		var Parameters	= "action=ActionSelectShippingType&ShoppingCartID="+ShoppingCartID;
		var container	= document.getElementById('MASTER');
		var objAjaxv2 	= new Ajaxv2("/shared/php/ajax/shopping_cart.php",this,this.OnPickShippingTypeCallBack,"POST",Parameters,this.ContextHandler);
		objAjaxv2.Parameters+="&"+objAjaxv2.GetFormValues(container);		
		objAjaxv2.GetPost(true);	
	}
	this.OnPickShippingTypeCallBack = function(Success,ResponseObject)
	{
		if(this.ProcessGenericAjaxResponse(Success,ResponseObject))
		{
			var UpdateArray=this.AjaxObject.Response;
			var ShippingTotal	= UpdateArray[0];
			var TaxTotal		= UpdateArray[1];
			var OnlineTotal		= UpdateArray[2];
			
			obj = document.getElementById('tax_total');
			obj.innerHTML=TaxTotal;
			
			obj=document.getElementById('order_total');
			obj.innerHTML=OnlineTotal;
			
		}
	}
	
	this.PickOrderShippingType=function()
	{
		var Parameters	= "action=ActionSelectOrderShippingType";
		var container	= document.getElementById('MASTER');
		var objAjaxv2 	= new Ajaxv2("/shared/php/ajax/shopping_cart.php",this,this.OnPickOrderShippingTypeCallBack,"POST",Parameters,this.ContextHandler);
		objAjaxv2.Parameters+="&"+objAjaxv2.GetFormValues(container);		
		objAjaxv2.GetPost(true);
	}
	
	this.OnPickOrderShippingTypeCallBack = function(Success,ResponseObject)
	{
		if(this.ProcessGenericAjaxResponse(Success,ResponseObject))
		{
			var objTotals=this.AjaxObject.Response;		
			obj = document.getElementById('tax_total');
			if(obj != null)
				obj.innerHTML=objTotals.TaxTotal;
			
			obj=document.getElementById('order_total');
			if(obj != null)
				obj.innerHTML=objTotals.OrderTotal;
			
			obj=document.getElementById('gift_card_allocation_total');
			if(obj != null)
				obj.innerHTML=objTotals.ShoppingCartGiftCardChargeAmount;
			
		}
	}	
	
	this.ToggleLiftGateOption=function()
	{		
		var obj=document.getElementById('mode');
		obj.value='toggleliftgateservice';				
		obj=document.getElementById('AddLiftGateService');
		obj.value^=1;
		obj=document.getElementById('MASTER');
		obj.submit();
	}
	
	this.ProcessGenericAjaxResponse=function(Success,ResponseObject)
	{
		if(!Success)
        {
            //display some kind of warning
            alert('The system was unable to contact the server. Please try again.');
            return;
        }                
        try
        {                
            //did we pass validation?
            eval("var obj="+ResponseObject.responseText);
            
            if(obj.RetVal < 0)
            {
                //gah, some kind of error php side. Lets setup the error on the form.
                alert(obj.Response);
                return;
            }			
			this.AjaxObject=obj;
			return true;            
        }
        catch(exception)
        {
            alert('A system error occured.('+exception+')');
            return;
        }
	}
}