(function ($) {

		var
			hasLoadedContent = false,
			siteHost = 'http://www.runemolnes.com',
			currentHref = null,
			animationSpeed = 1000,
			$panels = $('div.panels');

		// Skjul panel frem til innhold blir lastet inn
		$panels.hide();

		function lastInnSide (e) {
			var href = $.bbq.getState('page') || '/pages';

			/*
			 * Ingen vits å laste inn helt ny side om ikke URL har endret seg.
			 * Dette skjer bl.a. når man navigerer forskjellige foto i galleriet, da 'photo'
			 * parameteren blir endret, mens 'page' parameteren er den samme.
			 */
			if (href === currentHref) {return;}
			/*
			 * Fjern photo-parameter når vi laster inn helt ny side, om den eksisterer. Ettersom
			 * fjerning av en parameter vil føre til ny 'hashchange' avventer vi innlasting
			 * av den nye siden til den avfyres ved å returnere direkte her.
			 */
			else if (hasLoadedContent && $.bbq.getState('photo')) {
				$.bbq.removeState('photo');
				return;
			}

			currentHref = href;

			$panels.slideUp(animationSpeed, function() {
				$panels.load(href, function() {
					// Vent et halvsekund etter innlasting før vi viser nytt innhold
					_gaq.push(['_trackPageview', href]);
					setTimeout(function () {
						$panels
							.children().first()
								.fadeIn(animationSpeed)
								.end().end()
							.slideDown(animationSpeed);
					}, 500);

					hasLoadedContent = true;
				});
			});

			oppdaterNavigasjon();
		}

		function oppdaterNavigasjon () {
			$('#navigation a')
				.removeClass('active')
				.addClass(function (i, classes) {
					var href = $(this).attr('href').replace(siteHost, '');
					if (href == currentHref
							|| (href != '/pages' && currentHref.indexOf(href) !== -1)) {
						return 'active';
					}
					return '';
				});
		}

		// Bruker live, slik at eventuelle .nav-link lenker i innlastet innhold vil bli knyttet opp automatisk
		$('a[href^=http://www.runemolnes.com/]').live('click', function (e) {
			// Hent adresse til siden fra lenkens href-attributt, men fjern domene fra URL
			var
				$this = $(this),
				href = $this.attr('href').replace(siteHost, '');

			$.bbq.pushState({ page: href });
			oppdaterNavigasjon($this, href);
			
			e.preventDefault();
			return false;
		});


		// 'onhashchange' event må lyttes til etter 'ready' event pga. Exploder
		$(document).ready(function () {
			$(window).bind('hashchange', lastInnSide);
			// Håndter eventuelle direkte forespørsler til underside via URL-fragment
			$(window).trigger('hashchange');
		});
	
	
})(jQuery);

