// JavaScript Document
var transitioning = false;
var is_auto_play;
var next_slide;
var active_slide;
var delay;
var delay_timeout;
var slide_speed;
function transition(slide_link) {
	// check 'transitioning' state to avoid multiple clicks
	if (!transitioning) {
		transitioning = true;
		kill_autoplay = true;
		// slide_link will have valz user clicked, if auto-playing, we need to populate slide_link
		if (!slide_link) {
			kill_autoplay = false;
			slide_link = $("#slideshow td.active").next().children("a");
			if (!slide_link.attr("id")) {
				slide_link = $("#slideshow td:first a");
			}
		}
		// set next_slide variable and fade that slide in
		next_slide = $("#" + slide_link.attr("id").replace("link_",""));
		if (next_slide.attr("id") != active_slide.attr("id")) {
			if (is_auto_play && kill_autoplay) {
				is_auto_play = false;
				clearTimeout(delay_timeout);	
			}
			// deactivate other link cells, and set clicked cell to active
			slide_link.parent("td").siblings().removeClass("active").end().addClass("active");
			next_slide.fadeIn(slide_speed);
			// fade out active_slide and upon completion, set next_slide to active,
			// transitioning to false, and continue auto_play if necessary
			active_slide.fadeOut(slide_speed, function() {
				active_slide = $("#" + next_slide.attr("id"));
				transitioning = false;
				if (is_auto_play) {
					auto_play();
				}
			});
		} else {
			transitioning = false;
		}
	}
}
function auto_play() {
	delay_timeout = setTimeout("transition()", delay*1000);
}
function parseSettingsJson(data) {
	if ((data.substring(0, 1) != '{') && (data.substring(0, 1) != '[')) {
		return { status: 0, data: data.length ? data : 'Unspecified error' };
	}
	return eval('(' + data + ');');
}
$(document).ready(function(){
	// initialize variables
	active_slide = $("#slide_1");
	// only continue if we have a first slide
	if (active_slide.length) {
		// get settings for slideshow
		$.ajax({
			type: "GET",
			url: 'nyumc_slideshow/get_settings',
			success: function (data) {
				// Parse back result
				var settings = parseSettingsJson(data);
				delay = parseInt(settings['delay']);
				slide_speed = settings['speed'];
				is_auto_play = parseInt(settings['auto_play']);
			},
			error: function (xmlhttp) {
				delay = 7;
				slide_speed = "normal";
				is_auto_play = true;
			},
			complete: function (XMLHttpRequest, textStatus) {
				if (is_auto_play && !transitioning) {
					auto_play();
				}
			}
		});
		// set click event for slide links
		$("#slideshow a.slide_link").click(function() {
			transition($(this));
			return false;
		});
	}
});
