var object_pos = new Array();
var menu_num = 0;
var menu_info_p = new Array();
var menu_mode = new Array();
var line_gif_width = 19;
var line_gif_height = 19;
var line_gif1 = 'js/01.gif';
var line_gif2 = 'js/02.gif';
var line_gif3 = 'js/03.gif';
var line_gif4 = 'js/04.gif';
var people_gif1 = 'js/0_01.gif';
var people_gif2 = 'js/0_02.gif';

//OS の名称：document.userSystem.osLongName
//OS の略称：document.userSystem.osShortName
//ブラウザの名称：document.userSystem.browserLongName
//ブラウザの略称：document.userSystem.browserShortName
//ブラウザのバージョン：document.userSystem.browserVersion

var os      = document.userSystem.osShortName
var browser = document.userSystem.browserShortName
var b_ver   = document.userSystem.browserVersion

if(os == "win"){
	if(browser == "ie"){
		if(b_ver == "7.0"){
			cssfile = "css/menu_ie7.0.css";
		}else{
			cssfile = "css/menu_ie6.0.css";
		}
	}else{
		cssfile = "css/menu_ie7.0.css";
	}
}else if(os == "osx"){
	if(browser == "sf"){
		cssfile = "css/menu_safari.css";
	}else{
		cssfile = "css/menu_ie7.0.css";
	}
}else if(os == "mac"){
	if(browser == "ie"){
		cssfile = "css/menu_ie7.0.css";
	}
}

document.write('<link href="'+ cssfile +'" type="text/css" rel="stylesheet" />');

/*----------------------------------------------------
関数名: initialize
概要  : ツリービュー初期化関数
説明  : ツリービュー内の子メニューを閉じる.
javascriptが無効の場合でもメニューの全項目が利用できる
ようにするための配慮.
body要素のonloadイベントに記述することを推奨.
----------------------------------------------------*/

function initialize(){
	var i;

	//DOMが使えなかったらツリービューも使えない
	//予め全ての項目を開いておいて、DOMが有効ならば閉じるようにする
	if(document.hasChildNodes){
		var child_objects = document.getElementsByTagName('div');
		for (i=0;i<child_objects.length;i++){
			if(document.all){
				if(child_objects.item(i).getAttribute('className')=='t_child'){
					child_objects.item(i).style.display='none';
				}
			}else if(document.getElementById){
				if(child_objects.item(i).getAttribute('class')=='t_child'){
					child_objects.item(i).style.display='none';
				}
			}
		}
		var child_objects = document.getElementsByTagName('div');
		for (i=0;i<child_objects.length;i++){
			var host_object_id = child_objects.item(i).id;
			if(host_object_id != ''){
				object_pos[host_object_id] = getAbsoluteXY(host_object_id);
			}
		}
	}

	for (i=1;i<menu_info_p.length;i++){
		initMenu(menu_info_p[i]);
	}
}

/*----------------------------------------------------
関数名: menu()
概要  : メニュー開閉関数
説明  : メニュー内の子メニューを開閉する.
(孫メニューは開閉しない)
変数  :  host_object_id 子メニューを包括する要素のIDを
指定する.(つまり自らの要素のID)
ただし、thisなどのようにオブジェクトを渡してはならない.
visible_object_id 開閉するオブジェクトのidを指定
----------------------------------------------------*/

function menu(host_object_id, visible_object_id){
	var pos = object_pos[host_object_id];

	if(document.all){
		var visible_object = document.all[visible_object_id];
		var host_object = document.all[host_object_id];
	}else if(document.getElementById){
		var visible_object = document.getElementById(visible_object_id);
		var host_object = document.getElementById(host_object_id);
	}

	if(visible_object.style.visibility == 'visible'){
		visible_object.style.visibility="hidden";
/*		host_object.style.backgroundColor='#ffffcc';	*/
	}else{
/*		host_object.style.backgroundColor='#ffffcc';	*/
		if(document.all){
			visible_object.style.left = pos.X;
			visible_object.style.top = pos.Y + host_object.offsetHeight;	
			visible_object.style.visibility="visible";
		}else if(document.getElementById){
			visible_object.style.left = pos.X + "px";
			visible_object.style.top = pos.Y + host_object.offsetHeight + "px";
			visible_object.style.visibility="visible";
		}		
	}
}


/*----------------------------------------------------
関数名: child_menu()
概要  : メニュー開閉関数
説明  : 子メニュー内の子メニューを開閉する.
(孫メニューは開閉しない)
変数  : host_object_id 子メニューを包括する要素のIDを
指定する.(つまり自らの要素のID)
ただし、thisなどのようにオブジェクトを渡してはならない.
visible_object_id 開閉するオブジェクトのidを指定
----------------------------------------------------*/

