	var runable = (!document.getElementById)? (!document.all)? (!document.layers)? -1:1:2:3;
	var ie = (document.all)? true:false;
	var nowShowing = "#";
	var showedMenu = "";
	var onLayer = onLink = flgShow = 0;
	var timerID = st = en = 0;
	var mx = my = 0;
	// カーソルがメニューを離れてから消えるまでの秒数 1000→1秒
	var hideDelay = 1500;

	window.onload = function () {
		if( runable > 1 ) document.onmousemove = function (event) {
			delayHideMenu(event)
		}
	}
	function getElm(name,style) {	// HTMLオブジェクト取得
		if( runable == 2 ) {
			var gobj = document.all(name);	// IE4+
		} else {
			var gobj = document.getElementById(name);	// DOM
		}
		if( style && runable > 1 ) {
			gobj = gobj.style;
		}
		return gobj;
	}
	function getMouseX(e){
	  if(window.opera)   
	          return e.clientX;
	  else if(document.all)
	          return document.body.scrollLeft+event.clientX;
	  else if(document.layers||document.getElementById)
	          return e.pageX;
	}
	function getMouseY(e){
	  if(window.opera)
	          return e.clientY;
	  else if(document.all)   
	          return document.body.scrollTop+event.y;
	  else if(document.layers||document.getElementById)
	          return e.pageY;
	}
	function showMenu(n,X,Y) {	// メニュー表示
		if( runable < 2 ) {
			return;
		}
		var obj = getElm( "menu" + n, 1 );
		var lnk = getElm( "menuButton" + n );
		var lnks = getElm( "menuButton" + n, 1 );
		nowShowing = n;
		// 表示中のメニューがあったら消す
		if( showedMenu != "" && showedMenu != nowShowing ) {
			hideMenu(showedMenu);
		}
		if( obj.visibility == "visible" && onLink == 1 ) {
			return;
		}
		lnk.onmouseout = leaveLink;
		onLayer = onLink = 1;
		obj.left = X || parseInt(lnks.left);
		obj.top = Y || parseInt(lnks.top) + ( ( runable == 1 )? lnk.clip.height:lnk.offsetHeight );


//		obj.left = getMouseX("onMouseMove");
//		obj.top = getMouseY("onMouseMove")+165;

		obj.visibility = "visible";
		showedMenu = nowShowing;
		flgShow = 1;
		clearTimeout(timerID);
		st = t();
	}
	function leaveLink() {	// リンクからカーソルが離れた
		onLink = 0;
		en = t();
	}
	function delayHideMenu(e) {	// メニューを消すかどうかの判定その１
		mx = gmx(e);
		my = gmy(e);
		if( nowShowing == "#" || flgShow == 0 || st == 0 ) {
			return;
		}
		// リンクとメニューからカーソルが離れた
		if( onLink == 0 && checkPosition() ) {
			en = t();
			onLayer = 0;
			hideMenu();
		} else {
			st = t();
			onLayer = 1;
			clearTimeout(timerID);
		}
	}
	function hideMenu(n) {	// メニューを消すかどうかの判定その２
		clearTimeout(timerID);
		if(!n) {
			if( nowShowing == "#" || onLayer != 0 ) {
				return;
			}
			if( onLink == 1 ) {	// リンクの上にカーソルが乗ってる
				timerID = setTimeout( "hideMenu()", hideDelay );
				st = t();
				return;
			} else if( ((en-st) % hideDelay) < hideDelay && st != 0 ) {	// 指定秒数経過してない場合
				clearTimeout(timerID);
				timerID = setTimeout( "hideMenu()", hideDelay );
				st = 0;
				return;
			} else if( !checkPosition() ) {	// メニューの上にカーソルが乗ってる
				st = t();
				return;
			}
		}
		// メニューを消す
		getElm( "menu" + ((n)? n:nowShowing), 1 ).visibility = "hidden";
		showedMenu = "";
		onLayer = flgShow = 0;
	}
	function checkPosition() {	// カーソルがメニューに乗ってるか判定
		if( nowShowing == "#" ) {
			return;
		}
		var obj = getElm( "menu" + nowShowing );
		var x = mx - ( ( runable == 1 )? parseInt(obj.left):obj.offsetLeft );
		var y = my - ( ( runable == 1 )? parseInt(obj.top):obj.offsetTop );
		var w = ( runable == 1 )? parseInt(obj.clip.width):obj.offsetWidth;
		var h = ( runable == 1 )? parseInt(obj.clip.height):obj.offsetHeight;
		if( onLink == 0 && ( x <= 0 || y <= 0 || x >= w || y >= h ) ) {
			return true;
		}
		return false;
	}
	function t() {
		return (new Date()).getTime();
	}
	function gmx(e) {	// カーソル位置取得X軸
		if(ie) {
			return document.body.scrollLeft + event.clientX;
		} else {
			return e.pageX;
		}
	}
	function gmy(e) {	// カーソル位置取得Y軸
		if(ie) {
			return document.body.scrollTop + event.clientY;
		} else {
			return e.pageY;
		}
	}
