"use strict";

/*globals $, jQuery, window, document */

(function ($) {
	var home, current, nav, navWrap, over, pages, linkPages,
		left, right, lImg, rImg, hashCtx,
		
		resPage,
		
		PHOTOS = 'photo',
		HOME = 'home',
		RES_ON = 'img/reservations-button-over.jpg',
		RES_OFF = 'img/reservations-button.jpg',
		SPACER = 'img/spacer.gif';

	function loadPhotos() {
		var i, str, item, end = 49, wrap = $('.photo-page');
		
		if (!wrap.find('a').length) {
			for (i = 0; i <= end; i += 1) {
				str = ['<a rel="gallery" href="img/gallery/web-', i, '.jpg">',
						'<img src="img/gallery/web-', i, '-150x150.jpg"/></a>'].join('');
				item = $(str);
				wrap.append(item);			
			}		
							
			wrap.find('a').fancybox({
				'titleShow'     : false,
				'transitionIn'	: 'elastic',
				'transitionOut'	: 'elastic',
				'easingIn'      : 'easeOutBack',
				'easingOut'     : 'easeInBack'
			});				
		}
	}

	function page() {
		var elem = $(this), ctx = this.className, temp = this.className;

		over.hide().css({width: '0px'});

		if (ctx === PHOTOS) {
			ctx = HOME;
		}

		lImg.hide().attr('src', 'img/' + ctx + '-left.jpg').fadeIn();
		rImg.hide().attr('src', ctx === HOME ? SPACER : 'img/' + ctx + '-right.jpg').fadeIn();
		
		pages.hide();
		
		if (temp === PHOTOS) {
			ctx = PHOTOS;
			loadPhotos();
		}
		
		$('.' + ctx + '-page').fadeIn();
		
		window.location.hash = ctx;
		current = ctx;
		
		return false;
	}

	function navOver(e) {
		var elem, img;
		
		if (current === HOME) {
			img = over.find('img'); 
			img.hide().attr('src', 
				e.type === 'mouseenter' ? 'img/' + this.className + '-over.jpg' : SPACER).fadeIn('fast');
		}
	}
	
	function navWrapOver(e) {
		if (current === HOME) {
			if (e.type === 'mouseenter') {
				over.show().animate({width: '486px'});	
			} else if (e.type === 'mouseleave') {
				over.animate({width: '0px'}).hide();	
			}	
		} else {
			over.css({width: '0px'}).hide();
		}	
	}
	
	function resRollover(e) {
		// preload rollover image
		(new Image()).src = RES_ON;
	
		resPage.find('a').bind('mouseenter mouseleave', function (e) {
			$(this).find('img').attr('src', e.type === 'mouseenter' ? RES_ON : RES_OFF);
		});			
	}

	$(document).ready(function () {
		home = $('.home');
		pages = $('.page');
		linkPages = $('.links a');
		resPage = $('.reservations-page');
		
		over = $('.over');		
		left = $('.left');
		right = $('.right');
		lImg = left.find('img');
		rImg = right.find('img');

		nav = $('.nav a');
		navWrap = $('.nav ul');
		navWrap.bind('mouseenter mouseleave', navWrapOver);
		nav.click(page).bind('mouseenter mouseleave', navOver);
		home.click(page);
		linkPages.click(page);
		resRollover();	
		
		if (window.location.hash) {
			hashCtx = window.location.hash.substring(1);
		
			$('.' + hashCtx).trigger('click');
			current = hashCtx;
		} else {
			$('.home-page').fadeIn();
			current = HOME;
		}
	});
	
}(jQuery));
