/**
 * Accion cuando se selecciona una imagen en la navegacion
 */
function mostrarImagen(pos) {
	try {
		indiceImagenActual = pos;
		actualizaNavegacion();
	} catch (e) {
	}
}

/**
 * Accion de siguiente o anterior en la navegacion
 * 
 * @param pos
 *            Si es >0 se avanza, sino se retrocede
 */
function moverImagen(pos) {
	try {
		if (pos > 0) {
			indiceImagenActual++;
		} else {
			indiceImagenActual--;
		}
		indiceImagenActual %= numeroImagenes;
		if (indiceImagenActual < 0) {
			indiceImagenActual += numeroImagenes;
		}
		actualizaNavegacion();
	} catch (e) {
	}
}

/**
 * Se encarga de realizar las operaciones necesarias entre cada transicion de
 * imagenes
 */
function actualizaNavegacion() {
	actualizarIndicesPaginacion();
	marcarEnlace(indiceImagenActual);
	mostrarFoto(indiceImagenActual);
	ocultarNoVisibles();
	recargarElementos();
}

/**
 * Carga los elementos de estadisticas (nielsen y gAnalytics)
 */
function recargarElementos() {
	recargarNielsen();
	recargarGoogleAnalytics();
}

/**
 * Carga los elementos de estadisticas (gAnalytics)
 */
function recargarGoogleAnalytics() {
	pageTracker._trackPageview();
}

/**
 * Carga los elementos de estadisticas (nielsen)
 */
