function add_to_cart(productid, formname, featured, min_amount) {
  var formdata = $("form[name='" + formname + "']").serialize();
  formdata = formdata + '&is_ajax_request=1';
  min_amount = parseInt(min_amount);
  if (isNaN(min_amount)) {
    min_amount = 0;
  }

  // update product quantity in the cart
  if ($("form[name='" + formname + "'] input[name='new_amount']").length > 0) {
	  var new_amount = parseInt($("form[name='" + formname + "'] input[name='new_amount']").val());
	  var old_amount = parseInt($("form[name='" + formname + "'] input[name='old_amount']").val());

//	  if (!isNaN(new_amount) && new_amount != old_amount && (new_amount >= min_amount || new_amount == 0)) {
	  if (!isNaN(new_amount) && (new_amount >= min_amount || new_amount == 0)) {
		$("#p" + productid + "_minicart input[name*='productindexes']").val(new_amount);
		$("form[name='" + formname + "'] .button-add").hide();
		$("form[name='" + formname + "'] .button-adding").show();
		update_minicart(productid);
	  }

      return true;
  }

  // add product to cart
  if ($("form[name='" + formname + "'] input[name='amount']").length > 0) {
	  var amount = parseInt($("form[name='" + formname + "'] input[name='amount']").val());
	  if (isNaN(amount)) {
		amount = 1;
		formdata = formdata + '&amount=1';
	  }
	  if (amount < min_amount) {
		return true;
	  }
  }

  $("form[name='" + formname + "'] .button-add").hide();
  $("form[name='" + formname + "'] .button-adding").show();

  if (formname == "orderform") {

    // is product details page
	$.ajax({
      type: "POST",
      url: "cart.php",
      data: formdata,
      success: function(){
        $("div.minicart").load("display_minicart.php", '', function(){infoBoxesInit();updateCartSummaries();});
        $("div#orderform").load("product.php form[name='orderform']", {productid: productid, is_ajax_request: 1});
      }
    });

  } else {

    // is products list
	$.ajax({
      type: "POST",
      url: "cart.php",
      data: formdata,
      success: function(){
        $("div.minicart").load("display_minicart.php", '', function(){infoBoxesInit();updateCartSummaries();});
        $("#p"+productid+"_buynow").load("display_buynow.php", {productid: productid, featured: featured});
      }
    });

  }

  return true;
}

function update_minicart(productid) {
  var formdata = $("form[name='minicartform']").serialize();
  formdata = formdata + '&is_ajax_request=1';

  $("div.minicart .button-update").hide();
  $("div.minicart .button-updating").show();

  $.ajax({
    type: "POST",
    url: "cart.php",
    data: formdata,
    success: function(){
      update_products_list(productid, true);
      update_product_details();
      $("div.minicart").load("display_minicart.php", '', function(){infoBoxesInit();updateCartSummaries();});
    }
  });

  return true;
}

function clear_minicart() {
  $("div.minicart .button-clear").hide();
  $("div.minicart .button-clearing").show();

  $.get("cart.php", {mode: "clear_cart", is_ajax_request: 1},
    function(){
      update_products_list(false, false);
      update_product_details();
      $("div.minicart").load("display_minicart.php", '', updateCartSummaries);
    }
  );

  return false;
}

function remove_minicart_item(cartid) {
  $("div.minicart .button-update").hide();
  $("div.minicart .button-updating").show();

  $.get("cart.php", {mode: "delete", productindex: cartid, is_ajax_request: 1},
    function(){
      update_products_list(false, true);
      update_product_details();
      $("div.minicart").load("display_minicart.php", '', infoBoxesInit);
    }
  );

  return false;
}

