// LIBRERÍAS DE AJAX


function AleatorizarURL(url)
// Debido a los problemas de refresco de IE6 con AJAX, esta función añade un parámetro
// a la URL que es aleatorio, de forma que el navegador interprete que la página es nueva
{
	if (url.indexOf("?") == -1) // no encontrado
		url = url + "?rand=" + Math.random();
	else
		url = url + "&rand=" + Math.random();	

	return url;
}

//////////////////////// FUNCIONES DE CARGA ////////////////////////////////////
function httpRequest(url, id_contenedor, valores, metodo, funcion_respuesta)
// Realiza una carga desde una página y la muestra en el contenedor elegido
{
	url = AleatorizarURL(url);
		
	var pagina_requerida = false;
	
	if (!metodo) metodo = 'GET';
	if (!valores) valores = '';
	
	if (window.XMLHttpRequest)
	{
		// Si es Mozilla, Safari etc
		pagina_requerida = new XMLHttpRequest ();
	} 
	else if (window.ActiveXObject)
	{
		// pero si es IE
		try {pagina_requerida = new ActiveXObject ("Msxml2.XMLHTTP");}
		catch (e) 
		{
			// en caso que sea una versión antigua
			try {pagina_requerida = new ActiveXObject ("Microsoft.XMLHTTP");}
			catch (e) {	}
		}
	} 
	else 
		return false;
		
	pagina_requerida.onreadystatechange = function ()
	{
		// función de carga
		cargarPagina (pagina_requerida, id_contenedor, funcion_respuesta);
	}
	
	// Muestra un texto que indica que se están cargando los datos
	capaSolicitada = document.getElementById(id_contenedor);
	capaSolicitada.innerHTML = '<br><br><div align="center">Cargando...</div>';


	// Solicitamos la página
	pagina_requerida.open (metodo, url, true); // asignamos los métodos open y send
	if (metodo == 'GET')
		pagina_requerida.send (null);
	else
	{
		pagina_requerida.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
		pagina_requerida.send (valores);
	}
}

function cargarPagina (pagina_requerida, id_contenedor, funcion_respuesta)
// Recupera los datos obtenidos y los muestra en la capa elegida
{
	if (pagina_requerida.readyState == 4 && (pagina_requerida.status == 200 || window.location.href.indexOf ("http") == - 1))
	{
		document.getElementById (id_contenedor).innerHTML = pagina_requerida.responseText;
		
		if (funcion_respuesta)
			setTimeout(funcion_respuesta + "()", 0);
	}
}

function httpService(url, valores, metodo, funcion_respuesta)
// Realiza una petición asíncrona para recibir datos, los cuales
// redirige a la función de respuesta elegida
{
	url = AleatorizarURL(url);
		
	var pagina_requerida = false;
	
	if (!metodo) metodo = 'GET';
	if (!valores) valores = '';
	
	if (window.XMLHttpRequest)
	{
		// Si es Mozilla, Safari etc
		pagina_requerida = new XMLHttpRequest ();
	} 
	else if (window.ActiveXObject)
	{
		// pero si es IE
		try {pagina_requerida = new ActiveXObject ("Msxml2.XMLHTTP");}
		catch (e)
		{
			// en caso que sea una versión antigua
			try {pagina_requerida = new ActiveXObject ("Microsoft.XMLHTTP");}
			catch (e) {	}
		}
	} 
	else 
		return false;
	pagina_requerida.onreadystatechange = function ()
	{
		// función de respuesta
		httpServiceGet (pagina_requerida, funcion_respuesta);
	}

	// Solicitamos la página
	pagina_requerida.open (metodo, url, true); // asignamos los métodos open y send
	if (metodo == 'GET')
		pagina_requerida.send (null);
	else
	{
		pagina_requerida.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
		pagina_requerida.send (valores);
	}
}

