$(document).ready(function () {
	
	// Los llamamos de uno en uno (pendiente de solucionar...)
	$('#contenido .componenteGaleriaLimitada ul').each(function () {
		$(this).carrusel();
	});
	$('#contenido .componenteGaleriaSinLimite ul').each(function () {
		$(this).carrusel({limitada:false});
	});
	jQuery('#contenido .componenteGaleria ul:not(.controles) a').modal();
	
});
 

(function($){

$.fn.carrusel = function(options){
var defaults = {
	// HTML
	htmlContenedorLista: '<div class="contenedor-lista">' // HTML contenedor de listado
	
	// Textos
	
	// Clases
	,claseContenedorLista: 'contenedor-lista'
	,claseControlAnterior: 'anterior'
	,claseControlSiguiente: 'siguiente'
	,claseJs: 'componenteGaleria-js'
	,claseOculto: 'indentado'
	
	
	// Selectores
	,selectorContenedorLista: '.contenedor-lista'
	,selectorContenedorComponente: '.componenteGaleria'
	,selectorContenedorEnlaceControl: '.controles li'
	,selectorControlAnterior: '.anterior'
	,selectorControlSiguiente: '.siguiente'
	,selectorElementoLista: 'li'
	,selectorOculto: '.indentado'
	
	// Animaciones, efectos, tiempos
	,animacion: true // Activar animaci�n 'true', desactivar animaci�n 'false'
	,tiempoAnimacion: 125 // Duraci�n de la animaci�n
	,limitada:true // Desplazamiento limitado (tiene topes)
};
var datos = {
	htmlControles: '<ul class="controles"><li class="anterior"><a href="#"><img src="/images/connect-slider/arrow-left.png"  alt="Anterior" width="18" height="72" class="sld-nav" id="slide-right"/></a></li><li class="siguiente"><a href="#"><img src="/images/connect-slider/arrow-right.png"  alt="Siguiente" width="18" height="72" class="sld-nav" id="slide-right"/></a></li></ul>' // HTML para los controles
};

var op = $.extend(defaults, options);

return this.each(function(){
	datos.listado = $(this);
	datos.componente = datos.listado.closest(op.selectorContenedorComponente).addClass(op.claseJs);
	prepararLista();
	
	prepararControles();
});

function prepararLista() {
	datos.listado.wrap(op.htmlContenedorLista);
	datos.contenedorLista = datos.listado.parent();
	calculaAncho();
}

function calculaAncho() {
	cont = $("#cont-imagenes").val();
	//alert (cont);
	if(cont!=0){
	
	datos.elementosLista = datos.listado.find(op.selectorElementoLista);
	var numElementosLista = datos.elementosLista.length;
	var i = 0;
	var ancho = 0;
	var margen = 0;

	while (i<numElementosLista) {
		var elementoLista =  datos.elementosLista.eq(i);
		ancho += elementoLista.outerWidth(true);
		margenInocuo = elementoLista.outerWidth(true)-elementoLista.outerWidth();
		if(i+1==numElementosLista && op.limitada){
			margen = elementoLista.outerWidth(true)-elementoLista.outerWidth();
			elementoLista.css('margin','0');
		}
		i++;
	}

	var elementosVisibles = parseInt(datos.listado.attr('class').split('-')[1]);
	datos.anchoElemento = ancho/numElementosLista;
	datos.anchoVisibleGaleria = (datos.anchoElemento*elementosVisibles)-margenInocuo;
	datos.anchoListado = ancho-margen;
	datos.listado.css('width',datos.anchoListado+'px');
	datos.contenedorLista.css('width',datos.anchoVisibleGaleria+'px');
	
	var anchoComponente = datos.contenedorLista.outerWidth(true);
	datos.componente.css('width',anchoComponente+'px');
	}
}

function prepararControles () {
	datos.elementosLista = datos.listado.find(op.selectorElementoLista);
	var numElementosLista = datos.elementosLista.length;
	if(numElementosLista>4){
	datos.componente.append(datos.htmlControles);
	datos.enlaceControlAnterior = datos.componente.find(op.selectorContenedorEnlaceControl+op.selectorControlAnterior+' a').eq(0);
	datos.enlaceControlSiguiente = datos.componente.find(op.selectorContenedorEnlaceControl+op.selectorControlSiguiente+' a').eq(0);
	datos.enlacesControl = datos.componente.find(op.selectorContenedorEnlaceControl+' a')
	
	if (op.limitada) {prepararControlesLimitada();} else {prepararControlesIlimitada();}
	}
}
function prepararControlesIlimitada () {
	datos.elementosLista = datos.listado.find(op.selectorElementoLista);
	var numElementosLista = datos.elementosLista.length;
	if(numElementosLista>4){
	//datos.enlacesControl.unbind('click');
	datos.enlacesControl.click(function (event) {
		event.preventDefault();
		datos.enlacesControl.unbind('click').click(function (event) {event.preventDefault();});
		var direccion = 1;
		if ($(this).closest(op.selectorContenedorEnlaceControl).hasClass(op.claseControlSiguiente)) {
			direccion = -1;
		}
		moverIlimitada(direccion);
	});
	}
}

function moverIlimitada (direccion) {
	var elementos = datos.listado.find(op.selectorElementoLista);
	var primero = elementos.eq(0);
	var ultimo = elementos.last();
	var contenedor = primero.parent();
	
	// Flecha Izquierda
	if (direccion<0) {
		if (op.animacion) {
			datos.listado.animate({left:datos.anchoElemento*(-1)},op.tiempoAnimacion,function () {
				primero.appendTo(contenedor);
				datos.listado.css('left','0');
				prepararControlesIlimitada();
			});
		} else {primero.appendTo(contenedor);prepararControlesIlimitada();}
	}
	
	// Flecha Derecha
	else {
		if (op.animacion) {
			datos.listado.css('left',(datos.anchoElemento*(-1))+'px');
			ultimo.prependTo(contenedor);
			datos.listado.animate({left:0},op.tiempoAnimacion,function () {
				prepararControlesIlimitada();
			});
		} else {ultimo.prependTo(contenedor);prepararControlesIlimitada();}
	}
}

function prepararControlesLimitada () {
	
	
	if (recuperarPosicionActual()==0) {ocultarControl(datos.enlaceControlAnterior);}
	
	
	datos.enlacesControl.click(function (event) {
		event.preventDefault();
		datos.enlacesControl.unbind('click').click(function (event) {event.preventDefault();});
		var direccion = 1;
		if ($(this).closest(op.selectorContenedorEnlaceControl).hasClass(op.claseControlSiguiente)) {
			direccion = -1;
			if (datos.enlaceControlAnterior.hasClass(op.claseOculto)) {mostrarControl(datos.enlaceControlAnterior)}
		} else {
			if (datos.enlaceControlSiguiente.hasClass(op.claseOculto)) {mostrarControl(datos.enlaceControlSiguiente);}
		}
		moverLimitada(direccion);
	})
}

function moverLimitada (direccion) {
	var posicionActual = recuperarPosicionActual();
	
	var posicionNueva = (direccion*datos.anchoElemento)+posicionActual;
	var posicionMaxima = (datos.anchoListado-datos.anchoVisibleGaleria)*(-1);
	
	
	if (posicionNueva>=0) {
		posicionNueva=0;
		ocultarControl(datos.enlaceControlAnterior);
	}
	if (posicionNueva<=posicionMaxima) {
		ocultarControl(datos.enlaceControlSiguiente);
		posicionNueva=posicionMaxima;
	}
	if (op.animacion) {
		datos.listado.animate({left: posicionNueva},op.tiempoAnimacion,function () {prepararControlesLimitada();});
	} else {
		datos.listado.css('left',posicionNueva+'px');
		prepararControlesLimitada();
	}
	
}

function recuperarPosicionActual () {
	return parseInt(datos.listado.css('left').split('px')[0]);
}

function ocultarControl (enlace) {
	enlace.addClass(op.claseOculto);
}

function mostrarControl (enlace) {
	enlace.removeClass(op.claseOculto);
}

}})(jQuery);



