OSDN Git Service

Version 0.6.12.
authoritozyun <itozyun@user.sourceforge.jp>
Sun, 10 Nov 2013 10:30:12 +0000 (19:30 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Sun, 10 Nov 2013 10:30:12 +0000 (19:30 +0900)
29 files changed:
0.6.x/css/ju.css
0.6.x/index.html
0.6.x/js/bootstrap.js
0.6.x/js/core/00_X.js [new file with mode: 0644]
0.6.x/js/core/00_builtin.js
0.6.x/js/core/01_XUa.js
0.6.x/js/core/03_XCallback.js
0.6.x/js/core/05_XTimer.js
0.6.x/js/core/06_XEventDispatcher.js
0.6.x/js/core/07_XNotification.js
0.6.x/js/dom/10_XDom.js [new file with mode: 0644]
0.6.x/js/dom/10_XDomStyle.js [deleted file]
0.6.x/js/dom/11_XDomEvent.js [moved from 0.6.x/js/dom/13_XDomEvent.js with 83% similarity]
0.6.x/js/dom/12_XDomNode.js [moved from 0.6.x/js/dom/14_XDomNode.js with 75% similarity]
0.6.x/js/dom/13_XDomStyle.js [new file with mode: 0644]
0.6.x/js/dom/14_XDomAttr.js [moved from 0.6.x/js/dom/11_XDomAttr.js with 55% similarity]
0.6.x/js/dom/15_XDomAnime.js [new file with mode: 0644]
0.6.x/js/dom/16_XDomNodeList.js [moved from 0.6.x/js/dom/15_XDomNodeList.js with 100% similarity]
0.6.x/js/dom/17_XDomQuery.js [moved from 0.6.x/js/dom/16_XDomQuery.js with 100% similarity]
0.6.x/js/dom/17_XView.js [deleted file]
0.6.x/js/dom/18_XDomParser.js [moved from 0.6.x/js/dom/12_XDomParser.js with 98% similarity]
0.6.x/js/ui/00_XUI.js [new file with mode: 0644]
0.6.x/js/ui/04_XUI_Event.js [new file with mode: 0644]
0.6.x/js/ui/05_XUI_Gesture.js
0.6.x/js/ui/AbstractDisplayContainer.js
0.6.x/js/ui/AbstractDisplayNode.js
0.6.x/js/ui/DisplayNodeStyle.js
0.6.x/js/ui/PageRoot.js
0.6.x/js/ui/Text.js

index c9967d4..63c6f10 100644 (file)
@@ -6,14 +6,55 @@ html, body {
        overflow : hidden;\r
 }\r
 \r
-/*  mouse-operation-catcher\r
---------------------------------------------------------------------------------------*/       \r
+#xui div {\r
+/* 要素は絶対配置される */\r
+       position           : absolute;\r
+       top                : 0;\r
+       left               : 0;\r
+       padding            : 0;\r
+       margin             : 0;\r
+/* ブラウザのレイアウト機能による auto なサイズ指定は行わない */\r
+       overflow           : hidden;\r
+/* border-box がデフォルト */\r
+       box-sizing         : border-box;\r
+       -o-box-sizing      : border-box;\r
+       -ms-box-sizing     : border-box;\r
+       -moz-box-sizing    : border-box;\r
+       -khtml-box-sizing  : border-box;\r
+       -webkit-box-sizing : border-box;\r
+/* browser bug fix */\r
+       -moz-opacity       : 0.99;\r
+       zoom               : 1;\r
+}\r
+\r
+/*------------------------------------------------------------------------------------\r
+ *  mouse-operation-catcher\r
+ */\r
        .mouse-operation-catcher {\r
                position : absolute;\r
                top      : 0;\r
                left     : 0;\r
                width    : 100%;\r
                height   : 100%; /* 100% don't work for ie6, so ie6 need to set height as 'XXpx' by js */\r
+               \r
+               user-select                 : none;\r
+               -moz-user-select            : none;\r
+               -khtml-user-select          : none;\r
+               -webkit-user-select         : none;\r
+\r
+               /* this makes the element blocking in IE10 >, you could experiment with the value\r
+                  see for more options this issue; https://github.com/EightMedia/hammer.js/issues/241 */\r
+               touch-action                : none;\r
+               -ms-touch-action            : none;\r
+               touch-callout               : none;\r
+               -webkit-touch-callout       : none;\r
+               content-zooming             : none;\r
+               -ms-content-zooming         : none;\r
+               user-drag                   : none;\r
+               -khtml-user-drag            : none;\r
+               -webkit-user-drag           : none;\r
+               tap-highlight-color         : rgba(0,0,0,0);\r
+               -webkit-tap-highlight-color : rgba(0,0,0,0);\r
        }\r
        .ActiveX-enabled .mouse-operation-catcher {\r
                background-color : #fff;\r
@@ -30,7 +71,19 @@ html, body {
                background : url( "../images/opacity0.gif" ) fixed repeat;\r
        }\r
 \r
+/*------------------------------------------------------------------------------------\r
+ *  hidden-sysyem-node\r
+ */\r
+.hidden-sysyem-node {\r
+       position   : absolute;\r
+       left       : 100%;\r
+       top        : 0;\r
+       visibility : hidden;\r
+}\r
 \r
+/*------------------------------------------------------------------------------------\r
+ *  mouse-operation-catcher\r
+ */\r
 .jul-hover {\r
        opacity : 0.5;\r
 }\r
@@ -43,9 +96,95 @@ html, body {
 .VBox,\r
 .HBox,\r
 .TileBox,\r
-.ChromeBox {\r
+.ChromeBox,\r
+.ScrollBox {\r
        position        : absolute;\r
        overflow        : hidden;\r
        box-sizing      : border-box;\r
        -moz-box-sizing : border-box;\r
-}
\ No newline at end of file
+}\r
+\r
+/*  Scrollbox\r
+--------------------------------------------------------------------------------------*/\r
+       .ScrollBox-Scroller {\r
+               transform       : translate( 0, 0 );\r
+               transformOrigin : '0 0';\r
+               position        : absolute;\r
+       }\r
+               .ScrollBox-Scrollbar-Wrapper-V,\r
+               .ScrollBox-Scrollbar-Wrapper-H,\r
+               .ScrollBox-Scrollbar-Wrapper-V-withH,\r
+               .ScrollBox-Scrollbar-Wrapper-H-withV {\r
+                       position : absolute;\r
+                       z-index  : 100;\r
+                       overflow : hidden;\r
+               }\r
+               .ScrollBox-Scrollbar-Wrapper-V,\r
+               .ScrollBox-Scrollbar-Wrapper-V-withH {\r
+                       width  : 7px;\r
+                       top    : 2px;\r
+                       right  : 1px;\r
+               }\r
+               .ScrollBox-Scrollbar-Wrapper-V {\r
+                       bottom : 2px;\r
+               }\r
+               .ScrollBox-Scrollbar-Wrapper-V-withH {\r
+                       bottom : 7px;\r
+               }\r
+               .ScrollBox-Scrollbar-Wrapper-H,\r
+               .ScrollBox-Scrollbar-Wrapper-H-withV {\r
+                       height : 7px;\r
+                       bottom : 1px;\r
+                       left   : 2px;\r
+               }\r
+               .ScrollBox-Scrollbar-Wrapper-H {\r
+                       right  : 2px;\r
+               }\r
+               .ScrollBox-Scrollbar-Wrapper-H-withV {\r
+                       right  : 7px;\r
+               }\r
+                       .ScrollBox-Scrollbar-Indicator-V,\r
+                       .ScrollBox-Scrollbar-Indicator-H {\r
+                               position   : absolute;\r
+                               z-index    : 100;\r
+                               background : #000;\r
+                               background : rgba(0,0,0,0.5);\r
+                               border     : 1px solid #fff;\r
+                               border     : 1px solid rgba(255,255,255,0.9);\r
+                               background-clip         : padding-box;\r
+                               -o-background-clip      : padding-box;\r
+                               -ms-background-clip     : padding-box;\r
+                               -moz-background-clip    : padding-box;\r
+                               -khtml-background-clip  : padding-box;\r
+                               -webkit-background-clip : padding-box;\r
+                               box-sizing              : border-box;\r
+                               -o-box-sizing           : border-box;\r
+                               -ms-box-sizing          : border-box;\r
+                               -moz-box-sizing         : border-box;\r
+                               -khtml-box-sizing       : border-box;\r
+                               -webkit-box-sizing      : border-box;\r
+                               border-radius           : 3px;\r
+                               -o-border-radius        : 3px;\r
+                               -ms-border-radius       : 3px;\r
+                               -moz-border-radius      : 3px;\r
+                               -khtml-border-radius    : 3px;\r
+                               -webkit-border-radius   : 3px;\r
+                               transition-property     : transform;\r
+                               -o-transition-property      : -o-transform;\r
+                               -ms-transition-property     : -ms-transform;\r
+                               -moz-transition-property    : -moz-transform;\r
+                               -khtml-transition-property  : -khtml-transform;\r
+                               -webkit-transition-property : -webkit-transform;\r
+                               transform: translate(0,0);\r
+                               -o-transform: translate(0,0);\r
+                               -ms-transform: translate(0,0);\r
+                               -moz-transform: translate(0,0);\r
+                               -khtml-transform: translate(0,0);\r
+                               -webkit-transform: translate(0,0);\r
+                       }\r
+                       .ScrollBox-Scrollbar-Indicator-V {\r
+                               width:100%;\r
+                       }\r
+                       .ScrollBox-Scrollbar-Indicator-H {\r
+                               height:100%;\r
+                       }
\ No newline at end of file
index f49628d..743d325 100644 (file)
@@ -10,6 +10,7 @@
        <link rel="stylesheet" type="text/css" media="all" href="css/ju.css">\r
 \r
        <script type="text/javascript" src="js/core/00_builtin.js"></script>\r
+       <script type="text/javascript" src="js/core/00_X.js"></script>\r
        <script type="text/javascript" src="js/core/01_XUa.js"></script>\r
        <script type="text/javascript" src="js/core/02_XType.js"></script>\r
        \r
        <script type="text/javascript" src="js/core/06_XEventDispatcher.js"></script>\r
        <script type="text/javascript" src="js/core/07_XNotification.js"></script>\r
        \r
-       <script type="text/javascript" src="js/dom/10_XDomStyle.js"></script>\r
-       <script type="text/javascript" src="js/dom/12_XDomParser.js"></script>\r
-       <script type="text/javascript" src="js/dom/13_XDomEvent.js"></script>\r
-       <script type="text/javascript" src="js/dom/14_XDomNode.js"></script>\r
-       <script type="text/javascript" src="js/dom/15_XDomNodeList.js"></script>\r
-       <script type="text/javascript" src="js/dom/16_XDomQuery.js"></script>   \r
-       <script type="text/javascript" src="js/dom/17_XView.js"></script>\r
-       \r
+       <script type="text/javascript" src="js/dom/10_XDom.js"></script>\r
+       <script type="text/javascript" src="js/dom/11_XDomEvent.js"></script>\r
+       <script type="text/javascript" src="js/dom/12_XDomNode.js"></script>\r
+       <script type="text/javascript" src="js/dom/13_XDomStyle.js"></script>\r
+       <script type="text/javascript" src="js/dom/14_XDomAttr.js"></script>\r
+       <!-- <script type="text/javascript" src="js/dom/15_XDomAnime.js"></script> -->\r
+       <script type="text/javascript" src="js/dom/16_XDomNodeList.js"></script>\r
+       <script type="text/javascript" src="js/dom/17_XDomQuery.js"></script>\r
+       <script type="text/javascript" src="js/dom/18_XDomParser.js"></script>\r
        \r
+       <script type="text/javascript" src="js/ui/00_XUI.js"></script>\r
        <script type="text/javascript" src="js/ui/00_XUI_Type.js"></script>\r
        <script type="text/javascript" src="js/ui/01_XUI_Option.js"></script>\r
        <script type="text/javascript" src="js/ui/02_XUI_Dirty.js"></script>\r
        <script type="text/javascript" src="js/ui/03_XUI_Attr.js"></script>\r
        <script type="text/javascript" src="js/ui/04_XUI_AttrNo.js"></script>\r
+       <script type="text/javascript" src="js/ui/04_XUI_Event.js"></script>\r
        \r
+       <script type="text/javascript" src="js/ui/05_XUI_Gesture.js"></script>\r
        <script type="text/javascript" src="js/ui/AbstractDisplayNode.js"></script>\r
        <script type="text/javascript" src="js/ui/AbstractDisplayContainer.js"></script>\r
        <script type="text/javascript" src="js/ui/DisplayNodeStyle.js"></script>\r
@@ -43,9 +48,9 @@
        <script type="text/javascript" src="js/ui/HBox.js"></script>\r
        <script type="text/javascript" src="js/ui/TileBox.js"></script>\r
        <script type="text/javascript" src="js/ui/ChromeBox.js"></script>\r
+       <script type="text/javascript" src="js/ui/ScrollBox.js"></script>\r
        <script type="text/javascript" src="js/ui/PageRoot.js"></script>\r
        <script type="text/javascript" src="js/ui/Text.js"></script>\r
 </head>\r
-<body>\r
-</body>\r
+<body></body>\r
 </html>
\ No newline at end of file
index d47b9d6..dc8c884 100644 (file)
@@ -1,6 +1,6 @@
 /*\r
  * + checkActiveX\r
- * + fetch core lib\r
+ * + fetch core lib   x_ie6.js || x._gecko36.js\r
  * + ResponsiveImage\r
  */\r
 \r
@@ -170,7 +170,7 @@ var ResponsiveImage = {
                        delete ResponsiveImage._onload;\r
                        \r
                        ResponsiveImage.onResize();\r
-                       X.View.add( ResponsiveImage.onResize );\r
+                       X.Dom.add( ResponsiveImage.onResize );\r
                };\r
        },\r
        start : function(){\r
diff --git a/0.6.x/js/core/00_X.js b/0.6.x/js/core/00_X.js
new file mode 100644 (file)
index 0000000..c0fd382
--- /dev/null
@@ -0,0 +1,53 @@
+if( !window['console'] ) console = { log : function(){} };\r
+\r
+var undefined,\r
+       X = X || {\r
+                       \r
+               emptyFunction : new Function,\r
+               \r
+               inHead        : (function( s, p ){\r
+                       s = s[ s.length - 1 ];\r
+                       p = s.parent || s.parentNode;\r
+                       if( !p ) return true;// ??\r
+                       return p.tagName.toLowerCase() === 'head';\r
+               })( document.scripts || document.getElementsByTagName( 'script' ) || document.all.tags( 'script' ) ),\r
+               \r
+               getTime : Date.now ? new Function( 'return Date.now()' ) : new Function( 'return +new Date' ),\r
+               \r
+               parse : function( v ){\r
+                       var _v, n;\r
+                       if( Type.isString( v ) === true ){\r
+                               switch( v ){\r
+                                       case ''          : return v;\r
+                                       //case '{}'        : return {};\r
+                                       //case '[]'        : return [];\r
+                                       case 'NaN'       : return NaN;\r
+                                       case 'null'      : return null;\r
+                                       case 'true'      : return true;\r
+                                       case 'false'     : return false;\r
+                                       case 'Infinity'  : return Number.POSITIVE_INFINITY;\r
+                                       case '-Infinity' : return Number.NEGATIVE_INFINITY;     \r
+                                       case 'undefined' : return;\r
+                               };\r
+                               _v = v.split( ' ' ).join( '' );\r
+                               n  = _v - 0;\r
+                               if( '' + n === _v || '' + n === '0' + _v  ) return n;\r
+                       };\r
+                       return v;\r
+               },\r
+               \r
+               cleanupWhiteSpace : function( text ){\r
+                       text.indexOf( '\r\n' ) !== -1 && ( text = text.split( '\r\n' ).join( ' ' ) );\r
+                       text.indexOf( '\n\r' ) !== -1 && ( text = text.split( '\n\r' ).join( ' ' ) );\r
+                       text.indexOf( '\t' )   !== -1 && ( text = text.split( '\t' ).join( ' ' ) );\r
+                       text.indexOf( '\r' )   !== -1 && ( text = text.split( '\r' ).join( ' ' ) );\r
+                       text.indexOf( '\n' )   !== -1 && ( text = text.split( '\n' ).join( ' ' ) );\r
+                       text.indexOf( '\f' )   !== -1 && ( text = text.split( '\f' ).join( ' ' ) );\r
+                       text.indexOf( '\b' )   !== -1 && ( text = text.split( '\b' ).join( ' ' ) );\r
+                       while( text.indexOf( '  ' ) !== -1 ){\r
+                               text = text.split( '  ' ).join( ' ' );\r
+                       };\r
+                       return text;\r
+               }\r
+       };\r
+       \r
index c15f816..1458ee4 100644 (file)
@@ -48,7 +48,7 @@ Function.prototype.apply || (Function.prototype.apply = function (x, y) {
 Function.prototype.call || (Function.prototype.call = function () {\r
        var a = arguments, x = a[0], y = [], i = 1, j;\r
        for (j = a.length; i < j; ++i)\r
-               y[i - 1] = a[i]\r
+               y[i - 1] = a[i];\r
        return this.apply(x, y);\r
 });\r
 \r
index b04c1cc..573e649 100644 (file)
@@ -1,15 +1,6 @@
-if( !window['console'] ) console = { log : function(){} };\r
-\r
 /*\r
  * UA\r
  */\r
-var X = X || {\r
-       emptyFunction : new Function,\r
-       inHead        : (function( s ){\r
-               s = s[ s.length - 1 ];\r
-               return ( s.parent || s.parentNode ).tagName.toLowerCase() === ( 'head' );\r
-       })( document.scripts || document.getElementsByTagName( 'script' ) || document.all.tags( 'script' ) )\r
-};\r
 \r
 X.UA = (function( n, undefined ){\r
        var acme = {},\r
@@ -17,12 +8,18 @@ X.UA = (function( n, undefined ){
                dav  = n.appVersion,\r
                tv   = parseFloat(dav),\r
                i;\r
-       acme.Opera  = ( dua.indexOf("Opera") >= 0 ) ? tv : undefined;\r
+       acme.Opera  = ( 0 < dua.indexOf("Opera") ) ? tv : undefined;\r
+       acme.OperaMobile = ( 0 < dua.indexOf("Opera Mobi") ) ? tv : undefined;\r
+       \r
        acme.IE = undefined;\r
        if( document.all && !acme.Opera ){\r
                acme.IE = parseFloat(dav.split("MSIE ")[1]) || undefined;\r
                return acme;\r
        };\r
+       \r
+       // Blink\r
+       // Netfront\r
+       // iCab\r
        acme.Khtml  = ( dav.indexOf("Konqueror") >= 0 ) ? tv : undefined;\r
        acme.WebKit = parseFloat(dua.split("WebKit\/")[1]) || undefined;\r
        acme.Chrome = parseFloat(dua.split("Chrome\/")[1]) || undefined;\r
@@ -36,4 +33,20 @@ X.UA = (function( n, undefined ){
                };\r
        };\r
        return acme;\r
-})( navigator );
\ No newline at end of file
+})( navigator );\r
+\r
+X.UA.Android  = navigator.userAgent.toLowerCase().indexOf( 'android' ) !== -1;\r
+X.UA.iOS      = navigator.userAgent.toLowerCase().indexOf( 'iphone' ) !== -1 ||\r
+                               navigator.userAgent.toLowerCase().indexOf( 'ipad' ) !== -1 ||\r
+                               navigator.userAgent.toLowerCase().indexOf( 'ipod' ) !== -1;\r
+X.UA.TouchPad = navigator.userAgent.toLowerCase().indexOf( 'hp-tablet' ) !== -1;\r
+\r
+X.UA.EInk =\r
+       // Kobo Mozilla/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit/533.1 (KHTML, like Gecko) Verson/4.0 Mobile Safari/533.1 (Kobo Touch)\r
+       navigator.userAgent.indexOf( 'Kobo' ) !== -1 ||\r
+       // Kindle paperwhite Mozilla/5.0 (X11; U; Linux armv7l like Android; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/533.2+ Kindle/3.0+\r
+       navigator.userAgent.indexOf( 'Kindle' ) !== -1 ||\r
+       // Sony Reader Mozilla/5.0 (Linux; U; ja-jp; EBRD1101; EXT) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\r
+       navigator.userAgent.indexOf( 'EBRD' ) !== -1;\r
+\r
+if( X.UA.IE && X.UA.IE < 10 ) X.UA.ActiveX = !!window[ 'ActiveXObject' ];\r
index 40b22fc..cf4ffb9 100644 (file)
@@ -58,7 +58,7 @@ X.Callback = {
                        f.callback = callback;\r
                };\r
 \r
-               if( arg2 && typeof arg2.length === 'number' ){\r
+               if( X.Type.isArray( arg2 ) ){\r
                        f.add = arg2;\r
                };\r
                return f;\r
index d08c81e..85aa903 100644 (file)
@@ -13,7 +13,7 @@ X.Timer = ( function(){
                INDEX_TIME     = 0,\r
                INDEX_LAST     = 1,\r
                INDEX_COUNT    = 2,\r
-               INDEX_CALLBACK = 3;\r
+               INDEX_CALLBACK = 3,\r
                INDEX_UID      = 4;\r
        \r
        function loop(){\r
@@ -27,7 +27,7 @@ X.Timer = ( function(){
                        f   = queue[ INDEX_CALLBACK ];\r
                        c   = queue[ INDEX_COUNT ];\r
                        ret = f();\r
-                       if( ret === false || ret & X.Callback.UN_LISTEN || c === 1 ){\r
+                       if( ret & X.Callback.UN_LISTEN || c === 1 ){\r
                                list.splice( i, 1 );\r
                                f.kill();\r
                                queue.length = 0;\r
index a87a5cb..0793e46 100644 (file)
@@ -66,20 +66,20 @@ X.EventDispatcher = ( function(){
                        dispatch : function( e ){\r
                                // dispatch 中の listen は?\r
                                var list = getList( this, e.type ),\r
-                                       i, f, ret, sysOnly, _ret;\r
+                                       i = 0, f, ret, sysOnly, _ret;\r
                                if( !list ) return;\r
-                               for( i = list.length; i; ){\r
-                                       f = list[ --i ];\r
+                               for( ; i < list.length; ){\r
+                                       f = list[ i ];\r
                                        // once の場合リストから削除してからファイア\r
                                        if( f.once === true ){\r
                                                list.splice( i, 1 );\r
                                                ret = f( e );\r
+                                       } else\r
+                                       if( ( ret = f( e ) ) & X.Callback.UN_LISTEN ){\r
+                                               list.splice( i, 1 );\r
+                                               f.kill();\r
                                        } else {\r
-                                               ret = f( e );\r
-                                               if( ret === false || ret & X.Callback.UN_LISTEN ){\r
-                                                       list.splice( i, 1 );\r
-                                                       f.kill();\r
-                                               };\r
+                                               ++i;\r
                                        };\r
                                        if( list.length === 0 ){\r
                                                list.data[ e.type ] = void 0;\r
index a9e900f..50204c3 100644 (file)
@@ -14,7 +14,7 @@ X.Notification = {
        },\r
        _output : function( msg, level ){\r
                var body, $Area;\r
-               if( X.View && X.View.ready === true ){\r
+               if( X.Dom && X.Dom.ready === true ){\r
                        if( $Area = X.Notification._$LogArea ){\r
                                $Area.remove();\r
                                delete X.Notification._$LogArea;\r
diff --git a/0.6.x/js/dom/10_XDom.js b/0.6.x/js/dom/10_XDom.js
new file mode 100644 (file)
index 0000000..2a818e8
--- /dev/null
@@ -0,0 +1,124 @@
+(function( window, document ){\r
+       var view,\r
+               lock = 0, w = 0, h = 0,\r
+               resize, delayResize;\r
+\r
+/* -----------------------------------------------\r
+ * Resize\r
+ *  uupaa.js\r
+ */\r
+       function unlock(){ lock = 0; };\r
+       \r
+       if( X.UA.IE ){\r
+               resize = function(){\r
+                       var size, i, l;\r
+                       if( !lock++ ){\r
+                               size = X.Dom.getSize();\r
+                               if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED\r
+                                       w = size[ 0 ];\r
+                                       h = size[ 1 ];\r
+                                       X.Dom.dispatch( { type : X.Dom.Event.VIEW_RESIZED, w : w, h : h } );\r
+                               };\r
+                               X.Timer.once( 1, unlock );// delay unlock\r
+                       };\r
+               };\r
+       } else {\r
+               resize = function( e ){\r
+                       !lock++ && X.Timer.once( 40, delayResize );\r
+                       e.stopPropagation && e.stopPropagation();\r
+                       e.preventDefault && e.preventDefault();\r
+                       return false;\r
+               };\r
+               delayResize = function(){\r
+                       var size = X.Dom.getSize(),\r
+                               i, l;\r
+                       if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED\r
+                               w = size[ 0 ];\r
+                               h = size[ 1 ];\r
+                               X.Dom.dispatch( { type : X.Dom.Event.VIEW_RESIZED, w : w, h : h } );\r
+                       };\r
+                       X.Timer.once( 1, unlock );\r
+               };\r
+       };\r
+       \r
+       X.Dom = X.Class._override(\r
+               new X.EventDispatcher(),\r
+               {\r
+                       ready : false,\r
+                       getPointerPosition : function(){\r
+                               \r
+                       },\r
+                       /* 要素が視界に入った  http://remysharp.com/2009/01/26/element-in-view-event-plugin/ */\r
+                       inView : function( elm ){\r
+                               \r
+                       },\r
+                       _init : function(){\r
+                               var s, size, b, x;\r
+                               if( X.Dom.ready ) return X.Callback.UN_LISTEN;\r
+                               if( s = X.Dom._script ){\r
+                                       s.parentNode.removeChild( s );\r
+                                       s.onreadystatechange = X.emptyFunction;\r
+                                       s.onreadystatechange = null;\r
+                                       delete X.Dom._script;\r
+                               };\r
+                               delete X.Dom._init;\r
+                               X.Dom.ready = true;\r
+                               \r
+                               /* if( X.UA.IE ) */ X.Dom._view = ( document.compatMode !== "CSS1Compat" ? document.body : document.documentElement );\r
+                               size = X.Dom.getSize();\r
+                               \r
+                               X.Dom.dispatch( { type : X.Dom.Event.DOM_PREINIT, w : size[ 0 ], h : size[ 1 ] } );\r
+                               \r
+                               X.Dom.dispatch( { type : X.Dom.Event.INIT, w : size[ 0 ], h : size[ 1 ] } );\r
+                               \r
+                               if( X.UA.IE && X.UA.IE < 9 ){\r
+                                       X.Timer.add( 100, resize );\r
+                                       if( 5 <= X.UA.IE ){\r
+                                               b = document.body;\r
+                                               b.appendChild( x = document.createElement( 'div' ) );\r
+                                               x.style.cssText = 'width:1px;height:1px;line-height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';\r
+                                               b.className += [ b.className === '' ? '' : ' ', 'ActiveX-', 1 < x.offsetHeight ? 'enabled' : 'disabled' ].join( '' );\r
+                                               b.removeChild( x );                             \r
+                                       };\r
+                               } else {\r
+                                       X.Dom.Event.add( window, 'resize', resize );\r
+                               };                              \r
+                               \r
+                               //X.Timer.once( 0, X.Dom, X.Dom.dispatch, [ { type : X.Dom.Event.XDOM_READY, w : size[ 0 ], h : size[ 1 ] } ] );\r
+                               X.Dom.dispatch( { type : X.Dom.Event.XDOM_READY, w : size[ 0 ], h : size[ 1 ] } );\r
+                               return X.Callback.UN_LISTEN;\r
+                       },\r
+                       // _view : null, for ie\r
+                       getSize :\r
+                               X.UA.IE ?\r
+                                       new Function( 'return [ X.Dom._view.clientWidth, X.Dom._view.clientHeight ]' ) :\r
+                                       new Function( 'return [ window.innerWidth, window.innerHeight ]' ),\r
+                       getScrollPosition :\r
+                               window.pageXOffset !== undefined ?\r
+                                       new Function( 'return [window.pageXOffset,window.pageYOffset]' ) :\r
+                               window.scrollLeft  !== undefined ?\r
+                                       new Function( 'return [window.scrollLeft,window.scrollTop]') :\r
+                                       new Function( 'return [X.Dom._view.scrollLeft,X.Dom._view.scrollTop]' ),\r
+                       getDocumentSize : function(){\r
+                               return [\r
+                                       X.Dom._view.scrollWidth  || X.Dom._view.offsetWidth,\r
+                                       X.Dom._view.scrollHeight || X.Dom._view.offsetHeight\r
+                               ];\r
+                       }\r
+               }\r
+       );\r
+\r
+})( window, document );\r
+\r
+X.Dom.Dirty = {\r
+       CLEAN             :  0,\r
+       PAINT             :  1, // 再描画のみ必要\r
+       LAYOUT            :  2, // レイアウト(ボックスサイズ)の再計算が必要\r
+       UPDATE_FONT       :  4, // フォントサイズが変更された\r
+       UPDATE_CONTENT    :  8, // コンテンツが変更された\r
+       UPDATE_TAG        : 16\r
+};\r
+\r
+\r
+\r
+\r
diff --git a/0.6.x/js/dom/10_XDomStyle.js b/0.6.x/js/dom/10_XDomStyle.js
deleted file mode 100644 (file)
index 47a71e8..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-X.Dom = function(){ if( X.Dom._shortcut ) return X.Dom._shortcut.apply( this, arguments ); };
-
-X.Dom.Style = {
-       /* font-size -> fontSize */
-       camelize: function( cssProp ){
-           var parts = cssProp.split( ' ' ).join( '' ).split( '-' ),
-               l     = parts.length,
-               i, camelized;
-           if( l === 1 ) return parts[ 0 ];
-       
-           camelized = cssProp.charAt(0) === '-'
-             ? parts[ 0 ].charAt( 0 ).toUpperCase() + parts[ 0 ].substring( 1 )
-             : parts[ 0 ];
-       
-           for( i = 1; i < l; ++i ){
-               camelized += parts[ i ].charAt( 0 ).toUpperCase() + parts[ i ].substring( 1 );
-           };
-           return camelized;
-       },
-       REG_LARGE : /[A-Z]/g,
-       /* fontSize -> font-size */
-       uncamelize: function( str ){
-               return str.split( ' ' ).join( '' ).replace( X.Dom.Style.REG_LARGE, '-$&' ).toLowerCase();
-       },
-       objToCssText : function( obj ){
-               var css = [], uncamelize = X.Dom.Style.uncamelize, p;
-               for( p in obj ){
-                       css[ css.length ] = [ uncamelize( p ), obj[ p ] ].join( ':' );
-               };
-               return css.join( ';' );
-       }
-};
similarity index 83%
rename from 0.6.x/js/dom/13_XDomEvent.js
rename to 0.6.x/js/dom/11_XDomEvent.js
index cde6b45..3e14f51 100644 (file)
@@ -28,7 +28,16 @@ if( window.addEventListener ){
                // http://www.programming-magic.com/20090127231544/
                this.which         = e.which || ( e.button + 1 ); // 左:1, 中:2, 右:3
                
-               this.wheelDelta    = e.wheelDelta;
+               // https://developer.mozilla.org/ja/docs/DOM/DOM_event_reference/mousewheel
+               if( e.wheelDeltaY !== undefined ){
+                       this.wheelDeltaX = e.wheelDeltaX / 12;
+                       this.wheelDeltaY = e.wheelDeltaY / 12;
+               } else
+               if( e.wheelDelta !== undefined ){
+                       this.wheelDeltaX = this.wheelDeltaY = e.wheelDelta / 12;
+               } else {
+                       this.wheelDeltaX = this.wheelDeltaY = - e.detail * 3;
+               };
                
                if( e.constructor === window.TouchEvent ){
                        // TouchEvent
@@ -75,8 +84,11 @@ if( window.addEventListener ){
                //this.screenY       = e.screenY;
                this.pageX         = e.clientX + document.body.scrollLeft;
                this.pageY         = e.clientY + document.body.scrollTop;
-               this.offsetX       = e.offsetX;
-               this.offsetY       = e.offsetY;
+               
+               if( X.UA.IE && 5 <= X.UA.IE ){
+                       this.offsetX       = e.offsetX;
+                       this.offsetY       = e.offsetY;                 
+               };
                
                this.keyCode       = e.keyCode;
                this.altKey        = e.altKey;
@@ -99,11 +111,16 @@ if( window.addEventListener ){
                                        btn & 4 ? 2 :
                                        btn & 2 ? 3 : 0; // 左:1(click:0), 中:4, 右:2
                };
-
-               this.wheelDelta    = e.wheelDelta;
+               this.wheelDeltaX = this.wheelDeltaY = e.wheelDelta / 12;
        };
 };
 
+X.Dom.Event.DOM_PREINIT  = 0;
+X.Dom.Event.DOM_INIT     = 1;
+X.Dom.Event.XDOM_READY   = 2;
+X.Dom.Event.VIEW_RESIZED = 3;
+X.Dom.Event._LAST_EVENT  = 3;
+
 X.Dom.Event._Helper =
        document.addEventListener ?
                (function( elm, type ){
@@ -137,7 +154,7 @@ X.Dom.Event._Helper.prototype.removeEvent =
                        delete this.callback;
                }) :
                (function( migrate ){
-                       this.elm[ 'on' + this.type ] = X.Dom.Event.emptyFunc;
+                       this.elm[ 'on' + this.type ] = X.emptyFunction;
                        this.elm[ 'on' + this.type ] = '';
                        X.Callback._correct( this.callback );
                        if( migrate ) return;
@@ -228,7 +245,7 @@ X.Dom.Event.add = function( element, type, arg2, arg3, arg4 /* [ listener || ( c
        var XEvent = X.Dom.Event,
                hash   = XEvent._getHash( element, true ),
                helper = hash[ type ],
-               callback;
+               callback, list;
        if( typeof arg2 === 'function' ){
                callback = X.Callback.create( element, arg2, arg3 );
        } else {
@@ -297,7 +314,7 @@ X.Dom.Event.remove = function( /* element, type, arg2, arg3, arg4 */ ){
                type    = arguments[ 1 ],
                arg2, arg3, arg4,
                hash    = X.Dom.Event._getHash( element ),
-               helper, callback, i;
+               helper, callback, list, i;
        if( !hash ) return;
        
        switch( arguments.length ){
@@ -366,6 +383,35 @@ X.Dom.Event.restore = function( element ){
        };
 };
 
-if( !document.removeEventListener && !document.detachEvent ){
-       X.Dom.Event.emptyFunc = new Function();
-};
\ No newline at end of file
+
+
+/* -----------------------------------------------
+ * Document Ready
+ *  Dean Edwards/Matthias Miller/John Resig
+ */
+/* for ie9+/Mozilla/Opera9 */
+if( document.addEventListener ){
+       X.Dom.Event.add( document, 'DOMContentLoaded', X.Dom._init );
+} else
+if( 5 <= X.UA.IE && X.inHead ){
+       // if this script in Head
+       document.write( "<script id=__ie_onload defer src=javascript:void(0)><\/script>" );
+       X.Dom._script = document.getElementById( "__ie_onload" );
+       X.Dom._script.onreadystatechange = function(){
+               this.readyState === 'complete' && X.Dom._init();
+       };
+} else
+if( X.UA.WebKit ){ // sniff
+       X.Timer.add( 10, function(){
+               if( !X.Dom._init ) return X.Callback.UN_LISTEN;
+               if( 'loaded|complete'.indexOf( document.readyState ) !== -1 ) return X.Dom._init();
+       });
+};
+
+/* for other browsers */
+X.Dom.Event.add( window, 'load', X.Dom._init );
+
+//
+X.Dom.listenOnce( X.Dom.Event.XDOM_READY, function(e){ console.log( 'X.Dom XDomReady ' + X.Dom.ready ) } );
+
+X.Dom.listenOnce( X.Dom.Event.VIEW_RESIZED, function(e){ console.log( 'X.Dom VIEW_RESIZED ' + e.w + 'x' + e.h ) } );
\ No newline at end of file
similarity index 75%
rename from 0.6.x/js/dom/14_XDomNode.js
rename to 0.6.x/js/dom/12_XDomNode.js
index 8207eb2..826facd 100644 (file)
@@ -10,19 +10,16 @@ X.Dom.Node = function( v ){
                delete Node._newByTag;\r
                this._tag      = v;\r
                this._nodeType = 1;\r
+               arguments[ 1 ] && this.attr( arguments[ 1 ] );\r
+               arguments[ 2 ] && this.css( arguments[ 2 ] );\r
        } else\r
        if( Node._newByText ){\r
                delete Node._newByText;\r
                this._text     = v;\r
                this._nodeType = 3;\r
        } else {\r
-               if( 1 < arguments.length ){\r
-                       return new X.Dom.NodeList( arguments );\r
-               };\r
-               if( v && 1 < v.length && typeof v !== 'string' && v[ v.length - 1 ] ){\r
-                       return new X.Dom.NodeList( v );\r
-               };\r
-\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 ) return new Node( v );\r
 \r
                switch( Node._getType( v ) ){\r
@@ -51,7 +48,7 @@ X.Dom.Node = function( v ){
                        default :\r
                                if( Node.none ) return Node.none;\r
                                return;\r
-               };              \r
+               };\r
        };\r
        \r
        Node._chashe[ this._uid = uid ] = this;\r
@@ -59,6 +56,9 @@ X.Dom.Node = function( v ){
 \r
 var Node = X.Dom.Node;\r
 \r
+Node.root        = null;\r
+Node._systemNode = null;\r
+\r
 Node.IS_XNODE       = 1;\r
 Node.IS_RAW_HTML    = 2;\r
 Node.IS_RAW_TEXT    = 3;\r
@@ -73,12 +73,17 @@ Node.prototype._rawNode   = null;
 Node.prototype._tag       = null;\r
 Node.prototype._text      = null;\r
 Node.prototype._id        = null;\r
-Node.prototype._className = null;\r
-Node.prototype._attrs     = null;\r
-Node.prototype._children  = null;\r
-Node.prototype._events    = null;\r
+Node.prototype._className = '';\r
+Node.prototype._classText = ' ';\r
 Node.prototype.parent     = null;\r
 \r
+Node.prototype._xnodes    = null;\r
+Node.prototype._attrs     = null; // X.Dom.Attr\r
+Node.prototype._attrText  = '';\r
+Node.prototype._css       = null; // X.Dom.Style\r
+Node.prototype._cssText   = '';\r
+Node.prototype._events    = null; // X.Dom.Event\r
+\r
 Node._getType = function( v ){\r
        if( v === '' ) return Node.IS_STRING;\r
        if( !v ) return 0;\r
@@ -92,9 +97,9 @@ Node._getType = function( v ){
        if( v.nodeType === 11 ) return Node.IS_DOC_FRAG;\r
        return 0;\r
 };\r
-Node.create = function( tag, attr ){\r
+Node.create = function( tag, opt_attr, opt_css ){\r
        Node._newByTag = true;\r
-       return new Node( tag );\r
+       return new Node( tag, opt_attr, opt_css );\r
 };\r
 Node.createText = function( text ){\r
        Node._newByText = true;\r
@@ -126,27 +131,13 @@ Node.hasClass = function( elm, className ){
        return true;\r
 };\r
 \r
-Node.cleanupWhiteSpace = function( text ){\r
-       text.indexOf( '\r\n' ) !== -1 && ( text = text.split( '\r\n' ).join( ' ' ) );\r
-       text.indexOf( '\n\r' ) !== -1 && ( text = text.split( '\n\r' ).join( ' ' ) );\r
-       text.indexOf( '\t' )   !== -1 && ( text = text.split( '\t' ).join( ' ' ) );\r
-       text.indexOf( '\r' )   !== -1 && ( text = text.split( '\r' ).join( ' ' ) );\r
-       text.indexOf( '\n' )   !== -1 && ( text = text.split( '\n' ).join( ' ' ) );\r
-       text.indexOf( '\f' )   !== -1 && ( text = text.split( '\f' ).join( ' ' ) );\r
-       text.indexOf( '\b' )   !== -1 && ( text = text.split( '\b' ).join( ' ' ) );\r
-       while( text.indexOf( '  ' ) !== -1 ){\r
-               text = text.split( '  ' ).join( ' ' );\r
-       };\r
-       return text;\r
-};\r
-\r
 /* --------------------------------------\r
  *  Dom Level 2\r
  */\r
 if( document.getElementById ){\r
        Node._dom2cleanUp = function( xnode ){\r
                var elm      = xnode._rawNode,\r
-                       children = xnode._children,\r
+                       children = xnode._xnodes,\r
                        childNodes, i, l, child, _child;\r
                if( elm && children && ( childNodes = elm.childNodes ) ){\r
                        for( i = 0, l = children.length; i < l; ++i ){\r
@@ -155,7 +146,7 @@ if( document.getElementById ){
                                if( typeof child === 'string'  ) child = document.createTextNode( child );\r
                                if( ( _child = childNodes[ i ] ) !== child ){\r
                                        _child ?\r
-                                               elm.insetBefore( child, _child ) :\r
+                                               elm.insertBefore( child, _child ) :\r
                                                elm.appendChild( child );\r
                                        _child && elm.removeChild( _child );\r
                                };\r
@@ -194,7 +185,7 @@ Node.prototype._create =
                return node;\r
        }) :\r
        document.all ? (function( skipRemove, skipContainsDirty ){\r
-               var id, html, attrs, attr, children, i, l, child, toName, noValue, name;\r
+               var html, attrs, attr, children, i, l, child, toName, noValue, name;\r
                if( this._nodeType !== 1 ) return this._text;\r
                \r
                if( this._rawNode || this._ie4getRawNode() ){\r
@@ -208,33 +199,8 @@ Node.prototype._create =
                                return this._htmlText;\r
                        };\r
                };\r
-               id   = this._id || ( 'ie4uid' + this._uid );\r
-               html = [ '<', this._tag, ' id="', id, '"' ];\r
-               if( attrs = this._attrs ){\r
-                       toName  = X.Dom.Attr.toName;\r
-                       noValue = X.Dom.Attr.noValue;\r
-                       for( i in attrs ){ //\r
-                               attr = attrs[ i ];\r
-                               if( attr === true ){\r
-                                       html[ html.length ] = ' ' + name;\r
-                               } else {\r
-                                       html[ html.length ] = ' ' + name + '="' + attr + '"';\r
-                               };\r
-                               /*\r
-                        = 0, l = attrs.length; i < l; ++i ){\r
-                               if( attr = attrs[ i ] || attr === 0 ){\r
-                                       name = toName[ i ];\r
-                                       if( noValue[ name ] ){\r
-                                               html[ html.length ] = ' ' + name;\r
-                                       } else {\r
-                                               html[ html.length ] = ' ' + name + '="' + attr + '"';\r
-                                       };\r
-                               };*/\r
-                       };\r
-               };\r
-               html[ html.length ] = '>';\r
-\r
-               if( ( children = this._children ) && ( l = children.length ) ){\r
+               html = [ '<', this._tag, ' id="', ( this._id || ( 'ie4uid' + this._uid ) ), '"', this._classText, this._attrText, '>' ];\r
+               if( ( children = this._xnodes ) && ( l = children.length ) ){\r
                        for( i = 0; i < l; ++i ){\r
                                html[ html.length ] = children[ i ]._create( true, true );\r
                        };\r
@@ -246,24 +212,32 @@ Node.prototype._create =
 \r
 Node.prototype._afterCreate =\r
        ( document.appendChild ) ? (function( parent ){\r
-               var _children = this._children,\r
+               var _children = this._xnodes,\r
                        node      = this._rawNode,\r
                        eChildren = node.childNodes,\r
-                       _child, i, l;\r
+                       attrs, p, _child, i, l;\r
                this.parent = parent;\r
                if( this._nodeType !== 1 ) return;\r
                if( this._isNew ){\r
-                       if( _children && !document.createDocumentFragment ){    \r
+                       if( _children && !document.createDocumentFragment ){\r
                                Node._dom2cleanUp( this ); // docFrg が使えない場合、doc 追加後に子を追加\r
                        };\r
-                       node.UID = this._uid;\r
-                       // attr\r
-                       // イベントの復帰\r
-                       X.Dom.Event.restore( node );\r
+                       node.UID       = this._uid;\r
+                       node.id        = this._id;\r
+                       node.className = this._className;\r
+                       // ie では createElement に <div class=...> HTML 文字列を渡すことができる\r
+                       // 動的に生成した iframe に後から frameborder 等を設定しても無視される ie7\r
+                       if( attrs = this._attrs ){\r
+                               for( p in attrs ){\r
+                                       node[ p ] = attrs[ p ];\r
+                               };\r
+                       };\r
+                       node.style.cssText = this._cssText;\r
+                       X.Dom.Event.restore( node ); // イベントの復帰\r
                        delete this._isNew;\r
                };\r
                /*\r
-                * elm.childNodes を this._children にリンクさせる\r
+                * elm.childNodes を this._xnodes にリンクさせる\r
                 */\r
                if( _children ){\r
                        for( i = 0, l = _children.length; i < l; ++i ){\r
@@ -272,14 +246,14 @@ Node.prototype._afterCreate =
                        };\r
                } else\r
                if( eChildren && eChildren.length ){\r
-                       this._children = [];\r
-                       this._children.push.apply( this._children, eChildren );\r
+                       this._xnodes = [];\r
+                       this._xnodes.push.apply( this._xnodes, eChildren );\r
                };\r
                return this;\r
        }) :\r
        document.all ? (function( parent ){\r
                var elm,\r
-                       children = this._children,\r
+                       children = this._xnodes,\r
                        child, i, l;\r
                this.parent = parent;\r
                delete this._ie4dirty;\r
@@ -303,22 +277,25 @@ Node.prototype._afterCreate =
 /* --------------------------------------\r
  *  Create\r
  */\r
-Node.prototype.create = function( tag, attrs ){\r
+Node.prototype.create = function( tag, opt_attrs, opt_css ){\r
        var elm, xnode;\r
        if( this._nodeType !== 1 ) return;\r
-       if( !this._children ) this._children = [];\r
+       if( !this._xnodes ) this._xnodes = [];\r
        \r
        elm = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode;\r
        \r
-       if( elm ){\r
+       if( elm && !Node.skipCreate ){\r
                if( document.appendChild ){\r
+                       // ie では iframe の frameborder が無視されるので、<iframe class=> を渡す\r
                        elm.appendChild( document.createElement( tag ) );\r
                        xnode = new Node( elm.lastChild );\r
-                       xnode.attr( attrs );\r
+                       opt_attrs && xnode.attr( opt_attrs );\r
+                       opt_css   && xnode.attr( opt_css );\r
                } else\r
                if( document.all ){\r
                        Node._newByTag = true;\r
-                       xnode = new Node( tag, attrs );\r
+                       xnode = new Node( tag, opt_attrs, opt_css );\r
+                       // opt_attrs && xnode.attr( opt_attrs );\r
                        elm.insertAdjacentHTML( 'BeforeEnd', xnode._create() );\r
                        xnode._rawNode = elm.children[ elm.children.length - 1 ];\r
                } else {\r
@@ -326,10 +303,10 @@ Node.prototype.create = function( tag, attrs ){
                };\r
        } else {\r
                Node._newByTag = true;\r
-               xnode = new Node( tag );\r
+               xnode = new Node( tag, opt_attrs, opt_css );\r
        };\r
        xnode.parent = this;\r
-       this._children[ this._children.length ] = xnode;\r
+       this._xnodes[ this._xnodes.length ] = xnode;\r
        return xnode;\r
 };\r
 \r
@@ -339,11 +316,11 @@ Node.prototype.create = function( tag, attrs ){
 Node.prototype.createText = function( text ){\r
        var elm, xnode;\r
        if( this._nodeType !== 1 ) return;\r
-       if( !this._children ) this._children = [];\r
+       if( !this._xnodes ) this._xnodes = [];\r
        \r
        elm = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode;\r
        \r
-       if( elm ){\r
+       if( elm && !Node.skipCreate ){\r
                if( document.createTextNode ){\r
                        elm.appendChild( document.createTextNode( text ) );\r
                        xnode = new Node( elm.lastChild );\r
@@ -360,7 +337,7 @@ Node.prototype.createText = function( text ){
                xnode = new Node( text );\r
        };\r
        xnode.parent = this;\r
-       this._children[ this._children.length ] = xnode;\r
+       this._xnodes[ this._xnodes.length ] = xnode;\r
        return xnode;\r
 };\r
 \r
@@ -380,7 +357,7 @@ Node.prototype.append = function( v ){
                                v = arguments[ i ];\r
                                v = v.constructor === Node ? v : new Node( v );\r
                                frg.appendChild( v._create() );\r
-                               this._children[ this._children.length ] = v;\r
+                               this._xnodes[ this._xnodes.length ] = v;\r
                                v._afterCreate( this );\r
                        };\r
                        this._rawNode.appendChild( frg );\r
@@ -393,7 +370,7 @@ Node.prototype.append = function( v ){
                return this;\r
        };\r
        \r
-       if( !this._children ) this._children = [];\r
+       if( !this._xnodes ) this._xnodes = [];\r
        \r
        elm = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode;\r
        switch( Node._getType( v ) ){\r
@@ -410,7 +387,7 @@ Node.prototype.append = function( v ){
                                        \r
                                };\r
                        };\r
-                       this._children[ this._children.length ] = new Node( v );\r
+                       this._xnodes[ this._xnodes.length ] = new Node( v );\r
                        break;\r
                case Node.IS_HTML_STRING :\r
                case Node.IS_STRING :\r
@@ -418,6 +395,8 @@ Node.prototype.append = function( v ){
                        break;\r
                case Node.IS_XNODE :\r
                        if( v === Node.none ) return this;\r
+                       // 親の xnodes から v を消す\r
+                       v.parent && ( i = v.parent._xnodes.indexOf( v ) ) !== -1 && v.parent._xnodes.splice( i, 1 );\r
                        if( elm ){\r
                                if( document.appendChild ){\r
                                        elm.appendChild( v._create() );\r
@@ -430,7 +409,7 @@ Node.prototype.append = function( v ){
                                        \r
                                };\r
                        };\r
-                       this._children[ this._children.length ] = v;\r
+                       this._xnodes[ this._xnodes.length ] = v;\r
        };\r
        return this;\r
 };\r
@@ -441,7 +420,7 @@ Node.prototype.appendAt = function( start, v ){
        \r
        if( this._nodeType !== 1 ) return this;\r
        \r
-       if( !( children = this._children ) ) children = this._children = [];\r
+       if( !( children = this._xnodes ) ) children = this._xnodes = [];\r
        \r
        l = arguments.length;\r
        if( children.length <= start ){\r
@@ -523,6 +502,8 @@ Node.prototype.appendAt = function( start, v ){
                        break;\r
                case Node.IS_XNODE :\r
                        if( v === Node.none ) return this;\r
+                       // 親の xnodes から v を消す\r
+                       v.parent && ( i = v.parent._xnodes.indexOf( v ) ) !== -1 && v.parent._xnodes.splice( i, 1 );\r
                        if( elm ){\r
                                if( document.appendChild ){\r
                                        elm.insertBefore( v._create(), elm.childNodes[ start ] );\r
@@ -606,19 +587,19 @@ Node.prototype.remove = function(){
                \r
        };\r
 \r
-       parent._children.splice( parent._children.indexOf( this ), 1 );\r
+       parent._xnodes.splice( parent._xnodes.indexOf( this ), 1 );\r
        delete this.parent;\r
        return this;\r
 };\r
 \r
 Node.prototype._beforeRemove = \r
        document.removeChild ?\r
-                       ( function(){\r
+               ( function(){\r
                        var elm = this._rawNode, children,\r
                                child, i, l;\r
                        if( !elm ) return;\r
                        X.Dom.Event.migrate( elm ); // イベントの退避\r
-                       if( children = this._children ){\r
+                       if( children = this._xnodes ){\r
                                for( i = 0, l = children.length; i < l; ++i ){\r
                                        child = children[ i ];\r
                                        child._nodeType === 1 && child._beforeRemove();\r
@@ -629,7 +610,7 @@ Node.prototype._beforeRemove =
                ( function(){\r
                        var elm = this._ie4getRawNode(),\r
                                children, i, l;\r
-                       if( children = this._children ){\r
+                       if( children = this._xnodes ){\r
                                for( i = 0, l = children.length; i < l; ++i ){\r
                                        children[ i ]._beforeRemove();\r
                                };      \r
@@ -641,9 +622,34 @@ Node.prototype._beforeRemove =
                }) :\r
                (function(){});\r
 \r
-Node.prototype.empty = function( v ){\r
-       \r
-};\r
+Node.prototype.empty =\r
+       document.removeChild ?\r
+               ( function(){\r
+                       var elm = this._rawNode, children,\r
+                               child, i, l;\r
+                       if( children = this._xnodes ){\r
+                               for( i = 0, l = children.length; i < l; ++i ){\r
+                                       children[ i ].destroy();\r
+                               };\r
+                               children.length = 0;\r
+                       };\r
+                       if( elm ) elm.innerHTML = '';\r
+                       return this;\r
+               }) :\r
+       document.all ? \r
+               ( function(){\r
+                       var elm = this._ie4getRawNode(),\r
+                               children, i, l;\r
+                       if( children = this._xnodes ){\r
+                               for( i = 0, l = children.length; i < l; ++i ){\r
+                                       children[ i ].destroy();\r
+                               };\r
+                               children.length = 0;\r
+                       };\r
+                       if( elm ) elm.innerHTML = this._htmlText = '';\r
+                       return this;\r
+               }) :\r
+               (function(){});\r
 \r
 /* --------------------------------------\r
  *  replace\r
@@ -652,8 +658,36 @@ Node.prototype.empty = function( v ){
 /* --------------------------------------\r
  *  destory\r
  */\r
-Node.prototype.destroy = function( v ){\r
-       \r
+Node.prototype.destroy = function(){\r
+       var elm = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode,\r
+               children = this._xnodes;\r
+       if( children ){\r
+               for( i = 0, l = children.length; i < l; ++i ){\r
+                       children[ i ].destroy();\r
+               };\r
+               children.length = 0;\r
+       };\r
+       if( elm ){\r
+               this._nodeType === 1 && X.Dom.Event.remove( elm ); // イベントの退避\r
+               elm.innerHTML = '';\r
+               document.removeChild && this.parent._rawNode.removeChild( elm );\r
+       };\r
+       delete Node._chashe[ this._uid ];\r
+       delete this._uid;\r
+       delete this._nodeType;\r
+       delete this._rawNode;\r
+       delete this._tag;\r
+       delete this._text;\r
+       delete this._id;\r
+       delete this._className;\r
+       delete this._classText;\r
+       delete this.parent;\r
+       delete this._xnodes;\r
+       delete this._attrs;\r
+       delete this._attrText;\r
+       delete this._css;\r
+       delete this._cssText;\r
+       delete this._events;\r
 };\r
 \r
 /* --------------------------------------\r
@@ -685,12 +719,12 @@ if( !document.getElementById && document.all ){
        Node.prototype._ie4startUpdate = function(){\r
                if( this._ie4reserved !== true ) return;\r
                delete this._ie4reserved;\r
-               if( !this._children ) return;\r
+               if( !this._xnodes ) return;\r
                this._ie4commitUpdate()._ie4afterUpdate();\r
        };\r
        \r
        Node.prototype._ie4commitUpdate = function(){\r
-               var children = this._children,\r
+               var children = this._xnodes,\r
                        i, l, html;\r
                if( !this._ie4dirtyChildren ){\r
                        for( i = 0, l = children.length; i < l; ++i ){\r
@@ -707,7 +741,7 @@ if( !document.getElementById && document.all ){
        };\r
        \r
        Node.prototype._ie4afterUpdate = function(){\r
-               var children = this._children,\r
+               var children = this._xnodes,\r
                        i, l;\r
                if( !this._ie4dirtyChildren ){\r
                        for( i = 0, l = children.length; i < l; ++i ){\r
@@ -725,7 +759,7 @@ if( !document.getElementById && document.all ){
                var children, i;\r
                if( this._nodeType !== 1 ) return;\r
                if( this._ie4dirtyChildren || this._ie4dirty ) return true;\r
-               if( !( children = this._children ) || !( i = children.length ) ) return;\r
+               if( !( children = this._xnodes ) || !( i = children.length ) ) return;\r
                for( ; i; ){\r
                        if( children[ --i ]._ie4containsDirty() ) return true;\r
                };\r
@@ -736,7 +770,7 @@ if( !document.getElementById && document.all ){
  *  contains\r
  */\r
 Node.prototype.contains = function( v ){\r
-       var node, children;\r
+       var node, children, i;\r
        if( !v || !this.parent || this._nodeType !== -1 ) return false;\r
        // contains ie4+\r
        if( document.contains ){\r
@@ -752,7 +786,7 @@ Node.prototype.contains = function( v ){
                                return false;\r
                };              \r
        };\r
-       children = this._children;\r
+       children = this._xnodes;\r
        if( children.indexOf( v ) !== -1 ) return true;\r
        if( ( node = this._rawNode ) && node === v.parentNode ) return;\r
        for( i = children.length; i; ){\r
@@ -765,7 +799,7 @@ Node.prototype.contains = function( v ){
  *  getChild\r
  */\r
 Node.prototype.getChildAt = function( index ){\r
-       var children = this._children,\r
+       var children = this._xnodes,\r
                elm, childNodes, child, xnode;\r
        if( this._nodeType !== 1 || index < 0 ) return;\r
        if( children.length <= index ) return;\r
@@ -862,7 +896,7 @@ Node.prototype.firstChild = function(){
        return this.getChildAt( 0 );\r
 };\r
 Node.prototype.lastChild = function(){\r
-       return this.getChildAt( this._children.length - 1 );\r
+       return this.getChildAt( this._xnodes.length - 1 );\r
 };\r
 \r
 /* --------------------------------------\r
@@ -875,52 +909,49 @@ Node.prototype.getOrder = function(){
 };\r
 \r
 /* --------------------------------------\r
- *  className, addClass, removeClass, hasClass, cssText, css\r
+ *  className, addClass, removeClass, hasClass\r
  */\r
-\r
-Node.prototype.css = function( name /* , valuOrUnit */ ){\r
-       var args = arguments,\r
-               css  = this._css,\r
-               v, node;\r
-       if( 1 < args.length && 'px|em|cm|in|%'.indexOf( v = args[ 1 ] ) === -1 ){\r
-               if( node = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode ){\r
-                       node.style[ name ] = v;\r
-               };\r
-               if( !css ) css = this._css = {};\r
-               css[ name ] = v;\r
-               return this;\r
-       };\r
-       if( !css ) return;\r
-       return css[ name ];\r
+Node.prototype.className = function( v ){\r
+       var node;\r
+       // getter\r
+       if(  typeof v !== 'string' ) return this._className;\r
+       // setter\r
+       if( this._className === v ) return;\r
+       if( !v ) delete this._className;\r
+       node = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode;\r
+       if( node ) node.className = v;\r
+       this._className = v;\r
+       this._classText = ' class="' + v + '" ';\r
+       return this;\r
+};\r
+Node.prototype.addClass = function(){\r
+       \r
+};\r
+Node.prototype.removeClass = function(){\r
+       \r
+};\r
+Node.prototype.toggleClass = function(){\r
+       \r
+};\r
+Node.prototype.hasClass = function(){\r
+       \r
 };\r
-\r
 \r
 /* --------------------------------------\r
- *  attribute\r
- *  X.Dom.Attr.toIndex に定義されている 属性の場合\r
+ *  html, text\r
  */\r
-Node.prototype.attr = function( v ){\r
-       var attrs, attr, l, i;\r
-       if( v.length && v[ v.length - 1 ] ){\r
-               //\r
-       } else\r
-       if( 2 < arguments.length ){\r
-               // setter\r
-       } else\r
-       if( typeof v === 'string' ){\r
-               // getter\r
-               if( attrs = this._attrs ){\r
-                       //i = X.Dom.Attr.toIndex[ v ];\r
-                       //if( i || i === 0 ){\r
-                       //      return attrs[ i ];\r
-                       //};\r
-                       return attrs[ v ];\r
-               };\r
-       };\r
+Node.prototype.html = function( html ){\r
+       return this.empty().append.call( this, X.Dom.parse( html, true ) );\r
+};\r
+\r
+Node.prototype.text = function( text ){\r
+       this.empty().createText( text );\r
+       return this;\r
 };\r
 \r
 /* --------------------------------------\r
  *  Width, Height\r
+ *  overflow:hidden かつ width か height が設定されていたら、再描画しないでその値を返す\r
  */\r
 Node.prototype.width = function(){\r
        var elm;\r
@@ -941,6 +972,7 @@ Node.prototype.height = function(){
        var elm;\r
        if( !this.parent ) return 0;\r
        if( document.getElementById ){\r
+               // this.css( X.Dom.Style.Unit.px, 'height' );\r
                return ( elm = this._rawNode ) ? elm.offsetHeight : 0;\r
        } else\r
        if( document.all ){\r
@@ -953,17 +985,12 @@ Node.prototype.height = function(){
 };\r
 \r
 /* --------------------------------------\r
- *  Content Width, Content Height\r
- */\r
-\r
-\r
-/* --------------------------------------\r
  *  load\r
  */\r
-X.Dom.Event.add( window, 'load', function(){\r
+X.Dom.listenOnce( X.Dom.Event.DOM_INIT, function(){\r
        var r   = Node.root = new Node( document.body ),\r
                elm = r._rawNode,\r
-               createTree, n = 0;\r
+               createTree, n = 0, s;\r
        r.appendTo = r.appendToRoot = r.before = r.after = r.clone = r.remove = r.destroy = r.prevNode = r.nextNode = new Function( 'return this' );\r
        \r
        if( elm.childNodes ){\r
@@ -974,14 +1001,14 @@ X.Dom.Event.add( window, 'load', function(){
                        for( ; i < l; ++i ){\r
                                child = children[ i ];\r
                                if( child.nodeType === 1 ){\r
-                                       if( !xnode._children ) xnode._children = [];\r
-                                       xnode._children[ xnode._children.length ] = _xnode = new Node( child );\r
+                                       if( !xnode._xnodes ) xnode._xnodes = [];\r
+                                       xnode._xnodes[ xnode._xnodes.length ] = _xnode = new Node( child );\r
                                        _xnode.parent = xnode;\r
                                        child.childNodes.length && createTree( _xnode, child, child.childNodes );\r
                                } else\r
-                               if( child.nodeType === 3 && child.data !== '' && Node.cleanupWhiteSpace( child.data ) !== ' ' ){\r
-                                       if( !xnode._children ) xnode._children = [];\r
-                                       xnode._children[ xnode._children.length ] = new Node( child );\r
+                               if( child.nodeType === 3 && child.data !== '' && X.cleanupWhiteSpace( child.data ) !== ' ' ){\r
+                                       if( !xnode._xnodes ) xnode._xnodes = [];\r
+                                       xnode._xnodes[ xnode._xnodes.length ] = new Node( child );\r
                                } else {\r
                                        elm.removeChild( child );\r
                                        --i;\r
@@ -1004,8 +1031,8 @@ X.Dom.Event.add( window, 'load', function(){
                                child = children[ i ];\r
                                if( child.tagName === '!' ) continue;\r
                                f = false;\r
-                               while( j < xnode._children.length ){\r
-                                       _xnode = xnode._children[ j ];\r
+                               while( j < xnode._xnodes.length ){\r
+                                       _xnode = xnode._xnodes[ j ];\r
                                        _xnode.parent    = xnode;\r
                                        _xnode._ie4dirty = true;\r
                                        if( _xnode._nodeType === 1 ){\r
@@ -1022,7 +1049,7 @@ X.Dom.Event.add( window, 'load', function(){
                                                };\r
                                        } else\r
                                        if( _xnode._nodeType === 3 ){\r
-                                               if( !_xnode._text || Node.cleanupWhiteSpace( _xnode._text ) === ' ' ){\r
+                                               if( !_xnode._text || X.cleanupWhiteSpace( _xnode._text ) === ' ' ){\r
                                                        _xnode.remove();\r
                                                        ++n;\r
                                                        continue;\r
@@ -1033,8 +1060,11 @@ X.Dom.Event.add( window, 'load', function(){
                                if( !f ) alert( '**** ' + child.outerHTML );\r
                        };\r
                };\r
-               r._children = [];\r
-               r._children.push.apply( r._children, X.Dom.parse( elm.innerHTML, true ) );\r
+               \r
+               r._xnodes = [];\r
+               Node.skipCreate = true;\r
+               r._xnodes.push.apply( r._xnodes, X.Dom.parse( elm.innerHTML, true ) );\r
+               delete Node.skipCreate;\r
                createTree( r, elm.children );\r
                r._ie4reserveUpdate();\r
                //alert(n +  ' ' + elm.innerHTML);\r
@@ -1044,10 +1074,11 @@ X.Dom.Event.add( window, 'load', function(){
                \r
        };\r
        \r
-       r.width  = new Function( 'return X.View.getSize()[ 0 ]' );\r
-       r.height = new Function( 'return X.View.getSize()[ 1 ]' );\r
+       r.width  = new Function( 'return X.Dom.getSize()[ 0 ]' );\r
+       r.height = new Function( 'return X.Dom.getSize()[ 1 ]' );\r
        \r
-       return X.Callback.UN_LISTEN;\r
+       Node._systemNode = r.create( 'div' ).className( 'hidden-sysyem-node' );\r
+       r._xnodes.splice( r._xnodes.indexOf( Node._systemNode ), 1 ); // hide from api user\r
 } );\r
 \r
 //})( window, document );
\ No newline at end of file
diff --git a/0.6.x/js/dom/13_XDomStyle.js b/0.6.x/js/dom/13_XDomStyle.js
new file mode 100644 (file)
index 0000000..9b97dcf
--- /dev/null
@@ -0,0 +1,469 @@
+
+
+/*
+ * style 値の変更は、enterFrame 後にまとめて適用
+ * width(), height(), x(), y() 1em の取得時にも適用
+ * css3 の ie用 fix は X.UI レベルで行う
+ * 
+ * use X.Dom.Event
+ */
+X.Dom.Style = {
+       
+       Type : {
+               LENGTH            : 1,
+               PERCENT           : 2,
+               COLOR             : 2 < 2,
+               U_DECIMAL         : 2 < 3,
+               NUMERICAL         : 2 < 4,
+               BOOLEAN           : 2 < 5,
+               QUARTET           : 2 < 6,
+               URL               : 2 < 7,
+               FONT_NAME         : 2 < 8,
+               TIME              : 2 < 9,
+               CONTENT           : 2 < 10,
+               LIST              : 2 < 11,
+               AUTO              : 2 < 12,
+               COMBI             : 2 < 13
+       },
+       
+       SPECIAL_VALUES : {
+               AUTO : Number.POSITIVE_INFINITY,
+               FULL : X.Dom // something unigue value; 100%
+       },
+       
+       PropNo : {},
+       
+       UNIT : {
+               'px' : 0,
+               'em' : 1,
+               'cm' : 2,
+               'mm' : 3,
+               'in' : 4,
+               '%'  : 5,
+               'pct' : 5,
+               'ms'  : 6,
+               's'   : 7,
+               '#'   : 8,
+               'rgb' : 9,
+               'rgba' : 10
+       },
+       
+       /* font-size -> fontSize */
+       _DICTIONARY_CAMELIZE : {},
+       
+       camelize : function( cssProp ){
+               var me  = X.Dom.Style,
+                       parts, l, i, camelized;
+               
+               if( camelized = me._DICTIONARY_CAMELIZE[ cssProp ] ) return camelized;
+               parts = cssProp.split( ' ' ).join( '' ).split( '-' );
+               l     = parts.length;
+               if( l === 1 ) return parts[ 0 ];
+               
+               camelized = cssProp.charAt(0) === '-'
+                 ? parts[ 0 ].charAt( 0 ).toUpperCase() + parts[ 0 ].substring( 1 )
+                 : parts[ 0 ];
+               
+               for( i = 1; i < l; ++i ){
+                       camelized += parts[ i ].charAt( 0 ).toUpperCase() + parts[ i ].substring( 1 );
+               };
+               return me._DICTIONARY_CAMELIZE[ cssProp ] = camelized;
+       },
+       
+       /* fontSize -> font-size */
+       /*
+       REG_LARGE : /[A-Z]/g,
+       uncamelize: function( str ){
+               return str.split( ' ' ).join( '' ).replace( X.Dom.Style.REG_LARGE, '-$&' ).toLowerCase();
+       }, */
+       
+       CHAR_CODE_A : 'A'.charCodeAt( 0 ),
+       
+       _DICTIONARY_UNCAMELIZE : {},
+       
+       uncamelize : function( str ){
+               var me  = X.Dom.Style,
+                       A   = me.CHAR_CODE_A,
+                       Z   = A + 25,
+                       uncamelized, l, chr, code;
+               str = str.split( ' ' ).join( '' );
+               if( uncamelized = me._DICTIONARY_UNCAMELIZE[ str ] ) return uncamelized;
+               uncamelized = '';
+               for( i = 0, l = str.length; i < l; ++i ){
+                       chr = str.charAt( i );
+                       code = chr.charCodeAt( 0 );
+                       uncamelized += ( A <= code && code <= Z ) ? '-' + chr : chr;
+               };
+               return me._DICTIONARY_UNCAMELIZE[ str ] = uncamelized.toLowerCase();
+       },
+       
+       objToCssText : function( obj ){
+               var css           = [],
+                       me            = X.Dom.Style,
+                       uncamelize    = me.uncamelize,
+                       VENDER_PREFIX = me.VENDER_PREFIX,
+                       FIX_PROP      = me.SPECIAL_FIX_PROP,
+                       SPECIAL_FIX   = me.SPECIAL_FIX,
+                       p, name, sp;
+               for( p in obj ){
+                       name = uncamelize( p );
+                       if( FIX_PROP[ name ] ){
+                               sp = 1;
+                       } else {
+                               css[ css.length ] = [ VENDER_PREFIX[ name ] || name, obj[ p ] ].join( ':' );
+                       };
+               };
+               sp && ( css[ css.length ] = SPECIAL_FIX( obj ) );
+               return css.join( ';' );
+       },
+       
+       _FONT_SIZE_RATIO : {},
+       
+       absoluteFontSizeToPx : function( fontsize ){
+               return X.Dom.Style._FONT_SIZE_RATIO[ fontsize ] || 0;
+       }
+
+       //  https://developer.mozilla.org/en-US/docs/Web/CSS/transform
+       //  Firefox 3.5, ie9, Opera 10.5, Safari 3.1, Chrome
+       //  3D support Firefox 10, ie10, Safari 4.0, Chrome 12.0
+       // transform : void 0,
+       
+       //  https://developer.mozilla.org/ja/docs/Web/Guide/CSS/Using_CSS_transitions
+       //  Chrome 1.0, Firefox 4.0, ie10, Opera 10.5, Safari 3.2
+       //  Android 2.1, Firefox Android 4.0, Opera Mobile 10, Safari Mobile 3.2        
+       // transition : void 0
+};
+
+X.Dom.Style.Option = {
+       BORDER_STYLE      : 'none,hidden,dotted,dashed,solid,double,groove,ridge,inset,outset'.split(','),
+       POSITION_X        : 'left,center,right'.split(','),
+       POSITION_Y        : 'top,center,bottom'.split(','),
+       ALIGN             : 'left,center,right,justify'.split(','),
+       TEXT_DECORATION   : 'none,underline,overline,line-through,blink'.split(','),
+       TEXT_TRANSFORM    : 'none,capitalize,lowercase,uppercase'.split(','),
+       WIDTH_HEIGHT      : [ 'auto' ],
+       BOX_SIZING        : 'content-box,padding-box,border-box'.split(',') // ,margin-box
+};
+X.Dom.Style.Props = {
+       borderWidth       : [ X.Dom.Dirty.REFLOW,  0, X.Dom.Style.Type.QUARTET | X.Dom.Style.Type.LENGTH  ], // em [ top, right, bottom, left ]
+       borderColor       : [ X.Dom.Dirty.PAINT,   4, X.Dom.Style.Type.QUARTET | X.Dom.Style.Type.COLOR   ], // color [ top, right, bottom, left ]
+       borderStyle       : [ X.Dom.Dirty.PAINT,   8, X.Dom.Style.Type.QUARTET | X.Dom.Style.Type.LIST, X.Dom.Style.Option.BORDER_STYLE ], // string [ top, right, bottom, left ]
+       cornerRadius      : [ X.Dom.Dirty.PAINT,  12, X.Dom.Style.Type.QUARTET | X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ], // em, px [ top, right, bottom, left ]
+       bgColor           : [ X.Dom.Dirty.PAINT,  16, X.Dom.Style.Type.COLOR     ], // color
+       bgAlpha           : [ X.Dom.Dirty.PAINT,  17, X.Dom.Style.Type.U_DECIMAL ], // 0 - 1
+       bgImgUrl          : [ X.Dom.Dirty.PAINT,  18, X.Dom.Style.Type.URL       ], // url
+       bgImgRepeatX      : [ X.Dom.Dirty.PAINT,  19, X.Dom.Style.Type.BOOLEAN   ], // true / false
+       bgImgRepeatY      : [ X.Dom.Dirty.PAINT,  20, X.Dom.Style.Type.BOOLEAN   ], // true / false
+       bgImgPositionX    : [ X.Dom.Dirty.PAINT,  21, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT | X.Dom.Style.Type.LIST, X.Dom.Style.Option.POSITION_X ], // em %, px, string
+       bgImgPositionY    : [ X.Dom.Dirty.PAINT,  22, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT | X.Dom.Style.Type.LIST, X.Dom.Style.Option.POSITION_Y ], // em %, px, string
+       shadowColor       : [ X.Dom.Dirty.PAINT,  23, X.Dom.Style.Type.COLOR     ], // color
+       shadowAlpha       : [ X.Dom.Dirty.PAINT,  24, X.Dom.Style.Type.U_DECIMAL ], // 0 - 1
+       shadowOffsetX     : [ X.Dom.Dirty.PAINT,  25, X.Dom.Style.Type.LENGTH    ], // em
+       shadowOffsetY     : [ X.Dom.Dirty.PAINT,  26, X.Dom.Style.Type.LENGTH    ], // em
+       shadowBlur        : [ X.Dom.Dirty.PAINT,  27, X.Dom.Style.Type.LENGTH    ], // em
+       shadowSpread      : [ X.Dom.Dirty.PAINT,  28, X.Dom.Style.Type.LENGTH    ], // em
+       shadowInset       : [ X.Dom.Dirty.PAINT,  29, X.Dom.Style.Type.BOOLEAN   ], // true / false
+       
+       color             : [ X.Dom.Dirty.PAINT,  30, X.Dom.Style.Type.COLOR     ], // color
+       fontFamily        : [ X.Dom.Dirty.FONT,   31, X.Dom.Style.Type.FONT_NAME ], // string
+       fontSize          : [ X.Dom.Dirty.FONT,   32, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ], // em, %
+       bold              : [ X.Dom.Dirty.FONT,   33, X.Dom.Style.Type.BOOLEAN   ], // true / false
+       italic            : [ X.Dom.Dirty.FONT,   34, X.Dom.Style.Type.BOOLEAN   ], // true / false
+       lineHeight        : [ X.Dom.Dirty.FONT,   35, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT | X.Dom.Style.Type.NUMERICAL ], // em, %, 
+       letterSpacing     : [ X.Dom.Dirty.FONT,   36, X.Dom.Style.Type.LENGTH    ], // em
+       wordSpacing       : [ X.Dom.Dirty.FONT,   37, X.Dom.Style.Type.LENGTH    ],
+       align             : [ X.Dom.Dirty.FONT,   38, X.Dom.Style.Type.LIST, X.Dom.Style.Type.ALIGN           ],
+       decoration        : [ X.Dom.Dirty.PAINT,  39, X.Dom.Style.Type.LIST, X.Dom.Style.Type.TEXT_DECORATION ],
+       transform         : [ X.Dom.Dirty.FONT,   40, X.Dom.Style.Type.LIST, X.Dom.Style.Type.TEXT_TRANSFORM  ],
+       textShadowColor   : [ X.Dom.Dirty.PAINT,  41, X.Dom.Style.Type.COLOR     ],
+       textShadowOffsetX : [ X.Dom.Dirty.PAINT,  42, X.Dom.Style.Type.LENGTH    ],
+       textShadowOffsetY : [ X.Dom.Dirty.PAINT,  43, X.Dom.Style.Type.LENGTH    ],
+       shadowBlur        : [ X.Dom.Dirty.PAINT,  44, X.Dom.Style.Type.LENGTH    ],
+       
+       width             : [ X.Dom.Dirty.REFLOW, 45, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT, X.Dom.Style.Option.WIDTH_HEIGHT ],
+       minWidth          : [ X.Dom.Dirty.REFLOW, 46, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+       maxWidth          : [ X.Dom.Dirty.REFLOW, 47, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+       height            : [ X.Dom.Dirty.REFLOW, 48, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT, X.Dom.Style.Option.WIDTH_HEIGHT ],
+       minHeight         : [ X.Dom.Dirty.REFLOW, 49, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+       maxHeight         : [ X.Dom.Dirty.REFLOW, 50, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+       padding           : [ X.Dom.Dirty.REFLOW, 51, X.Dom.Style.Type.QUARTET | X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+       margin            : [ X.Dom.Dirty.REFLOW, 55, X.Dom.Style.Type.QUARTET | X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+       sizing            : [ X.Dom.Dirty.REFLOW, 59, X.Dom.Style.Type.LIST, X.Dom.Style.Option.BOX_SIZING ],
+       pageBox           : [ X.Dom.Dirty.REFLOW, 60, X.Dom.Style.Type.BOOLEAN ], // true / false
+       left              : [ X.Dom.Dirty.REFLOW, 61, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+       top               : [ X.Dom.Dirty.REFLOW, 62, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+       bottom            : [ X.Dom.Dirty.REFLOW, 63, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ],
+       right             : [ X.Dom.Dirty.REFLOW, 64, X.Dom.Style.Type.LENGTH | X.Dom.Style.Type.PERCENT ]
+};
+       
+X.Dom.Style.SPECIAL_FIX =
+       // ~IE8
+       X.UA.IE && X.UA.IE < 9 ?
+               (function( obj ){
+                       var test    = X.Dom.Style.SPECIAL_FIX_PROP,
+                               filters = [], p, id, v;
+                       for( p in obj ){
+                               if( !( id = test[ p ] ) ) continue;
+                               v = obj[ p ];
+                               switch( id ){
+                                       case 1 : //'filter' :
+                                               filters[ filters.length ] = v;
+                                               break;
+                                       case 2 : //'opacity' :
+                                               filters[ filters.length ] = 'aplha(opacity=' + v +')';
+                                               break;
+                                       case 3 : //'boxShadow' :
+                                               // box-shadow: 10px 10px 10px 10px rgba(0,0,0,0.4) inset;
+                                               // スペース区切りで、水平方向の距離 垂直方向の距離 ぼかし距離 広がり距離 影の色 insetキーワードを指定する。 ぼかし距離 広がり距離 影の色 insetキーワードは省略可
+                                               // shadow(color=#cccccc, strength=10, direction=135);
+                                               parseValue( 'boxShadow', v, 'px' );
+                                               dir = Math.atan2( ary[1], ary[0] ) * 180 / Math.PI + 90;
+                                               dir += dir < 0 ? 360 : 0;
+                                               break;
+                                       case 4 : //'textShadow' :
+                                               //text-shadow: 5px 5px 2px blue; 水平方向の距離 垂直方向の距離 影のぼかし半径 影の色 none
+                                               //glow(Color=yellow,Strength=10);
+                                               //どうやらCSSのbackgroundプロパティと同時に使えないようです。 
+                                               break;
+                                       case 5 : //'backgroundImage' :
+                                               //
+                               };
+                       };
+                       if( filters ) return filters.join( ' ' );
+               }) :
+       // IE9
+       X.UA.IE && 9 <= X.UA.IE && X.UA.IE < 10 ?
+               (function( obj ){
+                       var test    = X.Dom.Style.SPECIAL_FIX_PROP,
+                               filters = [], p, id, v;
+                       for( p in obj ){
+                               if( !( id = test[ p ] ) ) continue;
+                               v = obj[ p ];
+                               switch( id ){
+                                       case 1 : //'filter' :
+                                               filters[ filters.length ] = v;
+                                               break;
+                               };
+                       };
+                       if( filters ) return filters.join( ' ' );
+               }) :
+               (function( obj ){
+                       var test    = X.Dom.Style.SPECIAL_FIX_PROP,
+                               ret = [], p, id, v;
+                       for( p in obj ){
+                               if( !( id = test[ p ] ) ) continue;
+                               v = obj[ p ];
+                               switch( id ){
+                                       case 1 : //'backgroundPositionX' :
+                                               bgpX = v;
+                                               break;
+                                       case 2 : //'backgroundPositionY' :
+                                               bgpY = v;
+                                               break;
+                                       case 3 : //'backgroundPositionX' :
+                                               clipT = v;
+                                               break;
+                                       case 4 : //'backgroundPositionX' :
+                                               clipB = v;
+                                               break;
+                                       case 5 : //'backgroundPositionX' :
+                                               clipL = v;
+                                               break;
+                                       case 6 : //'backgroundPositionX' :
+                                               clipR = v;
+                                               break;
+                               };
+                       };
+                       if( bgpX || bgpY ) ret[ ret.length ] = 'background-position:';
+                       if( clipT || clipB || clipL || clipR ){
+                               ret[ ret.length ] = 'clip:rect(';
+                       };
+                       return ret.join( ';' );
+               });
+
+
+
+
+// export
+// name getter
+// unitID, name 単位指定のプロパティ取得 geter
+// obj setter
+// name, value setter
+X.Dom.Node.prototype.css = function( nameOrObj /* orUnitID, valuOrUnitOrName */ ){
+       var XDomStyle = X.Dom.Style,
+               args = arguments,
+               css  = this._css,
+               p, valOrUnit, name, v, node, camelize;
+       if( this._nodeType !== 1 ) return this;
+       // setter
+       if( X.Type.isObject( nameOrObj ) ){
+               if( !css ) css = this._css = {};
+               camelize = XDomStyle.camelize;
+               for( p in nameOrObj ){
+                       css[ camelize( p ) ] = nameOrObj[ p ];
+               };
+               this._cssText = XDomStyle.objToCssText( this._css );
+               if( node = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode ){
+                       if( this._cssText ){
+                               node.style.cssText = this._cssText;
+                       } else {
+                               node.removeAttribute( 'style' );
+                       };
+               };
+               return this;
+       } else
+       if( 1 < args.length && !XDomStyle.UNIT[ nameOrObj ] ){
+               if( !css ) css = this._css = {};
+               name = XDomStyle.camelize( nameOrObj );
+               v    = args[ 1 ];
+               if( css[ name ] === v ) return this;
+               if( node = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode ){
+                       node.style[ name ] = v; // val
+               };
+               if( !css[ name ] ){
+                       this._cssText = [ this._cssText, this._cssText ? ';' : '', XDomStyle.uncamelize( nameOrObj ), ':', v ].join( '' );
+                       css[ name ] = v;
+               } else {
+                       css[ name ] = v;
+                       // build _cssText
+                       this._cssText = XDomStyle.objToCssText( css );
+               };
+               node && !this._cssText && node.removeAttribute( 'style' );
+               return this;
+       };
+       // getter
+       if( !css ) return;
+       if( 1 < args.length && XDomStyle.UNIT[ nameOrObj ] ){ // unit
+               // To do
+               return XDomStyle.getValue( this, args[ 1 ], name );
+       };
+       // 集計 border, padding, margin, backgroundPosition, clip
+       // border で正確なデータを返せない時は、null を返す
+       return css[ XDomStyle.camelize( nameOrObj ) ];
+};
+
+X.Dom.Node.prototype.cssText = function( v ){
+       var camelize, obj, i, l, attr, name;
+       if( X.Type.isString( v ) ){
+               camelize = X.Dom.Style.camelize;
+               obj = {};
+               v   = v.split( ';' );
+               delete this._css;
+               for( i = 0, l = v.length; i < l; ++i ){
+                       attr = v[ i ].split( ':' );
+                       name = camelize( attr[ 0 ] );
+                       name && ( obj[ name ] = attr[ 1 ] || true );
+               };
+               return this.css( obj );
+       };
+       return this._cssText;
+};
+
+X.Dom.Node.prototype._getCharSize =
+       document.defaultView && document.defaultView.getComputedStyle ?
+               (function(){
+                       document.defaultView.getComputedStyle( this._rawNode, null );
+               }) :
+       X.UA.IE && 5 <= X.UA.IE ?
+               (function(){
+                       //this._rawNode.currentStyle;
+               }) :
+       document.removeChild ?
+               (function(){
+                       
+               }) :
+               (function(){
+                       
+               });
+
+X.Dom.listenOnce( X.Dom.Event.DOM_PREINIT, function(){
+       
+       var testStyle = X.Dom._view;
+       
+       X.Dom.Style.VENDER_PREFIX = (function(){
+               var ret       = {},
+                       vendors   = ',webkit,Webkit,Moz,moz,ms,Ms,O,o,khtml,Khtml'.split( ',' ),
+                       searches  =
+                               'opacity,boxSizing,' +
+                               'transform,transformOrigin,perspective,' +
+                               'transisiton,transitionDelay,transitionProperty,transitionDuration,transitionTimingFunction,' +
+                               'userSelect,touchAction,touchCallout,contentZooming,userDrag,tapHighlightColor'.split( ',' ),
+                       vendor, i, search, prop;
+                       
+               function findVenderPrefix( prop ){
+                       var v, i = vendors.length;
+                       vendor = null;
+                       for( ; i; ){
+                               v = vendors[ --i ];
+                               if( testStyle[ v + prop ] !== undefined ){
+                                       vendor = v;
+                                       return v + prop;
+                               };
+                       };      
+               };
+               
+               for( i = searches.length; i; ){
+                       search = searches[ --i ];
+                       prop = findVenderPrefix( search );
+                       if( search === 'transform' ) ret.transVender = vendor;
+                       if( prop ) ret[ search ] = prop;
+               };
+               return ret;
+       })();
+               
+       X.Dom.Style.SPECIAL_FIX_PROP =
+               // ~IE8
+               X.UA.IE && X.UA.IE < 9 ?
+                       {
+                               filter          : 1,
+                               opacity         : 2//, uinode ChromeNode で行う
+                               //boxShadow       : 3,
+                               //textShadow      : 4,
+                               //backgroundImage : 5
+                       } :
+               // IE9
+               X.UA.IE && 9 <= X.UA.IE && X.UA.IE < 10 ?
+                       {
+                               filter          : 1//,
+                               //textShadow      : 1
+                       } :
+               {
+                       backgroundPositionX : testStyle.backgroundPositionX === undefined ? 3 : 0,
+                       backgroundPosiitonY : testStyle.backgroundPositionX === undefined ? 3 : 0,
+                       clipTop             : testStyle.clipTop === undefined && testStyle[ 'clip-top' ] === undefined ? 3 : 0,
+                       clipBottom          : testStyle.clipTop === undefined && testStyle[ 'clip-top' ] === undefined ? 4 : 0,
+                       clipLeft            : testStyle.clipTop === undefined && testStyle[ 'clip-top' ] === undefined ? 5 : 0,
+                       clipRight           : testStyle.clipTop === undefined && testStyle[ 'clip-top' ] === undefined ? 6 : 0
+               };
+} );
+
+X.Dom.listenOnce( X.Dom.Event.DOM_INIT, function(){
+       var xnode = Node._systemNode;
+
+       var ret = X.Dom.Style._UNIT_RATIO = {},
+               unit,
+               units = 'em,cm,mm,in,pt,pc'.split( ',' ),
+               i     = units.length;
+       
+       for( ; i; ){
+               unit = units[ --i ];
+               xnode.css( 'width', 100 + unit );
+               ret[ unit ] = xnode.width() / 100;
+               console.log( unit + ':' + ret[ unit ] );
+       };
+       xnode.css( 'width', '' );
+
+       var ret = X.Dom.Style._FONT_SIZE_RATIO = {},
+               size, base,
+               list = 'xx-large,x-large,large,larger,medium,small,smaller,x-small,xx-small'.split( ',' ),
+               i = list.length;
+       
+       base = xnode.css( 'lineHeight', 1 ).text( 'X' ).height();
+       for( ; i; ){
+               size = list[ --i ];
+               ret[ size ] = xnode.css( 'fontSize', size ).height() / base;
+               console.log( size + ':' + ( ret[ size ] * 100 | 0 ) + '%' );
+       };
+       
+       xnode.empty().cssText( '' );
+} );
\ No newline at end of file
similarity index 55%
rename from 0.6.x/js/dom/11_XDomAttr.js
rename to 0.6.x/js/dom/14_XDomAttr.js
index e3414ba..4d62a12 100644 (file)
@@ -144,7 +144,7 @@ X.Dom.Attr = {
                readonly : 1,\r
                selected : 1\r
        },\r
-       rename : {\r
+       renameForDOM : {\r
                'class'          : 'className',\r
                accesskey        : 'accessKey',\r
                'accept-charset' : 'acceptCharset',\r
@@ -168,17 +168,109 @@ X.Dom.Attr = {
                rowspan          : 'rowSpan',\r
                tabindex         : 'tabIndex',\r
                usemap           : 'useMap',\r
-               valuetype        : 'valueType'\r
+               valuetype        : 'valueType',\r
+               checked          : 'defaultChecked'\r
+       },\r
+       renameForTag : {},\r
+       objToAttrText : function( obj ){\r
+               var attrs = [], noValue = X.Dom.Attr.noValue, p;\r
+               for( p in obj ){\r
+                       attrs[ attrs.length ] = noValue[ p ] ? p : [ p, '="', obj[ p ], '"' ].join( '' );\r
+               };\r
+               return attrs.join( ' ' );\r
        }\r
 };\r
 \r
-(function(){\r
-       var toIndex = X.Dom.Attr.toIndex,\r
-               toName  = X.Dom.Attr.toName,\r
-               name, i;\r
+(function( toIndex, toName, renameForDOM, renameForTag ){\r
+       var name, i;\r
        for( name in toIndex ){\r
                if( typeof ( i = toIndex[ name ] ) === 'number' ){\r
                        toName[ i ] = name;\r
                };\r
        };\r
-})();
\ No newline at end of file
+       for( name in renameForDOM ){\r
+               renameForTag[ renameForDOM[ name ] ] = name;\r
+       };\r
+})( X.Dom.Attr.toIndex, X.Dom.Attr.toName, X.Dom.Attr.renameForDOM, X.Dom.Attr.renameForTag );\r
+\r
+\r
+\r
+/* --------------------------------------\r
+ *  attribute\r
+ *  X.Dom.Attr.toIndex に定義されている 属性の場合\r
+ * \r
+ * http://nanto.asablo.jp/blog/2005/10/29/123294\r
+ * className, onclick等 はここで設定しない\r
+ * \r
+ */\r
+X.Dom.Node.prototype.attr = function( nameOrObj /* v */ ){\r
+       var attrs = this._attrs,\r
+               node, v, name;\r
+       \r
+       if( this._nodeType !== 1 ) return this;\r
+       \r
+       if( nameOrObj && X.Type.isObject( nameOrObj ) ){\r
+               if( !attrs ) attrs = this._attrs = {};\r
+               node = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode;\r
+               for( p in nameOrObj ){\r
+                       this.__attr( node, attrs, p, nameOrObj[ p ] );\r
+               };\r
+               this._attrText = X.Dom.Attr.objToAttrText( this._attrs );\r
+               return this;\r
+       } else\r
+       if( 1 < arguments.length ){\r
+               // setter\r
+               // this._attrText use when Node.create()\r
+               if( !attrs ) attrs = this._attrs = {};\r
+               this.__attr(\r
+                       this._ie4getRawNode ? ( this._rawNode || this._ie4getRawNode() ) : this._rawNode,\r
+                       attrs, nameOrObj, arguments[ 1 ]\r
+               );\r
+               //if( !attrs[ name ] ){\r
+               //      !this._attrText ? ( this._attrText = '' ) : ( this._attrText += ' ' );\r
+               //      this._attrText += X.Dom.Attr.noValue[ name ] ? name : name + '="' + v + '"';\r
+               //      attrs[ name ] = v;\r
+               //} else {\r
+               //      attrs[ name ] = v;\r
+                       this._attrText = X.Dom.Attr.objToAttrText( attrs );\r
+               //};\r
+               return this;\r
+       } else\r
+       if( typeof nameOrObj === 'string' ){\r
+               // getter\r
+               if( !attrs ) return;\r
+               \r
+               return attrs[ v ];\r
+       };\r
+};\r
+X.Dom.Node.prototype.__attr = function( node, attrs, name, v ){\r
+       name = X.Dom.Attr.renameForTag[ name ] || name;\r
+       \r
+       if( attrs[ name ] === v ) return;\r
+       if( name === 'style' ){\r
+               return this.cssText( v );\r
+       };\r
+       if( name.indexOf( 'on' ) === 0 ){\r
+               X.Notification.warn( 'xnode.attr("' + name + '") is wrong, xnode.listen() & xnode.unlisten().' );\r
+               return;\r
+       };\r
+       // className\r
+       if( name === 'class' ) return this.className( v );\r
+       // update node\r
+       if( node ){\r
+               this._ie4getRawNode ?\r
+                       v ? node.setAttribute( name, v ) : node.removeAttribute( name ) : // val\r
+                       ( node[ X.Dom.Attr.renameForDOM[ name ] || name ] = v || undefined ); // val\r
+       };\r
+       // id\r
+       if( name === 'id' ){\r
+               this._id = v === 'ie4uid' + this._uid ? undefined : !v ? undefined : v;\r
+               return;\r
+       };\r
+       // update this._attrs\r
+       if( !v ){\r
+               delete attrs[ name ];\r
+       } else {\r
+               attrs[ name ] = v;\r
+       };\r
+};
\ No newline at end of file
diff --git a/0.6.x/js/dom/15_XDomAnime.js b/0.6.x/js/dom/15_XDomAnime.js
new file mode 100644 (file)
index 0000000..fb9168b
--- /dev/null
@@ -0,0 +1,359 @@
+/*\r
+ * GPU レイヤーを使うとスムースなアニメーションが得られる\r
+ * 但し、古めのデバイスでは処理落ちが起こる\r
+ * 処理落ちは、最も古い初代 iPod touch (iOS3) では特に顕著に発生するため、テスト機としてちょうどいい\r
+ * css の書き方によっても、処理落ちやガタツキに影響するので、デザイナーが気軽に触れるものではない\r
+ * \r
+ * transform の登場によって、要素の表示位置を変更する方法が、css-p との2択になった。\r
+ * 初代 iPod touch では、簡単な css-p すら無視してくれるので、積極的に transform を使っていけ、ということだと思う。\r
+ * 但し transform には様々な癖があり、一筋縄ではいかない。\r
+ * \r
+ * DHTML を扱う専用モジュールを用意して、そこにコードとノウハウを集積する。\r
+ * \r
+ * GPUレイヤーを使用している場合\r
+ * 新しいアニメーション・キューが追加されたときに、現在アニメーションしている要素と親子関係ならば、以前のアニメーションは直ちに停止し、GPUレイヤーを解除。\r
+ */\r
+\r
+X.Dom.Anime = (function( window, document, navigator, Math, undefined ){\r
+\r
+var QUEUE_LIST = [],\r
+       timerID,\r
+       ABS             = new Function( 'v', 'return v<0?-v:v' ),\r
+       animeEnabled    = !X.UA.EInk,\r
+       vendor          = false,\r
+       cssVendor       = '',\r
+    has3d           = X.Dom.Style.has3d,\r
+       transform       = X.Dom.Style.transform,\r
+       transformOrigin = X.Dom.Style.transformOrigin,\r
+       translateZ      = X.Dom.Style.translateZ,\r
+       transition      = X.Dom.Style.transition;\r
+\r
+/*\r
+ * 新規アニメーション要素が現在アニメーションしている要素と親子関係の場合、\r
+ * 親子関係のアニメーションを停止して一挙に最後の状態へ\r
+ */\r
+function registerQueue( queue ){\r
+       var list  = QUEUE_LIST,\r
+               l     = list.length,\r
+               xnode = queue.xnode,\r
+               q, _xnode;\r
+       for( ; l; ){\r
+               q = list[ --l ];\r
+               _xnode = q.xnode;\r
+               _xnode !== xnode && ( _xnode.contains( xnode ) || xnode.contains( _xnode ) ) && q.stop( true );\r
+       };\r
+       list[ list.length ] = queue;\r
+       !timerID && ( timerID = X.Timer.nextFrame( onEnterFrame ) );\r
+};\r
+\r
+function unregisterQueue( queue ){\r
+       var i = QUEUE_LIST.indexOf( queue );\r
+       if( i === -1 ) return;\r
+       if( QUEUE_LIST.length === 1 ){\r
+               QUEUE_LIST.length = 0;\r
+               timerID && X.Timer.cancelFrame( onEnterFrame );\r
+       } else {\r
+               QUEUE_LIST.splice( i, 1 );\r
+       };\r
+};\r
+\r
+function onEnterFrame(){\r
+       var list = QUEUE_LIST,\r
+               i    = 0,\r
+               l    = list.length,\r
+               t    = X.getTime();\r
+       for( ; l; ){\r
+               list[ --l ].tick( t );\r
+       };\r
+       list.length && ( timerID = X.Timer.nextFrame( onEnterFrame ) );\r
+};\r
+\r
+var AnimationQueue = function( xnode ){\r
+       this.xnode = xnode;\r
+};\r
+\r
+X.Class._override( AnimationQueue.prototype,\r
+{\r
+       state     : 0, // 0:停止, 1:登録済, 2:アニメ中の親子要素のGPUレイヤー解除待ち, 3:アニメ中;GPUレイヤーにセット、目標値のセット(transisiton有効), 4:\r
+       xnode     : null,\r
+       startTime : 0,\r
+       type      : 0,\r
+       list      : null,\r
+       init : function( data, duration, timmingFunction ){\r
+               var list, type, prop, data, target, i, l;\r
+               if( !( list = this.list ) ) this.list = list = [];\r
+               for( type in data ){\r
+                       for( i = 0, l = list.length; i < l; ++i ){\r
+                               if( list[ i ][ 0 ] === type ){\r
+                                       prop = list[ i ];\r
+                                       break;\r
+                               };\r
+                       };\r
+                       if( !prop ){\r
+                               prop = {};\r
+                               switch( type ){\r
+                                       case 'width' :\r
+                                               prop[ 2 ] = this.xnode.width(); // currentValue\r
+                                               break;\r
+                                       case 'height' :\r
+                                               prop[ 2 ] = this.xnode.height(); // currentValue\r
+                                               break;\r
+                                       case 'x' :\r
+                                       case 'left' :\r
+                                               type = transform ? 'translateX' : 'left';\r
+                                               prop[ 2 ] = this.xnode.x(); // currentValue\r
+                                               break;\r
+                                       case 'y' :\r
+                                       case 'top' :\r
+                                               type = transform ? 'translateY' : 'top';\r
+                                               prop[ 2 ] = this.xnode.y(); // currentValue\r
+                                               break;\r
+                               };\r
+                               prop[ 0 ] = type;\r
+                       };\r
+                       prop[ 1 ] = data[ type ]; // target value;\r
+                       prop[ 3 ] = prop[ 1 ] - prop[ 2 ];\r
+               };\r
+\r
+               this.state === 0 && registerQueue( this );\r
+\r
+               this.state     = 1;\r
+               this.startTime = X.getTime();\r
+               this.duration  = duration;\r
+               if( transition ){\r
+                       this.timming = 'liner';//timmingFunction;\r
+               } else {\r
+                       this.timming = Liner;\r
+               };\r
+               \r
+       },\r
+       stop : function( opt_goEndPosition ){\r
+               if( this.xnode.dispatch( { type : X.UI.Event.ANIME_BEFORE_STOP, target : this.xnode } ) & X.Callback.PREVENT_DEFAULT ){\r
+                       return;\r
+               };\r
+               this.xnode.dispatch( { type : X.UI.Event.ANIME_STOP, target : this.xnode } );\r
+               opt_goEndPosition && this.tick( this.startTime + this.duration );\r
+               unregisterQueue( this );                \r
+       },\r
+       tick :\r
+               transition ?\r
+                       (function( time ){\r
+                               var ratio  = ( time - this.startTime ) / this.duration,\r
+                                       list   = this.list,\r
+                                       xnode  = this.xnode,\r
+                                       css;\r
+                               if( this.state === 1 ){\r
+                                       this.state = 2;\r
+                                       calculateCSS( css = {}, list );\r
+                                       css[ transformOrigin           ] = '0 0';\r
+                                       css[ transition.Property       ] = this._transProp;\r
+                                       css[ transition.Delay          ] = '0';\r
+                                       css[ transition.Duration       ] = this.duration + 'ms';\r
+                                       css[ transition.TimingFunction ] = this.timming;\r
+                                       xnode.css( css );\r
+                                       delete this._transProp;                 \r
+                               } else\r
+                               if( this.state === 2 ){\r
+                                       this.state = 3;\r
+                                       css = {};\r
+                                       css[ transform ] = this._transform + translateZ;\r
+                                       xnode.css( css )\r
+                                               .listenOnce( transition.End, xnode, this.onTransitionEnd )\r
+                                               .dispatch( { type : X.UI.Event.ANIME_START, ratio : 1, target : xnode } );\r
+                                       this.startTime = time;\r
+                               } else\r
+                               if( 1 <= ratio ){\r
+                                       css = {};\r
+                                       css[ transform ] = this._transform; // GPU support off\r
+                                       delete this._transform;\r
+                                       list.length = 0;\r
+                                       xnode.css( css )\r
+                                               .unlisten( transition.End, xnode, onTransitionEnd )\r
+                                               .dispatch( { type : X.UI.Event.ANIME, ratio : 1, target : xnode } );\r
+                                       xnode.dispatch( { type : X.UI.Event.ANIME_END, ratio : 1, target : xnode } );\r
+                               } else {\r
+                                       xnode.dispatch( { type : X.UI.Event.ANIME, ratio : rario, target : xnode } );\r
+                               };\r
+                       }) :\r
+                       (function( time ){\r
+                               var ratio  = ( time - this.startTime ) / this.duration,\r
+                                       list   = this.list,\r
+                                       xnode  = this.xnode,\r
+                                       css;\r
+                               if( 1 <= ratio ){\r
+                                       this.state = 0;\r
+                                       calculateCSS( css = {}, list, 1, time - this.startTime, this.duration );\r
+                                       list.length = 0;\r
+                                       xnode.css( css )\r
+                                               .dispatch( { type : X.UI.Event.ANIME, ratio : 1, target : xnode } );\r
+                                       xnode.dispatch( { type : X.UI.Event.ANIME_END, ratio : 1, target : xnode } );\r
+                               } else {\r
+                                       this.state = 3;\r
+                                       calculateCSS( css = {}, list, ratio, time - this.startTime, this.duration );\r
+                                       xnode.css( css )\r
+                                               .dispatch( { type : X.UI.Event.ANIME, ratio : rario, target : xnode } );\r
+                               };\r
+                       }),\r
+       onTransitionEnd : transition && (function(){\r
+               return this.dispatch( { type : X.UI.Event.ANIME_END, ratio : 1, target : xnode } );\r
+       }),\r
+       /*\r
+        * transisitonProperty を集める\r
+        * trasform を集める\r
+        */\r
+       calculateCSS :\r
+               transition ?\r
+                       (function( css, list ){\r
+                               var i    = 0,\r
+                                       l    = list.length,\r
+                                       prop = [],\r
+                                       data, type, transX, transY, _transX, _transY;\r
+                               for( ; i < l; ++i ){\r
+                                       data = list[ i ];\r
+                                       type = data[ 0 ];\r
+                                       switch( type ){\r
+                                               case 'translateX' :\r
+                                                       transX  = data[ 2 ];\r
+                                                       _transX = data[ 1 ];\r
+                                                       break;\r
+                                               case 'translateY' :\r
+                                                       transY  = data[ 2 ];\r
+                                                       _transY = data[ 1 ];\r
+                                                       break;\r
+                                               default :\r
+                                                       css[ type ] = data[ 1 ];\r
+                                                       prop[ prop.length ] = type;\r
+                                       };\r
+                               };\r
+                               if( transX || transY ){\r
+                                       prop[ prop.length ] = cssVendor + 'transform';\r
+                                       if( transX && transY ){\r
+                                               css[ transform ] = cssVendor + 'translate(' + transX  + ',' + transY  + ')' + translateZ;\r
+                                               this._transform  = cssVendor + 'translate(' + _transX + ',' + _transY + ')';\r
+                                               \r
+                                       } else\r
+                                       if( transX ){\r
+                                               css[ transform ] = cssVendor + 'translateX(' + transX + ')' + translateZ;\r
+                                               this._transform  = cssVendor + 'translateX(' + _transX + ')';\r
+                                       } else\r
+                                       if( transY ){\r
+                                               css[ transform ] = cssVendor + 'translateY(' + transY + ')' + translateZ;\r
+                                               this._transform  = cssVendor + 'translateY(' + _transY + ')';\r
+                                       };                                      \r
+                               };\r
+                               this._transProp = prop.join( ',' );\r
+                       }) :\r
+               transform ?\r
+                       (function( css, list, ratio, time, duration ){\r
+                               var i = 0, l = list.length,\r
+                                       easing = this.timming,\r
+                                       data, type, transX, transY;\r
+                               for( ; i < l; ++i ){\r
+                                       data = list[ i ];\r
+                                       type = data[ 0 ];\r
+                                       switch( type ){\r
+                                               case 'translateX' :\r
+                                                       transX  = ratio === 1 ? data[ 1 ] : easing( time, data[ 2 ], data[ 3 ], duration );\r
+                                                       break;\r
+                                               case 'translateY' :\r
+                                                       transY  = ratio === 1 ? data[ 1 ] : easing( time, data[ 2 ], data[ 3 ], duration );\r
+                                                       break;\r
+                                               default :\r
+                                                       css[ type ] = ratio === 1 ? data[ 1 ] : easing( time, data[ 2 ], data[ 3 ], duration );\r
+                                       };\r
+                               };\r
+                               if( transX && transY ){\r
+                                       this._transform  = cssVendor + 'translate(' + transX  + ',' + transY  + ')';\r
+                                       css[ transform ] = this._transform + translateZ;\r
+                               } else\r
+                               if( transX ){\r
+                                       this._transform  = cssVendor + 'translateX(' + transX + ')';\r
+                                       css[ transform ] = this._transform + translateZ;\r
+                               } else\r
+                               if( transY ){\r
+                                       this._transform  = cssVendor + 'translateY(' + transY + ')';\r
+                                       css[ transform ] = this._transform + translateZ;\r
+                               };\r
+                       }) :\r
+                       (function( css, list, l, ratio, time, duration ){\r
+                               var data,\r
+                                       easing = this.timming;\r
+                               for( ; l; ){\r
+                                       data = list[ --l ];\r
+                                       css[ data[ 0 ] ] = ratio === 1 ? data[ 1 ] : easing( time, data[ 2 ], data[ 3 ], duration );\r
+                               };\r
+                       })\r
+});\r
+\r
+function Liner( t, b, c, d ){ \r
+  return c * t / d + b;\r
+};\r
+\r
+// original :\r
+// https://github.com/arian/cubic-bezier/blob/master/index.js, MIT License\r
+function CubicBezier(x1, y1, x2, y2, t, epsilon){\r
+       var x = t, t0 = 0, t1 = 1, t2 = x, d2, i = 0;\r
+\r
+       // First try a few iterations of Newton's method -- normally very fast.\r
+       for (; i < 8; i++){\r
+               x2 = CubicBezier.curveX(x1,x2,t2) - x;\r
+               if (ABS(x2) < epsilon) return CubicBezier.curveY(y1, y2, t2);\r
+               d2 = CubicBezier.derivativeCurveX( x1, x2, t2);\r
+               if (ABS(d2) < 1e-6) break;\r
+               t2 = t2 - x2 / d2;\r
+       };\r
+       if (x < t0) return CubicBezier.curveY(y1, y2, t0);\r
+       if (x > t1) return CubicBezier.curveY(y1, y2, t1);\r
+       \r
+       t2 = x;\r
+       \r
+       // Fallback to the bisection method for reliability.\r
+       while (t0 < t1){\r
+               x2 = CubicBezier.curveX(x1,x2,t2);\r
+               if (ABS(x2 - x) < epsilon) return CubicBezier.curveY(y1, y2, t2);\r
+               if (x > x2) t0 = t2;\r
+               else t1 = t2;\r
+               t2 = (t1 - t0) * .5 + t0;\r
+       };\r
+       // Failure\r
+       return CubicBezier.curveY(y1, y2, t2);\r
+\r
+};\r
+CubicBezier.curveX = function( x1, x2, t ){\r
+       var v = 1 - t;\r
+       return 3 * v * v * t * x1 + 3 * v * t * t * x2 + t * t * t;\r
+};\r
+CubicBezier.curveY = function( y1, y2, t ){\r
+       var v = 1 - t;\r
+       return 3 * v * v * t * y1 + 3 * v * t * t * y2 + t * t * t;\r
+};\r
+CubicBezier.derivativeCurveX = function( x1, x2, t ){\r
+       var v = 1 - t;\r
+       return 3 * (2 * (t - 1) * t + v * v) * x1 + 3 * (- t * t * t + 2 * v * t) * x2;\r
+};\r
+\r
+\r
+\r
+// export\r
+X.Dom.Node.prototype.anime = function(){\r
+       if( !this._anime ) this._anime = new AnimationQueue( this );\r
+       this._anime.init.apply( this._anime, arguments );\r
+       return this;\r
+};\r
+X.Dom.Node.prototype.stop = function(){\r
+       if( !this._anime ) return this;\r
+       this._anime.stop.apply( this._anime, arguments );\r
+       return this;\r
+};\r
+\r
+return {\r
+       X       :  1,\r
+       Y       :  2,\r
+       MOVE    :  4,\r
+       WIDTH   :  8,\r
+       HEIGHT  : 16,\r
+       SIZE    : 32,\r
+       OPACITY : 64\r
+};\r
+       \r
+})( window, document, navigator, Math );\r
diff --git a/0.6.x/js/dom/17_XView.js b/0.6.x/js/dom/17_XView.js
deleted file mode 100644 (file)
index 469ab81..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-X.View = {\r
-       Event : {\r
-               SYS_READY         : 0,\r
-               INIT              : 1,\r
-               ADDED             : 2,\r
-               CREATION_COMPLETE : 3,\r
-               REMOVED           : 4,\r
-               \r
-               VIEW_RESIZED      : 5, // リサイズイベントのバブルアップは要素のレイアウトマネジャーでキャンセルされることも\r
-               IN_VIEW           : 6, // 要素が視界に入った\r
-               OUT_VIEW          : 7,\r
-               \r
-               POINTER_OUT       : 8,\r
-               POINTER_IN        : 9,\r
-               \r
-               // FOCUS\r
-               // DISABLED\r
-               // ENABLED\r
-               // BASE_FONT_SIZE_CHANGE\r
-               \r
-       /* -- Pointing Device Event -- */\r
-               _START_POINTER    : 9.5,\r
-               \r
-               CONTEXT_MENU      : 10, // rightclick or longtouch or menukey or ctrl + click\r
-               \r
-       /* -- ここよりあとははノード上をバブルアップ -- */\r
-               _START_BUBLEUP    : 10.5,               \r
-\r
-               // raw pointing device event\r
-               _POINTER_DOWN     : 11,\r
-               _POINTER_UP       : 12,\r
-               _POINTER_MOVE     : 13,\r
-               _POINTER_CANCEL   : 14,\r
-               _TOUCH_START      : 15,\r
-               _TOUCH_END        : 16,\r
-               _TOUCH_MOVE       : 17,\r
-               _TOUCH_CANCEL     : 18,\r
-               _MOUSE_DOWN       : 19,\r
-               _MOUSE_UP         : 20,\r
-               _MOUSE_MOVE       : 21,\r
-               _MOUSE_CANCEL     : 22,\r
-               \r
-               SELECT            : 23, // click or tap or enterkey\r
-               FILE_DRAG         : 24,\r
-       \r
-       /* -- ここより後は X.UI 用のイベント -- */\r
-               _START_XUI_EVENT  : 24.5,\r
-       \r
-       /* -- Mouse only -- */\r
-               MOUSE_MOVE        : 25,\r
-               MOUSE_STAY        : 26,\r
-               MOUSE_STAY_END    : 27,\r
-               MOUSE_WHEEL       : 28,\r
-       \r
-       /* -- Gesuture Event -- */\r
-               HOLD              : 33,\r
-               HOLD_END          : 34,\r
-               TAP               : 35,\r
-               DOUBLE_TAP        : 36,\r
-               DRAG              : 37,\r
-               DRAG_START        : 38,\r
-               DRAG_END          : 39,\r
-               DRAG_UP           : 40,\r
-               DRAG_RIGHT        : 41,\r
-               DRAG_LEFT         : 42,\r
-               DRAG_DOWN         : 43,\r
-               SWIP              : 44,\r
-               SWIP_UP           : 45,\r
-               SWIP_RIGHT        : 46,\r
-               SWIP_LEFT         : 47,         \r
-               SWIP_DOWN         : 48,\r
-               TRANSFORM         : 49,\r
-               TRANSFORM_START   : 50,\r
-               TRANSFORM_END     : 51,\r
-               PINCH             : 52,\r
-               PINCH_IN          : 53,\r
-               PINCH_OUT         : 54,\r
-               ROTATE            : 55,\r
-               \r
-               _END_XUI_EVENT    : 55.5,\r
-               \r
-               _END_POINTER      : 55.5,\r
-       /* -- Pointing Device Event -- */\r
-               \r
-               KEY_DOWN          : 56,\r
-               KEY_UP            : 57,\r
-               KEY_HOLD          : 58,\r
-               \r
-               SCROLL              : 59,\r
-               SCROLL_START        : 60,\r
-               SCROLL_END          : 61,\r
-               SCROLL_BEFORE_START : 62, // cancelable\r
-               SCROLL_BEFORE_END   : 63,\r
-       \r
-               CHANGE            : 64,\r
-               SUBMIT            : 65,\r
-               \r
-               IdToName : {},\r
-               NameToID : {}\r
-       }\r
-};\r
-/*\r
-X.View.Event.IdToName[ X.View.Event.MOUSE_MOVE       ] = 'mousemove';\r
-X.View.Event.IdToName[ X.View.Event.MOUSE_STAY       ] = 'stay';\r
-X.View.Event.IdToName[ X.View.Event.MOUSE_STAY_END   ] = 'stayend';\r
-X.View.Event.IdToName[ X.View.Event.MOUSE_WHEEL      ] = document.onmousewheel !== void 0 ? 'mousewheel' : 'DOMMouseScroll';\r
-X.View.Event.IdToName[ X.View.Event.HOLD     ] = 'hold';\r
-X.View.Event.IdToName[ X.View.Event.HOLD_END ] = 'holdend';\r
-X.View.Event.IdToName[ X.View.Event.TAP      ] = 'tap';\r
-X.View.Event.IdToName[ X.View.Event.DOUBLE_TAP     ] = 'dobuletap';\r
-X.View.Event.IdToName[ X.View.Event.DRAG             ] = 'drag';\r
-X.View.Event.IdToName[ X.View.Event.DRAG_START       ] = 'dragstart';\r
-X.View.Event.IdToName[ X.View.Event.DRAG_END         ] = 'dragend';\r
-X.View.Event.IdToName[ X.View.Event.DRAG_END         ] = 'dragup';\r
-X.View.Event.IdToName[ X.View.Event.DRAG_END         ] = 'dragleft';\r
-X.View.Event.IdToName[ X.View.Event.DRAG_END         ] = 'dragright';\r
-X.View.Event.IdToName[ X.View.Event.DRAG_END         ] = 'dragdown';\r
-X.View.Event.IdToName[ X.View.Event.SWIP             ] = 'swip';\r
-X.View.Event.IdToName[ X.View.Event.SWIP_LEFT        ] = 'swipleft';\r
-X.View.Event.IdToName[ X.View.Event.SWIP_RIGHT       ] = 'swipright';\r
-X.View.Event.IdToName[ X.View.Event.SWIP_TOP         ] = 'swiptop';\r
-X.View.Event.IdToName[ X.View.Event.SWIP_BOTTOM      ] = 'swipbottom';\r
-X.View.Event.IdToName[ X.View.Event.TRANSFORM        ] = 'transform';\r
-X.View.Event.IdToName[ X.View.Event.TRANSFORM_START  ] = 'transformstart';\r
-X.View.Event.IdToName[ X.View.Event.TRANSFORM_END    ] = 'transformend';\r
-X.View.Event.IdToName[ X.View.Event.PINCH            ] = 'pinch';\r
-X.View.Event.IdToName[ X.View.Event.PINCH_IN         ] = 'pinchin';\r
-X.View.Event.IdToName[ X.View.Event.PINCH_OUT        ] = 'pinchout';\r
-X.View.Event.IdToName[ X.View.Event.ROTATE           ] = 'rotate';\r
-*/\r
-\r
-if( navigator.msPointerEnabled || navigator.pointerEnabled ){\r
-       X.View.Event.IdToName[ X.View.Event._POINTER_DOWN   ] = navigator.msPointerEnabled ? 'MSPointerDown'   : 'pointerdown';\r
-       X.View.Event.IdToName[ X.View.Event._POINTER_UP     ] = navigator.msPointerEnabled ? 'MSPointerUp'     : 'pointerup';\r
-       X.View.Event.IdToName[ X.View.Event._POINTER_MOVE   ] = navigator.msPointerEnabled ? 'MSPointerMove'   : 'pointermove';\r
-       X.View.Event.IdToName[ X.View.Event._POINTER_CANCEL ] = navigator.msPointerEnabled ? 'MSPointerCancel' : 'pointercancel';\r
-};// else\r
-//if( window.ontouchstart !== void 0 /* || window.DocumentTouch && document instanceof DocumentTouch */ ){\r
-       X.View.Event.IdToName[ X.View.Event._TOUCH_START  ] = 'touchstart';\r
-       X.View.Event.IdToName[ X.View.Event._TOUCH_END    ] = 'touchend';\r
-       X.View.Event.IdToName[ X.View.Event._TOUCH_MOVE   ] = 'touchmove';\r
-       X.View.Event.IdToName[ X.View.Event._TOUCH_CANCEL ] = 'touchcancel';\r
-//} else {\r
-       // ToDo: cancel \r
-       X.View.Event.IdToName[ X.View.Event._MOUSE_DOWN   ] = 'mousedown';\r
-       X.View.Event.IdToName[ X.View.Event._MOUSE_UP     ] = 'mouseup';\r
-       X.View.Event.IdToName[ X.View.Event._MOUSE_MOVE   ] = 'mousemove';\r
-       X.View.Event.IdToName[ X.View.Event._MOUSE_CANCEL ] = 'mouseleave'; // ??\r
-//};\r
-\r
-( function( IdToName, NameToID ){\r
-       for( var id in IdToName ){\r
-               NameToID[ IdToName[ id ] ] = id;\r
-       };\r
-})( X.View.Event.IdToName, X.View.Event.NameToID );\r
-\r
-X.View = (function( window, document ){\r
-       var view,\r
-               lock = 0, w = 0, h = 0,\r
-               resize, delayResize;\r
-\r
-/* -----------------------------------------------\r
- * Resize\r
- *  uupaa.js\r
- */\r
-       function unlock(){ lock = 0; };\r
-       \r
-       if( X.UA.IE ){\r
-               resize = function(){\r
-                       var size, i, l;\r
-                       if( !lock++ ){\r
-                               size = X.View.getSize();\r
-                               if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED\r
-                                       w = size[ 0 ];\r
-                                       h = size[ 1 ];\r
-                                       X.View.dispatch( { type : X.View.Event.VIEW_RESIZED, w : w, h : h } );\r
-                               };\r
-                               X.Timer.once( 1, unlock );// delay unlock\r
-                       };\r
-               };\r
-       } else {\r
-               resize = function(){\r
-                       !lock++ && X.Timer.once( 40, delayResize );\r
-               };\r
-               delayResize = function(){\r
-                       var size = X.View.getSize(),\r
-                               i, l;\r
-                       if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED\r
-                               w = size[ 0 ];\r
-                               h = size[ 1 ];\r
-                               X.View.dispatch( { type : X.View.Event.VIEW_RESIZED, w : w, h : h } );\r
-                       };\r
-                       X.Timer.once( 1, unlock );\r
-               };\r
-       };\r
-       \r
-       X.View = X.Class._override(\r
-               new X.EventDispatcher(),\r
-               {\r
-                       ready : false,\r
-                       getPointerPosition : function(){\r
-                               \r
-                       },\r
-                       /* 要素が視界に入った  http://remysharp.com/2009/01/26/element-in-view-event-plugin/ */\r
-                       inView : function( elm ){\r
-                               \r
-                       },\r
-                       _init : function(){\r
-                               var s, size, b, x;\r
-                               if( X.View.ready ) return X.Callback.UN_LISTEN;\r
-                               if( s = X.View._script ){\r
-                                       s.parentNode.removeChild( s );\r
-                                       s.onreadystatechange = new Function();\r
-                                       s.onreadystatechange = null;\r
-                                       delete X.View._script;\r
-                               };\r
-                               delete X.View._init;\r
-                               X.View.ready = true;\r
-                               \r
-                               /* if( X.UA.IE ) */ X.View._view = ( document.compatMode !== "CSS1Compat" ? document.body : document.documentElement );\r
-                               size = X.View.getSize();\r
-                               \r
-                               X.View.dispatch( { type : X.View.Event.SYS_READY, w : size[ 0 ], h : size[ 1 ] } );\r
-                               \r
-                               if( X.UA.IE && X.UA.IE < 9 ){\r
-                                       X.Timer.add( 100, resize );\r
-                                       if( 5 <= X.UA.IE ){\r
-                                               b = document.body;\r
-                                               b.appendChild( x = document.createElement( 'div' ) );\r
-                                               x.style.cssText = 'width:1px;height:1px;line-height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';\r
-                                               b.className += [ b.className === '' ? '' : ' ', 'ActiveX-', 1 < x.offsetHeight ? 'enabled' : 'disabled' ].join( '' );\r
-                                               b.removeChild( x );                             \r
-                                       };\r
-                               } else {\r
-                                       X.Dom.Event.add( window, 'resize', resize );\r
-                               };                              \r
-                               \r
-                               return X.Callback.UN_LISTEN;\r
-                       },\r
-                       Event : X.View.Event,\r
-                       // _view : null, for ie\r
-                       getSize :\r
-                               X.UA.IE ?\r
-                                       new Function( 'return [ X.View._view.clientWidth, X.View._view.clientHeight ]' ) :\r
-                                       new Function( 'return [ window.innerWidth, window.innerHeight ]' ),\r
-                       getScrollPosition :\r
-                               window.pageXOffset ?\r
-                                       new Function( 'return [window.pageXOffset,window.pageYOffset]' ) :\r
-                               window.scrollLeft  ?\r
-                                       new Function( 'return [window.scrollLeft,window.scrollTop]') :\r
-                                       new Function( 'return [X.View._view.scrollLeft,X.View._view.scrollTop]' ),\r
-                       getDocumentSize : function(){\r
-                               return [\r
-                                       X.View._view.scrollWidth  || X.View._view.offsetWidth,\r
-                                       X.View._view.scrollHeight || X.View._view.offsetHeight\r
-                               ];\r
-                       }\r
-               }\r
-       );\r
-               \r
-       return X.View;\r
-})( window, document );\r
-\r
-/* -----------------------------------------------\r
- * Document Ready\r
- *  Dean Edwards/Matthias Miller/John Resig\r
- */\r
-/* for ie9+/Mozilla/Opera9 */\r
-if( document.addEventListener ){\r
-       X.Dom.Event.add( document, 'DOMContentLoaded', X.View._init );\r
-} else\r
-if( 5 <= X.UA.IE && X.inHead ){\r
-       // if this script in Head\r
-       document.write( "<script id=__ie_onload defer src=javascript:void(0)><\/script>" );\r
-       X.View._script = document.getElementById( "__ie_onload" );\r
-       X.View._script.onreadystatechange = function(){\r
-               this.readyState === 'complete' && X.View._init();\r
-       };\r
-} else\r
-if( X.UA.WebKit ){ // sniff\r
-       X.Timer.add( 10, function(){\r
-               if( !X.View._init ) return X.Callback.UN_LISTEN;\r
-               if( 'loaded|complete'.indexOf( document.readyState ) !== -1 ) return X.View._init();\r
-       });\r
-};\r
-\r
-/* for other browsers */\r
-X.Dom.Event.add( window, 'load', X.View._init );\r
-\r
-//\r
-X.View.listen( X.View.Event.SYS_READY, function(e){ console.log( 'X.View DomReady ' + X.View.ready ) } );\r
-\r
-X.View.listen( X.View.Event.VIEW_RESIZED, function(e){ console.log( 'X.View VIEW_RESIZED ' + e.w + 'x' + e.h ) } );
\ No newline at end of file
similarity index 98%
rename from 0.6.x/js/dom/12_XDomParser.js
rename to 0.6.x/js/dom/18_XDomParser.js
index 2827c0f..8ffdcdc 100644 (file)
        function saveAttr( attrs, name, value ){
                name  = name.toLowerCase();
                value = fillAttrs[ name ] === 1 ? name : value;
-               var escape = value.indexOf( '"' ) !== -1 && value.split( '"' ).join( '\\"' ).split( '\\\\"' ).join( '\\"' );
                attrs[ attrs.length ] = {
                        name    : name,
                        value   : value,
-                       escaped : escape || value
+                       escaped :
+                               value.indexOf( '"' ) !== -1 ?
+                                       value.split( '"' ).join( '\\"' ).split( '\\\\"' ).join( '\\"' ) :
+                                       value
                };
        };
 
@@ -298,7 +300,9 @@ X.Dom._htmlStringToXNode = {
                                        };
                                };
                        };
-                       xnode._attrs = _attrs;
+                       //xnode._attrs = _attrs;
+                       xnode.attr( _attrs );
+                       // xnode.css()
                };
        },
        end : function(){
diff --git a/0.6.x/js/ui/00_XUI.js b/0.6.x/js/ui/00_XUI.js
new file mode 100644 (file)
index 0000000..414c7cc
--- /dev/null
@@ -0,0 +1 @@
+X.UI = X.UI || {};
\ No newline at end of file
diff --git a/0.6.x/js/ui/04_XUI_Event.js b/0.6.x/js/ui/04_XUI_Event.js
new file mode 100644 (file)
index 0000000..115c902
--- /dev/null
@@ -0,0 +1,146 @@
+\r
+X.UI.s = X.Dom.Event._LAST_EVENT;\r
+X.UI.i = 0;\r
+\r
+X.UI.Event = {\r
+\r
+       INIT              : X.UI.s + ( ++X.UI.i ),\r
+       ADDED             : X.UI.s + ( ++X.UI.i ),\r
+       CREATION_COMPLETE : X.UI.s + ( ++X.UI.i ),\r
+       REMOVED           : X.UI.s + ( ++X.UI.i ),\r
+       \r
+       ENTER_VIEW        : X.UI.s + ( ++X.UI.i ), // 要素が視界に入った\r
+       OUT_VIEW          : X.UI.s + ( ++X.UI.i ),\r
+       \r
+       POINTER_OUT       : X.UI.s + ( ++X.UI.i ),\r
+       POINTER_IN        : X.UI.s + ( ++X.UI.i ),\r
+       \r
+       // FOCUS\r
+       // DISABLED\r
+       // ENABLED\r
+       // BASE_FONT_SIZE_CHANGE\r
+       \r
+/* -- Pointing Device Event -- */\r
+       _START_POINTER    : X.UI.s + ( X.UI.i ) + 0.5,\r
+       \r
+       CONTEXT_MENU      : X.UI.s + ( ++X.UI.i ), // rightclick or longtouch or menukey or ctrl + click\r
+       \r
+/* -- ここよりあとははノード上をバブルアップ        -- */\r
+       _START_BUBLEUP    : X.UI.s + ( X.UI.i ) + 0.5,          \r
+\r
+       // raw pointing device event\r
+       _POINTER_DOWN     : X.UI.s + ( ++X.UI.i ),\r
+       _POINTER_UP       : X.UI.s + ( ++X.UI.i ),\r
+       _POINTER_MOVE     : X.UI.s + ( ++X.UI.i ),\r
+       _POINTER_CANCEL   : X.UI.s + ( ++X.UI.i ),\r
+       _TOUCH_START      : X.UI.s + ( ++X.UI.i ),\r
+       _TOUCH_END        : X.UI.s + ( ++X.UI.i ),\r
+       _TOUCH_MOVE       : X.UI.s + ( ++X.UI.i ),\r
+       _TOUCH_CANCEL     : X.UI.s + ( ++X.UI.i ),\r
+       _MOUSE_DOWN       : X.UI.s + ( ++X.UI.i ),\r
+       _MOUSE_UP         : X.UI.s + ( ++X.UI.i ),\r
+       _MOUSE_MOVE       : X.UI.s + ( ++X.UI.i ),\r
+       _MOUSE_CANCEL     : X.UI.s + ( ++X.UI.i ),\r
+       \r
+       SELECT            : X.UI.s + ( ++X.UI.i ), // click or tap or enterkey\r
+       \r
+       FILE_DRAG         : X.UI.s + ( ++X.UI.i ),\r
+       FILE_DRAG_START   : X.UI.s + ( ++X.UI.i ),\r
+       FILE_DRAG_END     : X.UI.s + ( ++X.UI.i ),\r
+       FILE_HOLD         : X.UI.s + ( ++X.UI.i ),\r
+       FILE_HOLD_END     : X.UI.s + ( ++X.UI.i ),\r
+       FILE_DROP_BEFORE  : X.UI.s + ( ++X.UI.i ),\r
+       FILE_DROP         : X.UI.s + ( ++X.UI.i ),\r
+       FILE_DROP_CANCEL  : X.UI.s + ( ++X.UI.i ),\r
+\r
+/* -- ここより後は X.UI 用のイベント -- */\r
+       _START_XUI_EVENT  : X.UI.s + ( X.UI.i ) + 0.5,\r
+\r
+/* -- Mouse & Floating touch(Xperia sola)?? -- */\r
+       HOVER_MOVE        : X.UI.s + ( ++X.UI.i ),\r
+       HOVER_STAY        : X.UI.s + ( ++X.UI.i ),\r
+       HOVER_STAY_END    : X.UI.s + ( ++X.UI.i ),\r
+       WHEEL             : X.UI.s + ( ++X.UI.i ),\r
+\r
+/* -- Gesuture Event -- */\r
+       HOLD              : X.UI.s + ( ++X.UI.i ),\r
+       HOLD_END          : X.UI.s + ( ++X.UI.i ),\r
+       TAP               : X.UI.s + ( ++X.UI.i ),\r
+       DOUBLE_TAP        : X.UI.s + ( ++X.UI.i ),\r
+       DRAG              : X.UI.s + ( ++X.UI.i ),\r
+       DRAG_START        : X.UI.s + ( ++X.UI.i ),\r
+       DRAG_END          : X.UI.s + ( ++X.UI.i ),\r
+       DRAG_UP           : X.UI.s + ( ++X.UI.i ),\r
+       DRAG_RIGHT        : X.UI.s + ( ++X.UI.i ),\r
+       DRAG_LEFT         : X.UI.s + ( ++X.UI.i ),\r
+       DRAG_DOWN         : X.UI.s + ( ++X.UI.i ),\r
+       SWIP              : X.UI.s + ( ++X.UI.i ),\r
+       SWIP_UP           : X.UI.s + ( ++X.UI.i ),\r
+       SWIP_RIGHT        : X.UI.s + ( ++X.UI.i ),\r
+       SWIP_LEFT         : X.UI.s + ( ++X.UI.i ),              \r
+       SWIP_DOWN         : X.UI.s + ( ++X.UI.i ),\r
+       TRANSFORM         : X.UI.s + ( ++X.UI.i ),\r
+       TRANSFORM_START   : X.UI.s + ( ++X.UI.i ),\r
+       TRANSFORM_END     : X.UI.s + ( ++X.UI.i ),\r
+       PINCH             : X.UI.s + ( ++X.UI.i ),\r
+       PINCH_IN          : X.UI.s + ( ++X.UI.i ),\r
+       PINCH_OUT         : X.UI.s + ( ++X.UI.i ),\r
+       ROTATE            : X.UI.s + ( ++X.UI.i ),\r
+       \r
+       _END_XUI_EVENT    : X.UI.s + ( X.UI.i ) + 0.5,\r
+       \r
+       _END_POINTER      : X.UI.s + ( X.UI.i ) + 0.5,\r
+/* -- Pointing Device Event -- */\r
+       \r
+       KEY_DOWN          : X.UI.s + ( ++X.UI.i ),\r
+       KEY_UP            : X.UI.s + ( ++X.UI.i ),\r
+       KEY_HOLD          : X.UI.s + ( ++X.UI.i ),\r
+       \r
+       SCROLL_BEFORE_START : X.UI.s + ( ++X.UI.i ), // cancelable\r
+       SCROLL_START        : X.UI.s + ( ++X.UI.i ),\r
+       SCROLL_BEFORE_MOVE  : X.UI.s + ( ++X.UI.i ),\r
+       SCROLL_MOVE         : X.UI.s + ( ++X.UI.i ),\r
+       SCROLL_END          : X.UI.s + ( ++X.UI.i ),\r
+       SCROLL_REFRESH      : X.UI.s + ( ++X.UI.i ),\r
+\r
+       ANIME_BEFORE_START  : X.UI.s + ( ++X.UI.i ),\r
+       ANIME_START         : X.UI.s + ( ++X.UI.i ),\r
+       ANIME               : X.UI.s + ( ++X.UI.i ),\r
+       ANIME_END           : X.UI.s + ( ++X.UI.i ),\r
+       ANIME_BEFORE_STOP   : X.UI.s + ( ++X.UI.i ),\r
+       ANIME_STOP          : X.UI.s + ( ++X.UI.i ),\r
+\r
+       CHANGE            : X.UI.s + ( ++X.UI.i ),\r
+       SUBMIT            : X.UI.s + ( ++X.UI.i ),\r
+       \r
+       IdToName : {},\r
+       NameToID : {}\r
+};\r
+\r
+delete X.UI.s;\r
+delete X.UI.i;\r
+\r
+if( navigator.msPointerEnabled || navigator.pointerEnabled ){\r
+       X.UI.Event.IdToName[ X.UI.Event._POINTER_DOWN   ] = navigator.msPointerEnabled ? 'MSPointerDown'   : 'pointerdown';\r
+       X.UI.Event.IdToName[ X.UI.Event._POINTER_UP     ] = navigator.msPointerEnabled ? 'MSPointerUp'     : 'pointerup';\r
+       X.UI.Event.IdToName[ X.UI.Event._POINTER_MOVE   ] = navigator.msPointerEnabled ? 'MSPointerMove'   : 'pointermove';\r
+       X.UI.Event.IdToName[ X.UI.Event._POINTER_CANCEL ] = navigator.msPointerEnabled ? 'MSPointerCancel' : 'pointercancel';\r
+};// else\r
+//if( window.ontouchstart !== void 0 /* || window.DocumentTouch && document instanceof DocumentTouch */ ){\r
+       X.UI.Event.IdToName[ X.UI.Event._TOUCH_START  ] = 'touchstart';\r
+       X.UI.Event.IdToName[ X.UI.Event._TOUCH_END    ] = 'touchend';\r
+       X.UI.Event.IdToName[ X.UI.Event._TOUCH_MOVE   ] = 'touchmove';\r
+       X.UI.Event.IdToName[ X.UI.Event._TOUCH_CANCEL ] = 'touchcancel';\r
+//} else {\r
+       // ToDo: cancel \r
+       X.UI.Event.IdToName[ X.UI.Event._MOUSE_DOWN   ] = 'mousedown';\r
+       X.UI.Event.IdToName[ X.UI.Event._MOUSE_UP     ] = 'mouseup';\r
+       X.UI.Event.IdToName[ X.UI.Event._MOUSE_MOVE   ] = 'mousemove';\r
+       X.UI.Event.IdToName[ X.UI.Event._MOUSE_CANCEL ] = 'mouseleave'; // ??\r
+//};\r
+\r
+( function( IdToName, NameToID ){\r
+       for( var id in IdToName ){\r
+               NameToID[ IdToName[ id ] ] = id;\r
+       };\r
+})( X.UI.Event.IdToName, X.UI.Event.NameToID );
\ No newline at end of file
index 2f93f52..d12514c 100644 (file)
@@ -4,8 +4,6 @@
  *  Jorik Tangelder <j.tangelder@gmail.com>, MIT license\r
  **/\r
 \r
-X.UI = X.UI || {};\r
-\r
 ( function( Math, window, document, undefined ){\r
        \r
        var ELEENT_LIST = [],\r
@@ -39,7 +37,7 @@ X.UI = X.UI || {};
                        numTouches = 0,// count the total touches on the screen\r
                        pointerType, i, l, touches, ret, active, gesture, startEv,\r
                        deltaTime, deltaX, deltaY, velocity;\r
-               console.log( '1 : ' + type + ' .............. ' + e.type )\r
+\r
                if( !type ) return;\r
                \r
                if( e.pointerType ){\r
@@ -138,13 +136,9 @@ X.UI = X.UI || {};
                                pointerType : type & POINTER_TYPE_MASK\r
                        };\r
 \r
-                       console.log( '2 : ' + type + ' .............. ' + last_move_event.type )\r
-\r
                        if( type & START ){\r
-                               console.log( '2a : ' + type + ' .............. ' + last_move_event.type )\r
                                if( !this.enabled ) return;\r
                                // already busy with a Hammer.gesture detection on an element\r
-                               console.log( '2b : ' + type + ' .............. ' + last_move_event.type )\r
                                if( Detection.current ) return;\r
                                Detection.current = {\r
                                        hammer     : this, // reference to HammerInstance we're working for\r
@@ -163,8 +157,6 @@ X.UI = X.UI || {};
                                active = hammer.activeGesture;\r
                        };\r
                        \r
-                       console.log( '3 : ' + type + ' .............. ' + last_move_event.type )\r
-                       \r
                        // ----------------------------------------------------------------------------------------------------------------\r
                        // ret = Detection.detect( e );\r
 \r
@@ -210,21 +202,20 @@ X.UI = X.UI || {};
                                startEvent : startEv\r
                        });\r
 \r
-\r
+                       // store as previous event event\r
+                       Detection.current.lastEvent = e;\r
+                       \r
                        // call Hammer.gesture handlers\r
                        for( i = 0, l = gestures.length; i < l; ++i ){\r
                                gesture = gestures[ i ];\r
                                if( Detection.stopped ) break;\r
-                               if( active[ gesture.name ] ) console.log( gesture.name );\r
+                               //if( active[ gesture.name ] ) console.log( gesture.name );\r
                                // only when the instance options have enabled this gesture\r
                                active[ gesture.name ] &&\r
                                        // if a handler returns false, we stop with the detection\r
                                        ( ret |= ( gesture.handler.call( gesture, e, hammer ) || X.Callback.NONE ) );\r
                        };\r
 \r
-                       // store as previous event event\r
-                       Detection.current.lastEvent = e;\r
-\r
                        // endevent, but not the last touch, so dont stop\r
                        type & END && numTouches === 0 && Detection.stopDetect();\r
                        \r
@@ -268,15 +259,15 @@ X.UI = X.UI || {};
                };\r
 \r
                if( navigator.pointerEnabled || navigator.msPointerEnabled ){\r
-                       Hammer.EVENT_TYPES_START = [ X.View.Event._POINTER_DOWN ];\r
-                       types = [ X.View.Event._POINTER_MOVE, X.View.Event._POINTER_UP, X.View.Event._POINTER_CANCEL ];\r
+                       Hammer.EVENT_TYPES_START = [ X.UI.Event._POINTER_DOWN ];\r
+                       types = [ X.UI.Event._POINTER_MOVE, X.UI.Event._POINTER_UP, X.UI.Event._POINTER_CANCEL ];\r
                } else\r
                if( window.ontouchstart !== void 0 ){\r
-                       Hammer.EVENT_TYPES_START = [ X.View.Event._TOUCH_START ];\r
-                       types = [ X.View.Event._TOUCH_MOVE, X.View.Event._MOUSE_MOVE, X.View.Event._TOUCH_END, X.View.Event._TOUCH_CANCEL ];\r
+                       Hammer.EVENT_TYPES_START = [ X.UI.Event._TOUCH_START ];\r
+                       types = [ X.UI.Event._TOUCH_MOVE, X.UI.Event._MOUSE_MOVE, X.UI.Event._TOUCH_END, X.UI.Event._TOUCH_CANCEL ];\r
                } else {\r
-                       Hammer.EVENT_TYPES_START = [ X.View.Event._MOUSE_DOWN ];\r
-                       types = [ X.View.Event._MOUSE_MOVE, X.View.Event._MOUSE_UP, X.View.Event._MOUSE_CANCEL ];\r
+                       Hammer.EVENT_TYPES_START = [ X.UI.Event._MOUSE_DOWN ];\r
+                       types = [ X.UI.Event._MOUSE_MOVE, X.UI.Event._MOUSE_UP, X.UI.Event._MOUSE_CANCEL ];\r
                };\r
 \r
                // Add touch events on the document\r
@@ -362,20 +353,20 @@ X.UI = X.UI || {};
                EVENT_TYPE_MASK   = START | MOVE | END,\r
                POINTER_TYPE_MASK = POINTER | TOUCH | MOUSE | PEN,\r
                IdToGestureID = {};\r
-       IdToGestureID[ X.View.Event._POINTER_DOWN   ] = START;\r
-       IdToGestureID[ X.View.Event._POINTER_MOVE   ] = MOVE;\r
-       IdToGestureID[ X.View.Event._POINTER_UP     ] = END;\r
-       IdToGestureID[ X.View.Event._POINTER_CANCEL ] = END;\r
+       IdToGestureID[ X.UI.Event._POINTER_DOWN   ] = START;\r
+       IdToGestureID[ X.UI.Event._POINTER_MOVE   ] = MOVE;\r
+       IdToGestureID[ X.UI.Event._POINTER_UP     ] = END;\r
+       IdToGestureID[ X.UI.Event._POINTER_CANCEL ] = END;\r
        \r
-       IdToGestureID[ X.View.Event._TOUCH_START  ] = START;\r
-       IdToGestureID[ X.View.Event._TOUCH_MOVE   ] = MOVE;\r
-       IdToGestureID[ X.View.Event._TOUCH_END    ] = END;\r
-       IdToGestureID[ X.View.Event._TOUCH_CANCEL ] = END;\r
+       IdToGestureID[ X.UI.Event._TOUCH_START  ] = START;\r
+       IdToGestureID[ X.UI.Event._TOUCH_MOVE   ] = MOVE;\r
+       IdToGestureID[ X.UI.Event._TOUCH_END    ] = END;\r
+       IdToGestureID[ X.UI.Event._TOUCH_CANCEL ] = END;\r
        \r
-       IdToGestureID[ X.View.Event._MOUSE_DOWN   ] = START;\r
-       IdToGestureID[ X.View.Event._MOUSE_MOVE   ] = MOVE;\r
-       IdToGestureID[ X.View.Event._MOUSE_UP     ] = END;\r
-       IdToGestureID[ X.View.Event._MOUSE_CANCEL ] = END;\r
+       IdToGestureID[ X.UI.Event._MOUSE_DOWN   ] = START;\r
+       IdToGestureID[ X.UI.Event._MOUSE_MOVE   ] = MOVE;\r
+       IdToGestureID[ X.UI.Event._MOUSE_UP     ] = END;\r
+       IdToGestureID[ X.UI.Event._MOUSE_CANCEL ] = END;\r
        \r
        Utils = {\r
                \r
@@ -742,8 +733,8 @@ X.UI = X.UI || {};
        Gestures.Hold = {\r
                name  : 'hold',\r
                index : 10,\r
-               startID : X.View.Event.HOLD,\r
-               endID   : X.View.Event.HOLD_END,\r
+               startID : X.UI.Event.HOLD,\r
+               endID   : X.UI.Event.HOLD_END,\r
                defaults : {\r
                        hold_timeout   : 500,\r
                        hold_threshold : 1\r
@@ -772,14 +763,14 @@ X.UI = X.UI || {};
                                        this.timerID && X.Timer.remove( this.timerID );\r
                                        if( Gestures.Hold.holding === true ){\r
                                                Gestures.Hold.holding = false;\r
-                                               return hammer.trigger( X.View.Event.HOLD_END, e );\r
+                                               return hammer.trigger( X.UI.Event.HOLD_END, e );\r
                                        };\r
                                        break;\r
                        };\r
                },\r
                _onTimer : function( e, hammer ){\r
                        if( Detection.current.name === 'hold' ){\r
-                               hammer.trigger( X.View.Event.HOLD, e );\r
+                               hammer.trigger( X.UI.Event.HOLD, e );\r
                                Gestures.Hold.holding = true;\r
                        };\r
                }\r
@@ -793,8 +784,8 @@ X.UI = X.UI || {};
        Gestures.Tap = {\r
                name     : 'tap',\r
                index    : 100,\r
-               startID  : X.View.Event.TAP,\r
-               endID    : X.View.Event.DOUBLE_TAP,\r
+               startID  : X.UI.Event.TAP,\r
+               endID    : X.UI.Event.DOUBLE_TAP,\r
                defaults : {\r
                        tap_max_touchtime  : 250,\r
                        tap_max_distance   : 10,\r
@@ -812,12 +803,12 @@ X.UI = X.UI || {};
 \r
                                // check if double tap\r
                                if( prev && prev.name === 'tap' && ( e.timeStamp - prev.lastEvent.timeStamp ) < hammer.options.doubletap_interval && e.distance < hammer.options.doubletap_distance ){\r
-                                       return hammer.trigger( X.View.Event.DOUBLE_TAP, e );\r
+                                       return hammer.trigger( X.UI.Event.DOUBLE_TAP, e );\r
                                } else\r
                                // do a single tap\r
                                if( hammer.options.tap_always ){\r
                                        Detection.current.name = 'tap';\r
-                                       return hammer.trigger(  X.View.Event.TAP, e );\r
+                                       return hammer.trigger(  X.UI.Event.TAP, e );\r
                                };\r
                        };\r
                }\r
@@ -831,8 +822,8 @@ X.UI = X.UI || {};
        Gestures.Swipe = {\r
                name : 'swipe',\r
                index : 40,\r
-               startID  : X.View.Event.SWIP,\r
-               endID    : X.View.Event.SWIP_DOWN,\r
+               startID  : X.UI.Event.SWIP,\r
+               endID    : X.UI.Event.SWIP_DOWN,\r
                defaults : {\r
                        // set 0 for unlimited, but this can conflict with transform\r
                        swipe_max_touches : 1,\r
@@ -847,15 +838,15 @@ X.UI = X.UI || {};
                                // or we can be already in dragging\r
                                if( hammer.options.swipe_velocity < e.velocityX || hammer.options.swipe_velocity < e.velocityY ){\r
                                        // trigger swipe events\r
-                                       hammer.trigger( X.View.Event.SWIP, e );\r
+                                       hammer.trigger( X.UI.Event.SWIP, e );\r
                                        hammer.trigger(\r
                                                e.direction === Hammer.DIRECTION_UP ?\r
-                                                       X.View.Event.SWIP_UP :\r
+                                                       X.UI.Event.SWIP_UP :\r
                                                e.direction === Hammer.DIRECTION_DOWN ?\r
-                                                       X.View.Event.SWIP_DOWN :\r
+                                                       X.UI.Event.SWIP_DOWN :\r
                                                e.direction === Hammer.DIRECTION_LEFT ?\r
-                                                       X.View.Event.SWIP_LEFT :\r
-                                                       X.View.Event.SWIP_RIGHT,\r
+                                                       X.UI.Event.SWIP_LEFT :\r
+                                                       X.UI.Event.SWIP_RIGHT,\r
                                                e\r
                                        );\r
                                };\r
@@ -873,8 +864,8 @@ X.UI = X.UI || {};
        Gestures.Drag = {\r
                name : 'drag',\r
                index : 50,\r
-               startID  : X.View.Event.DRAG,\r
-               endID    : X.View.Event.DRAG_DOWN,\r
+               startID  : X.UI.Event.DRAG,\r
+               endID    : X.UI.Event.DRAG_DOWN,\r
                defaults : {\r
                        drag_min_distance : 10,\r
                        // set 0 for unlimited, but this can conflict with transform\r
@@ -897,7 +888,7 @@ X.UI = X.UI || {};
                        // current gesture isnt drag, but dragged is true\r
                        // this means an other gesture is busy. now call dragend\r
                        if( Detection.current.name !== this.name && this.triggered ){\r
-                               hammer.trigger( X.View.Event.DRAG_END, e );\r
+                               hammer.trigger( X.UI.Event.DRAG_END, e );\r
                                this.triggered = false;\r
                                return;\r
                        };\r
@@ -932,22 +923,22 @@ X.UI = X.UI || {};
 \r
                                        // first time, trigger dragstart event\r
                                        if( !this.triggered ){\r
-                                               hammer.trigger( X.View.Event.DRAG_START, e );\r
+                                               hammer.trigger( X.UI.Event.DRAG_START, e );\r
                                                this.triggered = true;\r
                                        };\r
 \r
                                        // trigger normal event\r
-                                       hammer.trigger( X.View.Event.DRAG, e );\r
+                                       hammer.trigger( X.UI.Event.DRAG, e );\r
 \r
                                        // direction event, like dragdown\r
                                        hammer.trigger(\r
                                                e.direction === Hammer.DIRECTION_UP ?\r
-                                                       X.View.Event.DRAG_UP :\r
+                                                       X.UI.Event.DRAG_UP :\r
                                                e.direction === Hammer.DIRECTION_DOWN ?\r
-                                                       X.View.Event.DRAG_DOWN :\r
+                                                       X.UI.Event.DRAG_DOWN :\r
                                                e.direction === Hammer.DIRECTION_LEFT ?\r
-                                                       X.View.Event.DRAG_LEFT :\r
-                                                       X.View.Event.DRAG_RIGHT,\r
+                                                       X.UI.Event.DRAG_LEFT :\r
+                                                       X.UI.Event.DRAG_RIGHT,\r
                                                e\r
                                        );\r
 \r
@@ -960,7 +951,7 @@ X.UI = X.UI || {};
 \r
                                case END:\r
                                        // trigger dragend\r
-                                       this.triggered && hammer.trigger( X.View.Event.DRAG_END, e );\r
+                                       this.triggered && hammer.trigger( X.UI.Event.DRAG_END, e );\r
                                        this.triggered = false;\r
                                        break;\r
                        }\r
@@ -975,8 +966,8 @@ X.UI = X.UI || {};
        Gestures.Transform = {\r
                name : 'transform',\r
                index : 45,\r
-               startID  : X.View.Event.TRANSFORM,\r
-               endID    : X.View.Event.ROTATE,\r
+               startID  : X.UI.Event.TRANSFORM,\r
+               endID    : X.UI.Event.ROTATE,\r
                defaults : {\r
                        // factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1\r
                        transform_min_scale : 0.01,\r
@@ -992,7 +983,7 @@ X.UI = X.UI || {};
                        // current gesture isnt drag, but dragged is true\r
                        // this means an other gesture is busy. now call dragend\r
                        if( Detection.current.name !== this.name && this.triggered ){\r
-                               hammer.trigger( X.View.Event.TRANSFORM_END, e );\r
+                               hammer.trigger( X.UI.Event.TRANSFORM_END, e );\r
                                this.triggered = false;\r
                                return;\r
                        };\r
@@ -1021,26 +1012,26 @@ X.UI = X.UI || {};
 \r
                                        // first time, trigger dragstart event\r
                                        if( !this.triggered ){\r
-                                               hammer.trigger( X.View.Event.TRANSFORM_START, e );\r
+                                               hammer.trigger( X.UI.Event.TRANSFORM_START, e );\r
                                                this.triggered = true;\r
                                        };\r
 \r
-                                       hammer.trigger( X.View.Event.TRANSFORM, e );\r
+                                       hammer.trigger( X.UI.Event.TRANSFORM, e );\r
                                        // basic transform event\r
 \r
                                        // trigger rotate event\r
-                                       hammer.options.transform_min_rotation < rotation_threshold && hammer.trigger( X.View.Event.ROTATE, e );\r
+                                       hammer.options.transform_min_rotation < rotation_threshold && hammer.trigger( X.UI.Event.ROTATE, e );\r
 \r
                                        // trigger pinch event\r
                                        if( scale_threshold > hammer.options.transform_min_scale ){\r
-                                               hammer.trigger( X.View.Event.PINCH, e );\r
-                                               hammer.trigger( e.scale < 1 ? X.View.Event.PINCH_IN : X.View.Event.PINCH_OUT, e );\r
+                                               hammer.trigger( X.UI.Event.PINCH, e );\r
+                                               hammer.trigger( e.scale < 1 ? X.UI.Event.PINCH_IN : X.UI.Event.PINCH_OUT, e );\r
                                        };\r
                                        break;\r
 \r
                                case END:\r
                                        // trigger dragend\r
-                                       this.triggered && hammer.trigger( X.View.Event.TRANSFORM_END, e );\r
+                                       this.triggered && hammer.trigger( X.UI.Event.TRANSFORM_END, e );\r
                                        this.triggered = false;\r
                                        break;\r
                        };\r
index 988d868..ce5de2a 100644 (file)
@@ -53,7 +53,7 @@ var _AbstractDisplayContainer = _AbstractDisplayNode.inherits(
                        this.styleData.initialize();\r
                        \r
                        this.phase = 1;\r
-                       this.User.dispatch( { type : X.View.Event.INIT } );\r
+                       this.User.dispatch( { type : X.UI.Event.INIT } );\r
                },\r
                \r
                addToParent : function( parentElement ){\r
@@ -67,7 +67,7 @@ var _AbstractDisplayContainer = _AbstractDisplayNode.inherits(
                        };\r
                        \r
                        this.phase = 2;\r
-                       this.User.dispatch( { type : X.View.Event.ADDED } );\r
+                       this.User.dispatch( { type : X.UI.Event.ADDED } );\r
                },\r
                \r
        /* Rellay */\r
@@ -80,7 +80,7 @@ var _AbstractDisplayContainer = _AbstractDisplayNode.inherits(
                        this.styleData.afterAddition();\r
                        \r
                        this.phase = 3;\r
-                       this.User.dispatch( { type : X.View.Event.CREATION_COMPLETE } );\r
+                       this.User.dispatch( { type : X.UI.Event.CREATION_COMPLETE } );\r
                },\r
                \r
                calculate : function( x, y, w, h ){\r
index 60e5f25..cb64ab1 100644 (file)
@@ -31,8 +31,8 @@ var _AbstractDisplayNode = X.Class.create(
                r              : 0, // right\r
                absoluteX      : 0,\r
                absoluteY      : 0,\r
-               _scrollX       : 0,\r
-               _scrollY       : 0,\r
+               //_scrollX       : 0,\r
+               //_scrollY       : 0,\r
                scrollingX     : 0,\r
                scrollingY     : 0,\r
                _cursor        : '',\r
@@ -52,9 +52,6 @@ var _AbstractDisplayNode = X.Class.create(
                _content          : null,\r
                updateContent     : false,\r
                \r
-               elmWrap           : null,\r
-               elmExtend         : null,\r
-               textNode          : null,\r
                boxWidth          : 0,\r
                boxHeight         : 0,\r
                contentL          : 0,\r
@@ -84,14 +81,14 @@ var _AbstractDisplayNode = X.Class.create(
                        this.styleData.initialize();\r
                        \r
                        this.phase = 1;\r
-                       this.User.dispatch( { type : X.View.Event.INIT } );\r
+                       this.User.dispatch( { type : X.UI.Event.INIT } );\r
                },\r
                \r
                addToParent : function( parentElement ){\r
                        parentElement && parentElement.appendChild( this.rawElement );\r
                        \r
                        this.phase = 2;\r
-                       this.User.dispatch( { type : X.View.Event.ADDED } );\r
+                       this.User.dispatch( { type : X.UI.Event.ADDED } );\r
                },\r
 \r
        /* Rellay\r
@@ -99,7 +96,7 @@ var _AbstractDisplayNode = X.Class.create(
                        this.styleData.afterAddition();\r
                        \r
                        this.phase = 3;\r
-                       this.User.dispatch( { type : X.View.Event.CREATION_COMPLETE } );\r
+                       this.User.dispatch( { type : X.UI.Event.CREATION_COMPLETE } );\r
                }, */\r
                \r
                creationComplete : function(){\r
@@ -185,6 +182,7 @@ var _AbstractDisplayNode = X.Class.create(
                        delete this.hitChildData;\r
                        x -= this.x;\r
                        y -= this.y;\r
+                       // この部分 Box に移動\r
                        if( nodes = this.nodes ){\r
                                _x = x - this.scrollingX;\r
                                _y = y - this.scrollingY;\r
@@ -207,10 +205,10 @@ var _AbstractDisplayNode = X.Class.create(
                },\r
                \r
                dispatch : function( e ){\r
-                       var xve  = X.View.Event,\r
+                       var xve  = X.UI.Event,\r
                                ret  = X.EventDispatcher.prototype.dispatch.call( this.User, e ),\r
                                type = e.type;\r
-                       if( ret & X.Callback.MONOPOLY && !this.hitChildData && ( xve.POINTER_MOVE === type || type === xve.FILE_DRAG ) ){\r
+                       if( ret & X.Callback.MONOPOLY && !this.hitChildData && ( xve._POINTER_MOVE === type || xve.type._MOUSE_MOVE === type || xve.FILE_DRAG === type ) ){\r
                                this.rootData.monopolyNodeData = this;\r
                                return ret;\r
                        };\r
@@ -242,43 +240,43 @@ var _AbstractDisplayNode = X.Class.create(
                \r
                content : function( v ){\r
                        if( Type.isString( v ) === true ){\r
-                               if( !this.textNode || this.textNode.data !== v ){\r
+                               if( !this.rawText || this.rawText.data !== v ){\r
                                        this._content = v;\r
                                        this.updateContent = true;\r
                                };\r
                                return this.User;\r
                        } else\r
                        if( v === null ){\r
-                               if( this._content !== v && this.textNode ){\r
+                               if( this._content !== v && this.rawText ){\r
                                        this.updateContent = true;\r
                                };\r
                                delete this._content;\r
                                return this.User;\r
                        };\r
                        if( this._content || this._content === null ) return this._content;\r
-                       if( this.textNode ) return this.textNode.data;\r
+                       if( this.rawText ) return this.rawText.data;\r
                        return null;\r
                },\r
                paint : function( dirty ){\r
                        var content = this._content,\r
                                style   = this.styleData;                               \r
                        if( this.updateContent === true || ( style && style.hasPaint === true ) ){\r
-                               if( !this.elmWrap ){\r
-                                       this.elmWrap = DOM.createDiv();\r
+                               if( !this.rawElement ){\r
+                                       this.rawElement = DOM.createDiv();\r
                                        this.__parent.addDisplayElement( this );\r
                                };\r
                                dirty !== 0 && this.commitStyle();                      \r
                                if( this.updateContent === true ){\r
                                        if( content !== null ){\r
-                                               if( !this.textNode ){\r
-                                                       this.textNode = DOM.cerateText();\r
-                                                       this.elmWrap.appendChild( this.textNode );\r
+                                               if( !this.rawText ){\r
+                                                       this.rawText = DOM.cerateText();\r
+                                                       this.rawElement.appendChild( this.rawText );\r
                                                };\r
-                                               this.textNode.data = content;                                                   \r
+                                               this.rawText.data = content;                                                    \r
                                        } else\r
-                                       if( this.textNode ){\r
-                                               DOM.correct( this.textNode );\r
-                                               delete this.textNode;\r
+                                       if( this.rawText ){\r
+                                               DOM.correct( this.rawText );\r
+                                               delete this.rawText;\r
                                                delete this.contentWidth;\r
                                                delete this.conetntHeight;\r
                                                delete this.scrollWidth;                                                        \r
@@ -286,20 +284,20 @@ var _AbstractDisplayNode = X.Class.create(
                                        };                                      \r
                                };\r
                        } else\r
-                       if( this.elmWrap && content === null && ( !style || style.hasPaint === false ) ){\r
+                       if( this.rawElement && content === null && ( !style || style.hasPaint === false ) ){\r
                                this.__parent.removeDisplayElement( this );\r
-                               DOM.correct( this.elmWrap );\r
+                               DOM.correct( this.rawElement );\r
                                delete this.contentWidth;\r
                                delete this.conetntHeight;\r
                        };\r
                },\r
                commitStyle : function(){\r
                        var css;\r
-                       if( this.elmWrap ){\r
+                       if( this.rawElement ){\r
                                css = this.styleData ? this.styleData.cssText( this ) : '';\r
                                if( this.contentWidth  !== AUTO ) css += 'width:'  + this.contentWidth  + 'px';\r
                                if( this.contentHeight !== AUTO ) css += 'height:' + this.contentHeight + 'px';\r
-                               this.elmWrap.style.cssText = css;\r
+                               this.rawElement.style.cssText = css;\r
                        };\r
                },\r
                /*\r
@@ -453,7 +451,7 @@ var _AbstractDisplayNode = X.Class.create(
                                         *     コンテンツの高さの再取得が必要\r
                                         *     必要でない\r
                                         */   \r
-                                       if( this.textNode ){\r
+                                       if( this.rawText ){\r
                                                if( w === AUTO ){\r
                                                        w = this.contentWidth = this.elm.offsetWidth;\r
                                                        this.scrollWidth = w + this.contentL + this.contentR;\r
@@ -660,14 +658,14 @@ var AbstractDisplayNode = X.EventDispatcher.inherits(
                },\r
                listen : function( type, arg1, arg2 ){\r
                        var root, data, events, counter;\r
-                       if( X.View.Event._START_POINTER <= type && type <= X.View.Event._END_POINTER ){\r
+                       if( X.UI.Event._START_POINTER <= type && type <= X.UI.Event._END_POINTER ){\r
                                data = X.Class._getPrivate( this );\r
                                if( data.phase < 3 ){\r
                                        if( !( events = data.reserveEvents ) ) data.reserveEvents = events = [];\r
                                        events[ events.length ] = [ type, arg1, arg2 ];\r
                                        return this;\r
                                };\r
-                               if( X.View.Event._START_XUI_EVENT < type && type < X.View.Event._END_XUI_EVENT ){\r
+                               if( X.UI.Event._START_XUI_EVENT < type && type < X.UI.Event._END_XUI_EVENT ){\r
                                        if( !this.gesture ){\r
                                                this.gesture = new X.UI.Gesture( data.root, this, type );\r
                                        } else {\r
@@ -680,15 +678,15 @@ var AbstractDisplayNode = X.EventDispatcher.inherits(
                                                ++counter[ type ];\r
                                        } else {\r
                                                counter[ type ] = 1;                            \r
-                                               X.Dom.Event.add( root.elmMouseCatch, X.View.Event.IdToName[ type ], eventRellay );\r
+                                               X.Dom.Event.add( root.elmMouseCatch, X.UI.Event.IdToName[ type ], eventRellay );\r
                                        };\r
                                };\r
                        };\r
-                       return this.Super.listen.apply( this, arguments );\r
+                       return X.EventDispatcher.prototype.listen.apply( this, arguments );\r
                },\r
                unlisten : function( type, arg1, arg2 ){\r
                        var root, data, events, i, ev, counter;\r
-                       if( X.View.Event._START_POINTER <= type && type <= X.View.Event._END_POINTER ){\r
+                       if( X.UI.Event._START_POINTER <= type && type <= X.UI.Event._END_POINTER ){\r
                                data = X.Class._getPrivate( this );\r
                                if( data.phase < 3 ){\r
                                        if( !( events = data.reserveEvents ) ) return this;\r
@@ -702,7 +700,7 @@ var AbstractDisplayNode = X.EventDispatcher.inherits(
                                        return this;\r
                                };\r
 \r
-                               if( X.View.Event._START_XUI_EVENT < type && type < X.View.Event._END_XUI_EVENT ){\r
+                               if( X.UI.Event._START_XUI_EVENT < type && type < X.UI.Event._END_XUI_EVENT ){\r
                                        this.gesture && this.gesture.unlisten( type );\r
                                } else {\r
                                        root    = data.rootData;\r
@@ -710,7 +708,7 @@ var AbstractDisplayNode = X.EventDispatcher.inherits(
                                        if( !counter[ type ] ) return this;\r
                                        --counter[ type ];\r
                                        if( counter[ type ] === 0 ){\r
-                                               X.Dom.Event.remove( root.elmMouseCatch, X.View.Event.IdToName[ type ], eventRellay );\r
+                                               X.Dom.Event.remove( root.elmMouseCatch, X.UI.Event.IdToName[ type ], eventRellay );\r
                                                delete counter[ type ];\r
                                        };\r
                                };\r
index 686828d..9c4ca66 100644 (file)
@@ -200,7 +200,7 @@ var _DisplayNodeStyle = X.Class.create(
                                // x
                                if( isFinite( x ) === true ){
                                        style.left = x + 'px';
-                                       obj.left = x
+                                       obj.left = x;
                                } else
                                if( isString( x ) === true ){
                                        style.left = obj.left = x;
@@ -262,7 +262,7 @@ var _DisplayNodeStyle = X.Class.create(
                                combi     = !!( type & X.Css.Type.COMBI     ),
                                data      = this.data,
                                _v        = -1,
-                               i, l, nodes, root;
+                               i, l, nodes, root, roots;
                /*
                 * Setter
                 */
index eb456b1..e5b3b56 100644 (file)
@@ -4,13 +4,13 @@ var currentRootData  = null;
 function eventRellay( e ){
        var x       = e.clientX,
                y       = e.clientY,
-               type    = X.View.Event.NameToID[ e.type ],
+               type    = X.UI.Event.NameToID[ e.type ],
                i       = 0,
                data    = currentRootData,
                sysOnly = false,
                list, ret, parent;
-       if( type !== X.View.Event.POINTER_MOVE ){
-               console.log( type + ' x:' + x + ', y:' + y )
+       if( type !== X.UI.Event._POINTER_MOVE && type !== X.UI.Event._MOUSE_MOVE ){
+               //console.log( type + ' x:' + x + ', y:' + y )
        };
        
        e.type = type;
@@ -37,7 +37,7 @@ function eventRellay( e ){
                if( parent !== currentRootData ){
                        data.isHover === true && data.styleData.removeName( data.hoverStyleName );
                        delete data.isHover;
-                       data.events && data.events[ X.View.Event.POINTER_OUT ] && data.dispatch( e, X.View.Event.POINTER_OUT, false ); // new Event
+                       data.events && data.events[ X.UI.Event.POINTER_OUT ] && data.dispatch( e, X.UI.Event.POINTER_OUT, false ); // new Event
                        delete data.hitSelf;
                        list.splice( i, 1 );
                        continue;
@@ -47,7 +47,7 @@ function eventRellay( e ){
                        data.isHover = true;
                };
                if( data.hitSelf === false ){
-                       data.events && data.events[ X.View.Event.POINTER_IN ] && data.dispatch( e, X.View.Event.POINTER_IN, true ); // new Event
+                       data.events && data.events[ X.UI.Event.POINTER_IN ] && data.dispatch( e, X.UI.Event.POINTER_IN, true ); // new Event
                        data.hitSelf = true;
                };
        };
@@ -70,10 +70,11 @@ var _PageRoot = _AbstractDisplayContainer.inherits(
                Constructor : function( layout, args ){
                        this.SuperConstructor( layout, args );
                        
-                       if( X.View.ready === true ){
+                       if( X.Dom.ready === true ){
                                X.Timer.once( 0, this, this.start );
                        } else {
-                               X.View.listenOnce( X.View.Event.SYS_READY, this, this.start );
+                               //X.Dom.listenOnce( X.Dom.Event.XDOM_READY, this, this.start );
+                               X.Dom.Event.add( window, 'load', this, this.start );
                        };
                        
                        this.hoverList    = [];
@@ -102,21 +103,23 @@ var _PageRoot = _AbstractDisplayContainer.inherits(
                        this.elmMouseCatch = elm;
                        
                        // hover や rollover rollout のための move イベントの追加
-                       // X.View.activate, X.View.deactivate ?
+                       // X.Dom.activate, X.Dom.deactivate ?
                        // mouseout, mouseover
                        if( navigator.msPointerEnabled || navigator.pointerEnabled ){
-                               X.Dom.Event.add( elm, X.View.Event.IdToName[ X.View.Event._POINTER_MOVE ], eventRellay );
+                               X.Dom.Event.add( elm, X.UI.Event.IdToName[ X.UI.Event._POINTER_MOVE ], eventRellay );
+                               if( counter[ X.UI.Event._POINTER_MOVE ] ){
+                                       ++counter[ X.UI.Event._POINTER_MOVE ];
+                               } else {
+                                       counter[ X.UI.Event._POINTER_MOVE ] = 1;
+                               };
                        } else {
-                               X.Dom.Event.add( elm, X.View.Event.IdToName[ X.View.Event._MOUSE_MOVE ], eventRellay );
+                               X.Dom.Event.add( elm, X.UI.Event.IdToName[ X.UI.Event._MOUSE_MOVE ], eventRellay );
+                               if( counter[ X.UI.Event._MOUSE_MOVE ] ){
+                                       ++counter[ X.UI.Event._MOUSE_MOVE ];
+                               } else {
+                                       counter[ X.UI.Event._MOUSE_MOVE ] = 1;
+                               };
                        };
-               
-
-                       if( counter[ X.View.Event.POINTER_MOVE ] ){
-                               ++counter[ X.View.Event.POINTER_MOVE ];
-                       } else {
-                               counter[ X.View.Event.POINTER_MOVE ] = 1;
-                       };
-                       
                        X.Timer.once( 0, this, this.afterAddToView );
                },
                afterAddToView : function(){
@@ -127,7 +130,7 @@ var _PageRoot = _AbstractDisplayContainer.inherits(
                
                doFirstCalc : function(){
                        this.doCalculate();
-                       X.View.listen( X.View.Event.VIEW_RESIZED, this, this.doCalculate );
+                       X.Dom.listen( X.Dom.Event.VIEW_RESIZED, this, this.doCalculate );
                },
                reserveCalc : function(){
                        if( this.calcReserved === false ){
@@ -138,7 +141,7 @@ var _PageRoot = _AbstractDisplayContainer.inherits(
                doCalculate : function( e ){
                        var size, w, h;
                        if( !e ){
-                               size = X.View.getSize();
+                               size = X.Dom.getSize();
                                w    = size[ 0 ];
                                h    = size[ 1 ];
                        } else {
@@ -155,10 +158,10 @@ var _PageRoot = _AbstractDisplayContainer.inherits(
                
                beforeRemove : function(){
                        if( navigator.msPointerEnabled || navigator.pointerEnabled ){
-                               X.Dom.Event.remove( this.elmMouseCatch, X.View.Event.IdToName[ X.View.Event._POINTER_MOVE ], eventRellay );
+                               X.Dom.Event.remove( this.elmMouseCatch, X.UI.Event.IdToName[ X.UI.Event._POINTER_MOVE ], eventRellay );
                        } else {
                                // Android で mouse が有効の場合がある
-                               X.Dom.Event.remove( this.elmMouseCatch, X.View.Event.IdToName[ X.View.Event._MOUSE_MOVE ], eventRellay );
+                               X.Dom.Event.remove( this.elmMouseCatch, X.UI.Event.IdToName[ X.UI.Event._MOUSE_MOVE ], eventRellay );
                        };
                }
        }
index 70b7fa6..278d22b 100644 (file)
@@ -14,7 +14,7 @@ var _Text = _AbstractDisplayNode.inherits(
                        this.styleData.afterAddition();\r
                        \r
                        this.phase = 3;\r
-                       this.User.dispatch( { type : X.View.Event.CREATION_COMPLETE } );\r
+                       this.User.dispatch( { type : X.UI.Event.CREATION_COMPLETE } );\r
                }\r
        }\r
 );\r