/**
 * Función que crea un objeto que será el que envie y reciba
 * información de manera asíncrona al servidor Web
 * @return 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;
}

/**
 * Función que realiza la carga asíncrona de información utilizando AJAX
 * @param url       página que se va a cargar
 * @param datos     datos que se le enviarán a la página por el método post
 * @param funcion   determina si la página se cargará como HTML o se evaluará como javascript
 * @param cargarEn  elemento en donde se cargará la respuesta de la página
 */
function enviar( url, datos, funcion, cargarEn ) 
{
    if( url == "" )
    {
    	return;
    }
	
    conexion = crearXMLHttpRequest(); //crea la conexión asíncrona al servidor
	
    if(funcion == 'cargar')
    {
        div = document.getElementById(cargarEn);
        conexion.onreadystatechange = cargarDatos;
    }
    if(funcion == 'evaluar')
    {
        conexion.onreadystatechange = ejecutarAccion;
    }
	
    conexion.open('POST', url, true);
    conexion.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
    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="../images/loading.gif">';
    }
}

/** 
 * 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