function recargarNielsen() {
	var _rsUA = navigator.appName + " " + navigator.appVersion;
	var _rsRUA = navigator.userAgent;
	var _rsWS = window.screen;
	var _rsBV = navigator.appVersion.substring(0, 1);
	var _rsNN = (_rsUA.indexOf('Netscape'));
	var _rsMC = (_rsUA.indexOf('Mac'));
	var _rsIE = (_rsUA.indexOf('MSIE'));
	var _rsOP = (_rsRUA.indexOf('Opera'));
	var _rsIEV = (parseInt(_rsUA.substr(_rsIE + 5)));
	var _rsRP = escape(document.referrer);
	var _rsSR;
	var _rsCD;
	var _rsLG;
	var _rsJE;
	var _rsCK;
	var _rsTZ;
	var _rsCT;
	var _rsHP;
	var _rsTL;
	var _rsSW;
	var _rsSH;
	var _rsFL;
	var _rsQT;
	var _rsRE;
	var _rsWM;
	var _rsJJ;
	var _rsAC;
	if (_rsMP == 0) {
		return;
	}
	_rsJE = (navigator.javaEnabled() == true) ? "y" : "n";
	if (_rsDT == 1) {
		_rsTL = escape(document.title);
	}
	if ((_rsIE > 0) || ((_rsNN != -1) && (_rsBV >= 5))) {
		_rsCK = (navigator.cookieEnabled == true) ? "y" : "n";
	}
	if ((_rsIE >= 0) && (_rsIEV >= 5) && (_rsMC == -1) && (_rsOP == -1)) {
		document.body.addBehavior("#default#clientCaps");
		_rsCT = document.body.connectionType;
		document.body.addBehavior("#default#homePage");
		_rsHP = (document.body.isHomePage(location.href)) ? "y" : "n";
	}
	var _rsD = new Date();
	_rsTZ = _rsD.getTimezoneOffset() / -60;
	if ((typeof (_rsWS) != "undefined") && (_rsWS != null)) {
		_rsSW = _rsWS.width;
		_rsSH = _rsWS.height;
		_rsCD = _rsWS.colorDepth;
		_rsSR = _rsSW + 'x' + _rsSH;
		if ((_rsNN != -1) && (_rsBV >= 4)) {
			_rsCD = _rsWS.pixelDepth;
		}
	}
	if ((_rsNN != -1) && (_rsBV >= 4) || (_rsOP >= 0)) {
		_rsLG = navigator.language;
	}
	if ((_rsIE != -1) && (_rsBV >= 4) && (_rsOP == -1)) {
		_rsLG = navigator.userLanguage;
	}
	var _rsPlugins = _rsPluginDetect();
	var _rsPR = "";
	_rsPR = '<img src="';
	_rsPR = _rsPR + _rsND + 'cgi-bin/m?rnd=' + (new Date()).getTime();
	_rsPR = _rsPR + '&ci=' + _rsCI;
	_rsPR = _rsPR + '&cg=' + escape(_rsCG);
	_rsPR = _rsPR + '&cc=' + _rsCC;
	if (_rsSR != null) {
		_rsPR = _rsPR + '&sr=' + _rsSR;
	}
	if (_rsCD != null) {
		_rsPR = _rsPR + '&cd=' + _rsCD;
	}
	if (_rsLG != null) {
		_rsPR = _rsPR + '&lg=' + _rsLG;
	}
	if (_rsJE != null) {
		_rsPR = _rsPR + '&je=' + _rsJE;
	}
	if (_rsCK != null) {
		_rsPR = _rsPR + '&ck=' + _rsCK;
	}
	if (_rsTZ != null) {
		_rsPR = _rsPR + '&tz=' + _rsTZ;
	}
	if (_rsCT != null) {
		_rsPR = _rsPR + '&ct=' + _rsCT;
	}
	if (_rsHP != null) {
		_rsPR = _rsPR + '&hp=' + _rsHP;
	}
	if (_rsTL != null) {
		_rsPR = _rsPR + '&tl=' + _rsTL;
	}
	if (_rsUT == 1) {
		if (_rsC0 != null) {
			_rsPR = _rsPR + '&c0=' + escape(_rsC0);
		}
		if (_rsC1 != null) {
			_rsPR = _rsPR + '&c1=' + escape(_rsC1);
		}
		if (_rsC2 != null) {
			_rsPR = _rsPR + '&c2=' + escape(_rsC2);
		}
		if (_rsC3 != null) {
			_rsPR = _rsPR + '&c3=' + escape(_rsC3);
		}
		if (_rsC4 != null) {
			_rsPR = _rsPR + '&c4=' + escape(_rsC4);
		}
		if (_rsC5 != null) {
			_rsPR = _rsPR + '&c5=' + escape(_rsC5);
		}
		if (_rsC6 != null) {
			_rsPR = _rsPR + '&c6=' + escape(_rsC6);
		}
		if (_rsC7 != null) {
			_rsPR = _rsPR + '&c7=' + escape(_rsC7);
		}
		if (_rsC8 != null) {
			_rsPR = _rsPR + '&c8=' + escape(_rsC8);
		}
		if (_rsC9 != null) {
			_rsPR = _rsPR + '&c9=' + escape(_rsC9);
		}
	}
	if (_rsPlugins['FL'] != null) {
		_rsPR = _rsPR + '&fl=' + _rsPlugins['FL'];
	}
	if (_rsPlugins['QT'] != null) {
		_rsPR = _rsPR + '&qt=' + _rsPlugins['QT'];
	}
	if (_rsPlugins['RE'] != null) {
		_rsPR = _rsPR + '&re=' + _rsPlugins['RE'];
	}
	if (_rsPlugins['WM'] != null) {
		_rsPR = _rsPR + '&wm=' + _rsPlugins['WM'];
	}
	if (_rsPlugins['JJ'] != null) {
		_rsPR = _rsPR + '&jj=' + _rsPlugins['JJ'];
	}
	if (_rsPlugins['AC'] != null) {
		_rsPR = _rsPR + '&ac=' + _rsPlugins['AC'];
	}
	_rsPR = _rsPR + '&si=' + _rsSI;
	_rsPR = _rsPR + '&rp=' + _rsRP;
	if (_rsIP == 1) {
		_rsPR = _rsPR + '" style="visibility:hidden;position:absolute;left:0px;top:0px;z-index:-1';
	}
	_rsPR = _rsPR + '" width="1" height="1" alt=""/>';
	$(_rsPR).appendTo(document.body);
}

/**
 * Muestra la imagen de progreso mientras carga la imagen de la galeria
 * 
 * @param img
 *            imagen de la galeria
 */
function abrirCarga(img) {
	$("#imageLoading").show();
	$(img).hide();
}

/**
 * Oculta la imagen de progreso tras cargar la imagen de la galeria
 * 
 * @param img
 *            imagen de la galeria
 */
function cerrarCarga(img) {
	$("#imageLoading").hide();
	$(img).show();
}

/**
 * Proceso de cambio de foto
 * 
 * @param pos
 *            Indica la posicion en el array de imagenes donde se encuentra la
 *            informacion de la foto actual
 */
function mostrarFoto(pos) {
	
	var url = imagenes[pos].url;
	$("#pieFoto").html(imagenes[pos].pie);
	try{
		$("#fecha").html(imagenes[pos].fecha);
		$("#fuente").html(imagenes[pos].fuente);
	}catch(e){}
	var img = $("#imagenVisor")[0];
	abrirCarga(img);
	img.src = url;
	img.onload = function() {
		cerrarCarga(img);
	}
}

/**
 * Actualiza los indices de paginacion para mostrar u ocultar los enlaces de
 * navegacion
 */
