function addToCart(id_arg,name_arg,type_arg) {

	requestString = "/registration2/ajax_addToCart.php";
	requestString += "?id_arg=" + id_arg;
	requestString += "&type_arg=" + type_arg;
	
	if (window.XMLHttpRequest)
		addToCart_eventRequest = new XMLHttpRequest();
	else if (window.ActiveXObject)
		addToCart_eventRequest = new ActiveXObject("Microsoft.XMLHTTP");

	addToCart_eventRequest.onreadystatechange = function() { addToCartHandler(addToCart_eventRequest,name_arg) };
	addToCart_eventRequest.open('GET',requestString,true);
	addToCart_eventRequest.send(null);

}

function addToCartHandler(eventRequest,name_arg) {

	if (eventRequest.readyState == 4) {

		if (eventRequest.responseText == "success") {
			updateCartTotal();
			alert("'"+name_arg+"' has been added to your shopping cart.");
		} else {
			alert("ERROR: "+eventRequest.responseText);
		}

	}

}

function removeFromCart(id_arg,name_arg,detail_level_arg) {

	if (confirm("You are about to remove '"+name_arg+"' from your shopping cart.\n\nAre you sure you want to do this?")) {

		requestString = "/registration2/ajax_removeFromCart.php";
		requestString += "?id_arg=" + id_arg;
		requestString += "&name_arg=" + name_arg;
		
		if (window.XMLHttpRequest)
			removeFromCart_eventRequest = new XMLHttpRequest();
		else if (window.ActiveXObject)
			removeFromCart_eventRequest = new ActiveXObject("Microsoft.XMLHTTP");
	
		removeFromCart_eventRequest.onreadystatechange = function() { removeFromCartHandler(removeFromCart_eventRequest,detail_level_arg) };
		removeFromCart_eventRequest.open('GET',requestString,true);
		removeFromCart_eventRequest.send(null);

	}

}

function removeFromCartHandler(eventRequest,detail_level_arg) {

	if (eventRequest.readyState == 4) {
		
		
			updateCartTotal();
			showCartDetail(detail_level_arg);
		

	}

}

function updateCartTotal() {

	document.getElementById("reg_cart_total_display").innerHTML = "Updating...";

	requestString = "/registration2/ajax_getCartDetail.php";
	
	if (window.XMLHttpRequest)
		cartTotal_eventRequest = new XMLHttpRequest();
	else if (window.ActiveXObject)
		cartTotal_eventRequest = new ActiveXObject("Microsoft.XMLHTTP");

	cartTotal_eventRequest.onreadystatechange = function() { updateCartTotalHandler(cartTotal_eventRequest) };
	cartTotal_eventRequest.open('GET',requestString,true);
	cartTotal_eventRequest.send(null);

}

function updateCartTotalHandler(eventRequest) {
	
	if (eventRequest.readyState == 4) {

		var responseArray = eventRequest.responseText.split("||");
			
		var orderTotal = 0;
		
		for (x = 0; x < responseArray.length; x++) {			
		
			if (responseArray[x] == "org_sub_total") {
			
				x++;
				orgSubTotal = parseFloat(responseArray[x]);
				orderTotal += orgSubTotal;
							
			
			}
			
		}

		document.getElementById("reg_cart_total_display").innerHTML = "$"+orderTotal.toFixed(2);

	}

}

function showCartDetail(detail_level_arg,is_corduro) {

	var get_corduro_form = false;
	if (!is_corduro) {
		get_corduro_form = false;
	} else {
		if (is_corduro == "corduro")
			get_corduro_form = true;
	}

	document.getElementById("reg_cart_detail_display").innerHTML = "Updating...";

	requestString = "/registration2/ajax_getCartDetail.php";
	
	if (window.XMLHttpRequest)
		cartDetail_eventRequest = new XMLHttpRequest();
	else if (window.ActiveXObject)
		cartDetail_eventRequest = new ActiveXObject("Microsoft.XMLHTTP");

	cartDetail_eventRequest.onreadystatechange = function() { showCartDetailHandler(cartDetail_eventRequest,detail_level_arg,get_corduro_form) };
	cartDetail_eventRequest.open('GET',requestString,true);
	cartDetail_eventRequest.send(null);

}

