/* FUNCIONES DE JAVASCRIPT */

/* VARIABLES GENERALES ********************************************************/
var dirImg      = "images";	            // Directorio de imagenes
var dirImgFiles = dirImg + "/ficheros";	// Directorio de las imágenes de los ficheros

var dHoy = new Date();	// Fecha de hoy
var aMeses  = new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
var aDiasSem = new Array ("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Domingo");
var i = 0;

/* FORMULARIOS ****************************************************************/

function js_EnviarA (formulario, destino)
{
	/* Envía un formulario a un destino dado:
	   - formulario		Nombre del formulario a enviar
	   - destino		URL donde se quiere enviar
	   = Devuelve siempre true.
	*/
	
	eval("document." + formulario + ".action = " + destino);
	eval("document." + formulario + ".submit()");
	return true;
}

function js_EnviarCorreo()
{
	/* Envía un correo al pulsar:
	   - Sin argumentos
	   = Abre el cliente de correo.
	*/
	
	var oMail = document.getElementById("idmail");
	oMail.setAttribute("href","mailto:webmaster@ciudadanosmayores.org?subject=Correo desde la web de CIMA");
	return true;
}

function js_CampoVacio (formulario, campo, texto)
{
	/* Comprueba si el campo de un formulario está vacío y muestra un mensaje:
	   - formulario		Nombre del formulario donde se encuentra el campo
	   - campo			Nombre del campo que deseamos comprobar
	   - texto			Nombre del campo que se mostrará en el mensaje de error
	   = Devuelve verdadero si el campo está vacío y falso en caso contrario.
	*/
	
	var miCampo = eval("document." + formulario + "." + campo + ".value");
	if (!miCampo)
	{
		alert("El campo " + texto + " no puede estar vacío.");
		eval("document." + formulario + "." + campo + ".focus()");
		return true;
	}
	return false;
}

function js_ComprobarCampos( formulario, nomCampos, texCampos, accion, destino )
{
	/* Comprueba varios campos de un formulario para que no estén vacíos:
	   - formulario		Nombre del formulario donde se encuentran los campos
	   - nomCampos		Array con el nombre de los campos
	   - texCampos		Array con el nombre del campo que se mostrará en caso de error
	   - accion			Valor del campo accion       
	   - destino		Destino del formulario (optativo)
	   = Si todo es correcto envía el formulario.
	*/
	
	var i = 0;
	var campo = "";
	var texto = "";
	
	for (i = 0; i < nomCampos.length; i++)
	{
		campo = nomCampos[i];
		texto = texCampos[i];
		if ( js_CampoVacio (formulario, campo, texto) ) return false;
	}
	// Carga el campo accion
	if (eval("document." + formulario + ".accion"))
		eval("document." + formulario + ".accion.value = '" + accion + "'");
		
	if ( destino )
		eval("document." + formulario + ".action = '" + destino + "'");
		
	eval("document." + formulario + ".submit()");
	return true;
}

function js_ComprobarCampo( formulario, nombre, texto, accion, destino )
{
	/* Comprueba un campo de un formulario para que no esté vacío:
	   - formulario		Nombre del formulario donde se encuentran los campos
	   - nombre			Nombre del campo
	   - texto			Cadena con el nombre del campo que se mostrará en caso de error
	   - accion			Valor del campo accion
	   - destino		Destino del formulario (optativo)
	   = Si todo es correcto envía el formulario.
	*/
	
	var i = 0;
	var aCampo = new Array(nombre);
	var aTexto = new Array(texto);
	
	if ( !destino ) destino = "";
	
	// Array de un sólo elemento
	js_ComprobarCampos( formulario, aCampo, aTexto, accion, destino );
}

function js_ComprobarNot()
{
	/* Comprueba los campos obligatorios del formulario de noticias:
	   - Sin parámetros
	   = Devuelve true si todo es correcto y falso en caso contrario.
	*/
	
	if (!js_CampoVacio("frmNoticias","titulo","Título"))
	{
		if (document.frmNoticias.visible.checked == true)
			document.frmNoticias.visible.value = "S";
		else
			document.frmNoticias.visible.value = "N";
			
		document.frmNoticias.submit();
		return true;
	}
	return false;
}

function js_ComprobarInf()
{
	/* Comprueba los campos obligatorios del formulario de informes
	   - Sin parámetros
	   = Devuelve true si todo es correcto y falso en caso contrario.
	*/
	
	if (!js_CampoVacio("formulario","titulo","Título"))
	{
		if (document.formulario.visible.checked == true)
			document.formulario.visible.value = "S";
		else
			document.formulario.visible.value = "N";
			
		document.formulario.submit();
		return true;
	}
	return false;
}