function child_menu(host_object_id, visible_object_id){
	if(document.all){
		var visible_object = document.all[visible_object_id];
		var host_object = document.all[host_object_id];
	}else if(document.getElementById){
		var visible_object = document.getElementById(visible_object_id);
		var host_object = document.getElementById(host_object_id);
	}

	if(visible_object.style.visibility == 'visible'){
		visible_object.style.visibility="hidden";
/*		host_object.style.backgroundColor='#ffffcc';	*/
	}else{
/*		host_object.style.backgroundColor='#ffffcc';	*/
		if(document.all){
//			visible_object.style.left = host_object.offsetLeft + host_object.offsetWidth;
			visible_object.style.left = host_object.offsetWidth;
			visible_object.style.top = host_object.offsetTop;
			visible_object.style.visibility="visible";
		}else if(document.getElementById){
//			visible_object.style.left = host_object.offsetLeft+ host_object.offsetWidth + "px";
			visible_object.style.left = host_object.offsetWidth + "px";
			visible_object.style.top = host_object.offsetTop + "px";
			visible_object.style.visibility="visible";
		}
	}
}

function child_menu2(host_object_id, visible_object_id){
	var pos = object_pos[host_object_id];

	if(document.all){
		var visible_object = document.all[visible_object_id];
		var host_object = document.all[host_object_id];
	}else if(document.getElementById){
		var visible_object = document.getElementById(visible_object_id);
		var host_object = document.getElementById(host_object_id);
	}

	if(visible_object.style.visibility == 'visible'){
		visible_object.style.visibility="hidden";
/*		host_object.style.backgroundColor='#ffffcc';	*/
	}else{
/*		host_object.style.backgroundColor='#ffffcc';	*/
		if(document.all){
			visible_object.style.left = pos.X + host_object.offsetWidth;
			visible_object.style.top = pos.Y;
			visible_object.style.visibility="visible";
		}else if(document.getElementById){
			visible_object.style.left = pos.X+ host_object.offsetWidth + "px";
			visible_object.style.top = pos.Y + "px";
			visible_object.style.visibility="visible";
		}
	}
}
function c11(host_object_id){
	var host_object = document.getElementById(host_object_id);
/*	host_object.style.backgroundColor='#ffffcc';	*/
}
function c12(host_object_id){
	var host_object = document.getElementById(host_object_id);
/*	host_object.style.backgroundColor='#ffffcc';	*/
}


/*----------------------------------------------------
関数名: menu_ctrl()
概要  : メニュー開閉関数
説明  : ツリービュー内の子メニューを開閉する.
(孫メニューは開閉しない)
変数  : parent_object_id 子メニューを包括する要素のIDを
指定する.(つまり自らの要素のID)
ただし、thisなどのようにオブジェクトを渡してはならない.
----------------------------------------------------*/

function menu_ctrl(parent_object_id){
	
	if(!document.hasChildNodes){
		return false;
	}
	
	var child_object = document.getElementById(parent_object_id).getElementsByTagName('ul');
	var i_child_object = child_object.item(0);
	
	if (i_child_object.style.display == 'block'){
		i_child_object.style.display = 'none';
		for(i=0;i<child_object.length;i++){
				child_object.item(i).style.display = 'none';
		}
	}else{
		i_child_object.style.display = 'block';
	}

}

/*----------------------------------------------------
関数名: getAbsoluteX()
概要  : オブジェクトの絶対座標（左上水平座標）を求める
----------------------------------------------------*/
function getAbsoluteX(object_id) {
	if(document.all){
		var obj = document.all[object_id];
	}else if(document.getElementById){
		var obj = document.getElementById(object_id);
	}
	var pos = document.layers?obj.left:(obj.offsetLeft||obj.style.pixelLeft||0);
	var pos_add = 0;
	//alert("start="+pos);
	while (obj) {
		if (obj.nodeName != null) {
			pos_add = document.layers?obj.left:(obj.offsetLeft||obj.style.pixelLeft||0);
			if (obj.nodeName.match(/^body$/i) != null) {
				pos += pos_add;
				break;
			} else if (/*obj.nodeName.match(/^div$/i) != null ||*/
				obj.nodeName.match(/^table$/i) != null ||
				obj.nodeName.match(/^td$/i) != null ) {
				pos += pos_add;
			}
		}
		obj = obj.parentNode;
	}
	//alert("end="+pos);
	return pos;
}

