OSDN Git Service

pettanR version0.4.12
[pettanr/clientJs.git] / 0.4.x / javascripts / work.js
index 1dffaec..25d3256 100644 (file)
@@ -1,6 +1,6 @@
 /*\r
  * pettanR work.js\r
- *   version 0.4.2\r
+ *   version 0.4.12\r
  *   \r
  * author:\r
  *   itozyun\r
@@ -35,7 +35,7 @@
 /* ----------------------------------------\r
  *   pettanr.editor\r
  *    - MENU_BAR_CONTROL\r
- *    - HISTORY\r
+ *    - HISTORY_CONTROL\r
  *    - SAVE_CONTROL\r
  *    - TEXT_EDITOR_CONTROL\r
  *    - IMAGE_GROUP_EXPROLER\r
@@ -87,6 +87,9 @@ pettanr.editor = ( function(){
 \r
 /* ----------------------------------------\r
  * MENU BAR\r
+ *  - mouseEventListener\r
+ *  - controler\r
+ * \r
  * div\r
  *   div.title\r
  *   ul\r
@@ -180,15 +183,7 @@ pettanr.editor = ( function(){
                        \r
                        function onClick( e){\r
                                var that = this,\r
-                                       i = ( function(){\r
-                                               var parent = that.parentNode,\r
-                                                       children = parent.getElementsByTagName( 'li'),\r
-                                                       l = children.length;\r
-                                               for(var i=0; i<l; ++i){\r
-                                                       if( children[ i] === that) return i;\r
-                                               }\r
-                                               return -1;\r
-                                       })();\r
+                                       i = pettanr.util.getChildIndex( this.parentNode, this);\r
                                i !== -1 && this.className !== 'disabled' && SELECTION_CALLBACK_ARRAY[ i]( i);\r
                                e.stopPropagation();\r
                                return false;\r
@@ -317,9 +312,10 @@ pettanr.editor = ( function(){
 \r
 \r
 /* ----------------------------------------\r
- * HISTORY\r
+ * HISTORY_CONTROL\r
+ *  - controler\r
  */\r
