/* ======================================================================
DESC: Fichero de utilidades de programacion de cliente en JavaScript

PLATAFORMAS: 

NOTAS DE USO: 
====================================================================== */


/* ======================================================================
FUNCIÓN: 	function mostarTags(tag, clase, id, ocultar)

ENTRADA:		tag			nombre del tag a buscar
						clase		nombre de la clase del tag a buscar
						id			identificacion del tag a localizar
						ocultar	 	ocultar o no el tag localizado
				
DEVUELVE:		Nada

DESC:	Oculta o visualiza tags. para aplicar el modo de visualizacion tiene coincidir la Clase 
			del tag y la identificacion. Si la el parametro de identificacion es nulo solo tendrá que 
			coincidir la clase
====================================================================== */
function mostrarTags(tag, clase, id, ocultar) {
	var divs = document.all.tags(tag);		// Todos los tags del tipo especificado
	var estiloDisplay;
	var i;
	
	if (divs != null) 	{	
		// Poner la variable estiloDisplay al valor apropiado (ocultar o mostrar)
		(ocultar == true) ? estiloDisplay = "none" : estiloDisplay = "block";
	    // Recorrer los div y cambiar su tipo de visualizacion en los que cumplan la condicion
	    for (i = 0; i < divs.length; i++) {	
	    		if 	(divs[i].className == clase && (divs[i].id == id || id == null))
						divs[i].style.display=estiloDisplay;
		}
	}
}

function moverTags(tag, clase, id, PosX, PosY) {
	var divs = document.all.tags(tag);		// Todos los tags del tipo especificado
	var estiloDisplay;
	var i;
	
	if (divs != null) 	{	
		// Recorrer los div y cambiar su tipo de visualizacion en los que cumplan la condicion
	  for (i = 0; i < divs.length; i++) {	
	  	if 	(divs[i].className == clase && (divs[i].id == id || id == null)) {
				divs[i].style.top=PosX;
				divs[i].style.left=PosY;
			}
		}
	}
}

/* ======================================================================
FUNCIÓN: 	function contraeExpande()

ENTRADA:		Ninguna

DEVUELVE:		Nada

DESC:	Expande o contrae cualquier arbol cuyos elementos LI tengan como evento de onclick 
			la funcion contraeExpande. Esta función detectará quien ha generado el evento y actura
			sobre los hijos ocultandolos o visualizandolos
====================================================================== */
function contraeExpande() {	
	var elements;		// Hijos del LI
	var i;
	
	// Comprueba que es un nodo
	if (window.event.srcElement.tagName == "LI") {
		elements = window.event.srcElement.children;		// obtener los tags hijos del LI
		if (elements != null)
			// Si tiene hijos, recorre el bucle de hijos
			for (i = 0; i < elements.length; i++) {
				// Si los hijos son indicadores de otro nivel, los oculta o visualiza
				if 	(elements[i].tagName == "UL" || elements[i].tagName == "DIR" || elements[i].tagName == "OL")
					// Visualiza los hijos si estaban ocultos y viceversa
					if (elements[i].style.display == "none")
						elements[i].style.display = "block";
					else
						elements[i].style.display = "none";
			}
	}
	window.event.cancelBubble = true;		// Cancelar el burbujeo
}

/* ======================================================================
FUNCIÓN: 		function getSection(idSeccion)

ENTRADA:		idSeccion		El id de la sección del documento a mostrar y sus hijos
									(el resto de las secciones se ocultan)

DEVUELVE:		Nada

DESC:			Oculta todos los div del documento, excepto aquel cuyo id se pasa como
					parámetro. Se mirara quien ha provocado el evento para encontrar a sus hijos y mostrar 
					tambien los ContenidoCampo asociados.
====================================================================== */
function getSection(id) { 
	var i;
	var element;
	var elements;
	var PosX, PosY;
	
	mostrarTags("div","marcador",null,true);				// Ocultar todos los div de contenido
	mostrarTags("div","marcador",id,false);				// Mostrar el div que nos interesa

	//Mostrar sus hijos del mismo tipo	
	element = window.event.srcElement;
	elements = element.all;
	if (elements != null) {
		elements = elements.tags ("li");
		if (elements != null) {
			for (i = 0; i < elements.length; i++) {
				mostrarTags("div","marcador",Trim (elements[i].innerText),false);				// Mostrar el div que nos interesa
			}
		}
	}
	//else {
	//	alert ("Organigrama");
	//	if (Trim (elements[i].innerText) == "Organigrama") {
	//		PosX = element.style.top+element.style.height;
	//		PosY = element.style.top+element.style.width;
	//		moverTags ("div","ContenidoCampo",Trim (elements[i].innerText),PosX, PosY);
	//	}
	//}

	window.event.cancelBubble = true;							// Cancelar el burbujeo
}
/* ======================================================================
FUNCIÓN: 		function Trim (Text)

ENTRADA:		Text. String a tratar

DEVUELVE:		String sin espacion a los lados

DESC:			Quita todos los espacios que tuviera tanto a la derecha como a la izquierda
====================================================================== */
function Trim (Text) {
	var rdo;
	var espaciosDelante = 0;
	var cont=Text.length-1;
	var i;
	
	for (i = 0; Text.length; i++) 
		if (Text[i] == " ") 
			espaciosDelante++ 
		else
			break;
		
	for (i =Text.length-1; i >= 0; i--)
		if (Text[i] == " ") 
			cont--;
		else
			break;

	rdo = Text.substring (espaciosDelante, cont);
	return (rdo);
}

function aRojo()
{	var el = window.event.srcElement;

	while ((el != null) && (el.tagName != 'A'))
		el = el.parentElement;

	color = el.style.color;
	if (el != null)
		el.style.color = 'red';
	window.event.cancelBubble = true;
}

function aNegro()
{	var el = window.event.srcElement;

	while ((el != null) && (el.tagName != 'A'))
		el = el.parentElement;

	el.style.color = color;
	if (el != null)
		el.style.color = color;
	window.event.cancelBubble = true;
}

