
var PopUpManager = {};

PopUpManager = function(){
	// 変数宣言
	var defaultMenuWidth = "150px";
	var ie5 = document.all && !window.opera;
	var ns6 = document.getElementById;
	var delayhide;
	var menuobj;
	this.linkset = new Array(); // 他のファイルから配列要素を作成するため

	/** ポップアップメニュー用のDIVを読み込み時に作成する */
	if(ie5 || ns6){
		document.write("<div id='popitmenu' onmouseover='clearhidemenu()' onmouseout='dynamichide(event)'></div>");
	}

	/** 
	 * 項目ポップアップの表示
	 * @param no {integer} : 配列のインデックス番号(他ファイルから見た場合、第2タブのインデックス)
	 */
	this.showmenu = function(no){
		/** 画面からPopup用Divを取得する */
		menuobj = document.getElementById("popitmenu");
		optWidth = "180px";
		if(!document.all && !document.getElementById){ return;}
		this.clearhidemenu();
		/** Popupに表示する項目の数を取得する */
		var leng = menuobj.childNodes.length;
		/** 項目用DIVをappendするので、一度全て削除する */
		if(leng > 0){
			for(var rem = leng - 1; rem >= 0; rem--){
				menuobj.removeChild(menuobj.childNodes[rem]);
			}
		}
		for(var i = 0; i < linkset[no].length; i++){
			menuobj.appendChild(linkset[no][i]);
			var loc = "G000000"; // 初期の遷移先はエラー用htm
			var param = "";
			/** 配列から遷移先、パラメータを取得する */
			if(linkLocate[no][i]){
				loc = linkLocate[no][i];
				if(linkParam[no][i]){
					param = linkParam[no][i];
				}
			}
			
			var func = "CmnControl.ScreenAction.move";
			var paramInfo = new Array();
			paramInfo["gmnno"] = loc;
			paramInfo["param"] = param;
			CmnControl.addEventListener(CmnLib.Elm.ID(linkset[no][i].id), "click", func ,paramInfo);
		}
		var parentObj = document.getElementById("tab2").getElementsByTagName("td");
		menuobj.style.width = (typeof(optWidth) != "undefined") ? optWidth : defaultMenuWidth;
		menuobj.contentwidth = menuobj.offsetWidth;
		menuobj.contentheight = menuobj.offsetHeight;
		menuobj.style.left = (parentObj[no].offsetLeft+5) + "px";
		menuobj.style.top = "90px";
		menuobj.style.visibility = "visible";
		return false;
	};

	/** Popup表示DIVがある場合非表示にする */
	this.hidemenu = function(){
		if(menuobj){
			menuobj.style.visibility = "hidden";
		}
	}

	/** Popup内でのmouseout,over時にオブジェクトがあるかを判定 */
	this.dynamichide = function(e){
		/** IEでmenuobjにmouseoverされた要素が含まれていなければ非表示 */
		if(ie5 && !menuobj.contains(e.toElement)){
			this.hidemenu();
		}else if(ns6 && e.currentTarget != e.relatedTarget && !this.contains_ns6(e.currentTarget, e.relatedTarget)){
			/** not IE で、要素が無い場合は非表示 */
			this.hidemenu();
		}
	}

	/** 要素が親要素に含まれているかを取得 */
	this.contains_ns6 = function(a, b) {
		while(b.parentNode){
			if((b = b.parentNode) == a){
				return true;
			}else{
				return false;
			}
		}
	}

	this.delayhidemenu = function(){
		delayhide = setTimeout("hidemenu()", 500);
	}

	this.clearhidemenu = function(){
		if(delayhide){
			clearTimeout(delayhide);
		}
	}
};

var defaultMenuWidth = "150px";
var linkset = new Array();
var ie5 = document.all && !window.opera;
var ns6 = document.getElementById;
var menuobj;
var delayhide;

if(ie5 || ns6){
	/** ポップアップメニュー用のDIVを読み込み時に作成する */
	document.write("<div id='popitmenu' onmouseover='clearhidemenu()' onmouseout='dynamichide(event)'></div>");
}

/**
 * ポップアップメニューの表示処理
 * @param no {integer} : 配列のインデックス番号
 *
 */
function showmenu(no){
	/** 画面からPopup用Divを取得する */
	menuobj = document.getElementById("popitmenu");
	optWidth = "180px";
	if(!document.all && !document.getElementById){ return;}
	clearhidemenu();
	/** Popupに表示する項目の数を取得する */
	var leng = menuobj.childNodes.length;
	/** 項目用DIVをappendするので、一度全て削除する */
	if(leng > 0){
		for(var rem = leng - 1; rem >= 0; rem--){
			menuobj.removeChild(menuobj.childNodes[rem]);
		}
	}
	for(var i = 0; i < linkset[no].length; i++){
		menuobj.appendChild(linkset[no][i]);
		var loc = "G000000"; // 初期の遷移先はエラー用htm
		var param = "";
		/** 配列から遷移先、パラメータを取得する */
		if(linkLocate[no][i]){
			loc = linkLocate[no][i];
			if(linkParam[no][i]){
				param = linkParam[no][i];
			}
		}
        
        var func = "CmnControl.ScreenAction.move";
		var paramInfo = new Array();
		paramInfo["gmnno"] = loc;
		paramInfo["param"] = param;
		CmnControl.addEventListener(CmnLib.Elm.ID(linkset[no][i].id), "click", func ,paramInfo);
	}
	var parentObj = document.getElementById("tab2").getElementsByTagName("td");
	menuobj.style.width = (typeof(optWidth) != "undefined") ? optWidth : defaultMenuWidth;
	menuobj.contentwidth = menuobj.offsetWidth;
	menuobj.contentheight = menuobj.offsetHeight;
	menuobj.style.left = (parentObj[no].offsetLeft+5) + "px"; //6 + (no * 121) + "px";
	menuobj.style.top = "90px";
	menuobj.style.visibility = "visible";
	return false;
}

/** Popup表示DIVがある場合非表示にする */
function hidemenu(){
	if(menuobj){
		menuobj.style.visibility = "hidden";
	}
}

/** Popup内でのmouseout,over時にオブジェクトがあるかを判定 */
function dynamichide(e){
	/** IEでmenuobjにmouseoverされた要素が含まれていなければ非表示 */
	if(ie5 && !menuobj.contains(e.toElement)){
		hidemenu();
	}else if(ns6 && e.currentTarget != e.relatedTarget && !contains_ns6(e.currentTarget, e.relatedTarget)){
		/** ネスケ or firefoxで、要素が無い場合は非表示 */
		hidemenu();
	}
}

/** 要素が親要素に含まれているかを取得 */
function contains_ns6(a, b) {
	while(b.parentNode){
		if((b = b.parentNode) == a){
			return true;
		}else{
			return false;
		}
	}
}

function delayhidemenu(){
	delayhide = setTimeout("hidemenu()", 500);
}

function clearhidemenu(){
	if(delayhide){
		clearTimeout(delayhide);
	}
}



