/**
 * Objeto que inicializa todo lo relativo al portal como la carga de utilidades,
 * imagenes adjuntas, enlaces externos, tooltip, etc.
 */
var portal = {

	/**
	 * Inicializa las funcionalidades de apariencia de portal
	 *
	 * @constructor
	 */
	inicializar: function(){
		portal.cargarUtilidades();
		portal.activarBuscadorGeneral();
		portal.imgAdjuntas();
		portal.externalLinks();
		portal.cargarBookmark();
		portal.cargarBotonesFuente();
		portal.cargarTooltip();
		portal.ocultarLOPD();
	},
	
	/**
	 * Carga de las utilidades de servicios generales que solo estan disponibles con Javascript activado
	 */
	cargarBotonesFuente: function(){
		$("#utilidades li").last().after('<li id="fuenteoriginal"><a href="#"><img src="' + contextoPortal + 'pages/img/es/icono/fuenteRestablecer.gif" alt="' + texto.fuenteRestablecer + '" /> </a></li>');
		$("#utilidades li").last().after('<li id="fuentemenos"><a href="#"><img src="' + contextoPortal + 'pages/img/es/icono/fuenteMenos.gif" alt="' + texto.fuenteReducir + '" /> </a></li>');
		$("#utilidades li").last().after('<li class="ultimo" id="fuentemas"><a href="#"><img src="' + contextoPortal + 'pages/img/es/icono/fuenteMas.gif" alt="' + texto.fuenteAumentar + '" /> </a></li>');
		
		// Scripts para la utilidad de aumento y reduccion del tamaņo de letra.
		$(document).ready(function(){
			// Reiniciar el tamaņo de la fuente
			var tamOriginal = $('html').css('font-size');
			var tamActual = tamOriginal;
			$(".reiFuente").click(function(){
				$('html').css('font-size', tamOriginal);
			});
			// Incrementar el tamaņo de la fuente
			$("#fuentemas").click(function(){
					var tamActualNum = parseFloat(tamActual, 10);
					var nuevaFuente = tamActualNum*1.1;
					if (parseFloat(nuevaFuente, 10)<23) {
						$('html').css('font-size', nuevaFuente);
						tamActual = nuevaFuente;
					}
				return false;
			});
			// Disminuir el tamaņo de la fuente
			$("#fuentemenos").click(function(){
					var tamActualNum = parseFloat(tamActual, 10);
					var nuevaFuente = tamActualNum*0.9;
					if (parseFloat(nuevaFuente, 10)>11) {
						$('html').css('font-size', nuevaFuente);
						tamActual = nuevaFuente;
					}
				return false;
			});
			$("#fuenteoriginal").click(function(){
				$('html').css('font-size', tamOriginal);
				tamActual = tamOriginal
			});
		});
	},
	
	/**
	 * Carga de las utilidades de servicios generales que solo estan disponibles con Javascript activado
	 */
	cargarUtilidades: function(){

		//Generar enlace para volver a la pagina anterior
		$("#atajo ul li").last().not('#atajoVolver').before('<li id="atajoVolver"><a href="#volver">' + texto.volver + '</a></li>');
		$("#atajoVolver a").click(function() { portal.volver(); return false; });

		/*
		if ($("#barraUtilidadesVolver")) {
			$("#atajoVolver").css("display", "inline");
			$("#barraUtilidadesVolver").attr("href", "#volver");
			$("#barraUtilidadesVolver").click(function() { portal.volver(); return false; });
		}
		*/
	
		//Generar enlace para imprimir pagina
		var rutaImagenImprimir = contextoPortal + 'pages/img/' + codigoIdioma + '/icono/imprimir.gif'; 
		$("#utilidades li").eq(2).after('<li id="servicioImprimir"><a href="#imprimir" id="barraUtilidadesImprimir">'+ texto.imprimir + '</a></li>');
		$("#servicioImprimir a").click(function() { portal.imprimir(); return false; });
	},
	
	/**
	 * Activacion de las validaciones del buscador general 
	 *
	 * @return Devuelve si se puede lanzar el buscador general o no en funcion de los parametros de entrada 
	 */
	activarBuscadorGeneral: function() {
		if ($("#buscadorGeneralForm")) {
			$("#buscadorGeneralForm").submit(function(){
				return portal.validarBuscadorGeneral(this);
			});
		}
		if ($("#textobusqueda")) {
			this.textoBuscador = $("#textobusqueda").val();
			$("#textobusqueda").focus(function(){				
				portal.limpiar(this);
			});
		}			
	},
	
	/**
	 * Modifica el class y el alt de la imagenes que tiene imagen adjunta, advirtiendo que la aplicacion se abrira en ventana nueva
	 * Modifica los eventos click y keypress de las imagenes con adjunto
	 */
	imgAdjuntas: function(){
		$("img.adjunto_si").each(function(){
			$(this).bind('click keypress', function (){portal.verImagen(this)});
			$(this).addClass("cursorAdjunto");  
			if (typeof texto.altPopupImagen != 'undefined') {
				if (($(this).attr('alt') != '') && ($(this).attr('alt').indexOf(texto.altPopupImagen) == -1)) {
			    	$(this).attr('alt', ($(this).attr('alt') + " " + texto.altPopupImagen));
			    } else {
			      	$(this).attr('alt',texto.altPopupImagen);
			    }
			    $(this).attr("title", $(this).attr('alt'));
			}
		});	
	},
		
	/**
	 * Recorre todos los enlaces del documento (etiquetas <a> y <area> incluyendo un target="_blank" si rel="external" (<a>) o class="external" (<area>)
	 */
	externalLinks: function(){
		
		//Etiquetas <a>
		$("a[href][rel$='external']").each(function(){
			$(this).attr("target", "_blank");				
			if ($(this).attr("title") == "") {
				$(this).attr("title", texto.titleVentanaNueva);
			} else {
				$(this).attr("title", $(this).attr("title") + " (" + texto.titleVentanaNueva + ")");
			}
		});

		//Etiquetas <area>
		$("area[href][class$='external']").each(function(){
			$(this).attr("target", "_blank");
			if ($(this).attr("title") == ""){
				$(this).attr("title", texto.titleVentanaNueva);
			} else {
				$(this).attr("title", $(this).attr("title") + " (" + texto.titleVentanaNueva + ")");
			}
		});
	},

	/**
	 * Imprimir pagina
	 */
	imprimir: function() {
		window.print();
	},
	
	/**
	 * Enlace a la pagina anterior
	 */
	volver: function() {
		if (portal.obtenerAction().indexOf("cambiarIdioma.do") <= 0 ) {
			history.go(-1);
		}
	},
	
	/**
	 * Obtiene el nombre de la acccion que se esta ejecutando
	 *
	 * @return Devuelve el nombre de la accion
	 */
	obtenerAction: function() {
		var retorno = window.location.href;	
		var pos = retorno.indexOf("?"); 
		if (pos > 0) {
	  		retorno = retorno.substring(0,pos);
		}
		return retorno;
	},

	/**
	 * Comprueba que el buscador general no busque por el texto por defecto en los idiomas existentes
	 *
	 * @return Devuelve si el texto de busqueda es valido
	 */
	validarBuscadorGeneral: function(formulario) { 
		if (validateBuscadorGeneralForm(formulario)) {
			if (formulario.textoBusqueda.value == this.textoBuscador) {
				alert(texto.validacionBuscadorGeneral);
				portal.limpiar(formulario.textoBusqueda);
				formulario.textoBusqueda.focus();
				return false;
			}else {
				return true;
			}
		} else {
			return false;
		}	
	},
	
	/**
	 * Limpia el valor del objeto
	 */
	limpiar: function(obj) {
		obj.value = "";
	},
	
	/**
	 * Accion para ver imagen en popup
	 */
	verImagen: function(img) {
		if (typeof(imagen) != 'undefined') {
			imagen.ampliarAdjunta(img);
		}
	},
	
	/**
	 * Accion para cargar el plugin de bookmarks para redes sociales
	 */
	cargarBookmark: function() {
		$('#expandedBookmark').bookmark({
    		sites: ['facebook', 'google']
    		/*
    		Descomentar si se quiere incluir en enviar pagina como bookmark.
    		Hay que definir las variable asuntoEmail y bodyEmail con los textos apropiados.
    		addEmail: true,
    		emailSubject: asuntoEmail,  
			emailBody: bodyEmail + '\n{t} ({u})'
			*/
    	});
    	/*
   		Descomentar si se quiere incluir en enviar pagina como bookmark
   		$("a[id$='enlaceEmailTo']").hide();
    	*/
	},
	
	/**
	 * Accion para cargar el plugin de tooltips
	 */	
	cargarTooltip: function() {
		$("[title]").each(function(){
			if ($(this).attr("title") != '') {
				$(this).tooltip();
				$(this).removeAttr("title");
				$(this).removeAttr("alt");
			}
		});
		$("[alt]").each(function(){
			if ($(this).attr("alt") != '') {
				$(this).tooltip();
				$(this).removeAttr("alt");
				$(this).removeAttr("title");
			}
		});
	},
	
	/**
	 * Accion para mostrar/ocultar la capa de informacion de la LOPD
	 */
	ocultarLOPD: function() {
		 $("#enlaceLOPD").click(function() {
		 	var bOk = true;
			if($("#LOPD").is(":visible")){
				bOk = false;
			}
			$("#LOPD").slideToggle();
			return bOk;
		 });
	}
	
}
