
//**********************************
//INICIALIZACION AJAX
//**********************************
	var READY_STATE_UNINITIALIZED=0;
	var READY_STATE_LOADING=1;
	var READY_STATE_LOADED=2;
	var READY_STATE_INTERACTIVE=3;
	var READY_STATE_COMPLETE=4;

function inicializa_xhr() 
{
	if (window.XMLHttpRequest) 
	{
		return new XMLHttpRequest();
	}
	else if (window.ActiveXObject) 
	{
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
}


//**********************************
//FUNCIONES PARA ARMAR QUERY STRINGS
//**********************************
//Esta funcion arma un querystring a partir de un formulario. 
//Lee cada campo y arma una cadena incluyendo radio buttons marcados
function ArmaQuery(Formulario) 
{
	//var Formulario = document.forms[formid];
	//var Formulario = document.getElementById(formid);
if (Formulario!=undefined)
{
	var longitudFormulario = Formulario.elements.length;
    var cadenaFormulario = ""
    var sepCampos
    sepCampos = ""
    for (var i=0; i <= Formulario.elements.length-1;i++) 
	{
		//Los radio button NO chequeados no se agregan al query
		var ban=true;
		if (Formulario.elements[i].type=="radio")
		{
			if(Formulario.elements[i].checked==false)
				ban=false;
		}
		if (Formulario.elements[i].type=="checkbox")
		{
			if(Formulario.elements[i].checked==false)
				ban=false;
		}
		
		
		
    	if (ban==true)
   		{
   			cadenaFormulario += sepCampos+Formulario.elements[i].name+'='+encodeURI(Formulario.elements[i].value);
        	sepCampos="&";
     	}
	}
	return	cadenaFormulario;
}
}


//**************************************
//FUNCIONES PARA PETICIONES AL SERVIDOR
//**************************************
function enviar(url, accion, div, Formulario)  
{
 	//url:cadena; accion:numero; div:cadena; formulario:objeto (opcional)
	try
	{	
		var peticion_http = inicializa_xhr();
		if(peticion_http) 
		{	
			
			if (accion==1)  //Usada para envio de acciones: Insertar y Modificar
			{
				var query_string =ArmaQuery(Formulario);
				peticion_http.onreadystatechange = function () { procesaXML(div,Formulario,peticion_http); };
				
			}
            
            if (accion==2)  //Usada para traer contenidos sin parametros
			{
				var query_string = null;
				peticion_http.onreadystatechange = function () { procesaRespuesta(div,peticion_http); };
				
			}
		
            peticion_http.open('POST',  url, true);
			peticion_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			peticion_http.send(query_string);
			}

	}
	catch(err)
	{
  		alert(err.message);
	}	
}




//********************************************
//FUNCIONES PARA LEER RESPUESTAS DEL SERVIDOR
//********************************************
function rescatar_script(texto)
{
	var p1=texto.split("<script",2);
	if (p1[1]) {
		var p2=p1[1].split(">",2);
		var p3=p2[1].split("</script",2)
		if (p3[0] && p3[0]!='')
			eval(p3[0]); 
			texto=p1[0]+p3[1]; 
			texto=rescatar_script(texto); 
	}
	return texto;	
}






function procesaRespuesta(capa,objeto)//Cargar contenidos en Ventanas 
{	
	if(objeto.readyState == READY_STATE_COMPLETE) 
	{
		if (objeto.status == 200) 
		{	
			document.getElementById(capa).innerHTML = objeto.responseText;
			rescatar_script(objeto.responseText);
		}
		else
		{	
			document.getElementById(capa).innerHTML = "<center><b>Error: Recurso NO encontrado</b></center>";
		}
	}
	
}
