jQuery(document).ready(function($) {
	var gallery = $('#gallery_images');
	var controls = $('#gallery_nav');
	var first_page = $('.first_page');
	var prev_page = $('.previous_page');
	var last_page = $('.last_page');
	var next_page = $('.next_page');
	var pause = $('.pause');
	var play = $('.play');
	var pagination = $('.pagination');
	var page_on;
	var playing = true;
	var timeout = null;
	
	var images = gallery.find('> img').hide();
	
	images.each(function(i) {
		var i_string = i+1;
		if (i_string < 10) {
			i_string = "0" + i_string;
		}
		pagination.append($('<li>' + i_string + '</li>').data('i', i));
	});
	
	function show(i) {
		pagination.find('li').removeClass('active');
		prev_page.removeClass('disabled');
		next_page.removeClass('disabled');

		if (i == 0) {
			prev_page.addClass('disabled');	
		} else if (i == images.size()-1) {
			next_page.addClass('disabled');	
		}
		
		pagination.find('li').eq(i).addClass('active');
		images.filter(':visible').fadeOut('slow');
		page_on = i;
		images.eq(page_on).fadeIn('slow');
		
		setNextTimeout();
	}
	
	function setNextTimeout() {
		clearTimeout(timeout);
		timeout = setTimeout(function() {
			if (playing == true) {
				var next = page_on+1;
				next %= images.size();
				show(next);
			}
		}, 3000);
	}
	
	pagination.find('li').click(function() {
		playing = false;
		setPlayClass();
		show($(this).data('i'));
	});
	
	next_page.click(function() {
		if ($(this).hasClass('disabled')) {
			return false;
		}
		playing = false;
		setPlayClass();
		page_on += 1;
		show(page_on);
		return false;
	});
	
	prev_page.click(function() {
		if ($(this).hasClass('disabled')) {
			return false;
		}
		playing = false;
		setPlayClass();
		page_on -= 1;
		show(page_on);
		return false;
	});
	
	play.click(function() {
		playing = playing == true ? false : true;	
		if (playing) {
			setNextTimeout();	
		}
		setPlayClass();
	});
	
	function setPlayClass() {
		play.removeClass('playing').removeClass('paused');
		play.addClass(playing ? 'playing' : 'paused');
	}
	
	controls.fadeIn('fast');
	controls.css('bottom', -23);
	controls.animate({bottom: 0}, 300);
	show(0);
});
