

onLoadAjax = null;

/**
 * Carga el contenido de un documento XML en un elemento de la página.
 * 
 * @param url URL del documento a cargar
 * @param id_contenedor Id del elemento de la página en el cargar el documento devuelto
 * @param data Opcional. Cadena de pares propiedad/valor para pasar datos al documento a cargar. Si se especifica el metodo
 * 			   de envío se establece en POST.
 * @param progress Opcional. Permite establecer una imágen que se mostrará mientras se tramita la petición.
 */
function ajax(url, id_contenedor, data, progress) {
	var pagina_requerida = null;
	// Comprobación del navegador
	if (window.XMLHttpRequest) {
		pagina_requerida = new XMLHttpRequest(); // Mozilla, etc...
	} else if (window.ActiveXObject) {		
		try {
			pagina_requerida = new ActiveXObject("Msxml2.XMLHTTP"); // IE
		} catch (e) {			
			try {
				pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP"); // IE 6
			} catch (e) { }
		}
	} else {
		return false;
	}
	pagina_requerida.onreadystatechange = function() {
		cargarpagina(pagina_requerida, id_contenedor);
	};
	if(data == null){
		pagina_requerida.open('GET', url, true); // asignamos los métodos open y send
	} else {
		pagina_requerida.open('POST', url, true);
		pagina_requerida.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	}
	if(progress != null) {
		loadProgressImage(id_contenedor, progress);
	}
	pagina_requerida.send(data);
};

/**
 * Función privada. No invocar desde la página.
 * @param pagina_requerida
 * @param id_contenedor
 */
function cargarpagina(pagina_requerida, id_contenedor) {
	if (pagina_requerida.readyState == 4 && (pagina_requerida.status == 200 || window.location.href.indexOf("http") == -1)){
		document.getElementById(id_contenedor).innerHTML = pagina_requerida.responseText;
		if(onLoadAjax != null){
			onLoadAjax();
		}
	}
}

function loadProgressImage(id_contenedor, imagen) {
	document.getElementById(id_contenedor).innerHTML = '<table width="100%"><tr><td align="center"><img src="'+imagen+'" /></td></tr></table>';
};
