/*\r
* pettanR common.js\r
- * version 0.4.34\r
+ * version 0.4.35\r
* \r
* author: itozyun\r
*/\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.35',\r
init: function(){\r
jqWindow = $( window );\r
jqDocument = $( document );\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
- bootParams = null,\r
- visible = false,\r
+ bootParams = null,\r
+ visible = false,\r
+ jqConteiner, jqShadow, jqCloseButton,// jqBody, \r
windowW, windowH;\r
\r
function asyncResize(){\r
function onCloseClick( e){\r
pettanr.overlay.hide();\r
e.preventDefault();\r
- return false; \r
+ return false;\r
}\r
function onFadeInComplete(){\r
\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
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
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
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
\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
- 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
- "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
- _comicElement, _elmImgWrap, _rImg, _rPic, _balloon, _elmBalloonWrap, _elmText;\r
- if( noClassnameMode === true){\r
+ _comicElement, _elmImg, _rImg, _rPic,\r
+ _balloon, _elmBalloonWrap, _elmText, _text, _speachesAttributes, _key;\r
+ if( noClassnameMode === true ){\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
- elmTarget.appendChild( _elmPanel);\r
+ elmTarget.appendChild( _elmPanel );\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
- _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
- ].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
- '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
- _elmBalloonWrap.appendChild( _balloon.elm);\r
+ _elmBalloonWrap.appendChild( _balloon.elm );\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
+ _speachesAttributes = _comicElement.speaches_attributes;\r
+ if( _speachesAttributes ){\r
+ for( _key in _speachesAttributes ){\r
+ _text += _speachesAttributes[ _key ] && _speachesAttributes[ _key ].content ? _speachesAttributes[ _key ].content : '';\r
+ }\r
+ }\r
+ _elmText.firstChild.appendChild( document.createTextNode( _text ));\r
+ BALLOON_ARRAY.push( _balloon );\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
+ } else\r
+ if( json.panel_elements ){\r
+ // panel\r
+ buildPanelElement( json, zoom );\r
+ } else {\r
+ // invalid json\r
}\r
}\r
- })();\r
+ this.zoom = function(){\r
+ \r
+ }\r
+ this.destroy = function(){\r
+ clean();\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
- 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
- json && ElementBuilder.build( elmTarget, json, zoomSelfEnabled, noClassnameMode);\r
+ json && typeof json === 'object' && builder.build( json );\r
\r
- return {\r
- init: function(){\r
- \r
- },\r
- zoom: function(){\r
+ this.init = function(){\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
- destroy: function(){\r
+ }\r
+ this.layout = function(){\r
\r
- }\r
+ }\r
+ this.destroy = function(){\r
+ builder.destroy();\r
+ elmTarget = json = builder = null;\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
- BIND_WORKER_ARRAY.push( ret);\r
+ BIND_WORKER_ARRAY.push( ret );\r
return ret;\r
},\r
- isBindWorkerInstance: function( _bindWorker){\r
- \r
+ isBindWorkerInstance: function( _bindWorker ){\r
+ return _bindWorker instanceof BindWorkerClass;\r
}\r
}\r
})();\r