function js_ComprobarGru()
{
	/* Comprueba los campos obligatorios del formulario de grupos de fotos:
	   - Sin parámetros
	   = Devuelve true si todo es correcto y falso en caso contrario.
	*/
	
	if (!js_CampoVacio("frmFotos","nombre","Nombre"))
	{
		document.frmFotos.submit();
		return true;
	}
	return false;
}

function js_EnviarMensaje( ancod, avcod, frm, des, msg )
{
	/* Muestra un mensaje y si se confirma se envían los datos:
	   - ancod	Array con los Nombres del código
	   - avcod	Array con los Valores del código
	   - frm	Formulario a enviar
	   - des	Página de destino
	   - msg	Mensaje a mostar
	   = Devuelve verdadero si se envía o falso si se cancela.
	*/

	if ( confirm(msg) )
	{
		js_ElegirDestinoX( ancod, avcod, frm, des );
		return true;
	}
	else
	{
		return false;
	}
}

function js_ElegirDestino( ncod, vcod, frm, des )
{
	/* Muestra lo elegido:
	   - ncod	Nombre del código
	   - vcod	Valor del código
	   - frm	Formulario a enviar
	   - des	Página de destino
	   = No devuelve nada.
	*/
	
	eval( 'document.' + frm + '.' + ncod + '.value = "' + vcod + '"' );
	eval( 'document.' + frm + '.action="' + des + '"' );
	eval( 'document.' + frm + '.submit()' );
}

function js_ElegirDestino2( ncod0, vcod0, ncod, vcod, frm, des )
{
	/* Muestra lo elegido, usando dos códigos:
	   - ncod0	Nombre del código extra
	   - vcod0	Valor del código extra
	   - ncod	Nombre del código
	   - vcod	Valor del código
	   - frm	Formulario a enviar
	   - des	Página de destino
	   = No devuelve nada.
	*/
	
	eval( 'document.' + frm + '.' + ncod0 + '.value = "' + vcod0 + '"' );
	eval( 'document.' + frm + '.' + ncod + '.value = "' + vcod + '"' );
	eval( 'document.' + frm + '.action="' + des + '"' );
	eval( 'document.' + frm + '.submit()' );
}

function js_ElegirDestinoX( ncod, vcod, frm, des )
{
	/* Muestra lo elegido:
	   - ncod	Array con los Nombres del código
	   - vcod	Array con los Valores del código
	   - frm	Formulario a enviar
	   - des	Página de destino
	   = No devuelve nada.
	*/
	
	var i = 0;
	for (i = 0; i < ncod.length; i++)
	{
		eval( 'document.' + frm + '.' + ncod[i] + '.value = "' + vcod[i] + '"' );
	}
	eval( 'document.' + frm + '.action="' + des + '"' );
	eval( 'document.' + frm + '.submit()' );
}

function js_EditarDestino( ncod, vcod, frm, des )
{
	/* Abre la página para editar lo elegido:
	   - ncod	Nombre del código en el formulario
	   - vcod	Valor del código
	   - frm	Nombre del formulario
	   -
	   = No devuelve nada.
	*/
	
	eval( 'document.' + frm + '.action = "' + des + '"' );
	eval( 'document.' + frm + '.' + ncod + '.value = "' + vcod + '"' );
	eval( 'document.' + frm + '.submit()' );
}

/* ORDENACIÓN DE DATOS ********************************************************/

