			var iImages 	= $('galleryImages');
			var iName 		= $('galleryName');
			var iMenu 		= $('galleryMenu');
			var iEnlarge 	= $('galleryEnlarge');
			var iThumbs 	= $('galleryEnlarge_Thumbs');
			var iMain 		= $('galleryEnlarge_Main_Image');
			var iDesc 		= $('galleryEnlarge_Desc');
			var iCaption 	= $('galleryCaption');
			var iQuick 		= $('galleryQuick');
			var iClose 		= $('quickBack');
			
			var images;
			
			var imgWidth 	= 430;
			var imgOffset 	= 1000;
			
			var loadingImages = new Array();
			
			var lastImage = 0, isEnlarged = false, firstLoad = true, currentImage = 1, currentDummy = false, isSliding = false;
			
			iImages.setStyle('visibility', 'hidden');
			iQuick.setStyle('visibility', 'hidden');
			
			var scroll  = new Fx.Scroll('galleryContainer', {wait: false, duration: 1500, offset: {'x': -260, 'y': 0}, transition: Fx.Transitions.Quad.easeInOut});
			var scroll2 = new Fx.Scroll('galleryContainer', {wait: false, duration: 1, offset: {'x': -260, 'y': 0}, transition: Fx.Transitions.Quad.easeInOut});
			
			var fade = new Fx.Style('galleryCaption', 'opacity', {wait: true, duration:250});
			
			scroll.addEvent('onComplete', finishedSliding);
			scroll2.addEvent('onComplete', finishedSliding);
			
			window.onload = imageInit; 
			
			var xml = new classXML("xml");
			xml.process = galleryLoad;
			xml.load(xmlName);
			
			function galleryLoad()
			{
				images = xml.doc.getElementsByTagName('image');
				
				iImages.style.width = (((images.length + 4) * imgWidth) + imgOffset) + "px";
				
				if(images.length > 1)
				{
					imageAdd(images[images.length - 2], -3, true);
					imageAdd(images[images.length - 1], -2, true);
				}
				
				for(var i=0; i<images.length; i++) { imageAdd(images[i], i); }
				
				if(images.length > 1)
				{
					imageAdd(images[0], -4, true);
					imageAdd(images[1], -5, true);
				}
				
				for(var i=1; i<=4; i++) { $('imageThumb'+i).onclick = new Function("evt", "thumbClick("+i+");"); }
				
				scroll2.toElement("image1");
				
				iCaption.onclick = new Function("evt", "imageClick();");
				
				iClose.onclick = new Function("evt", "imageClose();");
				iClose.setAttribute("alt", "Back to Gallery");
				iClose.setAttribute("title", "Back to Gallery");
				
				iClose.setStyle('visibility', 'hidden');
				
				iMain.src = "gallery/loading.gif"	
			}
		
			function imageAdd(item, index, dummy)
			{
				if(typeof dummy == "undefined") { dummy = false; }
				
				var imageObject, divObject, imageID, imageName;
				
				imageID 	= item.getElementsByTagName('id')[0].firstChild.data;
				imageName 	= item.getElementsByTagName('name')[0].firstChild.data;
					
				imageObject = document.createElement('IMG');
				imageObject.setAttribute("id", "image"+((dummy) ? 'd'+imageID : imageID));
				imageObject.setAttribute("src", "gallery/loading_t.gif");
				imageObject.setAttribute("alt", imageName);
				imageObject.setAttribute("title", imageName);
				imageObject.onclick = new Function("evt", "imageClick("+imageID+");");
				imageObject.onmouseover = new Function("evt", "imageOver("+((dummy) ? "'d"+imageID+"'" : imageID)+", false, "+((dummy) ? index.toString() : "false")+");");
				imageObject.className = "galleryImage";
					
				divObject = document.createElement('DIV');
				divObject.setAttribute("id", "div"+imageID);
				divObject.onclick = new Function("evt", "imageQuick("+imageID+")");
				divObject.className = "quickDiv";
				divObject.setAttribute("alt", "Goto "+imageName);
				divObject.setAttribute("title", "Goto "+imageName);
				divObject.innerHTML = index + 1;
					
				var index = loadingImages.length;
				loadingImages[index] = new Image();
				loadingImages[index].onload = new Function("evt", "imageInsert('image"+((dummy) ? 'd'+imageID : imageID)+"','gallery/"+galleryName+imageID+"/gallery.jpg');");
				loadingImages[index].src = "gallery/"+galleryName+imageID+"/gallery.jpg"
					
				iImages.adopt(imageObject);
				
				if(!dummy) { iQuick.adopt(divObject); }	
			}
			
			function imageInit() { }
			
			function imageInsert(obj, src)
			{
				$(obj).setAttribute("src", src);
			}
			
			function imageQuick(id)
			{
				if(isEnlarged)
				{
					if(currentImage) { $('div'+currentImage).className = "quickDiv"; }
					currentImage = id;
					imageClick(id);
					$('div'+currentImage).className = "imageCurrent";
					scroll2.toElement("image" + id);	
				}
				else
				{
					imageOver(id);
				}	
			}
			
			function imageClick(id)
			{
				if(typeof id == "undefined") { id = currentImage; }
				
				currentImage = id;
				imageEnlarge();
			}
			
			function imageEnlarge()
			{
				isEnlarged = true;
				
				iClose.setStyle('visibility', 'visible');
				iEnlarge.setStyle('display', 'block');
				
				$('div'+currentImage).className = "imageCurrent";
				
				var imageObject;
				
				var thumbs = parseInt(images[currentImage - 1].getElementsByTagName('thumbs')[0].firstChild.data);
				
				iDesc.setHTML(images[currentImage - 1].getElementsByTagName('desc')[0].firstChild.data);
				
				for(var i=1; i<=thumbs; i++)
				{
					$('imageThumb'+i).setAttribute("src", "gallery/loading_s.gif");
					$('imageThumb'+i).setStyle('visibility', 'visible');
					
					var index = loadingImages.length;
					loadingImages[index] = new Image();
					loadingImages[index].onload = new Function("evt", "imageInsert('imageThumb"+i+"','gallery/"+galleryName+currentImage+"/"+i+"s.jpg');");
					loadingImages[index].src = "gallery/"+galleryName+currentImage+"/"+i+"s.jpg"
				}
				
				if(thumbs < 4) { for(var i=thumbs+1; i<=4; i++) { $('imageThumb'+i).setStyle('visibility', 'hidden'); } }
				
				thumbClick(1);
			}
			
			function imageClose()
			{
				iClose.setStyle('visibility', 'hidden');
				isEnlarged = false;
				
				iEnlarge.setStyle('display', 'none');
				
				for(var i=1; i<=4; i++) { $('imageThumb'+i).setAttribute("src", "gallery/loading_s.gif"); }
				
				iMain.src = "gallery/loading.gif"	
			}
			
			function thumbClick(index)
			{
				iMain.src = "gallery/loading.gif"	
				
				var index2 = loadingImages.length;
				loadingImages[index2] = new Image();
				loadingImages[index2].onload = new Function("evt", "imageInsert('galleryEnlarge_Main_Image','gallery/"+galleryName+currentImage+"/"+index+".jpg');");
				loadingImages[index2].src = "gallery/"+galleryName+currentImage+"/"+index+".jpg"
				
				iMain.setAttribute("alt",   images[currentImage - 1].getElementsByTagName('name')[0].firstChild.data);
				iMain.setAttribute("title", images[currentImage - 1].getElementsByTagName('name')[0].firstChild.data);
			}
			
			function imageOver(id, force, dummy)
			{
				if(typeof force == "undefined") { force = false; }
				
				if(id != currentImage || force)
				{
					if(currentImage) { $('div'+currentImage).className = "quickDiv"; }
					
					fade.start(0);
					lastImage = currentImage;
					currentImage = id;
					currentDummy = dummy;
					scroll.toElement("image" + id);	
					
					if(!force) { isSliding = true; }
				}
			}
			
			function finishedSliding()
			{
				if(currentDummy)
				{
					switch(currentDummy)
					{
						case -2:
							currentImage = images.length;
							scroll2.toElement("image"+images.length);
							break;
						case -4:
							currentImage = 1;
							scroll2.toElement("image1");
							break;
					}
					currentDummy = false;
				}
				else
				{
					isSliding = false;
					$('div'+currentImage).className = "imageCurrent";
					iCaption.setHTML("<b>"+images[currentImage - 1].getElementsByTagName('name')[0].firstChild.data+"</b><br/><span class=\"instruction\">click to enlarge</span>");
					fade.start(1);
				}
				if(firstLoad)
				{
					firstLoad = false;
					iImages.setStyle('visibility', 'visible');
					iQuick.setStyle('visibility', 'visible');
				}
			}