$(document).ready(function()
{
	if( $('html').hasClass("video") && !$.browser.msie )
	{
		var all = VideoJS.setup("All");
		//console.log(myManyPlayers[0]);

		$("#video-page > div .vjs-big-play-button").click(hideVideoText);
	}
	else
	{

		$('#videoFallback').show();

		flowplayer("videoFallback", 
		{
			src: "/flowplayer-3.2.7.swf", wmode: 'opaque'
		}
		, 
		{
			"playlist":[
				{
					"url": "/video.mp4",
					"autoPlay":false,
					"autoBuffering":true,
					"onResume": hideVideoText
				}
			]
		});
	}	
	

	$("#designers-page a").click(function()
	{
		var parent = $(this).parent();
		$.get($(this).attr('href'), function(data)
		{
			var frame = $("<div class='designerFrames'>" + data + "</div>");
			var close = $("<div class='close'></div>");
			close.click( function()
			{
				$(".blockout").remove();
				frame.remove();
			});
			
			frame.append(close);
		
			
			
			parent.append('<div class="blockout"></div>');
			parent.parent().parent().append(frame);
			$('#designers-page  > div.designerFrames .content > div').jScrollPane({verticalDragMaxHeight: 100 });
		})
		
		
		return false;
	});
	
	$("#auction-page a").click(function()
	{
		var parent = $(this).parent();
		$.get($(this).attr('href'), function(data)
		{
			var frame = $("<div class='designerFrames'>" + data + "</div>");
			var close = $("<div class='close'></div>");
			close.click( function()
			{
				$(".blockout").remove();
				frame.remove();
			});
			
			frame.append(close);
		
			
			
			parent.parent().parent().parent().parent().parent().append('<div class="blockout"></div>');
			parent.parent().parent().parent().parent().parent().append(frame);
			$('#auction-page  > div.designerFrames .content > div').jScrollPane({verticalDragMaxHeight: 100 });
		})
		
		
		return false;
	});
	
	$(".designerList a").hover(function()
	{

		var img = $("img", this);
		var src = img.attr("src");
		str1 = src.substr(0,src.length-4) + "_hover.png";
		img.attr("src", str1);
	},
	function()
	{
		var img = $("img", this);
		var src = img.attr("src");
		str1 = src.substr(0,src.length-10) + ".png";
		img.attr("src", str1);
	});
});

function hideVideoText()
{
	$("#video-page > div .content").hide();
};

$.fn.imagesLoaded = function(callback){
  var elems = this.filter('img'),
      len   = elems.length,
      blank = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
      
  elems.bind('load',function(){
      if (--len <= 0 && this.src !== blank){ callback.call(elems,this); }
  }).each(function(){
     // cached images don't fire load sometimes, so we reset src.
     if (this.complete || this.complete === undefined){
        var src = this.src;
        // webkit hack from http://groups.google.com/group/jquery-dev/browse_thread/thread/eee6ab7b2da50e1f
        // data uri bypasses webkit log warning (thx doug jones)
        this.src = blank;
        this.src = src;
     }  
  }); 

  return this;
};


