			var _imagePanelIsInitialised = false;
			var _floorplanPanelIsInitialised = false;
			
			$(
				function()
				{
					
					// Hide the images by clearing the overflow and setting the image container's height to
					// 0. Display:none will cause the height calculation of the images to fail.
					var galleryContainerJQ = $('.gallery_unstyled');
					galleryContainerJQ.css("overflow", "hidden");
					galleryContainerJQ.css("height", "0px");
					
					initialiseGallery();
								
				});
				
	
	// MCMS places the img tags within an <a> tag and then that within a <span>
			//	EG <span><a><img /></a></span>
			function fixMCMSImagePlaceholders()
			{
				var listItemsJQ = $(".gallery_unstyled li");
				listItemsJQ.each(
					function()
					{
						var listItemJQ = $(this);
						var imageJQ = $("img", listItemJQ);
						// MCMS only updates the alt attribute. The gallery script requires the title
						// attribute to be set.
						imageJQ.attr("title", imageJQ.attr("alt"));
						// If there is not an image, remove the listitem <li>
						if (imageJQ.length == 0)
						{
							listItemJQ.remove();
						}
						else
						{
							listItemJQ.empty();
							listItemJQ.append(imageJQ);
						}
					});
			}
				

				
			function initialiseGallery()
			{
				if (!(_imagePanelIsInitialised))
				{
					fixMCMSImagePlaceholders();
					
					var galleryContainerJQ = $('.gallery_unstyled');
					galleryContainerJQ.addClass('gallery'); // adds new class name to maintain degradability
					$('ul.gallery').galleria({
						history   : false, // activates the history object for bookmarking, back-button etc.
						clickNext : true, // helper for making the image clickable
						insert    : '#main_image', // the containing selector for our main image
						onImage   : function(image,caption,thumb) { // let's add some image effects for demonstration purposes
							
							// fade in the image & caption
							image.css('display','none').fadeIn(1000);
							caption.css('display','none');
							
							// fetch the thumbnail container
							var _li = thumb.parents('li');
							
							// fade out inactive thumbnail
							_li.siblings().children('img.selected').fadeTo(500,0.3);
							
							// fade in active thumbnail
							thumb.fadeTo('fast',1).addClass('selected');
							
							// add a title for the clickable image
							image.attr('title','Next image >>');
						},
						onThumb : function(thumb) { // thumbnail effects goes here
							
							// fetch the thumbnail container
							var _li = thumb.parents('li');
							
							// if thumbnail is active, fade all the way.
							var _fadeTo = _li.is('.active') ? '1' : '0.3';
							
							// fade in the thumbnail when finnished loading
							thumb.css({display:'none',opacity:_fadeTo}).fadeIn(1500);
							
							// hover effects
							thumb.hover(
								function() { thumb.fadeTo('fast',1); },
								function() { _li.not('.active').children('img').fadeTo('fast',0.3); } // don't fade out if the parent is active
							)
						}
					});
					
					// Reset the images container because its height was set to 0 in the page load code
					galleryContainerJQ.css("height", "auto");
					galleryContainerJQ.css("overflow", "auto");
					_imagePanelIsInitialised = true;
				}
			}