//Función que crea el objeto XHTMLRequest
function createCaller()
{
	try 
	{
       	caller = new ActiveXObject("Msxml2.XMLHTTP");
       } 
	catch (ex)
	{
       	try 
		{ 
           	caller = new ActiveXObject ("Microsoft.XMLHTTP");
        } 
		
		catch (EX) 
		{
           	caller = false; 
        } 
    }
        
	if (! caller && typeof XMLHttpRequest != 'undefined') 
	{
       	caller = new XMLHttpRequest();
    } 
    return caller
}
	
//Función que establece los estados de los botones
function buttonStatus(param)
{
	iMaxPag = document.getElementById('maximaPagina').value;
	
	//Hace visibles los botones de control
	document.getElementById('controlSet').style.display = 'block';
	
	//Se asocian los objetos botón a variables
	var oBackButton = document.getElementById('backButton');
	var oForwardButton = document.getElementById('forwardButton');
	
	//Sólo mostrar los botones de la paginación cuando hay más de una página
	if(iMaxPag > 1) {
	
		//En función del valor de iPag se asocia el onClick de cada botón a una función o a otra y se les da un estilo activo o inactivo
		if (iPag != 1){
			//Se le asocia un estilo activo
			oBackButton.className = 'activeButton';
			//Se le asocia a su onClick una llamada a retroceder página y se le cambia la imagen a la habilitada
			if (oBackButton.addEventListener)
				oBackButton.addEventListener('click',function(){returnPage(param)},false);
			else
				oBackButton.onclick = function(){returnPage(param)};
			oBackButton.setAttribute('src','/img/comunes/botones/anteriorON.gif');
			oBackButton.setAttribute('alt','Página anterior');
		}
		else{
			
			//Se le asocia un estilo inactivo
			oBackButton.className = 'inactiveButton';
			//Se limpia su onClick y se cambia la imagen por la deshabilitada
			if (oBackButton.addEventListener)
				oBackButton.addEventListener('click',doNothing,false);
			else
				oBackButton.onclick = '';
			oBackButton.setAttribute('src','/img/comunes/botones/anteriorOff.gif');
			oBackButton.setAttribute('alt','Estás en la primera página de noticias');
		}
		
		if (iPag < iMaxPag){
			//Se le asocia un estilo activo
			oForwardButton.className = 'activeButton';
			//Se le asocia a su onClick una llamada a avanzar página y se le cambia la imagen a la habilitada
			if (oForwardButton.addEventListener)
				oForwardButton.addEventListener('click',function(){advancePage(param)},false);
			else
				oForwardButton.onclick = function(){advancePage(param)};
			oForwardButton.setAttribute('src','/img/comunes/botones/siguienteON.gif');
			oForwardButton.setAttribute('alt','Página siguiente');
		}
		else{
			//Se le asocia un estilo inactivo
			oForwardButton.className = 'inactiveButton';
			//Se limpia su onClick y se cambia la imagen por la deshabilitada
			if (oForwardButton.addEventListener)
				oForwardButton.addEventListener('click',doNothing,false);
			else
				oForwardButton.onclick = '';
			oForwardButton.setAttribute('src','/img/comunes/botones/siguienteOFF.gif');
			oForwardButton.setAttribute('alt','Estás en la última página de noticias');
		}
		
	}
	else {
		oBackButton.style.display = "none";
		oForwardButton.style.display = "none";
	}
	
	getSheetChange(param);
}

	//función que añade el control de ejecución a los botones de Actividades y noticias en función del parámetro de llamada
	function getSheetChange(param){
		
		var objectName, buttonObject, linkObjectName, linkObject;
		if (param == 'N'){ 
			objectName = 'actividadesSheet';
			linkObjectName = 'actividadesSheetLink';
		}
		else {
			objectName = 'noticiasSheet';
			linkObjectName = 'noticiasSheetLink';
			quitCalendarActions();
		}
		
		buttonObject = document.getElementById(objectName);
		linkObject = document.getElementById(linkObjectName);

		linkObject.setAttribute('href','#');
				
		if (buttonObject.addEventListener)
			buttonObject.addEventListener('click',function(){changeSheet(param)},false);
		else
			buttonObject.onclick = function(){changeSheet(param)};
		
		buttonObject.style.cursor = 'pointer';
	}

	//Función que llama a la página de actividades
	function changeSheet(param){
		
		var callParam;
		if (param == 'N')
			callParam = 'E';
		else
			callParam = 'N';
			
		//Al cambiar de pestaña siempre se comienza por la primera página
		iPag = 1;
		
		// Se invoca de forma asíncrona
		requester.open('POST','/recursos/aplicaciones/actualidadDestacada.asp?iPag=1&an=' + callParam,true);
		requester.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		requester.send('?iPag=1&an=' + callParam);
		
		//No se utiliza el onReadyStateChange porque produce problemas de incompatibilidad con Firefox
//		while(1)
//		{
	
		requester.onreadystatechange = function(){

			if (requester.readyState == 4)
			{
				//Se escribe la información que devuelve el servidor en pantalla
				document.getElementById('cajaNoticias').innerHTML = requester.responseText;
				//Se añade la función de ejecución a las pestañas
				buttonStatus(callParam);
				
				getSheetChange(callParam);

//				break;
			}
		}
			
//		}

		return false;

	}

	//Función que hace avanzar una página
	function advancePage(param)
	{
		
		// Capturar la fecha actual
		var sFecha;
		if (document.getElementById('fecha')) sFecha = document.getElementById('fecha').value;
		
		// Capturar filtrodia
		var iFiltroDia;
		if (document.getElementById('filtrodia')) iFiltroDia = document.getElementById('filtrodia').value;
		
		//Esta función realiza una petición de la página de actualidad con la página siguiente a la actual
		iPag++;
		
		// Se invoca de forma asíncrona
		requester.open('POST','/recursos/aplicaciones/actualidadDestacada.asp?iPag=' + iPag + '&fecha=' + sFecha + '&filtrodia=' + iFiltroDia + '&an=' + param,true);
		requester.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		requester.send('?iPag=' + iPag + '&an=' + param);

		//No se utiliza el onReadyStateChange porque produce problemas de incompatibilidad con Firefox
//		while(1)
//		{

		requester.onreadystatechange = function(){
			
			if (requester.readyState == 4)
			{
				//Se escribe la información que devuelve el servidor en pantalla
				document.getElementById('cajaNoticias').innerHTML = requester.responseText;
				
				//Se recalcula el estado de los botones
				buttonStatus(param);
//				break;
			}
		
		}

//		}
	}
	
	//Función que hace retroceder una página
	function returnPage(param)
	{
		
		// Capturar la fecha actual
		var sFecha;
		if (document.getElementById('fecha')) sFecha = document.getElementById('fecha').value;
		
		// Capturar filtrodia
		var iFiltroDia;
		if (document.getElementById('filtrodia')) iFiltroDia = document.getElementById('filtrodia').value;
		
		//Esta función realiza una petición de la página de actualidad con la página anterior a la actual
		iPag--;
		
		// Se invoca de forma asíncrona
		requester.open('POST','/recursos/aplicaciones/actualidadDestacada.asp?iPag=' + iPag + '&fecha=' + sFecha + '&filtrodia=' + iFiltroDia + '&an=' + param,true);
		requester.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		requester.send('?iPag=' + iPag + '&an=' + param);

//		while(1)
//		{
	
		requester.onreadystatechange = function(){
			
			if (requester.readyState == 4)
			{
				//Se escribe la información que devuelve el servidor en pantalla
				document.getElementById('cajaNoticias').innerHTML = requester.responseText;
				
				//Se recalcula el estado de los botones
				buttonStatus(param);
//				break;
			}
		
		}

//		}
	}
	
	//Función que elimina los HREF del calendario si hay javascript activo
	function quitCalendarActions(){
		var calendarObject, calendarButtonCollection;
		
		calendarObject = document.getElementById('calendarSpace');
		calendarButtonCollection = calendarObject.getElementsByTagName('A');
		
		for (x=0;x<calendarButtonCollection.length;x++)
			calendarButtonCollection[x].setAttribute('href','#');
	}
	
	//Function que hace una llamada AJAX a la página con los datos relativos a un mes completo o a un día particular
	function goToDay(sFecha,bFiltroDia){
		
		iPag = 1
		
		// Se invoca de forma asíncrona
		requester.open('POST','/recursos/aplicaciones/actualidadDestacada.asp?iPag=' + iPag + '&an=A&fecha=' + sFecha + '&filtroDia=' + bFiltroDia,true);
		requester.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		requester.send('?iPag=' + iPag + '&an=A&fecha=' + sFecha + '&filtroDia=' & bFiltroDia);

//		while(1)
//		{

		requester.onreadystatechange = function() {

			if (requester.readyState == 4)
			{
				//Se escribe la información que devuelve el servidor en pantalla
				document.getElementById('cajaNoticias').innerHTML = requester.responseText;
				
				//Se recalcula el estado de los botones
				buttonStatus('A');
//				break;
			}
		}
		
//		}
	}
	
	//Función que no hace nada para las llamadas a addEventListener
	function doNothing()
	{
		//
	}