﻿﻿﻿/*
 * Libreria global de funciones javascript para Diario PÃÂºblico. Incluye
 * - envioAmigo
 * - aumento de fuente
 * - funciones auxiliares
 * 
 * autor: Fco. Javier AntÃºnez Ruiz, fjantunez@isotrol.com
 * autor: Miguel J. JimÃ©nez, mjjimenez@isotrol.com
 * 
 * */

/**************************************************************************************************************/

function creaPieBloq () 
{
	var pieBloq = document.createElement('div');
	pieBloq.setAttribute('class', 'pie_bloq');
	pieBloq.className = 'pie_bloq';
	return pieBloq;
}

/**
 * Dice si una direcciÃ³n de correo-e estÃ¡ bien o mal formada
 */
function comprobarEmail(email)
{
	var er_email = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return er_email.test(email);
}

function esEdicion()
{
	return false;
} 

var objFuenteLetras = new fuenteLetras();
var	original = 0.8;
var	incremento = 0;

function fuenteLetras () 
{}


/* FunciÃ³n que aumenta la fuente de la letra en todo el contenedor */
fuenteLetras.prototype.aumentarFuente = function () {
	incremento+=.25;
	var tamano = original + incremento;
	document.getElementById("zonaAmpliarTexto1").style.fontSize = tamano + "em";
	if(document.getElementById("zonaAmpliarTexto2"))
	{
		document.getElementById("zonaAmpliarTexto2").style.fontSize = tamano + "em";
	}
}

/* FunciÃ³n que reduce la fuente de la letra en todo el contenedor */
fuenteLetras.prototype.reducirFuente = function ()
{
	incremento-=.25;
	var tamano = original + incremento;
	document.getElementById("zonaAmpliarTexto1").style.fontSize = tamano + "em";
	if(document.getElementById("zonaAmpliarTexto2"))
	{
		document.getElementById("zonaAmpliarTexto2").style.fontSize = tamano + "em";
	}
}


/********************************************** ENVIO AMIGO ***********************************************/

var objEnvioAmigo = new envioAmigo();

function envioAmigo () {}

/*
 * FunciÃ³n que cierra la capa de envio amigo. Recibe dos parÃ¡metros
 * urlCaptcha, la url de la que obtener el nuevo captcha id, el id de la imagen
 * a recargar
 */
envioAmigo.prototype.closeEnvioAmigo = function (urlCaptcha, id)
{
	var bloqueo = document.getElementById('capaBloqueo');
	var t = bloqueo.parentNode;
	t.removeChild(bloqueo);
	reemplazarCaptcha(urlCaptcha, id);
	var envioAmigo = document.getElementById('contenedorEnvioAmigo');
	var padre = envioAmigo.parentNode;
	padre.removeChild(envioAmigo);
}

envioAmigo.prototype.comprobarFormulario = function()
{
	// Comprobamos que los campos obligatorios estÃ©n rellenos
	
	var vDestino = trim(document.getElementById("destino").value);
	var vTuCorreo = document.getElementById("tuCorreo").value;
	var vInpCaptchaEA = document.getElementById("inpCaptchaEA").value;
	
	if (vDestino == "" || vTuCorreo == "")
	{
		objMensajeAviso.creaAviso('utilidades', 'Debe rellenar los campos obligatorios.', true);
		return false
	}
	if (vInpCaptchaEA == "")
	{
		objMensajeAviso.creaAviso('utilidades', 'Debe introducir el código que aparece para poder mandar la noticia.', true);
		return false
	}
	if (comprobarEmail(vTuCorreo) == false)
	{
		objMensajeAviso.creaAviso('utilidades', 'Su dirección de correo es incorrecta.', true);
		return false
	}
	
	vDestino = vDestino.replace(/\s*\;\s*/g, ";"); // Sustituimos la expresion "; " por ";"
	vDestino = vDestino.replace(/^\;+|\;+$/, "") // Quitamos los ; del principio y del final
	a_vDestino = vDestino.split(";");
	
	for (var i=0; i<a_vDestino.length; i++)
	{
		if (comprobarEmail(a_vDestino[i]) == false)
		{
			objMensajeAviso.creaAviso('utilidades', 'La dirección de destino \'' + a_vDestino[i] + '\' es incorrecta.', true);
			return false
		}
	}
	
	return true; // Si llegamos hasta aquÃ­ es que todo es correcto
}

/*
 * FunciÃ³n que crea la capa para el formulario de envio amigo. Recibe como
 * parÃ¡metros: logado, con valores true y false segÃºn el usuario estÃ¡ logado
 * o no texto1, el texto de titulo de la capa texto2, el texto para la etiqueta
 * de 'direcciones de destino' texto3, el texto para la etiqueta de 'asunto'
 * texto4, el texto para la etiqueta de 'tu direcciÃ³n de correo' texto5, el
 * texto para la etiqueta de 'tu nombre' texto6, el texto para la etiqueta de
 * 'comentario' texto7, el texto para las normas de uso texto8, el texto para la
 * etiqueta del checkbox 'Enviar tambiÃ©n a tu correo ' imgEnviar, la ruta de la
 * imagen que es el botÃ³n de enviar idNoticia, la url de la noticia ruta, la
 * secciÃ³n del articulo titulo, el titulo de la noticia url, la url a la que se
 * envia el formulario basesEstatico, la ruta del directorio estatico
 * urlCaptcha, la ruta de la que obtener el captcha
 */

