//------------------ AJAX  ------------------------------------------------------------------------

var imgCargando = new Image();
imgCargando.src = "./img/cargando.gif";

var lista_httpRequest = new Array();
var lista_NombreContenedores = new Array();

function DIVRequest(url, metodo, parametros, id_contenedor)
{

	do{
	    var posicion = asignarPosicion(id_contenedor);
	}while (posicion == -1)
	
	//mostramos el mensaje de carga de la pagina....
	var mensajeHTML = "<table width='100%' border='0'><tr><td height='50px' align='center' valign='middle'><img src='" + imgCargando.src + "' /></td></tr></table>";
	document.getElementById(id_contenedor).innerHTML = mensajeHTML;
	
	if (window.XMLHttpRequest){
		// Si es Mozilla, Safari, etc...
		lista_httpRequest[posicion] = new XMLHttpRequest();    
	} 
	else if (window.ActiveXObject){        
		// pero si es IE        
		try
			{
				lista_httpRequest[posicion] = new ActiveXObject("Msxml2.XMLHTTP");        
			}        
		catch (e)
			{            
				// en caso que sea una versión antigua
				document.getElementById(id_contenedor).innerHTML = "Tu navegador NO es capaz de procesar la tecnología AJAX, NO es pasible mastrar la información.";
				return false;
			}
	}
	else{
		document.getElementById(id_contenedor).innerHTML = "Tu navegador no es compatible con los objetos usados en esta página, NO es pasible mastrar la información.";
		return false;
	}

	lista_httpRequest[posicion].onreadystatechange = function ()
		{
			// función de respuesta        
			cargarpagina(posicion, id_contenedor);
		}; 
	
	// genero un numero aleatorio para que la url sea siempre distinta y los navegadores no la cargen de la cache
	var nAleatorio = Math.random();
	//si no se ha definido metodo, se estableze a GET por defecto.
	if (metodo == null || metodo == "undefined" || metodo == ""){
		metodo = "GET";
	}
	if (metodo == "GET")
		{
			url = (parametros == "")?url + "?Random=" + nAleatorio:url + "?" + encodeURI(parametros) + "&Random=" + nAleatorio;
			lista_httpRequest[posicion].open(metodo, url, true);
			lista_httpRequest[posicion].send(null);
		}
	else //es metodo POST
		{
			lista_httpRequest[posicion].open(metodo, url + "?Random=" + nAleatorio, true);
			lista_httpRequest[posicion].setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
			lista_httpRequest[posicion].setRequestHeader("Content-length", parametros.length);
			lista_httpRequest[posicion].send(encodeURI(parametros));
		}

        
}
    
    
    
// todo es correcto y ha llegado el momento de poner la información requerida
// en su sitio en la pagina xhtml
function cargarpagina(posicion, id_contenedor)
{
    if (lista_httpRequest[posicion].readyState == 4){
		if (lista_httpRequest[posicion].status == 200){
			document.getElementById(id_contenedor).innerHTML = lista_httpRequest[posicion].responseText;
		}
		else{
			document.getElementById(id_contenedor).innerHTML = "<table width='100%' border='0'><tr><td height='50px' align='center' valign='middle'>Se ha producido un error al cargar la p&aacute;gina.</td></tr></table>";
		}
		lista_httpRequest[posicion] = null;
	}
	else{
		//no completado
	}
}

var semaforoAJAX = "Verde";
function asignarPosicion(id_contenedor){
	var posicion = -1;
	if (semaforoAJAX == "Verde"){
		semaforoAJAX = "Rojo";
		for(i=0; i<lista_NombreContenedores.length; i++){
			if (lista_NombreContenedores[i] == id_contenedor) {posicion = i;}
		}
		if (posicion == -1) {
			posicion = lista_httpRequest.length;
			lista_NombreContenedores[posicion] = id_contenedor;
		}
		lista_httpRequest[posicion] = null;
		semaforoAJAX = "Verde";
	}
	return posicion;
}


//----------------------------------------------------------------------------------------------------