

/////////////////////////////////////////////
///// Ajax //////////////////////////////////

function gotPath(){
	if ((xmlHttpObject.readyState == 4) && (xmlHttpObject.status == 200)){
		var value = xmlHttpObject.responseText;
		//alert("gotPath ===\n"+value);//##
        
        setDefaultPath(value);
        showMap();
	} 
}
function getPath(){
    // filename をサーバから読み出す
    xmlHttpObject = createXMLHttpRequest(gotPath);
    if (xmlHttpObject){ // GETパラメータ付きでリクエスト送信
        var array = new Array();
        array["owner"] = owner();
        
        var st = "./server.php?command=GET_PATH"
        + "&value=" + encodeObject(array);
        //alert(st); //===
        
        xmlHttpObject.open("GET", encodeURI(st), true);
        xmlHttpObject.send(null);
    }
}

function gotFile(){
	if ((xmlHttpObject.readyState == 4) && (xmlHttpObject.status == 200)){
		var value = xmlHttpObject.responseText;
		//alert("gotFile ===\n"+value);//##
        
		var array = value.split("<SEPARATOR>");
		if (array.length > 1){
			//alert(array[1]);
            var obj = decodeObject(array[1]);
            setMenuObj(obj);
        }
        getPath();
	} 
}
function getFile(filename){
    // filename をサーバから読み出す
    // ### menu.js にある関数と同じ名称なので注意 ###
    xmlHttpObject = createXMLHttpRequest(gotFile);
    if (xmlHttpObject){ // GETパラメータ付きでリクエスト送信
        var array = new Array();
        array["owner"] = owner();
        array["menu"] = "1";
        array["filename"] = filename;
        
        var st = "./server.php?command=GET_FILE"
        + "&value=" + encodeObject(array);
        //alert(st); //===
        
        xmlHttpObject.open("GET", encodeURI(st), true);
        xmlHttpObject.send(null);
    }
}

var _mainMenu;
function gotSubMenu(){
	if ((xmlHttpObject.readyState == 4) && (xmlHttpObject.status == 200)){
		var value = xmlHttpObject.responseText;
		//alert("gotSubMenu ===\n"+value);//##
        
		var array = value.split("<SEPARATOR>");
		if (array.length > 1){
			//alert(array[1]);
            var obj = decodeObject(array[1]);
            setSubMenuObjForMainMenu(obj, _mainMenu);
        }
        showSubMenuFor(_mainMenu);
		hideMessage("_message");
	} else 
		showMessage("_message", "サブメニューをリクエストしています ... ");
}
function getSubMenu(mainMenu){
    // SUBMENU をサーバへリクエスト
    xmlHttpObject = createXMLHttpRequest(gotSubMenu);
    if (xmlHttpObject){ // GETパラメータ付きでリクエスト送信
        var array = new Array();
        array["owner"] = owner();
        array["menu"] = "1";
        array["filename"] = menuForMainMenu(mainMenu);
        
        _mainMenu = mainMenu;
        
        var st = "./server.php?command=GET_FILE"
        + "&value=" + encodeObject(array);
        //alert(st); //===
        
        xmlHttpObject.open("GET", encodeURI(st), true);
        xmlHttpObject.send(null);
    }
}

function gotWindowSize(answer){
	// サーバから得られたサイズにウインドーを調整する
	if (answer.length > 1){
		var args = answer.split(",");
		var x = args[0] * 1;
		var y = args[1];
		var w = args[2];
		var h = args[3];
		// resize を先にしておかないと元が大きいサイズだった場合 moveTo しよう
		// としてもウインドー境界の制限で移動できない場合がある
        var win = window.top; // FRAME を使っているので
		win.resizeTo(w, h);
		win.moveTo(x, y);
	}
    
    getFile("menu.txt");
}
function getWindowSize(){
	// DocMaker のウインドー位置とサイズをサーバへリクエスト
	NRGetWindowSize(owner(), "InfoBoard", gotWindowSize);
}

