function f_clientWidth() {
	return f_filterResults (
		window.innerWidth ? window.innerWidth : 0,
		document.documentElement ? document.documentElement.clientWidth : 0,
		document.body ? document.body.clientWidth : 0
	);
}
function f_clientHeight() {
	return f_filterResults (
		window.innerHeight ? window.innerHeight : 0,
		document.documentElement ? document.documentElement.clientHeight : 0,
		document.body ? document.body.clientHeight : 0
	);
}
function f_scrollLeft() {
	return f_filterResults (
		window.pageXOffset ? window.pageXOffset : 0,
		document.documentElement ? document.documentElement.scrollLeft : 0,
		document.body ? document.body.scrollLeft : 0
	);
}
function f_scrollTop() {
	return f_filterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}
function f_filterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}

function scrollToElement(theElement)
{
	var selectedPosX = 0;
	var selectedPosY = 0;
	while(theElement != null)
	{
		selectedPosX += theElement.offsetLeft;
		selectedPosY += theElement.offsetTop;
		theElement = theElement.offsetParent;
	}
	window.scrollTo(selectedPosX,selectedPosY);
}
function jumpTo(a)
{
	if (a)
		scrollToElement(document.getElementById(a));
}

function loadPage(page, offset)
{
	$('#content').load("getpage.php?" + page, function(){
		if (offset)
			window.scrollTo(offset.X, offset.Y);
		else
			jumpTo(window.location.hash.substring(1));
		$(window).trigger('resize');
	});
	if (page == "index")
		$('#main').css("background-image", "url('graph/hatter_index.gif')");
	else
		$('#main').css("background-image", "url('graph/hatter_main.gif')");
}

$(function(){
	// if the browser supports that, than AJAX
	if (history.pushState && history.replaceState)
	{
		// set the first history state object too
		var page = window.location.href.replace(/^.*\?page=([^\?&\/]+).*$/, "$1");
		if (!(/^[^\?&\/]+$/.test(page)))
			page = "index";
		history.replaceState({ page: page, offset: { X: f_scrollLeft(), Y: f_scrollTop() } }, "");

		// for the history navigation
		window.onpopstate = function(event){
			if (event.state)
				loadPage(event.state.page, event.state.offset);
		};

		// if you click on a link
		$('a[href^="?page="]').live('click', function(event){
			event.preventDefault();
			var page = $(event.target).attr("href").replace(/^\?[^\/]*page=([^\?&\/]+)[^\?\/]*$/, "$1");
			history.pushState({ page: page, offset: { X: f_scrollLeft(), Y: f_scrollTop() } }, "", "?page=" + page);
			loadPage(page);
		});

		$(window).bind('scroll', function(event){
			var page = window.location.href.replace(/^.*\?page=([^\?&\/]+).*$/, "$1");
			history.replaceState({ page: page, offset: { X: f_scrollLeft(), Y: f_scrollTop() } }, "");
		});
	}

	$('a[href]').live('click', function(){
		this.blur();
	});
});

function imageOpen(href)
{
	window.open(href, '_blank', 'fullscreen=1');
}
