﻿/* Carga fichero XML */

var xmlDoc;

function loadXML(file) {

	if (window.ActiveXObject) {
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = false;
		xmlDoc.load(file);
	}
	// code for Mozilla, Firefox, Opera, etc.
	else if (document.implementation && document.implementation.createDocument) {
		xmlDoc = document.implementation.createDocument("","",null);
		xmlDoc.load(file);
	}
	else {
		alert("Su navegador no puede renderizar esta página.");
	}

}

loadXML("menu.xml");

/* Fin carga XML */


/* Funcion selectSingleNode compatible con Mozilla */

function selectSingleNode(elementPath) {
	
	if (window.ActiveXObject) {
		return xmlDoc.selectSingleNode(elementPath);
    }
    else {
		var xpe = new XPathEvaluator();
		var nsResolver = xpe.createNSResolver(xmlDoc.ownerDocument == null ? xmlDoc.documentElement : 
											  xmlDoc.ownerDocument.documentElement);
		var results = xpe.evaluate(elementPath,xmlDoc,nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE, null);
		return results.singleNodeValue; 
        }
}
	
	

var userAgent = navigator.userAgent.toLowerCase();
var userAgent_version = (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1];


var BarraTitulo;
var ruta="./";
var NodoActual;
var ColeccionNodos=null;
var NivelProfundidad = 0;
var Altura_Div = 0;
var Div_Elemento =document.getElementById("div1");

	function NumeroHijos(nodo)
	{
		return 	nodo.childNodes.length;
	}
	
	function DevolverPadre(nodo)
	{
		
		return nodo.parentNode;
	}
	
	function DevolverPadrePorId(IdNodo)
	{
		var nodo = DevolvelNodo(IdNodo);
		return nodo.parentNode;
	}
	
	function RatonOver(IdNodo)
	{
		if (document.all && parseInt(userAgent_version,10) < 7) {
			var miElemento = document.getElementById("li_" + IdNodo);	
			miElemento.className += " hover";
		}
	}
	
	function RatonOut(IdNodo)
	{
		if (document.all && parseInt(userAgent_version,10) < 7) {
			var miElemento = document.getElementById("li_" + IdNodo);
			miElemento.className = miElemento.className.replace(" hover","");
		}
	}	
	
	
	function RellenarBarraTitulo(nodo)
	{
		if ( nodo.parentNode.parentNode != null )
		{
			if (BarraTitulo =="")
			{
				BarraTitulo = nodo.getAttribute("titulo");
			}
			else
			{
				BarraTitulo = '<a href="#" onclick="EjecutarAccion(\''+nodo.getAttribute("Id")+'\');return false;">' +  
				                   nodo.getAttribute("titulo") + "</a> > " + BarraTitulo  ;
			}
			
			RellenarBarraTitulo (nodo.parentNode);
		}
		
		var DivBarraTitulo = document.getElementById("divBarraTitulo");
		DivBarraTitulo.className="Elemento";
		var cadAux = BarraTitulo.split('>');
		BarraTitulo = BarraTitulo.substr(0,BarraTitulo.length - cadAux[cadAux.length-1].length )
		BarraTitulo = BarraTitulo +  "<b>" + cadAux[cadAux.length-1];
		
		DivBarraTitulo.innerHTML= ":: " + BarraTitulo;
	}
	
	
	function DevolvelNodo(IdNodo)
	{
		var Nodo;
		var Nodo= selectSingleNode("//*[@Id='" + IdNodo + "']");
		
		return Nodo;
	}
	
	function crearUL()
	{
		BarraTitulo="";
		
		if (document.getElementById("ulPrincipal")) {
			var ul = document.getElementById("ulPrincipal");
			while (ul.hasChildNodes()) {
				ul.removeChild(ul.lastChild);
			}
		}
		else {
			var ul;
			ul = document.createElement("ul");
			ul.setAttribute("id","ulPrincipal");
		}
		
		return ul;
	}
	
	
	function DibujarInicio()
	{
		NodoActual = DevolvelNodo("0");
		var ul;
		ul = crearUL();

		for(var i=0; i < NumeroHijos(NodoActual); i++)
		{
			if (NodoActual.childNodes[i].nodeType==1) {
				var li = DibujarElemento(NodoActual.childNodes[i]);
				ul.appendChild(li);
			}
		}
				
		return ul;
	}
	
	function DibujarElemento(nodo)
	{
		var IdNodo = nodo.getAttribute("Id");


		var lista = document.createElement("li");
		lista.setAttribute("id","li_" + IdNodo);
		var listaTxt = document.createTextNode(nodo.getAttribute("texto").toUpperCase());
		lista.appendChild(listaTxt);		

		
		if (  NumeroHijos(nodo) > 0 )//si el nodo hijo tiene hijos tiene un estilo
		{
			lista.className = "Directorio";
			lista.onclick = function() {EjecutarAccion(IdNodo)};
			lista.onmouseover = function() {RatonOver(IdNodo)};
			lista.onmouseout = function() {RatonOut(IdNodo)};
		}
		
		else
		{
			lista.className = "Fichero";
			lista.onclick = function() {mostrarPDFTexto(IdNodo)};
			lista.onmouseover = function() {RatonOver(IdNodo)};
			lista.onmouseout = function() {RatonOut(IdNodo)};			
		}

		
		return lista;
	}
	
	
	function Iniciar()
	{
		NivelProfundidad=0;
		pantalla_Buscar = true;
		pantalla_Plano = true;
		ComprobarEstadoBotones();
		var ul ;
		ul = DibujarInicio();
		
		RellenarBarraTitulo(NodoActual);
		var DivElemento = document.getElementById("div1");
		DivElemento.appendChild(ul);
		EstadoBotonesScroll();
		DivElemento.style.top = 0;
		ObtenerFecha();
		
	}
	
	function BotonInicio()
	{
		var _imagenInicio = document.getElementById("Id_Inicio");
		
		if (!EstaPasivo(_imagenInicio))
			Iniciar();
	}
	
	var _valorProfundidad ;
	function CalcularNivelProfundidad(IdNodo)
	{
		_valorProfundidad =0;
		var Nodo = DevolvelNodo(IdNodo);
			
		NivelProfundidadRecursivo(Nodo);
	}
	
	function NivelProfundidadRecursivo(Nodo)
	{
		if  (Nodo.getAttribute("Id")!="0")
		{
			_valorProfundidad++;
			NivelProfundidadRecursivo(Nodo.parentNode)
		}
	}
	
	function EjecutarAccion(IdNodo)
	{

		
		var d = document.getElementById("div1");

		d.style.top = 0;
		
		if (!pantalla_Buscar)
		{
			CalcularNivelProfundidad(IdNodo);
			NivelProfundidad =_valorProfundidad;
		}
		else
			NivelProfundidad++;
			
		pantalla_Buscar = true;
		pantalla_Plano = true;
		
		ComprobarEstadoBotones();
		
		ComprobarBotonDelante(IdNodo);
	
		var Nodo = DevolvelNodo(IdNodo);
		
		NodoActual = Nodo;
		BarraTitulo ="";
		RellenarBarraTitulo(Nodo);
		var ul;
		ul = crearUL();
	
		for(var i=0; i < NumeroHijos(Nodo); i++)
		{
			if (Nodo.childNodes[i].nodeType==1) {
				var fila = DibujarElemento(Nodo.childNodes[i]);
				ul.appendChild(fila);
			}
		}
			
		var DivElemento = document.getElementById("div1");
	
		DivElemento.appendChild(ul);
		
		EstadoBotonesScroll();
	
	}
	
	var pantalla_Buscar = true;
	var pantalla_Plano = true;
	
	function BotonAtras()
	{
		var _imagenAtras = document.getElementById("Id_Atras");
		if (!EstaPasivo(_imagenAtras))
		{
		
			if (pantalla_Buscar && pantalla_Plano ) 
			{
			
				if (NivelProfundidad > 0)
					NivelProfundidad--;
		
				if (NivelProfundidad == 0)
				{
					Iniciar();
				}
				else
				{	
					var padreNodo = DevolverPadre(NodoActual);
						
					if (padreNodo.parentNode.parentNode != null)
					{
						var auxnodo=DevolverPadre(NodoActual).getAttribute("Id");
						
						if (ColeccionNodos != null)
						{
							var posicion = ColeccionNodos.indexOf("." + auxnodo + "." )
							if (posicion==-1)
								ColeccionNodos ="." +  String(auxnodo) + ".;" + ColeccionNodos   ;
						}
						else
							ColeccionNodos ="." +  String(auxnodo) + ".;." + NodoActual.getAttribute("Id") + "."  ;
	
						ComprobarBotonDelante(auxnodo);
						EjecutarAccion(auxnodo);
						NivelProfundidad--;
					}
				}
			}
			else
			{
				EjecutarAccion(NodoActual.getAttribute("Id"));
				NivelProfundidad--;
			}
		}
	}
	
	function ObtenerIdNodo(cadena)
	{
		var cadAux = cadena.split(".")
		return cadAux[1];
	}
	
	function BotonAdelante()
	{

		var _imagenDelante = document.getElementById("Id_Delante");

		if (!EstaPasivo(_imagenDelante))
		{
			NivelProfundidad++;
			var IdNodoActual = NodoActual.getAttribute("Id");
			var NodoSiguiente = null;

			var cadAux = ColeccionNodos.split(";");
			var i;
			for ( i=0;i < cadAux.length ; i++)
			{
				var IdNodoAux = ObtenerIdNodo(cadAux[i]);
				
				if ( IdNodoAux == IdNodoActual)
				{
					break;
				}
			}
			NodoSiguiente =  ObtenerIdNodo(cadAux[i + 1]);
			NodoAcutal = DevolvelNodo(NodoSiguiente);
			EjecutarAccion(NodoSiguiente);
			NivelProfundidad--;

			if (ObtenerIdNodo(cadAux[cadAux.length-1])==NodoSiguiente)
			{
				CancelarBotonDelante();
			}
		}
	}
	
	function ComprobarBotonDelante(IdNodo)
	{
		if (ColeccionNodos !=null)
		{
			if (ColeccionNodos.indexOf(IdNodo) == -1)
			{
				CancelarBotonDelante();
			}
			else
			{
				var _imagenDelante = document.getElementById("Id_Delante");
				_imagenDelante.src="img/delante_inactivo.jpg" ;
				_imagenDelante.style.cursor = "pointer";
			}
		}
	}

	function ComprobarEstadoBotones()
	{
		var _imagenInicio = document.getElementById("Id_Inicio");
		var _imagenAtras = document.getElementById("Id_Atras");
		
		var _div_Elemento = document.getElementById("div1");
		
		if (NivelProfundidad == 0 )
		{
			_imagenInicio.src="img/inicio_pasivo.jpg" ;
			_imagenAtras.src="img/atras_pasivo.jpg" ;
			_imagenInicio.style.cursor = "default";
			_imagenAtras.style.cursor = "default";
			
			CancelarBotonDelante();
		}
		else if (NivelProfundidad == 1)
		{	
			_imagenInicio.src="img/inicio_inactivo.jpg" ;
			_imagenAtras.src="img/atras_inactivo.jpg" ;
			_imagenInicio.style.cursor = "pointer";
			_imagenAtras.style.cursor = "pointer";
		}
	}
	
	function EstaPasivo(imagen)
	{
		
		var resultado = false;
		if (imagen.src.indexOf("pasivo") != -1 )
			resultado = true;
		return resultado;
	}

	function ImagenOver(imagen)
	{
			switch (imagen.name)
			{
				case 'Inicio':
					if (!EstaPasivo(imagen)  )
						imagen.src="img/inicio_activo.jpg" ;
					break;
				case 'Atras':
					if (NivelProfundidad > 0 )
						imagen.src="img/atras_activo.jpg" ;
					break;
				case 'Delante':
					if (!EstaPasivo(imagen)  )
						imagen.src="img/delante_activo.jpg" ;
					break;
				case 'Plano':
					imagen.src="img/planos_activo.jpg" ;
					break;
				case 'Buscar':
					imagen.style.cursor = "default";
					if(imagen.src.indexOf("pasivo")==-1)
					{
						imagen.src="img/buscar_activo.jpg" ;
						imagen.style.cursor = "pointer";
					}
					break;
			}
	}
	
	function ImagenOut(imagen)
	{
			switch (imagen.name)
			{
				case 'Inicio':
					if (!EstaPasivo(imagen)  )
						imagen.src="img/inicio_inactivo.jpg" ;
					else
						imagen.src="img/inicio_pasivo.jpg" ;
					break;
				case 'Atras':
					if (NivelProfundidad > 0 )
						imagen.src="img/atras_inactivo.jpg" ;
					else
						imagen.src="img/atras_pasivo.jpg" ;
					break;
				case 'Delante':
					if (!EstaPasivo(imagen)  )
						imagen.src="img/delante_inactivo.jpg" ;
					else
						imagen.src="img/delante_pasivo.jpg" ;
					break;
				case 'Plano':
					imagen.src="img/planos_inactivo.jpg" ;
					break;
				case 'Buscar':
					if(imagen.src.indexOf("pasivo")==-1)
					{
						imagen.src="img/buscar_inactivo.jpg" ;
						imagen.style.cursor = "default";
					}
					break;
			}
	}
	
	function EstadoBotonesScroll()
	{
		
		var BotonAdelante = document.getElementById("Adelante");
		var BotonAtras = document.getElementById("HaciaAtras");	
		var _div_Elemento=document.getElementById("div1");
		
		if (_div_Elemento.offsetHeight > 320)
		{
			MostrarBotonesScroll();
			BotonAtras.disabled = false;
			BotonAtras.src = "img/abajo_b.jpg" ;
			BotonAtras.style.cursor = "pointer";
			
		}
		else
		{
			OcultarBotonesScroll();
			BotonAtras.disabled= true;
			BotonAtras.src = "img/abajo_a.jpg" ;
			BotonAtras.style.cursor = "default";
			
		}
		BotonAdelante.src="img/arriba_a.jpg" ;
		BotonAdelante.disabled =true;
		
	}
	
	var cartelID =null
	
	function Abajo()
	{
		var d=document.getElementById("div1");
	
		var BotonAtras = document.getElementById("HaciaAtras");	
		var BotonAdelante = document.getElementById("Adelante");
		if(BotonAdelante.src.indexOf("arriba_a")==-1)
		{

			if (d.offsetTop < 0)
			{
				d.style.top = (parseInt(d.offsetTop) + 2) + "px";
				if (cartelID)
				cartelID = setTimeout(Abajo,3)   
				
				BotonAtras.disabled =false;
				BotonAtras.src = "img/abajo_b.jpg" ;
				BotonAtras.style.cursor = "pointer";
			}
			else
			{
				
				BotonAtras.disabled = false;
				BotonAtras.src = "img/abajo_b.jpg" ;
				BotonAtras.style.cursor = "pointer";
				
				BotonAdelante.disabled =true;
				BotonAdelante.src =  "img/arriba_a.jpg" ;
				BotonAdelante.style.cursor = "default";
			}
		}
	}
	
	function Arriba()
	{
		
		var d=document.getElementById("div1");
		var BotonAdelante = document.getElementById("Adelante");
		var BotonAtras = document.getElementById("HaciaAtras");	
		if (d.offsetTop > (320 - d.offsetHeight))
		{
			d.style.top = (parseInt(d.offsetTop,10) - 2) + "px";
			cartelID = setTimeout(Arriba, 3)    
			BotonAdelante.disabled = false;
			BotonAdelante.src =  "img/arriba_b.jpg" ;
			BotonAdelante.style.cursor = "pointer";
		}
		else
		{
			BotonAdelante.disabled = false;
			BotonAdelante.src =  "img/arriba_b.jpg" ;
			BotonAdelante.style.cursor = "pointer";
			
			BotonAtras.disabled = true;
			BotonAtras.src = "img/abajo_a.jpg" ;
			BotonAtras.style.cursor = "default";
		}
	}
	
	function parar()
	{
	  
	  if (cartelID) 
		clearTimeout(cartelID)
	}
	
	var ArrayNodos;
	var TextoABuscar;
	var contnodos =0;
		
	function Buscar()
	{
		ArrayNodos = new Array();
		pantalla_Buscar = false;
		TextoABuscar =document.getElementById("txtBusqueda").value.toUpperCase();
		if (TextoABuscar!="")
			{
			contnodos =0;
			
			BuscarTexto(DevolvelNodo("0"));
			
			var ul
			ul = DibujarBusqueda();
			
			var DivElemento = document.getElementById("div1");
			DivElemento.appendChild(ul);
			EstadoBotonesScroll();
			DivElemento.style.top = 0;
			var DivBarraTitulo = document.getElementById("divBarraTitulo");
			DivBarraTitulo.className = "Elemento"; 
			
			var encontrado = " palabras encontradas";
			if (contnodos ==1)
				encontrado =" palabra encontrada";
			var BarraTitulo = "<b>" + "Resultado de la Búsqueda:  "  + "</b>" + contnodos + encontrado;
			DivBarraTitulo.innerHTML= BarraTitulo;
			
					
			CancelarBotonDelante();
			
			ActivarBotonInicio();
		}		
	}
	
	function BuscarTexto(Nodo)
	{
		for (var _i = 0; _i < Nodo.childNodes.length; _i++) {
		
			var _nodo = Nodo.childNodes[_i];
			if (_nodo.nodeType==1) {

				_titulo =""
				var _texto = _nodo.getAttribute('texto').toUpperCase();
			
				if ( (_titulo.indexOf(TextoABuscar)!=-1) || (_texto.indexOf(TextoABuscar)!=-1))
				{
					ArrayNodos[ArrayNodos.length] =_nodo;
					contnodos++;
				}
				
				if (_nodo.childNodes.length > 0)
				{
				
					BuscarTexto(_nodo);
				}
			}
		}
	}
	
	function DibujarBusqueda()
	{
		
		var ul;
		ul = crearUL();

		for(var i=0; i < ArrayNodos.length; i++)
		{
		
			var fila = DibujarElemento(ArrayNodos[i]);
			BarraTitulo = "";
			var Titulo = RellenarTitulo(ArrayNodos[i]);
			fila.setAttribute("title",Titulo);
			ul.appendChild(fila);
		}

		return ul;
	}
	
	function RellenarTitulo(nodo)
	{
		if ( nodo.parentNode.parentNode != null )
		{
			if (BarraTitulo =="")
			{
				BarraTitulo = nodo.getAttribute("titulo");
			}
			else
			{
				BarraTitulo = nodo.getAttribute("titulo") + " > " + BarraTitulo  ;
			}
			RellenarTitulo (nodo.parentNode);
		}
		
		
		var cadAux =BarraTitulo.split('>');
		BarraTitulo =BarraTitulo.substr(0,BarraTitulo.length - cadAux[cadAux.length-1].length )
		BarraTitulo =BarraTitulo + cadAux[cadAux.length-1];
		return BarraTitulo;
	}
	
	function DibujarMenuPlano()
	{
		EjecutarAccion("2");
		NivelProfundidad = 1;
		CancelarBotonDelante();
		ActivarBotonInicio();
		
	}
	
	function OverMenu(Nodo)
	{
		var miElemento = document.getElementById(Nodo);
	}
	
	function OutMenu(Nodo)
	{
		var miElemento = document.getElementById(Nodo);
		
		miElemento.className = "ElementoMenu";
	}

	
	function OcultarBotonesScroll()
	{
		var BotonAdelante = document.getElementById("Adelante");
		var BotonAtras = document.getElementById("HaciaAtras");	
		
		BotonAdelante.style.display = "none";	
		BotonAtras.style.display = "none";	
	}

	function MostrarBotonesScroll()
	{
		var BotonAdelante = document.getElementById("Adelante");
		var BotonAtras = document.getElementById("HaciaAtras");	
		
		BotonAdelante.style.display = "block";	
		BotonAtras.style.display = "block";	
		
	}

		
	function mostrarPDFTexto(IdBoton)
	{
		
		var especificaciones="top=0, left=0, toolbar=no,location=no, status=no,menubar=no,scrollbars=yes, resizable=yes" 
		var titulo="Titulo";
		var nodo = DevolvelNodo(IdBoton);
		var ruta = nodo.getAttribute("rutaTexto");
		window.open(ruta,titulo,especificaciones); 
	}
	
	function mostrarPDFPlano(IdBoton)
	{
		var cadAux = IdBoton.split("_");
		var _Id = cadAux[1];
		var rutaTexto = nodo.getAttribute("rutaPDFPlano");
	}
	
	function CambiarImagenBusqueda()
	{
		var BotonBuscar = document.getElementById("Buscar");
		if (document.getElementById("txtBusqueda").value.toUpperCase()!="")
		{
			BotonBuscar.src="img/buscar_inactivo.jpg" ;
			BotonBuscar.style.cursor = "pointer";
		}
		else
		{
			BotonBuscar.src="img/buscar_pasivo.jpg" ;
			BotonBuscar.style.cursor = "default";
		}
	}
	
	function CancelarBotonDelante()
	{
			var _imagenDelante = document.getElementById("Id_Delante");
			_imagenDelante.src="img/delante_pasivo.jpg" ;
			_imagenDelante.style.cursor = "default";
			ColeccionNodos = null;
	}
	
	function ActivarBotonInicio()
	{
		var inicio = document.getElementById("Id_Inicio");
		inicio.src="img/inicio_inactivo.jpg" ;
		inicio.style.cursor = "pointer";
	}
	
	function ObtenerFecha()
	{
		fecha = new Date();
		var Dia_Dia = fecha.getDate();
		var Dia_Mes = fecha.getMonth();
		var Dia_Ano = fecha.getFullYear();
		var Dia_Dia_Semana = fecha.getDay();
		
		var Nombre_Mes =Obtener_Nombre_Mes(Dia_Mes);
		var Nombre_Dia =Obtener_Nombre_Dia(Dia_Dia_Semana);
		
		var Nombre_Fecha = Nombre_Dia + ", " + Dia_Dia + " de " + Nombre_Mes + " de " + Dia_Ano;
		var objfecha = document.getElementById("div_fecha");
		if (objfecha.firstChild) {
			objfecha.firstChild.nodeValue = Nombre_Fecha;
		}
		else {
			var txt = document.createTextNode(Nombre_Fecha);
			objfecha.appendChild(txt);
		}

	}
	
	function Obtener_Nombre_Mes(Mumero_Mes)
	{
		var nombre_mes ="";
		switch(Mumero_Mes)
		{
			case 0:
					nombre_mes = 'Enero';
					break;
			case 1:
					nombre_mes = 'Febrero'
					break;
			case 2:
					nombre_mes = 'Marzo'
					break;
			case 3:
					nombre_mes = 'Abril'
					break;
			case 4:
					nombre_mes = 'Mayo'
					break;
			case 5:
					nombre_mes = 'Junio'
					break;
			case 6:
					nombre_mes = 'Julio'
					break;
			case 7:
					nombre_mes = 'Agosto'
					break;
			case 8:
					nombre_mes = 'Septiembre'
					break;
			case 9:
					nombre_mes = 'Octubre'
					break;
			case 10:
					nombre_mes = 'Noviembre'
					break;
			case 11:
					nombre_mes = 'Diciembre'
					break;
		}
		return nombre_mes;
	}
	
	function Obtener_Nombre_Dia(Mumero_Dia)
	{
		var nombre_Dia =""
		switch(Mumero_Dia)
		{
			case 0:
					nombre_Dia = "Domingo";
					break;
			case 1:
					nombre_Dia = "Lunes";
					break;
			case 2:
					nombre_Dia = "Martes";
					break;
			case 3:
					nombre_Dia = "Miércoles";
					break;
			case 4:
					nombre_Dia = "Jueves";
					break;
			case 5:
					nombre_Dia = "Viernes";
					break;
			case 6:
					nombre_Dia = "Sábado";
					break;
		}
		return nombre_Dia;
	}
	