/*----------------------------------------------------
関数名: getAbsoluteY()
概要  : オブジェクトの絶対座標（左上垂直座標）を求める
----------------------------------------------------*/
function getAbsoluteY(object_id) {
	if(document.all){
		var obj = document.all[object_id];
	}else if(document.getElementById){
		var obj = document.getElementById(object_id);
	}
	var pos = document.layers?obj.top:(obj.offsetTop||obj.style.pixelTop||0);
	var pos_add = 0;
	while (obj) {
		if (obj.nodeName != null) {
			pos_add = document.layers?obj.top:(obj.offsetTop||obj.style.pixelTop||0);
			//alert(obj.nodeName+"="+obj.offsetTop);
			if (obj.nodeName.match(/^body$/i) != null) {
				pos += pos_add;
				break;
			}else if (/*obj.nodeName.match(/^div$/i) != null ||*/
				obj.nodeName.match(/^table$/i) != null ||
				obj.nodeName.match(/^td$/i) != null ) {
				pos += pos_add;
			}
		}
		obj = obj.parentNode;
	}
	return pos;
}

/*----------------------------------------------------
関数名: getAbsoluteXY()
概要  : オブジェクトの絶対座標をエイリアス付配列で返す
----------------------------------------------------*/
function getAbsoluteXY(object_id) {
	var x = getAbsoluteX(object_id);
	var y = getAbsoluteY(object_id);
	return {X:x,Y:y};
}

/*----------------------------------------------------
関数名: makeMenu()
概要  : メニューを作成する
----------------------------------------------------*/
function makeMenu(menu_info){
	var menutext = '';
	var menuid1 = '';
	var menuid2 = '';
	var p_menu_mode = '';
	var level = 0;
	var i;

	menu_num++;
	menu_info_p[menu_num] = menu_info;

	for (i=1;i<menu_info.length;i++){
		menuid1 = menu_info[0] + '_' + i;
		menuid2 = menu_info[0] + '_'   + (i+1);
		if (menu_info[i][0] == 's') {
			menutext += '<div id="' + menuid1 + '" class="' + menu_info[i][1] + '">\n'
			level++;
			menu_mode[level] = p_menu_mode;
			if (p_menu_mode == 'c3') {
				menutext += '<table border=0 cellspacing=0 cellpadding=0>\n'
			}
		} else if (menu_info[i][0] == 'm') {
			p_menu_mode = 'm';
			menutext += '<div id="' + menuid1 + '"'
				 + ' class="' + menu_info[i][1] + '"'
				 + ' onmouseover="menu(\'' + menuid1 + '\',\'' + menuid2 + '\')"'
				 + ' onmouseout="menu(\'' + menuid1 + '\',\'' + menuid2 + '\')"'
				 + '>' + menu_info[i][2] + '\n'
		} else if (menu_info[i][0] == 'c') {
			p_menu_mode = 'c';
			menutext += '<div id="' + menuid1 + '"'
				 + ' class="' + menu_info[i][1] + '"'
				 + ' onmouseover="child_menu(\'' + menuid1 + '\',\'' + menuid2 + '\')"'
				 + ' onmouseout="child_menu(\'' + menuid1 + '\',\'' + menuid2 + '\')"'
				 + '>' + menu_info[i][2] + '\n'
		} else if (menu_info[i][0] == 'c2') {
			p_menu_mode = 'c2';
			menutext += '<div id="' + menuid1 + '"'
				 + ' class="' + menu_info[i][1] + '"'
				 + ' onmouseover="child_menu2(\'' + menuid1 + '\',\'' + menuid2 + '\')"'
				 + ' onmouseout="child_menu2(\'' + menuid1 + '\',\'' + menuid2 + '\')"'
				 + '>' + menu_info[i][2] + '\n'
		} else if (menu_info[i][0] == 'c3') {
			if (menu_mode[level] == 'c3') {
				if (menu_CheckLastItem(menu_info, i)) {
					menutext += '<tr><td>'
						+ '<img id="' + menuid1 + '_1"'
						+ ' src="' + line_gif2 + '"'
						+ ' width=' + line_gif_width
						+ ' height=' + line_gif_height
						+ '><br>'
						+ '<img id="' + menuid1 + '_2"'
						+ ' src="' + line_gif4 + '"'
						+ ' width=' + line_gif_width
						+ ' height=0></td><td>';
				} else {
					menutext += '<tr><td>'
						+ '<img id="' + menuid1 + '_1"'
						+ ' src="' + line_gif1 + '"'
						+ ' width=' + line_gif_width
						+ ' height=' + line_gif_height
						+ '><br>'
						+ '<img id="' + menuid1 + '_2"'
						+ ' src="' + line_gif3 + '"'
						+ ' width=' + line_gif_width
						+ ' height=0></td><td>';
				}
			}
			p_menu_mode = 'c3';
			menutext += '<div id="' + menuid1 + '"'
				 + ' class="' + menu_info[i][1] + '"'
				 + ' onmouseover="c12(\'' + menuid1 + '\')"'
				 + ' onmouseout="c11(\'' + menuid1 + '\')"'
				 + '>' + menu_info[i][2] + '\n'
		} else if (menu_info[i][0] == 'i') {
			if (menu_mode[level] == 'c3') {
				if (menu_CheckLastItem(menu_info, i)) {
					menutext += '<tr><td>'
						+ '<img id="' + menuid1 + '_1"'
						+ ' src="' + line_gif2 + '"'
						+ ' width=' + line_gif_width
						+ ' height=' + line_gif_height
						+ '><br>'
						+ '<img id="' + menuid1 + '_2"'
						+ ' src="' + line_gif4 + '"'
						+ ' width=' + line_gif_width
						+ ' height=0></td><td>';
				} else {
					menutext += '<tr><td>'
						+ '<img id="' + menuid1 + '_1"'
						+ ' src="' + line_gif1 + '"'
						+ ' width=' + line_gif_width
						+ ' height=' + line_gif_height
						+ '><br>'
						+ '<img id="' + menuid1 + '_2"'
						+ ' src="' + line_gif3 + '"'
						+ ' width=' + line_gif_width
						+ ' height=0></td><td>';
				}
			}
			menutext += '<div id="' + menuid1 + '"'
				 + ' class="' + menu_info[i][1] + '"'
				 + ' onmouseover="c12(\'' + menuid1 + '\')"'
				 + ' onmouseout="c11(\'' + menuid1 + '\')"'
				 + '>' + menu_info[i][2]
				 + '</div>\n'
			if (menu_mode[level] == 'c3') {
				menutext += '</td></tr>\n'
			}
		} else if (menu_info[i][0] == 'e') {
			if (menu_mode[level] == 'c3') {
				menutext += '</table>\n';
			}
			menutext += '</div>\n';
			level--;
			if (menu_mode[level] == 'c3') {
				menutext += '</td></tr>\n'
			}
			if (level > 0) { menutext += '</div>\n'; }
		}
	}
	//if(menu_info[0]=="menu1"){
	//	menutext += '<a href="../people_museum/index.htm" target="_new">'
	//		+ '<img src="' + people_gif1 + '" border="0"'
	//		+ ' onmouseover="this.src=\'' + people_gif2 + '\';"'
	//		+ ' onmouseout="this.src=\'' + people_gif1 + '\';"></a>';
	//}

	document.write(menutext);
}

