OSDN Git Service

version 0.6.100, X.ViewPort working.
[pettanr/clientJs.git] / 0.6.x / js / 02_dom / 02_XDomNode.js
index ecacc7a..1256f61 100644 (file)
@@ -1,42 +1,55 @@
-X.Dom.Dirty = {\r
-       CLEAN            :  0,\r
-       CHILD_IS_DIRTY   :  1,\r
-       ID               :  2, // width, height, x, y\r
-       CONTENT          :  4, // width, height, x, y textNode の内容\r
-       CLASSNAME        :  8, // _getCharSize, width, height, x, y\r
-       ATTR             : 16, // _getCharSize, width, height, x, y\r
-       CSS              : 32, // _getCharSize, width, height, x, y\r
-       IE_FILTER        : X.UA.IE < 9 && !X.UA.MacIE ? 64 : 0,\r
-       UNKNOWN_TAG_FIX  : 128,\r
-       IE4_TEXTNODE_FIX : 256\r
-};\r
-\r
-X.Dom.State = {\r
-       DESTROYED          : 0,\r
-       EXIST              : 1,\r
-       BELONG_TREE        : 2,\r
-       DISPLAY_NONE       : 4,\r
-       DISPLAY_BLOCK      : 8,\r
-       DISPLAY_INLINE     : 16,\r
-       POSITION_ABSOLUTE  : 32,\r
-       OVERFLOW_HIDDEN    : 64,\r
-       HAS_WIDTH_LENGTH   : 128,\r
-       HAS_WIDTH_PERCENT  : 256,\r
-       HAS_HEIGHT_LENGTH  : 512,\r
-       HAS_HEIGHT_PERCENT : 1024,\r
-       IE4_ONLY_TEXT      : 2048,\r
-       IE5_DISPLAY_NONE_FIX : !X.UA.MacIE && X.UA.IE5 ? 4096 : 0 // filterがかかっていると不可? MacIE5.2- は ?\r
-};\r
-\r
-X.Dom._strictElmCreation = !X.UA.MacIE && X.UA.IE5678;// && !X.UA.MacIE;\r
-\r
-X.Dom._useDocumentFragment = document.createDocumentFragment && ( !X.UA.IE || 5.5 <= X.UA.IE ) && document.createDocumentFragment();\r
+var \r
+       X_Node_Dirty = {\r
+               CLEAN            :  0,\r
+               CHILD_IS_DIRTY   :  1,\r
+               ID               :  2, // width, height, x, y\r
+               CONTENT          :  4, // width, height, x, y textNode の内容\r
+               CLASSNAME        :  8, // _getCharSize, width, height, x, y\r
+               ATTR             : 16, // _getCharSize, width, height, x, y\r
+               CSS              : 32, // _getCharSize, width, height, x, y\r
+               IE_FILTER        : X.UA.IE < 9 && !X.UA.MacIE ? 64 : 0,\r
+               UNKNOWN_TAG_FIX  : 128,\r
+               IE4_TEXTNODE_FIX : 256\r
+       },\r
+       \r
+       X_Node_State = {\r
+               DESTROYED          : 0,\r
+               EXIST              : 1,\r
+               BELONG_TREE        : 2,\r
+               DISPLAY_NONE       : 4,\r
+               DISPLAY_BLOCK      : 8,\r
+               DISPLAY_INLINE     : 16,\r
+               POSITION_ABSOLUTE  : 32,\r
+               OVERFLOW_HIDDEN    : 64,\r
+               HAS_WIDTH_LENGTH   : 128,\r
+               HAS_WIDTH_PERCENT  : 256,\r
+               HAS_HEIGHT_LENGTH  : 512,\r
+               HAS_HEIGHT_PERCENT : 1024,\r
+               IE4_ONLY_TEXT      : 2048,\r
+               IE5_DISPLAY_NONE_FIX : !X.UA.MacIE && X.UA.IE5 ? 4096 : 0 // filterがかかっていると不可? MacIE5.2- は ?\r
+       },\r
+       \r
+       X_Node_TYPE = {\r
+               XNODE       : 1,\r
+               RAW_HTML    : 2,\r
+               RAW_TEXT    : 3,\r
+               HTML_STRING : 4,\r
+               STRING      : 5,\r
+               //DOC_FRAG    : 6,\r
+               XNODE_LIST  : 7,\r
+               WINDOW      : 8,\r
+               DOCUMENT    : 9,\r
+               IMAGE       : 10\r
+       },\r
+       \r
+       X_Node_strictElmCreation = !X.UA.MacIE && X.UA.IE5678,// && !X.UA.MacIE;\r
+       \r
+       X_Node_useDocumentFragment = document.createDocumentFragment && ( !X.UA.IE || 5.5 <= X.UA.IE ) && document.createDocumentFragment(),\r
 \r
 /*\r
  * Node( rawElement | rawTextnode | htmlString | textString )\r
- */\r
-\r
-X.Dom.Node = X.EventDispatcher.inherits(\r
+ */    \r
+       Node = X.Dom.Node = X.EventDispatcher.inherits(\r
        'XDomNode',\r
        X.Class.POOL_OBJECT,\r
        {\r
@@ -44,7 +57,7 @@ X.Dom.Node = X.EventDispatcher.inherits(
                _state     : 0,\r
                _dirty     : 0,\r
                \r
-               _isNew     : false,\r
+               _isNew     : false, // state にまとめる\r
                \r
                _rawObject : null,\r
                _rect      : null, // \r
@@ -59,9 +72,9 @@ X.Dom.Node = X.EventDispatcher.inherits(
                _id        : null,\r
                _className : '',\r
 \r
-               _attrs     : null, // X.Dom.Attr\r
+               _attrs     : null, // X_Node_Attr\r
                _newAttrs  : null,\r
-               _attrText  : '', // X.Dom.Attr.objToAttrText が必要な場合は false が入っている\r
+               _attrText  : '', // X_Node_Attr.objToAttrText が必要な場合は false が入っている\r
                \r
                _css       : null, // X.Dom.Style\r
                _cssText   : null,\r
@@ -80,7 +93,7 @@ X.Dom.Node = X.EventDispatcher.inherits(
                                Node._newByTag  = false;\r
                                this._tag       = v.toUpperCase();\r
                                this._xnodeType = 1;\r
-                               this._state     = X.Dom.State.DISPLAY_INLINE; // todo\r
+                               this._state     = X_Node_State.DISPLAY_INLINE; // todo\r
                                arguments[ 1 ] && this.attr( arguments[ 1 ] );\r
                                css = arguments[ 2 ];\r
                                css && this[ X.Type.isString( css ) ? 'cssText' : 'css' ]( css );\r
@@ -89,32 +102,32 @@ X.Dom.Node = X.EventDispatcher.inherits(
                                Node._newByText = false;\r
                                this._text      = v;\r
                                this._xnodeType = 3;\r
-                               this._state     = X.Dom.State.DISPLAY_INLINE;\r
+                               this._state     = X_Node_State.DISPLAY_INLINE;\r
                        } else {\r
                                if( 1 < arguments.length ) return new X.Dom.NodeList( arguments );\r
                                if( X.Type.isArray( v ) && v.length ) return new X.Dom.NodeList( v );\r
                                //if( !this || this.append !== Node.prototype.append ){\r
                                //       return new Node( v );\r
                                //};\r
-                               switch( Node._getType( v ) ){\r
-                                       case Node.IS_XNODE :\r
-                                       case Node.IS_XNODE_LIST :\r
+                               switch( X_Node_getType( v ) ){\r
+                                       case X_Node_TYPE.XNODE :\r
+                                       case X_Node_TYPE.XNODE_LIST :\r
                                                return v;\r
-                                       case Node.IS_RAW_HTML :\r
-                                               if( xnode = Node._getXNode( v ) ) return xnode;\r
+                                       case X_Node_TYPE.RAW_HTML :\r
+                                               if( xnode = X_Node_getXNode( v ) ) return xnode;\r
                                                // v.parentNode || v.parentElement : dom1 || dom0\r
-                                               this.parent     = ( parent = v.parentNode || v.parentElement ) && parent.tagName /* ie7- */ && Node._getXNode( parent );\r
+                                               this.parent     = ( parent = v.parentNode || v.parentElement ) && parent.tagName /* ie7- */ && X_Node_getXNode( parent );\r
                                                this._root      = this.parent ? this.parent._root : null;\r
                                                this._rawObject = v;\r
                                                this._xnodeType = 1;\r
-                                               this._state     = X.Dom.State.DISPLAY_BLOCK; // todo\r
+                                               this._state     = X_Node_State.DISPLAY_BLOCK; // todo\r
                                                this._tag       = v.tagName.toUpperCase();\r
                                                this._id        = v.id;\r
                                                this._className = v.className;\r
                                                this.cssText( v.style.cssText );\r
-                                               // X.Dom.Dirty.CSS を落とす\r
+                                               // X_Node_Dirty.CSS を落とす\r
                                                this._dirty = 0;\r
-                                               // attr の回収は不可能、、、\r
+                                               // TODO attr の回収は不可能、、、\r
                                                if( X_UA_DOM.IE4 ){\r
                                                        v.setAttribute( 'UID', '' + uid );\r
                                                } else {\r
@@ -122,35 +135,35 @@ X.Dom.Node = X.EventDispatcher.inherits(
                                                };\r
                                                // childNodes...\r
                                                break;\r
-                                       case Node.IS_RAW_TEXT :\r
-                                               if( xnode = Node._getXNode( v ) ) return xnode;\r
-                                               this.parent     = Node._getXNode( v.parentNode );\r
+                                       case X_Node_TYPE.RAW_TEXT :\r
+                                               if( xnode = X_Node_getXNode( v ) ) return xnode;\r
+                                               this.parent     = X_Node_getXNode( v.parentNode );\r
                                                this._root      = this.parent ? this.parent._root : null;\r
                                                this._rawObject = v;\r
                                                this._xnodeType = 3;\r
-                                               this._state     = X.Dom.State.DISPLAY_INLINE;\r
+                                               this._state     = X_Node_State.DISPLAY_INLINE;\r
                                                this._text      = v.data;\r
                                                v.UID = uid;\r
                                                break;\r
-                                       case Node.IS_HTML_STRING :\r
-                                       case Node.IS_STRING :\r
-                                               if( xnodes = X.Dom.parse( v, true ) && 1 < xnodes.length ) return new X.Dom.NodeList( xnodes );\r
+                                       case X_Node_TYPE.HTML_STRING :\r
+                                       case X_Node_TYPE.STRING :\r
+                                               if( xnodes = X_HtmlParser_parse( v, true ) && 1 < xnodes.length ) return new X.Dom.NodeList( xnodes );\r
                                                if( xnodes.length ) return xnodes[ 0 ];\r
                                                return Node.none;\r
-                                       case Node.IS_IMAGE :\r
-                                               if( xnode = Node._getXNode( v ) ) return xnode;\r
+                                       case X_Node_TYPE.IMAGE :\r
+                                               if( xnode = X_Node_getXNode( v ) ) return xnode;\r
                                                this._rawObject = v;\r
                                                this._xnodeType = 4;\r
                                                v.UID           = uid;\r
-                                               this._state     = X.Dom.State.EXIST;\r
+                                               this._state     = X_Node_State.EXIST;\r
                                                break;\r
                                        /*\r
-                                       case Node.IS_WINDOW :\r
-                                       case Node.IS_DOCUMENT :\r
-                                               if( xnode = Node._getXNode( v ) ) return xnode;\r
+                                       case X_Node_TYPE.WINDOW :\r
+                                       case X_Node_TYPE.DOCUMENT :\r
+                                               if( xnode = X_Node_getXNode( v ) ) return xnode;\r
                                                this._rawObject = v;\r
                                                this._xnodeType = 2;\r
-                                               this._state     = X.Dom.State.DISPLAY_BLOCK;\r
+                                               this._state     = X_Node_State.DISPLAY_BLOCK;\r
                                                break; */\r
                                        default :\r
                                                if( Node.none ) return Node.none;\r
@@ -163,54 +176,41 @@ X.Dom.Node = X.EventDispatcher.inherits(
        }\r
 );\r
 \r
-var Node = X.Dom.Node;\r
-\r
-Node.IS_XNODE       = 1;\r
-Node.IS_RAW_HTML    = 2;\r
-Node.IS_RAW_TEXT    = 3;\r
-Node.IS_HTML_STRING = 4;\r
-Node.IS_STRING      = 5;\r
-//Node.IS_DOC_FRAG    = 6;\r
-Node.IS_XNODE_LIST  = 7;\r
-Node.IS_WINDOW      = 8;\r
-Node.IS_DOCUMENT    = 9;\r
-Node.IS_IMAGE       = 10;\r
-\r
-Node._getType = function( v ){\r
-       if( v === '' ) return Node.IS_STRING;\r
+function X_Node_getType( v ){\r
+       if( v === '' ) return X_Node_TYPE.STRING;\r
        if( !v ) return 0;\r
-       if( v === window ) return Node.IS_WINDOW;\r
-       if( v === document ) return Node.IS_DOCUMENT;\r
-       if( v.constructor === Node ) return Node.IS_XNODE;\r
-       if( v.constructor === X.Dom.NodeList ) return Node.IS_XNODE_LIST;\r
-       if( X.Type.isHTMLElement( v ) ) return Node.IS_RAW_HTML;\r
-       if( v.nodeType === 3 ) return Node.IS_RAW_TEXT;\r
-       if( X.Type.isImage( v ) ) return Node.IS_IMAGE;\r
-       if( typeof v === 'string' ){\r
-               return '<' === v.charAt( 0 ) && v.charAt( v.length - 1 ) === '>' ? Node.IS_HTML_STRING : Node.IS_STRING;\r
+       if( v === window ) return X_Node_TYPE.WINDOW;\r
+       if( v === document ) return X_Node_TYPE.DOCUMENT;\r
+       if( v.constructor === Node ) return X_Node_TYPE.XNODE;\r
+       if( v.constructor === X.Dom.NodeList ) return X_Node_TYPE.XNODE_LIST;\r
+       if( X.Type.isHTMLElement( v ) ) return X_Node_TYPE.RAW_HTML;\r
+       if( v.nodeType === 3 ) return X_Node_TYPE.RAW_TEXT;\r
+       if( X.Type.isImage( v ) ) return X_Node_TYPE.IMAGE;\r
+       if( X.Type.isString( v ) ){\r
+               return '<' === v.charAt( 0 ) && v.charAt( v.length - 1 ) === '>' ? X_Node_TYPE.HTML_STRING : X_Node_TYPE.STRING;\r
        };\r
-       //if( v.nodeType === 11 ) return Node.IS_DOC_FRAG;\r
+       //if( v.nodeType === 11 ) return X_Node_TYPE.DOC_FRAG;\r
        return 0;\r
 };\r
-Node._getXNode = function( v ){\r
+function X_Node_getXNode( v ){\r
        var uid, i, chashe, xnode;\r
-       switch( Node._getType( v ) ){\r
-               case Node.IS_XNODE :\r
-               case Node.IS_XNODE_LIST :\r
+       switch( X_Node_getType( v ) ){\r
+               case X_Node_TYPE.XNODE :\r
+               case X_Node_TYPE.XNODE_LIST :\r
                        return v;\r
-               case Node.IS_RAW_HTML :\r
-               case Node.IS_IMAGE :\r
+               case X_Node_TYPE.RAW_HTML :\r
+               case X_Node_TYPE.IMAGE :\r
                        // fake TextNode too.\r
                        if( X_UA_DOM.IE4 ){\r
                                uid = v.getAttribute( 'UID' );\r
                                return uid && Node._chashe[ uid ];\r
                        };\r
                        return v.UID && Node._chashe[ v.UID ];\r
-               case Node.IS_WINDOW :\r
-                       return Node._window;\r
-               case Node.IS_DOCUMENT :\r
+               case X_Node_TYPE.WINDOW :\r
+                       return X.ViewPort;\r
+               case X_Node_TYPE.DOCUMENT :\r
                        return Node._document;\r
-               case Node.IS_RAW_TEXT :\r
+               case X_Node_TYPE.RAW_TEXT :\r
                        if( v.UID ) return Node._chashe[ v.UID ];\r
                        for( chashe = Node._chashe, i = chashe.length; i; ){\r
                                if( ( xnode = Node._chashe[ --i ] ) && ( xnode._rawObject === v ) ) return xnode;\r
@@ -221,12 +221,12 @@ Node._getXNode = function( v ){
 \r
 Node.create = function( tag, opt_attrs, opt_css ){\r
        var list, i;\r
-       switch( Node._getType( tag ) ){\r
-               case Node.IS_STRING :\r
+       switch( X_Node_getType( tag ) ){\r
+               case X_Node_TYPE.STRING :\r
                        Node._newByTag = true;\r
                        return new Node( tag, opt_attrs, opt_css );\r
-               case Node.IS_HTML_STRING :\r
-                       list = X.Dom.parse( tag, true );\r
+               case X_Node_TYPE.HTML_STRING :\r
+                       list = X_HtmlParser_parse( tag, true );\r
                        for( i = list.length; 1 < i; ){\r
                                list[ --i ].destroy();\r
                        };\r
@@ -254,7 +254,7 @@ Node.isXmlDocument =
 \r
 Node._chashe     = [];\r
 Node.none        = Node._chashe[ 0 ] = new Node();\r
-Node._window     = new X.EventDispatcher( window );\r
+\r
 Node._document   = new X.EventDispatcher( document );\r
 Node._html       = null; // = Node._chashe[ 1 ] <html>\r
 Node._head       = null; // = Node._chashe[ 2 ] <head>\r
@@ -364,15 +364,15 @@ Node.prototype.append = function( v ){
        \r
        if( !( xnodes = this._xnodes ) ) this._xnodes = xnodes = [];\r
        \r
-       switch( Node._getType( v ) ){\r
-               case Node.IS_RAW_HTML :\r
-               case Node.IS_RAW_TEXT :\r
+       switch( X_Node_getType( v ) ){\r
+               case X_Node_TYPE.RAW_HTML :\r
+               case X_Node_TYPE.RAW_TEXT :\r
                        v = new Node( v );\r
                        break;\r
-               case Node.IS_HTML_STRING :\r
-               case Node.IS_STRING :\r
-                       return this.append.apply( this, X.Dom.parse( v, true ) );\r
-               case Node.IS_XNODE :\r
+               case X_Node_TYPE.HTML_STRING :\r
+               case X_Node_TYPE.STRING :\r
+                       return this.append.apply( this, X_HtmlParser_parse( v, true ) );\r
+               case X_Node_TYPE.XNODE :\r
                        if( v._xnodeType !== 1 && v._xnodeType !== 3 ) return this;\r
                        // 親の xnodes から v を消す\r
                        if( v.parent ){\r
@@ -424,19 +424,19 @@ Node.prototype.appendAt = function( start, v ){
                return this;\r
        };\r
 \r
-       switch( Node._getType( v ) ){\r
-               case Node.IS_RAW_HTML :\r
-               case Node.IS_RAW_TEXT :\r
+       switch( X_Node_getType( v ) ){\r
+               case X_Node_TYPE.RAW_HTML :\r
+               case X_Node_TYPE.RAW_TEXT :\r
                        v = new Node( v );\r
                        break;\r
-               case Node.IS_HTML_STRING :\r
-               case Node.IS_STRING :\r
-                       v = X.Dom.parse( v, true );\r
+               case X_Node_TYPE.HTML_STRING :\r
+               case X_Node_TYPE.STRING :\r
+                       v = X_HtmlParser_parse( v, true );\r
                        for( i = v.length; i; ){\r
                                this.appendAt( start, v[ --i ] );\r
                        };\r
                        return this;\r
-               case Node.IS_XNODE :\r
+               case X_Node_TYPE.XNODE :\r
                        if( v._xnodeType !== 1 && v._xnodeType !== 3 ) return this;\r
                        // 親の xnodes から v を消す\r
                        if( v.parent ){\r
@@ -465,14 +465,14 @@ Node.prototype.appendAt = function( start, v ){
 };\r
 \r
 Node.prototype.appendTo = function( parent, opt_index ){\r
-       switch( Node._getType( parent ) ){\r
-               case Node.IS_RAW_HTML :\r
+       switch( X_Node_getType( parent ) ){\r
+               case X_Node_TYPE.RAW_HTML :\r
                        parent = new Node( parent );\r
                        break;\r
-               case Node.IS_HTML_STRING :\r
-                       parent = X.Dom.parse( parent, true );\r
+               case X_Node_TYPE.HTML_STRING :\r
+                       parent = X_HtmlParser_parse( parent, true );\r
                        parent = parent[ 0 ] || parent;\r
-               case Node.IS_XNODE :\r
+               case X_Node_TYPE.XNODE :\r
                        break;\r
                default :\r
                        return this;\r
@@ -623,7 +623,7 @@ Node.prototype.contains = function( v ){
        var elm, type, xnodes, i;\r
        if( !v || this._xnodeType !== 1 ) return false;\r
        // contains ie4+\r
-       if( ( elm = this._rawObject || this._ie4getRawNode && this._ie4getRawNode() ) && document.contains && ( type = Node._getType( v ) ) && ( type === Node.IS_RAW_HTML || type === Node.IS_RAW_TEXT ) ){\r
+       if( ( elm = this._rawObject || this._ie4getRawNode && this._ie4getRawNode() ) && document.contains && ( type = X_Node_getType( v ) ) && ( type === X_Node_TYPE.RAW_HTML || type === X_Node_TYPE.RAW_TEXT ) ){\r
                return elm.contains( v );       \r
        };\r
        //if( document.compareDocumentPosition ){\r
@@ -690,7 +690,7 @@ Node.prototype.className = function( v ){
                if( this._className === v ) return this;\r
                v ? ( this._className = v ) : delete this._className;\r
        };\r
-       this._dirty |= X.Dom.Dirty.CLASSNAME;\r
+       this._dirty |= X_Node_Dirty.CLASSNAME;\r
        this._root && this._reserveUpdate();\r
        return this;\r
 };\r
@@ -766,7 +766,7 @@ Node.prototype.html = function( html ){
        // setter\r
        if( html !== undefined ){ // String 以外に Number や false null なども許可\r
                if( this._xnodeType === 3 ) return this.text( html );\r
-               return html ? this.empty().append.apply( this, X.Dom.parse( html, true ) ) : this.empty();\r
+               return html ? this.empty().append.apply( this, X_HtmlParser_parse( html, true ) ) : this.empty();\r
        };\r
        \r
        // getter\r
@@ -774,14 +774,14 @@ Node.prototype.html = function( html ){
                return this._text;\r
        };\r
        \r
-       if( this._dirty & X.Dom.Dirty.CSS && !( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
+       if( this._dirty & X_Node_Dirty.CSS && !( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
                delete this._cssText;\r
        };\r
        html = !Node._outerFlag ? [] : [\r
                '<', this._tag,\r
                this._id ? ' id="' + this._id + q : _,\r
                this._className ? ' class="' + this._className + q : _,\r
-               this._attrText === false ? ( this._attrText = X.Dom.Attr.objToAttrText( this._attrs ) ) : this._attrText,\r
+               this._attrText === false ? ( this._attrText = X_Node_Attr.objToAttrText( this._attrs ) ) : this._attrText,\r
                this._cssText ? ' style="' + this._cssText + q : _,\r
        '>' ];\r
        \r
@@ -806,7 +806,7 @@ Node.prototype.text = function( text ){
                        if( this._text !== text ){\r
                                text ? ( this._text = text ) : delete this.text;\r
                                this._root && this._reserveUpdate();\r
-                               this._dirty |= X.Dom.Dirty.CONTENT;\r
+                               this._dirty |= X_Node_Dirty.CONTENT;\r
                        };\r
                        return this;\r
                };\r
@@ -909,7 +909,7 @@ Node.prototype._reserveUpdate = function(){
 \r
 Node.prototype._startUpdate = function(){\r
        var removal, i, xnode, tmp;\r
-       if( X.Dom.readyState < X.Dom.Event.DOM_INIT ){\r
+       if( X_ViewPort_readyState < X_TEMP.SYSTEM_EVENT_INIT ){\r
                return;\r
        };\r
        if( this._updateTimerID ){\r
@@ -919,7 +919,7 @@ Node.prototype._startUpdate = function(){
                return;\r
        };\r
        // このイベントでサイズを取ると無限ループに\r
-       // X.Dom._listeners && X.Dom._listeners[ X.Dom.Event.BEFORE_UPDATE ] && X.Dom.dispatch( { type : X.Dom.Event.BEFORE_UPDATE } );\r
+       // X_ViewPort._listeners && X_ViewPort._listeners[ X.Event.BEFORE_UPDATE ] && X_ViewPort.dispatch( X.Dom.Event.BEFORE_UPDATE );\r
 \r
        removal = Node._reserveRemoval;\r
        \r
@@ -943,7 +943,7 @@ Node.prototype._startUpdate = function(){
        \r
        //console.log( 'end of _startUpdate().' );\r
        \r
-       X.Dom._listeners && X.Dom._listeners[ X.Dom.Event.AFTER_UPDATE ] && X.Dom.asyncDispatch( 0, { type : X.Dom.Event.AFTER_UPDATE } );\r
+       X_ViewPort._listeners && X_ViewPort._listeners[ X.Event.AFTER_UPDATE ] && X_ViewPort.asyncDispatch( X.Event.AFTER_UPDATE );\r
        //this._rawObject.style.visibility = tmp;\r
 };\r
 \r
@@ -953,7 +953,7 @@ Node.prototype._commitUpdate =
                        var elm = this._rawObject,\r
                                xnodes, l, i, frg, next, k, v;\r
 \r
-                       if( this._state & X.Dom.State.IE5_DISPLAY_NONE_FIX ){\r
+                       if( this._state & X_Node_State.IE5_DISPLAY_NONE_FIX ){\r
                                //alert( this._tag + ' ' + !!elm );\r
                                // filter の効いている要素だけdisplay:none が無視される模様。filter を切ればよい?\r
                                // 親が、display:none の場合は?\r
@@ -971,7 +971,7 @@ Node.prototype._commitUpdate =
                        } else\r
                        if( ( xnodes = this._xnodes ) && ( l = xnodes.length ) ) {\r
                                \r
-                               /*if( elm.childNodes.length !== l && ( frg = X.Dom._useDocumentFragment ) ){\r
+                               /*if( elm.childNodes.length !== l && ( frg = X_Node_useDocumentFragment ) ){\r
                                        for( i = 0; i < l; ++i ){\r
                                                frg.appendChild( xnodes[ i ]._actualCreate( true ) );\r
                                        };\r
@@ -988,7 +988,7 @@ Node.prototype._commitUpdate =
 \r
                        delete this._fontSize;\r
                        this._dirty && this._updateRawNode( elm );\r
-                       if( this._state & X.Dom.State.IE5_DISPLAY_NONE_FIX ){\r
+                       if( this._state & X_Node_State.IE5_DISPLAY_NONE_FIX ){\r
                                return nextElement;\r
                        };\r
                        return elm;\r
@@ -1009,7 +1009,7 @@ Node.prototype._commitUpdate =
                        xnodes = this._xnodes;\r
                        l      = xnodes ? xnodes.length : 0;\r
                        \r
-                       if( this._dirty & X.Dom.Dirty.IE4_TEXTNODE_FIX || ( this._state & X.Dom.State.IE4_ONLY_TEXT && ( l !== 1 || xnodes[ 0 ]._xnodeType !== 3 ) ) ){ // 1 < l && elm.children.length === 0\r
+                       if( this._dirty & X_Node_Dirty.IE4_TEXTNODE_FIX || ( this._state & X_Node_State.IE4_ONLY_TEXT && ( l !== 1 || xnodes[ 0 ]._xnodeType !== 3 ) ) ){ // 1 < l && elm.children.length === 0\r
                                html = [];\r
                                for( i = 0; i < l; ++i ){\r
                                        html[ i ] = xnodes[ i ]._actualCreate();\r
@@ -1018,9 +1018,9 @@ Node.prototype._commitUpdate =
                                for( i = 0; i < l; ++i ){\r
                                        xnodes[ i ]._afterActualCreate();\r
                                };\r
-                               this._state &= ~X.Dom.State.IE4_ONLY_TEXT;\r
+                               this._state &= ~X_Node_State.IE4_ONLY_TEXT;\r
                        } else\r
-                       if( this._state & X.Dom.State.IE4_ONLY_TEXT ){ // textNode が swap した場合の検出は、_root で行う\r
+                       if( this._state & X_Node_State.IE4_ONLY_TEXT ){ // textNode が swap した場合の検出は、_root で行う\r
                                text = xnodes[ 0 ];\r
                                if( text._dirty || !text._root ){\r
                                        elm.innerHTML = text._text;\r
@@ -1046,29 +1046,29 @@ Node.prototype._updateRawNode =
                        var attrs, rename, k, v;\r
 \r
                        // textNode\r
-                       if( this._dirty & X.Dom.Dirty.CONTENT ){\r
+                       if( this._dirty & X_Node_Dirty.CONTENT ){\r
                                elm.data = X_String_chrReferanceTo( this._text );\r
                                delete this._dirty;\r
                                return;\r
                        };\r
                        // id\r
-                       if( this._dirty & X.Dom.Dirty.ID ){\r
+                       if( this._dirty & X_Node_Dirty.ID ){\r
                                this._id ? ( elm.id = this._id ) : ( elm.id && elm.removeAttribute( 'id' ) );           \r
                        };\r
                        // className\r
-                       if( this._dirty & X.Dom.Dirty.CLASSNAME ){\r
+                       if( this._dirty & X_Node_Dirty.CLASSNAME ){\r
                                this._className ? ( elm.className = this._className ) : ( elm.className && elm.removeAttribute( X.UA.IE5678 ? 'className' : 'class' ) ); // className は ie7-?                         \r
 \r
                                // ie5 only\r
-                               if( X.Dom.State.IE5_DISPLAY_NONE_FIX && elm.currentStyle.display === 'none' ){\r
+                               if( X_Node_State.IE5_DISPLAY_NONE_FIX && elm.currentStyle.display === 'none' ){\r
                                        this._actualRemove();\r
-                                       this._state |= X.Dom.State.IE5_DISPLAY_NONE_FIX;\r
+                                       this._state |= X_Node_State.IE5_DISPLAY_NONE_FIX;\r
                                        return;\r
                                };\r
                        };\r
                        // style\r
                        // TODO display:none の場合、更新をスキップ\r
-                       if( this._dirty & X.Dom.Dirty.CSS ){\r
+                       if( this._dirty & X_Node_Dirty.CSS ){\r
                                if( this._cssText !== null || ( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
                                        X.UA.Opera78 || X.UA.NN6 ?\r
                                                elm.setAttribute( 'style', this._cssText ) : // opera8用\r
@@ -1080,14 +1080,14 @@ Node.prototype._updateRawNode =
                                };\r
                        };\r
                        \r
-                       if( this._dirty & X.Dom.Dirty.IE_FILTER ){\r
+                       if( this._dirty & X_Node_Dirty.IE_FILTER ){\r
                                elm.style.filter = X.Dom.Style.SPECIAL_FIX( this._css );\r
                        };\r
                        \r
                        // attr\r
                        // TODO display:none の場合、更新をスキップ\r
-                       if( this._dirty & X.Dom.Dirty.ATTR && ( attrs = this._newAttrs || this._attrs ) ){\r
-                               rename = X.Dom.Attr.renameForDOM;\r
+                       if( this._dirty & X_Node_Dirty.ATTR && ( attrs = this._newAttrs || this._attrs ) ){\r
+                               rename = X_Node_Attr.renameForDOM;\r
                                for( k in attrs ){\r
                                        if( !X.UA.MacIE && ( X.UA.IE5 || X.UA.IE55 ) ){ // IETester 5.5 ではエラーが出なかった.MultipulIE5.5 ではエラーが出たので\r
                                                if( this._tag === 'TEXTAREA' && k === 'value' ){\r
@@ -1100,7 +1100,7 @@ Node.prototype._updateRawNode =
                                        // TODO IE では input, なぜか buttonも、type の変更が出来ない、object も 同値で置き換えようとしても不可\r
                                        ( v = attrs[ k ] ) === undefined ?\r
                                                elm.removeAttribute( rename[ k ] || k ) :\r
-                                               ( elm[ rename[ k ] || k ] = X.Dom.Attr.noValue[ k ] ? k : v );                          \r
+                                               ( elm[ rename[ k ] || k ] = X_Node_Attr.noValue[ k ] ? k : v );                         \r
 \r
                                };\r
                                delete this._newAttrs;\r
@@ -1113,7 +1113,7 @@ Node.prototype._updateRawNode =
                        var attrs, rename, k, v;\r
 \r
                        // fake textNode\r
-                       if( this._dirty & X.Dom.Dirty.CONTENT ){\r
+                       if( this._dirty & X_Node_Dirty.CONTENT ){\r
                                elm.innerText = this._text;\r
                                delete this._dirty;\r
                                return;\r
@@ -1124,14 +1124,14 @@ Node.prototype._updateRawNode =
                 * title、className、id、lang、language には setAttribute でなく、element.id で直接読み書きできる\r
                 */     \r
                        // id\r
-                       if( this._dirty & X.Dom.Dirty.CONTENT ) elm.setAttribute( 'id', this._id || ( 'ie4uid' + xnode._uid ) );\r
+                       if( this._dirty & X_Node_Dirty.CONTENT ) elm.setAttribute( 'id', this._id || ( 'ie4uid' + xnode._uid ) );\r
 \r
                        // className\r
-                       if( this._dirty & X.Dom.Dirty.CLASSNAME ){\r
+                       if( this._dirty & X_Node_Dirty.CLASSNAME ){\r
                                this._className ? ( elm.className = this._className ) : elm.removeAttribute( 'class' );\r
                        };\r
                        // style\r
-                       if( this._dirty & X.Dom.Dirty.CSS ){\r
+                       if( this._dirty & X_Node_Dirty.CSS ){\r
                                if( this._cssText !== null || ( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
                                        elm.style.cssText = this._cssText;\r
                                } else {\r
@@ -1141,19 +1141,19 @@ Node.prototype._updateRawNode =
                                };\r
                        };\r
                        \r
-                       if( this._dirty & X.Dom.Dirty.IE_FILTER ){\r
+                       if( this._dirty & X_Node_Dirty.IE_FILTER ){\r
                                this._rawObject.style.filter = X.Dom.Style.SPECIAL_FIX( this._css );\r
                        };\r
                        \r
                        // attr\r
-                       if( this._dirty & X.Dom.Dirty.ATTR && ( attrs = this._newAttrs || this._attrs ) ){\r
-                               rename = X.Dom.Attr.renameForDOM;\r
+                       if( this._dirty & X_Node_Dirty.ATTR && ( attrs = this._newAttrs || this._attrs ) ){\r
+                               rename = X_Node_Attr.renameForDOM;\r
                                for( k in attrs ){\r
                                        ( v = attrs[ k ] ) === undefined ?\r
                                                elm.removeAttribute( rename[ k ] || k ) :\r
                                        this._tag === 'TEXTAREA' && k === 'value' ?\r
                                                ( elm.innerText = v ) :\r
-                                               elm.setAttribute( rename[ k ] || k, X.Dom.Attr.noValue[ k ] ? k : v ); // TODO X.Dom.Attr.noValue[ k ] ? k : v\r
+                                               elm.setAttribute( rename[ k ] || k, X_Node_Attr.noValue[ k ] ? k : v ); // TODO X_Node_Attr.noValue[ k ] ? k : v\r
                                };\r
                                delete this._newAttrs;\r
                        };\r
@@ -1191,25 +1191,25 @@ Node.prototype._actualCreate =
                };\r
                \r
                if( !elm ){\r
-                       if( this._dirty & X.Dom.Dirty.CSS && !( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
+                       if( this._dirty & X_Node_Dirty.CSS && !( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
                                delete this._cssText;\r
                        };\r
                        this._isNew = true;\r
                        this._rawObject = elm =\r
-                               X.Dom._strictElmCreation ?\r
+                               X_Node_strictElmCreation ?\r
                                        document.createElement( [\r
                                                '<', this._tag,\r
                                                        ' UID="', this._uid, '"',\r
                                                        this._id ? ' id="' + this._id + '"' : '',\r
                                                        this._className ? ' class="' + this._className + '"' : '',\r
-                                                       this._attrText === false ? ( this._attrText = X.Dom.Attr.objToAttrText( this._attrs ) ) : this._attrText,\r
+                                                       this._attrText === false ? ( this._attrText = X_Node_Attr.objToAttrText( this._attrs ) ) : this._attrText,\r
                                                        this._cssText ? ' style="' + this._cssText + '"' : '',\r
                                                '>' ].join( '' ) ) :\r
                                        document.createElement( this._tag );\r
                };\r
-               if( X.Dom._useDocumentFragment ){\r
+               if( X_Node_useDocumentFragment ){\r
                        if( ( xnodes = this._xnodes ) && ( l = xnodes.length ) ){\r
-                               !isChild && ( frg = X.Dom._useDocumentFragment ).appendChild( elm );\r
+                               !isChild && ( frg = X_Node_useDocumentFragment ).appendChild( elm );\r
                                for( i = 0; i < l; ++i ){\r
                                        elm.appendChild( xnodes[ i ]._actualCreate( true ) );\r
                                };\r
@@ -1229,14 +1229,14 @@ Node.prototype._actualCreate =
                } else {\r
                        if( this._rawObject && !isChild ) this._actualRemove( true );\r
                        \r
-                       if( this._dirty & X.Dom.Dirty.CSS && !( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
+                       if( this._dirty & X_Node_Dirty.CSS && !( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
                                delete this._cssText;\r
                        };\r
                        \r
                        html = [\r
                                '<', this._tag, ' id=', ( this._id || ( 'ie4uid' + uid ) ), ' UID="', uid, '"',\r
                                this._className ? ' class="' + this._className + '"' : '',\r
-                               this._attrText === false ? ( this._attrText = X.Dom.Attr.objToAttrText( this._attrs ) ) : this._attrText,\r
+                               this._attrText === false ? ( this._attrText = X_Node_Attr.objToAttrText( this._attrs ) ) : this._attrText,\r
                                this._cssText ? ' style="' + this._cssText + '"' : '',\r
                        '>' ];\r
                        \r
@@ -1246,7 +1246,7 @@ Node.prototype._actualCreate =
                                        // only textnode\r
                                        html[ n ] = xnodes[ 0 ]._text;\r
                                        ++n;\r
-                                       this._state |= X.Dom.State.IE4_ONLY_TEXT;\r
+                                       this._state |= X_Node_State.IE4_ONLY_TEXT;\r
                                } else {\r
                                        for( i = 0; i < l; ++i ){\r
                                                html[ n ] = xnodes[ i ]._actualCreate( true );\r
@@ -1278,20 +1278,20 @@ Node.prototype._afterActualCreate =
                l      = xnodes && xnodes.length;\r
                \r
                if( this._isNew ){\r
-                       if( !X.Dom._useDocumentFragment && l ){// docFrg が使えない場合、doc 追加後に子を追加\r
+                       if( !X_Node_useDocumentFragment && l ){// docFrg が使えない場合、doc 追加後に子を追加\r
                                for( i = 0; i < l; ++i ){\r
                                        elm.appendChild( xnodes[ i ]._actualCreate( true ) );\r
                                };\r
                        };\r
-                       if( X.Dom._strictElmCreation ){\r
-                               if( this._dirty & X.Dom.Dirty.IE_FILTER ){\r
+                       if( X_Node_strictElmCreation ){\r
+                               if( this._dirty & X_Node_Dirty.IE_FILTER ){\r
                                        elm.style.filter = X.Dom.Style.SPECIAL_FIX( this._css );\r
                                };\r
                                delete this._dirty;\r
                        } else {\r
                                elm.UID = this._uid;\r
                                this._newAttrs = this._attrs;\r
-                               this._dirty = X.Dom.Dirty.ID | X.Dom.Dirty.CLASSNAME | X.Dom.Dirty.CSS | X.Dom.Dirty.ATTR | X.Dom.Dirty.IE_FILTER;\r
+                               this._dirty = X_Node_Dirty.ID | X_Node_Dirty.CLASSNAME | X_Node_Dirty.CSS | X_Node_Dirty.ATTR | X_Node_Dirty.IE_FILTER;\r
                                this._updateRawNode( elm );\r
                        };\r
                        \r
@@ -1319,7 +1319,7 @@ Node.prototype._afterActualCreate =
                        };\r
                };\r
                // textarea への value の適用はここで\r
-               if( this._dirty & X.Dom.Dirty.IE_FILTER ){\r
+               if( this._dirty & X_Node_Dirty.IE_FILTER ){\r
                        this._ie4getRawNode().style.filter = X.Dom.Style.SPECIAL_FIX( this._css );\r
                };\r
                delete this._dirty;\r
@@ -1363,7 +1363,7 @@ Node.prototype._actualRemove =
                        if( !elm ) return;\r
                        this._xnodeType === 1 && X_EventDispatcher_toggleAllEvents( this, false );// イベントの退避\r
                        \r
-                       if( X.Dom.Attr.HAS_VALUE[ this._tag ] && ( !this._newAttrs || !X_Object_inObject( 'value', this._newAttrs ) ) ){\r
+                       if( X_Node_Attr.HAS_VALUE[ this._tag ] && ( !this._newAttrs || !X_Object_inObject( 'value', this._newAttrs ) ) ){\r
                                this._attrs.value = elm.value;\r
                        };\r
                        elm.removeAttribute( 'id' ); // ?\r