// process XML response from TSO

function processedCartXMLresponse(XMLdoc)
{
	var doc = XMLdoc;
	this.getItems = getProcessedCartXMLresponseItems;
	this.getOrderError = getProcessedCartXMLresponseOrderError;
	this.hasOrderError = getProcessedCartXMLresponseHasOrderError;
	this.hasErrors = getProcessedCartXMLresponseHasErrors;
	
	function getProcessedCartXMLresponseOrderError()
	{
		return doc.getElementsByTagName("orderError")[0].firstChild.data;
	}
	
	function getProcessedCartXMLresponseHasOrderError()
	{
		if(doc.getElementsByTagName("orderError").length == 0)
			return false;
		else
			return true;
	}

	function getProcessedCartXMLresponseItems()
	{
		var result = doc.getElementsByTagName("item");
		if(result.length > 0)
		{
			var items = new Array(result.length);
			for(var i=0; i<result.length; i++)
				items[i] = new Item(result[i]);
			return items;
		}
		else
			return null;
	}

	function getProcessedCartXMLresponseHasErrors()
	{
		var result = doc.getElementsByTagName("error");
		if(result.length > 0)
			return true;
		else
			return false;
	}
	
	/*
	function getProcessedXMLresponseErrors()
	{
		var result = doc.getElementsByTagName("error");
		if(result.length != 0)
		{
			var errors = new Array(result.length);
			for(var i=0; i<errors.length; i++)
			{
				//errors[i] = new Array(result[i].childNodes[0].firstChild.data, result[i].childNodes[1].firstChild.data);
				errors[i] = new Error(result[i]);
			}
			return errors;
		}
		else
			return null;
	}*/

	function Error(errorTag)
	{
		var tag = errorTag;
		this.getKey = returnKey;
		this.getDescription = returnDescription;

		function returnKey()
		{
			return tag.getElementsByTagName("key")[0].firstChild.data;
		}

		function returnDescription()
		{
			return tag.getElementsByTagName("description")[0].firstChild.data;
		}
	}

	function Item(itemTag)
	{
		var tag = itemTag;
		this.getId = returnId;
		this.getStatus = returnStatus;
		this.getError = returnError;
		this.hasError = returnHasError;

		function returnId()
		{
			return tag.getElementsByTagName("id")[0].firstChild.data;
		}

		function returnStatus()
		{
			return tag.getElementsByTagName("status")[0].firstChild.data;
		}
		
		function returnError()
		{
			var error = tag.getElementsByTagName("error");
			if(error.length > 0)
				return new Error(error[0]);
			else
				return null;
		}
		
		function returnHasError()
		{
			return returnError()==null ? false : true;
		}
	}
}