function processedListOfBooklistsXMLresponse(XMLdoc)
{
	var doc = XMLdoc;
	this.getStatus = getProcessedXMLresponseStatus;
	this.getErrors = getProcessedXMLresponseErrors;
	this.getBooklists = getProcessedXMLresponseBooklists;
	this.isSuccess = getProcessedXMLresponseStatusIsSuccess;
	this.alertErrors = getProcessedXMLresponseAlertErrors;

	function getProcessedXMLresponseStatus()
	{
		return doc.getElementsByTagName("status")[0].firstChild.data;
	}

	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 Error(result[i]);
			}
			return errors;
		}
		else
			return null;
	}
	
	function getProcessedXMLresponseBooklists()
	{
		var result = doc.getElementsByTagName("booklist");
		if(result.length != 0)
		{
			var booklists = new Array(result.length);
			for(var i=0; i<booklists.length; i++)
			{
				booklists[i] = new Booklist(result[i]);
			}
			return booklists;
		}
		else
			return null;
	}

	function getProcessedXMLresponseStatusIsSuccess()
	{
		if(getProcessedXMLresponseStatus()=="failure")
			return false;
		else
			return true;
	}

	function Error(errorTag)
	{
		var tag = errorTag;
		this.getName = returnName;
		this.getDescription = returnDescription;

		function returnName()
		{
			return tag.getElementsByTagName("name")[0].firstChild.data;
		}

		function returnDescription()
		{
			return tag.getElementsByTagName("description")[0].firstChild.data;
		}
	}
	
	function Booklist(booklistTag)
	{
		var tag = booklistTag;
		this.getId = returnId;
		this.getName = returnName;
		this.isCollection = returnIsCollection;
		
		function returnId()
		{
			return tag.getElementsByTagName("id")[0].firstChild.data;
		}
		
		function returnName()
		{
			return tag.getElementsByTagName("name")[0].firstChild.data;
			//return tag.getElementsByTagName("isCollection")[0].firstChild.data;
		}
		
		function returnIsCollection()
		{
			return tag.getElementsByTagName("isCollection")[0].firstChild.data;
		}
	}
	
	function getProcessedXMLresponseAlertErrors()
	{
		var errors = getProcessedXMLresponseErrors();
		var msg = "";
		if(errors.length<=0)
			return false;
		else
			msg += "Following error" + (errors.length==1?"":"s") + " occured:";
		for(var i=0; i<errors.length; i++)
		{
			msg += "\n(" + (i+1) + ") " + errors[i].getName() + ": " + errors[i].getDescription();
		}
		alert(msg);
		return true;
	}
}