var XMLHTTP_READY_STATE_LOADED = 4;
var xmlHttp;
var elementId;

/**
    Populates a child node when a parent node is updated

    param childElementId    id of child node
    param dataSourceUrl     url of data source
    param parentValue       current value of the parent node
*/
function showChild(childElementId, dataSourceUrl, parentValue)
{ 
	xmlHttp = GetXmlHttpObject();
    this.elementId = childElementId;

    dataSourceUrl = dataSourceUrl + parentValue;
	dataSourceUrl += "&sid=" + Math.random();	//prevents server using cache

	if (xmlHttp == null)
	{
		alert ("Browser does not support HTTP Request");
		return;
	}

	if (parentValue == '')     //disable child node
		document.getElementById(elementId).disabled = 1;
	else 
		document.getElementById(elementId).disabled = 0;

	xmlHttp.onreadystatechange = stateChanged;
	xmlHttp.open("GET",dataSourceUrl,true);
	xmlHttp.send(null);
}


/**
    Used internally to handle populating this list
*/
function stateChanged() 
{ 
	if (xmlHttp.readyState == XMLHTTP_READY_STATE_LOADED || xmlHttp.readyState == "complete")
	{
		var row = xmlHttp.responseXML.getElementsByTagName('row');

		document.getElementById(elementId).options.length = 1;

		//leave option[0] as All, hence start options[i+1]
		for (var i = 0; i < row.length; i++)		
			document.getElementById(elementId).options[i+1] = new Option(row[i].getElementsByTagName('name')[0].childNodes[0].nodeValue, 
                                                                            row[i].getElementsByTagName('id')[0].childNodes[0].nodeValue);  
	}
}


function GetXmlHttpObject()
{ 
	var objXMLHttp = null;
	
	if (window.XMLHttpRequest)
		objXMLHttp = new XMLHttpRequest();
	else if (window.ActiveXObject)
		objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");

	return objXMLHttp;
}
