/*
 * file:	m.js
 * date:	2002-01-25
 * from:	Ben Boyle <bboyle@inspire.server101.com>
 * info:	manages menus
 */


var mItem = [];		// items
var mTime = [];		// timers, delay close
var mWait = 250;	// milliseconds delay

// set - setup menu, call with: menu, class
function mSet(ul, c) {
	// standards support?
	if (!document.getElementById) {
		return false;
	}

	// get menu items
	var i, j, e, a, f, b;
	var m = mItem.length;
	ul = document.getElementById(ul).getElementsByTagName('ul');
	for (i = 0; i < ul.length; i++) {
		// if there is an ID
		e = ul[i].getAttribute('id')
		if (e != "") {
			e = document.getElementById(mItem[m] = e); // id on mItem stack
			// menu <ul> class
			e.className = c;
			// display toggle
			f = new Function('mShow(\'' + mItem[m] + '\');');
			b = new Function('mBlur(\'' + mItem[m] + '\');');
			// events
			with (e.parentNode) {
				// mouse <li>
				onmouseover = f;
				onmouseout = b;
				// tab <a>
				a = getElementsByTagName('a');
				for (j = 0; j < a.length; j++) {
					a[j].onfocus = f;
					a[j].onblur = b;
				}
				// parent <li> class
				className = c;
			}
			// next item
			m++;
		}
	}

	return true;
}

// show - show an element
function mShow(id) {
	// hide other menus
	for (var i = 0; i < mItem.length; i++) {
		if (document.getElementById(mItem[i]).style.display != 'none') {
			if (mItem[i] != id) {
				mHide(mItem[i]);
			} else {
				mClear(mItem[i]);
			}
		}
	}
	if (document.getElementById(id).style.display != 'block') {
		document.getElementById(id).style.display = 'block';
	}
	return true;
}

// hide - hide an element
function mHide(id) {
	mClear(id);
	document.getElementById(id).style.display = 'none';
}

// blur - delayed close
function mBlur(id) {
	mTime[id] = setTimeout('mHide(\'' + id + '\');', mWait);
}

// clear timeout
function mClear(id) {
	if (mTime[id]) {
		clearTimeout(mTime[id]);
		mTime[id] = null;
	}
}
