(function($){
	$.fn.gallery = function(selector,options)
	{
		var parent = this;
		
		var settings = {
			duration:750,
			easing:'easeOutExpo',
			nextBtn: '.next',
			prevBtn: '.prev',
			auto:false,
			interval:6000
		};
		
		if ( options ) { 
			$.extend( settings, options );
		}
		
		this.each(function()
		{
			var animating = false;
			var next = $(this).find(settings.nextBtn);
			var prev = $(this).find(settings.prevBtn);
			var width = $(this).width();
			prev.hide();
			if($(this).find(selector).length < 2) next.hide();
			$(this).css('overflow','hidden');
			// position and hide selector
			$(this).find(selector).css({
				'position':'absolute',
				'top':'0px',
				'left':width+'px'
			});
			
			var first = $(this).find(selector).first();
			first.css('left','0px');
			var currentImage = first;
			
			if(settings.auto)
			{
				setInterval(function()
				{
					var n = currentImage.next();
					if(!n.length) n = first;
					currentImage.animate({
						'left':'-' + width +'px'
					},settings.duration,settings.easing,function()
					{
						
					});
					n.animate({
						'left':'0px'
					},settings.duration,settings.easing,function()
					{
						currentImage.css('left',width + 'px');
						currentImage = $(this);
					});
				},settings.interval);
			}
			
			function autoNextImage()
			{
				currentImage.animate({
					'left':'-' + width +'px'
				},settings.duration,settings.easing);
				currentImage.next().animate({
					'left':'0px'
				},settings.duration,settings.easing,function()
				{
					currentImage = $(this);
					setTimeout('autoNextImage()',4000);
				});
			}
			
			// initialise next/prev buttons
			if(next.length) {
			next.click(function()
			{
				if(animating) return false;
				animating = true;
				currentImage.next().animate({
					'left':'0px'
				},settings.duration,settings.easing,function()
				{
					currentImage = $(this);
					if(!currentImage.next().length) next.fadeOut();
					prev.fadeIn();
					animating = false;
				});
			});
			prev.click(function()
			{
				if(animating) return false;
				animating = true;
				currentImage.animate({
					'left':'720px'
				},settings.duration,settings.easing,function()
				{
					if($(this).prev().is(':first-child'))
					{
						 prev.fadeOut();
					} else currentImage = $(this).prev();
					next.fadeIn();
					animating = false;
				})
			});
			}
		});
	};
})(jQuery);
