window.log=function(){log.history=log.history||[];log.history.push(arguments);if(this.console){arguments.callee=arguments.callee.caller;var a=[].slice.call(arguments);(typeof console.log==="object"?log.apply.call(console.log,console,a):console.log.apply(console,a))}};
(function(b){function c(){}for(var d="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,timeStamp,profile,profileEnd,time,timeEnd,trace,warn".split(","),a;a=d.pop();){b[a]=b[a]||c}})((function(){try{console.log();return window.console;}catch(err){return window.console={};}})());
// Log as JSON stringified for easy overview
window.logs=function(s){log(JSON.stringify&&JSON.stringify(s)||s)};

$.CMS = {
	FULL_URL_ROOT : $('script[data-full-root]').data('full-root'),
	URL_ROOT : $('script[data-root]').data('root')
};


jQuery(function($){
	function initContent() {
		$('#main .gallery a').attr('rel', 'gallery').fancybox({
			padding : 0,
			overlayColor : '#fff',
			overlayOpacity : 0.84
		});
	}
	initContent();
	
	/* Ajax */
	var popped = ('state' in window.history), initialURL = location.href, prevUrl = currentUrl();
	function loadContent(url) {
		if(url == prevUrl) {
			return;
		}
		prevUrl = url;
		$.post(url.replace(/(?=\?)|$/, '.ajax'), function(data) {
			var openItem = $('aside section.menu>nav>ul>li.open');
			$('aside section.menu').find('li li a.open,li li.open').removeClass('this open');
			var newOpenItem = $('aside section.menu li li a[href="'+url.replace(/\?.*$/, '')+'"]').addClass('this open').parent().addClass('this open').parent().parent();
			$('aside section.menu>nav>ul>li>a[href="'+url.replace(/\?.*$/, '')+'"]').addClass('this open').parent().addClass('this open');
			if(openItem[0] != newOpenItem[0]) {
				openItem.removeClass('open').children('a').removeClass('this open').next().css('display', 'block').slideUp();
				newOpenItem.addClass('open').children('a').addClass('open').next().css('display', 'block').hide().slideDown();
			}
/*			$('aside section.menu>nav>ul>li>a[href="'+url.replace(/\?.*$/, '')+'"]').addClass('open').parent().addClass('open').siblings().removeClass('open').children('a').removeClass('open').closest('nav').prev()
				.addClass('open').parent().addClass('open').siblings().removeClass('open').children('a').removeClass('open').closest('nav').prev();*/
			data = $(data);
			document.title = $('#page-title', data).text();
			$('title').text(document.title);
			$('#main').fadeTo(250, 0, function() {
				var newContent = $('#main', data);
				$(this).replaceWith(newContent.hide());
				newContent.fadeTo(250, 1);
				$('body').attr('class', newContent.attr('class'));
				initContent();
			});
		}, 'html');
	}
	function currentUrl() {
		return location.href.replace(/#.*$/, '').replace($.CMS.FULL_URL_ROOT, '');
	}
	function newState(url) {
		if(!history.pushState) {
			return;
		}
		history.pushState({}, '', url);
		loadContent(url);
		return false;
	}
	$(window).bind('popstate', function(event) {
		var url = currentUrl();
		// Ignore inital popstate that some browsers fire on page load
		var initialPop = !popped && location.href == initialURL;
		popped = true;
		if(initialPop) {
			return;
		}
		loadContent(url);
	});
	$('body').delegate('aside nav a', 'click', function() {
		return newState($(this).attr('href'));
	});
	
	/* Check required fields on form */
	$('form.check-required').submit(function() {
		var form = this, ok = true;
		$('.required', this).each(function() {
			var that = $(this), label = $('label[for="'+that.attr('id')+'"]', form);
			if(that.val()) {
				that.add(label).removeClass('error');
			} else {
				ok = false;
				that.add(label).addClass('error');
			}
		});
		if(!ok) {
			return false;
		}
	});
	
});

