
function init() {
	dojo.io.bind({
	    url: "/ws/projects",
		load: function(type, data, evt){ displayProjects(data) },
	mimetype: "text/xml"
	});
}

function displayProjects(data) {
	var projtable = document.getElementById("projtable");
	var loading = document.getElementById("loading");
	projtable.style.display = "none";
	loading.style.display = "inline";
	
	var root = data.documentElement;
	projects = root.getElementsByTagName("project");
	
	var markup = "";
	var curr_cat = "";
	for(var i=0; i<projects.length; i++) {
		var pinfo = getProjInfo(projects[i]);
		if (curr_cat != pinfo['cat_name']) {  // FIXME: hack that requires sort by cats
			if (curr_cat != "")
				markup += "</ul>";
			curr_cat = pinfo['cat_name'];
			markup += "<h3>" + curr_cat + "</h3><ul>";
		}

		// main output
		if( pinfo["code"].length > 0 ) {
			markup += '<li><a href="/projects/' + pinfo["code"] + '">' + pinfo["name"];
			markup += '</a> - ' + pinfo['short'] + '</li>';
		}

		// some exceptions due to dot (.) in name - fixed in future dsource version
		if( pinfo["code"] == "tango" ) {
			markup += '<li><a href="/projects/tango.scrapple">tango.scrapple';
			markup += '</a> - Tango-specific utilities, useful code</li>';
		}
		if( pinfo["code"] == "openmw" ) {
			markup += '<li><a href="/projects/leetless.de">leetless.de';
			markup += '</a> - A game library development site</li>';
		}
		
	}
	projtable.innerHTML = markup;
	projtable.style.display = "inline";
	loading.style.display = "none";

}

var z=0;

function getProjInfo(p) {
	if (p.childNodes) {
		var aa = new Array();
		for(var i=0;i<p.childNodes.length;i++) {
			if (p.childNodes[i].nodeType == 1) {
//				if (z++<4) {
//					alert(p.childNodes[i].nodeName + " - " + p.childNodes[i].firstChild.nodeValue);
//				}
				var value = "";
				if (p.childNodes[i].firstChild) {
					value = p.childNodes[i].firstChild.nodeValue;
				}
				aa[p.childNodes[i].nodeName] = value;
			}
		}
		return aa;
	} else {
		return null;
	}
}