function puttedWindowSize(answer){
    showFadeoutInfo("message", answer, 1000);
}
function putWindowSize(){
	// DocMaker のウインドー位置とサイズをサーバへ記憶
    var win = window.top; // FRAME を使っているので
	var x = win.screenLeft;
	var y = win.screenTop - 22;
	var w = win.outerWidth;
	var h = win.outerHeight;
	NRPutWindowSize(owner(), "InfoBoard", x, y, w, h, puttedWindowSize);
}

///// Ajax //////////////////////////////////
/////////////////////////////////////////////


function owner(){
    return window.opener.owner();
}

function shurink(mainMenu){
    // mainMenu の子供をトグル式に折畳む
    var elm = document.getElementById("label."+mainMenu);
    if (elm.style.display == "none")
		elm.style.display = "block"; // 表示する
	else
		elm.style.display = "none"; // 表示しない
}

var _mainMenus;
var _mainMenuNumber;
function showSubMenuFor(mainMenu){
    // mainMenu に所属する subMenu を表示
	var tbl = document.getElementById("mapTable");
    var tr = newTR(tbl, "", "");
    tr.style.border = "thin solid #aaa";
    
    // MAIN MENU
    var td = newTD(tr, "subMenu", mainMenu);
    td.style.border = "thin solid #aaa";
    td.style.width = "50px";
    td.setAttribute("onmouseout","resetColor(this,'#000','#fff')");
    td.setAttribute("onmouseover","setColor(this,'#ff0','#00f')");
    td.setAttribute("onclick", "shurink('"+mainMenu+"')");
    
    // SUB MENU AREA
    var td = newTD(tr, "label."+mainMenu, "");
    var obj = subMenuObjForMainMenu(mainMenu);
    for (subMenu in obj){
        // SUB MENU
        var sp = newSPAN(td, "URI");
        var uri = trim(obj[subMenu]);
        if (uri.length){ // ANCHOR 付きの SUB MENU
            if (uri.charAt(0) == "*"){
                // * で始まる anchor は * を defaultPath() に読み替える
                uri = defaultPath() + "/" + uri.substr(1);
            }
            var a = newA(sp, subMenu, uri, "_blank");
        } else { // TITLE としての SUB MENU
            sp.innerHTML = subMenu;
            sp.style.color = "#fff";
            sp.style.backgroundColor = "#396";
        }
    }
    
    // _meinMenus 全てをスキャンするまで再起的にサーバへリクエスト　
    if (++_mainMenuNumber < _mainMenus.length)
        getSubMenu(_mainMenus[_mainMenuNumber]);
}
function showMap(){
    // menuObj を map に展開
    var mObj = menuObj();
	var elm = document.getElementById("contents");
	elm.innerHTML = "";
    var tbl = newTABLE(elm, "mapTable");
    
    // mainMenu の配列を生成
    _mainMenus = new Array();
    for (mainMenu in mObj){
        _mainMenus.push(mainMenu);
    }
    // SUBMENU をサーバへリクエスト
    _mainMenuNumber = 0;
    getSubMenu(_mainMenus[_mainMenuNumber]);
}

function initContents(){
	var elm = document.getElementById("base");
	elm.innerHTML = "";
    
    // HEADER AREA
    var tbl = newTABLE(elm, "frameTable");
    var tr = newTR(tbl, "titleBar", "");
    
    // LEFT
    var td = newTD(tr, "left", "INFO BOARD MAP");

    // RIGHT
    var td = newTD(tr, "right", "");
    var img = newIMAGE(td, "", "./zoomfit.png", "zoom");
    img.style.height = "15px";
	img.setAttribute("onclick","putWindowSize()");
    
    // CONTENTS
    var dv = newDIV(elm, "contents");
    
    // CONTENTS
    var dv = newDIV(elm, "message");
    
    // ウインドー・サイズをサーバから読み込みサイズ調整
    getWindowSize();
}

