
<!--

//this function is called when the checkout/update/keep Shopping button is clicked.
function checkBasketForm(){
  //alert("checkBasketForm");
  var basketForm = document.BasketForm;
  var msgs = '';
 
  
  //for each element on basketForm...
  for(var i = 0; i < basketForm.elements.length; i++)
  {
    var ossId = trimPrefix('GCquantity_', basketForm.elements[i].name);
    //if this value is 1 then we are dealing with GC 	
    if(ossId) 
    {
      var partitionId = ossId.substring(0, ossId.indexOf('_'));
      recipient = basketForm.elements["recipient_" + partitionId].value;
      if (recipient == 'me') 
      	recipient = 'your';
      else 
      	recipient += '\'s';
      amountStr = basketForm.elements["GCamount_" + ossId].value;
      msgs += validateGCAmount(amountStr, recipient); //validate GC amount and return a message if needed. 
    	//Why do we need to call it here if this is already done onChnage for text field?
    }
  }
  
  var quantities = new Object();
  var partition_count = parseInt(basketForm.elements["partition_count"].value);
  for(var p = 0; p < partition_count; p++) //for each partition...
  {
    var number_of_skus = parseInt(basketForm.elements["number_of_skus_" + p].value);
    //for each item in a partition...
    for(var i = 0; i < number_of_skus; i++) 
    {
      var fieldId = p + "_" + i;
      //if it is a GC item...
      if (basketForm.elements["is_gift_certificate_item_" + fieldId].value != "true")
      {
        var qtyField = basketForm.elements["quantity_" + fieldId];
        var qty = parseInt(qtyField.options[qtyField.selectedIndex].value);
        var skuField = basketForm.elements["sku_" + fieldId];
        var sku = skuField.value;
        if (quantities[sku]) 
        	quantities[sku] += qty;
        else 
        	quantities[sku] = qty;
      }
    }
  }


  invForm = document.skuInventoryCache;
  for(var os in quantities)
  {
    var qty = quantities[os];
    var inv = parseInt(invForm["inv_" + os].value);
    var bo = parseInt(invForm["bo_" + os].value);
    var itemName = invForm["itemName_" + os].value;
    var size = invForm["size_" + os].value;
    var color = invForm["color_" + os].value;
    //invStr += qty + " / " + inv + "\n";
    if (qty > inv)
    {
      if (qty > bo)
      {
        var itemDesc = itemName + ", " + size + " " + color;
        var msg = "We only have " + inv + " units of the " + itemDesc + " available.\n";
        msg += "You currently have a total of " + qty + " in your basket. Please reduce some quantities.\n";
        msgs += msg;
      }
    }
  }
  //msgs += 'inv = ' + invStr + '\n';
  //msgs += 'debug, Not submitting\n';
  if (msgs)
  {
    alert(msgs);
    return false;
  }
  else
  {
    return true;
  }
    
}

