//*******************************************************************
// メニューボタン管理スクリプト
//-------------------------------------------------------------------
// 初版  2009/05/**  kikuchi
//*******************************************************************


var MenuBtn = {};

MenuBtn = function(){
    
    /**
     * メニューボタンを設定する
     *
     */
    this.setMenu = function(){
        var num = 0;
	    while((obj = arguments[num++]) != null){
	    
	        //********************
	        // ダムボタン
	        //********************
	        this.setDamBtn( obj["btn"]);
	    
	        //********************
	        // 第１タブメニュー
	        //********************
	        this.setFirstMenu( obj["tab"]);
	        
	        //********************
	        // 第２タブ（第３タブ）メニュー
	        //********************
	        this.setSecondMenu( obj["tab2"]);
        }
    }
	        
    /**
     * ダムボタンを作成する
     * @param  menuObj：ボタンオブジェクト
     *
     */
    this.setDamBtn = function( menuObj){
	    for(var key in menuObj){
		    if(typeof(menuObj[key]) == "object"){
			    
			    for(var key2 in menuObj[key]){
				    if(key2 == "name"){
					    var inp = document.createElement("input");
					    inp.type = "button";
					    inp.id = key;
					    inp.value = menuObj[key][key2];
					    // 画像ボタンのため、inputの外側にspanを置く
					    var span = document.createElement("span");
					    //span.setAttribute(CmnVar.Cls, "button");
					    span[CmnVar.Cls] = "button";
					    span.id = "btnSpan" + key.substr(key.length - 1, key.length);
					    span.appendChild(inp);
					    CmnLib.Elm.ID("btn").appendChild(span);
				    }
				    else if(key2 == "click"){
//						var damEvt = new CmnLib.Evt();
					    var path = location.pathname;
					    path = path.substring(path.lastIndexOf("G"), path.lastIndexOf("."));
						
//						var param;
//						if(menuObj[key][key2]["property"]["damno"]){
//							param = "damno=" + menuObj[key][key2]["property"]["damno"];
//						}else{
//							// ダム番号を付加しないと、空のHTMLが表示されてしまうので、
//							// ダム番号のパラメータがない場合は常にダム番号0を付加
//							param = "damno=0";
//						}
//						var func = "CmnLib.GmnLocate.move('"+path+"','" + param + "')";
//						damEvt.addEventListener(CmnLib.Elm.ID(key), "click", func, false);
						
					    var arrParam = new Array();
                        var damObj = menuObj[key][key2];
                        for (var key3 in damObj["property"]){
                            arrParam[key3] = damObj["property"][key3];
                        }
                        //arrParam["damno"] = (damObj["property"]["damno"]) ? damObj["property"]["damno"] : "0";
                        CmnControl.addEventListener(CmnLib.Elm.ID(key), "click", damObj["func"], arrParam);
				    }
			    }
		    }
	    }	    
    } 
    
    /**
     * 第１タブメニューを作成する
     * @param  menuObj：ボタンオブジェクト
     *
     */
    this.setFirstMenu = function( menuObj){
	    var tblObj = document.createElement("table");
	    //tblObj.setAttribute(CmnVar.Cls, "tab");
	    tblObj[CmnVar.Cls] = "tab";
	    tblObj.setAttribute("cellpadding", "0");
	    tblObj.setAttribute("cellspacing", "0");
	    tblObj.setAttribute("border", "0");
	    var trObj = document.createElement("tr");
	    var leftTH = document.createElement("th");
	    //leftTH.setAttribute(CmnVar.Cls, "left_space");
	    leftTH[CmnVar.Cls] = "left_space";
	    trObj.appendChild(leftTH);
//		var tabEvt = new CmnLib.Evt();
	    
	    for(var key in menuObj){
		    if(typeof(menuObj[key]) == "object"){
			    var thObj = document.createElement("th");
			    var divObj = document.createElement("div");
			    divObj.appendChild(document.createTextNode(menuObj[key]["name"]));
			    divObj.id = key;
			    //divObj.setAttribute(CmnVar.Cls, "default");
			    //thObj.setAttribute(CmnVar.Cls, "index");
			    divObj[CmnVar.Cls] = "default";
			    thObj[CmnVar.Cls] = "index";
			    thObj.appendChild(divObj);
				
//				if(menuObj[key]["locate"]){
//					var loc = menuObj[key]["locate"];
//					var param = "";
//					if(menuObj[key]["param"]){
//						param = menuObj[key]["param"];
//					}
//					var func = "CmnLib.GmnLocate.move('" + loc + "','" + param + "')";
//				}
//				tabEvt.addEventListener(thObj, "click", func, "false");
				
			    var arrParam = new Array();
                if(menuObj[key]["locate"]){
			        arrParam["gmnno"] = menuObj[key]["locate"];
			    }
		        if(menuObj[key]["param"]){
			        arrParam["param"] = menuObj[key]["param"];
		        }
		        var func = "CmnControl.ScreenAction.move";
		        CmnControl.addEventListener(thObj, "click", func, arrParam);
		    }else{
		    }
		    trObj.appendChild(thObj);
	    }
	    
	    var rightTH = document.createElement("th");
	    //rightTH.setAttribute(CmnVar.Cls, "right_space");
	    rightTH[CmnVar.Cls] = "right_space";

//090827.kamino 浦滝用コメント追加
        rightTH.innerHTML = "※各データは速報値であり、確定したものではありません。";

	    trObj.appendChild(rightTH);
	    var tbody = document.createElement("tbody");
	    tbody.appendChild(trObj);
	    tblObj.appendChild(tbody);
	    CmnLib.Elm.ID("tab").appendChild(tblObj);
    }
	    
    /**
     * 第２タブメニューを作成する
     * @param  menuObj：ボタンオブジェクト
     *
     */
    this.setSecondMenu = function( menuObj){
    
	    var path = location.pathname;
	    path = path.substring(path.lastIndexOf("G"), path.lastIndexOf("G") + 3);
	    
	    var tblObj = document.createElement("table");
	    var trObj = document.createElement("tr")
	    linkset = new Array();
	    linkLocate = new Array();
	    linkParam = new Array();
//		var menuEvt = new CmnLib.Evt();

	    var num = 0;
	    for(var key in menuObj[path]){
		    if(key.match(/menu/)){
			    var tdObj = document.createElement("td");
			    //tdObj.setAttribute(CmnVar.Cls, "menu_btn");
	            tdObj[CmnVar.Cls] = "menu_btn";
			    tdObj.id = key;
			    var divObj = document.createElement("div");
			    //divObj.setAttribute(CmnVar.Cls, "default");
	            divObj[CmnVar.Cls] = "default";
			    divObj.id = "_" + key;
			    var txtNode = document.createTextNode(menuObj[path][key]["name"]);
			    divObj.appendChild(txtNode);
			    tdObj.appendChild(divObj);
			    trObj.appendChild(tdObj);
			    linkset[num] = new Array();
			    linkLocate[num] = new Array();
			    linkParam[num] = new Array();
/** 気象・提体用の緊急措置 */
if (txtNode.nodeValue == "気象" || txtNode.nodeValue == "提体") continue;
			    //var arrStr = "";
			    if(typeof(menuObj[path][key]["popup"]) == "object"){
				    for(var i = 0; i < menuObj[path][key]["popup"].length; i++){
					    var title = menuObj[path][key]["popup"][i];
					    var popDiv = document.createElement("div");
					    popDiv.id = "popup"+i;
					    popDiv.setAttribute("titlep_", title + "を表示します");
					    if(menuObj[path][key]["img"]){
						    title = "　" + title;
						    var img = document.createElement("img");
						    img.src = menuObj[path][key]["img"][i];
						    popDiv.appendChild(img);
					    }
					    popDiv.appendChild(document.createTextNode(title));
					    linkset[num].push(popDiv);
					    if(menuObj[path][key]["locate"][i]){
						    var loc = menuObj[path][key]["locate"][i];
						    if(menuObj[path][key]["param"][i]){
							    linkParam[num].push(menuObj[path][key]["param"][i]);
						    }
						    linkLocate[num].push(loc);
					    }

                        //090827.kamino 浦滝用 現画面のポップアップタブをアクティブにする
                        //クエリーより各パラメータを取得する
                        var prms = CmnLib.getQueryParamRT(menuObj[path][key]["param"][i])
                        if((loc == CmnVar.GmnNo) && (prms["span"] == CmnVar.QueryParam["span"])){
                            //放流状況図個別
                            if(CmnVar.GmnNo == "G1100000"){
                                if((i + 1) == CmnVar.QueryParam["page"]){
                                    popDiv.className = "element-hover";
                                }
                            }else{
                                popDiv.className = "element-hover";
                            }
                        }

				    }
			    }
			    else{
			        			        
				    var title = menuObj[path][key]["popup"];
				    var popDiv = document.createElement("div");
				    popDiv.id = "popup0";
				    popDiv.setAttribute("title", title + "を表示します");
				    if(menuObj[path][key]["img"]){
					    var img = document.createElement("img");
					    img.src = menuObj[path][key]["img"];
					    popDiv.appendChild(img);
				    }
				    popDiv.appendChild(document.createTextNode(title));
				    linkset[num].push(popDiv);
				    if(menuObj[path][key]["locate"]){
					    var loc = menuObj[path][key]["locate"];
					    if(menuObj[path][key]["param"]){
						    linkParam[num].push(menuObj[path][key]["param"]);
					    }
					    linkLocate[num].push(loc);
				    }

                    //090827.kamino 浦滝用 現画面のポップアップタブをアクティブにする
                    var prms = CmnLib.getQueryParamRT(menuObj[path][key]["param"])
                    if(loc == CmnVar.GmnNo){
                        //放流状況図個別
                        if(CmnVar.GmnNo == "G1100000"){
                            if((i + 1) == CmnVar.QueryParam["page"]){
                                popDiv.className = "element-hover";
                            }
                        }else{
                            popDiv.className = "element-hover";
                        }
                    }

			    }
//			    func = "showmenu(" + num + ")";
//			    menuEvt.addEventListener(tdObj, "mouseover", func, false);
//			    hide = "var hide = new Display.location(); hide.delayhidemenu();";
//			    menuEvt.addEventListener(tdObj, "mouseout", hide, false);
                var func = "CmnControl.MenuAction.showMenu";
			    CmnControl.addEventListener(tdObj, "mouseover", func, num);
			    func = "CmnControl.MenuAction.delayHideMenu";
			    CmnControl.addEventListener(tdObj, "mouseout", func, undefined);
			    num++;
		    }
		    else{
			    //********************
                // 第３タブメニュー
                //********************
			    if(CmnLib.Elm.ID(key)){
			        this.setThirdMenu( menuObj[path][key]);
			    }
		    }
	    }
	    var tbody = document.createElement("tbody");
	    tbody.appendChild(trObj);
	    tblObj.appendChild(tbody);
	    CmnLib.Elm.ID("tab2").appendChild(tblObj); //.innerHTML = str;	    
    }
    
    /**
     * 第３タブメニューを作成する
     * @param  menuObj：ボタンオブジェクト
     *
     */
    this.setThirdMenu = function( menuObj){
        //var tab3Evt = new CmnLib.Evt();
        for(var key in menuObj){
	        var tab3Span = document.createElement("span");
	        //tab3Span.setAttribute(CmnVar.Cls, "act_btn");
	        tab3Span[CmnVar.Cls] = "act_btn";
	        var txt = menuObj[key]["name"];
	        var tab3inp = document.createElement("input");
	        tab3inp.id = key;
	        tab3inp.type = "button";
	        tab3inp.value = txt;
	        //tab3inp.setAttribute(CmnVar.Cls, "disable");
	        tab3inp[CmnVar.Cls] = "disable";
	        if(typeof(menuObj[key]) == "object"){
		        var evtObj = menuObj[key];
		        for(var key2 in evtObj){
			        if(key2 != "name"){
				        if(evtObj[key2]["func"] != undefined){
					        var evt = key2;
					        var func = evtObj[key2]["func"];
					        //tab3Evt.addEventListener(tab3inp, evt, func, false);
					        var param = undefined;
					        if (evtObj[key2]["property"]){
					            param = evtObj[key2]["property"];
					        }
					        CmnControl.addEventListener(tab3inp, evt, func, param);
				        }
			        }
		        }
	        }
	        tab3Span.appendChild(tab3inp);
	        CmnLib.Elm.ID("tab3").appendChild(tab3Span);
        }    
    }
}