envioAmigo.prototype.creaEnviaAmigo = function ( idNoticia, ruta, titulo, pagina, bases_estatico, url, urlCaptcha,
	texto1, texto2, texto3, texto4, texto5, texto6, texto7, texto8, imgEnviar)
{	
	/* textos y parametros temporales */
	texto1 = 'Enviar la página por correo a:';
	texto2 = 'Direcciones de destino (*)';
	texto3 = 'Asunto';
	texto4 = 'Su dirección de correo (*)';
	texto5 = 'Su nombre';	
	texto6 = 'Comentario';
	texto7 = "Escriba las direcciones de correo a las que quieres enviar la información separadas por punto y coma (;).<br><br>Los campos marcados con (*) son obligatorios";
	texto8 = 'Enviar también a su correo';
	url = 'impe/enviaAmigo';
	bases_estatico = '/publico/';
	imgEnviar = '/css/cssimg/botonEnvioAmigo.gif';

	var capaBloqueo = document.createElement('div');
	var body = document.getElementsByTagName('body')[0];
	capaBloqueo.id = "capaBloqueo";
	capaBloqueo.className = "estiloBloqueo";
	capaBloqueo.style.height = body.offsetHeight + "px";
	
	/* variable con el nombre del servidor. Puede ser necesario su cambio */
	var servidor = '/publico/';
	

	var pieBloq1 = creaPieBloq();
	var pieBloq2 = creaPieBloq();
	var pieBloq3 = creaPieBloq();
	var pieBloq4 = creaPieBloq();
	
	var inputCaptcha = document.createElement('input');
	var imagenCaptcha = document.createElement('img');
	var recargaCaptcha = document.createElement('input');
	
	imagenCaptcha.src= urlCaptcha;
	imagenCaptcha.id="captchaEA";
	inputCaptcha.className = "inputEnvioAmigoT2";
	inputCaptcha.id = "inpCaptchaEA";
	inputCaptcha.style.width = "90px";
	inputCaptcha.style.verticalAlign = "top";
	inputCaptcha.style.marginLeft = "5px";
	inputCaptcha.setAttribute("name", "codigo");
	recargaCaptcha.className = "botonRecargarT2";
	recargaCaptcha.value = "Recargar";
	recargaCaptcha.onclick = function () 
	{
		reemplazarCaptcha(urlCaptcha, imagenCaptcha.id)
	}
	
	var rutaVar = document.createElement('input');
	rutaVar.setAttribute('type', 'hidden');
	rutaVar.setAttribute('name', 'seccion');
	rutaVar.setAttribute('id', 'seccion');
	rutaVar.setAttribute('value', ruta);
	
	var idNot = document.createElement('input');
	idNot.setAttribute('type', 'hidden');
	idNot.setAttribute('name', 'idNoticia');
	idNot.setAttribute('id', 'idNoticia');
	idNot.setAttribute('value', idNoticia);
	
	var pag = document.createElement('input');
	pag.setAttribute('type', 'hidden');
	pag.setAttribute('name', 'ruta');
	pag.setAttribute('id', 'ruta');
	pag.setAttribute('value', pagina);
	
	var tituloNoticia = document.createElement('input');
	tituloNoticia.setAttribute('type', 'hidden');
	tituloNoticia.setAttribute('name', 'titulo');
	tituloNoticia.setAttribute('id', 'titulo');
	tituloNoticia.setAttribute('value', titulo);
	
	var formatoMail = document.createElement('input');
	formatoMail.setAttribute('type', 'hidden');
	formatoMail.setAttribute('name', 'formato');
	formatoMail.setAttribute('value', "html");
	
	var contenedorEnvioAmigo = document.createElement('div');
	contenedorEnvioAmigo.className = 'contenedorEnvioAmigo';
	contenedorEnvioAmigo.id = 'contenedorEnvioAmigo';
	
	var subcontenedorEnvioAmigo = document.createElement('div');
	subcontenedorEnvioAmigo.className = 'subcontenedorEnvioAmigo';

	var cerrarEnvioAmigo = document.createElement('div');
	cerrarEnvioAmigo.className = 'cerrarEnvioAmigo';
	
	var imgCerrar = document.createElement('img');
	imgCerrar.alt = "cerrar";
	imgCerrar.className = "puntero";
	imgCerrar.src = bases_estatico + '/css/cssimg/xBlancaSobreFondoGris.gif';
	imgCerrar.onclick = function () {objEnvioAmigo.closeEnvioAmigo(urlCaptcha,'captchaComentario');}; // Cerramos y recargamos el captcha de los comentarios
	cerrarEnvioAmigo.appendChild(imgCerrar);
	
	var formEnvioAmigo = document.createElement('form');
	formEnvioAmigo.className = "formEnvioAmigo";
	formEnvioAmigo.id = 'formEnvioAmigo';
	formEnvioAmigo.setAttribute('method', 'get');
	formEnvioAmigo.setAttribute('action', bases_estatico+ url);
	
	var contenidoFormulario = document.createElement('div');
	contenidoFormulario.className = 'contenidoFormulario';
	
	var tituloEnvioAmigo = document.createElement('div');
	tituloEnvioAmigo.className = 'tituloEnvioAmigo';
	tituloEnvioAmigo.innerHTML = texto1;
	
	
/* Elementos de la primera linea */
	var l1b1 = document.createElement('div');
	l1b1.className = 'envioAmigoIzq';
	
	var label1 = document.createElement('label');
	label1.className = 'labelEnvioAmigo';
	label1.setAttribute('for', 'destino');
	label1.innerHTML = texto2;
	var input1 = document.createElement('input');
	input1.className = 'inputEnvioAmigo';
	input1.setAttribute('type', 'text');
	input1.setAttribute('name', 'destino');
	input1.setAttribute('id', 'destino');
	
	l1b1.appendChild(label1);
	l1b1.appendChild(input1);	
	
	var l1b2 = document.createElement('div');
	l1b2.className = 'envioAmigoDrc';
	
	var label2 = document.createElement('label');
	label2.className = 'labelEnvioAmigo';
	label2.setAttribute('for', 'asunto');
	label2.innerHTML = texto3;
	var input2 = document.createElement('input');
	input2.className = 'inputEnvioAmigo';
	input2.setAttribute('type', 'text');
	input2.setAttribute('name', 'asunto');
	input2.setAttribute('id', 'asunto');

	l1b2.appendChild(label2);
	l1b2.appendChild(input2);	

/* Elementos de la segunda linea */
	var l2b1 = document.createElement('div');
	l2b1.className = 'envioAmigoIzq';
	
	var label3 = document.createElement('label');
	label3.className = 'labelEnvioAmigo';
	label3.setAttribute('for', 'tuCorreo');
	label3.innerHTML = texto4;
	var input3 = document.createElement('input');
	input3.className = 'inputEnvioAmigo';
	input3.setAttribute('type', 'text');
	input3.setAttribute('name', 'tuCorreo');
	input3.setAttribute('id', 'tuCorreo');
	
	l2b1.appendChild(label3);
	l2b1.appendChild(input3);	
	
	var l2b2 = document.createElement('div');
	l2b2.className = 'envioAmigoDrc';
	
	var label4 = document.createElement('label');
	label4.className = 'labelEnvioAmigo';
	label4.setAttribute('for', 'tuNombre');
	label4.innerHTML = texto5;
	var input4 = document.createElement('input');
	input4.className = 'inputEnvioAmigo';
	input4.setAttribute('type', 'text');
	input4.setAttribute('name', 'tuNombre');
	input4.setAttribute('id', 'tuNombre');
	
	l2b2.appendChild(label4);
	l2b2.appendChild(input4);
	
/* Elementos de la tercera linea */	
	var l3b1 = document.createElement('div');
	l3b1.className = 'envioAmigoIzq';
	
	var label5 = document.createElement('label');
	label5.className = 'labelEnvioAmigo';
	label5.setAttribute('for', 'comentario');
	label5.innerHTML = texto6;
	
	var area = document.createElement('textarea');
	area.className = 'areaEnvioAmigo';
	area.setAttribute('name', 'comentario');
	area.setAttribute('id', 'comentarioEA');
	
	l3b1.appendChild(label5);
	l3b1.appendChild(area)

	
	var l3b2 = document.createElement('div');
	l3b2.className = 'envioAmigoDrc';
	
	var usoEnvioAmigo = document.createElement('div');
	usoEnvioAmigo.className = 'usoEnvioAmigo';
	usoEnvioAmigo.innerHTML = texto7;
	
	var bloqCheck = document.createElement('div');
	bloqCheck.className = 'bloqCheck';
	
	var input5 = document.createElement('input');
	input5.setAttribute('type', 'checkbox');
	input5.setAttribute('name', 'enviarAMi');
	input5.setAttribute('id', 'enviarAMi');
	
	var label6 = document.createElement('label');
	label6.className = 'labelEnvioAmigo';
	label6.setAttribute('for', 'enviarAMi');
	label6.innerHTML = texto8;
	
	bloqCheck.appendChild(input5);
	bloqCheck.appendChild(label6);
	
	var botonEnvioAmigo = document.createElement('img');
	botonEnvioAmigo.className = 'botonEnvioAmigo';
	botonEnvioAmigo.src = '/v2/css/img/botonEnvioAmigo.gif';	
	//botonEnvioAmigo.src = bases_estatico + imgEnviar;
	botonEnvioAmigo.onclick = function (e) {
		if (objEnvioAmigo.comprobarFormulario() == true)	
			objEnvioAmigo.envioCorreo(urlCaptcha, servidor + url + "?" + formEnvioAmigo.serialize());
	};
	
	l3b2.appendChild(usoEnvioAmigo);
	l3b2.appendChild(botonEnvioAmigo);	
	
	
	var l4b1 = document.createElement('div');
	l4b1.className ="envioAmigoIzq margen_sup5px";
	
	l4b1.appendChild(imagenCaptcha);
	l4b1.appendChild(inputCaptcha);
	
	var l4b2 = document.createElement('div');
	l4b2.className ="envioAmigoDrc margen_sup5px";
	
	l4b2.appendChild(recargaCaptcha);
	l4b2.appendChild(botonEnvioAmigo);
	l4b2.appendChild(bloqCheck);

	var br = document.createElement('br');

	
	
/* Reuno todos los elementos */
	contenidoFormulario.appendChild(tituloEnvioAmigo);
	contenidoFormulario.appendChild(l1b1);
	contenidoFormulario.appendChild(l1b2);	
	contenidoFormulario.appendChild(pieBloq1);
	contenidoFormulario.appendChild(l2b1);
	contenidoFormulario.appendChild(l2b2);	
	contenidoFormulario.appendChild(pieBloq2);
	contenidoFormulario.appendChild(l3b1);
	contenidoFormulario.appendChild(l3b2);	
	contenidoFormulario.appendChild(pieBloq3);
	contenidoFormulario.appendChild(l4b1);
	contenidoFormulario.appendChild(l4b2);	
	contenidoFormulario.appendChild(pieBloq4);
	contenidoFormulario.appendChild(idNot);
	contenidoFormulario.appendChild(rutaVar);
	contenidoFormulario.appendChild(pag);	
	contenidoFormulario.appendChild(tituloNoticia);	
	contenidoFormulario.appendChild(formatoMail);
	
	formEnvioAmigo.appendChild(contenidoFormulario);
	
	subcontenedorEnvioAmigo.appendChild(cerrarEnvioAmigo);
	subcontenedorEnvioAmigo.appendChild(formEnvioAmigo);
	
	body.appendChild(contenedorEnvioAmigo);	
	contenedorEnvioAmigo.appendChild(subcontenedorEnvioAmigo);	
	body.appendChild(capaBloqueo);
	
	
	/* cÃ¡lculo de la altura versiÃ³n IE */
	if(document.all)
	{
		var posY = (document.body.scrollTop || document.documentElement.scrollTop || 0) 
			+ Math.floor(document.documentElement.clientHeight / 2) - Math.floor(contenedorEnvioAmigo.offsetHeight / 2);
		var posX = Math.floor(document.body.clientWidth  / 2) - Math.floor(contenedorEnvioAmigo.offsetWidth / 2) 
			- (document.body.scrollLeft || document.documentElement.scrollLeft || 0);
		
	}
	/* cÃ¡lculo de la altura versiÃ³n Firefox */
	else
	{
		var posY = window.scrollY + Math.floor(window.innerHeight / 2) - Math.floor(contenedorEnvioAmigo.offsetHeight / 2);
		var posX = Math.floor(window.innerWidth / 2) - Math.floor(contenedorEnvioAmigo.offsetWidth / 2) - window.scrollX;
	}	
	
	posY = (posY < 0) ? 0 : posY;
	contenedorEnvioAmigo.style.top = posY + "px";	
	posX = (posX < 0) ? 0 : posX;		
	contenedorEnvioAmigo.style.left = posX + "px";
}

