var HTTP_STATUS_OK = 200;
var READYSTATE_COMPLETED = 4;

var XmlObj = "";
var ChildNode = "";
var CallFunction = "";
var WSComplete = 0;
var AsynchronousCall = 1;

if (window.XMLHttpRequest)
      	XmlObj = new XMLHttpRequest();
else
	XmlObj = new ActiveXObject("Microsoft.XMLHTTP");

if (XmlObj.overrideMimeType)
	XmlObj.overrideMimeType('text/xml');

function setAsynchronous (A) {
	this.AsynchronousCall = A;
}

function isAsynchronousCall () {
	return AsynchronousCall == 1;
}
	
function setProcessWS(ChildNode, CallFunction) {
	this.ChildNode = ChildNode;
	this.CallFunction = CallFunction;
}

function invokeWS(WS) {
	XmlObj.open("GET", WS, isAsynchronousCall());
	if (isAsynchronousCall())
		XmlObj.onreadystatechange = processWS;

	XmlObj.send(null);
	
	if (!isAsynchronousCall())
		processWS();
}

function processWS() {
	if (XmlObj.readyState == READYSTATE_COMPLETED) {
		WSComplete = 1;
		if (XmlObj.status == HTTP_STATUS_OK)
			eval(CallFunction + '(XmlObj.responseXML.getElementsByTagName(ChildNode)[0])');
		else
			document.write(XmlObj.statusText + "<br>" + XmlObj.responseText);
	}
}

function getData(ChildNode, CallFunction, URL) {
	setProcessWS(ChildNode, CallFunction);
	invokeWS(URL);
}

function appendToSelect(SelectObj, OptValue, OptText, OptSelected) {
    var NewOpt;
    NewOpt = document.createElement("option");
    NewOpt.value = OptValue;
	if (OptSelected == OptValue)
		NewOpt.selected = true;
    NewOpt.appendChild(document.createTextNode(OptText));
    SelectObj.appendChild(NewOpt);
}

function hideData(IDs) {
	toggleVisibility(IDs, 1);
}

function showData(IDs) {
	toggleVisibility(IDs, 0);
}

function toggleVisibility(IDs,Hide) {
	var IDList = IDs.split(",");
	
	for (var i=0; i < IDList.length; i++) {
		if (document.getElementById(IDList[i]) != null) {
			if (Hide)
				document.getElementById(IDList[i]).style.display = 'none';
			else {
				document.getElementById(IDList[i]).style.display = '';
				document.getElementById(IDList[i]).style.visibility = 'visible';
			}
		}
	}
}

function populateSelect(XmlNodes, SelectElem, OptSelected, ToggleVisibility) {
	if (ToggleVisibility.length > 0)
		hideData(ToggleVisibility);

	if (XmlNodes) {
		for (var i=0; i < XmlNodes.childNodes.length; i++) {
			//alert(XmlNodes.childNodes[i].getAttribute("UID"));
			//alert(XmlNodes.childNodes[i].firstChild.data);
			appendToSelect(SelectElem, XmlNodes.childNodes[i].getAttribute("UID"), XmlNodes.childNodes[i].firstChild.data, OptSelected);
		}
		if (ToggleVisibility.length > 0)
			showData(ToggleVisibility);
	}
}