var myTimer = false;
var pendingItem = false;
window.addEvent('domready', function() { 
    $('cartstatus').empty();
    $('cartstatus').appendText('Loading Cart..');
    loadCart();
}, 'javascript');

function addToCart() {
	$('cartstatus').empty();
	$('cartstatus').appendText('Adding to Cart..');
	var jsonRequest = new Request.JSON({url: "/cart/create/", onComplete: function(result) {
		var item = result.item;
		var cartitem = $('cartid' + item.cart_id);
		if(cartitem) {
			var qty = cartitem.getElement('input[name=qty]');
			qty.value = item.qty;
		} else {
			addCartItem(item);
		}
		$('cartstatus').empty.delay(750, $('cartstatus'));
	}}).post($('cartadd'));
}

function updateCartItem(evt) {
	if(this.getProperty('lastvalue') == this.value || this.value == '') {
		return;
	}
	this.setProperty('lastvalue', this.value);
	myTimer = $clear(myTimer);
	myTimer = updateCartItemPost.delay(1500, this);
}

function updateCartItemPost() {
	$('cartstatus').empty();
	//$('cartstatus').appendText('Updating Cart..');
	var input = this;
	var coord = this.getParent('table').getCoordinates();
	var div = new Element('div', {
		'styles': {
			'background': '#000',
			'color': '#fff',
			'zorder': '99',
			'left': coord.left,
			'top': coord.top,
			'width': coord.width,
			'height': coord.height,
			'position': 'absolute'
		},
		'html': '&nbsp; Saving your cart quantity..'
	});
	var img = new Element('img', {
		'src': '/images/loader.gif',
		'styles': {
			'background': '#000',
			'color': '#fff',
			'zorder': '99',
			'left': coord.width / 2,
			'top': coord.height / 2,
			'position': 'absolute'
		}
	}).inject(div);
	div.inject(document.body);
	var jsonRequest = new Request.JSON({url: "/cart/update/", onComplete: function(result) {
		if(result.status && input.value == '0') {
			input.getParent('tr').dispose();
		}
		$('cartstatus').empty.delay(750, $('cartstatus'));
		div.fade.delay(1000, div);
		div.dispose.delay(2000, div);
	}}).post({
		'cart_id': this.getParent('tr').id.replace('cartid', ''), 
		'qty': this.value
	});
}

function loadCart() {
	var jsonRequest = new Request.JSON({url: "/cart/index/", onComplete: function(items) {
		if(!items) {
			return;
		}
		for (var i=0; i < items.length ; i++){ 
			var item = items[i];
        	addCartItem(item)
    	}
		$('cartstatus').empty.delay(750, $('cartstatus'));
	}}).get();
}

function addCartItem(item) {
	var tr = new Element('tr');
		tr.id = 'cartid' + item.cart_id;
	var td = new Element('td', {
		'align': 'center',
		'class': 'carttext',
		'html': item.code
	});
	td.inject(tr);
	var td = new Element('td', {
		'align': 'center',
		'class': 'carttext',
		'html': item.name
	});
	td.inject(tr);
	var td = new Element('td', {
		'align': 'center',
		'class': 'carttext'
	});
	var input = new Element('input', {
		'class': 'inputtextstyle',
		'type': 'text',
		'size': 4,
		'value': item.qty,
		'name': 'qty',
		'events': {
			'keyup': updateCartItem
		}
	});
	input.inject(td);
	td.inject(tr);
	var td = new Element('td', {
		'align': 'center',
		'class': 'carttext'
	});
	var input = new Element('input', {
		'class': 'submitstyle',
		'type': 'button',
		'value': 'Remove',
		'events': {
			'click': removeCartItem
		}
	});
	input.setProperty('cart_id', item.cart_id);
	input.inject(td);
	td.inject(tr);
	tr.inject($('carttable').getElement('tbody'));
}	

function removeCartItem(evt) {
	var button = this;
	var jsonRequest = new Request.JSON({url: "/cart/remove/", onComplete: function(result) {
		if(result.status) {
			button.getParent('tr').dispose();
			myTimer = $clear(myTimer);
		}
	}}).post({
		'cart_id':button.getProperty('cart_id')
	});
}
