OSDN Git Service

Version 0.6.6
authoritozyun <itozyun@user.sourceforge.jp>
Thu, 22 Aug 2013 11:31:22 +0000 (20:31 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Thu, 22 Aug 2013 11:31:22 +0000 (20:31 +0900)
34 files changed:
0.6.x/index.html
0.6.x/js/core/00_builtin.js
0.6.x/js/core/03_XCallback.js [moved from 0.6.x/js/core/04_XCallback.js with 93% similarity]
0.6.x/js/core/04_XClass.js [moved from 0.6.x/js/core/05_XClass.js with 83% similarity]
0.6.x/js/core/05_XTimer.js [moved from 0.6.x/js/core/06_XTimer.js with 84% similarity]
0.6.x/js/core/06_XEventDispatcher.js [moved from 0.6.x/js/core/07_XEventDispatcher.js with 91% similarity]
0.6.x/js/core/07_XNotification.js [new file with mode: 0644]
0.6.x/js/core/11_XDom.js [deleted file]
0.6.x/js/core/12_XDomEvent.js [deleted file]
0.6.x/js/core/19_XQuery.js [deleted file]
0.6.x/js/core/bootstrap.js
0.6.x/js/dom/10_XDomStyle.js [moved from 0.6.x/js/core/10_XStyle.js with 100% similarity]
0.6.x/js/dom/12_XDomParser.js [new file with mode: 0644]
0.6.x/js/dom/13_XDomEvent.js [new file with mode: 0644]
0.6.x/js/dom/14_XDomNode.js [new file with mode: 0644]
0.6.x/js/dom/15_XDomNodeList.js [new file with mode: 0644]
0.6.x/js/dom/16_XDomQuery.js [new file with mode: 0644]
0.6.x/js/dom/17_XView.js [moved from 0.6.x/js/core/14_XView.js with 86% similarity]
0.6.x/js/ui/00_XUI_Type.js [moved from 0.6.x/js/JU/00_XUI_Type.js with 100% similarity]
0.6.x/js/ui/01_XUI_Option.js [moved from 0.6.x/js/JU/01_XUI_Option.js with 100% similarity]
0.6.x/js/ui/02_XUI_Dirty.js [moved from 0.6.x/js/JU/02_XUI_Dirty.js with 100% similarity]
0.6.x/js/ui/03_XUI_Attr.js [moved from 0.6.x/js/JU/03_XUI_Attr.js with 100% similarity]
0.6.x/js/ui/04_XUI_AttrNo.js [moved from 0.6.x/js/JU/04_XUI_AttrNo.js with 100% similarity]
0.6.x/js/ui/AbstractDisplayContainer.js [moved from 0.6.x/js/JU/AbstractDisplayContainer.js with 92% similarity]
0.6.x/js/ui/AbstractDisplayNode.js [moved from 0.6.x/js/JU/AbstractDisplayNode.js with 96% similarity]
0.6.x/js/ui/Box.js [moved from 0.6.x/js/JU/Box.js with 89% similarity]
0.6.x/js/ui/ChromeBox.js [moved from 0.6.x/js/JU/ChromeBox.js with 100% similarity]
0.6.x/js/ui/DisplayNodeStyle.js [moved from 0.6.x/js/JU/DisplayNodeStyle.js with 100% similarity]
0.6.x/js/ui/HBox.js [moved from 0.6.x/js/JU/HBox.js with 89% similarity]
0.6.x/js/ui/LayoutManagerBase.js [moved from 0.6.x/js/JU/LayoutManagerBase.js with 97% similarity]
0.6.x/js/ui/PageRoot.js [moved from 0.6.x/js/JU/PageRoot.js with 95% similarity]
0.6.x/js/ui/Text.js [moved from 0.6.x/js/JU/Text.js with 91% similarity]
0.6.x/js/ui/TileBox.js [moved from 0.6.x/js/JU/TileBox.js with 91% similarity]
0.6.x/js/ui/VBox.js [moved from 0.6.x/js/JU/VBox.js with 89% similarity]

index 0bb150c..f49628d 100644 (file)
        <script type="text/javascript" src="js/core/00_builtin.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
-       <script type="text/javascript" src="js/core/03_XCancel.js"></script>\r
-       <script type="text/javascript" src="js/core/04_XCallback.js"></script>\r
-       <script type="text/javascript" src="js/core/05_XClass.js"></script>\r
-       <script type="text/javascript" src="js/core/06_XTimer.js"></script>\r
-       <script type="text/javascript" src="js/core/07_XEventDispatcher.js"></script>   \r
        \r
-       <script type="text/javascript" src="js/core/10_XStyle.js"></script>\r
-       <script type="text/javascript" src="js/core/11_XDom.js"></script>\r
-       <script type="text/javascript" src="js/core/12_XDomEvent.js"></script>\r
-       <!-- <script type="text/javascript" src="js/core/19_XQuery.js"></script> -->\r
-\r
-       <script type="text/javascript" src="js/core/13_XViewEvent.js"></script>\r
-       <script type="text/javascript" src="js/core/14_XView.js"></script>\r
+       <script type="text/javascript" src="js/core/03_XCallback.js"></script>\r
+       <script type="text/javascript" src="js/core/04_XClass.js"></script>\r
+       <script type="text/javascript" src="js/core/05_XTimer.js"></script>\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
+       \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
        \r
-       <script type="text/javascript" src="js/JU/AbstractDisplayNode.js"></script>\r
-       <script type="text/javascript" src="js/JU/AbstractDisplayContainer.js"></script>\r
-       <script type="text/javascript" src="js/JU/DisplayNodeStyle.js"></script>\r
-       <script type="text/javascript" src="js/JU/LayoutManagerBase.js"></script>\r
-       <script type="text/javascript" src="js/JU/Box.js"></script>\r
-       <script type="text/javascript" src="js/JU/VBox.js"></script>\r
-       <script type="text/javascript" src="js/JU/HBox.js"></script>\r
-       <script type="text/javascript" src="js/JU/TileBox.js"></script>\r
-       <script type="text/javascript" src="js/JU/ChromeBox.js"></script>\r
-       <script type="text/javascript" src="js/JU/PageRoot.js"></script>\r
-       <script type="text/javascript" src="js/JU/Text.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
+       <script type="text/javascript" src="js/ui/LayoutManagerBase.js"></script>\r
+       <script type="text/javascript" src="js/ui/Box.js"></script>\r
+       <script type="text/javascript" src="js/ui/VBox.js"></script>\r
+       <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/PageRoot.js"></script>\r
+       <script type="text/javascript" src="js/ui/Text.js"></script>\r
 </head>\r
 <body>\r
 </body>\r
index c491406..b9cd992 100644 (file)
@@ -4,11 +4,12 @@
  */\r
 \r
 Function.prototype.apply || (Function.prototype.apply = function (x, y) {\r
+       var a, i, r, j;\r
        x = x || window;\r
        y = y ||[];\r
        x.__apply = this;\r
        if (!x.__apply) x.constructor.prototype.__apply = this;\r
-       var r, j = y.length;\r
+       j = y.length;\r
        switch (j) {\r
                case 0: r = x.__apply(); break;\r
                case 1: r = x.__apply(y[0]); break;\r
@@ -21,8 +22,8 @@ Function.prototype.apply || (Function.prototype.apply = function (x, y) {
                case 8: r = x.__apply(y[0], y[1], y[2], y[3], y[4], y[5], y[6], y[7]); break;\r
                case 9: r = x.__apply(y[0], y[1], y[2], y[3], y[4], y[5], y[6], y[7], y[8]); break;\r
                default:\r
-                       var a = [];\r
-                       for (var i = 0; i < j; ++i)\r
+                       a = [];\r
+                       for (i = 0; i < j; ++i)\r
                                a[i] = 'y[' + i + ']';\r
                        r = eval('x.__apply(' + a.join(',') + ')');\r
                        break;\r
@@ -31,8 +32,8 @@ Function.prototype.apply || (Function.prototype.apply = function (x, y) {
        return r;\r
 });\r
 Function.prototype.call || (Function.prototype.call = function () {\r
-       var a = arguments, x = a[0], y = [];\r
-       for (var i = 1, j = a.length; i < j; ++i)\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
        return this.apply(x, y);\r
 });\r
@@ -43,13 +44,14 @@ Array.prototype.pop || (Array.prototype.pop = function () {
        return r;\r
 });\r
 Array.prototype.push || (Array.prototype.push = function () {\r
-       for (var a = arguments, i = 0, j = a.length, l = this.length; i < j; ++i)\r
+       var a = arguments, i = 0, j = a.length, l = this.length;\r
+       for (; i < j; ++i)\r
                this[l + i] = a[i];\r
        return this.length;\r
 });\r
 Array.prototype.shift || (Array.prototype.shift = function () {\r
-       var r = this[0];\r
-       for(var i = 1, j = this.length; i < j; ++i)\r
+       var r = this[0], i = 1, j = this.length;\r
+       for( ; i < j; ++i)\r
                this[i - 1] = this[i];\r
        --this.length;\r
        return r;\r
similarity index 93%
rename from 0.6.x/js/core/04_XCallback.js
rename to 0.6.x/js/core/03_XCallback.js
index 90ea2cb..5473ec6 100644 (file)
@@ -16,6 +16,7 @@ X.Callback = {
                var self  = X.Callback,\r
                        live  = self._LIVE_LIST,\r
                        f, listener, context, callback;\r
+               \r
                if( typeof arg1 === 'function' ){\r
                        context  = arg0;\r
                        callback = arg1;\r
@@ -28,7 +29,7 @@ X.Callback = {
                        listener = arg0;\r
                        arg2     = arg1;\r
                } else {\r
-                       //throw new Error( 'Callback.create() fail!' );\r
+                       alert( 'Callback.create() fail!' );\r
                };\r
                \r
                f = self._POOL_LIST.pop();\r
@@ -58,8 +59,8 @@ X.Callback = {
                };\r
                return f;\r
        },\r
-       once : function(){\r
-               var f = X.Callback.create.apply( null, arguments );\r
+       once : function( arg0, arg1, arg2 ){\r
+               var f = X.Callback.create( arg0, arg1, arg2 );\r
                f.once = true;\r
                return f;\r
        },\r
similarity index 83%
rename from 0.6.x/js/core/05_XClass.js
rename to 0.6.x/js/core/04_XClass.js
index 5c149cf..e67fd27 100644 (file)
@@ -41,7 +41,7 @@ X.Class = ( function(){
                        classSetting,\r
                        opt_super,\r
                        klass, def;\r
-               if( superDef.Final === true ) throw new Error( 'Class is final!' );\r
+               if( superDef.Final === true ) X.Notification.critical( 'X.Class inherits, Class is final!' );\r
                \r
                if( X.Type.isString( displayName ) === true ){\r
                        args.shift();\r
@@ -71,7 +71,8 @@ X.Class = ( function(){
                traits = null;\r
                if( opt_super === true ){\r
                        def = X.Class._getClassDef( klass );\r
-                       def.Super = Super.prototype;\r
+                       def.Super = Super;\r
+                       def.SuperProto = Super.prototype;\r
                        def.SuperConstructor = superDef[ CONSTRUCTOR ];\r
                };\r
                return klass;\r
@@ -85,7 +86,8 @@ X.Class = ( function(){
                                def      = X.Class._getClassDef( klass ),\r
                                data, p, i;\r
                        if( def.isPrivate === true && killPrivateFlag === false ){\r
-                               throw new Error( 'PrivateInstance.kill() work in PrivateUser.kill().' );\r
+                               X.Notification.critical( 'PrivateInstance.kill() work in PrivateUser.kill().' );\r
+                               return;\r
                        };\r
                        killPrivateFlag = false; // onKill 内で PrivateInstance.kill() を防ぐため\r
                        X.Type.isFunction( instance.onKill ) === true && instance.onKill();\r
@@ -109,6 +111,14 @@ X.Class = ( function(){
                        };\r
                        // myCallback の削除\r
                        // myCallback を受け取った API への通知\r
+               },\r
+               instanceOf : function( klass ){\r
+                       var Super = this;\r
+                       if( this.constructor === klass ) return true;\r
+                       while( Super = X.Class._getClassDef( Super ).Super ){\r
+                               if( Super === klass ) return true;\r
+                       };\r
+                       return false;\r
                }\r
        };\r
        \r
@@ -124,10 +134,12 @@ X.Class = ( function(){
                        instance,\r
                        userDef;\r
                if( def.Abstract === true ){\r
-                       throw new Error( 'AbstractClass!' );\r
+                       X.Notification.critical( 'AbstractClass!' );\r
+                       return;\r
                };\r
                if( def.isPrivate === true && dataUser === null ){\r
-                       throw new Error( 'use myClass.newPrivate( instance, ...args )!' );\r
+                       X.Notification.critical( 'use myClass.newPrivate( instance, ...args )!' );\r
+                       return;\r
                };\r
                klass.__new = null;\r
                instance = def.pool && def.pool.length > 0 ? def.pool.pop() : new klass();\r
@@ -142,7 +154,7 @@ X.Class = ( function(){
                        def.live && def.live.push( instance );\r
                };\r
                if( def.Super ){\r
-                       instance.Super = def.Super;\r
+                       instance.Super = def.SuperProto;\r
                        instance.SuperConstructor = superConstructor;\r
                };\r
                def[ CONSTRUCTOR ] && def[ CONSTRUCTOR ].apply( instance, args );\r
@@ -179,7 +191,8 @@ X.Class = ( function(){
                                opt_final    = !!( classSetting & X.Class.FINAL        );\r
                                opt_private  = !!( classSetting & X.Class.PRIVATE_DATA );\r
                                if( opt_final === true && opt_abstract === true ){\r
-                                       throw new Error( 'final & Abstract!' );\r
+                                       X.Notification.critical( 'final & Abstract!' );\r
+                                       return;\r
                                };                              \r
                                args.shift();\r
                        };\r
@@ -187,16 +200,19 @@ X.Class = ( function(){
                        if( PRIVATE_CLASS_LIST.indexOf( args[ 0 ] ) !== -1 ){\r
                                privateDef = X.Class._getClassDef( args[ 0 ] );\r
                                if( privateDef.isPrivate !== true ){\r
-                                       throw new Error( 'PrivateClass not found! please, X.Class.create( X.Class.PRIVATE, {...} ).' );\r
+                                       X.Notification.critical( 'PrivateClass not found! please, X.Class.create( X.Class.PRIVATE, {...} ).' );\r
+                                       return;\r
                                } else\r
                                if( privateDef.Abstract === true ){\r
-                                       throw new Error( 'PrivateClass is Abstract!' );\r
+                                       X.Notification.critical( 'PrivateClass is Abstract!' );\r
+                                       return;\r
                                };\r
                                classDef.privateClass = args.shift();\r
                        };\r
                        props = args[ 0 ];\r
                        if( props === null || X.Type.isObject( props ) === false ){\r
-                               throw new Error( 'No Class Def!' );\r
+                               X.Notification.critical( 'No Class Def!' );\r
+                               return;\r
                        };\r
                        \r
                        if( X.Type.isFunction( props[ CONSTRUCTOR ] ) === true ){\r
@@ -206,6 +222,7 @@ X.Class = ( function(){
                        klass = new Function( 'var a=arguments,f=a.callee;if(f.__new)return f.__new(a)' );\r
                        klass.__new = C;\r
                        klass.prototype = X.Class._override( X.Class._override( traits || klass.prototype, props, true ), CommonProps, false );\r
+                       klass.prototype.constructor = klass;\r
                        klass.name = displayName;\r
                        \r
                        if( opt_abstract === true ){\r
@@ -222,7 +239,8 @@ X.Class = ( function(){
                        };                      \r
                        if( opt_private === true ){\r
                                if( classDef.privateClass ){\r
-                                       throw new Error( 'Private Data Class has no PrivateClass!' );\r
+                                       X.Notification.critical( 'Private Data Class has no PrivateClass!' );\r
+                                       return;\r
                                };\r
                                classDef.isPrivate = true;\r
                                PRIVATE_CLASS_LIST.push( klass );\r
@@ -242,13 +260,13 @@ X.Class = ( function(){
                                klass;\r
                        for( ; i; ){\r
                                klass = cList[ --i ];\r
-                               if( instance instanceof klass ) return klass;\r
+                               if( instance.constructor === klass ) return klass;\r
                        };\r
                        cList = PRIVATE_CLASS_LIST;\r
                        i     = cList.length;\r
                        for( ; i; ){\r
                                klass = cList[ --i ];\r
-                               if( instance instanceof klass ) return klass;\r
+                               if( instance.constructor === klass ) return klass;\r
                        };\r
                        \r
                        if( cList.indexOf( instance ) !== -1 ) return instance;\r
@@ -280,10 +298,12 @@ X.Class = ( function(){
                                def.dataList = [];\r
                        };\r
                        if( i !== -1 ){\r
-                               throw new Error( 'PrivateData already exist!' );\r
+                               X.Notification.critical( 'PrivateData already exist!' );\r
+                               return;\r
                        };\r
                        if( privateDef._tempUser ){\r
-                               throw new Error( 'newPrivate を連続呼び出しされたところ破綻' );\r
+                               X.Notification.critical( 'newPrivate を連続呼び出しされたところ破綻' );\r
+                               return;\r
                        };\r
                        privateDef._tempUser = user;\r
                        return privateClass.__new( args );\r
@@ -297,7 +317,8 @@ X.Class = ( function(){
                _override : function ( target, src, force ){\r
                        for( var p in src ){\r
                                if( p === 'Super' || p === 'SuperConstructor' ){\r
-                                       throw new Error( 'Super & SuperConstructor is reserved!' );\r
+                                       X.Notification.critical( 'Super & SuperConstructor is reserved!' );\r
+                                       return;\r
                                };\r
                                if( force === true || target[ p ] === void 0 ){\r
                                        target[ p ] = src[ p ];\r
similarity index 84%
rename from 0.6.x/js/core/06_XTimer.js
rename to 0.6.x/js/core/05_XTimer.js
index 4412139..9bd177f 100644 (file)
@@ -3,21 +3,19 @@
  */\r
 \r
 X.Timer = ( function(){\r
-       var setTimeout     = window.setTimeout;\r
-       var clearTimeout   = window.clearTimeout;\r
-       var INTERVAL_TIME  = 16;\r
-       var TICKET_LIST    = [];\r
-       var timerId        = -1;\r
-       var next           = 0;\r
-       /* const */\r
-       var INDEX_TIME     = 0,\r
+       var setTimeout     = window.setTimeout,\r
+               clearTimeout   = window.clearTimeout,\r
+               INTERVAL_TIME  = 16,\r
+               TICKET_LIST    = [],\r
+               timerId        = -1,\r
+               next           = 0,\r
+               INDEX_TIME     = 0,\r
                INDEX_LAST     = 1,\r
                INDEX_COUNT    = 2,\r
                INDEX_CALLBACK = 3;\r
        \r
        function loop(){\r
-               var i    = 0,\r
-                       c    = next,\r
+               var c    = next,\r
                        list = TICKET_LIST,\r
                        i    = list.length,\r
                        queue, f, ret;\r
similarity index 91%
rename from 0.6.x/js/core/07_XEventDispatcher.js
rename to 0.6.x/js/core/06_XEventDispatcher.js
index 2bf2667..a87a5cb 100644 (file)
@@ -8,7 +8,7 @@ X.EventDispatcher = ( function(){
                        if( !create ) return;\r
                        LIST[ LIST.length ] = instance;\r
                        TEMP[ TEMP.length ] = data = {};\r
-                       if( window[ 'AbstractDisplayNode' ] && instance instanceof window[ 'AbstractDisplayNode' ] ){\r
+                       if( window[ 'AbstractDisplayNode' ] && instance.instanceOf && instance.instanceOf( window[ 'AbstractDisplayNode' ] ) ){\r
                                X.Class._getPrivate( instance ).events = data;\r
                        };\r
                } else {\r
@@ -39,7 +39,6 @@ X.EventDispatcher = ( function(){
                        },\r
                        listenOnce : function( type, arg1, arg2 ){\r
                                once = true;\r
-                               //this.listen( type, arg1, arg2 );\r
                                X.EventDispatcher.prototype.listen.call( this, type, arg1, arg2 );\r
                                once = false;\r
                                return this;\r
diff --git a/0.6.x/js/core/07_XNotification.js b/0.6.x/js/core/07_XNotification.js
new file mode 100644 (file)
index 0000000..a9e900f
--- /dev/null
@@ -0,0 +1,50 @@
+X.Notification = {\r
+       _$LogArea : null,\r
+       debug : function( msg ){\r
+               X.Notification._output( msg, 0 );\r
+       },\r
+       info : function( msg ){\r
+               X.Notification._output( msg, 1 );\r
+       },\r
+       warn : function( msg ){\r
+               X.Notification._output( msg, 2 );\r
+       },\r
+       critical : function( msg ){\r
+               X.Notification._output( msg, 3 );\r
+       },\r
+       _output : function( msg, level ){\r
+               var body, $Area;\r
+               if( X.View && X.View.ready === true ){\r
+                       if( $Area = X.Notification._$LogArea ){\r
+                               $Area.remove();\r
+                               delete X.Notification._$LogArea;\r
+                       };\r
+                       \r
+                       \r
+               } else\r
+               if( X.Dom && X.Dom.ready === true ){\r
+                       if( !( $Area = X.Notification._$LogArea ) ){\r
+                               $Area = X.Notification._$LogArea = X.Dom.Node( 'div' ).addToRoot( 0 );\r
+                       };\r
+                       $Area.add( '<p>' + msg + '</p>' );\r
+               } else          \r
+               if( console ){\r
+                       level === 0 ? console.debug( msg ) :\r
+                       level === 1 ? console.info( msg ) :\r
+                       level === 2 ? console.warn( msg ) :\r
+                       level === 3 ? console.critical( msg ) : console.warn( msg );\r
+               } else {\r
+                       1 < level && alert( msg );\r
+               };\r
+       }\r
+};\r
+/*DEBUG、INFO、WARN、CRITICAL\r
+emerg  サーバが稼動できないほどの重大なエラー\r
+alert  critよりも重大なエラー\r
+crit   重大なエラー\r
+error  エラー\r
+warn   警告\r
+notice 通知メッセージ\r
+info   サーバ情報\r
+debug  デバック用の情報\r
+*/\r
diff --git a/0.6.x/js/core/11_XDom.js b/0.6.x/js/core/11_XDom.js
deleted file mode 100644 (file)
index 9ad5cf7..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-/**\r
- * use X.Callback\r
- */\r
-var X = X || {};\r
-\r
-X.Dom = {\r
-       getElementById :\r
-               document.getElementById ?\r
-                       (function( id ){\r
-                               return document.getElementById( id );\r
-                       }) :\r
-               document.all ?\r
-                       (function( id ){\r
-                               return document.all[ id ];\r
-                       }) :\r
-                       (function(){}),\r
-       getElementsByTagName :\r
-               document.getElementsByTagName ?\r
-                       (function( parent, tagName ){\r
-                               return parent.getElementsByTagName( tagName.toUpperCase() );\r
-                       }) :\r
-               document.all ?\r
-                       (function( parent, tagName ){\r
-                               return parent.all.tags( tagName.toUpperCase() );\r
-                       }) :\r
-                       (function(){}),\r
-       getElementsByClassName :\r
-               document.getElementsByClassName ?\r
-                       (function( parent, className ){\r
-                               return parent.getElementsByClassName( className );\r
-                       }) :\r
-               document.getElementsByTagName ?\r
-                       (function( parent, className ){\r
-                               var self  = X.Dom,\r
-                                       live  = parent.getElementsByTagName( '*' ),\r
-                                       nodes = [],\r
-                    node, i;\r
-                for( i = live.length; i; ){\r
-                       nodes[ --i ] = live[ i ];\r
-                };\r
-                               for( i = nodes.length; i; ){\r
-                                       node = nodes[ --i ];\r
-                                       ( node.nodeType !== 1 || !node.className || !node.className.length || self.hasClass( node, className ) === false ) && nodes.splice( i, 1 );\r
-                               };\r
-                               return nodes;\r
-                       }) :\r
-               document.all ?\r
-                       (function( parent, className ){\r
-                               var self  = X.Dom,\r
-                                       live  = parent.all,\r
-                                       nodes = [],\r
-                    node, i;\r
-                for( i = live.length; i; ){\r
-                       nodes[ --i ] = live[ i ];\r
-                };\r
-                               for( i = nodes.length; i; ){\r
-                                       node = nodes[ --i ];\r
-                                       ( !node.className || !node.className.length || self.hasClass( node, className ) === false ) && nodes.splice( i, 1 );\r
-                               };\r
-                               return nodes;\r
-                       }) :\r
-                       (function(){}),\r
-       hasClass : function( elm, className ){\r
-               var cnames  = ( elm.className || '' ).split( ' ' ),\r
-                       _cnames = className.split( ' ' ),\r
-                       cname,\r
-                       i = _cnames.length;\r
-               for( ; i; ){\r
-                       cname = _cnames[ --i ];\r
-                       if( cname === '' ) continue;\r
-                       if( cnames.indexOf( cname ) === -1 ) return false;\r
-               };\r
-               return true;\r
-       },\r
-       appendChild :\r
-               document.appendChild ?\r
-                       (function( target, elm ){\r
-                               return target.appendChild( elm );\r
-                       }) :\r
-               document.all ?\r
-                       (function( target, elm ){\r
-                               return target.insertAdjacentHTML( 'BeforeEnd', elm.outerHTML || elm ); // elm の場合と string の場合がある\r
-                       }) :\r
-                       (function(){}),\r
-       removeChild :\r
-               document.removeChild ?\r
-                       (function( parent, elm ){\r
-                               return target.removeChild( elm );\r
-                       }) :\r
-               document.all ?\r
-                       (function( parent, elm ){\r
-                               var children = X.Dom.getChildNodes( parent ),\r
-                                       l        = children.length,\r
-                                       html     = [],\r
-                                       i        = 0,\r
-                                       child, update;\r
-                               for( ; i < l; ++i ){\r
-                                       child = children[ i ];\r
-                                       if( child !== elm ){\r
-                                               html[ html.length ] = child.outerHTML || child;\r
-                                       } else {\r
-                                               update = true;\r
-                                       };\r
-                               };\r
-                               if( !update ) return;\r
-                               parent.innerHTML = html.join( '' );\r
-                       }) :\r
-                       (function(){}),\r
-       insertBefore :\r
-               document.insertBefore ?\r
-                       (function( parent, elm, elmAfter ){\r
-                               return parent.insertBefore( elm, elmAfter );\r
-                       }) :\r
-               document.all ?\r
-                       (function( parent, elm, elmAfter ){\r
-                               return elmAfter.insertAdjacentHTML( 'BeforeBegin', elm.outerHTML );\r
-                       }) :\r
-                       (function(){})\r
-};\r
-\r
-if( X.UA.IE && X.UA.IE < 5 ){\r
-       /*\r
-        * ie4 に TextNode は存在しない。 Element.children にテキストノードは無視される。\r
-        * そこでテキストノードを判定して控える操作が必要になる。\r
-        */\r
-       X.Dom.getChildNodes = function( elm ){\r
-               var html     = elm.innerHTML,\r
-                       children = elm.children,\r
-                       l        = children.length - 1,\r
-                       _        = '',\r
-                       cr       = X.Dom.getCRChars( html ),\r
-                       i, j, child, outer, index, parts, ret, text;\r
-               if( l < 0 ){\r
-                       if( html.length ) return [ html ]; // new X.Dom.TextNode( html );\r
-                       return [];\r
-               };\r
-               ret = [];\r
-               j   = -1;\r
-               html = html.split( cr ).join( _ );\r
-               for( i = 0; i <= l; ++i ){\r
-                       child = children[ i ];\r
-                       outer = child.outerHTML.split( cr ).join( _ );\r
-                       index = html.indexOf( outer );\r
-                       if( index === -1 ){\r
-                               alert( 'X.Dom.getChildNodes\n' + outer + '\n' + html.substr( 0, 100 ) );\r
-                               continue;\r
-                       };\r
-                       if( 0 < index ){\r
-                               ret[ ++j ] = html.substr( 0, index ); // new X.Dom.TextNode( html );\r
-                       };\r
-                       ret[ ++j ] = child;\r
-                       html = html.substr( index + outer.length );\r
-                       if( i === l && html.length ){\r
-                               ret[ ++j ] = html; // new X.Dom.TextNode( html );\r
-                               break;\r
-                       };\r
-               };\r
-               return ret;\r
-       };\r
-       X.Dom.getCRChars = function( src ){\r
-               return 0 <= src.indexOf( '\r\n' ) ? '\r\n' :\r
-                       0 <= src.indexOf( '\n' ) ? '\n' :\r
-                       0 <= src.indexOf( '\r' ) ? '\r' : '\n';\r
-       };\r
-};
\ No newline at end of file
diff --git a/0.6.x/js/core/12_XDomEvent.js b/0.6.x/js/core/12_XDomEvent.js
deleted file mode 100644 (file)
index 7ce6d3d..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-/**
- * use X.Callback
- */
-var X = X || {};
-
-X.DomEvent = {
-       add :
-               document.addEventListener ?
-                       (function( element, type, arg2, arg3, arg4 /* [ listener || ( context + function ) || function ][ arguments ] */ ){
-                               var callback;
-                               if( typeof arg2 === 'function' ){
-                                       callback = X.Callback.create( element, arg2, arg3 );
-                               } else {
-                                       callback = X.Callback.create( arg2, arg3, arg4 );
-                               };
-                               callback.c   = X.DomEvent._callback; // override
-                               element.addEventListener( type, callback, false );
-                       }) :
-               document.attachEvent ?
-                       (function( element, type, arg2, arg3, arg4 /* [ listener || ( context + function ) || function ][ arguments ] */ ){
-                               var callback;
-                               if( typeof arg2 === 'function' ){
-                                       callback = X.Callback.create( element, arg2, arg3 );
-                               } else {
-                                       callback = X.Callback.create( arg2, arg3, arg4 );
-                               };
-                               callback.c = X.DomEvent._callback; // override
-                               callback.e = element;
-                               element.attachEvent( 'on' + type, callback );
-                       }) :
-                       (function( element, type, arg2, arg3, arg4 /* [ listener || ( context + function ) || function ][ arguments ] */ ){
-                               var callback, dom0, helper, list;
-                               if( typeof arg2 === 'function' ){
-                                       callback = X.Callback.create( element, arg2, arg3 );
-                               } else {
-                                       callback = X.Callback.create( arg2, arg3, arg4 );
-                               };
-                               if( X.DomEvent.helper( element, type, callback ) === false ){
-                                       callback.c   = X.DomEvent._callback; // override
-                                       return;
-                               };
-                               dom0 = X.DomEvent.Dom0;
-                               helper = dom0.find( element, type );
-                               if( helper ){
-                                       list = helper.list;
-                                       if( list.indexOf( callback ) === -1 ) list[ list.length ] = callback;
-                               } else {
-                                       dom0.LIST[ dom0.LIST.length ] = new dom0.Helper( element, type, callback );
-                               };
-                       }),
-       remove :
-               document.removeEventListener ?
-                       (function( element, type, arg2, arg3 ){
-                               var callback = X.Callback.find( arg2, arg3 );
-                               if( callback ){
-                                       element.removeEventListener( type, callback, false );
-                                       X.Callback._correct( callback );                                        
-                               };
-                       }) :
-               document.detachEvent ?
-                       (function( element, type, arg2, arg3 ){
-                               var callback = X.Callback.find( arg2, arg3 );
-                               if( callback ){
-                                       element.detachEvent( 'on' + type, callback );
-                                       X.Callback._correct( callback );
-                               };
-                       }) :
-                       (function( element, type, arg2, arg3 ){
-                               var dom0 = X.DomEvent.Dom0,
-                                       t    = dom0.find( element, type ),
-                                       c    = X.Callback.find( arg2, arg3 ),
-                                       i;
-                               if( t && c ){
-                                       i = t.list.indexOf( c );
-                                       if( i !== -1 ){
-                                               t.list.splice( i, 1 );
-                                               X.Callback._correct( c );
-                                       };
-                                       if( t.list.length === 0 ){
-                                               t.elm[ 'on' + t.type ] = dom0.emptyFunc;
-                                               t.elm[ 'on' + t.type ] = '';
-                                               c = X.Callback.find( t );
-                                               X.Callback._correct( c );
-                                               dom0.LIST.splice( dom0.LIST.indexOf( t ), 1 );
-                                               delete t.elm;
-                                               delete t.type;
-                                               delete t.list;
-                                       };
-                               };
-                       }),
-       _callback :
-               window.addEventListener ?
-                       (function(){
-                               var f = this,
-                                       e = f.a[ 0 ],
-                                       r = f.callback.call( f.context, new X.DomEvent.xEvent( e ) );
-                               if( r !== false ) return r;
-                               e.preventDefault();
-                               e.stopPropagation();
-                               return false;
-                       }) :
-               document.attachEvent ?
-                       (function(){
-                               var f = this,
-                                       e = window.event,
-                                       x = f.context,
-                                       r = f.callback.call( x, new X.DomEvent.xEvent( e, f.e ));
-                               if( r !== false ) return r;
-                               e.cancelBubble = true;
-                               e.returnValue  = false;
-                               return r;
-                       }) :
-                       (function(){
-                               var f = this,
-                                       e = window.event,
-                                       x = f.context,
-                                       r = f.callback.call( x, new X.DomEvent.xEvent( e, x.elm ));
-                               if( r !== false ) return r;
-                               e.cancelBubble = true;
-                               e.returnValue  = false;
-                               return r;
-                       })
-};
-if( window.addEventListener ){
-       X.DomEvent.xEvent = function( e ){
-               this._event        = e;
-               this.type          = e.type;
-               this.target        = e.target;
-               this.currentTarget = e.currentTarget;
-               this.relatedTarget = e.relatedTarget;
-               this.eventPhase    = e.eventPhase;
-               
-               this.clientX       = e.clientX;
-               this.clientY       = e.clientY;
-               this.screenX       = e.screenX;
-               this.screenY       = e.screenY;
-               
-               this.keyCode       = e.keyCode;
-               this.altKey        = e.altKey;
-               this.ctrlKey       = e.ctrlKey;
-               this.shiftKey      = e.shiftKey;
-               
-               this.wheelDelta    = e.wheelDelta;
-       };
-} else {
-       X.DomEvent.xEvent = function( e, element ){
-               this._event        = e;
-               this.type          = e.type;
-               this.target        = e.srcElement;
-               this.currentTarget = element;
-               this.relatedTarget = e.formElement ? e.formElement : e.toElement;
-               this.eventPhase    = e.srcElement === element ? 2: 3;
-               
-               this.clientX       = e.clientX;
-               this.clientY       = e.clientY;
-               this.screenX       = e.screenX;
-               this.screenY       = e.screenY;
-               
-               this.keyCode       = e.keyCode;
-               this.altKey        = e.altKey;
-               this.ctrlKey       = e.ctrlKey;
-               this.shiftKey      = e.shiftKey;
-               
-               this.wheelDelta    = e.wheelDelta;
-       };
-};
-if( !document.addEventListener && !document.attachEvent ){
-       X.DomEvent.Dom0 = {
-               LIST      : [],
-               emptyFunc : new Function(),
-               find      : function( element, type ){
-                       var list = X.DomEvent.Dom0.LIST,
-                               i    = list.length,
-                               helper;
-                       for( ; i < l; ){
-                               helper = list[ --i ];
-                               if( helper.elm === element && helper.type === type ) return helper;
-                       };
-               },
-               Helper : function( elm, type, callback ){
-                       this.elm  = elm;
-                       this.type = type;
-                       this.list = [ callback ];
-                       
-                       callback   = elm[ 'on' + type ] = X.Callback.create( this );
-                       callback.c = X.DomEvent._callback; // override
-               }
-       };
-       X.DomEvent.Dom0.Helper.prototype.handleEvent = function(e){
-               //e = e.copy();
-               var list = this.list,
-                       i    = list.length,
-                       cancel;
-               for( ; i; ){
-                       if( list[ --i ]( e ) === false ) cancel = false;
-               };
-               return cancel;
-       };
-};
\ No newline at end of file
diff --git a/0.6.x/js/core/19_XQuery.js b/0.6.x/js/core/19_XQuery.js
deleted file mode 100644 (file)
index f965395..0000000
+++ /dev/null
@@ -1,589 +0,0 @@
-var X = X || {};\r
-\r
-;(function( window, document, undefined ){\r
-\r
-var $LIST     = [];\r
-var HIDE_LIST = [];\r
-\r
-var Util = {\r
-       extend : function( target, override ){\r
-               for( var k in override ){\r
-                       target[ k ] = override[ k ];\r
-               };\r
-       },\r
-       copyArray : function( ary ){\r
-               var ret = [],\r
-                       i   = ary.length;\r
-               for( ; i; ){\r
-                       ret[ --i ] = ary[ i ];\r
-               };\r
-               return ret;\r
-       },\r
-       find$ : function( v ){\r
-               var list = HIDE_LIST,\r
-                       i    = list.length;\r
-               for( ; i; ){\r
-                       if( list[ --i ].elm  === v || list[ i ].elms === v ) return $LIST[ i ];\r
-               };\r
-       },\r
-       getPrivate : function( $ ){\r
-               var i = $LIST.indexOf( $ );\r
-               if( i === -1 ){\r
-                       return HIDE_LIST[ HIDE_LIST.length ] = {};\r
-               };\r
-               return HIDE_LIST[ i ];\r
-       },\r
-       each : function( $, funcName, args ){\r
-               var data = Util.getPrivate( $ ),\r
-                       elms = data.elms,\r
-                       _$;\r
-               for( var i = 0, l = elms.length; i < l; ++i ){\r
-                       _$ = new X.$( elms[ i ] );\r
-                       _$[ funcName ].apply( _$, args );\r
-               };\r
-       },\r
-       is$ : function( v ){\r
-               return $LIST.indexOf(v) !== -1;\r
-       },\r
-       isHTMLList : function( v ){\r
-               var type = X.Type;\r
-               if( !type.isArray( v ) ) return false;\r
-               for( var i = v.length; i; ){\r
-                       if( !type.isHTMLElement( v[ --i ] ) ) return false;\r
-               };\r
-               return true;\r
-       },\r
-       isHTMLString : function(v){\r
-               if( typeof v === 'string' && v.charAt(0) === '<' && v.charAt(v.length - 1) === '>' ){\r
-                       return true;\r
-               };\r
-               return false;\r
-       },\r
-       isSelectorString : function(v){\r
-               return typeof v === 'string';\r
-       },\r
-       getKind : function(v){\r
-               return Util.is$(v)               ? 0 :\r
-                               Util.isHTMLList(v)       ? 5 :\r
-                               X.Type.isHTMLElement(v)  ? 1 :\r
-                               Util.isHTMLString(v)     ? 2 :\r
-                               Util.isSelectorString(v) ? 3 : 4;\r
-       }\r
-};\r
-\r
-if( !document.getElementById && document.all ){\r
-       Util.ie4remove = function( parent, target, html, save ){\r
-               var children = X.Dom.getChildNodes( parent ),\r
-                       l = children.length,\r
-                       i = 0, child, $, data;\r
-               for( ; i < l; ++i ){\r
-                       child = children[ i ];\r
-                       if( child === target ){\r
-                               $ = Util.find$( child );\r
-                               if( $ ){\r
-                                       data = Util.getPrivate( $ );\r
-                                       data.htmlText = child.outerHTML;\r
-                                       delete data.elm;\r
-                               };\r
-                       } else\r
-                       if( typeof child !== 'string' ){\r
-                               /*\r
-                                * 要素の書き換え前に UID を記入して要素を復帰できるようにする\r
-                                */\r
-                               $ = Util.find$( child );\r
-                               if( $ ){\r
-                                       $.UID = '' + save.length;\r
-                                       child.setAttribute( 'UID', $.UID );\r
-                                       save[ save.length ] = $;\r
-                               };\r
-                               Util.ie4remove( child, null, null, save );\r
-                               if( html ) html[ html.length ] = child.outerHTML;\r
-                       } else\r
-                       if( html ) html[ html.length ] = child;\r
-               };\r
-       };\r
-};\r
-\r
-\r
-X.$ = function( v ){\r
-       if( !this || this.append !== X.$.prototype.append ) return new X.$( v );\r
-       \r
-       var elm, elms, htmlText, $, data;\r
-\r
-       switch( Util.getKind(v) ){\r
-               case 0 :\r
-                       return v;\r
-               case 1 :\r
-                       elm  = v;\r
-                       $    = Util.find$( v );\r
-                       if( $ ) return $;                       \r
-                       break;\r
-               case 2 :\r
-                       htmlText = v;\r
-                       break;\r
-               case 3 :\r
-                       return this.find( v );\r
-               case 5 :\r
-                       elms = v;\r
-                       break;\r
-       };\r
-       \r
-       data = Util.getPrivate( this );\r
-       $LIST[ $LIST.length ] = this;\r
-       if( elm )      data.elm      = elm;\r
-       if( elms )     data.elms     = elms;\r
-       if( htmlText ) data.htmlText = htmlText;\r
-};\r
-\r
-Util.extend(\r
-       X.$.prototype,\r
-       {\r
-               append :\r
-                       document.getElementById ?\r
-                               (function( v ){\r
-                                       var data = Util.getPrivate( this );\r
-                                       if( data.elm ){\r
-                                               switch( Util.getKind(v) ){\r
-                                                       case 0 :\r
-                                                               data.elm.appendChild( Util.getPrivate( v ).elm );\r
-                                                               return this;\r
-                                                       case 1 :\r
-                                                               data.elm.appendChild( v );\r
-                                                               return this;\r
-                                                       case 2 :\r
-                                                               // data.elm.appendChild(  );\r
-                                                               return this;\r
-                                               };                                              \r
-                                       } else {\r
-                                               if( !data.children ) data.children = [];\r
-                                               data.children[ data.children.length ] = v;\r
-                                       };\r
-                                       return this;\r
-                               }) :\r
-                       document.all ?\r
-                               (function( v ){\r
-                                       var data = Util.getPrivate( this ),\r
-                                               elm  = data.elm,\r
-                                               _data, html;\r
-                                       if( elm ){\r
-                                               switch( Util.getKind( v ) ){\r
-                                                       case 0 :\r
-                                                               _data = Util.getPrivate( v );\r
-                                                               elm.insertAdjacentHTML( 'BeforeEnd', _data.htmlText || elm && elm.outerHTML );\r
-                                                               _data.elm = elm.children[ elm.children.length - 1 ];\r
-                                                               return this;\r
-                                                       case 1 :\r
-                                                               data.elm.insertAdjacentHTML( 'BeforeEnd', v.outerHTML );\r
-                                                               return this;\r
-                                                       case 2 :\r
-                                                               data.elm.insertAdjacentHTML( 'BeforeEnd', v );\r
-                                                               return this;\r
-                                               };              \r
-                                       } else {\r
-                                               if( !data.children ){\r
-                                                       data.children = [ v ];\r
-                                               } else {\r
-                                                       data.children[ data.children.length ] = v;\r
-                                               };\r
-                                       };\r
-                                       return this;\r
-                               }) :\r
-                               (function(){}),\r
-               appendTo :\r
-                       document.getElementById ?\r
-                               (function( v ){\r
-                                       var data = Util.getPrivate( this );\r
-                                       switch( Util.getKind(v) ){\r
-                                               case 0 :\r
-                                                       v.append( this );\r
-                                                       return this;\r
-                                               case 1 :\r
-                                                       v.appendChild( data.elm );\r
-                                                       return this;\r
-                                               case 2 :\r
-                                                       X.$(v).append(this)\r
-                                                       return this;\r
-                                       };\r
-                                       return this;\r
-                               }) :\r
-                       document.all ?\r
-                               (function( v ){\r
-                                       var data = Util.getPrivate( this ),\r
-                                               html, i, children;\r
-                                       switch( Util.getKind( v ) ){\r
-                                               case 0 :\r
-                                                       v.append( this );\r
-                                                       return this;\r
-                                               case 1 :\r
-                                                       if( data.elm ){\r
-                                                               html = data.elm.outerHTML;\r
-                                                               this.remove();\r
-                                                       } else {\r
-                                                               html = data.htmlText;\r
-                                                       };\r
-                                                       if( html ){\r
-                                                               v.insertAdjacentHTML( 'BeforeEnd', html ); // elm の場合と string の場合がある\r
-                                                               if( data.htmlText ){\r
-                                                                       delete data.htmlText;\r
-                                                               };\r
-                                                               data.elm = v.children[ v.children.length - 1 ];\r
-                                                       };\r
-                                                       return this;\r
-                                               case 2 :\r
-                                                       X.$( v ).append( this );\r
-                                                       return this;\r
-                                       };\r
-\r
-                                       return this;\r
-                               }) :\r
-                               (function(){}),\r
-               remove :\r
-                       document.getElementById ?\r
-                               (function(){\r
-                                       var data = Util.getPrivate( this );\r
-                                       data.elm.parentNode && data.elm.parentNode.removeChild( data.elm );\r
-                                       data.htmlText = data.elm.outerHTML;\r
-                                       delete data.elm;\r
-                                       return this;\r
-                               }) :\r
-                       document.all ?\r
-                               (function(){\r
-                                       var data = Util.getPrivate( this ),\r
-                                               elm  = data.elm, \r
-                                               parent, i, j,\r
-                                               html, save, all, uid;\r
-                                       if( !elm ) return;\r
-                                       \r
-                                       Util.ie4remove( parent = elm.parentElement, elm, html = [], save = [] );\r
-                                       parent.innerHTML = html.join( '' );\r
-                                       all = Util.copyArray( parent.all );\r
-                       \r
-                                       for( i = save.length; i; ){\r
-                                               $   = save[ --i ];\r
-                                               uid = $.UID;\r
-                                               for( j = all.length; j; ){\r
-                                                       elm = all[ --j ];\r
-                                                       if( elm.UID === uid ){\r
-                                                               Util.getPrivate( $ ).elm = elm;\r
-                                                               delete $.UID;\r
-                                                               elm.removeAttribute( 'UID' );\r
-                                                               all.splice( j, 1 );     \r
-                                                               break;\r
-                                                       } else\r
-                                                       if( !elm.UID ){\r
-                                                               all.splice( j, 1 );\r
-                                                       };\r
-                                               };              \r
-                                       };\r
-                                       return this;\r
-                               }) :\r
-                               (function(){}),\r
-               destroy : function(){\r
-                       \r
-               },\r
-               before :\r
-                       document.getElementById ?\r
-                               (function( v ){\r
-                                       var data = Util.getPrivate( this ),\r
-                                               elm  = data.elm, div;\r
-                                       if( elm ){\r
-                                               if( typeof v === 'string' ){\r
-                                                       div = document.createElement( 'div' );\r
-                                                       div.innerHTML = v;\r
-                                                       document.body.appendChild( div );\r
-                                                       v = div.firstChild;\r
-                                                       document.body.removeChild( div );\r
-                                               };\r
-                                               elm.parentNode && elm.parentNode.insertBefore( v, elm );\r
-                                       };\r
-                                       return this;\r
-                               }) :\r
-                       document.all ?\r
-                               (function( v ){\r
-                                       var data = Util.getPrivate( this ),\r
-                                               elm  = data.elm,\r
-                                               parent, _data, _elm, i, children;\r
-                                       if( !elm ) return this;\r
-                                       parent = elm.parentElement;\r
-                                       \r
-                                       switch( Util.getKind(v) ){\r
-                                               case 0 :\r
-                                                       if( this === v ) return this;\r
-                                                       _data = Util.getPrivate( v );\r
-                                                       _elm  = _data.elm;\r
-                                                       if( _elm ){\r
-                                                               if( parent === _elm || _elm.contains( elm ) === true ) return this;\r
-                                                               v.remove();\r
-                                                       };\r
-                                                       elm.insertAdjacentHTML( 'BeforeBegin', _data.htmlText );\r
-                                                       for( children = X.Dom.getChildNodes( parent ), i = children.length; i; ){\r
-                                                               if( children[ --i ] === elm ){\r
-                                                                       _data.elm = children[ --i ];\r
-                                                                       delete _data.htmlText;\r
-                                                                       break;\r
-                                                               };\r
-                                                       };\r
-                                                       return this;\r
-                                               case 1 :\r
-                                                       elm && elm.insertAdjacentHTML( 'BeforeBegin', v.outerHTML );\r
-                                                       return this;\r
-                                               case 2 :\r
-                                                       elm && elm.insertAdjacentHTML( 'BeforeBegin', v );\r
-                                                       return this;\r
-                                       };\r
-                                       return this;\r
-                               }) :\r
-                               (function(){}),\r
-               after :\r
-                       document.getElementById ?\r
-                               (function( v ){\r
-                                       var data = Util.getPrivate( this ),\r
-                                               elm  = data.elm, div;\r
-                                       if( elm ){\r
-                                               if( typeof v === 'string' ){\r
-                                                       div = document.createElement( 'div' );\r
-                                                       div.innerHTML = v;\r
-                                                       document.body.appendChild( div );\r
-                                                       v = div.firstChild;\r
-                                                       document.body.removeChild( div );\r
-                                               };\r
-                                               elm.parentNode && elm.parentNode.insertBefore( v, elm.nextSibling );\r
-                                       };\r
-                                       return this;\r
-                               }) :\r
-                       document.all ?\r
-                               (function( v ){\r
-                                       var data = Util.getPrivate( this ),\r
-                                               elm  = data.elm,\r
-                                               parent, _data, _elm, i, children;\r
-                                       if( !elm ) return this;\r
-                                       parent = elm.parentElement;\r
-                                       \r
-                                       switch( Util.getKind(v) ){\r
-                                               case 0 :\r
-                                                       if( this === v ) return this;\r
-                                                       _data = Util.getPrivate( v );\r
-                                                       _elm  = _data.elm;\r
-                                                       if( _elm ){\r
-                                                               if( parent === _elm || _elm.contains( elm ) === true ) return this;\r
-                                                               v.remove();\r
-                                                       };\r
-                                                       elm.insertAdjacentHTML( 'AfterEnd', _data.htmlText );\r
-                                                       for( children = X.Dom.getChildNodes( parent ), i = children.length; i; ){\r
-                                                               if( children[ --i ] === elm ){\r
-                                                                       _data.elm = children[ ++i ];\r
-                                                                       delete _data.htmlText;\r
-                                                                       break;\r
-                                                               };\r
-                                                       };\r
-                                                       return this;\r
-                                               case 1 :\r
-                                                       elm && elm.insertAdjacentHTML( 'AfterEnd', v.outerHTML ); // elm の場合と string の場合がある\r
-                                                       return this;\r
-                                               case 2 :\r
-                                                       elm && elm.insertAdjacentHTML( 'AfterEnd', v ); // elm の場合と string の場合がある\r
-                                                       return this;\r
-                                       };\r
-                                       return this;\r
-                               }) :\r
-                               (function(){}),\r
-               find : function( v ){\r
-                       var querys = parser(v), query;\r
-                       var selector, name;\r
-                       var key, operator, value;\r
-                       var elms = [], _elms, j, m;\r
-                       var dom = X.Dom;\r
-                       for( var i = 0, l = querys.length; i < l; ++i ){\r
-                               query = querys[ i ];\r
-                               if( typeof query === 'number' ){\r
-                                       \r
-                               } else\r
-                               if( query.length === 2 ){\r
-                                       name  = query[ 1 ];\r
-                                       _elms = [];\r
-                                       j     = 0;\r
-                                       m     = elms.length;\r
-                                       switch( query[ 0 ] ){\r
-                                               case 4 : // # id\r
-                                                       _elms.push( dom.getElementById( name ) );\r
-                                                       break;\r
-                                               case 5 : // . classname\r
-                                                       for( ; j < m; ++j ){\r
-                                                               _elms = _elms.concat( dom.getElementsByClassName( elms[ j ], name ));\r
-                                                       };\r
-                                                       break;\r
-                                               case 6 : // :\r
-                                                       break;\r
-                                               case 7 : // [\r
-                                                       break;  \r
-                                               case 8 : // . tagname\r
-                                                       for( ; j < m; ++j ){\r
-                                                               _elms = _elms.concat( dom.getElementsByTagName( elms[ j ], name ));\r
-                                                       };\r
-                                                       break;\r
-                                       };\r
-                                       elms = _elms;\r
-                               } else {\r
-                                       \r
-                               };\r
-                       };\r
-                       return new X.$( elms );\r
-               },\r
-               each : function( func /* func(index){ return false } */ ){\r
-                       var data = Util.getPrivate( this ),\r
-                               elms = data.elms, $s = [];\r
-                       for( var i = 0, l = elms.length; i < l; ++i ){\r
-                               $s[ $s.length ] = new X.$( elms[ i ] );\r
-                       };\r
-                       for( i = 0, l = $s.length; i < l; ++i ){\r
-                               if( func.call( $s[ i ], i ) === false ) break;\r
-                       };\r
-                       return this;\r
-               },\r
-               html : function( v ){\r
-                       var data = Util.getPrivate( this ),\r
-                               elm  = data.elm;\r
-                       return elm ? elm.innerHTML : data.htmlText;\r
-               }\r
-       }\r
-);\r
-\r
-HASH_SELECTOR = {\r
-       '>'   : 1,\r
-       '+'   : 2,\r
-       '~'   : 3,\r
-       '#'   : 4,\r
-       '.'   : 5,\r
-       ':'   : 6,\r
-       '['   : 7,\r
-       scope : 8,\r
-       root  : 9,\r
-       link  : 10\r
-};\r
-SELECTORS = ' >+~#.:[';\r
-PASER = {\r
-       START                : 0,\r
-       FINISH               : 99,\r
-       SELECTOR             : 1,\r
-       // TAG_STRAT            : 5,\r
-       ERROR                : -99,\r
-       NAME                 : 2,\r
-       ATTR_FILTER_KEY      : 3,\r
-       ATTR_FILTER_OPERATOR : 4,\r
-       ATTR_FILTER_VALUE    : 5\r
-};\r
-OPERATORS = { "=": 1, "!=": 2, "~=": 3, "^=": 4, "$=": 5, "*=": 6, "|=": 7 };\r
-ALPHABET  = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-0123456789';\r
-\r
-function parser( query ){\r
-       query += ' ';\r
-       var result = [];\r
-       var i = 0, l = query.length, s;\r
-       var selectors = [];\r
-       var mode = PASER.START;\r
-       var name = '', str, key, value, selector = -1, operator, lastSelector, nameString, nameFirst, escape;\r
-       for( ; i < l; ++i ){\r
-               str        = query.charAt( i );\r
-               nameString = ALPHABET.indexOf( str ) !== -1;\r
-               nameFirst  = nameString && ALPHABET.indexOf( str ) < 52;\r
-               escape     = str === '\\';\r
-               switch( mode ){\r
-                       case PASER.NAME :\r
-                               if( nameString ){\r
-                                       name += str;\r
-                                       break;\r
-                               } else\r
-                               if( escape && selector === 4 ){\r
-                                       str = query.charAt( i + 1 );\r
-                                       if( ':.'.indexOf( str ) !== -1 ){\r
-                                               name += str;\r
-                                               break;\r
-                                       };\r
-                               } else {\r
-                                       result[ result.length ] = [ selector, name ];\r
-                                       mode = PASER.START;\r
-                               };\r
-                       case PASER.START :\r
-                               selector = SELECTORS.indexOf( str );\r
-                               if( selector === -1 && nameFirst ){\r
-                                       selector = 8; // tag name\r
-                                       mode = PASER.NAME;\r
-                                       name = str;\r
-                               } else\r
-                               if( selector === 7 ){ // [\r
-                                       mode = PASER.ATTR_FILTER_START;\r
-                               } else\r
-                               if( 0 <= selector ){\r
-                                       name = '';\r
-                                       mode = selector < 4 ? PASER.FINISH : PASER.SELECTOR;// > ,+,~\r
-                                       if( selector === 0 && lastSelector === 0 ) mode = PASER.START; // 子孫セレクタ\r
-                               } else\r
-                               if( str !== ' ' ){\r
-                                       mode = PASER.ERROR;\r
-                               };\r
-                               break;\r
-                       case PASER.SELECTOR :\r
-                               if( nameFirst ){\r
-                                       name = str;\r
-                                       mode = PASER.NAME;\r
-                                       break;\r
-                               };\r
-                               mode = PASER.ERROR;\r
-                               break;\r
-                       case PASER.ATTR_FILTER_START :\r
-                               if( nameFirst ){\r
-                                       mode  = PASER.ATTR_FILTER_KEY;\r
-                                       key   = str;\r
-                                       value = '';\r
-                                       break;\r
-                               };\r
-                               mode = PASER.ERROR;\r
-                               break;\r
-                       case PASER.ATTR_FILTER_KEY :\r
-                               operator = OPERATORS[ query.substr( i, 2 ) ];\r
-                               if( nameString ){\r
-                                       key += str;\r
-                                       break;\r
-                               } else\r
-                               if( str === '=' ){\r
-                                       operator = 1;\r
-                                       mode = PASER.ATTR_FILTER_VALUE;\r
-                               } else\r
-                               if( operator !== -1 ){\r
-                                       mode = PASER.ATTR_FILTER_VALUE;\r
-                                       ++i;\r
-                               } else\r
-                               if( str !== ' ' ){\r
-                                       mode = PASER.ERROR;\r
-                               };\r
-                               break;\r
-                       case PASER.ATTR_FILTER_VALUE :\r
-                               if( nameString ){\r
-                                       value += str;\r
-                                       break;\r
-                               } else\r
-                               if( str === ']' ){\r
-                                       mode = PASER.FINISH;\r
-                                       break;\r
-                               };\r
-                               mode = PASER.ERROR;\r
-                               break;\r
-                       default :\r
-               };\r
-               //alert( str + ' ' + mode + ' ' + selector + ' ' + name + ' ' + nameFirst )\r
-               if( mode === PASER.ERROR ) return [];\r
-               \r
-               if( mode === PASER.FINISH && 0 <= selector ){\r
-                       result[ result.length ] = selector === 7 ? [ key, operator, value ] :\r
-                                                                               selector < 4 ? selector :\r
-                                                                               [ selector, name ];\r
-                       lastSelector = selector;\r
-                       selector = -1;\r
-                       mode = PASER.START;\r
-               };\r
-       };\r
-       return result;\r
-};\r
-\r
-       \r
-})( window, document );
\ No newline at end of file
index 6d77493..d47b9d6 100644 (file)
@@ -101,7 +101,7 @@ var UA = (function(){
        \r
        \r
        var onLibReady = function(){\r
-               X.DomEvent.add( window, 'load', ResponsiveImage.onPageLoad );\r
+               X.Dom.Event.add( window, 'load', ResponsiveImage.onPageLoad );\r
                //();\r
        };      \r
 })();\r
diff --git a/0.6.x/js/dom/12_XDomParser.js b/0.6.x/js/dom/12_XDomParser.js
new file mode 100644 (file)
index 0000000..de5c756
--- /dev/null
@@ -0,0 +1,288 @@
+/*
+ * Original code by Erik John Resig (ejohn.org)
+ * http://ejohn.org/blog/pure-javascript-html-parser/
+ *
+ */
+
+X.Dom = function(){ if( X.Dom._shortcut ) return X.Dom._shortcut.apply( this, arguments ); };
+
+(function(){
+
+       var alphabets  = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
+               whiteSpace = '\t\r\n\f\b\v ';
+
+       // Empty Elements - HTML 4.01
+       var empty = {area:1,base:1,basefont:1,br:1,col:1,frame:1,hr:1,img:1,input:1,isindex:1,link:1,meta:1,param:1,embed:1};
+
+       // Block Elements - HTML 4.01
+       var block = {address:1,applet:1,blockquote:1,button:1,center:1,dd:1,del:1,dir:1,div:1,dl:1,dt:1,fieldset:1,form:1,frameset:1,hr:1,iframe:1,ins:1,isindex:1,li:1,map:1,menu:1,noframes:1,noscript:1,object:1,ol:1,p:1,pre:1,script:1,table:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1,ul:1};
+
+       // Inline Elements - HTML 4.01
+       var inline = {a:1,abbr:1,acronym:1,applet:1,b:1,basefont:1,bdo:1,big:1,br:1,button:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,iframe:1,img:1,input:1,ins:1,kbd:1,label:1,map:1,object:1,q:1,s:1,samp:1,script:1,select:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,textarea:1,tt:1,u:1,'var':1};
+
+       // Elements that you can, intentionally, leave open
+       // (and which close themselves)
+       var closeSelf = {colgroup:1,dd:1,dt:1,li:1,options:1,p:1,td:1,tfoot:1,th:1,thead:1,tr:1};
+
+       // Attributes that have their values filled in disabled="disabled"
+       var fillAttrs = {checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};
+
+       // Special Elements (can contain anything)
+       var special = {script:1,style:1};
+
+       X.Dom.Parser = function( html, handler ) {
+               var stack    = [],
+                       lastHtml = html,
+                       chars, last, text, index;
+
+               while ( html ) {
+                       chars = true;
+                       last  = stack[ stack.length - 1 ];
+                       
+                       // Make sure we're not in a script or style element
+                       if ( last && special[ last ] === 1 ) {
+                               if( 0 <= ( index = _parseEndTag( stack, handler, html ) ) ){
+                                       //handler.chars( html.substring( 0, index ) );
+                                       html = html.substring( index );
+                               };
+                       } else {
+                               // Comment
+                               if ( html.indexOf("<!--") === 0 ) {
+                                       if ( 0 < ( index = html.indexOf("-->") ) ) {
+                                               handler.comment( html.substring( 4, index ) );
+                                               html = html.substring( index + 3 );
+                                               chars = false;
+                                       };
+       
+                               // end tag
+                               } else if ( html.indexOf("</") === 0 ) {
+                                       if ( 2 < ( index = _parseEndTag( stack, handler, html ) ) ) {
+                                               html = html.substring( index );
+                                               chars = false;
+                                       };
+       
+                               // start tag
+                               } else if ( html.indexOf("<") === 0 ) {
+                                       if( index = _parseStartTag( stack, last, handler, html ) ){
+                                               html  = html.substring( index );
+                                               chars = false;
+                                       };
+                               };
+
+                               if ( chars ) {
+                                       index = html.indexOf("<");
+                                       
+                                       text = index < 0 ? html : html.substring( 0, index );
+                                       html = index < 0 ? '' : html.substring( index );
+                                       
+                                       handler.chars( text );
+                               };
+
+                       };
+
+                       if ( html === lastHtml ){
+                               handler.err( html );
+                               return;
+                       };
+                       lastHtml = html;
+               };
+               
+               // Clean up any remaining tags
+               parseEndTag( stack, handler );
+       };
+
+       function _parseStartTag( stack, last, handler, html ){
+               var phase = 0,
+                       l     = html.length,
+                       i     = 0,
+                       attrs = [],
+                       tagName, empty,
+                       chr, start, attrName, quot, escape;
+               
+               while( i < l && phase < 9 ){
+                       chr = html.charAt( i );
+                       switch( phase ){
+                               case 0 :
+                                       chr === '<' && ( ++phase );
+                                       break;
+                               case 1 : // タグ名の開始を待つ
+                                       alphabets.indexOf( chr ) !== -1 && ( ++phase && ( start = i ) );
+                                       break;
+                               case 2 : // タグ名の終わりの空白文字を待つ
+                                       whiteSpace.indexOf( chr ) !== -1 ?
+                                               ( ++phase && ( tagName = html.substring( start, i ) ) ) :
+                                       ( chr === '>' || ( empty = html.substr( i, 2 ) === '/>' ) ) &&
+                                               ( ( tagName = html.substring( start, i ) ) && ( phase = 9 ) );
+                                       break;
+                               case 3 : // 属性名の開始を待つ
+                                       alphabets.indexOf( chr ) !== -1 ?
+                                               ( ++phase && ( start = i ) ) :
+                                       ( chr === '>' || ( empty = html.substr( i, 2 ) === '/>' ) ) &&
+                                               ( phase = 9 );
+                                       break;
+                               case 4 : // 属性名の終わりを待つ
+                                       chr === '=' ?
+                                               ( ( phase = 6 ) && ( attrName = html.substring( start, i ) ) ) :
+                                       whiteSpace.indexOf( chr ) !== -1 &&
+                                               ( ( phase = 5 ) && ( attrName = html.substring( start, i ) ) );
+                                       break;
+                               case 5 : // 属性の = または次の属性または htmlタグの閉じ
+                                       alphabets.indexOf( chr ) !== -1 ?
+                                               ( ( phase = 4 ) && ( attrs[ attrs.length ] = attrName ) && ( start = i ) ) :
+                                       chr === '=' ?
+                                               ( phase = 6 ) :
+                                       ( chr === '>' || ( empty = html.substr( i, 2 ) === '/>' ) ) &&
+                                               ( ( phase = 9 ) && ( attrs[ attrs.length ] = attrName ) );
+                                       break;
+                               case 6 : // 属性値の開始 quot を待つ
+                                       ( chr === '"' || chr === "'" ) ?
+                                               ( ( phase = 7 ) && ( quot = chr ) && ( start = i + 1 ) ):
+                                       whiteSpace.indexOf( chr ) === -1 &&
+                                               ( ( phase = 8 ) && ( start = i ) ); // no quot
+                                       break;
+                               case 7 : //属性値の閉じ quot を待つ
+                                       !escape && ( chr === quot ) && ( phase = 3 ) && saveAttr( attrs, attrName, html.substring( start, i ) );
+                                       break;
+                               case 8 : //閉じ quot のない属性の値
+                                       whiteSpace.indexOf( chr ) !== -1 ?
+                                               ( ( phase = 3 ) && saveAttr( attrs, attrName, html.substring( start, i ) ) ) :
+                                       ( chr === '>' || ( empty = html.substr( i, 2 ) === '/>' ) ) &&
+                                               ( ( phase = 9 ) && saveAttr( attrs, attrName, html.substring( start, i ) ) );
+                                       break;
+                       };
+                       escape = chr === '\\' && !escape; // \\\\ is not escape for "
+                       ++i;
+               };
+               if( phase === 9 ){
+                       parseStartTag( stack, last, handler, tagName.toLowerCase(), attrs, empty );
+                       return i;
+               };
+               return 0; // error
+       };
+
+       function _parseEndTag( stack, handler, html ){
+               var phase = 0,
+                       l     = html.length,
+                       i     = 0,
+                       tagName,
+                       chr, start;
+               
+               while( i < l && phase < 9 ){
+                       chr = html.charAt( i );
+                       switch( phase ){
+                               case 0 :
+                                       html.substr( i, 2 ) === '</' && ( ++phase && ++i );
+                                       break;
+                               case 1 : // タグ名の開始を待つ
+                                       alphabets.indexOf( chr ) !== -1 && ( ++phase && ( start = i ) );
+                                       break;
+                               case 2 : // タグ名の終わりの空白文字を待つ
+                                       whiteSpace.indexOf( chr ) !== -1 && ( ++phase );
+                                       ( chr === '>' ) && ( phase = 9 );
+                                       ( phase !== 2 ) && ( tagName = html.substring( start, i ) );
+                                       break;
+                               case 3 : // 属性名の開始を待つ
+                                       chr === '>' && ( phase = 9 );
+                                       break;
+                       };
+                       ++i;
+               };
+               if( phase === 9 ){
+                       parseEndTag( stack, handler, tagName.toLowerCase() );
+                       return i;
+               };
+               return 0; // error
+       };
+
+       function saveAttr( attrs, name, value ){
+               name  = name.toLowerCase();
+               value = fillAttrs[ name ] === 1 ? name : value;
+               attrs[ attrs.length ] = {
+                       name    : name,
+                       value   : value,
+                       escaped : value && value.split( '"' ).join( '\\"' ).split( '\\\\"' ).join( '\\"' )
+               };
+       };
+
+       function parseStartTag( stack, last, handler, tagName, attrs, unary ) {
+               if ( block[ tagName ] === 1 ) {
+                       while ( last && inline[ last ] === 1 ) {
+                               parseEndTag( stack, handler, last );
+                               last = stack[ stack.length - 1 ];
+                       };
+               };
+               closeSelf[ tagName ] === 1 && last === tagName && parseEndTag( stack, handler, tagName );
+               unary = empty[ tagName ] === 1 || !!unary;
+               !unary && ( stack[ stack.length ] = tagName );
+               
+               handler.start( tagName, attrs, unary );
+       };
+
+       function parseEndTag( stack, handler, tagName ) {
+               var pos = 0, i = stack.length;
+               // If no tag name is provided, clean shop
+               
+               // Find the closest opened tag of the same type
+               if ( tagName )
+                       for ( pos = i; 0 <= pos; )
+                               if ( stack[ --pos ] === tagName )
+                                       break;
+               
+               if ( 0 <= pos ) {
+                       // Close all the open elements, up the stack
+                       for ( ; pos < i; )
+                               handler.end( stack[ --i ] );
+                       
+                       // Remove the open elements from the stack
+                       stack.length = pos;
+               };
+       };
+
+})();
+
+X.Dom._htmlStringToXHtmlNode = {
+       flat : undefined,
+       nest : [],
+       err : function( html ){
+               this.flat.length = 0;
+               this.ignoreError !== true && X.Notification.warn( 'X.Dom.Parser() error ' + html );
+       },
+       start : function( tagName, attrs, noChild ){
+               var $,
+                       nest = this.nest,
+                       flat = this.flat;
+               if( $ = nest[ nest.length - 1 ] ){
+                       $ = $.create( tagName ).lastChild();
+               } else {
+                       $ = flat[ flat.length ] = X.Dom.create( tagName );
+               };
+               $.attr( attrs );
+               if( !noChild ) nest[ nest.length ] = $;
+       },
+       end : function(){
+               0 < this.nest.length && ( --this.nest.length );
+       },
+       chars : function( text ){
+               var $;
+               if( $ = this.nest[ this.nest.length - 1 ] ){
+                       $.createText( text );
+               } else {
+                       this.flat[ this.flat.length ] = X.Dom.createText( text );
+               };
+       },
+       comment : function(){
+               
+       }
+};
+
+X.Dom.parse = function( html, ignoreError ){
+       var worker = X.Dom._htmlStringToXHtmlNode, ret;
+       worker.flat = [];
+       worker.nest.length = 0;
+       worker.ignoreError = ignoreError;
+       X.Dom.Parser( html, worker );
+       ret = worker.flat;
+       delete worker.flat;
+       return ret.length < 2 ? ret[ 0 ] : ret; 
+};
+
diff --git a/0.6.x/js/dom/13_XDomEvent.js b/0.6.x/js/dom/13_XDomEvent.js
new file mode 100644 (file)
index 0000000..2da4b0e
--- /dev/null
@@ -0,0 +1,193 @@
+/**
+ * use X.Callback
+ */
+
+if( window.addEventListener ){
+       X.Dom.Event = function( e ){
+               this._event        = e;
+               this.type          = e.type;
+               this.target        = e.target;
+               this.currentTarget = e.currentTarget;
+               this.relatedTarget = e.relatedTarget;
+               this.eventPhase    = e.eventPhase;
+               
+               this.clientX       = e.clientX;
+               this.clientY       = e.clientY;
+               this.screenX       = e.screenX;
+               this.screenY       = e.screenY;
+               
+               this.keyCode       = e.keyCode;
+               this.altKey        = e.altKey;
+               this.ctrlKey       = e.ctrlKey;
+               this.shiftKey      = e.shiftKey;
+               
+               this.wheelDelta    = e.wheelDelta;
+       };
+} else {
+       X.Dom.Event = function( e, element ){
+               this._event        = e;
+               this.type          = e.type;
+               this.target        = e.srcElement;
+               this.currentTarget = element;
+               this.relatedTarget = e.formElement ? e.formElement : e.toElement;
+               this.eventPhase    = e.srcElement === element ? 2: 3;
+               
+               this.clientX       = e.clientX;
+               this.clientY       = e.clientY;
+               this.screenX       = e.screenX;
+               this.screenY       = e.screenY;
+               
+               this.keyCode       = e.keyCode;
+               this.altKey        = e.altKey;
+               this.ctrlKey       = e.ctrlKey;
+               this.shiftKey      = e.shiftKey;
+               
+               this.wheelDelta    = e.wheelDelta;
+       };
+};
+
+X.Dom.Event.add = function( element, type, arg2, arg3, arg4 /* [ listener || ( context + function ) || function ][ arguments ] */ ){
+       var xhe = X.Dom.Event, callback, helper, list;
+       callback = typeof arg2 === 'function' ? X.Callback.create( element, arg2, arg3 ) : X.Callback.create( arg2, arg3, arg4 );
+       if( helper = xhe._find( element, type ) ){
+               list = helper.list;
+               if( list.indexOf( callback ) === -1 ) list[ list.length ] = callback;
+       } else {
+               xhe._LIST[ xhe._LIST.length ] = new xhe._Helper( element, type, callback );
+       };
+};
+
+X.Dom.Event.remove = function( element, type, arg2, arg3 ){
+       var t   = X.Dom.Event._find( element, type ),
+               c   = X.Callback._find( arg2, arg3 ),
+               i;
+       if( t && c ){
+               i = t.list.indexOf( c );
+               if( i !== -1 ){
+                       t.list.splice( i, 1 );
+                       X.Callback._correct( c );
+               };
+               t.list.length === 0 && t.removeEvent();
+       };
+};
+
+X.Dom.Event._LIST = [];
+
+X.Dom.Event._find = function( element, type ){
+       var list = X.Dom.Event._LIST,
+               i    = list.length,
+               helper;
+       for( ; i; ){
+               helper = list[ --i ];
+               if( helper.elm === element && helper.type === type ) return helper;
+       };
+};
+
+X.Dom.Event._Helper =
+       document.addEventListener ?
+               (function( elm, type, callback ){
+                       this.elm  = elm;
+                       this.type = type;
+                       this.list = [ callback ];
+                       elm.addEventListener( type, this, false );
+               }) :
+       document.attachEvent ?
+               (function( elm, type, callback ){
+                       this.elm  = elm;
+                       this.type = type;
+                       this.list = [ callback ];
+                       elm.attachEvent( 'on' + type, ( this.callback = X.Callback.create( this ) ) );
+               }) :
+               (function( elm, type, callback ){
+                       this.elm      = elm;
+                       this.type     = type;
+                       this.list     = [ callback ];
+                       this.callback = elm[ 'on' + type ] = X.Callback.create( this );
+               });
+
+X.Dom.Event._Helper.prototype.handleEvent =
+       window.addEventListener ?
+               (function( e ){
+                       var list = this.list,
+                               l    = list.length,
+                               e    = new X.Dom.Event( e ),
+                               i    = 0,
+                               ret  = 0,
+                               f, r;
+                       for( ; i < l; ++i ){
+                               f = list[ i ];
+                               r = f( e );
+                               ret |= r;
+                               if( r & X.Callback.UN_LISTEN ){
+                                       list.splice( i, 1 );
+                                       X.Callback._correct( f );
+                                       list.length === 0 && this.removeEvent();
+                               };
+                               if( r & X.Callback.CANCEL_NOW ) break;
+                       };
+                       if( ( ret & X.Callback.STOP_PROPAGATION ) ){
+                               e.stopPropagation();
+                       };
+                       if( ( ret & X.Callback.PREVENT_DEFAULT ) ){
+                               e.preventDefault();
+                               return false;
+                       };
+               }) :
+               (function(){
+                       var list = this.list,
+                               l    = list.length,
+                               e    = new X.Dom.Event( event, this.elm ),
+                               i    = 0,
+                               ret  = 0,
+                               r, f;
+                       for( ; i < l; ++i ){
+                               f = list[ i ];
+                               r = f( e );
+                               ret |= r;
+                               if( r & X.Callback.UN_LISTEN ){
+                                       list.splice( i, 1 );
+                                       X.Callback._correct( f );
+                                       list.length === 0 && this.removeEvent();
+                               };
+                               if( r & X.Callback.CANCEL_NOW ) break;
+                       };
+                       if( ( ret & X.Callback.STOP_PROPAGATION ) ){
+                               event.cancelBubble = true;
+                       };
+                       if( ( ret & X.Callback.PREVENT_DEFAULT ) ){
+                               return event.returnValue = false;
+                       };
+               });
+
+X.Dom.Event._Helper.prototype.removeEvent =
+       document.removeEventListener ?
+               (function(){
+                       this.elm.removeEventListener( this.type, this );
+                       delete this.elm;
+                       delete this.type;
+                       delete this.list;
+                       X.Dom.Event._LIST.splice( X.Dom.Event._LIST.indexOf( this ), 1 );
+               }) :
+       document.detachEvent ?
+               (function(){
+                       this.elm.detachEvent( 'on' + this.type, this.callback );
+                       X.Callback._correct( this.callback );
+                       delete this.elm;
+                       delete this.type;
+                       delete this.list;
+                       delete this.callback;
+                       X.Dom.Event._LIST.splice( X.Dom.Event._LIST.indexOf( this ), 1 );
+               }) :
+               (function(){
+                       this.elm[ 'on' + this.type ] = emptyFunc;
+                       this.elm[ 'on' + this.type ] = '';
+                       X.Callback._correct( this.callback );
+                       delete this.elm;
+                       delete this.type;
+                       delete this.list;
+                       X.Dom.Event._LIST.splice( X.Dom.Event._LIST.indexOf( this ), 1 );
+               });
+
+if( !document.removeEventListener && !document.detachEvent ){
+       X.Dom.Event.emptyFunc = new Function();
+};
\ No newline at end of file
diff --git a/0.6.x/js/dom/14_XDomNode.js b/0.6.x/js/dom/14_XDomNode.js
new file mode 100644 (file)
index 0000000..dbd7648
--- /dev/null
@@ -0,0 +1,889 @@
+\r
+/*\r
+ * Node( rawElement | rawTextnode | htmlString | textString )\r
+ * input=text ui#only.first > li.odd, li.even, li.odd\r
+ */\r
+\r
+var Node = X.Dom.Node = function( v ){\r
+       var nodeList, xnode, uid;\r
+       \r
+       if( Node._newByTag ){\r
+               delete Node._createByTag;\r
+               this._tag = v;\r
+       } else\r
+       if( Node._newByText ){\r
+               delete Node._createByText;\r
+               this._text = v;\r
+       } else {\r
+               if( 1 < arguments.length ){\r
+                       return new X.Dom.NodeList( arguments );\r
+               };\r
+               if( v && 1 < v.length ){\r
+                       return new X.Dom.NodeList( v );\r
+               };\r
+               \r
+               if( !this || this.constractor !== Node ) return new Node( v );\r
+               \r
+               switch( Node._getType( v ) ){\r
+                       case Node.IS_XHNODE :\r
+                               return v;\r
+                       case Node.IS_RAW_HTML :\r
+                               if( xnode = Node._getXNode( v ) ) return xnode;\r
+                               ( uid = v.parentNode.uid ) && ( this.parent = Node._chashe[ uid ] );\r
+                               this._rawNode = v;\r
+                               this._type    = 1;\r
+                               break;\r
+                       case Node.IS_RAW_TEXT :\r
+                               if( xnode = Node._getXNode( v ) ) return xnode;\r
+                               ( uid = v.parentNode.uid ) && ( this.parent = Node._chashe[ uid ] );\r
+                               this._rawNode = v;\r
+                               this._type    = 3;\r
+                               break;\r
+                       case Node.IS_HTML_STRING :\r
+                       case Node.IS_STRING :\r
+                               if( nodeList = X.Dom.parse( v, true ) && 1 < nodeList.length ) return new X.Dom.NodeList( nodeList );\r
+                               if( nodeList.length ) return nodeList[ 0 ];\r
+                               return Node._chashe[ 0 ];\r
+                       default :\r
+                               return Node._chashe[ 0 ];\r
+               };              \r
+       };\r
+       \r
+       this._uid = Node._chashe.length;\r
+       Node._chashe[ this._uid ] = this;\r
+       this._rawNode &&\r
+               ( this._type === 1 && 4 < X.UA.IE && X.UA.IE < 6 ) ?\r
+                       this._rawNode.setAttribute( 'uid', this._uid ) :\r
+                       ( this._rawNode.uid = this._uid );\r
+};\r
+\r
+Node._getType = function( v ){\r
+       if( v === '' ) return Node.IS_STRING;\r
+       if( !v ) return 0;\r
+       if( v.constructor === Node ) return Node.IS_XHNODE;\r
+       if( v.tagName ) return Node.IS_RAW_HTML;\r
+       if( v.nodeType === 3 ) return Node.IS_RAW_TEXT;\r
+       if( typeof v === 'string' ){\r
+               return '<' === v.charAt( 0 ) && v.charAt( v.length - 1 ) === '>' ? Node.IS_HTML_STRING : Node.IS_STRING;\r
+       };\r
+       return 0;\r
+};\r
+\r
+Node._chashe = [ new Node() ];\r
+Node._getXNode = function( node ){\r
+       return node.uid && Node._chashe[ node.uid ];\r
+};\r
+\r
+Node.hasClass = function( elm , className ){\r
+       var cnames  = ( elm.className || '' ).split( ' ' ),\r
+               _cnames = className.split( ' ' ),\r
+               cname,\r
+               i = _cnames.length;\r
+       for( ; i; ){\r
+               cname = _cnames[ --i ];\r
+               if( cname === '' ) continue;\r
+               if( cnames.indexOf( cname ) === -1 ) return false;\r
+       };\r
+       return true;\r
+};\r
+\r
+Node.IS_XHNODE      = 1;\r
+Node.IS_RAW_HTML    = 2;\r
+Node.IS_RAW_TEXT    = 3;\r
+Node.IS_HTML_STRING = 4;\r
+Node.IS_STRING      = 5;\r
+\r
+Node.prototype._uid       = 0;\r
+Node.prototype._type      = 0;\r
+Node.prototype._rawNode   = null;\r
+Node.prototype._tag       = null;\r
+Node.prototype._text      = null;\r
+Node.prototype._id        = null;\r
+Node.prototype._className = null;\r
+Node.prototype._attr      = null;\r
+Node.prototype.parent     = null;\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
+                       childNodes, i, l, child, _child;\r
+               if( elm && children && ( childNodes = elm.childNodes ) ){\r
+                       for( i = 0, l = children.length; i < l; ++i ){\r
+                               child = children[ i ];\r
+                               if( child.constractor === Node ) child = child._create( true );\r
+                               if( typeof child === 'string'  ) child = document.createTextNode( child );\r
+                               if( ( _child = childNodes[ i ] ) !== child ){\r
+                                       _child ?\r
+                                               elm.insetBefore( child, _child ) :\r
+                                               elm.appendChild( child );\r
+                                       _child && elm.removeChild( _child );\r
+                               };\r
+                       };\r
+                       while( ( _child = childNodes[ i ] ) ){\r
+                               elm.removeChild( _child );\r
+                       };\r
+               };\r
+       };      \r
+};\r
+\r
+/* --------------------------------------\r
+ *  Create\r
+ */\r
+Node.prototype._create =\r
+       document.createElement ? (function( isChild ){\r
+               var tag = this._tag, node, frg;\r
+               if( tag === 'input' ){\r
+                       // ie7 以下では createElement では name 等が働かない!\r
+               };\r
+               if( !( node = this._rawNode ) ){\r
+                       this._isNew = true;\r
+                       node = this._rawNode = ( tag ? document.createElement( tag ) : document.createTextNode( this._text ) );\r
+               };\r
+               // fragument がある場合 children も足して\r
+               // Mozilla: 1.0+, IE: 6.0+, Netscape: 2.0+, Safari: 1.0+, Opera: 7.0+\r
+               if( !isChild && document.createDocumentFragment ){\r
+                       if( node.nodeType === 1 ){\r
+                               frg = document.createDocumentFragment();\r
+                               frg.appendChild( node );\r
+                               Node._dom2cleanUp( this );\r
+                               return frg;\r
+                       };\r
+               };\r
+               return node;\r
+       }) :\r
+       document.all ? (function(){\r
+               var elm, id, html, children, i, l, child;\r
+               if( elm = this._ie4getRawNode() ){\r
+                       // 追加する前に要素を抜く\r
+                       this.remove();\r
+                       return elm.outerHTML;\r
+               };\r
+               // attr\r
+               id       = this._id || this._ie4uid || ( 'ie4uid_' + ( ++Node.ie4uid ) );\r
+               html     = [ '<', this._tag, id ? ( ' id="' + id + '"' ) : '', '>' ];\r
+               if( ( children = this._children ) && ( l = children.length ) ){\r
+                       for( i = 0; i < l; ++i ){\r
+                               child = children[ i ];\r
+                               html[ html.length ] = child.constractor === Node ? child._create() : ( child.outerHTML || child );\r
+                       };\r
+               };\r
+               html[ html.length ] = '<\/' + this._tag + '>';\r
+               return html.join( '' );\r
+       }) :\r
+       (function(){});\r
+\r
+Node.prototype._afterCreate =\r
+       document.createElement ? (function( parent ){\r
+               var _children = this._children,\r
+                       node      = this._rawNode,\r
+                       eChildren = node.childNodes,\r
+                       _child, i, l;\r
+               this.parent = parent;\r
+               if( this._isNew ){\r
+                       if( _children && !document.createDocumentFragment ){    \r
+                               Node._dom2cleanUp( this ); // docFrg が使えない場合、doc 追加後に子を追加\r
+                       };\r
+                       node.uid = this._uid;\r
+                       // attr\r
+                       // イベントの復帰\r
+                       delete this._isNew;\r
+               };\r
+               /*\r
+                * elm.childNodes を __.children にリンクさせる\r
+                */\r
+               if( _children ){\r
+                       for( i = 0, l = _children.length; i < l; ++i ){\r
+                               _child = _children[ i ];\r
+                               _child.constractor === Node ? _child._afterCreate( this ) : ( _children[ i ] = eChildren[ i ] );\r
+                       };\r
+               } else\r
+               if( eChildren && eChildren.length ){\r
+                       this._children = [];\r
+                       this._children.push.apply( this._children, eChildren );\r
+               };\r
+               return this;\r
+       }) :\r
+       document.all ? (function( parent ){\r
+               var elm       = this._ie4getRawNode(),\r
+                       _children = this._children,\r
+                       eChildren = elm.innerHTML && Node._ie4getChildNodes( elm ),\r
+                       _child, i, l;\r
+               this.parent = parent;\r
+               /*\r
+                * elm.children を __.children にリンクさせる\r
+                */\r
+               if( _children ){\r
+                       for( i = 0; i < l; ++i ){\r
+                               _child = _children[ i ];\r
+                               if( _child.constractor === Node ){\r
+                                       if( _child._ie4getRawNode() === eChildren[ i ] ){\r
+                                               _child._afterCreate( this );\r
+                                       } else {\r
+                                               alert( 'error XHTMLElement._afterCreate() _child._ie4getRawNode() === eChildren[ i ]' );\r
+                                       };\r
+                               } else\r
+                               if( _child !== eChildren[ i ] ){\r
+                                       alert( 'error XHTMLElement._afterCreate() _child !== eChildren[ i ]' );\r
+                               };\r
+                       };\r
+               } else\r
+               if( elm.innerHTML ){\r
+                       this._children = eChildren;\r
+               } else {\r
+\r
+               };\r
+               /*\r
+                * イベントの復帰 if( __.events && ( elm = this._ie4getRawNode() ) )\r
+                */\r
+               \r
+               delete this._ie4dirty;\r
+               delete this._ie4dirtyChildren;\r
+       }) :\r
+       (function(){});\r
+\r
+/* --------------------------------------\r
+ *  Create\r
+ */\r
+Node.prototype.create = function( tag ){\r
+       var elm, v;\r
+       if( this.type !== 1 ) return;\r
+       if( !this._children ) this._children = [];\r
+       \r
+       elm = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode;\r
+       \r
+       if( elm ){\r
+               if( document.createElement ){\r
+                       elm.appendChild( document.createElement( tag ) );\r
+                       v = new Node( elm.lastChild );\r
+               } else\r
+               if( document.all ){\r
+                       elm.insertAdjacentHTML( 'BeforeEnd', '<' + tag + '>' );\r
+                       v = new Node( elm.children[ elm.children.length - 1 ] );\r
+               } else {\r
+                       \r
+               };\r
+       } else {\r
+               Node._newByTag = true;\r
+               v = new Node( v );\r
+       };\r
+       v.parent = this;\r
+       this._children[ this._children.length ] = v;\r
+       return v;\r
+};\r
+\r
+/* --------------------------------------\r
+ *  Create\r
+ */\r
+Node.prototype.createText = function( text ){\r
+       var elm, v;\r
+       if( this.type !== 1 ) return;\r
+       if( !this._children ) this._children = [];\r
+       \r
+       elm = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode;\r
+       \r
+       if( elm ){\r
+               if( document.createElement ){\r
+                       elm.appendChild( document.createTextNode( text ) );\r
+                       v = new Node( elm.lastChild );\r
+               } else\r
+               if( document.all ){\r
+                       elm.insertAdjacentHTML( 'BeforeEnd', text );\r
+                       Node._newByText = true;\r
+                       v = new Node( v );\r
+               } else {\r
+                       \r
+               };\r
+       } else {\r
+               Node._newByText = true;\r
+               v = new Node( v );\r
+       };\r
+       v.parent = this;\r
+       this._children[ this._children.length ] = v;\r
+       return v;\r
+};\r
+\r
+/* --------------------------------------\r
+ *  Add\r
+ * Node\r
+ * HtmlElement の場合は内部使用専用 そのため event の破棄等しない\r
+ */\r
+Node.prototype.append = function( v ){\r
+       var elm, i, l, children;\r
+       if( this.type !== 1 ) return;\r
+       \r
+       if( 1 < arguments.length ){\r
+               for( i = 0, l = arguments.length; i < l; ++i ){\r
+                       this.append( arguments[ i ] );\r
+               };\r
+               return this;\r
+       };\r
+       \r
+       if( !this._children ) this._children = [];\r
+       \r
+       elm = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode;\r
+       switch( Node._getType( v ) ){\r
+               case Node.IS_RAW_HTML :\r
+               case Node.IS_RAW_TEXT :\r
+                       if( elm ){\r
+                               if( document.appendChild ){\r
+                                       elm.appendChild( v );\r
+                               } else\r
+                               if( document.all ){\r
+                                       elm.insertAdjacentHTML( 'BeforeEnd', v.outerHTML );\r
+                                       v = elm.children[ elm.children.length - 1 ];\r
+                               } else {\r
+                                       \r
+                               };\r
+                       };\r
+                       this._children[ this._children.length ] = v;\r
+                       break;\r
+               case Node.IS_HTML_STRING :\r
+               case Node.IS_STRING :\r
+                       v = X.Dom.parse( v, true );\r
+                       if( elm ){\r
+                               for( i = 0, l = v.length; i < l; ++i ){\r
+                                       this.append( v[ i ] );\r
+                               };\r
+                       } else\r
+                       if( 1 < v.length ){\r
+                               this._children.push.apply( this._children, v );\r
+                       } else\r
+                       if( v ){\r
+                               this._children[ this._children.length ] = v;\r
+                       };\r
+                       break;\r
+               case Node.IS_XHNODE :\r
+                       if( elm ){\r
+                               if( document.appendChild ){\r
+                                       elm.appendChild( v._create() );\r
+                                       v._afterCreate( this );\r
+                               } else\r
+                               if( document.all ){\r
+                                       elm.insertAdjacentHTML( 'BeforeEnd', v._create() );\r
+                                       v._afterCreate( this );\r
+                               } else {\r
+                                       \r
+                               };\r
+                       };\r
+                       this._children[ this._children.length ] = v;\r
+       };\r
+       return this;\r
+};\r
+\r
+\r
+Node.prototype.appendAt = function( start, v ){\r
+       var l = arguments.length,\r
+               children = this._children,\r
+               node, i, prev, next;\r
+       if( this.type !== 1 ) return;\r
+       \r
+       if( !children ) children = this._children = [];\r
+       \r
+       if( children.length <= start ){\r
+               for( i = 1; i < l; ++i ){\r
+                       return this.append( arguments[ i ] );\r
+               };\r
+               return this;\r
+       };\r
+       if( start < 0 ) start = 0;\r
+       if( 2 < l ){\r
+               for( ; l; ){\r
+                       this.appendAt( start, arguments[ --l ] );\r
+               };\r
+               return this;\r
+       };\r
+       if( this._type !== 1 ) return this;\r
+       \r
+       if( !this.parent ){\r
+               children.splice( start, 0, v );\r
+               return this;\r
+       };\r
+       elm = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode;\r
+       switch( Node._getType( v ) ){\r
+               case Node.IS_RAW_HTML :\r
+               case Node.IS_RAW_TEXT :\r
+                       if( elm ){\r
+                               if( document.appendChild ){\r
+                                       elm.insertBefore( v, elm.childNodes[ start ] );\r
+                               } else\r
+                               if( document.all ){\r
+                                       if( start === 0 ){\r
+                                               elm.insertAdjacentHTML( 'AfterBegin', v.outerHTML );\r
+                                               v = elm.children[ 0 ];\r
+                                       } else\r
+                                       if( ( next = children[ start ] ) && typeof next !== 'string' && next._type !== 2 &&\r
+                                               ( next = ( next._ie4getRawNode ? next._ie4getRawNode() : next ) ) ){\r
+                                               next.insertAdjacentHTML( 'BeforeBegin', v.outerHTML );\r
+                                               v = elm.children[ ( Array.prototype.indexOf.call( elm.children, next ) ) - 1 ];\r
+                                       } else\r
+                                       if( 0 < start && ( prev = children[ start - 1 ] ) && typeof prev !== 'string' && prev._type !== 2 &&\r
+                                               ( prev = ( prev._ie4getRawNode ? prev._ie4getRawNode() : prev ) ) ){\r
+                                               prev.insertAdjacentHTML( 'AfterEnd', v.outerHTML );\r
+                                               v = elm.children[ ( Array.prototype.indexOf.call( elm.children, prev ) ) + 1 ];\r
+                                       } else {\r
+                                               this._ie4reserveUpdate( v );// テキストノードの間に入れる場合!\r
+                                       };\r
+                               } else {\r
+                                       \r
+                               };\r
+                               children.splice( start, 0, v );\r
+                       } else {\r
+                               children.splice( start, 0, v );\r
+                       };\r
+                       break;\r
+               case Node.IS_HTML_STRING :\r
+               case Node.IS_STRING :\r
+                       v = X.Dom.parse( v, true );\r
+                       if( elm ){\r
+                               for( i = v.length; i; ){\r
+                                       this.appendAt( start, v[ --i ] );\r
+                               };\r
+                       } else\r
+                       if( 1 < v.length ){\r
+                               children.push.apply( children, v );\r
+                       } else\r
+                       if( v ){\r
+                               children[ children.length ] = v;\r
+                       };\r
+                       break;\r
+               case Node.IS_XHNODE :\r
+                       if( elm ){\r
+                               if( document.appendChild ){\r
+                                       elm.insertBefore( v._create(), elm.childNodes[ start ] );\r
+                                       v._afterCreate( this );\r
+                               } else\r
+                               if( document.all ){\r
+                                       this._ie4reserveUpdate( v );\r
+                               } else {\r
+                                       \r
+                               };\r
+                       };\r
+                       children.splice( start, 0, v );\r
+       };\r
+       return this;\r
+};\r
+\r
+Node.prototype.appendTo = function( parent, opt_start ){\r
+       !opt_start ? new Node( parent ).append( this ) : new Node( parent ).appendAt( opt_start, this );\r
+};\r
+\r
+Node.prototype.appendToRoot = function( opt_start ){\r
+       !opt_start ? Node.root.append( this ) : Node.root.appendAt( opt_start, this );\r
+};\r
+\r
+/* --------------------------------------\r
+ *  Before , After\r
+ */\r
+Node.prototype.before = function( v ){\r
+       \r
+};\r
+\r
+Node.prototype.after = function( v ){\r
+       \r
+};\r
+\r
+/* --------------------------------------\r
+ *  Remove\r
+ */\r
+Node.prototype.remove = function(){\r
+       var parent = this.parent;\r
+               \r
+       if( !parent ) return this;\r
+       if( document.removeChild ){\r
+               this._rawNode && parent._rawNode.removeChild( this._rawNode );\r
+       } else\r
+       if( document.all ){\r
+               this._ie4beforeRemove();\r
+               delete this._ie4dirty;\r
+               delete this._ie4dirtyChildren;\r
+               parent._ie4reserveUpdate();\r
+       } else {\r
+               \r
+       };\r
+\r
+       parent._children.splice( parent._children.indexOf( v ), 1 );\r
+       delete this.parent;\r
+       return this;\r
+};\r
+\r
+Node.prototype.empty = function( v ){\r
+       \r
+};\r
+\r
+/* --------------------------------------\r
+ *  replace\r
+ */\r
+\r
+/* --------------------------------------\r
+ *  destory\r
+ */\r
+Node.prototype.destroy = function( v ){\r
+       \r
+};\r
+\r
+/* --------------------------------------\r
+ *  for ie4\r
+ */\r
+if( !document.getElementById && document.all ){\r
+       Node.prototype._ie4beforeRemove = function(){\r
+               var __       = this.__,\r
+                       children = __.children,\r
+                       child, i, l, elm;\r
+               if( children ){\r
+                       for( i = 0, l = children.length; i < l; ++i ){\r
+                               child = children[ i ];\r
+                               child.constractor === Node && child._ie4beforeRemove();\r
+                       };      \r
+               };\r
+               if( elm = this._ie4getRawNode() ){\r
+                       // イベントの削除\r
+                       if( elm.id && elm.id !== __.ie4uid ){\r
+                               __.id = elm.id;\r
+                       } else\r
+                       if( !elm.id ){\r
+                               __.ie4uid = elm.id = 'ie4uid_' + ( ++Node.ie4uid );\r
+                       };\r
+                       __.htmlText = elm.outerHTML;\r
+                       delete this._rawNode;\r
+               };\r
+       };\r
+       \r
+       Node.prototype._ie4getRawNode = function(){\r
+               var __ = this.__, elm, uid;\r
+               if( ( elm = this._rawNode ) && elm.parentElement ) return elm;\r
+               if( ( uid = __.id ) && ( elm = document.all[ uid ] ) ){\r
+                       return ( this._rawNode = elm );\r
+               };\r
+               if( ( uid = __.ie4uid ) && ( elm = document.all[ uid ] ) ){\r
+                       delete __.ie4uid;\r
+                       delete __.htmlText;\r
+                       if( __.id ) elm.id = __.id;\r
+                       return ( this._rawNode = elm );\r
+               };\r
+       };\r
+       \r
+       Node.ie4uid = 0;\r
+       \r
+       Node.prototype._ie4reserveUpdate = function( child ){\r
+               var root = Node.root;\r
+               child && ( child.__.ie4dirty = true );\r
+               this.__.ie4dirtyChildren = true;\r
+               if( root.__.reserved === true ) return;\r
+               root.__.reserved = true;\r
+               X.Timer.once( 1, root, root._ie4startUpdate );\r
+       };\r
+       \r
+       Node.root._ie4startUpdate = function(){\r
+               var __ = this.__;\r
+               if( __.reserved !== true ) return;\r
+               if( this._ie4getRawNode() ) this._rawNode = document.all.tags( 'BODY' )[ 0 ];\r
+               // !this._rawNode && onload(  )\r
+               delete __.reserved;\r
+               if( !__.children ) return;\r
+               this._ie4commitUpdate()._ie4afterUpdate();\r
+       };\r
+       \r
+       Node.prototype._ie4commitUpdate = function(){\r
+               var __       = this.__,\r
+                       children = __.children,\r
+                       i, l, child, html;\r
+               if( !__.ie4dirtyChildren && !__.ie4dirty ){\r
+                       for( i = 0, l = children.length; i < l; ++i ){\r
+                               child = children[ i ];\r
+                               child.constractor === Node && child._ie4commitUpdate();\r
+                       };\r
+                       return this;\r
+               };\r
+               html = [];\r
+               for( i = 0, l = children.length; i < l; ++i ){\r
+                       child = children[ i ];\r
+                       html[ html.length ] = child.constractor === Node ?\r
+                               ( child.__.ie4dirty ? child._ie4commitUpdate() : child._create() ) :\r
+                               ( child.outerHTML || child );\r
+               };\r
+               if( !__.ie4dirty ){\r
+                       this._rawNode.innerHTML = html.join( '' );\r
+                       return this;\r
+               };\r
+               return html.join( '' );\r
+       };\r
+       \r
+       Node.prototype._ie4afterUpdate = function(){\r
+               var __       = this.__,\r
+                       children = __.children,\r
+                       i, l, child;\r
+               if( !__.ie4dirtyChildren && !__.ie4dirty ){\r
+                       for( i = 0, l = children.length; i < l; ++i ){\r
+                               child = children[ i ];\r
+                               child.constractor === Node && child._ie4afterUpdate();\r
+                       };\r
+               };\r
+\r
+               for( i = 0, l = children.length; i < l; ++i ){\r
+                       child = children[ i ];\r
+                       child.constractor === Node &&\r
+                               ( child.__.ie4dirty ? child._ie4afterUpdate() : child._afterCreate( this ) );\r
+               };\r
+               delete __.ie4dirtyChildren;\r
+               delete __.ie4dirty;\r
+       };\r
+       \r
+       /*\r
+        * ie4 に TextNode は存在しない。       よって、Element.children にテキストノードは無視される。\r
+        * そこでテキストノードを判定して控える操作が必要になる。\r
+        * elm と string( TextNode の変わり ) の混在する配列が返る\r
+        * return [ elm, 'text', elm, elm, ...  ]\r
+        */\r
+       Node._ie4getChildNodes = function( elm ){\r
+               var html     = elm.innerHTML,\r
+                       children = elm.children,\r
+                       l        = children.length,\r
+                       _        = '',\r
+                       cr, i, j, child, outer, index, nodes;\r
+               if( l < 1 ){\r
+                       if( html.length ) return [ html ]; // new X.TextNode( html );\r
+                       return [];\r
+               };\r
+               cr    = Node._ie4getCRCChars( html );\r
+               nodes = [];\r
+               j     = -1;\r
+               html = html.split( cr ).join( _ );\r
+               for( i = 0; i <= l; ++i ){\r
+                       child = children[ i ];\r
+                       outer = child.outerHTML.split( cr ).join( _ );\r
+                       index = html.indexOf( outer );\r
+                       if( index === -1 ){\r
+                               alert( 'Node._ie4getChildNodes\n' + outer + '\n' + html.substr( 0, 100 ) );\r
+                               continue;\r
+                       };\r
+                       if( 0 < index ) nodes[ ++j ] = html.substr( 0, index ); // new X.TextNode( html );\r
+                       nodes[ ++j ] = child; // Element\r
+                       html = html.substr( index + outer.length );\r
+               };\r
+               if( html.length ) nodes[ ++j ] = html; // new X.TextNode( html );\r
+               return nodes;\r
+       };\r
+       Node._ie4getCRCChars = function( src ){\r
+               return 0 <= src.indexOf( '\r\n' ) ? '\r\n' :\r
+                       0 <= src.indexOf( '\n' ) ? '\n' :\r
+                       0 <= src.indexOf( '\r' ) ? '\r' : '\n';\r
+       };\r
+};\r
+\r
+/* --------------------------------------\r
+ *  contains\r
+ */\r
+Node.prototype.contains = function( v ){\r
+       var node, _node;\r
+       if( !this.parent || this._type !== -1 ) return false;\r
+       node = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode;\r
+       switch( Node._getType( v ) ){\r
+               case Node.IS_RAW_HTML :\r
+               case Node.IS_RAW_TEXT :\r
+                       return node.contains( v );\r
+               case Node.IS_XHNODE :\r
+                       _node = v._ie4getRawNode ? v._ie4getRawNode() : v._rawNode;\r
+                       if( _node ) return node.contains( _node );\r
+               default :\r
+                       return false;\r
+       };\r
+       if( this._children.indexOf( v ) !== -1 ) return true;\r
+       for( i = 0, l = this._children.length; i < l; ++i ){\r
+               if( ( new Node( this._children[ i ] ) ).contains( v ) === true ) return true\r
+       };\r
+       return false;\r
+};\r
+\r
+/* --------------------------------------\r
+ *  getChild\r
+ */\r
+Node.prototype.getChildAt = function( index ){\r
+       var children = this._children,\r
+               elm, childNodes, child, xnode;\r
+       if( this._type !== 1 || index < 0 ) return;\r
+       if( !children ){\r
+               elm = this._ie4getRawNode ? this._ie4getRawNode() : this._rawNode;\r
+               if( !elm ){\r
+                       if( v === 0 && this.text ){\r
+                               children = this._children = [ this.text ];\r
+                       } else {\r
+                               return;\r
+                       };\r
+               } else {\r
+                       /* DOM level2 */\r
+                       if( childNodes = elm.childNodes ){\r
+                               children = this._children = [];\r
+                               children.push.apply( children, childNodes );\r
+                       } else\r
+                       /* ie4 DOM */\r
+                       if( elm.innerHTML ){\r
+                               children = this._children = Node._ie4getChildNodes( elm );\r
+                       } else {\r
+                               return;\r
+                       };\r
+               };\r
+       };\r
+       if( children.length <= index ) return;\r
+       child = children[ index ];\r
+       if( child.constractor === Node ) return child;\r
+       xnode = new Node( child );\r
+       xnode.parent = this;\r
+       return children[ index ] = xnode;\r
+};\r
+/* --------------------------------------\r
+ *  getByID\r
+ */\r
+/* --------------------------------------\r
+ *  getByTag\r
+ */\r
+Node.prototype.getByTag = function( tag ){\r
+       var parent = this.parent, elm, tags;\r
+       if( !parent || this._type !== -1 ) return;\r
+       if( document.getElementsByTagName ){\r
+               if( !( elm = this._rawNode ) ) return;\r
+               new X.Dom.NodeList( elm.getElementsByTagName( tag ) );\r
+       } else\r
+       if( document.all ){\r
+               if( !( elm = this._ie4getRawNode() ) ) return;\r
+               Node.root.__.reserved === true && Node.root._ie4startUpdate();\r
+               new X.Dom.NodeList( elm.all.tags( tag ) );      \r
+       } else {\r
+               \r
+       };\r
+};\r
+\r
+/* --------------------------------------\r
+ *  getByClass\r
+ */\r
+Node.prototype.getByClass =\r
+               document.getElementsByClassName ?\r
+                       (function( className ){\r
+                               var parent = this.parent, elm;\r
+                               if( !parent ) return;\r
+                               if( !( elm = this._rawNode ) || elm.nodeType !== 1 ) return;\r
+                               return new X.Dom.NodeList( elm.getElementsByClassName( className ) );\r
+                       }) :\r
+               document.getElementsByTagName ?\r
+                       (function( className ){\r
+                               var parent = this.parent, elm;\r
+                               var live  = parent.getElementsByTagName( '*' ),\r
+                                       nodes = [],\r
+                    node, i;\r
+                for( i = live.length; i; ){\r
+                       nodes[ --i ] = live[ i ];\r
+                };\r
+                               for( i = nodes.length; i; ){\r
+                                       node = nodes[ --i ];\r
+                                       ( node.nodeType !== 1 || !node.className || !node.className.length || Node.hasClass( node, className ) === false ) && nodes.splice( i, 1 );\r
+                               };\r
+                               return new X.Dom.NodeList( nodes );\r
+                       }) :\r
+               document.all ?\r
+                       (function( parent, className ){\r
+                               var live  = parent.all,\r
+                                       nodes = [],\r
+                    node, i;\r
+                for( i = live.length; i; ){\r
+                       nodes[ --i ] = live[ i ];\r
+                };\r
+                               for( i = nodes.length; i; ){\r
+                                       node = nodes[ --i ];\r
+                                       ( !node.className || !node.className.length || Node.hasClass( node, className ) === false ) && nodes.splice( i, 1 );\r
+                               };\r
+                               return new X.Dom.NodeList( nodes );\r
+                       }) :\r
+                       (function(){}),\r
+\r
+// listen, unlisten, listening\r
+\r
+/* --------------------------------------\r
+ *  prevNode, nextNode, firstChild, lastChild\r
+ */\r
+\r
+Node.prototype.prevNode = function(){\r
+       var parent = this.parent, index;\r
+       if( !parent ) return;\r
+       index = parent.children.indexOf( this );\r
+       if( 0 < index ) new Node( parent.children[ index - 1 ] );\r
+};\r
+Node.prototype.nextNode = function(){\r
+       var parent = this.parent, children, index;\r
+       if( !parent ) return;\r
+       children = parent.children;\r
+       index    = children.indexOf( this );\r
+       if( index < children.length ) new Node( children[ index + 1 ] );\r
+};\r
+Node.prototype.firstChild = function(){\r
+       return this.getChildAt( 0 );\r
+};\r
+Node.prototype.lastChild = function(){\r
+       return this.getChildAt( this._children.length - 1 );\r
+};\r
+\r
+/* --------------------------------------\r
+ *  getOrder\r
+ */\r
+Node.prototype.getOrder = function(){\r
+       var parent = this.parent;\r
+       if( !parent ) return -1;\r
+       return parent.children.indexOf( this );\r
+};\r
+\r
+/* --------------------------------------\r
+ *  className, cssText, cssObject\r
+ */\r
+\r
+\r
+/* --------------------------------------\r
+ *  attribute\r
+ */\r
+\r
+\r
+/* --------------------------------------\r
+ *  Width, Height\r
+ */\r
+Node.prototype.width = function(){\r
+       var parent = this.parent, elm;\r
+       if( !parent ) return 0;\r
+       if( document.getElementById ){\r
+               return ( elm = this._rawNode ) ? elm.offsetWidth : 0;\r
+       } else\r
+       if( document.all ){\r
+               if( !( elm = this._ie4getRawNode() ) ) return 0;\r
+               Node.root.__.reserved === true && Node.root._ie4startUpdate();\r
+               return elm.offsetWidth;         \r
+       } else {\r
+               \r
+       };\r
+};\r
+\r
+Node.prototype.height = function(){\r
+       var parent = this.parent, elm;\r
+       if( !parent ) return 0;\r
+       if( document.getElementById ){\r
+               return ( elm = this._rawNode ) ? elm.offsetHeight : 0;\r
+       } else\r
+       if( document.all ){\r
+               if( !( elm = this._ie4getRawNode() ) ) return 0;\r
+               Node.root.__.reserved === true && Node.root._ie4startUpdate();\r
+               return elm.offsetHeight;                \r
+       } else {\r
+               \r
+       };\r
+};\r
+\r
+/* --------------------------------------\r
+ *  Content Width, Content Height\r
+ */\r
+\r
+\r
+X.Dom.Event.add( window, 'load', function(){\r
+       var r = Node.root = new Node( document.body );\r
+       r.appendTo = r.appendToRoot = r.before = r.after = r.clone = r.remove = r.destroy = r.prevNode = r.nextNode = new Function();\r
+       r = null;\r
+       return X.Callback.UN_LISTEN;\r
+} );
\ No newline at end of file
diff --git a/0.6.x/js/dom/15_XDomNodeList.js b/0.6.x/js/dom/15_XDomNodeList.js
new file mode 100644 (file)
index 0000000..4a21283
--- /dev/null
@@ -0,0 +1,48 @@
+\r
+X.Dom.NodeList = function( v ){\r
+       var args = [],\r
+               l    = arguments.length,\r
+               i    = 0,\r
+               indexOf, xhn;\r
+       for( ; i < l; ++i ){\r
+               args.push.apply( args, arguments[ i ] );\r
+       };\r
+       if( ( l = args.length ) === 1 ) return new X.Dom.Node( args[ 0 ] );\r
+       if( !this || this.append !== Node.prototype.append ) return new X.Dom.NodeList( args );\r
+       \r
+       this.__ = { type : 2 };\r
+       indexOf = Array.prototype.indexOf;\r
+       for( i = 0; i < l; ++i ){\r
+               xhn = new X.Dom.Node( args[ i ] );\r
+               if( xhn.type !== 0 && indexOf.call( this, xhn ) === -1 ){\r
+                       this[ this.length ] = xhn;\r
+                       ++this.length;\r
+               };\r
+       };\r
+};\r
+X.Dom.NodeList.prototype.length = 0;\r
+\r
+/* --------------------------------------\r
+ *  Fuction Base, multi, getter, setter,\r
+ */\r
+(function(){\r
+       var target = X.Dom.NodeList.prototype,\r
+               src    = X.Dom.Node.prototype,\r
+               p, v, multi;\r
+               \r
+       for( p in src ){\r
+               v = src[ p ];\r
+               if( typeof v === 'funciton' && !target[ p ] ){\r
+                       target[ p ] = multi = new Function( [\r
+                               'function functionBase(){',\r
+                                       'var a=arguments,s=a.callee,f=s.f,t=this,i,l=t.length;',\r
+                                       'if(0<l){',\r
+                                               'for(i=0;i<l;++i)if(i===l-1)return f.apply(t[i],a)else f.apply(t[i],a);',\r
+                                       '}',\r
+                                       'return f.apply(t,a)',\r
+                               '}'                     \r
+                       ].join( '' ));\r
+                       multi.f = src[ p ];\r
+               };\r
+       };\r
+})();\r
diff --git a/0.6.x/js/dom/16_XDomQuery.js b/0.6.x/js/dom/16_XDomQuery.js
new file mode 100644 (file)
index 0000000..d684ab9
--- /dev/null
@@ -0,0 +1,170 @@
+X.Dom.find = function( v ){
+       var selectors = parser( v ),
+               l, i, nodes, _nodes, selector,
+               name, key, operator, value,
+               j, m;
+       
+       if( !selectors ) return;
+       l     = selectors.length;
+       i     = 0;
+       nodes = [];
+       
+       for( ; i < l; ++i ){
+               selector = selectors[ i ];
+               if( 2 <= selector.length ){
+                       operator = selector[ 2 ];
+                       value    = selector[ 3 ];
+                       name     = key = selector[ 1 ];
+                       selector = selector[ 0 ];
+               };
+               switch( selector ){
+                       case 4 : // # id
+                               nodes = [ X.Dom.getById( name ) ];
+                               break;
+                       case 5 : // . classname
+                               _nodes = [];
+                               for( j = 0, m = nodes.length; j < m; ++j ){
+                                       _nodes = _nodes.concat( nodes[ j ].getByClass( name ) );
+                               };
+                               nodes = _nodes;
+                               break;
+                       case 6 : // :focus, :disabled ...
+                               switch( name ){
+                                       case 'focus' :
+                                       case 'disabled' :
+                                       case 'checked' :
+                                       case 'enabled' :
+                                       case 'empty' :
+                                       case 'only-of-type' :
+                                       case '' :
+                                       case 'target' :
+                                       case 'link' :
+                                       case 'visited' :
+                                       case 'hover' :
+                                       case 'active' :
+                                       case 'first-line' :
+                                       case 'first-letter' :
+                                       case 'before' :
+                                       case 'after' :
+                                       case ':selection' :
+                                       case 'lang()' :
+                                       case 'not()' :
+                               };
+                               break;
+                       case 7 : // [
+                               
+                               break;  
+                       case 8 : // . tagname
+                               _nodes = [];
+                               for( j = 0, m = nodes.length ; j < m; ++j ){
+                                       _nodes = _nodes.concat( nodes[ j ].getByTag( name ) );
+                               };
+                               nodes = _nodes;
+                               break;
+               };
+       };
+       return new X.Dom.NodeList( nodes );
+};
+
+
+HASH_SELECTOR = {
+       ' '   : 0,
+       '>'   : 1,
+       '+'   : 2,
+       '~'   : 3,
+       '#'   : 4,
+       '.'   : 5,
+       ':'   : 6,
+       '['   : 7,
+       scope : 9,
+       root  : 10,
+       link  : 11
+};
+OPERATORS = { "!=": 2, "~=": 3, "^=": 4, "$=": 5, "*=": 6, "|=": 7 };
+ALPHABET  = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-0123456789\\';
+
+function parser( query ){
+       query += ' ';
+       var result    = [],
+               i         = 0,
+               l         = query.length,
+               phase     = 0,
+               selector  = -1,
+               last      = 0,
+               chr, index, start, name, key, value, operator, nameChr, name1st, escape;
+       while( i < l ){
+               chr     = query.charAt( i );
+               index   = ALPHABET.indexOf( chr );
+               nameChr = index !== -1;
+               name1st = nameChr && index < 52;
+               switch( phase ){
+                       case 99 :
+                               return;
+                       case 0 :
+                               name1st ? // tagName
+                                       ( ( selector = 8 ) && ( phase = 2 ) && ( start = i ) ) :
+                               ( index = HASH_SELECTOR.indexOf( chr ) ) === 7 ? // [
+                                       ( ( selector = 7 ) && ( phase = 3 ) ) :
+                               0 <= index ?
+                                       ( ( selector = index ) && ( phase = index < 4 ? 9 : 1 ) ) :
+                               chr !== ' ' &&
+                                       ( phase = 99 );
+                               break;
+                       case 1 :
+                               name1st ?
+                                       ( ( start = i ) && ( phase = 2 ) ) :
+                                       ( phase = 99 );
+                               break;
+                       case 2 :
+                               !nameChr &&
+                               !( escape && ( selector === 4 || selector === 5 ) &&  ( chr === ':' || chr === '.' ) ) // id or class の場合 : . を直前にエスケープした場合に限り使える
+                                       && ( name = query.substring( start, i ) ) && ( phase = 9 );
+                               break;
+                       case 3 : // start attr filter
+                               name1st ?
+                                       ( ( phase = 4 ) && ( start = i ) ) :
+                                       ( phase = 99 );
+                               break;
+                       case 4 : // attr filter key
+                               chr === '=' ?
+                                       ( ( operator = 1 ) && ( phase = 5 ) && ( key = query.substring( start, i ) ) && ( start = i ) ) :
+                               ( index = OPERATORS[ query.substr( i, 2 ) ] ) ?
+                                       ( ( operator = index ) && ( phase = 5 ) && ( key = query.substring( start, i ) )  && ( start = i ) && ++i ) :
+                               chr !== ' ' &&
+                                       ( phase = 99 );
+                               break;
+                       case 5 : // attr filter value
+                               chr === ']' ?
+                                       ( ( phase = 9 ) && ( value = query.substring( start, i ) ) ) :
+                               !nameChr &&
+                                       ( phase = 99 );
+                               break;
+                       default :
+               };
+               //alert( chr + ' ' + phase + ' ' + selector + ' ' + name + ' ' + name1st )
+               if( phase === 9 ){
+                       if( last < 4 && selector < 4 ){
+                               if( last === 0 ){
+                                       result[ result.length - 1 ] = selector; // override
+                                       last = selector;
+                               } else {
+                                       return; // error
+                               };
+                       } else { // 前回今回とも子孫セレクタの場合、保存しない
+                               result[ result.length ] =
+                                       selector < 4 ?
+                                               selector :
+                                       selector === 7 ?
+                                               [ selector, key, operator, value ] :
+                                               [ selector, name.split( '\\' ).join( '' ) ];
+                               last = selector;
+                       };
+                       selector = -1;
+                       phase    = 0;
+               } else
+               if( phase === 99 ) return;
+
+               escape = chr === '\\' && !escape;
+       };
+       return result;
+};
\ No newline at end of file
similarity index 86%
rename from 0.6.x/js/core/14_XView.js
rename to 0.6.x/js/dom/17_XView.js
index b87f83f..bcf408e 100644 (file)
@@ -56,7 +56,7 @@ if( window.navigator.msPointerEnabled ){
        X.View.Event.NameToID[ 'MSPointerUp'   ] = X.View.Event.POINTER_END;\r
        X.View.Event.NameToID[ 'MSPointerMove' ] = X.View.Event.POINTER_MOVE;\r
 } else\r
-if( 'ontouchstart' in window || window.DocumentTouch && document instanceof DocumentTouch ){\r
+if( window.ontouchstart || window.DocumentTouch /* && document instanceof DocumentTouch */ ){\r
        X.View.Event.IdToName[ X.View.Event.POINTER_START ] = 'touchstart';\r
        X.View.Event.IdToName[ X.View.Event.POINTER_END   ] = 'touchend';\r
        X.View.Event.IdToName[ X.View.Event.POINTER_MOVE  ] = 'touchmove';\r
@@ -73,8 +73,7 @@ if( 'ontouchstart' in window || window.DocumentTouch && document instanceof Docu
 };\r
 \r
 X.View = (function( window, document ){\r
-       var view = X.UA.IE ?\r
-               ( document.compatMode !== "CSS1Compat" ? document.body : document.documentElement ) : window,\r
+       var view,\r
                lock = 0, w = 0, h = 0,\r
                resize, delayResize;\r
 \r
@@ -113,18 +112,10 @@ X.View = (function( window, document ){
                };\r
        };\r
        \r
-       X.View = X.Class._override( new X.EventDispatcher(),\r
+       X.View = X.Class._override(\r
+               new X.EventDispatcher(),\r
                {\r
                        ready : false,\r
-                       _view : view,\r
-                       getSize : ( view.innerWidth ?\r
-                               ( function(){\r
-                                       return [ view.innerWidth, view.innerHeight ];\r
-                               }) :\r
-                               ( function(){\r
-                                       return [ view.clientWidth, view.clientHeight ];\r
-                               })\r
-                       ),\r
                        getPointerPosition : function(){\r
                                \r
                        },\r
@@ -149,7 +140,7 @@ X.View = (function( window, document ){
                        Event : X.View.Event\r
                }\r
        );\r
-               \r
+       \r
        X.View.listenOnce( X.View.Event.SYS_READY, function(){\r
                var b, x;\r
                if( X.UA.IE && X.UA.IE < 9 ){\r
@@ -160,23 +151,33 @@ X.View = (function( window, document ){
                        b.className += [ b.className === '' ? '' : ' ', 'ActiveX-', 1 < x.offsetHeight ? 'enabled' : 'disabled' ].join( '' );\r
                        b.removeChild( x );\r
                } else {\r
-                       X.DomEvent.add( window, 'resize', resize );\r
+                       X.Dom.Event.add( window, 'resize', resize );\r
                };\r
+               \r
+               view = X.UA.IE ? ( document.compatMode !== "CSS1Compat" ? ( b || document.body ) : document.documentElement ) : window;\r
+               \r
+               X.View._view = view,\r
+               X.View.getSize = view.innerWidth ?\r
+                       ( function(){\r
+                               return [ view.innerWidth, view.innerHeight ];\r
+                       }) :\r
+                       ( function(){\r
+                               return [ view.clientWidth, view.clientHeight ];\r
+                       });\r
        });\r
                \r
        return X.View;\r
 })( window, document );\r
 \r
-\r
 /* -----------------------------------------------\r
  * Document Ready\r
  *  Dean Edwards/Matthias Miller/John Resig\r
  */\r
 /* for ie9+/Mozilla/Opera9 */\r
 if( document.addEventListener ){\r
-       X.DomEvent.add( document, 'DOMContentLoaded', X.View._init );\r
+       X.Dom.Event.add( document, 'DOMContentLoaded', X.View._init );\r
 } else\r
-if( 4 < X.UA.IE ){\r
+if( 5 <= X.UA.IE ){\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
@@ -192,9 +193,10 @@ if( X.UA.WebKit ){ // sniff
 };\r
 \r
 /* for other browsers */\r
-X.DomEvent.add( window, 'load', X.View._init );\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 ) } );\r
+\r
similarity index 92%
rename from 0.6.x/js/JU/AbstractDisplayContainer.js
rename to 0.6.x/js/ui/AbstractDisplayContainer.js
index 08bd76c..988d868 100644 (file)
@@ -7,7 +7,7 @@ var _AbstractDisplayContainer = _AbstractDisplayNode.inherits(
                forContainer  : false,\r
                tmpCss        : null,\r
                Constructor : function( layout, args ){\r
-                       if( !( this.User instanceof AbstractDisplayContainer ) ){\r
+                       if( !( this.User.instanceOf( AbstractDisplayContainer ) ) ){\r
                                throw new Error( 'AbstractDisplayContainer を継承したインスタンスだけが _AbstractDisplayContainer のオーナーになれます' );\r
                        };\r
                        var i     = 0,\r
@@ -16,14 +16,14 @@ var _AbstractDisplayContainer = _AbstractDisplayNode.inherits(
                                arg, _data;\r
                        for( ; i < l; ++i ){\r
                                arg = args[ i ];\r
-                               if( arg instanceof AbstractDisplayNode ){\r
+                               if( arg.instanceOf && arg.instanceOf( AbstractDisplayNode ) ){\r
                                        _data = X.Class._getPrivate( arg );\r
                                        nodes[ nodes.length ] = _data;\r
                                        if( _data.parent ){\r
                                                throw new Error( 'インスタンスはすでに親に追加されています ' + arg );\r
                                        };\r
                                } else\r
-                               if( arg instanceof LayoutManagerBase ){\r
+                               if( arg.instanceOf && arg.instanceOf( LayoutManagerBase ) ){\r
                                        layout = arg;\r
                                } else\r
                                if( X.Type.isObject( arg ) === true ){\r
@@ -208,7 +208,7 @@ var AbstractDisplayContainer = AbstractDisplayNode.inherits(
                        if( !nodes || nodes.length === 0 ) return ret;\r
                        for( i = 0, l = nodes.length; i < l; ++i ){\r
                                node = nodes[ i ].User;\r
-                               if( node instanceof klass ) ret[ ret.length ] = node;\r
+                               if( node.instanceOf( klass ) ) ret[ ret.length ] = node;\r
                        };\r
                        return ret;\r
                },\r
similarity index 96%
rename from 0.6.x/js/JU/AbstractDisplayNode.js
rename to 0.6.x/js/ui/AbstractDisplayNode.js
index 79566e5..6413cec 100644 (file)
@@ -674,7 +674,7 @@ var AbstractDisplayNode = X.EventDispatcher.inherits(
                                        ++counter[ type ];\r
                                } else {\r
                                        counter[ type ] = 1;\r
-                                       X.DomEvent.add( root.elmMouseCatch, X.View.Event.IdToName[ type ], eventRellay );                                       \r
+                                       X.Dom.Event.add( root.elmMouseCatch, X.View.Event.IdToName[ type ], eventRellay );                                      \r
                                };\r
                        };\r
                        return X.EventDispatcher.prototype.listen.apply( this, arguments );\r
@@ -699,7 +699,7 @@ var AbstractDisplayNode = X.EventDispatcher.inherits(
                                if( !counter[ type ] ) return this;\r
                                --counter[ type ];\r
                                if( counter[ type ] === 0 ){\r
-                                       X.DomEvent.remove( root.elmMouseCatch, X.View.Event.IdToName[ type ], eventRellay );\r
+                                       X.Dom.Event.remove( root.elmMouseCatch, X.View.Event.IdToName[ type ], eventRellay );\r
                                        delete counter[ type ];\r
                                };\r
                        };\r
similarity index 89%
rename from 0.6.x/js/JU/Box.js
rename to 0.6.x/js/ui/Box.js
index 4b6360c..e7dc4ac 100644 (file)
@@ -17,7 +17,7 @@ var BasicLayoutManager = ( new LayoutManagerBase() ).define( {
                        i = 0, l = nodes.length, node;\r
                for( ; i < l; ++i ){\r
                        node = nodes[ i ];\r
-                       if( node instanceof _AbstractDisplayContainer ){\r
+                       if( node.instanceOf( _AbstractDisplayContainer ) ){\r
                                node.calculate( x, y, w, h );\r
                        } else {\r
                                //node.styleData.layout( x, y, w, h );\r
similarity index 89%
rename from 0.6.x/js/JU/HBox.js
rename to 0.6.x/js/ui/HBox.js
index 7ae9995..b39baa1 100644 (file)
@@ -30,7 +30,7 @@ var HorizontalLayoutManager = ( new LayoutManagerBase() ).define( {
                if( childW || childW === 0 ){\r
                        for( ; i < l; ++i ){\r
                                node = nodes[ i ];\r
-                               if( node instanceof _AbstractDisplayContainer ){\r
+                               if( node.instanceOf( _AbstractDisplayContainer ) ){\r
                                        node.calculate( _x, NaN, childW, childH );\r
                                } else {\r
                                        node.styleData.layout( _x, NaN, childW, childH );\r
@@ -40,7 +40,7 @@ var HorizontalLayoutManager = ( new LayoutManagerBase() ).define( {
                } else {\r
                        for( ; i < l; ++i ){\r
                                node = nodes[ i ];\r
-                               if( node instanceof _AbstractDisplayContainer ){\r
+                               if( node.instanceOf( _AbstractDisplayContainer ) ){\r
                                        node.calculate( _x, NaN, NaN, childH );\r
                                } else {\r
                                        node.styleData.layout( _x, NaN, NaN, childH );\r
similarity index 97%
rename from 0.6.x/js/JU/LayoutManagerBase.js
rename to 0.6.x/js/ui/LayoutManagerBase.js
index be56af2..ef134c9 100644 (file)
@@ -35,7 +35,7 @@ var LayoutManagerBase = X.Class.create(
                                        } else {
                                                t = r = b = l = 0;
                                        };
-                                       if( child instanceof LayoutBoxPrivate ){
+                                       if( child.instanceOf( LayoutBoxPrivate ) ){
                                                child.layoutManager.reflow( child, contentW - r - l, contentH - t - b );
                                        } else {
                                                child.preMesure( contentW - r - l, contentH - t - b );
similarity index 95%
rename from 0.6.x/js/JU/PageRoot.js
rename to 0.6.x/js/ui/PageRoot.js
index f7b7932..8d7889e 100644 (file)
@@ -104,7 +104,7 @@ var _PageRoot = _AbstractDisplayContainer.inherits(
                        // hover や rollover rollout のための move イベントの追加
                        // X.View.activate, X.View.deactivate ?
                        // mouseout, mouseover
-                       X.DomEvent.add( elm, X.View.Event.IdToName[ X.View.Event.POINTER_MOVE ], eventRellay );
+                       X.Dom.Event.add( elm, X.View.Event.IdToName[ X.View.Event.POINTER_MOVE ], eventRellay );
                        if( counter[ X.View.Event.POINTER_MOVE ] ){
                                ++counter[ X.View.Event.POINTER_MOVE ];
                        } else {
@@ -148,7 +148,7 @@ var _PageRoot = _AbstractDisplayContainer.inherits(
                },
                
                beforeRemove : function(){
-                       X.DomEvent.remove( this.elmMouseCatch, X.View.Event.IdToName[ X.View.Event.POINTER_MOVE ], eventRellay );
+                       X.Dom.Event.remove( this.elmMouseCatch, X.View.Event.IdToName[ X.View.Event.POINTER_MOVE ], eventRellay );
                }
        }
 );
similarity index 91%
rename from 0.6.x/js/JU/Text.js
rename to 0.6.x/js/ui/Text.js
index f7e7df2..70b7fa6 100644 (file)
@@ -4,7 +4,7 @@ var _Text = _AbstractDisplayNode.inherits(
        {\r
                content    : null,\r
                Constructor : function( content ){\r
-                       if( !( this.User instanceof Text ) ){\r
+                       if( !( this.User.instanceOf( Text ) ) ){\r
                                throw new Error( 'Text を継承したインスタンスだけが _Text のオーナーになれます' );\r
                        };\r
                        this.content   = content;\r
similarity index 91%
rename from 0.6.x/js/JU/TileBox.js
rename to 0.6.x/js/ui/TileBox.js
index 0015555..0454404 100644 (file)
@@ -30,7 +30,7 @@ var TileLayoutManager = ( new LayoutManagerBase() ).define( {
                };\r
                for( ; i < l; ++i ){\r
                        node = nodes[ i ];\r
-                       if( node instanceof _AbstractDisplayContainer ){\r
+                       if( node.instanceOf( _AbstractDisplayContainer ) ){\r
                                node.calculate( _x, _y, childW, childH );\r
                        } else {\r
                                node.styleData.layout( _x, _y, childW, childH );\r
similarity index 89%
rename from 0.6.x/js/JU/VBox.js
rename to 0.6.x/js/ui/VBox.js
index f44d3ed..28f3b9b 100644 (file)
@@ -31,7 +31,7 @@ var VerticalLayoutManager = ( new LayoutManagerBase() ).define( {
                if( childH || childH === 0 ){\r
                        for( ; i < l; ++i ){\r
                                node = nodes[ i ];\r
-                               if( node instanceof _AbstractDisplayContainer ){\r
+                               if( node.instanceOf( _AbstractDisplayContainer ) ){\r
                                        node.calculate( 0, _y, w - x, childH );\r
                                } else {\r
                                        node.styleData.layout( 0, _y, w - x, childH );\r
@@ -41,7 +41,7 @@ var VerticalLayoutManager = ( new LayoutManagerBase() ).define( {
                } else {\r
                        for( ; i < l; ++i ){\r
                                node = nodes[ i ];\r
-                               if( node instanceof _AbstractDisplayContainer ){\r
+                               if( node.instanceOf( _AbstractDisplayContainer ) ){\r
                                        node.calculate( 0, _y, w - x );\r
                                } else {\r
                                        node.styleData.layout( 0, _y, w - x );\r