﻿//
// Copyright(c) 2006-2009 DAITEC Co.,Ltd.
// Created  by S.Y. since 2006.12.21
// Modified by S.Y. since 2009.06.12
//

// メニューの設定と作成
function loadMenus() {
	// メニューの設定を記述
	oMenuSetting = new clsMenuSetting();
	
	// ご利用紹介 //////////////////////
	oMenuSetting.addMenuID( "naviMenuUsage" );
	
	oMenuSetting.addItem( "ご利用方法",				"/usage/use.htm" );
	oMenuSetting.addItem( "ご利用までの流れ",		"/usage/nagare.htm" );
	oMenuSetting.addItem( "ご利用規定",				"/usage/kitei.htm" );
//	oMenuSetting.addSeparate();
	
	
	// フロア紹介 //////////////////////
	oMenuSetting.addMenuID( "naviMenuFloor" );
	
	oMenuSetting.addItem( "フロアレイアウト",		"/floor/floor.htm" );
	oMenuSetting.addItem( "収容人数・面積",			"/floor/area.htm" );
	
	
	// 料金紹介 ////////////////////////
	oMenuSetting.addMenuID( "naviMenuPrice" );
	
	oMenuSetting.addItem( "ご利用料金",				"/price/charge.htm" );
	oMenuSetting.addItem( "設備機器",				"/price/setubi.htm" );
	oMenuSetting.addItem( "ケータリングサービス",		"/price/catering.htm" );
	
	
	// 空室検索 ////////////////////////
	oMenuSetting.addMenuID( "naviMenuSearch" );
	
	oMenuSetting.addItem( "空室検索",				"/rsv/akishitsuKensaku.aspx" );
	oMenuSetting.addItem( "空室状況一覧",			"/rsv/availableList.aspx" );
	
	
	// アクセスマップ
//	oMenuSetting.addMenuID( "naviMenuMap" );
	
//	oMenuSetting.addItem( "アクセスマップ",			"/contact/map.htm" );
//	oMenuSetting.addItem( "周辺駐車場",				"/contact/parking.htm" );
	
	
	// お問い合せ ////////////////////
	oMenuSetting.addMenuID( "naviMenuContact" );
	
	oMenuSetting.addItem( "お問い合せ",				"/contact/otoiawase.htm" );
	oMenuSetting.addItem( "よくある質問",			"/faq/faq.htm" );
	oMenuSetting.addItem( "イベント掲載申し込み",		"/contact/event-oubo.htm" );
//	oMenuSetting.addItem( "貸会議室設営スタッフ募集",	"/contact/arbeit.htm" );
	
	
	// 設定を元にメニューを作成
	makeNaviMenu();
}

// メニュー設定クラス定義
function clsMenuSetting() {
	this.itemKind	= new Array();		// 0:メニューID、1:リンク、2:セパレータ
	this.itemName	= new Array();
	this.itemLink	= new Array();
	
	this.addData	= addData;
	this.addMenuID	= addMenuID;
	this.addItem	= addItem;
	this.addSeparate= addSeparate;
}

function addData( nKind, sName, sLink ) {
	this.itemKind[this.itemKind.length]	= nKind;
	this.itemName[this.itemName.length]	= sName;
	this.itemLink[this.itemLink.length]	= sLink;
}

function addMenuID( sMenuID ) {
	this.addData( 0, sMenuID, "" );
}

function addItem( sName, sLink ) {
	this.addData( 1, sName, sLink );
}

function addSeparate() {
	this.addData( 2, "", "" );
}

