function init() {
  updateCart(cartContents);
  if (document.purchaseForm && document.purchaseForm.elements.step.value=="shipping") {
    calculateTotal();
  }
}

function addToCart(sku,qty) {
  var parameters = {"add": 1, "sku": sku, "qty": qty }
  if (sku == "MVAR99") {
    var fields = document.MVAR99ChoiceForm.elements;
    for (var i=1;i<=6;i++) {
      var choice = fields['choice'+i].options[fields['choice'+i].selectedIndex].value;;
      if (!choice) {
        alert("Please select choice #"+i+" for the custom variety pack");
        return false;
      }
      parameters['choice'+i] = choice;
    }
  }
  new Ajax.Request('purchase.php',
  {
    method:'post',
    parameters: parameters,
    onSuccess: function(transport) { updateCart(transport.responseText.evalJSON());},
    onFailure: function(){ alert('Unable to add item to cart. Please try again later.') }
  });
  window.scrollTo(0,0);
}

function deleteFromCart(sku) {
  new Ajax.Request('purchase.php',
  {
    method:'post',
    parameters: {"delete": 1, "sku": sku },
    onSuccess: function(transport) { updateCart(transport.responseText.evalJSON()); },
    onFailure: function(){ alert('Unable to delete item from cart. Please try again later.') }
  });
  window.scrollTo(0,0);
}

function updateQtyInCart(sku,qty) {
  new Ajax.Request('purchase.php',
  {
    method:'post',
    parameters: {"adjust_qty": 1, "sku": sku, "qty": qty },
    onSuccess: function(transport) { updateCart(transport.responseText.evalJSON()); },
    onFailure: function(){ alert('Unable to delete item from cart. Please try again later.') }
  });
  window.scrollTo(0,0);
}

function updateCart(cartContents) {
  var html = "";
  var subtotal = 0;
  if (cartContents.length>0) {
    for (var i=0;i<cartContents.length;i++) {
      var item = cartContents[i];
      html += item['name'];
      if (document.purchaseForm) {
        html += " "+item['qty'];
      } else {
        html += " <input type=\"text\" name=\"quantity\" value=\""+item['qty']+"\" onblur=\"if (this.value!="+item['qty']+") updateQtyInCart('"+item['sku']+"',this.value);\" class=\"quantity\" />";
      }
      html += " $"+item['price'];
      if (!document.purchaseForm) {
        html += " <a href=\"#\" onclick=\"deleteFromCart('"+item['sku']+"');return false;\">Remove</a>";
      }
      html += "<br />";
      
      if (item['extra']) {
      	var extras = item['extra'].split("\n");
      	for(var j=0;j<extras.length;j++)  {
      		html += "<span style='margin-left:8px;font-size:11px;'>"+extras[j]+"</span><br/>";
      	}
  
       // html += "<p style='margin-left:8px;font-size:11px;'>"+item['extra'].replace(/\n/g,"<br />")+"</p>";
      }
      subtotal += item['price'] * item['qty'];
    }
  } else {
    html = "Your shopping cart is empty. Add some items on the left.";
  }
    /*
  var newdiv = document.createElement("div");
  newdiv.innerHTML = html;
  var container =  $('cart-contents');
  container.appendChild(newdiv);

  var newdiv2 = document.createElement("div");
  newdiv2.innerHTML = subtotal.toFixed(2);
  var container2 =  $('cart-subtotal');
  container2.appendChild(newdiv2);
*/
  $('cart-contents').innerHTML = html;
  $('cart-subtotal').innerHTML = subtotal.toFixed(2);
  if ($('checkout-button')) {
    $('checkout-button').style.display = cartContents.length>0 ? 'block' : 'none';
  }
}

function copyBillingInfoToShipping(form) {
  var fields = [
    "name",
    "company",
    "address",
    "address-2",
    "city",
    "state",
    "zip",
    "phone",
    "email"
  ];
  for (var i=0;i<fields.length;i++) {
    form['shipping-'+fields[i]].value = form['billing-'+fields[i]].value;
  }
}

function calculateTotal() {
  var field = document.purchaseForm.elements.shipping_method;
  var shippingMethod = "";
  for (var i=0;i<field.length;i++) {
    if (field[i].checked) {
      shippingMethod = field[i].value;
    }
  }
  var shippingCost = shippingRates[shippingMethod]*1;
  var subtotal = $('subtotal').innerHTML*1;
  var total = subtotal+shippingCost;
  $('shipping-cost').innerHTML = shippingCost.toFixed(2);
  $('total').innerHTML = total.toFixed(2);
}

function validateSubmit(form) {
  var step = form.step.value;
  if (requiredFields) {
    for (var fieldName in requiredFields) {
      if (!form.elements[fieldName].value) {
        alert(requiredFields[fieldName]+" is a required field");
        form.elements[fieldName].focus();
        return false;
      }
    }
  }
  if (step == "billing") {
    if (!validateEmail(form.elements["billing-email"].value)) {
      alert("Please enter a valid billing email address");
      form.elements["billing-email"].focus();
      return false;
    }
    if (!validateEmail(form.elements["shipping-email"].value)) {
      alert("Please enter a valid shipping email address");
      form.elements["shipping-email"].focus();
      return false;
    }
  }
  if (step == "payment") {
    if (!validateCreditCardNumber(form.elements["card-number"].value)) {
      alert("Please enter a valid credit card number");
      return false;
    }
  }
}

function validateEmail(email) {
  var emailFilter = /^[\w\.\-\+]+@[\w\.\-\+]+\.\w{2,4}$/;
  return emailFilter.test(email);
}

function validateCreditCardNumber(number) {
  number = number.replace(/ /g, "");
  var total = 0;
  var flag = 0;
  for (var i=(number.length - 1);i>=0; i--) {
    if (flag == 1) {
      var digits = number.charAt(i) * 2;
      if (digits > 9) digits -= 9;
      total += digits;
      flag = 0;
    } else {
      total = total + parseInt(number.charAt(i));
      flag = 1;
    }
  }
  if ((total%10) == 0) {
    return true;
  } else {
    return false;
  }
}



