$(document).ready(function(){
	var filters = readCookie("filterString");


	// Event handler for categories
	$("#sub ul ul li a").attr('href', 'javascript:void(0)').click(function() {
		if ($(this.parentNode).hasClass("disabled")) {
			return;
		}
		else {
			oLI = $(this.parentNode);
			tmpId = oLI.attr('id') + ",";
			if ($(this.parentNode).hasClass("selected")) {
				// Remove selected item in nav bar
				oLI.removeClass("selected");

				// Remove from filters string
				if (filters.indexOf(tmpId) != -1) {
					filters = filters.replace(tmpId, "");
				}
			}
			else {
				$("#allProjects").removeClass("selected");

				// Add selected item in nav bar
				oLI.addClass("selected");

				// Add to filters string
				tmpId = oLI.attr('id') + ",";
				if (filters.indexOf(tmpId) == -1) {
					filters += tmpId;
				}
			}

			// Add cookie
			createCookie('filterString', filters);

			// Ask the server
			$.getJSON("ajaxPrjProcessor.php", { filters: filters, origin: "AJAX" }, processResult);

			return false;
		}
	});


	// Event handler for #allProjects
	$("#allProjects").click(function() {
		$("#sub ul ul li").removeClass("selected").removeClass("disabled");
		$(this).addClass("selected");
		filters = "";
		$("#main li").css("display", "block");

		// Remove cookie
		eraseCookie('filterString');

		return false;
	});
});


function processResult(res) {
	if (res.filters.length == 0) {
		$("#allProjects").click();
		return;
	}

	// Filter projects
	$("#main li").each(function(i){
		tmpId = $(this).attr('id').substring(3);
		if (jQuery.inArray(tmpId, res.projects) == -1) {
			$("#main #prj" + tmpId).css("display", "none");
		}
		else {
			$("#main #prj" + tmpId).css("display", "block");
		}
	});

	// Filter categories

	var tmpId;
	$("#sub ul ul li").each(function(i){
		tmpId = $(this).attr('id').substring(3);
		if (jQuery.inArray(tmpId, res.categories) == -1) {
			$("#sub #cat" + tmpId).addClass("disabled");
		}
		else {
			$("#sub #cat" + tmpId).removeClass("disabled");
		}
	});
}


function createCookie(name,value) {
	var date = new Date();
	date.setTime(date.getTime()+(60*60*1000)); // 1 hour
	var expires = "; expires="+date.toGMTString();
	document.cookie = name+"="+value+expires+"; path=/";
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return "";
}
