/***********************************************************
 *                                                         *
 *        メニューの表示・制御を行うオブジェクト           *
 *                                                         *
 *             2006-06-29 Synergy Incubate Inc.            *
 *                                                         *
 ***********************************************************/
syne_menubar = {

 styleClassName:				Array(),			// メニューのDIVのIDのクラス名
 mainMenu:						Array(),			// メインメニュー定義
 subMenu:						Array(),			// サブメニュー定義
 imgDefaultMenu:				Array(),			// メインメニュー背景画像
 imgOverMenu:					Array(),			// サブメニュー背景画像
 imgNowMenu:					Array(),			// サブメニューの現在ページの画像
 menuWidth:						Array(),			// メインメニューの幅
 menuHeight:					Array(),			// メインメニューの高さ
 subMenuWidth:					Array(),			// サブメニューの幅
 menuSpace:						Array(),			// メインメニューとサブメニューの隙間
 menuDirection:					Array(),			// メニューの並び方向

 zIndex:						99,					// DIVのzIndex
 effect:						"shadow(color=#888888,direction=120, Strength=6);",	// メニュー影つき
 strength:						6,					// 影のサイズ


 modeHorizontal:				"horizontal",		// 横並び
 modeVerticalRight:				"vertical-right",	// 縦並び・サブメニュー右
 modeVerticalLeft:				"vertical-left",	// 縦並び・サブメニュー左

 // デフォルト設定
 defaultFontFamily:				"MS ゴシック",		// メニューのフォント
 defaultFontSize:				12,					// メニューのフォントサイズ
 defaultFontWeight:				"bold",				// メニューの文字の太さ
 defaultFontColor:				"black",			// メニューの文字の色
 defaultBorderWidth:			1,					// メニューの枠線の太さ
 defaultBorderStyle:			"solid",			// メニューの枠線のスタイル
 defaultBorderColor:			"black",			// メニューの枠線の色
 defaultVerticalAlign:			"middle",			// メニューの文字の垂直位置
 defaultTextAlign:				"center",			// メニューの文字の水平位置

 defineMainMenuSetNum:			2,					// メインメニューの設定値の個数
 defineSubMenuSetNum:			2,					// サブメニューの設定値の個数
 defineMainMenuIDName:			"iLmain",			// メインメニューのDIVタグにつけるID名の先頭部分
 defineSubMenuIDName:			"_sub",				// サブメニューにつけるID名の名称
 defineImgIDName:				"_img",				// メニューのイメージにつけるID名の名称
 defineMenuTitleDivName:		"_title",			// メニュータイトル部のDIVタグのID名の名称
 defineTitleTableIDName:		"_title_table",		// メニュー内に作成するテーブル用のID名の名称
 defineTitleTableTdIDName:		"_title_td",		// メニュー内に作成するテーブル内TDタグのID名の名称
 defineTitleTextIDName:			"_title_text",		// メニュー内に表示するテキストのID名の名称
 defineMenuSpaceName:			"_space",			// メインメニュー、サブメニュー間の空間のDIVのID名の名称

 defineOverSubMenuLeftGyap:		2,					// サブメニューOverイベントでclientYの誤差修正分
 defineOverSubMenuTopGyap:		2,					// サブメニューOverイベントでclientXの誤差修正分
 defineOverMenuSpaceGyap:		4,					// メインメニューとサブメニューの間の空間で、clientXの誤差修正分

 defineSyneModeName:			"synemode",			// スタイルシートで、メニュー用のスタイルシートが定義してあるか
													// 判断するための属性

 defineMainMenuExecCursor:		"pointer",			// メインメニューで、JavaScript等、直接実行されるメニューの
													// マウスカーソル
 defineMainMenuSelectCursor:	"default",			// メインメニューで、サブメニューが表示されるメニューの
													// マウスカーソル
 defineSubMenuCursor:			"pointer",			// サブメニューのマウスカーソル

 defineMainMenuStyle:			"menu_title",		// メインメニューのスタイルクラス名
 defineSubMenuStyle:			"sub_title",		// サブメニューのスタイルクラス名


/*---------------------------------------------------------*
 *      初期設定
 *
 *     defStyleClassName: スタイルシートクラス名
 *     defMainMenu		: メインメニュー定義
 *     defSubMenu		: サブメニュー定義
 *     defImgDefaultMenu: メニュー背景画像
 *     defImgOverMenu	: メニューのマウスオーバー時の画像
 *     defImgNowMenu	: サブメニューの現在ページの画像
 *     defMenuWidth		: メインメニューの幅
 *     defMenuHeight	: メインメニューの高さ
 *     defSubMenuWidth	: サブメニューの幅
 *     defMenuSpace		: メインメニューとサブメニューの隙間
 *     defMenuDirection	: メニューの並び方向(0:横並び, 1:縦並び・サブメニュー右, -1:縦並び・サブメニュー左)
 *     return : なし
 *---------------------------------------------------------*/
 init: function(
		 defStyleClassName
		,defMainMenu
		,defSubMenu
		,defImgDefaultMenu
		,defImgOverMenu
		,defImgNowMenu
		,defMenuWidth
		,defMenuHeight
		,defSubMenuWidth
		,defMenuSpace
 ){
	var	i,j;
	var nowPos;

	//---- 引数の異常チェック ----

	// メニュー定義のDIVタグID名称
	if(defStyleClassName.length == 0) {
		window.alert("syne_menubar.init()\nメニュー定義のDIVタグID名称に異常があります。");
		return;
	}

	// メインメニューがまったく設定されていない場合
	if(defMainMenu.length == 0) {
		window.alert("syne_menubar.init()\n"+defStyleClassName+"\nメインメニューの定義に異常があります。");
		return;
	}

	// メインメニューの各設定が足りない場合
	for(i = 0; i < defMainMenu.length; i++) {
		if(defMainMenu[i].length != syne_menubar.defineMainMenuSetNum) {
			window.alert("syne_menubar.init()\n"+defStyleClassName+"\nメインメニューの" + i + "番目の定義に異常があります。");
			return;
		}
	}

	// メインメニューに対応するサブメニューの設定が足りない場合
	if(defSubMenu.length < defMainMenu.length) {
		window.alert("syne_menubar.init()\n"+defStyleClassName+"\nメインメニューに対応するサブメニューの設定が足りません。");
		return;
	}

	// サブメニューの表示数に対応する定義がちゃんとなされているか？
	for(i = 0; i < defSubMenu.length; i++) {
		for(j = 0; j < defSubMenu[i].length; j++) {
			// サブメニュー表示用の配列が用意されているにもかかわらず、配列内に定義が存在しない場合
			if(defSubMenu[i][j].length == 0) {
				window.alert("syne_menubar.init()\n"+defStyleClassName+"\nサブメニュー[" + i + "][" + j + "]の定義が未設定です。");
				return;
			}

			// サブメニュー表示用の配列が用意されているにもかかわらず、必要な定義数が正常で場合
			if(defSubMenu[i][j].length != syne_menubar.defineSubMenuSetNum) {
				window.alert("syne_menubar.init()\n"+defStyleClassName+"\nサブメニュー[" + i + "][" + j + "]の定義数に問題があります。");
				return;
			}
		}
	}

	// メインメニューの幅チェック
	if(defMenuWidth <= 0) {
		window.alert("syne_menubar.init()\n"+defStyleClassName+"\nメインメニューの幅を指定してください。");
		return;
	}

	// メインメニューの高さ
	if(defMenuHeight <= 0) {
		window.alert("syne_menubar.init()\n"+defStyleClassName+"\nメインメニューの高さを指定してください。");
		return;
	}

	// サブメニューの幅
	if(defSubMenuWidth <= 0) {
		window.alert("syne_menubar.init()\n"+defStyleClassName+"\nサブメニューの幅を指定してください。");
		return;
	}

	// メインメニューとサブメニューの隙間
	if(defMenuSpace < 0) {
		window.alert("syne_menubar.init()\n"+defStyleClassName+"\nメインメニューとサブメニューの隙間を指定してください。");
		return;
	}


	// 引数をオブジェクトのプロパティに設定
	syne_menubar.styleClassName.push(defStyleClassName);
	syne_menubar.mainMenu.push(defMainMenu);
	syne_menubar.subMenu.push(defSubMenu);
	syne_menubar.imgDefaultMenu.push(defImgDefaultMenu);
	syne_menubar.imgOverMenu.push(defImgOverMenu);
	syne_menubar.imgNowMenu.push(defImgNowMenu);
	syne_menubar.menuWidth.push(defMenuWidth);
	syne_menubar.menuHeight.push(defMenuHeight);
	syne_menubar.subMenuWidth.push(defSubMenuWidth);
	syne_menubar.menuSpace.push(defMenuSpace);

	// 今回新規に設定が追加された配列の位置
	nowPos = syne_menubar.styleClassName.length - 1;

	var bgColor;
	var verticalAlign;
	var textAlign;
	var fontFamily;
	var fontSize;
	var fontWeight;
	var fontColor;
	var	borderWidth;
	var borderStyle;
	var borderColor;
	var style;
	var top				= 0;
	var left			= 0;
	var width			= 0;
	var height			= 0;
	var text_div_start;
	var text_div_end;

	// メニュー定義<div>の生成
    var menubar_div = document.getElementById(syne_menubar.styleClassName[nowPos]);

	// syne_menubar.styleClassNameに対応するDIVタグが存在しなかった場合は終了
	if(menubar_div == null) {
		window.alert("ID名「" + syne_menubar.styleClassName[nowPos] + "」のDIVタグがHTML中に存在しません。");
		return;
	}

	if(syne_menubar.getStyleProperty(menubar_div, syne_menubar.defineSyneModeName) == undefined) {
		window.alert("syne_menubar.init()\n"+defStyleClassName+"\nスタイルシートが正常に設定されていません。");
		return;
	}

	// メニューの表示方向を設定
	syne_menubar.menuDirection[nowPos] = syne_menubar.getStyleProperty(menubar_div, "menu-direction");
	if(syne_menubar.menuDirection[nowPos] == undefined) {
		syne_menubar.menuDirection[nowPos] = syne_menubar.modeHorizontal;
	}

	if(	   syne_menubar.menuDirection[nowPos] != syne_menubar.modeHorizontal	// 横並び
		&& syne_menubar.menuDirection[nowPos] != syne_menubar.modeVerticalRight	// 縦並び・サブメニュー右
 		&& syne_menubar.menuDirection[nowPos] != syne_menubar.modeVerticalLeft	// 縦並び・サブメニュー左
	) {
		window.alert("syne_menubar.init()\n"+defStyleClassName+"\nメニューの並び方向の指定が間違っています。");
		return;
	}

	for(i=0; i < syne_menubar.mainMenu[nowPos].length; i++) {

		// メインメニュー
	    var main_div          = document.createElement("div");
	    main_div.id           = syne_menubar.styleClassName[nowPos] + "_" + syne_menubar.defineMainMenuIDName+i;
		main_div.style.width  = syne_menubar.menuWidth[nowPos]  + syne_menubar.strength;
		main_div.style.height = syne_menubar.menuHeight[nowPos] + syne_menubar.strength;
		main_div.style.zIndex = syne_menubar.zIndex;

	    menubar_div.appendChild(main_div);

		if(syne_menubar.effect != "") {
	   		main_div.style.filter = syne_menubar.effect;
		}

		// メニュー個別にスタイルシートが設定されていない場合は、「#syne_menubar」の基点から配置する
		if(syne_menubar.getStyleProperty(main_div, "left") == "auto") {
			main_div.style.position = "absolute";
			if(syne_menubar.menuDirection[nowPos] == syne_menubar.modeHorizontal) {
				main_div.style.top      = 0;
				main_div.style.left     = syne_menubar.menuWidth[nowPos] * i;
			} else if(   syne_menubar.menuDirection[nowPos] == syne_menubar.modeVerticalRight
					  || syne_menubar.menuDirection[nowPos] == syne_menubar.modeVerticalLeft) {
				main_div.style.top      = syne_menubar.menuHeight[nowPos] * i;
				main_div.style.left     = 0;
			}
		}

		// 画像が指定されているときは、画像を設定
		if(syne_menubar.isColor(syne_menubar.imgDefaultMenu[nowPos]) == false) {
		    var img          = document.createElement("img");
		    img.id           = syne_menubar.styleClassName[nowPos]
									+ "_"
									+ syne_menubar.defineMainMenuIDName
									+ i
									+ syne_menubar.defineImgIDName;
		    img.src          = syne_menubar.imgDefaultMenu[nowPos];
			img.style.width  = syne_menubar.menuWidth[nowPos];
			img.style.height = syne_menubar.menuHeight[nowPos];
		    main_div.appendChild(img);

			// メインメニュー背景画像へのイベント設定
		    addListener(img, "mouseover", syne_menubar.mouseOverMenu, false);
		    addListener(img, "mouseout",  syne_menubar.mouseOutMenu,  false);
		    addListener(img, "mousedown", syne_menubar.mouseDownMenu, false);
		}

	    var main_space_div          = document.createElement("div");
	    main_space_div.id           = syne_menubar.styleClassName[nowPos]
										+ "_"
										+ syne_menubar.defineMainMenuIDName 
										+ i 
										+ syne_menubar.defineMenuSpaceName;
		main_space_div.style.zIndex = syne_menubar.zIndex+1;

	    menubar_div.appendChild(main_space_div);

		// メニュー個別にスタイルシートが設定されていない場合は、「#syne_menubar」の基点から配置する
		main_space_div.style.position = "absolute";

		if(syne_menubar.menuDirection[nowPos] == syne_menubar.modeHorizontal) {
			main_space_div.style.top    = syne_menubar.menuHeight[nowPos];
			main_space_div.style.left   = syne_menubar.menuWidth[nowPos] * i;
			main_space_div.style.width  = syne_menubar.menuWidth[nowPos];
			main_space_div.style.height = syne_menubar.menuSpace[nowPos];
		} else if(syne_menubar.menuDirection[nowPos] == syne_menubar.modeVerticalRight) {
			main_space_div.style.top    = syne_menubar.menuHeight[nowPos] * i;
			main_space_div.style.left   = syne_menubar.menuWidth[nowPos];
			main_space_div.style.width  = syne_menubar.menuSpace[nowPos];
			main_space_div.style.height = syne_menubar.menuHeight[nowPos];
		} else if(syne_menubar.menuDirection[nowPos] == syne_menubar.modeVerticalLeft) {
			main_space_div.style.top    = syne_menubar.menuHeight[nowPos] * i;
			main_space_div.style.left   = 0 - syne_menubar.menuSpace[nowPos];
			main_space_div.style.width  = syne_menubar.menuSpace[nowPos];
			main_space_div.style.height = syne_menubar.menuHeight[nowPos];
		} 
		addListener(main_space_div, "mouseout", syne_menubar.mouseOutMenuSpace, false);

		// メインメニューのタイトル部
	    var title_div       = document.createElement("div");
	    title_div.id        = syne_menubar.styleClassName[nowPos] 
								+ "_" 
								+ syne_menubar.defineMainMenuIDName 
								+ i 
								+ syne_menubar.defineMenuTitleDivName;
		title_div.className = syne_menubar.styleClassName[nowPos] + "_" + syne_menubar.defineMainMenuStyle;
	    main_div.appendChild(title_div);

		top                 = 0;
		left                = 0;
		width               = syne_menubar.menuWidth[nowPos];
		height              = syne_menubar.menuHeight[nowPos];
		verticalAlign       = syne_menubar.defaultVerticalAlign;
		textAlign           = syne_menubar.defaultTextAlign;


		if(syne_menubar.getStyleProperty(title_div, syne_menubar.defineSyneModeName) == undefined) {

			top                      = "auto";
			left                     = "auto";
			title_div.style.top      = 0;
			title_div.style.left     = 0;
			title_div.style.width    = syne_menubar.menuWidth[nowPos];
			title_div.style.height   = syne_menubar.menuHeight[nowPos];

			title_div.style.position = "absolute";
			fontFamily               = syne_menubar.defaultFontFamily;
			fontSize                 = syne_menubar.defaultFontSize;
			fontWeight               = syne_menubar.defaultFontWeight;
			fontColor                = syne_menubar.defaultFontColor;
			borderWidth              = syne_menubar.defaultBorderWidth;
			borderStyle              = syne_menubar.defaultBorderStyle;
			borderColor              = syne_menubar.defaultBorderColor;

		} else {

			if(syne_menubar.getStyleProperty(title_div, "position") == "static") {
				title_div.style.position = "absolute";
			}

			if(syne_menubar.getStyleProperty(title_div, "top") == "auto") {
				title_div.style.top = 0;
				verticalAlign       = syne_menubar.getStyleProperty(title_div, "verticalAlign");
				top = "auto";
			} else {
				verticalAlign = "top";
				top           = syne_menubar.getStyleProperty(title_div, "top");
			}

			if(syne_menubar.getStyleProperty(title_div, "left") == "auto") {
				title_div.style.left = 0;
				textAlign            = syne_menubar.getStyleProperty(title_div, "textAlign");
				left = "auto";
			} else {
				textAlign                = "left";
				left = syne_menubar.getStyleProperty(title_div, "left");
			}

			if(syne_menubar.getStyleProperty(title_div, "width") == "auto") {
				title_div.style.width    = syne_menubar.menuWidth[nowPos];
			} else {
				width = syne_menubar.getStyleProperty(title_div, "width");
			}

			if(syne_menubar.getStyleProperty(title_div, "height") == "auto") {
				title_div.style.height   = syne_menubar.menuHeight[nowPos];
			} else {
				height = syne_menubar.getStyleProperty(title_div, "height");
			}

			title_div.style.top      = 0;
			title_div.style.left     = 0;

			borderWidth = syne_menubar.getStyleProperty(title_div, "borderWidth");

			if(syne_menubar.getStyleProperty(title_div, "borderStyle") != "none") {
				borderStyle = syne_menubar.getStyleProperty(title_div, "borderStyle");
			}

			borderColor = syne_menubar.getStyleProperty(title_div, "borderColor");

			fontFamily    = syne_menubar.getStyleProperty(title_div, "fontFamily");
			fontSize      = syne_menubar.getStyleProperty(title_div, "fontSize");
			fontWeight    = syne_menubar.getStyleProperty(title_div, "fontWeight");
			fontColor     = syne_menubar.getStyleProperty(title_div, "color");
		}


		if(syne_menubar.subMenu[nowPos][i].length == 0) {
			title_div.style.cursor = syne_menubar.defineMainMenuExecCursor;
		} else {
			title_div.style.cursor = syne_menubar.defineMainMenuSelectCursor;
		}

		style = "border:" + borderWidth + " " + borderStyle + " "  + borderColor;

		if(top == "auto" || left == "auto") {
			text_div_start = "";
			text_div_end   = "";
		} else {
			text_div_start = "<div id='" + title_div.id + "_text'"
						+ " style='position:absolute; top:" + top + "; "
						+ "left:" + left + ";"
						+ "font-family:" + fontFamily + "; "
						+ "font-size:" + fontSize + "; "
						+ "font-weight:" + fontWeight + "; "
						+ "color:" + fontColor + "; "
						+ "'>";
			text_div_end  = "</div>";
		}


		// メニューが色指定の場合はtableタグ用にバックグラウンドカラーを設定
		bgColor = "";
		if(syne_menubar.isColor(syne_menubar.imgDefaultMenu[nowPos]) == true) {
			bgColor = "bgcolor='" + syne_menubar.imgDefaultMenu[nowPos] + "' ";
		}

		title_div.innerHTML = "<table id='" + title_div.id + "_table" + "' border='0'"
						+ " width='" + width + "'"
						+ " height='" + height + "'"
						+ bgColor
						+ " style='" + style + "'"
						+ ">"
						+ "<tr>"
						+ "<td id='" + title_div.id + "_td'"
						+ " border='0'"
						+ " style='vertical-align:" + verticalAlign + "; "
						+ "text-align:" + textAlign + "; "
						+ "font-family:" + fontFamily + "; "
						+ "font-size:" + fontSize + "; "
						+ "font-weight:" + fontWeight + "; "
						+ "color:" + fontColor + "; "
						+ "'"
						+ ">"
						+ text_div_start
						+ syne_menubar.mainMenu[nowPos][i][0]
						+ text_div_end
						+ "</td>"
						+ "</tr>"
						+ "</table>";

		if(syne_menubar.getStyleProperty(title_div, syne_menubar.defineSyneModeName) != undefined) {
			title_div.style.border = "";
		}


	    addListener(title_div, "mouseover", syne_menubar.mouseOverMenu, false)
	    addListener(title_div, "mouseout",  syne_menubar.mouseOutMenu,  false);
	    addListener(title_div, "mousedown", syne_menubar.mouseDownMenu, false);

		// サブメニュー部
		for(j=0; j < syne_menubar.subMenu[nowPos][i].length; j++) {

			// サブメニュー
		    var submenu_div = document.createElement("div");
		    submenu_div.id = syne_menubar.styleClassName[nowPos] 
								+ "_" + syne_menubar.defineMainMenuIDName 
								+ i 
								+ syne_menubar.defineSubMenuIDName 
								+ j;
			submenu_div.className = "sub_menu";
			submenu_div.style.position = "absolute"; 
		    menubar_div.appendChild(submenu_div);

			if(syne_menubar.effect != "") {
		   		submenu_div.style.filter = syne_menubar.effect;
			}
			submenu_div.visiblity = "hidden";

		}
	}
 },

/*---------------------------------------------------------*
 *      メインメニューのmouseoverイベント
 *
 *     e      : イベントオブジェクト
 *     return : なし
 *---------------------------------------------------------*/
 mouseOverMenu: function(e){

	    var textform_div  = document.getElementById("TextForm");
	var classNum;
	classNum = syne_menubar.getClassNum(e.srcElement.id);
	var strMainMenu;
	strMainMenu = e.srcElement.id.substr(syne_menubar.styleClassName[classNum].length+1)
	var strMenu = strMainMenu.split("_");
	var menuNum = syne_menubar.getMenuNumber(classNum, strMenu[0]);
		if(textform_div) {
			textform_div.value="mainメニュー上" + " " + menuNum;
		}

	// 背景の入れ替え
	if(syne_menubar.isColor(syne_menubar.imgOverMenu[classNum]) == true) {
	    var title_div  = document.getElementById(
								  syne_menubar.styleClassName[classNum] 
								+ "_" 
								+ syne_menubar.defineMainMenuIDName
								+ menuNum 
								+ syne_menubar.defineTitleTableIDName
								);
		title_div.style.backgroundColor = syne_menubar.imgOverMenu[classNum];
	} else {
		// 画像の入れ替え
		var img = document.getElementById(
						  syne_menubar.styleClassName[classNum] 
						+ "_" 
						+ syne_menubar.defineMainMenuIDName 
						+ menuNum 
						+ syne_menubar.defineImgIDName
						);
		img.setAttribute("src", syne_menubar.imgOverMenu[classNum]);
	}

	syne_menubar.clearSubMenu(classNum, menuNum);
	syne_menubar.viewSubMenu(classNum, menuNum);
 },

/*---------------------------------------------------------*
 *      メインメニューのmouseoutイベント
 *
 *     e      : イベントオブジェクト
 *     return : なし
 *---------------------------------------------------------*/
 mouseOutMenu: function(e){

	    var textform_div  = document.getElementById("TextForm");
	var classNum;
	classNum = syne_menubar.getClassNum(e.srcElement.id);
	var strMainMenu;
	strMainMenu = e.srcElement.id.substr(syne_menubar.styleClassName[classNum].length+1)
	var strMenu = strMainMenu.split("_");
	var menuNum = syne_menubar.getMenuNumber(classNum, strMenu[0]);
	if(textform_div) {
		textform_div.value="mainメニュー外" + " " + menuNum;
	}


	if(syne_menubar.subMenu[classNum][menuNum].length == 0) {
		// 画像の入れ替え
		if(syne_menubar.isColor(syne_menubar.imgDefaultMenu[classNum]) == true) {
		    var title_div  = document.getElementById(
									  syne_menubar.styleClassName[classNum] 
									+ "_" 
									+ syne_menubar.defineMainMenuIDName 
									+ menuNum 
									+ syne_menubar.defineTitleTableIDName
									);
			title_div.style.backgroundColor = syne_menubar.imgDefaultMenu[classNum];
		} else {
			var img = document.getElementById(
							  syne_menubar.styleClassName[classNum] 
							+ "_" 
							+ syne_menubar.defineMainMenuIDName 
							+ menuNum 
							+ syne_menubar.defineImgIDName
							);
			img.setAttribute("src", syne_menubar.imgDefaultMenu[classNum]);
		}
	}

	if(syne_menubar.checkOverSubMenu(e, classNum, menuNum) == false
		 && syne_menubar.checkOverMenuSpace(e, classNum, menuNum) == false) {


		// 画像の入れ替え
		if(syne_menubar.isColor(syne_menubar.imgDefaultMenu[classNum]) == true) {
		    var title_div  = document.getElementById(
									  syne_menubar.styleClassName[classNum] 
									+ "_" 
									+ syne_menubar.defineMainMenuIDName 
									+ menuNum 
									+ syne_menubar.defineTitleTableIDName
									);
			title_div.style.backgroundColor = syne_menubar.imgDefaultMenu[classNum];
		} else {
			var img = document.getElementById(
							  syne_menubar.styleClassName[classNum] 
							+ "_" 
							+ syne_menubar.defineMainMenuIDName 
							+ menuNum 
							+ syne_menubar.defineImgIDName
							);
			img.setAttribute("src", syne_menubar.imgDefaultMenu[classNum]);
		}

		syne_menubar.clearSubMenu(classNum, menuNum);
	}
 },

/*---------------------------------------------------------*
 *      メインメニューのmousedownイベント
 *
 *     e      : イベントオブジェクト
 *     return : なし
 *---------------------------------------------------------*/
 mouseDownMenu: function(e){

	var classNum;
	classNum = syne_menubar.getClassNum(e.srcElement.id);
	var strMainMenu;
	strMainMenu = e.srcElement.id.substr(syne_menubar.styleClassName[classNum].length+1)
	var strMenu = strMainMenu.split("_");
	var menuNum = syne_menubar.getMenuNumber(classNum, strMenu[0]);


	if(syne_menubar.mainMenu[classNum][menuNum][1] != "") {
		if (syne_menubar.mainMenu[classNum][menuNum][1].indexOf("javascript:") == 0)
			eval(syne_menubar.mainMenu[classNum][menuNum][1]);
	  	else
			window.location.href = syne_menubar.mainMenu[classNum][menuNum][1];
	}
 },


/*---------------------------------------------------------*
 *      メインメニュー・サブメニュー間のmouseoutイベント
 *
 *     e      : イベントオブジェクト
 *     return : なし
 *---------------------------------------------------------*/
 mouseOutMenuSpace: function(e){

	    var textform_div  = document.getElementById("TextForm");
	var classNum;
	classNum = syne_menubar.getClassNum(e.srcElement.id);
	var strMainMenu;
	strMainMenu = e.srcElement.id.substr(syne_menubar.styleClassName[classNum].length+1)
	var strMenu = strMainMenu.split("_");
	var menuNum = syne_menubar.getMenuNumber(classNum, strMenu[0]);
		if(textform_div) {
			textform_div.value="MAINメニュー外" + " " + menuNum;
		}

	if(syne_menubar.subMenu[classNum][menuNum].length == 0) {
		// 画像の入れ替え
		if(syne_menubar.isColor(syne_menubar.imgDefaultMenu[classNum]) == true) {
		    var title_div  = document.getElementById(
									  syne_menubar.styleClassName[classNum] 
									+ "_" 
									+ syne_menubar.defineMainMenuIDName 
									+ menuNum 
									+ syne_menubar.defineTitleTableIDName
									);
			title_div.style.backgroundColor = syne_menubar.imgDefaultMenu[classNum];
		} else {
			var img = document.getElementById(
							  syne_menubar.styleClassName[classNum] 
							+ "_" 
							+ syne_menubar.defineMainMenuIDName 
							+ menuNum 
							+ syne_menubar.defineImgIDName
							);
			img.setAttribute("src", syne_menubar.imgDefaultMenu[classNum]);
		}
	}

	if(syne_menubar.checkOverSubMenu(e, classNum, menuNum) == false
		 && syne_menubar.checkOverMenuSpace(e, classNum, menuNum) == false) {

		syne_menubar.clearSubMenu(classNum, menuNum);

		// 画像の入れ替え
		if(syne_menubar.isColor(syne_menubar.imgDefaultMenu[classNum]) == true) {
		    var title_div  = document.getElementById(
									  syne_menubar.styleClassName[classNum] 
									+ "_" 
									+ syne_menubar.defineMainMenuIDName 
									+ menuNum 
									+ syne_menubar.defineTitleTableIDName
									);
			title_div.style.backgroundColor = syne_menubar.imgDefaultMenu[classNum];
		} else {
			var img = document.getElementById(
							  syne_menubar.styleClassName[classNum] 
							+ "_" 
							+ syne_menubar.defineMainMenuIDName 
							+ menuNum 
							+ syne_menubar.defineImgIDName
							);
			img.setAttribute("src", syne_menubar.imgDefaultMenu[classNum]);
		}
	}

 },

/*---------------------------------------------------------*
 *      サブメニューのmouseoverイベント
 *
 *     e      : イベントオブジェクト
 *     return : なし
 *---------------------------------------------------------*/
 mouseOverSubMenu: function(e){

	    var textform_div  = document.getElementById("TextForm");
	var classNum;
	classNum = syne_menubar.getClassNum(e.srcElement.id);
	var strMainMenu;
	strMainMenu = e.srcElement.id.substr(syne_menubar.styleClassName[classNum].length+1)
	var strMenu = strMainMenu.split("_");
	var menuNum = syne_menubar.getMenuNumber(classNum, strMenu[0]);
	var subMenuNum = syne_menubar.getSubMenuNumber(classNum, menuNum, strMenu[1]);

		if(textform_div) {
			textform_div.value="subメニュー上" + " " + e.srcElement.id;
		}

	// 背景の入れ替え
	if(syne_menubar.isColor(syne_menubar.imgOverMenu[classNum]) == true) {
	    var title_div
			=	document.getElementById(
										  syne_menubar.styleClassName[classNum] 
										+ "_" 
										+ syne_menubar.defineMainMenuIDName
										+ menuNum
										+ syne_menubar.defineSubMenuIDName
										+ subMenuNum
										+ syne_menubar.defineTitleTableIDName
				);
		title_div.style.backgroundColor = syne_menubar.imgOverMenu[classNum];
	} else {
		// 画像の入れ替え
		var img = document.getElementById(
					  syne_menubar.styleClassName[classNum] 
					+ "_" 
					+ syne_menubar.defineMainMenuIDName
					+ menuNum
					+ syne_menubar.defineSubMenuIDName
					+ subMenuNum
					+ syne_menubar.defineImgIDName
					);
		img.setAttribute("src", syne_menubar.imgOverMenu[classNum]);
	}

 },

/*---------------------------------------------------------*
 *      サブメニューのmouseoutイベント
 *
 *     e      : イベントオブジェクト
 *     return : なし
 *---------------------------------------------------------*/
 mouseOutSubMenu: function(e){

	var classNum;
	classNum = syne_menubar.getClassNum(e.srcElement.id);
	var strMainMenu;
	strMainMenu = e.srcElement.id.substr(syne_menubar.styleClassName[classNum].length+1)
	var strMenu = strMainMenu.split("_");
	var menuNum = syne_menubar.getMenuNumber(classNum, strMenu[0]);
	var subMenuNum = syne_menubar.getSubMenuNumber(classNum, menuNum, strMenu[1]);


	// サブメニューの画像切り替え
	if(syne_menubar.isColor(syne_menubar.imgDefaultMenu[classNum]) == true) {
	    var title_div  = document.getElementById(
							  syne_menubar.styleClassName[classNum] 
							+ "_" 
							+ syne_menubar.defineMainMenuIDName
							+ menuNum+syne_menubar.defineSubMenuIDName
							+ subMenuNum
							+ syne_menubar.defineTitleTableIDName
						);
		title_div.style.backgroundColor = syne_menubar.imgDefaultMenu[classNum];
		if(syne_menubar.isNowPage(classNum, menuNum, i)) {
			title_div.style.backgroundColor = syne_menubar.imgNowMenu[classNum];
		} else {
			title_div.style.backgroundColor = syne_menubar.imgDefaultMenu[classNum];
		}
	} else {
		var img = document.getElementById(
					  syne_menubar.styleClassName[classNum] 
					+ "_" 
					+ syne_menubar.defineMainMenuIDName 
					+ menuNum 
					+ syne_menubar.defineSubMenuIDName 
					+ subMenuNum 
					+ syne_menubar.defineImgIDName
				);
		if(syne_menubar.isNowPage(classNum, menuNum, i)) {
			img.setAttribute("src", syne_menubar.imgNowMenu[classNum]);
		} else {
			img.setAttribute("src", syne_menubar.imgDefaultMenu[classNum]);
		}
	}

	if(syne_menubar.checkOverSubMenu(e, classNum, menuNum) == false
		 && syne_menubar.checkOverMenuSpace(e, classNum, menuNum) == false) {
		syne_menubar.clearSubMenu(classNum, menuNum);

		// メインメニューの画像切り替え
		if(syne_menubar.isColor(syne_menubar.imgDefaultMenu[classNum]) == true) {
		    var title_div  = document.getElementById(
									  syne_menubar.styleClassName[classNum] 
									+ "_" 
									+ syne_menubar.defineMainMenuIDName 
									+ menuNum 
									+ syne_menubar.defineTitleTableIDName
									);
			title_div.style.backgroundColor = syne_menubar.imgDefaultMenu[classNum];
		} else {
			var img = document.getElementById(
							  syne_menubar.styleClassName[classNum] 
							+ "_" 
							+ syne_menubar.defineMainMenuIDName 
							+ menuNum 
							+ syne_menubar.defineImgIDName
							);
			img.setAttribute("src", syne_menubar.imgDefaultMenu[classNum]);
		}
	}

 },

/*---------------------------------------------------------*
 *      サブメニューのmousedownイベント
 *
 *     e      : イベントオブジェクト
 *     return : なし
 *---------------------------------------------------------*/
 mouseDownSubMenu: function(e){

	stopDefaultAndPropagation(e);

	var classNum;
	classNum = syne_menubar.getClassNum(e.srcElement.id);
	var strMainMenu;
	strMainMenu = e.srcElement.id.substr(syne_menubar.styleClassName[classNum].length+1)
	var strMenu = strMainMenu.split("_");
	var menuNum = syne_menubar.getMenuNumber(classNum, strMenu[0]);

	var subMenuNum = syne_menubar.getSubMenuNumber(classNum, menuNum, strMenu[1]);

	if(syne_menubar.subMenu[classNum][menuNum][subMenuNum][1] != "") {
		if (syne_menubar.subMenu[classNum][menuNum][subMenuNum][1].indexOf("javascript:") == 0)
			eval(syne_menubar.subMenu[classNum][menuNum][subMenuNum][1]);
	  	else
			window.location.href = syne_menubar.subMenu[classNum][menuNum][subMenuNum][1];
	}

	syne_menubar.clearSubMenu(classNum, menuNum);


	// メインメニューの画像切り替え
	if(syne_menubar.isColor(syne_menubar.imgDefaultMenu[classNum]) == true) {
	    var title_div  = document.getElementById(
								  syne_menubar.styleClassName[classNum] 
								+ "_" 
								+ syne_menubar.defineMainMenuIDName 
								+ menuNum 
								+ syne_menubar.defineTitleTableIDName
								);
		title_div.style.backgroundColor = syne_menubar.imgDefaultMenu[classNum];
	} else {
		var img = document.getElementById(
						  syne_menubar.styleClassName[classNum] 
						+ "_" 
						+ syne_menubar.defineMainMenuIDName 
						+ menuNum 
						+ syne_menubar.defineImgIDName
						);
		img.setAttribute("src", syne_menubar.imgDefaultMenu[classNum]);
	}

},

/*---------------------------------------------------------*
 *      idからメニュー番号を取得
 *
 *     classNum : クラス番号
 *     id       : 「<div id="iLmain〜">」で定義された名称
 *     return : メニュー番号（該当なしのときは-1）
 *---------------------------------------------------------*/
 getMenuNumber: function(classNum, id) {

	for(i=0; i < syne_menubar.mainMenu[classNum].length; i++) {
		if(id == syne_menubar.defineMainMenuIDName + i) {
			return(i);
		}
	}
	return -1;
 },

/*---------------------------------------------------------*
 *      idからサブメニュー番号を取得
 *
 *     classNum : クラス番号
 *     menuNum :  対象となるメインメニューの番号
 *     id      : 「<div id="iLmain〜_sub〜">」で定義された名称のうち、「sub〜」の部分
 *     return : メニュー番号（該当なしのときは-1）
 *---------------------------------------------------------*/
 getSubMenuNumber: function(classNum, menuNum, id) {

	for(i=0; i < syne_menubar.subMenu[classNum][menuNum].length; i++) {
		if(id == "sub" + i) {
			return(i);
		}
	}
	return -1;
 },

/*---------------------------------------------------------*
 *      サブメニューの表示
 *
 *     classNum :  クラス番号
 *     menuNum  :  表示対象のメインメニュー番号
 *     return : なし
 *---------------------------------------------------------*/
 viewSubMenu: function(classNum, menuNum) {

    var main_first_div = document.getElementById(
							  syne_menubar.styleClassName[classNum]
							+ "_" 
							+ syne_menubar.defineMainMenuIDName 
							+ "0"
							);
    var main_div       = document.getElementById(
							  syne_menubar.styleClassName[classNum] 
							+ "_" 
							+ syne_menubar.defineMainMenuIDName 
							+ menuNum
							);
	var left           = 0;
	var top            = 0;
	var width          = 0;
	var height         = 0;

	var bgColor;
	var verticalAlign;
	var textAlign;
	var subTop;
	var subLeft;
	var fontFamily;
	var fontSize;
	var fontWeight;
	var fontColor;
	var	borderWidth;
	var borderStyle;
	var borderColor;
	var style;

	firstTop      = parseInt(syne_menubar.getStyleProperty(main_first_div, "top"));
	left          = parseInt(syne_menubar.getStyleProperty(main_div, "left"));
	top           = parseInt(syne_menubar.getStyleProperty(main_div, "top"));
	space         = syne_menubar.menuSpace[classNum];
	height        = syne_menubar.menuHeight[classNum];
	width         = syne_menubar.subMenuWidth[classNum];
	verticalAlign = "middle";
	textAlign     = "left";


/***/
    var textform_div = document.getElementById("TextForm");
	if(textform_div) {
		textform_div.value=textform_div.value + " <" + left + ">" + " <" + top + "> " + " <" + height + "> ";
	}
/***/


	for(i = 0; i < syne_menubar.subMenu[classNum][menuNum].length; i++) {

	    var submenu_div = document.getElementById(
								  syne_menubar.styleClassName[classNum] 
								+ "_" 
								+ syne_menubar.defineMainMenuIDName 
								+ menuNum 
								+ syne_menubar.defineSubMenuIDName 
								+ i
							);
        submenu_div.style.width  = syne_menubar.subMenuWidth[classNum] + syne_menubar.strength;
        submenu_div.style.height = syne_menubar.menuHeight[classNum] + syne_menubar.strength;
		submenu_div.style.zIndex = syne_menubar.zIndex;
		submenu_div.style.borderWidth = 0;

		if(syne_menubar.menuDirection[classNum] == syne_menubar.modeHorizontal) {
			submenu_div.style.top  = top + space + height * (i + 1);

			// 一番右のメニューの場合は、サブメニューの右端をメインメニューの右端に合わせる
			submenu_div.style.left = left;
			if(menuNum == (syne_menubar.mainMenu[classNum].length - 1)) {

				submenu_div.style.left = left + syne_menubar.menuWidth[classNum] - width;
			}
		} else if(syne_menubar.menuDirection[classNum] == syne_menubar.modeVerticalRight) {
			submenu_div.style.top  = top + (height * i);
			submenu_div.style.left = left + syne_menubar.menuWidth[classNum] + syne_menubar.menuSpace[classNum];
			// 一番下のメニューの場合は、サブメニューの右端をメインメニューの右端に合わせる
			if(firstTop + (height * syne_menubar.mainMenu[classNum].length) + height
				 < top + (height * syne_menubar.subMenu[classNum][menuNum].length) + height) {
				submenu_div.style.top = 
						(firstTop + (height * syne_menubar.mainMenu[classNum].length))
					  - (height * (syne_menubar.subMenu[classNum][menuNum].length))
					  + (height * i);
			}
		} else if(syne_menubar.menuDirection[classNum] == syne_menubar.modeVerticalLeft) {
			submenu_div.style.top  = top + (height * i);
			submenu_div.style.left = left - syne_menubar.subMenuWidth[classNum] - syne_menubar.menuSpace[classNum];
			// 一番下のメニューの場合は、サブメニューの右端をメインメニューの右端に合わせる
			if(firstTop + (height * syne_menubar.mainMenu[classNum].length) + height
				 < top + (height * syne_menubar.subMenu[classNum][menuNum].length) + height) {
				submenu_div.style.top = 
						(firstTop + (height * syne_menubar.mainMenu[classNum].length))
					  - (height * (syne_menubar.subMenu[classNum][menuNum].length))
					  + (height * i);
			}
		}

		if(syne_menubar.isColor(syne_menubar.imgDefaultMenu[classNum]) == false) {
		    var img          = document.createElement("img");
		    img.id           = syne_menubar.styleClassName[classNum] 
									+ "_" 
									+ syne_menubar.defineMainMenuIDName
								 	+ menuNum 
									+ syne_menubar.defineSubMenuIDName 
									+ i 
									+ syne_menubar.defineImgIDName;

			if(syne_menubar.isNowPage(classNum, menuNum, i)) {
			    img.src      = syne_menubar.imgNowMenu[classNum];
			} else {
			    img.src      = syne_menubar.imgDefaultMenu[classNum];
			}

			img.style.width  = syne_menubar.subMenuWidth[classNum];
			img.style.height = syne_menubar.menuHeight[classNum];
		    submenu_div.appendChild(img);

			// サブメニュー背景画像にイベントを設定
		    addListener(img, "mouseover", syne_menubar.mouseOverSubMenu, false);
		    addListener(img, "mouseout",  syne_menubar.mouseOutSubMenu,  false);
		    addListener(img, "mousedown", syne_menubar.mouseDownSubMenu, false);
		}

	    var title_div       = document.createElement("div");
	    title_div.id        = syne_menubar.styleClassName[classNum] 
								+ "_" 
								+ syne_menubar.defineMainMenuIDName
								+ menuNum
								+ syne_menubar.defineSubMenuIDName
								+ i
								+ syne_menubar.defineMenuTitleDivName;
		title_div.className = syne_menubar.styleClassName[classNum] + "_" + syne_menubar.defineSubMenuStyle;
	    submenu_div.appendChild(title_div);

		// サブメニュー表示文字へのイベント設定
	    addListener(title_div, "mouseover", syne_menubar.mouseOverSubMenu, false)
	    addListener(title_div, "mouseout",  syne_menubar.mouseOutSubMenu,  false);
	    addListener(title_div, "mousedown", syne_menubar.mouseDownSubMenu, false);

		if(syne_menubar.getStyleProperty(title_div, syne_menubar.defineSyneModeName) == undefined) {
			subTop                   = "auto";
			subLeft                  = "auto";
			title_div.style.top      = 0;
			title_div.style.left     = 0;
			title_div.style.width    = syne_menubar.subMenuWidth[classNum];
			title_div.style.height   = syne_menubar.menuHeight[classNum];

			title_div.style.position = "absolute";

			fontFamily               = syne_menubar.defaultFontFamily;
			fontSize                 = syne_menubar.defaultFontSize;
			fontWeight               = syne_menubar.defaultFontWeight;
			fontColor                = syne_menubar.defaultFontColor;
			borderWidth              = syne_menubar.defaultBorderWidth;
			borderStyle              = syne_menubar.defaultBorderStyle;
			borderColor              = syne_menubar.defaultBorderColor;
		} else {
			if(syne_menubar.getStyleProperty(title_div, "position") == "static") {
				title_div.style.position = "absolute";
			}

			if(syne_menubar.getStyleProperty(title_div, "top") == "auto") {
				title_div.style.top  = 0;
				verticalAlign        = syne_menubar.getStyleProperty(title_div, "verticalAlign");
				subTop               = "auto";
			} else {
				verticalAlign        = "middle";
				subTop               = syne_menubar.getStyleProperty(title_div, "top");
			}

			if(syne_menubar.getStyleProperty(title_div, "left") == "auto") {
				title_div.style.left = 0;
				textAlign            = syne_menubar.getStyleProperty(title_div, "textAlign");
				subLeft              = "auto";
			} else {
				textAlign            = "left";
				subLeft              = syne_menubar.getStyleProperty(title_div, "left");
			}

			title_div.style.top  = 0;
			title_div.style.left = 0;

			borderWidth = syne_menubar.getStyleProperty(title_div, "borderWidth");

			if(syne_menubar.getStyleProperty(title_div, "borderStyle") != "none") {
				borderStyle = syne_menubar.getStyleProperty(title_div, "borderStyle");
			}

			borderColor   = syne_menubar.getStyleProperty(title_div, "borderColor");

			fontFamily    = syne_menubar.getStyleProperty(title_div, "fontFamily");
			fontSize      = syne_menubar.getStyleProperty(title_div, "fontSize");
			fontWeight    = syne_menubar.getStyleProperty(title_div, "fontWeight");
			fontColor     = syne_menubar.getStyleProperty(title_div, "color");
		}

		title_div.style.cursor = syne_menubar.defineSubMenuCursor;

		style = "border:" + borderWidth + " " + borderStyle + " "  + borderColor;

		if(subTop == "auto" || subLeft == "auto") {
			text_div_start = "";
			text_div_end   = "";
		} else {
			text_div_start = "<div id='" + title_div.id + "_text'"
						+ " style='position:absolute; top:" + subTop + "; "
						+ " left:" + subLeft + ";'"
						+ ">";
			text_div_end  = "</div>";
		}

		// メニューが色指定の場合はtableタグ用にバックグラウンドカラーを設定
		bgColor = "";
		if(syne_menubar.isColor(syne_menubar.imgDefaultMenu[classNum]) == true) {
			if(syne_menubar.isNowPage(classNum, menuNum, i)) {
				bgColor = "bgcolor='" + syne_menubar.imgNowMenu[classNum] + "' ";
			} else {
				bgColor = "bgcolor='" + syne_menubar.imgDefaultMenu[classNum] + "' ";
			}
		}

		title_div.innerHTML = "<table id='" + title_div.id + "_table" + "' border='0'"
						+ " width='" + width + "'"
						+ " height='" + height + "'"
						+ bgColor
						+ " style='" + style
						+ "'>"
						+ "<tr>"
						+ "<td id='" + title_div.id + "_td'"
						+ " border='0'"
						+ " style='vertical-align:" + verticalAlign + "; "
						+ "text-align:" + textAlign + "; "
						+ "font-family:" + fontFamily + "; "
						+ "font-size:" + fontSize + "; "
						+ "font-weight:" + fontWeight + "; "
						+ "color:" + fontColor + "; "
						+ "'"
						+ ">"
						+ text_div_start
						+ syne_menubar.subMenu[classNum][menuNum][i][0]
						+ text_div_end
						+ "</td>"
						+ "</tr>"
						+ "</table>";

		if(syne_menubar.getStyleProperty(title_div, syne_menubar.defineSyneModeName) != undefined) {
			title_div.style.border = "";
		}

		submenu_div.visiblity = "visible";

	}

 },

/*---------------------------------------------------------*
 *      サブメニューの表示クリア
 *
 *     classNum :  クラス番号
 *     menuNum  :  表示対象のメインメニュー番号
 *     return : なし
 *---------------------------------------------------------*/
 clearSubMenu: function(classNum, menuNum) {

	for(i = 0; i < syne_menubar.subMenu[classNum][menuNum].length; i++) {

	    var submenu_div = document.getElementById(
							  syne_menubar.styleClassName[classNum] 
							+ "_" 
							+ syne_menubar.defineMainMenuIDName
							+ menuNum 
							+ syne_menubar.defineSubMenuIDName 
							+ i
							);
		if(syne_menubar.isColor(syne_menubar.imgDefaultMenu[classNum]) == false) {
		    var img = document.getElementById(
							  syne_menubar.styleClassName[classNum] 
							+ "_" 
							+ syne_menubar.defineMainMenuIDName 
							+ menuNum 
							+ syne_menubar.defineSubMenuIDName 
							+ i 
							+ syne_menubar.defineImgIDName
							);

			if(img) {
			    submenu_div.removeChild(img);
			}
		}

	    var title_div = document.getElementById(
							  syne_menubar.styleClassName[classNum] 
							+ "_" 
							+ syne_menubar.defineMainMenuIDName 
							+ menuNum 
							+ syne_menubar.defineSubMenuIDName 
							+ i 
							+ syne_menubar.defineMenuTitleDivName
							);
		if(title_div) {
		    submenu_div.removeChild(title_div);
		}
		submenu_div.visiblity = "hidden";
	}

 },

/*---------------------------------------------------------*
 *      メニューとサブメニューの間にマウスカーソルがあるかチェックする
 *
 *     e       :  イベントオブジェクト
 *     classNum:  クラス番号
 *     menuNum :  チェック対象のメインメニュー番号
 *     return : true  マウスカーソルがメニュー上にある
 *              false マウスカーソルがメニュー外にある
 *---------------------------------------------------------*/
 checkOverMenuSpace: function(e, classNum, menuNum) {

	var left, top, height, width;
	var isOver = false;
	var pageX = cliX(e.clientX);
	var pageY = cliY(e.clientY);

    var main_div = document.getElementById(
						  syne_menubar.styleClassName[classNum] 
						+ "_" 
						+ syne_menubar.defineMainMenuIDName 
						+ menuNum
						);

	top    = parseInt(syne_menubar.getStyleProperty(main_div, "top"))
				+ parseInt(syne_menubar.getStyleProperty(main_div.parentElement, "top"));

	if(syne_menubar.menuDirection[classNum] == syne_menubar.modeHorizontal) {

		left   = parseInt(syne_menubar.getStyleProperty(main_div, "left"))
					+ parseInt(syne_menubar.getStyleProperty(main_div.parentElement, "left"));

		height = syne_menubar.menuHeight[classNum] + syne_menubar.menuSpace[classNum];
		width  = syne_menubar.menuWidth[classNum];
		if(left <= pageX && pageX <= (left + width)) {
			// 下記、(top + height + syne_menubar.defineOverMenuSpaceGyap)は、座標の判定範囲に余裕を持たせる為・・・
			// どうしてもclientXで取得した値に誤差が出る
			if(top <= pageY && pageY <= (top + height + syne_menubar.defineOverMenuSpaceGyap)) {
				if( e.srcElement.id == (syne_menubar.styleClassName[classNum] + "_" + syne_menubar.defineMainMenuIDName + menuNum + syne_menubar.defineImgIDName)
				 || e.srcElement.id == (syne_menubar.styleClassName[classNum] + "_" + syne_menubar.defineMainMenuIDName + menuNum + syne_menubar.defineTitleTableIDName)
				 || e.srcElement.id == (syne_menubar.styleClassName[classNum] + "_" + syne_menubar.defineMainMenuIDName + menuNum + syne_menubar.defineTitleTableTdIDName)
				 || e.srcElement.id == (syne_menubar.styleClassName[classNum] + "_" + syne_menubar.defineMainMenuIDName + menuNum + syne_menubar.defineTitleTextIDName)) {
					if(e.offsetY >= 0) {
						if(e.offsetX > 0) {
							isOver = true;
						}
					}
				} else {
					if(e.offsetX > 0) {
						isOver = true;
					}
				}
			}
		}

	} else if(syne_menubar.menuDirection[classNum] == syne_menubar.modeVerticalRight) {

		left   = parseInt(syne_menubar.getStyleProperty(main_div, "left"))
					+ parseInt(syne_menubar.getStyleProperty(main_div.parentElement, "left"))
					+ syne_menubar.menuWidth[classNum];

		height = syne_menubar.menuHeight[classNum];
		width  = syne_menubar.menuWidth[classNum] + syne_menubar.menuSpace[classNum];
//		width  = syne_menubar.menuSpace[classNum];    // 本当はこっちが正しいのだが・・・
		if(left <= pageX && pageX <= (left + width)) {
			if(top <= pageY && pageY <= (top + height + 1)) {
				if( e.srcElement.id == (syne_menubar.styleClassName[classNum] + "_" + syne_menubar.defineMainMenuIDName + menuNum + syne_menubar.defineImgIDName)
				 || e.srcElement.id == (syne_menubar.styleClassName[classNum] + "_" + syne_menubar.defineMainMenuIDName + menuNum + syne_menubar.defineTitleTableIDName)
				 || e.srcElement.id == (syne_menubar.styleClassName[classNum] + "_" + syne_menubar.defineMainMenuIDName + menuNum + syne_menubar.defineTitleTableTdIDName)
				 || e.srcElement.id == (syne_menubar.styleClassName[classNum] + "_" + syne_menubar.defineMainMenuIDName + menuNum + syne_menubar.defineTitleTextIDName)) {
					if(e.offsetY >= 0) {
						if(e.offsetX > 0) {
							isOver = true;
						}
					}
				} else {
					if(e.offsetY > 0) {
						isOver = true;
					}
				}
			}
		}
	} else if(syne_menubar.menuDirection[classNum] == syne_menubar.modeVerticalLeft) {

		left   = parseInt(syne_menubar.getStyleProperty(main_div, "left"))
					+ parseInt(syne_menubar.getStyleProperty(main_div.parentElement, "left"))
					- syne_menubar.menuSpace[classNum];

		height = syne_menubar.menuHeight[classNum];
		width  = syne_menubar.menuWidth[classNum] + syne_menubar.menuSpace[classNum];
		if(left <= pageX && pageX <= (left + width)) {
			if(top <= pageY && pageY <= (top + height + 1)) {
				if(e.offsetY >= 0) {
					isOver = true;
				}
			}
		}

	}



/***/
    var textform_div = document.getElementById("TextForm");

	if(textform_div) {
		if(isOver) {
			textform_div.value= textform_div.value + " IS OVER";
		} else {
			textform_div.value= textform_div.value + " NOT OVER";
		}

		textform_div.value = textform_div.value + " (" + window.event.clientX + ")";
		textform_div.value = textform_div.value + " [" + pageX + "] [" + pageY;
		textform_div.value = textform_div.value + "] " + left + "-" + (parseInt(left)+parseInt(width));
		textform_div.value = textform_div.value + " " + top + "-" + (parseInt(top)+parseInt(height));
		textform_div.value = textform_div.value + " <" + e.offsetX;
		textform_div.value = textform_div.value + "> [" + e.offsetY;
		textform_div.value = textform_div.value + "] [" + e.srcElement.id + "]";
		textform_div.value = textform_div.value + " [" + menuNum + "]";
	}
/***/

	return isOver;
 },

/*---------------------------------------------------------*
 *      サブメニュー上にマウスカーソルがあるかチェックする
 *
 *     e       :  イベントオブジェクト
 *     classNum:  クラス番号
 *     menuNum :  チェック対象のメインメニュー番号
 *     return : true  マウスカーソルがメニュー上にある
 *              false マウスカーソルがメニュー外にある
 *---------------------------------------------------------*/
 checkOverSubMenu: function(e, classNum, menuNum) {

	var left, top, height, width;
	var isOver = false;
	var pageX = cliX(e.clientX);
	var pageY = cliY(e.clientY);

	// サブメニューが存在しないときは範囲外として返す
	if(syne_menubar.subMenu[classNum][menuNum].length == 0) {
		return false;
	}

    var main_div = document.getElementById(
						  syne_menubar.styleClassName[classNum]
						+ "_" 
						+ syne_menubar.defineMainMenuIDName 
						+ menuNum
						);
    var submenu_div = document.getElementById(
							  syne_menubar.styleClassName[classNum] 
							+ "_" 
							+ syne_menubar.defineMainMenuIDName 
							+ menuNum 
							+ syne_menubar.defineSubMenuIDName 
							+ "0"
							);

	top  = parseInt(syne_menubar.getStyleProperty(submenu_div, "top"))
			+ parseInt(syne_menubar.getStyleProperty(main_div.parentElement, "top"));

	left = parseInt(syne_menubar.getStyleProperty(submenu_div, "left"))
					+ parseInt(syne_menubar.getStyleProperty(main_div.parentElement, "left"));

	height = syne_menubar.menuHeight[classNum] * (syne_menubar.subMenu[classNum][menuNum].length);

	if(syne_menubar.menuWidth[classNum] > syne_menubar.subMenuWidth[classNum]) {
		width  = syne_menubar.menuWidth[classNum];
	} else {
		width  = syne_menubar.subMenuWidth[classNum];
	}

	var strMainMenu;
	strMainMenu = e.srcElement.id.substr(syne_menubar.styleClassName[classNum].length+1)
	var strMenu = strMainMenu.split("_");
	var menuNum = syne_menubar.getMenuNumber(classNum, strMenu[0]);
	var subMenuNum = syne_menubar.getSubMenuNumber(classNum, menuNum, strMenu[1]);

	// 下記、left + syne_menubar.defineOverSubMenuLeftGyapは、座標の判定範囲に余裕を持たせる為・・・
	// どうしてもclientYで取得した値に誤差が出る
	if(left + syne_menubar.defineOverSubMenuLeftGyap <= pageX && pageX <= (left + width)) {
		// 下記、top + syne_menubar.defineOverSubMenuTopGyapは、座標の判定範囲に余裕を持たせる為・・・
		// どうしてもclientXで取得した値に誤差が出る
		if(top + syne_menubar.defineOverSubMenuTopGyap <= pageY && pageY <= (top + parseInt(height))) {
			if(subMenuNum == 0) {
				if(e.offsetY > 0) {
					isOver = true;
				}
			} else {
				isOver = true;
			}

			if(    syne_menubar.menuDirection[classNum] == syne_menubar.modeHorizontal
				|| syne_menubar.menuDirection[classNum] == syne_menubar.modeVerticalRight) {
				if(e.offsetX < 0) {
					isOver = false;
				}
			}
		}
	}



/***/
    var textform_div = document.getElementById("TextForm");

	if(textform_div) {
		if(isOver) {
			textform_div.value= textform_div.value + " is over";
		} else {
			textform_div.value= textform_div.value + " not over";
		}

		textform_div.value = textform_div.value + " [" + pageX + "] [" + pageY;
		textform_div.value = textform_div.value + "] " + parseInt(left) + "-" + (parseInt(left)+parseInt(width));
		textform_div.value = textform_div.value + " "
								+ (parseInt(top) + syne_menubar.defineOverSubMenuTopGyap) 
								+ "-" + (parseInt(top) + parseInt(height));
		textform_div.value = textform_div.value + " <" + e.offsetX;
		textform_div.value = textform_div.value + "> <" + e.offsetY;
		textform_div.value = textform_div.value + "> [" + e.srcElement.id + "]";
	}
/***/

	return isOver;
 },

/*---------------------------------------------------------*
 *      スタイルシートに設定されている値を取得する
 *
 *     obj     :  スタイルシートの設定値を取得したいオブジェクト
 *     property:  スタイルシートの設定値のキーワード
 *     return : true  マウスカーソルがメニュー上にある
 *              false マウスカーソルがメニュー外にある
 *---------------------------------------------------------*/
 getStyleProperty: function(obj, property) {

	var value;

    if(obj.style[property]) {
       value = obj.style[property];
    } else if (obj.currentStyle && obj.currentStyle[property]) {
       value = obj.currentStyle[property];
    }

	return value;
 },

/*---------------------------------------------------------*
 *      対象となる文字が、色指定か判定する
 *
 *     strData :  判定する文字
 *     return : true  色指定
 *              false 色指定以外
 *---------------------------------------------------------*/
 isColor: function(strData) {

	return (strData.search(/\./) == -1);
 },

/*---------------------------------------------------------*
 *      対象となるサブメニューが現在のページか判定する。
 *
 *     classNum   :  クラス番号
 *     menuNum    :  メニュー番号
 *     subMenuNum :  サブメニュー番号
 *     return : true  現在のページとマッチする
 *              false マッチしない
 *---------------------------------------------------------*/
 isNowPage: function(classNum, menuNum, subMenuNum) {

	var strURL;
	var re;

	// "./〜"の場合は"〜"の部分を取り出す。
	re = new RegExp("\.\/");
	if(re.test(syne_menubar.subMenu[classNum][menuNum][subMenuNum][1])) {
		strURL = syne_menubar.subMenu[classNum][menuNum][subMenuNum][1].substr(2);
	} else {
		strURL = syne_menubar.subMenu[classNum][menuNum][subMenuNum][1];
	}

	re = new RegExp(strURL + "$");

	return re.test(window.location.pathname);
 },

/*---------------------------------------------------------*
 *      ID名称中のクラス名から、何番目の定義かを取得する
 *
 *     idName    :  ID名称
 *     return : クラス定義番号
 *---------------------------------------------------------*/
 getClassNum: function(idName) {

	var	i;

	for(i = 0; i < syne_menubar.styleClassName.length; i++) {
		var re = new RegExp("^" + syne_menubar.styleClassName[i]);
		if(idName.match(re)) {
			return i;
		}
	}

	return -1;
 }

}
