/* mostrar_ocultar(div_id):
		 Torna visible un elemento (código HTML entre etiquetas DIV) que está oculto, y viceversa. */
function mostrar_ocultar(div_id)
{
	vista = document.getElementById(div_id).style.display;
	if(vista == 'none')
		vista='block';
	else
		vista='none';
	document.getElementById(div_id).style.display = vista;
}
/* validarTextInput:
		 entrada: 	nombre del campo de entrada de texto (formulario.entrada).
		 requerida: determina si el campo tiene que diligenciarse o puede dejarse vacío (true/false).
		 opcion:		determina el formato con el que debe ser validada la entrada
								(null->sin formato especial, "num"->numérico, "email"->dirección de e-mail). */
function validarTextInput (entrada, requerida, opcion, error_requerida, error_opcion)
{
	if(requerida)
	{
		if(entrada.value == "")
		{
			alert(error_requerida);
			entrada.focus();
			return(false);
		}
	}
	if(entrada.value != "")
	{
		switch(opcion)
		{
			case "num":
				expReg = /^[0-9][0-9]*$/;
				if(!expReg.test(entrada.value))
				{
					alert(error_opcion);
					entrada.focus();
					return(false);
				}
				break;
			case "email":
				expReg1 = /^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/;
				expReg2 = /^.*@[^_]*$/;
				if(!expReg1.test(entrada.value) || !expReg2.test(entrada.value))
				{
					alert(error_opcion);
					entrada.focus();
					return(false);
				}
				break;
		}
	}
	return(true);
}
/* validarSelect:
		 Valida que tenga que elegirse una de las opciones del menú desplegable.
		 entrada: nombre del menu desplegable (formulario.entrada). */
function validarSelect (entrada, error)
{
	if(entrada.value == "")
	{
		alert(error);
		entrada.focus();
		return(false);
	}
	return(true);
}

/* validarEntradasIdiomas:
		 Valida que no deje los campos de idiomas incompletos, por ejemplo si el usuario llena la
		 descripción de una categoría en Castellano y no en Inglés, esta función llena el campo de
		 Inglés con lo escrito en Castellano o viceversa.
		 f: 				formulario a validar.
		 campo: 		nombre de los campos que se quieren 'autocompletar'.
		 requerido: determina si el campo tiene que diligenciarse o puede dejarse vacío (true/false);
								si el campo no es requerido pero el usuario digitó la descripción en un idioma, aún
								así la función completa los demás campos de idiomas.
		 error: 		error que se muestra cuando los campos de idiomas son requeridos, si el parámetro
								anterior es false, entonces este puede ser nulo. */
function validarEntradasIdiomas (f, campo, requerido, error)
{
	// En las siguientes líneas se validan los nombres de los tipos de atractivos.
	var i;
	var muestra = -1;  // Almacena el subíndice del campo que tiene el texto que se va a copiar en los demás.
	// Se recorren todos los elementos del formulario, desde el primero hasta el último.
	for(i=0; i<f.elements.length && muestra == -1; i++)
		if(f.elements[i].name.indexOf(campo) == 0 && f.elements[i].value != '')  // Entra en la decisión si el nombre de un elemento contiene la subcadena 'campo' y si el valor de este elemento no es vacío.
			muestra = i;  // Este es el que se va a copiar en los demás.
	if(muestra == -1)
	{
		if(requerido)
		{
			alert(error);
			return(false);
		}
	}
	else
		for(i=0; i<f.elements.length; i++)  // En este ciclo se buscan los campos del nombre de la categoría que estén vacíos y se llenan con el que se encontró arriba.
			if(f.elements[i].name.indexOf(campo) == 0 && f.elements[i].value == '')  // Entra en la decisión si el nombre de un elemento contiene la subcadena 'campo' y si el valor de este elemento es vacío.
				f.elements[i].value = f.elements[muestra].value;
	return(true);
}