envioAmigo.prototype.envioCorreo = function (urlCaptcha, url, destinos, asunto, tucorreo, tunombre, comentario, enviarami , rutaVar, idNot, pag)
{
new Ajax.Request(url, {   
			/*
			 * parameters:
			 * '?destino='+destinos+'&asunto='+asunto+'&tuCorreo='+tucorreo+'&tuNombre='+tunombre+'&comentario='+comentario+'&enviarAMi='+enviarami+'&seccion='+rutaVar+'&idNoticia='+idNot+'&ruta='+pag ,
			 */
			method: 'get',   
			onSuccess: function(respuesta) 
				{     
					//objEnvioAmigo.closeEnvioAmigo(urlCaptcha, 'captchaComentario' );
					var cadena = respuesta.responseText.toString();
					cadena = trim(cadena);
					var inicio = cadena.indexOf("<error>");
					var fin = cadena.indexOf("</error>");					
					if (inicio != -1 && fin != -1)
					{											
						var mensajeError = cadena.substring (inicio + 7 , fin);
						objMensajeAviso.creaAviso('utilidades', respuesta.responseText, true);		
					}
					else
					{
						objMensajeAviso.creaAviso('utilidades', respuesta.responseText, false);					
					}
					reemplazarCaptcha(urlCaptcha, 'captchaEA');
				}, 
			onFailure: function(respuesta) 
				{     			
					objMensajeAviso.creaAviso('utilidades', respuesta.responseText, true);
					reemplazarCaptcha(urlCaptcha, 'captchaEA');	
				}
		});
}