function httpServiceGet(pagina_requerida, funcion_respuesta)
// Devuelve los datos obtenidos asíncronamente por httpService
{
	if (pagina_requerida.readyState == 4 && (pagina_requerida.status == 200 || window.location.href.indexOf ("http") == - 1))
		setTimeout(funcion_respuesta + "('" + pagina_requerida.responseText + "')", 0);
}

function PostService(url, valores)
// Realiza una petición síncrona para enviar datos, mediante POST, a un servicio Web
// que los procese. Si no se pasan valores, se entiende que 
// los datos estarán en un formulario llamado frmPOST
{
	url = AleatorizarURL(url);
		
	var pagina_requerida = false;
	
	if (window.XMLHttpRequest)
	{
		// Si es Mozilla, Safari etc
		pagina_requerida = new XMLHttpRequest ();
	} 
	else if (window.ActiveXObject)
	{
		// pero si es IE
		try {pagina_requerida = new ActiveXObject ("Msxml2.XMLHTTP");}
		catch (e)
		{
			// en caso que sea una versión antigua
			try {pagina_requerida = new ActiveXObject ("Microsoft.XMLHTTP");}
			catch (e) {	}
		}
	} 
	else 
		return false;

	if (!valores)
	{
		// Obtenemos los datos del formulario que hay que enviar
		var campos = "";
		var num_campos = document.frmPOST.elements.length;
		
		for (i=0; i<num_campos; i++)
		{
			if (i>0) campos += "&";
			campos += document.frmPOST.elements[i].name + "=" + document.frmPOST.elements[i].value; 
		}
	}
	else
		campos = valores;
	
	// Solicitamos la página
	pagina_requerida.open ("POST", "web_services/"+url, false); // false: síncrono, espera hasta que finalice
	pagina_requerida.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
	pagina_requerida.send (campos);
}



//////////////////////// FUNCIONES PARA MANEJO DE CONTENIDOS ////////////////////////////////////

function MostrarContenidos(id_contenido)
{
	//alert("ID contenido: "+id_contenido);
	// Mostramos la ventana de progreso
	capaEspera = document.getElementById("espera");
	capaEspera.style.visibility = "visible";

	// Realizamos la llamada a la función que carga el cuadro de diálogo	
	if (!id_contenido) id_contenido=-1;
	httpRequest('contenidos.php?id='+id_contenido+'&sonido='+sonido,'marco_central','','','VisualizarContenidos');
	
	id_contenido_actual = id_contenido;
}

function PrevisualizarContenidos(id_contenido)
{
	// Mostramos la ventana de progreso
	capaEspera = document.getElementById("espera");
	capaEspera.style.visibility = "visible";

	// Realizamos la llamada a la función que carga el cuadro de diálogo	
	if (!id_contenido) id_contenido=-1;
	httpRequest('contenidos_admin.php?id='+id_contenido,'marco_central','','','VisualizarContenidos');
}

function VisualizarContenidos()
{

	var num_imagenes = document.images.length;
	var i = 0;
	var cargadas = true;

	setTimeout("VisualizarContenidos2()", 3000);
}

function VisualizarContenidos2()
{
	// Ocultamos la ventana de progreso
	capaEspera = document.getElementById("espera");
	capaEspera.style.visibility = "hidden";
}
//////////////////////// FUNCIONES PARA MANEJO DE CAPAS ////////////////////////////////////

function HoverOn(id_capa)
{
	capa1 = document.getElementById(id_capa);
	capa2 = document.getElementById(id_capa+"_hover");
	
	capa1.style.visibility = "hidden";
	capa2.style.visibility = "visible";	
}

function HoverOff(id_capa)
{
	capa1 = document.getElementById(id_capa);
	capa2 = document.getElementById(id_capa+"_hover");
	
	capa1.style.visibility = "visible";
	capa2.style.visibility = "hidden";	
}

function SonidoOn(sonido)
{
	capaSonido = document.getElementById("sonido_ie");
	capaSonido.src = sonido;
}