// メニュー作成
function makeNaviMenu() {
	// CSSと、メニューの書き込み先の<span>を出力
	sTag =
		'<style type="text/css"><!--' +
			'#naviMenuContainer *{ margin:0px; padding:0px; }' +
			'#naviMenuContainer table{ width:180px; background-color:#E8E8E8; border:solid 1px #888888; position:absolute; z-index:999; visibility:hidden; }' +
			'#naviMenuContainer a{ width:168px; padding:1px 0px 1px 10px; color:#000000; display:block; font-size:13px; line-height:17px; text-decoration:none; }' +
			'#naviMenuContainer a:hover{ color:#FFFFFF; background-color:#0000FF; }' +
			'#naviMenuContainer .separate{ border-top:solid 1px #888888; }' +
		'--></style>' +
		'<span id="naviMenuContainer"></span>';
	
	document.writeln( sTag );
	oElmNaviMenu = document.getElementById( "naviMenuContainer" );
	
	// メニュー用のテーブルを出力
	sTag		= '';
	fMenuIn		= false;
	fSeparate	= false;
	
	for( i = 0; i < oMenuSetting.itemKind.length; i++ )
	{
		switch( oMenuSetting.itemKind[i] )
		{
		case 0:
			// <table>タグとメニューのIDを追加
			if( fMenuIn )
			{
				// 1つ前の<table>タグを閉じる
				sTag += '</table>\n';
				fMenuIn = false;
				fSeparate = false;
			}
			
			sTag += '<table id="' + oMenuSetting.itemName[i] +
					'" cellspacing="0" onMouseOver="onMouseOverNaviMenu()" onMouseOut="onMouseOutNaviMenu()">\n';
			
			fMenuIn = true;
			break;
		
		case 1:
			// <tr><td><a>タグとメニューの項目を追加
			if( fSeparate )
			{
				// セパレータ(ボーダ)の表示指定
				sTag += ' <tr><td class="separate">';
				fSeparate = false;
			}
			else
				sTag += ' <tr><td>';
			
			sTag += '<a href="' + oMenuSetting.itemLink[i] + '">' + oMenuSetting.itemName[i] + '</a></td></tr>\n';
			break;
		
		case 2:
			// 次の項目にセパレータを表示
			fSeparate = true;
			break;
		}
	}
	
	// 最後の<table>タグを閉じる
	if( fMenuIn )
		sTag += '</table>\n';
	
//	oElmNaviMenu.innerHTML = "<xmp>" + sTag + "</xmp>";
	oElmNaviMenu.innerHTML = sTag;
	
	// 表示メニューを初期化
	oActiveMenu 	= null;
	
	// タイマー用変数を初期化
	fHideMenuTimer	= false;
	nHideMenuTimer	= null;
}

// メニュー表示
function showNaviMenu( sMenuID, oTarget, nOffsetX, nOffsetY ) {
	// メニュー非表示のタイマー割込みを解除
	clearNaviMenuTimeout();
	
	// メニューを表示する座標を計算
	x = oTarget.offsetLeft;
	y = oTarget.offsetTop;
	
	oElmTemp = oTarget.offsetParent;
	
	// 親の要素を辿って行き、ウィンドウに対する相対座標を合算
	while( oElmTemp != null )
	{
		x += oElmTemp.offsetLeft;
		y += oElmTemp.offsetTop;
		
		oElmTemp = oElmTemp.offsetParent;
	}
	
	x += nOffsetX;
	y += nOffsetY;
	
	// 表示中のメニューを一旦非表示
	hideNaviMenu();
	
	// メニューを表示
	oElmNaviMenu = document.getElementById( sMenuID );
	
	if( oElmNaviMenu == null )
		return;
	
	oElmNaviMenu.style.left			= x + "px";
	oElmNaviMenu.style.top			= y + "px";
	oElmNaviMenu.style.visibility	= "visible";
	
	// 表示メニューを保持
	oActiveMenu = oElmNaviMenu;

}

// メニュー非表示までのタイマー割込み設定
function startNaviMenuTimeout() {
	fHideMenuTimer	= true;
	nHideMenuTimer	= setTimeout( "hideNaviMenuTimeout()", 200 );
}

// メニュー非表示のタイマー割込みを解除
function clearNaviMenuTimeout() {
	if( fHideMenuTimer )
		clearTimeout( nHideMenuTimer );
	
	fHideMenuTimer	= false;
	nHideMenuTimer	= null;
}

// タイマー割込みがタイムアウトしてメニューを非表示にする
function hideNaviMenuTimeout() {
	if( !fHideMenuTimer )
		return;
	
	fHideMenuTimer		= false;
	nHideMenuTimer		= null;
	
	hideNaviMenu();
}

// メニューを強制的に非表示
function hideNaviMenu() {
	if( oActiveMenu == null )
		return;
	
	oActiveMenu.style.visibility	= "hidden";
	oActiveMenu = null;
}

function onMouseOverNaviMenu() {
	// メニュー非表示のタイマー割込みを解除
	clearNaviMenuTimeout();
}

function onMouseOutNaviMenu() {
	// メニュー非表示のタイマー割込みを開始
	startNaviMenuTimeout();
}