function menu_CheckLastItem(menu_info, index){
	var level = 1;
	var i;
	
	for (i=index+1;i<menu_info.length;i++){
		if (menu_info[i][0] == 's') {
			level++;
		} else if (menu_info[i][0] == 'm') {
			if(level == 1) { return false; }
		} else if (menu_info[i][0] == 'c') {
			if(level == 1) { return false; }
		} else if (menu_info[i][0] == 'c2') {
			if(level == 1) { return false; }
		} else if (menu_info[i][0] == 'c3') {
			if(level == 1) { return false; }
		} else if (menu_info[i][0] == 'i') {
			if(level == 1) { return false; }
		} else if (menu_info[i][0] == 'e') {
			level--;
		}
		if(level == 0) { return true; }
	}
	return false;
}

/*----------------------------------------------------
関数名: initMenu()
概要  : メニューを初期化する
----------------------------------------------------*/
function initMenu(menu_info){
	var menuid1 = '';
	var menuid2 = '';
	var p_menu_mode = '';
	var p_height = 0;
	var p_flag = 0;
	var level = 0;
	var i;

	for (i=1;i<menu_info.length;i++){
		menuid1 = menu_info[0] + '_' + i;
		menuid2 = menu_info[0] + '_'   + (i+1);
		p_flag = 0;
		if (menu_info[i][0] == 's') {
			level++;
			menu_mode[level] = p_menu_mode;
			if (p_menu_mode == 'c3') {
			}
		} else if (menu_info[i][0] == 'm') {
			p_menu_mode = 'm';
			p_flag = 1;
		} else if (menu_info[i][0] == 'c') {
			p_menu_mode = 'c';
			p_flag = 1;
		} else if (menu_info[i][0] == 'c2') {
			p_menu_mode = 'c2';
			p_flag = 1;
		} else if (menu_info[i][0] == 'c3') {
			p_menu_mode = 'c3';
			p_flag = 1;
		} else if (menu_info[i][0] == 'i') {
			p_flag = 1;
		} else if (menu_info[i][0] == 'e') {
			level--;
		}
		if ((p_flag == 1) && (menu_mode[level] == 'c3')) {
			if(document.all){
				var obj1 = document.all[menuid1];
				var obj2 = document.all[menuid1+'_2'];
			} else if(document.getElementById){
				var obj1 = document.getElementById(menuid1);
				var obj2 = document.getElementById(menuid1+'_2');
			}
			p_height = obj1.offsetHeight;
			if(p_height > line_gif_height){
				obj2.style.height = p_height - line_gif_height;
			}
		}
	}
}
