/*	
 *	jQuery slider 0.1
 *	Andy Moser, Lifecom AG
 *	www.lifecom.ch
 *
 */


(function($) {
	$.fn.Slider = function(options) {
		
		var $opts 			= $.extend(true, {}, $.fn.Slider.defaults, options),
		$Slider 			= $(this),
		$Elements 			= $Slider.children("div."+$opts.elements),
		$anzahl 			= $Elements.length,
		$current 			= 1;
		$position			= 0;
		$width				= ($opts.width) ? $opts.width : $Elements.width();
				
		$Elements.each(function(index) {
			$(this).css({ position: 'absolute', top: '0px', left: (index*$width)+'px'});
		})
		
		$Slider.bind("next", function() {
			if ($current+1 >= $anzahl || ($opts.moveEveryClick && $current-1 >= ($anzahl-$opts.visibleItems))) {
				return;
			}
			$current++;
			$(this).trigger("animate");
			
		});
		
		$Slider.bind("prev", function() {
			if ($current-1 < 0) {
				return;
			}
			$current--;
			$(this).trigger("animate");
			
		});
		
		$Slider.bind("animate", function() {
			// Position setzten
			var difference = $current - $position // Dies ist welches Element in dem sichtbaren bereich aktiv ist

			if (difference < 0) {
				$position--;
			}
			if (difference > ($opts.visibleItems-1)) {
				$position++;
			}
			
			if ($opts.moveEveryClick) {
				$position = $current-1;
			}
			
			var newleft = -$Slider.children("div."+$opts.elements+":eq("+($position)+")").position().left;
			$(this).animate({ left: newleft+'px' });
			
			// Klassen setzten
			$Elements.each(function(index) {
				if(index == $current) {
					$(this).addClass("sl_active");
					$(this).removeClass("sl_left");
					$(this).removeClass("sl_right");
				}
				if (index < $current) {
					$(this).removeClass("sl_active");
					$(this).removeClass("sl_right");
					$(this).addClass("sl_left");
				}
				if (index > $current) {
					$(this).removeClass("sl_active");
					$(this).removeClass("sl_left");
					$(this).addClass("sl_right")
				}
			})
			
		})
		
		$Slider.trigger("animate");
		
		$(options.nextButton).click(function() {
			$Slider.trigger("next");
		}).css('cursor','pointer');
		$(options.prevButton).click(function() {
			$Slider.trigger("prev");
		}).css('cursor','pointer');
	};
	
	$.fn.Slider.defaults = {
		prevButton			: "#foo_prev",
		nextButton			: "#foo_next",
		visibleItems		: 3,
		elements			: ".Element",
		width				: null,
		moveEveryClick		: false
	}
	
})(jQuery);
