(function($){
	$.fn.slideShow = function(_images, options)
	{
		_scroll = $("cmsgallery.controls").offset().top;
		
		if(_images.length > 0){
			var defaults = {
				timeFade:1000,
				timeSlide:4000
			};				
			var options = $.extend(defaults, options);						
		  	var time = null;
			autoplay = false;
			array_images = _images;
			// $("div.controls").addClass('loading');
			$("div.slide").append("<img id='imgSlider'></img>");
			position = 0;
			$("div.slide #imgSlider").attr({src:array_images[position]['urlbase'],titulo:array_images[position]['titulo'],
							descripcion:array_images[position]['descripcion'],album:array_images[position]['album']});									
			$('.title').html('').html(array_images[position]['titulo']);
			
			var unBind = function()
			{
				$('.back').unbind('click', go_back);
				$('.next').unbind('click', go_next);
				$('.index').unbind('click', go_index);
			}
			var bind = function()
			{
				$('.back').click(go_back);
				$('.next').click(go_next);
				$('.index').click(go_index);
			}
			set_position = function (pos)
			{
			 if (autoplay) return;
			 position = pos - 1;  
			 go_next(); 
			}
			var go_next = function ()
			{
				if (++ position >= array_images.length)
					position  = 0;
				update_galeria();					
			}
			
			var go_back = function()
			{
  
			  if (-- position < 0)    	
				position = array_images.length-1;
			  
			  update_galeria();
			  
			}

			var go_index = function()
			{
  				$("html,body").animate({scrollTop: 600}, 500);
			}

			
			timeLoad = null;
			var loadImg = function(img)
			{
				if (!img.complete)
					timeLoad = window.setTimeout(function(){loadImg(img);}, 500);
				else{			
					clearTimeout(timeLoad);
					makeTransition(next_img);
				}
					
			}
			makeTransition = function(next_img)
			{
				$(this).log(next_img.height);
				/*
				$("#slide").animate({ 
					"height" : "500px",
				}, 1000);
				*/
				img = "div.slide #imgSlider";
				$("div.slide").removeClass('loading');
				$(next_img).css('display','none');
				
				$(img).animate({opacity: "0"}, defaults.timeFade, function(){
					$(img).remove();		 	
					$("div.slide").append($(next_img));		 
					$(next_img).fadeIn(defaults.timeFade);					 					 
					$(next_img).attr({id:'imgSlider'});			
				})
				_title = array_images[position]['titulo'];										
					$('.title').fadeOut(defaults.timeFade, function(){
						$(this).html('').html(_title);
						$(this).fadeIn(defaults.timeFade);
					})									  				
								
				$("html,body").animate({scrollTop:_scroll}, 500);				 					 
			}
			var update_galeria = function ()
			{    			        
				 centerLoading();
				 $("div.slide").addClass('loading');
				 next_img = new Image();
				 $(next_img).attr({src:array_images[position]['urlbase']
									   ,titulo:array_images[position]['titulo']
									   ,descripcion:array_images[position]['descripcion']
									   ,album:array_images[position]['album']});	
				 loadImg(next_img);				 
			}	
			var centerLoading = function()
			{
				leftSlider = $("div.slide #imgSlider").offset().left;
				topSlider  = $("div.slide #imgSlider").offset().top;		
				widthSlider = $("div.slide #imgSlider").attr('width');
				var heightSlider = $("div.slide #imgSlider").attr('height');
			}
			var delete_blank = function(cad)
			{
				var trim = "";
				for (var i = 0; i < cad.length; i++)
					if (cad.charAt(i) != " ")
						trim += cad.charAt(i);
				return trim;
			}
			var createAlbum = function(id, title)
			{
				return $("<div class='album' id='"+id+"'><h2>"+title+"</h2></div>");
			}
			var createClear = function()
			{
				return $("<div class='clearer'></div>");
			}
			var load_albumes = function()
			{
				for(var index = 0; index < array_images.length; index++)
				{		
					album = delete_blank(array_images[index]['album']);
					
					if ( $(".albums").find('#'+album).length == 0 )
					{
						$album = createAlbum(album, array_images[index]['album']);					
						$clear = createClear();
						$(".albums").append($album).append($clear);
					}						
					$(".albums #"+album).append("<img id='"+index+"' onclick='set_position("+index+")'></img>");
					$(".albums #"+album+' #'+index).attr({src:array_images[index]['th']
														      ,titulo:array_images[index]['titulo']
															  ,descripcion:array_images[index]['descripcion']
															  ,album:array_images[index]['album']});
				
				}
			}
			var autoSlide = function()
			{
				if (autoplay)
				{
					go_next();
					clearTimeout(time);
					time = window.setTimeout(function(){autoSlide();}, defaults.timeSlide);
				}
			}
			var play = function()
			{
				autoplay = true;
				$(".albums").animate({opacity: "0.3"}, 200); 
				$('.play').text("stop");
				$('.play').unbind('click', play);
				$('.back, .next').addClass('disabled');
				unBind();
				$('.play').click(stop);
				autoSlide();
			}
			var stop = function()
			{
				autoplay = false;
				$(".albums").animate({opacity: "1"}, 200);
				$('.back, .next').removeClass('disabled');
				$('.play').text("play");
				$('.play').unbind('click', stop);
				$('.play').click(play);
				bind();
			}		
			bind();
			$('.play').click(play);
			load_albumes();
		}
	}
})(jQuery);