function cajaDinamica() {
/* Funcion para mostrar o ocultar un grupo indeterminado de cajas (divs)
El primer argumento es la acción a realizar, el segundo parametro se puede pasar de dos modos diferentes:
- Una lista de <strings> de longitud variable.
- Un simple argumento en forma de <string> que indica una clase de elementos
- Un simple argumento <array> que contiene todos los elementos a operar.*/
var x;
var y;
var accion;
if (arguments.length<2)
	return false
else if (arguments[0]=="cerrar") {
	accion="none";
}
else if (arguments[0]=="abrir")
	accion="block";
if (isArray(arguments[1]))
	// Si es un array, operar con el array
	for (x=0;x<arguments[1].length;x++)
		document.getElementById(arguments[1][x]).style.display=accion;
else {
	var bloque=new Array();
	bloque=getElementsByClass(arguments[1]);
	if (bloque.length>0)
	// Si el segundo parámetro es un STRING indicando una clase, hacer una iteración con la clase
		for (x=0;x<bloque.length;x++)
			bloque[x].style.display=accion;
		
	else
	// Si el segundo parametro no es un STRINO indicando una clase, hacer una iteración hasta el final de los argumentos
		for (x=1;x<arguments.length;x++)
			document.getElementById(arguments[x]).style.display=accion;

	}
}
function desplegable(elemento,oculto,mostrado,expandedor,color) {
/*		Esta función desplega o oculta una caja desde un botón. Lo hace inmediatamente, sin 		esperas:
		ELEMENTO: Elemento a ocultar o mostrar.
		EXPANDEDOR: Elemento de pulsador que cambiará de color.
		COLOR: Color del estilo actual.
*/
	gestionCapas(elemento,'void','void','auto');
	SetListImage(color,oculto,mostrado,expandedor,elemento);
}
function mostrarOcultar(tiempo,elem,pulsador,txt,accion) {
/*Esta función muestra o oculta una capa, cambia el texto del pulsador y con un retardo a elegir entre seis y veinte segundos:
		TIEMPO: En segundos, tiempo de espera antes de hacer la acción. Si 0 no hay espera
		ELEM: Elemento a mostar u ocultar
		PULSADOR: Elemento que actua de pulsador y que cambiará de texto 
		TXT: Texto que no varia del pulsador
		ACCION: Accion a hacer, <abrir>, <cerrar> o <auto>*/
	tiempo=tiempo * 1000 //pasar a milisegundos
	window.setTimeout("gestionCapas('"+elem+"','"+pulsador.id+"','"+txt+"','"+accion+"')",tiempo);

}
function SetListImage(color,imgPlegado,imgDesplegado,elemento,control) {
	/*	COLOR: Colores del expandedor
		IMGPLEGADO: Nombre de la imagen cuando está plegado (ocultado)
		IMGDESPLEGADO: Nombre de la imagen cuando está desplegado (mostrando)
		ELEMENTO: Puntero del expandedor
		CONTROL: Elemento para verificar el nuevo estado del espandedor.
			SI VALOR = CERRAR, HACER ACCIÓN.
			SI VALOR = ABRIR, HACER ACCIóN
			SI VALOR = AUTO: Mirar el elemento de control para decidir si debe estar abierto o cerrado. POR DEFECTO, ON
		ACCION: En caso de que AUTO sea OFF, decidir qué acción hacer. VALORES POSIBLES: "ABRIR" O "CERRAR"
	*/
	if (!getType(elemento,"HTMLLIElement"))
		elemento=document.getElementById(elemento);
	if (control)
		control=document.getElementById(control);
	var rutaPlegado='url(/estilos/'+color+'/'+imgPlegado+')';
	var rutaDesplegado='url(/estilos/'+color+'/'+imgDesplegado+')';
	if (color!="azul" && color!="negro" && color!="rojo" && color!="verde")
		return false;
	else {
		if (arguments.length == 5 && control)
			if (control.style.display=='block')
				elemento.style.listStyleImage=rutaDesplegado;
			else
				elemento.style.listStyleImage=rutaPlegado;
		else
			if (arguments[5]=="cerrar")
				elemento.style.listStyleImage=rutaDesplegado;
			else
				elemento.style.listStyleImage=rutaPlegado;
	}
}
/* FUNCIONES INTERNAS <-------------------------------------------------*/
function getSize(elem)
{
/* 		Esta función devuelve la medida en pixeles de un elemento que está en otra unidad 		(como porcentajes, em,...)*/
	x = document.getElementById(elem);
	return x.offsetWidth;
}
function gestionCapas(elem,boton,txt,tipo) {
/* 		Esta función hace todo el trabajo sucio de la funcion mostrar_ocultar: cambia el 		texto del pulsador y cierra o abre en función del estado o explicitamente. 			Parametros:
		ELEM: Elemento a modificar
		BOTON: Elemento pulsador ('void' para omitir)
		TXT: Texto del pulsador que se cambiará ('void' para omitir)
		TIPO: Acción ('cerrar','abrir' o 'auto' para automático)*/
var elemDIV;
var pulsador;
pulsador=document.getElementById(boton);
elemDIV=document.getElementById(elem);
if (elemDIV.style.display=="block" && ( tipo=="cerrar" || tipo=="auto") ) {
	//PARA OCULTAR
	elemDIV.style.display="none";
	if (txt!='void')
		pulsador.firstChild.nodeValue='Mostrar ' + txt;
	}	
else if (elemDIV.style.display=="none" && ( tipo=="abrir" || tipo=="auto") ) {
	//PARA MOSTRAR
	elemDIV.style.display="block";
	if (txt!='void')
		pulsador.firstChild.nodeValue='Ocultar ' + txt;
	if (elem=="cuerpo-ayuda-wiki") {
		elemDIV.style.width=getSize('ayuda-wiki')-2+'px';
		/* Hay que restar --.nodeValue-- dos pixeles, uno por cada lado del borde (border:1px solid black;)*/
		}
	}
}

