var _images_loaded = new Array();
var _image_load_counter = 0;
var _current_image = 1;
var _image_rotate_interval = "";
var _previous_image = 1;
var _image_nav_clicked = false;


function load_image(src) {
	$('<img />').load(function() {
		_images_loaded[_image_load_counter] = true;
		_image_load_counter++;
	}).attr('src',src)
}

$(document).ready(function(){
	if ($('#main_image').length > 0) {
		// Your code here
		$.each(_images,function(e) {
			//$(new Image()).load(function() {
			//}).attr('src',this);
			setTimeout("load_image('"+this+"')", 1000);
			//$('<img />').attr('src',this) {
			//_images_loaded[_image_load_counter] = true;
			//_image_load_counter++;
		});
	
		// Make sure image controls are centred wrt text
		$('#image_controls').css('top', (Math.floor(($('#main_image_nav').outerHeight() - $('#image_controls').outerHeight())/2))+"px");
	
		$('#main_image_nav_left').click(function(e){
			_image_nav_clicked = true;
			stop_rotating();
			_previous_image = _current_image;
			_current_image = _current_image - 1 > 0 ? _current_image - 1 : _images.length;
			if (_images_loaded[_current_image - 1]) {
				show_image(_images[_current_image - 1]);
			}
			else {
				$('#main_image_loader').css("visibility", "visible");
				image_load_wait(_current_image, 0);
			}
			return(false);
		});
		$('#main_image_nav_right').click(function(e){
			_image_nav_clicked = true;
			stop_rotating();
			_previous_image = _current_image;
			_current_image = _current_image + 1 <= _images.length ? _current_image + 1 : 1;
			if (_images_loaded[_current_image - 1]) {
				show_image(_images[_current_image - 1]);
			}
			else {
				$('#main_image_loader').css("visibility", "visible");
				image_load_wait(_current_image, 0);
			}
			return(false);
		});
		$('#play_pause_link').click(function(e){
			if (_image_rotate_interval != "") {
				clearInterval(_image_rotate_interval);
				_image_rotate_interval = "";
				$('#play_pause_button').attr('src', $('#play_pause_button').attr('src').replace('pause', 'play'));
				$('#play_pause_button').attr('title', 'Play slideshow');
			}
			else {
				_image_nav_clicked = false;
				rotate_image(600);
				_image_rotate_interval = setInterval("rotate_image(600)", 6000);
				$('#play_pause_button').attr('src', $('#play_pause_button').attr('src').replace('play', 'pause'));
				$('#play_pause_button').attr('title', 'Pause slideshow');
			}
			return(false);
		});
	}
});

function image_load_wait(my_image, tries) {
	if (my_image != _current_image) {
		// Not what the user wants any more, give up.
		return(false);
	}
	if (tries > 50) {
		// Too many tries... (10s)
		_current_image = _previous_image;
		$('#main_image_loader').css("visibility", "hidden");
		return(false);
	}
	if (_images_loaded[my_image - 1]) {
		// Hooray, it's loaded!
		show_image(_images[_current_image - 1]);
		return(true);
	}
	tries++;
	setTimeout("image_load_wait("+my_image+","+tries+")", 200);
}	

function show_image(src,fade) {
	if (!fade) { fade = 200; }
	$('#main_image').fadeTo(fade, 0, function(e){
		$('#main_image').load(function() {
			//alert("loaded");
			$('#main_image_loader').css("visibility", "hidden");
			//$('#main_image_current').html(_current_image);
			document.getElementById('main_image_current').innerHTML = _current_image; 			// I detest using "innerHTML", but using "html()" crashes Safari 1.3 and 2 :(
			var leftnav = _current_image - 1 > 0 ? _current_image - 1 : _images.length;
			var rightnav = _current_image + 1 <= _images.length ? _current_image + 1 : 1;
			$('#main_image_nav_left').attr('href', $('#main_image_nav_left').attr('href').replace(/[0-9]+$/, leftnav));
			$('#main_image_nav_right').attr('href', $('#main_image_nav_right').attr('href').replace(/[0-9]+$/, rightnav));
		}).attr('src',_images[_current_image - 1]).attr('width',_image_widths[_current_image - 1]).attr('height',_image_heights[_current_image - 1]).fadeTo(fade, 1);
	});
	$('#main_image_caption').fadeTo(fade, 0, function(e){
		//$('#main_image_caption').html('<p>'+_image_captions[_current_image - 1]+'</p>');
		document.getElementById('main_image_caption').innerHTML = '<p>'+_image_captions[_current_image - 1]+'</p>';
	}).fadeTo(fade,1);

}
function stop_rotating() {
	// Someone's clicked, so stop rotating images...
	$('#play_pause_button').attr('src', $('#play_pause_button').attr('src').replace('pause', 'play'));
	$('#play_pause_button').attr('title', 'Play slideshow');
	$('#play_pause_link').css({outline:0});
	clearInterval(_image_rotate_interval);
	_image_rotate_interval = "";
}

function rotate_image(fade) {
	if (_image_nav_clicked) {
		return;
	}
	_previous_image = _current_image;
	_current_image = _current_image + 1 <= _images.length ? _current_image + 1 : 1;
	if (_images_loaded[_current_image - 1]) {
		show_image(_images[_current_image - 1], fade);
	}
	else {
		return;
	}
}

