// código común a varias áreas que utilizan arquitectura AJAX

// Objeto para realizar la llamada XMLRequest
var requests = new Array();

/**
 *	carga un documento disponible en la url especificada utilizando tecnología AJAX
 *	@param   url                     url del doc
 *	@param   handleCambioEstado      nombre del handle (funcion) o código al que debe llamar en los cambios de estado de la petición AJAX
 */
function loadXMLDoc(url_xml,query_string,handleCambioEstado,method) {

	// Miramos en que posición toca crear el nuevo objeto request (la última)
	var ind = requests.length

	requests[ind] = false;
	
    // Comprobamos si existe el objeto XMLHttpRequest nativo (Mozilla, Firefox, Opera, Safari ...)
    if(window.XMLHttpRequest) {
		try {
			requests[ind] = new XMLHttpRequest();
		} catch(e) {
			requests[ind] = false;
		}
    }
    // si no existe en principio es un IE en Win
    else if(window.ActiveXObject) {
       	try {
        	requests[ind] = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		requests[ind] = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		requests[ind] = false;
        	}
		}
    }
    // Otros
    else if(window.createRequest) {
    	try {
    		requests[ind] = window.createRequest();
    	} catch (e) {
    		requests[ind] = false;
    	}
    }
    
	if(requests[ind]) {
		
		// Definimos la función que se llamará en cada cambio de estado
		requests[ind].onreadystatechange = function () {
            handleCambioEstado(requests[ind]);
        }

		// Y realizamos la llamada
		requests[ind].open(method, url_xml);
		requests[ind].setRequestHeader("Content-Type", "application/x-www-form-urlencoded");		
		requests[ind].send(query_string);
	}
}


