+ 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
+ instance.onPaneResize( windowW, windowH );\r
+ }\r
+ /*\r
+ * \r
+ */\r
+ function clickCancel(){\r
+ if( isUploading === true) return false;\r
+ pettanr.artistConsole.shutdown();\r
+ return false;\r
+ }\r
+\r
+ /* grobal method */\r
+ this.rootElement = document.getElementById( 'artist-console-wrapper' );\r
+ this.displayName = ID;\r
+ this.ID = ID;\r
+ this.MIN_WIDTH = 320;\r
+ this.MIN_HEIGHT = 320;\r
+ this.init = function(){\r
+ jqWrap = $( '#artist-console-wrapper').hide();\r
+ $( '#artist-console-post-button').click( clickOK );\r
+ $( '#artist-console-cancel-button').click( clickCancel );\r
+\r
+ delete instance.init;\r
+ }\r
+ this.onOpen = function( w, h ){\r
+ instance.init && instance.init();\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.REGISTER_ARTIST_JS;\r
+ document.body.appendChild( elmScript );\r
+ \r
+ jqWrap.show();\r
+\r
+ if( timer === null){\r
+ timer = window.setInterval( detectForm, 250 );\r
+ }\r
+ \r
+ elmProgress.innerHTML = 'loading form.';\r
+ \r
+ instance.onPaneResize( w, h );\r
+ }\r
+ this.onPaneResize = function( _windowW, _windowH ){\r
+ windowW = _windowW;\r
+ windowH = _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
+ this.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
+});\r
+\r
+pettanr.outputConsole = pettanr.view.registerApplication( function(){\r
+ var jqWrap, jqOutputArea,\r
+ ID = 'outputConsole',\r
+ timing = 0,\r
+ instance = this;\r
+ //pettanr.key.addKeyDownEvent( ID, 69, false, false, clickOK);\r
+ \r
+ function clickOK(){\r
+ pettanr.outputConsole.shutdown();\r
+ }\r
+\r
+ function getPanelElementByTiming( PANEL_ELEMENT_ARRAY, l ){\r
+ while( timing < l * 2){\r
+ for(var i=0; i<l; ++i){\r
+ if( timing === PANEL_ELEMENT_ARRAY[ i ].timing ){\r
+ ++timing;\r
+ return PANEL_ELEMENT_ARRAY[ i ];\r
+ }\r
+ }\r
+ ++timing;\r
+ }\r
+ return null;\r
+ }\r
+\r
+ function getAsHtmlString( isAbsoluteUrl, isXHTML, panelW, panelH, border, PANEL_ELEMENT_ARRAY ){\r
+ timing = 0;\r
+ \r
+ var HTML_ARRAY = [],\r
+ l = PANEL_ELEMENT_ARRAY.length,\r
+ _panelElement;\r
+\r
+ while( HTML_ARRAY.length < l ){\r
+ _panelElement = getPanelElementByTiming( PANEL_ELEMENT_ARRAY, l );\r
+ if( _panelElement === null) break;\r
+ HTML_ARRAY.push( panelElementToHtml( _panelElement, isAbsoluteUrl, isXHTML ));\r
+ }\r
+\r
+ HTML_ARRAY.unshift(\r
+ [\r
+ '<div class="panel" ',\r
+ 'style="',\r
+ 'height:', panelH, 'px;',\r
+ 'background-color:', ';',\r
+ '"',\r
+ '>'\r
+ ].join( '')\r
+ ); \r
+ HTML_ARRAY.push( '</div>');\r
+ \r
+ return HTML_ARRAY.join( pettanr.LINE_FEED_CODE_TEXTAREA);\r
+ }\r
+\r
+ function panelElementToHtml( _panelElement, isAbsoluteUrl, isXHTML ){\r
+ var url;\r
+ if( _panelElement.type === 0 ){\r
+ url = [ pettanr.CONST.RESOURCE_PICTURE_PATH, _panelElement.resourcePicture().id, '.', _panelElement.resourcePicture().ext ].join( '' );\r
+ return [\r
+ '<img ',\r
+ 'src="', isAbsoluteUrl !== true ? url : pettanr.util.getAbsolutePath( url ), '" ',\r
+ 'width="', _panelElement.w, '" ',\r
+ 'height="', _panelElement.h, '" ',\r
+ 'style="',\r
+ 'left:', _panelElement.x, 'px;',\r
+ 'top:', _panelElement.y, 'px;',\r
+ 'z-index:', _panelElement.z, ';',\r
+ '"',\r
+ isXHTML !== true ? '>' : ' \/>'\r
+ ].join( ''); \r
+ } else {\r
+ url = _panelElement.getBalloonURL();\r
+ return [\r
+ '<img ',\r
+ 'src="', isAbsoluteUrl !== true ? url : pettanr.util.getAbsolutePath( url ), '" ',\r
+ 'width="', _panelElement.w, '" ',\r
+ 'height="', _panelElement.h, '" ',\r
+ 'style="', \r
+ 'left:', _panelElement.x, 'px;',\r
+ 'top:', _panelElement.y, 'px;',\r
+ 'z-index:', _panelElement.z, ';',\r
+ '"',\r
+ isXHTML !== true ? '>' : ' \/>',\r
+ pettanr.LINE_FEED_CODE_TEXTAREA,\r
+ '<div class="balloon" style="',\r
+ 'left:', _panelElement.x, 'px;',\r
+ 'top:', _panelElement.y, 'px;',\r
+ 'width:', _panelElement.w, 'px;',\r
+ 'height:', _panelElement.h, 'px;',\r
+ 'z-index:', _panelElement.z,\r
+ '"><span>', _panelElement.text(), '<\/span>', '<\/div>'\r
+ \r
+ ].join( ''); \r
+ }\r
+ }\r
+\r
+ function getAsJsonString( comicID, panelID, panelTimming, panelW, panelH, border, PANEL_ELEMENT_ARRAY ){\r
+ timing = 0;\r
+ \r
+ var JSON_STRING_ARRAY = [],\r
+ IMAGE_ARRAY = [],\r
+ BALLOON_ARRAY = [],\r
+ l = PANEL_ELEMENT_ARRAY.length,\r
+ _panelElement,\r
+ cr = pettanr.LINE_FEED_CODE_TEXTAREA;\r
+\r
+ while( IMAGE_ARRAY.length + BALLOON_ARRAY.length <= l){\r
+ _panelElement = getPanelElementByTiming( PANEL_ELEMENT_ARRAY, l );\r
+ if( _panelElement === null) break;\r
+ _panelElement.type === 0 ? \r
+ IMAGE_ARRAY.push( imageToJson( _panelElement )) :\r
+ BALLOON_ARRAY.push( balloonToJson( _panelElement ) );\r
+ }\r
+ return [\r
+ '{', cr,\r
+ '"panel": {', cr,\r
+ '"id": ', panelID, ',', cr,\r
+ '"border": ', border, ',', cr,\r
+ '"comic_id": ', comicID, ',', cr,\r
+ '"resource_picture_id": 1,', cr,\r
+ '"x": ', 0, ',', cr,\r
+ '"y": ', 0, ',', cr,\r
+ '"z": ', 0, ',', cr,\r
+ panelTimming !== -1 ? ( '"t": ' + panelTimming + ',' + cr ) : '',\r
+ '"width": ', panelW, ',', cr,\r
+ '"height": ', panelH, ',', cr,\r
+ '"panel_pictures_attributes": {', cr,\r
+ IMAGE_ARRAY.join( ',' + cr ), cr,\r
+ '},', cr,\r
+ '"balloons_attributes": {', cr,\r
+ BALLOON_ARRAY.join( ',' + cr ), cr,\r
+ '}', cr,\r
+ '}', cr,\r
+ '}'\r
+ ].join( '' );\r
+ }\r
+ function imageToJson( _imageElement ){\r
+ var cr = pettanr.LINE_FEED_CODE_TEXTAREA;\r
+ return [\r
+ '"new', timing, '": {', cr,\r
+ '"resource_picture_id": ', _imageElement.resourcePicture().id, ',', cr,\r
+ '"x": ', _imageElement.x, ',', cr,\r
+ '"y": ', _imageElement.y, ',', cr,\r
+ '"z": ', _imageElement.z, ',', cr,\r
+ '"width": ', _imageElement.flipH() * _imageElement.w, ',', cr,\r
+ '"height": ', _imageElement.flipV() * _imageElement.h, ',', cr,\r
+ '"t": ', timing, cr,\r
+ '}'\r
+ ].join( '');\r
+ }\r
+\r
+ function balloonToJson( _textElement ){\r
+ var cr = pettanr.LINE_FEED_CODE_TEXTAREA;\r
+ return [\r
+ '"new', timing, '": {', cr,\r
+ '"balloon_template_id": ', 1, ',', cr,\r
+ '"system_picture_id": ', 1, ',', cr,\r
+ '"size": ', 1, ',', cr,\r
+ '"tail": ', _textElement.angle(), ',', cr,\r
+ '"x": ', _textElement.x, ',', cr,\r
+ '"y": ', _textElement.y, ',', cr,\r
+ '"z": ', _textElement.z, ',', cr,\r
+ '"t": ', timing, ',', cr,\r
+ '"width": ', _textElement.w, ',', cr,\r
+ '"height": ', _textElement.h, ',', cr,\r
+ '"speaches_attributes": {', cr,\r
+ '"newf', timing, '": {', cr,\r
+ '"content": "', _textElement.text(), '",', cr,\r
+ '"x": ', _textElement.x, ',', cr,\r
+ '"y": ', _textElement.y, ',', cr,\r
+ '"t": ', timing, ',', cr,\r
+ '"width": ', _textElement.w, ',', cr,\r
+ '"height": ', _textElement.h, cr,\r
+ '}', cr,\r
+ '}', cr,\r
+ '}'\r
+ ].join( '');\r
+ }\r
+\r
+\r
+ /* grobal method */\r
+ this.rootElement = document.getElementById( 'output-console-wrapper' );\r
+ this.displayName = ID;\r
+ this.ID = ID;\r
+ \r
+ this.MIN_WIDTH = 320;\r
+ this.MIN_HEIGHT = 320;\r
+ this.init = function(){\r
+ jqWrap = $( '#output-console-wrapper').hide();\r
+ jqOutputArea = $( '#output-area');\r
+ delete instance.init;\r
+ }\r
+ this.onOpen = function( _w, _h, _dataType, _comicID, _panelID, _panelTimming, _panelW, _panelH, _borderSize, _panelElements ){\r
+ instance.init && instance.init();\r
+ \r
+ jqWrap.show();\r
+ instance.onPaneResize( _w, _h );\r
+ var text;\r
+ if( _dataType === pettanr.outputConsole.JSON ){\r
+ text = getAsJsonString( _comicID, _panelID, _panelTimming, _panelW, _panelH, _borderSize, _panelElements );\r
+ } else {\r
+ text = getAsHtmlString( false, false, _panelW, _panelH, _borderSize, _panelElements );\r
+ }\r
+ jqOutputArea.val( text ).focus();\r
+ }\r
+ this.onPaneResize = function( _w, _h){\r
+ jqWrap.css(\r
+ {\r
+ left: Math.floor( ( _w -jqWrap.width()) /2),\r
+ top: Math.floor( ( _h -jqWrap.height()) /2)\r
+ }\r
+ );\r
+ }\r
+ this.onClose = function(){\r
+ jqWrap.hide();\r
+ jqOutputArea.val('');\r