/********************************************** MENSAJE AVISO ***********************************************/

var objMensajeAviso = new mensajeAviso();

function mensajeAviso () {}

/* FunciÃ³n que cierra la capa de mensajeAviso */
mensajeAviso.prototype.closeMensajeAviso = function ()
{
	
	var bloqueo = document.getElementById('capaBloqueo');
	var padre = bloqueo.parentNode;
	padre.removeChild(bloqueo);
	
	var mensajeAviso = document.getElementById('contenedorMensajeAviso');
	padre = mensajeAviso.parentNode;
	padre.removeChild(mensajeAviso);
}

/*
 * FunciÃ³n que crea la ventana de un aviso. Recibe como parÃ¡metros
 * idContenedor, el id de la capa que es referencia para mostrar el mensaje
 * texto, el texto del mensaje tipoAviso, un boolean. Con true significa que el
 * aviso es un error.
 */

mensajeAviso.prototype.creaAviso = function (idContenedor, texto, tipoAviso)
{
	var	bases_estatico = '/publico/';

	var capaBloqueo = document.createElement('div');
	var body = document.getElementsByTagName('body')[0];
	capaBloqueo.id = "capaBloqueo";
	capaBloqueo.className = "estiloBloqueo";
	capaBloqueo.style.height = body.offsetHeight + "px";


	var contenedorMensajeAviso = document.createElement('div');
	contenedorMensajeAviso.className = 'contenedorMensajeAviso';
	contenedorMensajeAviso.id = 'contenedorMensajeAviso';

	var subcontenedorMensajeAviso = document.createElement('div');
	if(tipoAviso == true)
	{
		subcontenedorMensajeAviso.className = 'subcontenedorMensajeAviso';
	}
	else
	{
		subcontenedorMensajeAviso.className = 'subcontenedorMensajeAviso2';
	}
	contenedorMensajeAviso.appendChild(subcontenedorMensajeAviso);

	var xBlancaSobreFondoGris = document.createElement('div');
	xBlancaSobreFondoGris.className = 'xBlancaSobreFondoGris';
	subcontenedorMensajeAviso.appendChild(xBlancaSobreFondoGris);

	var imgCerrar = document.createElement('img');
	imgCerrar.alt = "cerrar";
	imgCerrar.className = "puntero";
	imgCerrar.src = bases_estatico + '/css/cssimg/xBlancaSobreFondoGris.gif';
	imgCerrar.onclick = function () {objMensajeAviso.closeMensajeAviso(); };	
	xBlancaSobreFondoGris.appendChild(imgCerrar);

	var contenidoMensajeAviso = document.createElement('div');
	contenidoMensajeAviso.className = 'contenidoMensajeAviso';
	subcontenedorMensajeAviso.appendChild(contenidoMensajeAviso);

	var tituloContenidoMensajeAviso = document.createElement('div');
	tituloContenidoMensajeAviso.className = 'tituloContenidoMensajeAviso';
	if(tipoAviso == true)
	{
		tituloContenidoMensajeAviso.innerHTML = 'Error';
	}
	contenidoMensajeAviso.appendChild(tituloContenidoMensajeAviso);

	var subtituloContenidoMensajeAviso = document.createElement('div');
	subtituloContenidoMensajeAviso.className = 'subtituloContenidoMensajeAviso';
	contenidoMensajeAviso.appendChild(subtituloContenidoMensajeAviso);

	var mensajeAviso = document.createElement('div');
	mensajeAviso.className = 'mensajeAviso';
	mensajeAviso.innerHTML = texto;
	contenidoMensajeAviso.appendChild(mensajeAviso);
	
	// document.getElementById(idContenedor).appendChild(contenedorMensajeAviso);
	
	
	body.appendChild(capaBloqueo);
		body.appendChild(contenedorMensajeAviso);
	
	/* cÃ¡lculo de la altura versiÃ³n IE */
	if(document.all)
	{
		var posY = (document.body.scrollTop || document.documentElement.scrollTop || 0) 
			+ Math.floor(document.documentElement.clientHeight / 2) - Math.floor(contenedorMensajeAviso.offsetHeight / 2);
		var posX = Math.floor(document.body.clientWidth  / 2) - Math.floor(contenedorMensajeAviso.offsetWidth / 2) 
			- (document.body.scrollLeft || document.documentElement.scrollLeft || 0);
		
	}
	/* cÃ¡lculo de la altura versiÃ³n Firefox */
	else
	{
		var posY = window.scrollY + Math.floor(window.innerHeight / 2) - Math.floor(contenedorMensajeAviso.offsetHeight / 2);
		var posX = Math.floor(window.innerWidth / 2) - Math.floor(contenedorMensajeAviso.offsetWidth / 2) - window.scrollX;
	}	
		
	posY = (posY < 0) ? 0 : posY;
	contenedorMensajeAviso.style.top = posY + "px";	
	posX = (posX < 0) ? 0 : posX;		
	contenedorMensajeAviso.style.left = posX + "px";
}









