﻿// setup the cart page
function setupCart() {
	var cartTable = $("table");
	var intRegex = new RegExp("^\\s*\\d+\\s*$");
	var quantities = cartTable.find("select");
	quantities.change(function() {
		var val = $(this).val();
		if (!intRegex.test(val)) return;
		var count = parseInt(val);
		if (count < 1 || count > 50) return;
		var id = $(this).siblings("input[type=hidden]").val();
		// update the user session on server
		$.post("/cart",
			{ "Action": "AjaxRefresh", "ID": id, "Quantity": val },
			updateCartPostBack, "json"
		);
		// update page
		var prices = $(this).parent().siblings(".price");
		var priceMatch = new RegExp("\\d+\.\\d{2}");
		var eachPrice = priceMatch.exec(prices[0].innerHTML)[0];
		var itemTotal = eachPrice * count;
		$(prices[1]).html("<span>" + formatCurrency(itemTotal) + "</span>");

		// update subtotal & savings
		var rows = cartTable.find("tbody tr");
		var subTotal = 0;
		var retailPriceTotal = 0;
		for (var i = 0; i < rows.length; ++i) {
			subTotal += parseFloat(priceMatch.exec($(rows[i]).find(".price:eq(1) span").html())[0]);
			var retailPrice = parseFloat($(rows[i]).find(".retail-price").val());
			var select = $(rows[i]).find("select");
			var quantity = select.length ? parseInt(select.val()) : 0;
			retailPriceTotal += retailPrice * quantity;
		}

		$("#subtotal p.price").html(formatCurrency(subTotal));
		$("#subtotal .savings strong").html(formatCurrency(retailPriceTotal - subTotal));
	});
}
function updateCartPostBack(data) {
	if (data.promotionalCount) $("table .promotional .count").html(data.promotionalCount);
}
function formatCurrency(amount) {
	return _effectiveCurrency + "$ " + amount.toFixed(2);
}