function js_OrdenarDatos(nombre, celda, ordenDatos)
{
	/* Lee los datos de una tabla y los ordena por la celda indicada en el orden indicado
	   nombre		Nombre del conjunto de datos (tabla) a ordenar
	   celda		Número de la celda por la que se va a ordenar
	   ordenarDatos	Orden de los datos: 0-Sin ordernar 1-Ascendente, 2-Descendente
	*/
		
	var tabla  = document.getElementById(nombre);  // Tabla a ordenar
	var filas  = tabla.getElementsByTagName("tr"); // Obtenemos las filas de la tabla
	var numfi  = filas.length;                     // Número de filas
	var celdas = "";
	var aux    = "";
	
	// Arrays donde se guardarán los datos de las celdas
	var imagen = new Array();	// Imagen
	var imaAlt = new Array();	// Alt de la imagen
	var descri = new Array();	// Descripción 
	var enlace = new Array();	// Enlace
	var fecha  = new Array();	// Fecha 
	var enlImg = new Array();   // Enlace de la imagen
	var ordena = new Array();	// Array auxiliar para ordenar los datos
		
	// Recorre las filas y guarda los datos en matrices
	for (i = 0; i < numfi; i++)
	{
		celdas = filas[i].getElementsByTagName("td");    
		imagen[i] = celdas[0].getElementsByTagName("img")[0].getAttribute("src");  // Imagen
		imaAlt[i] = celdas[0].getElementsByTagName("img")[0].getAttribute("alt");  // Alt de la imagen
		descri[i] = celdas[1].getElementsByTagName("a")[0].firstChild.nodeValue;   // Nombre
		enlace[i] = celdas[1].getElementsByTagName("a")[0].getAttribute("href");   // Enlace 
		fecha[i]  = celdas[2].firstChild.nodeValue;                                // Fecha
		enlImg[i] = celdas[3].getElementsByTagName("a")[0].getAttribute("href");   // Enlace de la imagen
			
		if (ordenDatos > 0)
		{
			// Ordenamos por la celda seleccionada
			ordena[i] = new Array(2);
				
			switch (celda)
			{
				case 2:  ordena[i][0] = js_CambiarFecha(fecha[i]); break;	// Fecha 
				default: ordena[i][0] = descri[i]; 							// Nombre
			}
			ordena[i][1] = i;	
		}
	}
		
	if (ordenDatos > 0)
	{
		// Ordena los datos
		ordena.sort();
	
		// Orden descendente
		if (ordenDatos == 2) 
		{
			ordena.reverse();
		}
	}
	
	// Reescribe las filas
	for (i = 0; i < numfi; i++)
	{
		// Obtenemos el índice del elemento
		if (ordenDatos > 0)
			aux = ordena[i][1]; 
		else
			aux = ordena[i][1];                  									
		celdas = filas[i].getElementsByTagName("td"); 								// Obtenemos las celdas
		celdas[0].getElementsByTagName("img")[0].setAttribute("src", imagen[aux]);	// Imagen --> imagen
		celdas[0].getElementsByTagName("img")[0].setAttribute("alt", imaAlt[aux]);	// Imagen --> alt 
		celdas[0].getElementsByTagName("img")[0].setAttribute("title", imaAlt[aux]);  // Imagen --> title 
		celdas[1].getElementsByTagName("a")[0].firstChild.nodeValue = descri[aux];  // Nombre   --> descripción
		celdas[1].getElementsByTagName("a")[0].setAttribute("href", enlace[aux]);	// Nombre   --> enlace
		celdas[2].firstChild.nodeValue = fecha[aux];                                // Fecha
		celdas[3].getElementsByTagName("a")[0].setAttribute("href", enlImg[aux]);	// Imagen --> enlace
	}
}