function checkGCAmount2() {
//alert("checkGCAmount");
	var el = arguments[0];
	var msgs = validateGCAmount(el.value);
	if (msgs) {
		alert(msgs);
		return false;
	} else {
		updateValues2();
		return true;
	}
}
function validateGCAmount() {
//alert("validateGCAmount");
	var amt = arguments[0];
	var recipient = arguments[1];
	var namt = 1 * amt;
	var msgs = "";
	if (!amt.match(/^[\d\.]+$/)) {
		msgs += "Please enter the dollar amount of the Gift Certificate.\n";
		msgs += "The value must be a whole dollar amount between $5 and $1000.\n";
	} else {
		if (namt < 5 || namt > 1000) {
			msgs += "The value of the Gift Certificate must be a whole dollar amount between $5 and $1000.\n";
			msgs += "Please enter the whole dollar amount you would like.\n";
		} else {
		}
	}
	return msgs;
}
/*updates price values/total when 
-on page reload
-the user changes giftbox options 
-user changes quantity of the items. */
function updateValues2() {
	//alert("updateValues2");
	var GIFT_BOX_PRICE = 4.95;
	var basketForm = document.BasketForm;
	var subtotal, endtotal, grandtotal = 0;
	var n;
	var partition_count = parseInt(basketForm.elements["partition_count"].value); //number of partitions
	for (var p = 0; p < partition_count; p++) {
		endtotal = 0;
		var number_of_skus = parseInt(basketForm.elements["number_of_skus_" + p].value);
		var hasGiftBoxablesField = basketForm.elements["has_gift_boxables_" + p];
		var hasGiftBoxablesValue = hasGiftBoxablesField.value;
		if (hasGiftBoxablesValue == "true") {
			var giftBoxTogetherFld = basketForm.elements["gift_box_together_" + p];
			var giftBoxTogetherValue = giftBoxTogetherFld.checked ? true : false;
			var look_for_gift_box = true;
			if (giftBoxTogetherValue) { //if this partition is being boxed together, update total now
				look_for_gift_box = false;
				basketForm.elements["gift_box_together_charge_" + p].value = "$" + GIFT_BOX_PRICE;
				endtotal += GIFT_BOX_PRICE;
				//remove gift box values for each seprate sku
				for (var i = 0; i < number_of_skus; i++) {
					var fieldId = p + "_" + i;
					if (basketForm.elements["is_gift_certificate_item_" + fieldId].value != "true") {
						basketForm.elements["giftboxValue_" + fieldId].value = "";
					}
				}
			} else {
				look_for_gift_box = true;
				basketForm.elements["gift_box_together_charge_" + p].value = "";
			}
		} else {
			look_for_gift_box = false; //there are no giftboxable items in this partition
		}
		for (var i = 0; i < number_of_skus; i++) {
			var fieldId = p + "_" + i;
			if (basketForm.elements["is_gift_certificate_item_" + fieldId].value != "true") { //if not GC
				var qfield = basketForm.elements["quantity_" + fieldId];
				var quantity = qfield.options[qfield.selectedIndex].value;
				var price = basketForm.elements["price_" + fieldId].value;
				var giftBoxable = basketForm.elements["gift_boxable_" + fieldId].value == "yes" ? true : false; //indicates id this sku is giftboxable
				subtotal = (quantity * price) + 0;
				basketForm.elements["quantity_times_price_" + fieldId].value = makeDollar(subtotal);
				if (giftBoxable && look_for_gift_box) {
					if (basketForm.elements["gift_box_" + fieldId].checked) {
						subtotal += (quantity * GIFT_BOX_PRICE) - 0.001;
						//update gift box value field for separate gift boxing
						var giftboxValue = makeDollar((quantity * GIFT_BOX_PRICE) - 0.001);
						basketForm.elements["giftboxValue_" + fieldId].value = "$" + giftboxValue;
					} else {
						basketForm.elements["giftboxValue_" + fieldId].value = "";
					}
				}
				s = makeDollar(subtotal);
				endtotal += subtotal;
			} else { //if gift certificate
				var qfield = basketForm.elements["quantity_" + fieldId];
				var quantity = qfield.options[qfield.selectedIndex].value;
				subtotal = (quantity * basketForm.elements["GCamount_" + fieldId].value);
				s = makeDollar(subtotal);
				basketForm.elements["quantity_times_price_" + fieldId].value = s;
				endtotal += subtotal;
				if (document.subtotalForm) {
					document.subtotalForm.elements["amount_" + fieldId].value = subtotal;
				}
			}
		}
		e = makeDollar(endtotal);
		grandtotal += endtotal;
	}
	g = makeDollar(grandtotal);
	basketForm.elements["grand_total"].value = "$" + g;
	e = makeDollar(endtotal);
	if (document.subtotalForm && document.subtotalForm.total) {
		document.subtotalForm.total.value = e;
	} else {
		if (basketForm.total) {
			basketForm.total.value = e;
		}
	}
}
/*
    Function to format a number as a dollar amount, ie with 2 decimal places.  
    If no decimal place, add decimal and 2 zeros.  If a decimal, but only one
    number ot the right of decimal, add a zero.
*/
function makeDollar(amount) {
     // correct rounding error on small decimal places
	amount = amount * 100;
	amount = Math.round(amount);
	amount = amount / 100;
	n = amount.toString().length - amount.toString().indexOf(".");
	if (amount.toString().indexOf(".") == -1) {
		amount = amount + ".00";
	} else {
		if (n == 2) {
			amount = amount + "0";
		}
	}
	return amount;
}
/* function called when the user clicks 'remove' link to remove a sku from the basket*/
function remove(recipient, sku) {
	document.BasketForm.removeSku.value = sku;
	document.BasketForm.removeRecipient.value = recipient;
	document.BasketForm.action.value = "remove";
	document.BasketForm.submit();
}

/* function called when the user follows the link that would lead him to an external page*/
function leaveBasketPage(destination) {
	if(typeof(document.BasketForm) !== 'undefined')
	{
		document.BasketForm.action.value = "leave";
		document.BasketForm.destination.value = destination;
		if(checkBasketForm())
			document.BasketForm.submit();
	}
	window.location = destination;
}

function checkBasket() {
	if (document.BasketForm.total.value == 0) {
		alert("You have nothing in your basket");
		return false;
	}
}

