var isIE = false;

// global request and XML document objects


function Req(df,id, url)
{

    // branch for native XMLHttpRequest object
    var func;
    var xmlr;
    if (window.XMLHttpRequest) {
       xmlr = new XMLHttpRequest();
       	func =	function(){
       		processReqChange(df,id,xmlr);
       	};
       	
        xmlr.onreadystatechange = func;
        this.xmlr = xmlr;
        this.url =  url;
        this.sendRequest = Req_sendRequest;
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        isIE = true;
        xmlr = new ActiveXObject("Microsoft.XMLHTTP"); 
        func =	function(){
       		processReqChange(df,id,xmlr);
       	};
      
    	xmlr.onreadystatechange = func;
    	this.xmlr = xmlr;
        this.url =  url;
        this.sendRequest = Req_sendRequest;
    }
  
}


// 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 Req_sendRequest() 
{

    // branch for native XMLHttpRequest object
    var urltosend = this.url + "&reqid=" + Math.random();
    this.xmlr.open("GET", urltosend, true);
   	this.xmlr.send(null);
 
}

// handle onreadystatechange event of req object
function processReqChange(df,id,xmlr) {
    // only if xmlr shows "loaded"

    if (xmlr.readyState == 4) {
        if (xmlr.status == 200) {
			df(xmlr,id);
        } else {
        	alert("There was a problem retrieving the XML data:\n" +xmlr.status);
         }
    }
}

function displayresultsinlist(xmlr,id)
{
	var list = document.getElementById(id);
	list.options.length = 0;
	var dirs = xmlr.responseText.split(",");
	for(var ii = 0; ii < dirs.length; ii++)
	{
		var opt = new Option(dirs[ii]);
		list.options[list.options.length] = opt;
	}
}

function debugresults(val)
{
	var list = document.getElementById("testl");
	var opt = new Option();
	opt.text= val;
	list.add(opt,null);	
}


function displayresultsintext(xmlr,id)
{
	findElementandReplaceTextNode1(id,xmlr.responseText)
}

function displayresultsindivusinghtml(xmlr,id)
{
	var eltd = document.getElementById(id);
	eltd.style.visibility ='visible';
	eltd.innerHTML = xmlr.responseText;
}


function findElementandReplaceTextNode1(id,txt)
{
	var eltd = document.getElementById(id);
	var chnodes = eltd.childNodes;
	for (var i = 0; i < chnodes.length; i++)
	{
	   var n = chnodes[i];
	   if(n.nodeType == 3)
	   {
	       eltd.replaceChild(document.createTextNode(txt),n);
	   }
	}
}
