/*-----------------------------------------------------------------------------------------------------------------------------
 													 Global
-----------------------------------------------------------------------------------------------------------------------------*/
var fadeSpeed = 500;
var cutSpeed = 500;
var slideSpeed = 700;
var gallery = null;

var $ = jQuery.noConflict();

var customCursor = false;

var mouse_x;
var mouse_y;

var safetyTrigger1 = true;
var safetyTrigger2 = true;
/*-----------------------------------------------------------------------------------------------------------------------------
 													Functions
-----------------------------------------------------------------------------------------------------------------------------*/
$.fn.reverse = function() {
    return this.pushStack(this.get().reverse(), arguments);
};

/*-----------------------------------------------------------------------------------------------------------------------------
 											      Document Ready
-----------------------------------------------------------------------------------------------------------------------------*/
$(document).ready(function()
{	
	$('.javascript-required').css({'display':'none'});


	/* Attach custom mouse X Y
	--------------------------------*/
	$(document).mousemove( function(e) {
		mouse_x = e.pageX;
		mouse_y = e.pageY;
		
		if(mouse_x >= ($('.hit').width() - 20)){mouse_x = $('.hit').width() - 20;}
		if(mouse_y >= ($('.hit').height() - 20)){mouse_y = $('.hit').height() - 20;}
		$('.cursor').css({'left':mouse_x+1, 'top':mouse_y+1});
		
		
	});
	
	
	/* Set width of shadows
	------------------------*/
	setTimeout( function()
	{
		$('.gallery').each(function(){
			$(this).find('.shadow').width($(this).find('h2').outerWidth());
		});
	}, 10);


	/* Gallery Functions
	------------------------*/
	$('.gallery h2 a').click(function(){
		
		if(safetyTrigger1 == false){return false;}
		safetyTrigger1 = false;
		
		// 0. Return all galleries to text
		resetGalleries();
		
		
		gallery = $(this).parents('.gallery');
		var h2 = gallery.find('h2');
		var shadow = gallery.find('.shadow');
		var imageHolder = gallery.find('.image-holder');
		
		
		// 1. h2 fades out and hides down.
		h2.fadeOut(fadeSpeed, function(){
	
			// 3. images slide up
			var multiplier = 1;
			imageHolder.show().find('li').each(function(){
				var li = $(this);
				setTimeout(function()
				{
					li.stop().animate({'top' : '0px'}, slideSpeed);
				}, 100*multiplier);
				multiplier +=1;
			});
			
			setTimeout(function()
			{
				safetyTrigger1 = true;

			}, 100*multiplier);
			
			// 2. shadow grows / shrinks
			var lastLi = gallery.find('ul li:last-child');
			var ulWidth = lastLi[0].offsetLeft + lastLi.outerWidth();
			if(ulWidth > 930){ulWidth = 930;}
			var thisCutSpeed = (100*multiplier) - 200;
			if(thisCutSpeed < cutSpeed){thisCutSpeed = cutSpeed;}
			
			shadow.animate({'width' :  ulWidth+20+'px'},thisCutSpeed);
			
		});
			
		return false;
	});
	
	
	function resetGalleries()
	{
		var activeGallery = gallery;
		gallery = null;
		
		$('body').css({cursor: 'auto'});
		$('.cursor').hide();
		
		
		if(activeGallery)
		{
			var imageHolder = activeGallery.find('.image-holder');
			var h2 = activeGallery.find('h2');
			var shadow = activeGallery.find('.shadow');
			
			var multiplier = 1;
			imageHolder.find('li').reverse().each(function(){
				var li = $(this);
				setTimeout(function()
				{
					li.stop().animate({'top' : '90px'}, slideSpeed);
				}, 100*multiplier);
				multiplier +=1;
			});
			

			
			var buffer = 3;

			setTimeout(function(){
				shadow.animate({'width' :  h2.outerWidth()+'px'}, cutSpeed, function(){
					h2.fadeIn(fadeSpeed);
				});
			},(multiplier - buffer )*100 + slideSpeed);
			
		}
		else
		{

		}
	}
	
	$('.hit').click(function()
	{
		if(safetyTrigger1 == false){return false;}
		resetGalleries()
		
	});
	$('.container').click(function()
	{
		if(safetyTrigger1 == false){return false;}
		resetGalleries();
	});
	
	
	/*-----------------------------------------------------------------------------------------------------------------------------
 											      Mouse
	-----------------------------------------------------------------------------------------------------------------------------*/
	$('a').hover(function(){
		$('.cursor').hide();
		$('body').css({cursor: 'auto'});
	}, function(){
		if(gallery)
		{
			$('.cursor').show();
			$('body').css({cursor: 'none'});
		}
	});
	
	
	/*-----------------------------------------------------------------------------------------------------------------------------
 											      Fancy Box
	-----------------------------------------------------------------------------------------------------------------------------*/
	$('.gallery').each(function(){	
		var group = $(this).attr('id');

		$(this).find('a[rel=group-'+group+']:has(img)').fancybox({
						'padding'		: 0,
						'autoScale'		: false,
						'overlayOpacity': .9,
						'overlayColor'	: '#fff',
						'titleFormat'   : function(title, currentArray, currentIndex, currentOpts) {
		    				return '<p class="title">' + title + '<span>' + (currentIndex + 1) + '/' + currentArray.length + '</span></p>';
						},
						'onStart'		: function(){$('#fancybox-wrap').hover(function(){$('.cursor').hide();}, function(){$('.cursor').show();});},
		});					 
	});
	
	

	/*-----------------------------------------------------------------------------------------------------------------------------
 											      Slide the Photos
	-----------------------------------------------------------------------------------------------------------------------------*/
	var range = 2;
	var oldLeft = 0;
	var newLeft = 0;
	var time;
	
  	$('.image-holder').hover(
		function(){

			var div = $(this);
			var ul = $(this).find('ul');
			var divWidth = div.width();
			var lastLi = ul.find('li:last-child');
			var ulWidth = lastLi[0].offsetLeft + lastLi.outerWidth();
			

			function slide(){
				
				if(ulWidth <= divWidth)
				{
					clearTimeout(time);
					return false;
				}
				else
				{
					var newLeft = (mouse_x - div.offset().left) * (ulWidth-divWidth) / divWidth;
				    var scrollAmount = (newLeft - oldLeft)/10;
					
					// set maximum speed					
					div.stop().scrollLeft(Math.round(oldLeft+ scrollAmount));
					oldLeft += scrollAmount;
					//$('p.info').html('lag=' + lag +'<br>scrollamount = '+scrollAmount);
					time = setTimeout(slide, 20);
				}
			}; 
			slide();
		},
		function(){
			clearTimeout(time);
		}
  	);
  
  
  
	/*-----------------------------------------------------------------------------------------------------------------------------
 											      Toggle Bio
	-----------------------------------------------------------------------------------------------------------------------------*/
	
	var origHeight = $('.bio').height();
	$('.bio').css({'height' : '0px'});
	$('.bio').fadeTo(0,0);
	
   	var toggleOpen = false;

	$('a.toggle').click(function(){
		if(toggleOpen == false)
		{
			//open it
			$('a.toggle').fadeTo(500, 0, function(){$(this).addClass('show-close').fadeTo(500,1)});
			$('.bio').stop().fadeTo(500, 1, function(){
				$(this).animate({'height' : origHeight + 'px'}, 500);
			});	
			toggleOpen = true;
		}
		else
		{
			// close it	
			$('a.toggle').fadeTo(500, 0, function(){$(this).removeClass('show-close').fadeTo(500,1)});
			$('.bio').stop().animate({'height' : '0px'}, 500, function(){
				$(this).fadeTo(500, 0);
			});
			toggleOpen = false;
		}
		return false;
	})

});
