/*	Autor: Giovanini, Fernando Miguel
	Fecha Creacion: 09.06.2010
	Descripcion: Funcion creadora y manipuladora del visor carrousel
*/
//alert('Entra en Carrusel.js');
$.fn.imagebox = function()
{
	var args = arguments[0] || {};
	
	// opciones iniciales basicas
	var options = {
				slideSpeed: args.slideSpeed || 1000,		// velocidad de retardo entre slide
				slideshowTime: args.slideshowTime || 5000,	// velocidad de paso de diapositivas
				play: args.play || false,				// determina si se activa la vista en presentacion al inicio
				itemContainer: args.itemcontainer || ".m-722-item-cont"
	};
	
	var slideshow = false;
	
	var object = $(this);
	var page;
	
	$(".carousel", object).css("visibility", "hidden");
	
	$.fn.showBox = function(showSlide)
	{
		page = 0;
		
		_init();
		
		$(".opaque").fadeIn("slow", function(){
			_normalize();
			if(typeof(showSlide) != 'undefined')
			{
				page = showSlide;
				_current(page);
			}
		});
		
		object.fadeIn("slow", function(){
			if(options.play)
			{
				_slideshow(true);
			}
			
			$(".carousel").css({visibility: "visible"}, 500);
		});
	}
	
	// listener para centrar el visor cuando se cambia el tamaño del browser
	$(window).resize(function(){
		_centralize();
	});
	
	// cerrar el visor
	$(".close", object).bind("click", function(){
		_close();
	});
	
	$.fn.close = function()
	{
		
		_close();
	}
	
	function _close()
	{
		if($.browser.msie && $.browser.version=="6.0") jQuery("select").css("visibility","visible");
		page = 0;
		
		_slideshow(true);
		object.fadeOut();
		$(".opaque").fadeOut("slow", function(){
			$(".opaque").remove();
			$(".carousel", object).css("visibility", "hidden");
		});
		
		object.die();
	}
	
	// manipula las diapositivas
	$(".controls", object).children("div").bind('click', function(){
		var dir = $(this).attr("class");
		_slide(dir);
	});
	
	window.doSlide = function(){
				var dir = "next";
				_slide(dir);
			};
	
	$("a[rel=slideshow]").live("click", function(){
		_slideshow();
	});
	
	function _slideshow(stop)
	{
		if(slideshow == false && typeof(stop) == "undefined")
		{
			slideshow = window.setInterval("doSlide()", options.slideshowTime);
			$("a[rel=slideshow]").html("Detener la presentaci&oacute;n");
		}
		else
		{
			clearInterval(slideshow);
			$("a[rel=slideshow]").html("Ver &aacute;lbum en modo presentaci&oacute;n");
		}
	}
	
	// muestra/oculta la informacion de la diapositiva
	$(this).find(".visor").find(".close-details").live("click", function() {
		if(parseInt($(this).parent().find(".details").css("bottom")) < 0)
		{
			$(this).parent().find(".details").animate({bottom: "0px"}, 500);
			$(this).parent().find(".bkg-transparent").animate({bottom: "0px"}, 500);
			$(this).animate({bottom: "10.8em"}, 500);
			
		}
		else
		{
			$(this).parent().find(".details").animate({bottom: "-110px"}, 500);
			$(this).parent().find(".bkg-transparent").animate({bottom: "-100px"}, 500);
			$(this).animate({bottom: "0.8em"}, 500);
		
		};
	});
	
	// imprime el item que será clonado y contendra la diapositiva
	function _init()
	{
		var opaque = '<div class="opaque" style="position: absolute; background: #000000; display: none; margin:0;padding:0"></div>';
		$("form").append(opaque);
		
		_centralize();
		$(".visor", object).css({display: "block", Float: "left"});
		if($.browser.msie && $.browser.version=="6.0") jQuery("select").css("visibility","hidden");
	}
	
	// centra el visor dentro de la pantalla
	function _centralize()
	{
		// tomo el width y el height de la ventana y del objeto. Divido por 2 el width y height del visor y se lo aplico a los margenes del visor
		posicionW = $("#wrapper").offset();
		
		
		miLeft = ($.browser.msie)? "-" + posicionW.left-1 + "px" : 0
		$(".opaque").css({
			height: $(document).height() + "px",
			width: $(window).width() + "px",
			left: "0", 
			top: "0",
			opacity: "0.5",
			margin: "0 !important",
			zIndex: "0"
		});
		
		//object.dialog();
		
		object.css({
				position: "absolute",
				zIndex: "100",
				top: "0",
				marginTop: (( $(window).height() - object.height() ) / 2+$(window).scrollTop())-30 + "px",
				marginLeft: ( $(window).width() - object.width() ) / 2+$(window).scrollLeft()-400 + "px"
		});
	}
	
	// normaliza el contendero de diapositivas dandole el width total que necesita para contener los items
	function _normalize()
	{
		// tomo la dimension de uno de los items
		var dimensions	= parseInt($(".carousel", object).children(options.itemContainer).find(".visor:eq(0)").outerWidth());
		// tomo la cantidad de items cargados
		var cant		= parseInt($(options.itemContainer+" > .visor", object).size());
		
		var width = Math.round(dimensions*cant);
		
		//le doy al contenedor un width basado en el tamaño de cada item multiplicado la cantidad de items
		$(".carousel", object).find(options.itemContainer).css({width: width+'px'});
	}
	
	function _current(sli)
	{
		var dimensions	= parseInt($(".carousel", object).children(options.itemContainer).find(".visor:eq(0)").outerWidth());
		
		if(typeof(sli) != 'undefined')
		{
			$(options.itemContainer, object).css({
				marginLeft: Math.round((dimensions*(sli))*-1)+'px'
			});
		}
	}
	
	// funcion encargada de la transcision de diapositivas
	function _slide(dir)
	{
		var dimensions	= parseInt($(".carousel", object).children(options.itemContainer).find(".visor:eq(0)").outerWidth());
		var current		= parseInt($(".carousel", object).children(options.itemContainer).css("marginLeft"));
		//var cant		= parseInt($(".carousel", object).find(options.itemContainer).children(".visor").size());
		var cant		= parseInt($(".carousel", object).children(options.itemContainer).find(".visor").size());
		//var cant		= 5;
		
		$(".carousel", object).find(options.itemContainer).css("width", Math.round(dimensions*cant)+'px');
		
		if(cant >= 1)
		{
			var max_width	= (Math.round(dimensions*cant))*1;
			
			if(dir == 'next' && (page+1) < cant && current > (max_width*-1))
			{
				page++;
				
				$(options.itemContainer, object).animate({
					marginLeft: Math.round((dimensions*page)*-1)+'px'
				}, options.slideSpeed, function(){
						object.stop();
					});
			}
			else if(dir == 'prev' && (page-1) <= cant && page > 0 )
			{
				page--;
				
				$(options.itemContainer, object).animate({
					marginLeft: Math.round((dimensions*page)*-1)+'px'
				}, options.slideSpeed, function(){
						object.stop();
					});
			}
			else
			{
				if(dir == 'next' && page <= cant)
				{
					$(options.itemContainer, object).animate({
						marginLeft: '0px'
					}, options.slideSpeed, function(){
						object.stop();
					});
					page = 0;
				}
				else if(page >= 0)
				{
					$(options.itemContainer, object).animate({
						marginLeft: Math.round((dimensions*(cant-1))*-1)+'px'
					}, options.slideSpeed, function(){
						object.stop();
					});
					page = (cant-1);
				}
			}
		}
	};
};
