(function($)
{
	// Config
	var cfg = {
		opacityOut: 0.75,
		opacityOver: 1
	};
	
	// Imágenes fondo
	var capaCentro, imgsFondo, imgActual = 0, totalImgs, idIntervalo;
	
	function cambiarTamanyoFondo()
	{
		var anchoCentro = capaCentro.width();
		var altoCentro = capaCentro.height();

		imgsFondo.each(function()
		{
			var imagen = $(this), anchoImg, altoImg;
			if(imagen.data('ancho'))
			{
				anchoImg = imagen.data('ancho');
				altoImg = imagen.data('alto');
			}
			else
			{
  			imagen.data('ancho', anchoImg = imagen.width());
  			imagen.data('alto', altoImg = imagen.height());
  		}
			var relAncho = anchoCentro/anchoImg;
			var relAlto = altoCentro/altoImg;
			var prc;
			if(imagen.hasClass('fondoInterior'))
				prc = (relAncho < relAlto) ? relAncho : relAlto;
			else
				prc = (relAncho > relAlto) ? relAncho : relAlto;

			imagen.width(prc * anchoImg);
			imagen.height(prc * altoImg);
		});
	};
	
	function mostrarImagen(idxImg, duration)
	{
		$(imgsFondo.get(idxImg)).stop().fadeTo(duration ? duration : 2000, 1);
		$(imgsFondo.get(imgActual)).stop().fadeTo(duration ? duration : 2000, 0);
		imgActual = idxImg;
	};
	
	function mostrarImagenAnterior(duration)
	{
		imgMostrar = (imgActual == 0) ? totalImgs-1 : imgActual-1;
		mostrarImagen(imgMostrar, duration);
	};
	
	function mostrarImagenSiguiente(duration)
	{
		imgMostrar = (imgActual == totalImgs-1) ? 0 : imgActual+1;
		mostrarImagen(imgMostrar, duration);
	};

	$.iniciarImagenesFondo = function()
	{
		capaCentro = $('#centro');
		imgsFondo = capaCentro.find('img.fondo');
		totalImgs = imgsFondo.length;
		
		if(totalImgs > 1)
		{
			capaCentro.find('.btnPagImg').each(function()
			{
				var btnPag = $(this);
				var imgMostrar;
				
				btnPag
					.click(function()
					{
						$(document).stopTime('paginador');
						
						if(btnPag.hasClass('btnAntImg'))
							mostrarImagenAnterior(1000);
						else
							mostrarImagenSiguiente(1000);
					})
					.hover(function()
					{
						$(this).stop().fadeTo('fast', cfg.opacityOver);
					}, function()
					{
						$(this).stop().fadeTo('fast', cfg.opacityOut);
					})
					.css('opacity', cfg.opacityOut);
			});
		
			$(document).everyTime(5000, 'paginador', function(i) 
			{
			  mostrarImagenSiguiente();
			});
		}
		
		$(window).resize(cambiarTamanyoFondo);
		cambiarTamanyoFondo();
	};
	
	// Scroll Texto
	$.scrollTexto = function(elemento)
	{
		elemento = $(elemento);
		
		var contenedor = elemento.find('.scrollCont');
		var interno = elemento.find('.scrollInt');
		var botones = elemento.find('.scrollUp, .scrollDown');
		
		function mover(incremento)
		{
			contenedor
//				.stop()
//				.animate({scrollTop: interno.scrollTop() + incremento})
				.scrollTop(contenedor.scrollTop() + incremento)
				;
		};
		function parar()
		{
//			contenedor.stop();
		};
		
		botones
			.hover(function()
			{
				var btn = $(this)
					.stop()
					.fadeTo('fast', cfg.opacityOver);
				var incremento = btn.hasClass('scrollUp') ? -2 : 2;
				
				$(document).everyTime(20, 'scroll', function(i) 
				{
				  mover(incremento);
				});
				mover(incremento);
				
			}, function()
			{
				$(document).stopTime('scroll');
				parar();
				$(this).stop().fadeTo('fast', cfg.opacityOut);
			})
			.css('opacity', cfg.opacityOut);
	};
	
	// Común
	var overlays = {};

	$.getOverlayHtml = function(id)
	{
		if(!overlays[id])
		{	
			overlays[id] = $('#'+id).overlay({
				api:true,
	//			oneInstance:false,
	//			effect:'apple',
				mask:{}
			});
		}
		return overlays[id];
	};
	
	$.setOverlayHtml = function(id, overlay)
	{
		overlays[id] = overlay;
	};
	
	$.mostrarCargador = function(mostrar)
	{
		var dsp = (mostrar) ? 'block' : 'none';
		
		$('#cargador').css({display:dsp});
		var modal = $('#cargadorModal').css({display:dsp});
		if(mostrar && $.browser.msie && $.browser.version < 9)
			modal.css({opacity: 0.4});
		if(!modal.data('evtClick'))
		{
			modal.data('evtClick', 1);
			modal.click(function(){});
		}
	};
	//$(window).unload(function() {
	//	$.mostrarCargador(true);
	//});
	
	$.saltar = function(url)
	{
		window.location.href = $.serverUrl(url);
	};
	$.serverUrl = function(url)
	{
		var regexProtocolo = new RegExp("^(https?://)", 'i');
		if(!url.match(regexProtocolo))
			url = window.location.protocol + '//' +  window.location.host + '/' + $.string.ltrim(url, '/');
		return url;
	};
	$.baseUrl = function(url)
	{
		return $._baseUrl + '/' + $.string.ltrim(url, '/');
	};
	
	$.string = {
		ltrim:function(cadena, caracteres)
		{
			if(!caracteres) caracteres = "\\s";
			return cadena.replace(new RegExp("^["+caracteres+"]+"), '');
		},
		rtrim:function(cadena, caracteres)
		{
			if(!caracteres) caracteres = "\\s";
			return cadena.replace(new RegExp('['+caracteres+']+$'), '');
		},
		trim:function(cadena, caracteres)
		{
			return this.rtrim(this.ltrim(cadena, caracteres), caracteres);
		},
		ucfirst:function(cadena) 
		{
			return cadena.charAt(0).toUpperCase() + cadena.substring(1);
		},
		isEmpty:function(cadena)
		{
			return cadena.length == 0;
		},
		render:function(cadena, data)
		{
			for(var prop in data)
				cadena = cadena.replace('{'+prop+'}', data[prop]);
			return cadena;
		}
	};
	
})(jQuery);