(function($){
	$.fn.modal = function(options){
		
		var defaults = { // Opciones por defecto
			selector: 'red',
			capas: '<div id="modal_over"></div><div id="modal_cargando"><p>Cargando...</p></div><div id="modal_contenido"><div id="modal_contenido_interior"></div></div>',
			capa1: '#modal_over',
			capa2: '#modal_contenido',
			capa3: '#modal_contenido_interior',
			capa4: '#modal_cargando',
			contenedor: 'li',
			imagen1: 'modal_imagen',
			opacidad: '60',
			tamanoMaximo: '86', // porcentaje
			htmlAnterior: '<li class="anterior"><a href="#">Anterior</a></li>',
			htmlSiguiente: '<li class="siguiente"><a href="#">Siguiente</a></li>'
			
		}
		
		var datos = {
			anchoVista: $(window).width(),
			altoVista: $(window).height(),
			enlace: '',
			enlaceNavegacion: '',
			imagen: '',
			htmlAnterior: '',
			htmlSiguiente: '',
			htmlInteriorModal: '',
			altoMaximo: '',
			anchoMaximo: ''
		}
		
		var op = $.extend(defaults, options);
		
		return this.each(function(){
			$(this).bind('click', inicia);
		});
		
		function inicia(ev){
			ev.preventDefault();
			datos.enlace = $(this);
			dimensionesVentana();
			capaOver();
			$(window).resize(redimensionVentana);
		};
		
		function dimensionesVentana () {
			datos.anchoVista = $(window).width();
			datos.altoVista = $(window).height();//alert(datos.anchoVista+'x'+datos.altoVista)
		}
		
		function redimensionVentana () {
			dimensionesVentana();
			estilosCapaOver();
		}
		
		function capaModal () {
			
			enlacesNavegacion();
			generarHtmlInteriorModal();
			
			$(op.capa3).append(datos.htmlInteriorModal);
			
			$('#'+op.imagen1).load(function () {
				mostrarCapaModal();
			});
		}
		
		function generarHtmlInteriorModal () {
			var destino = datos.enlace.attr('href');
			var textoTitulo = datos.enlace.find('img').eq(0).attr('alt').split(':')[0];
			var htmlTitulo = '<div class="titulo"><h1>'+textoTitulo+'</h1></div>';
			
			datos.htmlInteriorModal = htmlTitulo+'<div class="imagen"><p><img id="'+op.imagen1+'" src="'+destino+'" alt="" /></p></div><div class="navegacion"><p class="indentado">Ir a:</p><ul class="clear">'+datos.htmlAnterior+datos.htmlSiguiente+'<li class="cerrar"><a href="#" id="modal_cerrar">Cerrar</a></li></ul></div>';
		}
		
		function enlacesNavegacion () {
			if (datos.enlace.parent().prevAll(op.contenedor).length>0) {
				datos.htmlAnterior=op.htmlAnterior;
			} else {datos.htmlAnterior='';}
			if (datos.enlace.parent().nextAll(op.contenedor).length>0) {
				datos.htmlSiguiente=op.htmlSiguiente;
			} else {datos.htmlSiguiente='';}
		}
		
		function navegar () {
			if (datos.enlaceNavegacion.parent().is('.anterior')) {datos.enlace=datos.enlace.parent().prevAll(op.contenedor).eq(0).children('a').eq(0);}
			else {datos.enlace=datos.enlace.parent().nextAll(op.contenedor).eq(0).children('a').eq(0);}
			vacia();
		}
		
		function dimensionesMaximas () {
			datos.altoMaximo = parseInt((datos.altoVista/100*op.tamanoMaximo));
			datos.anchoMaximo = parseInt((datos.anchoVista/100*op.tamanoMaximo));
		}
		
		function mostrarCapaModal () {
			datos.imagen = $('#'+op.imagen1);
			datos.imagen.css('visibility','hidden');
			
			$(op.capa2).show().css('visibility','hidden');
			dimensionesMaximas();
			if (datos.imagen.height()>datos.altoMaximo) {datos.imagen.css({"max-height":datos.altoMaximo+"px"});}
			if (datos.imagen.width()>datos.anchoMaximo) {datos.imagen.css({"max-width":datos.anchoMaximo+"px"});}
			
			datos.imagen.closest(op.capa3).css({"width":datos.imagen.width()+"px"});
			var anchoCapa2 = $(op.capa2).width();
			var altoCapa2 = $(op.capa2).height();
			datos.imagen.attr('height',datos.imagen.height());
			datos.imagen.attr('width',datos.imagen.width());
			datos.imagen.parent().css({"height":datos.imagen.height()+"px","width":datos.imagen.width()+"px"});
			$(op.capa2).css({"left":parseInt(((datos.anchoVista-anchoCapa2)/2))+"px","top":parseInt(((datos.altoVista-altoCapa2)/2))+"px"});
			$(op.capa4).fadeOut(150,function () {
				$(op.capa2).hide().css('visibility','visible').fadeIn(250,function () {
					datos.imagen.hide().css('visibility','visible').fadeIn(150);
				});
			});
				
			
			$('#modal_cerrar').click(cierra);
			$(op.capa3+' div.navegacion a').click(function (ev) {
				ev.preventDefault();
				datos.enlaceNavegacion = $(this);
				navegar();
			});
			
			navegacionTeclado();
			
		}
		
		function navegacionTeclado () {
			$(document).unbind('keydown keypress');
			$(document).bind('keydown keypress',function(ev) {
				if (ev.keyCode == '33' || ev.keyCode == '34' || ev.keyCode == '37' || ev.keyCode == '39') {
					$(document).unbind('keydown keypress').bind('keydown keypress',nada);
					ev.preventDefault();
					if ((ev.keyCode == '33' || ev.keyCode == '37') && $(op.capa3+' div.navegacion li.anterior a').length>0) {
						datos.enlaceNavegacion = $(op.capa3+' div.navegacion li.anterior a').eq(0);
						navegar();
					} else if ((ev.keyCode == '34' || ev.keyCode == '39') && $(op.capa3+' div.navegacion li.siguiente a').length>0) {
						datos.enlaceNavegacion = $(op.capa3+' div.navegacion li.siguiente a').eq(0);
						navegar();
					} else {
						cierra(ev);
					}
				}
			});
		}
		
		function capaOver () {
			$('body').append(op.capas);
			$(op.capa1).bind('click',cierra);
			estilosCapaOver();
			$(op.capa1).fadeIn(function () {
				capaCargando();
				capaModal();
			});
		}
		
		function estilosCapaOver () {
			$(op.capa1).css({"height":datos.altoVista+"px","filter":"alpha(opacity="+op.opacidad+")","width":datos.anchoVista+"px"});
		}
		
		function capaCargando () {
			var altoCapa4 = $(op.capa4).height();
			var anchoCapa4 = $(op.capa4).width();
			$(op.capa4).show().css('visibility','hidden');
			$(op.capa4).css({"left":parseInt(((datos.anchoVista-anchoCapa4)/2))+"px","top":parseInt(((datos.altoVista-altoCapa4)/2))+"px"});
			$(op.capa4).hide().css('visibility','').fadeIn(150);
		}
		
		function cierra (ev) {
			ev.preventDefault();
			$(op.capa2+','+op.capa1+','+op.capa4).fadeOut(function () {
				$(document).unbind('keydown keypress');
				$(this).remove();
			})
		}
		
		function vacia () {
			datos.imagen.fadeOut(150,function () {
				$(op.capa2).fadeOut(250,function () {
					capaCargando();
					$(op.capa3).empty();
					capaModal();
				});
			});
				
		}
		
		function nada (ev) {
			// el vac�o absoluto
			ev.preventDefault();
		}
		
	}
})(jQuery);
