(function () {

	/* STATE ACTION LAYOUT */
	
		var stateClass = ['zero', 'one', 'two', 'three', 'four', 'five', 'six'],
			stateWrapper = $('#primaryContent .states');
		if (stateWrapper.length) {
			var stateCnt = stateWrapper.find('.state').length;
			stateWrapper.addClass(stateClass[stateCnt]);
			if (stateCnt === 0) {
				$('#statesHeader').remove();
				stateWrapper.remove();
			}
		}

	/* SLIDESHOW */

		/* CONFIG */
		
		var transitionInterval = 8000,
			slideAnimationDuration = 750;
		
		/* END CONFIG */
	
		// helpful global variables
		var slideshow = $('#slideshow'),
			slidesCnt = slideshow.find('.slide').length,
			currentSlide = 1,
			oldSlide = 1,
			sT,
			goTo = false,
			animating = false;
			
		// show first slide (mainly for IE)
		slideshow.find('.slide:eq(0)').show();
			
		// only do slideshow if more than one slide
		if (slidesCnt > 1) {

			// show slide navigation
			var slideNav = $('#slideshow .nav').show().find('li:eq(0)').addClass('on').end();		
			
			// 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('.slide:eq(' + (oldSlide - 1) + ')').fadeOut(slideAnimationDuration);
				slideshow.find('.slide: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);
		}

})();
