

window.onload = initAll;


// XMLHttpRequest object:

var xhr = false;





function outputString( string )
{
 document.getElementById("updateArea").innerHTML = string;
}


function initAll() 	
// this is run when window loads
// sets up event handlers - when user clicks these links it calls getNewFile()
{
	document.getElementById("t").onclick = getNewFile;
	document.getElementById("x").onclick = getNewFile;
	document.getElementById("x2").onclick = getXMLFile;
}


function getNewFile() 
{
	makeRequest(this.href);		// call fn with whatever is in href
	return false;			// don't load new web page
}


function getXMLFile() 	 
{
	makeRequest("test.ajax.xml");		 
	return false;			 
}





function makeRequest(url) 
{

	if (window.XMLHttpRequest) 		 
	{
		xhr = new XMLHttpRequest();
	}
 
	if (xhr) 
	{
		xhr.onreadystatechange = showContents;			// this fn is called when xhr is ready
		xhr.open("GET", url, true);					// GET url of file on the same server as this
		xhr.send(null);
	}
	else 
	{
		outputString ( "Error: Browser does not support XMLHttpRequest" );
	}

		// We do not here support IE6 and earlier.
		// This is less than 10 percent of users:
 		// http://en.wikipedia.org/wiki/Internet_Explorer#Market_adoption_and_usage_share
		// It is possible to support Ajax on IE6. Not shown here.

}





function showContents() 
{
 if ( xhr.readyState == 4 ) 		// xhr finished
 {

  if ( xhr.status == 200 ) 		// HTTP code 200
   extractit();
  else 
   outputString ( "Error: Status " + xhr.status );

 }
}




function extractit()			// will be TXT or XML
{

 if ( xhr.responseXML )					// XML object 
 {
  if ( xhr.responseXML.documentElement )		// XML object appears to be structured
  {
	 var outStr = parseit ( xhr.responseXML );	
	 outputString ( "XML <p> " + outStr  );		 
  }
  else														 
   outputString ( "TXT <p> " + xhr.responseText );
 }

 else														 
  outputString ( "TXT <p> " + xhr.responseText );
													 
}


			//  Note: Don't use xhr.responseXML.xml (that is IE only)




function NodeContents ( n )
// <tag>X</tag>
// <tag value="X"/>
// in either case, return X
{
 if ( n.text )  				// IE
  return n.text;

 else if ( n.textContent )		// non-IE
  return n.textContent;

 else
  return n.attributes.getNamedItem("value").value;
}




function parseit ( xml )
// parse the XML, returns a string
{
   	 var items = xml.getElementsByTagName("item");

	 var s = "";
    	 for ( var i=0; i < items.length; i++ )
	 {
   	  var labels = items[i].getElementsByTagName("label");
   	  var values = items[i].getElementsByTagName("value");
	  var label = NodeContents( labels[0] );
	  var value = NodeContents( values[0] );
	  s = s + "<font color=navy><b>" + label + ":</b></font> " + value + "<p>";
	 }
	return s;
}