/*********************** funciones auxiliares ******************************/

function trim (cadena) {
	var tmp = ltrim(cadena);
	tmp = rtrim (tmp);
	return tmp;
}

function ltrim (cadena) {
	var tmp = cadena.replace(/^\s+/, "");
	return tmp;
}

function reemplazarCaptcha(rutaCaptcha, id)
{
// var contenedor = $('contenedorCaptcha');
	var imagen = document.getElementById(id);
	var nuevaImagen = new Image();
	var rnd = new Date().getTime();
	nuevaImagen.src = rutaCaptcha + "?" + rnd;
	imagen.src = nuevaImagen.src;
	return true;
}

function rtrim (cadena) {
	var tmp = cadena.replace(/\s+$/, "");
	return tmp;
}
function mostrarLoMas(capa, objA)
{
	var c = capa;
	var capa = "loMas_" + capa;
	var objUl = document.getElementById(capa);
	var capaPadre = objUl.parentNode;
	
	var cUl = capaPadre.getElementsByTagName("ul");
	for (var i=0; i<cUl.length; i++)
	{
		cUl[i].style.display="none";
	}
	objUl.removeAttribute("style");
	var listaSolapas = document.getElementById("listaSolapas");
	
	var cA = listaSolapas.getElementsByTagName("a");
	for (var i=0; i<cA.length; i++)
	{
		cA[i].className="";
	}
	
	/*
	 * este parche cambia la visibilidad de los links en función del criterio
	 * elegido
	 */
	
	var aLinks = document.getElementById("linksTitulares").getElementsByTagName("a");
	
	for(var i=0; i<aLinks.length; i++) {
		aLinks[i].style.display = "none";
	}
	
	switch(c) {
		case "leido": document.getElementById("linkTitularesLeidos").style.display = "";
			break;
		case "enviado": document.getElementById("linkTitularesEnviados").style.display = "";
			break;
		case "comentado": document.getElementById("linkTitularesComentados").style.display = "";
			break;
		case "valorado": document.getElementById("linkTitularesValorados").style.display = "";
			break;
	}

	objA.className = "actual";
}


/********************************************** ÃLTIMA HORA **********************************************/

function avanzaUltimaHora(direccion)
{
	if (typeof idIntervaloUltimaHora != "undefined")              
		clearInterval(idIntervaloUltimaHora);
    if (direccion != "+1" && direccion != "-1") direccion = "+1";
    // Vemos quÃ© noticia se estÃ¡ mostrando
    var objSpan = document.getElementById("ultimaHora");
    var cStrong = objSpan.getElementsByTagName("strong");
    for (var i=0; i<cStrong.length; i=i+2)
    {
		if (cStrong[i].style.display == "") {
			break;var er_email = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		}
    }
    
    var prefijo = "ultima_hora_titulo_";
    var textoId = cStrong[i].getAttribute("id");
    var index = textoId.substring(prefijo.length, textoId.length - 1);

    var index_sig = ""; // Almacena el Ã­ndice de la siguiente noticia a mostrar
    switch(direccion)
    {
        case "+1":     // Si existe la siguiente mostramos la siguiente y si no volvemos a la primera
	        if (document.getElementById("ultimaHora_titulo_" + (parseInt(index) + 1)) != null)
	            index_sig = parseInt(index) + 1;
	        else
	            index_sig = 0;
	        break;
	   	case "-1":     // Si existe la siguiente mostramos la siguiente y si no volvemos a la Ãltima
	        if (document.getElementById("ultimaHora_titulo_" + (parseInt(index) - 1)) != null)
	            index_sig = parseInt(index) - 1;
	        else
	            index_sig = (cStrong.length / 2) - 1;
	        break;
    }

    cStrong[2 * parseInt(index)].style.display = "none";
    cStrong[2 * parseInt(index) + 1].style.display = "none";
    cStrong[2 * parseInt(index_sig)].style.display = "";
    cStrong[2 * parseInt(index_sig) + 1].style.display = "";
    idIntervaloUltimaHora = setInterval(function(){avanzaUltimaHora(direccion);}, 5000);
}
       
