function isPositionFixedSupported () {
	var isSupported = null;
	if (document.createElement) {
		var el = document.createElement('div');
		if (el && el.style) {
			el.style.width = '1px';
			el.style.height = '1px';
			el.style.position = 'fixed';
			el.style.top = '10px';
			var root = document.body;
			if (root && root.appendChild && root.removeChild) {
				root.appendChild(el);
				isSupported = (el.offsetTop === 10);
				root.removeChild(el);
			}
			el = null;
		}
	}
	return isSupported;
}

function markVisiblePeriods() {
	$("#periodNavigator a").removeClass('selected');
	
	var docViewTop = $(window).scrollTop();
	var docViewBottom = docViewTop + $(window).height();

	$("#events .period h2 a").each(function () {
		var elemTop = $(this).offset().top;

	    var elemBottom = null;
		$(this).parents('.period').nextAll('div').each(function () {
			if (!$(this).hasClass('event')) {
				return false;
			}
			elemBottom = this;
		});
		elemBottom = $(elemBottom).offset().top + $(elemBottom).height();
	
		if ((docViewTop < elemBottom) && (docViewBottom > elemTop)) {
			$('#periodNavigator a[href=#' + $(this).attr('name') + ']').addClass('selected');
		}
	});
}

jQuery(function() {

	var periodNavigator = $('#periodNavigator');

	if (isPositionFixedSupported()) {
		periodNavigator.css({
			position: 'fixed',
			left	: periodNavigator.offset().left,
			top		: periodNavigator.offset().top,
			right	: null
		});
		$(window).resize(function() {
			var parent = periodNavigator.parent();
			periodNavigator.css('left', (parent.offset().left + parent.outerWidth() - periodNavigator.width()) + "px");
		});
	} else {
		periodNavigatorOffset = Number(periodNavigator.css("top").match(/[0-9]*/)[0]);
		$(window).scroll(function() {
			periodNavigator.css("top", ($(this).scrollTop() + periodNavigatorOffset) + "px");
		});
	}

	$(window).scroll(markVisiblePeriods);
	markVisiblePeriods();
	
	$('a', periodNavigator).click(function () {
		if ($(this).hasClass('prevNext')) {
			return true;
		}
		
		$.scrollTo($('a[name=' + $(this).attr('href').substr(1) + ']'), 800);
		return false;
	});
});
