/**
* 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;
	}
	
	if(url == 'textos.php' || url == 'editarNoticia.php' || url == 'editarActividad.php' || url == 'editarCarta.php' || url == 'editarEvento.php')	//En estas páginas se necesita cargar el editor WYSIWYG
	{
		cargarEditor = 1;
	}
	else
	{
		cargarEditor = 0;
	}
	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(cargarEditor == 1)
		{
			tinyMCE.execCommand('mceAddControl',false,'texto');
			editor = tinyMCE.getInstanceById("texto");	//Capturar instancia del editor
			editorCargado = true;
		}
		else
		{
			if(cargarEditor == 0 && editorCargado == true)
			{
				tinyMCE.removeInstance(editor);	//Remover la instancia del editor
				editorCargado = false;
			}
		}
  	} 
  	if( conexion.readyState == 1 )
  	{
		div.innerHTML = '<img src="./img/loading.gif">';
		if(editorCargado == true)
		{
			tinyMCE.removeInstance(editor);	//Remover la instancia del editor
			editorCargado = false;
		}
  	}
}

/** 
* 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 editorCargado;			//Determina la acción sobre el editor WYSIWYG TinyMCE (0: descargar, 1:cargar, 2: no hacer nada)
var cargarEditor;			//Determina la acción sobre el editor WYSIWYG TinyMCE (0: descargar, 1:cargar, 2: no hacer nada)
var div;					//Elemento div del documento HTML en donde se cargará la respuesta asíncrona
var editor;					//Instancia del editor WYSIWYG TinyMCE