function Asynchronous( ) {
	this._xmlhttp = new FactoryXMLHttpRequest();
}

function Asynchronous_call(url, param, func) {
	var instance = this;
	this._xmlhttp.open('GET', url, true);
	this._xmlhttp.onreadystatechange = function() {
		switch(instance._xmlhttp.readyState) {
		case 1:
			instance.loading();
			break;
		case 2:
			instance.loaded();
			break;
		case 3:
			instance.interactive();
			break;
		case 4:
			instance.complete();
			//ClientFunc(param, instance._xmlhttp.status, instance._xmlhttp.statusText,instance._xmlhttp.responseText, instance._xmlhttp.responseXML);
			if (func)
			{
				return func(param,instance._xmlhttp.status,instance._xmlhttp.statusText,instance._xmlhttp.responseText, instance._xmlhttp.responseXML);
			}
			break;
	}
	}
	this._xmlhttp.send(null);
}

function Asynchronous_loading() {
}

function Asynchronous_loaded() {
}

function Asynchronous_interactive() {
}

function Asynchronous_complete(status, statusText, responseText, responseHTML) {
}

Asynchronous.prototype.loading = Asynchronous_loading;
Asynchronous.prototype.loaded = Asynchronous_loaded;
Asynchronous.prototype.interactive = Asynchronous_interactive;
Asynchronous.prototype.complete = Asynchronous_complete;
Asynchronous.prototype.call = Asynchronous_call;


function FactoryXMLHttpRequest() {
	if(window.XMLHttpRequest) {
		return new XMLHttpRequest();
	}
	else if(window.ActiveXObject) {
		var msxmls = new Array(
		'Msxml2.XMLHTTP.5.0',
		'Msxml2.XMLHTTP.4.0',
		'Msxml2.XMLHTTP.3.0',
		'Msxml2.XMLHTTP',
		'Microsoft.XMLHTTP');
		for (var i = 0; i < msxmls.length; i++) {
			try {
				return new ActiveXObject(msxmls[i]);
			} catch (e) {
				}
			}
		}
	throw new Error("Could not instantiate XMLHttpRequest");
}

function Process_results(param, status, statusText, responseText, responseXML){
	


	//verifyXML(responseXML); //verifica formato del archivo XML
	parseResults(responseXML, param);

}

function parseResults(oXml,sParam) {



var xmlDoc = oXml.documentElement;
var arrOptions = sParam.split("#");
var sTypeElement = arrOptions[0];
var sFormName = arrOptions[1];
var sElementName = arrOptions[2];

switch(sTypeElement) {

case "CBO":
	var objDDL = document.forms[sFormName].elements[sElementName];
	//objDDL.options.length = 0;
	var sSelected = "";
	var xRows = xmlDoc.getElementsByTagName('entry');
	for(i=0;i<xRows.length;i++){
		var theText = xRows[i].childNodes[0].firstChild.nodeValue;
		var theValue = xRows[i].childNodes[1].firstChild.nodeValue;
		if (xRows[i].childNodes[0].getAttribute("selected")=="true") {
			var sSelected = theValue;
		}
		var option = new Option(theText,theValue);
		try{
			objDDL.add(option,null);
		}catch (e){
			objDDL.add(option,-1);
		}
	}
	if (sSelected!="") {
		objDDL.value = sSelected;
	}
	break;

case "TXT":
	var objDDL = document.forms[sFormName].elements[sElementName];
	var xRows = xmlDoc.getElementsByTagName('entry');
	objDDL.value = xRows[0].childNodes[0].firstChild.nodeValue;
	break;

case "DIV":
	var objDDL = document.forms[sFormName].elements[sElementName];
	var xRows = xmlDoc.getElementsByTagName('entry');

	if (is_ie)
	{
		document.getElementById(sElementName).innerHTML = xRows[0].childNodes[0].firstChild.nodeValue;
		break;
	}
	else{
		document.getElementById(sElementName).innerHTML = xRows[0].childNodes[1].firstChild.nodeValue;
		break;	
	}

}
}