function js_OrdenarDatosForo(nombre, celda, ordenDatos)
{
	/* Lee los datos de una tabla y los ordena por la celda indicada en el orden indicado:
	   nombre	 	Nombre del conjunto de datos (tabla) a ordenar
	   celda	 	Número de la celda por la que se va a ordenar
	   ordenarDatos	Orden de los datos: 0-Sin ordernar 1-Ascendente, 2-Descendente
	*/
		
	var tabla  = document.getElementById(nombre);  // Tabla a ordenar
	var filas  = tabla.getElementsByTagName("tr"); // Obtenemos las filas de la tabla
	var numfi  = filas.length;                     // Número de filas
	var celdas = "";
	var i = 0;
	var aux = "";
	
	// Arrays donde se guardarán los datos de las celdas
	var imagen = new Array();	// Imagen
	var imaAlt = new Array();	// Alt de la imagen
	var descri = new Array();	// Descripción del tema
	var enlace = new Array();	// Enlace
	var fecha  = new Array();	// Fecha del tema
	var ultima = new Array();	// Fecha de la última respuesta
	var imgpun = new Array();	// Imagen punto
	var imgAlt = new Array();	// Alt de la imagen del punto
	var respu  = new Array();	// Número de respuestas
	var destin = new Array();	// Enlace a ver o editar
	var imeAlt = new Array();	// Alt de la imagen de ver o editar
	var ordena = new Array();	// Array auxiliar para ordenar los datos
		
	// Recorre las filas y guarda los datos en matrices
	for (i = 0; i < numfi; i++)
	{
		celdas = filas[i].getElementsByTagName("td");                              // Array de celdas
		imagen[i] = celdas[0].getElementsByTagName("img")[0].getAttribute("src");  // Imagen
		imaAlt[i] = celdas[0].getElementsByTagName("img")[0].getAttribute("alt");  // Alt de la imagen
		descri[i] = celdas[1].getElementsByTagName("a")[0].firstChild.nodeValue;   // Nombre del tema
		enlace[i] = celdas[1].getElementsByTagName("a")[0].getAttribute("href");   // Enlace del tema
		fecha[i]  = celdas[2].firstChild.nodeValue;                                // Fecha del tema
		ultima[i] = celdas[3].firstChild.nodeValue;                                // Fecha última respuesta
		imgpun[i] = celdas[4].getElementsByTagName("img")[0].getAttribute("src");  // Imagen punto
		imgAlt[i] = celdas[4].getElementsByTagName("img")[0].getAttribute("alt");  // Alt de la imagen
		respu[i]  = celdas[5].firstChild.nodeValue;                                // Número de respuestas
		destin[i] = celdas[6].getElementsByTagName("a")[0].getAttribute("href");   // Destino de editar
		imeAlt[i] = celdas[6].getElementsByTagName("img")[0].getAttribute("alt");  // Alt de la imagen
		
		if (ordenDatos > 0)
		{
			// Ordenamos por la celda seleccionada
			ordena[i] = new Array(2);
			
			switch (celda)
			{
				case 2: ordena[i][0] = js_CambiarFecha(fecha[i]);  break;	// Fecha del tema
				case 3: ordena[i][0] = js_CambiarFecha(ultima[i]); break;	// Fecha última respuesta
				case 4: ordena[i][0] = js_DiezDigitos(respu[i]);   break;	// Número de respuestas
				default: ordena[i][0] = descri[i]; 							// Nombre del tema
			}
			ordena[i][1] = i;	
		}
	}
	
	if (ordenDatos > 0)
	{
		// Ordena los datos
		ordena.sort();

		// Orden descendente
		if (ordenDatos == 2) 
		{
			ordena.reverse();
		}
	}

	// Reescribe las filas
	for (i = 0; i < numfi; i++)
	{
		// Obtenemos el índice del elemento
		aux = ordena[i][1];                  									
		celdas = filas[i].getElementsByTagName("td"); 								 // Obtenemos las celdas
		celdas[0].getElementsByTagName("img")[0].setAttribute("src", imagen[aux]);	 // Imagen --> imagen
		celdas[0].getElementsByTagName("img")[0].setAttribute("alt", imaAlt[aux]);	 // Imagen --> alt 
		celdas[1].getElementsByTagName("a")[0].firstChild.nodeValue = descri[aux];   // Tema   --> descripción
		celdas[1].getElementsByTagName("a")[0].setAttribute("href", enlace[aux]);	 // Tema   --> enlace
		celdas[2].firstChild.nodeValue = fecha[aux];                                 // Fecha
		celdas[3].firstChild.nodeValue = ultima[aux];                                // Ultima
		celdas[4].getElementsByTagName("img")[0].setAttribute("src", imgpun[aux]);	 // Imagen --> imagen
		celdas[4].getElementsByTagName("img")[0].setAttribute("alt", imgAlt[aux]);	 // Imagen --> alt 
		celdas[4].getElementsByTagName("img")[0].setAttribute("title", imgAlt[aux]); // Imagen --> title 
		celdas[5].firstChild.nodeValue = respu[aux];								 // Respuestas
		celdas[6].getElementsByTagName("a")[0].setAttribute("href", destin[aux]);	 // Enlace --> href
		celdas[6].getElementsByTagName("a")[0].setAttribute("title", imeAlt[aux]);   // Enlace --> title 
		celdas[6].getElementsByTagName("img")[0].setAttribute("alt", imeAlt[aux]);   // Imagen --> alt 
	}
}

function js_PonerFlechas(flecha)
{
	/* Pone las imágenes de las flechas o del cuadrado:
	   - flecha	 Caso en el que nos encontramos
	   = No devuelve nada
	*/
	
	var flechaAr = dirImg + "/flechas/orAr.png";
	var flechaAb = dirImg + "/flechas/orAb.png";
	var flechaNo = dirImg + "/flechas/orNo.png";
	
	var imgI1  = document.getElementById("a1");  
	var imgD1  = document.getElementById("b1"); 
	var imgI2  = document.getElementById("a2"); 
	var imgD2  = document.getElementById("b2"); 
	var imgI3  = document.getElementById("a3"); 
	var imgD3  = document.getElementById("b3"); 
	var imgI4  = document.getElementById("a4"); 
	var imgD4  = document.getElementById("b4"); 
	
	if ( imgI1 ) imgI1.src = flechaAb;
	if ( imgD1 ) imgD1.src = flechaAr;
	if ( imgI2 ) imgI2.src = flechaAb;
	if ( imgD2 ) imgD2.src = flechaAr;
	if ( imgI3 ) imgI3.src = flechaAb;
	if ( imgD3 ) imgD3.src = flechaAr;
	if ( imgI4 ) imgI4.src = flechaAb;
	if ( imgD4 ) imgD4.src = flechaAr;

	switch (flecha)
	{
		case 1 : imgI1.src = flechaNo; break;
		case 2 : imgD1.src = flechaNo; break;
		case 3 : imgI2.src = flechaNo; break;
		case 4 : imgD2.src = flechaNo; break;
		case 5 : imgI3.src = flechaNo; break;
		case 6 : imgD3.src = flechaNo; break;
		case 7 : imgI4.src = flechaNo; break;
		case 8 : imgD4.src = flechaNo; break;
	}
}

