//Slideshow

$(document).ready(function() {
	slideshow('div.slideshow', 7000);
});

function slideshow(tag, delay){
	
	// Variables
	var slideshow = $(tag);
	var slider;
	var content;
	var slides = slideshow.children();
	var nav;
	var li ="";
		
	var intervalId;
	var currentSlide = 0;
	var totalSlides = slides.length;
		
	if(totalSlides > 1){ 
		
		// Build Slider and Nav
		
		slides.wrapAll('<div class="slideshow-slider" />');
		slider = $('div.slideshow-slider', slideshow);
		
		slides.wrapAll('<div class="slideshow-content" />');
		content = $('div.slideshow-content', slideshow);
		
		slideshow.append('<ul class="slideshow-nav" />');
		nav = $('ul.slideshow-nav', slideshow);
		slides.each(
			function(i){
				li += '<li><a class="slideshow-button" href="#">' + (i+1) + '</a></li>';
			}
		);
		nav.hide();
		nav.append(li);
		setNavState();
		
		// CSS
		
		slides.css({
			'display' : 'inline',
			'float' : 'left'
		});
		
		slideshow.css({
			'width' : slides.width()		  
		});
		
		slider.css({
			'overflow' : 'hidden',
			'width' : slides.width()
		});
		
		content.css({
			'width' : (slideshow.width() * totalSlides)			
		});
		
		// Mouse Events
		slideshow.hover(
			function() { pause(); nav.fadeIn();},
			function() { play(); nav.fadeOut();}
		);
		
		$(window).load(function() {
			
			
			$('a', nav).click(function(e) {
				slideTo($(e.target).parent().index());
				e.preventDefault();
				this.blur();
			});
			play();
		});
		
	}
	
	// Functions
		
	function slideTo(number) {
		currentSlide = number;
		slider.stop(true).animate({ scrollLeft: number * slides.width() }, 'slow');
		setNavState();
	}
	
	function play() {
		clearInterval(intervalId);
		intervalId = setInterval(nextSlide, delay);
	}
	
	function pause() {
		clearInterval(intervalId);
	}
		
	function nextSlide() {			
		currentSlide ++;
		if(currentSlide == totalSlides) {
			currentSlide = 0;
		}
		slideTo(currentSlide);
	}
	
	function setNavState() {
		$('li', nav).removeClass('selected');
		$('li:eq('+currentSlide+')', nav).addClass('selected');
	}
}