var _MB_IMG_DIR = "";

function setImgDir(dir){
	_MB_IMG_DIR = dir;
}

function preloadimg(imgList){
	var img = imgList.split(",");
	var i, loop = img.length;
	var imgDir = _MB_IMG_DIR;		// イメージのパスを取得する
	var imgObj;

	for(i = 0; i < loop; i++){
		imgObj = new Image();
		imgObj.src = imgDir + img[i] + "_on.gif";
		imgObj = new Image();
		imgObj.src = imgDir + img[i] + "_off.gif";
	}
}

function startMenu(dir){
	if(dir != null){
		setImgDir(dir);
	}
	document.write('<div id="_MENUBAR_BASE_LAYER" style="position:relative;">');
}

function drawMenubar(mbID, dir, itemList, pdIDList, linkList, altList){
	// 各リストの分離
	var item = itemList.split(",");
	var link = linkList.split("|");
	var pdID = pdIDList.split(",");
	var alt = altList.split(",");

	var loop = item.length;		// リスト内のアイテム数を取得
	var i;		// ループ用
	var imgDir = _MB_IMG_DIR;		// イメージのパスを取得する
	var pdDisp = "";		// プルダウン表示制御用
	var writeBuf = "";		// HTML書き出し用

	// 引数にてイメージのパスが指定されている場合は引数を優先する
	if(dir != null){
		imgDir = dir;
	}

	// メニューバー情報用hiddenタグを書き出す
	document.write('<input type="hidden" id="_' + mbID + '_INFO" value="">');

	// メニューバーアイテム用hiddenタグを書き出す
	document.write('<input type="hidden" id="_' + mbID + '_ITEM_LIST" value="' + itemList + '">');

	// メニューバーのプルダウンリスト用タグを書き出す
	pdIDList = "";
	for(i = 0; i < loop; i++){

	}

	// メニューバーのHTML生成
	writeBuf += '<div id="' + mbID + '" style="position:absolute; visibility: hidden;"><table border="0" cellpadding="0" cellspacing="0"><tr><td onmouseout="">';
	for(i = 0; i < loop; i++){
		// プルダウン制御の判断
		pdDisp = "";
		if(pdID[i] != "#"){		// プルダウン制御をする
			pdDisp = "dispPulldown(true, '" + pdID[i] + "');"
			document.write('<input type="hidden" id="_' + pdID[i] + '_INFO" value="' + mbID + ',' + i + '">');

			// プルダウンリストに追加
			if(pdIDList != ""){
				pdIDList += ",";
			}
			pdIDList += pdID[i];
		}

		if(link[i] == "#"){
			writeBuf += '<div onmouseover="hideAllPulldown(\'' + mbID + '\');dispItem(true, \'' + mbID + i + '\');' + pdDisp + '" style="display: inline;">';
		}
		else{
			writeBuf += '<a href="' + link[i] + '" onmouseover="hideAllPulldown(\'' + mbID + '\');dispItem(true, \'' + mbID + i + '\');' + pdDisp + '">';
		}

		writeBuf += '<img id="_' + mbID + i + '_OFF" src="' + imgDir + item[i] + '_off.gif" border="0" alt="' + alt[i] + '" style="display: inline;">';
		writeBuf += '<img id="_' + mbID + i + '_ON" src="' + imgDir + item[i] + '_on.gif" border="0" alt="' + alt[i] + '" style="display: none;">';

		if(link[i] == "#"){
			writeBuf += '</div>';
		}
		else{
			writeBuf += '</a>';
		}
	}
	writeBuf += '</td></tr></table></div>';
	//alert(writeBuf);

	// プルダウンリストの保存
	document.write('<input type="hidden" id="_' + mbID + '_PD_LIST" value="' + pdIDList + '">');

    // 表示リセット用スペースの書き出し
	document.write('<div id="' + mbID + '_SP" style="position:absolute; visibility: hidden;">');
	document.write('<A onMouseover="hideAllPulldown(\'' + mbID + '\')" onClick="return false;"><IMG id="_' + mbID + '_SP_IMG" SRC="' + _MB_IMG_DIR + 'space.gif" BORDER="0" ALT=""></A>');
	document.write('</div>');

	// メニューバーの書き出し
	document.write(writeBuf);
}

