function galleryTransformImage(image_key, transform, extra_args) {
	var request = getXmlHttpRequest();

	request.onreadystatechange = function stateChangeHandler() {
		if (request.readyState != 4)
			return;

		if (request.status == 200) {
			document.getElementById('gallery_display_image_container').innerHTML = request.responseText;
			return;
		}

		alert('An error occurred while reading the response from the server.  Reload the page to try again.');
	}

	request.open('GET', '../gallery/transform-image.php?i=' + image_key + '&transform=' + transform + '&javascript=1' + extra_args, true);
	request.send(null);
}

function galleryPopupSlideshow(gallery_key) {
	var popup = window.open('../gallery/slideshow.php?g=' + gallery_key, 'slideshow', 'scrollbars=1,resizable=1,width=640,height=720');
}

function galleryUpdateSlideshow(gallery_key, image_key) {
	var request = getXmlHttpRequest();

	request.onreadystatechange = function stateChangeHandler() {
		if (request.readyState != 4)
			return;

		if (request.status == 200) {
			var response_array = request.responseText.split('/');
			var next_image_key = response_array[0];
			var next_image_checksum = response_array[1];

			document.getElementById('gallery_slideshow_loading').innerHTML = 'Loading... ';

			var timer = new Date();
			var start = timer.getTime();

			var img = new Image();
			img.src = 'display.php?i=' + next_image_key + '&checksum=' + next_image_checksum;
			img.onload = function onLoadHandler() {
				galleryUpdateSlideshowHelper(gallery_key, next_image_key, start);
			}
			return;
		}

		alert('An error occurred while reading the response from the server.  Reload the page to try again.');
	}

	request.open('GET', '../gallery/slideshow.php?g=' + gallery_key + '&i=' + image_key + '&javascript=1&next=1', true);
	request.send(null);
}

function galleryUpdateSlideshowHelper(gallery_key, image_key, start) {
	var request = getXmlHttpRequest();

	request.onreadystatechange = function stateChangeHandler() {
		if (request.readyState != 4)
			return;

		if (request.status == 200) {
			var response = request.responseText;

			var timer = new Date();
			var stop = timer.getTime();

			document.getElementById('gallery_slideshow_loading').innerHTML = '';

			var time_elapsed = stop - start;
			var time_left = 3000 - time_elapsed;

			if (time_left < 0)
				time_left = 0;

			UpdateSlideshow_response = response;
			UpdateSlideshow_gallery_key = gallery_key;
			UpdateSlideshow_image_key = image_key;

			setTimeout("document.getElementById('embedded_body').innerHTML = UpdateSlideshow_response; galleryUpdateSlideshow(UpdateSlideshow_gallery_key, UpdateSlideshow_image_key);", time_left);
			return;
		}

		alert('An error occurred while reading the response from the server.  Reload the page to try again.');
	}

	request.open('GET', '../gallery/slideshow.php?g=' + gallery_key + '&i=' + image_key + '&javascript=1', true);
	request.send(null);
}

function galleryPopupImageChooser(gallery_key) {
	var popup = window.open('../gallery/image-chooser.php?g=' + gallery_key, 'image_chooser', 'scrollbars=1,resizable=1,width=640,height=480');
}

function galleryUpdateImageChooser(gallery_key) {
	var request = getXmlHttpRequest();

	request.onreadystatechange = function stateChangeHandler() {
		if (request.readyState != 4)
			return;

		if (request.status == 200) {
			document.getElementById('embedded_body').innerHTML = request.responseText;
			return;
		}

		alert('An error occurred while reading the response from the server.  Reload the page to try again.');
	}

	request.open('GET', '../gallery/image-chooser.php?g=' + gallery_key + '&javascript=1', true);
	request.send(null);
}

function galleryChooseImage(image_key, height, width) {
	self.opener.document.getElementById('gallery_edit_highlight_input').value = image_key;
	self.opener.document.getElementById('gallery_edit_highlight_image').src = '../gallery/thumb.php?i=' + image_key;
	self.opener.document.getElementById('gallery_edit_highlight_image').height = height;
	self.opener.document.getElementById('gallery_edit_highlight_image').width = width;
	self.close();
}

var UpdateSlideshow_response;
var UpdateSlideshow_gallery_key;
var UpdateSlideshow_image_key;