/* NÚMEROS Y MATEMÁTICAS ******************************************************/

function js_EsNumero( num )
{
	/* Nos dice si num es un número o no:
	   - num	Número o cadena a evaluar
	   = Verdadero si es un número y falso en caso contrario.
	*/
	
	iNum = parseInt(num)
	if ( isNaN(iNum) )
		return false;	// No es un número
	else
		return true;	// Es un número
}

function js_DiezDigitos( num )
{
	/* Convierte un número a diez dígitos con ceros delante:
	   - num	Número a convertir a 10 dígitos
	   = El número con diez dígitos.
	*/
	
	var res = "0000000000" + num;
	res = res.slice(res.length - 10);
	return res;
}

/* FECHA Y HORA ***************************************************************/

function js_PonerHora()
{
	/* Poner la fecha y hora actual:
	   = Escribe la hora actual en el elemento con id="horahoy".
	*/
	
	var oFecha = new Date();
	var oSitio = document.getElementById("horahoy");
	
	if (oSitio)
	{
		var sDia = aDiasSem[oFecha.getDay()];
		var iDia = oFecha.getDate();
		var sMes = aMeses[oFecha.getMonth()];
		var sAny = oFecha.getFullYear();
		var iHor = oFecha.getHours();
		var iMin = oFecha.getMinutes();
		var iSeg = oFecha.getSeconds();
	
		var sAhora = sDia + ", " + iDia + " de " + sMes.toLowerCase() + " de " + sAny + "<br />";
		sAhora += ((iHor < 10) ? "0" : "")   + iHor;
		sAhora += ((iMin < 10) ? ":0" : ":") + iMin;
		sAhora += ((iSeg < 10) ? ":0" : ":") + iSeg;
	
		oSitio.innerHTML = sAhora;
		setTimeout("js_PonerHora()",1000);
	}
}

function js_ArreglarHora( formulario, nombre )
{
	/* Lee el texto de la hora y añade los : si toca:
	   - nombre		Nombre del texto que contiene la hora
	   = Cadena con la hora arreglada
	*/
	var sHora  = eval("document." + formulario + "." + nombre + ".value");
	var oHora  = document.getElementById(nombre);
	var sNueva = sHora;
	var largo  = sHora.length;
	var sUlt   = "";
	
	if (largo > 0)
	{
		// Último caracter
		sUlt = sHora[largo - 1];
		
		// Comprobar que el último dígito puesto es correcto
		if (sUlt == ":" || js_EsNumero(sUlt) == true)
		{
			// Arreglar la hora
			switch (largo)
			{
				case 1:
					if (sHora > 2) sNueva = "0" + sHora + ":";
				break;
				case 2:
					if (sHora[0] == 2 && sHora[1] > 3) 
						sNueva = "0" + sHora[0] + ":" + sHora[1];
					else
						if (sHora[1] == ":")
							sNueva = "0" + sHora[0] + ":";
				break;
				case 3:
					if (sHora[2] != ":")
						sNueva = sHora[0] + sHora[1] + ":" + sHora[2];
				break;
				case 4:
					if (sHora[3] > 5)
						sNueva = sHora[0] + sHora[1] + ":0" + sHora[3] + ":";
				break;
				case 6:
					if (sHora[5] != ":")
						if (sHora[5] > 5)
							sNueva = sHora[0] + sHora[1] + ":" + sHora[3] + sHora[4] + ":0" + sHora[5];
						else
							sNueva = sHora[0] + sHora[1] + ":" + sHora[3] + sHora[4] + ":" + sHora[5];
				break;
				case 7:
					if (sHora[6] > 5)
						sNueva = sHora[0] + sHora[1] + ":" + sHora[3] + sHora[4] + ":0" + sHora[6];
				break;
			}
		}
		else
		{
			// No es un número ni ":" el último carácter, lo quitamos.
			sNueva = sHora.substr(0, largo - 1);
		}
		eval("document." + formulario + "." + nombre + ".value = '" + sNueva + "'");
	}
}

