
var _menuObj;
function setMenuObj(obj){
    _menuObj = obj;
}
function menuObj(){
    // menu 構造を返す
    if (! _menuObj){
        _menuObj = new Object();
        
        // ## インストール時に提供される default menu
        _menuObj['COMPUTER'] = "COMPUTER.txt";
        _menuObj['NOA'] = "NOA.txt";
    }
    return _menuObj;
}
function setMenuForMainMenu(obj, mainMenu){
    _menuObj[mainMenu] = obj;
}
function menuForMainMenu(mainMenu){
    return _menuObj[mainMenu];
}

var _subMenuObj;
function subMenuObj(){
    if (!_subMenuObj){
        // サーバに subMenuObj がある場合は setSubMenuObjForMainMenu() で
        // _subMenuObj が生成されるはずなので、ここに処理が移るのは リリース時
        _subMenuObj = new Object();
        
        _subMenuObj['COMPUTER.txt'] = {"Apple":"http://www.apple.co.jp","Google":"http://www.google.co.jp"};
        _subMenuObj['NOA.txt'] = {"NOA プロジェクト":"https://sites.google.com/site/noawebspace"};
    }
    return _subMenuObj;
}
function setSubMenuObjForMainMenu(obj, mainMenu){
    if (!_subMenuObj){
        _subMenuObj = new Object();
    }
    // _subMenuObj の添字を mainMenu でなく mainMenuFile にするのは
    // mainMenu は rename されることがあるが 
    // mainMenu の指す mainMenuFile は変わらないため
    var mainMenuFile = menuForMainMenu(mainMenu);
    _subMenuObj[mainMenuFile] = obj;
}
function subMenuObjForMainMenu(mainMenu){
    // mainMenu に所属する subMenuObj を返す
    // ## サーバに subMenu ファイルが存在しないリリース時に対応するため
    // ## _subMenuObj を直接呼ばないこと
    var mainMenuFile = menuForMainMenu(mainMenu);
    return subMenuObj()[mainMenuFile];
}

var _defaultPath;
function setDefaultPath(path){
    _defaultPath = path;
}
function defaultPath(){
    // *file を格納する path
    return _defaultPath;
}

/////////////////////////
///// localStorage //////

function owner(){
    // NOA owner を返す
    return window.localStorage["infoBorderOwner"];
}

///// localStorage //////
/////////////////////////


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

var _receiver;
function puttedFile(){
	if ((xmlHttpObject.readyState == 4) && (xmlHttpObject.status == 200)){
		var value = xmlHttpObject.responseText;
		//alert("puttedFile ===\n"+value);//##
        
		var array = value.split("<SEPARATOR>");
		if (array.length > 1){
            showFadeoutInfo("message", array[1], 1000);

            // receiver が指定されていれば、それを実行
            if (_receiver) _receiver();
		} else {
            alert(value);
        }
		hideMessage("_message");
	} else 
		showMessage("_message", "サーバで処理中です ... ");
}
function putFile(filename, buff, isMenu, doBackup, receiver){
    // 作成した buff をサーバに filename という名称で格納
    xmlHttpObject = createXMLHttpRequest(puttedFile);
	if (xmlHttpObject){ // GETパラメータ付きでリクエスト送信
        _receiver = receiver;
        
		var array = new Array();
        array["owner"] = owner();
		array["filename"] = filename;
		if (isMenu) array["menu"] = "1";
		if (doBackup) array["backup"] = "1";
		array["contents"] = buff;
		
		var st = "./server.php?command=PUT_FILE"
		+ "&value=" + encodeObject(array);
		//alert(st); //===
        
		xmlHttpObject.open("GET", encodeURI(st), true);
		xmlHttpObject.send(null);
	}
}

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

