// JavaScript Document
function nuevoAjax(){
	var xmlhttp = false;
 	try {
 		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 	} catch (e) {
 		try {
 			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 		} catch (E) {
 			xmlhttp = false;
 		}
  	}

	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
 		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}

/*
Envia datos por el metodo get
	@arguments[0]: url destino.
	@arguments[1....n-1]: por parejas nombre -> valor
	@arguments[n]: operacion posterior al retorno de la peticion
la repuesta debe estar codificada en javascript
*/
function sendGet(){
	var ajax = nuevoAjax();
	var url = arguments[0];
	var strVars = "";
	var limit = arguments.length%2 == 0? arguments.length - 1: arguments.length;
	var after = limit%2 != 0 && limit > 1? arguments[limit]: '';
	for(var i = 1; i < limit; i++)
	{
		strVars += i === 0 ? arguments[i] + "=": "&" + arguments[i] + "="; i++;
		strVars += arguments[i];
	}
	
	ajax.open("GET", url + "?" + strVars);
	
	ajax.onreadystatechange=function() {
		if (ajax.readyState==4) {
			try {
				eval(ajax.responseText + after);
				}
			catch(e)
			{ alert(ajax.responseText); }
	 	}
	};
	ajax.send(null);
}

/*
Envia datos por el metodo get
	@arguments[0]: url destino.
	@arguments[1....n-1]: por parejas nombre -> valor
	@arguments[n]: operacion posterior al retorno de la peticion
la repuesta debe estar codificada en javascript
*/
function sendPost(){
	var ajax=nuevoAjax();
	var url = arguments[0];
	var strVars = "";
	var limit = arguments.length%2 == 0? arguments.length - 1: arguments.length;
	var after = limit%2 != 0 && limit > 1? arguments[limit]: '';
	for(var i = 1; i < limit; i++)
	{
		strVars += i === 0 ? arguments[i] + "=": "&" + arguments[i] + "="; i++;
		strVars += arguments[i];
	}
	ajax.open("POST", url, true);
	ajax.onreadystatechange=function() {
		if (ajax.readyState==4) {
			try {
				eval(ajax.responseText + after);	
			}
			catch(e)
			{ alert(ajax.responseText); }
	 	}
	};
	ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	ajax.send(strVars);
}
/*
Envia datos por el metodo get
	@arguments[0]: url destino.
	@arguments[1]: objeto destino.
	@arguments[2....n-1]: por parejas nombre -> valor
	@arguments[n]: operacion posterior al retorno de la peticion
la repuesta debe estar codificada en html
*/
function sendGetToHtml(){
	var ajax = nuevoAjax();
	var url = arguments[0];
	var id = arguments[1];
	var strVars = "";
	var limit = arguments.length%2 != 0? arguments.length - 1: arguments.length;
	var after = limit%2 == 0 && limit > 1? arguments[limit]: '';
	for(var i = 2; i < limit; i++)
	{
		strVars += i === 0 ? arguments[i] + "=": "&" + arguments[i] + "="; i++;
		strVars += arguments[i];
	}
	
	ajax.open("GET", url + "?" + strVars);
	
	ajax.onreadystatechange=function() {
		if (ajax.readyState==4) {
			var obj = document.getElementById(id);
			obj.innerHTML = ajax.responseText;
			eval(after);
	 	}
	};
	ajax.send(null);
}

/*
Envia datos por el metodo post
	@arguments[0]: url destino.
	@arguments[1]: objeto destino.
	@arguments[2....n-1]: por parejas nombre -> valor
	@arguments[n]: operacion posterior al retorno de la peticion
la repuesta debe estar codificada en html
*/
function sendPostToHtml(){
	var ajax=nuevoAjax();
	var url = arguments[0];
	var id = arguments[1];
	var strVars = "";
	var limit = arguments.length%2 != 0? arguments.length - 1: arguments.length;
	var after = limit%2 == 0 && limit > 1? arguments[limit]: '';
	for(var i = 2; i < limit; i++)
	{
		strVars += i == 2 ? arguments[i] + "=": "&" + arguments[i] + "="; i++;
		strVars += arguments[i];
	}
	ajax.open("POST", url, true);
	ajax.onreadystatechange=function() {
		if (ajax.readyState==4) {
			var obj = document.getElementById(id);
			obj.innerHTML = ajax.responseText;
			eval(after);
	 	}
	};
	ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	ajax.send(strVars);
}