function js_CambiarFecha(fecha)
{
	/* Dando una fecha en AAAA-MM-DD la pasa a DD-MM-AAAA y viceversa:
	   - fecha... Fecha que queremos transformar de un formato a otro
	   = Devuelve la fecha en el otro formato.
	*/
	
	// Separador de la fecha
	if (fecha.indexOf("-") == 4)
	{
		// Formato AAAA-MM-DD
		var p1 = fecha.substr(0,4);
		var p2 = fecha.substr(5,2);
		var p3 = fecha.substr(8);
	}
	if (fecha.indexOf("-") == 2)
	{
		// Formato DD-MM-AAAA
		var p1 = fecha.substr(0,2);
		var p2 = fecha.substr(3,2);
		var p3 = fecha.substr(6);
	}
	var nueva = p3 + "-" + p2 + "-" + p1;	// Formato cambiado
		
	return nueva;
}

function js_getDiasMes ( m, a )
{
	/* Calcula el número de días que tiene un mes:
	   - mes	Mes del que queremos saber los días (1 - 12)
	   - any	Año del mes
	   = Número de días que tiene el mes de dicho año.
	*/
	m1 = m - 1; // Para adaptarlo a los meses de javascript (0 - 11)
	f_diasMes = 28;
	for(d = 28; d < 32; d++)
	{
		f_Fecha = new Date(a, m1, d);
		if (f_Fecha.getMonth() == m1) f_diasMes = d;
	}
	return f_diasMes;
}

function js_getDia( n )
{
	/* Lee el día de un campo con formato DD-MM-AAAA
	   - n	Nombre del campo que contiene la fecha
	   = Valor del día.
	*/
	var miFecha = document.getElementById(n).getAttribute("value");
	return miFecha.substr(0, 2);
}

function js_getMes( n )
{
	/* Lee el mes de un campo con formato DD-MM-AAAA
	   - n	Nombre del campo que contiene la fecha
	   = Valor del mes.
	*/
	var miFecha = document.getElementById(n).getAttribute("value");
	return miFecha.substr(3, 2);
}

function js_getAny( n )
{
	/* Lee el año de un campo con formato DD-MM-AAAA
	   - n	Nombre del campo que contiene la fecha
	   = Valor del año.
	*/
	var miFecha = document.getElementById(n).getAttribute("value");
	return miFecha.substr(6, 4);
}

function js_setDia( n )
{
	/* Escribe el día en un campo con formato DD-MM-AAAA, lo lee del select "día"
	   - n	Nombre del campo que contiene la fecha
	   = Modifica la fecha del campo.
	*/
	sFecha = document.getElementById(n).getAttribute("value");
	oDia = document.getElementById("dia");
	sDia = oDia.options[oDia.selectedIndex].value;
	if (sDia < 10) sDia = "0" + sDia;
	sParte = sFecha.substr(2, 8);
	sNewFecha = sDia + sParte;
	document.getElementById(n).setAttribute("value", sNewFecha);
}

function js_setMes( n )
{
	/* Escribe el mes en un campo con formato DD-MM-AAAA, lo lee del select "mes"
	   - n	Nombre del campo que contiene la fecha
	   = Modifica la fecha del campo.
	*/
	sFecha = document.getElementById(n).getAttribute("value");
	oMes = document.getElementById("mes");
	sMes = oMes.options[oMes.selectedIndex].value;
	if (sMes < 10) sMes = "0" + sMes;
	sParte1 = sFecha.substr(0, 3);
	sParte2 = sFecha.substr(5, 5);
	sNewFecha = sParte1 + sMes + sParte2;
	document.getElementById(n).setAttribute("value", sNewFecha);
}

function js_setAny( n )
{
	/* Escribe el año de un campo con formato DD-MM-AAAA, lo lee del select "any"
	   - n	Nombre del campo que contiene la fecha
	   = Modifica la fecha del campo.
	*/
	sFecha = document.getElementById(n).getAttribute("value");
	oAny = document.getElementById("any");
	sAny = oAny.options[oAny.selectedIndex].value;
	sParte = sFecha.substr(0, 6);
	sNewFecha = sParte + sAny;
	document.getElementById(n).setAttribute("value", sNewFecha);
}

