(function($) {
		  
	var currentImg;
	var intID;
	var element;
	var nav;
	var defaults = {
		delay : 5000,
		transitionSpeed : 1500,
		autoplay : true,
		hideNav : true,
		navSlideSpeed : 250
	};
 
	$.fn.createGallery = function(options) {		
		$(this).each(function (){
			element = this;
			$.extend(defaults, options);
			currentImg = 0;
			imgGall_layout();
	   });
	};
	
  
	// private functions
	function imgGall_layout (element){
		var listItems = $(".images LI", element);
		$(listItems[0]).show();
		if (listItems.length > 1){
			if (defaults.autoplay) intID = setInterval(changeImg, defaults.delay);
			createNav();
		}
	}
	
	function createNav(){
		nav = $(element).append("<div class='navPane'><ul></ul></div>");
		var listItems = $(".images LI", element);	
		for (var i = 1; i <= listItems.length; i++){
			$(".navPane UL").append("<li><a href='#'>"+i+"</a></li>");
		}		
		$(".navPane A:first", nav).addClass("selected");
		$(".navPane A.selected", nav).click(function (){return false;});
		$(".navPane A", nav).click(changeImg);
		if (defaults.hideNav){
			var navHeight = $(".navPane", nav).outerHeight();
			$(".navPane", nav).css({bottom : "-"+navHeight+"px"});
			$(element).hover(showNav, hideNav);
		}
	}
	
	function showNav(){
		$(".navPane", nav).animate({bottom : "0"}, defaults.navSlideSpeed);
		
	}
	
	function hideNav(){
		var navHeight = $(".navPane", nav).outerHeight();
		$(".navPane", nav).animate({bottom : "-"+navHeight+"px"}, defaults.navSlideSpeed);				
	}

	
	function changeImg (){	
		var listItems = $(".images LI", element);	
		$(listItems).stop(true, true);
		
		if (this != window){
			var nextImg = parseFloat($(this).text()) - 1;	
			clearInterval(intID);
		}else{
			var nextImg = (currentImg + 1 == listItems.length) ? 0 : currentImg + 1;
		}
		
		var navLinks = $(".navPane A", nav);
		$(navLinks).removeClass("selected");
		$(navLinks[nextImg]).addClass("selected");
		
		var next = $(listItems[nextImg]);
		var cur = $(listItems[currentImg]);
				
		
		if (nextImg < currentImg){
			currentImg = nextImg;
			next.show();
			cur.fadeOut(defaults.transitionSpeed, function (){
				$(listItems).not(next).hide();				
			});
		}else if (nextImg > currentImg){		
			currentImg = nextImg;
			next.fadeIn(defaults.transitionSpeed, function (){
				$(listItems).not(next).hide();				
			});
		}		
		return false;
	}  
  
})(jQuery);

