(function () {

	/* SLIDESHOW */

		/* CONFIG */
		
		var transitionInterval = 10000,
			slideAnimationDuration = 750;
		
		/* END CONFIG */
	
		// helpful global variables
		var slideshow = $('#slideshow'),
			slidesCnt = slideshow.find('.slides li').length,
			currentSlide = 1,
			oldSlide = 1,
			sT,
			goTo = false,
			animating = false;
			
		// show first slide (mainly for IE)
		slideshow.find('.slides li:eq(0)').show();
			
		// only do slideshow if more than one slide
		if (slidesCnt > 1) {

			// create indicators
			var slideNav = $('<ul class="slideNav"></ul>').appendTo(slideshow);
			for (var i = 1, tmp = ''; i <= slidesCnt; i++) {
				var on = i == 1 ? 'class="on"' : '';
				tmp += '<li ' + on + '><a href="#' + i + '">Slide ' + i + '</a></li>';
			}
			slideNav.hide().html(tmp).css('left', 320 - (slideNav.width()/2)).show();
		
			// do transition
			function transition() {
				animating = true;
				
				// figure out which slide to go to
				oldSlide = currentSlide;
				currentSlide = goTo ? goTo : (currentSlide === slidesCnt ? 1 : parseInt(currentSlide, 10) + 1);
				
				// animate elements
				slideshow.find('.slides li:eq(' + (oldSlide - 1) + ')').fadeOut(slideAnimationDuration);
				slideshow.find('.slides li:eq(' + (currentSlide - 1) + ')').fadeIn(slideAnimationDuration, function () {
					animating = false;	
				});
				slideNav.find('li:eq(' + (oldSlide - 1) + ')').removeClass('on');
				slideNav.find('li:eq(' + (currentSlide - 1) + ')').addClass('on');
				
				if (!goTo) {
					sT = setTimeout(transition, transitionInterval);
				}
			}
			
			// handle slide nav clicks
			slideNav.find('a').click(function (evt) {
				evt.preventDefault();
				if ($(this).parent().hasClass('on') || animating) {
					return;
				}
				clearTimeout(sT);
				goTo = this.href.split('#')[1];
				transition();
			});
			
			// begin slideshow
			sT = setTimeout(transition, transitionInterval);
		}

})();