function drawPulldown(pdID, dir, itemList, linkList, altList){
	// 各リストの分離
	var item = itemList.split(",");
	var link = linkList.split("|");
	var alt = altList.split(",");

	var loop = item.length;		// プルダウンの総階層を取得
	var i;		// ループ用
	var imgDir = _MB_IMG_DIR;		// イメージのパスを取得する
	var info = getObject("_" + pdID + "_INFO").value.split(",");
	var mbID = info[0];

	// プルダウンのアイテムを書き出す
	document.write('<input type="hidden" id="_' + pdID + '_ITEM_LIST" value="' + itemList + '">');

	// 引数にてイメージのパスが指定されている場合は引数を優先する
	if(dir != null){
		imgDir = dir;
	}

    // 表示リセット用スペースの書き出し
	document.write('<div id="' + pdID + '_SP" style="position:absolute; visibility: hidden;">');
	document.write('<A onMouseover="hideAllPulldown(\'' + mbID + '\')" onClick="return false;"><IMG id="_' + pdID + '_SP_IMG" SRC="' + _MB_IMG_DIR + 'space.gif" BORDER="0" ALT=""></A>');
	document.write('</div>');

	// プルダウンの書き出し
	document.write('<div id="' + pdID + '" style="position:absolute; visibility:hidden"><table border="0" cellpadding="0" cellspacing="0"><tr><td onmouseout="">');
	for(i = 0; i < loop; i++){
		if(i > 0){
			document.write('<br>');
		}
		document.write('<a href="' + link[i] + '" onmouseover="dispItem(true, \'' + pdID + i + '\');" onmouseout="dispItem(false, \'' + pdID + i + '\');">');
		document.write('<img id="_' + pdID + i + '_OFF" src="' + imgDir + item[i] + '_off.gif" border="0" alt="' + alt[i] + '" style="display: inline;">');
		document.write('<img id="_' + pdID + i + '_ON" src="' + imgDir + item[i] + '_on.gif" border="0" alt="' + alt[i] + '" style="display: none;"></a>');
	}
	document.write('</td></tr></table></div>');
}

function endMenu(){
	document.write('</div>');
}

function viewMenubar(mbID, top, left){
	var item, itemNum, i;
	var types = "hidden";
	var spTop, spLeft, spWidth, spHeight, rightSpace;
	var tblWidth, imgWidth = 0, imgHieght = 0;
	var spImgObj = getObject("_" + mbID + "_SP_IMG");
	var scrWidth = getScreenWidth();		// クライアント画面の幅を取得
	var parentObj, pTagName;

	// メニューバーアイテムリストの取得
	item = getObject("_" + mbID + "_ITEM_LIST").value.split(",");
	itemNum = item.length;

	// 親エレメントを解析しベーステーブルのwidthを取得する
	parentObj = getObject("_MENUBAR_BASE_LAYER").parentNode;
	do{
		pTagName = parentObj.tagName;
		if(pTagName == "TABLE"){
			break;
		}
		parentObj = parentObj.parentNode;
	} while(pTagName != "BODY");
	tblWidth = parentObj.width;

	// メニューバーのサイズ取得
	imgHeight = getItemHeight(mbID, 0);
	for(i = 0; i < itemNum; i++){
		imgWidth += getItemWidth(mbID, i);
		//alert(imgWidth);
	}

    //rightSpace = scrWidth - (left + imgWidth + 30);		// メニューバーの右端から画面右端までの距離を取得

	if(top == null){
		top = 0;
	}
	if(left == null){
		left = Math.floor((tblWidth - imgWidth) / 2);
	}
	//alert("(" + tblWidth + " - " + imgWidth + ") / 2 = " + left);

	// メニューバーの右端から画面右端までの距離を取得
	if(scrWidth < tblWidth){
		rightSpace = tblWidth -imgWidth - left;
	}
	else{
		rightSpace = Math.floor((scrWidth - tblWidth) / 2) + (tblWidth -imgWidth - left);
	}

	//alert("top = " + top + "\nleft = " + left + "\nscrWidth = " + scrWidth + "\ntblWidth = " + tblWidth + "\nimgWidth = " + imgWidth + "\ntblWidth / 2 = " + tblWidth / 2 + "\nimgRight = " + (tblWidth -imgWidth - left) + "\nrightSpace = " + rightSpace);

	getObject("_" + mbID + "_INFO").value = top + "," + left;

	getObject(mbID).style.visibility = "visible";
	getObject(mbID).style.top = top;
	getObject(mbID).style.left = left;

	spTop = top - 15;
	spLeft = left - 15;
	spWidth = imgWidth + 15 + rightSpace;
	spHeight = imgHeight + 30;

	getObject(mbID + "_SP").style.visibility = "visible";
	getObject(mbID + "_SP").style.top = spTop;
	getObject(mbID + "_SP").style.left = spLeft;
	spImgObj.width = spWidth;
	spImgObj.height = spHeight;
}

function hideMenubar(mbID){
	getObject(mbID).style.visibility = "hidden";
	getObject(mbID + "_SP").style.visibility = "hidden";
	hideAllPulldown(mbID);
}

function WinOpen(win_name,name,w,h){
		nWin = window.open(win_name, name,
			"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=" + w + ",height=" + h);

		nWin.focus();
}