-       var HISTORY = ( function() {\r
+       var HISTORY_CONTROL = ( function() {\r
                var     STACK_BACK = [],\r
                        STACK_FORWARD = [],\r
                        MENUBAR_BACK = MENU_BAR_CONTROL.EDIT.createSelection( 'back', 'ctrl + z', back, false),\r
@@ -378,10 +374,10 @@ pettanr.editor = ( function(){
                return {\r
                        init: function(){\r
                                log = $( '#history-log');\r
-                               delete HISTORY.init;\r
+                               delete HISTORY_CONTROL.init;\r
                        },\r
                        open: function(){\r
-                               HISTORY.init && HISTORY.init();\r
+                               HISTORY_CONTROL.init && HISTORY_CONTROL.init();\r
                        },\r
                        close: function(){\r
                                MENUBAR_BACK.visible( false);\r
@@ -415,9 +411,9 @@ pettanr.editor = ( function(){
 \r
 \r
 /* ----------------------------------------\r
- *     Save Control\r
+ * OUTPUT_CONSOLE\r
+ *  - overlay\r
  */\r
-\r
        var OUTPUT_CONSOLE = ( function(){\r
                var jqWrap, jqOutputArea,\r
                        ID = 'outputConsole';\r
@@ -465,20 +461,21 @@ pettanr.editor = ( function(){
                }\r
        })();\r
 \r
+/* ----------------------------------------\r
+ * SAVE_CONTROL\r
+ *  - controler\r
+ */\r
        var SAVE_CONTROL = ( function(){\r
                var SAVE = MENU_BAR_CONTROL.QUIT.createSelection( 'save', 'ctrl + S', quit, false),\r
                        SAVE_AND_QUIT = MENU_BAR_CONTROL.QUIT.createSelection( 'save & quit', null, quit, false, false, true),\r
                        SAVE_AS_HTML = MENU_BAR_CONTROL.QUIT.createSelection( 'get as html', null, outputAsHtml, true, false, true),\r
                        SAVE_AS_JSON_STRING = MENU_BAR_CONTROL.QUIT.createSelection( 'get JsonStr', null, outputAsJsonString, true, false, true),\r
-                       OUTPUT = MENU_BAR_CONTROL.QUIT.createSelection( 'output', null, onOutputClick, true, false, true),\r
                        QUIT = MENU_BAR_CONTROL.QUIT.createSelection( 'quit', null, quit, true, true),\r
                        updated = false;\r
                \r
                function quit(){\r
-               }\r
-               \r
-               function onOutputClick(){\r
-                       // OUTPUT_CONSOLE.show();\r
+                       // 本来は os.application.close();\r
+                       pettanr.view.show( 'entrance');\r
                }\r
                \r
                function outputAsHtml(){\r
@@ -488,6 +485,8 @@ pettanr.editor = ( function(){
                        OUTPUT_CONSOLE.show( COMIC_ELEMENT_CONTROL.getAsJsonString());\r
                }\r
                return {\r
+                       open: function(){},\r
+                       close: function(){},\r
                        quit: quit,\r
                        panelUpdated: function( _updated){\r
                                if( _updated !== undefined && updated !== _updated){\r
@@ -504,9 +503,9 @@ pettanr.editor = ( function(){
        })();\r
 \r
 /* ----------------------------------------\r
- *     Text Editor (Overlay)\r
+ * Text Editor\r
+ *  - overlay\r
  */\r
-       \r
        var TEXT_EDITOR_CONTROL = ( function(){\r
                var jqWrap, jqTextarea, jqButton,\r
                        textElement, onUpdateFunction,\r
@@ -574,7 +573,8 @@ pettanr.editor = ( function(){
        })();\r
 \r
 /* ----------------------------------------\r
- *     Image Group Exproler (Overlay)\r
+ * Image Group Exproler\r
+ *  - overlay\r
  */\r
        var IMAGE_GROUP_EXPROLER = ( function(){\r
                var ICON_ARRAY = [],\r
@@ -816,19 +816,6 @@ pettanr.editor = ( function(){
                                                        ].join( ''));\r
                                                pettanr.util.loadImage( SRC, window[ _onLoad], window[ _onError]);\r
                                                window[ _onLoad] = window[ _onError] = undefined;\r
-                                               /*\r
-                                               ( function( onUpdate){\r
-                                                       pettanr.util.loadImage( SRC,\r
-                                                               function( _abspath, imgW, imgH){\r
-                                                                       onUpdate( SRC, imgW, imgH);\r
-                                                                       onUpdate = null;\r
-                                                               },\r
-                                                               function( _abspath){\r
-                                                                       onUpdate( SRC, data.width || 64, data.height || 64);\r
-                                                                       onUpdate = null;\r
-                                                               }\r
-                                                       );                                                                              \r
-                                               })( onUpdateFunction);*/ // close()で値が消えるので、クロージャに保持\r
                                        }\r
                                }\r
                                close();\r
@@ -861,7 +848,7 @@ pettanr.editor = ( function(){
                                ICON_ARRAY.shift().destroy();\r
                        }\r
                        onEnterInterval !== null && window.clearTimeout( onEnterInterval);\r
-                       onEnterInterval = null;// onUpdateFunction = \r
+                       onEnterInterval = _g_onUpdateFunction = null;\r
                }\r
                function onEnterShowImage(){\r
                        var l = ICON_ARRAY.length,\r
@@ -875,7 +862,6 @@ pettanr.editor = ( function(){
                }\r
                function clickOK(){\r
                        pettanr.overlay.hide();\r
-                       // onUpdateFunction && onUpdateFunction( textElement);\r
                        close();\r
                }\r
                function onMouseWheel( e, delta){\r
@@ -981,6 +967,8 @@ pettanr.editor = ( function(){
 \r
 /* ----------------------------------------\r
  * WINDOWS_CONTROL\r
+ *  - contloler\r
+ *  - mouseEventListener\r
  */    \r
        var WINDOWS_CONTROL = ( function(){\r
                /*\r
@@ -1217,7 +1205,7 @@ pettanr.editor = ( function(){
                        }\r
                };\r
                \r
-               function getCurrentWindow( _mouseX, _mouseY){\r
+               function getCurrentIndex( _mouseX, _mouseY){\r
                        if( currentWindow && currentWindow.busy() === true) return currentWindowIndex;\r
                        var l = WINDOW_ARRAY.length,\r
                                _currentWindow = null,\r
@@ -1261,13 +1249,19 @@ pettanr.editor = ( function(){
                                \r
                                delete WINDOWS_CONTROL.init;\r
                        },\r
+                       open: function(){\r
+                               WINDOWS_CONTROL.init && WINDOWS_CONTROL.init();\r
+                       },\r
+                       close: function(){\r
+                               \r
+                       },\r
                        onMouseMove: function( _mouseX, _mouseY){\r
-                               var _index = getCurrentWindow( _mouseX, _mouseY);\r
+                               var _index = getCurrentIndex( _mouseX, _mouseY);\r
                                if( _index === 0){\r
                                        currentWindow.onMouseMove( _mouseX, _mouseY);\r
                                        return true;\r
                                } else\r
-                               if( _index !== -1){ // 先頭のクリックでない場合\r
+                               if( _index > 0){ // 先頭のクリックでない場合\r
                                // Array を前に\r
                                        WINDOW_ARRAY.splice( currentWindowIndex, 1);\r
                                        WINDOW_ARRAY.unshift( currentWindow);\r
@@ -1279,14 +1273,14 @@ pettanr.editor = ( function(){
                                return false;\r
                        },\r
                        onMouseUp: function( _mouseX, _mouseY){\r
-                               if( getCurrentWindow( _mouseX, _mouseY) === 0){\r
+                               if( getCurrentIndex( _mouseX, _mouseY) === 0){\r
                                        currentWindow.onMouseUp( _mouseX, _mouseY);\r
                                        return true;\r
                                }\r
                                return false;\r
                        },\r
                        onMouseDown: function( _mouseX, _mouseY){\r
-                               if( getCurrentWindow( _mouseX, _mouseY) === 0){\r
+                               if( getCurrentIndex( _mouseX, _mouseY) === 0){\r
                                        currentWindow.onMouseDown( _mouseX, _mouseY);\r
                                        return true;\r
                                }\r
@@ -1300,7 +1294,7 @@ pettanr.editor = ( function(){
                                 * 画面外に出るwindowの移動\r
                                 */\r
                        },\r
-                       createWindow: function( scope, EXTENDS, bodyTempleteID, title, x, y, w, h, opt_visible, opt_closeButtonEnabled, opt_resizeButtonEnabled, opt_minWindowW, opt_minWindowH){\r
+                       createWindow: function( EXTENDS, bodyTempleteID, title, x, y, w, h, opt_visible, opt_closeButtonEnabled, opt_resizeButtonEnabled, opt_minWindowW, opt_minWindowH){\r
                                opt_visible = opt_visible !== false;\r
                                opt_closeButtonEnabled = opt_closeButtonEnabled === true;\r
                                opt_resizeButtonEnabled = opt_resizeButtonEnabled === true;\r
@@ -1308,7 +1302,9 @@ pettanr.editor = ( function(){
                                opt_minWindowH = opt_minWindowH || ( h < DEFAULT_MIN_WINDOW_HEIGHT) ? h : DEFAULT_MIN_WINDOW_HEIGHT;\r
                                \r
                                var _window = pettanr.util.extend(\r
-                                       WindowClass.apply( scope, [ bodyTempleteID, title, x, y, w, h, opt_visible, opt_closeButtonEnabled, opt_resizeButtonEnabled, opt_minWindowW, opt_minWindowH]),\r
+                                       new WindowClass(\r
+                                               bodyTempleteID, title, x, y, w, h, opt_visible, opt_closeButtonEnabled, opt_resizeButtonEnabled, opt_minWindowW, opt_minWindowH\r
+                                       ),\r
                                        EXTENDS\r
                                );\r
                                WINDOW_ARRAY.unshift( _window);\r
@@ -1321,6 +1317,7 @@ pettanr.editor = ( function(){
 \r
 /* ----------------------------------------\r
  * TOOL_BOX_WINDOW\r
+ * - window\r
  */\r
        var TOOL_BOX_WINDOW = ( function(){\r
                var addImageButton, addTextButton, editBgButton, switchGridButton, popupHelpButton, postButton,\r
@@ -1337,34 +1334,33 @@ pettanr.editor = ( function(){
 \r
                function addImage( e){\r
                        setTimeout( COMIC_ELEMENT_CONTROL.createImageElement, 0);\r
-                       e && e.preventDefault();\r
+                       e && e.preventDefault && e.preventDefault();\r
                        return false;\r
                }\r
                function addText( e){\r
                        setTimeout( COMIC_ELEMENT_CONTROL.createTextElement, 0);\r
-                       e && e.preventDefault();\r
+                       e && e.preventDefault && e.preventDefault();\r
                        return false;\r
                }\r
                function switchGrid( e){\r
                        setTimeout( GRID_CONTROL.update, 0);\r
-                       e && e.preventDefault();\r
+                       e && e.preventDefault && e.preventDefault();\r
                        return false;\r
                }\r
                function popupHelp( e){\r
                        instance.bodyBackOrForward( true);\r
                        setTimeout( HELP_DOCUMENTS_WINDOW.open, 0);\r
-                       e && e.preventDefault();\r
+                       e && e.preventDefault && e.preventDefault();\r
                        return false;\r
                }\r
                function editBG( e){\r
                        instance.bodyBackOrForward( true);\r
                        setTimeout( INFOMATION_WINDOW.open, 0); \r
-                       e && e.preventDefault();\r
+                       e && e.preventDefault && e.preventDefault();\r
                        return false;\r
                }\r
                \r
                return WINDOWS_CONTROL.createWindow(\r
-                       this,\r
                        {\r
                                onInit: function(){\r
                                        instance = this;\r
@@ -1389,19 +1385,19 @@ pettanr.editor = ( function(){
        \r
 /* ----------------------------------------\r
  * IMAGE_EXPROLER\r
+ *  - window\r
  */\r
        var IMAGE_EXPLORER_WINDOW = ( function(){\r
                var instance, finder;\r
                \r
                return WINDOWS_CONTROL.createWindow(\r
-                       this,\r
                        {\r
                                onInit: function(){\r
                                        instance = this;\r
                                        delete this.onInit;\r
                                },\r
                                onFirstOpen: function( _w, _h){\r
-                                       finder = pettanr.finder.createFinder( document.getElementById( 'image-exproler-container'), pettanr.file.TREE_TYPE_IS_IMAGE);\r
+                                       finder = pettanr.finder.createFinder( document.getElementById( 'image-exproler-container'), pettanr.driver.createPictureTree());\r
                                        delete this.onFirstOpen;\r
                                },\r
                                onOpen: function( _w, _h){\r
@@ -1418,6 +1414,7 @@ pettanr.editor = ( function(){
        \r
 /* ----------------------------------------\r
  * INFOMATION_WINDOW\r
+ *  - window\r
  */                    \r
        var INFOMATION_WINDOW = ( function(){\r
                var FADE_EFFECT_ENABLED = true, //pettanr.ua.isIE === false || pettanr.ua.ieVersion >= 8,\r
@@ -1432,7 +1429,6 @@ pettanr.editor = ( function(){
                        currentLock = false;\r
 \r
                return WINDOWS_CONTROL.createWindow(\r
-                       this,\r
                        {\r
                                onFirstOpen: function( _w, _h){\r
                                        backgroundInfomationElm = $( '#panel-background-information');\r
@@ -1501,14 +1497,14 @@ pettanr.editor = ( function(){
                                                currentElementType = _elementType;\r
                                        }\r
                                        if( currentElementType !== -1){\r
-                                               inputX.update( x);\r
-                                               inputY.update( y);\r
-                                               inputZ.update( z);\r
-                                               _elementType === 1 && inputA.update( a);\r
-                                               inputW.update( w);\r
-                                               inputH.update( h);\r
-                                               _elementType === 0 && inputPercentW.update( wPercent);\r
-                                               _elementType === 0 && inputPercentH.update( hPercent);                                  \r
+                                               inputX.value( x);\r
+                                               inputY.value( y);\r
+                                               inputZ.value( z);\r
+                                               _elementType === 1 && inputA.value( a);\r
+                                               inputW.value( w);\r
+                                               inputH.value( h);\r
+                                               _elementType === 0 && inputPercentW.value( wPercent);\r
+                                               _elementType === 0 && inputPercentH.value( hPercent);                                   \r
                                        } else {\r
                                                \r
                                        }\r
@@ -1524,6 +1520,7 @@ pettanr.editor = ( function(){
 \r
 /* ----------------------------------------\r
  * HELP_WINDOW\r
+ *  - window\r
  */\r
        var HELP_DOCUMENTS_WINDOW = ( function(){\r
                var visible = true,\r
@@ -1531,22 +1528,12 @@ pettanr.editor = ( function(){
                        jqNaviItems,\r
                        jqPages,\r
                        currentPageIndex = 0,\r
+                       numPage = 0,\r
                        HELP = MENU_BAR_CONTROL.HELP,\r
-                       onLoadFunction = HELP.createAjaxSelection( onFirstOpen),\r
+                       onLoadFunction = HELP.createAjaxSelection( onAjaxStart),\r
                        instance;\r
-               function jumpPage( _index){\r
-                       \r
-               }\r
-               function onSelectionClick( _pageIndex){\r
-                       currentPageIndex = _pageIndex || currentPageIndex;\r
-                       HELP_DOCUMENTS_WINDOW.open();\r
-                       onOpen();\r
-               }\r
-               function onOpen(){\r
-                       jqNaviItems.removeClass( 'current').eq( currentPageIndex).addClass( 'current');\r
-                       jqPages.hide().eq( currentPageIndex).show();\r
-               }\r
-               function onFirstOpen( _pageIndex){\r
+\r
+               function onAjaxStart( _pageIndex){\r
                        currentPageIndex = _pageIndex || currentPageIndex;\r
                        if( onHelpLoad !== null){\r
                                $.ajax({\r
@@ -1556,6 +1543,7 @@ pettanr.editor = ( function(){
                                });\r
                                onHelpLoad = null;\r
                        }\r
+                       onAjaxStart = new Function;\r
                }\r
                var onHelpLoad = function( _xml){\r
                        var jqXML = $( _xml),\r
@@ -1565,8 +1553,7 @@ pettanr.editor = ( function(){
                                elmPages = document.createElement( 'div'),\r
                                elmPageOrigin = document.createElement( 'div'),\r
                                elmTitleOrigin = document.createElement( 'h2'),\r
-                               elmPage,\r
-                               numPage = 0;\r
+                               elmPage;\r
                        elmNavi.className = 'sidenavi';\r
                        elmItemOrigin.className = 'sidenavi-item';\r
                        elmItemOrigin.href = '#';\r
@@ -1574,7 +1561,7 @@ pettanr.editor = ( function(){
                        elmPageOrigin.className = 'page-content main';\r
                        elmPageOrigin.appendChild( elmTitleOrigin);\r
                        \r
-                       // helpTitle && instance.title( helpTitle);\r
+                       //helpTitle && instance.title( helpTitle);\r
                        \r
                        jqXML.find( 'page').each( function(){\r
                                var xmlPage = $( this),\r
@@ -1585,6 +1572,7 @@ pettanr.editor = ( function(){
                                elmNavi.appendChild( elmItemOrigin.cloneNode( true));\r
                                \r
                                elmTitleOrigin.innerHTML = title;\r
+                               \r
                                elmPage = elmPageOrigin.cloneNode( true);\r
                                elmPage.innerHTML = content;\r
                                \r
@@ -1606,51 +1594,50 @@ pettanr.editor = ( function(){
                        jqAjaxContents.removeClass( 'loading').append( elmNavi, elmPages);\r
                        \r
                        jqNaviItems = jqAjaxContents.find( 'a.' +elmItemOrigin.className).click( onNaviClick);\r
-                       jqAjaxContents.find( '.' +elmPageOrigin.className).find( 'a').click( onInnerLinkClick);\r
                        jqPages = jqAjaxContents.find( '.page-content');\r
-                       setTimeout( onOpen, 0);\r
+                       jqPages.find( 'a').click( onInnerLinkClick);\r
+                       \r
+                       setTimeout( jumpPage, 0);\r
+               }\r
+               function onSelectionClick( _pageIndex){\r
+                       HELP_DOCUMENTS_WINDOW.open();\r
+                       jumpPage( _pageIndex);\r
+               }\r
+               function jumpPage( _index){\r
+                       if( typeof _index === 'number' && 0 <= _index && _index < numPage && currentPageIndex !== _index){\r
+                               currentPageIndex = _index;\r
+                       }\r
+                       jqNaviItems.removeClass( 'current').eq( currentPageIndex).addClass( 'current');\r
+                       jqPages.hide().eq( currentPageIndex).show();\r
                }\r
                function onNaviClick( e){\r
                        // this は <a>\r
-                       var children = this.parentNode.getElementsByTagName( 'a'),\r
-                               l = children.length;\r
-                       for( var i=0; i<l; ++i){\r
-                               if( children[ i] === this) break;\r
-                       }\r
+                       jumpPage( pettanr.util.getChildIndex( this.parentNode, this));\r
                        e.stopPropagation();\r
-                       if( i === l) return false;\r
-                       jqNaviItems.removeClass( 'current').eq( i).addClass( 'current');\r
-                       jqPages.hide().eq( i).show();\r
                        return false;\r
                }\r
                function onInnerLinkClick( e){\r
-                       var jump = this.href.split( '#jump'),\r
-                               n = jump[1],\r
-                               i = ( n && '' +parseFloat( n) === n) ? parseFloat( n) : -1;\r
+                       var jump = ( this.href || '').split( '#jump'),\r
+                               n = jump[1];\r
+                       if( !n) return;\r
+                       jumpPage( '' + parseFloat( n) === n ? parseFloat( n) : -1);\r
                        e.stopPropagation();\r
-                       if( i === -1) return false;\r
-                       jqNaviItems.removeClass( 'current').eq( i).addClass( 'current');\r
-                       jqPages.hide().eq( i).show();\r
-                       currentPageIndex = i;\r
                        return false;                           \r
                }\r
                return WINDOWS_CONTROL.createWindow(\r
-                       this,\r
                        {\r
                                onInit: function(){\r
                                        instance = this;\r
-                                       jqAjaxContents = this.$.find( '.window-body').addClass( 'loading').css( { height: this.bodyHeight()});\r
+                                       jqAjaxContents = this.$.find( '.window-body').addClass( 'loading');\r
                                        delete this.onInit;\r
                                },\r
-                               onFirstOpen: function(){\r
-                                       onFirstOpen();\r
-                               },\r
-                               onResize: function( w, h){\r
-                                       jqAjaxContents && jqAjaxContents.css( { height: h});\r
+                               onFirstOpen: function( _w, _h){\r
+                                       jqAjaxContents.css( { height: _h});\r
+                                       onAjaxStart();\r
+                                       delete this.onFirstOpen;\r
                                },\r
-                               setAjaxContent: function( html){\r
-                                       \r
-                                       delete this.onLoadAjaxContent;\r
+                               onResize: function( _w, _h){\r
+                                       jqAjaxContents && jqAjaxContents.css( { height: _h});\r
                                }\r
                        },\r
                        null, 'Help', 0, 215, 400, 350, false, true, true, 300, 300\r
@@ -1659,9 +1646,12 @@ pettanr.editor = ( function(){
 \r
 /* ----------------------------------------\r
  * GRID_CONTROL\r
+ *  - control\r
+ *  - panelResizeListener\r
  */\r
        var GRID_CONTROL = ( function(){\r
                var ELM_GRID = document.getElementById( 'grid'),\r
+                       BG_URL = "url('images/grid.gif')",\r
                        jqGrid,\r
                        visible = false;\r
 \r
@@ -1670,6 +1660,12 @@ pettanr.editor = ( function(){
                                jqGrid = $( ELM_GRID);\r
                                delete GRID_CONTROL.init;\r
                        },\r
+                       open: function(){\r
+                               GRID_CONTROL.init && GRID_CONTROL.init();\r
+                       },\r
+                       close: function(){\r
+                               \r
+                       },\r
                        onPanelResize: function( _panelX, _panelY){\r
                                ELM_GRID.style.backgroundPosition = [ _panelX % 10, 'px ', _panelY % 10, 'px'].join( '');\r
                                ELM_GRID.style.height = windowH +'px';\r
@@ -1685,17 +1681,19 @@ pettanr.editor = ( function(){
                                \r
                                visible = !visible;\r
                                \r
-                               if( visible === true && !ELM_GRID.style.backgroundImage){\r
-                                       ELM_GRID.style.backgroundImage = "url('images/grid.gif')";\r
+                               if( visible === true && BG_URL !== null){\r
+                                       ELM_GRID.style.backgroundImage = BG_URL;\r
+                                       BG_URL = null;\r
                                }\r
                                return visible;                         \r
                        }\r
                }\r
        })();\r
                \r
-       /*\r
-        *      WHITE_GLASS_CONTROL\r
-        */     \r
+/* ----------------------------------------\r
+ * WHITE_GLASS_CONTROL\r
+ *  - panelResizeListener\r
+ */\r
        var WHITE_GLASS_CONTROL = ( function(){\r
                var styleTop = document.getElementById( 'whiteGlass-top').style,\r
                        styleLeft = document.getElementById( 'whiteGlass-left').style,\r
@@ -1731,8 +1729,11 @@ pettanr.editor = ( function(){
        })();\r
 \r
 \r
-/*\r
+/* ----------------------------------------\r
  * PANEL_CONTROL\r
+ *  - controler\r
+ *  - mouseEventListener\r
+ * \r
  * panel-border の表示と onPanelResize の通知.\r
  * panel drag.\r
  * \r
@@ -1748,6 +1749,8 @@ pettanr.editor = ( function(){
                        isDragging = false,\r
                        isDraggable = false;\r
                \r
+               pettanr.key.addKeyUpdateEvent( pettanr.view.EDITOR, 32, false, false, onSpaceUpdate);\r
+               \r
                function onSpaceUpdate(e){\r
                        if( e.type === 'keyup'){\r
                                currentListener === null && updateMouseCursor( '');\r
@@ -1759,18 +1762,17 @@ pettanr.editor = ( function(){
                }\r
                \r
                return {\r
-                       init: function( _panelW, _panelH, _borderSize){\r
+                       open: function( _panelW, _panelH, _borderSize){\r
                                panelW = _panelW || DEFAULT_PANEL_WIDTH;\r
                                panelH = _panelH || DEFAULT_PANEL_HEIGHT;\r
-                               panelX = Math.floor( ( windowW -panelW) /2);\r
-                               panelY = Math.floor( ( windowH -panelH) /2);\r
+                               //panelX = Math.floor( ( windowW -panelW) /2);\r
+                               //panelY = Math.floor( ( windowH -panelH) /2);\r
                                borderSize = _borderSize !== undefined ? _borderSize : borderSize;\r
                                \r
-                               pettanr.key.addKeyUpdateEvent( pettanr.view.EDITOR, 32, false, false, onSpaceUpdate);\r
-                               \r
-                               setTimeout( PANEL_CONTROL.resize, 0);\r
+                               //setTimeout( PANEL_CONTROL.resize, 0);\r
+                       },\r
+                       close: function(){\r
                                \r
-                               delete PANEL_CONTROL.init;\r
                        },\r
                        x: function(){\r
                                return panelX;\r
@@ -1828,9 +1830,9 @@ pettanr.editor = ( function(){
                }\r
        })();\r
 \r
-/*\r
- * --------------------------------------------------------------------------------------------\r
- * panel resizer\r
+/* --------------------------------------------------------------------------------------------\r
+ * PanelResizerClass\r
+ *  - mouseEventListener\r
  */\r
        var PanelResizerClass = function( ID, isTop){\r
                var ELM = document.getElementById( ID),\r
@@ -1852,9 +1854,6 @@ pettanr.editor = ( function(){
                }\r
                        \r
                return {\r
-                       busy: function(){\r
-                               return isDragging;\r
-                       },\r
                        onMouseDown: function( _mouseX, _mouseY){\r
                                var _x = _mouseX -panelX,\r
                                        _y = _mouseY -panelY;\r
@@ -1892,7 +1891,7 @@ pettanr.editor = ( function(){
                        },\r
                        onMouseUp: function( _mouseX, _mouseY){\r
                                if( isDragging !== true) return;\r
-                               ( startY !== panelY || startH !== panelH) && HISTORY.saveState( restoreState, [ NaN, startY, NaN, startH], [ NaN, panelY, NaN, panelH]);\r
+                               ( startY !== panelY || startH !== panelH) && HISTORY_CONTROL.saveState( restoreState, [ NaN, startY, NaN, startH], [ NaN, panelY, NaN, panelH]);\r
                                isDragging = false;\r
                                MOUSE_CURSOR( '');\r
                        },\r
@@ -1917,14 +1916,16 @@ pettanr.editor = ( function(){
                \r
        PanelResizerClass = undefined;\r
 \r
-\r
+/* --------------------------------------------------------------------------------------------\r
+ * CONSOLE_CONTROLER\r
+ */\r
        var CONSOLE_CONTROLER = ( function(){\r
                var LAYER_BACK_BUTTON = MENU_BAR_CONTROL.EDIT.createSelection( 'layer back', 'ctrl + B', layerBack, false, true, false),\r
                        LAYER_FORWARD_BUTTON = MENU_BAR_CONTROL.EDIT.createSelection( 'layer forward', 'ctrl + F', layerForward, false, false, false),\r
                        DELETE_BUTTON = MENU_BAR_CONTROL.EDIT.createSelection( 'delete', 'ctrl + D', del, false, true, true),\r
                        EDIT_BUTTON = MENU_BAR_CONTROL.EDIT.createSelection( 'Edit Text', 'ctrl + E', edit, false, true, false),\r
                        CHANGE_BUTTON = MENU_BAR_CONTROL.EDIT.createSelection( 'change', 'ctrl + U', change, false, false, true),\r
-                       SAVE = HISTORY.saveState,\r
+                       SAVE = HISTORY_CONTROL.saveState,\r
                        jqStage,\r
                        jqConsoleParent,\r
                        jqConsoleWrapper,\r
@@ -2080,7 +2081,10 @@ pettanr.editor = ( function(){
                }\r
        })();\r
 \r
-\r
+/* --------------------------------------------------------------------------------------------\r
+ * TAIL_OPERATOR\r
+ *  - comicElementOperator\r
+ */\r
        var TAIL_OPERATOR = ( function(){\r
                var     MOUSE_CURSOR = updateMouseCursor,\r
                        ELM_MOVER = document.getElementById( 'balloon-tail-mover'),\r
@@ -2166,7 +2170,11 @@ pettanr.editor = ( function(){
                        }\r
                }\r
        })();\r
-       \r
+\r
+/* --------------------------------------------------------------------------------------------\r
+ * RESIZE_OPERATOR\r
+ *  - comicElementOperator\r
+ */\r
        var RESIZE_OPERATOR = ( function(){\r
                var     MOUSE_CURSOR = updateMouseCursor,\r
                        GRID_ENABLED = GRID_CONTROL.enabled;\r
@@ -2461,7 +2469,11 @@ pettanr.editor = ( function(){
                        onCtrlUpdate: update\r
                }\r
        })();\r
-       \r
+\r
+/* --------------------------------------------------------------------------------------------\r
+ * POSITION_OPERATOR\r
+ *  - comicElementOperator\r
+ */\r
        var POSITION_OPERATOR = ( function(){\r
                var     MOUSE_CURSOR = updateMouseCursor,\r
                        GRID_ENABLED = GRID_CONTROL.enabled;\r
@@ -2518,13 +2530,12 @@ pettanr.editor = ( function(){
        })();\r
 \r
 \r
-/*\r
- * --------------------------------------------------------------------------------------------\r
+/* --------------------------------------------------------------------------------------------\r
  * COMIC_ELEMENT_OPERATION_MANAGER\r
  */\r
        var COMIC_ELEMENT_OPERATION_MANAGER = ( function(){\r
                var     MOUSE_CURSOR = updateMouseCursor,\r
-                       SAVE = HISTORY.saveState,\r
+                       SAVE = HISTORY_CONTROL.saveState,\r
                        GRID_ENABLED = GRID_CONTROL.enabled,\r
                        HIT_AREA = MOUSE_HIT_AREA,\r
                        currentIsTextElement = false,\r
@@ -2561,15 +2572,34 @@ pettanr.editor = ( function(){
                                        );\r
                                }\r
                        }\r
-                       function hide(){\r
+\r
+                       pettanr.key.addKeyUpdateEvent( pettanr.view.EDITOR, 16, undefined, undefined, function( e){\r
+                               currentOperator !== null && currentOperator.onShiftUpdate && currentOperator.onShiftUpdate();\r
+                       });\r
+                       pettanr.key.addKeyUpdateEvent( pettanr.view.EDITOR, 17, undefined, undefined, function( e){\r
+                               currentOperator !== null && currentOperator.onCtrlUpdate && currentOperator.onCtrlUpdate();\r
+                       });\r
+                       pettanr.key.addKeyDownEvent( pettanr.view.EDITOR, 27, false, false, function( e){\r
+                               currentOperator !== null && currentOperator.onCancel && currentOperator.onCancel();\r
+                               currentOperator = null;\r
+                       });\r
+               return {\r
+                       open: function(){\r
+                               this.hide();\r
+                       },\r
+                       close: function(){\r
+                               \r
+                       },\r
+                       hide: function(){\r
                                currentElement !== null && RESIZE_OPERATOR.hide();\r
                                currentElement = null;\r
                                MOUSE_CURSOR( '');\r
                                TAIL_OPERATOR.hide();\r
                                CONSOLE_CONTROLER.hide();\r
                                INFOMATION_WINDOW.update( null);\r
-                       }\r
-                       function restoreState( arg){\r
+                       },\r
+                       resize: resize,\r
+                       restoreState: function( arg){\r
                                if( arg && arg.length !== 8) return;\r
                                var _currentElement = arg[ 0],\r
                                        _x = arg[ 1], _y = arg[ 2], _w = arg[ 3], _h = arg[ 4],\r
@@ -2582,8 +2612,8 @@ pettanr.editor = ( function(){
                                currentOperator !== null && currentOperator.onCancel && currentOperator.onCancel();\r
                                currentOperator = null;\r
                                currentElement === _currentElement ? resize( _x, _y, _w, _h, _a) : show( _currentElement);\r
-                       }\r
-                       function saveComicElementStatus( startX, startY, startW, startH, startA, startFilpV, startFilpH){\r
+                       },\r
+                       saveStatus: function( startX, startY, startW, startH, startA, startFilpV, startFilpH){\r
                                startX = startX !== undefined ? startX : currentx;\r
                                startY = startY !== undefined ? startY : currenty;\r
                                startW = startW !== undefined ? startW : currentw;\r
@@ -2591,30 +2621,11 @@ pettanr.editor = ( function(){
                                startA = startA !== undefined ? startA : angle;\r
                                startFilpV = startFilpV !== undefined ? startFilpV : flipV;\r
                                startFilpH = startFilpH !== undefined ? startFilpH : flipH;\r
-                               currentElement && SAVE( restoreState,\r
+                               currentElement && SAVE( COMIC_ELEMENT_OPERATION_MANAGER.restoreState,\r
                                        [ currentElement, startX, startY, startW, startH, startA, startFilpV, startFilpH],\r
                                        [ currentElement, currentx, currenty, currentw, currenth, angle, flipV, flipH]\r
                                );\r
-                       }\r
-                       pettanr.key.addKeyUpdateEvent( pettanr.view.EDITOR, 16, undefined, undefined, function( e){\r
-                               currentOperator !== null && currentOperator.onShiftUpdate && currentOperator.onShiftUpdate();\r
-                       });\r
-                       pettanr.key.addKeyUpdateEvent( pettanr.view.EDITOR, 17, undefined, undefined, function(){\r
-                               currentOperator !== null && currentOperator.onCtrlUpdate && currentOperator.onCtrlUpdate();\r
-                       });\r
-                       pettanr.key.addKeyDownEvent( pettanr.view.EDITOR, 27, false, false, function(){\r
-                               currentOperator !== null && currentOperator.onCancel && currentOperator.onCancel();\r
-                               currentOperator = null;\r
-                       });\r
-               return {\r
-                       init: function(){\r
-                               hide();\r
-                               delete COMIC_ELEMENT_OPERATION_MANAGER.init;\r
                        },\r
-                       hide: hide,\r
-                       resize: resize,\r
-                       restoreState: restoreState,\r
-                       saveStatus: saveComicElementStatus,\r
                        busy: function(){\r
                                return currentOperator !== null;\r
                        },\r
@@ -2699,8 +2710,8 @@ pettanr.editor = ( function(){
                        }\r
                }\r
        };\r
-/*\r
- * --------------------------------------------------------------------------------------------\r
+\r
+/* --------------------------------------------------------------------------------------------\r
  * ImageElementClass\r
  */\r
        var     jqImageElementOrigin;\r
@@ -2709,7 +2720,7 @@ pettanr.editor = ( function(){
                \r
                var JQ_WRAPPER = jqImageElementOrigin.clone( true),\r
                        OPERATOR = COMIC_ELEMENT_OPERATION_MANAGER,\r
-                       SAVE = HISTORY.saveState,\r
+                       SAVE = HISTORY_CONTROL.saveState,\r
                        HIT_AREA = MOUSE_HIT_AREA,\r
                        reversibleImage = null,\r
                        actualW = 0, actualH = 0,\r
@@ -2835,12 +2846,9 @@ pettanr.editor = ( function(){
  */\r
 \r
 \r
-/*\r
- * --------------------------------------------------------------------------------------------\r
+/* --------------------------------------------------------------------------------------------\r
  * TextElementClass\r
  * \r
- * ELM はpettanr.domで書き出したものを突っ込むcreateの場合\r
- * \r
  * type\r
  * 0.none\r
  * 1.speach balloon\r
@@ -2863,7 +2871,7 @@ pettanr.editor = ( function(){
                        TEXT_ELM = JQ_WRAPPER.find( 'td,.speach-inner').eq( 0),\r
                        OPERATOR = COMIC_ELEMENT_OPERATION_MANAGER,\r
                        HIT_AREA = MOUSE_HIT_AREA,\r
-                       SAVE = HISTORY.saveState,\r
+                       SAVE = HISTORY_CONTROL.saveState,\r
                        instance;\r
                        \r
                JQ_WRAPPER.find( 'img').eq( 0).replaceWith( XBROWSER_BALLOON.elm);\r
@@ -2990,21 +2998,22 @@ pettanr.editor = ( function(){
                                        ].join( '');\r
                                },\r
                                getAsXML: function(){}\r
-                               \r
                        }\r
                );\r
        }\r
 \r
-\r
+/* --------------------------------------------------------------------------------------------\r
+ * COMIC_ELEMENT_CONTROL\r
+ *  - mouseEventListener\r
+ */\r
        var COMIC_ELEMENT_CONTROL = ( function(){\r
-               var     SAVE = HISTORY.saveState,\r
+               var     SAVE = HISTORY_CONTROL.saveState,\r
                        ELM_CONTAINER = document.getElementById( 'comic-element-container'),\r
                        currentElement = null,\r
                        currentLockTest = false,\r
                        currentLock = false,\r
                        panelX, panelY, panelW, panelH,\r
                        startX, startY;\r
-       \r
        /*\r
         * append, remove, replace\r
         * \r
@@ -3127,6 +3136,14 @@ pettanr.editor = ( function(){
                                \r
                                delete COMIC_ELEMENT_CONTROL.init;\r
                        },\r
+                       open: function(){\r
+                               COMIC_ELEMENT_CONTROL.init && COMIC_ELEMENT_CONTROL.init();\r
+                       },\r
+                       close: function(){\r
+                               while( COMIC_ELEMENT_ARRAY.length > 0){\r
+                                       COMIC_ELEMENT_ARRAY.shift().destroy();\r
+                               }\r
+                       },\r
                        remove: removeComicElement,\r
                        restore: restoreComicElement,\r
                        replace: replaceComicElement,\r
@@ -3372,37 +3389,21 @@ pettanr.editor = ( function(){
        return {\r
                init: function( _option){\r
                        option = _option;\r
+                       \r
                },\r
                firstOpen: function(){\r
-                       var jqWindow = pettanr.jqWindow();\r
-                       windowW = jqWindow.width();\r
-                       windowH = jqWindow.height();\r
-                       \r
-                       jqEditor = $( '#editor');\r
-\r
                /*\r
                 * MOUSE_LISTENER_ARRAY は、表示順に格納.手前の要素が最初\r
                 * MENU_BAR_CONTROL,\r
                 * WINDOW_CONTROL,\r
                 * COMIC_ELEMENT_CONTROL,\r
                 * PANEL_CONTROL\r
-                * .busy() === true なら、そのままonMouseMove()にイベントを流す.これはArrayの後ろから、奥の表示要素から\r
+                * .busy() === true なら、そのままonMouseMove()にイベントを流す.\r
                 * onMouseMove()に流してみて、false が帰れば、次にリスナーにも流す.\r
                 */\r
                        MOUSE_LISTENER_ARRAY.push( MENU_BAR_CONTROL, WINDOWS_CONTROL, PANEL_RESIZER_TOP, PANEL_RESIZER_BOTTOM, COMIC_ELEMENT_CONTROL, PANEL_CONTROL);\r
-\r
-                       HISTORY.init();\r
-                       \r
-                       WINDOWS_CONTROL.init();\r
                        \r
-                       GRID_CONTROL.init();\r
-                       PANEL_CONTROL.init();\r
                        CONSOLE_CONTROLER.init();\r
-                       COMIC_ELEMENT_OPERATION_MANAGER.init();\r
-                       COMIC_ELEMENT_CONTROL.init();\r
-                       \r
-                       // last\r
-                       MENU_BAR_CONTROL.init();\r
                        \r
                        OUTPUT_CONSOLE.init();\r
                        TEXT_EDITOR_CONTROL.init();\r
@@ -3427,17 +3428,41 @@ pettanr.editor = ( function(){
                        \r
                        delete pettanr.editor.firstOpen;\r
                },\r
-               onOpen: function( _option){\r
+               onOpen: function( _file){\r
+                       if( pettanr.file.isFileInstance( _file) === true){\r
+                               // pettanr.file.isPettanFileInstance( _file) === true\r
+                               // \r
+                       }\r
+                       jqEditor = jqEditor || $( '#editor');\r
+                       \r
+                       HISTORY_CONTROL.open();\r
+                       \r
+                       WINDOWS_CONTROL.open();\r
+                       \r
+                       GRID_CONTROL.open();\r
+                       PANEL_CONTROL.open();\r
+                       \r
+                       COMIC_ELEMENT_OPERATION_MANAGER.open();\r
+                       COMIC_ELEMENT_CONTROL.open();\r
+                       \r
+                       // last\r
+                       MENU_BAR_CONTROL.open();\r
+                       \r
                        pettanr.editor.firstOpen !== undefined && pettanr.editor.firstOpen();\r
-\r
-                       // HISTORY.onOpen();\r
-                       // WINDOWS_CONTROL.onOpen();\r
-                       // COMIC_ELEMENT_CONTROL.onOpen();\r
-                       // MENU_BAR_CONTROL.onOpen();\r
-                       // TEXT_EDITOR_CONTROL.onOpen();\r
-                       // IMAGE_GROUP_EXPROLER.onOpen();\r
                },\r
                onClose: function(){\r
+                       HISTORY_CONTROL.close();\r
+                       \r
+                       WINDOWS_CONTROL.close();\r
+                       \r
+                       GRID_CONTROL.close();\r
+                       PANEL_CONTROL.close();\r
+                       \r
+                       COMIC_ELEMENT_OPERATION_MANAGER.close();\r
+                       COMIC_ELEMENT_CONTROL.close();\r
+                       \r
+                       // last\r
+                       MENU_BAR_CONTROL.open();\r
                },\r
                onWindowResize: function( _windowW, _windowH){\r
                        windowW = _windowW;\r
@@ -3457,3 +3482,767 @@ pettanr.editor = ( function(){
                MIN_HEIGHT:     320\r
        }\r
 })();\r
+\r
+// create hidden iframe\r
+// write script\r
+// setInterval\r
+pettanr.proxy = ( function(){\r
+       \r
+       function FormProxy( formJsUrl, callback){\r
+               var timer = null,\r
+                       iWin, idoc;\r
+\r
+               pettanr.util.createIframe( 'id00000', onCreateIframe);\r
+               \r
+               function onCreateIframe( _iframe){\r
+                       iWin = _iframe.contentWindow;\r
+                       idoc = _iframe.contentWindow.document;\r
+\r
+                       idoc.open();\r
+                       idoc.write( '<body>');\r
+                       idoc.writeln( '<script type="text\/javascript" src="' + pettanr.CONST.JQUERY_URL+ '"><\/script>');\r
+                       idoc.close();\r
+\r
+                       timer = window.setInterval( detect, 250 );\r
+               }\r
+               function detect(){\r
+                       if( iWin.jQuery){\r
+                               window.clearInterval( timer );\r
+                               //callback( idoc);\r
+                               iWin.jQuery( iWin).ready( onJQueryReady );\r
+                       }\r
+               }\r
+               function onJQueryReady(){\r
+                       callback( idoc);\r
+               }\r
+       }\r
+       \r
+       return {\r
+               createFormProxy: function( _formJsUrl, _callback){\r
+                       new FormProxy( _formJsUrl, _callback);\r
+               }\r
+       }\r
+       \r
+})();\r
+\r
+\r
+pettanr.comicConsole = ( function(){\r
+       var COMIC_CONSOLE = ( function(){\r
+               var jqWrap,\r
+                       ID = 'comicConsole',\r
+                       elmWrap = document.getElementById( 'comic-console-wrapper' ),\r
+                       elmHeader = document.getElementById( 'comic-console-header' ),\r
+                       elmProgress = document.getElementById( 'comic-console-progress' ),\r
+                       inputTitle, inputW, inputH, inputVisible, inputEditable,\r
+                       elmUploader = null,\r
+                       elmScript = null\r
+                       elmIframe = null,\r
+                       elmForm = null,\r
+                       timer = null,\r
+                       isUploading = false;\r
+               //pettanr.key.addKeyDownEvent( ID, 69, false, false, clickOK);\r
+               \r
+               function clickOK(){\r
+                       if( !elmForm || !elmIframe || isUploading === true ) return false;\r
+                       // validate\r
+                       isUploading = true;\r
+                       elmProgress.innerHTML = '■';\r
+                       copyAndSubmit();\r
+               }\r
+\r
+                       function copyAndSubmit(){\r
+                               var _inputList = elmForm.getElementsByTagName( 'input' ),\r
+                                       _input, _name;\r
+                               for( var i=0, l= _inputList.length; i<l; ++i){\r
+                                       _input = _inputList[ i ];\r
+                                       _name = _input.name;\r
+                                       if( _name === 'comic[title]'){\r
+                                               _input.value = inputTitle.value();\r
+                                       } else\r
+                                       if( _name === 'comic[width]'){\r
+                                               _input.value = inputW.value();\r
+                                       } else\r
+                                       if( _name === 'comic[height]'){\r
+                                               _input.value = inputH.value();\r
+                                       }\r
+                               }\r
+                               var _selectList = elmForm.getElementsByTagName( 'select' ),\r
+                                       _select, _name, _optionList;\r
+                               for( i=0, l= _selectList.length; i<l; ++i){\r
+                                       _select = _selectList[ i ];\r
+                                       _name = _select.name;\r
+                                       _optionList = _select.getElementsByTagName( 'option' )\r
+                                       if( _name === 'comic[visible]'){\r
+                                               _select.selectedIndex = 1;\r
+                                       } else\r
+                                       if( _name === 'comic[editable]'){\r
+                                               _select.selectedIndex = 0;\r
+                                       }\r
+                               }\r
+                               try {\r
+                                       elmForm.submit();\r
+                               } catch( e){\r
+                                       elmProgress.innerHTML = 'submit() err..';\r
+                                       isUploading = false;\r
+                                       setTimeout( clickCancel , 3000);\r
+                                       return;\r
+                               }\r
+                               if( pettanr.ua.isIE){\r
+                                       elmIframe.onreadystatechange = detectIframe;\r
+                               } else {\r
+                                       elmIframe.onload = onIframeUpdate;\r
+                               }\r
+                               elmProgress.innerHTML = 'uploading..';\r
+                       }\r
+               /*\r
+                * ie の 場合、readyState をチェック.\r
+                */\r
+                               function detectIframe(){\r
+                           if ( elmIframe.readyState === 'complete') {\r
+                               elmIframe.onreadystatechange = new Function();\r
+                               elmIframe.onreadystatechange = null;\r
+                               onIframeUpdate();\r
+                           }\r
+                               }\r
+                                       function onIframeUpdate(){\r
+                                               elmIframe.onload = null;\r
+                                               ( elmIframe.contentWindow || elmIframe.contentDocument.parentWindow ).close();\r
+                                               elmIframe = null;\r
+                                               elmProgress.innerHTML = 'success!';\r
+                                               setTimeout( clickCancel , 1000);\r
+                                               isUploading = false;\r
+                                       }\r
+                               \r
+               function clickCancel(){\r
+                       if( isUploading === true) return false;\r
+                       pettanr.overlay.hide();\r
+                       COMIC_CONSOLE.onClose();\r
+               }\r
+               function detectForm(){\r
+                       elmForm = elmUploader.getElementsByTagName( 'form' )[ 0 ];\r
+                       if( elmForm){\r
+                               window.clearInterval( timer);\r
+                               timer = null;\r
+                               pettanr.util.createIframe( 'targetFrameCreateComic', onCreateIframe );\r
+                               elmProgress.innerHTML = 'create iframe';\r
+                       }\r
+               }\r
+               function onCreateIframe( _iframe ){\r
+                       elmUploader.appendChild( _iframe );\r
+                       elmIframe = _iframe;\r
+                       elmForm.target = _iframe.name;\r
+                       elmProgress.innerHTML = '';\r
+               }\r
+               \r
+               return {\r
+                       init: function(){\r
+                               this.jqWrap = jqWrap = $( '#comic-console-wrapper').hide();\r
+                               $( '#comic-console-post-button').click( clickOK );\r
+                               $( '#comic-console-cancel-button').click( clickCancel );\r
+                               \r
+                               var CREATER = pettanr.form.createInputText;//pettanr.key.createEditableText;\r
+                               inputTitle    = CREATER( document.getElementById( 'comic-console-title'), null, ID);\r
+                               inputW        = CREATER( document.getElementById( 'comic-console-width'), null, ID);\r
+                               inputH        = CREATER( document.getElementById( 'comic-console-height'), null, ID);\r
+                               inputVisible  = CREATER( document.getElementById( 'comic-console-visible'), null, ID);\r
+                               inputEditable = CREATER( document.getElementById( 'comic-console-editable'), null, ID);\r
+                               \r
+                               delete COMIC_CONSOLE.init;\r
+                       },\r
+                       jqWrap: null,\r
+                       show: function( w, h){\r
+                               jqWrap.show();\r
+\r
+                               pettanr.overlay.show( COMIC_CONSOLE );\r
+                               \r
+                               inputTitle.start();\r
+                               \r
+                               elmUploader = document.createElement( 'div');\r
+                               elmUploader.id = "newcomic";\r
+                               elmUploader.style.cssText = 'height:1px;line-height:1px;visibility:hidden;overflow:hidden;';\r
+                               elmWrap.appendChild( elmUploader);\r
+                               \r
+                               var elmScript = document.createElement( 'script');\r
+                               elmScript.type = 'text\/javascript';\r
+                               elmScript.src = pettanr.CONST.CREATE_COMIC_JS;\r
+                               elmWrap.appendChild( elmScript);\r
+                               \r
+                               elmProgress.innerHTML = 'loading form.';\r
+                               \r
+                               if( timer === null){\r
+                                       timer = window.setInterval( detectForm, 250);\r
+                               }\r
+                               \r
+                               COMIC_CONSOLE.onWindowResize( w, h);\r
+                       },\r
+                       onWindowResize: function( _windowW, _windowH){\r
+                               jqWrap.css(\r
+                                       {\r
+                                               left:   Math.floor( ( _windowW -jqWrap.width()) /2),\r
+                                               top:    Math.floor( ( _windowH -jqWrap.height()) /2)\r
+                                       }\r
+                               );\r
+                       },\r
+                       onClose: function(){\r
+                               elmForm !== null && $( elmUploader ).remove();\r
+                               elmForm  = null;\r
+                               isUploading = false;\r
+                               \r
+                               if( elmScript !== null ){\r
+                                       document.body.removeChild( elmScript);\r
+                                       elmScript = null;                                       \r
+                               }\r
+                               if( timer !== null){\r
+                                       window.clearInterval( timer);\r
+                                       timer = null;\r
+                               }\r
+                               \r
+                               jqWrap.hide();\r
+                       },\r
+                       ID: ID\r
+               }\r
+       })();\r
+       \r
+       return {\r
+               init: function(){\r
+                       COMIC_CONSOLE.init();\r
+                       delete pettanr.comicConsole.init;\r
+               },\r
+               onOpen: function( _file){\r
+                       if( pettanr.driver.isPettanrFileInstance( _file ) === true && _file.getType() === pettanr.driver.FILE_TYPE.COMIC){\r
+                               // _data = _file.read();\r
+                       }\r
+               },\r
+               onClose: function(){\r
+                       \r
+               },\r
+               onWindowResize: function( _windowW, _windowH){\r
+               },\r
+               _quickAccessShow: function(){\r
+                       jqWindow = pettanr.jqWindow();\r
+                       var w = jqWindow.width(),\r
+                               h = jqWindow.height();\r
+                       COMIC_CONSOLE.show( w, h);\r
+               }\r
+       }\r
+})();\r
+\r
+pettanr.uploadConsole = ( function(){\r
+       var UPLOAD_CONSOLE = ( function(){\r
+               var jqWrap,\r
+                       ID = 'uploadConsole',\r
+                       TARGET_FRAME_NAME = 'targetFrame',\r
+                       elmContainer = document.getElementById( 'uploader'),\r
+                       elmProgress = document.getElementById( 'upload-console-progress'),\r
+                       timer = null,\r
+                       elmScript = null,\r
+                       elmForm = null,\r
+                       elmFile = null,\r
+                       elmIframe = null,\r
+                       isUploading = false;\r
+               /*\r
+                * upload ボタンが押されたらまず iframe をつくる.
+                */\r
+               function clickOK(){\r
+                       if( !elmForm || !elmIframe || isUploading === true ) return false;\r
+                       if( elmFile.value.length === 0) return false;\r
+                       elmProgress.innerHTML = 'uploading.';\r
+                       isUploading = true;\r
+                       submit();\r
+                       return false;\r
+               }\r
+               /*\r
+                * form の target に iframe を指定したのち submit();
+                */\r
+                       function submit(){\r
+                               try {\r
+                                       elmForm.submit();\r
+                               } catch( e){\r
+                                       elmProgress.innerHTML = 'submit() err..';\r
+                                       isUploading = false;\r
+                                       setTimeout( clickCancel , 3000);\r
+                                       return;\r
+                               }\r
+                               \r
+                               if( pettanr.ua.isIE){\r
+                                       elmIframe.onreadystatechange = detectIframe;\r
+                               } else {\r
+                                       elmIframe.onload = onLoad;\r
+                               }\r
+                               elmProgress.innerHTML = 'uploading..';\r
+                       }\r
+               /*\r
+                * ie の 場合、readyState をチェック.
+                */\r
+                               function detectIframe(){\r
+                           if ( elmIframe.readyState === 'complete') {\r
+                               elmIframe.onreadystatechange = new Function();\r
+                               elmIframe.onreadystatechange = null;\r
+                               onLoad();\r
+                           }\r
+                               }\r
+                                       function onLoad(){\r
+                                               elmIframe.onload = null;\r
+                                               ( elmIframe.contentWindow || elmIframe.contentDocument.parentWindow ).close();\r
+                                               elmProgress.innerHTML = 'success!';\r
+                                               setTimeout( clickCancel , 1000);\r
+                                               isUploading = false;\r
+                                       }\r
+               \r
+               function detectForm(){\r
+                       elmForm = elmContainer.getElementsByTagName( 'form' )[ 0 ];\r
+                       if( elmForm){\r
+                               var _inputList = elmForm.getElementsByTagName( 'input' ),\r
+                                       _input;\r
+                               for( var i=0, l= _inputList.length; i<l; ++i){\r
+                                       _input = _inputList[ i ];\r
+                                       if( _input.type === 'file'){\r
+                                               elmFile = _input;\r
+                                       }\r
+                                       if( _input.type === 'submit'){\r
+                                               _input.style.display = 'none';\r
+                                       }\r
+                               }\r
+                               window.clearInterval( timer);\r
+                               timer = null;\r
+                               pettanr.util.createIframe( TARGET_FRAME_NAME, onCreateIframe);\r
+                               elmProgress.innerHTML = 'create iframe';\r
+                       }\r
+               }\r
+               function onCreateIframe( _iframe ){\r
+                       elmContainer.appendChild( _iframe );\r
+                       elmIframe = _iframe;\r
+                       elmForm.target = _iframe.name;\r
+                       elmProgress.innerHTML = '';\r
+               }\r
+               /*\r
+                * 
+                */\r
+               function clickCancel(){\r
+                       if( isUploading === true) return false;\r
+                       pettanr.overlay.hide();\r
+                       UPLOAD_CONSOLE.onClose();\r
+                       return false;\r
+               }\r
+               \r
+               return {\r
+                       init: function(){\r
+                               this.jqWrap = jqWrap = $( '#upload-console-wrapper').hide();\r
+                               $( '#upload-console-post-button').click( clickOK );\r
+                               $( '#upload-console-cancel-button').click( clickCancel );\r
+\r
+                               delete UPLOAD_CONSOLE.init;\r
+                       },\r
+                       jqWrap: null,\r
+                       show: function( w, h){\r
+                               /*\r
+                                * ie 6, 7 で fadeIn 中の要素に appendChild すると クラッシュするので、document.body に追加.
+                                */                             \r
+                               elmScript = document.createElement( 'script');\r
+                               elmScript.type = 'text\/javascript';\r
+                               elmScript.src = pettanr.CONST.UPLOAD_PICTURE_JS;\r
+                               document.body.appendChild( elmScript);\r
+                               \r
+                               jqWrap.show();\r
+                               pettanr.overlay.show( UPLOAD_CONSOLE );\r
+\r
+                               if( timer === null){\r
+                                       timer = window.setInterval( detectForm, 250);\r
+                               }\r
+                               \r
+                               elmProgress.innerHTML = 'loading form.';\r
+                               \r
+                               UPLOAD_CONSOLE.onWindowResize( w, h);\r
+                       },\r
+                       onWindowResize: function( _windowW, _windowH){\r
+                               jqWrap.css(\r
+                                       {\r
+                                               left:   Math.floor( ( _windowW -jqWrap.width()) /2),\r
+                                               top:    Math.floor( ( _windowH -jqWrap.height()) /2)\r
+                                       }\r
+                               );\r
+                       },\r
+                       onClose: function(){\r
+                               elmForm !== null && $( elmContainer.children ).remove();\r
+                               elmForm = elmFile = elmIframe = null;\r
+                               isUploading = false;\r
+                               \r
+                               if( elmScript !== null ){\r
+                                       document.body.removeChild( elmScript);\r
+                                       elmScript = null;                                       \r
+                               }\r
+                               if( timer !== null){\r
+                                       window.clearInterval( timer);\r
+                                       timer = null;\r
+                               }\r
+                               jqWrap.hide();\r
+                       },\r
+                       ID: ID\r
+               }\r
+       })();\r
+       \r
+       return {\r
+               init: function(){\r
+                       UPLOAD_CONSOLE.init();\r
+                       delete pettanr.comicConsole.init;\r
+               },\r
+               onOpen: function( _file){\r
+                       if( pettanr.driver.isPettanrFileInstance( _file ) === true && _file.getType() === pettanr.driver.FILE_TYPE.COMIC){\r
+                               // _data = _file.read();\r
+                       }\r
+               },\r
+               onClose: function(){\r
+                       \r
+               },\r
+               onWindowResize: function( _windowW, _windowH){\r
+               },\r
+               _quickAccessShow: function(){\r
+                       jqWindow = pettanr.jqWindow();\r
+                       var w = jqWindow.width(),\r
+                               h = jqWindow.height();\r
+                       UPLOAD_CONSOLE.show( w, h);\r
+               }\r
+       }\r
+})();\r
+\r
+pettanr.panelConsole = ( function(){\r
+       var PANEL_CONSOLE = ( function(){\r
+               var jqWrap,\r
+                       ID = 'panelConsole',\r
+                       TARGET_FRAME_NAME = 'targetFrameCreateNewPanel',\r
+                       elmContainer = document.getElementById( 'newpanel'),\r
+                       elmProgress = document.getElementById( 'panel-console-progress'),\r
+                       timer = null,\r
+                       elmScript = null,\r
+                       elmForm = null,\r
+                       elmIframe = null,\r
+                       isUploading = false;\r
+               /*\r
+                * upload ボタンが押されたらまず iframe をつくる.\r
+                */\r
+               function clickOK(){\r
+                       if( !elmForm || !elmIframe || isUploading === true ) return false;\r
+                       elmProgress.innerHTML = 'uploading.';\r
+                       isUploading = true;\r
+                       submit();\r
+                       return false;\r
+               }\r
+               /*\r
+                * form の target に iframe を指定したのち submit();\r
+                */\r
+                       function submit(){\r
+                               try {\r
+                                       elmForm.submit();\r
+                               } catch( e){\r
+                                       elmProgress.innerHTML = 'submit() err..';\r
+                                       isUploading = false;\r
+                                       setTimeout( clickCancel , 3000);\r
+                                       return;\r
+                               }\r
+                               \r
+                               if( pettanr.ua.isIE){\r
+                                       elmIframe.onreadystatechange = detectIframe;\r
+                               } else {\r
+                                       elmIframe.onload = onLoad;\r
+                               }\r
+                               elmProgress.innerHTML = 'uploading..';\r
+                       }\r
+               /*\r
+                * ie の 場合、readyState をチェック.\r
+                */\r
+                               function detectIframe(){\r
+                           if ( elmIframe.readyState === 'complete') {\r
+                               elmIframe.onreadystatechange = new Function();\r
+                               elmIframe.onreadystatechange = null;\r
+                               onLoad();\r
+                           }\r
+                               }\r
+                                       function onLoad(){\r
+                                               elmIframe.onload = null;\r
+                                               ( elmIframe.contentWindow || elmIframe.contentDocument.parentWindow ).close();\r
+                                               elmProgress.innerHTML = 'success!';\r
+                                               setTimeout( clickCancel , 1000);\r
+                                               isUploading = false;\r
+                                       }\r
+               \r
+               function detectForm(){\r
+                       elmForm = elmContainer.getElementsByTagName( 'form' )[ 0 ];\r
+                       if( elmForm){\r
+                               var _inputList = elmForm.getElementsByTagName( 'input' ),\r
+                                       _input;\r
+                               for( var i=0, l= _inputList.length; i<l; ++i){\r
+                                       _input = _inputList[ i ];\r
+                                       if( _input.type === 'submit'){\r
+                                               _input.style.display = 'none';\r
+                                       }\r
+                               }\r
+                               window.clearInterval( timer);\r
+                               timer = null;\r
+                               pettanr.util.createIframe( TARGET_FRAME_NAME, onCreateIframe);\r
+                               elmProgress.innerHTML = 'create iframe';\r
+                       }\r
+               }\r
+               function onCreateIframe( _iframe ){\r
+                       elmContainer.appendChild( _iframe );\r
+                       elmIframe = _iframe;\r
+                       elmForm.target = _iframe.name;\r
+                       elmProgress.innerHTML = '';\r
+               }\r
+               /*\r
+                * \r
+                */\r
+               function clickCancel(){\r
+                       if( isUploading === true) return false;\r
+                       pettanr.overlay.hide();\r
+                       PANEL_CONSOLE.onClose();\r
+                       return false;\r
+               }\r
+               \r
+               return {\r
+                       init: function(){\r
+                               this.jqWrap = jqWrap = $( '#panel-console-wrapper').hide();\r
+                               $( '#panel-console-post-button').click( clickOK );\r
+                               $( '#panel-console-cancel-button').click( clickCancel );\r
+\r
+                               delete PANEL_CONSOLE.init;\r
+                       },\r
+                       jqWrap: null,\r
+                       show: function( w, h){\r
+                               /*\r
+                                * ie 6, 7 で fadeIn 中の要素に appendChild すると クラッシュするので、document.body に追加.\r
+                                */                             \r
+                               elmScript = document.createElement( 'script');\r
+                               elmScript.type = 'text\/javascript';\r
+                               elmScript.src = pettanr.CONST.CREATE_PANEL_JS;\r
+                               document.body.appendChild( elmScript);\r
+                               \r
+                               jqWrap.show();\r
+                               pettanr.overlay.show( PANEL_CONSOLE );\r
+\r
+                               if( timer === null){\r
+                                       timer = window.setInterval( detectForm, 250 );\r
+                               }\r
+                               \r
+                               elmProgress.innerHTML = 'loading form.';\r
+                               \r
+                               PANEL_CONSOLE.onWindowResize( w, h );\r
+                       },\r
+                       onWindowResize: function( _windowW, _windowH){\r
+                               jqWrap.css(\r
+                                       {\r
+                                               left:   Math.floor( ( _windowW -jqWrap.width()) /2),\r
+                                               top:    Math.floor( ( _windowH -jqWrap.height()) /2)\r
+                                       }\r
+                               );\r
+                       },\r
+                       onClose: function(){\r
+                               elmForm !== null && $( elmContainer.children ).remove();\r
+                               elmForm = elmIframe = null;\r
+                               isUploading = false;\r
+                               \r
+                               if( elmScript !== null ){\r
+                                       document.body.removeChild( elmScript);\r
+                                       elmScript = null;                                       \r
+                               }\r
+                               if( timer !== null){\r
+                                       window.clearInterval( timer);\r
+                                       timer = null;\r
+                               }\r
+                               jqWrap.hide();\r
+                       },\r
+                       ID: ID\r
+               }\r
+       })();\r
+       \r
+       return {\r
+               init: function(){\r
+                       PANEL_CONSOLE.init();\r
+                       delete pettanr.comicConsole.init;\r
+               },\r
+               onOpen: function(){\r
+                       \r
+               },\r
+               onClose: function(){\r
+                       \r
+               },\r
+               onWindowResize: function( _windowW, _windowH){\r
+               },\r
+               _quickAccessShow: function(){\r
+                       jqWindow = pettanr.jqWindow();\r
+                       var w = jqWindow.width(),\r
+                               h = jqWindow.height();\r
+                       PANEL_CONSOLE.show( w, h);\r
+               }\r
+       }\r
+})();\r
+\r
+pettanr.artistConsole = ( function(){\r
+       var ARTIST_CONSOLE = ( function(){\r
+               var jqWrap,\r
+                       ID = 'artistConsole',\r
+                       TARGET_FRAME_NAME = 'targetFrameResisterArtist',\r
+                       elmContainer = document.getElementById( 'register'),\r
+                       elmProgress = document.getElementById( 'artist-console-progress'),\r
+                       timer = null,\r
+                       elmScript = null,\r
+                       elmForm = null,\r
+                       elmIframe = null,\r
+                       isUploading = false;\r
+               /*\r
+                * upload ボタンが押されたらまず iframe をつくる.\r
+                */\r
+               function clickOK(){\r
+                       if( !elmForm || !elmIframe || isUploading === true ) return false;\r
+                       elmProgress.innerHTML = 'uploading.';\r
+                       isUploading = true;\r
+                       submit();\r
+                       return false;\r
+               }\r
+               /*\r
+                * form の target に iframe を指定したのち submit();\r
+                */\r
+                       function submit(){\r
+                               try {\r
+                                       elmForm.submit();\r
+                               } catch( e){\r
+                                       elmProgress.innerHTML = 'submit() err..';\r
+                                       isUploading = false;\r
+                                       setTimeout( clickCancel , 3000);\r
+                                       return;\r
+                               }\r
+                               \r
+                               if( pettanr.ua.isIE){\r
+                                       elmIframe.onreadystatechange = detectIframe;\r
+                               } else {\r
+                                       elmIframe.onload = onLoad;\r
+                               }\r
+                               elmProgress.innerHTML = 'uploading..';\r
+                       }\r
+               /*\r
+                * ie の 場合、readyState をチェック.\r
+                */\r
+                               function detectIframe(){\r
+                           if ( elmIframe.readyState === 'complete') {\r
+                               elmIframe.onreadystatechange = new Function();\r
+                               elmIframe.onreadystatechange = null;\r
+                               onLoad();\r
+                           }\r
+                               }\r
+                                       function onLoad(){\r
+                                               elmIframe.onload = null;\r
+                                               ( elmIframe.contentWindow || elmIframe.contentDocument.parentWindow ).close();\r
+                                               elmProgress.innerHTML = 'success!';\r
+                                               setTimeout( clickCancel , 1000);\r
+                                               isUploading = false;\r
+                                       }\r
+               \r
+               function detectForm(){\r
+                       elmForm = elmContainer.getElementsByTagName( 'form' )[ 0 ];\r
+                       if( elmForm){\r
+                               var _inputList = elmForm.getElementsByTagName( 'input' ),\r
+                                       _input;\r
+                               for( var i=0, l= _inputList.length; i<l; ++i){\r
+                                       _input = _inputList[ i ];\r
+                                       if( _input.type === 'submit'){\r
+                                               _input.style.display = 'none';\r
+                                       }\r
+                               }\r
+                               window.clearInterval( timer);\r
+                               timer = null;\r
+                               pettanr.util.createIframe( TARGET_FRAME_NAME, onCreateIframe);\r
+                               elmProgress.innerHTML = 'create iframe';\r
+                       }\r
+               }\r
+               function onCreateIframe( _iframe ){\r
+                       elmContainer.appendChild( _iframe );\r
+                       elmIframe = _iframe;\r
+                       elmForm.target = _iframe.name;\r
+                       elmProgress.innerHTML = '';\r
+               }\r
+               /*\r
+                * \r
+                */\r
+               function clickCancel(){\r
+                       if( isUploading === true) return false;\r
+                       pettanr.overlay.hide();\r
+                       ARTIST_CONSOLE.onClose();\r
+                       return false;\r
+               }\r
+               \r
+               return {\r
+                       init: function(){\r
+                               this.jqWrap = jqWrap = $( '#artist-console-wrapper').hide();\r
+                               $( '#artist-console-post-button').click( clickOK );\r
+                               $( '#artist-console-cancel-button').click( clickCancel );\r
+\r
+                               delete ARTIST_CONSOLE.init;\r
+                       },\r
+                       jqWrap: null,\r
+                       show: function( w, h){\r
+                               /*\r
+                                * ie 6, 7 で fadeIn 中の要素に appendChild すると クラッシュするので、document.body に追加.\r
+                                */                             \r
+                               elmScript = document.createElement( 'script');\r
+                               elmScript.type = 'text\/javascript';\r
+                               elmScript.src = pettanr.CONST.RESISTER_ARTIST_JS;\r
+                               document.body.appendChild( elmScript);\r
+                               \r
+                               jqWrap.show();\r
+                               pettanr.overlay.show( ARTIST_CONSOLE );\r
+\r
+                               if( timer === null){\r
+                                       timer = window.setInterval( detectForm, 250 );\r
+                               }\r
+                               \r
+                               elmProgress.innerHTML = 'loading form.';\r
+                               \r
+                               ARTIST_CONSOLE.onWindowResize( w, h );\r
+                       },\r
+                       onWindowResize: function( _windowW, _windowH){\r
+                               jqWrap.css(\r
+                                       {\r
+                                               left:   Math.floor( ( _windowW -jqWrap.width()) /2),\r
+                                               top:    Math.floor( ( _windowH -jqWrap.height()) /2)\r
+                                       }\r
+                               );\r
+                       },\r
+                       onClose: function(){\r
+                               elmForm !== null && $( elmContainer.children ).remove();\r
+                               elmForm = elmIframe = null;\r
+                               isUploading = false;\r
+                               \r
+                               if( elmScript !== null ){\r
+                                       document.body.removeChild( elmScript);\r
+                                       elmScript = null;                                       \r
+                               }\r
+                               if( timer !== null){\r
+                                       window.clearInterval( timer);\r
+                                       timer = null;\r
+                               }\r
+                               jqWrap.hide();\r
+                       },\r
+                       ID: ID\r
+               }\r
+       })();\r
+       \r
+       return {\r
+               init: function(){\r
+                       ARTIST_CONSOLE.init();\r
+                       delete pettanr.comicConsole.init;\r
+               },\r
+               onOpen: function(){\r
+                       \r
+               },\r
+               onClose: function(){\r
+                       \r
+               },\r
+               onWindowResize: function( _windowW, _windowH){\r
+               },\r
+               _quickAccessShow: function(){\r
+                       jqWindow = pettanr.jqWindow();\r
+                       var w = jqWindow.width(),\r
+                               h = jqWindow.height();\r
+                       ARTIST_CONSOLE.show( w, h);\r
+               }\r
+       }\r
+})();
\ No newline at end of file