function AddToCart() {

	var size = document.getElementById('productsize').value;
	if (size.length < 1) {
		alert('Please select a size for this product and retry.');
		return false;
	}
	var id = document.getElementById('productid').value;
	show('PreventAddToCart');
	hide('AllowAddToCart');
	new AJAXRequest('POST','addtocart.php','session=' + globalsession + '&itemid=' + id + '&size=' + size,processAddedItem);
	
	return false;

}

function processAddedItem(myAJAX) {
	if (myAJAX.readyState == 4) {
		hide('PreventAddToCart');
		show('AllowAddToCart');
		var msg = '';
		if (myAJAX.status == 200) {
			if (myAJAX.responseText.length > 0) {
				msg = myAJAX.responseText;
			} else {
				alert('Unable to add this item. Please try again.');
			}
		} else {
			if(myAJAX.status == '404') alert('The requested resource is no longer available. Try refreshing the page or reporting the error to us.');
			else alert('An error occured. Try again later. HTTP Error code: ' + myAJAX.status);
		}
		if (msg.length > 0) {
			var response = msg.split('\n');
			if (response[0] == 'false') {
				alert(response[1]);
			} else {
				if (response[0] == 'true') {
					show('PreventAddToCart');
					hide('AllowAddToCart');
					document.getElementById('PreventAddToCart').innerHTML = 'Item added. Processing...';
					document.location = 'cart.php';
				} else {
					alert('An unknown reply was received. Reload this page and try again.\n\nDebugging: ' + msg);
				}
			}
		}
	}
}

function verifyQuantity(obj) {
	var intValue = parseInt(obj.value, 10);
	if (isNaN(intValue)) { obj.value = ''; }
	else {
		switch (true) {
			case (intValue == 0):
				obj.value = '0';
				break;
			case (intValue > 0) :
				obj.value = intValue.toString();
				break;
			case (intValue < 0) :
				obj.value = (-1 * intValue).toString();
				break;
		}
	} 
	if (obj.value.length > 4) {
		obj.value = '';
	}
	return false;
}
var preventUpdate = false;
var pendingQUpdate;
function updateQuantity(id) {
	if (preventUpdate === true) {
		alert('Please wait for your previous request to finish.');
		return false;
	}
	hide('update[' + id + ']');
	show('loading[' + id + ']');
	var quantity = document.getElementById('product[' + id + '][quantity]').value;
	preventUpdate = true; pendingQUpdate = id;
	new AJAXRequest('POST','updatecart.php','session=' + globalsession + '&itemid=' + id + '&quantity=' + quantity,processQuantityUpdate);
}

function processQuantityUpdate(myAJAX) {
	if (myAJAX.readyState == 4) {
		show('update[' + pendingQUpdate + ']');
		hide('loading[' + pendingQUpdate + ']');
		preventUpdate = false;
		var msg = '';
		if (myAJAX.status == 200) {
			if (myAJAX.responseText.length > 0) {
				msg = myAJAX.responseText;
			} else {
				alert('Unable to update quantity. Please try again.');
			}
		} else {
			if(myAJAX.status == '404') alert('The requested resource is no longer available. Try refreshing the page or reporting the error to us.');
			else alert('An error occured. Try again later. HTTP Error code: ' + myAJAX.status);
		}
		if (msg.length > 0) {
			var response = msg.split('\n');
			if (response[0] == 'false') {
				alert(response[1]);
			} else {
				if (response[0] == 'true') {
					if (response[1] == 'deleted') {
						var id = response[2];
						var subtotal = response[3]; var shipping = response[4];
						var fulltotal = response[5];
						hide('product[' + id + '][tr1]');
						hide('product[' + id + '][tr2]');
						checkEmptyCart(subtotal);
					} else {
						var id = response[1]; var quantity = response[2]; var total = response[3]; var subtotal = response[4];
						var shipping = response[5]; var fulltotal = response[6];
						document.getElementById('product[' + id + '][quantity]').value = quantity;
						document.getElementById('product[' + id + '][total]').innerHTML = total + ' $';
					}
					document.getElementById('subtotal').innerHTML = subtotal + ' $';
					document.getElementById('total').innerHTML = fulltotal + ' $';
					document.getElementById('shipprice').innerHTML = shipping + ' $';
				} else {
					alert('An unknown reply was received. Reload this page and try again.\n\nDebugging: ' + msg);
				}
			}
		}
	}
}

function checkEmptyCart(subtotal) {
	if (subtotal == '0') {
		show('emptycart');
		hide('subtotaltr[1]');
		hide('subtotaltr[2]');
		hide('shipdiv[1]');
		hide('shipdiv[2]');
	}
}

function updateShipping(shipid) {
	preventUpdate = true;
	hide('shipnormal');
	show('shiploading');
	new AJAXRequest('POST','updateship.php','session=' + globalsession + '&shipping=' + shipid,processShippingUpdate);
}

function processShippingUpdate(myAJAX) {
	if (myAJAX.readyState == 4) {
		preventUpdate = false;
		var msg = '';
		if (myAJAX.status == 200) {
			if (myAJAX.responseText.length > 0) {
				msg = myAJAX.responseText;
			} else {
				alert('Unable to update shipping price. Please try again.');
			}
		} else {
			if(myAJAX.status == '404') alert('The requested resource is no longer available. Try refreshing the page or reporting the error to us.');
			else alert('An error occured. Try again later. HTTP Error code: ' + myAJAX.status);
		}
		if (msg.length > 0) {
			var response = msg.split('\n');
			if (response[0] == 'false') {
				alert(response[1]);
			} else {
				if (response[0] == 'true') {
						var shipprice = response[1];
						var total = response[2];
						document.getElementById('shipprice').innerHTML = shipprice + ' $';
						document.getElementById('total').innerHTML = total + ' $';
						show('shipnormal');
						hide('shiploading');
						return true;
					} else {
					alert('An unknown reply was received. Reload this page and try again.\n\nDebugging: ' + msg);
					}
			}
		}
		location.reload();
	}
}