/** ******************************** TITULARES ********************************* */
function getPaginaTitulares(url, pag, per)
{
	var contenedor = document.getElementById('contenedor_titulares');
	
	new Ajax.Request(url, {   
			parameters: '?pag='+pag+'&periodo='+per,
			method: 'get',   
			onSuccess: function(respuesta) 
				{     					
					 contenedor.innerHTML = respuesta.responseText;
				}, 
			onFailure: function(respuesta) 
				{     				
					// alert("OcurriÃ³ un error determinado");
				} 		
		});
}

/********************************************** BUSCADOR ***********************************************/

function buscadorPag () {}

var objBuscadorPag = new buscadorPag();

/*
 * FunciÃ³n que devuelve una pÃ¡gina de resultados del buscador
 */
buscadorPag.prototype.getPagina = function (url, parametros)
{
	var contenedor = document.getElementById('contenedorResultadosBuscador');
	
	new Ajax.Request(url, {   
			parameters: '?'+parametros,
			method: 'get',   
			onSuccess: function(respuesta) 
				{     
					contenedor.innerHTML = respuesta.responseText;
				}, 
			onFailure: function(respuesta) 
				{     				
					// alert("OcurriÃ³ un error indeterminado");
				} 		
		});
}

/* Comprueba que f1 sea menor o igual a f2 */
buscadorPag.prototype.compruebaFechas = function(f1,f2)
{
	// Si los campos estÃ¡n "disabled" no hacemos nada
	if (f1.disabled && f2.disabled)
		return true;

	var af1 = f1.value.split("/");
	var af2 = f2.value.split("/");
	
	var df1 = new Date(af1[2], af1[1], af1[0]);
	var df2 = new Date(af2[2], af2[1], af2[0]);
	
	if (df1.getTime() > df2.getTime())
	{
		alert("La fecha del campo 'Hasta' debe ser igual o superior a la fecha del campo 'Desde'.");
		return false;
	}
	
	return true;
}

/*
 * FunciÃ³n que oculta el buscador avanzado
 */
buscadorPag.prototype.ocultaAvanzada = function ()
{
 	var x = document.getElementById('bloqBuscadorAvanzado');
 	
 	document.getElementById("tipo").disabled = true;
 	document.getElementById("s").disabled = true;
 	document.getElementById("finicio").disabled = true;
	document.getElementById("ffin").disabled = true;
 	
 	if (x.style.display != 'none')
	{
 		x.style.display = 'none';
	}
}

/*
 * FunciÃ³n que muestra el buscador avanzado
 */
buscadorPag.prototype.muestraAvanzada = function ()
{
	var x = document.getElementById('bloqBuscadorAvanzado');
	
	document.getElementById("tipo").disabled = false;
	document.getElementById("s").disabled = false;
	document.getElementById("finicio").disabled = false;
	document.getElementById("ffin").disabled = false;
	
 	if (x.style.display == 'none')
	{
 		x.style.display = 'block';
	}
}

/********************************************** MINIGALERIAS ***********************************************/

function miniGalerias () {}

var objMiniGalerias = new miniGalerias();

/*
 * FunciÃ³n que actualiza la mini galeria. Recibe cuatro parÃ¡metros
 * idSolapaActivar, es el id de la solapa que indica la galeria que se estÃ¡
 * viendo. Si vale cadena vacia, no se realiza cambio de solapa activa url, la
 * url a la que se realiza la peticiÃ³n ajax pag, indica la pÃ¡gina que se
 * solicita en la peticiÃ³n. Sirve para facilitar la paginaciÃ³n. param, los
 * parÃ¡metros de la llamada resetSelect, parÃ¡metro booleano que nos indica si
 * debemos resetear el select de las secciones
 */
miniGalerias.prototype.cambiarMGActiva = function (idSolapaActivar, url, param, resetSelect)
{
	new Ajax.Request(url, {   
		parameters: param,
		method: 'get',   
		onSuccess: function(respuesta) 
			{     
				var contenedor = document.getElementById('loMas_galeria');
				contenedor.innerHTML = respuesta.responseText;
				if(idSolapaActivar != '')
				{
					objMiniGalerias.desactivarMG();		
					document.getElementById(idSolapaActivar).className = 'actual';									
				}
				if (resetSelect)
					document.getElementById("selectGaleria").value = "";
			}, 
		onFailure: function(respuesta) 
			{
			} 		
	});
}

/*
 * FunciÃ³n que desactiva las minigalerias
 */
miniGalerias.prototype.desactivarMG = function ()
{
	document.getElementById('gUltimas').className = '';
	document.getElementById('gRecomendadas').className = '';
	document.getElementById('gComentadas').className = '';
	document.getElementById('gVistas').className = '';
}


     
/********************************** ESPECIALES **********************************/