function update_products_list(productid, check_amount) {
  var featured = "";

  if (productid) {

    featured = ($(".products-table #p"+productid+"_buynow").length > 0)?"Y":"N";
    $("#p"+productid+"_buynow").load("display_buynow.php", {productid: productid, featured: featured});

  } else {

    var minicart_productid_regexp = new RegExp("^p([\\d]+)_minicart$");
    var minicart_productids = [];
    var old_amount;

    if ($(".minicart-data li[id]").length > 0) {
      $(".minicart-data li[id]").each(function(i){
        minicart_productids[i] = [];
        minicart_productids[i][0] = $(this).attr("id");
        minicart_productids[i][1] = $("#" + minicart_productids[i][0] + " input[name*='productindexes']").val();
      });

      jQuery.each(minicart_productids, function() {
        this[0] = this[0].replace(minicart_productid_regexp, "$1");
        this[1] = parseInt(this[1]);

        if ($("#p"+this[0]+"_buynow [name='old_amount']").length > 0) {
          old_amount = parseInt($("#p"+this[0]+"_buynow [name='old_amount']").val());
          featured = ($(".products-table #p"+this[0]+"_buynow").length > 0)?"Y":"N";

          if (!check_amount || this[1] != old_amount) {
            $("#p"+this[0]+"_buynow").load("display_buynow.php", {productid: this[0], featured: featured});
          }
        }
      });
    }

  }

  return true;
}

function update_product_details() {
  var productid = parseInt($("form[name='orderform'] input[name='productid']").val());

  if (productid > 0) {
    $("div#orderform").load("product.php form[name='orderform']", {productid: productid, is_ajax_request: 1});
  }

  return true;
}

function update_cart(itemid, sort, sort_direction, category) {
  var formdata = $("form[name='cartform']").serialize();
  formdata = formdata + '&is_ajax_request=1';

  if (itemid) {
    $("#button-update" + itemid).hide();
    $("#button-updating" + itemid).show();
  } else {
    $("div.products.cart .focused .button-update-item").hide();
    $("div.products.cart .focused .button-updating-item").show();
    $("div.products.cart .button-update").hide();
    $("div.products.cart .button-updating").show();
  }

  $.ajax({
    type: "POST",
    url: "cart.php",
    data: formdata,
    success: function(){
      $("div.products.cart").load("cart.php form[name='cartform'],#txt_cart_empty", {is_ajax_request: 1, sort: sort, sort_direction: sort_direction, category: category}, function(){infoBoxesInit();cartFieldsInit();});
    }
  });

  return true;
}

function clear_cart() {
  $("div.products.cart .button-clear").hide();
  $("div.products.cart .button-clearing").show();

  $.get("cart.php", {mode: "clear_cart", is_ajax_request: 1},
    function(){
      $("div.products.cart").load("cart.php form[name='cartform'],#txt_cart_empty", {is_ajax_request: 1});
    }
  );

  return false;
}

function remove_cart_item(cartid, sort, sort_direction, category) {
  $("#button-delete" + cartid).hide();
  $("#button-deleting" + cartid).show();

  $.get("cart.php", {mode: "delete", productindex: cartid, is_ajax_request: 1},
    function(){
      $("div.products.cart").load("cart.php form[name='cartform'],#txt_cart_empty", {is_ajax_request: 1, sort: sort, sort_direction: sort_direction, category: category}, function(){infoBoxesInit();cartFieldsInit();});
    }
  );

  return false;
}

function updateCartSummaries() {
  $("#subheader .cart_summary").html($(".minicart .cart_summary").html());
  $("#subheader .cart_weight").html($(".minicart .cart_weight").html());
  return true;
}

function cartFieldsInit() {
// create the events handlers for the input fields on the shopping cart page

  if ($(".products.cart input[name*='productindexes']").length > 0) {
    $(".products.cart input[name*='productindexes']").each(function(i){
      $(this).focus(function(){
        $(this).parent("dd").addClass("focused");
      });
      $(this).blur(function(){
        $(this).parent("dd").removeClass("focused");
      });
    });
  }
  return true;
}

$.event.add(window, "load", cartFieldsInit);