function js_isFechaCorrecta( d, m, a )
{
	/* Comprueba si una fecha es correcta:
	   - d	Día de la fecha a comprobar
	   - m	Mes de la fecha a comprobar
	   - a	Año de la fecha a comprobar
	   = True si es correcta o False si la fecha es incorrecta.
	*/
	dm = js_getDiasMes ( m, a );

	if (dm < d)
	{
		alert("El mes de " + aMeses[m - 1] + " de " + a + " tiene " + dm + " días y usted ha seleccionado el día " + d + ", que no es correcto.");
		return false;
	}
	else
	{
		return true;
	}
}

function js_SelectDia( n )
{
	/* Escribe los campos option de una select que contiene los días del mes y
	   deja como seleccionada la contenida en un campo 'n' con formato DD-MM-AAAA:
	   - n	Nombre del campo que contiene la fecha.
	   = Escribe los días del mes.
	*/
	var miDia = js_getDia(n);
	
	if (!miDia || miDia < 1) miDia = dHoy.getDate();
	
	for (i = 1; i <= 31; i++)
	{
		document.write('<option class="fecha" value="' + i + '" ');
		if (i == miDia) document.write('selected="selected"');
		document.write('\/>' + i + '<\/option>');
	}
}

function js_SelectMes( n )
{
	/* Escribe los campos option de una select que contiene los meses del año y
	   deja como seleccionada la contenida en un campo 'n' con formato DD-MM-AAAA:
	   - n	Nombre del campo que contiene la fecha.
	   = Escribe los meses del año.
	*/
	var miMes = js_getMes(n);
	
	if (!miMes || miMes < 1) miMes = dHoy.getMonth();
	
	for (i = 1; i < 13; i++)
	{
		document.write('<option class="fecha" value="' + i + '" ');
		if (i == miMes) document.write('selected');
		document.write('\/>' + aMeses[i-1] + '<\/option>');
	}
}

function js_SelectAny( n )
{
	/* Escribe los campos option de una select que contiene una lista de años y
	   deja como seleccionada la contenida en un campo 'n' con formato DD-MM-AAAA:
	   - n	Nombre del campo que contiene la fecha.
	   = Escribe las distintas opciones.
	*/
	var miAno = js_getAny(n);
	
	if (!miAno || miAno < 1900) miAno = dHoy.getFullYear();

	var rango = 3;		// Rango de años a ver (x+rango ... x ... x-rango)
	var desde = miAno - rango;
	var hasta = miAno - 0 + rango;
	for (i = desde; i < hasta; i++)
	{
		document.write('<option class="fecha" value="' + i + '" ');
		if (i == miAno) document.write('selected');
		document.write('\/>' + i + '<\/option>');
	}
}

function js_setOriginal( c, n, o )
{
	/* Devuelve los valores originales de un campo de fecha y oculta la capa:
	   - c	Nombre de la capa que se ocultará
	   - n	Nombre del campo que contiene la fecha
	   - o	Valor original de la fecha
	   = Cambia el valor del campo de fecha por el original.
	*/
	var oFecha = document.getElementById(n);
	oFecha.setAttribute("value", o);
	js_OcultarCapa(c);
	oFecha.blur();
}

function js_IniciarCapa( c, n )
{
	/* Antes de mostrar la capa selecciona el día, mes y año desde un campo de fecha:
	   - c	Nombre de la capa que se mostrará.
	   - n	Nombre del campo que contiene la fecha
	   = Muestra la capa con los datos de la fecha seleccionados.
	*/
	var sMiFecha = document.getElementById(n).getAttribute("value");
	if (!sMiFecha || sMiFecha == "" || sMiFecha == "00-00-0000")
	{
		var d = dHoy.getDate();
		if (d < 10) d = "0" + d;
		var m = dHoy.getMonth();
		if (m < 10) m = "0" + m;
		var a = dHoy.getFullYear();
		var sHoy = d + "-" + m + "-" + a;
		document.getElementById(n).setAttribute("value", sHoy);
	}
		
	var iDia = js_getDia( n );
	var oDia = document.getElementById("dia");
	oDia.options[iDia - 1].selected = true;
	
	var iMes = js_getMes( n );
	var oMes = document.getElementById("mes");
	oMes.options[iMes - 1].selected = true;
	
	var iAny = js_getAny( n );
	var oAny = document.getElementById("any");
	var iAny0 = oAny.options[0].text;
	oAny.options[iAny - iAny0].selected = true;

	js_MostrarCapa(c);
}

