Index: branches/testa/js/main.js
===================================================================
--- branches/testa/js/main.js	(revision 25)
+++ branches/testa/js/main.js	(revision 27)
@@ -6,30 +6,59 @@
 };
 
-function main() {
-    restore_info_to_globalx()
+function init_globalx_storagex() {
+    Globalx.storagex = new Storagex();
+}
 
-    editor_func("data");
-    make_ul_for_menu('data' , '#data-side')
-    menux( "data" )
-    
-    editor_func("setting");
-    make_ul_for_menu("setting" , '#setting-side')
-    
-    editor_func("output");
-    make_ul_for_menu("output" , '#output-side')
+function init_globalx() {
+    Globalx.num = 0;
+    Globalx.index = 0;
+    Globalx.parts = ["data", "output", "setting"]
+    Globalx.bookmark_displayname_max_length = 18
 
     tab_init()
     topmenu_init()
+    Globalx.remotex = new Remotex('php/content.php')
+}
 
-    rebuild_bookmark_menu("data")
+function menu_action(part, item_name , up_flag = false) {
+    //console.log("menu_action 1")
+    Globalx[part].sidemenu.menu_action(item_name , up_flag)
+    //console.log("menu_action 2")
+}
 
-    // LocalStorageにまだ保存していない場合を想定して、ここで保存しておく
-    console.log("call save_info_from_globalx()")
-    save_info_from_globalx()
+function main() {
+    init_globalx_storagex()
 
-    part = "data"
-    $('#down-download').on('click', {part: part}, handleDownload)
-    $( Globalx['data'].textarea_sel ).val("");
-    $( '#bookmark_displayname' ).prop( 'maxlength' , Globalx[part].bookmark_displayname_max_length)
+    let need_to_save = Globalx.storagex.restore_globalx_from_info()
+    init_globalx()
+
+    Globalx.parts.map( ( part ) => {
+	set_globalx_editor(part)
+	Globalx[ part ].bookmarkmenu = new BookmarkMenu( Globalx.num, part )
+	Globalx[ part ].sidemenu = new SideMenu( Globalx.num, part )
+	Globalx[ part ].sidemenu.setup(`#${part}-side`)
+	Globalx[ part ].bookmarkmenu.set_click_handler()
+	Globalx[ part ].bookmarkmenu.rebuild_bookmark_menu(part)
+
+	$( Globalx[ part ].download_sel ).on('click', {num: Globalx.num, part: part}, handleDownload)
+	$( Globalx[ part ].textarea_sel ).val("");
+    } )
+/*
+    Globalx.parts.map( (part) => {
+	Globalx[ part ].sidemenu.setup(`#${part}-side`)
+	Globalx[ part ].bookmarkmenu.rebuild_bookmark_menu(part)
+
+	$( Globalx[part].download_sel ).on('click', {num: Globalx.num, part: part}, handleDownload)
+	$( Globalx[part].textarea_sel ).val("");
+    }
+  */  
+    if( need_to_save ){
+	// LocalStorageにまだ保存していない場合、ここで保存しておく
+	//console.log("call save_as_info_from_globalx()")
+	Globalx.storagex.save_as_info_from_globalx( (data) => { console.log( "data=" + data ) } )
+    }
+
+    let part = "data"
+    $( '#bookmark_displayname' ).prop( 'maxlength' , Globalx.bookmark_displayname_max_length)
     $('#bookmarkDlg').dialog({
 	autoOpen: false,
@@ -50,14 +79,4 @@
 }
 
-function init_globalx() {
-    Globalx.num = 0;
-    Globalx.index = 0;
-    Globalx.parts = ["data", "output", "setting"]
-    
-    Globalx.parts.map( function( part ){
-	console.log("init_globalx part=" + part )
-	set_globalx_editor(part)
-    } )
-}
 
 function set_globalx_editor(part) {
@@ -73,18 +92,18 @@
 /**/
 	  bookmarks: [],
-	  bookmark_displayname_max_length: 18,
           key_indicate_file: false,
 	  key: '/',
 	  key_sel: `#${part}-filelist_key`,
-          download_sel: `#${part}-download_sel`
+          download_sel: `#${part}-down-download`
       }
+      editor_config(part);
+
       Globalx[part].menu_sel = `#${Globalx[part].menu_id}`
       Globalx[part].bookmark_sel = `#${Globalx[part].bookmark_id}`
       Globalx[part].bookmark_op_sel = `#${Globalx[part].bookmark_op_id}`
-      Globalx[part].bookmark_mgr = new BookmarkMgr( Globalx[part].bookmark_displayname_max_length )
-
+      Globalx[part].bookmark_mgr = new BookmarkMgr( Globalx.bookmark_displayname_max_length )
 }
 
-function editor_func(part) {
+function editor_config(part) {
       let editor = ace.edit( Globalx[part].editor_id )
       editor.setTheme("ace/theme/monokai");
@@ -100,3 +119,2 @@
       });
 }
-
Index: branches/testa/js/tab.js
===================================================================
--- branches/testa/js/tab.js	(revision 25)
+++ branches/testa/js/tab.js	(revision 27)
@@ -10,4 +10,5 @@
         // クリックしたタブと同じインデックス番号をもつコンテンツを表示
         $('.panel').eq(index).addClass('is-show');
+	console.log("tab index="+index )
     })
 }
Index: branches/testa/js/topmenu.js
===================================================================
--- branches/testa/js/topmenu.js	(revision 25)
+++ branches/testa/js/topmenu.js	(revision 27)
@@ -1,12 +1,2 @@
-function topmenu_init0() {
-    const nav = $('.nav');
-    $('li', nav)
-	.mouseover(function(e) {
-	    $('ul', this).stop().slideDown('fast');
-	})
-	.mouseout(function(e) {
-	    $('ul', this).stop().slideUp('fast');
-	})
-}
 function topmenu_init() {
     const nav = $('.nav');
