var gallery = {

	speed		: 0.5,
	itemwidth	: 187,
	isTweening	: false,
	listitems	: new Array(),

	init: function()
	{
		$gallery	= $('.gallery');
		$list		= $gallery.find('ul');
		$listitems	= $gallery.find('ul li');

		$list.css('left','0px');

		$listitems.each(function(i)
		{
			gallery.listitems.push(this);
		});

		// Prev BTN
		$gallery.find('.next').click(function(i)
		{
			if(gallery.isTweening === false)
			{
				gallery.isTweening = true;
				$list.each(function(i)
				{
					gallery.moveLeft(this);
				});
				gallery.listitems.push(gallery.listitems.shift());
			}
		});

		// Next BTN
		$gallery.find('.prev').click(function(i)
		{
			if(gallery.isTweening === false)
			{
				gallery.isTweening = true;
				$list.each(function(i)
				{
					gallery.moveRight(this);
				});

				$list.prepend(gallery.listitems[gallery.listitems.length-1]);
				gallery.listitems.unshift(gallery.listitems.pop());
			}
		});
	},
	moveLeft: function(list)
	{
		var leftpos	= gallery.getLeftPosition();
		var newpos	= leftpos - gallery.itemwidth;

		JSTweener.addTween(list.style,
		{
			time		: gallery.speed,
			left		: newpos,
			transition	: 'easeOutSine',
			suffix		: { left: 'px' },
			onComplete	: function()
			{
				$.each(gallery.listitems, function(index, item)
				{
					if(index >= 3)
					{
						$list.append($(item));
					}
				});
				$list.css('left',leftpos);

				gallery.isTweening	= false;
			}
		});
	},
	moveRight: function(list)
	{
		var leftpos	= gallery.getLeftPosition();
		$list.css('left',leftpos - gallery.itemwidth);

		JSTweener.addTween(list.style,
		{
			time		: gallery.speed,
			left		: leftpos,
			transition	: 'easeOutSine',
			suffix		: { left: 'px' },
			onComplete	: function()
			{
				gallery.isTweening	= false;
			}
		});
	},
	getLeftPosition: function()
	{
		return parseInt( $list.css('left') );
	}
}

$(document).ready(function()
{
	gallery.init();
});
