
var basket = {

	basket		: null,
	bar			: null,
	message		: null,

	orig_height	: 0,
	full_height : 0,

	borderWidth	: 5,

	tmp_message : null,

	init : function(leave_visible) {

		// get the nodes
		this.basket		= false;//$("basket");

		if (this.basket) {

			this.bar 		= $("basket-bar");
			this.message	= $("basket-message");

			// measure the full height
			this.orig_height = this.basket.getHeight();
			this.basket.setStyle({ height: "auto" });
			this.full_height = this.basket.getHeight();

			if (leave_visible !== true) {
				this.basket.setStyle({ height: (this.orig_height - this.borderWidth) + "px" });
			}

			// set the click events
			var clickables = this.bar.immediateDescendants();
			clickables.each(function(e) {
				if (e.identify() != "save-bar") {
					Event.observe(e, "click", function() { basket.toggle() });
				}
			});

			// submit events
			var forms = $$(".add-basket-form");
			for (var i = 0, m = forms.length; i < m; i++) {
				forms[i].onsubmit = function() {
					basket.add(this);
					return false;
				}
			}

			// delete events
			var buttons = $$("td.del input");
			for (var i = 0, m = buttons.length; i < m; i++) {
				buttons[i].onclick = function() {
					this.deleteme(this);
					return false;
				}
			}

		}
	},

	show : function() {

		new Effect.Morph(this.basket, {
				style : {
					height: this.full_height + "px"
				},
				duration: 0.5
		});

	},

	hide : function() {

		new Effect.Morph(this.basket, {
				style : {
					height: (this.orig_height - this.borderWidth) + "px"
				},
				duration: 0.5
		});

	},

	toggle : function() {

		if (this.basket.getHeight() > this.orig_height) {
			this.hide();
		} else {
			this.show();
		}

	},

	alert : function(message) {

		alert(message);

	},

	add : function(form) {

			Element.extend(form);

		var url = form.getAttribute("action");
		
		var qty = $F(form.getInputs("text")[0]);
		if (qty > 0) {
			var name = form.getInputs("hidden", "product_name")[0];
			this.tmp_message = name.value + " added";

			wank = new Ajax.Request(url, {
				method: "post",
				parameters: form.serialize() + "&add_to_basket=add",
				onSuccess : function(transport) {
					basket.init();
					if (transport.responseText.search(/timed out/i) == -1) {
						basket.alert(basket.tmp_message);
					}
					basket.tmp_message = null;
				}
			});
		}

	},

	deleteme : function(button) {
		
		var url = button.form.getAttribute("action");

		new Ajax.Request(url, {
			method: "post",
			parameters: button.serialize(),
			onSuccess : function(transport) {
				$("basket-wrapper").update(transport.responseText);
				basket.init(true);
			}
		});
		
	}

}

Event.observe(window, "load", function() { window.basket.init(false); });