/*
 * FunciÃ³n que carga la secciÃ³n de Ãltima hora mediante ajax. Recibe tres
 * parÃ¡metros url, la direcciÃ³n url a la que se realiza la peticiÃ³n ajax
 * idContenedor, que es el id del contenedor donde se metera la informaciÃ³n
 * urlHora, la url de la que conseguir la hora de servidor en texto plano
 * numColumnas, si el elemento ocupa 2 Ã³ 3 columnas
 */
function getUltimaHora(url, idContenedor, urlHora, numColumnas)
{
	var contenedor = document.getElementById(idContenedor);
	
	new Ajax.Request(url, {   
			parameters: '?numColumnas=' +numColumnas, 
			method: 'get',   
			onSuccess: function(respuesta) 
				{     
					contenedor.innerHTML = respuesta.responseText;
					horaPlana(urlHora);			
				}, 
			onFailure: function(respuesta) 
				{     				
					// alert("OcurriÃ³ un error al cargar bloque Ãltima hora");
				} 		
		});
}

/*
 * FunciÃ³n que devuelve la hora en texto plano
 */
function horaPlana (url) {
	new Ajax.Request(url, {   
			method: 'get',   
			onSuccess: function(respuesta) 
				{     
					var padre = document.getElementById("horaUltimaHora");
					padre.innerHTML = respuesta.responseText;
			
				}, 
			onFailure: function(respuesta) 
				{     				
					// alert("OcurriÃ³ un error al cargar bloque Ãltima hora");
				} 		
		});
}


/*
 * FunciÃ³n para el cambio de solapas y de informaciÃ³n del especial "mÃ¡s
 * visto, mÃ¡s enviado". Recibe como parÃ¡metro el id de la solapa a marcar.
 * Como resultado marca la solapa e intercambia la capa que se estÃ¡ mostrando
 * por la relacionada con la solicitada.
 */
function cambiarSolapaEspecial(idMarcar)
{
	var listaSolapas = document.getElementById("solapasEspecial");
	var solapas = listaSolapas.getElementsByTagName("li");
	var numSolapas = solapas.length;
	var i=0;
	
	for (i=0; i< numSolapas; i++)
	{		
		
		
		var enlaceActual =  solapas[i].getElementsByTagName('a');
		var idActual = enlaceActual[0].id;
		
		enlaceActual[0].className = "";
		document.getElementById(idActual +"_1").style.display ="none;";
		if (enlaceActual[0].id == idMarcar)
		{
			enlaceActual[0].className = "actual";
			document.getElementById(idActual +"_1").style.display ="block;";
		}
	}	
}


/*
 * FunciÃ³n que carga la secciÃ³n de Gente ajax. Recibe dos parÃ¡metros url, la
 * direcciÃ³n url a la que se realiza la peticiÃ³n ajax idContenedor, que es el
 * id del contenedor donde se metera la informaciÃ³n imagenTop, la imagen que se
 * mostrarÃ¡ en la parte superior del especial paginacion, la pagina que se
 * solicita
 */ 
function getEspecialGente(url, idContenedor, pagina, imagenTop, paginacion)
{
	var numPagina = null;
	var contenedor = document.getElementById(idContenedor);
	if(paginacion == null || paginacion == 'undefined')
	{
		numPagina = 1;	
	}
	else
	{
		numPagina = paginacion;
	}
	new Ajax.Request(url, {   
			parameters: '?id='+pagina+'&imagenTop='+imagenTop+'&pag='+numPagina+'&bloque='+idContenedor, 
			method: 'get',   
			onSuccess: function(respuesta) 
				{     
					contenedor.innerHTML = respuesta.responseText;						
				}, 
			onFailure: function(respuesta) 
				{     				
					// alert("OcurriÃ³ un error al cargar bloque Gente");
				} 		
		});
}


/*
 * FunciÃ³n que carga la secciÃ³n de Lo mÃ¡s mÃ¡s enviado con ajax. Recibe cinco
 * parÃ¡metros url, la direcciÃ³n url a la que se realiza la peticiÃ³n ajax
 * idContenedor, que es el id del contenedor donde se meterÃ¡ la informaciÃ³n
 */ 
function getEspecialLoMas(url, idContenedor)
{
	var contenedor = document.getElementById(idContenedor);
	new Ajax.Request(url, {   
			parameters: '?bloque='+idContenedor, 
			method: 'get',   
			onSuccess: function(respuesta) 
				{     
					contenedor.innerHTML = respuesta.responseText;						
				}, 
			onFailure: function(respuesta) 
				{     				
					// alert("OcurriÃ³ un error al cargar bloque Lo mÃ¡s");
				} 		
		});
}


/**
 * Abre en una ventana la ampliaciÃ³n de la imagen de una noticia
 */
function abrirAmpliacion(url, titulo, autor, pie, alto, ancho)
{
	var imagen = new Image();
	var pieAncho = 0;
	var altoImagen = 0;
	var anchoImagen = 0;
	var ventanaAmpliacion = null;
	var docAmpliacion = null;
	
	imagen.onload = function()
	{
		altoImagen = imagen.height;
		anchoImagen = imagen.width;		
		
		if (trim(alto) != "")
			alto = parseInt(alto) + 15;
		else
			alto = altoImagen + 15;
			
		if (parseInt(alto) > 0 && trim(pie) != "")
			alto = parseInt(alto) + 80;
			
		if (trim(ancho) != "")
		{
			pieAncho = ancho;
			ancho = parseInt(ancho) + 30;
		}
		else
		{
			pieAncho = anchoImagen;
			ancho = anchoImagen + 30;
		}		
				
		ventanaAmpliacion = window.open('about:blank','', 'height=' + alto + ', width=' + ancho + ',resizable=1,scrollbars=1');
		docAmpliacion = ventanaAmpliacion.document;
		docAmpliacion.write("<html><head><title>PÚBLICO</title></head><body>");
		docAmpliacion.write("<div style=\"width: " + pieAncho + "px;\">");
		docAmpliacion.write("<img src=\"" + url + "\" alt=\"" + titulo + "\">");
		
		if (trim(autor) != "")
			autor = autor + " - ";
		
		docAmpliacion.write("<div style=\"background-color: #F3F3F3; padding: 2px; font-size: 11px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;\">" + autor + pie + "</div>");
		docAmpliacion.write("</div>");
		docAmpliacion.write("</body>");
		docAmpliacion.close();
		
	};
	
	imagen.src = url;
}

