var _page = 2;
var _loading = false;

function scroll()
{
	// check if already loading
	if (_loading) { return; }
	
	// check if new page should be loaded
	var scrollHeight = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);
	var innerHeight = document.viewport.getDimensions()['height'];
	var scrollY = document.viewport.getScrollOffsets()['top'];
    if (scrollHeight - innerHeight - scrollY > 100) { return; }
	
	// flip load flag
	_loading = true;
	
	// show progress
	$('loadProgress').style.display = 'block';
	
	// do ajax request
	var url = "http://" + location.host + "/page/" + _page;
	new Ajax.Request(url, {
		method: 'get',
		onSuccess: loaded,
		onFailure: failed
	});
}

function loaded(transport)
{
	var progress = $('loadProgress');

	// load content
	var div = new Element('div');
	div.innerHTML = transport.responseText;
    
    // append posts
    var posts = div.select("div[class='post']");
    if (posts.length > 0)
    {
		posts.each(function(post) { progress.insert({before: post}); });
	}
	else
	{
		Event.stopObserving(window, 'scroll', scroll);
	}
	
	// hide progress
	progress.style.display = 'none';
	
	// update state
	_page++;
	_loading = false;
}

function failed()
{
	$('loadProgress').style.display = 'none';
	Event.stopObserving(window, 'scroll', scroll);
}

Event.observe(document, 'dom:loaded', function() {
	if ($('loadProgress')) { Event.observe(window, 'scroll', scroll); }
});
