var menu = new Object;

menu.timeout 	= 250;
menu.DOMID 		= 'navigation';
menu.subMenu	= false;
menu.timer		= false;

var util = new Object;

util.addEvent = function(thisE, evType, fn, useCapture){
	if(thisE.AddEventListener){
		thisE.AddEventListener(evType, fn, useCapture);
		return true;
	} else if(thisE.attachEvent){
		var r = thisE.attachEvent('on' + evType, fn);
		return r;
	} else {
		var xEventFn = thisE['on' + evType];
		if(typeof thisE['on' + evType] != 'function'){
			thisE['on' + evType] = fn;
		} else {
			thisE['on' + evType] = function(e){ xEventFn(e); fn(e); };
		}
	}
};

util.getTarget = function(e){
	if (typeof e == 'undefined') {
		var e = window.event;
	}
	var source;
	if(typeof e.target != 'undefined'){
		source = e.target;
	} else if(typeof e.srcElement != 'undefined'){
		source = e.srcElement;
	} else {
		return true;
	}
	if (source.nodeType == 3) {
		source = source.parentNode;
	}
	return source;
};

menu.init = function(){
	items = document.getElementById(menu.DOMID).childNodes;
	menu.items = items;
	for(i=0; i<items.length; i++){
		targetA  = items[i].getElementsByTagName('a')[0];
		targetUL = items[i].getElementsByTagName('ul')[0];
		util.addEvent(targetA, "mouseover", menu.show, false);
		util.addEvent(targetA, "mouseout",  menu.setTimer, false);
		util.addEvent(targetUL, "mouseover", menu.killTimer, false);
		util.addEvent(targetUL, "mouseout",  menu.setTimer, false);
		subs = targetUL.getElementsByTagName('li');
	}
};

menu.show = function(e){
	menu.killTimer();
	menu.hide();
	elmnt = util.getTarget(e).parentNode; // LI
	if(!elmnt.className.match(/expanded/)){
		elmnt.className += ' expanded';
	}
};

menu.hide = function(){
	for(i=0; i<menu.items.length; i++){
		x = menu.items[i].className.replace(/expanded/, '');
		menu.items[i].className = x;
	}
};

menu.setTimer = function(){
	menu.timer = window.setTimeout(menu.hide, menu.timeout);
};

menu.killTimer = function(){
	if(menu.timer){
		window.clearTimeout(menu.timer);
		menu.timer = false;
	}
};

util.addEvent(window, "load", menu.init, false);


