var curSlide = 0;
var fadeDuration = 800;
var slideHoldDuration = 5000;
var slideTimeout;
var $slides, $dots;
var transitioning = false;
var mouseOverSlide = false;

var qlDuration = 400;

jQuery(document).ready(function () {
	$slides = $('#holder').find('.slide');
	
	if (0 < $slides.length)
	{
		slideTimeout = setTimeout(function () { nextSlide(curSlide + 1); }, slideHoldDuration);

		$dots = $('#dots').find('.dot');
		$('#dots').delegate('.dot', 'click', function (e) {
			var $this = $(this);

			if ($this.hasClass('active'))
			{
				return false;
			}

			var idx = $this.index();

			nextSlide(idx);

			return false;
		});

		$('#holder').bind('mouseenter', function (e) {
			window.clearTimeout(slideTimeout);
			mouseOverSlide = true;
			return false;
		}).bind('mouseleave', function (e) {
			slideTimeout = setTimeout(function () { nextSlide(curSlide + 1); }, slideHoldDuration);
			mouseOverSlide = false;
			return false;
		});
	}

	$('.quick-links').delegate('li.ql > span', 'click', function (e) {
		var $this = $(this).parents('.ql');

		if ($this.find('div.items').hasClass('open'))
		{
			$this.find('div.items').slideUp(qlDuration, function (e) { $this.find('div.items').removeClass('open'); $this.find('.toggle').html('[ + ]'); });
		}
		else
		{
			$this.find('div.items').slideDown(qlDuration, function (e) { $this.find('div.items').addClass('open'); $this.find('.toggle').html('[ &#8211; ]'); });
		}

		return false;
	});
});

function nextSlide(next)
{
	if (transitioning)
	{
		return false;
	}
	transitioning = true;
	window.clearTimeout(slideTimeout);
	var $ = jQuery;
	var $cur = $slides.eq(curSlide);
	if ($slides.length <= next)
	{
		next = 0;
	}
	if (0 > next)
	{
		next = $slides.length - 1;
	}
	var $next = $slides.eq(next);

	$cur.css({ opacity: 1 }).animate(
		{
			opacity: 0
		},
		{
			duration: fadeDuration
		}
	);
	$next.css({ opacity: 0 }).animate(
		{
			opacity: 1
		},
		{
			complete: function ()
			{
				$cur.removeClass('active');
				$next.addClass('active');

				curSlide = next;
				if ( ! mouseOverSlide)
				{
					slideTimeout = setTimeout(function () { nextSlide(curSlide + 1); }, slideHoldDuration);
				}
				transitioning = false;
			},
			duration: fadeDuration
		}
	);

	$dots.eq($cur.index()).removeClass('active');
	$dots.eq($next.index()).addClass('active');
}

