var xmlHttp;
var DivObjProcessOrigState;
var DivObjProcessOrigHTML;
var DivObj;
var DivObjProcess;
var xScriptFunctionObj;

function GetXmlHttpObject(){
	var xmlHttp = null;
	try{
		// Firefox, Opera 8.0+, Safari 1.2
		xmlHttp = new XMLHttpRequest();
	}catch(e){
		// Internet Explorer 6.0+
		try{
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			// Internet Explorer 5.0
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function StateChanged(){
	switch(xmlHttp.readyState){
		case 4:
			if(DivObjProcess){
				DivObjProcess.style.display = DivObjProcessOrigState;
				DivObjProcess.style.innerHTML = DivObjProcessOrigHTML;
			}
			if(DivObj){
				if(xmlHttp.status == 200){
					DivObj.innerHTML = xmlHttp.responseText;
				}else{
					DivObj.innerHTML = '<font face="Arial">No se ha podido obtener la informaci&oacute;n solicitada, intente nuevamente.</font>';
				}
			}
			if(xScriptFunctionObj != null){xScriptFunctionObj();}
			break;
			
		default:
			if(DivObjProcess){
				DivObjProcess.innerHTML = '<img src="images/cargando.gif" border="0" /> Procesando...';
				DivObjProcess.style.display = '';
			}
			break;
	}
}

function doAjax(xStrURL, xScriptFunction, xDivObj, xDivObjProcess, ForceHide){
	xScriptFunctionObj = xScriptFunction;
	xmlHttp = GetXmlHttpObject();
	if(xmlHttp == null){
		alert("Su explorador no soporta tecnología AJAX!");
		return;
	}
	DivObj = xDivObj;
	DivObjProcess = xDivObjProcess;
	if(DivObjProcess){
		if(ForceHide){
			DivObjProcessOrigState = 'none';
		}else{
			DivObjProcessOrigState = DivObjProcess.style.display;
		}
		DivObjProcessOrigHTML = DivObjProcess.innerHTML;
	}
	
	if(xStrURL.indexOf('?') == -1){
		xStrURL += "?";
	}else{
		xStrURL += "&";
	}
	xStrURL += "sid=" + Math.random();
	try{
		xmlHttp.onreadystatechange = StateChanged;
		xmlHttp.open("GET", xStrURL, true);
		xmlHttp.send(null);
	}catch(e){
		if(DivObjProcess){DivObjProcess.innerHTML = "Error: " + e.message + '<br />' + e.description;}
		return;
	}
}
