/*****************************************************************
**		Aplicacion javascript de formateo de informacion		**
**																**
**		Autor: Carlos Sánchez Montero	Fecha: 21/09/2006		**
**																**
**					- www.apoyo3d.com -							**
******************************************************************/

var isIE = false;


// Variables para la lectura de URL
var req;			//	Variable para el objeto XMLHttpRequest
var etiqueta;		//  Almacena el lugar donde se cargará la url
var IMAG_CARGA = "base/loading.gif"; // Imagen durante la carga de contenidos

// Variables de control de funcionamiento
var procesandoURL=false; // Evita procesar dos URL simultáneamente
var timeout_retry=200;	 // Tiempo de espera



/*****************************************************************
**			Lectura de los contenidos de un URL					**
*****************************************************************/
function leeURL(url, etiq) {
	//	Primero vamos a ver si la URL es una URL :)
	if(url=='' || etiq==''){
		return;
	}

	// Comprobamos que no se está procesando otro URL
	if (procesandoURL){
		setTimeout("leeURL(\""+url+"\",\""+etiq+"\")",timeout_retry);
		return;
	}	

	procesandoURL = true;
	// Guardamos el nombre de la etiqueta destino
	etiqueta = etiq;

	//	Usuario inteligente...
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		req.send(null);
	//	...y usuario de Internet Explorer Windows
	} else if (window.ActiveXObject) {
		isIE = true;
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) {
			req.onreadystatechange = processReqChange;
			req.open("GET", url, true);
			req.send();
		}
	}	
}


//	Funcion que se llama cada vez que se dispara el evento onreadystatechange
//	del objeto XMLHttpRequest
function processReqChange(){
	procesandoURL = true;
	var detalles = document.getElementById(etiqueta);
	if (detalles != null){
		if(req.readyState == 4){
			detalles.innerHTML = req.responseText;
			procesandoURL = false;
		} else {
			if (IMAG_CARGA!=null)
				detalles.innerHTML = '<img src="'+IMAG_CARGA+'" align="middle" /> Cargando ...';
			else
				detalles.innerHTML = ' Cargando ...'
		}
	}
}


/*****************************************************************
**					Lectura de archivo XML
*****************************************************************/
function lecturaXML(archivo,tipo){
	if (procesandoURL){
		setTimeout("lecturaXML(\""+archivo+"\","+tipo+")",timeout_retry);
		return;
	}		
	
	var cont = new TipoContenido(tipo);

	// Para firefox
	if (document.implementation && document.implementation.createDocument){
		xmlDoc[tipo] = document.implementation.createDocument("", "", null);
		xmlDoc[tipo].onload = cont.generador;
	}
	// Para Internet Explorer
	else if (window.ActiveXObject)	{
		xmlDoc[tipo] = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc[tipo].onreadystatechange = function () {
			if (xmlDoc[tipo].readyState == 4) 
				cont.generador()
		};
 	}// Error en caso no compatible con los anteriores	
	else{
		alert('Navegador no compatible');
		return;
	}

	try{
		xmlDoc[tipo].load(RUTA_XML + archivo + EXT_XML);
	}catch(e){
		switch (tipo){
			case 0: // Formato de menu en elemento id=menu
				document.getElementById("menu").innerHTML = '';
				break;
			case 1: // Formato de contenido en elemento id=contenido
				document.getElementById("contenido").innerHTML = 'Archivo de contenido no encontrado'; 
				break;
			case 2:
				this.generador = generaMenuPortada;
				break;
			case 4:
				document.getElementById("ListaNoticias").innerHTML = 'No hay noticias nuevas';
				break;
			default:
				this.generador = generaError;
		}
	}
}


// Seleccion de la funcion traductora a emplear
function TipoContenido(tipo){
	switch (tipo){
		case 0: // Formato de menu en elemento html con id=menu
			this.generador = generaMenuPortada;
			break;
		case 1: // Formato de contenido en elemento html con id=contenido
			this.generador = generaContenido;
			break;
		case 2:
			this.generador = generaMenu;
			break;
		case 3:
			this.generador = generaContenidoSeleccionado;
			break;
		case 4: // Resumen con las ultimas noticias
			this.generador = generaListaNoticias; 
			break;
		default:
			this.generador = generaError;	
	}
}


