/**
* crearXMLHttpRequest:	Función que crea un objeto que será el que envie y reciba
*						información de manera asíncrona al servidor Web
* Parámetros:			Ninguno
* Retorna:				Objeto de comunicación AJAX
**/
function crearXMLHttpRequest() 
{
	var objeto = null;
	
	if( window.ActiveXObject ) //si es Internet Explorer
	{
		objeto = new ActiveXObject( "Microsoft.XMLHTTP" );
	}
	else //Si es Mozilla Firefox u otros compatible a Nestcape
	{
		if( window.XMLHttpRequest )
		{
			objeto = new XMLHttpRequest();
		}
	}
	return objeto;
}

/**
* enviar:		Función que realiza la carga asíncrona de información utilizando AJAX
* Parámetros:	url,		página que se va a cargar
*				datos,		datos que se le enviarán a la página por el método post
*				funcion,	determina si la página se cargará como HTML o se evaluará como javascript
*				div,		elemento en donde se cargará la respuesta de la página
**/
function enviar( url, datos, funcion, cargarEn ) 
{
	if( url == "" )
  	{
    	return;
  	}
	div = document.getElementById(cargarEn);
	
	conexion = crearXMLHttpRequest();		//crea la conexión asíncrona al servidor
	
	if(funcion == 'cargar')
	{
  		conexion.onreadystatechange = cargarDatos;
	}
	if(funcion == 'evaluar')
	{
		conexion.onreadystatechange = ejecutarAccion;
	}
	
	conexion.open('POST', url, true);
  	conexion.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=iso-8859-1;");
  	conexion.send( datos );
}

/** 
* Inserta dentro del <div></div> especificado por div el resultado de la carga asíncrona de una
* determinada página
**/
function cargarDatos()
{
  	if( conexion.readyState == 4 )
  	{
		div.innerHTML = conexion.responseText;
  	} 
  	if( conexion.readyState == 1 )
  	{
		div.innerHTML = '<img src="loading.gif">';
  	}
}

/** 
* ejecutarAccion: evalua como javascript el resultado de la carga asíncrona de una determinada página
**/
function ejecutarAccion()
{
  	if( conexion.readyState == 4 )
  	{
    	eval(conexion.responseText);
  	} 
}

/**
* VARIABLES
**/
var conexion;				//Conexion con el servidor Web usando AJAX
var div;					//Elemento div del documento HTML en donde se cargará la respuesta asíncrona