var Exhibition = (function()
{
	jQuery('html').addClass('javascript-enabled');
	
	var internal = {};
	internal.IE6 = !(!document.all || window.XMLHttpRequest);
	var external = {};
	external.ieResetDraw = function()
	{
		if (!internal.IE6) { return; }
		var reset = ['#details', 'body'];
		for (var i = 0, resetl = reset.length; i < resetl; i++)
		{
			jQuery(reset[i]).css('margin-top', '1px').css('margin-top', '0');
		}
	};
	external.getPosition = function(el)
	{
		var dims = jQuery(el).offset();
		dims.width = jQuery(el).width();
		dims.height = jQuery(el).height();
		dims.fullwidth = dims.width + parseInt(jQuery(el).css('padding-left'), 10) + parseInt(jQuery(el).css('padding-right'), 10);
		dims.fullheight = dims.height + parseInt(jQuery(el).css('padding-top'), 10) + parseInt(jQuery(el).css('padding-bottom'), 10);
		dims.right = dims.left + dims.fullwidth;
		dims.bottom = dims.top + dims.fullheight;
		return dims;
	};
	external.setPosition = function(el, newel)
	{
		if (!newel) { newel = el; }
		var imgdims = Exhibition.getPosition(el);
		var maindims = Exhibition.getPosition(jQuery('#images'));
		var rightshift = maindims.fullwidth - (imgdims.left - maindims.left + imgdims.width);
		var bottomshift = maindims.fullheight - (imgdims.top - maindims.top + imgdims.height);
		jQuery(newel).css({width:imgdims.width+'px', height:imgdims.height+'px', bottom:bottomshift+'px', right:rightshift+'px'});
	};
	external.updateImages = function()
	{
		if (!internal.IE6) { return; }
		jQuery('img').each(function()
		{
			if (this.src.match(/\.png$/i))
			{
				internal.transparentImageSwap(this);
			}
		});
	};
	internal.transparentImageSwap = function(img)
	{
		if (!internal.IE6) { return; }
		img.onload = null;
		var src = img.src;
		var width = img.offsetWidth;
		var height = img.offsetHeight;
		img.src = '/images/blank.gif';
		img.style.width = width+'px';
		img.style.height = height+'px';
		img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+src+"', sizingMethod='scale')";
	};

	jQuery(document).ready(function()
	{
		var mainimage = jQuery('#image-main');
		var otherimages = jQuery('#images-other');
		if (jQuery('p', otherimages).length)
		{
			jQuery('p', mainimage).addClass('selected').get(0).id = 'image1';
			Exhibition.setPosition(jQuery('#image1'));
		}
		if (jQuery(otherimages).hasClass('smallthumbs') && jQuery('li', otherimages).size() % 2)
			{
				jQuery('ul', otherimages).prepend('<li class="shim" />');
			}
		var imagecount = 2;
		jQuery('li p', otherimages).each(function()
		{
			jQuery(mainimage).append('<p id="image' + imagecount + '"><img src="' + jQuery('a', this).attr('href') + '" alt=""></p>');
			Exhibition.setPosition(this, jQuery('#image' + imagecount));
			imagecount++;
		});
		function insertMenu(menu)
		{
			jQuery('#wrapper').prepend('<div id="exhibition-menu"><ul class="menu">' + menu + '</ul></div>');
			jQuery('a[href='+document.location.pathname+']').addClass('current');
			var menuoffset = Exhibition.getPosition(jQuery('#exhibition-menu')).fullheight;
			jQuery('#exhibition-menu').css({marginTop:'-'+menuoffset+'px'});
			Exhibition.updateImages();
			Exhibition.ieResetDraw();
		}
		var menu_url = document.location.pathname.replace(/((\/[^\/]+){1,2}).*/, "$1/menu");
		var menu = ''; //jQuery.cookie(menu_url);
		if (menu)
		{
			insertMenu(menu);
		}
		else
		{
			jQuery.ajax
			({
				type: "GET",
				url: menu_url,
				success: function(msg)
				{
					var getmenu = jQuery('ul', msg).html();
					//jQuery.cookie(menu_url, getmenu, { path:'/', expires:10});
					insertMenu(getmenu);
				}
			});
		}
	
		Exhibition.updateImages();
	
	});

	var animprogress = 0;
	jQuery('#image-main p').live('click', function()
	{
		if (animprogress) { return false; }
		if (jQuery(this).hasClass('selected')) { return; }
		animprogress = 2;
		var target = jQuery('#image-main .selected').get(0);
		var targetcoords = {};
		targetcoords.right = jQuery(target).css('right');
		targetcoords.bottom = jQuery(target).css('bottom');
		targetcoords.width = jQuery(target).css('width');
		var startercoords = {};
		startercoords.right = jQuery(this).css('right');
		startercoords.bottom = jQuery(this).css('bottom');
		startercoords.width = jQuery(this).css('width');
		var options = {};
		options.duration = 350;
		options.easing = 'linear';
		options.complete = function() { animprogress--; };
		jQuery(this).animate({right:targetcoords.right, bottom:targetcoords.bottom, width:targetcoords.width, height:targetcoords.width}, options.duration, options.easing, options.complete);
		jQuery(target).animate({right:startercoords.right, bottom:startercoords.bottom, width:startercoords.width, height:startercoords.width}, options.duration, options.easing, options.complete);
		jQuery(target).removeClass('selected');
		jQuery(this).addClass('selected');
		return false;
	});


	jQuery('.allitems').live('click', function()
	{
		var action = jQuery(this).hasClass('hideall') ? 'hide' : 'show';
		var menuoffset = action == 'hide' ? '-' + Exhibition.getPosition(jQuery('#exhibition-menu')).fullheight + 'px' : 0;
		var antiaction = action == 'show' ? 'hide' : 'show';
		jQuery('a span', this).html(antiaction.replace(/^(.)/, function(x){ return x.toUpperCase();}) + ' all items');
		jQuery(this).addClass(antiaction+'all').removeClass(action+'all');
		jQuery('#exhibition-menu').animate({marginTop:menuoffset}, {duration: 500, step:Exhibition.ieResetDraw});
		return false;
	});
	
	
	
	jQuery(window).bind('resize', function()
	{
		jQuery('#image-main .selected').css(
		{
			right: (Exhibition.getPosition('#images').fullwidth - Exhibition.getPosition('#image-main').right) + 'px'
		});
	});


	return external;
})();