/* función para crear un objeto HTTP */
function createXMLHttp() {
	if( typeof XMLHttpRequest != "undefined" ) {
		return new XMLHttpRequest();
	}
	else if( window.ActiveXObject) {
		var aVersions = [ 
			"MSXML2.XMLHttp.5.0",
			"MSXML2.XMLHttp.4.0",
			"MSXML2.XMLHttp.3.0",
			"MSXML2.XMLHttp",
			"Microsoft.XMLHttp"
		];
		for( var i = 0; i < aVersions.length; i++ ) {
			try {
				var oXmlHttp = new ActiveXObject( aVersions[i] );
				return oXmlHttp;
			}
			catch ( oError ) {
				// Error
			}
		}
	}
	throw new Error("El objecto XMLHttp no pudo ser creado");
}

var xmlHttpResult = "";
var xmlHttpError = "";
/********************************************************************************************************************
 * Función que realiza conexión HTTP y regresa el código HTML, después ejecuta la función enviada como parámetro	*
 * 'execute' si no se envía el parámetro el resultado del httprequest se insertará en el div con el id del parámetro*
 * domObject. IS																									*
 ********************************************************************************************************************/
function getHttpRequest(action, execute, domObject, message) {
	if( domObject != '' &&  execute == '' )
		LoadingObject(domObject, message);
	var oXmlHttp = createXMLHttp();
	//oXmlHttp.setRequestHeader("Content-type", "text/html; charset=ISO-8859-1");
	oXmlHttp.open("get", action, true);	
	oXmlHttp.onreadystatechange = function () {
		if ( oXmlHttp.readyState == 4 ) {
			if( oXmlHttp.status == 200 )
				xmlHttpResult = oXmlHttp.responseText;
			else {	
				xmlHttpResult = "*** ERROR *** <br/><a href='javascript:alert(xmlHttpError);'>Ver detalle</a>";
				xmlHttpError = "Error ID : " + oXmlHttp.status + "\nDescripción : " + oXmlHttp.responseText;
			}
			//alert(escape(oXmlHttp.responseText));
			//alert(unescape(escape(oXmlHttp.responseText)));
			//alert("--" + oXmlHttp.responseText);
			if( domObject != '' ) {
				GetObjectByID(domObject).innerHTML = oXmlHttp.responseText;
			}
			if( execute != '' )
				eval(execute);
			//if( domObject == '' && execute == '' )	
				//window.status("Datos guardados correctamente...");
		}
	};
	oXmlHttp.send(null);
}

/* Función que pone un mensaje de cargando en un layer antes de traer su contenido DOM */
function LoadingObject(objectID, message) {
	var out = "";
	if(!message){
		message = "datos";}
	out = "<div id='loading'><img src='http://i2.esmas.com/comunidades/img/Cargando.gif' width='150' height='60' border='0'>";

	if( message.indexOf("THM:") > -1 ){
		out += "<br/>" + message.substring( 4, message.length );}
	else if(message != "none"){
		out += "<br/>Cargando " + message + " por favor espera...";}
	
	out += "</div>";
	
	if( message == ".."){
		out = "cargando...";}
	if( message.indexOf("MSG:") > -1 ){
		out = message.substring( 4, message.length );}
	
	document.getElementById(objectID).innerHTML = out;	
}
// Regresa un objeto con el elemeto de la página solicitado en base a su ID
function GetObjectByID(objectID) {
	// Si el browser es NS 4 o menor
	if(document.layers){
		return document.layers[objectID];
	// Si el browser es IE 4 o +	
	}else if(document.all){
		return eval('document.all.' + objectID);
	}else{
		return document.getElementById(objectID);}
}

/* Funcion que elimina espacios y retornos a los lados de un string */
function trim(stringToTrim) {
	stringToTrim = stringToTrim.replace(/^\n+|\n+$/g,"");
	stringToTrim = stringToTrim.replace(/^\r+|\r+$/g,"");
	stringToTrim = stringToTrim.replace(/^\s+|\s+$/g,"");
	return stringToTrim;
}
