jQuery.fn.extend(
{
	scroller: function(settings)
			{
				settings = jQuery.extend(
										{
											start: 0,
											visible: 1,
											focus:0,
											
											rotation: 5000,
											transition: 1000,
											
											transitionEffect: 'linear',
											
											autostart: true,
											direction: 'right2left',
											
											left: 0,
											top: 0,
											
											slideWidth: 777,
											controls: '.scrollerControls'
										}, settings);
				
				var wrapper = $(this);
				var scroller = $(this).find("ul");

				var scrollerItems = scroller.find("li");
				
				var slideWidth = settings.slideWidth;
				var stageWidth = settings.visible * slideWidth;
				var stageHeight = scrollerItems.eq(0).height();
				
				scrollerItems
					.attr('title', 'Click Slide to Pause')
					.click(function(){
						scroller.pause();
					});
				
				//scroller.current = scrollerItems[settings.start];
								
				wrapper.css({
								"position": "relative",
								"width": stageWidth + "px",
								"height": stageHeight + "px",
								"overflow": "hidden"
							});
				
				scroller.css({
								"width": scroller.find("li").size()*stageWidth + "px",
								"height": stageHeight + "px",
								"position": "relative",
								"top": settings.top + "px",
								"left": (settings.left + settings.start*slideWidth) + "px"
							});
				
				scroller.moveFirstSlideLast = function(){scroller.find("li:first").appendTo(scroller);};							
				scroller.moveLastSlideFirst = function(){scroller.find("li:last").prependTo(scroller);};
				
				scroller.scrollLeft = function(){
													scroller.previous();
													scroller.timer = setTimeout(scroller.scrollLeft, settings.rotation);
												};
																													
				scroller.scrollRight = function(){
													scroller.next();
													scroller.timer = setTimeout(scroller.scrollRight, settings.rotation);
												};
																													
				scroller.next = function(){
												scroller.moveLastSlideFirst();
												scroller.css("left", settings.left - slideWidth + "px");
												scroller.animate(
																	{"left" : (settings.left) + "px"},
																	settings.transition,
																	settings.transitionEffect
																);
											
										};
																													
				scroller.previous = function(){
												scroller.animate(
																	{"left" : (settings.left - slideWidth) + "px"},
																	settings.transition,
																	settings.transitionEffect,
																	function()
																	{
																		scroller.moveFirstSlideLast();
																		scroller.css("left", settings.left + "px");
																	}
																);
										
												};
				
				scroller.play = function(){
											$(settings.controls)
												.find("a.play")
												.css("display", "none");
											$(settings.controls)
												.find("a.pause")
												.css("display", "block");
												
											if (settings.direction == 'left2right')
												scroller.scrollRight()
											else if(settings.direction == 'right2left')
												scroller.scrollLeft()
										};
										
										
				scroller.pause = function(){
											clearTimeout(scroller.timer);
											scroller.stop();
											
											$(settings.controls)
												.find("a.back")
												.css("display", "block")
											$(settings.controls)
												.find("a.pause")
												.css("display", "none");
											$(settings.controls)
												.find("a.play")
												.css("display", "block");
												
											return false;
											};

				$(settings.controls).find("a.prev").click(function(){
																		scroller.pause();
																		scroller.next();
																		return false;
																	});
				
				$(settings.controls).find("a.play").click(function(){scroller.play(); return false;});
				
				$(settings.controls).find("a.pause").click(function(){scroller.pause(); return false;});
				
				$(settings.controls).find("a.next").click(function(){
																		scroller.pause();
																		scroller.previous();
																		return false;
																	});
				
				if (settings.autostart)
				{
					$(settings.controls).find("a.play").css("display", "none");
					scroller.timer = setTimeout(scroller.play, settings.rotation);
				}
			}
})