// retrieve XML document (reusable generic function);
// parameter is URL string (relative or complete) to
// an .xml file whose Content-Type is a valid XML
// type, such as text/xml; XML source must be from
// same domain as HTML file



function get_xml_doc (url, myHandler) {
	// branch for native XMLHttpRequest object
	var XMLrequest;
	
	if (window.XMLHttpRequest) {
		XMLrequest = new XMLHttpRequest();
		if (XMLrequest.overrideMimeType) { 
			// older Mozilla-based browsers need some extra help
			XMLrequest.overrideMimeType('text/xml');
		}
		XMLrequest.open("GET", url, true);
		XMLrequest.onreadystatechange = myHandler(XMLrequest);
		
		//if (pub = 'yournabe') alert(XMLrequest.readystate);
		
		XMLrequest.send(null);
	// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		XMLrequest = new ActiveXObject("Msxml2.XMLHTTP");
		if (! XMLrequest) {
			XMLrequest = new ActiveXObject("Microsoft.XMLHTTP");
		}
		if (XMLrequest) {
			XMLrequest.open("GET", url, true);
			XMLrequest.onreadystatechange = myHandler(XMLrequest);
			XMLrequest.send();
		}
	}
	return;
}

//retrieve all text children of an XML node concatenated into string
function get_xml_text_node(element) {
	if (! element) return 'error: not an XML node';
	
	if (element.childNodes.length == 1) return element.firstChild.nodeValue;
	
	var x = 0; var txt = '';
	while (x < element.childNodes.length) {
		if (element.childNodes[x].nodeType == 3) txt = txt + element.childNodes[x].nodeValue;
	}
	return txt;
}