// set up arrays for recalculating totals in manual entry
orgArray = new Array();

function showCartDetailHandler(eventRequest,detail_level_arg,get_corduro_form) {

	if (eventRequest.readyState == 4) {
	
		if (eventRequest.responseText == "") {
			document.getElementById("reg_cart_detail_display").innerHTML = "Your shopping cart is currently empty.";
			if (location.href.indexOf("check_out.php") >= 0)
				document.getElementById("reg_order_submit_buttons").style.display = "none";
		} else {
		
			var contentString = "<table width=100% cellpadding=2 class=\"reg_cart_detail\">\n";
		
			var responseArray = eventRequest.responseText.split("||");
			
			var orderTotal = 0;
			var orgTotal = 0;
			var isPartial = false;
			var partialMinPayment = 0;
			
			for (x = 0; x < responseArray.length; x++) {			
			
				if (responseArray[x] == "org") {
			
					x++;
					orgId = responseArray[x];
					x++;
					orgName = responseArray[x];
			
					orgArray[orgId] = new Array();
			
					contentString += "<tr><td colspan=2 width=100%><strong>"+orgName+"<\/strong><\/td><td><\/td><\/tr>";
					contentString += "<tr><td colspan=3><hr><\/td><\/tr>\n";
					contentString += "<tr><td>Item:<\/td><td>Price:<\/td><td><\/td><\/tr>\n";
	
				}
				
				if (responseArray[x] == "item") {
					
					x++;
					cartItemId = responseArray[x];
					x++;
					itemName = responseArray[x];
					x++;
					itemDescription = responseArray[x];
					x++;
					itemPrice = parseFloat(responseArray[x]);
					x++;
					serviceFee = parseFloat(responseArray[x]);
					x++;
					
					logicPresent = false;
					if (responseArray[x] == "mod") {

						x++;
						logicId = responseArray[x];
						x++;
						logicValue = parseFloat(responseArray[x]);
						x++;
						logicDescription = responseArray[x];
						x++;
						logicFee = responseArray[x];
						serviceFee = parseFloat(logicFee);
						
						itemDescription += "<br>Adjustment: "+logicDescription;
						//itemPrice += logicValue;
						
					} else {
						x--;
					}
								
					contentString += "<tr><td valign=top>"+itemName;
					//if (detail_level_arg == "cart")
					contentString += "<br>"+itemDescription;
					contentString += "<\/td>";
					
					orgArray[orgId][cartItemId] = itemPrice;
					
					if (detail_level_arg == "manual_entry") {
						contentString += "<td valign=top>$<input type=text style=\"width: 100px;\" value=\""+itemPrice.toFixed(2)+"\" name=\"price_"+cartItemId+"\" id=\"price_"+cartItemId+"\" onkeyup=\"updateTotals();\"><\/td>";
					} else {
						contentString += "<td valign=top>$"+itemPrice.toFixed(2)+"<\/td>";
					}
					orgTotal += itemPrice;
					
					if (detail_level_arg == "cart")
						contentString += "<td valign=top><input type=button value=\"Remove\" onclick=\"removeFromCart('"+cartItemId+"','"+itemName.replace(/"/g, '&quot;').replace(/'/g, "\\'")+"','cart')\"><\/td><\/tr>";
					else if (detail_level_arg == "manual_entry")
						contentString += "<td valign=top><input type=button value=\"Remove\" onclick=\"removeFromCart('"+cartItemId+"','"+itemName.replace(/"/g, '&quot;').replace(/'/g, "\\'")+"','manual_entry')\"><\/td><\/tr>";
					else if (detail_level_arg == "checkout")
						contentString += "<td valign=top><input type=button value=\"Remove\" onclick=\"removeFromCart('"+cartItemId+"','"+itemName.replace(/"/g, '&quot;').replace(/'/g, "\\'")+"','checkout')\"><\/td><\/tr>";
					else if (detail_level_arg == "confirmation")
						contentString += "<td><\/td>";
					if (((detail_level_arg == "checkout") || (detail_level_arg == "confirmation")) && (serviceFee > 0)) {
						contentString += "<tr><td>Service Fee</td><td>$"+serviceFee.toFixed(2)+"<\/td><td><\/td><\/tr>\n";
						orgTotal += serviceFee;
					}
													
				}
				
				if ((detail_level_arg == "checkout") || (detail_level_arg == "confirmation")) {
					
					if (responseArray[x] == "attribute") {
						contentString += "<tr><td colspan=3><strong>Registration Details:</strong>";
						x--;
						while (responseArray[x+1] == "attribute") {
							x++;
							x++;
							attributeId = responseArray[x];
							x++;
							attributeName = responseArray[x];
							x++;
							attributeValue = responseArray[x];
							contentString += "<br>"+attributeName+": "+attributeValue;
						}
						contentString += "<\/td><\/tr>\n";					
					}				
				
				}
								
				if (responseArray[x] == "org_sub_total") {
				
					x++;
					orgSubTotal = parseFloat(responseArray[x]);

					if ((detail_level_arg == "checkout") || (detail_level_arg == "confirmation")) {
						orgSubTotal = orgTotal;
						orgTotal = 0;
					}
					
					orderTotal += orgSubTotal;
					
					
					contentString += "<tr><td colspan=3 align=right><br><strong>Sub-Total:<\/strong> $<span id=\"org_"+orgId+"_total\">"+orgSubTotal.toFixed(2)+"<\/span><\/td><\/tr>\n";
				
				}
				
				if (responseArray[x] == "org_min_payment") {
				
					isPartial = true;
					x++;
					partialMinPayment = parseFloat(responseArray[x]);
				
				}
				
			}
			
			contentString += "<tr><td colspan=3 align=right><hr><strong>Total:<\/strong> $<span id=\"cart_total\">"+orderTotal.toFixed(2)+"<\/span><\/td><\/tr>"; 
			
			if ((detail_level_arg == "checkout") && (isPartial == true)) {
			
				contentString += "<tr><td colspan=3 align=right><strong>Payment Amount:<\/strong> $<input id=\"reg_partial_payment_entry\" type=text style=\"width: 60px; text-align: right;\" value=\""+orderTotal.toFixed(2)+"\"><br><span style=\"font-size: 10px;\">(Minimum Payment: $"+partialMinPayment.toFixed(2)+")<\/span><\/td><\/tr>";
			
			}			
			
			contentString += "<\/table>";
									
			if ((detail_level_arg == "checkout") && (orderTotal > 0)){
				if (get_corduro_form) {
				
					getCorduroBillingForm(orderTotal.toFixed(2));
				
				} else {
				
					// get normal form
				
					document.getElementById("reg_billing_info_fields").style.display = "block";
					checkout_validation_required = true;
					if (isPartial == true) {
						document.getElementById("reg_accept_partial").value = "yes";
						document.getElementById("reg_min_payment").value = partialMinPayment;
					}
					
					
				}
			}
			
			document.getElementById("reg_cart_detail_display").innerHTML = contentString;
			
			if (detail_level_arg == "confirmation")
				destroyCart();
				
			
		
		}	
			
	}

}

