	var url = false;
	
	var photo_dir = "/images/gallery/photos/photo/";
	var thumb_dir = "/images/gallery/photos/thumbnail/";
	var photo_type = ".jpg";
	var thumb_type = ".gif";
	var page = 1;
	var limit = 7;
	
	var gallery_name = false;
	var gallery_date = false;
	var gallery_location = false;
	var gallery_count = false;
	
	var num_loaded = 0;
	var photo_files = new Array(limit);
	var thumb_files = new Array(limit);
	var descriptions = new Array(limit);
	
	var photo_img_1 = false;
	var photo_img_2 = false;
	var scrollbar = false;
	var name = false;
	var info = false;
	var description = false;
	
	var id = false;
	
	function init(my_id) {
		
		id = my_id;
		document.getElementById('prev').setAttribute("value", "false");
		document.getElementById('next').setAttribute("value", "false");
		changeURL();
		
	}
	
	function changeURL() {
		
		url = "/xml.php";
		url += "?xml=gallery&galleryID=" + id + "&galleryPage=" + page + "&galleryLimit=" + limit;
		makeRequest(url);
		
	}
	
	function thumbsLoaded(target_num) {
		
		num_loaded++;
		
		if (num_loaded == target_num) {
			
			updateNav();
			changePhoto(0);
			
			for (var x = 0; x < target_num; x++) {
				
				opacity('thumb' + x, 0, 100, 1500);
				
			}
			
		}
		
	}
	
	function fillTemplate() {
		
		num_loaded = 0;
		scrollbar = document.getElementById('scroll');
		var gallery = xml_doc.getElementsByTagName('gallery')[0];
		var media = gallery.getElementsByTagName('media');
		
		gallery_name = xml_doc.getElementsByTagName('name')[0].firstChild.data;
		gallery_date = xml_doc.getElementsByTagName('date')[0].firstChild.data;
		gallery_location = xml_doc.getElementsByTagName('location')[0].firstChild.data;
		gallery_count = gallery.getAttribute('count');
		
		for (var x = (scrollbar.childNodes.length - 1); x >= 0; x--) {
			
			scrollbar.removeChild(scrollbar.childNodes[x]);
			
		}
		
		for (var x = 0; x < media.length; x++) {
			
			var gallery_file = media[x].getElementsByTagName('file')[0].firstChild.data;
			
			try {
			
				var gallery_description = media[x].getElementsByTagName('description')[0].firstChild.data;
			
			} catch(e) {
				
				var gallery_description = "";
				
			}
			
			photo_files[x] = new Image();
			photo_files[x].src = photo_dir + gallery_file + photo_type;
			thumb_files[x] = new Image();
			thumb_files[x].src = thumb_dir + gallery_file + thumb_type;
			descriptions[x] = gallery_description;
			
			var thumb_frame = document.createElement("div");
			thumb_frame.className = "thumb_frame";
			
			if (x == (limit - 1)) {
				
				thumb_frame.style.marginRight = '6px';
				
			} else if (x == 0) {
				
				thumb_frame.style.marginLeft = '6px';
				
			}
			
			var thumb_img = document.createElement("img");
			thumb_img.setAttribute("id","thumb" + x);
			thumb_img.setAttribute("index",x);
			thumb_img.src = thumb_files[x].src;
			
			thumb_frame.appendChild(thumb_img);
			scrollbar.appendChild(thumb_frame);
			addEvent(thumb_img, "click", changePhoto);
			addEvent(document.getElementById('thumb' + x), "load", function() { thumbsLoaded(media.length); });
			
		}
		
		name = document.getElementById('name');
		info = document.getElementById('date');
		
		name.innerHTML = gallery_name;
		info.innerHTML = gallery_date + " | " + gallery_location;
		
	}
	
	function changePhoto(evt) {
		
		if(isNaN(evt)) {
				 
			var elem = (evt.target) ? evt.target : evt.srcElement;
			var index = elem.getAttribute("index"); 
				 
		} else {
			
			var index = evt;
			
		}
		
		photo_img_1 = document.getElementById('photo_img_1');
		photo_img_2 = document.getElementById('photo_img_2');
		
		if ((photo_img_1.style.visibility == 'hidden') || (photo_img_1.style.visibility == '')) {
			
			photo_img_1.src = photo_files[index].src;
			photo_img_1.style.width = photo_files[index].width + "px";
			photo_img_1.style.height = photo_files[index].height + "px";
			setPhoto('photo_img_1');
			opacity('photo_img_1', 0, 100, 1500);
			//setTimeout("setPhoto('photo_img_1')", 15);
			
			if (photo_img_2.style.visibility == 'visible') {
				
				opacity('photo_img_2', 100, 0, 1500);
				setTimeout("unsetPhoto('photo_img_2')", 1500);
				
			}
			
		} else if ((photo_img_2.style.visibility == 'hidden') || (photo_img_2.style.visibility == '')) {
			
			photo_img_2.src = photo_files[index].src;
			photo_img_2.style.width = photo_files[index].width + "px";
			photo_img_2.style.height = photo_files[index].height + "px";
			setPhoto('photo_img_2');
			opacity('photo_img_2', 0, 100, 1500);
			//setTimeout("setPhoto('photo_img_2')", 15);
			
			if (photo_img_1.style.visibility == 'visible') {
				
				opacity('photo_img_1', 100, 0, 1500);
				setTimeout("unsetPhoto('photo_img_1')", 1500);
				
			}
			
		}
		
	}
	
	function setPhoto(photo) {
		
		document.getElementById(photo).style.visibility = 'visible';
		//document.getElementById(photo).parentNode.style.zIndex = 2;
		
	}
	
	function unsetPhoto(photo) {
		
		document.getElementById(photo).style.visibility = 'hidden';
		//document.getElementById(photo).parentNode.style.zIndex = 1;
		document.getElementById(photo).src = null;
		
	}
	
	function nextPage() {
		
		page++;
		
		for (var x = 0; x < scrollbar.childNodes.length; x++) {
			
			opacity('thumb' + x, 100, 0, 500);
			
		}

		if (photo_img_1.style.visibility == 'visible') {

			opacity('photo_img_1', 100, 0, 500);
			setTimeout("unsetPhoto('photo_img_1')", 500);
		
		} else if (photo_img_2.style.visibility == 'visible') {
			
			opacity('photo_img_2', 100, 0, 500);
			setTimeout("unsetPhoto('photo_img_2')", 500);
		
		}
		
		changeURL();
		
	}
	
	function prevPage() {
		
		page--;
		
		for (var x = 0; x < scrollbar.childNodes.length; x++) {
			
			opacity('thumb' + x, 100, 0, 500);
			
		}
		
		if (photo_img_1.style.visibility == 'visible') {

			opacity('photo_img_1', 100, 0, 500);
			setTimeout("unsetPhoto('photo_img_1')", 500);
		
		} else if (photo_img_2.style.visibility == 'visible') {
			
			opacity('photo_img_2', 100, 0, 500);
			setTimeout("unsetPhoto('photo_img_2')", 500);
		
		}
		
		changeURL();
		
	}
	
	function updateNav() {
		
		var next = document.getElementById('next');
		var prev = document.getElementById('prev');
		
		if (gallery_count <= (limit * page)) {
			
			if (next.getAttribute("value") == "true") {
			
				next.setAttribute("value", "false");
				opacity('next', 100, 0, 1500);
				removeEvent(next,"click",nextPage);
			
			}
			
		} else {
			
			if (next.getAttribute("value") == "false") {
			
				next.style.visibility = 'visible';
				next.setAttribute("value", "true");
				opacity('next', 0, 100, 1500);
				addEvent(next,"click",nextPage);
			
			}
			
		}
		
		if (page == 1) {
			
			if (prev.getAttribute("value") == "true") {
			
				prev.setAttribute("value", "false");
				opacity('prev', 100, 0, 1500);
				removeEvent(prev,"click",prevPage);
			
			}
			
		} else {
			
			if (prev.getAttribute("value") == "false") {
			
				prev.style.visibility = 'visible';
				prev.setAttribute("value", "true");
				opacity('prev', 0, 100, 1500);
				addEvent(prev,"click",prevPage);
				
			}
			
		}
		
	}
	
	function enlargePhoto(evt) {
		
		var elem = (evt.target) ? evt.target : evt.srcElement;
		var index = elem.getAttribute("index");
		
		document.getElementById('scrim').style.zIndex = 3;
		opacity('scrim', 0, 75, 1000);
		
	}
	
	function advanceProgress(obj, percentage) {
		
		obj.style.width = percentage + '%';
		
		if (percentage == 100) {
			
			return true;
			
		}
		
	}