
if (location.search.search(/nojavascript/) == -1) {
	if (typeof attachEvent != 'undefined') {
		attachEvent('onload', hijax);
	} else if (typeof addEventListener != 'undefined') {
		addEventListener('load', hijax, false);
	}
}

function hijax() {
	if (!set_active_item("submenu_ul", true, 1))
		set_active_item("submenu_ul", false, 1);

	if (!set_active_item("subsection_ul", true, 1) && 
	    !set_active_item("subsection_ul", false, 1))
		set_active_item("subsection_ul", false, 2);
}

function set_active_item(elem_id, require_exact, lookback) {
	var ul_elem = document.getElementById(elem_id);

	console.group("set_active_item(", elem_id, ", ", require_exact, ")");
	console.log("Current page: ", document.location.href)

	if (!ul_elem) {
		console.log("<-- ", elem_id, " doesn't exist.");
		console.groupEnd();
		return false;
	}

	var basename = document.location.href.substring(0, 
	    document.location.href.lastIndexOf("/"));
	var re1 = new RegExp("^" + basename + ".*");
	console.log("  BASE1:", basename)

	var parentdir = basename.substring(0, basename.lastIndexOf("/"));
	var re2 = new RegExp("^" + parentdir + ".*");
	console.log("  BASE2:", parentdir)

	var children = getChildrenByTagName(ul_elem, "LI");
	var c = children.length;

	for (var i = 0; i < c; i++) {
		var as = getChildrenByTagName(children[i], "A");
		var a = as[0];
		if (!a)
			continue;

		console.log("  CHECK:", a.href)

		if (require_exact) {
			if (a.href == document.location.href) {
				children[i].className = "active";
				console.log("<-- found EXACT match");
				console.groupEnd();
				return true;
			}
			continue;
		}

		if (a.href.match(re1)) {
			children[i].className = "active";
			console.log("<-- found BASE1 match");
			console.groupEnd();
			return true;
		}

		if (lookback != 2)
			continue;

		if (a.href.match(re2)) {
			children[i].className = "active";
			console.log("<-- found BASE2 match");
			console.groupEnd();
			return true;
		}
	}
	console.log("<-- did not find anything");
	console.groupEnd();
	return false;
}

function getChildrenByTagName(node, tag_name)
{
	if (!node || !node.childNodes)
		return new Array();

	if (!tag_name)
		tag_name = "*";

	var c = node.childNodes.length;
	var children = new Array();

	for (var i = 0; i < c; i++) {
		if (node.childNodes[i].tagName == tag_name) {
			children[children.length] = node.childNodes[i];
		}
	}

	return children;
}