function vistaPreviaImpresion(urlVistaPrevia) {
	window.open(urlVistaPrevia,"VistaNoticiaImpresion","resizable=yes,titlebar=yes,scrollbars=yes");
	/*
	 * 3er param puede tener: width/height/top/left/scrollbars/resizable
	 * directories/location/menubar/status/titlebar/toolbar
	 */
}
/**
 * ******************************** INFOUSUARIO*********************************
 */

function InfoUsuario() {}

InfoUsuario.prototype.getHTML = function(url, id) {

	new Ajax.Request(url, {   

			method: 'get',

			onSuccess: function(respuesta) {

				var capa = $(id);

				if (capa) { 
					capa.innerHTML = respuesta.responseText.toString();
				}
				
				var cOpaca = $('opacaAutenticacion');
				if(!!cOpaca) {
					cOpaca.remove();
					$('lineaUsuario').appendChild(cOpaca);
					cOpaca.style.display = 'block';
				}

				var formLogin = $('frm_login');

				if (formLogin) {

					formLogin.onsubmit = function() {
						/*
						 * imposicion cadena nombre usuario no vacia:
						 */
					 	if (trim($('j_username').value) == "")
					 	{
					 		return false;
					 	}
					 	else
					 	{
					 		return true;
					 	}
					}
				}
				try {
					this.tratarFormularioComentarios();
				} catch(e) {
					// No hacemos NADA
				}
				
			}.bind(this),

			onFailure: function(respuesta) {
				objMensaje.creaMensaje(respuesta.responseText);
			}

	});
	
}

InfoUsuario.prototype.tratarFormularioComentarios = function() {

	if ($('autenticacion_nombre') == null) // El usuario no está autentificado

		$('email').parentNode.removeAttribute("style"); // Mostramos el correo
														// electrónico
	else // Usuario autenticado
	{
		/**
		 * esto en público no tiene ningún sentido: -provoca un bloqueo
		 * probablemente relacionado con la validación pues se intenta verificar
		 * sin comprobar que existe. -la entrada 'email' está como 'disabled'
		 * desde Freemarker, si el usuario está autenticado. -además, en la
		 * acción del lado servidor, se coge siempre el email del usuario (de
		 * BD), en caso de estar autenticado.
		 * 
		 * Lo ideal: no tocar la vista aqui. Manipular este problema desde
		 * Freemarker (directamente no poner el HTML del input 'email') y no
		 * validar el campo 'email' para usuarios autenticados al enviar el
		 * formulario, pues no existe.
		 */
		// $('email').parentNode.parentNode.removeChild($('email').parentNode);
		// // Eliminamos la capa que pide el correo electrónico

		// A continuación rellenamos el nombre de usuario

		$('nombre').value = $('autenticacion_nombre').innerHTML + " " + $('autenticacion_apellidos').innerHTML;
	}
}

objInfoUsuario = new InfoUsuario();

/******************************** FIN INFOUSUARIO **********************************/


/********************************** ARCHIVO **********************************/
function getPaginaArchivo(url, pag, fecha)
{
	var contenedor = document.getElementById('contenedor_archivo');
	
	new Ajax.Request(url, {   
			parameters: '?pag='+pag+fecha,
			method: 'get',   
			onSuccess: function(respuesta) 
				{     					
					 contenedor.innerHTML = respuesta.responseText;
					 contenedor.innerHTML.evalScripts();
				}, 
			onFailure: function(respuesta) 
				{     				
					// alert("OcurriÃ³ un error determinado");
				} 		
		});
}

/**
 * PERFIL USUARIO
 */

/**
 * invocada cuando el usuario pincha en 'Cambiar contraseña'. Muestra los campos
 * para cambiar su contrasena actual, y fija el valor del campo oculto
 * 'cambiar_contrasena' a 'true'
 */
function cambioContrasena() {
	var dContrasena = $('dContrasena');
	if(dContrasena.style['display']=="none") {
		// mostrar
		dContrasena.style['display'] = "";
		$('cambiar_contrasena').value='true';
		$('lCambiarContrasena').innerHTML='-No cambiar contrase&ntilde;a';
	} else {
		// ocultar
		dContrasena.style['display'] = "none";
		$('cambiar_contrasena').value='false';
		$('lCambiarContrasena').innerHTML='+Cambiar contrase&ntilde;a'
	}
}

function validarFormularioPerfil() {
	if($('identificador_').value=='')
		return false;
	if($('cambiar_contrasena').value=='true') {
		var contrasena_nueva = $('contrasena_nueva_').value;
		var contrasena_nueva_repetida = $('contrasena_nueva_repetida_').value;
		if( contrasena_nueva=='' 
			|| contrasena_nueva != contrasena_nueva_repetida)
			return false;
	}
	if($('nombre_').value=='')
		return false;
	if($('apellidos_').value=='')
		return false;
	if($('email_').value=='')
		return false;
	return true;
}

