var request;

function ajaxSelect(select, script, update, selected, fire, all) {
	var value = select.options[select.options.selectedIndex].value;
	if (!value)
		return false;
	document.getElementById('loading').className = '';
	request = new XMLHttpRequest();
	request.open("GET", script+"?id="+value, true);
	request.onreadystatechange = function() { ajaxResponse(update, selected, fire, all) }
	request.send(null);
}

function ajaxResponse(update, selected, fire, all) {
	if (request.readyState == 4) {
		if (request.status == 200)
			populateList(update, selected, fire, all);
		else
			return false;
	}
	return true;
}

function populateList(update, selected, fire, all) {
	var nodes = request.responseXML.documentElement.getElementsByTagName('item');
	var list = document.getElementById(update);
	var oldclass = list.className.split(' ');
	var newclass = '';
	for (var i = 0; i < oldclass.length; i++) {
		if (oldclass[i] != 'hide')
			newclass += oldclass[i]+" ";
	}
	list.className = newclass;

	for (var count = list.options.length-1; count >= 0; count--)
		list.options[count] = null;
	if (all == true)
		list.options[0] = new Option('Show all', '', false, true);
	else
		list.options[0] = new Option('Select', '', false, true);

	var value;
	var text; 
	var option;
	var isSelected = false;
	// populate the dropdown list with data from the xml doc
	for (var count = 0; count < nodes.length; count++) {
		text = GetInnerText(nodes[count]);
		value = nodes[count].getAttribute("id");
		
		if (selected && selected == value)
			isSelected = true;
		else
			isSelected = false;
		option = new Option(text, value, false, isSelected);
		list.options[list.length] = option;
	}
	document.getElementById('loading').className = 'hide';
	if (fire == true) 
		$(update).fireEvent('change');
		
	return true;
}

// returns the node text value 
function GetInnerText (node) {
	 return (node.textContent || node.innerText || node.text || node.firstChild.nodeValue || '') ;
}

