function XmlHttp(){

	var xmlhttp = false;
	var busy = false;



	if (!xmlhttp) {
		
		if (window.XMLHttpRequest)
		{
			xmlhttp = new XMLHttpRequest ();
		} else if (window.ActiveXObject)
		{
			try 
			{
				xmlhttp = new ActiveXObject ("Msxml2.XMLHTTP");
			}
			catch (e)
			{
				try
				{
					xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP");
				}
				catch (e)
				{
				}
			}
		}
	}

	this.requestXML =
	function (sURL, sQueryString, sMethod, element, bAsync, sHTTPUser, sHTTPPassword, sTextoCargando) {
		var elem;
		if (typeof(element)=="string")
			elem = document.getElementById(element);
		else
			elem = element;

		var bEvaluar = (elem==null);

		if (busy) return false;

		sQueryString = (new Date().getTime())+"&"+sQueryString;

		if (elem && (sTextoCargando!==null)){
			if (sTextoCargando==undefined)
				elem.innerHTML = 'Cargando ...';
			else
				elem.innerHTML = sTextoCargando;
		}

		if ((sMethod==undefined) || (sMethod.toLowerCase()!="get")){
			sMethod = "POST";
		}else{
			sMethod = "GET";
			sURL+=("?"+sQueryString);
		}

		busy = true;
		xmlhttp.open(sMethod, sURL, bAsync, sHTTPUser, sHTTPPassword);

		xmlhttp.onreadystatechange =
			function(){
				if (xmlhttp.readyState == 4){
					if(xmlhttp.status == 200) {

						elem.innerHTML = xmlhttp.responseText; //se incluye el texto devuelto como

					}else{
						throw new Error(xmlhttp.responseText + ' Error en la solicitud XMLHttp');
					}
					busy = false;
				}
			}

			if (sMethod=="POST"){
				xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				xmlhttp.send(sQueryString);
			}else{
				xmlhttp.send(null);
			}

		return true;
	}
 
	this.cargarResultado =
	function(sURL, sQueryString, sIdElement, sTextoCargando){
		this.requestXML(sURL, sQueryString, "get", sIdElement, true, null, null, sTextoCargando);
	}

}

XmlHttp.prototype.toString =
function(){
	return "[object XmlHttp]";
}

function llamarasincrono (url, id_contenedor)
{
    var pagina_requerida = false;
    if (window.XMLHttpRequest)
    {

        // Si es Mozilla, Safari etc
        pagina_requerida = new XMLHttpRequest ();
    } else if (window.ActiveXObject)
    {
        // pero si es IE
        try 
        {
            pagina_requerida = new ActiveXObject ("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            // en caso que sea una versión antigua
            try
            {
                pagina_requerida = new ActiveXObject ("Microsoft.XMLHTTP");
            }
            catch (e)
            {
            }
        }
    } 
    else
	{
    	return false;
	}
    pagina_requerida.onreadystatechange = function ()
    {
        cargarpagina (pagina_requerida, id_contenedor);
    }

    pagina_requerida.open ('GET', url, true); // asignamos los métodos open y send
    pagina_requerida.send (null);

}
// todo es correcto y ha llegado el momento de poner la información requerida
// en su sitio en la pagina xhtml
function cargarpagina (pagina_requerida, id_contenedor)
{
    if (pagina_requerida.readyState == 4 && pagina_requerida.status == 200){
		
    	document.getElementById(id_contenedor).innerHTML = pagina_requerida.responseText;
		
	}
}
