// JavaScript Document

var s_OPT = null;
var s_position = 0;
var s_length = 0;
var s_currentId = '';
var s_request = null;
var s_imageSet = null;
var s_slideIdPrefix = 'slide_';
var s_isSetUp = false;
var s_isOpen = false;
var s_gallery = null;
var s_loaded_callback = null;
var s_months = ["", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];

var s_setup = function(OPT) {
	if(!s_isSetUp) {
		s_OPT = OPT;
		$('#' + s_OPT.slideContainer).append('<div id="' + s_slideIdPrefix + 'splash" class="' + s_OPT.slideClass + '"><img src="' + s_OPT.iRoot + 'splash.gif" alt="Party Animals" /></div>');
		$('#' + s_OPT.slideContainer).append('<div id="' + s_slideIdPrefix + 'loading" class="' + s_OPT.slideClass + '"><img src="' + s_OPT.iRoot + 'loading.gif" alt="Loading" /></div>');
		$('#' + s_OPT.slideContainer).append('<div id="' + s_slideIdPrefix + 'error" class="' + s_OPT.slideClass + '"><img src="' + s_OPT.iRoot + 'error.gif" alt="Error" /></div>');
		s_showSlide("splash");
		s_isSetUp = true;
	}
};
		
var s_loadGallery = function(gallery, callback) {
	s_isOpen = false;
	s_loaded_callback = callback;
	if(s_request) { s_request.abort(); }
	s_gallery = {
		date: $(gallery).attr("date"),
		title: $(gallery).attr("title"),
		loc: $(gallery).attr("loc"),
		site: $(gallery).attr("site"),
		desc: $(gallery).attr("desc"),
		caption: $(gallery).attr("caption"),
		href: $(gallery).attr("href"),
		hreftext: $(gallery).attr("hreftext"),
		image: $(gallery).attr("image")
	};
	s_showSlide("loading");
	s_request = $.ajax({
		url: s_OPT.gRoot + s_gallery.loc + "/imageset.xml",
		type: "GET",
		dataType: "xml",
		cache: false,
		success: function(data, txtStatus) {
			s_loadSuccess(data);
		},
		error: function(req, txtStatus, errThrown) {
			if(req.readyState > 0) { s_loadFail(); }
		}
	});
};
		
var s_getInfo = function() {
	return {
		galleryLength: s_length,
		galleryPosition: s_position
	};
};

var s_nextSlide = function() {
	var nxt = s_position + 1;
	if(nxt > (s_length - 1)) { nxt = 0; }
	s_goTo(nxt);
};

var s_prevSlide = function() {
	var pre = s_position - 1;
	if(pre < 0) { pre = s_length - 1; }
	s_goTo(pre);
};

var s_goTo = function(n) {
	if(s_isOpen) {
		if(n < 0) { n = 0; }
		if(n > (s_length - 1)) { n = s_length - 1; }
		s_position = n;
		s_showSlide(n);
		var image = $(s_imageSet)[n];
		var caption = $(image).attr("caption") ? $(image).attr("caption") : s_gallery.caption;
		$('#' + s_OPT.captionContainer).empty().append('<span class="slide-number">' + parseInt(s_position + 1) + '/' + s_length + ':</span> ' + caption + ' (Photo: ' + $(image).attr("name") + ')');
	}
};

var s_loadSuccess = function(data) {
	s_imageSet = $(data).find("image");
	s_length = $(s_imageSet).length;
	s_position = 0;
	s_updateSlides();
	s_isOpen = true;
	s_goTo(0);
	if($.isFunction(s_loaded_callback)) { s_loaded_callback(s_gallery.loc); };
};

var s_updateSlides = function() {
	$('.tempslide').remove();
	var galleryLocation = s_OPT.gRoot + s_gallery.loc + "/";
	$(s_imageSet).each(function(i) {
		var fname = galleryLocation + $(this).attr("name");
		var caption = $(this).attr("caption");
		if(!caption) { caption = s_gallery.caption; }
		$('#' + s_OPT.slideContainer).append('<div id="' + s_slideIdPrefix + i + '" class="tempslide ' + s_OPT.slideClass + '"><img src="' + fname + '" alt="' + caption + '" /></div>');
	});
	$('#' + s_OPT.titleContainer).empty().append(s_gallery.title);
	$('#' + s_OPT.infoContainer).empty().append('<p>Date: ' + s_dateAsReadable(s_gallery.date) + '</p><p>' + s_gallery.desc + '</p>');
	if(s_gallery.href) {
		$('#' + s_OPT.infoContainer).append('<p><a href="' + s_gallery.href + '"><img width="110" height="32" src="images/buy.gif" alt="' + s_gallery.hreftext + '" /></a></p>');
	}
};

var s_loadFail = function() {
	s_showSlide("error");
};

var s_dateAsReadable = function(dateStr) {
	return dateStr.substr(6, 2) + " " + s_months[parseInt(dateStr.substr(4, 2), 10)] + " " + dateStr.substr(0, 4);
};

var s_showSlide = function(slideSuffix) {
	s_currentId = s_slideIdPrefix + slideSuffix;
	$('#' + s_OPT.slideContainer).fadeOut("fast", function() {
		$('.' + s_OPT.slideClass).hide();
		$('#' + s_currentId).show();
		$('#' + s_OPT.slideContainer).fadeIn("fast");
	});
};
