var subNaviRe = /^sub_(.+)/;
var subNaviObjects = new Object();
var subNaviHideTimeout = null;
var limit = 742;

function subnavi() {
	var divs = document.getElementsByTagName('DIV');
	for(var x=0; x<divs.length; x++) {
		if(divs[x].id && subNaviRe.test(divs[x].id)) {
			var parentObjId = subNaviRe.exec(divs[x].id)[1];
			var parentObj = document.getElementById(parentObjId);

			divs[x].onmouseover = subover;
			divs[x].onmouseout = subout;

			subNaviObjects[parentObjId] = divs[x];

			parentObj.onmouseover = subover;
			parentObj.onmouseout = subout;

			if(document.all && !window.opera) {
				parentObj.style.width = '100%';
				parentObj.style.height = '100%';
			}
		}
	}
}

function subover(e) {
	clearTimeout(subNaviHideTimeout);
	if(e && e.target) var se = e.target;
	else if(event.srcElement) var se = event.srcElement;
	var id = null;

	while(!se.id && !subNaviRe.test(se.id)) {
		se = se.parentNode;
	}

	if(subNaviRe.test(se.id)) {
		id = subNaviRe.exec(se.id)[1];
	}
	else {
		id = se.id;
	}
	var pe = document.getElementById(id);
	pe.style.textDecoration = 'underline';

	var subW = subNaviObjects[id].offsetWidth;
	var subPos = getPos(pe, 'x');

	if(subPos + subW > limit) {
		subPos = limit - subW;
		subNaviObjects[id].style.textAlign = 'right';
	}

	subNaviObjects[id].style.left = subPos;

	subNaviObjects[id].style.visibility = 'visible';
	hideAllNow(subNaviObjects[id]);
}

function subout(e) {
	subNaviHideTimeout = setTimeout('hideAllNow(null)', 700);
}

function hideAllNow(act) {
	for(var id in subNaviObjects) {
		if(subNaviObjects[id] != act) {
			subNaviObjects[id].style.visibility = 'hidden';
			document.getElementById(id).style.textDecoration = 'none';
		}
	}
}

function getPos(o, t) {
	var pos = 0;
	while(o.id != 'navicontainer') {
		if(o.nodeName == 'TD' || o.nodeName == 'TABLE') {
			if(t == 'x') {
				pos += o.offsetLeft;
			}
			else if (t == 'y') {
				pos += o.offsetTop;
			}
		}
		o = o.parentNode;
	}
	return pos;
}