function js_Cerrar( c, n )
{
	/* Comprueba si una fecha es correcta antes de ocultar la capa:
	   - c	Nombre de la capa que se ocultará
	   - n	Nombre del campo que contiene la fecha
	   = Oculta la capa si la fecha escrita es correcta.
	*/
	var d = js_getDia(n);
	var m = js_getMes(n);
	var a = js_getAny(n);
	
	if (js_isFechaCorrecta( d, m, a ))
	{
		var oFecha = document.getElementById(n);
		js_OcultarCapa(c);
		var sFechaOriginal = oFecha.getAttribute("value");
		oFecha.blur();
	}
	else
	{
		document.getElementById("dia").focus();
	}
}

/* FOTOGRAFÍAS ****************************************************************/

function js_MostrarSRCfoto(dir, ver)
{
	/* Muestra el contenido de una foto:
	   - dir	Dirección del archivo a mostrar
	   - ver	Booleano que indica si se muestra el contenido o no
	   = Muestra el resultado en "vista"
	*/
	
	var oIframe = document.getElementById("vista");
	
	if (ver)
		oIframe.src = dir;
	else
		oIframe.src = dirImgFiles + "/carpetafondo.png";
		
	var oIDivUrl = document.getElementById("vistaUrl");
	oIDivUrl.innerHTML = dir;
}

function js_MostrarSRCConsejo(dir)
{
	/* Muestra el contenido de una foto:
	   - dir	Dirección del archivo a mostrar
	   = Muestra el resultado en "vista"
	*/
	
	var oIframe = document.getElementById("vista");
	oIframe.src = dir;
		
	var oIDivUrl = document.getElementById("vistaUrl");
	oIDivUrl.innerHTML = dir;
	
	document.frmFotos.archivo.value = dir;
}

function js_MostrarSRCfotoBoton(dir, ver, boton)
{
	/* Muestra u oculta los botones:
	   - dir	Dirección del archivo a mostrar
	   - ver	Booleano que indica si se muestra el contenido o no
	   - boton	Booleano que indica si se muestra (false) o se oculta (true) el botón Quitar
	   = Alterna el ocultar o mostrar botones y cambia el texto de "bguardar"
	*/
	
	var oBguardar = document.getElementById("bguardar");
	
	js_MostrarSRCfoto(dir, ver);
	
	if ( boton )
	{
		js_OcultarCapa( "bquitar" );
		oBguardar.setAttribute("value","Guardar");
	}
	else
	{
		js_MostrarCapa( "bquitar" );
		oBguardar.setAttribute("value","Modificar");
	}
}

function js_MostrarSRCfotoDatos(dir, ver, boton, tit, fec, vis, ord)
{
	/* Muestra las fotos y los datos de éstas:
	   - dir	Dirección del archivo a mostrar
	   - ver	Booleano que indica si se muestra el contenido o no
	   - boton	Booleano que indica si se muestra (false) o se oculta (true) el botón Quitar
	   - tit	Título de la foto 
	   - fec	Fecha de la foto 
	   - vis	Visibilidad de la foto 
	   - ord	Número de orden de la foto 
	   = Muestra los datos de la foto elegida 
	*/

	js_MostrarSRCfotoBoton(dir, ver, boton);
	
	document.getElementById("txttit").setAttribute("value", tit);
	document.getElementById("fecha").setAttribute("value", fec);
	
	var oChk = document.getElementById("chvisible");
	oChk.setAttribute("value",vis);
	if (vis == "S")
		oChk.checked = true;
	else
		oChk.checked = false;
	
	var oOrd = document.getElementById("orden");
	oOrd.selectedIndex = ord;
}

function js_ComprobarFoto( a )
{
	/* Comprueba los campos obligatorios del formulario de añadir fotos al grupo:
	   - a	Acción que se realizará.
	   = Devuelve true si todo es correcto y falso en caso contrario.
	*/
	
	if ( a == "TERMINAR")
	{
		document.frmFotos.action = "fotosleer.php" + urlDat;
		document.frmFotos.submit();
		return true;
	}
	else
	{
		var sVista = document.getElementById("vistaUrl").innerHTML;
	
		if (sVista == "" || sVista == "&nbsp;")
		{
			alert("No se ha seleccionado ninguna fotografía.");
		}
		else
		{
			if ( a == "QUITAR" ) document.frmFotos.titulo.value = "Quitando la fotografía.";
			
			if ( !js_CampoVacio("frmFotos","titulo","Título"))
			{
				if (document.frmFotos.visible.checked == true)
					document.frmFotos.visible.value = "S";
				else
					document.frmFotos.visible.value = "N";
				
				document.frmFotos.archivo.value = sVista;
				document.frmFotos.accion.value = a;
				document.frmFotos.submit();
				return true;
			}
		}
		return false;
	}
}

