var hash_delay = 100;
var hash_timer = 0;
var last_hash = "--";

function process_search() {
	var term = jQuery("#ds").val();
	location.hash = "search/" + term;
}

jQuery(document).ready(function() {
	hash_timer = setInterval("hash_update()", hash_delay);	
	
	jQuery("#btnViewAll").click(function() {
		location.hash = "all";									 
	});
	jQuery("#btnViewTop").click(function() {
		location.hash = "top";									 
	});
	jQuery("#btnViewLatest").click(function() {
		location.hash = "latest";									 
	});
	
});

function hash_update() {
	var hash = location.hash;
	if (hash != last_hash) {
		last_hash = hash;
		if (hash.length > 1) {
			hash = hash.substr(1);
		} 
		process_hash(hash);
	}
}

function process_hash(hash) {
	var parts = hash.split("/");
	
	hash = parts[0];
	
	var extra = "";
	if (parts.length > 1) {
		extra = parts[1];
	}
	var extra2 = "";
	if (parts.length > 2) {
		extra2 = parts[2];
	}

	if (hash == "" || hash == "latest") {
		set_button_states(0,0,1);
		load_results("latest", extra);
	} else if (hash == "all") {
		set_button_states(1,0,0);
		load_results("all", extra);
	} else if (hash == "top") {
		set_button_states(0,1,0);
		load_results("top", extra);
	} else if (hash == "search") {
		set_button_states(0,0,0);	
		load_results("search", extra + "/" + extra2);
	}
}

function load_results(act, ext) {
	var url = "/listing.php";
	
	jQuery.post(url, {action: act, extra: escape(ext)}, function(data) {	
		var previous_button = jQuery(data).find('previous_button').text();
		var next_button = jQuery(data).find('next_button').text();
		var total = jQuery(data).find('total').text();
		
		var items = new Array();
		jQuery(data).find('item').each(function() {									
			var id = jQuery(this).find('id').text();
			var image = jQuery(this).find('image').text();
			var slug = jQuery(this).find('slug' ).text();
			var rank = jQuery(this).find('rank').text();
			var voted = jQuery(this).find('voted').text();
			items.push([id, image, slug, rank, voted]);
		});
		
		update_listing(previous_button, next_button, total, items);
	}, "xml");
}

function update_listing(previous_button, next_button, total, items) {
	jQuery("#boxes div.box").remove();
	
	var html = "";
	
	for(i=0; i<items.length; i++) {
		var box_bg = "novote";
		if (items[i][4] == 1)
			box_bg = "voted";
		
		html += "<div id=\"box-" + items[i][0] + "\" class=\"box " + box_bg + "\">\n";
		html += "<div class=\"box_image\"><a href=\"/" + items[i][2] + "/\"><img src=\"/uploads/" + items[i][1] + "-thumb.jpg\" /></a></div>\n"; 
		var rank = items[i][3];
		if (rank == 0)
			rank = "-";
		html += "<div class=\"box_rank\">" + rank + "<span>out of " + total + "</span></div>\n";
		
		html += "<div class=\"box_vote\">";
		html += "<a href=\"javascript:vote(" + items[i][0] + ",";
		if (items[i][4] == 0)
			html += 1;
		else
			html += 0;
		html += ")\"></a>"
		html += "</div>\n";
		
		html += "</div>";
	}

	jQuery("#boxes").append(html);
	
	var pagination = "";
	if (previous_button.length > 0) {
		pagination += "<a href=\"" + previous_button + "\"><img src=\"/images/site/btnPrevious.gif\" alt=\"Previous Page\" /></a>";
	}
	if (next_button.length > 0) {
		pagination += "<a href=\"" + next_button + "\"><img src=\"/images/site/btnNext.gif\" alt=\"Next Page\" /></a>";
	}
		
	
	jQuery("#pagination").html(pagination);
}

function set_button_states(b1, b2, b3) {
	if (b1 == 1)
		jQuery("#btnViewAll").css('background-image', 'url(/images/site/btnViewAll-selected.gif)');
	else
		jQuery("#btnViewAll").css('background-image', 'url(/images/site/btnViewAll.gif)');
	if (b2 == 1)
		jQuery("#btnViewTop").css('background-image', 'url(/images/site/btnViewTop-selected.gif)');
	else
		jQuery("#btnViewTop").css('background-image', 'url(/images/site/btnViewTop.gif)');
	if (b3 == 1)
		jQuery("#btnViewLatest").css('background-image', 'url(/images/site/btnViewLatest-selected.gif)');
	else
		jQuery("#btnViewLatest").css('background-image', 'url(/images/site/btnViewLatest.gif)');
}