function updateTotals() {

	cartTotal = 0;

	for (var orgId in orgArray) {
	
		var orgTotal = 0;
		
		for (cartItemId in orgArray[orgId]) {
		
			var itemPrice = parseFloat(document.getElementById("price_"+cartItemId).value);
			orgTotal += itemPrice;
		
		}
		
		document.getElementById("org_"+orgId+"_total").innerHTML = orgTotal.toFixed(2);
		
		cartTotal += orgTotal;
	}
	
	document.getElementById("cart_total").innerHTML = cartTotal.toFixed(2);
	
}

function destroyCart() {

	requestString = "/registration2/ajax_destroyCart.php";
	
	if (window.XMLHttpRequest)
		destroyCart_eventRequest = new XMLHttpRequest();
	else if (window.ActiveXObject)
		destroyCart_eventRequest = new ActiveXObject("Microsoft.XMLHTTP");

	destroyCart_eventRequest.onreadystatechange = function() { destroyCartHandler(destroyCart_eventRequest) };
	destroyCart_eventRequest.open('GET',requestString,true);
	destroyCart_eventRequest.send(null);

}

function destroyCartHandler(eventRequest) {

	if (eventRequest.readyState == 4) {
	
		if (eventRequest.responseText != "success")
			alert("ERROR: "+eventRequest.responseText);
	
	}

}






