
function get_depth (item) {
	return item.split('-').length-1;
}

function get_li (node) {
	try {
		var n = $(node);
		if ((n == undefined) || ((n.nodeName != 'A') && (n.nodeName != '#text') && (n.nodeName != 'UL') && (n.nodeName != 'LI'))) return 'undefined';
		while (n.nodeName != 'LI') {
			n = n.parentNode;
		}
		return n.id;
	} catch (err) {
		return 'undefined';
	}
}

function is_child (par, ch) {
	var d = get_depth (ch);
	for (var i=0; i<d; i++) {
		if (ch == par) return true;
		ch = ch.substr (0, ch.length - 2);
	}
	return false;
}

function isIE() {
	return /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);
}

function fix_ie6 (item, action) {
	var children = item.childNodes.length;
	var i=0;
	while (i < children) {
		var child = item.childNodes[i];
		if (child.nodeName == 'UL') {
			if (action == 'show')
				$(child).setStyle ( {display: 'block'} );
			else
				$(child).setStyle ( {display: 'none'} );
		}
		i++;
	}
}

function menu_show (item) {
	$(item).addClassName('hov');
	if (isIE()) fix_ie6 ($(item), 'show');
}

function menu_hide (item) {
	$(item).removeClassName('hov');
	if (isIE()) fix_ie6 ($(item), 'hide');
}

function menu_hide_cascade (item) {
	var children = item.childNodes.length;
	var i=0;
	while (i < children) {
		var child = item.childNodes[i];
		if (child.nodeName == 'LI') {
			menu_hide (child);
			menu_hide_cascade(child);
		} else
		if (child.nodeName == 'UL')
			menu_hide_cascade(child);
		i++;
	}
}

function menu_mouseover (item, e) {
	if (!e) var e = window.event;

	var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;

	var targetId = get_li ($(reltg));

	if (is_child (item, targetId)) { // target is a child or the same object

	} else {
		menu_show (item);
	}
}

function menu_mouseout (item, e) {
	if (!e) var e = window.event;

	var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;

	var targetId = get_li($(reltg));

	if (is_child (item, targetId)) { // target is a child or the same object
	
	} else { // target is higher in hierarchy
		menu_hide (item);
		menu_hide_cascade ($(item));
	}
}

function initialize_menu (obj, num) {
	if (obj.nodeName == 'LI') {
		var obj_id = 'li'+num;
		Element.writeAttribute(obj, 'id', obj_id);
		Event.observe (obj, 'mouseover', function (e) { menu_mouseover(obj_id, e); });
		Event.observe (obj, 'mouseout', function (e) { menu_mouseout(obj_id, e); });
	}
	var children = obj.childNodes.length;
	var n = 0;
	var i=0;
	while (i < children) {
		var child = obj.childNodes[i];
		if ((child.nodeName == 'LI') || (child.nodeName == 'UL')) {
			if (child.nodeName == 'LI')
				initialize_menu (child, num+'-'+n++);
			else
				initialize_menu (child, num);
		}
		i++;
	}
}

Event.observe(window, 'load', function() {
	$$('a[rel="external"]').each(function(link) {
		if(link.readAttribute('href') != '' && link.readAttribute('href') != '#') {
			link.writeAttribute('target','_blank');
		}
	});
});
