/**
 * These functions that begin with the word cart are designed to interact
 * with the cart models via AJAX and are core to the carts functionality.
 */
function cartAddItem(pid)
{
  var qty = 1;
  if(arguments.length>1) qty = arguments[1];

  if(qty==0)
  {
    cartRemoveItem(pid);
    return;
  }

  cart.AddItem(pid,qty, {
    "onFinish": function(response){
      if(!response){cartShowError();return;}
      document.getElementById("divProdMsg").innerHTML = "Thank you. This item has been added to your order.";
    }
  });
}

function cartRemoveItem(pid)
{
  cart.RemoveItem(pid, {
    "onFinish": function(response){
      if(!response){cartShowError();return;}
      document.getElementById("divProdMsg").innerHTML = "Thank you. This item has been removed from your order.";
    }
  });
}

function cartUpdateQty(form)
{
  var prods = "";
  if(form.prod.length==undefined)
  {
    prods = form.prod.value+":"+form.qty.value;
  }
  else
  {
    for(var i=0; i < form.prod.length; i++)
    {
      if(i>0) prods = prods + ",";
      prods = prods + form.prod[i].value+":"+form.qty[i].value;
    }
  }
  
  cart.UpdateQty(prods, {
    "onFinish": function(response){
      if(!response){cartShowError();return;}
      if(form.prod.length==undefined)
      {
        cart.GetItemTotal(form.prod.value,i, {
          "onFinish": function(response){
            if(response==false){cartShowError();return;}
            var results = response.split(":");
            price = results[1];
            document.getElementById("divPrice0").innerHTML = price;
          }
        });
      }
      else
      {
        for(i=0; i < form.prod.length; i++)
        {
          cart.GetItemTotal(form.prod[i].value,i, {
            "onFinish": function(response){
              if(response==false){cartShowError();return;}
              var results = response.split(":");
              element = results[0];
              price   = results[1];
              document.getElementById("divPrice"+element).innerHTML = price;
            }
          });
        }
      }
      cart.GetBasketHandling({
        "onFinish": function(response){
          if(response==false){cartShowError();return;}
          document.getElementById("divCartHandling").innerHTML = response;
        }
      });
      cart.GetBasketTotal({
        "onFinish": function(response){
          if(response==false){cartShowError();return;}
          document.getElementById("divCartTotal").innerHTML = response;
        }
      });
      document.getElementById("divCartMsg").innerHTML = "Thank you. Your order has been updated.";
    }
  });
}

function cartShowError()
{
  cart.ErrorMsg({
      "onFinish": function(response){
          alert("AN ERROR HAS OCCURED:\n\n"+response);
      }
  });
}

/**
 * These functions help with various tasks within the cart itself.
 */
function checkQty(prodQty)
{
	if (isNaN(prodQty.value))
  {
		window.alert("Error! You have entered a value that is not a number.");
		prodQty.value = "1";
		return false;
	}
	else if (prodQty.value < 0)
  {
		window.alert("Error! You have entered a value that is smaller then '0'.");
		prodQty.value = "1";
		return false;
	}
	else return true;
}

function DoCopy() 
{
	if (document.form1.Same.checked==true)
  {
		document.form1.ship_fname.value=document.form1.bill_fname.value;
		document.form1.ship_lname.value=document.form1.bill_lname.value;
		document.form1.ship_address1.value=document.form1.bill_address1.value;
		document.form1.ship_address2.value=document.form1.bill_address2.value;
		document.form1.ship_city.value=document.form1.bill_city.value;
		document.form1.ship_state.value=document.form1.bill_state.value;
		document.form1.ship_zip.value=document.form1.bill_zip.value;
		document.form1.ship_country.value=document.form1.bill_country.value;
	}
	if (document.form1.Same.checked==false)
  {
		document.form1.ship_fname.value="";
		document.form1.ship_lname.value="";
		document.form1.ship_address1.value="";
		document.form1.ship_address2.value="";
		document.form1.ship_city.value="";
		document.form1.ship_state.value="";
		document.form1.ship_zip.value="";
		document.form1.ship_country.value="";
	}
}

