var currentIndex = 0;
var actualIndex = 0;
var noImages = 0;
var incrementValue = 0;
var timer = false;

var animActivity = false;
var animState = false;
var animTime = 800;
var animTimeout = 5000;
var animEasing = 'linear';

var currentPos = 0;
var overLimit = false;

function initGalleryCarousel()
{
	stopTimer();
	
	//calculate number of items
	noImages = $('.gallery .slider-holder li').size();
	
	if(noImages  > 1)
	{
		animActivity = true;
		
		//make sure gallery is relative
		$(".gallery").css('position', 'relative');
		
		//the increment value
		incrementValue = $('.gallery').width();
		
		//wrap gallery
		var list = $(".gallery").html();
		$(".gallery").html('<div class="slider-wrap">'+list+'</div>');
		$(".gallery .slider-holder").css('overflow', 'visible');
		$(".gallery .slider-holder").css('position', 'absolute');
		$(".gallery .slider-holder").css('left', 0);
		$(".gallery .slider-holder").width(incrementValue*(noImages+1));
		currentIndex = 0;

		//update navigation
		addButtons();
		
		startTimer();
	}
	
	updateNavigation();
}

/////////////////////////////
// TIMER FUNC
/////////////////////////////

function startTimer()
{
	animState = "pause";
	timer = setTimeout("doTimerSlide()", animTimeout);
}

function stopTimer()
{
	currentPos = 0;
	animState = "stopped";
	animActivity = false;
	clearTimeout(timer);
}

function doTimerSlide()
{
	incrementSlide(1);
}

/////////////////////////////
//SLIDE FUNC
/////////////////////////////

function onSlideComplete()
{
	if(overLimit)
	{
		if(actualIndex == noImages)
		{
			currentIndex = 0;
			currentPos = 0;
			$('.gallery .slider-holder li:last').remove();
			
		}
		else if(actualIndex < 0)
		{
			currentIndex = noImages-1;
			currentPos = -currentIndex*incrementValue;
			$('.gallery .slider-holder li:first').remove();
		}
		$('.gallery .slider-holder').css('left', currentPos);
		overLimit = false;
	}

	updateNavigation();
	startTimer();
}

function doSlide()
{
	animState = "playing";
	$('.gallery .slider-holder').animate({"left":currentPos+"px"}, animTime, animEasing, onSlideComplete);
}

/////////////////////////////
//PROCESSING FUNC
/////////////////////////////

function incrementSlide(value)
{
	if(animState == "pause")
	{
		clearTimeout(timer);
		currentIndex+=value;
		actualIndex = currentIndex;
		
		//process new position
		currentPos-= incrementValue*value;
		
		if(currentIndex == noImages)
		{
			currentIndex = 0;
			overLimit = true;
			$('.gallery .slider-holder li:first').clone().appendTo('.gallery .slider-holder');
		}
		else if(currentIndex < 0)
		{
			currentIndex = (noImages-1);
			overLimit = true;
			$('.gallery .slider-holder li:last').clone().prependTo('.gallery .slider-holder');
			$('.gallery .slider-holder').css('left', incrementValue*value);
			currentPos = 0;
		}
		doSlide();
	}
}

/////////////////////////////
//NAVIGATION FUNC
/////////////////////////////

function updateNavigation()
{
	if(noImages > 1)
	{
		var navstr = $('.gallery .navstr');
		if(navstr.size() > 0)
		{
			navstr.html((currentIndex+1)+'/'+noImages);
		}
		else
		{
			$(".gallery").append('<div class="navstr">'+(currentIndex+1)+'/'+noImages+'</div>');
		}
	}
}

function addButtons()
{
	if(!$(".gallery .slideshow-back-next").size())
	{
		$(".gallery").append('<ul class="slideshow-back-next"><li class="back-button"><a href="javascript:;">&nbsp;</a></li><li class="next-button"><a href="javascript:;">&nbsp;</a></li></ul>');
		$(".gallery .back-button").click(function(){incrementSlide(-1);});
		$(".gallery .next-button").click(function(){incrementSlide(1);});
	}
}

