// XML Parser Library

function readTag( doc, tag ) {
	if (!hasTag(doc, tag)) {
		return "";
	}
	var itemList = doc.getElementsByTagName( tag );
	var item = itemList.item( 0 );
	if( !item ) {
		return "";
	}

	var textNode = item.firstChild;
	if( textNode ) {
		return textNode.data;
	}

	return "";
}

function hasTag( doc, tag ) {
	var itemList = doc.getElementsByTagName( tag );
	return itemList.length > 0;
}

function getXmlForLookupHoldingOrPatronByBarcode(barcode, allowSearchByName, locID) {
	var xml  = "<actionmessagelist><action>\n";
		xml += "<type>query_holdings_or_patron_by_barcode</type>\n";
		xml += "<origin>circdesk</origin>\n";
		xml += "<barcode>" + escapePlus(barcode) + "</barcode>\n";
		if (locID != "") {
			xml += "<locID>" + locID + "</locID>\n";
		}
		if (allowSearchByName != ""){
			xml += "<allowSearchByName>"+allowSearchByName+"</allowSearchByName>\n";
		}
		xml += "</action></actionmessagelist>";
	return xml;
}

function getXmlForLookupPatronByBarcode(barcode, locID) {
	var xml  = "<actionmessagelist><action>\n";
		xml += "<type>query_patron_by_barcode</type>\n";
		xml += "<origin>circdesk</origin>\n";
		xml += "<barcode>" + escapePlus(barcode) + "</barcode>\n";
		if (locID != "") {
			xml += "<locID>" + locID + "</locID>\n";
		}
		xml += "</action></actionmessagelist>";
	return xml;
}

function getXmlForLookupPatronById(id, locID) {
	var xml  = "<actionmessagelist><action>\n";
		xml += "<type>query_patron_by_id</type>\n";
		xml += "<origin>circdesk</origin>\n";
		xml += "<id>" + id + "</id>\n";
		if (locID != "") {
			xml += "<locID>" + locID + "</locID>\n";
		}
		xml += "</action></actionmessagelist>";
	return xml;
}

function getXmlForDelayedItemsOutByPatronId( id, locID ) {
	var xml  = "<actionmessagelist><action>\n";
		xml += "<type>query_patron_by_id</type>\n";
		xml += "<completeitemsoutonly>yes</completeitemsoutonly>\n";
		xml += "<id>" + id + "</id>\n";
		if (locID != "") {
			xml += "<locID>" + locID + "</locID>\n";
		}
		xml += "</action></actionmessagelist>";
	return xml;
}

function getXmlForChangeSetting(settingname, settingvalue, settingtype){
	var xml  = "<actionmessagelist><action>\n";
		xml += "<type>set_worker_setting</type>\n";
		xml += "<settingName>" + settingname + "</settingName>\n";
		xml += "<settingValue>" + settingvalue + "</settingValue>\n";
		xml += "<settingType>" + settingtype + "</settingType>\n";
		xml += "</action></actionmessagelist>";
	return xml;
}

function getXmlForProgressStatus(progressID){
	var xml  = "<actionmessagelist><action>\n";
	xml += "<type>query_progress_status</type>\n";
	xml += "<progressID>" + progressID + "</progressID>\n";
	xml += "</action></actionmessagelist>";
	return xml;
}

function getXmlForResolverSearch(resolverID, term, type){
	var xml  = "<actionmessagelist><action>\n";
	xml += "<type>resolver_search</type>\n";
	xml += "<searchTerm>" + term + "</searchTerm>\n";
	xml += "<searchType>" + type + "</searchType>\n";
	xml += "<usedServiceID>" + resolverID + "</usedServiceID>\n";
	xml += "</action></actionmessagelist>";
	return xml;
}

function getXmlForInventoryMarkSeen( preBarcode, barcode, postBarcode, inventoryStateID, workerID, locID) {
	var xml  = "<actionmessagelist><action>\n";
		xml += "<type>inv_mark_seen_full</type>\n";
		xml += "<preBarcode>" + escapePlus(preBarcode) + "</preBarcode>\n";
		xml += "<holdingsbarcode>" + escapePlus(barcode) + "</holdingsbarcode>\n";
		xml += "<postBarcode>" + escapePlus(postBarcode) + "</postBarcode>\n";
		xml += "<inventoryStateID>" + inventoryStateID + "</inventoryStateID>\n";
		xml += "<workerID>" + workerID + "</workerID>\n";
		xml += "<workerLocationID>" + locID + "</workerLocationID>\n";
		xml += "</action></actionmessagelist>";
	return xml;
}

function getXmlForInventoryCheckOrder(barcodes, inventoryStateID, workerID, locID){
	var xml  = "<actionmessagelist><action>\n";
		xml += "<type>inv_check_order</type>\n";
		xml += "<holdingsbarcode>" + escapePlus(barcodes) + "</holdingsbarcode>\n";
		xml += "<inventoryStateID>" + inventoryStateID + "</inventoryStateID>\n";
		xml += "<workerID>" + workerID + "</workerID>\n";
		xml += "<workerLocationID>" + locID + "</workerLocationID>\n";
		xml += "</action></actionmessagelist>";
	return xml;
}



