var openTime = 1;
var closeTime = 1;

var nextPageText = false;
var nextPage = "";
var curPage = "";
var isClosed = false;
var contentHeight = 0;

var newPageLoadedCallbacks = [];

function getHeight(obj) {
	var height = obj.height();
	height += parseInt(obj.css("padding-top"), 10);
	height += parseInt(obj.css("padding-bottom"), 10);
	return height;
}

function closePage() {
	if (curPage == "/content/home.html") {
		$("div#slideContainer > div.blog").animate({
			top: contentHeight - getHeight($("div#slideContainer > div.blog"))
		}, openTime * 1000);
		
		$("div#slideContainer div#footer").animate({
			top: contentHeight + 14
		}, openTime * 1000);
	}
	
	$("div#slideContainer").animate({
		top: contentHeight * -1 + 85
	}, closeTime * 1000, openPage);
	
	$("div#header div#links a").removeClass("selected");
}

function openPage() {
	isClosed = true;
	
	if (nextPageText != false) {
		setPageHTML(nextPageText);
	} else {
		nextPageText = true;
	}
	
	isClosed = false;
	
	$("div#slideContainer").animate({
		top: 85
	}, openTime * 1000);
	
	if (nextPage == "/content/home.html") {
		$("div#slideContainer > div.blog").animate({
			top: contentHeight + 14
		}, openTime * 1000).show();
		
		$("div#slideContainer div#footer").animate({
			top: contentHeight + 14 + getHeight($("div#slideContainer > div.blog")) + 14
		}, openTime * 1000);
	} else {
		$("div#slideContainer > div.blog").hide();
	}
	
	curPage = nextPage;
	nextPage = "";
}

function setPageHTML(html) {
	$("div#page div#content").html(html);
	contentHeight = getHeight($("div#page div#content"));
	
	if (isClosed) {
		$("div#slideContainer").css("top", contentHeight * -1 + 85);
		$("div#slideContainer > div.blog").css("top", contentHeight - getHeight($("div#slideContainer > div.blog")));
		$("div#slideContainer div#footer").css("top", contentHeight + 14);
	} else {
		if (curPage == "/content/home.html") {
		 	$("div#slideContainer > div.blog").css("top", contentHeight + 14);
		 	$("div#slideContainer div#footer").css("top", contentHeight + 14 + getHeight($("div#slideContainer > div.blog")) + 14);
		} else {	
			$("div#slideContainer > div.blog").css("top", contentHeight - getHeight($("div#slideContainer > div.blog")));
			$("div#slideContainer div#footer").css("top", contentHeight + 14);
		}
	}
	
	callNewPageCallbacks();
	
	nextPageText = false;
}

function callNewPageCallbacks() {
	$.each(newPageLoadedCallbacks, function (i, element) {
		element($("div#page div#content"));
	})
}

function loadPage() {
	$.ajax({
		url: nextPage,
		dataType: "html",
		success: function (data) {
			var start = data.indexOf('<!-- InstanceBeginEditable name="body" -->');
			
			if (start > 0) {
				start += ('<!-- InstanceBeginEditable name="body" -->').length;
				var end = data.indexOf('<!-- InstanceEndEditable -->', start);

				data = data.substring(start, end);
			}
			
			if (nextPageText == false) {
				nextPageText = data;
			} else {
				setPageHTML(data);
				nextPageText = false;
			}
		},
		error: function () {
			var data = "404";
			if (nextPageText == false) {
				nextPageText = data;
			} else {
				setPageHTML(data);
				nextPageText = false;
			}
		}
	});
}

$.address.init(function(event) {
	contentHeight = getHeight($("div#page div#content"));
})

$.address.change(function(event) {
	nextPage = event.value;
	if (nextPage == "" || nextPage == "/") nextPage = "/content/home.html";
	
	closePage();
	loadPage();
});

$(document).ready(function () {
	$("a").live("click", function (event) {
		if ($(this).attr("href").substr(0,7) == "http://") {
			closePage();
			return;
		}
		
		event.preventDefault();
		
		if ($(this).attr("href") == curPage) {
			return;
		}
		
		$.address.value($(this).attr("href"));
	});
});