$(function(){
	
	$(window).hashchange( function(){
		var page = $(location.hash + '-page');
		
		// Set the page back to home if it can not be found
		if( page.length == 0 )
		{
			location.hash = 'home';
			return;
		}
		
		$("#nav a").removeClass('selected');
		$("#nav ." + location.hash.substr(1)).addClass("selected");
		
		positionPage(page);
	})
	
	$(window).resize(function(){
		var page = $(location.hash + '-page');
		positionPage(page, false);
	});
	
	// Determine what page should be loaded initially
	if( location.hash.length < 2 )
	{
		location.hash = 'home';
	}
	else
	{
		$(window).hashchange();
	}
	
	

	$('a.popup').click( function()
	{
		var contentFrame = $(this).attr("rel");
		if( contentFrame == "" )
		{
			contentFrame = "frameContent";
		}

		
		$('#frame').stop(true);
		
		var parent = $(this).parent();
		var frame = $('#frame');
		var contentDiv = frame.children('div');
		contentDiv.empty();
		

		
		contentDiv.append($("." + contentFrame,parent).html());

		parent.append('<div class="blockout"></div>');
		parent.parent().append(frame);
		
		
		$('#frame').fadeIn();
		
		$('#frame > div > div').jScrollPane({verticalDragMaxHeight: 100 });
		
		return false;
	});
	
	$('#frame .close').click( function()
	{
		closeFrame();
	});
	
	function closeFrame()
	{
		$('#frame').stop(true);
		$('#frame').fadeOut();
		$('.blockout').remove();
	}
	
	loadBackgrounds();
	addGalleryFrame();
	
	$("#exhibition-page .gallery img").imagesLoaded( function()
	{
		loadGallery({parent: 'exhibition-page', start:'middle', cycle:true, centre:true});
		addGalleryHover();
	});
	
	
	loadGallery({parent: 'sponsors-page', cycle:false, centre:false}, true);
	
	$('#sponsors-page li > div img').each(function()
	{
		var obj = $(this);
		var popup = obj.next();
		var origWidth = popup.width();
		var origHeight = popup.height();
		var origSrc = obj.attr("src");
		var location = "/img/sponsors/gallery/";
		var hoverSrc = origSrc.replace("http://" + window.location.hostname).replace(location, "");
		hoverSrc = location + hoverSrc.substr(0, hoverSrc.length - 8)+ "-on.gif";
		
		obj.css({
			cursor: 'pointer'
		});
		
		obj.parent().hover(function()
		{
			obj.attr({
				src: hoverSrc 
			})
			popup.fadeIn();
		}, function()
		{
			obj.attr({
				src: origSrc 
			})
			
			
			popup.fadeOut();
		});
		
		
		
		
	});
	
	//$(document.body).dragscrollable({dragSelector: '.page', acceptPropagatedEvent: true});
	
	
	$("#nav a").click(function()
	{
		closeFrame();
		
		if( $(this).attr('href') == location.hash )
		{
			$(window).hashchange();
		}
	})
});


var initialLoad = true;
function positionPage(page, animate)
{
	if( animate === undefined)
	{
		animate = true;
	}
	
	var body;
	if ($.browser.webkit) {
		body = $('body');
	}
	else
	{
		body = $('html');
	}
	
	
	
	// Stop any animation so it doesn't jump around.
	body.stop(true, false);		
	
	var settings = {
		scrollTop: page.position().top,
		scrollLeft: page.position().left
	};

	if( initialLoad === true )
	{
		// This is the initial page load;
		$('.page').css('visibility', 'visible');
		animate = false;
		initialLoad = false;
	}

	body.animate(settings, 0);

/*
	if( animate === true )
	{
		if ( $.browser.msie && (parseInt($.browser.version, 10) < 9) ) {
			body.animate(settings, 0);
		}
		else
		{
			body.animate(settings, 0);
		}
		
	}
	else
	{
		
	}*/
}

var galleryAdded = false;
function addGalleryHover()
{
	if( galleryAdded === false)
	{
		galleryAdded = true;
		var timeout = 0;
		
		if ( $.browser.msie && (parseInt($.browser.version, 10) < 9) ) {
			timeout = 300;
		}
		
		setTimeout( function()
		{
			$("#exhibition-page ul li .info").each(function()
			{
				var obj = $(this);
				var originalPos = obj.position();
				var background = $(this).css("background");
				var width = obj.width();
				var height = obj.height();
				var minFontSize = 5;
				var maxFontSize = 20;
				
				var details = obj.parent().find("img").attr("alt").split("-");

				if ( $.browser.msie && (parseInt($.browser.version, 10) < 8) ) {
					obj.before('<div style="clear:both; float: right; height: ' + ($('img', obj.parent()).height() + 60) + 'px;">&nbsp;</div>');
					obj.css({left:-35});
					originalPos = obj.position();
				}
				
				obj.css({
					fontSize: minFontSize,
					//overflow: 'hidden',
					textIndent: -10000
				});
			
				var name = details[0];
		
				
				var title = details[1];
		
				obj.append('<p class="picName">' + name + '</p>');
				obj.append('<p class="picTitle">' + title + '</p>');
			
			
				obj.hover(function()
				{
						obj.css({
						position: 'absolute',
						top: originalPos.top,
						left: originalPos.left,
						textIndent: 0
					});
					
					obj.addClass('hover');
					
					obj.stop().animate({
						fontSize: maxFontSize,
						width: 250,
						height: 125,
						top: originalPos.top - 125 + height,
						left: originalPos.left - 250 + width
					}, 100);
				}, function()
				{
					obj.stop().animate({
						fontSize: minFontSize,
						width: width,
						height: height,
						top: originalPos.top,
						left: originalPos.left
					}, 100, function()
					{
						obj.removeClass('hover');
						obj.css({
							textIndent: -10000
						});
						

					});
				});
			});
		}, timeout);
		}
	
}

