/*
 * 	Jaslide 0.1 - jQuery plugin
 *	written by Julien Appert
 *	http://julienappert.com
 *
 *	Copyright (c) 2010 Julien Appert (http://julienappert.com)
 *
 *	Built for jQuery library
 *	http://jquery.com
 *
 */
 
/*
 *	markup example for $("#slider").jaslide();
 *	
 * 	<div id="slider">
 *		<ul>
 *			<li><img src="images/01.jpg" alt="" /></li>
 *			<li><img src="images/02.jpg" alt="" /></li>
 *			<li><img src="images/03.jpg" alt="" /></li>
 *		</ul>
 *	</div>
 *
 */
 (function($) {

	$.fn.jaslide = function(options){
		var defaults = {
			pause:2000,
			speed:200,
			auto:false,
			width:300,
			height:200,
			prevId:'',
			nextId:'',
			posId:''
		};
		var options = $.extend(defaults, options);  
		
		this.each(function() {  
			var obj = $(this); 				
			var ul = $("ul", obj);
			var li = $("li", obj);
			var length = li.length - 1;
			var i = 0;
			obj.css({position:'relative',overflow:'hidden',width:options.width,height:options.height});
			ul.css({width:li.length * options.width,height:options.height,position:'absolute',top:'0px',left:'0px'});
			li.each(function(){
				$(this).css({float:'left'});
			});
			if(options.prevId.length > 0){
				$('#'+options.prevId).click(function(){	action('prev',0);	});
			}
			if(options.nextId.length > 0){
				$('#'+options.nextId).click(function(){	action('next',0);	});
			}
			if(options.posId.length > 0){
				var poscont = $('#'+options.posId);
				$('.jaslide-pos', poscont).each(function(index){
					$(this).click(function(){	action('pos',index);});
				});
			}	
			if(options.auto){
				var timeout = setTimeout(function(){
					action("next",0);
				},options.pause);
				obj.mouseover(function(){
					clearTimeout(timeout);
				});
				obj.mouseout(function(){
					timeout = setTimeout(function(){
						action("next",0);
					},options.pause);				
				});
			}
			
			function action(dir,index){
				var oi = i;
				switch(dir){
					case 'prev':
						 if(i > 0)	i--; else i = length;
					break;
					case 'next':
						if(i < length) i++; else i = 0;
					break;
					case 'pos':
						i = index;
					break;
				};
				var diff = Math.abs(oi-i);
				var speed = diff * options.speed;					
				ul.animate({left:'-'+i*options.width},speed);
				if(options.auto){
					clearTimeout(timeout);
					timeout = setTimeout(function(){
						action("next",0);
					}, speed + options.pause);
				};	
				if(options.posId.length > 0){
					var poscont = $('#'+options.posId);
					$('.jaslide-pos', poscont).each(function(index){
						if(index == i)
							$(this).addClass('current');
						else
							$(this).removeClass('current');	
					});
				}
			}		
			
		});
	};

})(jQuery);
