var anim_speed = 1200;
var delay = 4000;
var added_delay_long = 6000; // delay + added_delay_long = delay for long images
var out_delay = 1000;
var current_image = 0;
var images_count = -1;
var timer_id = -1;
var has_init = false;
var is_started = false;
var timer_stopped = true;
var is_hover = false;

function startSlideShow(reset){
	if(!($("#slideshow_frame_images").size()))
		return false;
	
	if(!has_init || reset)
	{
		
		//init
		current_image = 0;
		is_hover = false;
		images_count = $("#slideshow_frame_images > .slide_photo").size();
		
		$("#slide_back").css('opacity', 0);
		$("#slide_next").css('opacity', 0);
		
		$("#slideshow_frame").unbind('hover');
		
		setTimeout(function(){
		$("#slideshow_frame").hover(function(){
				//in
				is_hover = true;
				showArrows();
				stopTimer();
			},function(){
				//out
				is_hover = false;
				hideArrows();
				startTimer(out_delay);
			});
		}, 2000);
			$("#slide_back").click(function(event){
				event.preventDefault();
				stopTimer();
				current_image -= 2;
				if(current_image < 0)
					current_image = images_count + current_image; // "+" because current_image is negative
				switchImage(true);
				startTimer();
			});
			$("#slide_next").click(function(event){
				event.preventDefault();
				stopTimer();
				switchImage(true);
				startTimer();
			});
		has_init = true;
	}
	if(!is_started)
	{
		is_started = true;
		switchImage(true);
		startTimer(delay + added_delay_long);
	}
	return true;
}

function stopSlideShow(hideImgs)
{
	if(!($("#slideshow_frame_images").size()))
		return;
	
	stopTimer();
	
	$("#slideshow_frame").unbind('hover');
	
	hideArrows();
	
	is_started = false;
	
	if(hideImgs)
	{
		$("#slideshow_frame_images > .slide_photo").stop().animate({opacity:0}, anim_speed, "linear", function(){$(this).css('display', 'none');});
		
	}
}

function showArrows()
{
	if(is_started)
	{
		$("#slide_back").stop().css('display', 'inline').animate({left:0, opacity:1}, "fast");
		$("#slide_next").stop().css('display', 'inline').animate({right:0, opacity:1}, "fast");
	}
}

function hideArrows()
{
	if(is_started)
	{
		$("#slide_back").stop().animate({left:-10, opacity:0}, "fast", "linear", function(){$(this).css('display', 'none');});
		$("#slide_next").stop().animate({right:-10, opacity:0}, "fast", "linear", function(){$(this).css('display', 'none');});
	}
}

function startTimer(customDelay)
{
	if(timer_stopped && is_started)
	{
		if(customDelay)
		{
			timer_id = setTimeout(tick, customDelay);
		}
		else
		{
			if(current_image === 1)
				timer_id = setTimeout(tick, delay + added_delay_long);
			else
				timer_id = setTimeout(tick, delay);
		}
		timer_stopped = false;
	}
}

function stopTimer()
{
	if(!timer_stopped)
	{
		clearTimeout(timer_id);
		timer_stopped = true;
	}
}

function tick()
{
	timer_stopped = true;
	if(switchImage())
	{
		startTimer();
	}
}

function switchImage(force)
{
	if(force!==true && (is_hover || !is_started) )
		return false;
	
	current_image++;
	if(current_image > images_count)
		current_image = 1;
	
	$("#slideshow_frame_images > .slide_photo").stop().animate({opacity:0}, anim_speed, "linear", function(){$(this).css('display', 'none');});
	
	$("#slideshow_frame_images > .slide_photo:nth-child(" + current_image + ")").stop().css('display', 'inline').animate({opacity:1}, anim_speed);
	
	return true;
}
