function addItemToTrolley(url, productID, id) {
	var data = "";

	var args = new Array();

	args['id'] = id;
	args['productID'] = productID;

	var form = document.getElementById(id);

	if(form && (form.nodeName == "FORM")) {

		for(i = 0; i < form.childNodes.length; i++)
		{
			if(form.childNodes[i].nodeName == "FIELDSET")
			{
				for(j = i; j < form.childNodes[i].childNodes.length; j++)
				{
					var element = form.childNodes[i].childNodes[j];

					if((element.nodeName == "SELECT") || ((element.nodeName == "INPUT") && (element.type == "TEXT")))
					{
						var name = element.id.replace(/_(.)*$/g, "");

						args[name] = element.value;

						data += "&" + name + "=" + element.value;
					}
				}
			}
		}
	}
	else 
	{
		var quantity = document.getElementById("quantity_" + id);

		if(quantity) 
		{
			args['quantity'] = quantity.value;
		} 
		else
		{
			args['quantity'] = 1;
		}
	}

	if(!args['quantity'])
	{
		args['quantity'] = 1;
	}

	url += "/?ajax=true" + data;
	retrieveURL(url, false, displayAddItem, args);
}


function displayAddItem(args) {

	var parent = document.getElementById(args['id']);
	
	var response = document.getElementById("trolleyResponse");
	
	if(!response) {
		response = document.createElement("span");
		response.id = "trolleyResponse";
	}
	
	args['response'] = args['response'].documentElement;
	success = "false";
	message = "";

	if(args['response'] && (args['response'].nodeName == "trolleyMessage")) {
		for(i = 0; i < args['response'].childNodes.length; i++) {
			if(args['response'].childNodes[i].nodeName == "status") {
				success = args['response'].childNodes[i].childNodes[0].nodeValue;
			} else if(args['response'].childNodes[i].nodeName == "message") {
				message = args['response'].childNodes[i].childNodes[0].nodeValue;
			}
		}
	}

	response.innerHTML = message;
	
	if(success == "true") {
//		response.style.border = "1px solid green";
	} else {
//		response.style.border = "1px solid red";
	}

	parent.appendChild(response);
}


function deleteItemFromTrolley(baseURL, url, hash, prefix) {
	
	var confirmDelete = confirm("Are you sure?");

	if(confirmDelete)
	{
		var args = new Array();
		args['baseURL'] = baseURL;
		args['hash'] = hash;
		args['prefix'] = prefix;

		retrieveURL(baseURL + url, false, displayDeleteItem, args);
	}
}


function displayDeleteItem(args) {
	var element = document.getElementById(args['hash']);

	if(element && element.parentNode)
	{
		element.parentNode.removeChild(element);
	}

	updateTrolleyTotals(args['baseURL'], args['prefix']);
}


function updateItemInTrolley(baseURL, url, hash, prefix) {
	
	var args = new Array();
	args['baseURL'] = baseURL;
	args['hash'] = hash;
	args['prefix'] = prefix;

	quantity = document.getElementById(prefix + "_quantity_" + hash).value;

	retrieveURL(baseURL + url + "&quantity=" + quantity, false, displayUpdateItem, args);
}


function displayUpdateItem(args) {
	for(i = 0; i < args['response'].childNodes.length; i++) {
		if(args['response'].childNodes[i].nodeName == "itemTotals") {
			for(j = 0; j < args['response'].childNodes[i].childNodes.length; j++) {
				if(args['response'].childNodes[i].childNodes[j].nodeName == "unitPrice") {
					value = args['response'].childNodes[i].childNodes[j].childNodes[0].nodeValue;
					document.getElementById(args['prefix'] + "_" + args['hash'] + "_unitPrice").innerHTML = value;
				} else if(args['response'].childNodes[i].childNodes[j].nodeName == "itemPrice") {
					value = args['response'].childNodes[i].childNodes[j].childNodes[0].nodeValue;
					document.getElementById(args['prefix'] + "_" + args['hash'] + "_itemPrice").innerHTML = value;
				}
			}
		}
	}

	updateTrolleyTotals(args['baseURL'], args['prefix'], args['hash']);
}


function updateTrolleyTotals(baseURL, prefix, hash) {
	var url = baseURL + "get-trolley-totals";

	var args = new Array();
	args['prefix'] = prefix;
	args['hash'] = hash;

	retrieveURL(url, false, displayUpdateTrolleyTotals, args);
}


function displayUpdateTrolleyTotals(args) {
	for(i = 0; i < args['response'].childNodes.length; i++) {
		if(args['response'].childNodes[i].nodeName == "trolleyTotals") {
			for(j = 0; j < args['response'].childNodes[i].childNodes.length; j++) {
				if(args['response'].childNodes[i].childNodes[j].nodeName == "subTotal") {
					value = args['response'].childNodes[i].childNodes[j].childNodes[0].nodeValue;
					document.getElementById(args['prefix'] + "_subTotal").innerHTML = value;
				} else if(args['response'].childNodes[i].childNodes[j].nodeName == "tax") {
					value = args['response'].childNodes[i].childNodes[j].childNodes[0].nodeValue;
					document.getElementById(args['prefix'] + "_tax").innerHTML = value;
				} else if(args['response'].childNodes[i].childNodes[j].nodeName == "total") {
					value = args['response'].childNodes[i].childNodes[j].childNodes[0].nodeValue;
					document.getElementById(args['prefix'] + "_total").innerHTML = value;
				}
			}
		}
	}
}
