jQuery.createXMLDocument = function(string) {
	var browserName = navigator.appName;
	var doc;
	if (browserName == 'Microsoft Internet Explorer') {
		doc = new ActiveXObject('Microsoft.XMLDOM');
		doc.async = 'false'
		doc.loadXML(string);
	} 
	else {
		doc = (new DOMParser()).parseFromString(string, 'text/xml');
	}
	
	return doc;
}


$(document).ready(function() {
	load_albums();
});



function load_albums() {
	start_loader();
	var url = "photos_support/load.php";
	
	$.get(url, {r:'albums'}, function(data) {
		
		var xml = $.createXMLDocument(data);
		
		$('album', xml).each(function(i) {
			
			var album_name = $(this).text();
			
			var li = $('<li/>');
			
			var a = $('<a/>');
			a.attr('href', album_name);
			a.html(album_name.substr(album_name.indexOf('.') + 1));
			a.bind('click', load_album);
			
			li.append(a);
			
			$('#photo_albums').append(li);
		});
		
		$('#photo_albums li:first a').click();
	});
}



function load_album() {
	start_loader();
	
	var url = "photos_support/load.php";
	var album_name = $(this).attr('href');
	
	
	$('#photo_albums li a.selected').removeClass('selected');
	$(this).addClass('selected');
		
	$.get(url, {r:'photos', a:album_name}, function(data) {
		
		$('#current_album').html('');
		
		var xml = $.createXMLDocument(data);
		if (xml != undefined || xml != false || $xml != null) {		
			$('photo', xml).each(function() {
				var name = $(this).attr('url');
				var path = 'photos/' + album_name + '/' + name;
				
				var photo = $('<img/>');
				photo.addClass('thumbnail');
				photo.attr('src', path);
				photo.attr('title', 'click to enlarge photo');
				photo.bind('click', load_photo);
				
				$('#current_album').append(photo);
			});
		}
		
		end_loader();
	});
	
	return false;
}




function load_photo() {
	$(this).addClass('selected_photo');
	var photo_url = $(this).attr('src').replace('.thumb','');
	
	
	
	// make curtain
	var curtain = $('<div/>');
	curtain.attr('id', 'curtain');
	curtain.attr('title', 'go back to the gallery');
	curtain.css('opacity', 0);
	//curtain.bind('click', close_photo);
	
	
	
	
	// make photo controls
	var controls = $('<div/>');
	controls.attr('id', 'controls');
	
	var close = $('<a/>');
	close.attr('id','close');
	close.attr('href','#');
	close.attr('title', 'go back to the gallery');
	close.addClass('button');
	close.bind('click', close_photo);
	close.appendTo(controls);
	
	var next = $('<a/>');
	next.attr('id', 'next');
	next.attr('href','#');
	next.attr('title', 'go to the next photo');
	next.addClass('button');
	if ($(this).next().hasClass('thumbnail') == false) {
		next.addClass('disabled');
	}
	next.bind('click', next_photo);
	next.appendTo(controls);
	
	var prev = $('<a/>');
	prev.attr('id','prev');
	prev.attr('href','#');
	prev.attr('title', 'go to the previous photo');
	prev.addClass('button');
	if ($(this).prev().hasClass('thumbnail') == false) {
		prev.addClass('disabled');
	}
	prev.bind('click', prev_photo);
	prev.appendTo(controls);
	
	var show = $('<a/>');
	show.attr('id','slideshow');
	show.attr('href','#');
	show.attr('title', 'start slideshow mode');
	show.addClass('button');
	show.bind('click', slideshow);
	show.appendTo(controls);
	
	
	
	
	// make full size photo
	var photo = $('<img/>');
	photo.attr('id', 'fullsize');
	photo.attr('src', photo_url);
	//photo.bind('click', close_photo);
	photo.appendTo(curtain);
	
	
	
	
	// append DOM elements
	controls.appendTo(curtain);
	curtain.appendTo('body').fadeTo(400, 1);
	
	
}






function close_photo() {
	$('.selected_photo').removeClass('selected_photo');
	$('#curtain').fadeOut(900, function() {
		$(this).remove();
	});
	return false;
}
function next_photo() {
	if ($(this).hasClass('disabled')) {
		return false;
	}
	
	$('#fullsize').hide();
	
	var current_photo = $('#current_album .selected_photo');
	var next_photo = $(current_photo).next();
	
	
	
	var image = new Image(800, 600);
	image.onload = function() {
		current_photo.removeClass('selected_photo');
		next_photo.addClass('selected_photo');
		
		$('#fullsize').attr('src',this.src);
		$('#fullsize').show();
	};
	image.src = next_photo.attr('src').replace('.thumb', '');

	
	$('#prev').removeClass('disabled');
	$('#next').removeClass('disabled');
	if (next_photo.next().hasClass('thumbnail') == false) {
		$(this).addClass('disabled');
	}
	
	
	return false;
}
function prev_photo() {
	if ($(this).hasClass('disabled')) {
		return false;
	}
	
	$('#fullsize').hide();
	
	var current_photo = $('#current_album .selected_photo');
	var prev_photo = $(current_photo).prev();
	
	
	
	var image = new Image(800, 600);
	image.onload = function() {
		current_photo.removeClass('selected_photo');
		prev_photo.addClass('selected_photo');
		
		$('#fullsize').attr('src',this.src);
		$('#fullsize').show();
	};
	image.src = prev_photo.attr('src').replace('.thumb', '');
	
	$('#prev').removeClass('disabled');
	$('#next').removeClass('disabled');
	if (prev_photo.prev().hasClass('thumbnail') == false) {
		$(this).addClass('disabled');
	}
	
	
	return false;
}
function slideshow() {
	$('#slideshow').addClass('disabled');
	$('#next').addClass('disabled');
	$('#prev').addClass('disabled');
	
	
	setTimeout(function() {
		if ($('#curtain').size() == 1) {
			if ($('#current_album .selected_photo').next().hasClass('thumbnail')) {
				var current_photo = $('#current_album .selected_photo');
				var next_photo = $(current_photo).next();
				
				current_photo.removeClass('selected_photo');
				next_photo.addClass('selected_photo');
				
				$('#fullsize').attr('src', next_photo.attr('src').replace('.thumb', ''));
				slideshow();
			}
			else {
				$('#slideshow').removeClass('disabled');
				$('#prev').removeClass('disabled');
			}
		}
	}, 3000);
	
	return false;
}







function start_loader() {
	$('#current_album').children().remove();
	$('#current_album').css('backgroundImage','url(images/ajax-loader.gif)');
}

function end_loader() {
	$('#current_album').css('backgroundImage','');
}


