var last_async_query = null;

function render_load_screen() {
	e = $('interstitial');
	
	if (e != null)
	{
	  e.style.display = "block";
	}
}

function async_load_results(hash, initial) {
	if (initial && hash == '') return;
	
	last_async_query = new Date().getTime();
	var querystring = "mode=update&timestamp=" + last_async_query + "&" + hash;
	var url = window.location.href.replace(/#.*$/, '');

	if (url.indexOf('?') == -1) {
  	separator = '?';
  } else {
		separator = '&';
	}
	
	render_load_screen();
	
	new Ajax.Request(url + separator + querystring);
}

function async_init_history() {
	jQuery.historyInit(async_load_results)
}

function get_hash_params() {
	if(window.location.href.search('#') == -1)
		return {};
	
	var hash_string = window.location.href.replace(/^.*#/, '');
	var hash_params = hash_string.split('&');

	var params = {}
	for (var i=0; i < hash_params.length; i++) {
		var values = hash_params[i].split('=');
		if (values[0] != '')
			params[values[0]] = values[1];
	}

	return params;
}

function set_hash_params(hash) {
	var hash_params = []

	for (var key in hash) {
		hash_params.push(key + '=' + hash[key]);
	}

	var hash_string = hash_params.join('&');

	jQuery.historyLoad(hash_string);
}

function async_update_params(new_params) {
	params = get_hash_params();

	for (var key in new_params) {
  	if (new_params[key] == null) {
	  		delete params[key];
	  } else {
			params[key] = new_params[key];
		}
	}

	set_hash_params(params);
	
	render_load_screen();

	return false;
}

jQuery(document).ready(async_init_history);
