OSDN Git Service

Version 0.6.134, add comments for closure compiler.
authoritozyun <itozyun@user.sourceforge.jp>
Tue, 24 Mar 2015 08:06:27 +0000 (17:06 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Tue, 24 Mar 2015 08:06:27 +0000 (17:06 +0900)
48 files changed:
0.6.x/js/01_core/00_builtin.js
0.6.x/js/01_core/01_X.js
0.6.x/js/01_core/02_XUA.js
0.6.x/js/01_core/04_XObject.js
0.6.x/js/01_core/05_XString.js
0.6.x/js/01_core/06_XURL.js
0.6.x/js/01_core/10_XCallback.js
0.6.x/js/01_core/11_XClass.js
0.6.x/js/01_core/12_XEvent.js
0.6.x/js/01_core/13_XEventDispatcher.js
0.6.x/js/01_core/14_XTimer.js
0.6.x/js/01_core/15_XSystem.js
0.6.x/js/01_core/16_XViewPort.js
0.6.x/js/01_core/17_XLogger.js
0.6.x/js/02_dom/00_XDoc.js
0.6.x/js/02_dom/01_XDTD.js
0.6.x/js/02_dom/02_XNode.js
0.6.x/js/02_dom/03_XDomEvent.js
0.6.x/js/02_dom/04_XBoxModel.js
0.6.x/js/02_dom/05_XNodeAttr.js
0.6.x/js/02_dom/06_XNodeCSS.js
0.6.x/js/02_dom/07_XNodeList.js
0.6.x/js/02_dom/08_XNodeSelector.js
0.6.x/js/02_dom/09_XHTMLParser.js
0.6.x/js/02_dom/10_XNodeAnime.js
0.6.x/js/02_dom/22_XTreeBuilder.js
0.6.x/js/03_plugin/00_XPlugin.js
0.6.x/js/05_util/00_XUtil.js
0.6.x/js/05_util/01_XNinjaIframe.js
0.6.x/js/05_util/03_XUtilImage.js
0.6.x/js/06_net/00_XNet.js
0.6.x/js/06_net/01_XNetXHR.js
0.6.x/js/06_net/02_XNetJSONP.js
0.6.x/js/06_net/04_XNetImage.js
0.6.x/js/07_audio/00_XAudio.js
0.6.x/js/07_audio/01_XWebAudio.js
0.6.x/js/07_audio/02_XHTMLAudio.js
0.6.x/js/07_audio/03_XSilverlightAudio.js
0.6.x/js/07_audio/10_XAudioSprite.js
0.6.x/js/20_ui/00_XUI.js
0.6.x/js/20_ui/02_XUI_Attr.js
0.6.x/js/20_ui/05_XUI_Gesture.js
0.6.x/js/20_ui/06_AbstractUINode.js
0.6.x/js/20_ui/08_Box.js
0.6.x/js/20_ui/14_ChromeBox.js
0.6.x/js/20_ui/15_ScrollBox.js
0.6.x/js/20_ui/17_Text.js
0.6.x/js/20_ui/20_PageRoot.js

index ba646f8..8a8f073 100644 (file)
  */\r
 \r
 Function.prototype.apply || (Function.prototype.apply = function (x, y) {\r
-       var a, i, r, j;\r
+       var apply = '__apply',\r
+               a, i, r, j;\r
+\r
        x = x || window;\r
        y = y || [];\r
        \r
        // apply 内で apply を呼んだ場合に備える\r
        if( x === window ){\r
-               x.__apply = void 0;\r
+               x[ apply ] = void 0;\r
        } else {\r
-               if( x.constructor && x.constructor.prototype.__apply ){\r
-                       delete x.constructor.prototype.__apply;\r
+               if( x.constructor && x.constructor.prototype[ apply ] ){\r
+                       delete x.constructor.prototype[ apply ];\r
                } else\r
-               if( x.__apply ) delete x.__apply;\r
+               if( x[ apply ] ) delete x[ apply ];\r
        };\r
        \r
-       x.__apply = this;\r
-       if (!x.__apply) x.constructor.prototype.__apply = this;\r
+       x[ apply ] = this;\r
+       if (!x[ apply ]) x.constructor.prototype[ apply ] = this;\r
        j = y.length;\r
        switch (j) {\r
-               case 0: r = x.__apply(); break;\r
-               case 1: r = x.__apply(y[0]); break;\r
-               case 2: r = x.__apply(y[0], y[1]); break;\r
-               case 3: r = x.__apply(y[0], y[1], y[2]); break;\r
-               case 4: r = x.__apply(y[0], y[1], y[2], y[3]); break;\r
-               case 5: r = x.__apply(y[0], y[1], y[2], y[3], y[4]); break;\r
-               case 6: r = x.__apply(y[0], y[1], y[2], y[3], y[4], y[5]); break;\r
-               case 7: r = x.__apply(y[0], y[1], y[2], y[3], y[4], y[5], y[6]); break;\r
-               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
+               case 0: r = x[ apply ](); break;\r
+               case 1: r = x[ apply ](y[0]); break;\r
+               case 2: r = x[ apply ](y[0], y[1]); break;\r
+               case 3: r = x[ apply ](y[0], y[1], y[2]); break;\r
+               case 4: r = x[ apply ](y[0], y[1], y[2], y[3]); break;\r
+               case 5: r = x[ apply ](y[0], y[1], y[2], y[3], y[4]); break;\r
+               case 6: r = x[ apply ](y[0], y[1], y[2], y[3], y[4], y[5]); break;\r
+               case 7: r = x[ apply ](y[0], y[1], y[2], y[3], y[4], y[5], y[6]); break;\r
+               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
                        a = [];\r
                        for (i = 0; i < j; ++i)\r
@@ -49,13 +51,13 @@ Function.prototype.apply || (Function.prototype.apply = function (x, y) {
        };\r
        // ie5\r
        if( x === window ){\r
-               x.__apply = void 0;\r
+               x[ apply ] = void 0;\r
        } else {\r
                //alert( typeof x );\r
-               if( x.constructor && x.constructor.prototype.__apply ){\r
-                       delete x.constructor.prototype.__apply;\r
+               if( x.constructor && x.constructor.prototype[ apply ] ){\r
+                       delete x.constructor.prototype[ apply ];\r
                } else\r
-               if( x.__apply ) delete x.__apply;\r
+               if( x[ apply ] ) delete x[ apply ];\r
        };\r
        return r;\r
 });\r
index 28c783c..5b76024 100644 (file)
@@ -1,3 +1,4 @@
+\r
 /**\r
  * <h4>はじめに:Web 開発の世界へようこそ!</h4>\r
  * DHTML と XHR 等を活用した Ajax によってその真価を発揮した javascript は、現在では RIA に SPA や 3D ゲームなど、あらゆるアプリケーションがブラウザ上で動きつつあります。\r
  * \r
  * @example // ライブラリは X という名前空間を使用します。\r
  * //ショートハンド\r
- * X( func ) == X.ViewPort.listenOnce(X.Event.XDOM_READY, func);\r
+ * X( func ) == X.ViewPort[ 'listenOnce' ](X.Event.XDOM_READY, func);\r
  * X('#mydiv') == X.Doc.find('#mydiv');\r
  * @namespace X\r
- */ \r
+ */\r
 function X( v ){\r
        if( X_Type_isFunction( v ) ){\r
-               X.ViewPort.listenOnce( X_Event[ 'XDOM_READY' ], v );\r
+               X[ 'ViewPort' ][ 'listenOnce' ]( X_EVENT_XDOM_READY, v );\r
        } else\r
        if( X_shortcutFunction ){\r
                return X_shortcutFunction.apply( X_shortcutContext || X, arguments );\r
@@ -76,30 +77,31 @@ if( !window['console'] || ( window.parent && window.parent.log ) )
 var undefined,\r
        X_EMPTY_OBJECT = {},\r
        X_TEMP = { onSystemReady : [] },\r
+       X_emptyFunction = new Function,\r
        X_shortcutFunction,\r
        X_shortcutContext;\r
 \r
 /**\r
  * バージョン文字列:"0.6.123"\r
  * @type {string} */\r
-X.VERSION = '0.6.127';\r
+X[ 'VERSION' ] = '0.6.127';\r
 \r
 /**\r
  * ブートタイム ms\r
  * @type {number} */\r
-X.bootTime = + new Date;\r
+X[ 'bootTime' ] = + new Date;\r
 \r
 /**\r
  * 空の関数\r
  * @type {Function} */\r
-X.emptyFunction = new Function;\r
+X[ 'emptyFunction' ] = X_emptyFunction;\r
 \r
 /**\r
  * このscriptはheadタグの中にあるか?\r
  *  @type {boolean} */\r
 // TODO defer の場合もあるので、document.readyState を見る\r
 // MacIE で false\r
-X.inHead = (function( s ){\r
+X[ 'inHead' ] = (function( s ){\r
        if( !s ) return false;\r
        if( !s.length ) return false; // Safari1.3 312.8 でerror\r
        s = s[ s.length - 1 ];\r
index 7ccefca..ecdbe23 100644 (file)
  */\r
 var X_UA = X[ 'UA' ] = {};\r
 \r
-(function( n ){\r
-       var dua  = n.userAgent,\r
-               dav  = n.appVersion,\r
+(function(){\r
+       var dua  = navigator.userAgent,\r
+               dav  = navigator.appVersion,\r
                tv   = parseFloat(dav),\r
-               sys  = n.platform,\r
+               sys  = navigator.platform,\r
                tridentToVer, i, j, v;\r
                \r
        console.log( ' userAgent  : ' + dua );\r
@@ -63,43 +63,58 @@ var X_UA = X[ 'UA' ] = {};
                         */\r
                        X_UA[ 'iPhone' ]  = true;\r
                        if( v ){\r
-                       /** iPhone4s以下\r
-                        * @memberof X.UA */\r
+                               /**\r
+                                * iPhone4s以下\r
+                                * @alias X.UA.iPhone_4s\r
+                                * @type {boolean}\r
+                                */\r
                                X_UA[ 'iPhone_4s' ]  = true;\r
                        };\r
                        if( v && i ){\r
-                       /**\r
-                        * iPhone3GS以下\r
-                        * @alias X.UA.iPhone_3GS\r
-                        * @type {boolean}\r
-                        */\r
+                               /**\r
+                                * iPhone3GS以下\r
+                                * @alias X.UA.iPhone_3GS\r
+                                * @type {boolean}\r
+                                */\r
                                X_UA[ 'iPhone_3GS' ]  = true;\r
                        };\r
                        //alert( 'iPhone ' + ( X_UA[ 'iPhone_3GS' ]  ? '3GS以下' : X_UA[ 'iPhone_4s' ]  ? '4s以下' : '5以上' ) );\r
                };\r
                if( sys === 'iPad' ){\r
-                       /** @memberof X.UA */\r
+                       /**\r
+                        * @alias X.UA.iPad\r
+                        * @type {boolean}\r
+                        */\r
                        X_UA[ 'iPad' ]    = true;\r
                        if( i ){\r
                                /**\r
                                 * iPad2以下または初代iPad mini 以下\r
-                                * @memberof X.UA */\r
+                                * @alias X.UA.iPad_2Mini1\r
+                                * @type {boolean}\r
+                                */\r
                                X_UA[ 'iPad_2Mini1' ]  = true;\r
                        };\r
                };\r
                if( sys === 'iPod' ){\r
-                       /** @memberof X.UA */\r
+                       /**\r
+                        * @alias X.UA.iPod\r
+                        * @type {boolean}\r
+                        */\r
                        X_UA[ 'iPod' ]    = true;\r
                        if( v && i ){\r
                                /**\r
                                 * iPod3以下\r
-                                * @memberof X.UA */\r
+                                * @alias X.UA.iPod_3\r
+                                * @type {boolean}\r
+                                */\r
                                X_UA[ 'iPod_3' ]  = true;\r
                        };\r
                        if( v ){\r
                                /**\r
                                 * iPod4以下\r
-                                * @memberof X.UA */\r
+                                * @alias X.UA.iPod_4\r
+                                * @type {boolean}\r
+                                */\r
                                X_UA[ 'iPod_4' ]  = true;\r
                        };\r
                        //alert( 'iPod touch ' + ( X_UA[ 'iPod_3' ]  ? '3以下' : X_UA[ 'iPod_4' ] ? '4以下' : '5以上' ) );\r
@@ -108,82 +123,135 @@ var X_UA = X[ 'UA' ] = {};
                console.log( '>> iOS : ' + X_UA[ 'iOS' ]  );\r
        } else\r
        if( dua.indexOf( 'hp-tablet' ) !== -1 || dua.indexOf( 'webOS' ) !== -1 ){\r
-               // http://user-agent-string.info/list-of-ua/os-detail?os=webOS\r
-               /** @memberof X.UA */\r
+               /**\r
+                * http://user-agent-string.info/list-of-ua/os-detail?os=webOS\r
+                * @alias X.UA.webOS\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'webOS' ]  = true; // webOS\r
        } else\r
        if( sys.indexOf( 'Win' ) + 1 ){\r
                console.log( 'Win' );\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.Windows\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'Windows' ]  = true;\r
                switch( sys ){\r
                        case 'Win16' :\r
                        case 'Win32' :\r
                        case 'Win64' :\r
                        case 'WinCE' :\r
+                               /**\r
+                                * @alias X.UA.Win16\r
+                                * @alias X.UA.Win32\r
+                                * @alias X.UA.Win64\r
+                                * @alias X.UA.WinCE\r
+                                * @type {boolean}\r
+                                */\r
                                X_UA[ sys ] = true;\r
                };\r
                // winRT\r
        } else\r
        if( sys.indexOf( 'Mac' ) + 1 ){\r
                console.log( 'Mac' );\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.Mac\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'Mac' ]  = true;\r
                switch( sys ){\r
                        case 'MacPowerPC' :\r
-                               /** @memberof X.UA */\r
+                               /**\r
+                                * @alias X.UA.MacPPC\r
+                                * @type {boolean}\r
+                                */\r
                                X_UA[ 'MacPPC' ] = true;\r
                                break;\r
                        case 'MacPPC' :\r
                        case 'Mac68K' :\r
                        case 'MacIntel' :\r
+                               /**\r
+                                * @alias X.UA.MacPPC\r
+                                * @alias X.UA.Mac68K\r
+                                * @alias X.UA.MacIntel\r
+                                * @type {boolean}\r
+                                */\r
                                X_UA[ sys ] = true;\r
                };\r
        } else\r
        if( ( sys.indexOf( 'Linux' ) + 1 ) || ( sys.indexOf( 'Android' ) + 1 ) ){\r
                console.log( 'Linux' );\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.Linux\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'Linux' ]  = true;\r
                \r
                if( ( i = dua.indexOf( 'Android' ) ) !== -1 ){\r
-                       /** @memberof X.UA */\r
-                       X_UA[ 'Android' ]  = parseFloat( dua.substr( i + 8 ) ) || 0.1; // Firefox で Version が取れない!\r
+                       /**\r
+                        * Firefox で Version が取れない!\r
+                        * http://bizmakoto.jp/bizid/articles/1207/31/news004.html\r
+                        * Chrome       Android 4.0以上       Google\r
+                        * Dolphin Browser HD   Android 2.0.1以上     Mobotap\r
+                        * Firefox      Android 2.2以上       Mozilla\r
+                        * Opera Mobile         Android 1.6以上       Opera Software ASA\r
+                        * Sleipnir Mobile      Android 2.1以上       Fenrir\r
+                        * @alias X.UA.Android\r
+                        * @type {number}\r
+                        */\r
+                       X_UA[ 'Android' ]  = parseFloat( dua.substr( i + 8 ) ) || 0.1;\r
                        console.log( '>> Android : ' + X_UA[ 'Android' ]  );\r
                };\r
        };\r
-\r
-/*\r
- * http://bizmakoto.jp/bizid/articles/1207/31/news004.html\r
-Chrome         Android 4.0以上       Google\r
-Dolphin Browser HD     Android 2.0.1以上     Mobotap\r
-Firefox        Android 2.2以上       Mozilla\r
-Opera Mobile   Android 1.6以上       Opera Software ASA\r
-Sleipnir Mobile        Android 2.1以上       Fenrir\r
- */\r
        \r
        if( window.opera ){\r
                i = dua.indexOf( 'Opera' ); // Opera/\r
                j = dua.indexOf( 'Version/' );\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.Opera\r
+                * @type {number}\r
+                */\r
                X_UA[ 'Opera' ] = v = Math.max(\r
                        i !== -1 ? parseFloat( dua.substr( i + 6 ) ) : 0,\r
                        j !== -1 ? parseFloat( dua.substr( j + 8 ) ) : 0,\r
                        tv );\r
-               // closure compiler で minify するとOpera7で動かない \r
-               // --compilation_level WHITESPACE_ONLY --formatting pretty_print <- 動く\r
-               /** @memberof X.UA */\r
+               /**\r
+                * memo:closure compiler で minify するとOpera7で動かない \r
+                * --compilation_level WHITESPACE_ONLY --formatting pretty_print <- 動く\r
+                * @alias X.UA.Opera7\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'Opera7' ]      = v < 8;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.Opera78\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'Opera78' ]     = v < 9;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.OperaMini\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'OperaMini' ]   = 0 < dua.indexOf('Opera Mini');\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.OperaMobile\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'OperaMobile' ] = 0 < dua.indexOf('Opera Mobi');\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.OperaTablet\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'OperaTablet' ] = 0 < dua.indexOf('Opera Tablet');\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.Wii\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'Wii' ]         = dua.indexOf( 'Nintendo Wii' ) !== -1;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.NDS\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'NDS' ]         = dua.indexOf( 'Nitro' ) !== -1;\r
                console.log( '>> Opera : ' + v );\r
                return;\r
@@ -191,58 +259,104 @@ Sleipnir Mobile  Android 2.1以上       Fenrir
        \r
        // Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko\r
        if( document.all || dav.indexOf( 'Trident/' ) !== -1 ){\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.ActiveX\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'ActiveX' ]  = !!window[ 'ActiveXObject' ];\r
                /**\r
                 * documentモードを考慮しないIEのバージョン\r
-                * @memberof X.UA\r
-                * @type {number}*/\r
+                * @alias X.UA._IE\r
+                * @type {number}\r
+                */\r
                X_UA[ '_IE' ]      = parseFloat(dua.split('MSIE ')[1]) || parseFloat(dua.split('rv:')[1]) || parseFloat(dav.split('MSIE ')[1]) || 0;\r
-               // IE11 の互換モードの dav にも Trident/7.0 が書かれているため互換モードか?判定ができる\r
-               // 互換モードでは Silverlight でエラーが出る?\r
-               /** @memberof X.UA */\r
+               /**\r
+                * IE11 の互換モードの navigator.appVersion にも Trident/7.0 が書かれているため互換モードか?判定ができる\r
+                * 互換モードでは Silverlight でエラーが出る?\r
+                * @alias X.UA.Trident\r
+                * @type {number}\r
+                */\r
                X_UA[ 'Trident' ]  = parseFloat(dav.split('Trident/')[1]) || 0;\r
                /**\r
                 * documentモードを考慮したIEのバージョン\r
-                * @memberof X.UA */\r
+                * @alias X.UA.IE\r
+                * @type {number}\r
+                */\r
                X_UA[ 'IE' ]   = v = document.documentMode || X_UA[ '_IE' ];\r
-               tridentToVer  = X_UA[ 'Trident' ] ? ( X_UA[ 'Trident' ] + 4 | 0 ) : X_UA[ '_IE' ];\r
+               tridentToVer       = X_UA[ 'Trident' ] ? ( X_UA[ 'Trident' ] + 4 | 0 ) : X_UA[ '_IE' ];\r
                /**\r
-                * IE11 の互換モードを使用しているか?\r
-                * @memberof X.UA */\r
+                * IE10 以上の互換モードを使用している場合、そのバージョン\r
+                * @alias X.UA.IECompat\r
+                * @type {number}\r
+                */\r
                X_UA[ 'IECompat' ] = /* v !== X_UA[ '_IE' ] || */ tridentToVer !== X_UA[ '_IE' ] && tridentToVer;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.IE4\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'IE4' ]      = v && v < 5;\r
-               /** @memberof X.UA */\r
-               X_UA[ 'IE5678' ]   = 5 <= v && v < 9;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.IE5\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'IE5' ]      = 5 <= v && v < 5.5;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.IE55\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'IE55' ]     = 5.5 <= v && v < 6;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.IE5x\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'IE5x' ]     = X_UA[ 'IE5' ] || X_UA[ 'IE55' ];\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.IE6\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'IE6' ]      = 6 <= v && v < 7;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.IE7\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'IE7' ]      = 7 <= v && v < 8;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.IE8\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'IE8' ]      = 8 <= v && v < 9;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.IE9\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'IE9' ]      = 9 <= v && v < 10;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.MacIE\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'MacIE' ]    = X_UA[ 'Mac' ];\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.IEMobile\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'IEMobile' ] = dua.toLowerCase().indexOf( 'iemobile' ) !== -1 || X_UA[ 'WinCE' ];\r
-               /** @memberof X.UA */\r
-               X_UA[ 'WinPhone' ] = dua.toLowerCase().indexOf( 'windows phone' ) !== -1 || 0 < dav.indexOf( 'ZuneWP' ); // ZuneWP は IEM のデスクトップモードで使用\r
+               /**\r
+                * @alias X.UA.WinPhone\r
+                * @type {boolean}\r
+                */\r
+               X_UA[ 'WinPhone' ] = dua.toLowerCase().indexOf( 'windows phone' ) !== -1 || 0 < dav.indexOf( 'ZuneWP' ); // ZuneWP は IEM のデスクトップモードで登場する\r
                console.log( '>> IE : ' + v + ' ActiveX : ' + X_UA[ 'ActiveX' ] );\r
                // TODO XBox360, XBox1, Modern or Desktop, Standalone\r
                return;\r
        };\r
        \r
-       // http://qa.support.sony.jp/solution/S0812181056444/common/nfb34_dom_200jp/dom_dom0_JP.html\r
+       // \r
        if( ( i = dua.indexOf( 'NetFront\/' ) !== -1 ) ){\r
-               /** @memberof X.UA */\r
+               /**\r
+                * http://qa.support.sony.jp/solution/S0812181056444/common/nfb34_dom_200jp/dom_dom0_JP.html\r
+                * @alias X.UA.NetFront\r
+                * @type {number}\r
+                */\r
                X_UA[ 'NetFront' ] = parseFloat( dua.substr( i + 9 ) ) || 0.1;\r
                console.log( '>> NetFront : ' + X_UA[ 'NetFront' ] );\r
                return;\r
@@ -254,25 +368,30 @@ Sleipnir Mobile   Android 2.1以上       Fenrir
                return;\r
        };\r
        \r
-       // http://www.useragentstring.com/pages/Playstation%203/\r
-       // Mozilla/5.0 (PLAYSTATION 3; 3.55)\r
-    // Mozilla/4.0 (PS3 (PlayStation 3); 1.00)\r
-    // https://github.com/Famous/famous/blob/1a02c8084587d80519ea4bd3b55649ab32ee2e65/examples/assets/lib/require.js\r
-    // PS3 ブラウザのロードイベントについて\r
        if( ( i = dua.toUpperCase().indexOf( 'PLAYSTATION 3' ) !== -1 ) ){\r
                /**\r
                 * PlayStation 3 システムバージョン 4.10 未満の SONY 独自ブラウザ\r
-                * @memberof X.UA */\r
+                * http://www.useragentstring.com/pages/Playstation%203/\r
+                * Mozilla/5.0 (PLAYSTATION 3; 3.55)\r
+                * Mozilla/4.0 (PS3 (PlayStation 3); 1.00)\r
+                * https://github.com/Famous/famous/blob/1a02c8084587d80519ea4bd3b55649ab32ee2e65/examples/assets/lib/require.js\r
+                * PS3 ブラウザのロードイベントについて\r
+                * @alias X.UA.PS3\r
+                * @type {number}\r
+                */\r
                X_UA[ 'PS3' ] = parseFloat( dua.substr( i + 15 ) ) || 0.1;\r
                console.log( '>> PS3 : ' + X_UA[ 'PS3' ] );\r
                return;\r
        };\r
        \r
-       // http://www.useragentstring.com/pages/iCab/\r
-       // iCab/3.0.2 (Macintosh; U; PPC Mac OS X)\r
-       // Mozilla/5.0 (Macintosh; U; PPC Mac OS; en) iCab 3\r
        if( ( i = dua.indexOf( 'iCab' ) !== -1 ) ){\r
-               /** @memberof X.UA */\r
+               /**\r
+                * http://www.useragentstring.com/pages/iCab/\r
+                * iCab/3.0.2 (Macintosh; U; PPC Mac OS X)\r
+                * Mozilla/5.0 (Macintosh; U; PPC Mac OS; en) iCab 3\r
+                * @alias X.UA.iCab\r
+                * @type {number}\r
+                */\r
                X_UA[ 'iCab' ] = parseFloat( dua.substr( i + 5 ) ) || 0.1;\r
                console.log( '>> iCab : ' + X_UA[ 'iCab' ] );\r
                return;\r
@@ -280,21 +399,37 @@ Sleipnir Mobile   Android 2.1以上       Fenrir
        \r
        if( 0 < dua.indexOf( 'Gecko\/' ) && ( i = dua.indexOf( 'rv:' ) ) ){\r
                v = dua.substr( i + 3 ).split( '.' );\r
-               /** @memberof X.UA */\r
+               /**\r
+                * メジャーバージョン + マイナーバージョン\r
+                * @alias X.UA.Gecko\r
+                * @type {number}\r
+                */\r
                X_UA[ 'Gecko' ] = parseFloat( v[ 0 ] ) || 0 +\r
                        ( parseFloat( v[ 1 ] ) || 0 ) / 10 +\r
                        ( parseFloat( v[ 2 ] ) || 0 ) / 100;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.GeckoMajor\r
+                * @type {number}\r
+                */\r
                X_UA[ 'GeckoMajor' ] = parseFloat( v[ 0 ] ) || 0;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.GeckoMinor\r
+                * @type {number}\r
+                */\r
                X_UA[ 'GeckoMinor' ] = parseFloat( v[ 1 ] ) || 0;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.GeckoPatch\r
+                * @type {number}\r
+                */\r
                X_UA[ 'GeckoPatch' ] = parseFloat( v[ 2 ] ) || 0;\r
                \r
                //Fennec\r
-               // Mozilla/5.0 (Android; Linux armv7l; rv:9.0) Gecko/20111216 Firefox/9.0 Fennec/9.0\r
                if( ( i = dua.indexOf( 'Fennec/' ) ) !== -1 ){\r
-                       /** @memberof X.UA */\r
+                       /**\r
+                        * Mozilla/5.0 (Android; Linux armv7l; rv:9.0) Gecko/20111216 Firefox/9.0 Fennec/9.0\r
+                        * @alias X.UA.Fennec\r
+                        * @type {number}\r
+                        */\r
                        X_UA[ 'Fennec' ] = parseFloat( dua.substr( i + 7 ) );\r
                        console.log( '>> Fennec : ' + X_UA[ 'Fennec' ] + ', Gecko : ' + X_UA[ 'Gecko' ] );\r
                        return;\r
@@ -304,9 +439,15 @@ Sleipnir Mobile    Android 2.1以上       Fenrir
                //Netscape\r
                //Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3\r
                if( ( i = dua.indexOf( 'Netscape6/' ) ) !== -1 ){\r
-                       /** @memberof X.UA */\r
+                       /**\r
+                        * @alias X.UA.NN\r
+                        * @type {number}\r
+                        */\r
                        X_UA[ 'NN' ]  = parseFloat( dua.substr( i + 10 ) ) || 6;\r
-                       /** @memberof X.UA */\r
+                       /**\r
+                        * @alias X.UA.NN6\r
+                        * @type {boolean}\r
+                        */\r
                        X_UA[ 'NN6' ] = true;\r
                        console.log( '>> NN : ' + X_UA[ 'NN' ] + ', Gecko : ' + X_UA[ 'Gecko' ] );\r
                        return;\r
@@ -330,44 +471,78 @@ Sleipnir Mobile   Android 2.1以上       Fenrir
        \r
        // TODO Blink\r
        if( window.chrome ){\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.Blink\r
+                * @type {number}\r
+                */\r
                X_UA[ 'Blink' ] = tv;\r
                console.log( '>>Blink : ' + X_UA[ 'Blink' ] );\r
                \r
        } else\r
        if( dav.indexOf( 'Konqueror' ) !== -1 ){\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.Khtml\r
+                * @type {number}\r
+                */\r
                X_UA[ 'Khtml' ] = tv;\r
                console.log( '>>Khtml : ' + X_UA[ 'Khtml' ] );\r
                \r
        } else\r
        if( ( i = dua.indexOf( 'Android ' ) ) !== -1 ){\r
-               /** @memberof X.UA */\r
-               X_UA[ 'AndroidBrowser' ]  = i = parseFloat( dua.substr( i + 8 ) ) || 0.1;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * Android 標準ブラウザ\r
+                * @alias X.UA.AndroidBrowser\r
+                * @type {number}\r
+                */\r
+               X_UA[ 'AndroidBrowser' ] = i = parseFloat( dua.substr( i + 8 ) ) || 0.1;\r
+               /**\r
+                * @alias X.UA.AndroidBrowser1\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'AndroidBrowser1' ] = 1 <= i && i < 2;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.AndroidBrowser2\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'AndroidBrowser2' ] = 2 <= i && i < 3;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.AndroidBrowser3\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'AndroidBrowser3' ] = 3 <= i && i < 4;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.AndroidBrowser4\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'AndroidBrowser4' ] = 4 <= i && i < 5;\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.AndroidBrowser5\r
+                * @type {boolean}\r
+                */\r
                X_UA[ 'AndroidBrowser5' ] = 5 <= i && i < 6;\r
                console.log( '>> AndroidBrowser : ' + X_UA[ 'Android' ] );\r
                \r
                i = parseFloat(dua.split('WebKit\/')[1]);\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.AndroidBrowserWebkit\r
+                * @type {number}\r
+                */\r
                X_UA[ 'AndroidBrowserWebkit' ] = i;\r
                alert( 'AudioSprite調査:Android標準ブラウザ Webkit Version ' + i );\r
                \r
        } else\r
        if( i = parseFloat(dua.split('WebKit\/')[1]) ){\r
-               /** @memberof X.UA */\r
+               /**\r
+                * @alias X.UA.WebKit\r
+                * @type {number}\r
+                */\r
                X_UA[ 'WebKit' ] = i;\r
                \r
                if( v = parseFloat(dua.split('Chrome\/')[1]) ){\r
-                       /** @memberof X.UA */\r
+                       /**\r
+                        * @alias X.UA.Chrome\r
+                        * @type {number}\r
+                        */\r
                        X_UA[ 'Chrome' ] = v;\r
                };\r
                \r
@@ -377,16 +552,19 @@ Sleipnir Mobile   Android 2.1以上       Fenrir
        \r
                if( i && !X_UA[ 'Chrome' ] && dua.indexOf( 'Safari' ) !== -1 ){\r
                        if( dav.indexOf( 'Version/' ) !== -1 ){\r
-                               /** @memberof X.UA */\r
+                               /**\r
+                                * @alias X.UA.Safari\r
+                                * @type {number}\r
+                                */\r
                                X_UA[ 'Safari' ] = parseFloat( dav.split('Version/')[1] );\r
                        } else {\r
                                if( i <= 528.16 ){\r
-                                       X_UA[ 'Safari' ] = i <     73  ? 0.8 :\r
-                                                                          i <     85  ? 0.9 :\r
-                                                                          i <    100  ? 1 :\r
-                                                                          i <    125  ? 1.1 :\r
-                                                                          i <    312  ? 1.2 :\r
-                                                                          i <    412  ? 1.3 :\r
+                                       X_UA[ 'Safari' ] = i <   73    ? 0.8 :\r
+                                                                          i <   85    ? 0.9 :\r
+                                                                          i <  100    ? 1 :\r
+                                                                          i <  125    ? 1.1 :\r
+                                                                          i <  312    ? 1.2 :\r
+                                                                          i <  412    ? 1.3 :\r
                                                                           i <= 419.3  ? 2 :\r
                                                                           i <= 525.13 ? 3 :\r
                                                                           i <= 525.25 ? 3.1 : 3.2;\r
@@ -397,8 +575,14 @@ Sleipnir Mobile    Android 2.1以上       Fenrir
                console.log( '>> Webkit : ' + X_UA[ 'WebKit' ] + ' Safari : ' + X_UA[ 'Safari' ] );\r
        };\r
        \r
-       //http://www.useragentstring.com/pages/Iris/\r
-       if( dua.toLowerCase().indexOf( 'iris' ) !== -1 ) X_UA[ 'Iris' ] = true;\r
+       if( dua.toLowerCase().indexOf( 'iris' ) !== -1 ){\r
+               /**\r
+                * http://www.useragentstring.com/pages/Iris/\r
+                * @alias X.UA.Iris\r
+                * @type {boolean}\r
+                */\r
+               X_UA[ 'Iris' ] = true;\r
+       };\r
        \r
        if( // Kobo Mozilla/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit/533.1 (KHTML, like Gecko) Verson/4.0 Mobile Safari/533.1 (Kobo Touch)\r
                dua.indexOf( 'Kobo' ) !== -1 ||\r
@@ -407,15 +591,18 @@ Sleipnir Mobile   Android 2.1以上       Fenrir
                // Sony Reader Mozilla/5.0 (Linux; U; ja-jp; EBRD1101; EXT) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\r
                dua.indexOf( 'EBRD' ) !== -1\r
                 ){\r
-                       /** @memberof X.UA */\r
+                       /**\r
+                        * Kobo, Kindle, Sony Reader\r
+                        * @alias X.UA.EInk\r
+                        * @type {boolean}\r
+                        */\r
                        X_UA[ 'EInk' ] = true;\r
                };\r
-})( navigator );\r
+})();\r
 \r
 var X_UA_DOM   = {},\r
        X_UA_EVENT = {},\r
        X_UA_HID   = {};\r
-//X_UA[ 'IECompat' ] && alert( X_UA[ 'IE' ] + ' ' + X_UA[ '_IE' ] + ' Tri:' + X_UA[ 'Trident' ] );\r
 \r
 /*\r
  * http://d.hatena.ne.jp/t-uchima/20051003/p1\r
@@ -472,7 +659,7 @@ if( X_UA[ 'IE' ] < 7 ){ // error @ NN7.2
                         * ie7 以下で実行する document.execCommand( 'BackgroundImageCache', false, true ) の失敗。\r
                         * bonus: hotfix for IE6 SP1 (bug KB823727)\r
                         * multipleIEs IE6 standalone 版では不可, IE5.5 は可,,,\r
-                        * @memberof X.UA */\r
+                        * @alias X.UA.ieExeComError */\r
                        X_UA[ 'ieExeComError' ] = eval( 'var a=1;try{document.execCommand&&document.execCommand("BackgroundImageCache",!1,!0)}catch(e){a=0}!a' );\r
                })();\r
        \r
index 574b1e4..1dcde48 100644 (file)
@@ -19,29 +19,37 @@ var X_Object_inObject = X_UA[ 'IE' ] < 5.5 ? // TODO JScript で判定
        }) :\r
        new Function( 'a,b', 'return a in b' );// なぜか ie5 でもerror\r
 \r
+\r
+// ------------------------------------------------------------------------- //\r
+// --- interface ----------------------------------------------------------- //\r
+// ------------------------------------------------------------------------- //\r
+\r
 /**\r
  * Object に関するメソッドを集めたものです。\r
  * @namespace X.Object\r
  * @alias X.Object\r
  */\r
-X.Object = {\r
+X[ 'Object' ] = {\r
        // TODO rename to copy\r
-       clone      : X_Object_clone,\r
+       'clone'      : X_Object_clone,\r
        \r
-       override   : X_Object_override,\r
+       'override'   : X_Object_override,\r
        \r
-       deepCopy   : X_Object_deepCopy,\r
+       'deepCopy'   : X_Object_deepCopy,\r
        \r
        // TODO rename to X.Array.copy\r
-       cloneArray : X_Object_cloneArray,\r
+       'cloneArray' : X_Object_cloneArray,\r
        \r
-       isEmpty    : X_Object_isEmpty,\r
+       'isEmpty'    : X_Object_isEmpty,\r
        \r
-       inObject   : X_Object_inObject\r
+       'inObject'   : X_Object_inObject\r
        \r
        // TODO hasOwnProperty\r
 };\r
 \r
+// ------------------------------------------------------------------------- //\r
+// --- implements ---------------------------------------------------------- //\r
+// ------------------------------------------------------------------------- //\r
 /**\r
  * 単純なクローンでメンバーをコピーしたオブジェクトを返します。\r
  * @alias X.Object.clone\r
index 1ba48aa..a3ff287 100644 (file)
@@ -12,19 +12,19 @@ var X_String_CRLF = String.fromCharCode( 13 ) + String.fromCharCode( 10 );
  * @namespace X.String\r
  * @alias X.String\r
  */\r
-X.String = {\r
+X[ 'String' ] = {\r
        \r
-       parse             : X_String_parse,\r
+       'parse'             : X_String_parse,\r
        \r
-       cleanupWhiteSpace : X_String_cleanupWhiteSpace,\r
+       'cleanupWhiteSpace' : X_String_cleanupWhiteSpace,\r
        \r
-       whiteSpaceToTag   : X_String_whiteSpaceToTag,\r
+       'whiteSpaceToTag'   : X_String_whiteSpaceToTag,\r
        \r
-       chrReferanceTo    : X_String_chrReferanceTo,\r
+       'chrReferanceTo'    : X_String_chrReferanceTo,\r
        \r
-       toChrReferance    : X_String_toChrReferance,\r
+       'toChrReferance'    : X_String_toChrReferance,\r
        \r
-       isNumberString    : X_String_isNumberString\r
+       'isNumberString'    : X_String_isNumberString\r
 };\r
 \r
 // ------------------------------------------------------------------------- //\r
index 091e3cf..9d2dd87 100644 (file)
@@ -46,23 +46,23 @@ var X_URL_BASE_URL = ( function( parts ){
  * @namespace X.URL\r
  * @alias X.URL\r
  */\r
-X.URL = {\r
+X[ 'URL' ] = {\r
 \r
-       BASE_URL : X_URL_BASE_URL,\r
+       'BASE_URL' : X_URL_BASE_URL,\r
        \r
-       IS_FILE  : X_URL_IS_FILE,\r
+       'IS_FILE'  : X_URL_IS_FILE,\r
        \r
-       IS_LOCAL : X_URL_IS_LOCAL,\r
+       'IS_LOCAL' : X_URL_IS_LOCAL,\r
        \r
-       PARAMS   : X_URL_PARAMS,\r
+       'PARAMS'   : X_URL_PARAMS,\r
        \r
-       toAbsolutePath : X_URL_toAbsolutePath,\r
+       'toAbsolutePath' : X_URL_toAbsolutePath,\r
        \r
-       isSameDomain   : X_URL_isSameDomain,\r
+       'isSameDomain'   : X_URL_isSameDomain,\r
        \r
-       cleanup        : X_URL_cleanup,\r
+       'cleanup'        : X_URL_cleanup,\r
        \r
-       getEXT         : X_URL_getEXT\r
+       'getEXT'         : X_URL_getEXT\r
 };\r
 \r
 // ------------------------------------------------------------------------- //\r
index 189ba59..964b2ca 100644 (file)
@@ -3,21 +3,35 @@
 // ------------ local variables -------------------------------------------- //\r
 // ------------------------------------------------------------------------- //\r
 \r
-var X_Callback_LIVE_LIST        = [],\r
+var /** @const */\r
+       X_Callback_LIVE_LIST        = [],\r
+       /** @const */\r
        X_Callback_POOL_LIST        = [],\r
+       /** @const */\r
        X_Closure_COMMAND_BACK      = X_Callback_LIVE_LIST,\r
+       /** @const */\r
        X_Closure_COMMAND_DROP      = X_Callback_POOL_LIST,\r
        \r
+       /** @const */\r
        X_Callback_THIS_FUNC        = 1,\r
+       /** @const */\r
        X_Callback_HANDLEEVENT      = 2,\r
+       /** @const */\r
        X_Callback_FUNC_ONLY        = 3,\r
 \r
+       /** @const */\r
        X_Callback_NONE             =  0,\r
+       /** @const */\r
        X_Callback_UN_LISTEN        =  1,\r
-       X_Callback_STOP_PROPAGATION =  2,  // 上位階層への伝播のキャンセル\r
+       /** @const */\r
+       X_Callback_STOP_PROPAGATION =  2,\r
+       /** @const */\r
        X_Callback_STOP_NOW         =  4 | 2,  // 同一階層のリスナーのキャンセル(上位へもキャンセル)\r
+       /** @const */\r
        X_Callback_PREVENT_DEFAULT  =  8,  // 結果動作のキャンセル,\r
+       /** @const */\r
        X_Callback_MONOPOLY         = 16,  // move event を独占する\r
+       /** @const */\r
        X_Callback_SYS_CANCEL       = 32 | 4 | 2;\r
 \r
 /*\r
@@ -116,28 +130,28 @@ X.Callback = {
        /**\r
         * このコールバックでは返り値による操作は無い。\r
         */\r
-       NONE             : X_Callback_NONE,\r
+       'NONE'             : X_Callback_NONE,\r
        /**\r
-        * X.Timer.add, X.EventDispatcher.listen のコールバックでタイマーやイベントリスナの解除に使用。\r
+        * X.Timer, X.EventDispatcher のコールバックでタイマーやイベントリスナの解除に使用。\r
         */\r
-       UN_LISTEN        : X_Callback_UN_LISTEN,\r
+       'UN_LISTEN'        : X_Callback_UN_LISTEN,\r
        /**\r
-        * イベントのバブルアップを中止する。DOM イベントのコールバックの戻り値に指定すると e.stopPropagation() が呼ばれる。\r
+        * 上位階層へのイベント伝播のキャンセル。DOM イベントのコールバックの戻り値に指定すると e.stopPropagation() が呼ばれる。\r
         */\r
-       STOP_PROPAGATION : X_Callback_STOP_PROPAGATION,\r
+       'STOP_PROPAGATION' : X_Callback_STOP_PROPAGATION,\r
        /**\r
-        * 以降のイベントのディスパッチを中断する。\r
+        * 以降のイベントのディスパッチを中断する。STOP_PROPAGATION との違いは、次に控えているコールバックもキャンセルされる点。但し system によって追加されたイベントはキャンセルされない。\r
         */\r
-       STOP_NOW         : X_Callback_STOP_NOW,\r
+       'STOP_NOW'         : X_Callback_STOP_NOW,\r
        /**\r
         * DOM イベントのコールバックの戻り値に指定すると e.preventDefault() が呼ばれる。\r
         * またフレームワーク内で定義されたデフォルト動作の回避にも使用される。\r
         */\r
-       PREVENT_DEFAULT  : X_Callback_PREVENT_DEFAULT,\r
+       'PREVENT_DEFAULT'  : X_Callback_PREVENT_DEFAULT,\r
        /**\r
         * X.UI に於いて、ポインターイベントの戻り値に指定すると、以降のポインターベントを独占する。\r
         */\r
-       MONOPOLY         : X_Callback_MONOPOLY\r
+       'MONOPOLY'         : X_Callback_MONOPOLY\r
 };\r
 \r
 // ------------------------------------------------------------------------- //\r
@@ -147,18 +161,21 @@ X.Callback = {
 function X_Callback_create( thisObject, opt_callback, opt_args /* [ listener || ( context + function ) || function ][ args... ] */ ){\r
        var obj = X_Callback_classifyCallbackArgs( thisObject, opt_callback, opt_args ),\r
                l, ret, _obj;\r
-       if( !obj.k ) return obj;\r
+       \r
+       if( !obj.kind ) return obj;\r
+       \r
        if( l = X_Callback_POOL_LIST.length ){\r
-               ret    = X_Callback_POOL_LIST[ l - 1 ]; --X_Callback_POOL_LIST.length; // ret = X_Callback_POOL_LIST.pop();\r
-               _obj   = ret( X_Closure_COMMAND_BACK );\r
-               _obj.k = obj.k;\r
-               _obj.f = obj.f;\r
-               _obj.x = obj.x;\r
-               _obj.s = obj.s;\r
-               _obj._ = X_Callback_proxyCallback;\r
+               ret  = X_Callback_POOL_LIST[ l - 1 ]; --X_Callback_POOL_LIST.length; // ret = X_Callback_POOL_LIST.pop();\r
+               _obj = ret( X_Closure_COMMAND_BACK );\r
+               \r
+               _obj.kind       = obj.kind;\r
+               _obj.func       = obj.func;\r
+               _obj.context    = obj.context;\r
+               _obj.supplement = obj.supplement;\r
+               _obj.proxy      = X_Callback_proxyCallback;\r
        } else {\r
-               ret = X_Callback_actualClosure( obj );\r
-               obj._ = X_Callback_proxyCallback;\r
+               ret             = X_Callback_actualClosure( obj );\r
+               obj.proxy       = X_Callback_proxyCallback;\r
        };\r
        X_Callback_LIVE_LIST[ X_Callback_LIVE_LIST.length ] = ret;\r
        return ret;\r
@@ -169,30 +186,30 @@ function X_Callback_classifyCallbackArgs( arg1, arg2, arg3, alt_context ){
        var obj;\r
        \r
        if( arg1 && X_Type_isFunction( arg2 ) ){\r
-               obj  = { x : arg1, f : arg2, k : X_Callback_THIS_FUNC };\r
+               obj  = { context : arg1, func : arg2, kind : X_Callback_THIS_FUNC };\r
        } else\r
        if( arg1 && X_Type_isFunction( arg1[ 'handleEvent' ] ) ){\r
-               obj  = { x : arg1, k : X_Callback_HANDLEEVENT };\r
+               obj  = { context : arg1, kind : X_Callback_HANDLEEVENT };\r
                arg3 = arg2;\r
        } else\r
        if( X_Type_isFunction( arg1 ) ){\r
                arg3 = arg2;\r
                if( alt_context ){\r
-                       obj  = { x : alt_context, f : arg1, k : X_Callback_THIS_FUNC };\r
+                       obj  = { context : alt_context, func : arg1, kind : X_Callback_THIS_FUNC };\r
                } else {\r
-                       obj  = { f : arg1, k : X_Callback_FUNC_ONLY };\r
+                       obj  = { func : arg1, kind : X_Callback_FUNC_ONLY };\r
                };\r
        } else\r
        if( X_Type_isFunction( arg2 ) ){\r
                //console.log( 'X_Callback_classifyCallbackArgs : arg1 が ' + arg1 + 'です' ); ie4 で error\r
                if( alt_context ){\r
-                       obj  = { x : alt_context, f : arg2, k : X_Callback_THIS_FUNC };\r
+                       obj  = { context : alt_context, func : arg2, kind : X_Callback_THIS_FUNC };\r
                } else {\r
-                       obj  = { f : arg2, k : X_Callback_FUNC_ONLY };\r
+                       obj  = { func : arg2, kind : X_Callback_FUNC_ONLY };\r
                };\r
        } else\r
        if( alt_context ){\r
-               obj  = { x : alt_context, k : X_Callback_HANDLEEVENT };\r
+               obj  = { context : alt_context, kind : X_Callback_HANDLEEVENT };\r
                arg3 = arg1;\r
        } else {\r
                console.log( '不正 ' + arg1 );\r
@@ -201,23 +218,23 @@ function X_Callback_classifyCallbackArgs( arg1, arg2, arg3, alt_context ){
        };\r
        \r
        if( X_Type_isArray( arg3 )){\r
-               obj.s = arg3;\r
+               obj.supplement = arg3;\r
        };\r
-       return ( obj.x || obj.s ) ? obj : arg1;\r
+       return ( obj.context || obj.supplement ) ? obj : arg1;\r
 };\r
 \r
 function X_Callback_actualClosure( obj ){\r
        return function(){\r
                if( arguments[ 0 ] === X_Closure_COMMAND_BACK ) return obj;\r
-               if( arguments[ 0 ] !== X_Closure_COMMAND_DROP ) return obj._( obj, arguments );\r
+               if( arguments[ 0 ] !== X_Closure_COMMAND_DROP ) return obj.proxy( obj, arguments );\r
        };\r
 };\r
 \r
 function X_Callback_proxyCallback( xfunc, _args ){\r
        var args    = _args || [],\r
-               thisObj = xfunc.x,\r
-               func    = xfunc.f,\r
-               supp    = xfunc.s,\r
+               thisObj = xfunc.context,\r
+               func    = xfunc.func,\r
+               supp    = xfunc.supplement,\r
                temp, ret;      \r
        \r
        if( supp && supp.length ){\r
@@ -234,7 +251,7 @@ function X_Callback_proxyCallback( xfunc, _args ){
                args = temp;\r
        };\r
        \r
-       switch( xfunc.k ){\r
+       switch( xfunc.kind ){\r
 \r
                case X_Callback_THIS_FUNC :\r
                        return args.length === 0 ? func.call( thisObj ) : func.apply( thisObj, args );\r
@@ -272,11 +289,11 @@ function X_Callback_correct( f ){
                X_Callback_LIVE_LIST.splice( i, 1 );\r
                X_Callback_POOL_LIST[ X_Callback_POOL_LIST.length ] = f;\r
                obj = f( X_Closure_COMMAND_BACK );\r
-               delete obj.k;\r
-               if( obj.f ) delete obj.f;\r
-               if( obj.x ) delete obj.x;\r
-               if( obj.s ) delete obj.s;\r
-               delete obj._;\r
+               delete obj.kind;\r
+               if( obj.func ) delete obj.func;\r
+               if( obj.context ) delete obj.context;\r
+               if( obj.supplement ) delete obj.supplement;\r
+               delete obj.proxy;\r
                return true;\r
        };\r
        return false;\r
index 815e4c1..52207a5 100644 (file)
@@ -27,7 +27,7 @@ var
        X_Class_killPrivateFlag    = false,\r
        X_Class_traits             = null,\r
        X_Class_useObjectCreate    = false, // !!Object.create, http://jsperf.com/prototype-vs-object-create-perf\r
-       X_Class_use_proto_         = !X_UA[ 'OperaMobile' ] && !X_UA[ 'OperaTablet' ] && !!X.emptyFunction.prototype.__proto__,\r
+       X_Class_use_proto_         = !X_UA[ 'OperaMobile' ] && !X_UA[ 'OperaTablet' ] && !!X_emptyFunction.prototype.__proto__,\r
                // Opera Mobile 12.10 Android11 IS01 でクラスのメンバが欠落する問題に遭遇。__proto__ を使わないと動作,,,\r
 \r
 X_Class_CommonMethods =\r
@@ -37,13 +37,13 @@ X_Class_CommonMethods =
         * 全ての動的メンバを削除して、インスタンスを破棄する。<br>\r
         * インスタンスが X.EventDispatcher とそのサブクラスの場合、次の動作をする。\r
         * <ol>\r
-        * <li>X.Event.BEFORE_KILL_INSTANCE を発火する。戻り値のビットフラグに X.Callback.PREVENT_DEFAULT が立つ場合、破棄をキャンセルし X.Event.KILL_INSTANCE_CANCELED を発火する。\r
+        * <li>X.Event.BEFORE_KILL_INSTANCE を発火する。戻り値のビットフラグに X_Callback_PREVENT_DEFAULT が立つ場合、破棄をキャンセルし X.Event.KILL_INSTANCE_CANCELED を発火する。\r
         * <li>破棄に進む場合は、X.Event.KILL_INSTANCE を発火する。\r
         * <li>dispatch 中は、インスタンスの全ての dispatch が終了するまで実際の破棄を待つ。\r
         * <li>実際の破棄では、インスタンスのメンバの削除に加えて全てのイベントリスナを解除する。\r
         */\r
        // TODO kill したインスタンスのイベントが残っていないか?これは開発用のみ\r
-       kill : function(){\r
+       'kill' : function(){\r
                var instance = this,\r
                        klass    = X_Class_getClass( instance ),\r
                        def      = X_Class_getClassDef( klass ),\r
@@ -54,10 +54,10 @@ X_Class_CommonMethods =
                };\r
                X_Class_killPrivateFlag = false; // instance.kill() 内で PrivateInstance.kill() を防ぐため\r
                \r
-               if( this.instanceOf( X.EventDispatcher ) ){\r
+               if( this[ 'instanceOf' ]( X_EventDispatcher ) ){\r
                        if( !def.isPrivate ){\r
-                               if( this.dispatch( X_Event.BEFORE_KILL_INSTANCE ) & X.Callback.PREVENT_DEFAULT ){\r
-                                       this.dispatch( X_Event.KILL_INSTANCE_CANCELED );\r
+                               if( this[ 'dispatch' ]( X_EVENT_BEFORE_KILL_INSTANCE ) & X_Callback_PREVENT_DEFAULT ){\r
+                                       this[ 'dispatch' ]( X_EVENT_KILL_INSTANCE_CANCELED );\r
                                        return;\r
                                };\r
                                if( this[ '_listeners' ] && this[ '_listeners' ][ X_Listeners_.DISPATCHING ] ){\r
@@ -65,18 +65,18 @@ X_Class_CommonMethods =
                                        return;\r
                                };\r
                        } else {\r
-                               this.dispatch( X_Event.BEFORE_KILL_INSTANCE );  \r
+                               this[ 'dispatch' ]( X_EVENT_BEFORE_KILL_INSTANCE );     \r
                        };\r
 \r
                        // asyncDispatch の削除\r
                        for( p in X_EventDispatcher_LAZY_TIMERS ){\r
                                if( X_EventDispatcher_LAZY_TIMERS[ p ] === this ){\r
                                        delete X_EventDispatcher_LAZY_TIMERS[ p ]; // 削除が先!理由は X.Timer.removeを確認。\r
-                                       X.Timer.remove( parseFloat( p ) );\r
+                                       X_Timer_remove( parseFloat( p ) );\r
                                };\r
                        };\r
                        \r
-                       this.dispatch( X_Event.KILL_INSTANCE );\r
+                       this[ 'dispatch' ]( X_EVENT_KILL_INSTANCE );\r
                        this._listeners && X_EventDispatcher_systemUnlisten( this );\r
                };\r
                \r
@@ -92,11 +92,11 @@ X_Class_CommonMethods =
                        i = def.userList.indexOf( instance );\r
                        if( i !== -1 ){\r
                                data = X_Class_getPrivate( instance );\r
-                               if( data[ '_listeners' ] && data[ '_listeners' ][ X_Listeners_.DISPATCHING ] && data.instanceOf( X.EventDispatcher ) ){\r
+                               if( data[ '_listeners' ] && data[ '_listeners' ][ X_Listeners_.DISPATCHING ] && data[ 'instanceOf' ]( X.EventDispatcher ) ){\r
                                        data[ '_listeners' ][ X_Listeners_.KILL_RESERVED ] = true;\r
                                } else {\r
                                        X_Class_killPrivateFlag = true;\r
-                                       data.kill();\r
+                                       data[ 'kill' ]();\r
                                };\r
                                def.dataList.splice( i, 1 );\r
                                def.userList.splice( i, 1 );\r
@@ -114,7 +114,7 @@ X_Class_CommonMethods =
         * @return {*}\r
         */\r
        // TODO 現在 new しているインスタンスを保持してチェックする\r
-       Super : function( var_args ){\r
+       'Super' : function( var_args ){\r
                var sClass = this,\r
                        i      = X_Class_CALLING_SUPER.indexOf( sClass ),\r
                        n      = -1,\r
@@ -154,7 +154,7 @@ X_Class_CommonMethods =
         * @example return this.superCall( arguments.callee, param0, param1, ... );\r
         * @return {*} オーバーライド元の関数を呼び出した戻り値。\r
         */\r
-       superCall : function( funcNameOrFunc, var_args ){\r
+       'superCall' : function( funcNameOrFunc, var_args ){\r
                var sClass = this,\r
                        args   = arguments,\r
                        name, p, sFunc, hit = false;\r
@@ -191,7 +191,7 @@ X_Class_CommonMethods =
                                                case 4 :\r
                                                        return sFunc.call( this, args[ 1 ], args[ 2 ], args[ 3 ] );\r
                                                default :\r
-                                                       args = X.Object.cloneArray( args );\r
+                                                       args = X_Object_cloneArray( args );\r
                                                        args.shift();\r
                                                        return sFunc.apply( this, args );\r
                                        };\r
@@ -209,7 +209,7 @@ X_Class_CommonMethods =
         * @return {boolean}\r
         */\r
        // TODO instanceof に対応したブラウザはそちらを使用\r
-       instanceOf : function( klass ){\r
+       'instanceOf' : function( klass ){\r
                var Super = this;\r
                if( this.constructor === klass ) return true;\r
                while( Super = X_Class_getClassDef( Super ).SuperClass ){\r
@@ -243,54 +243,77 @@ X_Class_CommonMethods =
  * @namespace X.Class\r
  * @alias X.Class\r
  */ \r
-X.Class = {\r
+X[ 'Class' ] = {\r
 \r
     /**\r
      * 設定なし。\r
+     * @const\r
      */        \r
-       NONE         : 0,\r
+       'NONE'         : 0,\r
        \r
     /**\r
      * インスタンスは破棄時(this.kill())に回収され、次回の new MyClass() 時に再利用されます。\r
+     * @const\r
      */\r
-       POOL_OBJECT  :  1,\r
+       'POOL_OBJECT'  :  1,\r
        \r
        /**\r
         * 定義するクラスは抽象クラスになります。new AbstractClass() とするとエラーになります。\r
+        * @const\r
         */\r
-       ABSTRACT     :  2,\r
+       'ABSTRACT'     :  2,\r
 \r
        /**\r
         * クラスの継承を禁止する。\r
+        * @const\r
         */\r
-       FINAL        :  4,\r
+       'FINAL'        :  4,\r
 \r
        /**\r
         * 使用を中止。petanR ライブラリ使用プロジェクトから SUPER_ACCESS を消したらここも削除。\r
+        * @const\r
         */\r
-       SUPER_ACCESS :  8,\r
+       'SUPER_ACCESS' :  8,\r
 \r
        /**\r
         * 内部コード、主に X.UI フレームワークに対して、フレーム外に露出するインスタンスとペアで動作する、シャドウなインスタンスの使用を宣言する。\r
         * Javascript はインスタンス毎のカプセル化がとてもコスト高。微妙なコスト増で隠蔽されたインスタンスを使う。\r
+        * @const\r
         */\r
-       PRIVATE_DATA : 16,\r
+       'PRIVATE_DATA' : 16,\r
 \r
        /**\r
         * 未実装。でも目印になるので付けておきましょう。\r
+        * @const\r
         */\r
-       SINGLETON    : 32,\r
+       'SINGLETON'    : 32,\r
 \r
+       'create'       : X_Class_create,\r
+       \r
+       // TODO collect\r
+       \r
+       '_newPrivate'  : X_Class_newPrivate,\r
+       \r
+       '_getPrivate'  : X_Class_getPrivate\r
+       \r
+};\r
+\r
+\r
+\r
+// ------------------------------------------------------------------------- //\r
+// --- implements ---------------------------------------------------------- //\r
+// ------------------------------------------------------------------------- //\r
        /**\r
         * クラスを定義する。<br>\r
         * X.Class.create() によるクラス定義は必ずしもコンストラクタを必要としません。クラス定義時にコンストラクタが未設定の場合、スーパークラスがあればそのコンストラクタを使用します。\r
+        * @alias X.Class.create\r
         * @param {string} [displayName] クラスの名前\r
         * @param {number} [classSetting=0] X.Class.POOL_OBJECT | X.Class.FINAL など\r
         * @param {__ClassBase__=} [privateClass] このクラスとペアで動作するシャドウクラス\r
         * @param {object} [props={}] このクラスのメンバと関数。コンストラクタは Constructor と書くこと\r
         * @return {__ClassBase__}\r
         */\r
-       create : function( /* displayName, classSetting, privateClass, props */ ){\r
+       function X_Class_create( /* displayName, classSetting, privateClass, props */ ){\r
                var args        = X_Object_cloneArray( arguments ),\r
                        displayName = args[ 0 ],\r
                        classSetting,\r
@@ -340,14 +363,14 @@ X.Class = {
                        // クラスメンバ用オブジェクトが無しでもクラスは作成可能\r
                        props = {};\r
                } else\r
-               if( props.Constructor && X_Type_isFunction( props.Constructor ) ){\r
-                       classDef.Constructor = props.Constructor;\r
+               if( props[ 'Constructor' ] && X_Type_isFunction( props[ 'Constructor' ] ) ){\r
+                       classDef.Constructor = props[ 'Constructor' ];\r
                };\r
 \r
-               klass  = X_Callback_actualClosure( hash = { _ : X_Class_actualConstructor } ); // TODO hash = classDef\r
-               hash.c = klass;\r
-               klass.superClassOf = X_Class_superClassOf;\r
-               klass.subClassOf   = X_Class_subClassOf;\r
+               klass  = X_Callback_actualClosure( hash = { proxy : X_Class_actualConstructor } ); // TODO hash = classDef\r
+               hash.klass = klass;\r
+               klass[ 'superClassOf' ] = X_Class_superClassOf;\r
+               klass[ 'subClassOf' ]   = X_Class_subClassOf;\r
                \r
                if( X_Class_useObjectCreate ){\r
                        klass.prototype = X_Class_override( X_Class_override( X_Class_traits || klass.prototype, props, true ), X_Class_CommonMethods, false );\r
@@ -365,7 +388,7 @@ X.Class = {
                        klass.prototype.constructor = klass;\r
                };\r
                \r
-               klass.name = displayName;\r
+               klass[ 'name' ] = displayName;\r
                \r
                if( opt_abstract ){\r
                        classDef.Abstract = true;\r
@@ -377,7 +400,7 @@ X.Class = {
                if( opt_final ){\r
                        classDef.Final = true;\r
                } else {\r
-                       klass.inherits = X_Class_inherits;\r
+                       klass[ 'inherits' ] = X_Class_inherits;\r
                };                      \r
                if( opt_private ){\r
                        if( classDef.privateClass ){\r
@@ -392,19 +415,10 @@ X.Class = {
                        X_Class_DEF_LIST.push( classDef );                              \r
                };\r
                return klass;\r
-       },\r
-       \r
-       _newPrivate  : X_Class_newPrivate,\r
-       \r
-       _getPrivate  : X_Class_getPrivate\r
-       \r
-};\r
+       };\r
 \r
 \r
 \r
-// ------------------------------------------------------------------------- //\r
-// --- implements ---------------------------------------------------------- //\r
-// ------------------------------------------------------------------------- //\r
 function X_Class_getClass( instance ){\r
        var cList    = X_Class_CLASS_LIST,\r
                i        = cList.length,\r
@@ -593,7 +607,7 @@ function X_Class_inherits( /* displayName, classSetting, opt_PrivateClass, props
  * これにより pool された オブジェクト(破棄されたインスタンス) を再利用できる\r
  */\r
 function X_Class_actualConstructor( f, args ){\r
-       var klass    = f.c,\r
+       var klass    = f.klass,\r
                def      = X_Class_getClassDef( klass ),\r
                dataUser = def._tempUser,\r
                instance, obj,\r
@@ -628,7 +642,7 @@ function X_Class_actualConstructor( f, args ){
                def.SuperConstructor &&\r
                        def.SuperConstructor.apply( instance, args );\r
        if( ( X_Type_isObject( obj ) && obj !== instance ) || X_Type_isFunction( obj ) ){ // Class\r
-               instance.kill();\r
+               instance[ 'kill' ]();\r
                return obj;\r
        };\r
        return instance;\r
index 733d9e9..5074db7 100644 (file)
 \r
-var X_Event_last      = 0,\r
-       X_Event_Rename    = {},\r
+var X_Event_Rename    = {},\r
        X_Event_RenameTo  = {},\r
        \r
+       // TODO IFRAMEload, SCRIPTload, LINKload raw.readyState !== 'complete' && raw.readyState !== 'loaded' && this.dispatch( 'load' )\r
        X_Event_proxy     = {\r
                \r
-               load : X_UA[ 'IE' ] < 9 && {\r
-                               check : function( eventDispatcher ){\r
-                                       return eventDispatcher._tag === 'IFRAME' || eventDispatcher._tag === 'SCRIPT';\r
-                               },\r
+               'IFRAMEload' : function( eventDispatcher ){\r
+                       eventDispatcher[ 'listen' ]( 'readystatechange', X_Event_proxy.IFRAMEload_proxy );\r
+               },\r
+               \r
+                       IFRAMEload_proxy : function( e ){\r
+                               var raw = this[ '_rawObject' ];\r
                                \r
-                               f : function( e ){\r
-                                       var raw = this._rawObject;\r
-                                       return raw.readyState !== 'complete' && raw.readyState !== 'loaded';\r
-                               }\r
+                               return raw.readyState === 'complete' || raw.readyState === 'loaded' ?\r
+                                               this[ 'dispatch' ]( 'load' ) : X_Callback_PREVENT_DEFAULT, X_Callback_STOP_PROPAGATION;\r
                        },\r
                \r
-               contextmenu : X_UA[ 'Opera' ] && {\r
-                               \r
-                               rename : 'mousedown',\r
-                               \r
-                               f : function( e ){\r
-                                       return e.button === 2;\r
-                               }\r
-                               \r
-                       }\r
+               // X_UA[ 'Opera' ]\r
+               'contextmenu' : function( eventDispatcher ){\r
+                       eventDispatcher[ 'listen' ]( 'mousedown', contextmenu_proxy );\r
+               },\r
                \r
+                       contextmenu_proxy : function( e ){\r
+                               return e.button === 2 ? this[ 'dispatch' ]( 'contextmenu' ) : X_Callback_NONE;\r
+                       }\r
        },\r
        \r
        X_Event_toPointer = !X_UA_HID.POINTER && ( X_UA_HID.TOUCH ?\r
                {\r
-                       touchstart  : 'pointerdown',\r
-                       mousedown   : 'pointerdown',\r
-                       touchend    : 'pointerup', \r
-                       mouseup     : 'pointerup',\r
-                       touchmove   : 'pointermove',\r
-                       mousemove   : 'pointermove',\r
-                       touchcancel : 'pointercancel',\r
-                       contextmenu : 'contextmenu',\r
-                       dbclick     : 'dbclick',\r
-                       click       : 'click',\r
-                       tap         : 'click'\r
+                       'touchstart'  : 'pointerdown',\r
+                       'mousedown'   : 'pointerdown',\r
+                       'touchend'    : 'pointerup', \r
+                       'mouseup'     : 'pointerup',\r
+                       'touchmove'   : 'pointermove',\r
+                       'mousemove'   : 'pointermove',\r
+                       'touchcancel' : 'pointercancel',\r
+                       'contextmenu' : 'contextmenu',\r
+                       'dbclick'     : 'dbclick',\r
+                       'click'       : 'click',\r
+                       'tap'         : 'click'\r
                } :\r
                {\r
-                       mousedown   : 'pointerdown',\r
-                       mouseup     : 'pointerup',\r
-                       mousemove   : 'pointermove',\r
-                       contextmenu : 'contextmenu',\r
-                       dbclick     : 'dbclick',\r
-                       click       : 'click'\r
+                       'mousedown'   : 'pointerdown',\r
+                       'mouseup'     : 'pointerup',\r
+                       'mousemove'   : 'pointermove',\r
+                       'contextmenu' : 'contextmenu',\r
+                       'dbclick'     : 'dbclick',\r
+                       'click'       : 'click'\r
                });\r
 \r
-// 内部イベント\r
-X_TEMP.SYSTEM_EVENT_PRE_INIT = 5; // X_Listeners_.KILL_RESERVED に +1 した値から開始。\r
-X_TEMP.SYSTEM_EVENT_XTREE    = 6;\r
-X_TEMP.SYSTEM_EVENT_INIT     = 7;\r
+var // 内部イベント\r
+       X_EVENT_PRE_INIT               =  5, // X_Listeners_.KILL_RESERVED に +1 した値から開始。\r
+       X_EVENT_XTREE_READY            =  6,\r
+       X_EVENT_INIT                   =  7,\r
+\r
+       // 公開イベント\r
+       /* @const */\r
+       X_EVENT_XDOM_READY             =  8,\r
+       \r
+       X_EVENT_COMPLETE               =  9,\r
+       X_EVENT_READY                  = 10,\r
+       X_EVENT_SUCCESS                = 11,\r
+       X_EVENT_ERROR                  = 12,\r
+       X_EVENT_PROGRESS               = 13,\r
+       X_EVENT_BEFORE_CANCEL          = 14,\r
+       X_EVENT_CANCELED               = 15,\r
+       X_EVENT_TIMEOUT                = 16,\r
+\r
+       /* @const */\r
+       X_EVENT_BEFORE_KILL_INSTANCE   = 17,\r
+       /* @const */\r
+       X_EVENT_KILL_INSTANCE_CANCELED = 18,\r
+       /* @const */\r
+       X_EVENT_KILL_INSTANCE          = 19,\r
+       \r
+       X_EVENT_VIEW_ACTIVATE          = 20,\r
+       X_EVENT_VIEW_DEACTIVATE        = 21,\r
+       X_EVENT_VIEW_RESIZED           = 22,\r
+       X_EVENT_VIEW_TURNED            = 23,\r
+\r
+       X_EVENT_BASE_FONT_RESIZED      = 24,\r
+\r
+       X_EVENT_BEFORE_UPDATE          = 25,\r
+       X_EVENT_UPDATED                = 26,\r
+       X_EVENT_AFTER_UPDATE           = 27,\r
+\r
+       X_EVENT_HASH_CHANGED           = 28,\r
+\r
+\r
+       X_EVENT_BEFORE_UNLOAD          = 29,\r
+       X_EVENT_UNLOAD                 = 30,\r
+       \r
+       X_EVENT_BACKEND_READY          = 31,\r
+       X_EVENT_BACKEND_NONE           = 32,\r
+       X_EVENT_BACKEND_RESEARCH       = 33,\r
+       X_EVENT_BACKEND_CHANGED        = 34,\r
+       \r
+       X_EVENT_ANIME_BEFORE_START     = 35,\r
+       X_EVENT_ANIME_START            = 36,\r
+       X_EVENT_ANIME                  = 37,\r
+       X_EVENT_ANIME_END              = 38,\r
+       X_EVENT_ANIME_BEFORE_STOP      = 39,\r
+       X_EVENT_ANIME_STOP             = 40,\r
+       \r
+       X_EVENT_GPU_RELEASED           = 41,\r
+\r
+       X_EVENT_MEDIA_PLAYING          = 42,\r
+       X_EVENT_MEDIA_BEFORE_LOOP      = 43,\r
+       X_EVENT_MEDIA_LOOPED           = 44,\r
+       X_EVENT_MEDIA_PAUSED           = 45,\r
+       X_EVENT_MEDIA_ENDED            = 46,\r
+       X_EVENT_MEDIA_WAITING          = 47,\r
+       X_EVENT_MEDIA_SEEKING          = 48,\r
+       \r
+       X_Event_last                   = 48;\r
 \r
 /**\r
  * フレームワーク内で定義されたイベント。\r
@@ -62,100 +121,110 @@ X_TEMP.SYSTEM_EVENT_INIT     = 7;
  * @alias X.Event\r
  * @enum {number}\r
  */\r
-var X_Event = X[ 'Event' ] = {\r
+X[ 'Event' ] = {\r
        /**\r
         * X.ViewPort で発生する。DomContentLoaded に相当。document.body.innerHTML の内容から X.Node ツリーの作成が完了した。\r
         * このイベント以降、X.Doc.create(), X.Doc.find() 等が可能になる。\r
-        * @const\r
         */\r
-       'XDOM_READY'             :  8,\r
+       'XDOM_READY'             : X_EVENT_XDOM_READY,\r
        \r
-       'COMPLETE'               :  9,\r
-       'READY'                  : 10,\r
-       'SUCCESS'                : 11,\r
-       'ERROR'                  : 12,\r
-       'PROGRESS'               : 13,\r
-       'BEFORE_CANCEL'          : 14,\r
-       'CANCELED'               : 15,\r
-       'TIMEOUT'                : 16,\r
+       'COMPLETE'               : X_EVENT_COMPLETE,\r
+       'READY'                  : X_EVENT_READY,\r
+       'SUCCESS'                : X_EVENT_SUCCESS,\r
+       'ERROR'                  : X_EVENT_ERROR,\r
+       'PROGRESS'               : X_EVENT_PROGRESS,\r
+       'BEFORE_CANCEL'          : X_EVENT_BEFORE_CANCEL,\r
+       'CANCELED'               : X_EVENT_CANCELED,\r
+       'TIMEOUT'                : X_EVENT_TIMEOUT,\r
 \r
        /**\r
         * X.EventDispatcher インスタンスを kill() すると発生。キャンセル可能。\r
         */     \r
-       'BEFORE_KILL_INSTANCE'   : 17,\r
+       'BEFORE_KILL_INSTANCE'   : X_EVENT_BEFORE_KILL_INSTANCE,\r
        /**\r
         * X.EventDispatcher インスタンスの kill() がキャンセルされた場合に発生。\r
         */     \r
-       'KILL_INSTANCE_CANCELED' : 18,\r
+       'KILL_INSTANCE_CANCELED' : X_EVENT_KILL_INSTANCE_CANCELED,\r
        /**\r
         * X.EventDispatcher インスタンスの kill が確定し、kill プロセスの前に発生。\r
         */\r
-       'KILL_INSTANCE'          : 19,\r
+       'KILL_INSTANCE'          : X_EVENT_KILL_INSTANCE,\r
 \r
        /**\r
         * X.ViewPort で発生する。'visibilitychange', 'pageshow', window.onfocus を検出している。\r
         */\r
-       'VIEW_ACTIVATE'          : 20,\r
+       'VIEW_ACTIVATE'          : X_EVENT_VIEW_ACTIVATE,\r
        /**\r
         * X.ViewPort で発生する。'visibilitychange', 'pagehide', window.onblur を検出している。\r
         */\r
-       'VIEW_DEACTIVATE'        : 21,\r
+       'VIEW_DEACTIVATE'        : X_EVENT_VIEW_DEACTIVATE,\r
        /**\r
         * X.ViewPort で発生する。\r
         */\r
-       'VIEW_RESIZED'           : 22,\r
+       'VIEW_RESIZED'           : X_EVENT_VIEW_RESIZED,\r
        /**\r
         * X.ViewPort で発生する。\r
         */\r
-       'VIEW_TURNED'            : 23,\r
+       'VIEW_TURNED'            : X_EVENT_VIEW_TURNED,\r
        /**\r
         * X.ViewPort で発生する。ベースフォントサイズが変化すると発生する。body 直下の隠し要素のテキストサイズの変化で検出している。\r
         */\r
-       'BASE_FONT_RESIZED'      : 24,\r
+       'BASE_FONT_RESIZED'      : X_EVENT_BASE_FONT_RESIZED,\r
 \r
 // in_page_jump\r
 // on_screen_keyboard_show\r
 // on_screen_keyboard_hide\r
 \r
-       'BEFORE_UPDATE'          : 25,// X_System このイベントで要素のサイズを取得すると無限ループに!\r
-       'UPDATED'                : 26,// X_System\r
-       'AFTER_UPDATE'           : 27,\r
+       /**\r
+        * X_System で発生する。このイベントで要素のサイズを取得すると無限ループに!\r
+        */\r
+       'BEFORE_UPDATE'          : X_EVENT_BEFORE_UPDATE,\r
+       /**\r
+        * X_System で発生する。X.Node ツリーへの変更を Real DOM に反映した。\r
+        */\r
+       'UPDATED'                : X_EVENT_UPDATED,\r
+       \r
+       /**\r
+        * X.ViewPort で発生する。X.Node ツリーへの変更を Real DOM に反映した。このイベントは lazyDispatch している。\r
+        */\r
+       'AFTER_UPDATE'           : X_EVENT_AFTER_UPDATE,\r
 \r
-       'HASH_CHANGED'           : 28,\r
+       'HASH_CHANGED'           : X_EVENT_HASH_CHANGED,\r
 \r
        /**\r
         * X.ViewPort で発生する。\r
         */\r
-       'BEFORE_UNLOAD'          : 29,\r
+       'BEFORE_UNLOAD'          : X_EVENT_BEFORE_UNLOAD,\r
        /**\r
         * X.ViewPort で発生する。\r
         */\r
-       'UNLOAD'                 : 30,\r
+       'UNLOAD'                 : X_EVENT_UNLOAD,\r
        \r
-       'BACKEND_READY'          : 31,\r
-       'BACKEND_NONE'           : 32,\r
-       'BACKEND_RESEARCH'       : 33,\r
-       'BACKEND_CHANGED'        : 34,\r
+       'BACKEND_READY'          : X_EVENT_BACKEND_READY,\r
+       'BACKEND_NONE'           : X_EVENT_BACKEND_NONE,\r
+       'BACKEND_RESEARCH'       : X_EVENT_BACKEND_RESEARCH,\r
+       'BACKEND_CHANGED'        : X_EVENT_BACKEND_CHANGED,\r
        \r
-       'ANIME_BEFORE_START'     : 35,\r
-       'ANIME_START'            : 36,\r
-       'ANIME'                  : 37,\r
-       'ANIME_END'              : 38,\r
-       'ANIME_BEFORE_STOP'      : 39, // xnode.stop() のみ、指定時間による停止では呼ばれない\r
-       'ANIME_STOP'             : 40,\r
+       'ANIME_BEFORE_START'     : X_EVENT_ANIME_BEFORE_START,\r
+       'ANIME_START'            : X_EVENT_ANIME_START,\r
+       'ANIME'                  : X_EVENT_ANIME,\r
+       'ANIME_END'              : X_EVENT_ANIME_END,\r
+       /**\r
+        * xnode.stop() のみ、指定時間による停止では呼ばれない\r
+        */\r
+       'ANIME_BEFORE_STOP'      : X_EVENT_ANIME_BEFORE_STOP,\r
+       'ANIME_STOP'             : X_EVENT_ANIME_STOP,\r
        \r
-       'GPU_RELEASED'           : 41,\r
-\r
-       'MEDIA_PLAYING'          : 42,\r
-       'MEDIA_BEFORE_LOOP'      : 43, // cancelable\r
-       'MEDIA_LOOPED'           : 44,\r
-       'MEDIA_PAUSED'           : 45,\r
-       'MEDIA_ENDED'            : 46,\r
-       'MEDIA_WAITING'          : 47,\r
-       'MEDIA_SEEKING'          : 48\r
-};\r
+       'GPU_RELEASED'           : X_EVENT_GPU_RELEASED,\r
 \r
-X_Event_last = 48;\r
+       'MEDIA_PLAYING'          : X_EVENT_MEDIA_PLAYING,\r
+       'MEDIA_BEFORE_LOOP'      : X_EVENT_MEDIA_BEFORE_LOOP, // cancelable\r
+       'MEDIA_LOOPED'           : X_EVENT_MEDIA_LOOPED,\r
+       'MEDIA_PAUSED'           : X_EVENT_MEDIA_PAUSED,\r
+       'MEDIA_ENDED'            : X_EVENT_MEDIA_ENDED,\r
+       'MEDIA_WAITING'          : X_EVENT_MEDIA_WAITING,\r
+       'MEDIA_SEEKING'          : X_EVENT_MEDIA_SEEKING\r
+};\r
 \r
 X_TEMP.onSystemReady.push(\r
        function(){\r
index 8741a0f..121525b 100644 (file)
@@ -4,7 +4,7 @@
  * \r
  * <p>Arrayには、__CallbackHash__ というハッシュ、または関数が蓄えられています。\r
  * \r
- * <p>また、イベントターゲット(EventDispatcher._rawObject)に渡された再利用可能クロージャの控えを _listeners[0] に記憶します。(ACTUAL_HANDLER)\r
+ * <p>また、イベントターゲット(EventDispatcher[ '_rawObject' ])に渡された再利用可能クロージャの控えを _listeners[0] に記憶します。(ACTUAL_HANDLER)\r
  * \r
  * <p>dispatch 中の状態と操作を記録し不整合が起きないようにするためのプロパティ(_listeners[1]~_listeners[4])を持ちます。イベントID が 5 から始まるのはこのためです。\r
  * \r
@@ -50,6 +50,9 @@ var X_EventDispatcher_once       = false,
        \r
        X_EventDispatcher_safariPreventDefault = false, // Safari3-\r
        \r
+       /**\r
+        * @enum {number} \r
+        */\r
        X_EventDispatcher_EVENT_TARGET_TYPE = {\r
                OTHER        : 0,\r
                XHR          : 1,\r
@@ -87,7 +90,7 @@ var X_EventDispatcher_once       = false,
  * <p>listen, unlisten, dispatch という addEventListener, removeEventListener, dispatchEvent に対応する関数を持ちます。\r
  * また listening という ActionScript3 の hasEventListener に相当する関数を持ちます。\r
  * \r
- * <p>イベントターゲットオブジェクト(widnow, document, HTMLElement, XHR, Silverlight 等)が this._rawObject に設定されていた場合に、それらへ実際のイベント登録・解除も行います。\r
+ * <p>イベントターゲットオブジェクト(widnow, document, HTMLElement, XHR, Silverlight 等)が this[ '_rawObject' ] に設定されていた場合に、それらへ実際のイベント登録・解除も行います。\r
  * このイベントの登録・解除はクロスブラウザで、IE5~8 の独自イベントの差異を吸収し、DOM0 に対しても複数のコールバックを登録することができます。\r
  * \r
  * <p>またコールバックに対して、this コンテキストや、追加の引数を指定もできます。 this コンテキストを指定しなかった場合、EventDispatcher インスタンスがコールバックの this になります。 \r
@@ -102,8 +105,8 @@ var X_EventDispatcher_once       = false,
  * @constructs EventDispatcher\r
  * @extends {__ClassBase__}\r
  */\r
-var EventDispatcher = X.EventDispatcher =\r
-       X.Class.create(\r
+var X_EventDispatcher = X.EventDispatcher =\r
+       X_Class_create(\r
                'EventDispatcher',\r
                \r
            /** @lends EventDispatcher.prototype */\r
@@ -141,15 +144,15 @@ var EventDispatcher = X.EventDispatcher =
                 * アプリケーション独自のイベントをやり取りしたいだけ、という場合イベントターゲットは指定しません。\r
             * @param {object=} opt_rawObject\r
             */\r
-                       Constructor : function( opt_rawObject ){\r
+                       'Constructor' : function( opt_rawObject ){\r
                                if( opt_rawObject ){\r
-                                       this._rawObject = opt_rawObject;\r
+                                       this[ '_rawObject' ] = opt_rawObject;\r
                                };\r
                        },\r
 \r
-                       dispatch : X_EventDispatcher_dispatch,\r
+                       'dispatch' : X_EventDispatcher_dispatch,\r
                        \r
-                       listen : X_EventDispatcher_listen,\r
+                       'listen' : X_EventDispatcher_listen,\r
                \r
                /**\r
                 * dispatch 時に自動で unlisten されるフラグを立てて listen する。\r
@@ -159,24 +162,24 @@ var EventDispatcher = X.EventDispatcher =
                 * @param {Array} [opt_arg3=] コールバック時の引数を配列に入れる。引数がひとつでも配列を使用する。省略した場合引数なし。unlisten() に使用するので、配列も適宜に保持しておくこと。\r
                 * @return {EventDispatcher} チェインメソッド\r
                 */\r
-                       listenOnce : function( type, opt_arg1, opt_arg2, opt_arg3 ){\r
+                       'listenOnce' : function( type, opt_arg1, opt_arg2, opt_arg3 ){\r
                                X_EventDispatcher_once = true;\r
-                               this.listen( type, opt_arg1, opt_arg2, opt_arg3 );\r
+                               this[ 'listen' ]( type, opt_arg1, opt_arg2, opt_arg3 );\r
                                X_EventDispatcher_once = false;\r
                                return this;\r
                        },\r
 \r
-                       unlisten : X_EventDispatcher_unlisten,\r
+                       'unlisten' : X_EventDispatcher_unlisten,\r
 \r
                /**\r
                 * <p>イベントリスナの登録状況を真偽値で返す。戻り値が数値(index)の場合もあるが、これは内部のみで使用。\r
-                * <p>this.listening(); のように type を省略した場合、一つでも登録があれば true を返す。\r
-                * <p>this.listening( 'myevent' ); と type だけを与えた場合、その type に登録があれば true を返す。\r
+                * <p>this[ 'listening' ](); のように type を省略した場合、一つでも登録があれば true を返す。\r
+                * <p>this[ 'listening' ]( 'myevent' ); と type だけを与えた場合、その type に登録があれば true を返す。\r
                 * <p>type と イベントリスナの組み合わせが登録されているかを調べる場合は、listen 時の thisObject や args(Array) も一致させて渡す必要がある。\r
                 * \r
                 * @example \r
-                *  this.listen( [ 'myevent', 'yourevent' ], this, onMyEvent, args = [ 1, 'a' ] );\r
-                *  this.listening( 'myevent', this, onMyEvent, args ) === true;\r
+                *  this[ 'listen' ]( [ 'myevent', 'yourevent' ], this, onMyEvent, args = [ 1, 'a' ] );\r
+                *  this[ 'listening' ]( 'myevent', this, onMyEvent, args ) === true;\r
                 * \r
                 * @return {number|boolean}\r
                 * @param {string|number} opt_type\r
@@ -184,7 +187,7 @@ var EventDispatcher = X.EventDispatcher =
                 * @param {function|Array} opt_arg2\r
                 * @param {Array} opt_arg3\r
                 */                     \r
-                       listening : function( opt_type, opt_arg1, opt_arg2, opt_arg3 ){\r
+                       'listening' : function( opt_type, opt_arg1, opt_arg2, opt_arg3 ){\r
                                var listeners = this[ '_listeners' ],\r
                                        lock      = X_EventDispatcher_lock || X_EventDispatcher_unlock,\r
                                        list, cbHash, unlistens, i, f;\r
@@ -193,7 +196,7 @@ var EventDispatcher = X.EventDispatcher =
                                if( !listeners || !( list = listeners[ opt_type ] ) ) return false;\r
                                if( opt_arg1 === undefined ) return true;\r
                                \r
-                               if( opt_arg1.k ){\r
+                               if( opt_arg1.kind ){\r
                                        cbHash = opt_arg1;\r
                                } else {\r
                                        cbHash = X_Callback_classifyCallbackArgs( opt_arg1, opt_arg2, opt_arg3, this );\r
@@ -202,12 +205,12 @@ var EventDispatcher = X.EventDispatcher =
                                if( ( unlistens = listeners[ X_Listeners_.UNLISTENS ] ) && ( unlistens = unlistens[ opt_type ] ) ){\r
                                        for( i = unlistens.length; i; ){\r
                                                f = unlistens[ --i ];\r
-                                               if( f === cbHash || ( f.x === cbHash.x && f.f === cbHash.f && f.s === cbHash.s && f.lock === lock ) ) return false;\r
+                                               if( f === cbHash || ( f.context === cbHash.context && f.func === cbHash.func && f.supplement === cbHash.supplement && f.lock === lock ) ) return false;\r
                                        };\r
                                };\r
                                for( i = list.length; i; ){\r
                                        f = list[ --i ];\r
-                                       if( f === cbHash || ( f.x === cbHash.x && f.f === cbHash.f && f.s === cbHash.s && f.lock === lock ) ){\r
+                                       if( f === cbHash || ( f.context === cbHash.context && f.func === cbHash.func && f.supplement === cbHash.supplement && f.lock === lock ) ){\r
                                                // index を要求された場合、lock されていない、または unlock なら index を返す\r
                                                return X_EventDispatcher_needsIndex ? i : true;\r
                                        };\r
@@ -218,20 +221,20 @@ var EventDispatcher = X.EventDispatcher =
                /**\r
                 * delay(ミリ秒)後にイベントを dispatch する。戻り値は uid = X.Timer.once() のタイマーID(数値)。X.Timer.remove(uid) でタイマーを解除して dispatch を中止できる。\r
                 * kill() 時には内部でまだ呼ばれていないタイマーの X.Timer.remove() が行われる。インスタンスが破棄された後にタイマーが呼ばれることがないので神経質にならなくても安全に使える。\r
-                * @example this.asyncDispatch( 'myevent' );\r
+                * @example this[ 'asyncDispatch' ]( 'myevent' );\r
                 * // どちらのコードも同じ動作をする。\r
-                * this.asyncDispatch( 0, 'myevent' );\r
+                * this[ 'asyncDispatch' ]( 0, 'myevent' );\r
                 * @param {number|eventHash|string} delay ms 省略した場合は 0 として扱う asyncDispatch( 'myevent' ) -> asyncDispatch( 0, 'myevent' )\r
                 * @param {eventHash|string|number} e イベントを表す数値、文字列、{ type : XXX, ... } なオブジェクト\r
                 * @return {number} X.Timer.add() の戻り値\r
                 */                     \r
-                       asyncDispatch : function( delay, e ){\r
+                       'asyncDispatch' : function( delay, e ){\r
                                var timerID;\r
                                if( delay && e === undefined ){\r
                                        e = delay;\r
                                        delay = 0;\r
                                };\r
-                               timerID = X.Timer.add( delay, 1, this, X_EventDispatcher_dispatch, [ e ] );\r
+                               timerID = X_Timer_add( delay, 1, this, X_EventDispatcher_dispatch, [ e ] );\r
                                X_EventDispatcher_LAZY_TIMERS[ timerID ] = this;\r
                                return timerID;\r
                        }\r
@@ -261,10 +264,10 @@ function X_EventDispatcher_dispatch( e ){
        \r
        // 数値, 文字が渡された場合\r
        if( !type ){\r
-               e = { type : type = e };\r
+               e = { 'type' : type = e };\r
        };\r
-       e.target        = e.target || this;\r
-       e.currentTarget = e.currentTarget || this;\r
+       e[ 'target' ]        = e[ 'target' ] || this;\r
+       e[ 'currentTarget' ] = e[ 'currentTarget' ] || this;\r
        \r
        if( listeners[ X_Listeners_.DISPATCHING ] ){\r
                ++listeners[ X_Listeners_.DISPATCHING ];\r
@@ -295,7 +298,7 @@ function X_EventDispatcher_dispatch( e ){
                        unlistens.indexOf( f ) === -1 && ( unlistens[ unlistens.length ] = f );\r
                };\r
 \r
-               if( r & X.Callback.STOP_NOW ){\r
+               if( r & X_Callback_STOP_NOW ){\r
                        sysOnly = true;\r
                };\r
                ret |= X_Type_isFinite( r ) ? r : 0;\r
@@ -311,12 +314,11 @@ function X_EventDispatcher_dispatch( e ){
                                f = list[ i ];\r
                                X_EventDispatcher_once = f[ 4 ];\r
                                X_EventDispatcher_lock = f[ 5 ];\r
-                               this.listen( f[ 0 ], f[ 1 ], f[ 2 ], f[ 3 ] );\r
-                               X_EventDispatcher_once = false;\r
-                               X_EventDispatcher_lock = false;\r
+                               this[ 'listen' ]( f[ 0 ], f[ 1 ], f[ 2 ], f[ 3 ] );     \r
                                f.length = 0;\r
                        };\r
                        list.length = 0;\r
+                       X_EventDispatcher_once = X_EventDispatcher_lock = false;\r
                        delete listeners[ X_Listeners_.RESERVES ];\r
                };              \r
                \r
@@ -330,7 +332,7 @@ function X_EventDispatcher_dispatch( e ){
                                //if( X_EMPTY_OBJECT[ type ] ) continue;\r
                                list = unlistens[ type ];\r
                                for( i = list.length; i; ){\r
-                                       this.unlisten( type, list[ --i ] );\r
+                                       this[ 'unlisten' ]( type, list[ --i ] );\r
                                };\r
                                list.length = 0;\r
                                delete unlistens[ type ];\r
@@ -347,7 +349,7 @@ function X_EventDispatcher_dispatch( e ){
                        for( timerID in X_EventDispatcher_LAZY_TIMERS ){\r
                                if( X_EventDispatcher_LAZY_TIMERS[ timerID ] === this ) return ret;\r
                        }; */\r
-                       this.kill();\r
+                       this[ 'kill' ]();\r
                };\r
        };\r
        \r
@@ -359,25 +361,25 @@ function X_EventDispatcher_dispatch( e ){
  * ユーザーが触ることは無いが、システム内部でロックフラグを立てたリスナは、立てられていないフラグとは区別される。\r
  * この仕組みによってシステムの登録したリスナを、システム外から不用意に削除されることを回避する。\r
  * @example // 'myEvent' に対して、 this コンテキストを指定して 、コールバック関数を渡す。\r
- * this.listen( 'myEvent', context, func );\r
+ * this[ 'listen' ]( 'myEvent', context, func );\r
  * // 'myEvent' に対して、 this コンテキストを指定して 、コールバック関数と追加の引数を渡す。\r
  * args = [ 'arg1', 'arg2', 3 ]; // unlisten( 'myEvent', context, func, args ) で使用するので Array も控えておく。\r
- * this.listen( 'myEvent', context, func, args );\r
+ * this[ 'listen' ]( 'myEvent', context, func, args );\r
  * // 'myEvent' に対して、 listener オブジェクトを渡す。listener は handleEvent という関数を持つオブジェクトのこと。\r
  * listener.handleEvent = function( e ){};\r
- * this.listen( 'myEvent', listener );\r
+ * this[ 'listen' ]( 'myEvent', listener );\r
  * // 'myEvent' に対して、 listener オブジェクトと追加の引数を渡す。\r
  * listener.handleEvent = function( e, arg1, arg2, arg3 ){};\r
- * this.listen( 'myEvent', listener, [ arg1, arg2, arg3 ] );\r
+ * this[ 'listen' ]( 'myEvent', listener, [ arg1, arg2, arg3 ] );\r
  * // 'myEvent' に対して、 function を渡す。\r
- * this.listen( 'myEvent', onMyEvent );\r
+ * this[ 'listen' ]( 'myEvent', onMyEvent );\r
  * // 'myEvent' に対して、 function と追加の引数を渡す。\r
- * this.listen( 'myEvent', onMyEvent, args );\r
+ * this[ 'listen' ]( 'myEvent', onMyEvent, args );\r
  * // 次の二つは同じ動作です。 this コンテキストが与えられなかった場合、コールバックの this は発火元インスタンスになります。\r
- * this.listen( 'myEvent', this [, func [, args ] ] );\r
- * this.listen( 'myEvent' [, func [, args ] ] );\r
+ * this[ 'listen' ]( 'myEvent', this [, func [, args ] ] );\r
+ * this[ 'listen' ]( 'myEvent' [, func [, args ] ] );\r
  * // 複数のイベントタイプを同時に登録。コールバックは同じ指定が使われる。\r
- * this.listen( [ 'open', 'close', 'ready' ], onUpdate );\r
+ * this[ 'listen' ]( [ 'open', 'close', 'ready' ], onUpdate );\r
  * \r
  * @alias EventDispatcher.prototype.listen\r
  * @param {string|number|Array.<string,number>} type 配列を指定した場合、複数のイベントタイプに対して同じコールバックを登録する。\r
@@ -400,15 +402,15 @@ function X_EventDispatcher_listen( type, opt_arg1, opt_arg2, opt_arg3 ){
        \r
        if( X_Type_isArray( type ) ){\r
                for( i = type.length; i; ){\r
-                       this.listen( type[ --i ], opt_arg1, opt_arg2, opt_arg3 );\r
+                       this[ 'listen' ]( type[ --i ], opt_arg1, opt_arg2, opt_arg3 );\r
                };\r
                return this;\r
        };\r
        \r
-       raw = this._rawObject || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this );\r
+       raw = this[ '_rawObject' ] || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this );\r
        add = raw && ( !listeners || !listeners[ type ] ) && X_Type_isString( type );\r
 \r
-       if( this.listening( type, opt_arg1 || this, opt_arg2, opt_arg3 ) ) return this;\r
+       if( this[ 'listening' ]( type, opt_arg1 || this, opt_arg2, opt_arg3 ) ) return this;\r
 \r
        if( !listeners ) listeners = this[ '_listeners' ] = {};\r
        list = listeners[ type ] || ( listeners[ type ] = [] );\r
@@ -428,11 +430,11 @@ function X_EventDispatcher_listen( type, opt_arg1, opt_arg2, opt_arg3 ){
  */\r
 function X_EventDispatcher_systemListen( that, type, opt_arg1, opt_arg2, opt_arg3 ){\r
        X_EventDispatcher_lock = true;\r
-       that.listen( type, opt_arg1, opt_arg2, opt_arg3 );\r
+       that[ 'listen' ]( type, opt_arg1, opt_arg2, opt_arg3 );\r
        X_EventDispatcher_lock = false;\r
 };\r
 \r
-// TODO this.listen(type) は this リスナの登録なのに、this.unlisten(type)は全てのtypeの削除、と不一致\r
+// TODO this[ 'listen' ](type) は this リスナの登録なのに、this[ 'unlisten' ](type)は全てのtypeの削除、と不一致\r
 \r
 /**\r
  * イベントリスナの解除を行う。登録時と同じ引数を与える必要がある。kill() ですべてのイベントが解除されるので、途中で解除されるイベント以外は kill() に任せてしまってよい。\r
@@ -450,7 +452,7 @@ function X_EventDispatcher_unlisten( opt_type, opt_arg1, opt_arg2, opt_arg3 ){
        \r
        if( X_Type_isArray( opt_type ) ){\r
                for( i = opt_type.length; i; ){\r
-                       this.unlisten( opt_type[ --i ], opt_arg1, opt_arg2, opt_arg3 );\r
+                       this[ 'unlisten' ]( opt_type[ --i ], opt_arg1, opt_arg2, opt_arg3 );\r
                        if( !opt_type[ i ] ){\r
                                alert( '不正な unlisten Array' );\r
                        };\r
@@ -465,9 +467,9 @@ function X_EventDispatcher_unlisten( opt_type, opt_arg1, opt_arg2, opt_arg3 ){
                        if( opt_type < X_Listeners_.KILL_RESERVED ) continue;\r
                        list = listeners[ opt_type ];\r
                        for( i = list.length; i; ){\r
-                               this.unlisten( opt_type, list[ --i ] ); // override されていることがあるので、必ず unlisten を使用\r
+                               this[ 'unlisten' ]( opt_type, list[ --i ] ); // override されていることがあるので、必ず unlisten を使用\r
                        };\r
-                       // this.unlisten( opt_type ); これは無茶!\r
+                       // this[ 'unlisten' ]( opt_type ); これは無茶!\r
                };\r
                return this;\r
        } else\r
@@ -475,7 +477,7 @@ function X_EventDispatcher_unlisten( opt_type, opt_arg1, opt_arg2, opt_arg3 ){
                // 同一タイプを全て削除\r
                if( list = listeners[ opt_type ] ){\r
                        for( i = list.length; i; ){\r
-                               this.unlisten( opt_type, list[ --i ] ); // override されていることがあるので、必ず unlisten を使用\r
+                               this[ 'unlisten' ]( opt_type, list[ --i ] ); // override されていることがあるので、必ず unlisten を使用\r
                        };\r
                };\r
                return this;\r
@@ -492,7 +494,7 @@ function X_EventDispatcher_unlisten( opt_type, opt_arg1, opt_arg2, opt_arg3 ){
        };\r
        \r
        X_EventDispatcher_needsIndex = true;\r
-       i = this.listening( opt_type, opt_arg1, opt_arg2, opt_arg3 );\r
+       i = this[ 'listening' ]( opt_type, opt_arg1, opt_arg2, opt_arg3 );\r
        X_EventDispatcher_needsIndex = false;\r
        if( i === false ) return this;\r
 \r
@@ -507,7 +509,7 @@ function X_EventDispatcher_unlisten( opt_type, opt_arg1, opt_arg2, opt_arg3 ){
                delete f.once;\r
                list.splice( i, 1 );\r
                if( !list.length ){\r
-                       raw  = this._rawObject || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this );\r
+                       raw  = this[ '_rawObject' ] || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this );\r
                        delete listeners[ opt_type ];\r
                        //empty = X_Object_isEmpty( listeners );\r
                        // TODO カウンター\r
@@ -531,7 +533,7 @@ function X_EventDispatcher_unlisten( opt_type, opt_arg1, opt_arg2, opt_arg3 ){
  */\r
 function X_EventDispatcher_systemUnlisten( that, type, opt_arg1, opt_arg2, opt_arg3 ){\r
        X_EventDispatcher_unlock = true;\r
-       that.unlisten( type, opt_arg1, opt_arg2, opt_arg3 );\r
+       that[ 'unlisten' ]( type, opt_arg1, opt_arg2, opt_arg3 );\r
        X_EventDispatcher_unlock = false;\r
 };\r
 \r
@@ -541,7 +543,7 @@ function X_EventDispatcher_addEvent( that, type, raw, list ){
        \r
        if( X_Type_isArray( type ) ){\r
                for( i = type.length; i; ){\r
-                       X_EventDispatcher_systemListen( that, type[ --i ], X.emptyFunction );\r
+                       X_EventDispatcher_systemListen( that, type[ --i ], X_emptyFunction );\r
                        console.log( 'events fix > ' + type[ i ] );\r
                };\r
        } else {\r
@@ -641,7 +643,7 @@ var X_EventDispatcher_actualAddEvent =
  * animation も怪しい、、、\r
  */\r
 function X_EventDispatcher_iOSTransitionEndDispatch( e ){\r
-       return X_Node_getXNode( this ).dispatch( X_Event_RenameTo[ e.type ] || e.type );\r
+       return X_Node_getXNode( this )[ 'dispatch' ]( X_Event_RenameTo[ e.type ] || e.type );\r
 };\r
 \r
 /*\r
@@ -649,7 +651,7 @@ function X_EventDispatcher_iOSTransitionEndDispatch( e ){
  * http://msdn.microsoft.com/ja-jp/library/cc189018%28v=vs.95%29.aspx#the_sender_parameter_and_event_data\r
  */\r
 function X_EventDispatcher_sliverLightDispatch( sender, e, type ){\r
-       return this.dispatch( type );\r
+       return this[ 'dispatch' ]( type );\r
 };\r
 \r
 function X_EventDispatcher_removeEvent( that, type, raw, list, skip ){\r
@@ -658,7 +660,7 @@ function X_EventDispatcher_removeEvent( that, type, raw, list, skip ){
        \r
        if( X_Type_isArray( type ) ){\r
                for( i = type.length; i; ){\r
-                       X_EventDispatcher_systemUnlisten( that, type[ --i ], X.emptyFunction );\r
+                       X_EventDispatcher_systemUnlisten( that, type[ --i ], X_emptyFunction );\r
                };\r
        } else {\r
                X_EventDispatcher_actualRemoveEvent( that, type, raw, list, skip );\r
@@ -716,7 +718,7 @@ var X_EventDispatcher_actualRemoveEvent =
                                \r
                                case X_EventDispatcher_EVENT_TARGET_TYPE.XHR :\r
                                        X_Callback_correct( raw[ 'on' + type ] );\r
-                                       raw[ 'on' + type ] = X.emptyFunction;\r
+                                       raw[ 'on' + type ] = X_emptyFunction;\r
                                        raw[ 'on' + type ] = '';\r
                                        break;\r
 \r
@@ -724,7 +726,7 @@ var X_EventDispatcher_actualRemoveEvent =
                                        if( raw.attachEvent ){\r
                                                raw.detachEvent( 'on' + type, that[ '_listeners' ][ X_Listeners_.ACTUAL_HANDLER ] );\r
                                        } else {\r
-                                               raw[ 'on' + type ] = X.emptyFunction;\r
+                                               raw[ 'on' + type ] = X_emptyFunction;\r
                                                raw[ 'on' + type ] = '';\r
                                        };\r
                                        \r
@@ -745,12 +747,12 @@ var X_EventDispatcher_actualRemoveEvent =
                                \r
                                case X_EventDispatcher_EVENT_TARGET_TYPE.XHR :\r
                                        X_Callback_correct( raw[ 'on' + type ] );\r
-                                       raw[ 'on' + type ] = X.emptyFunction;\r
+                                       raw[ 'on' + type ] = X_emptyFunction;\r
                                        raw[ 'on' + type ] = '';\r
                                        break;\r
 \r
                                default :\r
-                                       raw[ 'on' + type ] = X.emptyFunction;\r
+                                       raw[ 'on' + type ] = X_emptyFunction;\r
                                        raw[ 'on' + type ] = '';\r
                                        \r
                                        if( !skip ){\r
@@ -771,23 +773,19 @@ var X_EventDispatcher_actualHandleEvent =
                (function(){\r
                        var ret;\r
                        \r
-                       //if( event.type === 'readystatechange' && this._tag && X.Dom.Event._LOAD_FIX_TAGS[ this._tag ] ){\r
-                               //type = 'readystatechange';\r
-                       //};\r
-                       \r
-                       ret = this.dispatch( new X.Dom.Event( event, this, this._rawObject ) );\r
+                       ret = this[ 'dispatch' ]( new X_DomEvent( event, this, this[ '_rawObject' ] ) );\r
 \r
-                       if( ret & X.Callback.STOP_PROPAGATION ){\r
+                       if( ret & X_Callback_STOP_PROPAGATION ){\r
                                event.cancelBubble = true;\r
                        };\r
-                       if( ret & X.Callback.PREVENT_DEFAULT ){\r
-                               this._tag === 'A' && this._rawObject.blur();\r
+                       if( ret & X_Callback_PREVENT_DEFAULT ){\r
+                               this[ '_tag' ] === 'A' && this[ '_rawObject' ].blur();\r
                                return event.returnValue = false;\r
                        };\r
                }) :\r
        //X_UA_EVENT.W3C || X_UA_EVENT.DOM0\r
                (function( e ){\r
-                       var ev  = new X.Dom.Event( e, this ),\r
+                       var ev  = new X_DomEvent( e, this ),\r
                                ret = X_Callback_NONE,\r
                                i, l;\r
                        //console.log( '>>>>>>>>>> ' + e.type );\r
@@ -795,22 +793,22 @@ var X_EventDispatcher_actualHandleEvent =
                        if( X_Type_isArray( ev ) ){\r
                                if( ev.length === 0 ){\r
                                        // TouchEvent の後に発生した MouseEvent のキャンセル\r
-                                       ret = X.Callback.STOP_PROPAGATION | X.Callback.PREVENT_DEFAULT;\r
+                                       ret = X_Callback_STOP_PROPAGATION | X_Callback_PREVENT_DEFAULT;\r
                                } else {\r
                                        for( i = 0, l = ev.length; i < l; ++i ){\r
                                                //console.log( 'handleEvent ' + ev[ i ].type );\r
-                                               ret |= this.dispatch( ev[ i ] ) || 0;\r
-                                       };                              \r
+                                               ret |= this[ 'dispatch' ]( ev[ i ] ) || 0;\r
+                                       };\r
                                };\r
                        } else {\r
-                               ret = this.dispatch( ev );\r
+                               ret = this[ 'dispatch' ]( ev );\r
                        };\r
                        \r
-                       if( ret & X.Callback.STOP_PROPAGATION ){\r
+                       if( ret & X_Callback_STOP_PROPAGATION ){\r
                                e.stopPropagation();\r
                        };\r
-                       if( ret & X.Callback.PREVENT_DEFAULT ){\r
-                               this._tag === 'A' && this._rawObject.blur();\r
+                       if( ret & X_Callback_PREVENT_DEFAULT ){\r
+                               this[ '_tag' ] === 'A' && this[ '_rawObject' ].blur();\r
                                e.preventDefault();\r
                                if( X_UA[ 'WebKit' ] < 525.13 ){ // Safari3-\r
                                        if( e.type === 'click' || e.type === 'dbclick' ){\r
@@ -823,7 +821,7 @@ var X_EventDispatcher_actualHandleEvent =
 \r
 if( X_UA[ 'WebKit' ] < 525.13 ){ // Safari3-\r
        document.documentElement.onclick =\r
-       document.documentElement.ondbclick = function( e ){\r
+       document.documentElement[ 'ondbclick' ] = function( e ){\r
                        if( X_EventDispatcher_safariPreventDefault ){\r
                                X_EventDispatcher_safariPreventDefault = false;\r
                                e.preventDefault();\r
@@ -836,7 +834,7 @@ if( X_UA[ 'WebKit' ] < 525.13 ){ // Safari3-
 // 退避したイベントの復帰\r
 function X_EventDispatcher_toggleAllEvents( that, add ){\r
        var list = that[ '_listeners' ],\r
-               raw  = that._rawObject || X_UA_DOM.IE4 && X_Node__ie4getRawNode( that ),\r
+               raw  = that[ '_rawObject' ] || X_UA_DOM.IE4 && X_Node__ie4getRawNode( that ),\r
                func = add ? X_EventDispatcher_addEvent : X_EventDispatcher_removeEvent,\r
                type;\r
        if( !list || !raw ) return;\r
index d2dbd8f..41b4fcf 100644 (file)
@@ -42,7 +42,7 @@ var
         * @function\r
         * @return {number} ミリ秒\r
         */\r
-       X_Timer_now = Date.now || function(){ return +new Date; },\r
+       X_Timer_now = Date.now || ( function(){ return +new Date; } ),\r
 \r
        X_Timer_SET_TIMEOUT   = window.setTimeout,\r
        X_Timer_CLEAR_TIMEOUT = window.clearTimeout,\r
@@ -79,7 +79,82 @@ var
        \r
        X_Timer_REQ_FRAME_LIST = [],\r
        X_Timer_requestID      = 0,\r
-       X_Timer_busyOnFrame    = false;\r
+       X_Timer_busyOnFrame    = false,\r
+\r
+       /**\r
+        * requestAnimationFrame をセットします。\r
+        * @alias X.Timer.requestFrame\r
+        * @function\r
+        * @param {*} args1 コールバックのための最大で 3 つの引数を指定します。参考:__CallbackHash__\r
+        * @param {*} args2\r
+        * @param {*} args3\r
+        * @return {number} タイマーID。1 以上の数値。タイマーの解除に使用。\r
+        */\r
+       X_Timer_requestFrame = X_Timer_REQ_ANIME_FRAME ?\r
+               (function( args1, args2, args3 ){\r
+                       var i = X_Timer_REQ_FRAME_LIST.length,\r
+                               f;\r
+                       i === 0 && ( X_Timer_requestID = X_Timer_REQ_ANIME_FRAME( X_Timer_onEnterFrame ) );\r
+                       f = X_Timer_REQ_FRAME_LIST[ i ] = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
+                       return f.uid = ++X_Timer_uid;\r
+               }) :\r
+               (function( args1, args2, args3 ){\r
+                       var i = X_Timer_REQ_FRAME_LIST.length,\r
+                               f;\r
+                       i === 0 && ( X_Timer_requestID = X_Timer_add( 0, 1, X_Timer_onEnterFrame ) );\r
+                       f = X_Timer_REQ_FRAME_LIST[ i ] = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
+                       return f.uid = ++X_Timer_uid;\r
+               }),\r
+\r
+       /**\r
+        * requestAnimationFrame を解除します。登録時に受け取ったタイマーIDを使用します。\r
+        * @alias X.Timer.cancelFrame\r
+        * @function\r
+        * @param {number} タイマーID\r
+        */\r
+       X_Timer_cancelFrame = X_Timer_CANCEL_ANIME_FRAME ?\r
+               (function( uid ){\r
+                       var list = X_Timer_REQ_FRAME_LIST,\r
+                               l    = list.length,\r
+                               i    = l,\r
+                               f;\r
+                       // fire 中の cancel\r
+                       if( X_Timer_busyOnFrame ){\r
+                               if( !X_Timer_removal ) X_Timer_removal = {};\r
+                               X_Timer_removal[ uid ] = true;\r
+                       } else {\r
+                               for( ; i; ){\r
+                                       if( ( f = list[ --i ] ).uid < uid ) break;\r
+                                       if( f.uid === uid ){\r
+                                               list.splice( i, 1 );\r
+                                               // gecko では無い場合がある\r
+                                               l === 1 && X_Timer_CANCEL_ANIME_FRAME && X_Timer_CANCEL_ANIME_FRAME( X_Timer_requestID );\r
+                                               break;\r
+                                       };\r
+                               };                              \r
+                       };\r
+               }) :\r
+               (function( uid ){\r
+                       var list = X_Timer_REQ_FRAME_LIST,\r
+                               l    = list.length,\r
+                               i    = l,\r
+                               f;\r
+                       // fire 中の cancel\r
+                       if( X_Timer_busyOnFrame ){\r
+                               if( !X_Timer_removal ) X_Timer_removal = {};\r
+                               X_Timer_removal[ uid ] = true;\r
+                       } else {\r
+                               for( ; i; ){\r
+                                       if( ( f = list[ --i ] ).uid < uid ) break;\r
+                                       if( f.uid === uid ){\r
+                                               list.splice( i, 1 );\r
+                                               l === 1 && X_Timer_remove( X_Timer_requestID );\r
+                                               break;\r
+                                       };\r
+                               };\r
+                       };\r
+               });\r
+\r
 \r
 // ------------------------------------------------------------------------- //\r
 // --- interface ----------------------------------------------------------- //\r
@@ -93,25 +168,41 @@ var
  * <p>setTimeout のコールバックに文字列しか指定できないブラウザがあり対策しています。\r
  * <p>requestAnimationFrame をラップします。ベンダープレフィックス付の requestAnimationFrame もない場合、setTimeout にフォールバックします。\r
  * \r
- * @example X.Timer.add( 1000, 5, thisContext, onTimer );\r
- * \r
  * @namespace X.Timer\r
  * @alias X.Timer\r
  */ \r
-X.Timer = {\r
+X[ 'Timer' ] = {\r
 \r
-       now : X_Timer_now,\r
+       'now'          : X_Timer_now,\r
+       \r
+       'add'          : X_Timer_add,\r
        \r
+       'once'         : X_Timer_once,\r
+       \r
+       'remove'       : X_Timer_remove,\r
+       \r
+       'requestFrame' : X_Timer_requestFrame,\r
+       \r
+       'cancelFrame'  : X_Timer_cancelFrame\r
+       \r
+};\r
+\r
+// ------------------------------------------------------------------------- //\r
+// --- implements ---------------------------------------------------------- //\r
+// ------------------------------------------------------------------------- //\r
+\r
        /**\r
         * タイマーをセットします。\r
+        * @alias X.Timer.add\r
         * @param {number} time ミリ秒\r
         * @param {number} opt_count 回数。省略可能。指定回数で自動でタイマーを破棄します。0 を指定した場合無限にタイマーが呼ばれます。省略した場合 0 と同じです。\r
         * @param {*} args1 コールバックのための最大で 3 つの引数を指定します。参考:__CallbackHash__\r
         * @param {*} args2\r
         * @param {*} args3\r
         * @return {number} タイマーID。1 以上の数値。タイマーの解除に使用。\r
+        * @example X.Timer.add( 1000, 5, thisContext, onTimer );\r
         */\r
-       add : function( time, opt_count, args1, args2, args3 ){\r
+       function X_Timer_add( time, opt_count, args1, args2, args3 ){\r
                var list = X_Timer_TICKET_LIST,\r
                        hash, obj;\r
                time = time < X_Timer_INTERVAL_TIME ? 1 : time / X_Timer_INTERVAL_TIME | 0; // 正の数で使える「Math.floor(x)」を「(x | 0)」に;\r
@@ -126,7 +217,7 @@ X.Timer = {
                hash = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
                if( !hash ) return -1; // dev only\r
                \r
-               if( !hash.k ) hash = { f : hash };\r
+               if( !hash.kind ) hash = { func : hash };\r
                hash.time  = time;\r
                hash.last  = time;\r
                hash.count = opt_count;\r
@@ -135,25 +226,27 @@ X.Timer = {
                \r
            !X_Timer_busyTimeout && X_Timer_update();\r
            return X_Timer_uid;\r
-       },\r
+       };\r
        \r
        /**\r
         * 1 回呼ばれたら解除されるタイマーをセットします。\r
+        * @alias X.Timer.once\r
         * @param {number} time ミリ秒\r
         * @param {*} args1 コールバックのための最大で 3 つの引数を指定します。参考:__CallbackHash__\r
         * @param {*} args2\r
         * @param {*} args3\r
         * @return {number} タイマーID。1 以上の数値。タイマーの解除に使用。\r
         */\r
-       once : function( time, args1, args2, args3 ){\r
-               return X.Timer.add( time, 1, args1, args2, args3 );\r
-       },\r
+       function X_Timer_once( time, args1, args2, args3 ){\r
+               return X_Timer_add( time, 1, args1, args2, args3 );\r
+       };\r
        \r
        /**\r
         * タイマーを解除します。登録時に受け取ったタイマーIDを使用します。\r
+        * @alias X.Timer.remove\r
         * @param {number} タイマーID\r
         */\r
-       remove : function( uid ){\r
+       function X_Timer_remove( uid ){\r
                var list = X_Timer_TICKET_LIST,\r
                        i    = list.length,\r
                        l    = i,\r
@@ -182,7 +275,7 @@ X.Timer = {
                                                                        break;\r
                                                                };\r
                                                        };                                              \r
-                                                       !lazy && eventDispatcher.kill();\r
+                                                       !lazy && eventDispatcher[ 'kill' ]();\r
                                                }; */\r
                                        };\r
                                        \r
@@ -191,85 +284,7 @@ X.Timer = {
                                };\r
                        };                              \r
                };\r
-       },\r
-       \r
-       /**\r
-        * requestAnimationFrame をセットします。\r
-        * @function\r
-        * @param {*} args1 コールバックのための最大で 3 つの引数を指定します。参考:__CallbackHash__\r
-        * @param {*} args2\r
-        * @param {*} args3\r
-        * @return {number} タイマーID。1 以上の数値。タイマーの解除に使用。\r
-        */\r
-       requestFrame : X_Timer_REQ_ANIME_FRAME ?\r
-               (function( args1, args2, args3 ){\r
-                       var i = X_Timer_REQ_FRAME_LIST.length,\r
-                               f;\r
-                       i === 0 && ( X_Timer_requestID = X_Timer_REQ_ANIME_FRAME( X_Timer_onEnterFrame ) );\r
-                       f = X_Timer_REQ_FRAME_LIST[ i ] = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
-                       return f.uid = ++X_Timer_uid;\r
-               }) :\r
-               (function( args1, args2, args3 ){\r
-                       var i = X_Timer_REQ_FRAME_LIST.length,\r
-                               f;\r
-                       i === 0 && ( X_Timer_requestID = X.Timer.add( 0, 1, X_Timer_onEnterFrame ) );\r
-                       f = X_Timer_REQ_FRAME_LIST[ i ] = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
-                       return f.uid = ++X_Timer_uid;\r
-               }),\r
-\r
-       /**\r
-        * requestAnimationFrame を解除します。登録時に受け取ったタイマーIDを使用します。\r
-        * @function\r
-        * @param {number} タイマーID\r
-        */\r
-       cancelFrame : X_Timer_CANCEL_ANIME_FRAME ?\r
-               (function( uid ){\r
-                       var list = X_Timer_REQ_FRAME_LIST,\r
-                               l    = list.length,\r
-                               i    = l,\r
-                               f;\r
-                       // fire 中の cancel\r
-                       if( X_Timer_busyOnFrame ){\r
-                               if( !X_Timer_removal ) X_Timer_removal = {};\r
-                               X_Timer_removal[ uid ] = true;\r
-                       } else {\r
-                               for( ; i; ){\r
-                                       if( ( f = list[ --i ] ).uid < uid ) break;\r
-                                       if( f.uid === uid ){\r
-                                               list.splice( i, 1 );\r
-                                               // gecko では無い場合がある\r
-                                               l === 1 && X_Timer_CANCEL_ANIME_FRAME && X_Timer_CANCEL_ANIME_FRAME( X_Timer_requestID );\r
-                                               break;\r
-                                       };\r
-                               };                              \r
-                       };\r
-               }) :\r
-               (function( uid ){\r
-                       var list = X_Timer_REQ_FRAME_LIST,\r
-                               l    = list.length,\r
-                               i    = l,\r
-                               f;\r
-                       // fire 中の cancel\r
-                       if( X_Timer_busyOnFrame ){\r
-                               if( !X_Timer_removal ) X_Timer_removal = {};\r
-                               X_Timer_removal[ uid ] = true;\r
-                       } else {\r
-                               for( ; i; ){\r
-                                       if( ( f = list[ --i ] ).uid < uid ) break;\r
-                                       if( f.uid === uid ){\r
-                                               list.splice( i, 1 );\r
-                                               l === 1 && X.Timer.remove( X_Timer_requestID );\r
-                                               break;\r
-                                       };\r
-                               };\r
-                       };\r
-               })\r
-       \r
-};\r
-\r
-// ------------------------------------------------------------------------- //\r
-// --- implements ---------------------------------------------------------- //\r
-// ------------------------------------------------------------------------- //\r
+       };\r
 \r
 if( X_UA[ 'IE4' ] || X_UA[ 'MacIE' ] ){\r
        X.Timer[ '_' ] = X_Timer_onTimeout;\r
@@ -307,10 +322,10 @@ function X_Timer_onTimeout(){
                \r
                X_Timer_currentUID = q.uid;\r
                \r
-               if( q.k ){\r
+               if( q.kind ){\r
                        r = X_Callback_proxyCallback( q, [] );\r
                } else {\r
-                       r = q.f();\r
+                       r = q.func();\r
                };\r
                \r
                //console.log( 'fire....' );\r
@@ -337,7 +352,7 @@ function X_Timer_onTimeout(){
        X_Timer_skipUpdate = true;\r
        for( uid in X_Timer_removal ){\r
                //if( X_EMPTY_OBJECT[ uid ] ) continue;\r
-               X.Timer.remove( uid );\r
+               X_Timer_remove( uid );\r
        };\r
        X_Timer_skipUpdate = false;\r
        X_Timer_removal = null;\r
@@ -417,14 +432,14 @@ function X_Timer_onEnterFrame( time ){
 \r
     list.splice( 0, l );\r
     if( list.length ){\r
-       X_Timer_requestID = X_Timer_REQ_ANIME_FRAME ? X_Timer_REQ_ANIME_FRAME( X_Timer_onEnterFrame ) : X.Timer.add( 0, 1, X_Timer_onEnterFrame );\r
+       X_Timer_requestID = X_Timer_REQ_ANIME_FRAME ? X_Timer_REQ_ANIME_FRAME( X_Timer_onEnterFrame ) : X_Timer_add( 0, 1, X_Timer_onEnterFrame );\r
     };\r
     \r
     X_Timer_busyOnFrame = false;\r
     if( X_Timer_removal ){\r
        for( uid in X_Timer_removal ){\r
                //if( X_EMPTY_OBJECT[ uid ] ) continue;\r
-               X.Timer.cancelFrame( X_Timer_removal[ uid ] );\r
+               X_Timer_cancelFrame( X_Timer_removal[ uid ] );\r
        };\r
        X_Timer_removal = null;\r
     };\r
index 3345d1b..3b0e9df 100644 (file)
@@ -5,7 +5,7 @@ var
        X_System_MESSAGE_RECIVERS = X_System_postMessageAccessKey && {},\r
 \r
        X_System = X_Class_override(\r
-               new X.EventDispatcher(),\r
+               X_EventDispatcher(),\r
                {\r
                        monitor : function(){\r
                                \r
@@ -20,7 +20,7 @@ var
                                if( !X_System_postMessageAccessKey ) return;\r
                                // name にスペースは含まない\r
                                X_System_MESSAGE_RECIVERS[ name + key ] = callback;\r
-                               X_ViewPort.listen( 'message', X_System );\r
+                               X_ViewPort[ 'listen' ]( 'message', X_System );\r
                                \r
                                return X_System_postMessageAccessKey + '-' + name + key;\r
                        },\r
index 21a3547..d31a5fe 100644 (file)
@@ -10,9 +10,9 @@ var X_ViewPort_readyState,
        X_ViewPort_hScrollbarSize,
        
        X_Dom_detectFontSize = !( X_UA[ 'IE' ] < 9 || X_UA[ 'iOS' ] ) && function(){
-                       var size = X_Node_fontSizeNode._rawObject.offsetHeight;
+                       var size = X_Node_fontSizeNode[ '_rawObject' ].offsetHeight;
                        if( X_ViewPort_baseFontSize !== size ){
-                               X_ViewPort_baseFontSize && X_ViewPort.asyncDispatch( X_Event.BASE_FONT_RESIZED );
+                               X_ViewPort_baseFontSize && X_ViewPort[ 'asyncDispatch' ]( X_EVENT_BASE_FONT_RESIZED );
                                X_ViewPort_baseFontSize = size;
                        };
        },
@@ -24,47 +24,47 @@ var X_ViewPort_readyState,
                //console.log( '-- orientationchange : ' + X.ViewPort.getSize[ 0 ] + ' ' + X.ViewPort.getSize[ 1 ] );
        },
        
-       X_ViewPort_document = new X.EventDispatcher( document ),
+       X_ViewPort_document = X_EventDispatcher( document ),
 
 X_ViewPort = X_Class_override(
-       new X.EventDispatcher( window ),
+       X_EventDispatcher( window ),
        {
 
-               handleEvent : function( e ){
+               'handleEvent' : function( e ){
                        var href, i, name;
                        
                        switch( e.type ){
                                case 'beforeunload' :
                                        // ie では a href="javascript" な要素でも beforeunload が起こる
-                                       href = e.target && e.target.attr && e.target.attr( 'href' );
-                                       if( href && href.indexOf && href.indexOf( 'javascript:' ) === 0 ) return X.Callback.PREVENT_DEFAULT | X.Callback.STOP_PROPAGATION;
+                                       href = e.target && e.target[ 'attr' ] && e.target[ 'attr' ]( 'href' );
+                                       if( href && href.indexOf && href.indexOf( 'javascript:' ) === 0 ) return X_Callback_PREVENT_DEFAULT | X_Callback_STOP_PROPAGATION;
                                        
-                                       return X_ViewPort.dispatch( X_Event.BEFORE_UNLOAD );
+                                       return X_ViewPort[ 'dispatch' ]( X_EVENT_BEFORE_UNLOAD );
                                        
                                case 'unload' :
-                                       X_ViewPort.dispatch( X_Event.UNLOAD );
+                                       X_ViewPort[ 'dispatch' ]( X_EVENT_UNLOAD );
                                //alert('unload');
-                                       X_ViewPort_document.kill();
-                                       this.kill();
+                                       X_ViewPort_document[ 'kill' ]();
+                                       this[ 'kill' ]();
                                        
-                                       //X_System.dispatch( X_Event.SHUT_DOWN );
+                                       //X_System[ 'dispatch' ]( X_EVENT_SHUT_DOWN );
                                        break;
 
                                case 'visibilitychange' :
-                                       X_ViewPort.dispatch( ( X_ViewPort_active = document[ 'hidden' ] ) ? X_Event.VIEW_DEACTIVATE : X_Event.VIEW_ACTIVATE );
+                                       X_ViewPort[ 'dispatch' ]( ( X_ViewPort_active = document[ 'hidden' ] ) ? X_EVENT_VIEW_DEACTIVATE : X_EVENT_VIEW_ACTIVATE );
                                        break;
                                case 'mozvisibilitychange' :
-                                       X_ViewPort.dispatch( ( X_ViewPort_active = document[ 'mozHidden' ] ) ? X_Event.VIEW_DEACTIVATE : X_Event.VIEW_ACTIVATE );
+                                       X_ViewPort[ 'dispatch' ]( ( X_ViewPort_active = document[ 'mozHidden' ] ) ? X_EVENT_VIEW_DEACTIVATE : X_EVENT_VIEW_ACTIVATE );
                                        break;
                                case 'webkitvisibilitychange' :
-                                       X_ViewPort.dispatch( ( X_ViewPort_active = document[ 'webkitHidden' ] ) ? X_Event.VIEW_DEACTIVATE : X_Event.VIEW_ACTIVATE );
+                                       X_ViewPort[ 'dispatch' ]( ( X_ViewPort_active = document[ 'webkitHidden' ] ) ? X_EVENT_VIEW_DEACTIVATE : X_EVENT_VIEW_ACTIVATE );
                                        break;
                                        
                                case 'pageshow' :
                                case 'focus' :
                                        if( !X_ViewPort_active ){
                                                X_ViewPort_active = true;
-                                               X_ViewPort.dispatch( X_Event.VIEW_ACTIVATE );
+                                               X_ViewPort[ 'dispatch' ]( X_EVENT_VIEW_ACTIVATE );
                                        };
                                        break;
 
@@ -72,7 +72,7 @@ X_ViewPort = X_Class_override(
                                case 'blur' :
                                        if( X_ViewPort_active ){
                                                X_ViewPort_active = false;
-                                               X_ViewPort.dispatch( X_Event.VIEW_DEACTIVATE );                         
+                                               X_ViewPort[ 'dispatch' ]( X_EVENT_VIEW_DEACTIVATE );                            
                                        };
                                        break;
                        };
@@ -89,56 +89,56 @@ X_ViewPort = X_Class_override(
  */
 X.ViewPort = {
        
-       listen : function( type, arg1, arg2, arg3 ){
+       'listen' : function( type, arg1, arg2, arg3 ){
                if( type <= X_ViewPort_readyState ){
                        /*
-                        * X_Event.XDOM_READY 以後に listen した場合の対策
+                        * X_EVENT_XDOM_READY 以後に listen した場合の対策
                         */
-                       X_ViewPort.asyncDispatch( type );
+                       X_ViewPort[ 'asyncDispatch' ]( type );
                };
                // ie8-では keydown -> documentへ
-               type && arg1 && X_ViewPort.listen( type, arg1, arg2, arg3 );
+               type && arg1 && X_ViewPort[ 'listen' ]( type, arg1, arg2, arg3 );
                return X.ViewPort;
        },
        
        
-       listenOnce : function( type, arg1, arg2, arg3 ){
+       'listenOnce' : function( type, arg1, arg2, arg3 ){
                if( type <= X_ViewPort_readyState ){
                        /*
                         * X.Event.XDOM_READY 以後に listen した場合の対策
                         */
-                       X_ViewPort.asyncDispatch( type );
+                       X_ViewPort[ 'asyncDispatch' ]( type );
                };
-               type && arg1 && X_ViewPort.listenOnce( type, arg1, arg2, arg3 );
+               type && arg1 && X_ViewPort[ 'listenOnce' ]( type, arg1, arg2, arg3 );
                return X.ViewPort;
        },
        
-       unlisten : function( type, arg1, arg2, arg3 ){
-               type && arg1 && X_ViewPort.unlisten( type, arg1, arg2, arg3 );
+       'unlisten' : function( type, arg1, arg2, arg3 ){
+               type && arg1 && X_ViewPort[ 'unlisten' ]( type, arg1, arg2, arg3 );
                return X.ViewPort;
        },
        
-       listening : function( type, arg1, arg2, arg3 ){
-               return X_ViewPort.listening( type, arg1, arg2, arg3 );
+       'listening' : function( type, arg1, arg2, arg3 ){
+               return X_ViewPort[ 'listening' ]( type, arg1, arg2, arg3 );
        },
        
        // hammer のテストファイルだけが使用
-       asyncDispatch : function(){
-               return X_ViewPort.asyncDispatch.apply( X_ViewPort, arguments );
+       'asyncDispatch' : function(){
+               return X_ViewPort[ 'asyncDispatch' ].apply( X_ViewPort, arguments );
        },
        
-       getPointerPosition : function(){
+       'getPointerPosition' : function(){
                
        },
        
        /* 要素が視界に入った  http://remysharp.com/2009/01/26/element-in-view-event-plugin/
         * TODO -> Node.call('inView')
         */
-       inView : function( elm ){
+       'inView' : function( elm ){
                
        },
        
-       getSize : function(){
+       'getSize' : function(){
                return [ X_ViewPort_width, X_ViewPort_height ];
        },
 //https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect
@@ -146,7 +146,7 @@ X.ViewPort = {
 //(((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.ScrollLeft == 'number' ? t : document.body).ScrollLeft;
 //(((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.ScrollTop == 'number' ? t : document.body).ScrollTop
        
-       getDocumentSize : function(){
+       'getDocumentSize' : function(){
                // Opera は互換モードでは document.body.scrollHeight、標準モードでは document.documentElement.scrollHeight でページの高さが取れる。と思ってたんだけど、例外があった。
                // http://orera.g.hatena.ne.jp/edvakf/20100515/1273908051
        //http://onozaty.hatenablog.com/entry/20060803/p1
@@ -164,7 +164,7 @@ X.ViewPort = {
                ];
        },
        
-       getScrollPosition :
+       'getScrollPosition' :
                window.pageXOffset !== undefined ?
                        ( function(){
                                X_Node_updateTimerID && X_Node_startUpdate();
@@ -181,14 +181,14 @@ X.ViewPort = {
                                return[ X_ViewPort_rootElement.scrollLeft || document.body.scrollLeft, X_ViewPort_rootElement.scrollTop || document.body.scrollTop ];
                        } ),
 
-       getScrollbarSize : function(){
+       'getScrollbarSize' : function(){
                return [ X_ViewPort_vScrollbarSize, X_ViewPort_hScrollbarSize ];        
        },
        
-       getBaseFontSize : function(){
+       'getBaseFontSize' : function(){
                if( X_Node_updateTimerID ){
                        X_Node_startUpdate();
-                       return X_ViewPort_baseFontSize = X_Node_fontSizeNode._rawObject.offsetHeight;
+                       return X_ViewPort_baseFontSize = X_Node_fontSizeNode[ '_rawObject' ].offsetHeight;
                };
                return X_ViewPort_baseFontSize;
        }
@@ -232,14 +232,14 @@ X.ViewPort = {
                                                if( X_ViewPort_width !== size[ 0 ] || X_ViewPort_height !== size[ 1 ] ){
                                                        X_ViewPort_width = size[ 0 ];
                                                        X_ViewPort_height = size[ 1 ];
-                                                       X.Timer.once( 100, X_Dom_detectFinishResizing );
+                                                       X_Timer_once( 100, X_Dom_detectFinishResizing );
                                                        X_ViewPort_lock = true;
                                                };
                                        };
                                        
-                                       size = X_Node_fontSizeNode._rawObject.offsetHeight;
+                                       size = X_Node_fontSizeNode[ '_rawObject' ].offsetHeight;
                                        if( X_ViewPort_baseFontSize !== size ){
-                                               X_ViewPort_baseFontSize && X_ViewPort.asyncDispatch( X_Event.BASE_FONT_RESIZED );
+                                               X_ViewPort_baseFontSize && X_ViewPort[ 'asyncDispatch' ]( X_EVENT_BASE_FONT_RESIZED );
                                                X_ViewPort_baseFontSize = size;
                                        };
                                        
@@ -247,8 +247,8 @@ X.ViewPort = {
                                (function( e ){
                                        console.log( '-- resize : ' + X_Timer_now() );
                                        
-                                       !X_ViewPort_lock && ( X_ViewPort_lock = true ) && X.Timer.once( 100, X_Dom_detectFinishResizing );
-                                       return X.Callback.PREVENT_DEFAULT | X.Callback.STOP_PROPAGATION;
+                                       !X_ViewPort_lock && ( X_ViewPort_lock = true ) && X_Timer_once( 100, X_Dom_detectFinishResizing );
+                                       return X_Callback_PREVENT_DEFAULT | X_Callback_STOP_PROPAGATION;
                                });
                
                function X_Dom_detectFinishResizing(){
@@ -256,15 +256,15 @@ X.ViewPort = {
                        if( X_ViewPort_width !== size[ 0 ] || X_ViewPort_height !== size[ 1 ] ){
                                X_ViewPort_width  = size[ 0 ];
                                X_ViewPort_height = size[ 1 ];
-                               X.Timer.once( 100, X_Dom_detectFinishResizing );
+                               X_Timer_once( 100, X_Dom_detectFinishResizing );
                        } else {
                                console.log( '-- detectFinishResizing : ' + X_Timer_now() );
                                
-                               X_ViewPort.asyncDispatch( X_Event.VIEW_RESIZED );
+                               X_ViewPort[ 'asyncDispatch' ]( X_EVENT_VIEW_RESIZED );
                                X_ViewPort_lock = false;
                                if( X_ViewPort_orientationFlag ){
                                        X_ViewPort_orientationFlag = false;
-                                       X_ViewPort.asyncDispatch( 100, { type : X_Event.VIEW_TURNED, orientation : window.orientation } );
+                                       X_ViewPort[ 'asyncDispatch' ]( 100, { type : X_EVENT_VIEW_TURNED, orientation : window.orientation } );
                                };
                        };
                };
@@ -274,11 +274,11 @@ X.ViewPort = {
                        
                        console.log( '> X_TEMP.onDomContentLoaded rs:' + X_ViewPort_readyState );
                        
-                       if( X_TEMP.SYSTEM_EVENT_PRE_INIT <= X_ViewPort_readyState ) return X_Callback_UN_LISTEN;
-                       X_ViewPort_readyState = X_TEMP.SYSTEM_EVENT_PRE_INIT;
+                       if( X_EVENT_PRE_INIT <= X_ViewPort_readyState ) return X_Callback_UN_LISTEN;
+                       X_ViewPort_readyState = X_EVENT_PRE_INIT;
                        
                        // DOMContentLoaded の無いブラウザで X_TEMP.onDomContentLoaded への参照が残り続けるのを回避
-                       X_TEMP.onDomContentLoaded && X_ViewPort_document.unlisten( 'DOMContentLoaded', X_TEMP.onDomContentLoaded );
+                       X_TEMP.onDomContentLoaded && X_ViewPort_document[ 'unlisten' ]( 'DOMContentLoaded', X_TEMP.onDomContentLoaded );
                        delete X_TEMP.onDomContentLoaded;
                        
                        elmHtml = document.documentElement ||
@@ -293,42 +293,42 @@ X.ViewPort = {
 
                        X_ViewPort_rootElement = document.compatMode !== 'CSS1Compat' ? elmBody : elmHtml || elmBody;
 
-                       html = X.Doc.html = X_Node_html = elmHtml && new Node( elmHtml );
-                       html._flags |= X_Node_State.IN_TREE;
+                       html = X[ 'Doc' ][ 'html' ] = X_Node_html = elmHtml && new Node( elmHtml );
+                       html[ '_flags' ] |= X_Node_State.IN_TREE;
                        
-                       head = X.Doc.head = X_Node_head = elmHead && new Node( elmHead );
+                       head = X[ 'Doc' ][ 'head' ] = X_Node_head = elmHead && new Node( elmHead );
                
-                       body = X.Doc.body = X_Node_body = new Node( elmBody );
+                       body = X[ 'Doc' ][ 'body' ] = X_Node_body = new Node( elmBody );
 
-                       body.parent  = head.parent = html;
-                       html._xnodes = [ head, body ];
+                       body[ 'parent ' ] = head[ 'parent' ] = html;
+                       html[ '_xnodes' ] = [ head, body ];
                        
-                       html.appendTo = html.appendToRoot = html.before = html.after = html.clone = html.remove = html.destroy = html.prev = html.next =
-                       html.create = html.createText = html.createAt = html.createTextAt = html.append = html.appendAt = html.empty = html.html = html.text =
-                       html.css = html.cssText =
-                       head.appendTo = head.appendToRoot = head.before = head.after = head.clone = head.remove = head.destroy =
-                       head.createText = head.createTextAt = head.empty = head.html = head.text = head.css = head.cssText =
-                       body.appendTo = body.appendToRoot = body.before = body.after = body.clone = body.remove = body.destroy = new Function( 'return this' );
-
-                       X_ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT, function(){
-                               X_ViewPort_readyState = X_TEMP.SYSTEM_EVENT_XTREE;
+                       html[ 'appendTo' ] = html[ 'before' ] = html[ 'after' ] = html[ 'clone' ] = html[ 'remove' ] = html[ 'destroy' ] = html[ 'prev' ] = html[ 'next' ] =
+                       html[ 'create' ] = html[ 'createText' ] = html[ 'createAt' ] = html[ 'createTextAt' ] = html[ 'append' ] = html[ 'appendAt' ] = html[ 'empty' ] = html[ 'html' ] = html[ 'text' ] =
+                       html[ 'css' ] = html[ 'cssText' ] =
+                       head[ 'appendTo' ] = head[ 'before' ] = head[ 'after' ] = head[ 'clone' ] = head[ 'remove' ] = head[ 'destroy' ] =
+                       head[ 'createText' ] = head[ 'createTextAt' ] = head[ 'empty' ] = head[ 'html' ] = head[ 'text' ] = head[ 'css' ] = head[ 'cssText' ] =
+                       body[ 'appendTo' ] = body[ 'before' ] = body[ 'after' ] = body[ 'clone' ] = body[ 'remove' ] = body[ 'destroy' ] = new Function( 'return this' );
+
+                       X_ViewPort[ 'listenOnce' ]( X_EVENT_PRE_INIT, function(){
+                               X_ViewPort_readyState = X_EVENT_XTREE_READY;
                                if( X_TEMP.X_Dom_useBuilder ) X_TEMP.X_Dom_useBuilder = !!document.body.children.length;
-                               !X_TEMP.X_Dom_useBuilder && X_ViewPort.asyncDispatch( X_TEMP.SYSTEM_EVENT_XTREE );
+                               !X_TEMP.X_Dom_useBuilder && X_ViewPort[ 'asyncDispatch' ]( X_EVENT_XTREE_READY );
                        } );
                        
-                       X_ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_XTREE, function(){
-                               X_ViewPort_readyState = X_TEMP.SYSTEM_EVENT_INIT;
+                       X_ViewPort[ 'listenOnce' ]( X_EVENT_XTREE_READY, function(){
+                               X_ViewPort_readyState = X_EVENT_INIT;
                                //X_UA[ 'Opera7' ] && alert( 'bc' );
-                               X_Node_body.appendAt( 0,
+                               X_Node_body[ 'appendAt' ]( 0,
                                        X_Node_systemNode = X_Doc_create( 'div', { 'class' : 'hidden-system-node' } ),
-                                       X_Node_fontSizeNode = X_Doc_create( 'div', { 'class' : 'hidden-system-node' } ).cssText( 'line-height:1;height:1em;' ).text( 'X' )
+                                       X_Node_fontSizeNode = X_Doc_create( 'div', { 'class' : 'hidden-system-node' } )[ 'cssText' ]( 'line-height:1;height:1em;' )[ 'text' ]( 'X' )
                                );
                                X_Node_startUpdate();
 
-                               X_ViewPort.asyncDispatch( X_TEMP.SYSTEM_EVENT_INIT );
+                               X_ViewPort[ 'asyncDispatch' ]( X_EVENT_INIT );
                        } );
 
-                       X_ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_INIT, function(){
+                       X_ViewPort[ 'listenOnce' ]( X_EVENT_INIT, function(){
                                var size = X_ViewPort_getWindowSize(),
                                
                                // http://jsdo.it/imaya/kTYg
@@ -362,18 +362,18 @@ X.ViewPort = {
                                
                                if( X_Dom_detectFontSize ){
                                        X_EventDispatcher_systemListen( X_ViewPort, 'resize', X_ViewPort_resize );
-                                       X.Timer.add( 333, X_Dom_detectFontSize );
+                                       X_Timer_add( 333, X_Dom_detectFontSize );
                                } else {
-                                       X.Timer.add( 333, X_ViewPort_resize );
+                                       X_Timer_add( 333, X_ViewPort_resize );
                                };
                                
-                               X_ViewPort_baseFontSize = X_Node_fontSizeNode._rawObject.offsetHeight;
+                               X_ViewPort_baseFontSize = X_Node_fontSizeNode[ '_rawObject' ].offsetHeight;
                                
-                               X_ViewPort_readyState = X_Event.XDOM_READY;
-                               X_ViewPort.asyncDispatch( { type : X_Event.XDOM_READY, w : X_ViewPort_width = size[ 0 ], h : X_ViewPort_height = size[ 1 ] } );
+                               X_ViewPort_readyState = X_EVENT_XDOM_READY;
+                               X_ViewPort[ 'asyncDispatch' ]( { type : X_EVENT_XDOM_READY, w : X_ViewPort_width = size[ 0 ], h : X_ViewPort_height = size[ 1 ] } );
                        } );
 
-                       X_ViewPort.asyncDispatch( X_TEMP.SYSTEM_EVENT_PRE_INIT );       
+                       X_ViewPort[ 'asyncDispatch' ]( X_EVENT_PRE_INIT );      
 
 
                        X_EventDispatcher_systemListen( X_ViewPort, [ 'beforeunload', 'unload' ] );
@@ -419,7 +419,7 @@ console.log( 'X.Dom dom:w3c=' + X_UA_DOM.W3C + ' ev:w3c=' + X_UA_EVENT.W3C );
 
 /* for ie9+/Mozilla/Opera9 */
 if( X_UA_EVENT.W3C ){
-       X_ViewPort_document.listenOnce( 'DOMContentLoaded', X_TEMP.onDomContentLoaded );
+       X_ViewPort_document[ 'listenOnce' ]( 'DOMContentLoaded', X_TEMP.onDomContentLoaded );
 } else
 if( 6 <= X_UA[ 'IE' ] && X.inHead ){
        // if this script in Head
@@ -428,7 +428,7 @@ if( 6 <= X_UA[ 'IE' ] && X.inHead ){
        X_TEMP._script.onreadystatechange = function(){
                var s = X_TEMP._script;
                if( s && s.readyState === 'complete' ){
-                       s.onreadystatechange = X.emptyFunction;
+                       s.onreadystatechange = X_emptyFunction;
                        s.onreadystatechange = null;
                        s.parentNode.removeChild( s );
                        delete X_TEMP._script;
@@ -439,11 +439,11 @@ if( 6 <= X_UA[ 'IE' ] && X.inHead ){
 // Re: onLoad doesn't work with Safari?
 // http://lists.apple.com/archives/web-dev/2003/Oct/msg00036.html
 if( X_UA[ 'WebKit' ] || X_UA[ 'Safari' ]  < 3 ){ // sniff
-       X.Timer.add( 16, function(){
+       X_Timer_add( 16, function(){
                if( !X_TEMP.onDomContentLoaded ) return X_Callback_UN_LISTEN;
                if( document.readyState === 'loaded' || document.readyState === 'complete' ) return X_TEMP.onDomContentLoaded();
        });
 };
 
 /* for other browsers */
-X_ViewPort.listenOnce( 'load', X_TEMP.onDomContentLoaded );
+X_ViewPort[ 'listenOnce' ]( 'load', X_TEMP.onDomContentLoaded );
index 60d8e5f..d757551 100644 (file)
@@ -18,15 +18,15 @@ X.Logger = {
        },\r
        _output : function( msg, level ){\r
                var body, $Area;\r
-               if( X_Event.XDOM_READY <= X_ViewPort_readyState ){\r
+               if( X_EVENT_XDOM_READY <= X_ViewPort_readyState ){\r
                        if( $Area = X.Logger._$LogArea ){\r
-                               $Area.remove();\r
+                               $Area[ 'remove' ]();\r
                                delete X.Logger._$LogArea;\r
                        };\r
                        \r
                        \r
                } else\r
-               if( X_Event.XDOM_READY <= X_ViewPort_readyState ){\r
+               if( X_EVENT_XDOM_READY <= X_ViewPort_readyState ){\r
                        if( !( $Area = X.Logger._$LogArea ) ){\r
                                $Area = X.Logger._$LogArea = X.Node( 'div' ).addToRoot( 0 );\r
                        };\r
index c185700..e2fcbf8 100644 (file)
@@ -3,42 +3,42 @@
  * @namespace X.Doc
  * @alias X.Doc
  */
-X.Doc = {
-       listen : function( type, arg1, arg2, arg3 ){
+X[ 'Doc' ] = {
+       'listen' : function( type, arg1, arg2, arg3 ){
                if( type <= X_ViewPort_readyState && type === 'DOMContentLoaded' ){
                        /*
                         * X.Event.XDOM_READY 以後に listen した場合の対策
                         */
-                       X_ViewPort_document.asyncDispatch( type );
+                       X_ViewPort_document[ 'asyncDispatch' ]( type );
                };
-               type && arg1 && X_ViewPort_document.listen( type, arg1, arg2, arg3 );
+               type && arg1 && X_ViewPort_document[ 'listen' ]( type, arg1, arg2, arg3 );
                return X.Doc;
        },
        
        
-       listenOnce : function( type, arg1, arg2, arg3 ){
+       'listenOnce' : function( type, arg1, arg2, arg3 ){
                if( type <= X_ViewPort_readyState && type === 'DOMContentLoaded' ){
                        /*
                         * X.Event.XDOM_READY 以後に listen した場合の対策
                         */
-                       X_ViewPort_document.asyncDispatch( type );
+                       X_ViewPort_document[ 'asyncDispatch' ]( type );
                };
-               type && arg1 && X_ViewPort_document.listenOnce( type, arg1, arg2, arg3 );
+               type && arg1 && X_ViewPort_document[ 'listenOnce' ]( type, arg1, arg2, arg3 );
                return X.Doc;
        },
        
-       unlisten : function( type, arg1, arg2, arg3 ){
-               type && arg1 && X_ViewPort_document.unlisten( type, arg1, arg2, arg3 );
+       'unlisten' : function( type, arg1, arg2, arg3 ){
+               type && arg1 && X_ViewPort_document[ 'unlisten' ]( type, arg1, arg2, arg3 );
                return X.Doc;
        },
        
-       listening : function( type, arg1, arg2, arg3 ){
-               return X_ViewPort_document.listening( type, arg1, arg2, arg3 );
+       'listening' : function( type, arg1, arg2, arg3 ){
+               return X_ViewPort_document[ 'listening' ]( type, arg1, arg2, arg3 );
        },
        
-       create     : X_Doc_create,
+       'create'     : X_Doc_create,
        
-       createText : X_Doc_createText
+       'createText' : X_Doc_createText
        
        // html
        // head
index 77e85c8..21e5021 100644 (file)
@@ -1,20 +1,18 @@
-X.Dom = {};\r
-\r
-var X_Dom_DTD_EMPTY = {\r
-               AREA     : true,\r
-               BASE     : true,\r
-               BASEFONT : true,\r
-               BR       : true,\r
-               COL      : true,\r
-               FRAME    : true,\r
-               HR       : true,\r
-               IMG      : true,\r
-               INPUT    : true,\r
-               ISINDEX  : true,\r
-               LINK     : true,\r
-               META     : true,\r
-               PARAM    : true,\r
-               EMBED    : true\r
+var X_Dom_DTD_EMPTY = {\r
+               'AREA'     : true,\r
+               'BASE'     : true,\r
+               'BASEFONT' : true,\r
+               'BR'       : true,\r
+               'COL'      : true,\r
+               'FRAME'    : true,\r
+               'HR'       : true,\r
+               'IMG'      : true,\r
+               'INPUT'    : true,\r
+               'ISINDEX'  : true,\r
+               'LINK'     : true,\r
+               'META'     : true,\r
+               'PARAM'    : true,\r
+               'EMBED'    : true\r
        },\r
        \r
        /*\r
@@ -22,64 +20,54 @@ var X_Dom_DTD_EMPTY = {
         */     \r
        X_Dom_DTD_TAG_FIX =\r
                X_UA[ 'IE4' ] ?\r
-                       { ABBR : 'ACRONYM', BDO : '', RUBY : '' } :\r
+                       { 'ABBR' : 'ACRONYM', 'BDO' : '', 'RUBY' : '' } :\r
                X_UA[ 'IE5x' ] || X_UA[ 'IE6' ] ?\r
-                       { ABBR : 'ACRONYM' } :\r
+                       { 'ABBR' : 'ACRONYM' } :\r
                        {},\r
        \r
        X_Dom_DTD_ATTR_VAL_IS_URI = {\r
-               action     : true,\r
-               archive    : true,\r
-               background : true,\r
-               cite       : true,\r
-               classid    : true,\r
-               codebase   : true,\r
-               data       : true,\r
-               href       : true,\r
-               longdesc   : true,\r
-               profile    : true,\r
-               src        : true,\r
-               usemap     : true\r
+               'action'     : true,\r
+               'archive'    : true,\r
+               'background' : true,\r
+               'cite'       : true,\r
+               'classid'    : true,\r
+               'codebase'   : true,\r
+               'data'       : true,\r
+               'href'       : true,\r
+               'longdesc'   : true,\r
+               'profile'    : true,\r
+               'src'        : true,\r
+               'usemap'     : true\r
        },\r
        \r
        X_Dom_DTD_MOVE_TO_HEAD = {\r
-               STYLE   : true,\r
-               LINK    : true,\r
-               TITLE   : true,\r
-               BGSOUND : true,\r
-               AREA    : true,\r
-               BASE    : true,\r
-               META    : true\r
+               'STYLE'   : true,\r
+               'LINK'    : true,\r
+               'TITLE'   : true,\r
+               'BGSOUND' : true,\r
+               'AREA'    : true,\r
+               'BASE'    : true,\r
+               'META'    : true\r
        },\r
        \r
        X_Dom_DTD_CLEANUP_TAGS = {\r
-               SCRIPT   : true,\r
-               NOSCRIPT : true,\r
-               NOFRAMES : true,\r
-               '!'      : true, // ie\r
-               COMMENT  : true, // ie\r
-               NOEMBED  : true,\r
-               NOLAYER  : true\r
+               'SCRIPT'   : true,\r
+               'NOSCRIPT' : true,\r
+               'NOFRAMES' : true,\r
+               '!'        : true, // ie\r
+               'COMMENT'  : true, // ie\r
+               'NOEMBED'  : true,\r
+               'NOLAYER'  : true\r
        },\r
        \r
        X_Dom_DTD_SKIP_CLEANUP_TAGS = {\r
-               PRE       : true,\r
-               TEXTAREA  : true,\r
-               CODE      : true,\r
-               KBD       : true,\r
-               SAMP      : true,\r
-               XMP       : true,\r
-               PLAINTEXT : true,\r
-               LISTING   : true\r
+               'PRE'       : true,\r
+               'TEXTAREA'  : true,\r
+               'CODE'      : true,\r
+               'KBD'       : true,\r
+               'SAMP'      : true,\r
+               'XMP'       : true,\r
+               'PLAINTEXT' : true,\r
+               'LISTING'   : true\r
        };\r
-/*\r
-X.Dom.DTD = {\r
-       \r
-       EMPTY : X_Dom_DTD_EMPTY,\r
-       \r
-       TAG_FIX : X_Dom_DTD_TAG_FIX,\r
-\r
-       ATTR_VAL_IS_URI : X_Dom_DTD_ATTR_VAL_IS_URI\r
-};\r
-*/\r
 \r
index 4b2ccd3..7da1288 100644 (file)
@@ -1,5 +1,6 @@
 var \r
-       \r
+       /** @enum {number}\r
+        * @const  */\r
        X_Node_State = {\r
                DESTROYED              : 0x0,\r
                EXIST                  : 0x1,\r
@@ -43,9 +44,9 @@ var
                IE4_FIXED              : X_UA[ 'IE4' ] ? 2 << 24 : 0,\r
                \r
                IE5_DISPLAY_NONE_FIX   : X_UA[ 'IE5' ] && X_UA[ 'ActiveX' ] ? 2 << 24 : 0\r
-       },\r
+       };\r
 \r
-       X_Node_BITMASK_RESET_STYLE  = ( ( 2 << 29 ) - 1 + ( 2 << 29 ) ) ^ (\r
+var    X_Node_BITMASK_RESET_STYLE  = ( ( 2 << 29 ) - 1 + ( 2 << 29 ) ) ^ (\r
                X_Node_State.STYLE_IS_DISPLAY_NONE |\r
                X_Node_State.STYLE_IS_INVISIBLE |\r
                X_Node_State.STYLE_IS_POS_ABSOLUTE |\r
@@ -67,6 +68,7 @@ var
        \r
        X_Node_BitMask_IE4_IS_MIX   = X_Node_State.IE4_HAS_TEXTNODE | X_Node_State.IE4_HAS_ELEMENT,\r
        \r
+       /** @enum {number} */\r
        X_Node_TYPE = {\r
                XNODE       : 1,\r
                RAW_HTML    : 2,\r
@@ -102,57 +104,170 @@ var
  *     \r
  * @alias X.Node\r
  * @class Node HTMLElement、TextNode をラップし jQuery 風な API で操作できます。\r
- * @constructor \r
  * @constructs Node\r
  * @extends {EventDispatcher}\r
  */\r
-var    Node = X.Node = X.EventDispatcher.inherits(\r
+var    Node = X[ 'Node' ] = X_EventDispatcher[ 'inherits' ](\r
        'X.Node',\r
        X.Class.POOL_OBJECT, // X.Class.FINAL\r
+       \r
        {\r
-               _uid       : 0,\r
-               _flags     : X_Node_State.DESTROYED,\r
+               /**\r
+                * 要素に振られるユニークID\r
+                * @type {number}\r
+                * @private\r
+                * @alias Node.prototype._uid\r
+                */\r
+               '_uid'       : 0,\r
+               \r
+               /**\r
+                * Node の状態を表すフラグ。\r
+                * @type {number}\r
+                * @private\r
+                * @alias Node.prototype._flags\r
+                */\r
+               '_flags'     : X_Node_State.DESTROYED,\r
 \r
                // _rawObject : null,\r
-               _rect      : null, // \r
-               _fontSize  : 0,\r
+               '_rect'      : null, //\r
+               \r
+               /**\r
+                * 最後に計測したフォントサイズを保持している。ツリーが変更されると削除される。\r
+                * @type {number}\r
+                * @private\r
+                * @alias Node.prototype._fontSize\r
+                */\r
+               '_fontSize'  : 0,\r
+               \r
+               /**\r
+                * NodeList と動作を一致させるためのプロパティ。常に 1。\r
+                * @type {number}\r
+                * @private\r
+                * @alias Node.prototype.length\r
+                */\r
+               length       : 1,\r
+               \r
+               /**\r
+                * 親 Node。\r
+                * @type {Node}\r
+                * @private\r
+                * @alias Node.prototype.parent\r
+                */\r
+               parent       : null, // remove された枝も親子構造は維持している。\r
+               \r
+               /**\r
+                * 子 Node リスト\r
+                * @type {Array}\r
+                * @private\r
+                * @alias Node.prototype._xnodes\r
+                */\r
+               '_xnodes'    : null,\r
+               \r
+               /**\r
+                * GPU レイヤーに転送されている場合、その一番親となっている Node。未実装。\r
+                * @type {Node}\r
+                * @private\r
+                * @alias Node.prototype._gpuParent\r
+                */\r
+               '_gpuParent' : null,\r
+\r
+               /**\r
+                * タグ名。テキストノードの場合は空文字列。\r
+                * @type {string}\r
+                * @private\r
+                * @alias Node.prototype._tag\r
+                */\r
+               '_tag'       : '',\r
                \r
-               length     : 1,\r
-               parent     : null, // remove された枝も親子構造は維持している。\r
-               _xnodes    : null, // Array.<Node>\r
-               _gpuParent : null, // TODO\r
-\r
-               _tag       : '',\r
-               _text      : '',\r
-               _id        : '', //\r
-               _className : '', //\r
-\r
-               _attrs     : null, // see X_Node_Attr\r
-               _newAttrs  : null,\r
-               _attrText  : '',\r
+               /**\r
+                * テキストコンテンツ。テキストノードで使用。\r
+                * @type {string}\r
+                * @private\r
+                * @alias Node.prototype._text\r
+                */\r
+               '_text'      : '',\r
                \r
-               _css       : null, // see X_Node_CSS\r
-               _cssText   : '',\r
+               /**\r
+                * id\r
+                * @type {string}\r
+                * @private\r
+                * @alias Node.prototype._id\r
+                */\r
+               '_id'        : '',\r
                \r
-               _anime     : null, // Hash see X_Node_Anime\r
+               /**\r
+                * クラス名。複数のクラスが設定されている場合、スペース区切り。\r
+                * @type {string}\r
+                * @private\r
+                * @alias Node.prototype._className\r
+                */\r
+               '_className' : '', //\r
+\r
+               /**\r
+                * 属性。\r
+                * @type {object}\r
+                * @private\r
+                * @alias Node.prototype._attrs\r
+                */\r
+               '_attrs'     : null, // see X_Node_Attr\r
+               \r
+               /**\r
+                * まだコミットされていない属性。\r
+                * @type {object}\r
+                * @private\r
+                * @alias Node.prototype._newAttrs\r
+                */\r
+               '_newAttrs'  : null,\r
+               \r
+               /**\r
+                * 属性を文字列にしたもの。 color="red" size="8"\r
+                * @type {object}\r
+                * @private\r
+                * @alias Node.prototype._attrText\r
+                */\r
+               '_attrText'  : '',\r
+               \r
+               /**\r
+                * スタイル。\r
+                * @type {object}\r
+                * @private\r
+                * @alias Node.prototype._css\r
+                */\r
+               '_css'       : null,\r
+               \r
+               /**\r
+                * cssText\r
+                * @type {string}\r
+                * @private\r
+                * @alias Node.prototype._cssText\r
+                */\r
+               '_cssText'   : '',\r
+               \r
+               /**\r
+                * アニメーション用オブジェクト。\r
+                * @type {object}\r
+                * @private\r
+                * @alias Node.prototype._anime\r
+                */\r
+               '_anime'     : null,\r
                \r
        /*\r
         * TODO Node の継承ができない!\r
         */\r
-               Constructor : function( v ){\r
+               'Constructor' : function( v ){\r
                        var uid = X_Node_CHASHE.length,\r
                                css, xnodes, xnode, parent;\r
                        \r
                        if( X_Node_newByTag ){\r
                                X_Node_newByTag = false;\r
-                               this._tag       = v.toUpperCase();\r
+                               this[ '_tag' ]  = v.toUpperCase();\r
                                arguments[ 1 ] && this.attr( arguments[ 1 ] );\r
                                css = arguments[ 2 ];\r
                                css && this[ X_Type_isString( css ) ? 'cssText' : 'css' ]( css );\r
                        } else\r
                        if( X_Node_newByText ){\r
                                X_Node_newByText = false;\r
-                               this._text       = v;\r
+                               this[ '_text' ]  = v;\r
                        } else {\r
                                if( 1 < arguments.length ) return new X_NodeList( arguments );\r
                                if( X_Type_isArray( v ) && v.length ) return new X_NodeList( v );\r
@@ -166,19 +281,19 @@ var       Node = X.Node = X.EventDispatcher.inherits(
                                                if( xnode = X_Node_getXNode( v ) ) return xnode;\r
                                                // v.parentNode || v.parentElement : dom1 || dom0\r
                                                this.parent     = ( parent = v.parentNode || v.parentElement ) && parent.tagName /* ie7- */ && X_Node_getXNode( parent );\r
-                                               this._rawObject = v;\r
-                                               this._tag       = v.tagName.toUpperCase();\r
-                                               this._id        = v.id;\r
-                                               this._className = v.className;\r
+                                               this[ '_rawObject' ] = v;\r
+                                               this[ '_tag' ]       = v.tagName.toUpperCase();\r
+                                               this[ '_id' ]        = v.id;\r
+                                               this[ '_className' ] = v.className;\r
                                                \r
-                                               this.cssText( v.style.cssText );\r
-                                               this._flags &= X_Node_BitMask_RESET_DIRTY; // X_Node_State.DIRTY_CSS を落とす\r
+                                               this[ 'cssText' ]( v.style.cssText );\r
+                                               this[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY; // X_Node_State.DIRTY_CSS を落とす\r
                                                \r
                                                // TODO attr の回収は不可能、、、?\r
                                                if( X_UA_DOM.IE4 ){\r
                                                        v.setAttribute( 'UID', '' + uid );\r
                                                } else {\r
-                                                       v.UID = uid;\r
+                                                       v[ 'UID' ] = uid;\r
                                                };\r
                                                // childNodes...\r
                                                break;\r
@@ -186,9 +301,9 @@ var Node = X.Node = X.EventDispatcher.inherits(
                                        case X_Node_TYPE.RAW_TEXT :\r
                                                if( xnode = X_Node_getXNode( v ) ) return xnode;\r
                                                this.parent     = X_Node_getXNode( v.parentNode );\r
-                                               this._rawObject = v;\r
-                                               this._text      = v.data;\r
-                                               v.UID = uid;\r
+                                               this[ '_rawObject' ] = v;\r
+                                               this[ '_text' ]      = v.data;\r
+                                               v[ 'UID' ] = uid;\r
                                                break;\r
 \r
                                        case X_Node_TYPE.HTML_STRING :\r
@@ -204,11 +319,11 @@ var       Node = X.Node = X.EventDispatcher.inherits(
                                };\r
                        };\r
                        \r
-                       if( this.parent && ( this.parent._flags & X_Node_State.IN_TREE ) ){\r
-                               this._flags |= X_Node_State.IN_TREE;\r
+                       if( this.parent && ( this.parent[ '_flags' ] & X_Node_State.IN_TREE ) ){\r
+                               this[ '_flags' ] |= X_Node_State.IN_TREE;\r
                        };\r
-                       this._flags |= X_Node_State.EXIST;\r
-                       X_Node_CHASHE[ this._uid = uid ] = this;\r
+                       this[ '_flags' ] |= X_Node_State.EXIST;\r
+                       X_Node_CHASHE[ this[ '_uid' ] = uid ] = this;\r
                },\r
                \r
                // attr\r
@@ -216,62 +331,56 @@ var       Node = X.Node = X.EventDispatcher.inherits(
                // find\r
                // animate, stop\r
                \r
-               create         : X_Node_create,\r
+               'create'         : X_Node_create,\r
                \r
-               createAt       : X_Node_createAt,\r
+               'createAt'       : X_Node_createAt,\r
                \r
-               createText     : X_Node_createText,\r
+               'createText'     : X_Node_createText,\r
                \r
-               createTextAt   : X_Node_createTextAt,\r
+               'createTextAt'   : X_Node_createTextAt,\r
                \r
-               clone          : X_Node_clone,\r
+               'clone'          : X_Node_clone,\r
                \r
-               append         : X_Node_append,\r
+               'append'         : X_Node_append,\r
                \r
-               appendAt       : X_Node_appendAt,\r
+               'appendAt'       : X_Node_appendAt,\r
                \r
-               appendTo       : X_Node_appendTo,\r
+               'appendTo'       : X_Node_appendTo,\r
                \r
-               appendToRoot   : X_Node_appendToRoot, // remove\r
+               'prev'           : X_Node_before,\r
                \r
-               before         : X_Node_before, // remove\r
+               'next'           : X_Node_after,\r
                \r
-               prev           : X_Node_before,\r
+               'swap'           : X_Node_swap,\r
                \r
-               after          : X_Node_after, // remove\r
+               'remove'         : X_Node_remove,\r
                \r
-               next           : X_Node_after,\r
-               \r
-               swap           : X_Node_swap,\r
-               \r
-               remove         : X_Node_remove,\r
-               \r
-               empty          : X_Node_empty,\r
+               'empty'          : X_Node_empty,\r
                \r
                destroy        : X_Node_destroy, // -> kill && kill event\r
                \r
-               contains       : X_Node_contains,\r
+               'contains'       : X_Node_contains,\r
                \r
-               getChildAt     : X_Node_getChildAt,\r
+               'getChildAt'     : X_Node_getChildAt,\r
                \r
-               numChildren    : X_Node_length,\r
+               'numChildren'    : X_Node_length,\r
                \r
-               firstChild     : X_Node_firstChild,\r
+               'firstChild'     : X_Node_firstChild,\r
                \r
-               lastChild      : X_Node_lastChild,\r
+               'lastChild'      : X_Node_lastChild,\r
                \r
-               getOrder       : X_Node_getOrder,\r
+               'getOrder'       : X_Node_getOrder,\r
                \r
-               className      : X_Node_className,\r
-               addClass       : X_Node_addClass,\r
-               removeClass    : X_Node_removeClass,\r
-               toggleClass    : X_Node_toggleClass,\r
-               hasClass       : X_Node_hasClass,\r
+               'className'      : X_Node_className,\r
+               'addClass'       : X_Node_addClass,\r
+               'removeClass'    : X_Node_removeClass,\r
+               'toggleClass'    : X_Node_toggleClass,\r
+               'hasClass'       : X_Node_hasClass,\r
                \r
-               html           : X_Node_html,\r
-               text           : X_Node_text,\r
-               call           : X_Node_call,\r
-               each           : X_Node_each\r
+               'html'           : X_Node_html,\r
+               'text'           : X_Node_text,\r
+               'call'           : X_Node_call,\r
+               'each'           : X_Node_each\r
                \r
        }\r
 );\r
@@ -302,30 +411,30 @@ function X_Node_getXNode( v ){
                                uid = v.getAttribute( 'UID' );\r
                                return uid && X_Node_CHASHE[ uid ];\r
                        };\r
-                       return v.UID && X_Node_CHASHE[ v.UID ];\r
+                       return v[ 'UID' ] && X_Node_CHASHE[ v[ 'UID' ] ];\r
                case X_Node_TYPE.WINDOW :\r
                        return X_ViewPort;\r
                case X_Node_TYPE.DOCUMENT :\r
                        return X_ViewPort_document;\r
                case X_Node_TYPE.RAW_TEXT :\r
-                       if( v.UID ) return X_Node_CHASHE[ v.UID ];\r
+                       if( v[ 'UID' ] ) return X_Node_CHASHE[ v[ 'UID' ] ];\r
                        for( chashe = X_Node_CHASHE, i = chashe.length; i; ){\r
-                               if( ( xnode = X_Node_CHASHE[ --i ] ) && ( xnode._rawObject === v ) ) return xnode;\r
+                               if( ( xnode = X_Node_CHASHE[ --i ] ) && ( xnode[ '_rawObject' ] === v ) ) return xnode;\r
                        };\r
        };\r
 };\r
 \r
 function X_Node_getRoot( xnode ){\r
        return X_ViewPort_document;\r
-       //return X_Node_body._rawObject.documentElement ? node : node.ownerDocument || node.document;\r
+       //return X_Node_body[ '_rawObject' ].documentElement ? node : node.ownerDocument || node.document;\r
 };\r
        // XMLかどうかを判別する\r
 var X_Node_isXmlDocument =\r
                X_UA_DOM.IE4 ?\r
-                       X.emptyFunction :\r
+                       X_emptyFunction :\r
                        (function( root ){\r
                                if( X_Type_isBoolean( root.isXML ) ) return root.isXML;\r
-                               return root.isXML = root._rawObject.createElement( 'p' ).tagName !== root._rawObject.createElement( 'P' ).tagName;\r
+                               return root.isXML = root[ '_rawObject' ].createElement( 'p' ).tagName !== root[ '_rawObject' ].createElement( 'P' ).tagName;\r
                        }),\r
        X_Node_CHASHE     = [],\r
        X_Node_none  = X_Node_CHASHE[ 0 ] = new Node(),\r
@@ -338,15 +447,15 @@ var X_Node_isXmlDocument =
  * remove :\r
  *  X_Node_reserveRemoval = [] に追加。commitUpdate で remove\r
  * add :\r
- *  X_Node_reserveRemoval にいたら消す, new_parent._xnodes に挿入\r
+ *  X_Node_reserveRemoval にいたら消す, new_parent[ '_xnodes' ] に挿入\r
  */\r
        X_Node_reserveRemoval = [];\r
 \r
 \r
 var X_Node__ie4getRawNode = X_UA_DOM.IE4 && function ( that ){\r
-               return that._rawObject ||\r
-                       ( that._rawObject = document.all[ 'ie4uid' + that._uid ] ) ||\r
-                       ( that._id && ( that._rawObject = document.all[ that._id ] ) );\r
+               return that[ '_rawObject' ] ||\r
+                       ( that[ '_rawObject' ] = document.all[ 'ie4uid' + that[ '_uid' ] ] ) ||\r
+                       ( that[ '_id' ] && ( that[ '_rawObject' ] = document.all[ that[ '_id' ] ] ) );\r
        };\r
 \r
 \r
@@ -354,8 +463,8 @@ function X_Node_toggleInTreeFlag( xnodes, flag ){
        var i = xnodes.length, xnode;\r
        for( ; i; ){\r
                xnode = xnodes[ --i ];\r
-               flag ? ( xnode._flags |= X_Node_State.IN_TREE | X_Node_State.DIRTY_POSITION ) : ( xnode._flags &= ~X_Node_State.IN_TREE & ~X_Node_State.IE5_DISPLAY_NONE_FIX );\r
-               xnode._xnodes && X_Node_toggleInTreeFlag( xnode._xnodes, flag );\r
+               flag ? ( xnode[ '_flags' ] |= X_Node_State.IN_TREE | X_Node_State.DIRTY_POSITION ) : ( xnode[ '_flags' ] &= ~X_Node_State.IN_TREE & ~X_Node_State.IE5_DISPLAY_NONE_FIX );\r
+               xnode[ '_xnodes' ] && X_Node_toggleInTreeFlag( xnode[ '_xnodes' ], flag );\r
        };\r
 };\r
 \r
@@ -365,96 +474,128 @@ function X_Node_toggleInGPUFlag( gpuRoot, xnodes, flag ){
        if( flag ){\r
                for( ; i; ){\r
                        xnode = xnodes[ --i ];\r
-                       if( !xnode._gpuParent ){\r
-                               xnode._flags |= X_Node_State.GPU_CHILD;\r
-                               xnode._gpuParent = gpuRoot;\r
-                               xnode._xnodes && X_Node_toggleInTreeFlag( gpuRoot, xnode._xnodes, flag );       \r
+                       if( !xnode[ '_gpuParent' ] ){\r
+                               xnode[ '_flags' ] |= X_Node_State.GPU_CHILD;\r
+                               xnode[ '_gpuParent' ] = gpuRoot;\r
+                               xnode[ '_xnodes' ] && X_Node_toggleInTreeFlag( gpuRoot, xnode[ '_xnodes' ], flag );     \r
                        };\r
                };\r
        } else {\r
                for( ; i; ){\r
                        xnode = xnodes[ --i ];\r
-                       if( xnode._gpuParent === gpuRoot ){\r
-                               xnode._flags &= ~X_Node_State.GPU_CHILD;\r
-                               delete xnode._gpuParent;\r
-                               xnode._xnodes && X_Node_toggleInTreeFlag( gpuRoot, xnode._xnodes, flag );\r
+                       if( xnode[ '_gpuParent' ] === gpuRoot ){\r
+                               xnode[ '_flags' ] &= ~X_Node_State.GPU_CHILD;\r
+                               delete xnode[ '_gpuParent' ];\r
+                               xnode[ '_xnodes' ] && X_Node_toggleInTreeFlag( gpuRoot, xnode[ '_xnodes' ], flag );\r
                        };\r
                };\r
        };\r
 };\r
 \r
-/* --------------------------------------\r
- *  Create\r
+/**\r
+ * タグ名等を指定して新規に子ノードを作成し、現在のノードに追加する。\r
+ * @alias Node.prototype.create\r
+ * @param {string} [tag] タグ名\r
+ * @param {object} [opt_attrs=] 属性\r
+ * @param {object|string} [opt_css=] css\r
+ * @return {Node} 新規作成されたノード\r
+ * @example var child = parent.create( 'div' );\r
  */\r
 function X_Node_create( tag, opt_attrs, opt_css ){\r
        var xnode;\r
-       if( !this._tag ) return;\r
-       this.append( xnode = X_Doc_create( tag, opt_attrs, opt_css ) );\r
+       if( !this[ '_tag' ] ) return;\r
+       this[ 'append' ]( xnode = X_Doc_create( tag, opt_attrs, opt_css ) );\r
        return xnode;\r
 };\r
+/**\r
+ * 挿入位置とタグ名等を指定して新規に子ノードを作成し、現在のノードに挿入する。\r
+ * @alias Node.prototype.createAt\r
+ * @param {number} [index] 挿入位置\r
+ * @param {string} [tag] タグ名\r
+ * @param {object} [opt_attrs=] 属性\r
+ * @param {object|string} [opt_css=] css\r
+ * @return {Node} 新規作成されたノード\r
+ * @example var child = parent.create( 2, 'div' );\r
+ */\r
 function X_Node_createAt( index, tag, opt_attrs, opt_css ){\r
        var xnode;\r
-       if( !this._tag ) return;\r
-       this.appendAt( index, xnode = X_Doc_create( tag, opt_attrs, opt_css ) );\r
+       if( !this[ '_tag' ] ) return;\r
+       this[ 'appendAt' ]( index, xnode = X_Doc_create( tag, opt_attrs, opt_css ) );\r
        return xnode;\r
 };\r
 \r
-/* --------------------------------------\r
- *  CreateText\r
+/**\r
+ * テキストを指定して新規にテキストノードを作成し、現在のノードに挿入する。\r
+ * @alias Node.prototype.createText\r
+ * @param {string} [tag] テキスト\r
+ * @return {Node} 新規作成されたノード\r
  */\r
 function X_Node_createText( text ){\r
        var xnode;\r
-       if( !this._tag ) return;\r
-       this.append( xnode = X_Doc_createText( text ) );\r
+       if( !this[ '_tag' ] ) return;\r
+       this[ 'append' ]( xnode = X_Doc_createText( text ) );\r
        return xnode;\r
 };\r
+/**\r
+ * 挿入位置とテキストを指定して新規に子ノードを作成し、現在のノードに挿入する。\r
+ * @alias Node.prototype.createTextAt\r
+ * @param {number} [index] 挿入位置\r
+ * @param {string} [tag] テキスト\r
+ * @return {Node} 新規作成されたノード\r
+ */\r
 function X_Node_createTextAt( index, text ){\r
        var xnode;\r
-       if( !this._tag ) return;\r
-       this.appendAt( index, xnode = X_Doc_createText( text ) );\r
+       if( !this[ '_tag' ] ) return;\r
+       this[ 'appendAt' ]( index, xnode = X_Doc_createText( text ) );\r
        return xnode;\r
 };\r
 \r
-/* --------------------------------------\r
- *  Clone\r
+/**\r
+ * Node のクローンを作成し返す。id もクローンされる点に注意。イベントリスナはクローンされない。\r
  * http://d.hatena.ne.jp/think49/20110724/1311472811\r
  * http://d.hatena.ne.jp/uupaa/20100508/1273299874\r
+ * @alias Node.prototype.clone\r
+ * @param {boolean} [opt_clone_children] 子要素のクローンを行うか?\r
+ * @return {Node}\r
  */\r
 function X_Node_clone( opt_clone_children ){\r
        var xnode, xnodes, i, l;\r
-       if( this._tag ){\r
+       if( this[ '_tag' ] ){\r
                X_Node_newByTag = true;\r
-               xnode = new Node( this._tag, X_Object_clone( this._attrs ), X_Object_clone( this._css ) )\r
-                       .attr( { 'id' : this._id } )\r
-                       .className( this._className );\r
-               if( opt_clone_children && ( xnodes = this._xnodes ) && ( l = xnodes.length ) ){\r
+               xnode = new Node( this[ '_tag' ], X_Object_clone( this[ '_attrs' ] ), X_Object_clone( this[ '_css' ] ) )\r
+                       .attr( { 'id' : this[ '_id' ] } )\r
+                       [ 'className' ]( this[ '_className' ] );\r
+               if( opt_clone_children && ( xnodes = this[ '_xnodes' ] ) && ( l = xnodes.length ) ){\r
                        for( i = 0; i < l; ++i ){\r
-                               xnode.append( xnodes[ i ].clone( true ) );\r
+                               xnode[ 'append' ]( xnodes[ i ][ 'clone' ]( true ) );\r
                        };\r
                };\r
                return xnode;           \r
        };\r
        X_Node_newByText = true;\r
-       return new Node( this._text );\r
+       return new Node( this[ '_text' ] );\r
 };\r
 \r
-/* --------------------------------------\r
- *  Add\r
- * Node\r
- * HtmlElement の場合は内部使用専用 そのため event の破棄等しない\r
+/**\r
+ * ノードを子配列の最後に追加する。文字列が渡された場合、HTMLパーサーによって Node ツリーを作成して追加する。HtmlElement, TextNode の場合は内部使用専用。\r
+ * @alias Node.prototype.clone\r
+ * @param {Node|string|HTMLElement|TextNode} [v] HTMLElement と TextNode は内部のみ。\r
+ * @return {Node} 自身。チェインメソッド\r
+ * @example myNode.append( node );\r
+ * myNode.append( nodeSprite, '<div>A</div>', 'B' );\r
  */\r
 function X_Node_append( v ){\r
        var i, l, xnodes, frg;\r
-       if( !this._tag ) return;\r
+       if( !this[ '_tag' ] ) return;\r
        \r
        if( 1 < ( l = arguments.length ) ){\r
                for( i = 0; i < l; ++i ){\r
-                       this.append( arguments[ i ] );\r
+                       this[ 'append' ]( arguments[ i ] );\r
                };\r
                return this;\r
        };\r
        \r
-       if( !( xnodes = this._xnodes ) ) this._xnodes = xnodes = [];\r
+       if( !( xnodes = this[ '_xnodes' ] ) ) this[ '_xnodes' ] = xnodes = [];\r
        \r
        switch( X_Node_getType( v ) ){\r
                case X_Node_TYPE.RAW_HTML :\r
@@ -466,9 +607,9 @@ function X_Node_append( v ){
                        return this.append.apply( this, X_HtmlParser_parse( v, true ) );\r
                case X_Node_TYPE.XNODE :\r
                        // 親の xnodes から v を消す\r
-                       v.parent && v.remove();\r
+                       v.parent && v[ 'remove' ]();\r
                        // IE4 でテキストノードの追加、FIXED 済でない場合、親に要素の追加を通知\r
-                       if( X_UA[ 'IE4' ] && !v._tag && ( this._flags & X_Node_State.IE4_FIXED ) === 0 ) this._flags |= X_Node_State.IE4_DIRTY_CHILDREN;\r
+                       if( X_UA[ 'IE4' ] && !v[ '_tag' ] && ( this[ '_flags' ] & X_Node_State.IE4_FIXED ) === 0 ) this[ '_flags' ] |= X_Node_State.IE4_DIRTY_CHILDREN;\r
                        break;\r
                default :\r
                        return this;\r
@@ -476,34 +617,41 @@ function X_Node_append( v ){
 \r
        v.parent = this;\r
        xnodes[ xnodes.length ] = v;\r
-       if( this._flags & X_Node_State.IN_TREE ){\r
-               v._flags |= X_Node_State.IN_TREE;\r
-               v._xnodes && X_Node_toggleInTreeFlag( v._xnodes, true );\r
+       if( this[ '_flags' ] & X_Node_State.IN_TREE ){\r
+               v[ '_flags' ] |= X_Node_State.IN_TREE;\r
+               v[ '_xnodes' ] && X_Node_toggleInTreeFlag( v[ '_xnodes' ], true );\r
                X_Node_reserveUpdate();\r
        };\r
        return this;\r
 };\r
 \r
-\r
+/**\r
+ * ノードを挿入位置に追加する。\r
+ * @alias Node.prototype.clone\r
+ * @param {number} index 挿入位置 0以上\r
+ * @param {Node|string|HTMLElement|TextNode} [v] HTMLElement と TextNode は内部のみ。\r
+ * @return {Node} 自身。チェインメソッド\r
+ * @example myNode.appendAt( 1, node );\r
+ */\r
 function X_Node_appendAt( start, v ){\r
        var xnodes, l, i;\r
        \r
-       if( !this._tag ) return this;\r
+       if( !this[ '_tag' ] ) return this;\r
        \r
        l = arguments.length;\r
-       if( !( xnodes = this._xnodes ) ) xnodes = this._xnodes = [];\r
+       if( !( xnodes = this[ '_xnodes' ] ) ) xnodes = this[ '_xnodes' ] = [];\r
        \r
        if( xnodes.length <= start ){\r
-               if( l === 2 ) return this.append( v );\r
+               if( l === 2 ) return this[ 'append' ]( v );\r
                for( i = 1; i < l; ++i ){\r
-                       this.append( arguments[ i ] );\r
+                       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
+                       this[ 'appendAt' ]( start, arguments[ --l ] );\r
                };\r
                return this;\r
        };\r
@@ -517,24 +665,24 @@ function X_Node_appendAt( start, v ){
                case X_Node_TYPE.STRING :\r
                        v = X_HtmlParser_parse( v, true );\r
                        for( i = v.length; i; ){\r
-                               this.appendAt( start, v[ --i ] );\r
+                               this[ 'appendAt' ]( start, v[ --i ] );\r
                        };\r
                        return this;\r
                case X_Node_TYPE.XNODE :\r
                        // 親の xnodes から v を消す\r
-                       v.parent && v.remove();\r
+                       v.parent && v[ 'remove' ]();\r
                        // IE4 でテキストノードの追加、FIXED 済でない場合、親に要素の追加を通知\r
-                       if( X_UA[ 'IE4' ] && !v._tag && ( this._flags & X_Node_State.IE4_FIXED ) === 0 ) this._flags |= X_Node_State.IE4_DIRTY_CHILDREN;\r
+                       if( X_UA[ 'IE4' ] && !v[ '_tag' ] && ( this[ '_flags' ] & X_Node_State.IE4_FIXED ) === 0 ) this[ '_flags' ] |= X_Node_State.IE4_DIRTY_CHILDREN;\r
                        break;\r
                default :\r
                        return this;\r
        };\r
 \r
        v.parent = this;\r
-       this._xnodes.splice( start, 0, v );\r
-       if( this._flags & X_Node_State.IN_TREE ){\r
-               v._flags |= X_Node_State.IN_TREE;\r
-               v._xnodes && X_Node_toggleInTreeFlag( v._xnodes, true );\r
+       this[ '_xnodes' ].splice( start, 0, v );\r
+       if( this[ '_flags' ] & X_Node_State.IN_TREE ){\r
+               v[ '_flags' ] |= X_Node_State.IN_TREE;\r
+               v[ '_xnodes' ] && X_Node_toggleInTreeFlag( v[ '_xnodes' ], true );\r
                X_Node_reserveUpdate();\r
        };\r
        return this;\r
@@ -553,12 +701,7 @@ function X_Node_appendTo( parent, opt_index ){
                default :\r
                        return this;\r
        };\r
-       opt_index === undefined ? parent.append( this ) : parent.appendAt( opt_index, this );\r
-       return this;\r
-};\r
-\r
-function X_Node_appendToRoot( opt_index ){\r
-       opt_index === undefined ? X_Node_body.append( this ) : X_Node_body.appendAt( opt_index, this );\r
+       opt_index === undefined ? parent[ 'append' ]( this ) : parent[ 'appendAt' ]( opt_index, this );\r
        return this;\r
 };\r
 \r
@@ -571,7 +714,7 @@ function X_Node_before( v ){
        // getter\r
        if( v === undefined ){\r
                if( !parent ) return;\r
-               xnodes = parent._xnodes;\r
+               xnodes = parent[ '_xnodes' ];\r
                i      = xnodes.indexOf( this );\r
                return 0 < i ? xnodes[ i - 1 ] : v;\r
        };\r
@@ -579,14 +722,14 @@ function X_Node_before( v ){
        if( !parent ) return this;\r
        \r
        l = arguments.length;\r
-       start = this.getOrder();\r
+       start = this[ 'getOrder' ]();\r
        if( 1 < l ){\r
                for( ; l; ){\r
-                       parent.appendAt( start, arguments[ --l ] );\r
+                       parent[ 'appendAt' ]( start, arguments[ --l ] );\r
                };\r
                return this;\r
        };\r
-       parent.appendAt( start, v );\r
+       parent[ 'appendAt' ]( start, v );\r
        return this;\r
 };\r
 \r
@@ -596,7 +739,7 @@ function X_Node_after( v ){
        // getter\r
        if( v === undefined ){\r
                if( !parent ) return;\r
-               xnodes = parent._xnodes;\r
+               xnodes = parent[ '_xnodes' ];\r
                i      = xnodes.indexOf( this );\r
                return ++i < xnodes.length ? xnodes[ i ] : v;\r
        };\r
@@ -604,30 +747,30 @@ function X_Node_after( v ){
        if( !parent ) return this;\r
        \r
        l = arguments.length;\r
-       start = this.getOrder() + 1;\r
-       if( parent._xnodes.length <= start ){\r
+       start = this[ 'getOrder' ]() + 1;\r
+       if( parent[ '_xnodes' ].length <= start ){\r
                if( 1 < l ){\r
                        for( i = 0; i < l; ++i ){\r
-                               parent.append( arguments[ i ] );\r
+                               parent[ 'append' ]( arguments[ i ] );\r
                        };\r
                        return this;\r
                };\r
-               parent.append( v );\r
+               parent[ 'append' ]( v );\r
                return this;\r
        };\r
        if( 1 < l ){\r
                for( ; l; ){\r
-                       parent.appendAt( start, arguments[ --l ] );\r
+                       parent[ 'appendAt' ]( start, arguments[ --l ] );\r
                };\r
                return this;\r
        };\r
-       parent.appendAt( start, v );\r
+       parent[ 'appendAt' ]( start, v );\r
        return this;\r
 };\r
 \r
 function X_Node_swap( v ){\r
        if( !this.parent ) return this;\r
-       return arguments.length === 1 ? this.before( v ).remove() : this.before.apply( this, arguments ).remove();\r
+       return arguments.length === 1 ? this[ 'prev' ]( v )[ 'remove' ]() : X_Node_before.apply( this, arguments )[ 'remove' ]();\r
 };\r
 \r
 /* --------------------------------------\r
@@ -640,23 +783,23 @@ function X_Node_remove(){
        if( !parent ) return this;\r
 \r
        delete this.parent;\r
-       parent._xnodes.splice( parent._xnodes.indexOf( this ), 1 );\r
+       parent[ '_xnodes' ].splice( parent[ '_xnodes' ].indexOf( this ), 1 );\r
        \r
-       if( this._flags & X_Node_State.IN_TREE ){\r
-               this._flags &= ~X_Node_State.IN_TREE & ~X_Node_State.IE5_DISPLAY_NONE_FIX;\r
-               this._xnodes && X_Node_toggleInTreeFlag( this._xnodes, false );\r
+       if( this[ '_flags' ] & X_Node_State.IN_TREE ){\r
+               this[ '_flags' ] &= ~X_Node_State.IN_TREE & ~X_Node_State.IE5_DISPLAY_NONE_FIX;\r
+               this[ '_xnodes' ] && X_Node_toggleInTreeFlag( this[ '_xnodes' ], false );\r
 \r
                if( X_UA_DOM.IE4 ){\r
-                       elm = this._rawObject || X_Node__ie4getRawNode( this );\r
+                       elm = this[ '_rawObject' ] || X_Node__ie4getRawNode( this );\r
                        if( elm ){\r
                                X_Node_reserveRemoval[ X_Node_reserveRemoval.length ] = this;\r
                                X_Node_reserveUpdate();                 \r
                        } else\r
-                       if( !this._tag && ( parent._flags & X_Node_State.IE4_FIXED ) === 0 ){\r
-                               parent._flags |= X_Node_State.IE4_DIRTY_CHILDREN;\r
+                       if( !this[ '_tag' ] && ( parent[ '_flags' ] & X_Node_State.IE4_FIXED ) === 0 ){\r
+                               parent[ '_flags' ] |= X_Node_State.IE4_DIRTY_CHILDREN;\r
                        };\r
                } else {\r
-                       elm = this._rawObject;\r
+                       elm = this[ '_rawObject' ];\r
                        if( elm && elm.parentNode && elm.parentNode.tagName ){\r
                                X_Node_reserveRemoval[ X_Node_reserveRemoval.length ] = this;\r
                                X_Node_reserveUpdate();                 \r
@@ -667,7 +810,7 @@ function X_Node_remove(){
 };\r
 \r
 function X_Node_empty(){\r
-       var xnodes = this._xnodes, i;\r
+       var xnodes = this[ '_xnodes' ], i;\r
        if( xnodes && ( i = xnodes.length ) ){\r
                for( ; i; ){\r
                        xnodes[ --i ].destroy();\r
@@ -682,38 +825,38 @@ function X_Node_empty(){
  */\r
 \r
 function X_Node_destroy( isChild ){\r
-       var xnodes = this._xnodes, i, elm;\r
+       var xnodes = this[ '_xnodes' ], i, elm;\r
        \r
-       if( ( this._flags & X_Node_State.EXIST ) === 0 ) return;\r
+       if( ( this[ '_flags' ] & X_Node_State.EXIST ) === 0 ) return;\r
        \r
-       elm = this._rawObject || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this );\r
+       elm = this[ '_rawObject' ] || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this );\r
        \r
        if( xnodes && ( i = xnodes.length ) ){\r
                //for( ; i; ){\r
                //      xnodes[ --i ].destroy( true );\r
                //};\r
        };\r
-       elm && this._listeners && this.unlisten(); // イベントの退避\r
+       elm && this._listeners && this[ 'unlisten' ](); // イベントの退避\r
 \r
-       if( this._flags & X_Node_State.IN_TREE ){\r
-               !isChild && this.remove();\r
-               this._flags &= ~X_Node_State.EXIST;\r
+       if( this[ '_flags' ] & X_Node_State.IN_TREE ){\r
+               !isChild && this[ 'remove' ]();\r
+               this[ '_flags' ] &= ~X_Node_State.EXIST;\r
        } else {\r
-               this.parent && this.parent._xnodes.splice( this.parent._xnodes.indexOf( this ), 1 );\r
+               this.parent && this.parent[ '_xnodes' ].splice( this.parent[ '_xnodes' ].indexOf( this ), 1 );\r
                elm && !isChild && X_Node__actualRemove( this );\r
-               this.kill();\r
+               this[ 'kill' ]();\r
        };\r
        \r
-       delete X_Node_CHASHE[ this._uid ];\r
+       delete X_Node_CHASHE[ this[ '_uid' ] ];\r
 };\r
 \r
 function X_Node_onBeforeKill( e ){\r
-       var xnodes = this._xnodes, i, elm;\r
+       var xnodes = this[ '_xnodes' ], i, elm;\r
        \r
-       if( ( this._flags & X_Node_State.EXIST ) === 0 ) return X.Callback.NONE;\r
+       if( ( this[ '_flags' ] & X_Node_State.EXIST ) === 0 ) return X_Callback_NONE;\r
        \r
-       elm = this._rawObject || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this );\r
-       elm && this._listeners && this.unlisten(); // イベントの退避\r
+       elm = this[ '_rawObject' ] || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this );\r
+       elm && this._listeners && this[ 'unlisten' ](); // イベントの退避\r
 \r
        if( xnodes && ( i = xnodes.length ) ){\r
                for( ; i; ){\r
@@ -721,16 +864,16 @@ function X_Node_onBeforeKill( e ){
                };\r
        };\r
 \r
-       delete X_Node_CHASHE[ this._uid ];\r
+       delete X_Node_CHASHE[ this[ '_uid' ] ];\r
 \r
        if( e ){\r
-               this.remove();\r
+               this[ 'remove' ]();\r
                if( X_Node_reserveRemoval[ X_Node_reserveRemoval.length - 1 ] === this ){\r
-                       this._flags &= ~X_Node_State.EXIST;\r
-                       return X.Callback.PREVENT_DEFAULT;              \r
+                       this[ '_flags' ] &= ~X_Node_State.EXIST;\r
+                       return X_Callback_PREVENT_DEFAULT;              \r
                };              \r
        };\r
-       return X.Callback.NONE;\r
+       return X_Callback_NONE;\r
 };\r
 \r
 \r
@@ -739,20 +882,20 @@ function X_Node_onBeforeKill( e ){
  */\r
 function X_Node_contains( v ){\r
        var elm, type, xnodes, i;\r
-       if( !v || !this._tag || this === v ) return false;\r
+       if( !v || !this[ '_tag' ] || this === v ) return false;\r
        // contains ie4+\r
-       if( ( elm = this._rawObject || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this ) ) && document.contains && ( type = X_Node_getType( v ) ) && ( type === X_Node_TYPE.RAW_HTML || type === X_Node_TYPE.RAW_TEXT ) ){\r
-               return elm.contains( v );       \r
+       if( ( elm = this[ '_rawObject' ] || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this ) ) && document.contains && ( type = X_Node_getType( v ) ) && ( type === X_Node_TYPE.RAW_HTML || type === X_Node_TYPE.RAW_TEXT ) ){\r
+               return elm[ 'contains' ]( v );  \r
        };\r
        //if( document.compareDocumentPosition ){\r
        //      \r
        //};\r
-       xnodes = this._xnodes;\r
+       xnodes = this[ '_xnodes' ];\r
        if( !xnodes || !xnodes.length ) return false;\r
        if( xnodes.indexOf( v ) !== -1 ) return true; // fast\r
        if( elm === v.parentNode ) return true;\r
        for( i = xnodes.length; i; ){\r
-               if( xnodes[ --i ].contains( v ) ) return true;\r
+               if( xnodes[ --i ][ 'contains' ]( v ) ) return true;\r
        };\r
        return false;\r
 };\r
@@ -761,12 +904,12 @@ function X_Node_contains( v ){
  *  getChild\r
  */\r
 function X_Node_getChildAt( i ){\r
-       var xnodes = this._xnodes;\r
+       var xnodes = this[ '_xnodes' ];\r
        return xnodes && 0 <= i && i < xnodes.length && xnodes[ i ];\r
 };\r
 \r
 function X_Node_length(){\r
-       var xnodes = this._xnodes;\r
+       var xnodes = this[ '_xnodes' ];\r
        return xnodes ? xnodes.length : 0;\r
 };\r
 \r
@@ -774,10 +917,11 @@ function X_Node_length(){
  *  firstChild, lastChild\r
  */\r
 function X_Node_firstChild(){\r
-       return this.getChildAt( 0 );\r
+       return this[ '_xnodes' ] && this[ '_xnodes' ][ 0 ];\r
 };\r
 function X_Node_lastChild(){\r
-       return this.getChildAt( this._xnodes.length - 1 );\r
+       var xnodes = this[ '_xnodes' ];\r
+       return xnodes && xnodes[ xnodes.length - 1 ];\r
 };\r
 \r
 /* --------------------------------------\r
@@ -786,7 +930,7 @@ function X_Node_lastChild(){
 function X_Node_getOrder(){\r
        var parent = this.parent;\r
        if( !parent ) return -1;\r
-       return parent._xnodes.indexOf( this );\r
+       return parent[ '_xnodes' ].indexOf( this );\r
 };\r
 \r
 /* --------------------------------------\r
@@ -795,12 +939,12 @@ function X_Node_getOrder(){
 function X_Node_className( v ){\r
        var node, _, __;\r
        // getter\r
-       if( v === undefined ) return this._className;\r
+       if( v === undefined ) return this[ '_className' ];\r
        \r
        // setter\r
-       if( this._className === v ) return this;\r
+       if( this[ '_className' ] === v ) return this;\r
        if( !v || !X_Type_isString( v ) ){\r
-               delete this._className;\r
+               delete this[ '_className' ];\r
        } else {\r
                // cleanup\r
                _  = ' ';\r
@@ -809,11 +953,11 @@ function X_Node_className( v ){
                v.charAt( 0 ) === _ && ( v = v.substr( 1 ) );\r
                v.lastIndexOf( _ ) === 0 && ( v = v.substr( 0, v.length - 1 ) );\r
                \r
-               if( this._className === v ) return this;\r
-               v ? ( this._className = v ) : delete this._className;\r
+               if( this[ '_className' ] === v ) return this;\r
+               v ? ( this[ '_className' ] = v ) : delete this[ '_className' ];\r
        };\r
-       this._flags |= X_Node_State.DIRTY_CLASSNAME;\r
-       this._flags & X_Node_State.IN_TREE && X_Node_reserveUpdate();\r
+       this[ '_flags' ] |= X_Node_State.DIRTY_CLASSNAME;\r
+       this[ '_flags' ] & X_Node_State.IN_TREE && X_Node_reserveUpdate();\r
        return this;\r
 };\r
 function X_Node_addClass( v ){\r
@@ -824,13 +968,13 @@ function X_Node_addClass( v ){
        for( ; i; ){\r
                name = names[ --i ];\r
                if( !name ) continue;\r
-               !this.hasClass( name ) && ( v += ( v ? ' ' : '' ) + name );\r
+               !this[ 'hasClass' ]( name ) && ( v += ( v ? ' ' : '' ) + name );\r
        };\r
-       return v ? this.className( this._className + ( this._className ? ' ' : '' ) + v ) : this;\r
+       return v ? this[ 'className' ]( this[ '_className' ] + ( this[ '_className' ] ? ' ' : '' ) + v ) : this;\r
 };\r
 function X_Node_removeClass( v ){\r
        var _          = ' ',\r
-               className  = this._className,\r
+               className  = this[ '_className' ],\r
                names      = v.split( _ ),\r
                classNames, i, f, j;\r
        if( !className ) return this;\r
@@ -845,23 +989,23 @@ function X_Node_removeClass( v ){
                        };\r
                };\r
        };\r
-       return f ? this.className( classNames.join( _ ) ) : this;\r
+       return f ? this[ 'className' ]( classNames.join( _ ) ) : this;\r
 };\r
 function X_Node_toggleClass( v, opt_toggle ){\r
        var names, i, name;\r
        if( opt_toggle !== undefined ){\r
-               return !!opt_toggle ? this.addClass( v ) : this.removeClass( v );       \r
+               return !!opt_toggle ? this[ 'addClass' ]( v ) : this[ 'removeClass' ]( v );     \r
        };\r
        names = v.split( ' ' );\r
        for( i = names.length; i; ){\r
                name = names[ --i ];\r
-               this.hasClass( name ) ? this.removeClass( name ) : this.addClass( name );\r
+               this[ 'hasClass' ]( name ) ? this[ 'removeClass' ]( name ) : this[ 'addClass' ]( name );\r
        };\r
        return this;\r
 };\r
 function X_Node_hasClass( v ){\r
        var _ = ' ',\r
-               className = this._className,\r
+               className = this[ '_className' ],\r
                i, name;\r
        if( className === v ) return true;\r
        if( !className ) return false;\r
@@ -886,35 +1030,35 @@ function X_Node_html( html ){
        var _ = '', q = '"', xnodes, n, i, l;\r
        // setter\r
        if( html !== undefined ){ // String 以外に Number や false null なども許可\r
-               if( !this._tag ) return this.text( html );\r
-               return html ? this.empty().append.apply( this, X_HtmlParser_parse( html, true ) ) : this.empty();\r
+               if( !this[ '_tag' ] ) return this[ 'text' ]( html );\r
+               return html ? this[ 'empty' ]().append.apply( this, X_HtmlParser_parse( html, true ) ) : this[ 'empty' ]();\r
        };\r
        \r
        // getter\r
-       if( !this._tag ){\r
-               return this._text;\r
+       if( !this[ '_tag' ] ){\r
+               return this[ '_text' ];\r
        };\r
        \r
-       this._flags & X_Node_State.OLD_CSSTEXT && X_Node_CSS_objToCssText( this );\r
+       this[ '_flags' ] & X_Node_State.OLD_CSSTEXT && X_Node_CSS_objToCssText( this );\r
 \r
        html = !X_Node_outerXNode ? [] : [\r
-               '<', this._tag,\r
-               this._id ? ' id="' + this._id + q : _,\r
-               this._className ? ' class="' + this._className + q : _,\r
-               this._flags & X_Node_State.OLD_ATTRTEXT ? X_Node_Attr_objToAttrText( this ) : this._attrText,\r
-               this._cssText ? ' style="' + this._cssText + q : _,\r
+               '<', this[ '_tag' ],\r
+               this[ '_id' ] ? ' id="' + this[ '_id' ] + q : _,\r
+               this[ '_className' ] ? ' class="' + this[ '_className' ] + q : _,\r
+               this[ '_flags' ] & X_Node_State.OLD_ATTRTEXT ? X_Node_Attr_objToAttrText( this ) : this[ '_attrText' ],\r
+               this[ '_cssText' ] ? ' style="' + this[ '_cssText' ] + q : _,\r
        '>' ];\r
        \r
        n = html.length;\r
-       if( ( xnodes = this._xnodes ) && ( l = xnodes.length ) ){\r
+       if( ( xnodes = this[ '_xnodes' ] ) && ( l = xnodes.length ) ){\r
                if( !X_Node_outerXNode ) X_Node_outerXNode = this;\r
                for( i = 0; i < l; ++i ){\r
-                       html[ n ] = xnodes[ i ].html();\r
+                       html[ n ] = xnodes[ i ][ 'html' ]();\r
                        ++n;\r
                };\r
                if( X_Node_outerXNode === this ) X_Node_outerXNode = null;\r
        };\r
-       !X_Node_outerXNode || X_Dom_DTD_EMPTY[ this._tag ] || ( html[ n ] = '<\/' + this._tag + '>' );\r
+       !X_Node_outerXNode || X_Dom_DTD_EMPTY[ this[ '_tag' ] ] || ( html[ n ] = '<\/' + this[ '_tag' ] + '>' );\r
        return html.join( _ );\r
 };\r
 \r
@@ -928,34 +1072,34 @@ function X_Node_text( text ){
                if( text === null ) text = '';\r
                text += '';\r
                \r
-               if( !this._tag ){\r
-                       if( this._text !== text ){\r
-                               text ? ( this._text = text ) : delete this._text;\r
-                               this._flags |= X_Node_State.DIRTY_CONTENT;                              \r
-                               this._flags & X_Node_State.IN_TREE && X_Node_reserveUpdate();\r
+               if( !this[ '_tag' ] ){\r
+                       if( this[ '_text' ] !== text ){\r
+                               text ? ( this[ '_text' ] = text ) : delete this[ '_text' ];\r
+                               this[ '_flags' ] |= X_Node_State.DIRTY_CONTENT;                         \r
+                               this[ '_flags' ] & X_Node_State.IN_TREE && X_Node_reserveUpdate();\r
                        };\r
                        return this;\r
                };\r
-               if( ( xnodes = this._xnodes ) && xnodes.length === 1 && !xnodes[ 0 ]._tag ){\r
-                       xnodes[ 0 ].text( text );\r
+               if( ( xnodes = this[ '_xnodes' ] ) && xnodes.length === 1 && !xnodes[ 0 ][ '_tag' ] ){\r
+                       xnodes[ 0 ][ 'text' ]( text );\r
                        return this;\r
                };\r
                // TODO 一つのtextnode を残すケース 完全に削除したい場合は empty()を使う\r
-               if( !text ) return this.empty();                \r
-               this.empty().createText( text );\r
+               if( !text ) return this[ 'empty' ]();           \r
+               this[ 'empty' ]()[ 'createText' ]( text );\r
                return this;\r
        };\r
        // getter\r
-       if( this._tag ){\r
-               if( ( xnodes = this._xnodes ) && ( l = xnodes.length ) ){\r
+       if( this[ '_tag' ] ){\r
+               if( ( xnodes = this[ '_xnodes' ] ) && ( l = xnodes.length ) ){\r
                        for( texts = [], i = 0; i < l; ++i ){\r
-                               texts[ i ] = xnodes[ i ].text();\r
+                               texts[ i ] = xnodes[ i ][ 'text' ]();\r
                        };\r
                        return texts.join( '' );\r
                };\r
                return '';\r
        };\r
-       return this._text;\r
+       return this[ '_text' ];\r
 };\r
 \r
 /*\r
@@ -969,24 +1113,24 @@ function X_Node_call( name /*, opt_args... */ ){
        \r
        switch( name ){\r
                case 'nodeType' :\r
-                       return this._tag ? 1 : 3;\r
+                       return this[ '_tag' ] ? 1 : 3;\r
                case 'text' :\r
-                       return this.text();\r
+                       return this[ 'text' ]();\r
                case 'html' :\r
                case 'innerHTML' :\r
-                       return this.html();\r
+                       return this[ 'html' ]();\r
                case 'outerHTML' :\r
                        X_Node_outerXNode = X_Node_body; // == true ならなんでもよい。型を合わすために xbody にしている\r
-                       v = this.html();\r
+                       v = this[ 'html' ]();\r
                        X_Node_outerXNode = null;\r
                        return v;\r
                case 'fontSize' :\r
                        return X_Node_CSS_getCharSize( this );\r
                case 'inGPU' :\r
-                       return !!( this._flags & ( X_Node_State.GPU_NOW | X_Node_State.GPU_RELEASE_RESERVED ) );\r
+                       return !!( this[ '_flags' ] & ( X_Node_State.GPU_NOW | X_Node_State.GPU_RELEASE_RESERVED ) );\r
        };\r
        \r
-       raw  = this._rawObject || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this );\r
+       raw  = this[ '_rawObject' ] || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this );\r
        if( !raw ) return;\r
        \r
        if( name === 'scrollTo' ){\r
@@ -1049,7 +1193,7 @@ function X_Node_each( func /*, opt_args */ ){
  */\r
        \r
 function X_Node_reserveUpdate(){\r
-       if( !X_Node_updateTimerID ) X_Node_updateTimerID = X.Timer.requestFrame( X_Node_startUpdate );\r
+       if( !X_Node_updateTimerID ) X_Node_updateTimerID = X_Timer_requestFrame( X_Node_startUpdate );\r
 };\r
 \r
 var X_Node_updateReservedByReleaseGPU = false;\r
@@ -1057,16 +1201,16 @@ var X_Node_updateReservedByReleaseGPU = false;
 function X_Node_startUpdate( time ){\r
        var removal, i, xnode;\r
        \r
-       if( !X_Node_updateTimerID || X_ViewPort_readyState < X_TEMP.SYSTEM_EVENT_INIT ){\r
+       if( !X_Node_updateTimerID || X_ViewPort_readyState < X_EVENT_INIT ){\r
                return;\r
        };\r
 \r
-       X.Timer.cancelFrame( X_Node_updateTimerID );\r
+       X_Timer_cancelFrame( X_Node_updateTimerID );\r
        X_Node_updateTimerID = 0;\r
 \r
        if( time ){\r
                // X.Timer 経由でないと発火しない このイベントでサイズを取ると無限ループに\r
-               X_System._listeners && X_System._listeners[ X_Event.BEFORE_UPDATE ] && X_System.dispatch( X_Event.BEFORE_UPDATE );\r
+               X_System._listeners && X_System._listeners[ X_EVENT_BEFORE_UPDATE ] && X_System[ 'dispatch' ]( X_EVENT_BEFORE_UPDATE );\r
        };\r
 \r
        removal = X_Node_reserveRemoval;\r
@@ -1076,16 +1220,16 @@ function X_Node_startUpdate( time ){
                        xnode = removal[ --i ];\r
                        // TODO GPU レイヤーの子の場合、remove をスキップする。 非GPU レイヤーへ apppend される場合、clone する?\r
                        X_Node__actualRemove( xnode );\r
-                       ( xnode._flags & X_Node_State.EXIST ) === 0 && xnode.kill();\r
+                       ( xnode[ '_flags' ] & X_Node_State.EXIST ) === 0 && xnode[ 'kill' ]();\r
                };\r
                removal.length = 0;\r
        };\r
        \r
-       if( X_Node_html._flags & X_Node_BitMask_IS_DIRTY ){\r
-               X_Node__commitUpdate( X_Node_html, X_Node_html._rawObject.parentNode, null, X_Node_html._flags );\r
+       if( X_Node_html[ '_flags' ] & X_Node_BitMask_IS_DIRTY ){\r
+               X_Node__commitUpdate( X_Node_html, X_Node_html[ '_rawObject' ].parentNode, null, X_Node_html[ '_flags' ] );\r
        } else {\r
-               X_Node__commitUpdate( X_Node_head, X_Node_head._rawObject.parentNode, null, X_Node_head._flags );\r
-               X_Node__commitUpdate( X_Node_body, X_Node_body._rawObject.parentNode, null, X_Node_body._flags );\r
+               X_Node__commitUpdate( X_Node_head, X_Node_head[ '_rawObject' ].parentNode, null, X_Node_head[ '_flags' ] );\r
+               X_Node__commitUpdate( X_Node_body, X_Node_body[ '_rawObject' ].parentNode, null, X_Node_body[ '_flags' ] );\r
        };\r
        \r
        if( X_Node_updateReservedByReleaseGPU ){\r
@@ -1095,10 +1239,10 @@ function X_Node_startUpdate( time ){
        \r
        if( time ){\r
                // X.Timer 経由でないと発火しない このイベントでサイズを取ると無限ループに\r
-               X_System._listeners && X_System._listeners[ X_Event.UPDATED ] && X_System.dispatch( X_Event.UPDATED );  \r
+               X_System._listeners && X_System._listeners[ X_EVENT_UPDATED ] && X_System[ 'dispatch' ]( X_EVENT_UPDATED );     \r
        };\r
        \r
-       X_ViewPort._listeners && X_ViewPort._listeners[ X_Event.AFTER_UPDATE ] && X_ViewPort.asyncDispatch( X_Event.AFTER_UPDATE );\r
+       X_ViewPort._listeners && X_ViewPort._listeners[ X_EVENT_AFTER_UPDATE ] && X_ViewPort[ 'asyncDispatch' ]( X_EVENT_AFTER_UPDATE );\r
 };\r
 \r
 /*\r
@@ -1117,34 +1261,34 @@ function X_Node_startUpdate( time ){
 var X_Node__commitUpdate =\r
        X_UA_DOM.W3C ?\r
                ( function( that, parentElement, nextElement, accumulatedFlags ){\r
-                       var elm = that._rawObject,\r
+                       var elm = that[ '_rawObject' ],\r
                                created, xnodes, l, next;\r
 \r
                        // 1. GPU 一切の更新をスキップ\r
-                       if( that._flags & X_Node_State.GPU_NOW ){\r
-                               console.log( '更新のskip ' + !!( that._flags & X_Node_BitMask_IS_DIRTY ) );\r
-                               that._flags & X_Node_BitMask_IS_DIRTY && X_Node__updateRawNode( that, elm );\r
+                       if( that[ '_flags' ] & X_Node_State.GPU_NOW ){\r
+                               console.log( '更新のskip ' + !!( that[ '_flags' ] & X_Node_BitMask_IS_DIRTY ) );\r
+                               that[ '_flags' ] & X_Node_BitMask_IS_DIRTY && X_Node__updateRawNode( that, elm );\r
                                return elm;\r
                        };\r
 \r
                        // 2. GPU解放予約\r
                        // TODO もしかしたらこのタイミングで更新できるかも。\r
-                       if( that._flags & X_Node_State.GPU_RELEASE_RESERVED ){\r
+                       if( that[ '_flags' ] & X_Node_State.GPU_RELEASE_RESERVED ){\r
                                console.log( 'GPU 解放 ' );\r
                                //X_Node_updateReservedByReleaseGPU = true;\r
                                //X_Node__updateRawNode( that, elm );\r
-                               that._flags &= X_Node_BitMask_RESET_GPU;\r
+                               that[ '_flags' ] &= X_Node_BitMask_RESET_GPU;\r
                                //return elm;\r
                        };\r
 \r
                        // 3. GPU予約 -> GPU\r
-                       if( that._flags & X_Node_State.GPU_RESERVED ){\r
-                               that._flags &= X_Node_BitMask_RESET_GPU;\r
-                               that._flags |= X_Node_State.GPU_NOW;\r
+                       if( that[ '_flags' ] & X_Node_State.GPU_RESERVED ){\r
+                               that[ '_flags' ] &= X_Node_BitMask_RESET_GPU;\r
+                               that[ '_flags' ] |= X_Node_State.GPU_NOW;\r
                        };\r
 \r
                        // 4. style="display:none" の場合\r
-                       if( that._flags & X_Node_State.STYLE_IS_DISPLAY_NONE ){\r
+                       if( that[ '_flags' ] & X_Node_State.STYLE_IS_DISPLAY_NONE ){\r
                                if( X_Node_displayNoneFixForIE5 ){\r
                                        // filter の効いている要素を含む要素は display:none が無視される。\r
                                        // filter = '' で削除はできるが、再表示時に filter が消える。 -> filter な要素を削除してしまう。                                         \r
@@ -1158,9 +1302,9 @@ var X_Node__commitUpdate =
                        };\r
                        \r
                        // 5. ie5 非表示fixフラグ\r
-                       accumulatedFlags |= that._flags;\r
+                       accumulatedFlags |= that[ '_flags' ];\r
                        \r
-                       if( that._flags & X_Node_State.IE5_DISPLAY_NONE_FIX ){\r
+                       if( that[ '_flags' ] & X_Node_State.IE5_DISPLAY_NONE_FIX ){\r
                                if( accumulatedFlags & ( X_Node_State.DIRTY_POSITION | X_Node_State.DIRTY_ID | X_Node_State.DIRTY_CLASSNAME ) === 0 ){\r
                                        return nextElement;\r
                                };\r
@@ -1168,27 +1312,27 @@ var X_Node__commitUpdate =
                        \r
                        // 6. 要素の生成\r
                        if( !elm ){\r
-                               if( !that._tag ){\r
-                                       that._flags &= X_Node_BitMask_RESET_DIRTY;\r
-                                       that._rawObject = elm = document.createTextNode( X_String_chrReferanceTo( that._text ) );\r
+                               if( !that[ '_tag' ] ){\r
+                                       that[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;\r
+                                       that[ '_rawObject' ] = elm = document.createTextNode( X_String_chrReferanceTo( that[ '_text' ] ) );\r
                                        if( !X_UA[ 'IE' ] ){\r
-                                               elm.UID = that._uid;\r
+                                               elm[ 'UID' ] = that[ '_uid' ];\r
                                        };\r
                                } else\r
                                if( X_Node_strictElmCreation ){\r
-                                       that._flags & X_Node_State.OLD_CSSTEXT && X_Node_CSS_objToCssText( that, true ); // OLD_CSSTEXT ??\r
+                                       that[ '_flags' ] & X_Node_State.OLD_CSSTEXT && X_Node_CSS_objToCssText( that, true ); // OLD_CSSTEXT ??\r
                \r
-                                       that._rawObject = elm =\r
+                                       that[ '_rawObject' ] = elm =\r
                                                document.createElement( [\r
-                                                       '<', that._tag,\r
-                                                               ' UID="', that._uid, '"',\r
-                                                               that._id ? ' id="' + that._id + '"' : '',\r
-                                                               that._className ? ' class="' + that._className + '"' : '',\r
+                                                       '<', that[ '_tag' ],\r
+                                                               ' UID="', that[ '_uid' ], '"',\r
+                                                               that[ '_id' ] ? ' id="' + that[ '_id' ] + '"' : '',\r
+                                                               that[ '_className' ] ? ' class="' + that[ '_className' ] + '"' : '',\r
                                                                X_Node_Attr_objToAttrText( that, true ),\r
-                                                               that._cssText ? ' style="' + that._cssText + '"' : '',\r
+                                                               that[ '_cssText' ] ? ' style="' + that[ '_cssText' ] + '"' : '',\r
                                                        '>' ].join( '' ) );\r
                                } else {\r
-                                       that._rawObject = elm = document.createElement( that._tag );\r
+                                       that[ '_rawObject' ] = elm = document.createElement( that[ '_tag' ] );\r
                                };\r
                                \r
                                // IE には要素追加のタイミングで起こるメモリリークがありここで追加\r
@@ -1198,9 +1342,9 @@ var X_Node__commitUpdate =
                                                parentElement.appendChild( elm );\r
                                };\r
 \r
-                               if( that._tag ){\r
+                               if( that[ '_tag' ] ){\r
                                        X_EventDispatcher_toggleAllEvents( that, true );// イベントの復帰                                \r
-                                       that._flags |= X_Node_State.ACTUAL_LISTENING;\r
+                                       that[ '_flags' ] |= X_Node_State.ACTUAL_LISTENING;\r
                                        \r
                                        if( X_Node_documentFragment ){\r
                                                //( frg = X_Node_documentFragment ).appendChild( elm );\r
@@ -1208,20 +1352,20 @@ var X_Node__commitUpdate =
                                        };\r
 \r
                                        if( X_Node_strictElmCreation ){\r
-                                               that._flags &= X_Node_BitMask_RESET_DIRTY;\r
+                                               that[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;\r
                                                // ie の string から要素を作る場合、ネットワーク系属性は onload イベントなどを拾うために、要素生成->イベント復帰後に適用する\r
-                                               that._newAttrs && ( that._flags |= X_Node_State.DIRTY_ATTR ); // _newAttrs には ネットワーク系属性が入っている。Network 系の属性は遅らせて設定\r
-                                               that._flags |= X_Node_State.DIRTY_IE_FILTER;// doc 追加後に filter を指定しないと有効にならない。\r
+                                               that[ '_newAttrs' ] && ( that[ '_flags' ] |= X_Node_State.DIRTY_ATTR ); // _newAttrs には ネットワーク系属性が入っている。Network 系の属性は遅らせて設定\r
+                                               that[ '_flags' ] |= X_Node_State.DIRTY_IE_FILTER;// doc 追加後に filter を指定しないと有効にならない。\r
                                        } else {\r
-                                               elm.UID = that._uid;\r
-                                               that._newAttrs = that._attrs;\r
-                                               that._flags &= X_Node_BitMask_RESET_DIRTY;\r
-                                               that._flags |= X_Node_State.DIRTY_ID | X_Node_State.DIRTY_CLASSNAME | X_Node_State.DIRTY_ATTR | X_Node_State.DIRTY_CSS | X_Node_State.DIRTY_IE_FILTER;\r
+                                               elm[ 'UID' ] = that[ '_uid' ];\r
+                                               that[ '_newAttrs' ] = that[ '_attrs' ];\r
+                                               that[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;\r
+                                               that[ '_flags' ] |= X_Node_State.DIRTY_ID | X_Node_State.DIRTY_CLASSNAME | X_Node_State.DIRTY_ATTR | X_Node_State.DIRTY_CSS | X_Node_State.DIRTY_IE_FILTER;\r
                                                \r
                                                // http://outcloud.blogspot.jp/2010/09/iframe.html\r
                                                // この問題は firefox3.6 で確認\r
                                                if( X_UA[ 'Gecko' ] ){\r
-                                                       if( that._tag === 'IFRAME' && ( !that._attrs || !that._attrs[ 'src' ] ) ){\r
+                                                       if( that[ '_tag' ] === 'IFRAME' && ( !that[ '_attrs' ] || !that[ '_attrs' ][ 'src' ] ) ){\r
                                                                //elm.contentWindow.location.replace = elm.src = 'about:blank';\r
                                                                that.attr( 'src', 'about:blank' );\r
                                                        };\r
@@ -1238,14 +1382,14 @@ var X_Node__commitUpdate =
                                        parentElement.appendChild( elm );\r
                        };\r
                        \r
-                       if( that._listeners && ( that._flags & X_Node_State.ACTUAL_LISTENING ) === 0 ){\r
+                       if( that._listeners && ( that[ '_flags' ] & X_Node_State.ACTUAL_LISTENING ) === 0 ){\r
                                X_EventDispatcher_toggleAllEvents( that, true );// イベントの退避\r
-                               that._flags |= X_Node_State.ACTUAL_LISTENING;\r
+                               that[ '_flags' ] |= X_Node_State.ACTUAL_LISTENING;\r
                        };\r
                        \r
                        // 8. 更新の適用\r
                        if( accumulatedFlags & X_Node_BitMask_IS_DIRTY ){\r
-                               delete that._fontSize;\r
+                               delete that[ '_fontSize' ];\r
                                X_Node__updateRawNode( that, elm );\r
                        };\r
 \r
@@ -1253,18 +1397,18 @@ var X_Node__commitUpdate =
                        // 親及び自身へのクラス・id指定で display : none になるケースがありそれを検出\r
                        // 生成と破棄が繰り返されてしまう、親と自身の id, class が変わった場合だけ再生成。 accumulatedFlags & ( ID | CLASSNAME )\r
                        // currentStyle を観ていたときはエラーで停止する、alert と挟むと正常に動いて支離滅裂\r
-                       if( X_Node_displayNoneFixForIE5 && that._tag ){\r
+                       if( X_Node_displayNoneFixForIE5 && that[ '_tag' ] ){\r
                                if( elm.runtimeStyle.display === 'none' ){\r
                                        X_Node__actualRemove( that );\r
-                                       that._flags |= X_Node_State.IE5_DISPLAY_NONE_FIX;\r
+                                       that[ '_flags' ] |= X_Node_State.IE5_DISPLAY_NONE_FIX;\r
                                        return nextElement;                                     \r
                                } else {\r
-                                       that._flags &= ~X_Node_State.IE5_DISPLAY_NONE_FIX;\r
+                                       that[ '_flags' ] &= ~X_Node_State.IE5_DISPLAY_NONE_FIX;\r
                                };\r
                        };\r
                        \r
                        // 10. 子要素の更新。\r
-                       if( ( xnodes = that._xnodes ) && ( l = xnodes.length ) ) {\r
+                       if( ( xnodes = that[ '_xnodes' ] ) && ( l = xnodes.length ) ) {\r
                                for( ; l; ){\r
                                        next = X_Node__commitUpdate( xnodes[ --l ], elm, next, accumulatedFlags );\r
                                };\r
@@ -1275,7 +1419,7 @@ var X_Node__commitUpdate =
                                        parentElement.insertBefore( elm, nextElement ) :\r
                                        parentElement.appendChild( elm );\r
                                \r
-                               if( X_UA[ 'Gecko' ] && that._tag === 'IFRAME' && elm.contentWindow ){\r
+                               if( X_UA[ 'Gecko' ] && that[ '_tag' ] === 'IFRAME' && elm.contentWindow ){\r
                                        // tree に追加されるまで contentWindow は存在しない。\r
                                        elm.contentWindow.location.replace = elm.src;\r
                                };\r
@@ -1285,16 +1429,16 @@ var X_Node__commitUpdate =
                }) :\r
        X_UA_DOM.IE4 ? \r
                ( function( that, parentElement, prevElement, accumulatedFlags ){\r
-                       var elm = that._rawObject || X_Node__ie4getRawNode( that ),\r
+                       var elm = that[ '_rawObject' ] || X_Node__ie4getRawNode( that ),\r
                                xnodes, l, i, dirty, mix, html, text, prev;\r
 \r
-                       if( !that._tag ){\r
-                               that._flags & X_Node_State.DIRTY_CONTENT && X_Node__updateRawNode( that, elm );\r
+                       if( !that[ '_tag' ] ){\r
+                               that[ '_flags' ] & X_Node_State.DIRTY_CONTENT && X_Node__updateRawNode( that, elm );\r
                                return elm;\r
                        };\r
                        \r
                        // 4. style="display:none" の場合\r
-                       if( that._flags & X_Node_State.STYLE_IS_DISPLAY_NONE ){\r
+                       if( that[ '_flags' ] & X_Node_State.STYLE_IS_DISPLAY_NONE ){\r
                                if( elm ){\r
                                        elm.style.display = 'none';\r
                                        if( elm.style.display !== 'none' ){ // ie4 の style は currentStyle 相当らしい、、、? div 以外への display:none が効かないので remove する。\r
@@ -1310,14 +1454,14 @@ var X_Node__commitUpdate =
                                        prevElement.insertAdjacentHTML( 'AfterEnd', X_Node__actualCreate( that, false ) ) :\r
                                        parentElement.insertAdjacentHTML( 'AfterBegin', X_Node__actualCreate( that, false ) );\r
                                X_Node__afterActualCreate( that );\r
-                               return that._rawObject || X_Node__ie4getRawNode( that );\r
+                               return that[ '_rawObject' ] || X_Node__ie4getRawNode( that );\r
                        };\r
                        \r
-                       accumulatedFlags |= that._flags;\r
+                       accumulatedFlags |= that[ '_flags' ];\r
                        \r
-                       xnodes = that._xnodes;\r
+                       xnodes = that[ '_xnodes' ];\r
                        l      = xnodes ? xnodes.length : 0;\r
-                       dirty  = !!( that._flags & X_Node_State.IE4_DIRTY_CHILDREN );\r
+                       dirty  = !!( that[ '_flags' ] & X_Node_State.IE4_DIRTY_CHILDREN );\r
                        \r
                        /*\r
                         * HTML の下に TextNode だけ 。MIX_FIXED でない場合、削除、追加 を親に通知\r
@@ -1326,21 +1470,21 @@ var X_Node__commitUpdate =
                         * HTML の下は MIX_FIXED -> TextNode を <font> に置き換えてあるのでW3C DON 的に触ることができる\r
                         */\r
                        if( dirty ){\r
-                               that._flags &= ~X_Node_State.IE4_DIRTY_CHILDREN;\r
+                               that[ '_flags' ] &= ~X_Node_State.IE4_DIRTY_CHILDREN;\r
                                for( i = 0; i < l; ++i ){\r
-                                       if( xnodes[ i ]._tag ){\r
-                                               that._flags |= X_Node_State.IE4_HAS_ELEMENT;\r
+                                       if( xnodes[ i ][ '_tag' ] ){\r
+                                               that[ '_flags' ] |= X_Node_State.IE4_HAS_ELEMENT;\r
                                        } else {\r
-                                               that._flags |= X_Node_State.IE4_HAS_TEXTNODE;\r
+                                               that[ '_flags' ] |= X_Node_State.IE4_HAS_TEXTNODE;\r
                                        };\r
-                                       if( that._flags & X_Node_BitMask_IE4_IS_MIX === X_Node_BitMask_IE4_IS_MIX ){\r
+                                       if( that[ '_flags' ] & X_Node_BitMask_IE4_IS_MIX === X_Node_BitMask_IE4_IS_MIX ){\r
                                                mix = true;\r
                                                break;\r
                                        };\r
                                };\r
                        };\r
                        \r
-                       if( that._flags & X_Node_State.IE4_FIXED || that._flags & X_Node_BitMask_IE4_IS_MIX === X_Node_State.IE4_HAS_ELEMENT ){\r
+                       if( that[ '_flags' ] & X_Node_State.IE4_FIXED || that[ '_flags' ] & X_Node_BitMask_IE4_IS_MIX === X_Node_State.IE4_HAS_ELEMENT ){\r
                                for( i = 0; i < l; ++i ){\r
                                        prev = X_Node__commitUpdate( xnodes[ i ], elm, prev, accumulatedFlags );\r
                                };\r
@@ -1354,24 +1498,24 @@ var X_Node__commitUpdate =
                                for( i = 0; i < l; ++i ){\r
                                        X_Node__afterActualCreate( xnodes[ i ] );\r
                                };\r
-                               that._flags |= X_Node_State.IE4_FIXED;\r
+                               that[ '_flags' ] |= X_Node_State.IE4_FIXED;\r
                        } else\r
-                       if( that._flags & X_Node_State.IE4_HAS_TEXTNODE ){\r
+                       if( that[ '_flags' ] & X_Node_State.IE4_HAS_TEXTNODE ){\r
                                dirty = dirty || false;\r
                                for( i = 0; i < l; ++i ){\r
                                        text = xnodes[ i ];\r
-                                       if( text._flags & X_Node_BitMask_IS_DIRTY ){\r
-                                               text._flags &= X_Node_BitMask_RESET_DIRTY;\r
+                                       if( text[ '_flags' ] & X_Node_BitMask_IS_DIRTY ){\r
+                                               text[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;\r
                                                dirty = true;\r
                                        };\r
                                };\r
-                               if( dirty ) elm.innerHTML = that.text();\r
+                               if( dirty ) elm.innerHTML = that[ 'text' ]();\r
                        };\r
                        \r
-                       if( accumulatedFlags & X_Node_BitMask_IS_DIRTY ) delete that._fontSize;\r
+                       if( accumulatedFlags & X_Node_BitMask_IS_DIRTY ) delete that[ '_fontSize' ];\r
                        \r
-                       that._flags &= ~X_Node_State.DIRTY_POSITION;\r
-                       that._flags & X_Node_BitMask_IS_DIRTY && X_Node__updateRawNode( that, elm );\r
+                       that[ '_flags' ] &= ~X_Node_State.DIRTY_POSITION;\r
+                       that[ '_flags' ] & X_Node_BitMask_IS_DIRTY && X_Node__updateRawNode( that, elm );\r
                        return elm;\r
                }) :\r
                (function(){});\r
@@ -1385,28 +1529,28 @@ var X_Node__updateRawNode =
                        var attrs, rename, k, v;\r
 \r
                        // textNode\r
-                       if( !that._tag ){\r
-                               elm.data = X_String_chrReferanceTo( that._text );\r
-                               that._flags &= X_Node_BitMask_RESET_DIRTY;\r
+                       if( !that[ '_tag' ] ){\r
+                               elm.data = X_String_chrReferanceTo( that[ '_text' ] );\r
+                               that[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;\r
                                return;\r
                        };\r
                        // id\r
-                       if( that._flags & X_Node_State.DIRTY_ID ){\r
-                               that._id ? ( elm.id = that._id ) : ( elm.id && elm.removeAttribute( 'id' ) );           \r
+                       if( that[ '_flags' ] & X_Node_State.DIRTY_ID ){\r
+                               that[ '_id' ] ? ( elm.id = that[ '_id' ] ) : ( elm.id && elm.removeAttribute( 'id' ) );         \r
                        };\r
                        // className\r
-                       if( that._flags & X_Node_State.DIRTY_CLASSNAME ){\r
-                               that._className ? ( elm.className = that._className ) : ( elm.className && elm.removeAttribute( X_UA[ 'IE' ] < 8 ? 'className' : 'class' ) ); // className は ie7-                     \r
+                       if( that[ '_flags' ] & X_Node_State.DIRTY_CLASSNAME ){\r
+                               that[ '_className' ] ? ( elm.className = that[ '_className' ] ) : ( elm.className && elm.removeAttribute( X_UA[ 'IE' ] < 8 ? 'className' : 'class' ) ); // className は ie7-                   \r
                        };\r
                        \r
                        // attr\r
-                       if( that._flags & X_Node_State.DIRTY_ATTR && ( attrs = that._newAttrs || that._attrs ) ){\r
+                       if( that[ '_flags' ] & X_Node_State.DIRTY_ATTR && ( attrs = that[ '_newAttrs' ] || that[ '_attrs' ] ) ){\r
                                rename = X_Node_Attr_renameForDOM;\r
                                                \r
                                for( k in attrs ){\r
                                        v = attrs[ k ];\r
                                        \r
-                                       switch( that._tag + k ){\r
+                                       switch( that[ '_tag' ] + k ){\r
                                                case 'TEXTAREAvalue' :\r
                                                        // IETester 5.5 ではエラーが出なかった.MultipulIE5.5 ではエラーが出たので\r
                                                        if( !X_UA[ 'MacIE' ] && X_UA[ 'IE5x' ] ){\r
@@ -1439,41 +1583,41 @@ var X_Node__updateRawNode =
                                                elm.removeAttribute( rename[ k ] || k ) :\r
                                                ( elm[ rename[ k ] || k ] = X_Node_Attr_noValue[ k ] ? k : v );\r
                                };\r
-                               delete that._newAttrs;\r
+                               delete that[ '_newAttrs' ];\r
                        };\r
                        \r
                        // style\r
-                       if( that._flags & X_Node_State.DIRTY_CSS ){\r
-                               if( that._flags & X_Node_State.OLD_CSSTEXT ? X_Node_CSS_objToCssText( that ) : that._cssText ){\r
+                       if( that[ '_flags' ] & X_Node_State.DIRTY_CSS ){\r
+                               if( that[ '_flags' ] & X_Node_State.OLD_CSSTEXT ? X_Node_CSS_objToCssText( that ) : that[ '_cssText' ] ){\r
                                        X_UA[ 'Opera78' ] || X_UA[ 'NN6' ] ?\r
-                                               elm.setAttribute( 'style', that._cssText ) : // opera8用\r
-                                               ( elm.style.cssText = that._cssText );\r
+                                               elm.setAttribute( 'style', that[ '_cssText' ] ) : // opera8用\r
+                                               ( elm.style.cssText = that[ '_cssText' ] );\r
                                } else {\r
                                        elm.style.cssText = ''; // IE5.5以下 Safari3.2 で必要\r
                                        elm.removeAttribute( 'style' );\r
                                };\r
                        } else\r
-                       if( that._flags & X_Node_State.DIRTY_IE_FILTER ){\r
+                       if( that[ '_flags' ] & X_Node_State.DIRTY_IE_FILTER ){\r
                                v = X_Node_CSS_objToIEFilterText( that );\r
                                if( v ){\r
                                        elm.style.filter = v;\r
-                                       that._flags |= X_Node_State.IE_FILTER_NOW;\r
+                                       that[ '_flags' ] |= X_Node_State.IE_FILTER_NOW;\r
                                } else {\r
                                        elm.style.removeAttribute( 'filter' );\r
-                                       that._flags &= ~X_Node_State.IE_FILTER_NOW;\r
+                                       that[ '_flags' ] &= ~X_Node_State.IE_FILTER_NOW;\r
                                };\r
                        };\r
                        \r
-                       that._flags &= X_Node_BitMask_RESET_DIRTY;\r
+                       that[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;\r
                }) :\r
        X_UA_DOM.IE4 ? \r
                ( function( that, elm ){\r
                        var attrs, rename, k, v;\r
 \r
                        // fake textNode\r
-                       if( !that._tag ){\r
-                               elm.innerText = that._text;\r
-                               that._flags &= X_Node_BitMask_RESET_DIRTY;\r
+                       if( !that[ '_tag' ] ){\r
+                               elm.innerText = that[ '_text' ];\r
+                               that[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;\r
                                return;\r
                        };\r
                        \r
@@ -1482,34 +1626,34 @@ var X_Node__updateRawNode =
                 * title、className、id、lang、language には setAttribute でなく、element.id で直接読み書きできる\r
                 */     \r
                        // id\r
-                       if( that._flags & X_Node_State.DIRTY_ID ) elm.setAttribute( 'id', that._id || ( 'ie4uid' + that._uid ) );\r
+                       if( that[ '_flags' ] & X_Node_State.DIRTY_ID ) elm.setAttribute( 'id', that[ '_id' ] || ( 'ie4uid' + that[ '_uid' ] ) );\r
 \r
                        // className\r
-                       if( that._flags & X_Node_State.DIRTY_CLASSNAME ){\r
-                               that._className ? ( elm.className = that._className ) : elm.removeAttribute( 'class' );\r
+                       if( that[ '_flags' ] & X_Node_State.DIRTY_CLASSNAME ){\r
+                               that[ '_className' ] ? ( elm.className = that[ '_className' ] ) : elm.removeAttribute( 'class' );\r
                        };\r
                        // style\r
-                       if( that._flags & X_Node_State.DIRTY_CSS ){\r
-                               if( that._flags & X_Node_State.OLD_CSSTEXT ? X_Node_CSS_objToCssText( that ) : that._cssText ){\r
-                                       elm.style.cssText = that._cssText;\r
+                       if( that[ '_flags' ] & X_Node_State.DIRTY_CSS ){\r
+                               if( that[ '_flags' ] & X_Node_State.OLD_CSSTEXT ? X_Node_CSS_objToCssText( that ) : that[ '_cssText' ] ){\r
+                                       elm.style.cssText = that[ '_cssText' ];\r
                                } else {\r
                                        elm.style.cssText = '';\r
                                        elm.removeAttribute( 'style' );\r
                                };\r
                        } else\r
-                       if( that._flags & X_Node_State.DIRTY_IE_FILTER ){\r
+                       if( that[ '_flags' ] & X_Node_State.DIRTY_IE_FILTER ){\r
                                v = X_Node_CSS_objToIEFilterText( that );\r
                                if( v ){\r
                                        elm.style.filter = v;\r
-                                       that._flags |= X_Node_State.IE_FILTER_NOW;\r
+                                       that[ '_flags' ] |= X_Node_State.IE_FILTER_NOW;\r
                                } else {\r
                                        elm.style.removeAttribute( 'filter' );\r
-                                       that._flags &= ~X_Node_State.IE_FILTER_NOW;\r
+                                       that[ '_flags' ] &= ~X_Node_State.IE_FILTER_NOW;\r
                                };\r
                        };\r
                        \r
                        // attr\r
-                       if( that._flags & X_Node_State.DIRTY_ATTR && ( attrs = that._newAttrs || that._attrs ) ){\r
+                       if( that[ '_flags' ] & X_Node_State.DIRTY_ATTR && ( attrs = that[ '_newAttrs' ] || that[ '_attrs' ] ) ){\r
                                rename = X_Node_Attr_renameForDOM;\r
                                for( k in attrs ){\r
                                        //if( X_EMPTY_OBJECT[ k ] ) continue;\r
@@ -1517,10 +1661,10 @@ var X_Node__updateRawNode =
                                                elm.removeAttribute( rename[ k ] || k ) :\r
                                                elm.setAttribute( rename[ k ] || k, X_Node_Attr_noValue[ k ] ? k : v );\r
                                };\r
-                               delete that._newAttrs;\r
+                               delete that[ '_newAttrs' ];\r
                        };\r
 \r
-                       that._flags &= X_Node_BitMask_RESET_DIRTY;\r
+                       that[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;\r
                }) :\r
                (function(){});\r
 \r
@@ -1543,54 +1687,54 @@ var X_Node__updateRawNode =
  */\r
 var X_Node__actualCreate =\r
        X_UA_DOM.IE4 && (function( that, isChild ){\r
-               var uid = that._uid,\r
+               var uid = that[ '_uid' ],\r
                        html, xnodes, n, i, l;\r
                \r
-               if( !that._tag ){\r
-                       html = [ '<FONT id=ie4uid', uid, ' UID="', uid, '">', that._text, '</FONT>' ];// fake textNode\r
-                       delete that._rawObject;\r
+               if( !that[ '_tag' ] ){\r
+                       html = [ '<FONT id=ie4uid', uid, ' UID="', uid, '">', that[ '_text' ], '</FONT>' ];// fake textNode\r
+                       delete that[ '_rawObject' ];\r
                } else {\r
                        if( !isChild ) X_Node__actualRemove( that, /* true */ false );\r
                        \r
-                       that._flags & X_Node_State.OLD_CSSTEXT && X_Node_CSS_objToCssText( that, true );\r
+                       that[ '_flags' ] & X_Node_State.OLD_CSSTEXT && X_Node_CSS_objToCssText( that, true );\r
                        \r
                        html = [\r
-                               '<', that._tag, ' id=', ( that._id || ( 'ie4uid' + uid ) ), ' UID="', uid, '"',\r
-                               that._className ? ' class="' + that._className + '"' : '',\r
+                               '<', that[ '_tag' ], ' id=', ( that[ '_id' ] || ( 'ie4uid' + uid ) ), ' UID="', uid, '"',\r
+                               that[ '_className' ] ? ' class="' + that[ '_className' ] + '"' : '',\r
                                X_Node_Attr_objToAttrText( that, true ),\r
-                               that._cssText ? ' style="' + that._cssText + '"' : '',\r
+                               that[ '_cssText' ] ? ' style="' + that[ '_cssText' ] + '"' : '',\r
                        '>' ];\r
                        \r
                        n = html.length;\r
-                       if( ( xnodes = that._xnodes ) && ( l = xnodes.length ) ){\r
+                       if( ( xnodes = that[ '_xnodes' ] ) && ( l = xnodes.length ) ){\r
                                \r
-                               that._flags &= ~X_Node_State.IE4_DIRTY_CHILDREN;\r
+                               that[ '_flags' ] &= ~X_Node_State.IE4_DIRTY_CHILDREN;\r
                                for( i = 0; i < l; ++i ){\r
-                                       if( xnodes[ i ]._tag ){\r
-                                               that._flags |= X_Node_State.IE4_HAS_ELEMENT;\r
+                                       if( xnodes[ i ][ '_tag' ] ){\r
+                                               that[ '_flags' ] |= X_Node_State.IE4_HAS_ELEMENT;\r
                                        } else {\r
-                                               that._flags |= X_Node_State.IE4_HAS_TEXTNODE;\r
+                                               that[ '_flags' ] |= X_Node_State.IE4_HAS_TEXTNODE;\r
                                        };\r
-                                       if( that._flags & X_Node_BitMask_IE4_IS_MIX === X_Node_BitMask_IE4_IS_MIX ){\r
+                                       if( that[ '_flags' ] & X_Node_BitMask_IE4_IS_MIX === X_Node_BitMask_IE4_IS_MIX ){\r
                                                break;\r
                                        };\r
                                };\r
                                \r
-                               if( that._flags & X_Node_BitMask_IE4_IS_MIX === X_Node_State.IE4_HAS_TEXTNODE ){\r
+                               if( that[ '_flags' ] & X_Node_BitMask_IE4_IS_MIX === X_Node_State.IE4_HAS_TEXTNODE ){\r
                                        // only textnode\r
-                                       html[ n ] = that.text();\r
+                                       html[ n ] = that[ 'text' ]();\r
                                        ++n;\r
                                } else {\r
                                        for( i = 0; i < l; ++i ){\r
                                                html[ n ] = X_Node__actualCreate( xnodes[ i ], true );\r
                                                ++n;\r
                                        };\r
-                                       that._flags |= X_Node_State.IE4_FIXED;\r
+                                       that[ '_flags' ] |= X_Node_State.IE4_FIXED;\r
                                };\r
                        };\r
-                       X_Dom_DTD_EMPTY[ that._tag ] || ( html[ n ] = '<\/' + that._tag + '>' );\r
+                       X_Dom_DTD_EMPTY[ that[ '_tag' ] ] || ( html[ n ] = '<\/' + that[ '_tag' ] + '>' );\r
                        \r
-                       that._newAttrs && ( that._flags |= X_Node_State.DIRTY_ATTR );\r
+                       that[ '_newAttrs' ] && ( that[ '_flags' ] |= X_Node_State.DIRTY_ATTR );\r
                };\r
                \r
                return html.join( '' );\r
@@ -1600,18 +1744,18 @@ var X_Node__afterActualCreate =
        X_UA_DOM.IE4 && (function( that ){\r
                var xnodes, i, v;\r
                \r
-               if( !that._tag ) return that;\r
+               if( !that[ '_tag' ] ) return that;\r
                \r
-               if( ( xnodes = that._xnodes ) && ( i = xnodes.length ) ){\r
+               if( ( xnodes = that[ '_xnodes' ] ) && ( i = xnodes.length ) ){\r
                        for( ; i; ){\r
                                X_Node__afterActualCreate( xnodes[ --i ] );\r
                        };\r
                };\r
                // ネットワーク系属性と filter は要素生成後に適用\r
-               if( that._flags & ( X_Node_State.DIRTY_ATTR | X_Node_State.DIRTY_IE_FILTER ) ){\r
-                       X_Node__updateRawNode( that, that._rawObject || X_Node__ie4getRawNode( that ) );\r
+               if( that[ '_flags' ] & ( X_Node_State.DIRTY_ATTR | X_Node_State.DIRTY_IE_FILTER ) ){\r
+                       X_Node__updateRawNode( that, that[ '_rawObject' ] || X_Node__ie4getRawNode( that ) );\r
                } else {\r
-                       that._flags &= X_Node_BitMask_RESET_DIRTY;\r
+                       that[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;\r
                };\r
                X_EventDispatcher_toggleAllEvents( that, true );// イベントの復帰\r
        });\r
@@ -1621,22 +1765,22 @@ var X_Node__actualRemove =
                // GPUレイヤーにいるうちは remove しない。-> GPU解除してから remove する\r
                // Firefox34 では遭遇せず、Safari で何度かアニメーションしているうちに発生\r
                ( function( that, isChild ){\r
-                       var xnodes = that._xnodes,\r
-                               elm    = that._rawObject,\r
+                       var xnodes = that[ '_xnodes' ],\r
+                               elm    = that[ '_rawObject' ],\r
                                child, i, l;\r
 \r
                        if( xnodes && ( l = xnodes.length ) ){\r
                                for( i = 0; i < l; ++i ){\r
                                        child = xnodes[ i ];\r
-                                       child._tag && X_Node__actualRemove( child, true );\r
+                                       child[ '_tag' ] && X_Node__actualRemove( child, true );\r
                                };\r
                        };\r
 \r
                        if( !elm ) return;\r
                        \r
-                       if( that._flags & X_Node_State.ACTUAL_LISTENING ){\r
+                       if( that[ '_flags' ] & X_Node_State.ACTUAL_LISTENING ){\r
                                that._listeners && X_EventDispatcher_toggleAllEvents( that, false );// イベントの退避\r
-                               that._flags &= ~X_Node_State.ACTUAL_LISTENING;\r
+                               that[ '_flags' ] &= ~X_Node_State.ACTUAL_LISTENING;\r
                        };\r
                        \r
                        // ie5では filter の効いている要素をremove時に破棄して、再度append 時に新規生成する\r
@@ -1645,22 +1789,22 @@ var X_Node__actualRemove =
                                if( elm.filters && elm.filters.length ){\r
                                        //elm.style.removeAttribute( 'filter' );\r
                                        isChild = false;\r
-                                       delete that._rawObject;\r
+                                       delete that[ '_rawObject' ];\r
                                        // 破棄前にインタラクティブな属性値を控える\r
-                                       if( X_Node_Attr_HAS_VALUE[ that._tag ] && ( !that._newAttrs || !X_Object_inObject( 'value', that._newAttrs ) ) ){\r
-                                               if( !that._attrs ) that._attrs = {};\r
-                                               that._attrs.value = elm.value;\r
+                                       if( X_Node_Attr_HAS_VALUE[ that[ '_tag' ] ] && ( !that[ '_newAttrs' ] || !X_Object_inObject( 'value', that[ '_newAttrs' ] ) ) ){\r
+                                               if( !that[ '_attrs' ] ) that[ '_attrs' ] = {};\r
+                                               that[ '_attrs' ].value = elm.value;\r
                                        };\r
-                                       if( that._tag === 'OPTION' && ( !that._newAttrs || !X_Object_inObject( 'selected', that._newAttrs ) ) ){\r
-                                               if( !that._attrs ) that._attrs = {};\r
-                                               that._attrs.selected = elm.selected;\r
+                                       if( that[ '_tag' ] === 'OPTION' && ( !that[ '_newAttrs' ] || !X_Object_inObject( 'selected', that[ '_newAttrs' ] ) ) ){\r
+                                               if( !that[ '_attrs' ] ) that[ '_attrs' ] = {};\r
+                                               that[ '_attrs' ].selected = elm.selected;\r
                                        };\r
-                                       if( that._tag === 'SELECT' && ( !that._newAttrs || !X_Object_inObject( 'selectedIndex', that._newAttrs ) ) ){\r
-                                               if( !that._attrs ) that._attrs = {};\r
-                                               that._attrs.selectedIndex = elm.selectedIndex;\r
+                                       if( that[ '_tag' ] === 'SELECT' && ( !that[ '_newAttrs' ] || !X_Object_inObject( 'selectedIndex', that[ '_newAttrs' ] ) ) ){\r
+                                               if( !that[ '_attrs' ] ) that[ '_attrs' ] = {};\r
+                                               that[ '_attrs' ].selectedIndex = elm.selectedIndex;\r
                                        };\r
-                                       if( that._tag === 'INPUT' && that._attr && ( that._attr.type === 'checkbox' || that._attr.type === 'radio' ) && ( !that._newAttrs || !X_Object_inObject( 'checked', that._newAttrs ) ) ){\r
-                                               that._attrs.checked = elm.checked;\r
+                                       if( that[ '_tag' ] === 'INPUT' && that._attr && ( that._attr.type === 'checkbox' || that._attr.type === 'radio' ) && ( !that[ '_newAttrs' ] || !X_Object_inObject( 'checked', that[ '_newAttrs' ] ) ) ){\r
+                                               that[ '_attrs' ].checked = elm.checked;\r
                                        };\r
                                        // 子要素への参照を外す\r
                                        elm.innerHTML = '';\r
@@ -1676,8 +1820,8 @@ var X_Node__actualRemove =
                }) :\r
        X_UA_DOM.IE4 ?\r
                ( function( that, isChild ){\r
-                       var xnodes = that._xnodes,\r
-                               elm    = that._rawObject || X_Node__ie4getRawNode( that ),\r
+                       var xnodes = that[ '_xnodes' ],\r
+                               elm    = that[ '_rawObject' ] || X_Node__ie4getRawNode( that ),\r
                                i, l, xnode;\r
                        if( xnodes && ( l = xnodes.length ) ){\r
                                for( i = 0; i < l; ++i ){\r
@@ -1689,29 +1833,29 @@ var X_Node__actualRemove =
                        that._listeners && X_EventDispatcher_toggleAllEvents( that, false );// イベントの退避\r
                        \r
                        // 破棄前にインタラクティブな属性値を控える\r
-                       if( X_Node_Attr_HAS_VALUE[ that._tag ] && ( !that._newAttrs || !X_Object_inObject( 'value', that._newAttrs ) ) ){\r
-                               if( !that._attrs ) that._attrs = {};\r
-                               that._attrs.value = elm.value;\r
+                       if( X_Node_Attr_HAS_VALUE[ that[ '_tag' ] ] && ( !that[ '_newAttrs' ] || !X_Object_inObject( 'value', that[ '_newAttrs' ] ) ) ){\r
+                               if( !that[ '_attrs' ] ) that[ '_attrs' ] = {};\r
+                               that[ '_attrs' ].value = elm.value;\r
                        };\r
-                       if( that._tag === 'OPTION' && ( !that._newAttrs || !X_Object_inObject( 'selected', that._newAttrs ) ) ){\r
-                               if( !that._attrs ) that._attrs = {};\r
-                               that._attrs.selected = elm.selected;\r
+                       if( that[ '_tag' ] === 'OPTION' && ( !that[ '_newAttrs' ] || !X_Object_inObject( 'selected', that[ '_newAttrs' ] ) ) ){\r
+                               if( !that[ '_attrs' ] ) that[ '_attrs' ] = {};\r
+                               that[ '_attrs' ].selected = elm.selected;\r
                        };\r
-                       if( that._tag === 'SELECT' && ( !that._newAttrs || !X_Object_inObject( 'selectedIndex', that._newAttrs ) ) ){\r
-                               if( !that._attrs ) that._attrs = {};\r
-                               that._attrs.selectedIndex = elm.selectedIndex;\r
+                       if( that[ '_tag' ] === 'SELECT' && ( !that[ '_newAttrs' ] || !X_Object_inObject( 'selectedIndex', that[ '_newAttrs' ] ) ) ){\r
+                               if( !that[ '_attrs' ] ) that[ '_attrs' ] = {};\r
+                               that[ '_attrs' ].selectedIndex = elm.selectedIndex;\r
                        };\r
-                       if( that._tag === 'INPUT' && that._attr && ( that._attr.type === 'checkbox' || that._attr.type === 'radio' ) && ( !that._newAttrs || !X_Object_inObject( 'checked', that._newAttrs ) ) ){\r
-                               if( !that._attrs ) that._attrs = {};\r
-                               that._attrs.checked = elm.checked;\r
+                       if( that[ '_tag' ] === 'INPUT' && that._attr && ( that._attr.type === 'checkbox' || that._attr.type === 'radio' ) && ( !that[ '_newAttrs' ] || !X_Object_inObject( 'checked', that[ '_newAttrs' ] ) ) ){\r
+                               if( !that[ '_attrs' ] ) that[ '_attrs' ] = {};\r
+                               that[ '_attrs' ].checked = elm.checked;\r
                        };\r
 \r
                        elm.removeAttribute( 'id' ); // ?\r
-                       //document.all[ that._id || ( 'ie4uid' + that._uid ) ] = null; // MacIE5 でエラー\r
+                       //document.all[ that[ '_id' ] || ( 'ie4uid' + that[ '_uid' ] ) ] = null; // MacIE5 でエラー\r
                        if( !isChild ) elm.outerHTML = '';\r
-                       delete that._rawObject;\r
+                       delete that[ '_rawObject' ];\r
                }) :\r
                (function(){});\r
 \r
-X_ViewPort.listenOnce( X_Event.UNLOAD, X_Node__actualRemove, [ X_Node_html, true ] );\r
+X_ViewPort[ 'listenOnce' ]( X_EVENT_UNLOAD, X_Node__actualRemove, [ X_Node_html, true ] );\r
 \r
index 16ab951..6ba81c8 100644 (file)
 \r
 // http://msdn.microsoft.com/ja-jp/library/ie/dn255104%28v=vs.85%29.aspx\r
 var X_Dom_Event_devicePixelRatio = window.devicePixelRatio || ( window.screen.deviceXDPI / window.screen.logicalXDPI ),\r
-       X_Dom_Event_convertMSPointerType = window.MSPointerEvent && [ 0, 0, 'touch', 'pen', 'mouse' ];/*{\r
+       X_Dom_Event_convertMSPointerType = window.MSPointerEvent && [ 0, 0, 'touch', 'pen', 'mouse' ],/*{\r
                '2' : 'touch',\r
                '3' : 'pen',\r
                '4' : 'mouse'\r
        }; */\r
+       X_Dom_Event_CANCEL_MOUSE = {},\r
+       X_DomEvent;\r
 \r
 if( !X_UA[ 'IE' ] || 9 <= X_UA[ 'IE' ] ){\r
-       X.Dom.Event = function( e, xnode ){\r
+       X_DomEvent = function( e, xnode ){\r
                var originalType = e.type,\r
                        type, pointerEventType,\r
                        touches, events,\r
@@ -27,18 +29,18 @@ if( !X_UA[ 'IE' ] || 9 <= X_UA[ 'IE' ] ){
                        elm, i, n, time, touch, ev;\r
                \r
                //this._event        = e;\r
-               this.type          = type = X_Event_RenameTo[ originalType ] || originalType;\r
+               this[ 'type' ]          = type = X_Event_RenameTo[ originalType ] || originalType;\r
                \r
                switch( type ){\r
                        case 'message' :\r
-                               this.data   = e.data;\r
-                               this.origin = e.origin;\r
-                               this.source = e.source;\r
+                               this[ 'data' ]   = e.data;\r
+                               this[ 'origin' ] = e.origin;\r
+                               this[ 'source' ] = e.source;\r
                                break;\r
                        case 'progress' :\r
-                               this.lengthComputable = e.lengthComputable;\r
-                               this.loaded = e.loaded;\r
-                               this.total  = e.total;\r
+                               this[ 'lengthComputable' ] = e.lengthComputable;\r
+                               this[ 'loaded' ] = e.loaded;\r
+                               this[ 'total' ]  = e.total;\r
                                break;\r
                };\r
                \r
@@ -48,56 +50,56 @@ if( !X_UA[ 'IE' ] || 9 <= X_UA[ 'IE' ] ){
                if( e.pointerType ){\r
                        // PointerEvent;\r
                        if( X_Dom_Event_convertMSPointerType ){\r
-                               this.pointerType   = X_Dom_Event_convertMSPointerType[ e.pointerType ];\r
-                               this.pressure      = e.pressure || ( e.button !== -1 ? 0.5 : 0 );\r
+                               this[ 'pointerType' ]   = X_Dom_Event_convertMSPointerType[ e.pointerType ];\r
+                               this[ 'pressure' ]      = e.pressure || ( e.button !== -1 ? 0.5 : 0 );\r
                                // ポインターの接触形状の スクリーン ピクセル単位の幅と高さ なので変換。(多分、、、)\r
-                               this.width         = e.width  / X_Dom_Event_devicePixelRatio;\r
-                               this.height        = e.height / X_Dom_Event_devicePixelRatio;                   \r
+                               this[ 'width' ]         = e.width  / X_Dom_Event_devicePixelRatio;\r
+                               this[ 'height' ]        = e.height / X_Dom_Event_devicePixelRatio;                      \r
                        } else {\r
-                               this.pointerType   = e.pointerType;\r
-                               this.pressure      = e.pressure;\r
+                               this[ 'pointerType' ]   = e.pointerType;\r
+                               this[ 'pressure' ]      = e.pressure;\r
                                // ポインターの接触形状の CSS ピクセル単位の幅と高さ。\r
-                               this.width         = e.width;\r
-                               this.height        = e.height;\r
+                               this[ 'width' ]         = e.width;\r
+                               this[ 'height' ]        = e.height;\r
                        };\r
 \r
-                       switch( this.pointerType ){\r
+                       switch( this[ 'pointerType' ] ){\r
                                case 'pen' :\r
                                        //Y-Z 平面と、ペンの軸が含まれる平面の間の角度を返します。Y 軸の範囲は -90 ~ +90 です。X の傾きの正の方向は右方向です。\r
-                                       this.tiltX         = e.tiltX;\r
-                                       this.tiltY         = e.tiltY;\r
+                                       this[ 'tiltX' ]         = e.tiltX;\r
+                                       this[ 'tiltY' ]         = e.tiltY;\r
                                        if( originalType === 'MSPointerHover' ){\r
-                                               this.type = 'pointermove'; // ie10 には pointerhover と pointermoveがあり、ie11 で一本化。ie11 では buttons を見て hover 状態を判定\r
+                                               this[ 'type' ] = 'pointermove'; // ie10 には pointerhover と pointermoveがあり、ie11 で一本化。ie11 では buttons を見て hover 状態を判定\r
                                        };\r
                                case 'touch' :\r
-                                       this.radiusX       = e.radiusX;\r
-                                       this.radiusY       = e.radiusY;\r
-                                       this.rotationAngle = e.rotationAngle;\r
+                                       this[ 'radiusX' ]       = e.radiusX;\r
+                                       this[ 'radiusY' ]       = e.radiusY;\r
+                                       this[ 'rotationAngle' ] = e.rotationAngle;\r
                                case 'mouse' :\r
                        };\r
                        \r
-                       this.button        = e.button;\r
-                       this.buttons       = e.buttons;\r
+                       this[ 'button' ]        = e.button;\r
+                       this[ 'buttons' ]       = e.buttons;\r
                                                \r
-                       this.pointerId     = e.pointerId;                       \r
-                       this.target        = X_Node_getXNode( e.target );\r
-                       this.relatedTarget = X_Node_getXNode( e.relatedTarget ); // xnode\r
-                       this.isPrimary     = e.isPrimary;\r
-                       this.hwTimestamp   = e.hwTimestamp;\r
-                       this.timestamp     = e.timestamp;\r
+                       this[ 'pointerId' ]     = e.pointerId;                  \r
+                       this[ 'target' ]        = X_Node_getXNode( e.target );\r
+                       this[ 'relatedTarget' ] = X_Node_getXNode( e.relatedTarget ); // xnode\r
+                       this[ 'isPrimary' ]     = e.isPrimary;\r
+                       this[ 'hwTimestamp' ]   = e.hwTimestamp;\r
+                       this[ 'timestamp' ]     = e.timestamp;\r
 \r
-                       this.altKey        = e.altKey;\r
-                       this.ctrlKey       = e.ctrlKey;\r
-                       this.metaKey       = e.metaKey;\r
-                       this.shiftKey      = e.shiftKey;\r
-                       //this.screenX       = touch.screenX;\r
-                       //this.screenY       = touch.screenY;\r
-                       this.clientX       = e.clientX;\r
-                       this.clientY       = e.clientY;\r
-                       this.pageX         = e.pageX;\r
-                       this.pageY         = e.pageY;\r
-                       this.offsetX       = e.offsetX;\r
-                       this.offsetY       = e.offsetY;\r
+                       this[ 'altKey' ]        = e.altKey;\r
+                       this[ 'ctrlKey' ]       = e.ctrlKey;\r
+                       this[ 'metaKey' ]       = e.metaKey;\r
+                       this[ 'shiftKey' ]      = e.shiftKey;\r
+                       //this[ 'screenX' ]       = touch.screenX;\r
+                       //this[ 'screenY' ]       = touch.screenY;\r
+                       this[ 'clientX' ]       = e.clientX;\r
+                       this[ 'clientY' ]       = e.clientY;\r
+                       this[ 'pageX' ]         = e.pageX;\r
+                       this[ 'pageY' ]         = e.pageY;\r
+                       this[ 'offsetX' ]       = e.offsetX;\r
+                       this[ 'offsetY' ]       = e.offsetY;\r
                } else\r
                if( pointerEventType = X_Event_toPointer[ originalType ] ){\r
                        // Touch or Mouse\r
@@ -109,7 +111,7 @@ if( !X_UA[ 'IE' ] || 9 <= X_UA[ 'IE' ] ){
                                if( touches.length === 0 ){\r
                                        alert( 'e.changedTouches.length === 0' );\r
                                };\r
-                               xnode._cancelMouse = pointerEventType;\r
+                               X_Dom_Event_CANCEL_MOUSE[ xnode[ '_uid' ] ] = pointerEventType;\r
                                \r
                                events   = [];\r
                                altKey   = e.altKey;\r
@@ -123,79 +125,78 @@ if( !X_UA[ 'IE' ] || 9 <= X_UA[ 'IE' ] ){
                                        target  = touch.target;\r
                                        related = touch.relatedTarget;\r
                                        events[ i ] = {\r
-                                               type          : pointerEventType,\r
-                                               pointerType   : 'touch',\r
-                                               target        : X_Node_getXNode( target.nodeType === 3 ? target.parentNode : target ),// defeat Safari bug // xnodetouch.target,\r
-                                               currentTarget : xnode,\r
-                                               relatedTarget : related && X_Node_getXNode( related.nodeType === 3 ? related.parentNode : related ), // xnode iOS3 には relatedTarget がない\r
-                                               isPrimary     : true,\r
-                                               hwTimestamp   : time,\r
-                                               timestamp     : time,\r
-                                               button        : e.button,\r
-                                               buttons       : e.buttons || e.button,\r
-                                               altKey        : altKey,\r
-                                               ctrlKey       : ctrlKey,\r
-                                               metaKey       : metaKey,\r
-                                               shiftKey      : shiftKey,\r
-                                               pointerId     : touch.identifier + 2,\r
+                                               'type'          : pointerEventType,\r
+                                               'pointerType'   : 'touch',\r
+                                               'target'        : X_Node_getXNode( target.nodeType === 3 ? target.parentNode : target ),// defeat Safari bug // xnodetouch.target,\r
+                                               'currentTarget' : xnode,\r
+                                               'relatedTarget' : related && X_Node_getXNode( related.nodeType === 3 ? related.parentNode : related ), // xnode iOS3 には relatedTarget がない\r
+                                               'isPrimary'     : true,\r
+                                               'hwTimestamp'   : time,\r
+                                               'timestamp'     : time,\r
+                                               'button'        : e.button,\r
+                                               'buttons'       : e.buttons || e.button,\r
+                                               'altKey'        : altKey,\r
+                                               'ctrlKey'       : ctrlKey,\r
+                                               'metaKey'       : metaKey,\r
+                                               'shiftKey'      : shiftKey,\r
+                                               'pointerId'     : touch.identifier + 2,\r
                                                //screenX       : touch.screenX,\r
                                                //screenY       : touch.screenY,\r
-                                               clientX       : touch.clientX,\r
-                                               clientY       : touch.clientY,\r
-                                               pageX         : touch.pageX,\r
-                                               pageY         : touch.pageY,\r
-                                               offsetX       : touch.offsetX, // 要素上の座標を取得 \r
-                                               offsetY       : touch.offsetY,\r
-                                               radiusX       : touch.radiusX || 0,\r
-                                               radiusY       : touch.radiusY || 0,\r
-                                               rotationAngle : touch.rotationAngle || 0,\r
-                                               pressure      : touch.force || touch.webkitForce || force,\r
-                                               width         : touch.width || 0,\r
-                                               height        : touch.height || 0\r
+                                               'clientX'       : touch.clientX,\r
+                                               'clientY'       : touch.clientY,\r
+                                               'pageX'         : touch.pageX,\r
+                                               'pageY'         : touch.pageY,\r
+                                               'offsetX'       : touch.offsetX, // 要素上の座標を取得 \r
+                                               'offsetY'       : touch.offsetY,\r
+                                               'radiusX'       : touch.radiusX || 0,\r
+                                               'radiusY'       : touch.radiusY || 0,\r
+                                               'rotationAngle' : touch.rotationAngle || 0,\r
+                                               'pressure'      : touch.force || touch.webkitForce || force,\r
+                                               'width'         : touch.width || 0,\r
+                                               'height'        : touch.height || 0\r
                                        };\r
                                };\r
                                return events.length === 1 ? events[ 0 ] : events;\r
                        } else {\r
                                \r
-                               if( xnode._cancelMouse === pointerEventType ){\r
-                                       delete xnode._cancelMouse;\r
-                                       console.log( '**** xnode._cancelMouse ' + xnode._cancelMouse );\r
+                               if( X_Dom_Event_CANCEL_MOUSE[ xnode[ '_uid' ] ] === pointerEventType ){\r
+                                       delete X_Dom_Event_CANCEL_MOUSE[ xnode[ '_uid' ] ];\r
                                        return [];\r
                                };\r
                                \r
                                // MouseEvent;\r
-                               this.type          = pointerEventType;\r
-                               this.pointerType   = 'mouse';\r
+                               this[ 'type' ]          = pointerEventType;\r
+                               this[ 'pointerType' ]   = 'mouse';\r
                                \r
-                               this.button        = e.button !== undefined ? e.button :\r
+                               this[ 'button' ]        = e.button !== undefined ? e.button :\r
                                                                         e.which !== undefined ? e.which - 1 : -1;\r
-                               this.buttons       = e.buttons !== undefined ? e.buttons : this.button === 0 ? 1 : this.button === 1 ? 2 : this.button === 2 ? 4 : 0;\r
-                               this.pressure      = ( this.button !== -1 ? 0.5 : 0 );\r
+                               this[ 'buttons' ]       = e.buttons !== undefined ? e.buttons : this[ 'button' ] === 0 ? 1 : this[ 'button' ] === 1 ? 2 : this[ 'button' ] === 2 ? 4 : 0;\r
+                               this[ 'pressure' ]      = ( this[ 'button' ] !== -1 ? 0.5 : 0 );\r
                                \r
                                elm = e.target;\r
-                               this.target        = X_Node_getXNode( elm.nodeType === 3 ? elm.parentNode : elm );// defeat Safari bug // xnodetouch.target;\r
-                               this.isPrimary     = true;\r
-                               this.hwTimestamp   = this.timestamp = X_Timer_now(); \r
-                               this.altKey        = e.altKey;\r
-                               this.ctrlKey       = e.ctrlKey;\r
-                               this.metaKey       = e.metaKey;\r
-                               this.shiftKey      = e.shiftKey;\r
-                               this.pointerId     = 1;\r
-                               //this.screenX       = touch.screenX;\r
-                               //this.screenY       = touch.screenY;\r
+                               this[ 'target' ]        = X_Node_getXNode( elm.nodeType === 3 ? elm.parentNode : elm );// defeat Safari bug // xnodetouch.target;\r
+                               this[ 'isPrimary' ]     = true;\r
+                               this[ 'hwTimestamp' ]   = this[ 'timestamp' ] = X_Timer_now(); \r
+                               this[ 'altKey' ]        = e.altKey;\r
+                               this[ 'ctrlKey' ]       = e.ctrlKey;\r
+                               this[ 'metaKey' ]       = e.metaKey;\r
+                               this[ 'shiftKey' ]      = e.shiftKey;\r
+                               this[ 'pointerId' ]     = 1;\r
+                               //this[ 'screenX' ]       = touch.screenX;\r
+                               //this[ 'screenY' ]       = touch.screenY;\r
                                // TODO http://uupaa-js.googlecode.com/svn-history/r8/trunk/doc/reference/symbols/src/trunk_uu.module.ui.js.html\r
                                // Safari2ではclientX,YはpageX,Yと同じ値を返す\r
-                               this.clientX       = e.clientX;\r
-                               this.clientY       = e.clientY;\r
-                               this.pageX         = e.pageX;\r
-                               this.pageY         = e.pageY;\r
-                               this.offsetX       = e.offsetX || e.layerX; // 要素上の座標を取得 \r
-                               this.offsetY       = e.offsetY || e.layerY;\r
+                               this[ 'clientX' ]       = e.clientX;\r
+                               this[ 'clientY' ]       = e.clientY;\r
+                               this[ 'pageX' ]         = e.pageX;\r
+                               this[ 'pageY' ]         = e.pageY;\r
+                               this[ 'offsetX' ]       = e.offsetX || e.layerX; // 要素上の座標を取得 \r
+                               this[ 'offsetY' ]       = e.offsetY || e.layerY;\r
                                \r
                        // http://www.programming-magic.com/20090127231544/\r
                        // Opera で button==2の場合、コンテキストメニューイベントを発火 「ツール」->「設定」->「詳細設定」->「コンテンツ」->「Javascriptオプション」で「右クリックを制御するスクリプトを許可する」\r
-                               if( originalType === 'mousedown' && this.button === 2 && X_UA[ 'Opera' ] ){\r
-                                       events = [ X.Object.clone( this ), X.Object.clone( this ) ];\r
+                               if( originalType === 'mousedown' && this[ 'button' ] === 2 && X_UA[ 'Opera' ] ){\r
+                                       events = [ X_Object_clone( this ), X_Object_clone( this ) ];\r
                                        events[ 1 ].type = 'contextmenu';\r
                                        return events;\r
                                };\r
@@ -203,22 +204,22 @@ if( !X_UA[ 'IE' ] || 9 <= X_UA[ 'IE' ] ){
                } else {\r
                        // Other\r
                        \r
-                       this.keyCode       = e.keyCode || e.which;\r
-                       this.altKey        = e.altKey;\r
-                       this.ctrlKey       = e.ctrlKey;\r
-                       this.shiftKey      = e.shiftKey;\r
-                       this.metaKey       = e.metaKey;\r
+                       this[ 'keyCode' ]       = e.keyCode || e.which;\r
+                       this[ 'altKey' ]        = e.altKey;\r
+                       this[ 'ctrlKey' ]       = e.ctrlKey;\r
+                       this[ 'shiftKey' ]      = e.shiftKey;\r
+                       this[ 'metaKey' ]       = e.metaKey;\r
                        \r
-                       this.button        = e.button !== undefined ? e.button :\r
+                       this[ 'button' ]        = e.button !== undefined ? e.button :\r
                                                                 e.which !== undefined ? e.which - 1 : -1;\r
-                       this.buttons       = e.buttons !== undefined ? e.buttons : this.button === 0 ? 1 : this.button === 1 ? 2 : this.button === 2 ? 4 : 0;\r
+                       this[ 'buttons' ]       = e.buttons !== undefined ? e.buttons : this[ 'button' ] === 0 ? 1 : this[ 'button' ] === 1 ? 2 : this[ 'button' ] === 2 ? 4 : 0;\r
                        \r
                        //http://www.quirksmode.org/js/events_properties.html\r
                        if( elm = e.target ){\r
-                               this.target        = X_Node_getXNode( elm.nodeType === 3 ? elm.parentNode : elm );// defeat Safari bug // xnode\r
+                               this[ 'target' ]        = X_Node_getXNode( elm.nodeType === 3 ? elm.parentNode : elm );// defeat Safari bug // xnode\r
                        };\r
                        if( elm = e.relatedTarget ){\r
-                               this.relatedTarget = X_Node_getXNode( elm.nodeType === 3 ? elm.parentNode : elm ); // xnode\r
+                               this[ 'relatedTarget' ] = X_Node_getXNode( elm.nodeType === 3 ? elm.parentNode : elm ); // xnode\r
                        };\r
                        \r
                        if( type === 'wheel' ){\r
@@ -227,58 +228,58 @@ if( !X_UA[ 'IE' ] || 9 <= X_UA[ 'IE' ] ){
                                // https://w3g.jp/blog/tools/wheelevent_crossbrowser\r
                                // ホイール系イベント2014年版クロスブラウザ\r
                                if( e.deltaY !== undefined ){\r
-                                       this.deltaX = e.deltaX;\r
-                                       this.deltaY = e.deltaY;\r
-                                       this.deltaZ = e.deltaZ || 0;\r
+                                       this[ 'deltaX' ] = e.deltaX;\r
+                                       this[ 'deltaY' ] = e.deltaY;\r
+                                       this[ 'deltaZ' ] = e.deltaZ || 0;\r
                                } else\r
                                if( e.wheelDeltaY !== undefined ){\r
-                                       this.deltaX = e.wheelDeltaX / 120;\r
-                                       this.deltaY = e.wheelDeltaY / 120;\r
-                                       this.deltaZ = e.wheelDeltaZ / 120 || 0;\r
+                                       this[ 'deltaX' ] = e.wheelDeltaX / 120;\r
+                                       this[ 'deltaY' ] = e.wheelDeltaY / 120;\r
+                                       this[ 'deltaZ' ] = e.wheelDeltaZ / 120 || 0;\r
                                } else\r
                                if( e.wheelDelta !== undefined ){\r
-                                       this.deltaX = this.deltaZ = 0;\r
-                                       this.deltaY = e.wheelDelta / -120;\r
+                                       this[ 'deltaX' ] = this[ 'deltaZ' ] = 0;\r
+                                       this[ 'deltaY' ] = e.wheelDelta / -120;\r
                                } else\r
                                if( e.detail !== undefined ){\r
-                                       this.deltaX = this.deltaZ = 0;\r
-                                       this.deltaY = originalType === 'MozMousePixelScroll' ? e.detail / 45 : e.detail / 3; // 3\r
+                                       this[ 'deltaX' ] = this[ 'deltaZ' ] = 0;\r
+                                       this[ 'deltaY' ] = originalType === 'MozMousePixelScroll' ? e.detail / 45 : e.detail / 3; // 3\r
                                } else {\r
-                                       this.deltaX = this.deltaY = this.deltaZ = 0;\r
+                                       this[ 'deltaX' ] = this[ 'deltaY' ] = this[ 'deltaZ' ] = 0;\r
                                };\r
                        };\r
                };\r
 \r
-               this.currentTarget = xnode; // xnode\r
-               this.eventPhase    = e.eventPhase;\r
-               this.detail        = e.detail;\r
+               this[ 'currentTarget' ] = xnode; // xnode\r
+               this[ 'eventPhase' ]    = e.eventPhase;\r
+               this[ 'detail' ]        = e.detail;\r
        };\r
 } else {\r
-       X.Dom.Event = function( e, xnode, element ){\r
+       X_DomEvent = function( e, xnode, element ){\r
                var originalType = e.type, btn, type;\r
                \r
-               this.type          = X_Event_RenameTo[ originalType ] || originalType;\r
-               this.target        = X_Node_getXNode( e.srcElement ); // xnode\r
-               if( this.target && !this.target._tag ) this.target = this.target.parent; // ie4 の fake Textnode がヒットしていないか?\r
-               this.currentTarget = xnode; // xnode\r
-               this.relatedTarget = X_Node_getXNode( e.formElement || e.toElement ); // xnode\r
-               this.eventPhase    = e.srcElement === element ? 2: 3;\r
+               this[ 'type' ]          = X_Event_RenameTo[ originalType ] || originalType;\r
+               this[ 'target' ]        = X_Node_getXNode( e.srcElement ); // xnode\r
+               if( this[ 'target' ] && !this[ 'target' ][ '_tag' ] ) this[ 'target' ] = this[ 'target' ].parent; // ie4 の fake Textnode がヒットしていないか?\r
+               this[ 'currentTarget' ] = xnode; // xnode\r
+               this[ 'relatedTarget' ] = X_Node_getXNode( e.formElement || e.toElement ); // xnode\r
+               this[ 'eventPhase' ]    = e.srcElement === element ? 2: 3;\r
                \r
-               this.keyCode       = e.keyCode;\r
-               this.altKey        = e.altKey;\r
-               this.ctrlKey       = e.ctrlKey;\r
-               this.shiftKey      = e.shiftKey;                \r
+               this[ 'keyCode' ]       = e.keyCode;\r
+               this[ 'altKey' ]        = e.altKey;\r
+               this[ 'ctrlKey' ]       = e.ctrlKey;\r
+               this[ 'shiftKey' ]      = e.shiftKey;           \r
 \r
                \r
-               switch( this.type ){\r
+               switch( this[ 'type' ] ){\r
                        case 'message' :\r
-                               this.data   = e.data;\r
-                               this.origin = e.origin;\r
-                               this.source = e.source;\r
+                               this[ 'data' ]   = e.data;\r
+                               this[ 'origin' ] = e.origin;\r
+                               this[ 'source' ] = e.source;\r
                                break;\r
                        case 'progress' :\r
-                               this.loaded = e.loaded;\r
-                               this.total  = e.total;\r
+                               this[ 'loaded' ] = e.loaded;\r
+                               this[ 'total' ]  = e.total;\r
                                break;\r
                };\r
 \r
@@ -286,68 +287,62 @@ if( !X_UA[ 'IE' ] || 9 <= X_UA[ 'IE' ] ){
                switch( originalType ){\r
                        case 'click'    :\r
                        case 'dblclick' :\r
-                               this.button = 0;\r
+                               this[ 'button' ] = 0;\r
                                break;\r
                        case 'contextmenu' :\r
-                               this.button = 2;\r
+                               this[ 'button' ] = 2;\r
                                break;\r
                        default :\r
                                // mouseup, mousedown\r
                                btn = e.button;\r
-                               this.button =\r
+                               this[ 'button' ] =\r
                                        btn & 1 ? 0 :\r
                                        btn & 4 ? 2 :\r
                                        btn & 2 ? 1 : -1; // 左:1(click:0), 中:4, 右:2\r
                                \r
                };\r
-               this.buttons     = e.button;\r
+               this[ 'buttons' ]     = e.button;\r
        \r
-               this.deltaX      = 0;\r
-               this.deltaY      = e.wheelDelta / -120; \r
+               this[ 'deltaX' ]      = 0;\r
+               this[ 'deltaY' ]      = e.wheelDelta / -120;    \r
        \r
                if( type = X_Event_toPointer[ originalType ] ){\r
-                       this.type          = type;\r
-                       this.clientX       = e.clientX;\r
-                       this.clientY       = e.clientY;\r
-                       //this.screenX       = e.screenX;\r
-                       //this.screenY       = e.screenY;\r
+                       this[ 'type' ]          = type;\r
+                       this[ 'clientX' ]       = e.clientX;\r
+                       this[ 'clientY' ]       = e.clientY;\r
+                       //this[ 'screenX' ]       = e.screenX;\r
+                       //this[ 'screenY' ]       = e.screenY;\r
                        \r
                        //if( X_ViewPort_rootElement ){ // uuu...\r
-                               this.pageX         = e.clientX + X_ViewPort_rootElement.scrollLeft;\r
-                               this.pageY         = e.clientY + X_ViewPort_rootElement.scrollTop;\r
+                               this[ 'pageX' ]         = e.clientX + X_ViewPort_rootElement.scrollLeft;\r
+                               this[ 'pageY' ]         = e.clientY + X_ViewPort_rootElement.scrollTop;\r
                                // DOMAssistant 2.8.1\r
                                //event.pageX = DOMAssistant.def(e.pageX)? e.pageX : (event.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0));\r
                                //event.pageY = DOMAssistant.def(e.pageY)? e.pageY : (event.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0));                                                     \r
                        //};\r
 \r
                        if( 5 <= X_UA[ 'IE' ] ){\r
-                               this.offsetX       = e.offsetX; // イベントターゲット左上からの座標\r
-                               this.offsetY       = e.offsetY;                 \r
+                               this[ 'offsetX' ]       = e.offsetX; // イベントターゲット左上からの座標\r
+                               this[ 'offsetY' ]       = e.offsetY;                    \r
                        }// else\r
                        //if( e.srcElement ){\r
-                       //      this.offsetX       = e.x - e.srcElement.offsetLeft; // e.x はイベント発生要素の親要素を基準にした座標。\r
-                       //      this.offsetY       = e.y - e.srcElement.offsetTop;      \r
+                       //      this[ 'offsetX' ]       = e.x - e.srcElement.offsetLeft; // e.x はイベント発生要素の親要素を基準にした座標。\r
+                       //      this[ 'offsetY' ]       = e.y - e.srcElement.offsetTop; \r
                        //};\r
                        \r
-                       this.pointerId     = 1;\r
-                       this.radiusX       = 0;\r
-                       this.radiusY       = 0;\r
-                       this.rotationAngle = 0;\r
-                       this.width         = 0;\r
-                       this.height        = 0;\r
-                       this.tiltX         = 0;\r
-                       this.tiltY         = 0;\r
+                       this[ 'pointerId' ]     = 1;\r
+                       this[ 'radiusX' ]       = 0;\r
+                       this[ 'radiusY' ]       = 0;\r
+                       this[ 'rotationAngle' ] = 0;\r
+                       this[ 'width' ]         = 0;\r
+                       this[ 'height' ]        = 0;\r
+                       this[ 'tiltX' ]         = 0;\r
+                       this[ 'tiltY' ]         = 0;\r
                };\r
        };\r
 };\r
 \r
 // TODO load -> readystatechange this.readyState === "loaded" || this.readyState === "complete"\r
-/*\r
-X.Dom.Event._LOAD_FIX_TAGS = {\r
-       IFRAME : true,\r
-       SCRIPT : true//,\r
-       //LINK   : true\r
-}; */\r
 \r
 // https://github.com/georgeadamson/jQuery.prefixfree-events/blob/master/jQuery.prefixfree-events.js\r
 // https://developer.mozilla.org/en-US/docs/Web/Events/wheel\r
index 85b0c9c..ed00a00 100644 (file)
@@ -1,30 +1,32 @@
 var X_Node_BoxModel = {\r
-       CONTENT_BOX      : 1,\r
-       PADDING_BOX      : 2,\r
-       BORDER_BOX       : 3,\r
-               \r
-       defaultBoxModel  : 0,\r
-       boxSizingEnabled : false,\r
+               CONTENT_BOX      : 1,\r
+               PADDING_BOX      : 2,\r
+               BORDER_BOX       : 3\r
+       },\r
+       \r
+       X_Node_BoxModel_defaultBoxModel,\r
        \r
+       X_Node_BoxModel_boxSizingEnabled,\r
        // TODO: offsetLeft, offsetTop の基準位置\r
-       absoluteOffset   : 0\r
-};\r
+       X_Node_BoxModel_absoluteOffset;\r
 \r
 \r
 \r
-X_ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_INIT, function(){\r
+\r
+\r
+X_ViewPort[ 'listenOnce' ]( X_EVENT_INIT, function(){\r
        var node = X_Node_systemNode;\r
        \r
-       node.cssText( 'width:10px;padding:1px;border:2px solid #0;margin:4px;' );\r
+       node[ 'cssText' ]( 'width:10px;padding:1px;border:2px solid #0;margin:4px;' );\r
        \r
-       X_Node_BoxModel.defaultBoxModel = node.width() === 10 ?\r
+       X_Node_BoxModel_defaultBoxModel = node[ 'width' ]() === 10 ?\r
                X_Node_BoxModel.BORDER_BOX :\r
                X_Node_BoxModel.CONTENT_BOX;\r
        \r
-       if( X_Node_BoxModel.defaultBoxModel === X_Node_BoxModel.CONTENT_BOX ){\r
-               X_Node_BoxModel.boxSizingEnabled = node.cssText( 'width:10px;padding:1px;border:2px solid #0;margin:4px;' +\r
+       if( X_Node_BoxModel_defaultBoxModel === X_Node_BoxModel.CONTENT_BOX ){\r
+               X_Node_BoxModel_boxSizingEnabled = node[ 'cssText' ]( 'width:10px;padding:1px;border:2px solid #0;margin:4px;' +\r
                        'box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;' )\r
-                                                                                       .width() === 10;\r
+                                                                                       [ 'width' ]() === 10;\r
        };\r
        \r
        /*\r
@@ -32,11 +34,11 @@ X_ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_INIT, function(){
         * TODO boxShadow が有効な要素に対して offsetWidth 等の補正(?)\r
         */\r
        if( X_Node_CSS_Support[ 'boxShadow' ] &&\r
-               node.cssText(\r
-                       X_Node_CSS_uncamelize( X_Node_CSS_VENDER_PREFIX[ 'boxShadow' ] ) + ':10px 10px 0 0 #000;width:10px;'\r
-                               ).width() !== 10\r
-        ){\r
-               console.log( node.cssText() + node.width() );\r
+               node[ 'cssText' ](\r
+                               X_Node_CSS_uncamelize( X_Node_CSS_VENDER_PREFIX[ 'boxShadow' ] ) + ':10px 10px 0 0 #000;width:10px;'\r
+                       )[ 'width' ]() !== 10\r
+       ){\r
+               console.log( node[ 'cssText' ]() + node[ 'width' ]() );\r
                X_Node_CSS_Support[ 'boxShadowLayoutBug' ] = true;\r
        };\r
 \r
@@ -45,14 +47,14 @@ X_ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_INIT, function(){
        // margin\r
        // top\r
 \r
-       X_Node_BoxModel.absoluteOffset =\r
-               node.cssText( 'position:absolute;top:0;left:0;margin:1px;border:2px solid #000;padding:4px;' )\r
-                       .append( '<div></div>' )\r
-                       .firstChild().cssText( 'position:absolute;top:8px;left:8px;margin:16px;border:32px solid #666;padding:64px;' )\r
-                       .y();\r
-\r
+       X_Node_BoxModel_absoluteOffset =\r
+               node[ 'cssText' ]( 'position:absolute;top:0;left:0;margin:1px;border:2px solid #000;padding:4px;' )\r
+                       [ 'append' ]( '<div></div>' )\r
+                       [ 'firstChild' ]()\r
+                               [ 'cssText' ]( 'position:absolute;top:8px;left:8px;margin:16px;border:32px solid #666;padding:64px;' )\r
+                               [ 'y' ]();\r
 \r
-       node.cssText( '' ).empty();\r
+       node[ 'cssText' ]( '' )[ 'empty' ]();\r
 });\r
 \r
 /* --------------------------------------\r
@@ -63,128 +65,128 @@ X_ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_INIT, function(){
  * getBoxObjectFor\r
  * getBoundingClientRect\r
  */\r
-Node.prototype.width = function(){\r
-       if( ( this._flags & X_Node_State.IN_TREE ) === 0 || this._flags & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
+Node.prototype[ 'width' ] = function(){\r
+       if( ( this[ '_flags' ] & X_Node_State.IN_TREE ) === 0 || this[ '_flags' ] & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
        \r
        X_Node_updateTimerID && X_Node_startUpdate();\r
        \r
        if( X_UA_DOM.W3C ){\r
                // TODO width : length + overflow : hidden ならそれを返す? <- block or inline\r
-               return this._rawObject ? this._rawObject.offsetWidth : 0;\r
+               return this[ '_rawObject' ] ? this[ '_rawObject' ].offsetWidth : 0;\r
        } else\r
        if( X_UA_DOM.IE4 ){\r
-               return ( this._rawObject || X_Node__ie4getRawNode( this ) ).offsetWidth;\r
+               return ( this[ '_rawObject' ] || X_Node__ie4getRawNode( this ) ).offsetWidth;\r
        } else {\r
                \r
        };\r
 };\r
 \r
-Node.prototype.height = function(){\r
-       if( ( this._flags & X_Node_State.IN_TREE ) === 0 || this._flags & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
+Node.prototype[ 'height' ] = function(){\r
+       if( ( this[ '_flags' ] & X_Node_State.IN_TREE ) === 0 || this[ '_flags' ] & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
        \r
        X_Node_updateTimerID && X_Node_startUpdate();\r
        \r
        if( X_UA_DOM.W3C ){\r
-               // this.css( X_Node_CSS_Unit.px, 'height' );\r
-               return this._rawObject ? this._rawObject.offsetHeight : 0;\r
+               // this[ 'css' ]( X_Node_CSS_Unit.px, 'height' );\r
+               return this[ '_rawObject' ] ? this[ '_rawObject' ].offsetHeight : 0;\r
        } else\r
        if( X_UA_DOM.IE4 ){\r
-               return ( this._rawObject || X_Node__ie4getRawNode( this ) ).offsetHeight;\r
+               return ( this[ '_rawObject' ] || X_Node__ie4getRawNode( this ) ).offsetHeight;\r
        } else {\r
                \r
        };\r
 };\r
 \r
-Node.prototype.clientWidth = function(){\r
-       if( ( this._flags & X_Node_State.IN_TREE ) === 0 || this._flags & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
+Node.prototype[ 'clientWidth' ] = function(){\r
+       if( ( this[ '_flags' ] & X_Node_State.IN_TREE ) === 0 || this[ '_flags' ] & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
        \r
        X_Node_updateTimerID && X_Node_startUpdate();\r
        \r
        if( X_UA_DOM.W3C ){\r
-               // this.css( X_Node_CSS_Unit.px, 'width' );\r
-               return this._rawObject ? this._rawObject.clientWidth : 0;\r
+               // this[ 'css' ]( X_Node_CSS_Unit.px, 'width' );\r
+               return this[ '_rawObject' ] ? this[ '_rawObject' ].clientWidth : 0;\r
        } else\r
        if( X_UA_DOM.IE4 ){\r
-               return ( this._rawObject || X_Node__ie4getRawNode( this ) ).clientWidth;\r
+               return ( this[ '_rawObject' ] || X_Node__ie4getRawNode( this ) ).clientWidth;\r
        } else {\r
                \r
        };\r
 };\r
 \r
-Node.prototype.clientHeight = function(){\r
-       if( ( this._flags & X_Node_State.IN_TREE ) === 0 || this._flags & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
+Node.prototype[ 'clientHeight' ] = function(){\r
+       if( ( this[ '_flags' ] & X_Node_State.IN_TREE ) === 0 || this[ '_flags' ] & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
        \r
        X_Node_updateTimerID && X_Node_startUpdate();\r
 \r
        if( X_UA_DOM.W3C ){\r
-               // this.css( X_Node_CSS_Unit.px, 'height' );\r
-               return this._rawObject ? this._rawObject.clientHeight : 0;\r
+               // this[ 'css' ]( X_Node_CSS_Unit.px, 'height' );\r
+               return this[ '_rawObject' ] ? this[ '_rawObject' ].clientHeight : 0;\r
        } else\r
        if( X_UA_DOM.IE4 ){\r
-               return ( this._rawObject || X_Node__ie4getRawNode( this ) ).clientHeight;\r
+               return ( this[ '_rawObject' ] || X_Node__ie4getRawNode( this ) ).clientHeight;\r
        } else {\r
                \r
        };\r
 };\r
 \r
-Node.prototype.scrollWidth = function(){\r
-       if( ( this._flags & X_Node_State.IN_TREE ) === 0 || this._flags & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
+Node.prototype[ 'scrollWidth' ] = function(){\r
+       if( ( this[ '_flags' ] & X_Node_State.IN_TREE ) === 0 || this[ '_flags' ] & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
        \r
        X_Node_updateTimerID && X_Node_startUpdate();\r
 \r
        if( X_UA_DOM.W3C ){\r
-               // this.css( X_Node_CSS_Unit.px, 'width' );\r
-               return this._rawObject ? this._rawObject.scrollWidth : 0;\r
+               // this[ 'css' ]( X_Node_CSS_Unit.px, 'width' );\r
+               return this[ '_rawObject' ] ? this[ '_rawObject' ].scrollWidth : 0;\r
        } else\r
        if( X_UA_DOM.IE4 ){\r
-               return ( this._rawObject || X_Node__ie4getRawNode( this ) ).scrollWidth;\r
+               return ( this[ '_rawObject' ] || X_Node__ie4getRawNode( this ) ).scrollWidth;\r
        } else {\r
                \r
        };\r
 };\r
 \r
-Node.prototype.scrollHeight = function(){\r
-       if( ( this._flags & X_Node_State.IN_TREE ) === 0 || this._flags & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
+Node.prototype[ 'scrollHeight' ] = function(){\r
+       if( ( this[ '_flags' ] & X_Node_State.IN_TREE ) === 0 || this[ '_flags' ] & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
        \r
        X_Node_updateTimerID && X_Node_startUpdate();\r
 \r
        if( X_UA_DOM.W3C ){\r
-               return this._rawObject ? this._rawObject.scrollHeight : 0;\r
+               return this[ '_rawObject' ] ? this[ '_rawObject' ].scrollHeight : 0;\r
        } else\r
        if( X_UA_DOM.IE4 ){\r
-               return ( this._rawObject || X_Node__ie4getRawNode( this ) ).scrollHeight;\r
+               return ( this[ '_rawObject' ] || X_Node__ie4getRawNode( this ) ).scrollHeight;\r
        } else {\r
                \r
        };\r
 };\r
 \r
-Node.prototype.scrollLeft = function(){\r
-       if( ( this._flags & X_Node_State.IN_TREE ) === 0 || this._flags & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
+Node.prototype[ 'scrollLeft' ] = function(){\r
+       if( ( this[ '_flags' ] & X_Node_State.IN_TREE ) === 0 || this[ '_flags' ] & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
        \r
        X_Node_updateTimerID && X_Node_startUpdate();\r
 \r
        if( X_UA_DOM.W3C ){\r
-               // this.css( X_Node_CSS_Unit.px, 'width' );\r
-               return this._rawObject ? this._rawObject.scrollLeft : 0;\r
+               // this[ 'css' ]( X_Node_CSS_Unit.px, 'width' );\r
+               return this[ '_rawObject' ] ? this[ '_rawObject' ].scrollLeft : 0;\r
        } else\r
        if( X_UA_DOM.IE4 ){\r
-               return ( this._rawObject || X_Node__ie4getRawNode( this ) ).scrollLeft;\r
+               return ( this[ '_rawObject' ] || X_Node__ie4getRawNode( this ) ).scrollLeft;\r
        } else {\r
                \r
        };\r
 };\r
 \r
-Node.prototype.scrollTop = function(){\r
-       if( ( this._flags & X_Node_State.IN_TREE ) === 0 || this._flags & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
+Node.prototype[ 'scrollTop' ] = function(){\r
+       if( ( this[ '_flags' ] & X_Node_State.IN_TREE ) === 0 || this[ '_flags' ] & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
        \r
        X_Node_updateTimerID && X_Node_startUpdate();\r
        \r
        if( X_UA_DOM.W3C ){\r
-               // this.css( X_Node_CSS_Unit.px, 'width' );\r
-               return this._rawObject ? this._rawObject.scrollTop : 0;\r
+               // this[ 'css' ]( X_Node_CSS_Unit.px, 'width' );\r
+               return this[ '_rawObject' ] ? this[ '_rawObject' ].scrollTop : 0;\r
        } else\r
        if( X_UA_DOM.IE4 ){\r
-               return ( this._rawObject || X_Node__ie4getRawNode( this ) ).scrollTop;\r
+               return ( this[ '_rawObject' ] || X_Node__ie4getRawNode( this ) ).scrollTop;\r
        } else {\r
                \r
        };\r
@@ -198,44 +200,44 @@ Node.prototype.scrollTop = function(){
  * transformX, Y は加える? アニメーション中は?\r
  */\r
 // X_Node_CSS_transform,\r
-Node.prototype.x = function(){\r
-       if( ( this._flags & X_Node_State.IN_TREE ) === 0 || this._flags & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
+Node.prototype[ 'x' ] = function(){\r
+       if( ( this[ '_flags' ] & X_Node_State.IN_TREE ) === 0 || this[ '_flags' ] & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
        \r
        X_Node_updateTimerID && X_Node_startUpdate();\r
        \r
        if( X_UA_DOM.W3C ){\r
-               // this.css( X_Node_CSS_Unit.px, 'left' );\r
-               // this.css( X_Node_CSS_Unit.px, 'translateX' );\r
-               return this._rawObject ? this._rawObject.offsetLeft : 0;\r
+               // this[ 'css' ]( X_Node_CSS_Unit.px, 'left' );\r
+               // this[ 'css' ]( X_Node_CSS_Unit.px, 'translateX' );\r
+               return this[ '_rawObject' ] ? this[ '_rawObject' ].offsetLeft : 0;\r
        } else\r
        if( X_UA_DOM.IE4 ){\r
                // pixelLeft http://www.din.or.jp/~hagi3/JavaScript/JSTips/DHTML/ProbIE5.htm\r
-               return ( this._rawObject || X_Node__ie4getRawNode( this ) ).offsetLeft;\r
+               return ( this[ '_rawObject' ] || X_Node__ie4getRawNode( this ) ).offsetLeft;\r
        } else {\r
                \r
        };\r
 };\r
 \r
-Node.prototype.y = function(){\r
-       if( ( this._flags & X_Node_State.IN_TREE ) === 0 || this._flags & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
+Node.prototype[ 'y' ] = function(){\r
+       if( ( this[ '_flags' ] & X_Node_State.IN_TREE ) === 0 || this[ '_flags' ] & X_Node_State.STYLE_IS_DISPLAY_NONE ) return 0;\r
        \r
        X_Node_updateTimerID && X_Node_startUpdate();\r
        \r
        if( X_UA_DOM.W3C ){\r
-               // this.css( X_Node_CSS_Unit.px, 'top' );\r
-               // this.css( X_Node_CSS_Unit.px, 'transisitonY' );\r
-               return this._rawObject ? this._rawObject.offsetTop : 0;\r
+               // this[ 'css' ]( X_Node_CSS_Unit.px, 'top' );\r
+               // this[ 'css' ]( X_Node_CSS_Unit.px, 'transisitonY' );\r
+               return this[ '_rawObject' ] ? this[ '_rawObject' ].offsetTop : 0;\r
        } else\r
        if( X_UA_DOM.IE4 ){\r
-               return ( this._rawObject || X_Node__ie4getRawNode( this ) ).offsetTop;          \r
+               return ( this[ '_rawObject' ] || X_Node__ie4getRawNode( this ) ).offsetTop;             \r
        } else {\r
                \r
        };\r
 };\r
 \r
-Node.prototype.offset = function( /* xnodeParent */ ){\r
+Node.prototype[ 'offset' ] = function( /* xnodeParent */ ){\r
 \r
-       if( ( this._flags & X_Node_State.IN_TREE ) === 0 || this._flags & X_Node_State.STYLE_IS_DISPLAY_NONE ) return { x : 0, y : 0 };\r
+       if( ( this[ '_flags' ] & X_Node_State.IN_TREE ) === 0 || this[ '_flags' ] & X_Node_State.STYLE_IS_DISPLAY_NONE ) return { x : 0, y : 0 };\r
        \r
        if( X.Doc.body === this || X.Doc.html === this ){\r
                return { x : 0, y : 0 };\r
@@ -244,10 +246,10 @@ Node.prototype.offset = function( /* xnodeParent */ ){
        X_Node_updateTimerID && X_Node_startUpdate();\r
        \r
        if( X_UA_DOM.W3C ){\r
-               return this._rawObject ? X_Node_getPosition( this._rawObject ) : { x : 0, y : 0 };\r
+               return this[ '_rawObject' ] ? X_Node_getPosition( this[ '_rawObject' ] ) : { x : 0, y : 0 };\r
        } else\r
        if( X_UA_DOM.IE4 ){\r
-               return X_Node_getPosition( this._rawObject || X_Node__ie4getRawNode( this ) );\r
+               return X_Node_getPosition( this[ '_rawObject' ] || X_Node__ie4getRawNode( this ) );\r
        } else {\r
                \r
        };\r
index e56b9df..3f9a059 100644 (file)
@@ -1,71 +1,71 @@
 var X_Node_Attr_noValue = {\r
-               checked  : 1,\r
-               compact  : 1,\r
-               declare  : 1,\r
-               defer    : 1,\r
-               disabled : 1,\r
-               ismap    : 1,\r
-               multiple : 1,\r
-               nohref   : 1,\r
-               noresize : 1,\r
-               noshade  : 1,\r
-               nowrap   : 1,\r
-               readonly : 1,\r
-               selected : 1\r
+               'checked'  : 1,\r
+               'compact'  : 1,\r
+               'declare'  : 1,\r
+               'defer'    : 1,\r
+               'disabled' : 1,\r
+               'ismap'    : 1,\r
+               'multiple' : 1,\r
+               'nohref'   : 1,\r
+               'noresize' : 1,\r
+               'noshade'  : 1,\r
+               'nowrap'   : 1,\r
+               'readonly' : 1,\r
+               'selected' : 1\r
 },\r
 X_Node_Attr_renameForDOM = {\r
-               'class'          : 'className',\r
-               accesskey        : 'accessKey',\r
-               'accept-charset' : 'acceptCharset',\r
-               bgcolor          : 'bgColor',\r
-               cellpadding      : 'cellPadding',\r
-               cellspacing      : 'cellSpacing',\r
-               'char'           : 'ch',\r
-               charoff          : 'chOff',\r
-               codebase         : 'codeBase',\r
-               codetype         : 'codeType',\r
-               colspan          : 'colSpan',\r
-               datetime         : 'dateTime',\r
-               'for'            : 'htmlFor',\r
-               frameborder      : 'frameBorder',\r
-               'http-equiv'     : 'httpEquiv',\r
-               ismap            : 'isMap',\r
-               longdesc         : 'longDesc',\r
-               maxlength        : 'maxLength',\r
-               nohref           : 'noHref',\r
-               readonly         : 'readOnly',\r
-               rowspan          : 'rowSpan',\r
-               tabindex         : 'tabIndex',\r
-               usemap           : 'useMap',\r
-               valuetype        : 'valueType',\r
-               checked          : 'defaultChecked'\r
+               'class'            : 'className',\r
+               'accesskey'        : 'accessKey',\r
+               'accept-charset'   : 'acceptCharset',\r
+               'bgcolor'          : 'bgColor',\r
+               'cellpadding'      : 'cellPadding',\r
+               'cellspacing'      : 'cellSpacing',\r
+               'char'             : 'ch',\r
+               'charoff'          : 'chOff',\r
+               'codebase'         : 'codeBase',\r
+               'codetype'         : 'codeType',\r
+               'colspan'          : 'colSpan',\r
+               'datetime'         : 'dateTime',\r
+               'for'              : 'htmlFor',\r
+               'frameborder'      : 'frameBorder',\r
+               'http-equiv'       : 'httpEquiv',\r
+               'ismap'            : 'isMap',\r
+               'longdesc'         : 'longDesc',\r
+               'maxlength'        : 'maxLength',\r
+               'nohref'           : 'noHref',\r
+               'readonly'         : 'readOnly',\r
+               'rowspan'          : 'rowSpan',\r
+               'tabindex'         : 'tabIndex',\r
+               'usemap'           : 'useMap',\r
+               'valuetype'        : 'valueType',\r
+               'checked'          : 'defaultChecked'\r
 },\r
 \r
 X_Node_Attr_HAS_VALUE = {\r
-               INPUT    : true,\r
-               TEXTAREA : true,\r
-               SELECT   : true,\r
-               BUTTON   : true,\r
-               OBJECT   : true,\r
-               PARAM    : true // FlashVars が flash 側から書き換えられるケースがある??\r
+               'INPUT'    : true,\r
+               'TEXTAREA' : true,\r
+               'SELECT'   : true,\r
+               'BUTTON'   : true,\r
+               'OBJECT'   : true,\r
+               'PARAM'    : true // FlashVars が flash 側から書き換えられるケースがある??\r
 },\r
 \r
 // <input type=button,hidden,submit,reset,radio,checkbox> の場合、value の値はユーザーで変えることはない\r
 // <input type=text,password,file> はユーザーによって常に変更される HTML5 ではこれにさらにいろいろ加わる\r
 X_Node_Attr_STATIC_VALUE_TYPES = {\r
-       button   : true,\r
-       hidden   : true,\r
-       submit   : true,\r
-       reset    : true,\r
-       radio    : true,\r
-       checkbox : true\r
+       'button'   : true,\r
+       'hidden'   : true,\r
+       'submit'   : true,\r
+       'reset'    : true,\r
+       'radio'    : true,\r
+       'checkbox' : true\r
 },\r
 \r
 // 自由な内容が入るため、参照文字への変換が必要\r
 X_Node_Attr_toChrReferance = {\r
-       value : true,\r
-       title : true,\r
-       alt   : true\r
+       'value' : true,\r
+       'title' : true,\r
+       'alt'   : true\r
 },\r
 \r
 X_Node_Attr_renameForTag = {};\r
@@ -76,22 +76,22 @@ X_Node_Attr_renameForTag = {};
        //  -> src (img, iframe, ), link の href, <param name="movie" src=>\r
        // \r
 function X_Node_Attr_objToAttrText( that, skipNetworkForElmCreation ){\r
-       var obj     = that._attrs,\r
+       var obj     = that[ '_attrs' ],\r
                noValue = X_Node_Attr_noValue,\r
                attrs   = [ '' ], // 先頭にスペース\r
                plain   = X_EMPTY_OBJECT,\r
                n = 0, k, check;\r
 \r
        if( skipNetworkForElmCreation ){\r
-               delete that._newAttrs;\r
+               delete that[ '_newAttrs' ];\r
                // このあとで _newAttr にネットワーク系の属性を控える, attrText には加えない\r
        } else {\r
-               that._flags &= ~X_Node_State.OLD_ATTRTEXT;\r
+               that[ '_flags' ] &= ~X_Node_State.OLD_ATTRTEXT;\r
                // 完全な attrText\r
        };\r
        \r
        if( !obj ){ // Opera7\r
-               delete that._attrText;\r
+               delete that[ '_attrText' ];\r
                return '';\r
        };\r
        \r
@@ -100,7 +100,7 @@ function X_Node_Attr_objToAttrText( that, skipNetworkForElmCreation ){
                \r
                if( skipNetworkForElmCreation ){\r
                        check = false;\r
-                       switch( that._tag + k ){\r
+                       switch( that[ '_tag' ] + k ){\r
                                case 'PARAMvalue' :\r
                                        check = obj[ 'name' ] !== 'movie';\r
                                case 'INPUTsrc'  :\r
@@ -120,8 +120,8 @@ function X_Node_Attr_objToAttrText( that, skipNetworkForElmCreation ){
                                case 'APPLETcode' :\r
                                //case 'AUDIOsrc' :\r
                                //case 'VIDEOsrc' :\r
-                                       if( !that._newAttrs ) that._newAttrs = {};\r
-                                       that._newAttrs[ k ] = obj[ k ];\r
+                                       if( !that[ '_newAttrs' ] ) that[ '_newAttrs' ] = {};\r
+                                       that[ '_newAttrs' ][ k ] = obj[ k ];\r
                                        continue;\r
                        };\r
                };\r
@@ -133,14 +133,14 @@ function X_Node_Attr_objToAttrText( that, skipNetworkForElmCreation ){
        };\r
        \r
        if( 0 < n ){\r
-               return that._attrText = attrs.join( ' ' );\r
+               return that[ '_attrText' ] = attrs.join( ' ' );\r
        };\r
-       delete that._attrText;\r
+       delete that[ '_attrText' ];\r
        return '';\r
 };\r
 \r
 (function( renameForDOM, renameForTag ){\r
-       var k, i;\r
+       var k;\r
        for( k in renameForDOM ){\r
                //if( X_EMPTY_OBJECT[ k ] ) continue;\r
                renameForTag[ renameForDOM[ k ] ] = k;\r
@@ -156,32 +156,32 @@ function X_Node_Attr_objToAttrText( that, skipNetworkForElmCreation ){
  * className, onclick等 はここで設定しない\r
  * \r
  */\r
-Node.prototype.attr = function( nameOrObj /* v */ ){\r
-       var attrs = this._attrs, newAttrs, f, k, elm, v;\r
+Node.prototype[ 'attr' ] = function( nameOrObj /* v */ ){\r
+       var attrs = this[ '_attrs' ], newAttrs, f, k, elm, v;\r
        \r
-       if( !this._tag ) return this;\r
+       if( !this[ '_tag' ] ) return this;\r
        \r
        if( nameOrObj && X_Type_isObject( nameOrObj ) ){\r
-               attrs || ( attrs = this._attrs = {} );\r
-               newAttrs = this._newAttrs || ( this._newAttrs = {} );\r
+               attrs || ( attrs = this[ '_attrs' ] = {} );\r
+               newAttrs = this[ '_newAttrs' ] || ( this[ '_newAttrs' ] = {} );\r
                \r
                for( k in nameOrObj ){\r
                        //if( X_EMPTY_OBJECT[ k ] ) continue;\r
                        if( X_Node_Attr_setAttr( this, attrs, newAttrs, k, nameOrObj[ k ] ) === true ) f = true;\r
                };\r
                if( f ){\r
-                       delete this._attrText;\r
-                       this._flags |= X_Node_State.DIRTY_ATTR | X_Node_State.OLD_ATTRTEXT;\r
-                       this._flags & X_Node_State.IN_TREE && X_Node_reserveUpdate();\r
+                       delete this[ '_attrText' ];\r
+                       this[ '_flags' ] |= X_Node_State.DIRTY_ATTR | X_Node_State.OLD_ATTRTEXT;\r
+                       this[ '_flags' ] & X_Node_State.IN_TREE && X_Node_reserveUpdate();\r
                };\r
                return this;\r
        } else\r
        if( 1 < arguments.length ){\r
                // setter\r
-               if( X_Node_Attr_setAttr( this, attrs || ( this._attrs = {} ), this._newAttrs || ( this._newAttrs = {} ), nameOrObj, arguments[ 1 ] ) === true ){\r
-                       delete this._attrText;\r
-                       this._flags |= X_Node_State.DIRTY_ATTR | X_Node_State.OLD_ATTRTEXT;\r
-                       this._flags & X_Node_State.IN_TREE && X_Node_reserveUpdate();\r
+               if( X_Node_Attr_setAttr( this, attrs || ( this[ '_attrs' ] = {} ), this[ '_newAttrs' ] || ( this[ '_newAttrs' ] = {} ), nameOrObj, arguments[ 1 ] ) === true ){\r
+                       delete this[ '_attrText' ];\r
+                       this[ '_flags' ] |= X_Node_State.DIRTY_ATTR | X_Node_State.OLD_ATTRTEXT;\r
+                       this[ '_flags' ] & X_Node_State.IN_TREE && X_Node_reserveUpdate();\r
                };\r
                return this;\r
        } else\r
@@ -189,22 +189,22 @@ Node.prototype.attr = function( nameOrObj /* v */ ){
                // getter\r
                switch( nameOrObj ){\r
                        case 'id' :\r
-                               return this._id;\r
+                               return this[ '_id' ];\r
                        case 'class' :\r
                        case 'className' :\r
-                               return this._className;\r
+                               return this[ '_className' ];\r
                        case 'tag' :\r
                        case 'tagName' :\r
-                               return this._tag;\r
+                               return this[ '_tag' ];\r
                        case 'style' :\r
                        case 'cssText' :\r
-                               return this.cssText();\r
+                               return this[ 'cssText' ]();\r
 \r
                        case 'src' : // src は遷移して変化する, name も?\r
-                               if( this._tag !== 'IFRAME' ) break;\r
-                               if( this._newAttrs && X_Object_inObject( nameOrObj, this._newAttrs ) ) return this._newAttrs[ nameOrObj ];\r
-                               if( elm = X_UA_DOM.IE4 ? this._rawObject || X_Node__ie4getRawNode( this ) : this._rawObject ){\r
-                                       if( !attrs ) attrs = this._attrs = {};\r
+                               if( this[ '_tag' ] !== 'IFRAME' ) break;\r
+                               if( this[ '_newAttrs' ] && X_Object_inObject( nameOrObj, this[ '_newAttrs' ] ) ) return this[ '_newAttrs' ][ nameOrObj ];\r
+                               if( elm = X_UA_DOM.IE4 ? this[ '_rawObject' ] || X_Node__ie4getRawNode( this ) : this[ '_rawObject' ] ){\r
+                                       if( !attrs ) attrs = this[ '_attrs' ] = {};\r
                                        return attrs[ nameOrObj ] = elm[ nameOrObj ]; // getAttribute( nameOrObj )?\r
                                };\r
                                break;\r
@@ -213,16 +213,16 @@ Node.prototype.attr = function( nameOrObj /* v */ ){
                                // kquery.js : safariのバグ対策\r
                                // if ($.browser.safari && key === "selected" && tmp) tmp.selectedIndex;\r
                                // 親ノードの selectedIndex の getter を呼んでおくと値が正しくなる、ということ?( by itozyun )\r
-                               if( X_UA[ 'WebKit' ] ) this._rawObject.parentNode && this._rawObject.parentNode.selectedIndex;\r
+                               if( X_UA[ 'WebKit' ] ) this[ '_rawObject' ].parentNode && this[ '_rawObject' ].parentNode.selectedIndex;\r
                        case 'value' :\r
-                               if( this._tag === 'INPUT' && X_Node_Attr_STATIC_VALUE_TYPES[ attrs[ 'type' ] ] ) break;\r
+                               if( this[ '_tag' ] === 'INPUT' && X_Node_Attr_STATIC_VALUE_TYPES[ attrs[ 'type' ] ] ) break;\r
                        case 'checked' :\r
                        case 'disabled' :                       \r
                        case 'selectedIndex' :\r
-                               if( X_Node_Attr_HAS_VALUE[ this._tag ] ){\r
-                                       if( this._newAttrs && X_Object_inObject( nameOrObj, this._newAttrs ) ) return this._newAttrs[ nameOrObj ];\r
-                                       if( elm = X_UA_DOM.IE4 ? this._rawObject || X_Node__ie4getRawNode( this ) : this._rawObject ){\r
-                                               if( !attrs ) attrs = this._attrs = {};\r
+                               if( X_Node_Attr_HAS_VALUE[ this[ '_tag' ] ] ){\r
+                                       if( this[ '_newAttrs' ] && X_Object_inObject( nameOrObj, this[ '_newAttrs' ] ) ) return this[ '_newAttrs' ][ nameOrObj ];\r
+                                       if( elm = X_UA_DOM.IE4 ? this[ '_rawObject' ] || X_Node__ie4getRawNode( this ) : this[ '_rawObject' ] ){\r
+                                               if( !attrs ) attrs = this[ '_attrs' ] = {};\r
                                                return attrs[ nameOrObj ] = elm[ nameOrObj ]; // getAttribute( nameOrObj )?\r
                                        };\r
                                };\r
@@ -239,24 +239,24 @@ function X_Node_Attr_setAttr( that, attrs, newAttrs, name, v ){
                case 'tagName' :\r
                        return;\r
                case 'id' :\r
-                       v = ( v !== 'ie4uid' + that._uid ) ? v : undefined;\r
+                       v = ( v !== 'ie4uid' + that[ '_uid' ] ) ? v : undefined;\r
                        // TODO unique の check\r
-                       if( v !== that._id ){\r
-                               that._id = v;\r
-                               that._flags |= X_Node_State.DIRTY_ID;\r
-                               that._flags & X_Node_State.IN_TREE && X_Node_reserveUpdate();\r
+                       if( v !== that[ '_id' ] ){\r
+                               that[ '_id' ] = v;\r
+                               that[ '_flags' ] |= X_Node_State.DIRTY_ID;\r
+                               that[ '_flags' ] & X_Node_State.IN_TREE && X_Node_reserveUpdate();\r
                        };\r
                        return; \r
                case 'class' :\r
                case 'className' :\r
-                       return that.className( v );\r
+                       return that[ 'className' ]( v );\r
                case 'style' :\r
                case 'cssText' :\r
-                       return that.cssText( v );\r
+                       return that[ 'cssText' ]( v );\r
                case 'text' :\r
-                       return that.text( v );\r
+                       return that[ 'text' ]( v );\r
                case 'html' :\r
-                       return that.html( v );\r
+                       return that[ 'html' ]( v );\r
        };\r
        // debug\r
        if( name.indexOf( 'on' ) === 0 ){\r
index 6a87798..4f22524 100644 (file)
@@ -47,15 +47,15 @@ function X_Node_CSS_uncamelize( str ){
 
 var
 
-X_node_CSS_getComputedStyle = window.getComputedStyle || document.defaultView && document.defaultView.getComputedStyle,
-
-       /* font-size -> fontSize */
-X_Node_CSS__DICTIONARY_CAMELIZE = {},
-
-       /* fontSize -> font-size */
-X_Node_CSS_CHAR_CODE_A = 'A'.charCodeAt( 0 ),
+       X_Node_CSS_getComputedStyle       = window.getComputedStyle || document.defaultView && document.defaultView.getComputedStyle,
+       
+               /* font-size -> fontSize */
+       X_Node_CSS__DICTIONARY_CAMELIZE   = {},
        
-X_Node_CSS__DICTIONARY_UNCAMELIZE = {},
+               /* fontSize -> font-size */
+       X_Node_CSS_CHAR_CODE_A            = 'A'.charCodeAt( 0 ),
+               
+       X_Node_CSS__DICTIONARY_UNCAMELIZE = {},
        
 /*
  * CSS における display, position, float プロパティの相互関係
@@ -84,12 +84,12 @@ _ABSOLUTE_BOX
 _FLOAT_BOX
 _GRNERAL
  */
-X_Node_CSS_VENDER_PREFIX = {},
-       
-X_Node_CSS__CLIP_SEPARATOR = X_UA[ 'IE' ] < 8 ? ' ' : ',',
-       
-X_Node_CSS__UNIT_RATIO      = {},
-X_Node_CSS__FONT_SIZE_RATIO = {},
+       X_Node_CSS_VENDER_PREFIX          = {},
+               
+       X_Node_CSS__CLIP_SEPARATOR        = X_UA[ 'IE' ] < 8 ? ' ' : ',',
+               
+       X_Node_CSS__UNIT_RATIO            = {},
+       X_Node_CSS__FONT_SIZE_RATIO       = {},
 
        //  https://developer.mozilla.org/en-US/docs/Web/CSS/transform
        //  Firefox 3.5, ie9, Opera 10.5, Safari 3.1, Chrome
@@ -103,88 +103,88 @@ X_Node_CSS__FONT_SIZE_RATIO = {},
        
        // ブラウザ毎の getComputedStyle の戻り値 http://d.hatena.ne.jp/uupaa/20080928/1222543331
 
-X_Node_CSS_COLOR = {
-               BLACK         : 0x0,
-               RED           : 0xFF0000,
-               LIME          : 0x00FF00,
-               BLUE          : 0x0000FF,
-               YELLOW        : 0xFFFF00,
-               AQUA          : 0x00FFFF,
-               CYAN          : 0x00FFFF,
-               MAGENTA       : 0xFF00FF,
-               FUCHSIA       : 0xFF00FF,
-               WHITE         : 0xFFFFFF,
-               GREEN         : 0x008000,
-               PURPLE        : 0x800080,
-               MAROON        : 0x800000,
-               NAVY          : 0x000080,
-               OLIVE         : 0x808000,
-               TEAL          : 0x008080,
-               GRAY          : 0x808080,
-               SILVER        : 0xC0C0C0,
-               DIMGRAY       : 0x696969,
-               SLATEGRAY     : 0x708090,
-               DARKGRAY      : 0xA9A9A9,
-               GAINSBORO     : 0xDCDCDC,
-               MIDNIGHTBLUE  : 0x191970,
-               SLATEBLUE     : 0x6A5ACD,
-               MEDIUMBLUE    : 0x0000CD,
-               ROYALBLUE     : 0x4169E1,
-               DODGERBLUE    : 0x1E90FF,
-               SKYBLUE       : 0x87CEEB,
-               STEELBLUE     : 0x4682B4,
-               LIGHTBLUE     : 0xADD8E6,
-               PALETURQUOISE : 0xAFEEEE,
-               TURQUOISE     : 0x40E0D0,
-               LIGHTCYAN     : 0xE0FFFF,
-               AQUAMARINE    : 0x7FFFD4,
-               DARKGREEN     : 0x006400,
-               SEAGREEN      : 0x2E8B57,
-               LIGHTGREEN    : 0x90EE90,
-               CHARTREUSE    : 0x7FFF00,
-               GREENYELLOW   : 0xADFF2F,
-               LIMEGREEN     : 0x32CD32,
-               YELLOWGREEN   : 0x9ACD32,
-               OLIVEDRAB     : 0x6B8E23,
-               DARKKHAKI     : 0xBCB76B,
-               PALEGOLDENROD : 0xEEE8AA,
-               LIGHTYELLOW   : 0xFFFFE0,
-               GOLD          : 0xFFD700,
-               GOLDENROD     : 0xDAA520,
-               DARKGOLDENROD : 0xB8860B,
-               ROSYBROWN     : 0xBC8F8F,
-               INDIANRED     : 0xCD5C5C,
-               SADDLEBROWN   : 0x8B4513,
-               SIENNA        : 0xA0522D,
-               PERU          : 0xCD853F,
-               BURLYWOOD     : 0xDEB887,
-               BEIGE         : 0xF5F5DC,
-               WHEAT         : 0xF5DEB3,
-               SANDYBROWN    : 0xF4A460,
-               TAN           : 0xD2B48C,
-               CHOCOLATE     : 0xD2691E,
-               FIREBRICK     : 0xB22222,
-               BROWN         : 0xA52A2A,
-               SALMON        : 0xFA8072,
-               ORANGE        : 0xFFA500,
-               CORAL         : 0xFF7F50,
-               TOMATO        : 0xFF6347,
-               HOTPINK       : 0xFF69B4,
-               PINK          : 0xFFC0CB,
-               DEEPPINK      : 0xFF1493,
-               PALEVIOLETRED : 0xDB7093,
-               VIOLET        : 0xEE82EE,
-               PLUM          : 0xDDA0DD,
-               ORCHILD       : 0xDA70D6,
-               DARKVIOLET    : 0x9400D3,
-               BLUEVIOLET    : 0x8A2BE2,
-               MEDIUMPURPLE  : 0x9370DB,
-               THISTLE       : 0xD8BFD8,
-               LAVENDER      : 0xE6E6FA,
-               MISTYROSE     : 0xFFE4E1,
-               IVORY         : 0xFFFFF0,
-               LEMONCHIFFON  : 0xFFFACD
-};
+       X_Node_CSS_COLOR = {
+               'BLACK'         : 0x0,
+               'RED'           : 0xFF0000,
+               'LIME'          : 0x00FF00,
+               'BLUE'          : 0x0000FF,
+               'YELLOW'        : 0xFFFF00,
+               'AQUA'          : 0x00FFFF,
+               'CYAN'          : 0x00FFFF,
+               'MAGENTA'       : 0xFF00FF,
+               'FUCHSIA'       : 0xFF00FF,
+               'WHITE'         : 0xFFFFFF,
+               'GREEN'         : 0x008000,
+               'PURPLE'        : 0x800080,
+               'MAROON'        : 0x800000,
+               'NAVY'          : 0x000080,
+               'OLIVE'         : 0x808000,
+               'TEAL'          : 0x008080,
+               'GRAY'          : 0x808080,
+               'SILVER'        : 0xC0C0C0,
+               'DIMGRAY'       : 0x696969,
+               'SLATEGRAY'     : 0x708090,
+               'DARKGRAY'      : 0xA9A9A9,
+               'GAINSBORO'     : 0xDCDCDC,
+               'MIDNIGHTBLUE'  : 0x191970,
+               'SLATEBLUE'     : 0x6A5ACD,
+               'MEDIUMBLUE'    : 0x0000CD,
+               'ROYALBLUE'     : 0x4169E1,
+               'DODGERBLUE'    : 0x1E90FF,
+               'SKYBLUE'       : 0x87CEEB,
+               'STEELBLUE'     : 0x4682B4,
+               'LIGHTBLUE'     : 0xADD8E6,
+               'PALETURQUOISE' : 0xAFEEEE,
+               'TURQUOISE'     : 0x40E0D0,
+               'LIGHTCYAN'     : 0xE0FFFF,
+               'AQUAMARINE'    : 0x7FFFD4,
+               'DARKGREEN'     : 0x006400,
+               'SEAGREEN'      : 0x2E8B57,
+               'LIGHTGREEN'    : 0x90EE90,
+               'CHARTREUSE'    : 0x7FFF00,
+               'GREENYELLOW'   : 0xADFF2F,
+               'LIMEGREEN'     : 0x32CD32,
+               'YELLOWGREEN'   : 0x9ACD32,
+               'OLIVEDRAB'     : 0x6B8E23,
+               'DARKKHAKI'     : 0xBCB76B,
+               'PALEGOLDENROD' : 0xEEE8AA,
+               'LIGHTYELLOW'   : 0xFFFFE0,
+               'GOLD'          : 0xFFD700,
+               'GOLDENROD'     : 0xDAA520,
+               'DARKGOLDENROD' : 0xB8860B,
+               'ROSYBROWN'     : 0xBC8F8F,
+               'INDIANRED'     : 0xCD5C5C,
+               'SADDLEBROWN'   : 0x8B4513,
+               'SIENNA'        : 0xA0522D,
+               'PERU'          : 0xCD853F,
+               'BURLYWOOD'     : 0xDEB887,
+               'BEIGE'         : 0xF5F5DC,
+               'WHEAT'         : 0xF5DEB3,
+               'SANDYBROWN'    : 0xF4A460,
+               'TAN'           : 0xD2B48C,
+               'CHOCOLATE'     : 0xD2691E,
+               'FIREBRICK'     : 0xB22222,
+               'BROWN'         : 0xA52A2A,
+               'SALMON'        : 0xFA8072,
+               'ORANGE'        : 0xFFA500,
+               'CORAL'         : 0xFF7F50,
+               'TOMATO'        : 0xFF6347,
+               'HOTPINK'       : 0xFF69B4,
+               'PINK'          : 0xFFC0CB,
+               'DEEPPINK'      : 0xFF1493,
+               'PALEVIOLETRED' : 0xDB7093,
+               'VIOLET'        : 0xEE82EE,
+               'PLUM'          : 0xDDA0DD,
+               'ORCHILD'       : 0xDA70D6,
+               'DARKVIOLET'    : 0x9400D3,
+               'BLUEVIOLET'    : 0x8A2BE2,
+               'MEDIUMPURPLE'  : 0x9370DB,
+               'THISTLE'       : 0xD8BFD8,
+               'LAVENDER'      : 0xE6E6FA,
+               'MISTYROSE'     : 0xFFE4E1,
+               'IVORY'         : 0xFFFFF0,
+               'LEMONCHIFFON'  : 0xFFFACD
+       };
        
 function X_Node_CSS_parseColor( x ){
        var rgb, r, g, b;
@@ -245,16 +245,16 @@ function X_Node_CSS_parseColor( x ){
 };
 
 function X_Node_CSS_objToCssText( that, skipFilter ){
-       var obj   = that._css,
+       var obj   = that[ '_css' ],
                plain = X_EMPTY_OBJECT,
                css   = [],
                n     = -1,
                p, v, specialFix, filterFix;
        
-       that._flags &= ~X_Node_State.OLD_CSSTEXT;
+       that[ '_flags' ] &= ~X_Node_State.OLD_CSSTEXT;
        
        if( !obj ){ // Opera7.5 未満?
-               delete that._cssText;
+               delete that[ '_cssText' ];
                return '';
        };
        
@@ -286,14 +286,14 @@ function X_Node_CSS_objToCssText( that, skipFilter ){
        
        if( 0 <= n ){
                // cssText には完全なものを控えるが、戻すのは filter を抜いたもの
-               that._cssText = css.join( ';' );
+               that[ '_cssText' ] = css.join( ';' );
                if( skipFilter ){
                        --css.length;
                        return css.join( ';' );
                };
-               return that._cssText;
+               return that[ '_cssText' ];
        };
-       delete that._cssText;
+       delete that[ '_cssText' ];
        return '';
 };
 
@@ -301,19 +301,19 @@ var
 X_Node_CSS_FILTER_FIX_PROPS =
        X_UA[ 'ActiveX' ] && X_UA[ 'IE' ] < 9 && !X_UA[ 'MacIE' ] ?
                {
-                       opacity    : 2,
-                       boxShadow  : 3,
-                       textShadow : 4,
-                       transform  : 5
+                       'opacity'    : 2,
+                       'boxShadow'  : 3,
+                       'textShadow' : 4,
+                       'transform'  : 5
                } :
        X_UA[ 'ActiveX' ] && X_UA[ 'IE9' ] ? // == 9
                {
-                       textShadow : 4
+                       'textShadow' : 4
                } :
                null;
 
 function X_Node_CSS_objToIEFilterText( that, opt_css ){
-       var obj     = opt_css || that._css,
+       var obj     = opt_css || that[ '_css' ],
                test    = X_Node_CSS_FILTER_FIX_PROPS,
                filters = [],
                n       = -1,
@@ -393,7 +393,7 @@ function X_Node_CSS_objToIEFilterText( that, opt_css ){
                                };
                                if( afterUpdate ){
                                        // AFTER_UPDATE 時に 再計算
-                                       X_ViewPort.listenOnce( X_Event.AFTER_UPDATE, that, X_Node_CSS_onAfterUpdateForIEFilterFix );
+                                       X_ViewPort[ 'listenOnce' ]( X_EVENT_AFTER_UPDATE, that, X_Node_CSS_onAfterUpdateForIEFilterFix );
                                        break;
                                };
                                dir = Math.atan2( params[ 1 ] + params[ 3 ], params[ 0 ] + params[ 3 ] ) * 180 / Math.PI + 90;
@@ -416,8 +416,8 @@ function X_Node_CSS_objToIEFilterText( that, opt_css ){
 };
 
 function X_Node_CSS_onAfterUpdateForIEFilterFix(){
-       if( this._flags & X_Node_State.IN_TREE ){ // 要素があり、要素がツリーに属している
-               this._flags |= X_Node_State.DIRTY_IE_FILTER;
+       if( this[ '_flags' ] & X_Node_State.IN_TREE ){ // 要素があり、要素がツリーに属している
+               this[ '_flags' ] |= X_Node_State.DIRTY_IE_FILTER;
                X_Node_reserveUpdate();
        };
 };
@@ -505,17 +505,18 @@ function X_Node_CSS__splitValueAndUnit( v ){
 // obj setter
 // name, value setter
 
-Node.prototype.css = function( nameOrObj /* orUnitID, valuOrUnitOrName */ ){
+Node.prototype[ 'css' ] = function( nameOrObj /* orUnitID, valuOrUnitOrName */ ){
        var args = arguments,
-               css  = this._css,
+               css  = this[ '_css' ],
                p, name, v, plain, camelize, flags;
-       if( !this._tag || X_Dom_DTD_MOVE_TO_HEAD[ this._tag ] || this._tag === 'SCRIPT' ) return this;
+
+       if( !this[ '_tag' ] || X_Dom_DTD_MOVE_TO_HEAD[ this[ '_tag' ] ] || this[ '_tag' ] === 'SCRIPT' ) return this;
 // setter:object
        if( X_Type_isObject( nameOrObj ) ){
-               if( !css ) css = this._css = {};
+               if( !css ) css = this[ '_css' ] = {};
                plain    = X_EMPTY_OBJECT;
                camelize = X_Node_CSS_camelize;
-               flags    = this._flags;
+               flags    = this[ '_flags' ];
                for( p in nameOrObj ){
                        if( plain[ p ] ) continue;
                        name = camelize( p );
@@ -523,20 +524,20 @@ Node.prototype.css = function( nameOrObj /* orUnitID, valuOrUnitOrName */ ){
                        if( css[ name ] === v ) continue;
                        flags = X_Node_CSS_setStyle( css, flags, name, v );
                };
-               this._flags |= X_Node_State.DIRTY_CSS | X_Node_State.OLD_CSSTEXT;
-               this._flags & X_Node_State.IN_TREE && X_Node_reserveUpdate();
-               delete this._cssText;
+               this[ '_flags' ] |= X_Node_State.DIRTY_CSS | X_Node_State.OLD_CSSTEXT;
+               this[ '_flags' ] & X_Node_State.IN_TREE && X_Node_reserveUpdate();
+               delete this[ '_cssText' ];
                return this;
        } else
        if( 1 < args.length ){
 // setter name, value
-               if( !css ) css = this._css = {};
+               if( !css ) css = this[ '_css' ] = {};
                name = X_Node_CSS_camelize( nameOrObj );
                v    = args[ 1 ];
                if( css[ name ] === v ) return this;
-               this._flags = X_Node_CSS_setStyle( css, this._flags, name, v ) | X_Node_State.DIRTY_CSS | X_Node_State.OLD_CSSTEXT;
-               this._flags & X_Node_State.IN_TREE && X_Node_reserveUpdate();
-               delete this._cssText;
+               this[ '_flags' ] = X_Node_CSS_setStyle( css, this[ '_flags' ], name, v ) | X_Node_State.DIRTY_CSS | X_Node_State.OLD_CSSTEXT;
+               this[ '_flags' ] & X_Node_State.IN_TREE && X_Node_reserveUpdate();
+               delete this[ '_cssText' ];
                return this;
        };
 // getter
@@ -611,34 +612,34 @@ function X_Node_CSS_setStyle( css, flags, name, newValue ){
        return flags;
 };
 
-Node.prototype.cssText = function( v ){
+Node.prototype[ 'cssText' ] = function( v ){
        var obj, i, l, attr, name;
        
-       if( v === this._cssText && ( this._flags & X_Node_State.OLD_CSSTEXT ) === 0 ){
+       if( v === this[ '_cssText' ] && ( this[ '_flags' ] & X_Node_State.OLD_CSSTEXT ) === 0 ){
                return this;
        };      
        
        if( v === '' ){
-               delete this._css;
-               delete this._cssText;
-               this._flags |= X_Node_State.DIRTY_CSS | X_Node_State.DIRTY_IE_FILTER;
-               this._flags &= ~X_Node_State.OLD_CSSTEXT;
-               this._flags & X_Node_State.IN_TREE && X_Node_reserveUpdate();
+               delete this[ '_css' ];
+               delete this[ '_cssText' ];
+               this[ '_flags' ] |= X_Node_State.DIRTY_CSS | X_Node_State.DIRTY_IE_FILTER;
+               this[ '_flags' ] &= ~X_Node_State.OLD_CSSTEXT;
+               this[ '_flags' ] & X_Node_State.IN_TREE && X_Node_reserveUpdate();
                return this;
        } else
        if( X_Type_isString( v ) ){
-               delete this._css;
+               delete this[ '_css' ];
                obj = {};
-               v   = v.split( ';' ); // TODO content ";" などにも対応 <- 不要 :before :after 疑似要素には触らない
+               v   = v.split( ';' ); // TODO content ";" などにも対応 <- 不要 :before :after 疑似要素には触らない
                for( i = 0, l = v.length; i < l; ++i ){
                        attr = v[ i ].split( ':' );
                        ( name = attr[ 0 ] ) && ( obj[ name ] = attr[ 1 ] || true );
                };
-               return this.css( obj );
+               return this[ 'css' ]( obj );
        };
        // getter
-       this._flags & X_Node_State.OLD_CSSTEXT && X_Node_CSS_objToCssText( this );
-       return this._cssText;
+       this[ '_flags' ] & X_Node_State.OLD_CSSTEXT && X_Node_CSS_objToCssText( this );
+       return this[ '_cssText' ];
 };
 
 /*
@@ -651,12 +652,12 @@ Node.prototype.cssText = function( v ){
  */
 var
 X_Node_CSS_getCharSize =
-       X_node_CSS_getComputedStyle ?
+       X_Node_CSS_getComputedStyle ?
                (function( that ){
                        X_Node_updateTimerID && X_Node_startUpdate();
                        if( that === X_Node_body && X_ViewPort_baseFontSize ) return X_ViewPort_baseFontSize;
-                       if( that._fontSize ) return that._fontSize;
-                       return that._fontSize = parseFloat( X_node_CSS_getComputedStyle( that._rawObject, null ).fontSize );
+                       if( that[ '_fontSize' ] ) return that[ '_fontSize' ];
+                       return that[ '_fontSize' ] = parseFloat( X_Node_CSS_getComputedStyle( that[ '_rawObject' ], null ).fontSize );
                }) :
 
        5 <= X_UA[ 'IE' ] ?
@@ -664,29 +665,29 @@ X_Node_CSS_getCharSize =
                        var font, vu, v, u, _v;
                        X_Node_updateTimerID && X_Node_startUpdate();
                        if( that === X_Node_body && X_ViewPort_baseFontSize ) return X_ViewPort_baseFontSize;
-                       if( that._fontSize ) return that._fontSize;
+                       if( that[ '_fontSize' ] ) return that[ '_fontSize' ];
                        
-                       font = that._rawObject.currentStyle.fontSize;
-                       //font = that._css && that._css.fontSize || '1em';
+                       font = that[ '_rawObject' ].currentStyle.fontSize;
+                       //font = that[ '_css' ] && that[ '_css' ].fontSize || '1em';
                        vu   = X_Node_CSS__splitValueAndUnit( font );
                        v    = vu[ 0 ];
                        u    = vu[ 1 ];
 
                        if( v === 0 ){
-                               if( v = X_Node_CSS__FONT_SIZE_RATIO[ font ] ) return that._fontSize = v;
+                               if( v = X_Node_CSS__FONT_SIZE_RATIO[ font ] ) return that[ '_fontSize' ] = v;
                        } else {
-                               if( _v = X_Node_CSS__UNIT_RATIO[ u ] ) return that._fontSize = v / _v;
+                               if( _v = X_Node_CSS__UNIT_RATIO[ u ] ) return that[ '_fontSize' ] = v / _v;
                        };
                        switch( u ){
                                case 'px' :
-                                       return that._fontSize = v;
+                                       return that[ '_fontSize' ] = v;
                                case 'em' :
                                // body まで辿ってしまった場合は?
-                                       if( that.parent ) return that._fontSize = X_Node_CSS_getCharSize( that.parent ) * v;
+                                       if( that.parent ) return that[ '_fontSize' ] = X_Node_CSS_getCharSize( that.parent ) * v;
                                        break;
                                case '%' :
                                // body まで辿ってしまった場合は?
-                                       if( that.parent ) return that._fontSize = X_Node_CSS_getCharSize( that.parent ) * v / 100;
+                                       if( that.parent ) return that[ '_fontSize' ] = X_Node_CSS_getCharSize( that.parent ) * v / 100;
                        };
                        return 0;
                }) :
@@ -695,52 +696,52 @@ X_Node_CSS_getCharSize =
                        var elm, v;
                        X_Node_updateTimerID && X_Node_startUpdate();
                        if( that === X_Node_body && X_ViewPort_baseFontSize ) return X_ViewPort_baseFontSize;
-                       if( that._fontSize ) return that._fontSize;
+                       if( that[ '_fontSize' ] ) return that[ '_fontSize' ];
 
-                       that._rawObject.appendChild( elm = document.createElement( 'span' ) );
+                       that[ '_rawObject' ].appendChild( elm = document.createElement( 'span' ) );
                        elm.style.cssText = 'display:block;position:absolute;top:0;left:0;visivility:hidden;line-height:1;height:1em;';
                        elm.innerHTML = 'X';
                        v = elm.offsetHeight;
-                       that._rawObject.removeChild( elm );
-                       return that._fontSize = v;
+                       that[ '_rawObject' ].removeChild( elm );
+                       return that[ '_fontSize' ] = v;
                }) :
        X_UA_DOM.IE4 ?
                (function( that ){
                        var font, vu, v, u, _v;
                        X_Node_updateTimerID && X_Node_startUpdate();
                        if( that === X_Node_body && X_ViewPort_baseFontSize ) return X_ViewPort_baseFontSize;
-                       if( that._fontSize ) return that._fontSize;
+                       if( that[ '_fontSize' ] ) return that[ '_fontSize' ];
                        
-                       if( that._css && ( font = that._css.fontSize ) ){
+                       if( that[ '_css' ] && ( font = that[ '_css' ].fontSize ) ){
                                vu = X_Node_CSS__splitValueAndUnit( font );
                                v  = vu[ 0 ];
                                u  = vu[ 1 ];
                                
                                if( v === 0 ){
-                                       if( _v = X_Node_CSS__FONT_SIZE_RATIO[ font ] ) return that._fontSize = _v;
+                                       if( _v = X_Node_CSS__FONT_SIZE_RATIO[ font ] ) return that[ '_fontSize' ] = _v;
                                } else {
-                                       if( _v = X_Node_CSS__UNIT_RATIO[ u ] ) return that._fontSize = v / _v;
+                                       if( _v = X_Node_CSS__UNIT_RATIO[ u ] ) return that[ '_fontSize' ] = v / _v;
                                };
                        } else {
                                // 要素を生成して測定!
-                               ( that._rawObject || X_Node__ie4getRawNode( that ) ).insertAdjacentHTML( 'BeforeEnd', '<div id="ie4charsize" style="position:absolute;top:0;left:0;visivility:hidden;line-height:1;height:1em;">X</div>' );
+                               ( that[ '_rawObject' ] || X_Node__ie4getRawNode( that ) ).insertAdjacentHTML( 'BeforeEnd', '<div id="ie4charsize" style="position:absolute;top:0;left:0;visivility:hidden;line-height:1;height:1em;">X</div>' );
                                elm = document.all[ 'ie4charsize' ];
                                v = elm.offsetHeight;
                                elm.removeAttribute( 'id' ); // ?
                                elm.outerHTML = '';
-                               return that._fontSize = v;
+                               return that[ '_fontSize' ] = v;
                        };
 
                        switch( u ){
                                case 'px' :
-                                       return that._fontSize = v;
+                                       return that[ '_fontSize' ] = v;
                                case 'em' :
                                // body まで辿ってしまった場合は?
-                                       if( that.parent ) return that._fontSize = X_Node_CSS_getCharSize( that.parent ) * v;
+                                       if( that.parent ) return that[ '_fontSize' ] = X_Node_CSS_getCharSize( that.parent ) * v;
                                        break;
                                case '%' :
                                // body まで辿ってしまった場合は?
-                                       if( that.parent ) return that._fontSize = X_Node_CSS_getCharSize( that.parent ) * v / 100;
+                                       if( that.parent ) return that[ '_fontSize' ] = X_Node_CSS_getCharSize( that.parent ) * v / 100;
                        };
                        return 0;
                }) :
@@ -750,7 +751,7 @@ var X_Node_CSS_Support = {},
 
        X_Node_CSS_SPECIAL_FIX_PROP = {
                
-               transitionDuration : X_UA[ 'Android' ] && !X_UA[ 'Chrome' ] && function( v ){ // bad Android
+               'transitionDuration' : X_UA[ 'Android' ] && !X_UA[ 'Chrome' ] && function( v ){ // bad Android
                                return parseFloat( v ) === 0 ? '0.001s' : v;
                        }
                
@@ -760,13 +761,16 @@ var X_Node_CSS_Support = {},
                
        };
 
-X.CSS = {
+/**
+ * @namespace X.CSS
+ */
+X[ 'CSS' ] = {
        
-       VENDER_PREFIX : X_Node_CSS_VENDER_PREFIX,
+       'VENDER_PREFIX' : X_Node_CSS_VENDER_PREFIX,
        // iscroll で使用
-       uncamelize    : X_Node_CSS_uncamelize,
+       'uncamelize'    : X_Node_CSS_uncamelize,
        
-       Support       : X_Node_CSS_Support
+       'Support'       : X_Node_CSS_Support
 };
 
 /*
@@ -848,7 +852,7 @@ X.CSS = {
 
 })();
 
-X_ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_INIT, function(){
+X_ViewPort[ 'listenOnce' ]( X_EVENT_INIT, function(){
        var xnode  = X_Node_systemNode,
                output = X_Node_CSS__UNIT_RATIO,
                list   = 'cm,mm,in,pt,pc'.split( ',' ),
@@ -856,18 +860,18 @@ X_ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_INIT, function(){
        
        for( i = list.length; i; ){
                unit = list[ --i ];
-               output[ unit ] = xnode.css( 'width', 10 + unit ).width() / 10;
+               output[ unit ] = xnode[ 'css' ]( 'width', 10 + unit )[ 'width' ]() / 10;
        };
 
        output = X_Node_CSS__FONT_SIZE_RATIO,
        list   = 'xx-large,x-large,large,larger,medium,small,smaller,x-small,xx-small'.split( ',' );
-       xnode.css( { lineHeight : '100%', height : '1em' } ).text( 'X' );
+       xnode[ 'css' ]( { lineHeight : '100%', height : '1em' } )[ 'text' ]( 'X' );
        
        for( i = list.length; i; ){
                size = list[ --i ];
-               output[ size ] = xnode.css( 'fontSize', size ).height();// / base;
+               output[ size ] = xnode[ 'css' ]( 'fontSize', size )[ 'height' ]();// / base;
        };
        
-       xnode.cssText( '' ).empty();
+       xnode[ 'cssText' ]( '' )[ 'empty' ]();
 });
 
index fccfdb9..b6df535 100644 (file)
@@ -10,7 +10,7 @@ function X_NodeList( v ){
        };\r
 \r
        if( ( l = args.length ) === 1 ) return new Node( args[ 0 ] );\r
-       if( !this || this.append !== X_NodeList.prototype.append ) return new X_NodeList( args );\r
+       if( !this || this[ 'append' ] !== X_NodeList.prototype[ 'append' ] ) return new X_NodeList( args );\r
        \r
        for( i = 0; i < l; ++i ){\r
                xnode = args[ i ];\r
@@ -31,7 +31,7 @@ function X_NodeList( v ){
 };\r
 X_NodeList.prototype.length = 0;\r
 \r
-X_NodeList.prototype.each = function( func /* opt_args... */ ){\r
+X_NodeList.prototype[ 'each' ] = function( func /* opt_args... */ ){\r
        var l = this.length,\r
                i = 0, args;\r
 \r
index 0fd78c9..e7eded4 100644 (file)
@@ -228,7 +228,7 @@ function X_Node_Selector__parse( query, last ){
 };\r
 \r
        // セレクター\r
-       X.Doc.find = X_shortcutFunction = Node.prototype.find = X_NodeList.prototype.find = function ( queryString ){\r
+       X[ 'Doc' ][ 'find' ] = X_shortcutFunction = Node.prototype[ 'find' ] = X_NodeList.prototype[ 'find' ] = function ( queryString ){\r
                var HTML      = X_Node_html,\r
                        scope     = this.constructor === X_NodeList && this.length ? this : [ this.constructor === Node ? this : X_Node_body ],\r
                        parents   = scope, // 探索元の親要素 XNodeList の場合あり\r
@@ -250,8 +250,8 @@ function X_Node_Selector__parse( query, last ){
             links, className, attr, flag;\r
 \r
                /*@+debug[*/\r
-               if( X_ViewPort_readyState < X_Event.XDOM_READY ){\r
-                       alert( 'not ready! use X.ViewPort.listenOnce( X_Event.XDOM_READY, callback )' );\r
+               if( X_ViewPort_readyState < X_EVENT_XDOM_READY ){\r
+                       alert( 'not ready! use X.ViewPort.listenOnce( X_EVENT_XDOM_READY, callback )' );\r
                        return;\r
                };\r
                /*]@+debug*/\r
@@ -319,17 +319,17 @@ function X_Node_Selector__parse( query, last ){
                                // > TagName|*\r
                                case 2 :\r
                                        for( ; i < l; ++i ){\r
-                                               for( xnode = parents[ i ].firstChild(); xnode; xnode = xnode.next() ){\r
-                                                       if( xnode._tag && ( isAll || tagName === xnode._tag ) ) xnodes[ ++n ] = xnode;\r
+                                               for( xnode = parents[ i ][ 'firstChild' ](); xnode; xnode = xnode[ 'next' ]() ){\r
+                                                       if( xnode[ '_tag' ] && ( isAll || tagName === xnode[ '_tag' ] ) ) xnodes[ ++n ] = xnode;\r
                                                };                              \r
                                        };\r
                                        break;\r
                                // + TagName|*\r
                                case 3 :\r
                                        for( ; i < l; ++i ){\r
-                                               for( xnode = parents[ i ].next(); xnode; xnode = xnode.next() ){\r
-                                                       if( xnode._tag ){\r
-                                                               if( isAll || tagName === xnode._tag ) xnodes[ ++n ] = xnode;\r
+                                               for( xnode = parents[ i ][ 'next' ](); xnode; xnode = xnode[ 'next' ]() ){\r
+                                                       if( xnode[ '_tag' ] ){\r
+                                                               if( isAll || tagName === xnode[ '_tag' ] ) xnodes[ ++n ] = xnode;\r
                                                                break;\r
                                                        };                                                                      \r
                                                };                                                              \r
@@ -339,9 +339,9 @@ function X_Node_Selector__parse( query, last ){
                                case 4 :\r
                                        merge  = {};\r
                                        for( ; i < l; ++i ){\r
-                                               for( xnode = parents[ i ].next(); xnode; xnode = xnode.next() ){\r
-                                                       if( xnode._tag && ( isAll || tagName === xnode._tag ) ){\r
-                                                               uid = xnode._uid;\r
+                                               for( xnode = parents[ i ][ 'next' ](); xnode; xnode = xnode[ 'next' ]() ){\r
+                                                       if( xnode[ '_tag' ] && ( isAll || tagName === xnode[ '_tag' ] ) ){\r
+                                                               uid = xnode[ '_uid' ];\r
                                                                if( merge[ uid ] ){\r
                                                                        break;\r
                                                                } else {\r
@@ -360,7 +360,7 @@ function X_Node_Selector__parse( query, last ){
                                                //console.log( l + ' > ' + xnodes.length + ' tag:' + tagName );\r
                                                for( ; i < l; ++i ){\r
                                                        xnode = parents[ i ];\r
-                                                       xnode._xnodes && xnode._xnodes.length && X_Node_Selector__fetchElements( xnodes, xnode, isAll ? null : tagName );\r
+                                                       xnode[ '_xnodes' ] && xnode[ '_xnodes' ].length && X_Node_Selector__fetchElements( xnodes, xnode, isAll ? null : tagName );\r
                                                };\r
                                                //console.log( l + ' >> ' + xnodes.length + ' tag:' + tagName );\r
                                        };\r
@@ -441,7 +441,7 @@ function X_Node_Selector__parse( query, last ){
                                        if( !isXML && key === 'class' && op === 3 ){\r
                                                val = _ + val + _;\r
                                                for( i = 0, n = -1; xnode = xnodes[ i ]; ++i ){\r
-                                                       className = xnode._className;\r
+                                                       className = xnode[ '_className' ];\r
                                                        if( !!( className && ( _ + className + _ ).indexOf( val ) > -1 ) ^ isNot ) tmp[ ++n ] = xnode;\r
                                                };\r
                                        } else {\r
@@ -457,9 +457,9 @@ function X_Node_Selector__parse( query, last ){
                                                for( i = 0, n = -1, l = xnodes.length; i < l; ++i ){\r
                                                        xnode = xnodes[ i ];\r
                                                        attr =\r
-                                                               key === 'id' ? xnode._id :\r
-                                                               key === 'class' ? xnode._className :\r
-                                                               xnode._attrs && xnode._attrs[ key ];\r
+                                                               key === 'id' ? xnode[ '_id' ] :\r
+                                                               key === 'class' ? xnode[ '_className' ] :\r
+                                                               xnode[ '_attrs' ] && xnode[ '_attrs' ][ key ];\r
                                                                //flag_call ?\r
                                                                //      funcAttr( elem, key ) :\r
                                                                //useName ?\r
@@ -518,12 +518,12 @@ function X_Node_Selector__parse( query, last ){
                        for( i = 0, n = -1; i < l; ++i ){\r
                                //alert( 'multi:' + i )\r
                                xnode = ret[ i ];\r
-                               if( !merge[ uid = xnode._uid ] ){\r
+                               if( !merge[ uid = xnode[ '_uid' ] ] ){\r
                                        merge[ uid ] = true;\r
                                        xnodes[ ++n ] = xnode;\r
                                };\r
                        };\r
-                       X_Node_Selector__sortElementOrder( ret = [], xnodes, hasRoot ? [ HTML ] : HTML._xnodes );\r
+                       X_Node_Selector__sortElementOrder( ret = [], xnodes, hasRoot ? [ HTML ] : HTML[ '_xnodes' ] );\r
                        xnodes = ret;\r
                };\r
 \r
@@ -536,8 +536,8 @@ function X_Node_Selector__parse( query, last ){
                        j, child, _xnodes;\r
                for( ; i < l; ++i ){\r
                        child = xnodes[ i ];\r
-                       if( !child._tag ) continue;\r
-                       //console.log( child._tag );\r
+                       if( !child[ '_tag' ] ) continue;\r
+                       //console.log( child[ '_tag' ] );\r
                        if( ( j = list.indexOf( child ) ) !== -1 ){\r
                                newList[ newList.length ] = child;\r
                                list.splice( j, 1 );\r
@@ -548,23 +548,23 @@ function X_Node_Selector__parse( query, last ){
                                };\r
                                if( list.length === 0 ) return true;\r
                        };\r
-                       if( ( _xnodes = child._xnodes ) && X_Node_Selector__sortElementOrder( newList, list, _xnodes ) ){\r
+                       if( ( _xnodes = child[ '_xnodes' ] ) && X_Node_Selector__sortElementOrder( newList, list, _xnodes ) ){\r
                                return true;\r
                        };\r
                };\r
        };\r
        \r
        function X_Node_Selector__fetchElements( list, parent, tag ){\r
-               var xnodes = parent._xnodes,\r
+               var xnodes = parent[ '_xnodes' ],\r
                        l      = xnodes.length,\r
                        i      = 0,\r
                        child;\r
                for( ; i < l; ++i ){\r
                        child = xnodes[ i ];\r
-                       if( child._tag ){\r
-                               ( !tag || child._tag === tag ) && ( list[ list.length ] = child );\r
-                               //console.log( parent._tag + ' > ' + child._tag + ' == ' + tag+ ' l:' + list.length );\r
-                               child._xnodes && child._xnodes.length && X_Node_Selector__fetchElements( list, child, tag );\r
+                       if( child[ '_tag' ] ){\r
+                               ( !tag || child[ '_tag' ] === tag ) && ( list[ list.length ] = child );\r
+                               //console.log( parent[ '_tag' ] + ' > ' + child[ '_tag' ] + ' == ' + tag+ ' l:' + list.length );\r
+                               child[ '_xnodes' ] && child[ '_xnodes' ].length && X_Node_Selector__fetchElements( list, child, tag );\r
                        };\r
                };\r
        };\r
@@ -575,19 +575,19 @@ function X_Node_Selector__parse( query, last ){
                        i = 0, n = -1, xnode, node,\r
                        tagName, tmp;\r
                for( ; xnode = xnodes[ i ]; ++i ){\r
-                       tagName = flag_all || xnode._tag;\r
+                       tagName = flag_all || xnode[ '_tag' ];\r
                        tmp     = null;\r
                        if( /* tmp === null && */ type <= 0 ){\r
-                               for( node = xnode.prev(); node; node = node.prev() ){\r
-                                       if( node._tag && ( flag_all || tagName === node._tag ) ){\r
+                               for( node = xnode[ 'prev' ](); node; node = node[ 'prev' ]() ){\r
+                                       if( node[ '_tag' ] && ( flag_all || tagName === node[ '_tag' ] ) ){\r
                                                tmp = false;\r
                                                break;\r
                                        };\r
                                };\r
                        };\r
                        if( tmp === null && 0 <= type ){\r
-                               for( node = xnode.next(); node; node = node.next() ){\r
-                                       if( node._tag && ( flag_all || tagName === node._tag ) ){\r
+                               for( node = xnode[ 'next' ](); node; node = node[ 'next' ]() ){\r
+                                       if( node[ '_tag' ] && ( flag_all || tagName === node[ '_tag' ] ) ){\r
                                                tmp = false;\r
                                                break;\r
                                        };              \r
@@ -606,13 +606,13 @@ function X_Node_Selector__parse( query, last ){
                        i = 0, n = -1, uid,\r
                        c, xnode, tmp, node, tagName;\r
                for( ; xnode = xnodes[ i ]; ++i ){\r
-                       uid = xnode._uid;\r
+                       uid = xnode[ '_uid' ];\r
                        tmp = checked[ uid ];\r
                        if( tmp === void 0 ){\r
-                               for( c = 0, node = xnode.parent[ pointer ](), tagName = flag_all || xnode._tag; node; node = node[ sibling ]() ){\r
-                                       if( node._tag && ( flag_all || tagName === node._tag ) ){\r
+                               for( c = 0, node = xnode.parent[ pointer ](), tagName = flag_all || xnode[ '_tag' ]; node; node = node[ sibling ]() ){\r
+                                       if( node[ '_tag' ] && ( flag_all || tagName === node[ '_tag' ] ) ){\r
                                                ++c;\r
-                                               checked[ node._uid ] = a === 0 ? c === b : (c - b) % a === 0 && (c - b) / a >= 0;\r
+                                               checked[ node[ '_uid' ] ] = a === 0 ? c === b : (c - b) % a === 0 && (c - b) / a >= 0;\r
                                        };                                                      \r
                                };\r
                                tmp = checked[ uid ];\r
@@ -626,23 +626,23 @@ function X_Node_Selector__parse( query, last ){
                        flag_not = flag ? flags.not : !flags.not,\r
                        i = 0, n = -1, xnode;\r
                for( ; xnode = xnodes[ i ]; ++i ){\r
-                       if( xnode._attrs && xnode._attrs[ prop ] ^ flag_not ) res[ ++n ] = xnode;\r
+                       if( xnode[ '_attrs' ] && xnode[ '_attrs' ][ prop ] ^ flag_not ) res[ ++n ] = xnode;\r
                };\r
                return res;\r
        };\r
 \r
 var X_Node_Selector__filter = {\r
-       root : function( elem ){\r
+       'root' : function( elem ){\r
                return elem === ( elem.ownerDocument || elem.document ).documentElement;\r
        },\r
-       target : {\r
+       'target' : {\r
                m : function( flags, xnodes ){\r
                        var res  = [],\r
                                hash = location.hash.slice( 1 ),\r
                                flag_not = flags.not,\r
                                i = 0, n = -1, xnode;\r
                        for ( ; xnode = xnodes[ i ]; ++i ){\r
-                               if( ( ( xnode._id || xnode._attrs && xnode._attrs.name ) === hash ) ^ flag_not ) res[ ++n ] = xnode;                                            \r
+                               if( ( ( xnode[ '_id' ] || xnode[ '_attrs' ] && xnode[ '_attrs' ][ 'name' ] ) === hash ) ^ flag_not ) res[ ++n ] = xnode;                                                \r
                        };\r
                        return res;\r
                }\r
@@ -677,15 +677,15 @@ var X_Node_Selector__filter = {
        'nth-last-of-type' : {\r
                m : function( flags, xnodes, a, b ){ return X_Node_Selector__funcSelectorNth( 'lastChild', 'prev', false, flags, xnodes, a, b ); }\r
        },\r
-       empty : {\r
+       'empty' : {\r
                m : function( flags, xnodes ){\r
                        var res = [],\r
                                flag_not = flags.not,\r
                                i = 0, n = -1, xnode, tmp, node;\r
                        for( ; xnode = xnodes[i]; ++i ){\r
                                tmp = true;\r
-                               for( node = xnode.firstChild(); node; node = node.nextSibling() ){\r
-                                       if( node._tag || ( !node._tag && node._text ) ){\r
+                               for( node = xnode[ 'firstChild' ](); node; node = node.nextSibling() ){\r
+                                       if( node[ '_tag' ] || node[ '_text' ] ){\r
                                                tmp = false;\r
                                                break;\r
                                        };                              \r
@@ -695,25 +695,24 @@ var X_Node_Selector__filter = {
                        return res;\r
                }\r
        },\r
-       link : {\r
+       'link' : {\r
                m : function( flags, xnodes ){\r
-                       var links = ( xnodes[ 0 ].ownerDocument || xnodes[ 0 ].document ).links,\r
-                               _data = funcData,\r
+                       var links = document.links,\r
                                res   = [],\r
                                checked, flag_not, i, link, xnode, n;\r
                        if( !links ) return res;\r
                        checked = {};\r
                        flag_not = flags.not;\r
                        for( i = 0; link = links[ i ]; ++i ){\r
-                               checked[ ( new Node( link ) )._uid ] = true;\r
+                               checked[ ( new Node( link ) )[ '_uid' ] ] = true;\r
                        };\r
                        for( i = 0, n = -1; xnode = xnodes[ i ]; ++i ){\r
-                               if( checked[ xnode._uid ] ^ flag_not ) res[ ++n ] = xnode;\r
+                               if( checked[ xnode[ '_uid' ] ] ^ flag_not ) res[ ++n ] = xnode;\r
                        };\r
                        return res;\r
                }\r
        },\r
-       lang : {\r
+       'lang' : {\r
                m : function( flags, xnodes, arg ){\r
                        var res = [],\r
                                //reg = new RegExp('^' + arg, 'i'),\r
@@ -721,7 +720,7 @@ var X_Node_Selector__filter = {
                                i = 0, n = -1, xnode, tmp, lang;\r
                        arg = arg.toLowerCase();\r
                        for( ; tmp = xnode = xnodes[ i ]; ++i ){\r
-                               while( tmp && !( lang = tmp._attrs && tmp._attrs[ 'lang' ] ) ){\r
+                               while( tmp && !( lang = tmp[ '_attrs' ] && tmp[ '_attrs' ][ 'lang' ] ) ){\r
                                        tmp = tmp.parent;\r
                                };\r
                                //tmp = !!(tmp && reg.test(tmp.getAttribute('lang')));\r
@@ -730,22 +729,22 @@ var X_Node_Selector__filter = {
                        return res;\r
                }\r
        },\r
-       enabled : {\r
+       'enabled' : {\r
                m : function( flags, xnodes ){ return X_Node_Selector__funcSelectorProp( 'disabled', false, flags, xnodes ); }\r
        },\r
-       disabled : {\r
+       'disabled' : {\r
                m : function( flags, xnodes ){ return X_Node_Selector__funcSelectorProp( 'disabled', true, flags, xnodes ); }\r
        },\r
-       checked : {\r
+       'checked' : {\r
                m : function( flags, xnodes ){ return X_Node_Selector__funcSelectorProp( 'checked', true, flags, xnodes ); }\r
        },\r
-       contains : {\r
+       'contains' : {\r
                m : function( flags, xnodes, arg ){\r
                        var res = [],\r
                                flag_not = flags.not,\r
                                i = 0, n = -1, xnode;\r
                        for( ; xnode = xnodes[ i ]; ++i ){\r
-                               if ( ( -1 < ( xnode.text() ).indexOf( arg ) ) ^ flag_not ) res[ ++n ] = xnode;                                          \r
+                               if ( ( -1 < ( xnode[ 'text' ]() ).indexOf( arg ) ) ^ flag_not ) res[ ++n ] = xnode;                                             \r
                        };\r
                        return res;\r
                }\r
index 2aff37d..b41eda9 100644 (file)
@@ -127,7 +127,7 @@ var X_HTMLParser_CHARS = {
                        \r
                        if( async && startTime + 15 <= X_Timer_now() && html ){\r
                                handler.progress( 1 - html.length / async[ 0 ] );\r
-                               X.Timer.once( 0, X_HTMLParser_exec, [ html, handler, async ] );\r
+                               X_Timer_once( 0, X_HTMLParser_exec, [ html, handler, async ] );\r
                                return;\r
                        };\r
                        \r
@@ -318,7 +318,7 @@ var X_HTMLParser_htmlStringToXNode = {
                        l      = nest.length,\r
                        attr, name, i, _attrs; //, toIndex;\r
                if( l ){\r
-                       xnode = nest[ l - 1 ].create( tagName );\r
+                       xnode = nest[ l - 1 ][ 'create' ]( tagName );\r
                } else {\r
                        xnode = flat[ flat.length ] = X_Doc_create( tagName );\r
                };\r
@@ -344,12 +344,12 @@ var X_HTMLParser_htmlStringToXNode = {
        },\r
        chars : function( text ){\r
                if( X_HTMLParser_htmlStringToXNode.nest.length ){\r
-                       X_HTMLParser_htmlStringToXNode.nest[ X_HTMLParser_htmlStringToXNode.nest.length - 1 ].createText( text );\r
+                       X_HTMLParser_htmlStringToXNode.nest[ X_HTMLParser_htmlStringToXNode.nest.length - 1 ][ 'createText' ]( text );\r
                } else {\r
                        X_HTMLParser_htmlStringToXNode.flat[ X_HTMLParser_htmlStringToXNode.flat.length ] = X_Doc_createText( text );\r
                };\r
        },\r
-       comment : X.emptyFunction\r
+       comment : X_emptyFunction\r
 };\r
 \r
 function X_HtmlParser_parse( html, ignoreError ){\r
@@ -366,27 +366,27 @@ function X_HtmlParser_parse( html, ignoreError ){
 var X_HTMLParser_asyncHtmlStringToXNode = {\r
        err : function( html ){\r
                X_HTMLParser_htmlStringToXNode.err( html );\r
-               this.asyncDispatch( X_Event.ERROR );\r
+               this[ 'asyncDispatch' ]( X_EVENT_ERROR );\r
        },\r
        start   : X_HTMLParser_htmlStringToXNode.start,\r
        end     : X_HTMLParser_htmlStringToXNode.end,\r
        chars   : X_HTMLParser_htmlStringToXNode.chars,\r
-       comment : X.emptyFunction,\r
+       comment : X_emptyFunction,\r
        \r
        progress : function( pct ){\r
-               this.asyncDispatch( { type : X_Event.PROGRESS, percent : pct } );\r
+               this[ 'asyncDispatch' ]( { type : X_EVENT_PROGRESS, percent : pct } );\r
        },\r
        complete : function(){\r
                var ret = X_HTMLParser_htmlStringToXNode.flat;\r
                delete X_HTMLParser_htmlStringToXNode.flat;\r
-               this.asyncDispatch( { type : X_Event.SUCCESS, xnodes : ret } );\r
+               this[ 'asyncDispatch' ]( { type : X_EVENT_SUCCESS, xnodes : ret } );\r
        }\r
 };\r
 \r
 function X_HTMLParser_asyncParse( html, ignoreError ){\r
-       var dispatcher = X_Class_override( new X.EventDispatcher(), X_HTMLParser_asyncHtmlStringToXNode ),\r
+       var dispatcher = X_Class_override( X_EventDispatcher(), X_HTMLParser_asyncHtmlStringToXNode ),\r
                worker = X_HTMLParser_htmlStringToXNode;\r
-       dispatcher.listenOnce( X_Event.SUCCESS, dispatcher, dispatcher.kill );\r
+       dispatcher[ 'listenOnce' ]( X_EVENT_SUCCESS, dispatcher, dispatcher.kill );\r
        worker.flat = [];\r
        worker.nest.length = 0;\r
        worker.ignoreError = ignoreError;\r
index 06e0d70..ebdb856 100644 (file)
@@ -85,9 +85,9 @@ var X_Node_ANIMATIONS            = [],
  * TODO : filter\r
  * TODO 前回位置からの継続\r
  */\r
-Node.prototype.animate = function( start, dest, duration, easing, wait ){\r
-       var isNew = !this._anime,\r
-               obj   = this._anime || ( this._anime = {} );\r
+Node.prototype[ 'animate' ] = function( start, dest, duration, easing, wait ){\r
+       var isNew = !this[ '_anime' ],\r
+               obj   = this[ '_anime' ] || ( this[ '_anime' ] = {} );\r
        \r
        obj.duration  = 0 <= duration && X_Type_isFinite( duration ) ? duration : 500;\r
        obj.easing    = ease[ easing ] || ease.circular;\r
@@ -115,7 +115,7 @@ Node.prototype.animate = function( start, dest, duration, easing, wait ){
        if( X_Node_Anime_hasTransition ){\r
                \r
                if( obj.gpuTimerID ){\r
-                       X.Timer.remove( obj.gpuTimerID );\r
+                       X_Timer_remove( obj.gpuTimerID );\r
                        delete obj.gpuTimerID;\r
                };              \r
                \r
@@ -123,19 +123,19 @@ Node.prototype.animate = function( start, dest, duration, easing, wait ){
                \r
                X_Node_Anime_reserveUpdate( true );\r
        } else {\r
-               X_System.unlisten( X_Event.UPDATED, X_Node_Anime_updateAnimationsNoTransition );\r
-               X_Node_Anime_updateTimerID || ( X_Node_Anime_updateTimerID = X.Timer.requestFrame( X_Node_Anime_updateAnimationsNoTransition ) );\r
+               X_System[ 'unlisten' ]( X_EVENT_UPDATED, X_Node_Anime_updateAnimationsNoTransition );\r
+               X_Node_Anime_updateTimerID || ( X_Node_Anime_updateTimerID = X_Timer_requestFrame( X_Node_Anime_updateAnimationsNoTransition ) );\r
                \r
-               isNew && this.dispatch( { type : X_Event.ANIME_START, gpu : false } );\r
+               isNew && this[ 'dispatch' ]( { type : X_EVENT_ANIME_START, gpu : false } );\r
        };\r
        \r
-       console.log( 'animate ' + this._id + ' y:' + obj.startX + ' > ' + obj.destX + ' d:' + obj.duration );\r
+       console.log( 'animate ' + this[ '_id' ] + ' y:' + obj.startX + ' > ' + obj.destX + ' d:' + obj.duration );\r
        \r
        return this;\r
 };\r
 \r
-Node.prototype.stop = function(){\r
-       var obj = this._anime;\r
+Node.prototype[ 'stop' ] = function(){\r
+       var obj = this[ '_anime' ];\r
        if( !obj ) return;\r
        if( X_Node_Anime_hasTransition ){\r
                obj.phase = 100;\r
@@ -143,8 +143,8 @@ Node.prototype.stop = function(){
                X_Node_Anime_reserveUpdate();\r
        } else {\r
                X_Node_ANIMATIONS.splice( X_Node_ANIMATIONS.indexOf( this ), 1 );\r
-               //obj.gpuTimerID && X.Timer.remove( obj.gpuTimerID );\r
-               delete this._anime;             \r
+               //obj.gpuTimerID && X_Timer_remove( obj.gpuTimerID );\r
+               delete this[ '_anime' ];                \r
        };\r
        return this;\r
 };\r
@@ -156,14 +156,14 @@ function X_Node_Anime_reserveUpdate( before ){
                if( X_Node_updateTimerID ){\r
                        console.log( before ? '> BEFORE_UPDATE' : '> UPDATED' );\r
                        before = false;\r
-                       X_System.listenOnce( before ? X_Event.BEFORE_UPDATE : X_Event.UPDATED, X_Node_Anime_updateAnimations );\r
+                       X_System[ 'listenOnce' ]( before ? X_EVENT_BEFORE_UPDATE : X_EVENT_UPDATED, X_Node_Anime_updateAnimations );\r
                } else {\r
                        console.log( '> Timer' );\r
                        // Opera12 requestAnimationFrame では transition が動かない、、、\r
                        X_Node_Anime_updateTimerID =\r
                                X_UA[ 'Opera' ] ?\r
-                                       X.Timer.once( 0, X_Node_Anime_updateAnimations ) :\r
-                                       X.Timer.requestFrame( X_Node_Anime_updateAnimations );                  \r
+                                       X_Timer_once( 0, X_Node_Anime_updateAnimations ) :\r
+                                       X_Timer_requestFrame( X_Node_Anime_updateAnimations );                  \r
                };\r
        };\r
 };\r
@@ -179,12 +179,12 @@ function X_Node_Anime_updateAnimations( v, updateNow ){
        \r
        for( ; i; ){\r
                xnode = X_Node_ANIMATIONS[ --i ];\r
-               //console.log( 'phase : ' + xnode._id + ' ' + xnode._anime.phase + ' ' + xnode._anime.duration );\r
+               //console.log( 'phase : ' + xnode[ '_id' ] + ' ' + xnode[ '_anime' ].phase + ' ' + xnode[ '_anime' ].duration );\r
                ret = X_Node_Anime_updateAnimation( xnode );\r
                if( ret === true ){\r
                        X_Node_ANIMATIONS.splice( i, 1 );\r
-                       xnode._anime.gpuTimerID && X.Timer.remove( xnode._anime.gpuTimerID );\r
-                       delete xnode._anime;\r
+                       xnode[ '_anime' ].gpuTimerID && X_Timer_remove( xnode[ '_anime' ].gpuTimerID );\r
+                       delete xnode[ '_anime' ];\r
                } else\r
                if( ret !== false ){\r
                        c = true;\r
@@ -200,7 +200,7 @@ function X_Node_Anime_updateAnimations( v, updateNow ){
        };\r
 };\r
 \r
-// TODO X.Timer.requestFrame 経由の BEFORE_UPDATE で更新を行う\r
+// TODO X_Timer_requestFrame 経由の BEFORE_UPDATE で更新を行う\r
 function X_Node_Anime_detectAnimationLayers(){\r
        var i = X_Node_ANIMATIONS.length,\r
                l = i,\r
@@ -215,44 +215,44 @@ function X_Node_Anime_detectAnimationLayers(){
                        if( xnode.parent === _xnode.parent ){\r
                                continue;\r
                        } else\r
-                       if( _xnode.contains( xnode ) ){\r
-                               if( ( _xnode._anime.phase === 3 && _xnode._anime.gpuParent ) || _xnode._anime.phase === 10 ){\r
-                                       _xnode._anime.phase = 15;\r
+                       if( _xnode[ 'contains' ]( xnode ) ){\r
+                               if( ( _xnode[ '_anime' ].phase === 3 && _xnode[ '_anime' ].gpuParent ) || _xnode[ '_anime' ].phase === 10 ){\r
+                                       _xnode[ '_anime' ].phase = 15;\r
                                } else\r
-                               if( xnode._anime.gpuParent ){\r
+                               if( xnode[ '_anime' ].gpuParent ){\r
                                        parent = true;\r
-                                       xnode._anime.phase = xnode._anime.phase === 2 ? 6 : 15;// GPU レイヤーの解除 > アニメーションは継続, すでに終了フェイズなら破棄\r
+                                       xnode[ '_anime' ].phase = xnode[ '_anime' ].phase === 2 ? 6 : 15;// GPU レイヤーの解除 > アニメーションは継続, すでに終了フェイズなら破棄\r
                                } else\r
-                               if( [ 7, 8, 9, 13, 14 ].indexOf( xnode._anime.phase ) !== -1 ){// GPU レイヤーの中止\r
+                               if( [ 7, 8, 9, 13, 14 ].indexOf( xnode[ '_anime' ].phase ) !== -1 ){// GPU レイヤーの中止\r
                                        parent = true;\r
-                                       xnode._anime.phase -= 8;\r
+                                       xnode[ '_anime' ].phase -= 8;\r
                                };\r
                                break;\r
                        } else\r
-                       if( xnode.contains( _xnode ) ){\r
-                               if( ( xnode._anime.phase === 3 && xnode._anime.gpuParent ) || xnode._anime.phase === 10 ){\r
-                                       xnode._anime.phase = 15;\r
+                       if( xnode[ 'contains' ]( _xnode ) ){\r
+                               if( ( xnode[ '_anime' ].phase === 3 && xnode[ '_anime' ].gpuParent ) || xnode[ '_anime' ].phase === 10 ){\r
+                                       xnode[ '_anime' ].phase = 15;\r
                                } else\r
-                               if( _xnode._anime.gpuParent ){\r
+                               if( _xnode[ '_anime' ].gpuParent ){\r
                                        hasGPUChild = true;\r
-                                       _xnode._anime.phase = _xnode._anime.phase === 2 ? 6 : 15;// GPU レイヤーの解除 > アニメーションは継続, すでに終了フェイズなら破棄\r
+                                       _xnode[ '_anime' ].phase = _xnode[ '_anime' ].phase === 2 ? 6 : 15;// GPU レイヤーの解除 > アニメーションは継続, すでに終了フェイズなら破棄\r
                                } else\r
-                               if( [ 7, 8, 9, 13, 14 ].indexOf( _xnode._anime.phase ) !== -1 ){// GPU レイヤーの中止\r
+                               if( [ 7, 8, 9, 13, 14 ].indexOf( _xnode[ '_anime' ].phase ) !== -1 ){// GPU レイヤーの中止\r
                                        hasGPUChild = true;\r
-                                       _xnode._anime.phase -= 8;\r
+                                       _xnode[ '_anime' ].phase -= 8;\r
                                };\r
                                break;\r
                        };\r
                };\r
                \r
-               if( !parent && xnode._anime.phase !== 15 ){\r
-                       if( xnode._anime.phase === 0 ){\r
+               if( !parent && xnode[ '_anime' ].phase !== 15 ){\r
+                       if( xnode[ '_anime' ].phase === 0 ){\r
                                // 新規\r
-                               xnode._anime.phase = hasGPUChild ? 7 : 8;// 非GPU -> GPU 子に GPU アニメをもつなら、タイミングをずらす。\r
+                               xnode[ '_anime' ].phase = hasGPUChild ? 7 : 8;// 非GPU -> GPU 子に GPU アニメをもつなら、タイミングをずらす。\r
                        } else\r
-                       if( [ 3, 4, 10, 100 ].indexOf( xnode._anime.phase ) === -1 ){\r
+                       if( [ 3, 4, 10, 100 ].indexOf( xnode[ '_anime' ].phase ) === -1 ){\r
                                // 非GPU -> GPU\r
-                               xnode._anime.phase = hasGPUChild ? 13 : 14;// 非GPU -> GPU 子に GPU アニメをもつなら、タイミングをずらす。\r
+                               xnode[ '_anime' ].phase = hasGPUChild ? 13 : 14;// 非GPU -> GPU 子に GPU アニメをもつなら、タイミングをずらす。\r
                        };\r
                };\r
        };\r
@@ -264,7 +264,7 @@ function X_Node_Anime_detectAnimationLayers(){
  * 0:無, 1:子のGPU解除待 2:GPU予約, 3:GPU now!, 4:GPU解除予約\r
  */\r
 function X_Node_Anime_updateAnimation( xnode ){\r
-       var obj   = xnode._anime,\r
+       var obj   = xnode[ '_anime' ],\r
                phase = obj.phase,\r
                current, time;\r
        switch( phase ){\r
@@ -278,9 +278,9 @@ function X_Node_Anime_updateAnimation( xnode ){
                        break;\r
                case  0 : // 開始位置+アニメーションの設定 \r
                case  8 :\r
-                       X_ViewPort.unlisten( X_Event.AFTER_UPDATE, xnode, X_Node_Anime_gpuReleased );\r
+                       X_ViewPort[ 'unlisten' ]( X_EVENT_AFTER_UPDATE, xnode, X_Node_Anime_gpuReleased );\r
                        \r
-                       xnode.css({\r
+                       xnode[ 'css' ]({\r
                                //willChange               : X_Node_Anime_transitionProps + ',opacity,width,height',\r
                                backfaceVisibility       : 'hidden',\r
                                transitionTimingFunction : obj.easing.style,\r
@@ -290,16 +290,16 @@ function X_Node_Anime_updateAnimation( xnode ){
                        console.log( '開始位置 ' + phase );\r
                        X_Node_Anime_updatePosition( xnode, obj.startX, obj.startY, obj.startA, phase === 8 );\r
                        \r
-                       xnode.dispatch( { type : X_Event.ANIME_START, gpu : phase === 8 } );\r
+                       xnode[ 'dispatch' ]( { type : X_EVENT_ANIME_START, gpu : phase === 8 } );\r
                        ++obj.phase;\r
                        break;\r
                case  1 :\r
                case  9 : // 終了位置の設定\r
                        obj.gpuParent = phase === 9;\r
                        if( obj.duration ){\r
-                               xnode.listenOnce( 'transitionend', X_Node_Anime_onTransitionEnd );\r
+                               xnode[ 'listenOnce' ]( 'transitionend', X_Node_Anime_onTransitionEnd );\r
                        \r
-                               xnode.css({\r
+                               xnode[ 'css' ]({\r
                                        transitionProperty : X_Node_Anime_transitionProps + ',opacity,width,height',\r
                                        transitionDuration : obj.duration + 'ms'\r
                                });\r
@@ -316,7 +316,7 @@ function X_Node_Anime_updateAnimation( xnode ){
                        obj.phase = obj.gpuParent ? 10 : 4;\r
                        // このタイミングで animation 関連の css を削除したところ(X_Node_Anime_clearTransition)、iOS3、4 で再描画忘れが度々起きるように、、、\r
                        if( !obj.gpuParent ) X_Node_Anime_clearTransition( xnode );\r
-                       xnode.dispatch( { type : X_Event.ANIME_END, gpu : obj.gpuParent } );\r
+                       xnode[ 'dispatch' ]( { type : X_EVENT_ANIME_END, gpu : obj.gpuParent } );\r
                        break;\r
 \r
                case 4 :\r
@@ -329,7 +329,7 @@ function X_Node_Anime_updateAnimation( xnode ){
                        //X_Node_Anime_clearTransition( xnode ); // TODO X_Node_Anime_releaseGPULayer に移動?\r
                        if( !obj.gpuTimerID ){\r
                                if( obj.wait ){\r
-                                       obj.gpuTimerID = X.Timer.once( obj.wait, xnode, X_Node_Anime_releaseGPULayer );\r
+                                       obj.gpuTimerID = X_Timer_once( obj.wait, xnode, X_Node_Anime_releaseGPULayer );\r
                                } else {\r
                                        X_Node_Anime_releaseGPULayer.call( xnode );\r
                                };\r
@@ -351,7 +351,7 @@ function X_Node_Anime_updateAnimation( xnode ){
                                X_Node_Anime_clearTransition( xnode );\r
                                X_Node_Anime_updatePosition( xnode, obj.destX, obj.destY, obj.destA, phase === 14 );\r
                                obj.phase = phase === 14 ? 10 : 4;\r
-                               xnode.dispatch( { type : X_Event.ANIME_END, gpu : obj.gpuParent } );\r
+                               xnode[ 'dispatch' ]( { type : X_EVENT_ANIME_END, gpu : obj.gpuParent } );\r
                        } else {\r
                                current = X_Node_Anime_getComputedPosition( xnode );\r
                                obj.startX    = current.x;\r
@@ -366,12 +366,12 @@ function X_Node_Anime_updateAnimation( xnode ){
                \r
                case 15 :\r
                        // GPU有効で停止(待機)している xnode の解除\r
-                       //console.log( 'GPU有効で停止(待機)している xnode の解除' + xnode._tag + xnode.getOrder() );\r
+                       //console.log( 'GPU有効で停止(待機)している xnode の解除' + xnode[ '_tag' ] + xnode[ 'getOrder' ]() );\r
                        console.log( 'GPU有効で停止(待機)している xnode のGPU解除' );\r
                        X_Node_Anime_clearTransition( xnode );\r
                        X_Node_Anime_updatePosition( xnode, obj.destX, obj.destY, obj.destA, false );\r
-                       obj.gpuTimerID && X.Timer.remove( obj.gpuTimerID );\r
-                       X_ViewPort.listenOnce( X_Event.AFTER_UPDATE, xnode, X_Node_Anime_gpuReleased );\r
+                       obj.gpuTimerID && X_Timer_remove( obj.gpuTimerID );\r
+                       X_ViewPort[ 'listenOnce' ]( X_EVENT_AFTER_UPDATE, xnode, X_Node_Anime_gpuReleased );\r
                        return true;\r
                \r
                case 100 : // stop() : アニメーションを中断して削除\r
@@ -388,7 +388,7 @@ function X_Node_Anime_updateAnimation( xnode ){
 };\r
 \r
 function X_Node_Anime_getComputedPosition( that ) {\r
-       var matrix = X_node_CSS_getComputedStyle( that._rawObject, null ),\r
+       var matrix = X_Node_CSS_getComputedStyle( that[ '_rawObject' ], null ),\r
                x, y;\r
 \r
        if ( X_Node_Anime_hasTransform ) {\r
@@ -404,13 +404,13 @@ function X_Node_Anime_getComputedPosition( that ) {
 };\r
 \r
 function X_Node_Anime_onTransitionEnd( e ){\r
-       if( !this._anime || this._anime.phase !== 2 ) return X.Callback.PREVENT_DEFAULT | X.Callback.STOP_PROPAGATION;\r
-       this._anime.phase = 3;\r
+       if( !this[ '_anime' ] || this[ '_anime' ].phase !== 2 ) return X_Callback_PREVENT_DEFAULT | X_Callback_STOP_PROPAGATION;\r
+       this[ '_anime' ].phase = 3;\r
        \r
        console.log( 'トランジション終了' );\r
        \r
        X_Node_Anime_onTransition = true;\r
-       this.dispatch( { type : X_Event.ANIME_END, gpu : this._anime.gpuParent } );\r
+       this[ 'dispatch' ]( { type : X_EVENT_ANIME_END, gpu : this[ '_anime' ].gpuParent } );\r
        X_Node_Anime_onTransition = false;\r
        \r
        X_Node_Anime_needsDetection = true;\r
@@ -418,11 +418,11 @@ function X_Node_Anime_onTransitionEnd( e ){
        // win+Gecko は不可\r
        X_Node_Anime_updateAnimations( 0, X_Node_updateOnTransitionEnd );\r
        \r
-       return X.Callback.PREVENT_DEFAULT | X.Callback.STOP_PROPAGATION;\r
+       return X_Callback_PREVENT_DEFAULT | X_Callback_STOP_PROPAGATION;\r
 };\r
 \r
 function X_Node_Anime_releaseGPULayer(){\r
-       var obj = this._anime, tmp;\r
+       var obj = this[ '_anime' ], tmp;\r
        if( !obj ){\r
                console.log( '_anime無' );\r
                return;\r
@@ -431,24 +431,24 @@ function X_Node_Anime_releaseGPULayer(){
        X_Node_Anime_updatePosition( this, obj.destX, obj.destY, obj.destA, false );\r
        X_Node_ANIMATIONS.splice( X_Node_ANIMATIONS.indexOf( this ), 1 );\r
        delete obj.gpuTimerID;\r
-       delete this._anime;\r
+       delete this[ '_anime' ];\r
        console.log( 'GPUレイヤーの破棄を指示' );\r
        \r
-       X_ViewPort.listenOnce( X_Event.AFTER_UPDATE, this, X_Node_Anime_gpuReleased );\r
+       X_ViewPort[ 'listenOnce' ]( X_EVENT_AFTER_UPDATE, this, X_Node_Anime_gpuReleased );\r
 };\r
 \r
 function X_Node_Anime_gpuReleased(){\r
        console.log( 'GPU レイヤーが解放されました' );\r
-       this.dispatch( { type : X_Event.GPU_RELEASED, gpu : true } );\r
+       this[ 'dispatch' ]( { type : X_EVENT_GPU_RELEASED, gpu : true } );\r
 };\r
 \r
 function X_Node_Anime_clearTransition( xnode ){\r
        // 開始座標のセット(新規のみ)\r
        // アニメーション指定のセット(または解除)(対象のみ)\r
        // 目標座標のセット\r
-       xnode.unlisten( 'transitionend', X_Node_Anime_onTransitionEnd );\r
+       xnode[ 'unlisten' ]( 'transitionend', X_Node_Anime_onTransitionEnd );\r
 \r
-       xnode.css({\r
+       xnode[ 'css' ]({\r
                //willChange               : '',\r
                backfaceVisibility       : '',\r
                transitionTimingFunction : '',\r
@@ -460,12 +460,12 @@ function X_Node_Anime_clearTransition( xnode ){
 function X_Node_Anime_updatePosition( xnode, x, y, opacity, useGPU ){\r
        //console.log( 'y : ' + y + ' gpu : ' + !!useGPU );\r
        if( X_Node_Anime_hasTransform ){\r
-               xnode.css({\r
+               xnode[ 'css' ]({\r
                        transform : 'translate(' + ( x | 0 ) + 'px,' + ( y | 0 ) + 'px)' + ( useGPU ? X_Node_Anime_translateZ : '' ),\r
                        opacity   : opacity\r
                });\r
        } else {\r
-               xnode.css({\r
+               xnode[ 'css' ]({\r
                        left    : ( x | 0 ) + 'px',\r
                        top     : ( y | 0 ) + 'px',\r
                        opacity : opacity\r
@@ -474,22 +474,22 @@ function X_Node_Anime_updatePosition( xnode, x, y, opacity, useGPU ){
 \r
        if( X_Node_Anime_translateZ ){\r
                if( useGPU ){\r
-                       if( xnode._flags & X_Node_State.GPU_RELEASE_RESERVED ){\r
-                               xnode._flags &= X_Node_BitMask_RESET_GPU;\r
-                               xnode._flags |= X_Node_State.GPU_NOW;\r
+                       if( xnode[ '_flags' ] & X_Node_State.GPU_RELEASE_RESERVED ){\r
+                               xnode[ '_flags' ] &= X_Node_BitMask_RESET_GPU;\r
+                               xnode[ '_flags' ] |= X_Node_State.GPU_NOW;\r
                        } else\r
-                       if( xnode._flags & X_Node_State.GPU_NOW ){\r
+                       if( xnode[ '_flags' ] & X_Node_State.GPU_NOW ){\r
                        } else {\r
-                               xnode._flags &= X_Node_BitMask_RESET_GPU;\r
-                               xnode._flags |= X_Node_State.GPU_RESERVED;\r
+                               xnode[ '_flags' ] &= X_Node_BitMask_RESET_GPU;\r
+                               xnode[ '_flags' ] |= X_Node_State.GPU_RESERVED;\r
                        };\r
                } else {\r
-                       if( xnode._flags & X_Node_State.GPU_NOW ){\r
-                               xnode._flags &= X_Node_BitMask_RESET_GPU;\r
-                               xnode._flags |= X_Node_State.GPU_RELEASE_RESERVED;                      \r
+                       if( xnode[ '_flags' ] & X_Node_State.GPU_NOW ){\r
+                               xnode[ '_flags' ] &= X_Node_BitMask_RESET_GPU;\r
+                               xnode[ '_flags' ] |= X_Node_State.GPU_RELEASE_RESERVED;                 \r
                        } else\r
-                       if( xnode._flags & X_Node_State.GPU_RESERVED ){\r
-                               xnode._flags &= X_Node_BitMask_RESET_GPU;\r
+                       if( xnode[ '_flags' ] & X_Node_State.GPU_RESERVED ){\r
+                               xnode[ '_flags' ] &= X_Node_BitMask_RESET_GPU;\r
                        };\r
                };              \r
        };\r
@@ -504,16 +504,16 @@ function X_Node_Anime_updateAnimationsNoTransition(){
        \r
        for( ; i; ){\r
                xnode = X_Node_ANIMATIONS[ --i ];\r
-               obj   = xnode._anime;\r
+               obj   = xnode[ '_anime' ];\r
 \r
                if( obj.destTime <= now ){\r
                        X_Node_Anime_updatePosition( xnode, obj.destX, obj.destY, obj.destA, false );\r
 \r
-                       delete xnode._anime;\r
+                       delete xnode[ '_anime' ];\r
                        X_Node_ANIMATIONS.splice( i, 1 );\r
                        \r
                        // filter な 親が解除されないと子要素への filter が反映されない\r
-                       xnode.asyncDispatch( { type : X_Event.ANIME_END, gpu : false } );\r
+                       xnode[ 'asyncDispatch' ]( { type : X_EVENT_ANIME_END, gpu : false } );\r
                } else {\r
                        easing = obj.easing.fn( ( now - obj.startTime ) / obj.duration );\r
                        newX   = ( obj.destX - obj.startX ) * easing + obj.startX;\r
@@ -529,10 +529,10 @@ function X_Node_Anime_updateAnimationsNoTransition(){
        \r
        if( c ){\r
                if( X_Node_updateTimerID ){\r
-                       X_System.listen( X_Event.UPDATED, X_Node_Anime_updateAnimationsNoTransition );\r
+                       X_System[ 'listen' ]( X_EVENT_UPDATED, X_Node_Anime_updateAnimationsNoTransition );\r
                        X_Node_Anime_updateTimerID = 0;\r
                } else {\r
-                       X_Node_Anime_updateTimerID = X.Timer.requestFrame( X_Node_Anime_updateAnimationsNoTransition );\r
+                       X_Node_Anime_updateTimerID = X_Timer_requestFrame( X_Node_Anime_updateAnimationsNoTransition );\r
                };\r
        } else {\r
                X_Node_Anime_updateTimerID = 0;\r
index 78aab37..9e883b2 100644 (file)
@@ -22,7 +22,7 @@ if( X_UA[ 'MacIE' ] ){
                        //node.data = '';\r
                        l = X_TEMP._removalTextNodes.length;\r
                        if( parent ){\r
-                               //!l && X.Timer.once( 0, X_TEMP._timerRemove );\r
+                               //!l && X_Timer_once( 0, X_TEMP._timerRemove );\r
                                //X_TEMP._removalTextNodes[ l ] = node;\r
                                //var str=[],p;\r
                                //for( p in node ){\r
@@ -56,7 +56,7 @@ if( X_UA[ 'MacIE' ] ){
                                        parent.parentNode.insertBefore( clone, parent );\r
                                        parent.style.display = 'none';\r
                                        if( xnode ){\r
-                                               xnode.parent.parent._rawObject = clone;\r
+                                               xnode.parent.parent[ '_rawObject' ] = clone;\r
                                        };\r
                                } else {\r
                                        // ignore\r
@@ -82,7 +82,7 @@ if( X_UA[ 'MacIE' ] ){
                        };\r
                };\r
                \r
-               //nodes.length && X.Timer.once( 1000, X_TEMP._timerRemove );\r
+               //nodes.length && X_Timer_once( 1000, X_TEMP._timerRemove );\r
        };\r
        \r
 } else\r
@@ -105,11 +105,11 @@ if( X_UA[ 'Opera7' ] ){
  * http://kojs.sukobuto.com/docs/visible-binding\r
  * IE6 には、「空の span エレメントに続く空白は無視される」という謎な癖があります。 \r
  */\r
-X.ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT,\r
+X_ViewPort[ 'listenOnce' ]( X_EVENT_PRE_INIT,\r
        X_UA_DOM.W3C ?\r
 (function(){\r
        var r    = X_Node_body,\r
-               body = r._rawObject,\r
+               body = r[ '_rawObject' ],\r
                copy, i, l, node, html,\r
                elmProgress;\r
        \r
@@ -194,28 +194,29 @@ X.ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT,
        elmProgress.setAttribute( 'style', 'position:absolute;top:0;left:0;z-index:9999;width:0;height:0.5em;background:#00f;overflow:hidden;' );\r
        \r
        X_HTMLParser_asyncParse( html, true )\r
-               .listen( X_Event.PROGRESS,\r
-                       function(e){\r
+               [ 'listen' ]( X_EVENT_PROGRESS,\r
+                       function( e ){\r
                                elmProgress.style.width = ( e.percent * 100 | 0 ) + '%';\r
                        }\r
                )\r
-               .listenOnce( X_Event.SUCCESS, function( e ){\r
-                       var xnodes = X_Node_body._xnodes = [], t;\r
-                       xnodes.push.apply( xnodes, e.xnodes );\r
-                       elmProgress.style.width = '100%';\r
-\r
-                       X_TEMP.asyncCreateTree( X_Node_body, body.childNodes, elmProgress );\r
-               } );\r
+               [ 'listenOnce' ]( X_EVENT_SUCCESS,\r
+                       function( e ){\r
+                               var xnodes = X_Node_body[ '_xnodes' ] = [], t;\r
+                               xnodes.push.apply( xnodes, e.xnodes );\r
+                               elmProgress.style.width = '100%';\r
+       \r
+                               X_TEMP.asyncCreateTree( X_Node_body, body.childNodes, elmProgress );\r
+                       }\r
+               );\r
 \r
 }) :\r
 X_UA_DOM.IE4 ?\r
 (function(){\r
        var r    = X_Node_body,\r
-               body = r._rawObject,\r
+               body = r[ '_rawObject' ],\r
                elmProgress = '_xdom_builder_progress',\r
                html;\r
 \r
-       \r
        if( !X_TEMP.X_Dom_useBuilder ) return;\r
 \r
        /*\r
@@ -229,14 +230,14 @@ X_UA_DOM.IE4 ?
        elmProgress = document.all[ elmProgress ];\r
        \r
        X_HTMLParser_asyncParse( html, true )\r
-               .listen( X_Event.PROGRESS,\r
+               [ 'listen' ]( X_EVENT_PROGRESS,\r
                        function( e ){\r
                                elmProgress.style.width = ( e.percent * 100 | 0 ) + '%';\r
                        }\r
                )\r
-               .listenOnce( X_Event.SUCCESS,\r
+               [ 'listenOnce' ]( X_EVENT_SUCCESS,\r
                        function( e ){\r
-                               var xnodes = X_Node_body._xnodes = [], t;\r
+                               var xnodes = X_Node_body[ '_xnodes' ] = [], t;\r
                                xnodes.push.apply( xnodes, e.xnodes );\r
                                elmProgress.style.width = '100%';\r
                                \r
@@ -248,8 +249,8 @@ X_UA_DOM.IE4 ?
        \r
 }) );\r
 \r
-X_TEMP.asyncCreateTree = function ( parent, elems, elmProgress, async ){\r
-       var xnodes      = async ? 0           : X_Object_cloneArray( parent._xnodes ),\r
+X_TEMP.asyncCreateTree = function( parent, elems, elmProgress, async ){\r
+       var xnodes      = async ? 0           : X_Object_cloneArray( parent[ '_xnodes' ] ),\r
                l           = async ? 0           : xnodes.length,\r
                stack       = async ? async.stack : [],\r
                done        = async ? async.done  : 0,\r
@@ -297,7 +298,7 @@ X_TEMP.asyncCreateTree = function ( parent, elems, elmProgress, async ){
                                                async.done    = done;\r
                                        };\r
                                        //alert( 'koko?' );\r
-                                       X.Timer.once( 0, X_TEMP.asyncCreateTree, [ null, null, elmProgress, async || { stack : stack, current : i < l && current, done : done } ] );\r
+                                       X_Timer_once( 0, X_TEMP.asyncCreateTree, [ null, null, elmProgress, async || { stack : stack, current : i < l && current, done : done } ] );\r
                                        // progress\r
                                        elmProgress.style.width = ( ( 1 - done / X_Node_CHASHE.length ) * 100 | 0 ) + '%';\r
                                        return;\r
@@ -307,7 +308,7 @@ X_TEMP.asyncCreateTree = function ( parent, elems, elmProgress, async ){
                current = null;\r
        };\r
        // complete\r
-       X_ViewPort.asyncDispatch( X_TEMP.SYSTEM_EVENT_XTREE );\r
+       X_ViewPort[ 'asyncDispatch' ]( X_EVENT_XTREE_READY );\r
        elmProgress.parentNode ? elmProgress.parentNode.removeChild( elmProgress ) : ( elmProgress.outerHTML = '' );\r
        delete X_TEMP.asyncCreateTree;\r
        delete X_TEMP.bindElementToXnode;\r
@@ -342,7 +343,7 @@ X_TEMP.bindElementToXnode =
                                        continue;\r
                                };\r
                \r
-                               if( xnode._tag ){\r
+                               if( xnode[ '_tag' ] ){\r
                                        if( elm.nodeType === 3 ){\r
                                                if( !( text = elm.data ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
                                                        //alert( text.charCodeAt( 0 ) );\r
@@ -353,41 +354,41 @@ X_TEMP.bindElementToXnode =
                                                        };\r
                                                        continue;\r
                                                };\r
-                                               alert( '1:[' +parent._tag + '>' +xnode._tag + '] !== ' + elm.nodeType + '\n' + ( elm.data ) );\r
+                                               alert( '1:[' +parent[ '_tag' ] + '>' +xnode[ '_tag' ] + '] !== ' + elm.nodeType + '\n' + ( elm.data ) );\r
                                        } else\r
                                        if( X_Dom_DTD_MOVE_TO_HEAD[ tag ] ){\r
                                                alert( tag );\r
                                                continue;\r
                                        } else\r
-                                       if( xnode._tag !== tag ){\r
-                                               alert( '2:[' +parent._tag + '>' +xnode._tag + ' len:' + (xnode._xnodes ? xnode._xnodes.length : '' ) + '] !== ' + tag + ' ' + (elm.childNodes ? elm.childNodes.length : '' ) + '\n' + elm.outerHTML );\r
+                                       if( xnode[ '_tag' ] !== tag ){\r
+                                               alert( '2:[' +parent[ '_tag' ] + '>' +xnode[ '_tag' ] + ' len:' + (xnode[ '_xnodes' ] ? xnode[ '_xnodes' ].length : '' ) + '] !== ' + tag + ' ' + (elm.childNodes ? elm.childNodes.length : '' ) + '\n' + elm.outerHTML );\r
                                        } else {\r
-                                               xnode._rawObject = elm;\r
+                                               xnode[ '_rawObject' ] = elm;\r
                                                //if( ( doc = elm.ownerDocument || elm.document ) && ( doc.createElement( 'p' ).tagName === doc.createElement( 'P' ).tagName ) ){\r
                                                        if( tag.charAt( 0 ) === '/' ) tag = tag.slice( 1 );\r
-                                                       xnode._tag = tag;\r
+                                                       xnode[ '_tag' ] = tag;\r
                                                //};\r
-                                               xnode._flags |= X_Node_State.IN_TREE;\r
-                                               xnode._flags &= X_Node_BitMask_RESET_DIRTY;\r
-                                               elm.UID       = xnode._uid;\r
+                                               xnode[ '_flags' ] |= X_Node_State.IN_TREE;\r
+                                               xnode[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;\r
+                                               elm[ 'UID' ]       = xnode[ '_uid' ];\r
                                                current.xtext = null;\r
                                                \r
                                                if( tag === 'TEXTAREA' ){\r
-                                                       xnode.attr( 'value', xnode.html() ).empty();\r
+                                                       xnode.attr( 'value', xnode[ 'html' ]() )[ 'empty' ]();\r
                                                        \r
                                                } else\r
                                                if( elm.childNodes && elm.childNodes.length ){\r
-                                                       //alert( '[' +parent._tag + '>' + xnode._tag + ' ' + (xnode._xnodes ? xnode._xnodes.length : '' ) + '] === ' + tag + ' ' + (elm.childNodes ? elm.childNodes.length : '' ) + ' Hit\n' + elm.outerHTML );\r
+                                                       //alert( '[' +parent[ '_tag' ] + '>' + xnode[ '_tag' ] + ' ' + (xnode[ '_xnodes' ] ? xnode[ '_xnodes' ].length : '' ) + '] === ' + tag + ' ' + (elm.childNodes ? elm.childNodes.length : '' ) + ' Hit\n' + elm.outerHTML );\r
                                                        //current.xtext = null;\r
                                                        ++current.j;\r
                                                        \r
                                                        return {\r
                                                                me     : xnode,\r
-                                                               xnodes : X_Object_cloneArray( xnode._xnodes ),\r
+                                                               xnodes : X_Object_cloneArray( xnode[ '_xnodes' ] ),\r
                                                                xtext  : null,\r
                                                                flag   : 0,\r
                                                                i      : 0,\r
-                                                               l      : xnode._xnodes.length,\r
+                                                               l      : xnode[ '_xnodes' ].length,\r
                                                                elems  : X_Object_cloneArray( elm.childNodes ),\r
                                                                j      : 0,\r
                                                                skipCleanup : skipCleanup || X_Dom_DTD_SKIP_CLEANUP_TAGS[ tag ]\r
@@ -401,41 +402,41 @@ X_TEMP.bindElementToXnode =
                                };\r
                                \r
                                if( elm.nodeType !== 3 ){\r
-                                       if( !( text = xnode._text ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
-                                               console.log( '[' +parent._tag + '> UID:' + xnode._uid + ' len:' + xnode._text.length + ' code : ' + xnode._text.charCodeAt( 0 ) + ',' + xnode._text.charCodeAt( 1 ) + '] destroyed.' );\r
+                                       if( !( text = xnode[ '_text' ] ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
+                                               console.log( '[' +parent[ '_tag' ] + '> UID:' + xnode[ '_uid' ] + ' len:' + xnode[ '_text' ].length + ' code : ' + xnode[ '_text' ].charCodeAt( 0 ) + ',' + xnode[ '_text' ].charCodeAt( 1 ) + '] destroyed.' );\r
                                                xnode.destroy();\r
                                                break;\r
                                        };\r
-                                       alert(  parent._tag + ' > ' + '"' + xnode._text + '" !== ' + tag + '\n' +\r
-                                               'prev : ' + ( xnode.prev() && xnode.prev().html() ) + '\n' +\r
-                                               'next : ' + ( xnode.next() && xnode.next().html() ) + '\n' +\r
+                                       alert(  parent[ '_tag' ] + ' > ' + '"' + xnode[ '_text' ] + '" !== ' + tag + '\n' +\r
+                                               'prev : ' + ( xnode[ 'prev' ]() && xnode[ 'prev' ]()[ 'html' ]() ) + '\n' +\r
+                                               'next : ' + ( xnode[ 'next' ]() && xnode[ 'next' ]()[ 'html' ]() ) + '\n' +\r
                                                'html : ' + elm.outerHTML );\r
                                        break;\r
                                };\r
                                \r
                                ++current.j;\r
-                               xnode._rawObject = elm;\r
-                               xnode._flags    |= X_Node_State.IN_TREE;\r
-                               xnode._flags    &= X_Node_BitMask_RESET_DIRTY;\r
-                               xnode._text      = elm.data; // 正確\r
+                               xnode[ '_rawObject' ] = elm;\r
+                               xnode[ '_flags' ]    |= X_Node_State.IN_TREE;\r
+                               xnode[ '_flags' ]    &= X_Node_BitMask_RESET_DIRTY;\r
+                               xnode[ '_text' ]      = elm.data; // 正確\r
                                \r
                                if( !skipCleanup ){\r
-                                       if( !( text = xnode._text ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
-                                               console.log( '[' +parent._tag + '>' + xnode._uid + '] destroy ... ' );\r
+                                       if( !( text = xnode[ '_text' ] ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
+                                               console.log( '[' +parent[ '_tag' ] + '>' + xnode[ '_uid' ] + '] destroy ... ' );\r
                                                xnode.destroy();\r
                                        };\r
                                        if( xtext ){\r
-                                               xtext.text( xtext._text + text );\r
-                                               console.log( '[' +parent._tag + '>' + xnode._uid + '] xtext,destroy ... ' );\r
+                                               xtext[ 'text' ]( xtext[ '_text' ] + text );\r
+                                               console.log( '[' +parent[ '_tag' ] + '>' + xnode[ '_uid' ] + '] xtext,destroy ... ' );\r
                                                xnode.destroy();\r
                                        } else {\r
-                                               //alert( parent._tag + '>' + '"' + text + '"\n' + elm.data );\r
-                                               xnode.text( text );\r
+                                               //alert( parent[ '_tag' ] + '>' + '"' + text + '"\n' + elm.data );\r
+                                               xnode[ 'text' ]( text );\r
                                        };\r
                                } else\r
                                if( xtext ){\r
-                                       xtext.text( xtext._text + xnode._text );\r
-                                       console.log( '[' +parent._tag + '>' + xnode._uid + '] xtext,destroy ... ' );\r
+                                       xtext[ 'text' ]( xtext[ '_text' ] + xnode[ '_text' ] );\r
+                                       console.log( '[' +parent[ '_tag' ] + '>' + xnode[ '_uid' ] + '] xtext,destroy ... ' );\r
                                        xnode.destroy();\r
                                };\r
                                current.xtext = xtext || xnode;\r
@@ -452,32 +453,32 @@ X_TEMP.bindElementToXnode =
                \r
                        xnode.parent = parent;\r
                        \r
-                       if( !xnode._tag ){\r
-                               xnode._flags |= X_Node_State.IN_TREE;\r
-                               xnode._flags &= X_Node_BitMask_RESET_DIRTY;\r
-                               //alert( X_String_cleanupWhiteSpace( xnode._text ) );\r
+                       if( !xnode[ '_tag' ] ){\r
+                               xnode[ '_flags' ] |= X_Node_State.IN_TREE;\r
+                               xnode[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;\r
+                               //alert( X_String_cleanupWhiteSpace( xnode[ '_text' ] ) );\r
                                if( !skipCleanup ){\r
-                                       if( !( text = xnode._text ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
+                                       if( !( text = xnode[ '_text' ] ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
                                                xnode.destroy();\r
                                                xnode = null;\r
                                        } else\r
                                        if( xtext ){\r
                                                //alert( 'xtext ' + text.charCodeAt( 0 ) + ' : ' + text.length );\r
-                                               xtext.text( xtext._text + text );\r
+                                               xtext[ 'text' ]( xtext[ '_text' ] + text );\r
                                                xnode.destroy();\r
                                        } else {\r
                                                //alert( 'xnode ' + text.charCodeAt( 0 ) + ' : ' + text.length );\r
-                                               xnode.text( text );\r
+                                               xnode[ 'text' ]( text );\r
                                        };\r
                                } else {\r
                                        if( xtext ){\r
                                                //alert( 'skip ' + text.charCodeAt( 0 ) + ' : ' + text.length );\r
-                                               xtext.text( xtext._text + xnode._text );\r
+                                               xtext[ 'text' ]( xtext[ '_text' ] + xnode[ '_text' ] );\r
                                                xnode.destroy();\r
                                        };\r
                                };\r
                                current.xtext = xtext || xnode;\r
-                               parent._flags |= X_Node_State.IE4_HAS_TEXTNODE;\r
+                               parent[ '_flags' ] |= X_Node_State.IE4_HAS_TEXTNODE;\r
                                return;\r
                        };\r
                        \r
@@ -491,42 +492,42 @@ X_TEMP.bindElementToXnode =
                                        //alert( '## ' + tag );\r
                                        continue;\r
                                } else\r
-                               if( xnode._tag !== tag ){\r
-                                       alert( xnode._tag + ' ' + ' !== ' + tag + '\nxnode.html():' + xnode.attr('cite') + '\nelm.outerHTML:' +  elm.outerHTML );\r
+                               if( xnode[ '_tag' ] !== tag ){\r
+                                       alert( xnode[ '_tag' ] + ' ' + ' !== ' + tag + '\nxnode.html():' + xnode.attr('cite') + '\nelm.outerHTML:' +  elm.outerHTML );\r
                                } else {\r
                                        ++current.j;\r
                                        \r
-                                       xnode._rawObject = elm;\r
-                                       xnode._flags    |= X_Node_State.IN_TREE;\r
-                                       xnode._flags    &= X_Node_BitMask_RESET_DIRTY;\r
-                                       //xnode._tag     = X_Dom_DTD_TAG_FIX[ tag ] || tag;\r
-                                       if( X_TEMP._isCleanupTarget( elm ) ){ //!xnode.hasClass( 'skip-cleanup' ) && ( X_Dom_DTD_CLEANUP_TAGS[ tag ] || xnode.hasClass( 'cleanup-target' ) ) ){\r
+                                       xnode[ '_rawObject' ] = elm;\r
+                                       xnode[ '_flags' ]    |= X_Node_State.IN_TREE;\r
+                                       xnode[ '_flags' ]    &= X_Node_BitMask_RESET_DIRTY;\r
+                                       //xnode[ '_tag' ]     = X_Dom_DTD_TAG_FIX[ tag ] || tag;\r
+                                       if( X_TEMP._isCleanupTarget( elm ) ){ //!xnode[ 'hasClass' ]( 'skip-cleanup' ) && ( X_Dom_DTD_CLEANUP_TAGS[ tag ] || xnode[ 'hasClass' ]( 'cleanup-target' ) ) ){\r
                                                xnode.destroy();\r
                                                break;\r
                                        };\r
                                        \r
-                                       !xnode._id && elm.setAttribute( 'id', 'ie4uid' + xnode._uid );\r
-                                       elm.setAttribute( 'UID', xnode._uid );\r
+                                       !xnode[ '_id' ] && elm.setAttribute( 'id', 'ie4uid' + xnode[ '_uid' ] );\r
+                                       elm.setAttribute( 'UID', xnode[ '_uid' ] );\r
                                        \r
                                        tag === 'INPUT' && (\r
-                                               !xnode._attrs ?\r
-                                                       ( xnode._attrs = { type : 'text' } ) :\r
-                                                       xnode._attrs.type || ( xnode._attrs.type = 'text' )\r
+                                               !xnode[ '_attrs' ] ?\r
+                                                       ( xnode[ '_attrs' ] = { type : 'text' } ) :\r
+                                                       xnode[ '_attrs' ].type || ( xnode[ '_attrs' ].type = 'text' )\r
                                        );\r
-                                       parent._flags |= X_Node_State.IE4_HAS_ELEMENT;\r
+                                       parent[ '_flags' ] |= X_Node_State.IE4_HAS_ELEMENT;\r
                                        current.xtext = null;\r
                                        \r
                                        if( tag === 'TEXTAREA' ){\r
-                                               xnode.attr( 'value', xnode.html() ).empty();\r
+                                               xnode.attr( 'value', xnode[ 'html' ]() )[ 'empty' ]();\r
                                        } else\r
-                                       if( xnode._xnodes && xnode._xnodes.length ){\r
+                                       if( xnode[ '_xnodes' ] && xnode[ '_xnodes' ].length ){\r
                                                return {\r
                                                        me     : xnode,\r
-                                                       xnodes : X_Object_cloneArray( xnode._xnodes ),\r
+                                                       xnodes : X_Object_cloneArray( xnode[ '_xnodes' ] ),\r
                                                        xtext  : null,\r
                                                        flag   : 0,\r
                                                        i      : 0,\r
-                                                       l      : xnode._xnodes.length,\r
+                                                       l      : xnode[ '_xnodes' ].length,\r
                                                        elems  : X_Object_cloneArray( elm.children ),\r
                                                        j      : 0,\r
                                                        skipCleanup : skipCleanup || X_Dom_DTD_SKIP_CLEANUP_TAGS[ tag ]\r
@@ -536,8 +537,8 @@ X_TEMP.bindElementToXnode =
                                };\r
                        };\r
                        // for\r
-                       if( !xnode._rawObject ){\r
-                               alert( xnode._tag + ' ' + xnode._id + ' !== none...' );\r
+                       if( !xnode[ '_rawObject' ] ){\r
+                               alert( xnode[ '_tag' ] + ' ' + xnode[ '_id' ] + ' !== none...' );\r
                        };\r
                });\r
 \r
index 2a9495c..1a65f93 100644 (file)
@@ -76,7 +76,10 @@ var X_Pulgin_FLASH_VERSION =
                        navigator.mimeTypes[ 'application/x-googlegears' ].enabledPlugin
                );
 
-X.Pulgin = {
+/**
+ * @namespace X.Pulgin
+ */
+X[ 'Pulgin' ] = {
        
        Flash              : X_Pulgin_FLASH_VERSION,
 
index 896284e..7a70e86 100644 (file)
@@ -1 +1 @@
-X.Util = {};\r
+X[ 'Util' ] = {};\r
index a0ffddd..3c25676 100644 (file)
@@ -4,7 +4,7 @@
  */\r
 \r
 // TODO Node.inherits\r
-X.Util.NinjaIframe = X.EventDispatcher.inherits(\r
+X[ 'Util' ][ 'NinjaIframe' ] = X_EventDispatcher[ 'inherits' ](\r
        'NinjaIframe',\r
        {\r
                autoRefresh  : 0,\r
@@ -17,12 +17,12 @@ X.Util.NinjaIframe = X.EventDispatcher.inherits(
                _name        : '',\r
                _ready       : false,\r
                \r
-               Constructor : function( html ){\r
+               'Constructor' : function( html ){\r
                        \r
                        this._name = 'hidden-iframe-' + X_Timer_now();\r
                        // https://github.com/polygonplanet/Pot.js/blob/master/src/Worker.js\r
 \r
-                       this.xnodeIframe = X_Node_body.create(\r
+                       this.xnodeIframe = X_Node_body[ 'create' ](\r
                                'iframe',\r
                                {\r
                                        className         : 'hidden-iframe',\r
@@ -35,7 +35,7 @@ X.Util.NinjaIframe = X.EventDispatcher.inherits(
                                }\r
                        );\r
                        \r
-                       X_ViewPort.listenOnce( X_Event.AFTER_UPDATE, this );\r
+                       X_ViewPort[ 'listenOnce' ]( X_EVENT_AFTER_UPDATE, this );\r
                        \r
                        // http://nanto.asablo.jp/blog/2011/12/08/6237308\r
                        // IE 6/7 で文書間通信を実現するための一案\r
@@ -44,23 +44,23 @@ X.Util.NinjaIframe = X.EventDispatcher.inherits(
                        };\r
                        // Safari 2.0.* bug: iframe's absolute position and src set.\r
                        if( !X_UA[ 'Webkit' ]  ){\r
-                               this.xnodeIframe.css( { position : 'absolute' } );\r
+                               this.xnodeIframe[ 'css' ]( { position : 'absolute' } );\r
                        };\r
                        \r
                        if( html ) this._contentHTML = html;\r
                },\r
                \r
-               handleEvent : function( e ){\r
-                       var raw = this.xnodeIframe._rawObject;\r
+               'handleEvent' : function( e ){\r
+                       var raw = this.xnodeIframe[ '_rawObject' ];\r
                        \r
                        switch( e.type ){\r
-                               case X_Event.AFTER_UPDATE :\r
+                               case X_EVENT_AFTER_UPDATE :\r
                                        this._iwin = raw.contentWindow || ( raw.contentDocument && raw.contentDocument.parentWindow ) || window.frames[ this._name ];\r
                                        // http://d.hatena.ne.jp/NeoCat/20080921/1221940658\r
                                        // こちらに名前をsetしないとtargetが動作しない\r
                                        if( X_UA[ 'IE' ] ) this._iwin.name = this._name;\r
                                        \r
-                                       this.xnodeIframe.listen( [ X_UA[ 'IE' ] < 9 ? 'readystatechange' : 'load', 'error' ], this );\r
+                                       this.xnodeIframe[ 'listen' ]( [ X_UA[ 'IE' ] < 9 ? 'readystatechange' : 'load', 'error' ], this );\r
                                        \r
                                        if( !( X_UA[ 'IE' ] < 9 ) ){\r
                                                this._contentHTML && X_Util_NinjaIframe_writeToIframe( this );\r
@@ -79,18 +79,18 @@ X.Util.NinjaIframe = X.EventDispatcher.inherits(
                                        // onload\r
                                case 'load' :\r
                                        console.log( 'iframe load.' );\r
-                                       this.asyncDispatch( X_Event.SUCCESS );\r
+                                       this[ 'asyncDispatch' ]( X_EVENT_SUCCESS );\r
                                        break;\r
                                case 'error' :\r
-                                       this.asyncDispatch( X_Event.ERROR );\r
+                                       this[ 'asyncDispatch' ]( X_EVENT_ERROR );\r
                                        break;\r
                        };\r
                        \r
-                       return X.Callback.STOP_PROPAGATION;                     \r
+                       return X_Callback_STOP_PROPAGATION;                     \r
                },\r
                \r
-               refresh : function( opt_contentHTML ){\r
-                       var raw = this.xnodeIframe._rawObject,\r
+               'refresh' : function( opt_contentHTML ){\r
+                       var raw = this.xnodeIframe[ '_rawObject' ],\r
                                idoc;\r
                                \r
                        this._ready = false;\r
@@ -114,9 +114,9 @@ X.Util.NinjaIframe = X.EventDispatcher.inherits(
                        return this;\r
                },\r
                \r
-               close : function(){\r
-                       X_ViewPort.unlisten( X_Event.AFTER_UPDATE, this );\r
-                       this.xnodeIframe.call( 'close' );\r
+               'close' : function(){\r
+                       X_ViewPort[ 'unlisten' ]( X_EVENT_AFTER_UPDATE, this );\r
+                       this.xnodeIframe[ 'call' ]( 'close' );\r
                        this.xnodeIframe.destroy();\r
                }\r
                \r
@@ -124,7 +124,7 @@ X.Util.NinjaIframe = X.EventDispatcher.inherits(
 );\r
 \r
 function X_Util_NinjaIframe_writeToIframe( that ){\r
-       var raw  = that.xnodeIframe._rawObject,\r
+       var raw  = that.xnodeIframe[ '_rawObject' ],\r
                idoc = raw.contentDocument || that._iwin.document,\r
                html = that._contentHTML;\r
                \r
index 840b0b5..cd5e1d9 100644 (file)
@@ -1,8 +1,8 @@
 \r
 var X_Util_Image_actualSize = {};\r
 \r
-X.Util.Image = {       \r
-       getActualDimension : X_Util_Image_getActualDimension\r
+X[ 'Util' ][ 'Image' ] = {     \r
+       'getActualDimension' : X_Util_Image_getActualDimension\r
        \r
        // Alpha Image, data uri ong ...\r
 };\r
@@ -22,7 +22,7 @@ function X_Util_Image_getActualDimension( XnodeOrImageElemOrSrc ){
        if( X_Type_isString( XnodeOrImageElemOrSrc ) ){\r
                if( ret = X_Util_Image_actualSize[ X_URL_toAbsolutePath( XnodeOrImageElemOrSrc ) ] ) return ret;\r
                \r
-               xnode = X_Node_systemNode.create(\r
+               xnode = X_Node_systemNode[ 'create' ](\r
                        'img',\r
                        {\r
                                src : XnodeOrImageElemOrSrc\r
@@ -32,19 +32,19 @@ function X_Util_Image_getActualDimension( XnodeOrImageElemOrSrc ){
                        }\r
                );\r
                X_Node_startUpdate();\r
-               img    = X_UA_DOM.IE4 ? X_Node__ie4getRawNode( xnode ) : xnode._rawObject;\r
+               img    = X_UA_DOM.IE4 ? X_Node__ie4getRawNode( xnode ) : xnode[ '_rawObject' ];\r
                remove = true;\r
        } else {\r
                if( XnodeOrImageElemOrSrc.constructor === X.Node ){\r
                        xnode = XnodeOrImageElemOrSrc;\r
-                       img   = X_UA_DOM.IE4 ? X_Node__ie4getRawNode( xnode )._rawObject : xnode._rawObject;\r
+                       img   = X_UA_DOM.IE4 ? X_Node__ie4getRawNode( xnode )[ '_rawObject' ] : xnode[ '_rawObject' ];\r
                } else\r
                if( X_Type_isHTMLElement( XnodeOrImageElemOrSrc ) ){\r
                        img = XnodeOrImageElemOrSrc;\r
                } else\r
-               if( XnodeOrImageElemOrSrc.constructor === X.EventDispatcher && X_Type_isImage( XnodeOrImageElemOrSrc._rawObject ) ){\r
+               if( XnodeOrImageElemOrSrc.constructor === X_EventDispatcher && X_Type_isImage( XnodeOrImageElemOrSrc[ '_rawObject' ] ) ){\r
                        xnode = XnodeOrImageElemOrSrc;\r
-                       img   = xnode._rawObject;\r
+                       img   = xnode[ '_rawObject' ];\r
                } else {\r
                        return;\r
                };\r
index 03d336a..b9cff54 100644 (file)
@@ -3,38 +3,38 @@
 \r
 // http://bugs.jquery.com/ticket/2709\r
 // <head><base> がある場合、<script>の追加に失敗する\r
-X.Net = {\r
+X[ 'Net' ] = {\r
 \r
-       xhrGet : function( url, type ){\r
+       'xhrGet' : function( url, type ){\r
                return new X_NET_Queue( X_NET_TYPE_XHR, { method : 'GET', url : url, type : type } );\r
        },\r
        \r
-       xhrPost : function( url, type, postbody ){\r
+       'xhrPost' : function( url, type, postbody ){\r
                return new X_NET_Queue( X_NET_TYPE_XHR, { method : 'POST', url : url, type : type, postbody : postbody } );\r
        },\r
        \r
-       formGet : function(){\r
+       'formGet' : function(){\r
                \r
        },\r
        \r
-       formPost : function(){\r
+       'formPost' : function(){\r
                \r
        },\r
        \r
        // TODO chashe\r
        // TODO iframe useful or not. TODO dynamicIframe\r
        // TODO file: では http: は使えない\r
-       jsonp : function( url, useIframe ){\r
+       'jsonp' : function( url, useIframe ){\r
                return new X_NET_Queue( X_NET_TYPE_JSONP, url );\r
        },\r
        \r
-       image : function( url, needSize, delay, timeout ){\r
+       'image' : function( url, needSize, delay, timeout ){\r
                return new X_NET_Queue( X_NET_TYPE_IMAGE, { url : url, needSize : needSize } );\r
        },\r
        \r
        // <script>, <link>\r
        \r
-       amountQueue : function(){\r
+       'amountQueue' : function(){\r
                return X_NET_QUEUE_LIST.length;\r
        }\r
 \r
@@ -62,36 +62,46 @@ var X_NET_TYPE_XHR   = 1,
        X_NET_ImageWrapper,\r
 \r
        X_NET_currentWrapper,\r
-       X_NET_currentQueue,\r
+       X_NET_currentQueue;\r
 \r
-       X_NET_Queue = X.EventDispatcher.inherits(\r
+/**\r
+ * フレームワークによってラップされたネットワーク機能にアクセスするためのクラス。\r
+ *     \r
+ * @alias X_NET_Queue\r
+ * @class X_NET_Queue\r
+ * @constructs X_NET_Queue\r
+ * @extends {EventDispatcher}\r
+ */\r
+var X_NET_Queue = X_EventDispatcher[ 'inherits' ](\r
                'XNetQueue',\r
                X.Class.POOL_OBJECT,\r
+               \r
+               /** @lends X_NET_Queue.prototype */\r
                {\r
                        type : 0,\r
                        data : null,\r
                        \r
-                       Constructor : function( type, data ){\r
+                       'Constructor' : function( type, data ){\r
                                this.type = type;\r
                                this.data = data;                               \r
                                \r
-                               //this.listenOnce( X_Event.COMPLETE, X_NET_proxyDispatch );\r
-                               X_EventDispatcher_systemListen( this, X_Event.COMPLETE, X_NET_proxyDispatch );\r
+                               //this[ 'listenOnce' ]( X_EVENT_COMPLETE, X_NET_proxyDispatch );\r
+                               X_EventDispatcher_systemListen( this, X_EVENT_COMPLETE, X_NET_proxyDispatch );\r
                                \r
                                X_NET_QUEUE_LIST[ X_NET_QUEUE_LIST.length ] = this;\r
                                !X_NET_currentQueue && X_NET_shiftQueue();\r
                        },\r
                        \r
-                       busy : function(){\r
+                       'busy' : function(){\r
                                return this === X_NET_currentQueue && X_NET_currentWrapper._busy;\r
                        },\r
                        \r
-                       cancel : function(){\r
+                       'cancel' : function(){\r
                                var i = X_NET_QUEUE_LIST.indexOf( this );\r
                                if( i !== -1 ){\r
                                        X_NET_QUEUE_LIST.splice( i, 1 );\r
-                                       this.asyncDispatch( X_Event.CANCELED );\r
-                                       this.asyncDispatch( 16, X_Event.COMPLETE );\r
+                                       this[ 'asyncDispatch' ]( X_EVENT_CANCELED );\r
+                                       this[ 'asyncDispatch' ]( 16, X_EVENT_COMPLETE );\r
                                } else\r
                                if( this === X_NET_currentQueue ){\r
                                        X_NET_currentWrapper.cancel();\r
@@ -102,24 +112,24 @@ var X_NET_TYPE_XHR   = 1,
 \r
 function X_NET_proxyDispatch( e ){\r
        switch( e.type ){\r
-               case X_Event.BEFORE_KILL_INSTANCE :\r
+               case X_EVENT_BEFORE_KILL_INSTANCE :\r
                        break;\r
-               case X_Event.KILL_INSTANCE :\r
+               case X_EVENT_KILL_INSTANCE :\r
                        break;                  \r
-               case X_Event.KILL_INSTANCE_CANCELED :\r
+               case X_EVENT_KILL_INSTANCE_CANCELED :\r
                        break;\r
-               case X_Event.PROGRESS :\r
-                       this.dispatch( e );\r
+               case X_EVENT_PROGRESS :\r
+                       this[ 'dispatch' ]( e );\r
                        break;\r
-               case X_Event.SUCCESS :\r
-               case X_Event.ERROR :\r
-               case X_Event.TIMEOUT :\r
-               case X_Event.CANCELED :\r
-                       this.dispatch( e );\r
-                       this.asyncDispatch( X_Event.COMPLETE );\r
+               case X_EVENT_SUCCESS :\r
+               case X_EVENT_ERROR :\r
+               case X_EVENT_TIMEOUT :\r
+               case X_EVENT_CANCELED :\r
+                       this[ 'dispatch' ]( e );\r
+                       this[ 'asyncDispatch' ]( X_EVENT_COMPLETE );\r
                        break;\r
-               case X_Event.COMPLETE :\r
-                       this.kill();\r
+               case X_EVENT_COMPLETE :\r
+                       this[ 'kill' ]();\r
                        X_NET_shiftQueue();\r
                        break;\r
        };\r
@@ -132,7 +142,7 @@ function X_NET_shiftQueue(){
                console.log( 'X_NET_shiftQueue ' + X_NET_currentWrapper._busy );\r
                if( X_NET_currentWrapper._busy ) return;\r
                X_NET_currentWrapper\r
-                       .unlisten( [ X_Event.PROGRESS, X_Event.SUCCESS, X_Event.ERROR, X_Event.TIMEOUT, X_Event.CANCELED ], X_NET_currentQueue, X_NET_proxyDispatch )\r
+                       [ 'unlisten' ]( [ X_EVENT_PROGRESS, X_EVENT_SUCCESS, X_EVENT_ERROR, X_EVENT_TIMEOUT, X_EVENT_CANCELED ], X_NET_currentQueue, X_NET_proxyDispatch )\r
                        .reset();\r
                X_NET_currentQueue = X_NET_currentWrapper = null;\r
        };\r
@@ -156,7 +166,7 @@ function X_NET_shiftQueue(){
                        break;\r
        };\r
        \r
-       X_NET_currentWrapper.listen( [ X_Event.PROGRESS, X_Event.SUCCESS, X_Event.ERROR, X_Event.TIMEOUT, X_Event.CANCELED ], X_NET_currentQueue = queue, X_NET_proxyDispatch );\r
+       X_NET_currentWrapper[ 'listen' ]( [ X_EVENT_PROGRESS, X_EVENT_SUCCESS, X_EVENT_ERROR, X_EVENT_TIMEOUT, X_EVENT_CANCELED ], X_NET_currentQueue = queue, X_NET_proxyDispatch );\r
        \r
        X_NET_currentWrapper.load( queue.data );\r
 };\r
index e543f5a..c81dee5 100644 (file)
@@ -75,7 +75,7 @@ X.Net.XHR = {
 if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){\r
        \r
        X_NET_XHRWrapper = X_Class_override(\r
-               new X.EventDispatcher(),\r
+               X_EventDispatcher(),\r
                {\r
                        \r
                        '_rawType'   : X_EventDispatcher_EVENT_TARGET_TYPE.XHR,\r
@@ -92,7 +92,7 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
                        _timerID   : 0,\r
                        \r
                        load : function( obj ){\r
-                               var raw      = this._rawObject,\r
+                               var raw      = this[ '_rawObject' ],\r
                                        method   = obj[ 'method' ],\r
                                        url      = obj[ 'url' ],\r
                                        async    = obj[ 'async' ],\r
@@ -116,14 +116,14 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
                                        if( X_URL_isSameDomain( url ) ){ // isXDomain\r
                                                if( this._isXDR ){\r
                                                        X_EventDispatcher_toggleAllEvents( this, false );\r
-                                                       this._rawObject = X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X;\r
+                                                       this[ '_rawObject' ] = X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X;\r
                                                        X_EventDispatcher_toggleAllEvents( this, true );\r
                                                        this._isXDR = false;                                                    \r
                                                };\r
                                        } else {\r
                                                if( !this._isXDR ){\r
                                                        X_EventDispatcher_toggleAllEvents( this, false );\r
-                                                       this._rawObject = X_Net_XHR_X_DOMAIN;\r
+                                                       this[ '_rawObject' ] = X_Net_XHR_X_DOMAIN;\r
                                                        X_EventDispatcher_toggleAllEvents( this, true );\r
                                                        this._isXDR = true;                                                     \r
                                                };\r
@@ -175,7 +175,7 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
                                if( raw.timeout !== undefined ){\r
                                        raw.timeout = timeout;\r
                                } else {\r
-                                       this._timerID = X.Timer.once( timeout, this, this.onTimeout );\r
+                                       this._timerID = X_Timer_once( timeout, this, this.onTimeout );\r
                                };      \r
                                \r
                                // send 前にフラグを立てる,回線が早いと raw.send() 内で onload -> _busy = false ののち、 _busy = true するため。\r
@@ -183,13 +183,13 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
                                \r
 \r
                                raw.send( postbody || '' );\r
-                               //this._timerID = X.Timer.once( 16, this, this._lazySend, [ postbody || '', timeout ] );\r
+                               //this._timerID = X_Timer_once( 16, this, this._lazySend, [ postbody || '', timeout ] );\r
                        },\r
                        /*\r
                        // send() 内で onload するケースがあり、そのときはイベントリスナが間に合わないので、タイマーをかませる。\r
                        _lazySend : function( postbody, timeout ){\r
-                               if( this._rawObject.timeout === undefined ){\r
-                                       this._timerID = X.Timer.once( timeout, this, this.onTimeout );\r
+                               if( this[ '_rawObject' ].timeout === undefined ){\r
+                                       this._timerID = X_Timer_once( timeout, this, this.onTimeout );\r
                                } else {\r
                                        this._timerID = 0;\r
                                };\r
@@ -197,13 +197,13 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
                                // http://allabout.co.jp/gm/gc/24097/#1\r
                                // sendをonreadystatechangeの前に記述すると、ieでは動作しなくなります、、、。\r
                                // konquerorでエラーが発生するのでここでは、とりあえず、send('') としました。\r
-                               this._rawObject.send( postbody );                               \r
+                               this[ '_rawObject' ].send( postbody );                          \r
                        }, */\r
                        \r
                        cancel : function(){\r
-                               /* X.Net.XHR.CANCELABLE && */ this._rawObject.abort && this._rawObject.abort();\r
+                               /* X.Net.XHR.CANCELABLE && */ this[ '_rawObject' ].abort && this[ '_rawObject' ].abort();\r
                                this._canceled = true;\r
-                               this.asyncDispatch( X_Event.CANCELED );\r
+                               this[ 'asyncDispatch' ]( X_EVENT_CANCELED );\r
                        },\r
                        \r
                        reset : function(){\r
@@ -220,7 +220,7 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
                                if( X_UA[ 'Opera' ] || X_UA[ 'Webkit' ]  || X_UA[ 'Gecko' ] ){\r
                                        if( this._error ){\r
                                                X_EventDispatcher_toggleAllEvents( this, false );\r
-                                               this._rawObject = new XMLHttpRequest();\r
+                                               this[ '_rawObject' ] = new XMLHttpRequest();\r
                                                X_EventDispatcher_toggleAllEvents( this, true );\r
                                        };\r
                                };\r
@@ -228,16 +228,16 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
                                // XMLHttpRequest の使い方\r
                                // http://webos-goodies.jp/archives/50548720.html\r
                                // XMLHttpRequest オブジェクトを再利用する際も、 abort メソッドを呼び出す必要があるようです。\r
-                               this._rawObject.abort && this._rawObject.abort();\r
+                               this[ '_rawObject' ].abort && this[ '_rawObject' ].abort();\r
 \r
                                this._method   = this._type = '';\r
                                this._canceled = this._busy = this._error = false;\r
-                               this._timerID && X.Timer.remove( this._timerID );\r
+                               this._timerID && X_Timer_remove( this._timerID );\r
                                this._percent  = this._timerID = 0;\r
                        },\r
                        \r
                        handleEvent : function( e ){\r
-                               var raw  = this._rawObject,\r
+                               var raw  = this[ '_rawObject' ],\r
                                        live = !this._canceled,\r
                                        status, data;\r
 \r
@@ -263,10 +263,10 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
                                                                case 1 :\r
                                                                        return;\r
                                                                case 2 : // 0% ajaxstart\r
-                                                                       live && this.asyncDispatch( { type : X_Event.PROGRESS, percent : 0 } );\r
+                                                                       live && this[ 'asyncDispatch' ]( { type : X_EVENT_PROGRESS, percent : 0 } );\r
                                                                        return;\r
                                                                case 3 :\r
-                                                                       live && this.asyncDispatch( { type : X_Event.PROGRESS, percent : this._percent < 99.9 ? 99.9 : ( this._percent + 100 ) / 2 } );\r
+                                                                       live && this[ 'asyncDispatch' ]( { type : X_EVENT_PROGRESS, percent : this._percent < 99.9 ? 99.9 : ( this._percent + 100 ) / 2 } );\r
                                                                        // 99.9%\r
                                                                        return;\r
                                                                case 4 :\r
@@ -331,16 +331,16 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
                                                                        break;\r
                                                        };\r
 \r
-                                                       this.asyncDispatch( 32, { type : X_Event.SUCCESS, status : status || 200, data : data } );\r
+                                                       this[ 'asyncDispatch' ]( 32, { type : X_EVENT_SUCCESS, status : status || 200, data : data } );\r
                                                } else {\r
-                                                       live && this.asyncDispatch( 32, { type : X_Event.ERROR, status : raw.status || 0, percent : 100 } );\r
+                                                       live && this[ 'asyncDispatch' ]( 32, { type : X_EVENT_ERROR, status : raw.status || 0, percent : 100 } );\r
                                                };\r
                                                break;\r
                                        \r
                                        case 'progress' :\r
                                                if( e.lengthComputable ){\r
                                                        this._percent = e.loaded / e.total;\r
-                                                       live && this.asyncDispatch( { type : X_Event.PROGRESS, percent : this._percent } );\r
+                                                       live && this[ 'asyncDispatch' ]( { type : X_EVENT_PROGRESS, percent : this._percent } );\r
                                                };\r
                                                break;\r
                                        \r
@@ -348,30 +348,30 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
                                        //console.dir( e );\r
                                                this._busy  = false;\r
                                                this._error = X_UA[ 'Opera' ] || X_UA[ 'Webkit' ] ;\r
-                                               live && this.asyncDispatch( 32, { type : X_Event.ERROR, status : raw.status } );\r
+                                               live && this[ 'asyncDispatch' ]( 32, { type : X_EVENT_ERROR, status : raw.status } );\r
                                                break;\r
 \r
                                        case 'timeout' : // Gecko 12.0 https://developer.mozilla.org/ja/docs/XMLHttpRequest/Synchronous_and_Asynchronous_Requests\r
                                                this._busy  = false;\r
                                                this._error = !!X_UA[ 'Gecko' ];\r
-                                               this.asyncDispatch( X_Event.TIMEOUT );\r
+                                               this[ 'asyncDispatch' ]( X_EVENT_TIMEOUT );\r
                                                break;\r
                                };\r
                        },\r
                        \r
                        onTimeout : function(){\r
-                               var raw  = this._rawObject,\r
+                               var raw  = this[ '_rawObject' ],\r
                                        live = !X_NET_XHRWrapper._canceled || !this._busy;\r
 \r
                                if( raw.readyState < 3 ){\r
                                        this._busy = false;\r
-                                       live && this.asyncDispatch( X_Event.TIMEOUT );\r
+                                       live && this[ 'asyncDispatch' ]( X_EVENT_TIMEOUT );\r
                                };\r
                                this._timerID = 0;\r
                        },\r
                        \r
                        onUploadProgress : X.Net.XHR.UL_PROGRESS && function( e ){\r
-                               var raw  = X_NET_XHRWrapper._rawObject.upload,\r
+                               var raw  = X_NET_XHRWrapper[ '_rawObject' ].upload,\r
                                        live = !X_NET_XHRWrapper._canceled,\r
                                        states, data;\r
                        }\r
@@ -381,26 +381,26 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
        // 同期リクエストでなければならない場合, unload, beforeunload時\r
 \r
        if( X_UA[ 'IE8' ] ){\r
-               X_NET_XHRWrapper.listen( [ 'readystatechange', 'error', 'timeout' ] ); //, 'abort'\r
+               X_NET_XHRWrapper[ 'listen' ]( [ 'readystatechange', 'error', 'timeout' ] ); //, 'abort'\r
        } else\r
        if( X_UA[ 'IE7' ] ){\r
                if( X_URL_IS_LOCAL ){\r
-                       X_NET_XHRWrapper.listen( 'readystatechange' ); // ie7 ActiveX の場合、error は不可\r
+                       X_NET_XHRWrapper[ 'listen' ]( 'readystatechange' ); // ie7 ActiveX の場合、error は不可\r
                } else {\r
-                       X_NET_XHRWrapper.listen( [ 'readystatechange', 'error' ] );\r
+                       X_NET_XHRWrapper[ 'listen' ]( [ 'readystatechange', 'error' ] );\r
                };\r
        } else\r
        if( X_Net_XHR_ACTIVE_X ){ // win ie5-6\r
-               X_NET_XHRWrapper.listen( 'readystatechange' );\r
+               X_NET_XHRWrapper[ 'listen' ]( 'readystatechange' );\r
        } else \r
        if( X.Net.XHR.PROGRESS ){\r
-               X_NET_XHRWrapper.listen( [ 'load', 'progress', 'error', 'timeout' ] ); //, 'abort'\r
+               X_NET_XHRWrapper[ 'listen' ]( [ 'load', 'progress', 'error', 'timeout' ] ); //, 'abort'\r
        } else {\r
-               X_NET_XHRWrapper.listen( [ 'load', 'readystatechange', 'error', 'timeout' ] ); //, 'abort'\r
+               X_NET_XHRWrapper[ 'listen' ]( [ 'load', 'readystatechange', 'error', 'timeout' ] ); //, 'abort'\r
        };\r
        \r
        if( X_NET_XHRWrapper.onUploadProgress ){\r
-               X_NET_XHRWrapper._rawObject.upload.addEventListener( 'progress', X_NET_XHRWrapper.onUploadProgress );\r
+               X_NET_XHRWrapper[ '_rawObject' ].upload.addEventListener( 'progress', X_NET_XHRWrapper.onUploadProgress );\r
        };\r
 };\r
 \r
index 8832b96..04bfc4a 100644 (file)
@@ -26,8 +26,8 @@ X.Net.JSONP = {
                        X_NET_JSONPWrapper._busy = false;
                        
                        X_NET_JSONPWrapper
-                               .asyncDispatch( {
-                                       type : jsonString ? X_Event.SUCCESS : X_Event.ERROR,
+                               [ 'asyncDispatch' ]( {
+                                       type : jsonString ? X_EVENT_SUCCESS : X_EVENT_ERROR,
                                        data : window.JSON ? JSON.parse( jsonString ) : eval( 'var a=' + jsonString + ';a' )
                                } );
                        
@@ -165,30 +165,30 @@ function X_NET_JSONP_loadScriptInNinjaIframe( url ){
        
        X_NET_JSONP_NinjaIframe
                .refresh( html.join( '' ) )
-               .listen( [ X_Event.SUCCESS, X_Event.ERROR ], X_NET_JSONPWrapper, X_NET_JSONP_iframeListener );
+               [ 'listen' ]( [ X_EVENT_SUCCESS, X_EVENT_ERROR ], X_NET_JSONPWrapper, X_NET_JSONP_iframeListener );
 };
 
 
 function X_NET_JSONP_iframeListener( e ){
        switch( e.type ){
-               case X_Event.SUCCESS :
+               case X_EVENT_SUCCESS :
                        console.log( 'iframe onload, but' );
                        if( ++X_NET_JSONPWrapper._onloadCount < X_Net_JSONP_onloadCount ) return;
                        // TODO callback が無ければ error
-                       X_NET_JSONPWrapper.asyncDispatch( 1000, X_Event.ERROR );
+                       X_NET_JSONPWrapper[ 'asyncDispatch' ]( 1000, X_EVENT_ERROR );
                        break;
-               case X_Event.ERROR :
+               case X_EVENT_ERROR :
                        console.log( 'iframe onerror' );
-                       X_NET_JSONPWrapper.asyncDispatch( X_Event.ERROR );
+                       X_NET_JSONPWrapper[ 'asyncDispatch' ]( X_EVENT_ERROR );
                        break;
        };
-       X_NET_JSONP_NinjaIframe.unlisten();
-       return X.Callback.UN_LISTEN;
+       X_NET_JSONP_NinjaIframe[ 'unlisten' ]();
+       return X_Callback_UN_LISTEN;
 };
 
 // TODO extend NinjaIframe
 X_NET_JSONPWrapper = X_Class_override(
-       new X.EventDispatcher(),
+       X_EventDispatcher(),
        {
 
                _busy         : false,
index 38a878b..86bbee3 100644 (file)
@@ -27,7 +27,7 @@ if( X_Net_Image_isElement ){
  * Opera7 では毎回 image を作る必要あり、src が異なればOK?\r
  */\r
 X_NET_ImageWrapper = X_Class_override(\r
-       !X_Net_Image_isElement ? new X.EventDispatcher( X_Net_Image_image ) : new X.Node( X_Net_Image_image ),\r
+       !X_Net_Image_isElement ? X_EventDispatcher( X_Net_Image_image ) : Node( X_Net_Image_image ),\r
        {\r
 \r
                _busy      : false,\r
@@ -44,12 +44,12 @@ X_NET_ImageWrapper = X_Class_override(
                        this.delay   = data.delay || 100;\r
                        this.timeout = data.timeout || 5000;\r
 \r
-                       this._rawObject.src = this.abspath;\r
+                       this[ '_rawObject' ].src = this.abspath;\r
 \r
-                       if( X_UA[ 'Opera7' ] && this._rawObject.complete ){\r
-                               this.asyncDispatch( 'load' );\r
+                       if( X_UA[ 'Opera7' ] && this[ '_rawObject' ].complete ){\r
+                               this[ 'asyncDispatch' ]( 'load' );\r
                        } else {\r
-                               this.timerID = X.Timer.add( this.delay, 0, this, this._detect );\r
+                               this.timerID = X_Timer_add( this.delay, 0, this, this._detect );\r
                        };\r
                },\r
                \r
@@ -61,30 +61,30 @@ X_NET_ImageWrapper = X_Class_override(
                                        if( this.finish ) return;\r
                                        this._busy  = false;\r
                                        this.finish  = true;\r
-                                       this.timerID && X.Timer.remove( this.timerID );\r
-                                       this.timerID = this.asyncDispatch( /*e.type === 'error' ?*/ X_Event.ERROR /*: X_Event.CANCELED*/ );\r
+                                       this.timerID && X_Timer_remove( this.timerID );\r
+                                       this.timerID = this[ 'asyncDispatch' ]( /*e.type === 'error' ?*/ X_EVENT_ERROR /*: X_EVENT_CANCELED*/ );\r
                                        break;\r
                                case 'load' :\r
                                // if( finish === true ) return; // これがあると firefox3.6 で駄目、、、\r
                                // if( timer ) return; // これがあると safari3.2 で駄目、、、\r
                                        this._busy  = false;\r
                                        this.finish = true;\r
-                                       this.timerID && X.Timer.remove( this.timerID );\r
-                                       if( X_UA[ 'Opera' ] && !this._rawObject.complete ){\r
-                                               this.timerID = this.asyncDispatch( X_Event.ERROR );\r
+                                       this.timerID && X_Timer_remove( this.timerID );\r
+                                       if( X_UA[ 'Opera' ] && !this[ '_rawObject' ].complete ){\r
+                                               this.timerID = this[ 'asyncDispatch' ]( X_EVENT_ERROR );\r
                                                return;\r
                                        };\r
                                        size = X.Util.Image.getActualDimension( !X_Net_Image_isElement ? this.abspath : this );\r
-                                       this.timerID = this.asyncDispatch( {\r
-                                               type : X_Event.SUCCESS,\r
+                                       this.timerID = this[ 'asyncDispatch' ]( {\r
+                                               type : X_EVENT_SUCCESS,\r
                                                src  : this.abspath,\r
                                                w    : size[ 0 ],\r
                                                h    : size[ 1 ]\r
                                                // TODO feedback net speed\r
-                                               // time , this._rawObject.fileSize\r
+                                               // time , this[ '_rawObject' ].fileSize\r
                                        } );\r
                                        break;\r
-                               case X_Event.KILL_INSTANCE :\r
+                               case X_EVENT_KILL_INSTANCE :\r
                                        this.reset();\r
                                        !X_Net_Image_hasImage && this.destroy(); // if xnode\r
                                        break;\r
@@ -93,34 +93,34 @@ X_NET_ImageWrapper = X_Class_override(
                \r
                _detect : function(){\r
                        if( this.finish ) return;\r
-                       if( this._rawObject && this._rawObject.complete ){\r
+                       if( this[ '_rawObject' ] && this[ '_rawObject' ].complete ){\r
                                this._busy  = false;\r
                                this.finish = true;\r
-                               if( this._rawObject.width ) return;\r
-                               X.Timer.remove( this.timerID );\r
-                               this.timerID = this.asyncDispatch( X_Event.ERROR );\r
+                               if( this[ '_rawObject' ].width ) return;\r
+                               X_Timer_remove( this.timerID );\r
+                               this.timerID = this[ 'asyncDispatch' ]( X_EVENT_ERROR );\r
                        } else\r
                        if( this.timeout < ( this.tick += this.delay ) ){\r
                                this._busy  = false;\r
                                this.finish = true;\r
-                               X.Timer.remove( this.timerID );\r
-                               this.timerID = this.asyncDispatch( X_Event.TIMEOUT );\r
+                               X_Timer_remove( this.timerID );\r
+                               this.timerID = this[ 'asyncDispatch' ]( X_EVENT_TIMEOUT );\r
                        };\r
                },\r
                \r
                cancel : function(){\r
                        // abort がある?\r
-                       this._rawObject && this._rawObject.abort && this._rawObject.abort();\r
-                       // this._rawObject.src = '';\r
+                       this[ '_rawObject' ] && this[ '_rawObject' ].abort && this[ '_rawObject' ].abort();\r
+                       // this[ '_rawObject' ].src = '';\r
                        this._busy  = false;\r
                        this.finish = true;\r
-                       this.asyncDispatch( X_Event.CANCELED );\r
+                       this[ 'asyncDispatch' ]( X_EVENT_CANCELED );\r
                },\r
                \r
                reset : function(){\r
-                       this.timerID && X.Timer.remove( this.timerID );\r
-                       //X_Net_Image_isElement ? this._rawObject.removeAttribute( 'src' ) : ( this._rawObject.src = '' );\r
-                       this._rawObject.src = '';\r
+                       this.timerID && X_Timer_remove( this.timerID );\r
+                       //X_Net_Image_isElement ? this[ '_rawObject' ].removeAttribute( 'src' ) : ( this[ '_rawObject' ].src = '' );\r
+                       this[ '_rawObject' ].src = '';\r
                        this.timerID  = 0;\r
                        this._busy    = false;\r
                        this.finished = false;\r
@@ -129,6 +129,6 @@ X_NET_ImageWrapper = X_Class_override(
        }\r
 );\r
 \r
-X_NET_ImageWrapper.listen( [ 'load', 'error' /*, 'abort'*/, X_Event.KILL_INSTANCE ] );\r
+X_NET_ImageWrapper[ 'listen' ]( [ 'load', 'error' /*, 'abort'*/, X_EVENT_KILL_INSTANCE ] );\r
 \r
-// X_Net_Image_isElement && X_NET_ImageWrapper.appendTo( X.X_Node_systemNode );\r
+// X_Net_Image_isElement && X_NET_ImageWrapper[ 'appendAt' ]( X.X_Node_systemNode );\r
index a7958a6..7a70f5f 100644 (file)
@@ -21,45 +21,45 @@ function X_Audio_getAudioWrapper( proxy ){
 };\r
 \r
 /*\r
- * X_Event.BACKEND_READY\r
- * X_Event.BACKEND_NONE\r
+ * X_EVENT_BACKEND_READY\r
+ * X_EVENT_BACKEND_NONE\r
  * \r
- * X_Event.READY   再生可能、実際の状態は canplay から loadeddata まで様々、、、\r
- * X_Event.ERROR\r
+ * X_EVENT_READY   再生可能、実際の状態は canplay から loadeddata まで様々、、、\r
+ * X_EVENT_ERROR\r
  *   1 : ユーザーによってメディアの取得が中断された\r
  *   2 : ネットワークエラー\r
  *   3 : メディアのデコードエラー\r
  *   4 : メディアがサポートされていない\r
  * \r
- * X_Event.MEDIA_PLAYING 再生中に1秒以下のタイミングで発生.currentTime が取れる?\r
- * X_Event.MEDIA_LOOP    ループ直前に発生、キャンセル可能\r
- * X_Event.MEDIA_LOOPED  ループ時に発生\r
- * X_Event.MEDIA_ENDED   再生位置の(音声の)最後についた\r
- * X_Event.MEDIA_PAUSED  ポーズした\r
- * X_Event.MEDIA_WAITING 再生中に音声が待機状態に。間もなく X_Event.MEDIA_PLAYING に移行。\r
- * X_Event.MEDIA_SEEKING シーク中に音声が待機状態に。間もなく X_Event.MEDIA_PLAYING に移行。\r
+ * X_EVENT_MEDIA_PLAYING 再生中に1秒以下のタイミングで発生.currentTime が取れる?\r
+ * X_EVENT_MEDIA_LOOP    ループ直前に発生、キャンセル可能\r
+ * X_EVENT_MEDIA_LOOPED  ループ時に発生\r
+ * X_EVENT_MEDIA_ENDED   再生位置の(音声の)最後についた\r
+ * X_EVENT_MEDIA_PAUSED  ポーズした\r
+ * X_EVENT_MEDIA_WAITING 再生中に音声が待機状態に。間もなく X_EVENT_MEDIA_PLAYING に移行。\r
+ * X_EVENT_MEDIA_SEEKING シーク中に音声が待機状態に。間もなく X_EVENT_MEDIA_PLAYING に移行。\r
  */\r
 \r
-X.Audio = X.EventDispatcher.inherits(\r
+X[ 'Audio' ] = X_EventDispatcher[ 'inherits' ](\r
        'X.Audio',\r
        X.Class.POOL_OBJECT,\r
        {\r
-               source      : '',\r
-               backendName : '',\r
-               _backend    : -1,\r
+               'source'      : '',\r
+               'backendName' : '',\r
+               _backend      : -1,\r
                \r
-               Constructor : function( sourceList, opt_option ){\r
+               'Constructor' : function( sourceList, opt_option ){\r
                        X_Audio_startDetectionBackend(\r
                                X_Audio_BACKENDS[ 0 ], this,\r
                                X_Type_isArray( sourceList ) ? X_Object_cloneArray( sourceList ) : [ sourceList ],\r
                                opt_option || {} );\r
-                       this.listenOnce( [ X_Event.BACKEND_READY, X_Event.BACKEND_NONE, X_Event.KILL_INSTANCE ], X_Audio_handleEvent );\r
+                       this[ 'listenOnce' ]( [ X_EVENT_BACKEND_READY, X_EVENT_BACKEND_NONE, X_EVENT_KILL_INSTANCE ], X_Audio_handleEvent );\r
                },\r
                \r
-               play : function( startTime, endTime, loop, loopStartTime, loopEndTime ){\r
+               'play' : function( startTime, endTime, loop, loopStartTime, loopEndTime ){\r
                        var state, duration;\r
                        if( 0 <= startTime ){\r
-                               this.state( {\r
+                               this[ 'state' ]( {\r
                                        currentTime   : startTime,\r
                                        startTime     : startTime,\r
                                        endTime       : endTime,\r
@@ -72,21 +72,21 @@ X.Audio = X.EventDispatcher.inherits(
                        return this;\r
                },\r
                \r
-               seek : function( seekTime ){\r
-                       var state = this.state(),\r
+               'seek' : function( seekTime ){\r
+                       var state = this[ 'state' ](),\r
                                end   = X_AudioWrapper_getEndTime( X_Audio_getAudioWrapper( this ) );\r
                        if( seekTime < end ){\r
-                               this.state( { currentTime : seekTime } );\r
+                               this[ 'state' ]( { currentTime : seekTime } );\r
                        };\r
                        return this;\r
                },\r
                \r
-               pause : function(){\r
-                       this.state().playing && X_Audio_getAudioWrapper( this ).pause();\r
+               'pause' : function(){\r
+                       this[ 'state' ]().playing && X_Audio_getAudioWrapper( this ).pause();\r
                        return this;\r
                },\r
                \r
-               state : function( obj ){\r
+               'state' : function( obj ){\r
                        var backend = this._backend !== -1 && X_Audio_getAudioWrapper( this );\r
 \r
                        if( obj === undefined ){\r
@@ -103,7 +103,7 @@ X.Audio = X.EventDispatcher.inherits(
                                        error         : false,\r
                                        playing       : false,\r
                                        \r
-                                       source        : this.source || '',\r
+                                       source        : this[ 'source' ] || '',\r
                                        duration      : 0\r
                                        };\r
                        };\r
@@ -111,7 +111,7 @@ X.Audio = X.EventDispatcher.inherits(
                        return this;\r
                },              \r
                \r
-               loop : function( v ){\r
+               'loop' : function( v ){\r
                        var backend = this._backend !== -1 && X_Audio_getAudioWrapper( this );\r
                        if( v === undefined ){\r
                                return backend && backend.state().loop;\r
@@ -120,7 +120,7 @@ X.Audio = X.EventDispatcher.inherits(
                        return this;\r
                },\r
 \r
-               volume : function( v ){\r
+               'volume' : function( v ){\r
                        var backend = this._backend !== -1 && X_Audio_getAudioWrapper( this );\r
                        if( v === undefined ){\r
                                return backend && backend.state().volume;\r
@@ -129,7 +129,7 @@ X.Audio = X.EventDispatcher.inherits(
                        return this;\r
                },\r
 \r
-               currentTime : function( v ){\r
+               'currentTime' : function( v ){\r
                        var backend = this._backend !== -1 && X_Audio_getAudioWrapper( this );\r
                        if( v === undefined ){\r
                                return backend && backend.state().currentTime;\r
@@ -138,7 +138,7 @@ X.Audio = X.EventDispatcher.inherits(
                        return this;\r
                },\r
 \r
-               isPlaying : function(){\r
+               'isPlaying' : function(){\r
                        return this._backend !== -1 && X_Audio_getAudioWrapper( this ).state().playing;\r
                }\r
                \r
@@ -147,20 +147,20 @@ X.Audio = X.EventDispatcher.inherits(
 \r
 function X_Audio_handleEvent( e ){\r
        switch( e.type ){\r
-               case X_Event.BACKEND_READY :\r
-                       this.unlisten( X_Event.BACKEND_NONE, X_Audio_handleEvent );\r
-                       this.source = e.source;\r
-                       this.backendName = X_Audio_BACKENDS[ this._backend ].backendName;\r
+               case X_EVENT_BACKEND_READY :\r
+                       this[ 'unlisten' ]( X_EVENT_BACKEND_NONE, X_Audio_handleEvent );\r
+                       this[ 'source' ]      = e.source;\r
+                       this[ 'backendName' ] = X_Audio_BACKENDS[ this._backend ].backendName;\r
                        X_Audio_WRAPPER_LIST.push(\r
                                new X_Audio_BACKENDS[ this._backend ]\r
                                .klass( this, e.source, e.option ) );\r
                        break;\r
                \r
-               case X_Event.BACKEND_NONE :\r
-                       this.kill();\r
+               case X_EVENT_BACKEND_NONE :\r
+                       this[ 'kill' ]();\r
                        break;\r
                \r
-               case X_Event.KILL_INSTANCE :\r
+               case X_EVENT_KILL_INSTANCE :\r
                        this._backend !== -1 && X_Audio_getAudioWrapper( this ).close();\r
                        break;\r
        };\r
@@ -180,10 +180,10 @@ function X_Audio_startDetectionBackend( backend, proxy, sourceList, option ){
                sup      = [ proxy, sourceList, option, source, ext ];\r
                sup[ 5 ] = sup;\r
                \r
-               proxy.listenOnce( X_Event.COMPLETE, backend, X_Audio_onEndedDetection, sup );\r
+               proxy[ 'listenOnce' ]( X_EVENT_COMPLETE, backend, X_Audio_onEndedDetection, sup );\r
                backend.detect( proxy, source, ext );\r
        } else {\r
-               proxy.asyncDispatch( X_Event.BACKEND_NONE );\r
+               proxy[ 'asyncDispatch' ]( X_EVENT_BACKEND_NONE );\r
        };\r
 };\r
 \r
@@ -192,23 +192,23 @@ function X_Audio_onEndedDetection( e, proxy, sourceList, option, source, ext, su
        \r
        if( e.canPlay ){\r
                proxy._backend = i;\r
-               proxy.asyncDispatch( {\r
-                       type        : X_Event.BACKEND_READY,\r
-                       option      : option,\r
-                       source      : source,\r
-                       backendName : this.backendName\r
+               proxy[ 'asyncDispatch' ]( {\r
+                       type          : X_EVENT_BACKEND_READY,\r
+                       'option'      : option,\r
+                       'source'      : source,\r
+                       'backendName' : this[ 'backendName' ]\r
                } );                    \r
        } else {\r
-               console.log( 'No ' + source + ' ' + this.backendName );\r
+               console.log( 'No ' + source + ' ' + this[ 'backendName' ] );\r
                if( sup[ 3 ] = source = sourceList[ sourceList.indexOf( source ) + 1 ] ){\r
                        sup[ 4 ] = ext    = X_URL_getEXT( source );\r
-                       proxy.listenOnce( X_Event.COMPLETE, this, X_Audio_onEndedDetection, sup );\r
+                       proxy[ 'listenOnce' ]( X_EVENT_COMPLETE, this, X_Audio_onEndedDetection, sup );\r
                        this.detect( proxy, source, ext );\r
                } else\r
                if( backend = X_Audio_BACKENDS[ i + 1 ] ){\r
                        X_Audio_startDetectionBackend( backend, proxy, sourceList, option );\r
                } else {\r
-                       proxy.asyncDispatch( X_Event.BACKEND_NONE );\r
+                       proxy[ 'asyncDispatch' ]( X_EVENT_BACKEND_NONE );\r
                };                              \r
        };\r
 };\r
index 38a9e8c..fb4a95f 100644 (file)
@@ -18,7 +18,7 @@ if( X_Audio_WebAudio_context ){
                };
        };
        
-       X_Audio_WebAudioWrapper = X.EventDispatcher.inherits(
+       X_Audio_WebAudioWrapper = X_EventDispatcher[ 'inherits' ](
                'X.AV.WebAudioWrapper',
                X.Class.POOL_OBJECT,
                {
@@ -67,23 +67,23 @@ if( X_Audio_WebAudio_context ){
                                } else
                                if( audio ){
                                        // TODO 当てにしていたaudioがclose 等した場合
-                                       audio.proxy.listenOnce( 'canplaythrough', this, this._onBufferReady );
+                                       audio.proxy[ 'listenOnce' ]( 'canplaythrough', this, this._onBufferReady );
                                } else {
                                        this.xhr = X.Net.xhrGet( url, 'arraybuffer' )
-                                                                       .listen( X_Event.PROGRESS, this )
-                                                                       .listenOnce( [ X_Event.SUCCESS, X_Event.COMPLETE, X_Event.CANCELED ], this );                                   
+                                                                       [ 'listen' ]( X_EVENT_PROGRESS, this )
+                                                                       [ 'listenOnce' ]( [ X_EVENT_SUCCESS, X_EVENT_COMPLETE, X_EVENT_CANCELED ], this );                                      
                                };
                        },
                        
                        handleEvent : function( e ){
                                switch( e.type ){
-                                       case X_Event.PROGRESS :
+                                       case X_EVENT_PROGRESS :
                                                e.percent ?
-                                                       this.proxy.dispatch( { type : 'progress', percent : e.percent } ) :
-                                                       this.proxy.dispatch( 'loadstart' );
+                                                       this.proxy[ 'dispatch' ]( { type : 'progress', percent : e.percent } ) :
+                                                       this.proxy[ 'dispatch' ]( 'loadstart' );
                                                return;
                                        
-                                       case X_Event.SUCCESS :
+                                       case X_EVENT_SUCCESS :
                                                console.log( 'WebAudio xhr success! ' + !!X_Audio_WebAudio_context.decodeAudioData + ' t:' + typeof e.data );
                                        // TODO 旧api
                                        // https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API/Porting_webkitAudioContext_code_to_standards_based_AudioContext
@@ -104,17 +104,17 @@ if( X_Audio_WebAudio_context ){
                                                };
                                                break;
 
-                                       case X_Event.CANCELED :
+                                       case X_EVENT_CANCELED :
                                                this.error = 1;
-                                               this.proxy.dispatch( 'aborted' );
+                                               this.proxy[ 'dispatch' ]( 'aborted' );
                                                break;
 
-                                       case X_Event.COMPLETE :
+                                       case X_EVENT_COMPLETE :
                                                this.error = 2;                         
-                                               this.proxy.asyncDispatch( { type : X_Event.ERROR, message : 'xhr error' } );
+                                               this.proxy[ 'asyncDispatch' ]( { type : X_EVENT_ERROR, message : 'xhr error' } );
                                                break;
                                };
-                               this.xhr.unlisten( [ X_Event.PROGRESS, X_Event.SUCCESS, X_Event.COMPLETE, X_Event.CANCELED ], this );
+                               this.xhr[ 'unlisten' ]( [ X_EVENT_PROGRESS, X_EVENT_SUCCESS, X_EVENT_COMPLETE, X_EVENT_CANCELED ], this );
                                delete this.xhr;
                        },
                        
@@ -124,21 +124,21 @@ if( X_Audio_WebAudio_context ){
                                        this.onDecodeSuccess && this._onDecodeComplete();
                                        
                        if ( !buffer ) {
-                           this.proxy.asyncDispatch( { type : X_Event.ERROR, message : 'buffer is ' + buffer } );
+                           this.proxy[ 'asyncDispatch' ]( { type : X_EVENT_ERROR, message : 'buffer is ' + buffer } );
                            return;
                        };
        
                        this.buffer   = buffer;
                        this.duration = buffer.duration * 1000;
                        /*
-                       this.proxy.asyncDispatch( 'loadedmetadata' );
-                       this.proxy.asyncDispatch( 'loadeddata' );
-                       this.proxy.asyncDispatch( 'canplay' );
-                       this.proxy.asyncDispatch( 'canplaythrough' );
+                       this.proxy[ 'asyncDispatch' ]( 'loadedmetadata' );
+                       this.proxy[ 'asyncDispatch' ]( 'loadeddata' );
+                       this.proxy[ 'asyncDispatch' ]( 'canplay' );
+                       this.proxy[ 'asyncDispatch' ]( 'canplaythrough' );
                        */
-                                       this.proxy.asyncDispatch( X_Event.READY );
+                                       this.proxy[ 'asyncDispatch' ]( X_EVENT_READY );
                        
-                       this.autoplay && X.Timer.once( 16, this, this.play );
+                       this.autoplay && X_Timer_once( 16, this, this.play );
                        
                        console.log( 'WebAudio decoded!' );
                                },
@@ -147,7 +147,7 @@ if( X_Audio_WebAudio_context ){
                                        console.log( 'WebAudio decode error!' );
                                        this._onDecodeComplete();
                                        this.error = 3;
-                                       this.proxy.asyncDispatch( { type : X_Event.ERROR, message : 'decode error' } );
+                                       this.proxy[ 'asyncDispatch' ]( { type : X_EVENT_ERROR, message : 'decode error' } );
                                },
                                
                                _onDecodeComplete : function(){
@@ -210,13 +210,13 @@ if( X_Audio_WebAudio_context ){
                    this.gainNode.gain.value = this.volume;
                    
                    // おかしい、stop 前に外していても呼ばれる、、、@Firefox33.1
-                   // 破棄された X.Callback が呼ばれて、obj._() でエラーになる。Firefox では、onended は使わない
+                   // 破棄された X.Callback が呼ばれて、obj.proxy() でエラーになる。Firefox では、onended は使わない
                 if( false && this.source.onended !== undefined ){
                        //console.log( '> use onended' );
                        this.source.onended = this._onended || ( this._onended = X_Callback_create( this, this._onEnded ) );
                 } else {
-                       this._timerID && X.Timer.remove( this._timerID );
-                                       this._timerID = X.Timer.once( end - begin, this, this._onEnded );
+                       this._timerID && X_Timer_remove( this._timerID );
+                                       this._timerID = X_Timer_once( end - begin, this, this._onEnded );
                 };
        
                    if( this.source.start ){
@@ -229,7 +229,7 @@ if( X_Audio_WebAudio_context ){
                    this._startPos    = begin;
                    this._endPosition = end;
                    this._startTime   = X_Audio_WebAudio_context.currentTime * 1000;
-                   this._interval    = this._interval || X.Timer.add( 1000, 0, this, this._onInterval );
+                   this._interval    = this._interval || X_Timer_add( 1000, 0, this, this._onInterval );
                        },
 
                                _onInterval : function(){
@@ -237,7 +237,7 @@ if( X_Audio_WebAudio_context ){
                                                delete this._interval;
                                                return X_Callback_UN_LISTEN;
                                        };
-                                       this.proxy.dispatch( X_Event.MEDIA_PLAYING );
+                                       this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_PLAYING );
                                },
                                                
                                _onEnded : function(){
@@ -254,20 +254,20 @@ if( X_Audio_WebAudio_context ){
                                        if( time < 0 ){
                                                console.log( '> onEnd crt:' + ( X_Audio_WebAudio_context.currentTime * 1000 ) + ' startTime:' + this._startTime +
                                                        ' from:' + this._startPos + ' to:' + this._endPosition );
-                                               this._timerID = X.Timer.once( -time, this, this._onEnded );
+                                               this._timerID = X_Timer_once( -time, this, this._onEnded );
                                                return;
                                        };
                                };
                                
                                if( this.loop ){
-                                       if( !( this.proxy.dispatch( X_Event.MEDIA_BEFORE_LOOP ) & X.Callback.PREVENT_DEFAULT ) ){
+                                       if( !( this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_Callback_PREVENT_DEFAULT ) ){
                                                this.looped = true;
-                                               this.proxy.dispatch( X_Event.MEDIA_LOOPED );
+                                               this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_LOOPED );
                                                this.play();
                                        };
                                } else {
                                        this.pause();
-                                       this.proxy.dispatch( X_Event.MEDIA_ENDED );
+                                       this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_ENDED );
                                };
                            };
                                },
@@ -279,7 +279,7 @@ if( X_Audio_WebAudio_context ){
                                
                                this.seekTime = this.state().currentTime;
                                
-                   this._timerID && X.Timer.remove( this._timerID );
+                   this._timerID && X_Timer_remove( this._timerID );
                                delete this._timerID;
                                delete this.playing;
 
@@ -331,7 +331,7 @@ if( X_Audio_WebAudio_context ){
 
                        // 
                        detect : function( proxy, source, ext ){
-                               proxy.asyncDispatch( { type : X_Event.COMPLETE, canPlay : X_Audio_codecs[ ext ] } );
+                               proxy[ 'asyncDispatch' ]( { type : X_EVENT_COMPLETE, canPlay : X_Audio_codecs[ ext ] } );
                        },
                        
                        klass : X_Audio_WebAudioWrapper
index 396a246..14aee23 100644 (file)
@@ -70,7 +70,7 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                };\r
        };\r
        \r
-       X_Audio_HTMLAudioWrapper = X.EventDispatcher.inherits(\r
+       X_Audio_HTMLAudioWrapper = X_EventDispatcher[ 'inherits' ](\r
                'X.AV.HTML5AudioWrapper',\r
                X.Class.POOL_OBJECT,\r
                {\r
@@ -100,61 +100,64 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                        _src             : '',\r
                        \r
                        Constructor : function( proxy, source, option ){\r
+                               var raw;\r
+                               \r
                                this.proxy   = proxy;\r
                                this._closed = false;\r
                                \r
                                X_AudioWrapper_updateStates( this, option );\r
 \r
                                if( option[ 'useVideo' ] ){\r
-                                       this._rawObject = document.createElement( 'video' );\r
-                       this._rawObject.preload           = 'none'; // auto, metadata, none\r
-                       //this._rawObject.autoplay = false, // no-auto\r
-                       this._rawObject.loop     = false;\r
-                       this._rawObject.muted    = false;\r
-                       //this._rawObject.crossorigin       = option[ 'crossorigin' ] || ''; //crossorigin: "anonymous", X.URL.isSameDomain() で切り替え\r
-                       this._rawObject.style.cssText     = 'position:absolute;bottom:0;left:-50px;width:100px;height:100px;opacity:0;';\r
-                                       this._rawObject.controls          = false;\r
-                                       this._rawObject.WebKitPlaysInline = true;\r
-                                       this._rawObject.src               = source;\r
-                                       //this._rawObject.onclick  = "alert('play');this.play();";\r
-                                       document.body.appendChild( this._rawObject );\r
-                                       //this._rawObject.load();\r
+                                       this[ '_rawObject' ] = raw = document.createElement( 'video' );\r
+                       raw.preload           = 'none'; // auto, metadata, none\r
+                       //raw.autoplay = false, // no-auto\r
+                       raw.loop     = false;\r
+                       raw.muted    = false;\r
+                       //raw.crossorigin       = option[ 'crossorigin' ] || ''; //crossorigin: "anonymous", X.URL.isSameDomain() で切り替え\r
+                       raw.style.cssText     = 'position:absolute;bottom:0;left:-50px;width:100px;height:100px;opacity:0;';\r
+                                       raw.controls          = false;\r
+                                       raw.WebKitPlaysInline = true;\r
+                                       raw.src               = source;\r
+                                       //raw.onclick  = "alert('play');this.play();";\r
+                                       document.body.appendChild( raw );\r
+                                       //raw.load();\r
                                } else {\r
-                                       this._rawObject = X_Audio_rawAudio || new X_Audio_constructor( source );// X_Doc_create( 'audio', { src : source } ).appendToRoot();//( X.X_Node_systemNode );\r
-                                       this._rawObject.autobuffer = false;\r
+                                       this[ '_rawObject' ] = X_Audio_rawAudio || new X_Audio_constructor( source );\r
+                                       // X_Doc_create( 'audio', { src : source } )[ 'appendTo' ]( X.Doc.body );\r
+                                       this[ '_rawObject' ].autobuffer = false;\r
                                        this._src = source;\r
                                };\r
                                \r
-                               this.listen( [\r
+                               this[ 'listen' ]( [\r
                                                'loadstart', 'load', 'progress', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'pause', 'loadedmetadata',\r
                                                'loadeddata', 'waiting', 'playing', 'canplay', 'canplaythrough', 'seeking', 'seeked', 'timeupdate', 'ended',\r
                                                'ratechange', 'durationchange', 'volumechange' ], this.handleEventProxy );                              \r
 \r
-                               //document.body.appendChild( this._rawObject );\r
-                               this._rawObject.autoplay = false;\r
+                               //document.body.appendChild( this[ '_rawObject' ] );\r
+                               this[ '_rawObject' ].autoplay = false;\r
 \r
-                               if( X_Audio_rawAudio === this._rawObject ){\r
+                               if( X_Audio_rawAudio === this[ '_rawObject' ] ){\r
                                        if( X_Audio_HTMLAudioWrapper_badOperaAndroid ){\r
                                                X_Audio_HTMLAudioWrapper_badOperaAndroid && alert( 12 );\r
                                                X_EventDispatcher_toggleAllEvents( this, false );\r
-                                               this._rawObject = new X_Audio_constructor( X_URL_toAbsolutePath( source ) );\r
+                                               this[ '_rawObject' ] = new X_Audio_constructor( X_URL_toAbsolutePath( source ) );\r
                                                //X_EventDispatcher_toggleAllEvents( this, true );\r
                                        } else {\r
                                                X_Audio_rawAudio.src = source;\r
                                        };\r
 \r
-                                       //this._rawObject = new X_Audio_constructor( X_URL_toAbsolutePath( source ) );\r
+                                       //this[ '_rawObject' ] = new X_Audio_constructor( X_URL_toAbsolutePath( source ) );\r
                                        /*!X_Audio_Sprite_needTouchFirst && */ X_Audio_rawAudio.load(); // 要る?\r
                                        X_Audio_rawAudio = null;\r
                                };\r
 \r
-                               this.listenOnce( X_Event.KILL_INSTANCE );\r
+                               this[ 'listenOnce' ]( X_EVENT_KILL_INSTANCE );\r
                        },\r
                        \r
                        handleEvent : function( e ){\r
                                switch( e.type ){\r
 \r
-                                       case X_Event.KILL_INSTANCE :\r
+                                       case X_EVENT_KILL_INSTANCE :\r
                                                break;\r
                                };\r
                        },\r
@@ -173,24 +176,24 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                                break;\r
                                        case 'progress' :       //      ブラウザがコンテンツの取得を実行した場合に発生\r
                                                console.log( e.loaded + ' ' + e.total * 100 + '%' );\r
-                                               // iem9 で常に0 this._rawObject.networkState;\r
+                                               // iem9 で常に0 this[ '_rawObject' ].networkState;\r
                                                // opera Android 12 で buffered.end() へのアクセスはエラー try catch も無効、iem9 は常に end(0) = 0\r
-                                               //console.log( 'buffered.end ' + this._rawObject.buffered && this._rawObject.buffered.end(0) ); \r
+                                               //console.log( 'buffered.end ' + this[ '_rawObject' ].buffered && this[ '_rawObject' ].buffered.end(0) ); \r
                                                break;\r
                                        \r
                                        case 'canplay' :        //      今すぐに再生を再開できるが、バッファリングが不十分でコンテンツを最後まで表示できないと予測している場合に発生\r
                                                if( X_Audio_HTMLAudioWrapper_durationFix && this._playForDuration === 0 ){\r
-                                                       //console.log( 'DurationFix開始 - ' + this._rawObject.duration );\r
+                                                       //console.log( 'DurationFix開始 - ' + this[ '_rawObject' ].duration );\r
                                                        this._playForDuration = 1;\r
-                                                       this._rawObject.play();\r
-                                                       this._rawObject.currentTime = this._beginTime / 1000; // 必要!\r
+                                                       this[ '_rawObject' ].play();\r
+                                                       this[ '_rawObject' ].currentTime = this._beginTime / 1000; // 必要!\r
                                                        return;\r
                                                };\r
                                        case 'loadedmetadata' : //      ブラウザがメディアリソースの長さと寸法を判定した場合に発生\r
                                        case 'loadeddata' :     //      コンテンツの表示を現在の再生位置で初めて行えるようになった場合に発生\r
                                        case 'canplaythrough' : //      今すぐに再生を開始してもバッファリングで停止することなく最後まで表示できると予測している場合に発生\r
                                                if( X_Audio_HTMLAudioWrapper_durationFix && this._playForDuration !== 2 ) return;\r
-                                               this.duration = this.duration || this._rawObject.duration * 1000;\r
+                                               this.duration = this.duration || this[ '_rawObject' ].duration * 1000;\r
                                                break;\r
        \r
                                        case 'stalled' :        //      ブラウザがコンテンツの取得を試みたが、データがまだ用意されていない場合に発生\r
@@ -202,14 +205,14 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                                break;\r
                                                \r
                                        case 'error' :          //      コンテンツの取得実行中にエラーが発生した場合に発生\r
-                                               type = X_Event.ERROR;\r
+                                               type = X_EVENT_ERROR;\r
                                                break;\r
                                        \r
                                        case 'playing' :        //      再生が開始された場合に発生\r
                                                if( X_Audio_HTMLAudioWrapper_currentTimeFix ){\r
                                                        this._playTime  = X_Timer_now();\r
                                                };\r
-                                               type = X_Event.MEDIA_PLAYING;\r
+                                               type = X_EVENT_MEDIA_PLAYING;\r
                                        case 'play' :           //      再生が開始された。play()メソッドからの復帰後に発生する場合に発生\r
                                        case 'pause' :          //      再生が一時停止された。pauseメソッドからの復帰後に発生する場合に発生\r
                                        case 'seeked' :         //      シークがfalseに変化した場合に発生\r
@@ -219,22 +222,22 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                                break;\r
                                                \r
                                        case 'waiting' :        //      次のフレームが利用不可のため再生を停止したが、そのフレームがやがて利用可能になると想定している場合に発生\r
-                                               type = X_Event.MEDIA_WAITING;\r
+                                               type = X_EVENT_MEDIA_WAITING;\r
                                        case 'seeking' :        //      シークがtrueに変化し、イベントを発生させるのに十分な時間がシーク操作にかかっている場合に発生\r
-                                               type = type || X_Event.MEDIA_SEEKING;\r
+                                               type = type || X_EVENT_MEDIA_SEEKING;\r
                                                if( this._playForDuration === 1 ) return;\r
                                                break;\r
                                                \r
                                        case 'ended' :\r
                                                if( !this._closed && this.loop ){\r
-                                                       if( !( this.proxy.dispatch( X_Event.MEDIA_BEFORE_LOOP ) & X.Callback.PREVENT_DEFAULT ) ){\r
+                                                       if( !( this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_Callback_PREVENT_DEFAULT ) ){\r
                                                                this.looped = true;\r
-                                                               this.proxy.dispatch( X_Event.MEDIA_LOOPED );\r
+                                                               this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_LOOPED );\r
                                                                this.play();\r
                                                        };\r
                                                        return;\r
                                                };\r
-                                               type = X_Event.MEDIA_ENDED;\r
+                                               type = X_EVENT_MEDIA_ENDED;\r
                                                this.seekTime = 0;\r
                                                delete this.playing;\r
                                                break;\r
@@ -242,65 +245,65 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                        case 'timeupdate' :     //      通常の再生が行われ現在の再生位置の変化が起こった場合に発生\r
                                                if( X_Audio_HTMLAudioWrapper_ieMobile9Fix ){\r
                                                        if( this._playForDuration === 1 ){\r
-                                                               console.log( 'tu ' + this._rawObject.duration );\r
-                                                               if( !this.duration && X_Type_isFinite( this._rawObject.duration ) ){\r
-                                                                       this.duration = this.duration || this._rawObject.duration * 1000;\r
+                                                               console.log( 'tu ' + this[ '_rawObject' ].duration );\r
+                                                               if( !this.duration && X_Type_isFinite( this[ '_rawObject' ].duration ) ){\r
+                                                                       this.duration = this.duration || this[ '_rawObject' ].duration * 1000;\r
                                                                        this._playForDuration = 2;\r
                                                                        \r
-                                                       //this.proxy.asyncDispatch( 'loadedmetadata' );\r
-                                                       //this.proxy.asyncDispatch( 'loadeddata' );\r
-                                                       //this.proxy.asyncDispatch( 'canplay' );\r
-                                                       //this.proxy.asyncDispatch( 'canplaythrough' );\r
+                                                       //this.proxy[ 'asyncDispatch' ]( 'loadedmetadata' );\r
+                                                       //this.proxy[ 'asyncDispatch' ]( 'loadeddata' );\r
+                                                       //this.proxy[ 'asyncDispatch' ]( 'canplay' );\r
+                                                       //this.proxy[ 'asyncDispatch' ]( 'canplaythrough' );\r
                                                        loaded = true;\r
                                                        //console.log( 'durationFix が完了' + this.duration );\r
                                                        break;\r
                                                                } else {\r
-                                                                       this._rawObject.currentTime = this._beginTime / 1000; // 必要!\r
+                                                                       this[ '_rawObject' ].currentTime = this._beginTime / 1000; // 必要!\r
                                                                        return;\r
                                                                };\r
                                                        } else\r
-                                                       if( this._rawObject.currentTime === this._lastCurrentTime ){\r
-                                                               //this.proxy.dispatch( 'seeking' );\r
-                                                               this.proxy.dispatch( X_Event.MEDIA_WAITING );\r
+                                                       if( this[ '_rawObject' ].currentTime === this._lastCurrentTime ){\r
+                                                               //this.proxy[ 'dispatch' ]( 'seeking' );\r
+                                                               this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_WAITING );\r
                                                                return;\r
                                                        };\r
-                                                       this._lastCurrentTime = this._rawObject.currentTime;\r
+                                                       this._lastCurrentTime = this[ '_rawObject' ].currentTime;\r
                                                };\r
-                                               this.duration = this.duration || this._rawObject.duration * 1000;\r
+                                               this.duration = this.duration || this[ '_rawObject' ].duration * 1000;\r
 \r
                                    if( this.playing ){\r
                                        end = X_AudioWrapper_getEndTime( this );\r
-                                       now = X_Audio_HTMLAudioWrapper_currentTimeFix ? X_Timer_now() - this._playTime + this._beginTime : this._rawObject.currentTime * 1000 | 0;\r
+                                       now = X_Audio_HTMLAudioWrapper_currentTimeFix ? X_Timer_now() - this._playTime + this._beginTime : this[ '_rawObject' ].currentTime * 1000 | 0;\r
                                        if( 0 + end <= 0 + now ){ // なぜか iem9 で必要,,,\r
                                                if( this.loop ){\r
-                                                       if( !( this.proxy.dispatch( X_Event.MEDIA_BEFORE_LOOP ) & X.Callback.PREVENT_DEFAULT ) ){\r
+                                                       if( !( this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_Callback_PREVENT_DEFAULT ) ){\r
                                                                this.looped = true;\r
-                                                               this.proxy.dispatch( X_Event.MEDIA_LOOPED );\r
+                                                               this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_LOOPED );\r
                                                                this.play();\r
                                                        };\r
                                                } else {\r
                                                        this.pause();\r
-                                                       this.proxy.dispatch( X_Event.MEDIA_ENDED );\r
+                                                       this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_ENDED );\r
                                                };\r
                                                return;\r
                                        };\r
                                    } else {\r
                                        return;\r
                                    };\r
-                                   type = X_Event.MEDIA_PLAYING;\r
+                                   type = X_EVENT_MEDIA_PLAYING;\r
                                                break;\r
                                                \r
                                        case 'durationchange' : // duration属性が更新された場合に発生\r
                                                \r
                                                if( !X_Audio_HTMLAudioWrapper_durationFix ){\r
-                                                       this.duration = this._rawObject.duration * 1000;\r
+                                                       this.duration = this[ '_rawObject' ].duration * 1000;\r
                                                } else\r
                                                // Desktop Opera では Infinity, IEM9 では NaN\r
-                                               if( !this.duration && X_Type_isFinite( this._rawObject.duration ) ){\r
+                                               if( !this.duration && X_Type_isFinite( this[ '_rawObject' ].duration ) ){\r
                                                        \r
-                                                       //console.log( this._rawObject.duration );\r
+                                                       //console.log( this[ '_rawObject' ].duration );\r
                                                        \r
-                                                       this.duration = this._rawObject.duration * 1000;\r
+                                                       this.duration = this[ '_rawObject' ].duration * 1000;\r
                                                        \r
                                                        if( this._playForDuration === 0 ) this._playForDuration = 2;\r
                                                        \r
@@ -310,28 +313,28 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                                                console.log( 'Loaded ' + this._loaded );\r
                                                                \r
                                                                if( this._loaded ){\r
-                                                                       this._rawObject.currentTime = this._beginTime / 1000;\r
+                                                                       this[ '_rawObject' ].currentTime = this._beginTime / 1000;\r
                                                                        console.log( '設定 ' + this._beginTime );\r
                                                                        return;\r
                                                                };\r
                                                                \r
                                                                /*\r
-                                               this.proxy.asyncDispatch( 'loadedmetadata' );\r
-                                               this.proxy.asyncDispatch( 'loadeddata' );\r
-                                               this.proxy.asyncDispatch( 'canplay' );\r
-                                               this.proxy.asyncDispatch( 'canplaythrough' ); */\r
+                                               this.proxy[ 'asyncDispatch' ]( 'loadedmetadata' );\r
+                                               this.proxy[ 'asyncDispatch' ]( 'loadeddata' );\r
+                                               this.proxy[ 'asyncDispatch' ]( 'canplay' );\r
+                                               this.proxy[ 'asyncDispatch' ]( 'canplaythrough' ); */\r
                                               \r
                                                \r
                                                loaded = true;\r
                                                console.log( 'durationFix が完了' + this.duration );\r
                                                \r
                                                if( this.autoplay ){\r
-                                                                       this._rawObject.currentTime = this._beginTime / 1000;   \r
+                                                                       this[ '_rawObject' ].currentTime = this._beginTime / 1000;      \r
                                                } else {\r
                                                        // Opera12.17 WinXP で勝手に再生される不具合\r
                                                        // これで一応再生は止まる、、、\r
-                                                                       this._rawObject.src = '';\r
-                                                                       //this._rawObject.load();                                               \r
+                                                                       this[ '_rawObject' ].src = '';\r
+                                                                       //this[ '_rawObject' ].load();                                          \r
                                                };\r
                                                        };\r
                                                        \r
@@ -342,14 +345,14 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                \r
                                \r
                                if( !this._loaded && ( loaded || e.type === X_Audio_HTMLAudio_playTrigger || e.type === 'loadeddata' ) ){\r
-                                       this.autoplay && X.Timer.once( 16, this, this.play );\r
+                                       this.autoplay && X_Timer_once( 16, this, this.play );\r
                                        this._loaded = true;\r
-                                       this.proxy.dispatch( X_Event.READY );\r
+                                       this.proxy[ 'dispatch' ]( X_EVENT_READY );\r
                                        console.log( 'Loaded! ' + e.type + ' d:' + ( this.duration | 0 ) );\r
                                        return;\r
                                };\r
                                \r
-                               loaded || ( type && this.proxy.dispatch( type ) );\r
+                               loaded || ( type && this.proxy[ 'dispatch' ]( type ) );\r
                        },\r
                        \r
                        close : function(){\r
@@ -360,8 +363,8 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                delete this._closed;\r
                                delete this._loaded;\r
                                \r
-                               this._rawObject.src = '';\r
-                               this._rawObject.load();\r
+                               this[ '_rawObject' ].src = '';\r
+                               this[ '_rawObject' ].load();\r
                        },\r
                        \r
                        play : function(){\r
@@ -375,7 +378,7 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                };\r
 \r
                                if( X_Audio_HTMLAudioWrapper_ieMobile9Fix && this._playForDuration === 0 ){\r
-                                       console.log( 'DurationFix開始 - ' + this._rawObject.duration );\r
+                                       console.log( 'DurationFix開始 - ' + this[ '_rawObject' ].duration );\r
                                        this._playForDuration = 1;\r
                                };\r
 \r
@@ -387,9 +390,9 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                        begin  = begin < 0 ? 0 : begin;\r
                    };\r
 \r
-                               if( !this._rawObject.src ){\r
+                               if( !this[ '_rawObject' ].src ){\r
                                        this._beginTime = begin;\r
-                                       this._rawObject.src = this._src;\r
+                                       this[ '_rawObject' ].src = this._src;\r
                                        delete this._playForDuration;\r
                                };\r
 \r
@@ -397,18 +400,18 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                            if( !this.playing ){\r
                                    if( X_UA[ 'Chrome' ] ){ // [CHROME][FIX] volume TODO どの version で 修正される?\r
                                        // [!] delay\r
-                                       X.Timer.once( 0, this, this._fixForChrome );\r
-                                       this._rawObject.volume = 0;\r
+                                       X_Timer_once( 0, this, this._fixForChrome );\r
+                                       this[ '_rawObject' ].volume = 0;\r
                                    } else {\r
-                                       this._rawObject.volume = this.volume;\r
+                                       this[ '_rawObject' ].volume = this.volume;\r
                                    };\r
-                               this._rawObject.play();\r
+                               this[ '_rawObject' ].play();\r
                                this.playing = true;\r
                            };\r
                                //http://himaxoff.blog111.fc2.com/blog-entry-97.html\r
                                //Firefox3.6では一度も play() していない状態で currentTime = 0 を実行するとエラーになる。\r
                                //また、GoogleChrome7 では currentTime = 0 直後に play() すると、pause()した位置前後の音が混ざることがある。(少なくとも自分の環境では)\r
-                               this._rawObject.currentTime = this._lastCurrentTime = begin / 1000;\r
+                               this[ '_rawObject' ].currentTime = this._lastCurrentTime = begin / 1000;\r
 \r
                            console.log( '[HTMLAudio] play ' + begin + ' -> ' + end );\r
                    \r
@@ -421,7 +424,7 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                \r
                                // [CHROME][FIX] volume\r
                                _fixForChrome : X_UA[ 'Chrome' ] && function(){\r
-                                       !this._closed && ( this._rawObject.volume = this.volume );\r
+                                       !this._closed && ( this[ '_rawObject' ].volume = this.volume );\r
                                },\r
                        \r
                        pause : function(){\r
@@ -431,10 +434,10 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
 \r
                                delete this._playTime;\r
 \r
-                       !this._rawObject.error && this._rawObject.pause();\r
+                       !this[ '_rawObject' ].error && this[ '_rawObject' ].pause();\r
                        \r
                        if( X_Audio_HTMLAudioWrapper_durationFix ){\r
-                               this._rawObject.src = '';\r
+                               this[ '_rawObject' ].src = '';\r
                                // load();\r
                        };\r
                        delete this.playing;\r
@@ -453,14 +456,14 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                        loop          : this.loop,\r
                                        looped        : this.looped,\r
                                        volume        : this.volume,\r
-                                       playing       : this.playing, // && !this._rawObject.error && !this._rawObject.paused && !this._rawObject.ended,                                \r
+                                       playing       : this.playing, // && !this[ '_rawObject' ].error && !this[ '_rawObject' ].paused && !this[ '_rawObject' ].ended,                         \r
                                        duration      : this.duration,\r
                                        \r
                                        currentTime   :\r
                                                this.playing ?\r
                                                        ( X_Audio_HTMLAudioWrapper_currentTimeFix ?\r
                                                                X_Timer_now() - this._playTime + this._beginTime :\r
-                                                               this._rawObject.currentTime * 1000 | 0 ) :\r
+                                                               this[ '_rawObject' ].currentTime * 1000 | 0 ) :\r
                                                        this.seekTime,\r
                                        /*\r
        http://www.w3schools.com/tags/av_prop_error.asp\r
@@ -469,7 +472,7 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
     3 = MEDIA_ERR_DECODE - error occurred when decoding\r
     4 = MEDIA_ERR_SRC_NOT_SUPPORTED - audio/video not supported\r
     */\r
-                                       error         : this._rawObject.error || 0   // 0, 1 ~ 4 \r
+                                       error         : this[ '_rawObject' ].error || 0   // 0, 1 ~ 4 \r
                                    };                                  \r
                                };\r
                        \r
@@ -485,7 +488,7 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
 \r
                                } else\r
                                if( result & 4 ){\r
-                      this._rawObject.volume = this.volume;\r
+                      this[ '_rawObject' ].volume = this.volume;\r
                                };\r
                            \r
                        }\r
@@ -560,7 +563,7 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                console.log( 'HTML Audio ' + ok + ' ext:' + ext );\r
                                */\r
                                \r
-                               proxy.asyncDispatch( { type : X_Event.COMPLETE, canPlay : X_Audio_codecs[ ext ] } );\r
+                               proxy[ 'asyncDispatch' ]( { type : X_EVENT_COMPLETE, canPlay : X_Audio_codecs[ ext ] } );\r
                        },\r
                        \r
                        klass : X_Audio_HTMLAudioWrapper\r
index ce8ffa7..6cd6f6c 100644 (file)
@@ -18,7 +18,7 @@ var X_Audio_SLAudioWrapper,
 if( X.Pulgin.SilverlightEnabled ){\r
        \r
        // X.Node.inherits はできない。_rawObject は <object> でなく silverlight\r
-       X_Audio_SLAudioWrapper = X.EventDispatcher.inherits(\r
+       X_Audio_SLAudioWrapper = X_EventDispatcher[ 'inherits' ](\r
                'X.AV.SilverlightAudioWrapper',\r
                X.Class.POOL_OBJECT,\r
                {\r
@@ -53,8 +53,8 @@ if( X.Pulgin.SilverlightEnabled ){
                                \r
                                if( !X_Audio_SLAudio_uid ){\r
                                        // source\r
-                                       // X_Node_systemNode.create( 'script', { type : 'text/xaml', id : 'silverlightaudio' } )\r
-                                       //      .text( '<Canvas xmlns="http://schemas.microsoft.com/client/2007" ' +\r
+                                       // X_Node_systemNode[ 'create' ]( 'script', { type : 'text/xaml', id : 'silverlightaudio' } )\r
+                                       //      [ 'text' ]( '<Canvas xmlns="http://schemas.microsoft.com/client/2007" ' +\r
                                        // 'xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"></Canvas>');\r
                                        \r
                                        // html に以下を書いた                     \r
@@ -73,13 +73,13 @@ if( X.Pulgin.SilverlightEnabled ){
                        this._onload     = 'XAudioSilverlightOnLoad' + ( ++X_Audio_SLAudio_uid );\r
                                this._callback   = window[ this._onload ] = X_Callback_create( this, this.onSLReady );\r
                        this.xnodeObject = X_Node_body\r
-                               .create( 'object', {\r
+                               [ 'create' ]( 'object', {\r
                                                type   : 'application/x-silverlight-2',\r
                                                data   : 'data:application/x-silverlight-2,',\r
                                                width  : 1,\r
                                                height : 1\r
                                        })\r
-                                       .html(\r
+                                       [ 'html' ](\r
                                            '<param name="background" value="#00000000">' +      // transparent\r
                                            '<param name="windowless" value="true">' +\r
                                            '<param name="source" value="#silverlightaudio">' +  // XAML ID\r
@@ -90,7 +90,7 @@ if( X.Pulgin.SilverlightEnabled ){
                                        );\r
                                X_AudioWrapper_updateStates( this, option );\r
        \r
-                               this.listenOnce( X_Event.KILL_INSTANCE );\r
+                               this[ 'listenOnce' ]( X_EVENT_KILL_INSTANCE );\r
                        },\r
                        \r
                        onSLReady : function( sender ){\r
@@ -109,9 +109,9 @@ if( X.Pulgin.SilverlightEnabled ){
                                                '<MediaElement x:Name="media" Source="' + this._source + '" Volume="' + this.volume + '" AutoPlay="false" />' +\r
                                        '</Canvas>'));\r
                \r
-                               this._rawObject = sender.findName('media'); // x:Name='media'\r
+                               this[ '_rawObject' ] = sender.findName('media'); // x:Name='media'\r
 \r
-                               this.listen( [ 'MediaFailed', 'MediaOpened', 'MediaEnded', 'CurrentStateChanged' ] );\r
+                               this[ 'listen' ]( [ 'MediaFailed', 'MediaOpened', 'MediaEnded', 'CurrentStateChanged' ] );\r
                        },\r
                        \r
                        handleEvent : function( e ){\r
@@ -125,21 +125,21 @@ if( X.Pulgin.SilverlightEnabled ){
                                                this.playing = false;\r
                                                this._ended  = true;\r
                                                this._paused = false;\r
-                                               this.proxy.dispatch( X_Event.ERROR ); // open failed\r
+                                               this.proxy[ 'dispatch' ]( X_EVENT_ERROR ); // open failed\r
                                                break;\r
 \r
                                        case 'MediaOpened' :\r
                                                // http://msdn.microsoft.com/ja-jp/library/bb979710(VS.95).aspx\r
-                                               this.duration = this._rawObject.NaturalDuration.Seconds * 1000;\r
+                                               this.duration = this[ '_rawObject' ].NaturalDuration.Seconds * 1000;\r
                                                // TODO 'canplaythrough'\r
-                                               //this.proxy.asyncDispatch( 'loadstart' );\r
-                               //this.proxy.asyncDispatch( 'loadedmetadata' );\r
-                               //this.proxy.asyncDispatch( 'loadeddata' );\r
-                               //this.proxy.asyncDispatch( 'canplay' );\r
-                               //this.proxy.asyncDispatch( 'canplaythrough' );\r
-                               this.proxy.asyncDispatch( X_Event.READY );\r
+                                               //this.proxy[ 'asyncDispatch' ]( 'loadstart' );\r
+                               //this.proxy[ 'asyncDispatch' ]( 'loadedmetadata' );\r
+                               //this.proxy[ 'asyncDispatch' ]( 'loadeddata' );\r
+                               //this.proxy[ 'asyncDispatch' ]( 'canplay' );\r
+                               //this.proxy[ 'asyncDispatch' ]( 'canplaythrough' );\r
+                               this.proxy[ 'asyncDispatch' ]( X_EVENT_READY );\r
                                \r
-                               this.autoplay && X.Timer.once( 16, this, this.play );\r
+                               this.autoplay && X_Timer_once( 16, this, this.play );\r
                                                break;\r
 \r
                                        case 'MediaEnded' :                             \r
@@ -148,7 +148,7 @@ if( X.Pulgin.SilverlightEnabled ){
 \r
                                        case 'CurrentStateChanged' :\r
                                                lastState        = this._lastState,\r
-                                               currentState = this._rawObject.CurrentState;\r
+                                               currentState = this[ '_rawObject' ].CurrentState;\r
                                \r
                                                // ignore consecutive events or 'Closed' == 'Error'\r
                                                if( lastState === currentState\r
@@ -162,10 +162,10 @@ if( X.Pulgin.SilverlightEnabled ){
                                                        case 'Opening' :\r
                                                                switch( this._lastUserAction ){\r
                                                                        case 'play' :\r
-                                                                               this.proxy.dispatch( X_Event.MEDIA_WAITING );\r
+                                                                               this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_WAITING );\r
                                                                                break;\r
                                                                        case 'seek' :\r
-                                                                               this.proxy.dispatch( X_Event.MEDIA_SEEKING );\r
+                                                                               this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_SEEKING );\r
                                                                                break;\r
                                                                        case 'pause' :\r
                                                                                break;\r
@@ -182,7 +182,7 @@ if( X.Pulgin.SilverlightEnabled ){
                                                                this.playing = false;\r
                                                                this._ended  = true;\r
                                                                this._paused = false;\r
-                                                               this.proxy.dispatch( X_Event.ERROR );\r
+                                                               this.proxy[ 'dispatch' ]( X_EVENT_ERROR );\r
                                                                break;\r
 \r
                                                        // userAction.pause()              -> MediaState('Paused') -> x\r
@@ -197,7 +197,7 @@ if( X.Pulgin.SilverlightEnabled ){
                                                                                this.seekTime = 0;\r
                                                                                this._ended   = true;\r
                                                                                this._paused  = false;\r
-                                                                               this.proxy.dispatch( X_Event.MEDIA_ENDED );\r
+                                                                               this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_ENDED );\r
                                                                                this._currentTime( this.startTime );\r
                                                                                break;\r
                                                                        case 'pause':\r
@@ -216,7 +216,7 @@ if( X.Pulgin.SilverlightEnabled ){
                                                                this.playing = true;\r
                                                                this._ended  = false;\r
                                                                this._paused = false;\r
-                                                               this.proxy.dispatch( X_Event.MEDIA_PLAYING );\r
+                                                               this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_PLAYING );\r
                                                                break;\r
 \r
                                                        // stop()\r
@@ -229,7 +229,7 @@ if( X.Pulgin.SilverlightEnabled ){
                                                };\r
                                                break;\r
 \r
-                                       case X_Event.KILL_INSTANCE :\r
+                                       case X_EVENT_KILL_INSTANCE :\r
                                                if( this._onload ){\r
                                                        // window への delete に ie5 は対応しないが、そもそも ie5 は Silverlight に非対応\r
                                                        window[ this._onload ] = null;\r
@@ -243,8 +243,8 @@ if( X.Pulgin.SilverlightEnabled ){
                        \r
                        close : function(){\r
                                this.playing && this.pause();\r
-                               this.proxy.dispatch( X_Event.MEDIA_ENDED );\r
-                               this.kill();\r
+                               this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_ENDED );\r
+                               this[ 'kill' ]();\r
                        },\r
                        \r
                        // SilverlightAudio.play\r
@@ -265,27 +265,27 @@ if( X.Pulgin.SilverlightEnabled ){
                                \r
                                console.log( '[SLAudio] play ' + begin + ' -> ' + end );\r
                                \r
-                           this._rawObject.Volume = this.volume;\r
+                           this[ '_rawObject' ].Volume = this.volume;\r
                            this._beginTime = begin;\r
                            this._currentTime( begin );\r
                            \r
                            if( !this.playing ){\r
-                                   this._rawObject.play();\r
-                           //this.proxy.dispatch( 'play' );\r
+                                   this[ '_rawObject' ].play();\r
+                           //this.proxy[ 'dispatch' ]( 'play' );\r
                            \r
                            this.playing = true;\r
                            };\r
                    \r
-                   this._timerID && X.Timer.remove( this._timerID );\r
+                   this._timerID && X_Timer_remove( this._timerID );\r
                    \r
                 if( end < this.duration ){\r
-                                       this._timerID = X.Timer.once( end - begin, this, this._onEnded );\r
+                                       this._timerID = X_Timer_once( end - begin, this, this._onEnded );\r
                 } else {\r
                        delete this._timerID;\r
                 };\r
                 \r
                                if( !this._interval ){\r
-                                       this._interval = X.Timer.add( 1000, 0, this, this._onInterval );\r
+                                       this._interval = X_Timer_add( 1000, 0, this, this._onInterval );\r
                                };\r
                        },\r
                                \r
@@ -294,7 +294,7 @@ if( X.Pulgin.SilverlightEnabled ){
                                                delete this._interval;\r
                                                return X_Callback_UN_LISTEN;\r
                                        };\r
-                                       this.proxy.dispatch( X_Event.MEDIA_PLAYING );\r
+                                       this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_PLAYING );\r
                                },\r
                                \r
                                _onEnded : function(){\r
@@ -302,32 +302,32 @@ if( X.Pulgin.SilverlightEnabled ){
                                        delete this._timerID;\r
                                        \r
                            if( this.playing ){\r
-                               console.log( '> end ' + X_AudioWrapper_getEndTime( this ) + ' current:' + ( this._rawObject.Position.Seconds * 1000 | 0 ) );\r
-                               time = this._rawObject.Position.Seconds * 1000 | 0;\r
+                               console.log( '> end ' + X_AudioWrapper_getEndTime( this ) + ' current:' + ( this[ '_rawObject' ].Position.Seconds * 1000 | 0 ) );\r
+                               time = this[ '_rawObject' ].Position.Seconds * 1000 | 0;\r
                                \r
                                if( time <= this._beginTime ){\r
                                        console.log( '== waiting' );\r
-                                       this.proxy.dispatch( X_Event.MEDIA_WAITING );\r
-                                       this._timerID = X.Timer.once( X_AudioWrapper_getEndTime( this ) - this._beginTime, this, this._onEnded );\r
+                                       this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_WAITING );\r
+                                       this._timerID = X_Timer_once( X_AudioWrapper_getEndTime( this ) - this._beginTime, this, this._onEnded );\r
                                        return;\r
                                };\r
                                \r
                                time -= X_AudioWrapper_getEndTime( this );\r
                                if( time < 0 ){\r
                                        console.log( '> onEnd ' + time );\r
-                                       this._timerID = X.Timer.once( -time, this, this._onEnded );\r
+                                       this._timerID = X_Timer_once( -time, this, this._onEnded );\r
                                        return;\r
                                };\r
                                \r
                                if( this.loop ){\r
-                                       if( !( this.proxy.dispatch( X_Event.MEDIA_BEFORE_LOOP ) & X.Callback.PREVENT_DEFAULT ) ){\r
+                                       if( !( this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_Callback_PREVENT_DEFAULT ) ){\r
                                                this.looped = true;\r
-                                               this.proxy.dispatch( X_Event.MEDIA_LOOPED );\r
+                                               this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_LOOPED );\r
                                                this.play();\r
                                        };\r
                                } else {\r
                                        this.pause();\r
-                                       this.proxy.dispatch( X_Event.MEDIA_ENDED );\r
+                                       this.proxy[ 'dispatch' ]( X_EVENT_MEDIA_ENDED );\r
                                };\r
                            };\r
                                },\r
@@ -342,8 +342,8 @@ if( X.Pulgin.SilverlightEnabled ){
                                this._paused  = true;\r
                                this._ended   = false;\r
                                                        \r
-                               this._rawObject.pause();\r
-                               //this.proxy.dispatch( 'pause' );\r
+                               this[ '_rawObject' ].pause();\r
+                               //this.proxy[ 'dispatch' ]( 'pause' );\r
                        },\r
                        \r
                        // SilverlightAudio.state\r
@@ -358,14 +358,14 @@ if( X.Pulgin.SilverlightEnabled ){
                                        loopEndTime   : this.loopEndTime < 0 ? ( this.endTime || this.duration ) : this.loopEndTime,\r
                                        \r
                                        // 整数化 しておかないと seek 時に不具合がある。\r
-                                       currentTime   : this.playing ? this._rawObject.Position.Seconds * 1000 | 0 : this.seekTime,\r
+                                       currentTime   : this.playing ? this[ '_rawObject' ].Position.Seconds * 1000 | 0 : this.seekTime,\r
 \r
                                        loop          : this.loop,\r
                                        looped        : this.looped,\r
                                        volume        : this.volume,\r
                                        error         : this.error,\r
                                        playing       : this.playing,\r
-                                       duration      : this.duration // this._rawObject.NaturalDuration.Seconds;\r
+                                       duration      : this.duration // this[ '_rawObject' ].NaturalDuration.Seconds;\r
                                    };\r
                                };\r
                        \r
@@ -377,28 +377,28 @@ if( X.Pulgin.SilverlightEnabled ){
                                        if( result & 1 ){\r
                                                end     = X_AudioWrapper_getEndTime( this );\r
                                                halfway = end < this.duration;\r
-                                               this._timerID && X.Timer.remove( this._timerID );\r
+                                               this._timerID && X_Timer_remove( this._timerID );\r
                                                \r
                                                if( halfway ){\r
-                                                       this._timerID = X.Timer.once( end - this._rawObject.Position.Seconds * 1000 | 0, this, this._onEnded );\r
+                                                       this._timerID = X_Timer_once( end - this[ '_rawObject' ].Position.Seconds * 1000 | 0, this, this._onEnded );\r
                                                } else {\r
                                                        delete this._timerID;\r
                                                };\r
 \r
                                        };\r
                                        if( result & 4 ){\r
-                              this._rawObject.Volume = this.volume;\r
+                              this[ '_rawObject' ].Volume = this.volume;\r
                                        };\r
                                };\r
                        },\r
                        \r
                                // SilverlightAudio.currentTime\r
                                _currentTime : function( time ){ // @param Number: time\r
-                                       var position = this._rawObject.Position; // [!] create instance\r
+                                       var position = this[ '_rawObject' ].Position; // [!] create instance\r
        \r
                                        position.Seconds = time / 1000 | 0; // set current time\r
                                \r
-                                       this._rawObject.Position = position; // [!] reattach instance\r
+                                       this[ '_rawObject' ].Position = position; // [!] reattach instance\r
                                }\r
 \r
                }\r
@@ -413,7 +413,7 @@ if( X.Pulgin.SilverlightEnabled ){
 \r
                detect : function( proxy, source, ext ){\r
                        var ok = ext === 'mp3' || ext === 'wma' || ext === 'wav';\r
-                       proxy.asyncDispatch( { type : X_Event.COMPLETE, canPlay : ok } );                               \r
+                       proxy[ 'asyncDispatch' ]( { type : X_EVENT_COMPLETE, canPlay : ok } );                          \r
                },\r
                \r
                klass : X_Audio_SLAudioWrapper\r
index 289d319..45caa32 100644 (file)
@@ -19,7 +19,7 @@ var X_Audio_Sprite_shouldUse        = window.HTMLAudioElement && ( X_UA[ 'iOS' ]
                presets     : {},\r
                BGMs        : {},\r
                tracks      : [],\r
-               pauseTracks : [], // X_Event.DEACTIVATE によって pause した再生中のトラックたち。\r
+               pauseTracks : [], // X_EVENT_DEACTIVATE によって pause した再生中のトラックたち。\r
                volume      : 1,\r
                bgmTrack    : null,\r
                bgmPosition : 0,\r
@@ -29,21 +29,21 @@ var X_Audio_Sprite_shouldUse        = window.HTMLAudioElement && ( X_UA[ 'iOS' ]
        },\r
        X_Audio_Sprite_instance;\r
 \r
-X.Audio.Sprite = {\r
+X[ 'Audio' ][ 'Sprite' ] = {\r
        \r
-       shouldUse        : X_Audio_Sprite_shouldUse,\r
+       'shouldUse'        : X_Audio_Sprite_shouldUse,\r
        \r
-       needTouchFirst   : X_Audio_Sprite_needTouchFirst,\r
+       'needTouchFirst'   : X_Audio_Sprite_needTouchFirst,\r
        \r
-       enableMultiTrack : X_Audio_Sprite_enableMultiTrack,\r
+       'enableMultiTrack' : X_Audio_Sprite_enableMultiTrack,\r
        \r
-       create : function( setting ){\r
+       'create' : function( setting ){\r
                // close()\r
                if( X_Audio_Sprite_instance ){\r
                        X_Audio_Sprite_instance.close();\r
                } else {\r
-                       X_Audio_Sprite_instance = X_Class_override( new X.EventDispatcher(), X_Audio_Sprite_members );\r
-                       X_ViewPort.listen( [ X_Event.VIEW_ACTIVATE, X_Event.VIEW_DEACTIVATE ], X_Audio_Sprite_instance, X_Audio_Sprite_handleEvent );\r
+                       X_Audio_Sprite_instance = X_Class_override( X_EventDispatcher(), X_Audio_Sprite_members );\r
+                       X_ViewPort[ 'listen' ]( [ X_EVENT_VIEW_ACTIVATE, X_EVENT_VIEW_DEACTIVATE ], X_Audio_Sprite_instance, X_Audio_Sprite_handleEvent );\r
                };\r
                X_Audio_Sprite_instance.setup( setting );\r
                return X_Audio_Sprite_instance;\r
@@ -83,12 +83,12 @@ function X_Audio_Sprite_getTrackEnded(){
  *   BGM_02 : [ '56.00', '1:15.230', true ]\r
  * }\r
  * \r
- * X_Event.BACKEND_READY\r
- * X_Event.BACKEND_NONE\r
+ * X_EVENT_BACKEND_READY\r
+ * X_EVENT_BACKEND_NONE\r
  * \r
- * X_Event.READY\r
- * X_Event.MEDIA_LOOPED\r
- * X_Event.MEDIA_ENDED\r
+ * X_EVENT_READY\r
+ * X_EVENT_MEDIA_LOOPED\r
+ * X_EVENT_MEDIA_ENDED\r
  * \r
  */\r
 \r
@@ -116,7 +116,7 @@ X_Audio_Sprite_members = {
                        for( k in setting ){\r
                                v = setting[ k ];\r
                                if( X_Type_isArray( v ) && v !== urls ){\r
-                                       v = X.Object.cloneArray( v );\r
+                                       v = X_Object_cloneArray( v );\r
                                        for( i = v.length; i; ){\r
                                                --i;\r
                                                if( i !== 2 ) v[ i ] = X_AudioWrapper_timeStringToNumber( v[ i ] );\r
@@ -130,10 +130,10 @@ X_Audio_Sprite_members = {
                                if( video || ( i === 1 && X_Audio_Sprite_useVideoForMulti ) ){\r
                                        option[ 'useVideo' ] = true;\r
                                };\r
-                               tracks.push( X.Audio( urls, X.Object.clone( option ) ) );\r
+                               tracks.push( X.Audio( urls, X_Object_clone( option ) ) );\r
                        };\r
                        \r
-                       tracks[ n - 1 ].listenOnce( [ X_Event.BACKEND_READY, X_Event.BACKEND_NONE ], this, X_Audio_Sprite_handleEvent );\r
+                       tracks[ n - 1 ][ 'listenOnce' ]( [ X_EVENT_BACKEND_READY, X_EVENT_BACKEND_NONE ], this, X_Audio_Sprite_handleEvent );\r
                        \r
                        X_Audio_Sprite_instance.numTracks = n;\r
                },\r
@@ -145,7 +145,7 @@ X_Audio_Sprite_members = {
                                k;\r
                        \r
                        while( tracks.length ){\r
-                               tracks.pop().kill();\r
+                               tracks.pop()[ 'kill' ]();\r
                        };\r
                        \r
                        for( k in bgms ){\r
@@ -171,7 +171,7 @@ X_Audio_Sprite_members = {
                                        //tracks[ i ].play( 0, X_Audio_Sprite_lengthSilence, true, 0, X_Audio_Sprite_lengthSilence ).seek( 0 );\r
                                        this.pause( i );\r
                                } else {\r
-                                       X_Audio_getAudioWrapper( tracks[ i ] )._rawObject.load();\r
+                                       X_Audio_getAudioWrapper( tracks[ i ] )[ '_rawObject' ].load();\r
                                };\r
                        };\r
                },\r
@@ -205,7 +205,7 @@ X_Audio_Sprite_members = {
                                                track = X_Audio_Sprite_TEMP.bgmTrack = tracks[ 0 ];\r
                                        };\r
                                        \r
-                                       if( track.listen( [ X_Event.MEDIA_PLAYING, X_Event.MEDIA_BEFORE_LOOP ], this, X_Audio_Sprite_handleEvent ).isPlaying() ){\r
+                                       if( track[ 'listen' ]( [ X_EVENT_MEDIA_PLAYING, X_EVENT_MEDIA_BEFORE_LOOP ], this, X_Audio_Sprite_handleEvent ).isPlaying() ){\r
                                                track\r
                                                        .state( {\r
                                                                loop          : true,\r
@@ -227,7 +227,7 @@ X_Audio_Sprite_members = {
                                        if( 1 < tracks.length ){\r
                                                track = X_Audio_Sprite_getTrackEnded( X_Audio_Sprite_TEMP.bgmPlaying );\r
                                                track\r
-                                                       .listen( [ X_Event.MEDIA_PLAYING, X_Event.MEDIA_BEFORE_LOOP ], this, X_Audio_Sprite_handleEvent )\r
+                                                       [ 'listen' ]( [ X_EVENT_MEDIA_PLAYING, X_EVENT_MEDIA_BEFORE_LOOP ], this, X_Audio_Sprite_handleEvent )\r
                                                        .state( { looped : false } )\r
                                                        .play( preset[ 0 ], preset[ 1 ], true, 0, X_Audio_Sprite_lengthSilence );\r
                                        } else {\r
@@ -239,7 +239,7 @@ X_Audio_Sprite_members = {
                                                };\r
                                                track = tracks[ 0 ];\r
                                        \r
-                                               if( track.listen( [ X_Event.MEDIA_PLAYING, X_Event.MEDIA_BEFORE_LOOP ], this, X_Audio_Sprite_handleEvent ).isPlaying() ){\r
+                                               if( track[ 'listen' ]( [ X_EVENT_MEDIA_PLAYING, X_EVENT_MEDIA_BEFORE_LOOP ], this, X_Audio_Sprite_handleEvent ).isPlaying() ){\r
                                                        track\r
                                                                .state( {\r
                                                                        loop          : true,\r
@@ -268,7 +268,7 @@ X_Audio_Sprite_members = {
                                X_Audio_Sprite_TEMP.bgmTrack    = null;\r
                        };\r
                        track && track.play( 0, X_Audio_Sprite_lengthSilence, true, 0, X_Audio_Sprite_lengthSilence ).seek( 0 );\r
-                       this.asyncDispatch( X_Event.MEDIA_PAUSED );\r
+                       this[ 'asyncDispatch' ]( X_EVENT_MEDIA_PAUSED );\r
                        return this;\r
                },\r
                \r
@@ -318,11 +318,11 @@ function X_Audio_Sprite_handleEvent( e ){
        var i, tracks, track, _e;\r
        \r
        switch( e.type ){\r
-               case X_Event.BACKEND_READY :\r
+               case X_EVENT_BACKEND_READY :\r
                        _e = {\r
-                               type        : X_Event.BACKEND_READY,\r
-                               source      : e.source,\r
-                               backendName : e.backendName\r
+                               'type'        : X_EVENT_BACKEND_READY,\r
+                               'source'      : e[ 'source' ],\r
+                               'backendName' : e[ 'backendName' ]\r
                        };\r
                        \r
                        if( X_Audio_Sprite_needTouchFirst ){\r
@@ -332,11 +332,11 @@ function X_Audio_Sprite_handleEvent( e ){
                                        _e[ 'needTouchForLoad' ] = true;\r
                                };\r
                        };\r
-                       this.asyncDispatch( _e );\r
+                       this[ 'asyncDispatch' ]( _e );\r
                        \r
                        e.target\r
-                               .unlisten( X_Event.BACKEND_NONE, this, X_Audio_Sprite_handleEvent )\r
-                               .listenOnce( X_Event.READY, this, X_Audio_Sprite_handleEvent );\r
+                               [ 'unlisten' ]( X_EVENT_BACKEND_NONE, this, X_Audio_Sprite_handleEvent )\r
+                               [ 'listenOnce' ]( X_EVENT_READY, this, X_Audio_Sprite_handleEvent );\r
 \r
                        // READY, needTouchForPlay, needTouchForLoad\r
                        if( X_Audio_HTMLAudioWrapper_durationFix ){\r
@@ -346,36 +346,36 @@ function X_Audio_Sprite_handleEvent( e ){
                        };\r
                        break;\r
 \r
-               case X_Event.BACKEND_NONE :\r
-                       this.asyncDispatch( X_Event.BACKEND_NONE );\r
-                       e.target.unlisten( X_Event.BACKEND_READY, this, X_Audio_Sprite_handleEvent );\r
+               case X_EVENT_BACKEND_NONE :\r
+                       this[ 'asyncDispatch' ]( X_EVENT_BACKEND_NONE );\r
+                       e.target[ 'unlisten' ]( X_EVENT_BACKEND_READY, this, X_Audio_Sprite_handleEvent );\r
                        break;\r
                \r
-               case X_Event.READY :\r
+               case X_EVENT_READY :\r
                        console.log( 'X.AudioSprite - Ready!' );\r
                        if( X_Audio_Sprite_needTouchAndroid ){\r
                                for( i = 0; i < X_Audio_Sprite_TEMP.tracks.length; ++i ){\r
                                        X_Audio_Sprite_instance.pause( i );\r
                                };\r
-                               e.target.listenOnce( X_Event.MEDIA_PLAYING, this, this.asyncDispatch, [ X_Event.READY ] ); // Android 標準ブラウザ\r
+                               e.target[ 'listenOnce' ]( X_EVENT_MEDIA_PLAYING, this, this.asyncDispatch, [ X_EVENT_READY ] ); // Android 標準ブラウザ\r
                                return;\r
                        };\r
-                       this.asyncDispatch( X_Event.READY );\r
+                       this[ 'asyncDispatch' ]( X_EVENT_READY );\r
                        break;\r
                        \r
-               case X_Event.MEDIA_PLAYING :\r
-                       ( e.target === X_Audio_Sprite_TEMP.bgmTrack || !e.target.state().looped ) && this.asyncDispatch( X_Event.MEDIA_PLAYING );\r
+               case X_EVENT_MEDIA_PLAYING :\r
+                       ( e.target === X_Audio_Sprite_TEMP.bgmTrack || !e.target.state().looped ) && this[ 'asyncDispatch' ]( X_EVENT_MEDIA_PLAYING );\r
                        break;\r
                \r
-               case X_Event.MEDIA_BEFORE_LOOP :\r
+               case X_EVENT_MEDIA_BEFORE_LOOP :\r
                        if( e.target === X_Audio_Sprite_TEMP.bgmTrack ){\r
                                X_Audio_Sprite_TEMP.bgmLooped = true;\r
-                               this.asyncDispatch( X_Event.MEDIA_LOOPED ); // TODO uid\r
+                               this[ 'asyncDispatch' ]( X_EVENT_MEDIA_LOOPED ); // TODO uid\r
                        } else {\r
                                if( e.target.state().looped ){\r
-                                       //this.asyncDispatch( X_Event.MEDIA_LOOPED ); // TODO uid\r
+                                       //this[ 'asyncDispatch' ]( X_EVENT_MEDIA_LOOPED ); // TODO uid\r
                                } else {\r
-                                       this.asyncDispatch( X_Event.MEDIA_ENDED ); // TODO uid\r
+                                       this[ 'asyncDispatch' ]( X_EVENT_MEDIA_ENDED ); // TODO uid\r
                                };\r
                                \r
                                // single track | iOS\r
@@ -387,14 +387,14 @@ function X_Audio_Sprite_handleEvent( e ){
                        };\r
                        break;\r
                \r
-               case X_Event.VIEW_ACTIVATE :\r
+               case X_EVENT_VIEW_ACTIVATE :\r
                        console.log( '■ アクティブ' );\r
                        // track.play(); or iOS need touch??\r
                        tracks = X_Audio_Sprite_TEMP.pauseTracks;\r
                        while( tracks.length ) tracks.pop().play();\r
                        break;\r
 \r
-               case X_Event.VIEW_DEACTIVATE :\r
+               case X_EVENT_VIEW_DEACTIVATE :\r
                        console.log( '■ デアクティブ' );\r
                        // track.pause();\r
                        tracks = X_Audio_Sprite_TEMP.tracks;\r
@@ -405,8 +405,8 @@ function X_Audio_Sprite_handleEvent( e ){
                        };\r
                        break;\r
                \r
-               case X_Event.KILL_INSTANCE :\r
-                       X_ViewPort.unlisten( [ X_Event.VIEW_ACTIVATE, X_Event.VIEW_DEACTIVATE ], this, X_Audio_Sprite_handleEvent );\r
+               case X_EVENT_KILL_INSTANCE :\r
+                       X_ViewPort[ 'unlisten' ]( [ X_EVENT_VIEW_ACTIVATE, X_EVENT_VIEW_DEACTIVATE ], this, X_Audio_Sprite_handleEvent );\r
                        this.close();\r
                        break;\r
        };\r
index 87a5fdf..878677a 100644 (file)
@@ -49,12 +49,12 @@ X.UI = {
        currentRootData : null,\r
        \r
        Layout : {\r
-               Base : X.Class.create(\r
+               Base : X_Class_create(\r
                        'X.UI.Layout.Base',\r
                        {\r
                                overrideAttrsForSelf  : null,\r
                                overrideAttrsForChild : null,\r
-                               calculate             : X.emptyFunction //function( data, isNeedsDetection, x, y, w, h )\r
+                               calculate             : X_emptyFunction //function( data, isNeedsDetection, x, y, w, h )\r
                        }\r
                ),\r
                create : function( props ){\r
index 36e8118..70de707 100644 (file)
@@ -147,7 +147,7 @@ X.UI.Attr.Support = X.UI.Attr.createAttrDef( false,
 \r
 X.UI.attrClassProto = null;\r
 \r
-X.UI.AttrClass = X.Class.create( 'X.UI.AttrClass', X.Class.POOL_OBJECT );\r
+X.UI.AttrClass = X_Class_create( 'X.UI.AttrClass', X.Class.POOL_OBJECT );\r
 \r
 \r
 X.UI.Attr.copy = function( proto, supports ){\r
index 1378f7d..9fd95b8 100644 (file)
@@ -24,7 +24,7 @@
                // start detection on touchstart\r
                Utils.addEvents( uinode, Hammer.EVENT_TYPES_START, this );\r
                \r
-               this.listen( type );\r
+               this[ 'listen' ]( type );\r
        };\r
        \r
        Hammer.defaults = {};\r
@@ -60,7 +60,7 @@
                // onmouseup, but when touchend has been fired we do nothing.\r
                // this is for touchdevices which also fire a mouseup on touchend\r
                if( type & MOUSE && touch_triggered ){\r
-                       return X.Callback.STOP_NOW | X.Callback.PREVENT_DEFAULT;\r
+                       return X_Callback_STOP_NOW | X_Callback_PREVENT_DEFAULT;\r
                } else\r
                // mousebutton must be down or a touch event\r
                if( type & TOUCH || //sourceEventType.match(/touch/) || // touch events are always on screen\r
                                // only when the instance options have enabled this gesture\r
                                active[ gesture.name ] &&\r
                                        // if a handler returns false, we stop with the detection\r
-                                       ( ret |= ( gesture.handler( e, hammer ) || X.Callback.NONE ) );\r
+                                       ( ret |= ( gesture.handler( e, hammer ) || X_Callback_NONE ) );\r
                        };\r
 \r
                        // endevent, but not the last touch, so dont stop\r
                if( !this.types[ type ] ) return;\r
                var e = Utils.extend( {}, gesture );\r
                e.type = type;\r
-               return this.uinode.dispatch( e );\r
+               return this.uinode[ 'dispatch' ]( e );\r
        };\r
        \r
        Hammer.prototype.listen = function( type ){\r
                 */\r
                addEvents : function( uinode, types, context ){\r
                        for( var i = 0; i < types.length; ++i ){\r
-                               uinode.listen( types[ i ], context );\r
+                               uinode[ 'listen' ]( types[ i ], context );\r
                        };\r
                },\r
                \r
                        switch( e.eventType ){\r
                                case START :\r
                                        // clear any running timers\r
-                                       this.timerID && X.Timer.remove( this.timerID );\r
+                                       this.timerID && X_Timer_remove( this.timerID );\r
 \r
                                        // set the gesture so we can check in the timeout if it still is\r
                                        Detection.current.name = this.name;\r
                                        \r
                                        // set timer and if after the timeout it still is hold,\r
                                        // we trigger the hold event\r
-                                       this.timerID = X.Timer.add( hammer.options.hold_timeout, 1, Gestures.Hold._onTimer, [ e, hammer ] );\r
+                                       this.timerID = X_Timer_add( hammer.options.hold_timeout, 1, Gestures.Hold._onTimer, [ e, hammer ] );\r
                                        return;\r
 \r
                                // when you move or end we clear the timer\r
                                case MOVE :\r
                                        if( e.distance <= hammer.options.hold_threshold ) return;\r
                                case END :\r
-                                       this.timerID && X.Timer.remove( this.timerID );\r
+                                       this.timerID && X_Timer_remove( this.timerID );\r
                                        if( Gestures.Hold.holding === true ){\r
                                                Gestures.Hold.holding = false;\r
                                                return hammer.trigger( X.UI.Event.HOLD_END, e );\r
index 368c81d..729651d 100644 (file)
@@ -1,4 +1,4 @@
-X.UI._AbstractUINode = X.EventDispatcher.inherits(\r
+X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](\r
        'X.UI._AbstractUINode',\r
        X.Class.ABSTRACT | X.Class.PRIVATE_DATA,\r
        {\r
@@ -69,14 +69,14 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                        //this.xnode      = X_Doc_create( 'div' );\r
                        this.phase      = 1;\r
                        \r
-                       this.dispatch( X.UI.Event.INIT );\r
+                       this[ 'dispatch' ]( X.UI.Event.INIT );\r
                },\r
                \r
                addToParent : function( xnodeParent ){\r
-                       xnodeParent && xnodeParent.append( this.xnode );\r
+                       xnodeParent && xnodeParent[ 'append' ]( this.xnode );\r
                        \r
                        this.phase = 2;\r
-                       this.dispatch( X.UI.Event.ADDED );\r
+                       this[ 'dispatch' ]( X.UI.Event.ADDED );\r
                },\r
                \r
                creationComplete : function(){\r
@@ -84,7 +84,7 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                                l, i;\r
                        \r
                        this.phase = 3;\r
-                       this.User.dispatch( X.UI.Event.CREATION_COMPLETE );\r
+                       this.User[ 'dispatch' ]( X.UI.Event.CREATION_COMPLETE );\r
                        \r
                        // html 要素が親に追加されるまで控えていたイベントの登録\r
                        if( events && ( l = events.length ) ){\r
@@ -216,7 +216,7 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                                };\r
 \r
                                if( !X.UI.attrClassProto && user === X.UI.Attr.USER.XNODE && this.xnode ){\r
-                                       this.xnode.css( X.UI.Attr.Rename[ name ] || name, this._createCssText( name ) );\r
+                                       this.xnode[ 'css' ]( X.UI.Attr.Rename[ name ] || name, this._createCssText( name ) );\r
                                        //console.log( ( X.UI.Attr.Rename[ name ] || name ) + ' ' + this._createCssText( name ) + ' ' + propID + ' ' + attrs[ propID ] );\r
                                };\r
                                return;\r
@@ -261,7 +261,7 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                                };\r
                                \r
                                if( name && user === X.UI.Attr.USER.XNODE && this.xnode ){\r
-                                       this.xnode.css( X.UI.Attr.Rename[ name ] || name, this._createCssText( name ) );\r
+                                       this.xnode[ 'css' ]( X.UI.Attr.Rename[ name ] || name, this._createCssText( name ) );\r
                                        //console.log( ( X.UI.Attr.Rename[ name ] || name ) + ' ' + this._createCssText( name ) + ' ' + propID + ' ' + attrs[ propID ] );\r
                                } else\r
                                if( this.dirty < dirty ) this.dirty = dirty;                                                    \r
@@ -418,12 +418,12 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                        this.boxX = x;\r
                        this.boxY = y;\r
                        this.xnode\r
-                               .css( 'left',        x ? x + 'em' : 0 )\r
-                               .css( 'top',         y ? y + 'em' : 0 )\r
-                               .css( 'width',       this.contentWidth  ? X.UI._AbstractUINode.ceil( this.contentWidth  ) + 'em' : 0 )\r
-                               .css( 'height',      this.contentHeight ? X.UI._AbstractUINode.ceil( this.contentHeight ) + 'em' : 0 )\r
-                               .css( 'padding',     this._createCssText( 'padding' ) )\r
-                               .css( 'borderWidth', this._createCssText( 'borderWidth' ) );\r
+                               [ 'css' ]( 'left',        x ? x + 'em' : 0 )\r
+                               [ 'css' ]( 'top',         y ? y + 'em' : 0 )\r
+                               [ 'css' ]( 'width',       this.contentWidth  ? X.UI._AbstractUINode.ceil( this.contentWidth  ) + 'em' : 0 )\r
+                               [ 'css' ]( 'height',      this.contentHeight ? X.UI._AbstractUINode.ceil( this.contentHeight ) + 'em' : 0 )\r
+                               [ 'css' ]( 'padding',     this._createCssText( 'padding' ) )\r
+                               [ 'css' ]( 'borderWidth', this._createCssText( 'borderWidth' ) );\r
                },\r
 \r
                /*\r
@@ -599,19 +599,19 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                                         *     コンテンツの高さの再取得が必要\r
                                         *     必要でない\r
                                         */\r
-                                       if( xnode._xnodes && xnode._xnodes.length ){\r
+                                       if( xnode[ '_xnodes' ] && xnode[ '_xnodes' ].length ){\r
                                                if( w === X.UI.Attr.AUTO ){\r
-                                                       w = this.contentWidth = xnode.css( 'width', 'auto' ).width() / X_Node_CSS_getCharSize( xnode );\r
+                                                       w = this.contentWidth = xnode[ 'css' ]( 'width', 'auto' )[ 'width' ]() / X_Node_CSS_getCharSize( xnode );\r
                                                        \r
                                                        this.scrollWidth = w + this.contentL + this.contentR;\r
                                                        if( this.maxContentWidth < w - this.boxSizingOffsetLR ) this.contentWidth = this.maxContentWidth + this.boxSizingOffsetLR;\r
                                                        if( w - this.boxSizingOffsetLR < this.minContentWidth ) this.contentWidth = this.minContentWidth + this.boxSizingOffsetLR;\r
                                                        this.lastContentWidth = this.contentWidth;\r
                                                        \r
-                                                       w !== this.contentWidth && xnode.css( 'width', X.UI._AbstractUINode.ceil( this.contentWidth ) + 'em' );\r
+                                                       w !== this.contentWidth && xnode[ 'css' ]( 'width', X.UI._AbstractUINode.ceil( this.contentWidth ) + 'em' );\r
                                                        \r
                                                        if( h === X.UI.Attr.AUTO ){\r
-                                                               this.contentHeight = h = xnode.css( 'height', 'auto' ).scrollHeight() / X_Node_CSS_getCharSize( xnode ); // scrollHeight() ??\r
+                                                               this.contentHeight = h = xnode[ 'css' ]( 'height', 'auto' )[ 'scrollHeight' ]() / X_Node_CSS_getCharSize( xnode ); // scrollHeight() ??\r
                                                                this.scrollHeight  = h + this.contentT + this.contentB;\r
                                                                if( this.maxContentHeight < h - this.boxSizingOffsetTB ) this.contentHeight = this.maxContentHeight + this.boxSizingOffsetTB;\r
                                                                if( h - this.boxSizingOffsetTB < this.minContentHeight ) this.contentHeight = this.minContentHeight + this.boxSizingOffsetTB;\r
@@ -623,24 +623,24 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                                                } else\r
                                                if( h === X.UI.Attr.AUTO ){\r
                                                        if( w !== this.lastContentWidth ){\r
-                                                               xnode.css( 'width', X.UI._AbstractUINode.ceil( w ) + 'em' );\r
+                                                               xnode[ 'css' ]( 'width', X.UI._AbstractUINode.ceil( w ) + 'em' );\r
                                                                \r
                                                                this.lastContentWidth  = w;\r
-                                                               this.contentHeight = h = xnode.css( 'height', 'auto' ).scrollHeight() / X_Node_CSS_getCharSize( xnode );\r
+                                                               this.contentHeight = h = xnode[ 'css' ]( 'height', 'auto' )[ 'scrollHeight' ]() / X_Node_CSS_getCharSize( xnode );\r
                                                                this.scrollWidth       = w + this.contentL + this.contentR;\r
                                                                this.scrollHeight      = h + this.contentT + this.contentB;\r
                                                                if( this.maxContentHeight < h - this.boxSizingOffsetTB ) this.contentHeight = this.maxContentHeight + this.boxSizingOffsetTB;\r
                                                                if( h - this.boxSizingOffsetTB < this.minContentHeight ) this.contentHeight = this.minContentHeight + this.boxSizingOffsetTB;                                                           \r
                                                        } else {\r
                                                                this.contentHeight = this.lastContentHeight = h =\r
-                                                                       this.lastContentHeight === -1 ? xnode.css( 'height', 'auto' ).scrollHeight() / X_Node_CSS_getCharSize( xnode ) : this.lastContentHeight;\r
+                                                                       this.lastContentHeight === -1 ? xnode[ 'css' ]( 'height', 'auto' )[ 'scrollHeight' ]() / X_Node_CSS_getCharSize( xnode ) : this.lastContentHeight;\r
                                                                this.scrollWidth   = w + this.contentL + this.contentR;\r
                                                                this.scrollHeight  = h + this.contentT + this.contentB;\r
                                                        };\r
                                                } else\r
                                                if( dirty !== X.UI.Dirty.LAYOUT ){\r
-                                                       this.contentWidth  = this.lastContentWidth  = w; //xnode.width();\r
-                                                       this.contentHeight = this.lastContentHeight = xnode.css( 'height', 'auto' ).scrollHeight() / X_Node_CSS_getCharSize( xnode );\r
+                                                       this.contentWidth  = this.lastContentWidth  = w; //xnode[ 'width' ]();\r
+                                                       this.contentHeight = this.lastContentHeight = xnode[ 'css' ]( 'height', 'auto' )[ 'scrollHeight' ]() / X_Node_CSS_getCharSize( xnode );\r
                                                        this.scrollWidth   = this.contentWidth  + this.contentL + this.contentR;\r
                                                        this.scrollHeight  = this.contentHeight + this.contentT + this.contentB;\r
                                                } else {\r
@@ -763,7 +763,7 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                                        if( !this.gesture ){\r
                                                this.gesture = new X.UI.Gesture( this.rootData, this, type );\r
                                        } else {\r
-                                               this.gesture.listen( type );\r
+                                               this.gesture[ 'listen' ]( type );\r
                                        };\r
                                } else {\r
                                        //console.log( type );\r
@@ -773,16 +773,16 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                                                ++counter[ type ];\r
                                        } else {\r
                                                counter[ type ] = 1;                            \r
-                                               root.xnodeInteractiveLayer.listen( X.UI.Event.IdToName[ type ], X_UI_eventRellay );\r
+                                               root.xnodeInteractiveLayer[ 'listen' ]( X.UI.Event.IdToName[ type ], X_UI_eventRellay );\r
                                        };\r
                                };\r
                        };\r
                        f = X_Callback_classifyCallbackArgs( arg1, arg2, arg3 );\r
-                       if( !f.k ){\r
+                       if( !f.kind ){\r
                                return X_EventDispatcher_listen.call( this, type, this.User, f );\r
                        } else\r
-                       if( f.k === X_Callback_FUNC_ONLY ){\r
-                               return X_EventDispatcher_listen.call( this, type, this.User, f.f, f.s );\r
+                       if( f.kind === X_Callback_FUNC_ONLY ){\r
+                               return X_EventDispatcher_listen.call( this, type, this.User, f.func, f.supplement );\r
                        };\r
                        return X_EventDispatcher_listen.apply( this, arguments );\r
                },\r
@@ -802,26 +802,26 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                                };\r
 \r
                                if( X.UI.Event._START_XUI_EVENT < type && type < X.UI.Event._END_XUI_EVENT ){\r
-                                       this.gesture && this.gesture.unlisten( type );\r
+                                       this.gesture && this.gesture[ 'unlisten' ]( type );\r
                                } else {\r
                                        root    = this.rootData;\r
                                        counter = root.eventCounter;\r
                                        if( !counter[ type ] ) return this;\r
                                        --counter[ type ];\r
                                        if( counter[ type ] === 0 ){\r
-                                               root.xnodeInteractiveLayer.unlisten( X.UI.Event.IdToName[ type ], X_UI_eventRellay );\r
+                                               root.xnodeInteractiveLayer[ 'unlisten' ]( X.UI.Event.IdToName[ type ], X_UI_eventRellay );\r
                                                delete counter[ type ];\r
                                        };\r
                                };\r
                        };\r
                        f = X_Callback_classifyCallbackArgs( arg1, arg2, arg3 );\r
-                       if( !f.k ){\r
-                               return X.EventDispatcher.prototype.unlisten.apply( this, [ type, this.User, f ] );\r
+                       if( !f.kind ){\r
+                               return X_EventDispatcher_unlisten.apply( this, [ type, this.User, f ] );\r
                        } else\r
-                       if( f.k === X_Callback_FUNC_ONLY ){\r
-                               return X.EventDispatcher.prototype.unlisten.apply( this, [ type, this.User, f.f, f.s ] );\r
+                       if( f.kind === X_Callback_FUNC_ONLY ){\r
+                               return X_EventDispatcher_unlisten.apply( this, [ type, this.User, f.func, f.supplement ] );\r
                        };\r
-                       return X.EventDispatcher.prototype.unlisten.apply( this, arguments );\r
+                       return X_EventDispatcher_unlisten.apply( this, arguments );\r
                },\r
                \r
                dispatch : function( e ){\r
@@ -831,12 +831,12 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                                type = e.type || e;\r
                        \r
                        // TODO captureEvent PointerEvent\r
-                       if( ret & X.Callback.MONOPOLY && !this.hitChildData && ( xve._POINTER_MOVE === type || xve._MOUSE_MOVE === type || xve.FILE_DRAG === type ) ){\r
+                       if( ret & X_Callback_MONOPOLY && !this.hitChildData && ( xve._POINTER_MOVE === type || xve._MOUSE_MOVE === type || xve.FILE_DRAG === type ) ){\r
                                this.rootData.monopolyNodeData = this;\r
                                return ret;\r
                        };\r
                        this.rootData.monopolyNodeData = null;\r
-                       if( xve._START_BUBLEUP < type && this.parentData && !( ret & X.Callback.STOP_PROPAGATION ) && !( ret & X.Callback.STOP_NOW ) ) return this.parentData.dispatch( e );\r
+                       if( xve._START_BUBLEUP < type && this.parentData && !( ret & X_Callback_STOP_PROPAGATION ) && !( ret & X_Callback_STOP_NOW ) ) return this.parentData[ 'dispatch' ]( e );\r
                        return ret;\r
                }\r
                \r
@@ -868,7 +868,7 @@ X.UI._AbstractUINode.ceil = function( v ){
        return ( -v * 10 + 0.999 | 0 ) / -10;\r
 };\r
 \r
-X.UI.AbstractUINode = X.Class.create(\r
+X.UI.AbstractUINode = X_Class_create(\r
        'AbstractUINode',\r
        X.Class.ABSTRACT | X.Class.SUPER_ACCESS,\r
        {\r
@@ -921,22 +921,22 @@ X.UI.AbstractUINode = X.Class.create(
                },\r
                \r
                listen : function( type, arg1, arg2, arg3 ){\r
-                       X_Class_getPrivate( this ).listen( type, arg1, arg2, arg3 );\r
+                       X_Class_getPrivate( this )[ 'listen' ]( type, arg1, arg2, arg3 );\r
                        return this;\r
                },\r
                listenOnce : function( type, arg1, arg2, arg3 ){\r
-                       X_Class_getPrivate( this ).listenOnce( type, arg1, arg2, arg3 );\r
+                       X_Class_getPrivate( this )[ 'listenOnce' ]( type, arg1, arg2, arg3 );\r
                        return this;\r
                },\r
                listening : function( type, arg1, arg2, arg3 ){\r
-                       return X_Class_getPrivate( this ).listening( type, arg1, arg2, arg3 );\r
+                       return X_Class_getPrivate( this )[ 'listening' ]( type, arg1, arg2, arg3 );\r
                },\r
                unlisten : function( type, arg1, arg2, arg3 ){\r
-                       X_Class_getPrivate( this ).unlisten( type, arg1, arg2, arg3 );\r
+                       X_Class_getPrivate( this )[ 'unlisten' ]( type, arg1, arg2, arg3 );\r
                        return this;\r
                },\r
                dispatch : function( e ){\r
-                       return X_Class_getPrivate( this ).dispatch( e );\r
+                       return X_Class_getPrivate( this )[ 'dispatch' ]( e );\r
                },\r
                        \r
                getNextNode : function(){\r
index 9434254..d98c944 100644 (file)
@@ -70,7 +70,7 @@ X.UI._Box = X.UI._AbstractUINode.inherits(
                                j = -1,\r
                                uinodes, arg, _data, attrs, support;\r
                        \r
-                       if( !this.User.instanceOf( X.UI.Box ) ){\r
+                       if( !this.User[ 'instanceOf' ]( X.UI.Box ) ){\r
                                //throw new Error( 'Box を継承したインスタンスだけが _Box のオーナーになれます' );\r
                        };                      \r
                        \r
@@ -82,7 +82,7 @@ X.UI._Box = X.UI._AbstractUINode.inherits(
                        \r
                        for( ; i < l; ++i ){\r
                                arg = args[ i ];\r
-                               if( arg.instanceOf && arg.instanceOf( X.UI.AbstractUINode ) ){\r
+                               if( arg[ 'instanceOf' ] && arg[ 'instanceOf' ]( X.UI.AbstractUINode ) ){\r
                                        _data = X_Class_getPrivate( arg );\r
                                        if( !uinodes ) this.uinodes = uinodes = [];\r
                                        uinodes[ ++j ] = _data;\r
@@ -90,10 +90,10 @@ X.UI._Box = X.UI._AbstractUINode.inherits(
                                                //throw new Error( 'インスタンスはすでに親に追加されています ' + arg );\r
                                        };\r
                                } else\r
-                               if( arg.instanceOf && arg.instanceOf( Node ) ){\r
+                               if( arg[ 'instanceOf' ] && arg[ 'instanceOf' ]( Node ) ){\r
                                        //this.layout = arg;\r
                                } else\r
-                               if( arg.instanceOf && arg.instanceOf( X.UI.Layout.Base ) ){\r
+                               if( arg[ 'instanceOf' ] && arg[ 'instanceOf' ]( X.UI.Layout.Base ) ){\r
                                        //this.layout = arg;\r
                                } else\r
                                if( X_Type_isObject( arg ) ){\r
@@ -129,7 +129,7 @@ X.UI._Box = X.UI._AbstractUINode.inherits(
                        };\r
                        \r
                        this.phase = 1;\r
-                       this.User.dispatch( { type : X.UI.Event.INIT } );\r
+                       this.User[ 'dispatch' ]( { type : X.UI.Event.INIT } );\r
                },\r
                \r
                addToParent : function( parentXNode ){\r
@@ -137,7 +137,7 @@ X.UI._Box = X.UI._AbstractUINode.inherits(
                                l       = uinodes && uinodes.length,\r
                                i;\r
 \r
-                       parentXNode && parentXNode.append( this.xnode );\r
+                       parentXNode && parentXNode[ 'append' ]( this.xnode );\r
                        \r
                        if( l ){\r
                                for( i = 0; i < l; ++i ){\r
@@ -146,7 +146,7 @@ X.UI._Box = X.UI._AbstractUINode.inherits(
                        };\r
                        \r
                        this.phase = 2;\r
-                       this.User.dispatch( { type : X.UI.Event.ADDED } );\r
+                       this.User[ 'dispatch' ]( { type : X.UI.Event.ADDED } );\r
                },\r
                \r
        /* Rellay */\r
@@ -215,7 +215,7 @@ X.UI._Box = X.UI._AbstractUINode.inherits(
                                _p1 && data.initialize( this.root, this.rootData, this.User, this );\r
                                if( index <= num ){\r
                                        // _p2 && this.xnode.insertBefore( data.xnode, uinodes[ index + i ].xnode );\r
-                                       _p2 && uinodes[ index + i ].xnode.before( data.xnode );\r
+                                       _p2 && uinodes[ index + i ].xnode[ 'prev' ]( data.xnode );\r
                                        _p2 && data.addToParent( this.xnode );\r
                                        uinodes.splice( index + i, 0, data );\r
                                } else {\r
@@ -268,7 +268,7 @@ X.UI._Box = X.UI._AbstractUINode.inherits(
                                case 4:\r
                                case 3:\r
                                case 2:\r
-                                       this.xnode.remove();\r
+                                       this.xnode[ 'remove' ]();\r
                                case 1:\r
                                        delete this.root;\r
                                        delete this.rootData;\r
@@ -300,7 +300,7 @@ X.UI.Box = X.UI.AbstractUINode.inherits(
                        return this;\r
                },\r
                remove : function( node /* , node, node ... */ ){\r
-                       X_Class_getPrivate( this ).remove( Array.prototype.slice.call( arguments ) );\r
+                       X_Class_getPrivate( this )[ 'remove' ]( Array.prototype.slice.call( arguments ) );\r
                        return this;\r
                },\r
                removeAt : function( from, length ){\r
@@ -314,7 +314,7 @@ X.UI.Box = X.UI.AbstractUINode.inherits(
                        if( !uinodes || uinodes.length === 0 ) return ret;\r
                        for( i = 0, l = uinodes.length; i < l; ++i ){\r
                                node = uinodes[ 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
@@ -353,7 +353,7 @@ X.UI.Box.presets = function(){
                arg = args[ i ];\r
                if( !arg ) continue;\r
                // レイアウトの preset ができるのは layout が未定義な Box だけ\r
-               if( !shadow.prototype.layout && arg.instanceOf && arg.instanceOf( X.UI.Layout.Base ) ){\r
+               if( !shadow.prototype.layout && arg[ 'instanceOf' ] && arg[ 'instanceOf' ]( X.UI.Layout.Base ) ){\r
                        layout = arg;\r
                } else\r
                if( ( klassDef = X_Class_getClassDef( arg ) ) && klassDef.isPrivate ){\r
index 065af2a..a392078 100644 (file)
@@ -8,7 +8,7 @@ X.UI._ChromeBox = X.UI._Box.inherits(
                Constructor : function( layout, args ){\r
                        var uinodes, i, l, node, after, index = 0;\r
                        \r
-                       this.Super( layout, args );\r
+                       this[ 'Super' ]( layout, args );\r
 \r
                        uinodes = this.uinodes;\r
                        l = i   = uinodes.length;\r
@@ -35,7 +35,7 @@ X.UI._ChromeBox = X.UI._Box.inherits(
                                        after = true;\r
                                        index = 0;\r
                                };\r
-                               if( node.instanceOf && node.instanceOf( Node ) ){\r
+                               if( node[ 'instanceOf' ] && node[ 'instanceOf' ]( Node ) ){\r
                                        \r
                                };\r
                        };\r
@@ -60,7 +60,7 @@ X.UI.ChromeBox = X.UI.Box.inherits(
                        return this;\r
                },\r
                remove : function( node /* , node, node ... */ ){\r
-                       X_Class_getPrivate( this ).containerNode.remove( arguments );\r
+                       X_Class_getPrivate( this ).containerNode[ 'remove' ]( arguments );\r
                        return this;\r
                },\r
                removeAt : function( from, length ){\r
index 017fa70..c9ec0a0 100644 (file)
@@ -92,7 +92,7 @@ X.UI._ScrollBox = X.UI._ChromeBox.inherits(
                scrollManager  : null,\r
                \r
                Constructor : function( layout, args ){\r
-                       this.Super( layout, args );\r
+                       this[ 'Super' ]( layout, args );\r
                        this._containerNode = X_Class_getPrivate( this.containerNode );\r
                },\r
                \r
@@ -164,7 +164,7 @@ X.UI._ScrollBox = X.UI._ChromeBox.inherits(
                                        // create scroller\r
                                        \r
                                        \r
-                                       this.listen( X.UI.Event.POINTER_START, X_UI_ScrollBox_onStart );\r
+                                       this[ 'listen' ]( X.UI.Event.POINTER_START, X_UI_ScrollBox_onStart );\r
                                        \r
                                        \r
                                        this._move( 0, 0 );\r
@@ -175,7 +175,7 @@ X.UI._ScrollBox = X.UI._ChromeBox.inherits(
                        // no scroll\r
                        if( this.scrolling ){\r
                                // remove scroller\r
-                               this.unlisten( X.UI.Event.POINTER_START );\r
+                               this[ 'unlisten' ]( X.UI.Event.POINTER_START );\r
                                \r
                                ( this._scrollX !== 0 || this._scrollY !== 0 ) && this._move( 0, 0 );\r
                                \r
@@ -199,7 +199,7 @@ X.UI._ScrollBox = X.UI._ChromeBox.inherits(
 \r
 \r
 function X_UI_ScrollBox_onStart( e ){\r
-       var ret = X.Callback.NONE;\r
+       var ret = X_Callback_NONE;\r
                                                \r
        // React to left mouse button only\r
        if( e.pointerType === 'mouse' && e.button !== 0 ){\r
@@ -222,7 +222,7 @@ function X_UI_ScrollBox_onStart( e ){
        // スクロール中の停止\r
        if( this.isAnimating ){\r
                delete this.isAnimating;\r
-               this.dispatch( X.UI.Event.SCROLL_END );\r
+               this[ 'dispatch' ]( X.UI.Event.SCROLL_END );\r
        };                      \r
 \r
        this.startX    = this.x;\r
@@ -232,15 +232,15 @@ function X_UI_ScrollBox_onStart( e ){
        this.pointX    = e.pageX;\r
        this.pointY    = e.pageY;\r
        \r
-       this.listen( X.UI.Event.POINTER_MOVE, X_UI_ScrollBox_onMove );\r
-       this.listen( X.UI.Event.POINTER_END , X_UI_ScrollBox_onEnd );\r
+       this[ 'listen' ]( X.UI.Event.POINTER_MOVE, X_UI_ScrollBox_onMove );\r
+       this[ 'listen' ]( X.UI.Event.POINTER_END , X_UI_ScrollBox_onEnd );\r
 \r
        //console.log( 'start : 3' );\r
-       return ret | X.Callback.PREVENT_DEFAULT;\r
+       return ret | X_Callback_PREVENT_DEFAULT;\r
 };\r
 \r
 function X_UI_ScrollBox_onMove( e ){\r
-       var ret = X.Callback.NONE,\r
+       var ret = X_Callback_NONE,\r
                deltaX, deltaY, timestamp,\r
                newX, newY,\r
                absDistX, absDistY;\r
@@ -251,7 +251,7 @@ function X_UI_ScrollBox_onMove( e ){
        };\r
 \r
        // gpu の用意\r
-       if( !this.containerNode._anime ){\r
+       if( !this.containerNode[ '_anime' ] ){\r
                console.log( 'gpuレイヤーの用意' );\r
                this._translate( this.x, this.y );\r
                return ret;\r
@@ -297,12 +297,12 @@ function X_UI_ScrollBox_onMove( e ){
        deltaY = this.hasVScroll ? deltaY : 0;\r
 \r
        if( !this.moved ){\r
-               this.dispatch( X.UI.Event.SCROLL_BEFORE_MOVE );\r
+               this[ 'dispatch' ]( X.UI.Event.SCROLL_BEFORE_MOVE );\r
                this.moved  = true;\r
                this.minusX = deltaX;\r
                this.minusY = deltaY;\r
        } else {\r
-               this.dispatch( X.UI.Event.SCROLL_MOVE );\r
+               this[ 'dispatch' ]( X.UI.Event.SCROLL_MOVE );\r
        };\r
 \r
        newX = this.x + deltaX;// - this.minusX;\r
@@ -327,19 +327,19 @@ function X_UI_ScrollBox_onMove( e ){
                this.startY = this.y;\r
        };\r
        // イベントの拘束\r
-       return ret | X.Callback.PREVENT_DEFAULT | X.Callback.MONOPOLY;\r
+       return ret | X_Callback_PREVENT_DEFAULT | X_Callback_MONOPOLY;\r
 };\r
 \r
 function X_UI_ScrollBox_onEnd( e ){\r
-       var ret    = X.Callback.NONE,\r
+       var ret    = X_Callback_NONE,\r
                time   = 0,\r
                easing = '',\r
                newX, newY,\r
                momentumX, momentumY,\r
                duration, distanceX, distanceY;\r
                                                \r
-       this.unlisten( X.UI.Event.POINTER_MOVE, X_UI_ScrollBox_onMove );\r
-       this.unlisten( X.UI.Event.POINTER_END,  X_UI_ScrollBox_onEnd );\r
+       this[ 'unlisten' ]( X.UI.Event.POINTER_MOVE, X_UI_ScrollBox_onMove );\r
+       this[ 'unlisten' ]( X.UI.Event.POINTER_END,  X_UI_ScrollBox_onEnd );\r
        \r
        if( !this.enabled || e.pointerType !== this.initiated ){\r
                return ret;\r
@@ -362,7 +362,7 @@ function X_UI_ScrollBox_onEnd( e ){
 \r
        // we scrolled less than 10 pixels\r
        if( !this.moved ){\r
-               // this.dispatch( X_Event.CANCELED );\r
+               // this[ 'dispatch' ]( X_EVENT_CANCELED );\r
                return ret;\r
        };\r
        \r
@@ -390,7 +390,7 @@ function X_UI_ScrollBox_onEnd( e ){
                return ret;\r
        };\r
 \r
-       this.dispatch( X.UI.Event.SCROLL_END );\r
+       this[ 'dispatch' ]( X.UI.Event.SCROLL_END );\r
        \r
        return ret;\r
 };\r
@@ -470,9 +470,9 @@ function X_UI_ScrollBox_refresh( remove ){
        delete this.directionX;\r
        delete this.directionY;\r
 \r
-       this.wrapperOffset = this.xnodeWrapper.offset();\r
+       this.wrapperOffset = this.xnodeWrapper[ 'offset' ]();\r
 \r
-       //this.dispatch('refresh');\r
+       //this[ 'dispatch' ]('refresh');\r
 \r
        X_UI_ScrollBox_resetPosition( this, 0 );\r
 };\r
@@ -489,7 +489,7 @@ X.UI.ScrollBox = X.UI.ChromeBox.inherits(
                        \r
                        for( ; i; ){\r
                                arg = arguments[ --i ];\r
-                               if( arg.instanceOf && arg.instanceOf( X.UI.Layout.Base ) ){\r
+                               if( arg[ 'instanceOf' ] && arg[ 'instanceOf' ]( X.UI.Layout.Base ) ){\r
                                        layout = arg;\r
                                } else {\r
                                        args[ args.length ] = arg;\r
index ab57827..fce0b11 100644 (file)
@@ -5,14 +5,14 @@ X.UI._Text = X.UI._AbstractUINode.inherits(
                content     : null,\r
                \r
                Constructor : function( content ){\r
-                       if( !( this.User.instanceOf( X.UI.Text ) ) ){\r
+                       if( !( this.User[ 'instanceOf' ]( X.UI.Text ) ) ){\r
                                alert( 'Text を継承したインスタンスだけが _Text のオーナーになれます' );\r
                        };\r
                        this.xnode      = X_Doc_create( 'div' );\r
                        \r
                        if( X_Type_isString( content ) && content ){\r
                                this.content = content;\r
-                               this.xnode.text( this.content );\r
+                               this.xnode[ 'text' ]( this.content );\r
                                this.dirty   = X.UI.Dirty.CONTENT;\r
                        };\r
                }\r
@@ -31,7 +31,7 @@ X.UI.Text = X.UI.AbstractUINode.inherits(
                content : function( v ){\r
                        var data = X_Class_getPrivate( this );\r
                        if( data.content !== v ){\r
-                               data.xnode && data.xnode.text( v );\r
+                               data.xnode && data.xnode[ 'text' ]( v );\r
                                data.rootData.reserveCalc();\r
                                if( data.dirty < X.UI.Dirty.CONTENT ) data.dirty = X.UI.Dirty.CONTENT;                          \r
                        };\r
index 915ec07..16521e3 100644 (file)
@@ -9,7 +9,7 @@ function X_UI_eventRellay( e ){
                i       = 0,
                data    = X_UI_rootData,
                sysOnly = false,
-               ret     = X.Callback.NONE,
+               ret     = X_Callback_NONE,
                list, parent, _ret;
 
        // mouseup で alert を出すと mouseleave が発生、ということでイベント中のイベント発火を禁止
@@ -22,21 +22,21 @@ function X_UI_eventRellay( e ){
        
        e.type = type;
 
-       if( data && ( data = data.monopolyNodeData ) && ( ret = data.dispatch( e ) ) & X.Callback.MONOPOLY ){
+       if( data && ( data = data.monopolyNodeData ) && ( ret = data[ 'dispatch' ]( e ) ) & X_Callback_MONOPOLY ){
                X_UI_eventBusy = false;
-               return ret | X.Callback.PREVENT_DEFAULT;
+               return ret | X_Callback_PREVENT_DEFAULT;
        };
        
        list = X_UI_rootData.hoverList;
        ( X_UI_rootData.targetNodeData = X_UI_rootData ).capcher( x, y );
        data = X_UI_rootData.targetNodeData;
 
-       //data !== X_UI_rootData && console.log( data.xnode.text() );
+       //data !== X_UI_rootData && console.log( data.xnode[ 'text' ]() );
 
        while( data ){
-               _ret = data.dispatch( e, sysOnly );
+               _ret = data[ 'dispatch' ]( e, sysOnly );
                ret |= _ret;
-               if( _ret & X.Callback.MONOPOLY || _ret & X.Callback.STOP_PROPAGATION || _ret & X.Callback.STOP_NOW ) break; // sysOnly = true;
+               if( _ret & X_Callback_MONOPOLY || _ret & X_Callback_STOP_PROPAGATION || _ret & X_Callback_STOP_NOW ) break; // sysOnly = true;
                data = data.parentData;
        };
        
@@ -46,20 +46,20 @@ function X_UI_eventRellay( e ){
                        parent = parent.parentData;
                };
                if( parent !== X_UI_rootData ){
-                       data.hoverClassName && data.xnode.removeClass( data.hoverClassName );
-                       data._listeners && data._listeners[ X.UI.Event.POINTER_OUT ] && data.dispatch( e, X.UI.Event.POINTER_OUT, false ); // new Event
+                       data.hoverClassName && data.xnode[ 'removeClass' ]( data.hoverClassName );
+                       data._listeners && data._listeners[ X.UI.Event.POINTER_OUT ] && data[ 'dispatch' ]( e, X.UI.Event.POINTER_OUT, false ); // new Event
                        delete data.hovering;
                        list.splice( i, 1 );
                        continue;
                };
                if( !data.hovering ){
                        data.hoverClassName && data.xnode.addClassName( data.hoverClassName );
-                       data._listeners && data._listeners[ X.UI.Event.POINTER_IN ] && data.dispatch( e, X.UI.Event.POINTER_IN, true ); // new Event
+                       data._listeners && data._listeners[ X.UI.Event.POINTER_IN ] && data[ 'dispatch' ]( e, X.UI.Event.POINTER_IN, true ); // new Event
                        data.hovering = true;
                };
        };
        X_UI_eventBusy = false;
-       return ret | X.Callback.PREVENT_DEFAULT;
+       return ret | X_Callback_PREVENT_DEFAULT;
 };
 
 /*
@@ -83,12 +83,12 @@ X.UI._PageRoot = X.UI._Box.inherits(
                cursorStyle           : null,
                
                Constructor : function( layout, args ){
-                       this.Super( layout, args );
+                       this[ 'Super' ]( layout, args );
                        
-                       if( X_ViewPort_readyState === X_Event.XDOM_READY ){
-                               X.Timer.once( 0, this, this.start );
+                       if( X_ViewPort_readyState === X_EVENT_XDOM_READY ){
+                               X_Timer_once( 0, this, this.start );
                        } else {
-                               X.ViewPort.listenOnce( X_Event.XDOM_READY, this, this.start );
+                               X.ViewPort[ 'listenOnce' ]( X_EVENT_XDOM_READY, this, this.start );
                        };
                        
                        this.hoverList    = [];
@@ -99,7 +99,7 @@ X.UI._PageRoot = X.UI._Box.inherits(
                
                start : function(){
                        this.initialize( this.User, this, null, null );
-                       X.Timer.once( 0, this, this.addToView );
+                       X_Timer_once( 0, this, this.addToView );
                },
                addToView : function(){
                        var     counter = this.eventCounter, flg;
@@ -114,34 +114,34 @@ X.UI._PageRoot = X.UI._Box.inherits(
                        } );
                        
                        // hover や rollover rollout のための move イベントの追加
-                       this.xnodeInteractiveLayer.listen( X.UI.Event.IdToName[ X.UI.Event._POINTER_MOVE ], X_UI_eventRellay );
+                       this.xnodeInteractiveLayer[ 'listen' ]( X.UI.Event.IdToName[ X.UI.Event._POINTER_MOVE ], X_UI_eventRellay );
                        if( counter[ X.UI.Event._POINTER_MOVE ] ){
                                ++counter[ X.UI.Event._POINTER_MOVE ];
                        } else {
                                counter[ X.UI.Event._POINTER_MOVE ] = 1;
                        };
 
-                       X.Timer.once( 0, this, this.afterAddToView );
+                       X_Timer_once( 0, this, this.afterAddToView );
                },
                afterAddToView : function(){
-                       this.xnode.className( 'PageRoot' );
+                       this.xnode[ 'className' ]( 'PageRoot' );
                        
                        this.creationComplete();
-                       X.Timer.once( 0, this, this.doFirstCalc );
+                       X_Timer_once( 0, this, this.doFirstCalc );
                },
                
                doFirstCalc : function(){
                        this.calculate();
                        this.phase = 4;
                        X.ViewPort
-                               .listen( X_Event.VIEW_RESIZED, this, this.calculate )
-                               .listen( X_Event.BASE_FONT_RESIZED, this, this.calculate );
+                               [ 'listen' ]( X_EVENT_VIEW_RESIZED, this, this.calculate )
+                               [ 'listen' ]( X_EVENT_BASE_FONT_RESIZED, this, this.calculate );
                },
                
                reserveCalc : function(){
                        if( this.calcReserved === false ){
                                this.calcReserved = true;
-                               X.Timer.once( 0, this, this.calculate );
+                               X_Timer_once( 0, this, this.calculate );
                        };
                },
                calculate : function( e ){
@@ -158,7 +158,7 @@ X.UI._PageRoot = X.UI._Box.inherits(
                },
                
                _remove : function(){
-                       this.xnodeInteractiveLayer.unlisten();
+                       this.xnodeInteractiveLayer[ 'unlisten' ]();
                        _Box.prototype._remove.call( this );
                }
        }