OSDN Git Service

rollback schema
[pettanr/pettanr.git] / public / assets / common.js
index a604d02..f0d4659 100644 (file)
@@ -1,6 +1,6 @@
 /*\r
  * pettanR common.js\r
 /*\r
  * pettanR common.js\r
- *   version 0.4.34\r
+ *   version 0.4.36\r
  * \r
  * author: itozyun\r
  */\r
  * \r
  * author: itozyun\r
  */\r
@@ -108,7 +108,7 @@ var pettanr = ( function(){
                IS_DEBUG = Type.isBoolean( URL_PARAMS.debug ) ? URL_PARAMS.debug : IS_LOCAL === true,\r
                jqWindow , jqDocument , jqBody;\r
        return {\r
                IS_DEBUG = Type.isBoolean( URL_PARAMS.debug ) ? URL_PARAMS.debug : IS_LOCAL === true,\r
                jqWindow , jqDocument , jqBody;\r
        return {\r
-               version: '0.4.33',\r
+               version: '0.4.36',\r
                init: function(){\r
                        jqWindow   = $( window );\r
                        jqDocument = $( document );\r
                init: function(){\r
                        jqWindow   = $( window );\r
                        jqDocument = $( document );\r
@@ -965,11 +965,11 @@ pettanr.view = ( function(){
 \r
 pettanr.overlay = ( function(){\r
        var SHADOW_OPACITY = 0.5,\r
 \r
 pettanr.overlay = ( function(){\r
        var SHADOW_OPACITY = 0.5,\r
-               ELM_CONTAINER = document.getElementById( 'overlay-container' ),\r
-               jqConteiner, jqShadow, jqCloseButton,// jqBody, \r
+               ELM_CONTAINER  = document.getElementById( 'overlay-container' ),\r
                currentOverlay = null,\r
                currentOverlay = null,\r
-               bootParams = null,\r
-               visible = false,\r
+               bootParams     = null,\r
+               visible        = false,\r
+               jqConteiner, jqShadow, jqCloseButton,// jqBody, \r
                windowW, windowH;\r
 \r
        function asyncResize(){\r
                windowW, windowH;\r
 \r
        function asyncResize(){\r
@@ -978,7 +978,7 @@ pettanr.overlay = ( function(){
        function onCloseClick( e){\r
                pettanr.overlay.hide();\r
                e.preventDefault();\r
        function onCloseClick( e){\r
                pettanr.overlay.hide();\r
                e.preventDefault();\r
-               return false;           \r
+               return false;\r
        }\r
        function onFadeInComplete(){\r
 \r
        }\r
        function onFadeInComplete(){\r
 \r
@@ -992,8 +992,8 @@ pettanr.overlay = ( function(){
        return {\r
                init: function(){\r
                        //jqBody = pettanr.jqBody();\r
        return {\r
                init: function(){\r
                        //jqBody = pettanr.jqBody();\r
-                       jqConteiner = $( '#overlay-container');\r
-                       jqShadow = $( '#overlay-shadow');\r
+                       jqConteiner   = $( '#overlay-container');\r
+                       jqShadow      = $( '#overlay-shadow');\r
                        jqCloseButton = $( '#overlay-close-button').click( onCloseClick );\r
                        \r
                        pettanr.key.addKeyDownEvent( pettanr.view.OVERLAY, 27, false, false, pettanr.overlay.hide ); // 27.esc\r
                        jqCloseButton = $( '#overlay-close-button').click( onCloseClick );\r
                        \r
                        pettanr.key.addKeyDownEvent( pettanr.view.OVERLAY, 27, false, false, pettanr.overlay.hide ); // 27.esc\r
@@ -1005,6 +1005,7 @@ pettanr.overlay = ( function(){
                        if( pettanr.view.isApplicationInstance( _overlay ) === false ) return;\r
                        \r
                        document.body.style.overflow = 'hidden';\r
                        if( pettanr.view.isApplicationInstance( _overlay ) === false ) return;\r
                        \r
                        document.body.style.overflow = 'hidden';\r
+                       document.body.appendChild( ELM_CONTAINER ); // ie6-8 で必要、なんで、、、?\r
                        \r
                        this.visible = visible = true;\r
                        this.currentID = _overlay.ID;\r
                        \r
                        this.visible = visible = true;\r
                        this.currentID = _overlay.ID;\r
@@ -2289,6 +2290,9 @@ pettanr.bind = ( function(){
                        var ret = document.createElement( 'div');\r
                        ret.style.cssText = 'width: auto;height: 0;padding: 0;margin: 0;display: block;visibility: hidden;float: none;position: static;';\r
                        return ret;\r
                        var ret = document.createElement( 'div');\r
                        ret.style.cssText = 'width: auto;height: 0;padding: 0;margin: 0;display: block;visibility: hidden;float: none;position: static;';\r
                        return ret;\r
+               })(),\r
+               ELM_TITLE_ORIGN = ( function(){\r
+                       \r
                })();\r
 \r
        /*\r
                })();\r
 \r
        /*\r
@@ -2315,7 +2319,7 @@ pettanr.bind = ( function(){
                                var size = getInnerSize();\r
                                if (_size.w !== size.w || _size.h !== size.h) { // resized\r
                                        _size = size; // update\r
                                var size = getInnerSize();\r
                                if (_size.w !== size.w || _size.h !== size.h) { // resized\r
                                        _size = size; // update\r
-                                       onResizeFunction( _size);\r
+                                       onResizeFunction( _size );\r
                                }\r
                                setTimeout( unlock, 0); // delay unlock\r
                        }\r
                                }\r
                                setTimeout( unlock, 0); // delay unlock\r
                        }\r
@@ -2328,151 +2332,175 @@ pettanr.bind = ( function(){
        }\r
        \r
        \r
        }\r
        \r
        \r
-       var ElementBuilder = ( function(){\r
-               var ELM_TITLE_ORIGN = ( function(){\r
-                               \r
-                       })(),\r
-                       ELM_TEXT_ORIGN = ( function(){\r
-                               var _table = document.createElement( 'table'),\r
-                                       _tr = document.createElement( 'tr');\r
-                               _table.appendChild( _tr);\r
-                               _tr.appendChild( document.createElement( 'td'));\r
-                               _table.cellspacing = '0';\r
-                               return _table;\r
-                       })();\r
+       var ElementBuilderClass = function( elmTarget, noClassnameMode ){\r
+               var RIMG_ARRAY     = [],\r
+                       BALLOON_ARRAY  = [];\r
                \r
                function buildComicElement(){\r
                        \r
                }\r
                \r
                \r
                function buildComicElement(){\r
                        \r
                }\r
                \r
-               function buildPanelElement( elmTarget, json, noClassnameMode){\r
-                       var _elmPanel = document.createElement( 'div'),\r
+               function buildPanelElement( json, zoom ){\r
+                       var _elmPanel = document.createElement( 'div' ),\r
                                _style = {\r
                                _style = {\r
-                                               "border-width":         typeof json.border === 'number' ? json.border + 'px' : 0,\r
+                                               'border-width':         typeof json.border === 'number' ? json.border + 'px' : 0,\r
                                                width:                          json.width + 'px',\r
                                                height:                         json.height + 'px'\r
                                },\r
                                _cssText = [],\r
                                _comicElements = json.panel_elements || [],\r
                                                width:                          json.width + 'px',\r
                                                height:                         json.height + 'px'\r
                                },\r
                                _cssText = [],\r
                                _comicElements = json.panel_elements || [],\r
-                               _comicElement, _elmImgWrap, _rImg, _rPic, _balloon, _elmBalloonWrap, _elmText;\r
-                       if( noClassnameMode === true){\r
+                               _comicElement, _elmImg, _rImg, _rPic,\r
+                               _balloon, _elmBalloonWrap, _elmText, _text, _speechesAttributes, _key;\r
+                       if( noClassnameMode === true ){\r
                                \r
                        } else {\r
                                _elmPanel.className = NAMESPACE_CLASSNAME + 'panel';\r
                        }\r
                                \r
                        } else {\r
                                _elmPanel.className = NAMESPACE_CLASSNAME + 'panel';\r
                        }\r
-                       for( var _key in _style){\r
-                               _cssText.push( _key + ':' + _style[ _key]);\r
+                       for( var _key in _style ){\r
+                               _cssText.push( _key + ':' + _style[ _key ] );\r
                        }\r
                        _elmPanel.style.cssText = _cssText.join( ';');\r
                        }\r
                        _elmPanel.style.cssText = _cssText.join( ';');\r
-                       elmTarget.appendChild( _elmPanel);\r
+                       elmTarget.appendChild( _elmPanel );\r
                        \r
                        \r
-                       for( var i=0, l=_comicElements.length; i<l; ++i){\r
-                               _comicElement = _comicElements[ i];\r
+                       for( var i=0, l=_comicElements.length; i<l; ++i ){\r
+                               _comicElement = _comicElements[ i ];\r
                                _rPic = _comicElement.resource_picture;\r
                                if( _rPic ){\r
                                        _rImg = pettanr.image.createReversibleImage(\r
                                                        [ RESOURCE_PICTURE_PATH, _rPic.id, '.', _rPic.ext ].join( ''),\r
                                                        _comicElement.width, _comicElement.height\r
                                                );\r
                                _rPic = _comicElement.resource_picture;\r
                                if( _rPic ){\r
                                        _rImg = pettanr.image.createReversibleImage(\r
                                                        [ RESOURCE_PICTURE_PATH, _rPic.id, '.', _rPic.ext ].join( ''),\r
                                                        _comicElement.width, _comicElement.height\r
                                                );\r
-                                       _elmImgWrap = document.createElement( 'div');\r
-                                       _elmPanel.appendChild( _elmImgWrap);\r
-                                       _elmImgWrap.appendChild( _rImg.elm);\r
-                                       _elmImgWrap.className = NAMESPACE_CLASSNAME + 'image';\r
-                                       _elmImgWrap.style.cssText = [\r
-                                               'width:',  Math.abs( _comicElement.width ), 'px;',\r
-                                               'height:', Math.abs( _comicElement.height ), 'px;',\r
+                                       _elmImg = _rImg.elm;\r
+                                       _elmPanel.appendChild( _elmImg );\r
+                                       _elmImg.className = NAMESPACE_CLASSNAME + 'image';\r
+                                       _elmImg.style.cssText = [\r
                                                'left:',   _comicElement.x, 'px;',\r
                                                'top:',    _comicElement.y, 'px;',\r
                                                'z-index:',_comicElement.z, ';'\r
                                                'left:',   _comicElement.x, 'px;',\r
                                                'top:',    _comicElement.y, 'px;',\r
                                                'z-index:',_comicElement.z, ';'\r
-                                       ].join( '');\r
+                                       ].join( '');                                    \r
+                                       if( _elmImg.tagName === 'img' ){\r
+                                               _elmImg.width        = Math.abs( _comicElement.width );\r
+                                               _elmImg.height       = Math.abs( _comicElement.height );\r
+                                       } else {\r
+                                               _elmImg.style.width  = Math.abs( _comicElement.width ) + 'px';\r
+                                               _elmImg.style.height = Math.abs( _comicElement.height ) + 'px';\r
+                                       }\r
+                                       \r
+                                       RIMG_ARRAY.push( _rImg );\r
                                } else {\r
                                        _elmBalloonWrap = document.createElement( 'div' );\r
                                        _elmPanel.appendChild( _elmBalloonWrap );\r
                                        _elmBalloonWrap.className = NAMESPACE_CLASSNAME + 'balloon';\r
                                        _elmBalloonWrap.style.cssText = [\r
                                } else {\r
                                        _elmBalloonWrap = document.createElement( 'div' );\r
                                        _elmPanel.appendChild( _elmBalloonWrap );\r
                                        _elmBalloonWrap.className = NAMESPACE_CLASSNAME + 'balloon';\r
                                        _elmBalloonWrap.style.cssText = [\r
-                                               'width:', _comicElement.width, 'px;',\r
-                                               'height:', _comicElement.height, 'px;',\r
-                                               'left:', _comicElement.x, 'px;',\r
-                                               'top:', _comicElement.y, 'px;',\r
+                                               'width:',   _comicElement.width, 'px;',\r
+                                               'height:',  _comicElement.height, 'px;',\r
+                                               'left:',    _comicElement.x, 'px;',\r
+                                               'top:',     _comicElement.y, 'px;',\r
                                                'z-index:', _comicElement.z, ';'\r
                                        ].join( '');\r
 \r
                                        _balloon = pettanr.balloon.createBalloon( _comicElement.width, _comicElement.height, _comicElement.tail );\r
                                                'z-index:', _comicElement.z, ';'\r
                                        ].join( '');\r
 \r
                                        _balloon = pettanr.balloon.createBalloon( _comicElement.width, _comicElement.height, _comicElement.tail );\r
-                                       _elmBalloonWrap.appendChild( _balloon.elm);\r
+                                       _elmBalloonWrap.appendChild( _balloon.elm );\r
                                        \r
                                        \r
-                                       _elmText = ELM_TEXT_ORIGN.cloneNode( true);\r
-                                       _elmBalloonWrap.appendChild( _elmText);\r
-                                       _elmText.className = NAMESPACE_CLASSNAME + 'speach';\r
-                                       _elmText.getElementsByTagName( 'td')[ 0].appendChild( document.createTextNode( 'hello'));\r
+                                       _elmText = document.createElement( 'p' );\r
+                                       _elmBalloonWrap.appendChild( _elmText );\r
+                                       \r
+                                       _elmText.appendChild( document.createElement( 'span' ) );\r
+                                       \r
+                                       _text = '';\r
+                                       _speechesAttributes = _comicElement.speeches_attributes;\r
+                                       if( _speechesAttributes ){\r
+                                               for( _key in _speechesAttributes ){\r
+                                                       _text += _speechesAttributes[ _key ] && _speechesAttributes[ _key ].content ? _speechesAttributes[ _key ].content : '';\r
+                                               }\r
+                                       }\r
+                                       _elmText.firstChild.appendChild( document.createTextNode( _text ));\r
+                                       BALLOON_ARRAY.push( _balloon );\r
                                }\r
                        }\r
                }\r
                \r
                                }\r
                        }\r
                }\r
                \r
-               return {\r
-                       build: function( elmTarget, json, zoom, noClassnameMode){\r
-                               // clean elmTarget\r
-                               pettanr.util.removeAllChildren( elmTarget);\r
-                               \r
-                               // json is Comic ? Panel ?\r
-                               if( json.panels){\r
-                                       // comic\r
-                                       \r
-                               } else\r
-                               if( json.panel_elements){\r
-                                       // panel\r
-                                       buildPanelElement( elmTarget, json, noClassnameMode);\r
-                               } else {\r
-                                       // invalid json\r
+               function clean(){\r
+                       // clean elmTarget\r
+                       while( RIMG_ARRAY.length > 0 ){\r
+                               RIMG_ARRAY.shift().destroy();\r
+                       }\r
+                       while( BALLOON_ARRAY.length > 0 ){\r
+                               BALLOON_ARRAY.shift().destroy();\r
+                       }\r
+                       pettanr.util.removeAllChildren( elmTarget );            \r
+               }\r
+               \r
+               this.build = function( json, zoom ){\r
+                       clean();\r
+                       \r
+                       // json is Comic ? Panel ?\r
+                       var panels = json.panels;\r
+                       if( Type.isArray( panels ) === true ){\r
+                               // comic\r
+                               for( var i=0, l=panels.length; i<l; ++i ){\r
+                                       buildPanelElement( panels[ i ], zoom );\r
                                }\r
                                }\r
+                       } else\r
+                       if( json.panel_elements ){\r
+                               // panel\r
+                               buildPanelElement( json, zoom );\r
+                       } else {\r
+                               // invalid json\r
                        }\r
                }\r
                        }\r
                }\r
-       })();\r
+               this.zoom = function(){\r
+                       \r
+               }\r
+               this.destroy = function(){\r
+                       clean();\r
+               }\r
+       };\r
        \r
        \r
-       var BindWorkerClass = function( elmTarget, json, zoomSelfEnabled, noClassnameMode){\r
-               typeof json === 'object' && build( elmTarget, json);\r
-               \r
-               var elmDetectW = ELM_DETECT_WIDTH.cloneNode( false)\r
+       var BindWorkerClass = function( elmTarget, json, zoomSelfEnabled, noClassnameMode ){\r
+               var builder    = new ElementBuilderClass( elmTarget, noClassnameMode );\r
+               var elmDetectW = ELM_DETECT_WIDTH.cloneNode( false );\r
+               var resizer    = null;\r
                \r
                if( zoomSelfEnabled === true){\r
                \r
                if( zoomSelfEnabled === true){\r
-                       elmTarget.parentNode.insertBefore( elmDetectW, elmTarget);\r
-                       new ResizeAgentClass( onResize, elmDetectW);\r
+                       elmTarget.parentNode.insertBefore( elmDetectW, elmTarget );\r
+                       resizer = new ResizeAgentClass( onResize, elmDetectW );\r
                }\r
                function onResize(){\r
                        \r
                }\r
                }\r
                function onResize(){\r
                        \r
                }\r
-               json && ElementBuilder.build( elmTarget, json, zoomSelfEnabled, noClassnameMode);\r
+               json && typeof json === 'object' && builder.build( json );\r
                \r
                \r
-               return {\r
-                       init: function(){\r
-                               \r
-                       },\r
-                       zoom: function(){\r
+               this.init = function(){\r
                                \r
                                \r
-                       },\r
-                       json: function( _json){\r
-                               json = _json;\r
-                               ElementBuilder.build( elmTarget, _json, zoomSelfEnabled, noClassnameMode);\r
-                       },\r
-                       targetElement: function(){\r
-                               \r
-                       },\r
-                       layput: function(){\r
+               }\r
+               this.zoom = function(){\r
+                       builder.zoom();\r
+               }\r
+               this.json = function( _json ){\r
+                       json = _json;\r
+                       builder.build( _json );\r
+               }\r
+               this.targetElement = function(){\r
                                \r
                                \r
-                       },\r
-                       destroy: function(){\r
+               }\r
+               this.layout = function(){\r
                                \r
                                \r
-                       }\r
+               }\r
+               this.destroy = function(){\r
+                       builder.destroy();\r
+                       elmTarget = json = builder = null;\r
                }\r
        }\r
        \r
        return {\r
                }\r
        }\r
        \r
        return {\r
-               createBindWorker: function( elmTarget, opt_COMICJSONorPANELJSON, opt_zoomSelfEnabled, opt_noClassnameMode){\r
+               createBindWorker: function( elmTarget, opt_COMICJSONorPANELJSON, opt_zoomSelfEnabled, opt_noClassnameMode ){\r
                        var ret = new BindWorkerClass( elmTarget, opt_COMICJSONorPANELJSON, !!opt_zoomSelfEnabled, !!opt_noClassnameMode);\r
                        var ret = new BindWorkerClass( elmTarget, opt_COMICJSONorPANELJSON, !!opt_zoomSelfEnabled, !!opt_noClassnameMode);\r
-                       BIND_WORKER_ARRAY.push( ret);\r
+                       BIND_WORKER_ARRAY.push( ret );\r
                        return ret;\r
                },\r
                        return ret;\r
                },\r
-               isBindWorkerInstance: function( _bindWorker){\r
-                       \r
+               isBindWorkerInstance: function( _bindWorker ){\r
+                       return _bindWorker instanceof BindWorkerClass;\r
                }\r
        }\r
 })();\r
                }\r
        }\r
 })();\r