function dispPulldown(flag, pdIDList){
	var id = pdIDList.split(",");
	var loop = id.length;
	var i, j;
	var types = "hidden";
	var mbInfo, pdInfo, mbID, idx;
	var item;
	var imgWidth = 0, imgHeight = 0;
	var mbTop, mbLeft;
	var pdTop, pdLeft;
	var spTop, spLeft;
	var spImgObj;
	var spWidth, spHeight;
	var pdItem, pdItemNum;

	if(flag){
		types = "visible";
	}

	for(i = 0; i < loop; i++){
		// プルダウン情報を取得
		pdInfo = getObject("_" + id[i] + "_INFO").value.split(",");
		pdItem = getObject("_" + id[i] + "_ITEM_LIST").value.split(",");
		pdItemNum = pdItem.length;

		spImgObj = getObject("_" + id[i] + "_SP_IMG");		// リセット用エリアのイメージObject

		// メニューバーIDとインデックスを取得
		mbID = pdInfo[0];
		idx = pdInfo[1];

		// プルダウンの表示オフセットを設定
		for(j = 0; j < idx; j++){
			imgWidth += getItemWidth(mbID, j);
		}
		imgHeight = getItemHeight(mbID, idx);

		// メニューバー情報を取得
		mbInfo = getObject("_" + mbID + "_INFO").value.split(",");
		mbTop = Number(mbInfo[0]);
		mbLeft = Number(mbInfo[1]);

		// プルダウンの表示、移動
		//alert("Menubar : top = " + mbTop + ", left = " + mbLeft + "\nOffset : top = " + imgHeight + ", left = " + imgWidth);
		pdTop = mbTop + imgHeight;
		pdLeft = mbLeft + imgWidth;

		getObject(id[i]).style.visibility = types;
		getObject(id[i]).style.top = pdTop;
		getObject(id[i]).style.left = pdLeft;

		// リセットエリアの表示、移動
		spTop = mbTop + imgHeight;
		spLeft = mbLeft + imgWidth;
		spWidth = getItemWidth(id[i], 0) + 30;
		spHeight = getItemHeight(id[i], 0) * pdItemNum + 15;

		getObject(id[i] + "_SP").style.visibility = types;
		getObject(id[i] + "_SP").style.top = spTop;
		getObject(id[i] + "_SP").style.left = spLeft - 15;
		spImgObj.width = spWidth;
		spImgObj.height = spHeight;
	}
}

function hideAllPulldown(mbID){
	var pdList = getObject("_" + mbID + "_PD_LIST").value;
	var item = getObject("_" + mbID + "_ITEM_LIST").value.split(",");
	var itemNum = item.length;
	var i;

	// メニューバーの表示イメージを初期化する
	for(i = 0; i < itemNum; i++){
		dispItem(false, mbID + i);
	}

	// プルダウンを非表示にする
	dispPulldown(false, pdList);
}


function dispItem(flag, tagName){
	var onType = "none";
	var offType = "inline";

	if(flag){
		onType = "inline";
		offType = "none";
	}

	getObject("_" + tagName + "_OFF").style.display = offType;
	getObject("_" + tagName + "_ON").style.display = onType;
}

function getScreenWidth(){
	var width;
	if(checkAgent() == "IE"){
		width = document.body.clientWidth;
	}
	else{
		width = window.innerWidth;
	}

	return width;
}

function getObject(tagName)
{
	var obj;

	if(document.layers){		//NN4用
		//alert("NN4");
		obj = document.layers[tagName];
	}
	else if(document.all){		//IE4用
		//alert("IE4");
		obj = document.all(tagName);
	}
	else if(document.getElementById){		//NN6,Mozilla,IE5用
		//alert("NN6,Mozilla,IE5");
		obj = document.getElementById(tagName);
	}

	//alert(obj);
	return obj;
}

function checkAgent(){
	var Br = navigator.appName;
	var Ver = navigator.appVersion;
	var _brType;

	//alert(Br + "\n" + Ver);

	if(Br == "Netscape"){
		_brType = "NN";
	}
	else if(Br == "Microsoft Internet Explorer"){
		_brType = "IE";
	}

	return _brType;
}

function getItemWidth(mbID, idx){
	var item = getObject("_" + mbID + "_ITEM_LIST").value.split(",");
	var imgDir = _MB_IMG_DIR;		// イメージのパスを取得する
	var imgName = imgDir + item[idx] + "_off.gif";
	var imgObj;

	imgObj = new Image();
	imgObj.src = imgName;

	//alert(imgObj.src + ": " + imgObj.width);
	return imgObj.width;
}

function getItemHeight(mbID, idx){
	var item = getObject("_" + mbID + "_ITEM_LIST").value.split(",");
	var imgDir = _MB_IMG_DIR;		// イメージのパスを取得する
	var imgName = imgDir + item[idx] + "_off.gif";
	var imgObj;

	imgObj = new Image();
	imgObj.src = imgName;

	//alert(imgName + ": " + imgObj.height);
	return imgObj.height;
}
