var System = {State:null};
var Ajax = {url:null,id:null};

System.Init = function()
{
	this.HashChange();
	this.State = $.bbq.getState();
}

System.HashChange = function()
{
	$(window).bind('hashchange', function(e) {
		var url = $.param.fragment();
		if (url == '') {
			$('#' + Ajax.id).html('');
			return;
		}
		var params = $.deparam(url);
		$.get(Ajax.url, params, System.OnData);
	});
	$(window).trigger('hashchange');
}

System.OnData = function(data)
{
	if (data != null)
		$('#' + Ajax.id).html(data).fadeIn('fast');
	// Record the latest state
	this.State = $.bbq.getState();
}

Ajax.PushState = function()
{
	var state = arguments[0];
	var merge = (arguments.length == 2 && arguments[1] == true) ? 3 : 1;
	$.bbq.pushState(state, merge);
}

function alertobj(obj)
{
	var str = "";
	for (var i in obj)
		str += i + " = " + obj[i] + "\n";
	alert(str);
}
