jQuery.fn.setOrderingState = function (state)
{
	this.each(function ()
	{
		var states = ["orderable", "intermediate", "ordered"];
		for (var i in states)
		{
			$('.'+states[i], this).hide();
		}
		$('.'+state, this).fadeIn("slow");
	});
};

$(function ()
{
	$(".product_row .prod_order").append("<div class='intermediate'></div>");
	
	$(".product_row .prod_order input[name=submit]").click(function (event)
	{
		var form = $(this).parents("form")[0];
		var vars = {ajax: "1"};
		$("input[type=hidden]", form).each(function ()
		{
			vars[this.name] = this.value;
		});
		
		$.post(form.attributes["action"].value, vars, function (xml)
		{
			var success = $("success", xml).text();
			var prod_id = $("prod_id", xml).text();
			var state = $("state", xml).text();
			var inventory_mod = 0;
			if (state == "ordered")
			{
				$("#prod"+prod_id+" .prod_order .ordered span").html("1");
				inventory_mod = -1;
			} else {
				inventory_mod = $("#prod"+prod_id+" .prod_order .ordered span").text();
				$("#prod"+prod_id+" .prod_order .ordered span").html("0");
			}
			inv_display = $("#prod"+prod_id+" .prod_description .inventory");
			if (inv_display.length)
			{
				inv_display.text(parseInt(inv_display.text())+parseInt(inventory_mod));
			}
			$("#prod"+prod_id).setOrderingState(state);
			$("#prod"+prod_id+" .message").html($("message", xml).text());
			$("#prod"+prod_id+" .message").fadeIn("slow");
		});
		$("#prod"+vars["product_id"]+" .prod_order .intermediate").html("Loading...");
		$("#prod"+vars["product_id"]).setOrderingState("intermediate");
		event.preventDefault();
	});
	
	$(document).ajaxError(function (event, xhr, options, error)
	{
		var row = $("#prod"+options.product_id);
		row.setOrderingState(options.action == "add" ? "orderable" : "ordered");
		row.find(".message").text("Error: "+error).fadeIn("slow");
	});
});
