$(document).ready(function() {
	var additional_slides_urls = ["/uploads/simple-jquery-slideshows/chinchilla.jpg",
			"/uploads/simple-jquery-slideshows/donkey.jpg",
			"/uploads/simple-jquery-slideshows/penguin.jpg",
			"/uploads/simple-jquery-slideshows/skunk.jpg",
			"/uploads/simple-jquery-slideshows/squirrel.jpg",
			"/uploads/simple-jquery-slideshows/walrus.jpg"];

	var slideshow_speed = 3500;
	var animation_speed = 600;

	var sync_slideshow_container = $("#sync_slideshow");
	var sync_slideshow_indicator = $("span", sync_slideshow_container);
	var sync_slide1_container = $("div:first", sync_slideshow_container);
	var sync_slide2_container = $("div:last", sync_slideshow_container);

	var sync_slides = [$("img", sync_slide1_container), $("img", sync_slide2_container)];

	$.each(additional_slides_urls, function(index, url) {
				var img = $(new Image());
				img.load(function() {
							sync_slides[index + 2] = img;
						}).attr("src", url);
			});

	var sync_timer;

	$(".start_button", sync_slideshow_container).click(function() {
				if (additional_slides_urls.length >= 2) {
					sync_timer = setInterval(sync_slides_update, slideshow_speed);
					sync_slideshow_indicator.text("[ Running ]");
				}
				return false;
			});

	$(".stop_button", sync_slideshow_container).click(function() {
				clearInterval(sync_timer);
				sync_slideshow_indicator.text("[ Stopped ]");
				return false;
			});

	var sync_slide_counter = 2;

	function sync_slides_update() {
		var counter;
		var slide1;
		var slide2;

		if (sync_slide_counter == additional_slides_urls.length + 1) {
			slide1 = sync_slides[sync_slide_counter];
			slide2 = sync_slides[0];
			sync_slide_counter = -1;
		}
		else {
			if (sync_slide_counter == additional_slides_urls.length + 2) sync_slide_counter = 0;
			slide1 = sync_slides[sync_slide_counter];
			slide2 = sync_slides[sync_slide_counter + 1];
		}

		var change_slides = setInterval(function() {
					if (slide1 && slide2) {
						clearInterval(change_slides);
						sync_animate(slide1, sync_slide1_container);
						sync_animate(slide2, sync_slide2_container);
					}
				}, 200);

	};

	function sync_animate(next_slide, container) {
		var slide_container = container;
		var current_slide = $("img", slide_container);
		var slide = next_slide;

		slide.hide();

		current_slide.fadeOut(animation_speed, function() {
					slide_container.append(slide);
					slide.fadeIn(animation_speed);
					current_slide.remove();
					sync_slide_counter++;
				});
	};


	var alt_slideshow_container = $("#alt_slideshow");
	var alt_slideshow_indicator = $("span", alt_slideshow_container);
	var alt_slide1_container = $("div:first", alt_slideshow_container);
	var alt_slide2_container = $("div:last", alt_slideshow_container);

	var alt_slides = [$("img", alt_slide1_container), $("img", alt_slide2_container)];

	$.each(additional_slides_urls, function(index, url) {
				var img = $(new Image());
				img.load(function() {
							alt_slides[index + 2] = img;
						}).attr("src", url);
			});

	var alt_timer;

	$(".start_button", alt_slideshow_container).click(function() {
				if (additional_slides_urls.length >= 2) {
					alt_timer = setInterval(alt_slides_update, slideshow_speed);
					alt_slideshow_indicator.text("[ Running ]");
				}
				return false;
			});

	$(".stop_button", alt_slideshow_container).click(function() {
				clearInterval(alt_timer);
				alt_slideshow_indicator.text("[ Stopped ]");
				return false;
			});

	var alt_slide_counter = 1;
	var slide_is_ready = true;

	var alt_slides_update = function() {
		if (slide_is_ready) {
			slide_is_ready = false;
			alt_slide_counter++;

			var slide;
			if (alt_slide_counter == additional_slides_urls.length + 2) alt_slide_counter = 0;
			slide = alt_slides[alt_slide_counter];

			var change_slides = setInterval(function() {
						if (slide) {
							clearInterval(change_slides);
							if (alt_slide_counter % 2 == 1)
								alt_animate(slide, alt_slide2_container);
							else
								alt_animate(slide, alt_slide1_container);
						}
					}, 200);
		} else
			setTimeout(alt_slides_update, 200);
	};

	function alt_animate(next_slide, container) {
		var slide_container = container;
		var current_slide = $("img", slide_container);
		var slide = next_slide;

		slide.hide();

		current_slide.fadeOut(animation_speed, function() {
					slide_container.append(slide);
					slide.fadeIn(animation_speed, function() {
								slide_is_ready = true;
							});
					current_slide.remove();
				});
	};

});