function actualizarIndicesPaginacion() {
	paginaActual = Math.floor(indiceImagenActual / elementosPorPagina);
	primerElemento = paginaActual * elementosPorPagina;
	ultimoElemento = ((paginaActual + 1) * elementosPorPagina) - 1;
}

/**
 * Resalta el enlace seleccionado y desmarca los seleccionados anteriormente
 * 
 * @param pos
 *            Posicion del enlace a resaltar
 */
function marcarEnlace(pos) {
	function reset() {
		$(this).removeClass("activo");
	}
	$("#enlacesImagenes1 a").each(reset);
	$("#enlacesImagenes2 a").each(reset);
	$(
			"#enlacesImagenes1 a:eq(" + pos + "), #enlacesImagenes2 a:eq("
					+ pos + ")").addClass("activo");
}

/**
 * Oculta los enlaces que no se ven en la pagina actual
 */
function ocultarNoVisibles() {
	function ocultar(pos) {
		pos++;
		if (pos <= primerElemento || pos > ultimoElemento + 1) {
			this.style.display = "none";
		} else {
			$(this).css("display", "");
		}
	}
	$("#enlacesImagenes1 a").each(ocultar);
	$("#enlacesImagenes2 a").each(ocultar);
}

function marcaPestana() {
	var pestana = document.getElementById(window.pestana);
	pestana.className = 'activo';
	marcaMultiPestanaActivo(window.pestana);
}

function ajustaImagenesYPintaEnlaces() {
	pintaEnlacesImagenes(window.indiceImagenActual, window.numeroImagenes,
			window.elementosPorPagina);
}

/**
 * Genera los enlaces de la navegacion
 * 
 * @param indiceImagenActual
 *            Posicion actual de la galeria
 * @param numeroImagenes
 *            Total de elementos en la galeria
 * @param elementosPorPagina
 *            Numero de elementos por pagina
 * @return
 */
function pintaEnlacesImagenes(indiceImagenActual, numeroImagenes,
		elementosPorPagina) {
	var posActual = window.indiceImagenActual;
	var obj1 = document.getElementById('enlacesImagenes1');
	var obj2 = document.getElementById('enlacesImagenes2');

	obj1.style.display = "none";
	obj2.style.display = "none";

	if (obj1 != null && obj2 != null) {
		var codigoHTML = '';

		var paginaActual = Math.floor(indiceImagenActual / elementosPorPagina);
		var primerElemento = paginaActual * elementosPorPagina;
		var ultimoElemento = ((paginaActual + 1) * elementosPorPagina) - 1;
		if (ultimoElemento > numeroImagenes) {
			ultimoElemento = numeroImagenes - 1;
		}

		for ( var i = 0; i < imagenes.length; i++) {
			var urlPaginacion = window.baseURLPaginacion + '-' + i + '.html';
			if (i == posActual) {
				codigoHTML += '<a class="activo" href="' + urlPaginacion + '">'
						+ (i + 1) + '</a>';
			} else {
				codigoHTML += '<a href="' + urlPaginacion + '">' + (i + 1)
						+ '</a>';
			}
		}

		obj1.innerHTML = codigoHTML;
		obj2.innerHTML = codigoHTML;

		ocultarNoVisibles();

		obj1.style.display = "";
		obj2.style.display = "";
	}

	// asignamos los eventos a los enlaces
	function eventoPaginacion(pos) {
		$(this).click(function(e) {
			mostrarImagen(pos);
			e.preventDefault();
		});
	}
	$("#enlacesImagenes1 a").each(eventoPaginacion);
	$("#enlacesImagenes2 a").each(eventoPaginacion);
}

function marcaMultiPestanaActivo(nombreIDPestanaSeleccionada) {
	var obj = document.getElementById(nombreIDPestanaSeleccionada);
	if (obj != null) {
		var idMultipestanaActivo = obj.parentNode.parentNode.id;

		// Ponemos todas las pestaņas ocultas excepto la activa
		var cadAux = 'multi-pestana-link-';
		if (idMultipestanaActivo != null
				&& idMultipestanaActivo.indexOf(cadAux) != -1) {
			var i = 1;
			var parar = false;
			while (!parar) {
				var nombrePestana = cadAux + i;
				var obj2 = document.getElementById(nombrePestana);
				if (obj2 != null) {
					if (nombrePestana != idMultipestanaActivo) {
						obj2.style.display = 'none';
					} else {
						obj2.style.display = 'block';
						actualPage = i;
						selectedPage = i;
					}
				} else {
					parar = true;
				}
				i++;
			}
		}
	}
}