function addGalleryFrame()
{
	$("#exhibition-page ul li img").wrap('<div class="imgFrame" />').before('<div class="tl"></div>').before('<div class="tr"></div>').before('<div class="bl"></div>').before('<div class="br"></div>').before('<div class="l"></div>').before('<div class="r"></div>').before('<div class="t"</div>').before('<div class="b"></div>');
	
	if ( $.browser.msie && (parseInt($.browser.version, 10) < 8) ) {
		$("#exhibition-page ul li").each( function()
		{	
			$(this).width($(".imgFrame", this).width() + 40);
		});
	}
}

var galleryLoaded = false;
function loadGallery(settings, force)
{
	
	if( galleryLoaded === false || force)
	{
		if( force != true )
		{
			galleryLoaded = true;
		}
		
		var container = $('#' + settings.parent + ' .gallery');
		var gallery = $('#' + settings.parent + ' ul');
		var panes = gallery.children();
		var currentPane = 0;
		var cycle = settings.cycle;
		var centre = settings.centre;
		if( settings.start == 'middle' )
		{
			currentPane = Math.floor(panes.length/2)
		}
		var firstPane = 0;
		var lastPane = panes.length - 1;
		setCurrentPane();
	
		
		$('#' + settings.parent + ' .prev').click( function()
		{
			if( cycle )
			{
				decreaseLastPane()
				// Update where the scrollbar is so there isn't a jump;
				setCurrentPane(false);
				
				currentPane--;
				
				if( currentPane < 0 )
				{
					currentPane = panes.length - 1
				}
				
				setCurrentPane(true)
				gallery.prepend(panes[panes.length]);
			}
			else
			{
				currentPane--;
				
				if( currentPane < 0 )
				{
					currentPane++;
					return false;
				}
				
				setCurrentPane(true)
			}
			
			return false;
		});
		
		$('#' + settings.parent + ' .next').click( function()
		{
			if( cycle )
			{
				increaseFirstPane();
				
				// Update where the scrollbar is so there isn't a jump;
				setCurrentPane(false);
				
				currentPane++
				if( currentPane > panes.length - 1 )
				{
					currentPane = 0;
				}
				;
				setCurrentPane(true);
				
				return false;
			}
			else
			{
				currentPane++
				if( currentPane > panes.length - 1 )
				{
					currentPane--;
					return false;
				};

				setCurrentPane(true);
			}
		});
		
		
	}
	
	function setCurrentPane(animate, callback)
	{
		var pane = $(panes[currentPane]);
		var pos = pane.position().left;
		if( centre )
		{
			pos -= (container.width()/2) + (pane.outerWidth()/2)
		}
		container.stop(true);


		if( animate )
		{
			container.animate({
				scrollLeft: pos
			}, callback);
		}
		else
		{
			container.scrollLeft(pos);
		}		
	}
	
	function decreaseLastPane()
	{
		gallery.prepend(panes[lastPane]);
		container.scrollLeft(container.scrollLeft()+$(panes[lastPane]).width());
		
		firstPane = lastPane;
		lastPane--;
		if( lastPane < 0 )
		{
			lastPane = panes.length - 1;;
		}

	}
	
	function increaseFirstPane()
	{
		gallery.append(panes[firstPane]);
		container.scrollLeft(container.scrollLeft()-$(panes[firstPane]).width());
		
		lastPane = firstPane;
		firstPane++;
		if( firstPane > panes.length - 1 )
		{
			firstPane = 0;
		}
	}
}

function loadBackgrounds()
{
	$('.page').each( function()
	{
		$(this).css('background-image', 'url(img/background/' + this.id + '.jpg)');
	});
}


