/* ImageSlider // jQuery 1.1.2+
 *
 * A jQuery plugin for creating simple image galleries with a slide transition
 * v0.0.2
 *
 *
 */
 
(function($) { 
	
	$.fn.image_slider = function(options){
		options = $.extend({}, $.ImageSlider.defaults, options);
		return this.each(function() {
			new $.ImageSlider(this, options);
		});
	};
	
	$.ImageSlider = function(container, options){
		//console.log("container: "+container)
		var $container = $(container);
		var $items = $container.children(options.imageSelector);
		var $currentItem;
		var $slidingDiv;
		var $is_moving = false;
		var $interval; 
		
		$container.bind("nextImage", function(){nextImage();});
		$container.bind("prevImage", function(){prevImage();});
		if($items.length > 1){
			init();
		}
		
		function init(){
			var x = 0;
			$items.each(function(){
				$(this).attr("style", "position:absolute; top:0; left:"+x+"px;");
				x = x + options.width;
			});
			
			$slidingDiv = $("<div style=\"position:absolute; top:0; left:0;\" ></div>");
			$items.clone().appendTo($slidingDiv);
			$items.remove();
			$slidingDiv.appendTo($container);
			$items = $slidingDiv.children(options.imageSelector);
			$currentItem = $items[0]; 
			
		};
		
		
		function nextImage(){
			if(!$is_moving){
				$is_moving = true;
				var pos = parseFloat($slidingDiv[0].style.left) * -1 + options.width;
				var nextImage = nextItem();
				if(nextImage.offsetLeft < pos){
					$(nextImage).attr("style", "position:absolute; left:"+pos+"px;");
				}
				$slidingDiv.animate({"left":"-="+options.width+"px"}, {duration: options.duration, complete:slidingComplete});
				$currentItem = nextImage;
			}
		};
		
		function nextItem(){
			if($($currentItem).next(options.imageSelector).length == 0){
				return $items[0];
			}else{
				return $($currentItem).next(options.imageSelector)[0];
			}
		};
		
		function prevItem(){
			if($($currentItem).prev(options.imageSelector).length == 0){
				return $items[$items.length - 1];
			}else{
				return $($currentItem).prev(options.imageSelector)[0];
			}
		};
		
		function prevImage(){
			if(!$is_moving){
				$is_moving = true;
				var pos = parseFloat($slidingDiv[0].style.left) * -1 - options.width;
				var nextImage = prevItem();
				if(nextImage.offsetLeft > pos){
					$(nextImage).attr("style", "position:absolute; left:"+pos+"px;");
				}
				$slidingDiv.animate({"left":"+="+options.width+"px"}, {duration:options.duration, complete:slidingComplete});
				$currentItem = nextImage;
			}
		};
		
		function slidingComplete(){
			$is_moving = false;
		}
	};
	
	$.ImageSlider.defaults = {
		imageSelector: "li.gallery_image",
		width: 624,
		duration: "slow"
	};
	
})(jQuery);
