var $selectors = {},
	$browser = {};
	

$(document).ready(function() {
	
	
	/* Define + cache selectors (if needed)
    ---------------------------------------------- */
	
	$selectors.body = $('body');
	$selectors.bodyID = $selectors.body.attr('id');
	
	// if not on a collection, no need to load this stuff
	if ($selectors.bodyID !== 'collection') return false;
	
	$selectors.window = $(window);
	$selectors.html = $('html');
	$selectors.zoom = $('#zoom');
	$selectors.zoomImg = $('#zoom-img');
	$selectors.zoomTrigger = $('#zoom-trigger');
	$selectors.zoomImgHeight = $selectors.zoomImg.height();
	$selectors.collectionGrid = $('#collection-grid');
	$selectors.mediaNav = $('#right-nav');
	$selectors.mediaNavA = $selectors.mediaNav.find('a');
	
	
	/* Define browser behavior + values
    ---------------------------------------------- */
	
	$browser.width = $selectors.window.width();
	$browser.height = $selectors.window.height();
    
	
	/* Keep track of resized image
    ---------------------------------------------- */
	
	$(window).bind('resize', $browser.resize);
	
	$browser.resize = function() {
		$browser.width = $selectors.window.width();
		$browser.height = $selectors.window.height();
		if ($selectors.body.hasClass('zoomed')) { $selectors.zoomImgHeight = $selectors.zoomImg.height(); };
	};
	
	
	
	/* Keyboard navigation
    ---------------------------------------------- */
	
	$(document).bind('keydown',keyDown);
	
	
	/* Films or stills
    ---------------------------------------------- */
	
	$selectors.mediaNavA.click(function(e){
		
		e.preventDefault();
		
		var $self = $(this);
		
		if ($self.hasClass('current')) { return false; };
		
		$selectors.mediaNavA.removeClass('current');
		$self.addClass('current');
		
		($selectors.body.hasClass('film')) ? $selectors.body.removeClass('film') : $selectors.body.addClass('film');
		
	});
	
	
	/* ZOOM
    ---------------------------------------------- */
	
	$selectors.collectionGrid.find('a').click(function(e){
	
		e.preventDefault();
		
		var $self = $(this),
			thisHref = $self.attr('href');
		
		$selectors.body.addClass('loading');
			
		$selectors.zoomImg
			.attr('src','')
			.attr('src',thisHref)
			.load(function() {
				$selectors.body
					.removeClass('loading')
					.addClass('zoomed');
				$selectors.zoomImgHeight = $selectors.zoomImg.height();
			});
			
		$selectors.zoom.mousemove($.throttle(50,function(e) {
				
			var adjustHeight = ($selectors.zoomImgHeight/$browser.height),
				val = -(e.clientY*(adjustHeight/1.2));
				
			if (-val > ($selectors.zoomImgHeight-$browser.height-10)) { val = -($selectors.zoomImgHeight-$browser.height); };
			
			$selectors.zoom.css('top',val+'px');
		}));
	});
	
	
	/* ZOOM trigger
    ---------------------------------------------- */
	
	$selectors.zoomTrigger.click(function(e) {
		e.preventDefault();
		$selectors.body.removeClass('zoomed');
		$selectors.zoomImg.attr('src','');
	});

});

function keyDown(e) {
	
	var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
	switch (key) {
		case 27: // escape
			if ($selectors.body.hasClass('zoomed')) { $selectors.zoomTrigger.click() };
		break;
		
		case 37: // left
		break;
		
		case 39: // right
		break;

	};

};
