OSDN Git Service

Version 0.6.95, fix X.Timer, fix xhr @opera11-, fix for touch device.
authoritozyun <itozyun@user.sourceforge.jp>
Wed, 8 Oct 2014 12:31:07 +0000 (21:31 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Wed, 8 Oct 2014 12:31:07 +0000 (21:31 +0900)
24 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/06_XURL.js
0.6.x/js/01_core/10_XCallback.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/02_dom/00_XDom.js
0.6.x/js/02_dom/02_XDomNode.js
0.6.x/js/02_dom/03_XDomEvent.js
0.6.x/js/02_dom/04_XDomBoxModel.js
0.6.x/js/02_dom/05_XDomAttr.js
0.6.x/js/02_dom/06_XDomStyle.js
0.6.x/js/02_dom/07_XDomNodeList.js
0.6.x/js/02_dom/08_XDomSelector.js
0.6.x/js/02_dom/09_XDomParser.js
0.6.x/js/02_dom/22_XDomBuilder.js
0.6.x/js/03_plugin/00_XPlugin.js
0.6.x/js/04_util/01_XNinjaIframe.js
0.6.x/js/05_net/00_XNet.js
0.6.x/js/06_audio/00_XAudio.js
0.6.x/js/06_audio/02_XSilverlightAudio.js
0.6.x/js/20_ui/15_ScrollBox.js
0.6.x/js/20_ui/20_PageRoot.js

index 767914f..d98e43a 100644 (file)
@@ -229,6 +229,9 @@ if (window.ActiveXObject ? !Number.prototype.toFixed : (!navigator.taintEnabled
  * web.paulownia.jp - JavaScriptとクロージャ\r
  * https://web.archive.org/web/20070526063400/http://web.paulownia.jp/script/oop/closure.html\r
  * MacOSX 10.3のsafariにはhasOwnPropertyが実装されていないので、独自に追加する必要があります。\r
+ * \r
+ * prototype汚染問題でhasOwnPropertyを使わないクロスブラウザな方法\r
+ * http://os0x.hatenablog.com/entry/20080901/1220272509\r
  */\r
 /*\r
 Object.prototype.hasOwnProperty || (Object.prototype.hasOwnProperty = function( p ){\r
index 9706243..49c8ed5 100644 (file)
@@ -15,9 +15,6 @@ var undefined,
 X.VERSION = '0.6.89';\r
                \r
 X.bootTime = + new Date;\r
-               \r
-X.getTime = Date.now ? Date.now : new Function( 'return +new Date' );\r
-\r
 \r
 X.emptyFunction = new Function;\r
 \r
index 96be643..6973201 100644 (file)
@@ -1,33 +1,42 @@
 \r
+// ------------------------------------------------------------------------- //\r
+// ------------ local variables -------------------------------------------- //\r
+// ------------------------------------------------------------------------- //\r
 var X_URL_BASE_URL = ( function( parts ){\r
                var last = 1 < parts.length && parts[ parts.length - 1 ];\r
                if( last !== false && ( last === '' || //末尾が/で終わるとき\r
-                       last.indexOf( '.' ) !== -1 ) ){//末尾がファイル名で終わる時\r
-                       \r
+                       last.indexOf( '.' ) !== -1 ) ){    //末尾がファイル名で終わる時\r
                        --parts.length;\r
                };\r
                return parts.join( '/' );\r
        })( location.href.split( '?' )[ 0 ].split( '#' )[ 0 ].split( '/' ) ),\r
        \r
-       X_URL_IS_LOCAL = location.protocol === 'file:' || location.hostname === 'localhost' || location.hostname === '127.0.0.1';\r
-\r
+       X_URL_IS_FILE  = location.protocol === 'file:',\r
+       \r
+       X_URL_IS_LOCAL = X_URL_IS_FILE || location.hostname === 'localhost' || location.hostname === '127.0.0.1';\r
 \r
+// ------------------------------------------------------------------------- //\r
+// --- interface ----------------------------------------------------------- //\r
+// ------------------------------------------------------------------------- //\r
 X.URL = {\r
 \r
        BASE_URL : X_URL_BASE_URL,\r
        \r
+       IS_FILE  : X_URL_IS_FILE,\r
+       \r
        IS_LOCAL : X_URL_IS_LOCAL,\r
        \r
        toAbsolutePath : X_URL_toAbsolutePath\r
 };\r
 \r
-\r
-\r
-       /*\r
-        * original\r
-        * AS3で相対パスを絶対パスに変換する\r
-        * http://www.shin-go.net/motionlab/?p=449\r
-        */\r
+// ------------------------------------------------------------------------- //\r
+// --- implements ---------------------------------------------------------- //\r
+// ------------------------------------------------------------------------- //\r
+/*\r
+ * original\r
+ * AS3で相対パスを絶対パスに変換する\r
+ * http://www.shin-go.net/motionlab/?p=449\r
+ */\r
 function X_URL_toAbsolutePath( path ){\r
        var s  = '/',\r
                ss = '//',\r
index 4fb5aaa..a57ce6c 100644 (file)
@@ -10,7 +10,7 @@ var X_Callback_LIVE_LIST        = [],
        \r
        X_Callback_THIS_FUNC        = 1,\r
        X_Callback_HANDLEEVENT      = 2,\r
-       X_Callback_FUNC_ONLY        = 3;\r
+       X_Callback_FUNC_ONLY        = 3,\r
 \r
        X_Callback_NONE             =  0,\r
        X_Callback_UN_LISTEN        =  1,\r
index 87f02e7..2474315 100644 (file)
@@ -1,14 +1,22 @@
+\r
+X_TEMP.SYSTEM_EVENT_PRE_INIT = 1;\r
+X_TEMP.SYSTEM_EVENT_XTREE    = 2;\r
+X_TEMP.SYSTEM_EVENT_INIT     = 3;\r
+\r
 X.Event = {\r
-       COMPLETE               :  1,\r
-       READY                  :  2,\r
-       SUCCESS                :  3,\r
-       ERROR                  :  4,\r
-       PROGRESS               :  5,\r
-       BEFORE_CANCEL          :  6,\r
-       CANCELED               :  7,\r
-       TIMEOUT                :  8,\r
-       BEFORE_KILL_INSTANCE   :  9,\r
-       KILL_INSTANCE          : 10,\r
-       KILL_INSTANCE_CANCELED : 11,\r
-       _LAST_EVENT            : 11\r
+       XDOM_READY             :  4,\r
+       \r
+       COMPLETE               :  5,\r
+       READY                  :  6,\r
+       SUCCESS                :  7,\r
+       ERROR                  :  8,\r
+       PROGRESS               :  9,\r
+       BEFORE_CANCEL          : 10,\r
+       CANCELED               : 11,\r
+       TIMEOUT                : 12,\r
+       BEFORE_KILL_INSTANCE   : 13,\r
+       KILL_INSTANCE_CANCELED : 14,    \r
+       KILL_INSTANCE          : 15,\r
+\r
+       _LAST_EVENT            : 15\r
 };
\ No newline at end of file
index 970b3f6..0dab627 100644 (file)
@@ -444,19 +444,23 @@ var X_EventDispatcher_actualAddEvent =
                                for( i = type.length; i; ){\r
                                        X_EventDispatcher_actualAddEvent( that, type[ --i ], raw, list );\r
                                };\r
-                       } else {\r
+                       } else\r
+                       if( that._isXHR && X.UA.Opera < 12 ){\r
+                               // Opera11- の XHR は event オブジェクトが返らないため, eventType 毎に callback を指定する addEventListener もない\r
+                               raw[ 'on' + type ] = X_Callback_create( that, X_EventDispatcher_dispatch, [ type ] );\r
+                       } else\r
+                       if( that._isSilverlight ){\r
+                               list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
+                               list.sltoken    = raw.AddEventListener( type, list.slcallback );\r
+                       } else {                \r
                                that._handleEvent || ( that._handleEvent = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
-                               \r
-                               if( that._isSilverlight ){\r
-                                       list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
-                                       list.sltoken    = raw.AddEventListener( type, list.slcallback );\r
-                               } else\r
+\r
                                if( raw.addEventListener ){\r
                                        raw.addEventListener( type, that._handleEvent, false );\r
                                } else {\r
                                        // Safari は Image, Opera7 は window\r
                                        raw[ 'on' + type ] = that._handleEvent;\r
-                               };                              \r
+                               };\r
                        };\r
                }) :\r
        X_UA_EVENT.IE ?\r
@@ -465,29 +469,29 @@ var X_EventDispatcher_actualAddEvent =
                        //if( type === 'load' && that._tag && X.Dom.Event._LOAD_FIX_TAGS[ that._tag ] ){\r
                        //      type = 'readystatechange';\r
                        //};\r
+\r
+                       type = X.Dom.Event.Rename[ type ] || type;\r
+                               \r
+                       if( X.Type.isArray( type ) ){\r
+                               for( i = type.length; i; ){\r
+                                       X_EventDispatcher_actualAddEvent( that, type[ --i ], raw, list );\r
+                               };\r
+                       } else\r
                        if( that._isXHR ){\r
                                // ie8- の XHR は window.event が更新されないため, eventType 毎に callback を指定する\r
                                raw[ 'on' + type ] = X_Callback_create( that, X_EventDispatcher_dispatch, [ type ] );\r
-                       } else {\r
-                               type = X.Dom.Event.Rename[ type ] || type;\r
+                       } else                                  \r
+                       if( that._isSilverlight ){\r
+                               list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
+                               list.sltoken    = raw.AddEventListener( type, list.slcallback );\r
+                       } else {                                \r
+                               that._handleEvent || ( that._handleEvent = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
                                \r
-                               if( X.Type.isArray( type ) ){\r
-                                       for( i = type.length; i; ){\r
-                                               X_EventDispatcher_actualAddEvent( that, type[ --i ], raw, list );\r
-                                       };\r
-                               } else{\r
-                                       that._handleEvent || ( that._handleEvent = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
-                                       \r
-                                       if( that._isSilverlight ){\r
-                                               list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
-                                               list.sltoken    = raw.AddEventListener( type, list.slcallback );\r
-                                       } else\r
-                                       if( raw.attachEvent ){\r
-                                               raw.attachEvent( 'on' + type, that._handleEvent );\r
-                                       } else {\r
-                                               raw[ 'on' + type ] = that._handleEvent;\r
-                                       };\r
-                               };                              \r
+                               if( raw.attachEvent ){\r
+                                       raw.attachEvent( 'on' + type, that._handleEvent );\r
+                               } else {\r
+                                       raw[ 'on' + type ] = that._handleEvent;\r
+                               };\r
                        };\r
                }) :\r
                (function( that, type, raw, list ){\r
@@ -498,15 +502,16 @@ var X_EventDispatcher_actualAddEvent =
                                for( i = type.length; i; ){\r
                                        X_EventDispatcher_actualAddEvent( that, type[ --i ], raw, list );\r
                                };\r
+                       } else\r
+                       if( that._isXHR ){\r
+                               // ie4 mobile は XHR をサポート!\r
+                               raw[ 'on' + type ] = X_Callback_create( that, X_EventDispatcher_dispatch, [ type ] );\r
+                       } else\r
+                       if( that._isSilverlight ){\r
+                               list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
+                               list.sltoken    = raw.AddEventListener( type, list.slcallback );\r
                        } else {\r
-                               that._handleEvent || ( that._handleEvent = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
-                               \r
-                               if( that._isSilverlight ){\r
-                                       list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
-                                       list.sltoken    = raw.AddEventListener( type, list.slcallback );\r
-                               } else {\r
-                                       raw[ 'on' + type ] = that._handleEvent;\r
-                               };\r
+                               raw[ 'on' + type ] = that._handleEvent || ( that._handleEvent = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
                        };\r
                });\r
 \r
@@ -521,29 +526,32 @@ function X_EventDispatcher_sliverLightDispatch( sender, e, type ){
 var X_EventDispatcher_actualRemoveEvent =\r
        X_UA_EVENT.W3C /*&& ( X.UA.WebKit < 525.13 || X.UA.Opera7 || X.UA.NetFront < 4 )*/ ? // Safari3-\r
                (function( that, type, raw, list, skip ){\r
+                       var i;\r
                        type = X.Dom.Event.Rename[ type ] || type;\r
                        \r
                        if( X.Type.isArray( type ) ){\r
                                for( i = type.length; i; ){\r
                                        X_EventDispatcher_actualRemoveEvent( that, type[ --i ], raw, list, i ? true : skip );\r
                                };\r
+                       } else\r
+                       if( that._isXHR && X.UA.Opera < 12 ){\r
+                               X_Callback_correct( raw[ 'on' + type ] );\r
+                               raw[ 'on' + type ] = '';\r
+                       } else  \r
+                       if( that._isSilverlight ){\r
+                               raw.RemoveEventListener( type, list.sltoken ); // token\r
+                               X_Callback_correct( list.slcallback );\r
+                               delete list.sltoken;\r
+                               delete list.slcallback;\r
                        } else {\r
-                               \r
-                               if( that._isSilverlight ){\r
-                                       raw.RemoveEventListener( type, list.sltoken ); // token\r
-                                       X_Callback_correct( list.slcallback );\r
-                                       delete list.sltoken;\r
-                                       delete list.slcallback;\r
+                               if( raw.addEventListener ){\r
+                                       raw.removeEventListener( type, that._handleEvent, false );\r
                                } else {\r
-                                       if( raw.addEventListener ){\r
-                                               raw.removeEventListener( type, that._handleEvent, false );\r
-                                       } else {\r
-                                               raw[ 'on' + type ] = null;\r
-                                       };\r
-                                       if( !skip ){\r
-                                               X_Callback_correct( that._handleEvent );\r
-                                               delete that._handleEvent;\r
-                                       };                                      \r
+                                       raw[ 'on' + type ] = null;\r
+                               };\r
+                               if( !skip ){\r
+                                       X_Callback_correct( that._handleEvent );\r
+                                       delete that._handleEvent;\r
                                };\r
                        };\r
                }) :\r
@@ -553,37 +561,35 @@ var X_EventDispatcher_actualRemoveEvent =
                        //if( type === 'load' && that._tag && X.Dom.Event._LOAD_FIX_TAGS[ that._tag ] ){\r
                        //      type = 'readystatechange';\r
                        //};\r
+\r
+                       type = X.Dom.Event.Rename[ type ] || type;\r
+                       \r
+                       if( X.Type.isArray( type ) ){\r
+                               for( i = type.length; i; ){\r
+                                       X_EventDispatcher_actualRemoveEvent( that, type[ --i ], raw, list, i ? true : skip );\r
+                               };\r
+                       } else\r
                        if( that._isXHR ){\r
                                X_Callback_correct( raw[ 'on' + type ] );\r
                                raw[ 'on' + type ] = X.emptyFunction;\r
                                raw[ 'on' + type ] = '';\r
+                       } else  \r
+                       if( that._isSilverlight ){\r
+                               raw.RemoveEventListener( type, list.sltoken ); // token\r
+                               X_Callback_correct( list.slcallback );\r
+                               delete list.sltoken;\r
+                               delete list.slcallback;\r
                        } else {\r
-                               type = X.Dom.Event.Rename[ type ] || type;\r
-                               \r
-                               if( X.Type.isArray( type ) ){\r
-                                       for( i = type.length; i; ){\r
-                                               X_EventDispatcher_actualRemoveEvent( that, type[ --i ], raw, list, i ? true : skip );\r
-                                       };\r
+                               if( raw.attachEvent ){\r
+                                       raw.detachEvent( 'on' + type, that._handleEvent );\r
                                } else {\r
-                                       \r
-                                       if( that._isSilverlight ){\r
-                                               raw.RemoveEventListener( type, list.sltoken ); // token\r
-                                               X_Callback_correct( list.slcallback );\r
-                                               delete list.sltoken;\r
-                                               delete list.slcallback;\r
-                                       } else {\r
-                                               if( raw.attachEvent ){\r
-                                                       raw.detachEvent( 'on' + type, that._handleEvent );\r
-                                               } else {\r
-                                                       raw[ 'on' + type ] = X.emptyFunction;\r
-                                                       raw[ 'on' + type ] = '';\r
-                                               };\r
-                                               \r
-                                               if( !skip ){\r
-                                                       X_Callback_correct( that._handleEvent );\r
-                                                       delete that._handleEvent;\r
-                                               };                                              \r
-                                       };\r
+                                       raw[ 'on' + type ] = X.emptyFunction;\r
+                                       raw[ 'on' + type ] = '';\r
+                               };\r
+                               \r
+                               if( !skip ){\r
+                                       X_Callback_correct( that._handleEvent );\r
+                                       delete that._handleEvent;\r
                                };\r
                        };\r
                }) :\r
@@ -594,21 +600,24 @@ var X_EventDispatcher_actualRemoveEvent =
                                for( i = type.length; i; ){\r
                                        X_EventDispatcher_actualRemoveEvent( that, type[ --i ], raw, list, i ? true : skip );\r
                                };\r
+                       } else\r
+                       if( that._isXHR ){\r
+                               X_Callback_correct( raw[ 'on' + type ] );\r
+                               raw[ 'on' + type ] = X.emptyFunction;\r
+                               raw[ 'on' + type ] = '';\r
+                       } else\r
+                       if( that._isSilverlight ){\r
+                               raw.RemoveEventListener( type, list.sltoken ); // token\r
+                               X_Callback_correct( list.slcallback );\r
+                               delete list.sltoken;\r
+                               delete list.slcallback;\r
                        } else {\r
+                               raw[ 'on' + type ] = X.emptyFunction;\r
+                               raw[ 'on' + type ] = '';\r
                                \r
-                               if( that._isSilverlight ){\r
-                                       raw.RemoveEventListener( type, list.sltoken ); // token\r
-                                       X_Callback_correct( list.slcallback );\r
-                                       delete list.sltoken;\r
-                                       delete list.slcallback;\r
-                               } else {\r
-                                       raw[ 'on' + type ] = X.emptyFunction;\r
-                                       raw[ 'on' + type ] = '';\r
-                                       \r
-                                       if( !skip ){\r
-                                               X_Callback_correct( that._handleEvent );\r
-                                               delete that._handleEvent;\r
-                                       };                                      \r
+                               if( !skip ){\r
+                                       X_Callback_correct( that._handleEvent );\r
+                                       delete that._handleEvent;\r
                                };\r
                        };\r
                });\r
index 0725037..ca07dac 100644 (file)
@@ -34,7 +34,9 @@
 // ------------ local variables -------------------------------------------- //\r
 // ------------------------------------------------------------------------- //\r
 \r
-var X_Timer_SET_TIMEOUT   = window.setTimeout,\r
+var 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
        \r
        X_Timer_REQ_ANIME_FRAME =\r
@@ -56,11 +58,12 @@ var X_Timer_SET_TIMEOUT   = window.setTimeout,
        X_Timer_INTERVAL_TIME  = 16,\r
        X_Timer_TICKET_LIST    = [],\r
        X_Timer_removal        = null,\r
+       X_Timer_skipUpdate     = false,\r
        X_Timer_uid            = 0,\r
        X_Timer_timerId        = 0,\r
-       X_Timer_next           = 0,\r
-       X_Timer_busyTimeout    = false, \r
-       X_Timer_endTime        = 0, // iOS\r
+       X_Timer_busyTimeout    = false,\r
+       X_Timer_timeStamp      = 0, // setTimeout に登録した時間\r
+       X_Timer_waitTime       = 0,     // 待ち時間\r
        \r
        X_Timer_REQ_FRAME_LIST = [],\r
        X_Timer_requestID      = 0,\r
@@ -71,6 +74,8 @@ var X_Timer_SET_TIMEOUT   = window.setTimeout,
 // ------------------------------------------------------------------------- //\r
 X.Timer = {\r
        \r
+       now : X_Timer_now,\r
+       \r
        add : function( time, opt_count, args1, args2, args3 ){\r
                var list = X_Timer_TICKET_LIST,\r
                        hash, obj;\r
@@ -112,10 +117,9 @@ X.Timer = {
                        X_Timer_removal[ uid ] = true;\r
                } else {\r
                        for( ; i; ){\r
-       \r
                                if( ( q = list[ --i ] ).uid === uid ){\r
                                        list.splice( i, 1 );\r
-                                       ( /* q[ INDEX_COUNT ] <= next  || */ l === 1 ) && X_Timer_update();\r
+                                       !X_Timer_skipUpdate && ( q.last <= X_Timer_waitTime || l === 1 ) && X_Timer_update();\r
                                        break;\r
                                };\r
                        };                              \r
@@ -192,26 +196,30 @@ if( X.UA.IE4 || X.UA.MacIE ){
 };\r
 \r
 function X_Timer_onTimeout(){\r
-       var next  = X_Timer_next,\r
+       var now   = X_Timer_now(),\r
+               minus = ( ( now - X_Timer_timeStamp ) / X_Timer_INTERVAL_TIME | 0 ) || 1,\r
                list  = X_Timer_TICKET_LIST,\r
                i     = 0,\r
                l     = list.length,\r
-               limit = X.getTime() + X_Timer_INTERVAL_TIME / 2,\r
+               limit = X_Timer_now() + X_Timer_INTERVAL_TIME / 2,\r
                heavy,\r
                q, f, c, r, uid;\r
        \r
+       console.log( '予定時間と発火時間の差:' + ( now - X_Timer_timeStamp - X_Timer_waitTime * X_Timer_INTERVAL_TIME ) + ' -:' + minus + ' next:' + X_Timer_waitTime );\r
+       \r
        if( X_Timer_busyTimeout ){\r
-               alert( 'busy!' );\r
+               alert( 'X_Timer_busyTimeout フラグが立ったまま!エラーの可能性' );\r
        };\r
        \r
        X_Timer_busyTimeout = true;\r
        \r
     for( ; i < l; ++i ){\r
        q = list[ i ];\r
-       if( X_Timer_removal && X_Timer_removal[ q.uid ] ) continue;\r
-               if( 0 < ( q.last -= next ) ) continue;\r
-               if( heavy ){\r
-                       if( q.last <= 0 ) q.last = 1;\r
+       if(\r
+               ( X_Timer_removal && X_Timer_removal[ q.uid ] ) || // timerId は remove 登録されている\r
+                       0 < ( q.last -= minus ) || // 時間が経過していない\r
+                       heavy && ( q.last = 1 ) // 時間は経過したが、ヘビーフラグが立っている\r
+               ){\r
                        continue;\r
                };\r
                c = q.count;\r
@@ -225,7 +233,7 @@ function X_Timer_onTimeout(){
                \r
                //console.log( 'fire....' );\r
                \r
-               if( limit <= X.getTime() ){\r
+               if( limit <= X_Timer_now() ){\r
                        console.log( '******* heavy!' );\r
                        // 関数の実行に時間がかかる場合、次のタイミングに\r
                        heavy = true;\r
@@ -242,10 +250,13 @@ function X_Timer_onTimeout(){
     };\r
     X_Timer_timerId     = 0;\r
     X_Timer_busyTimeout = false;\r
+    \r
     if( X_Timer_removal ){\r
+       X_Timer_skipUpdate = true;\r
        for( uid in X_Timer_removal ){\r
-               X.Timer.remove( X_Timer_removal[ uid ] );\r
+               X.Timer.remove( uid );\r
        };\r
+       X_Timer_skipUpdate = false;\r
        X_Timer_removal = null;\r
     };\r
     X_Timer_update();\r
@@ -265,23 +276,36 @@ function X_Timer_update(){
        \r
     n = list[ i - 1 ].last;\r
     \r
-    if( n < X_Timer_next || X_Timer_timerId === 0 ){\r
-       X_Timer_timerId && X_Timer_CLEAR_TIMEOUT( X_Timer_timerId );\r
-       X_Timer_timerId = X_Timer_SET_TIMEOUT( X_Timer_onTimeout, X_Timer_INTERVAL_TIME * n );\r
-       X_Timer_endTime = X.getTime() + X_Timer_INTERVAL_TIME * n; // iOS\r
-       X_Timer_next = n;\r
+    if( n < X_Timer_waitTime || X_Timer_timerId === 0 ){\r
+       if( X_Timer_timerId ){\r
+               X_Timer_CLEAR_TIMEOUT( X_Timer_timerId );\r
+               n -= ( X_Timer_now() - X_Timer_timeStamp ) / X_Timer_INTERVAL_TIME | 0;\r
+               0 <= n || ( n = 0 ); // 負の数は 0 に\r
+       };\r
+       X_Timer_timeStamp = X_Timer_now();\r
+       X_Timer_timerId   = X_Timer_SET_TIMEOUT( X_Timer_onTimeout, X_Timer_INTERVAL_TIME * n );\r
+       X_Timer_waitTime  = n;\r
     };\r
 };\r
 \r
+// 大きい -> 小さい\r
+function X_Timer_compareQueue( a, b ){\r
+       return a.last < b.last ? 1 : a.last === b.last ? 0 : -1;\r
+};\r
+\r
 // http://havelog.ayumusato.com/develop/javascript/e528-ios6_scrolling_timer_notcall.html\r
 // iOS6 スクロール中のタイマー発火絡みのバグ備忘\r
 if( X.UA.iOS ){\r
        window.addEventListener( 'scroll', function(){\r
-               var last;\r
+               var last, now;\r
                if( X_Timer_timerId ){\r
-                       window.clearTimeout( X_Timer_timerId );\r
-                       last = X_Timer_endTime - X.getTime();\r
+                       X_Timer_CLEAR_TIMEOUT( X_Timer_timerId );\r
+                       now  = X_Timer_now();\r
+                       last = X_Timer_timeStamp + X_Timer_INTERVAL_TIME * X_Timer_waitTime - now;\r
                        X_Timer_timerId = X_Timer_SET_TIMEOUT( X_Timer_onTimeout, 0 < last ? last : 0 );\r
+                       // 更新\r
+                       X_Timer_timeStamp = now;\r
+                       X_Timer_waitTime  = last / X_Timer_INTERVAL_TIME | 0;\r
                };\r
        });\r
 };\r
@@ -293,9 +317,9 @@ function X_Timer_onEnterFrame( time ){
                l    = list.length,\r
                i    = 0, q, uid, args;\r
 \r
-       time = time || X.getTime();\r
+       time = time || X_Timer_now();\r
        X_Timer_busyOnFrame = true;\r
-       // console.log( X.getTime() + ' , ' + time );\r
+       // console.log( X_Timer_now() + ' , ' + time );\r
     for( ; i < l; ++i ){\r
        q = list[ i ];\r
        \r
@@ -322,10 +346,4 @@ function X_Timer_onEnterFrame( time ){
     };\r
 };\r
 \r
-// 大きい -> 小さい\r
-function X_Timer_compareQueue( a, b ){\r
-       return a.last < b.last ? 1 : a.last === b.last ? 0 : -1;\r
-};\r
-\r
-\r
 console.log( 'X.Core.Timer' );\r
index 22a96cf..4590e52 100644 (file)
 \r
+var X_Dom_readyState,\r
+       X_Dom_active = !!window.parent || !!document.activeElement, // parent は frameに読み込まれた場合のieのerror回避\r
+       X_Dom_rootElement,\r
+       X_Dom_lock,\r
+       X_Dom_width,\r
+       X_Dom_height,\r
+       X_Dom_baseFontSize,\r
+       X_Dom_orientationFlag;\r
+\r
 X.Dom = X.Class._override(\r
        new X.EventDispatcher(),\r
        {\r
-               readyState   : -1,\r
-               active       : !!window.parent || !!document.activeElement, // parent は frameに読み込まれた場合のieのerror回避\r
-               _root        : null,\r
 \r
-               _lock        : false,\r
-               w            : 0,\r
-               h            : 0,\r
-               baseFontSize : 0,\r
+               handleEvent : function( e ){\r
+                       var href;\r
+                       switch( e.type ){\r
+                               case 'beforeunload' :\r
+                                       \r
+                                       // ie では a href="javascript" な要素でも beforeunload が起こる\r
+                                       href = e.target && e.target.attr && e.target.attr( 'href' );\r
+                                       if( href && href.indexOf && href.indexOf( 'javascript:' ) === 0 ) return X.Callback.PREVENT_DEFAULT | X.Callback.STOP_PROPAGATION;\r
+                                       \r
+                                       return X.Dom.dispatch( X.Dom.Event.BEFORE_UNLOAD );\r
+                               case 'unload' :\r
+                                       X.Dom.dispatch( X.Dom.Event.UNLOAD );\r
+                                       \r
+                                       Node._window.unlisten();\r
+                                       Node._document.unlisten();\r
+                                       Node._html._actualRemove( true );\r
+                                       break;\r
+                               case 'visibilitychange' :\r
+                                       X.Dom.dispatch( { type : ( X_Dom_active = document[ 'hidden' ] ) ? X.Dom.Event.VIEW_DEACTIVATE : X.Dom.Event.VIEW_ACTIVATE } );\r
+                                       break;\r
+                               case 'webkitvisibilitychange' :\r
+                                       X.Dom.dispatch( { type : ( X_Dom_active = document[ 'webkitHidden' ] ) ? X.Dom.Event.VIEW_DEACTIVATE : X.Dom.Event.VIEW_ACTIVATE } );\r
+                                       break;\r
+                               case 'pageshow' :\r
+                               case 'focus' :\r
+                                       X_Dom_active = true;\r
+                                       X.Dom.dispatch( X.Dom.Event.VIEW_ACTIVATE );\r
+                                       break;\r
+                               case 'pagehide' :\r
+                               case 'blur' :\r
+                                       X_Dom_active = false;\r
+                                       X.Dom.dispatch( X.Dom.Event.VIEW_DEACTIVATE );\r
+                                       break;\r
+                       };\r
+               },\r
+\r
+               listen : function( type ){\r
+                       if( type <= X_Dom_readyState ){\r
+                               /*\r
+                                * X.Event.XDOM_READY 以後に listen した場合の対策\r
+                                */\r
+                               X.Dom.asyncDispatch( 0, { type : type, w : X_Dom_width, h : X_Dom_height } );\r
+                       };\r
+                       return X_EventDispatcher_listen.apply( X.Dom, arguments );\r
+               },\r
+               \r
+               getPointerPosition : function(){\r
+                       \r
+               },\r
+               \r
+               /* 要素が視界に入った  http://remysharp.com/2009/01/26/element-in-view-event-plugin/ */\r
+               inView : function( elm ){\r
+                       \r
+               },\r
+               \r
+               getSize : function(){\r
+                       return [ X_Dom_width, X_Dom_height ];\r
+               },\r
+//https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect\r
+//use window.pageXOffset and window.pageYOffset instead of window.scrollX and window.scrollY\r
+//(((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.ScrollLeft == 'number' ? t : document.body).ScrollLeft;\r
+//(((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.ScrollTop == 'number' ? t : document.body).ScrollTop\r
+               \r
+               getDocumentSize : function(){\r
+                       // Opera は互換モードでは document.body.scrollHeight、標準モードでは document.documentElement.scrollHeight でページの高さが取れる。と思ってたんだけど、例外があった。\r
+                       // http://orera.g.hatena.ne.jp/edvakf/20100515/1273908051\r
+               //http://onozaty.hatenablog.com/entry/20060803/p1\r
+               // Safari2.0.4では標準・互換どちらも document.body\r
+                       \r
+                       Node._body._updateTimerID && Node._body._startUpdate();\r
+                       /*X.UA.Opera ?\r
+                               ( document.documentElement && document.documentElement.clientWidth ?\r
+                                       new Function( 'return[document.documentElement.clientWidth,document.documentElement.clientHeight]' ) :\r
+                                       new Function( 'return[document.body.clientWidth,document.body.clientHeight]' )\r
+                               ) :*/                   \r
+                       return [\r
+                               X_Dom_rootElement.scrollWidth  || X_Dom_rootElement.offsetWidth,\r
+                               X_Dom_rootElement.scrollHeight || X_Dom_rootElement.offsetHeight\r
+                       ];\r
+               },\r
+               \r
+               getScrollPosition :\r
+                       window.pageXOffset !== undefined ?\r
+                               ( function(){\r
+                                       Node._body._updateTimerID && Node._body._startUpdate();\r
+                                       return[ window.pageXOffset, window.pageYOffset ];\r
+                               } ) :\r
+                       window.scrollLeft  !== undefined ?\r
+                               ( function(){\r
+                                       Node._body._updateTimerID && Node._body._startUpdate();\r
+                                       return[ window.scrollLeft, window.scrollTop ];\r
+                               } ) :\r
+                               ( function(){\r
+                                       Node._body._updateTimerID && Node._body._startUpdate();\r
+                                       // body は Safari2-\r
+                                       return[ X_Dom_rootElement.scrollLeft || document.body.scrollLeft, X_Dom_rootElement.scrollTop || document.body.scrollTop ];\r
+                               } ),\r
+\r
+               getScrollbarSize : function(){\r
+                       return [ X.Dom.BoxModel.vScrollbarSize, X.Dom.BoxModel.hScrollbarSize ];        \r
+               },\r
+               \r
+               getBaseFontSize : function(){\r
+                       if( Node._body._updateTimerID ){\r
+                               Node._body._startUpdate();\r
+                               return Node._fontSizeNode._rawObject.offsetHeight;\r
+                       };\r
+                       return X_Dom_baseFontSize;\r
+               }\r
+       }\r
+);\r
+\r
+\r
+\r
+\r
+\r
 \r
 /* -----------------------------------------------\r
  * Resize\r
@@ -36,84 +154,84 @@ X.Dom = X.Class._override(
  * \r
  * getBoundingClientRect で fontsize の調査\r
  */\r
-               _resize :\r
+               var X_Dom_resize =\r
                        // iOS もループで回す,,,iOS3.1.3, iOS6 で確認\r
                        X.UA.IE < 9 || X.UA.iOS ?\r
                                (function(){\r
                                        var size;\r
-                                       if( !X.Dom._lock ){\r
-                                               size = X.Dom._getSize();\r
-                                               if( X.Dom.w !== size[ 0 ] || X.Dom.h !== size[ 1 ] ){\r
-                                                       X.Dom.w = size[ 0 ];\r
-                                                       X.Dom.h = size[ 1 ];\r
-                                                       X.Timer.once( 100, X.Dom._detectFinishResizing );\r
-                                                       X.Dom._lock = true;\r
+                                       if( !X_Dom_lock ){\r
+                                               size = X_Dom_getWindowSize();\r
+                                               if( X_Dom_width !== size[ 0 ] || X_Dom_height !== size[ 1 ] ){\r
+                                                       X_Dom_width = size[ 0 ];\r
+                                                       X_Dom_height = size[ 1 ];\r
+                                                       X.Timer.once( 100, X_Dom_detectFinishResizing );\r
+                                                       X_Dom_lock = true;\r
                                                };\r
                                        };\r
                                        \r
                                        size = Node._fontSizeNode._rawObject.offsetHeight;\r
-                                       if( X.Dom.baseFontSize !== size ){\r
-                                               X.Dom.baseFontSize && X.Dom.asyncDispatch( 0, { type : X.Dom.Event.BASE_FONT_RESIZED, fontSize : size, w : X.Dom.w, h : X.Dom.h  } );\r
-                                               X.Dom.baseFontSize = size;\r
+                                       if( X_Dom_baseFontSize !== size ){\r
+                                               X_Dom_baseFontSize && X.Dom.asyncDispatch( 0, { type : X.Dom.Event.BASE_FONT_RESIZED, fontSize : size, w : X_Dom_width, h : X_Dom_height  } );\r
+                                               X_Dom_baseFontSize = size;\r
                                        };\r
                                        \r
                                }) :\r
                                (function( e ){\r
-                                       console.log( '-- resize : ' + X.getTime() );\r
+                                       console.log( '-- resize : ' + X_Timer_now() );\r
                                        \r
-                                       !X.Dom._lock && ( X.Dom._lock = true ) && X.Timer.once( 100, X.Dom._detectFinishResizing );\r
+                                       !X_Dom_lock && ( X_Dom_lock = true ) && X.Timer.once( 100, X_Dom_detectFinishResizing );\r
                                        return X.Callback.PREVENT_DEFAULT | X.Callback.STOP_PROPAGATION;\r
-                               }),\r
+                               });\r
                \r
-               _detectFinishResizing : function (){\r
-                       var size = X.Dom._getSize();\r
-                       if( X.Dom.w !== size[ 0 ] || X.Dom.h !== size[ 1 ] ){\r
-                               X.Dom.w = size[ 0 ];\r
-                               X.Dom.h = size[ 1 ];\r
-                               X.Timer.once( 100, X.Dom._detectFinishResizing );\r
+               function X_Dom_detectFinishResizing(){\r
+                       var size = X_Dom_getWindowSize();\r
+                       if( X_Dom_width !== size[ 0 ] || X_Dom_height !== size[ 1 ] ){\r
+                               X_Dom_width = size[ 0 ];\r
+                               X_Dom_height = size[ 1 ];\r
+                               X.Timer.once( 100, X_Dom_detectFinishResizing );\r
                        } else {\r
-                               console.log( '-- detectFinishResizing : ' + X.getTime() );\r
+                               console.log( '-- detectFinishResizing : ' + X_Timer_now() );\r
                                \r
-                               X.Dom.asyncDispatch( 0, { type : X.Dom.Event.VIEW_RESIZED, w : X.Dom.w, h : X.Dom.h } );\r
-                               X.Dom._lock = false;\r
-                               if( X.Dom._orientationFlag ){\r
-                                       X.Dom._orientationFlag = false;\r
+                               X.Dom.asyncDispatch( 0, { type : X.Dom.Event.VIEW_RESIZED, fontSize : size, w : X_Dom_width, h : X_Dom_height } );\r
+                               X_Dom_lock = false;\r
+                               if( X_Dom_orientationFlag ){\r
+                                       X_Dom_orientationFlag = false;\r
                                        X.Dom.asyncDispatch( 100, { type : X.Dom.Event.VIEW_TURNED, orientation : window.orientation } );\r
                                };\r
                        };\r
-               },\r
+               };\r
 \r
-               _init : function(){\r
-                       var s, size, html, head, body;\r
-                       if( X.Dom.Event.DOM_PRE_INIT <= X.Dom.readyState ) return X_Callback_UN_LISTEN;\r
+               X_TEMP.onDomContentLoaded = function(){\r
+                       var s, size, elmHtml, elmHead, elmBody, html, head, body;\r
                        \r
-                       console.log( 'X.Dom._init()' );\r
+                       if( X_TEMP.SYSTEM_EVENT_PRE_INIT <= X_Dom_readyState ) return X_Callback_UN_LISTEN;\r
+                       X_Dom_readyState = X_TEMP.SYSTEM_EVENT_PRE_INIT;\r
                        \r
-                       delete X.Dom._init;\r
-                       // DOMContentLoaded の無いブラウザで X.Dom._init への参照が残り続けるのを回避\r
-                       Node._document.unlisten( 'DOMContentLoaded', X.Dom._init );\r
+                       // DOMContentLoaded の無いブラウザで X_TEMP.onDomContentLoaded への参照が残り続けるのを回避\r
+                       Node._document.unlisten( 'DOMContentLoaded', X_TEMP.onDomContentLoaded );\r
+                       delete X_TEMP.onDomContentLoaded;\r
                        \r
-                       X.Dom.readyState = X.Dom.Event.DOM_PRE_INIT;\r
+                       elmHtml = document.documentElement ||\r
+                               X_UA_DOM.W3C ? document.getElementsByTagName( 'html' )[ 0 ] :\r
+                               X_UA_DOM.IE4 ? document.all.tags( 'html' )[ 0 ] : null;\r
                        \r
-                       X.Dom._root = document.compatMode !== 'CSS1Compat' ? document.body : document.documentElement || document.body;\r
+                       elmHead = \r
+                               X_UA_DOM.W3C ? document.getElementsByTagName( 'head' )[ 0 ] :\r
+                               X_UA_DOM.IE4 ? document.all.tags( 'head' )[ 0 ] : null;\r
+\r
+                       elmBody = document.body;\r
 \r
-                       html = Node._html =\r
-                               document.documentElement ?\r
-                                       new Node( document.documentElement ) :\r
-                               X_UA_DOM.W3C ?\r
-                                       new Node( document.getElementsByTagName( 'html' )[ 0 ] ) :\r
-                               X_UA_DOM.IE4 ?\r
-                                       new Node( document.all.tags( 'html' )[ 0 ] ) :\r
-                                       null;\r
+                       X_Dom_rootElement = document.compatMode !== 'CSS1Compat' ? elmBody : elmHtml || elmBody;\r
+\r
+                       html = Node._html = elmHtml && new Node( elmHtml );\r
                \r
-                       head = Node._head =\r
-                               X_UA_DOM.W3C ?\r
-                                       new Node( document.getElementsByTagName( 'head' )[ 0 ] ) :\r
-                               X_UA_DOM.IE4 ?\r
-                                       new Node( document.all.tags( 'head' )[ 0 ] ) :\r
-                                       null;\r
+                       head = Node._head = elmHead && new Node( elmHead );\r
                \r
-                       body = Node._body = new Node( document.body );\r
+                       body = Node._body = new Node( elmBody );\r
+                       \r
+                       body._root   = html._root = head._root = body;// _root は html だろ\r
+                       body.parent  = head.parent = html;\r
+                       html._xnodes = [ head, body ];                  \r
                        \r
                        Node.root = body; // 後方互換\r
                        \r
@@ -122,48 +240,44 @@ X.Dom = X.Class._override(
                        head.appendTo = head.appendToRoot = head.before = head.after = head.clone = head.remove = head.destroy = head.prevNode = head.nextNode =\r
                        head.empty = head.html = head.text =\r
                        body.appendTo = body.appendToRoot = body.before = body.after = body.clone = body.remove = body.destroy = body.prevNode = body.nextNode = new Function( 'return this' );\r
-                       \r
-                       body._root   = html._root = head._root = body;\r
-                       body.parent  = head.parent = html;\r
-                       html._xnodes = [ head, body ];\r
 \r
-                       X.Dom.listenOnce( X.Dom.Event.DOM_PRE_INIT, function(){\r
-                               X.Dom.readyState = X.Dom.Event.DOM_BUILDER_COMPLETE;\r
-                               !X_TEMP.X_Dom_useBuilder && X.Dom.asyncDispatch( 0, { type : X.Dom.Event.DOM_BUILDER_COMPLETE } );\r
+                       X.Dom.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT, function(){\r
+                               X_Dom_readyState = X_TEMP.SYSTEM_EVENT_XTREE;\r
+                               !X_TEMP.X_Dom_useBuilder && X.Dom.asyncDispatch( 0, X_TEMP.SYSTEM_EVENT_XTREE );\r
                        } );\r
                        \r
-                       X.Dom.listenOnce( X.Dom.Event.DOM_BUILDER_COMPLETE, function(){\r
-                               X.Dom.readyState = X.Dom.Event.DOM_INIT;\r
+                       X.Dom.listenOnce( X_TEMP.SYSTEM_EVENT_XTREE, function(){\r
+                               X_Dom_readyState = X_TEMP.SYSTEM_EVENT_INIT;\r
                                //X.UA.Opera7 && alert( 'bc' );\r
                                Node._body.appendAt( 0,\r
                                        Node._systemNode = Node.create( 'div', { 'class' : 'hidden-system-node' } ),\r
                                        Node._fontSizeNode = Node.create( 'div', { 'class' : 'hidden-system-node' } ).cssText( 'line-height:1;height:1em;' ).text( 'X' )\r
                                )._startUpdate();\r
 \r
-                               X.Dom.asyncDispatch( 0, { type : X.Dom.Event.DOM_INIT } );\r
+                               X.Dom.asyncDispatch( 0, X_TEMP.SYSTEM_EVENT_INIT );\r
                        } );\r
 \r
-                       X.Dom.listenOnce( X.Dom.Event.DOM_INIT, function(){\r
-                               var size = X.Dom._getSize();\r
+                       X.Dom.listenOnce( X_TEMP.SYSTEM_EVENT_INIT, function(){\r
+                               var size = X_Dom_getWindowSize();\r
                                \r
-                               if( X.Dom._orientationchange ){\r
-                                       X.Dom.Node._window.listen( 'orientationchange', X.Dom._orientationchange );\r
+                               if( X_Dom_orientationchange ){\r
+                                       X.Dom.Node._window.listen( 'orientationchange', X_Dom_orientationchange );\r
                                };\r
                                \r
-                               if( X.Dom._detectFontSize ){\r
-                                       X.Dom.Node._window.listen( 'resize', X.Dom._resize );\r
-                                       X.Timer.add( 333, X.Dom._detectFontSize );\r
+                               if( X_Dom_detectFontSize ){\r
+                                       X.Dom.Node._window.listen( 'resize', X_Dom_resize );\r
+                                       X.Timer.add( 333, X_Dom_detectFontSize );\r
                                } else {\r
-                                       X.Timer.add( 333, X.Dom._resize );\r
+                                       X.Timer.add( 333, X_Dom_resize );\r
                                };\r
                                \r
-                               X.Dom.baseFontSize = Node._fontSizeNode._rawObject.offsetHeight;\r
+                               X_Dom_baseFontSize = Node._fontSizeNode._rawObject.offsetHeight;\r
                                \r
-                               X.Dom.readyState = X.Dom.Event.XDOM_READY;\r
-                               X.Dom.asyncDispatch( 0, { type : X.Dom.Event.XDOM_READY, w : X.Dom.w = size[ 0 ], h : X.Dom.h = size[ 1 ] } );\r
+                               X_Dom_readyState = X.Event.XDOM_READY;\r
+                               X.Dom.asyncDispatch( 0, { type : X.Event.XDOM_READY, w : X_Dom_width = size[ 0 ], h : X_Dom_height = size[ 1 ] } );\r
                        } );\r
 \r
-                       X.Dom.asyncDispatch( 0, { type : X.Dom.Event.DOM_PRE_INIT } );  \r
+                       X.Dom.asyncDispatch( 0, X_TEMP.SYSTEM_EVENT_PRE_INIT ); \r
 \r
                        Node._window\r
                                .listen( 'beforeunload', X.Dom )\r
@@ -187,141 +301,32 @@ X.Dom = X.Class._override(
                        };\r
 \r
                        return X_Callback_UN_LISTEN;\r
-               },\r
-\r
-               handleEvent : function( e ){\r
-                       var href;\r
-                       switch( e.type ){\r
-                               case 'beforeunload' :\r
-                                       \r
-                                       // ie では a href="javascript" な要素でも beforeunload が起こる\r
-                                       href = e.target && e.target.attr && e.target.attr( 'href' );\r
-                                       if( href && href.indexOf && href.indexOf( 'javascript:' ) === 0 ) return X.Callback.PREVENT_DEFAULT | X.Callback.STOP_PROPAGATION;\r
-                                       \r
-                                       return X.Dom.dispatch( { type : X.Dom.Event.BEFORE_UNLOAD } );\r
-                               case 'unload' :\r
-                                       X.Dom.dispatch( { type : X.Dom.Event.UNLOAD } );\r
-                                       \r
-                                       Node._window.unlisten();\r
-                                       Node._document.unlisten();\r
-                                       Node._html._actualRemove( true );\r
-                                       break;\r
-                               case 'visibilitychange' :\r
-                                       X.Dom.dispatch( { type : ( X.Dom.activate = document[ 'hidden' ] ) ? X.Dom.Event.VIEW_DEACTIVATE : X.Dom.Event.VIEW_ACTIVATE } );\r
-                                       break;\r
-                               case 'webkitvisibilitychange' :\r
-                                       X.Dom.dispatch( { type : ( X.Dom.activate = document[ 'webkitHidden' ] ) ? X.Dom.Event.VIEW_DEACTIVATE : X.Dom.Event.VIEW_ACTIVATE } );\r
-                                       break;\r
-                               case 'pageshow' :\r
-                               case 'focus' :\r
-                                       X.Dom.activate = true;\r
-                                       X.Dom.dispatch( { type : X.Dom.Event.VIEW_ACTIVATE } );\r
-                                       break;\r
-                               case 'pagehide' :\r
-                               case 'blur' :\r
-                                       X.Dom.activate = false;\r
-                                       X.Dom.dispatch( { type : X.Dom.Event.VIEW_DEACTIVATE } );\r
-                                       break;\r
-                       };\r
-               },\r
-\r
-               listen : function( type ){\r
-                       if( type <= X.Dom.readyState ){\r
-                               /*\r
-                                * X.Dom.Event.XDOM_READY 以後に listen した場合の対策\r
-                                */\r
-                               X.Dom.asyncDispatch( 0, { type : type, w : X.Dom.w, h : X.Dom.h } );\r
-                       };\r
-                       return X_EventDispatcher_listen.apply( X.Dom, arguments );\r
-               },\r
-               \r
-               getPointerPosition : function(){\r
-                       \r
-               },\r
-               \r
-               /* 要素が視界に入った  http://remysharp.com/2009/01/26/element-in-view-event-plugin/ */\r
-               inView : function( elm ){\r
-                       \r
-               },\r
+               };\r
 \r
-               _getSize :\r
-                       X.UA.IE ?\r
-                               new Function( 'return[X.Dom._root.clientWidth,X.Dom._root.clientHeight]' ) :\r
-                               new Function( 'return[window.innerWidth,window.innerHeight]' ),\r
-               \r
-               getSize : function(){\r
-                       return [ X.Dom.w, X.Dom.h ];\r
-               },\r
-//https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect\r
-//use window.pageXOffset and window.pageYOffset instead of window.scrollX and window.scrollY\r
-//(((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.ScrollLeft == 'number' ? t : document.body).ScrollLeft;\r
-//(((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.ScrollTop == 'number' ? t : document.body).ScrollTop\r
-               \r
-               getDocumentSize : function(){\r
-                       // Opera は互換モードでは document.body.scrollHeight、標準モードでは document.documentElement.scrollHeight でページの高さが取れる。と思ってたんだけど、例外があった。\r
-                       // http://orera.g.hatena.ne.jp/edvakf/20100515/1273908051\r
-               //http://onozaty.hatenablog.com/entry/20060803/p1\r
-               // Safari2.0.4では標準・互換どちらも document.body\r
-                       \r
-                       Node._body._updateTimerID && Node._body._startUpdate();\r
-                       /*X.UA.Opera ?\r
-                               ( document.documentElement && document.documentElement.clientWidth ?\r
-                                       new Function( 'return[document.documentElement.clientWidth,document.documentElement.clientHeight]' ) :\r
-                                       new Function( 'return[document.body.clientWidth,document.body.clientHeight]' )\r
-                               ) :*/                   \r
-                       return [\r
-                               X.Dom._root.scrollWidth  || X.Dom._root.offsetWidth,\r
-                               X.Dom._root.scrollHeight || X.Dom._root.offsetHeight\r
-                       ];\r
-               },\r
-               \r
-               getScrollPosition :\r
-                       window.pageXOffset !== undefined ?\r
-                               ( function(){\r
-                                       Node._body._updateTimerID && Node._body._startUpdate();\r
-                                       return[ window.pageXOffset, window.pageYOffset ];\r
-                               } ) :\r
-                       window.scrollLeft  !== undefined ?\r
-                               ( function(){\r
-                                       Node._body._updateTimerID && Node._body._startUpdate();\r
-                                       return[ window.scrollLeft, window.scrollTop ];\r
-                               } ) :\r
-                               ( function(){\r
-                                       Node._body._updateTimerID && Node._body._startUpdate();\r
-                                       // body は Safari2-\r
-                                       return[ X.Dom._root.scrollLeft || document.body.scrollLeft, X.Dom._root.scrollTop || document.body.scrollTop ];\r
-                               } ),\r
+               function X_Dom_getWindowSize(){\r
+                       return X.UA.IE ?\r
+                               [ X_Dom_rootElement.clientWidth, X_Dom_rootElement.clientHeight ] :\r
+                               [ window.innerWidth, window.innerHeight ];\r
+               };\r
 \r
-               getScrollbarSize : function(){\r
-                       return [ X.Dom.BoxModel.vScrollbarSize, X.Dom.BoxModel.hScrollbarSize ];        \r
-               },\r
-               \r
-               getBaseFontSize : function(){\r
-                       if( Node._body._updateTimerID ){\r
-                               Node._body._startUpdate();\r
-                               return Node._fontSizeNode._rawObject.offsetHeight;\r
-                       };\r
-                       return X.Dom.baseFontSize;\r
-               }\r
-       }\r
-);\r
 \r
 if( !( X.UA.IE < 9 || X.UA.iOS ) ){\r
-       X.Dom._detectFontSize = function(){\r
+       var X_Dom_detectFontSize = function(){\r
                var size = Node._fontSizeNode._rawObject.offsetHeight;\r
-               if( X.Dom.baseFontSize !== size ){\r
-                       X.Dom.baseFontSize && X.Dom.asyncDispatch( 0, { type : X.Dom.Event.BASE_FONT_RESIZED, fontSize : size, w : X.Dom.w, h : X.Dom.h } );\r
-                       X.Dom.baseFontSize = size;\r
+               if( X_Dom_baseFontSize !== size ){\r
+                       X_Dom_baseFontSize && X.Dom.asyncDispatch( 0, { type : X.Dom.Event.BASE_FONT_RESIZED, fontSize : size, w : X_Dom_width, h : X_Dom_height } );\r
+                       X_Dom_baseFontSize = size;\r
                };\r
        };\r
 };\r
 \r
 if( window[ 'orientation' ] !== undefined ){\r
-       X.Dom._orientationchange = function( e ){\r
-               X.Dom._orientationFlag = true;\r
-               !X.UA.Android && X.Dom._resize();\r
-               console.log( '-- orientationchange : ' + X.Dom.getSize[ 0 ] + ' ' + X.Dom.getSize[ 1 ] );\r
-       };\r
+       var X_Dom_orientationchange = function( e ){\r
+               X_Dom_orientationFlag = true;\r
+               !X.UA.Android && X_Dom_resize();\r
+               //console.log( '-- orientationchange : ' + X.Dom.getSize[ 0 ] + ' ' + X.Dom.getSize[ 1 ] );\r
+       },\r
+       X_Dom_orientationFlag;\r
 };\r
 \r
 console.log( 'X.Dom dom:w3c=' + X_UA_DOM.W3C + ' ev:w3c=' + X_UA_EVENT.W3C );\r
index ecacc7a..71caaa2 100644 (file)
@@ -1,42 +1,55 @@
-X.Dom.Dirty = {\r
-       CLEAN            :  0,\r
-       CHILD_IS_DIRTY   :  1,\r
-       ID               :  2, // width, height, x, y\r
-       CONTENT          :  4, // width, height, x, y textNode の内容\r
-       CLASSNAME        :  8, // _getCharSize, width, height, x, y\r
-       ATTR             : 16, // _getCharSize, width, height, x, y\r
-       CSS              : 32, // _getCharSize, width, height, x, y\r
-       IE_FILTER        : X.UA.IE < 9 && !X.UA.MacIE ? 64 : 0,\r
-       UNKNOWN_TAG_FIX  : 128,\r
-       IE4_TEXTNODE_FIX : 256\r
-};\r
-\r
-X.Dom.State = {\r
-       DESTROYED          : 0,\r
-       EXIST              : 1,\r
-       BELONG_TREE        : 2,\r
-       DISPLAY_NONE       : 4,\r
-       DISPLAY_BLOCK      : 8,\r
-       DISPLAY_INLINE     : 16,\r
-       POSITION_ABSOLUTE  : 32,\r
-       OVERFLOW_HIDDEN    : 64,\r
-       HAS_WIDTH_LENGTH   : 128,\r
-       HAS_WIDTH_PERCENT  : 256,\r
-       HAS_HEIGHT_LENGTH  : 512,\r
-       HAS_HEIGHT_PERCENT : 1024,\r
-       IE4_ONLY_TEXT      : 2048,\r
-       IE5_DISPLAY_NONE_FIX : !X.UA.MacIE && X.UA.IE5 ? 4096 : 0 // filterがかかっていると不可? MacIE5.2- は ?\r
-};\r
-\r
-X.Dom._strictElmCreation = !X.UA.MacIE && X.UA.IE5678;// && !X.UA.MacIE;\r
-\r
-X.Dom._useDocumentFragment = document.createDocumentFragment && ( !X.UA.IE || 5.5 <= X.UA.IE ) && document.createDocumentFragment();\r
+var \r
+       X_Node_Dirty = {\r
+               CLEAN            :  0,\r
+               CHILD_IS_DIRTY   :  1,\r
+               ID               :  2, // width, height, x, y\r
+               CONTENT          :  4, // width, height, x, y textNode の内容\r
+               CLASSNAME        :  8, // _getCharSize, width, height, x, y\r
+               ATTR             : 16, // _getCharSize, width, height, x, y\r
+               CSS              : 32, // _getCharSize, width, height, x, y\r
+               IE_FILTER        : X.UA.IE < 9 && !X.UA.MacIE ? 64 : 0,\r
+               UNKNOWN_TAG_FIX  : 128,\r
+               IE4_TEXTNODE_FIX : 256\r
+       },\r
+       \r
+       X_Node_State = {\r
+               DESTROYED          : 0,\r
+               EXIST              : 1,\r
+               BELONG_TREE        : 2,\r
+               DISPLAY_NONE       : 4,\r
+               DISPLAY_BLOCK      : 8,\r
+               DISPLAY_INLINE     : 16,\r
+               POSITION_ABSOLUTE  : 32,\r
+               OVERFLOW_HIDDEN    : 64,\r
+               HAS_WIDTH_LENGTH   : 128,\r
+               HAS_WIDTH_PERCENT  : 256,\r
+               HAS_HEIGHT_LENGTH  : 512,\r
+               HAS_HEIGHT_PERCENT : 1024,\r
+               IE4_ONLY_TEXT      : 2048,\r
+               IE5_DISPLAY_NONE_FIX : !X.UA.MacIE && X.UA.IE5 ? 4096 : 0 // filterがかかっていると不可? MacIE5.2- は ?\r
+       },\r
+       \r
+       X_Node_TYPE = {\r
+               XNODE       : 1,\r
+               RAW_HTML    : 2,\r
+               RAW_TEXT    : 3,\r
+               HTML_STRING : 4,\r
+               STRING      : 5,\r
+               //DOC_FRAG    : 6,\r
+               XNODE_LIST  : 7,\r
+               WINDOW      : 8,\r
+               DOCUMENT    : 9,\r
+               IMAGE       : 10\r
+       },\r
+       \r
+       X_Node_strictElmCreation = !X.UA.MacIE && X.UA.IE5678,// && !X.UA.MacIE;\r
+       \r
+       X_Node_useDocumentFragment = document.createDocumentFragment && ( !X.UA.IE || 5.5 <= X.UA.IE ) && document.createDocumentFragment(),\r
 \r
 /*\r
  * Node( rawElement | rawTextnode | htmlString | textString )\r
- */\r
-\r
-X.Dom.Node = X.EventDispatcher.inherits(\r
+ */    \r
+       Node = X.Dom.Node = X.EventDispatcher.inherits(\r
        'XDomNode',\r
        X.Class.POOL_OBJECT,\r
        {\r
@@ -44,7 +57,7 @@ X.Dom.Node = X.EventDispatcher.inherits(
                _state     : 0,\r
                _dirty     : 0,\r
                \r
-               _isNew     : false,\r
+               _isNew     : false, // state にまとめる\r
                \r
                _rawObject : null,\r
                _rect      : null, // \r
@@ -59,9 +72,9 @@ X.Dom.Node = X.EventDispatcher.inherits(
                _id        : null,\r
                _className : '',\r
 \r
-               _attrs     : null, // X.Dom.Attr\r
+               _attrs     : null, // X_Node_Attr\r
                _newAttrs  : null,\r
-               _attrText  : '', // X.Dom.Attr.objToAttrText が必要な場合は false が入っている\r
+               _attrText  : '', // X_Node_Attr.objToAttrText が必要な場合は false が入っている\r
                \r
                _css       : null, // X.Dom.Style\r
                _cssText   : null,\r
@@ -80,7 +93,7 @@ X.Dom.Node = X.EventDispatcher.inherits(
                                Node._newByTag  = false;\r
                                this._tag       = v.toUpperCase();\r
                                this._xnodeType = 1;\r
-                               this._state     = X.Dom.State.DISPLAY_INLINE; // todo\r
+                               this._state     = X_Node_State.DISPLAY_INLINE; // todo\r
                                arguments[ 1 ] && this.attr( arguments[ 1 ] );\r
                                css = arguments[ 2 ];\r
                                css && this[ X.Type.isString( css ) ? 'cssText' : 'css' ]( css );\r
@@ -89,32 +102,32 @@ X.Dom.Node = X.EventDispatcher.inherits(
                                Node._newByText = false;\r
                                this._text      = v;\r
                                this._xnodeType = 3;\r
-                               this._state     = X.Dom.State.DISPLAY_INLINE;\r
+                               this._state     = X_Node_State.DISPLAY_INLINE;\r
                        } else {\r
                                if( 1 < arguments.length ) return new X.Dom.NodeList( arguments );\r
                                if( X.Type.isArray( v ) && v.length ) return new X.Dom.NodeList( v );\r
                                //if( !this || this.append !== Node.prototype.append ){\r
                                //       return new Node( v );\r
                                //};\r
-                               switch( Node._getType( v ) ){\r
-                                       case Node.IS_XNODE :\r
-                                       case Node.IS_XNODE_LIST :\r
+                               switch( X_Node_getType( v ) ){\r
+                                       case X_Node_TYPE.XNODE :\r
+                                       case X_Node_TYPE.XNODE_LIST :\r
                                                return v;\r
-                                       case Node.IS_RAW_HTML :\r
-                                               if( xnode = Node._getXNode( v ) ) return xnode;\r
+                                       case X_Node_TYPE.RAW_HTML :\r
+                                               if( xnode = X_Node_getXNode( v ) ) return xnode;\r
                                                // v.parentNode || v.parentElement : dom1 || dom0\r
-                                               this.parent     = ( parent = v.parentNode || v.parentElement ) && parent.tagName /* ie7- */ && Node._getXNode( parent );\r
+                                               this.parent     = ( parent = v.parentNode || v.parentElement ) && parent.tagName /* ie7- */ && X_Node_getXNode( parent );\r
                                                this._root      = this.parent ? this.parent._root : null;\r
                                                this._rawObject = v;\r
                                                this._xnodeType = 1;\r
-                                               this._state     = X.Dom.State.DISPLAY_BLOCK; // todo\r
+                                               this._state     = X_Node_State.DISPLAY_BLOCK; // todo\r
                                                this._tag       = v.tagName.toUpperCase();\r
                                                this._id        = v.id;\r
                                                this._className = v.className;\r
                                                this.cssText( v.style.cssText );\r
-                                               // X.Dom.Dirty.CSS を落とす\r
+                                               // X_Node_Dirty.CSS を落とす\r
                                                this._dirty = 0;\r
-                                               // attr の回収は不可能、、、\r
+                                               // TODO attr の回収は不可能、、、\r
                                                if( X_UA_DOM.IE4 ){\r
                                                        v.setAttribute( 'UID', '' + uid );\r
                                                } else {\r
@@ -122,35 +135,35 @@ X.Dom.Node = X.EventDispatcher.inherits(
                                                };\r
                                                // childNodes...\r
                                                break;\r
-                                       case Node.IS_RAW_TEXT :\r
-                                               if( xnode = Node._getXNode( v ) ) return xnode;\r
-                                               this.parent     = Node._getXNode( v.parentNode );\r
+                                       case X_Node_TYPE.RAW_TEXT :\r
+                                               if( xnode = X_Node_getXNode( v ) ) return xnode;\r
+                                               this.parent     = X_Node_getXNode( v.parentNode );\r
                                                this._root      = this.parent ? this.parent._root : null;\r
                                                this._rawObject = v;\r
                                                this._xnodeType = 3;\r
-                                               this._state     = X.Dom.State.DISPLAY_INLINE;\r
+                                               this._state     = X_Node_State.DISPLAY_INLINE;\r
                                                this._text      = v.data;\r
                                                v.UID = uid;\r
                                                break;\r
-                                       case Node.IS_HTML_STRING :\r
-                                       case Node.IS_STRING :\r
+                                       case X_Node_TYPE.HTML_STRING :\r
+                                       case X_Node_TYPE.STRING :\r
                                                if( xnodes = X.Dom.parse( v, true ) && 1 < xnodes.length ) return new X.Dom.NodeList( xnodes );\r
                                                if( xnodes.length ) return xnodes[ 0 ];\r
                                                return Node.none;\r
-                                       case Node.IS_IMAGE :\r
-                                               if( xnode = Node._getXNode( v ) ) return xnode;\r
+                                       case X_Node_TYPE.IMAGE :\r
+                                               if( xnode = X_Node_getXNode( v ) ) return xnode;\r
                                                this._rawObject = v;\r
                                                this._xnodeType = 4;\r
                                                v.UID           = uid;\r
-                                               this._state     = X.Dom.State.EXIST;\r
+                                               this._state     = X_Node_State.EXIST;\r
                                                break;\r
                                        /*\r
-                                       case Node.IS_WINDOW :\r
-                                       case Node.IS_DOCUMENT :\r
-                                               if( xnode = Node._getXNode( v ) ) return xnode;\r
+                                       case X_Node_TYPE.WINDOW :\r
+                                       case X_Node_TYPE.DOCUMENT :\r
+                                               if( xnode = X_Node_getXNode( v ) ) return xnode;\r
                                                this._rawObject = v;\r
                                                this._xnodeType = 2;\r
-                                               this._state     = X.Dom.State.DISPLAY_BLOCK;\r
+                                               this._state     = X_Node_State.DISPLAY_BLOCK;\r
                                                break; */\r
                                        default :\r
                                                if( Node.none ) return Node.none;\r
@@ -163,54 +176,41 @@ X.Dom.Node = X.EventDispatcher.inherits(
        }\r
 );\r
 \r
-var Node = X.Dom.Node;\r
-\r
-Node.IS_XNODE       = 1;\r
-Node.IS_RAW_HTML    = 2;\r
-Node.IS_RAW_TEXT    = 3;\r
-Node.IS_HTML_STRING = 4;\r
-Node.IS_STRING      = 5;\r
-//Node.IS_DOC_FRAG    = 6;\r
-Node.IS_XNODE_LIST  = 7;\r
-Node.IS_WINDOW      = 8;\r
-Node.IS_DOCUMENT    = 9;\r
-Node.IS_IMAGE       = 10;\r
-\r
-Node._getType = function( v ){\r
-       if( v === '' ) return Node.IS_STRING;\r
+function X_Node_getType( v ){\r
+       if( v === '' ) return X_Node_TYPE.STRING;\r
        if( !v ) return 0;\r
-       if( v === window ) return Node.IS_WINDOW;\r
-       if( v === document ) return Node.IS_DOCUMENT;\r
-       if( v.constructor === Node ) return Node.IS_XNODE;\r
-       if( v.constructor === X.Dom.NodeList ) return Node.IS_XNODE_LIST;\r
-       if( X.Type.isHTMLElement( v ) ) return Node.IS_RAW_HTML;\r
-       if( v.nodeType === 3 ) return Node.IS_RAW_TEXT;\r
-       if( X.Type.isImage( v ) ) return Node.IS_IMAGE;\r
-       if( typeof v === 'string' ){\r
-               return '<' === v.charAt( 0 ) && v.charAt( v.length - 1 ) === '>' ? Node.IS_HTML_STRING : Node.IS_STRING;\r
+       if( v === window ) return X_Node_TYPE.WINDOW;\r
+       if( v === document ) return X_Node_TYPE.DOCUMENT;\r
+       if( v.constructor === Node ) return X_Node_TYPE.XNODE;\r
+       if( v.constructor === X.Dom.NodeList ) return X_Node_TYPE.XNODE_LIST;\r
+       if( X.Type.isHTMLElement( v ) ) return X_Node_TYPE.RAW_HTML;\r
+       if( v.nodeType === 3 ) return X_Node_TYPE.RAW_TEXT;\r
+       if( X.Type.isImage( v ) ) return X_Node_TYPE.IMAGE;\r
+       if( X.Type.isString( v ) ){\r
+               return '<' === v.charAt( 0 ) && v.charAt( v.length - 1 ) === '>' ? X_Node_TYPE.HTML_STRING : X_Node_TYPE.STRING;\r
        };\r
-       //if( v.nodeType === 11 ) return Node.IS_DOC_FRAG;\r
+       //if( v.nodeType === 11 ) return X_Node_TYPE.DOC_FRAG;\r
        return 0;\r
 };\r
-Node._getXNode = function( v ){\r
+function X_Node_getXNode( v ){\r
        var uid, i, chashe, xnode;\r
-       switch( Node._getType( v ) ){\r
-               case Node.IS_XNODE :\r
-               case Node.IS_XNODE_LIST :\r
+       switch( X_Node_getType( v ) ){\r
+               case X_Node_TYPE.XNODE :\r
+               case X_Node_TYPE.XNODE_LIST :\r
                        return v;\r
-               case Node.IS_RAW_HTML :\r
-               case Node.IS_IMAGE :\r
+               case X_Node_TYPE.RAW_HTML :\r
+               case X_Node_TYPE.IMAGE :\r
                        // fake TextNode too.\r
                        if( X_UA_DOM.IE4 ){\r
                                uid = v.getAttribute( 'UID' );\r
                                return uid && Node._chashe[ uid ];\r
                        };\r
                        return v.UID && Node._chashe[ v.UID ];\r
-               case Node.IS_WINDOW :\r
+               case X_Node_TYPE.WINDOW :\r
                        return Node._window;\r
-               case Node.IS_DOCUMENT :\r
+               case X_Node_TYPE.DOCUMENT :\r
                        return Node._document;\r
-               case Node.IS_RAW_TEXT :\r
+               case X_Node_TYPE.RAW_TEXT :\r
                        if( v.UID ) return Node._chashe[ v.UID ];\r
                        for( chashe = Node._chashe, i = chashe.length; i; ){\r
                                if( ( xnode = Node._chashe[ --i ] ) && ( xnode._rawObject === v ) ) return xnode;\r
@@ -221,11 +221,11 @@ Node._getXNode = function( v ){
 \r
 Node.create = function( tag, opt_attrs, opt_css ){\r
        var list, i;\r
-       switch( Node._getType( tag ) ){\r
-               case Node.IS_STRING :\r
+       switch( X_Node_getType( tag ) ){\r
+               case X_Node_TYPE.STRING :\r
                        Node._newByTag = true;\r
                        return new Node( tag, opt_attrs, opt_css );\r
-               case Node.IS_HTML_STRING :\r
+               case X_Node_TYPE.HTML_STRING :\r
                        list = X.Dom.parse( tag, true );\r
                        for( i = list.length; 1 < i; ){\r
                                list[ --i ].destroy();\r
@@ -364,15 +364,15 @@ Node.prototype.append = function( v ){
        \r
        if( !( xnodes = this._xnodes ) ) this._xnodes = xnodes = [];\r
        \r
-       switch( Node._getType( v ) ){\r
-               case Node.IS_RAW_HTML :\r
-               case Node.IS_RAW_TEXT :\r
+       switch( X_Node_getType( v ) ){\r
+               case X_Node_TYPE.RAW_HTML :\r
+               case X_Node_TYPE.RAW_TEXT :\r
                        v = new Node( v );\r
                        break;\r
-               case Node.IS_HTML_STRING :\r
-               case Node.IS_STRING :\r
+               case X_Node_TYPE.HTML_STRING :\r
+               case X_Node_TYPE.STRING :\r
                        return this.append.apply( this, X.Dom.parse( v, true ) );\r
-               case Node.IS_XNODE :\r
+               case X_Node_TYPE.XNODE :\r
                        if( v._xnodeType !== 1 && v._xnodeType !== 3 ) return this;\r
                        // 親の xnodes から v を消す\r
                        if( v.parent ){\r
@@ -424,19 +424,19 @@ Node.prototype.appendAt = function( start, v ){
                return this;\r
        };\r
 \r
-       switch( Node._getType( v ) ){\r
-               case Node.IS_RAW_HTML :\r
-               case Node.IS_RAW_TEXT :\r
+       switch( X_Node_getType( v ) ){\r
+               case X_Node_TYPE.RAW_HTML :\r
+               case X_Node_TYPE.RAW_TEXT :\r
                        v = new Node( v );\r
                        break;\r
-               case Node.IS_HTML_STRING :\r
-               case Node.IS_STRING :\r
+               case X_Node_TYPE.HTML_STRING :\r
+               case X_Node_TYPE.STRING :\r
                        v = X.Dom.parse( v, true );\r
                        for( i = v.length; i; ){\r
                                this.appendAt( start, v[ --i ] );\r
                        };\r
                        return this;\r
-               case Node.IS_XNODE :\r
+               case X_Node_TYPE.XNODE :\r
                        if( v._xnodeType !== 1 && v._xnodeType !== 3 ) return this;\r
                        // 親の xnodes から v を消す\r
                        if( v.parent ){\r
@@ -465,14 +465,14 @@ Node.prototype.appendAt = function( start, v ){
 };\r
 \r
 Node.prototype.appendTo = function( parent, opt_index ){\r
-       switch( Node._getType( parent ) ){\r
-               case Node.IS_RAW_HTML :\r
+       switch( X_Node_getType( parent ) ){\r
+               case X_Node_TYPE.RAW_HTML :\r
                        parent = new Node( parent );\r
                        break;\r
-               case Node.IS_HTML_STRING :\r
+               case X_Node_TYPE.HTML_STRING :\r
                        parent = X.Dom.parse( parent, true );\r
                        parent = parent[ 0 ] || parent;\r
-               case Node.IS_XNODE :\r
+               case X_Node_TYPE.XNODE :\r
                        break;\r
                default :\r
                        return this;\r
@@ -623,7 +623,7 @@ Node.prototype.contains = function( v ){
        var elm, type, xnodes, i;\r
        if( !v || this._xnodeType !== 1 ) return false;\r
        // contains ie4+\r
-       if( ( elm = this._rawObject || this._ie4getRawNode && this._ie4getRawNode() ) && document.contains && ( type = Node._getType( v ) ) && ( type === Node.IS_RAW_HTML || type === Node.IS_RAW_TEXT ) ){\r
+       if( ( elm = this._rawObject || this._ie4getRawNode && this._ie4getRawNode() ) && document.contains && ( type = X_Node_getType( v ) ) && ( type === X_Node_TYPE.RAW_HTML || type === X_Node_TYPE.RAW_TEXT ) ){\r
                return elm.contains( v );       \r
        };\r
        //if( document.compareDocumentPosition ){\r
@@ -690,7 +690,7 @@ Node.prototype.className = function( v ){
                if( this._className === v ) return this;\r
                v ? ( this._className = v ) : delete this._className;\r
        };\r
-       this._dirty |= X.Dom.Dirty.CLASSNAME;\r
+       this._dirty |= X_Node_Dirty.CLASSNAME;\r
        this._root && this._reserveUpdate();\r
        return this;\r
 };\r
@@ -774,14 +774,14 @@ Node.prototype.html = function( html ){
                return this._text;\r
        };\r
        \r
-       if( this._dirty & X.Dom.Dirty.CSS && !( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
+       if( this._dirty & X_Node_Dirty.CSS && !( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
                delete this._cssText;\r
        };\r
        html = !Node._outerFlag ? [] : [\r
                '<', this._tag,\r
                this._id ? ' id="' + this._id + q : _,\r
                this._className ? ' class="' + this._className + q : _,\r
-               this._attrText === false ? ( this._attrText = X.Dom.Attr.objToAttrText( this._attrs ) ) : this._attrText,\r
+               this._attrText === false ? ( this._attrText = X_Node_Attr.objToAttrText( this._attrs ) ) : this._attrText,\r
                this._cssText ? ' style="' + this._cssText + q : _,\r
        '>' ];\r
        \r
@@ -806,7 +806,7 @@ Node.prototype.text = function( text ){
                        if( this._text !== text ){\r
                                text ? ( this._text = text ) : delete this.text;\r
                                this._root && this._reserveUpdate();\r
-                               this._dirty |= X.Dom.Dirty.CONTENT;\r
+                               this._dirty |= X_Node_Dirty.CONTENT;\r
                        };\r
                        return this;\r
                };\r
@@ -909,7 +909,7 @@ Node.prototype._reserveUpdate = function(){
 \r
 Node.prototype._startUpdate = function(){\r
        var removal, i, xnode, tmp;\r
-       if( X.Dom.readyState < X.Dom.Event.DOM_INIT ){\r
+       if( X_Dom_readyState < X_TEMP.SYSTEM_EVENT_INIT ){\r
                return;\r
        };\r
        if( this._updateTimerID ){\r
@@ -953,7 +953,7 @@ Node.prototype._commitUpdate =
                        var elm = this._rawObject,\r
                                xnodes, l, i, frg, next, k, v;\r
 \r
-                       if( this._state & X.Dom.State.IE5_DISPLAY_NONE_FIX ){\r
+                       if( this._state & X_Node_State.IE5_DISPLAY_NONE_FIX ){\r
                                //alert( this._tag + ' ' + !!elm );\r
                                // filter の効いている要素だけdisplay:none が無視される模様。filter を切ればよい?\r
                                // 親が、display:none の場合は?\r
@@ -971,7 +971,7 @@ Node.prototype._commitUpdate =
                        } else\r
                        if( ( xnodes = this._xnodes ) && ( l = xnodes.length ) ) {\r
                                \r
-                               /*if( elm.childNodes.length !== l && ( frg = X.Dom._useDocumentFragment ) ){\r
+                               /*if( elm.childNodes.length !== l && ( frg = X_Node_useDocumentFragment ) ){\r
                                        for( i = 0; i < l; ++i ){\r
                                                frg.appendChild( xnodes[ i ]._actualCreate( true ) );\r
                                        };\r
@@ -988,7 +988,7 @@ Node.prototype._commitUpdate =
 \r
                        delete this._fontSize;\r
                        this._dirty && this._updateRawNode( elm );\r
-                       if( this._state & X.Dom.State.IE5_DISPLAY_NONE_FIX ){\r
+                       if( this._state & X_Node_State.IE5_DISPLAY_NONE_FIX ){\r
                                return nextElement;\r
                        };\r
                        return elm;\r
@@ -1009,7 +1009,7 @@ Node.prototype._commitUpdate =
                        xnodes = this._xnodes;\r
                        l      = xnodes ? xnodes.length : 0;\r
                        \r
-                       if( this._dirty & X.Dom.Dirty.IE4_TEXTNODE_FIX || ( this._state & X.Dom.State.IE4_ONLY_TEXT && ( l !== 1 || xnodes[ 0 ]._xnodeType !== 3 ) ) ){ // 1 < l && elm.children.length === 0\r
+                       if( this._dirty & X_Node_Dirty.IE4_TEXTNODE_FIX || ( this._state & X_Node_State.IE4_ONLY_TEXT && ( l !== 1 || xnodes[ 0 ]._xnodeType !== 3 ) ) ){ // 1 < l && elm.children.length === 0\r
                                html = [];\r
                                for( i = 0; i < l; ++i ){\r
                                        html[ i ] = xnodes[ i ]._actualCreate();\r
@@ -1018,9 +1018,9 @@ Node.prototype._commitUpdate =
                                for( i = 0; i < l; ++i ){\r
                                        xnodes[ i ]._afterActualCreate();\r
                                };\r
-                               this._state &= ~X.Dom.State.IE4_ONLY_TEXT;\r
+                               this._state &= ~X_Node_State.IE4_ONLY_TEXT;\r
                        } else\r
-                       if( this._state & X.Dom.State.IE4_ONLY_TEXT ){ // textNode が swap した場合の検出は、_root で行う\r
+                       if( this._state & X_Node_State.IE4_ONLY_TEXT ){ // textNode が swap した場合の検出は、_root で行う\r
                                text = xnodes[ 0 ];\r
                                if( text._dirty || !text._root ){\r
                                        elm.innerHTML = text._text;\r
@@ -1046,29 +1046,29 @@ Node.prototype._updateRawNode =
                        var attrs, rename, k, v;\r
 \r
                        // textNode\r
-                       if( this._dirty & X.Dom.Dirty.CONTENT ){\r
+                       if( this._dirty & X_Node_Dirty.CONTENT ){\r
                                elm.data = X_String_chrReferanceTo( this._text );\r
                                delete this._dirty;\r
                                return;\r
                        };\r
                        // id\r
-                       if( this._dirty & X.Dom.Dirty.ID ){\r
+                       if( this._dirty & X_Node_Dirty.ID ){\r
                                this._id ? ( elm.id = this._id ) : ( elm.id && elm.removeAttribute( 'id' ) );           \r
                        };\r
                        // className\r
-                       if( this._dirty & X.Dom.Dirty.CLASSNAME ){\r
+                       if( this._dirty & X_Node_Dirty.CLASSNAME ){\r
                                this._className ? ( elm.className = this._className ) : ( elm.className && elm.removeAttribute( X.UA.IE5678 ? 'className' : 'class' ) ); // className は ie7-?                         \r
 \r
                                // ie5 only\r
-                               if( X.Dom.State.IE5_DISPLAY_NONE_FIX && elm.currentStyle.display === 'none' ){\r
+                               if( X_Node_State.IE5_DISPLAY_NONE_FIX && elm.currentStyle.display === 'none' ){\r
                                        this._actualRemove();\r
-                                       this._state |= X.Dom.State.IE5_DISPLAY_NONE_FIX;\r
+                                       this._state |= X_Node_State.IE5_DISPLAY_NONE_FIX;\r
                                        return;\r
                                };\r
                        };\r
                        // style\r
                        // TODO display:none の場合、更新をスキップ\r
-                       if( this._dirty & X.Dom.Dirty.CSS ){\r
+                       if( this._dirty & X_Node_Dirty.CSS ){\r
                                if( this._cssText !== null || ( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
                                        X.UA.Opera78 || X.UA.NN6 ?\r
                                                elm.setAttribute( 'style', this._cssText ) : // opera8用\r
@@ -1080,14 +1080,14 @@ Node.prototype._updateRawNode =
                                };\r
                        };\r
                        \r
-                       if( this._dirty & X.Dom.Dirty.IE_FILTER ){\r
+                       if( this._dirty & X_Node_Dirty.IE_FILTER ){\r
                                elm.style.filter = X.Dom.Style.SPECIAL_FIX( this._css );\r
                        };\r
                        \r
                        // attr\r
                        // TODO display:none の場合、更新をスキップ\r
-                       if( this._dirty & X.Dom.Dirty.ATTR && ( attrs = this._newAttrs || this._attrs ) ){\r
-                               rename = X.Dom.Attr.renameForDOM;\r
+                       if( this._dirty & X_Node_Dirty.ATTR && ( attrs = this._newAttrs || this._attrs ) ){\r
+                               rename = X_Node_Attr.renameForDOM;\r
                                for( k in attrs ){\r
                                        if( !X.UA.MacIE && ( X.UA.IE5 || X.UA.IE55 ) ){ // IETester 5.5 ではエラーが出なかった.MultipulIE5.5 ではエラーが出たので\r
                                                if( this._tag === 'TEXTAREA' && k === 'value' ){\r
@@ -1100,7 +1100,7 @@ Node.prototype._updateRawNode =
                                        // TODO IE では input, なぜか buttonも、type の変更が出来ない、object も 同値で置き換えようとしても不可\r
                                        ( v = attrs[ k ] ) === undefined ?\r
                                                elm.removeAttribute( rename[ k ] || k ) :\r
-                                               ( elm[ rename[ k ] || k ] = X.Dom.Attr.noValue[ k ] ? k : v );                          \r
+                                               ( elm[ rename[ k ] || k ] = X_Node_Attr.noValue[ k ] ? k : v );                         \r
 \r
                                };\r
                                delete this._newAttrs;\r
@@ -1113,7 +1113,7 @@ Node.prototype._updateRawNode =
                        var attrs, rename, k, v;\r
 \r
                        // fake textNode\r
-                       if( this._dirty & X.Dom.Dirty.CONTENT ){\r
+                       if( this._dirty & X_Node_Dirty.CONTENT ){\r
                                elm.innerText = this._text;\r
                                delete this._dirty;\r
                                return;\r
@@ -1124,14 +1124,14 @@ Node.prototype._updateRawNode =
                 * title、className、id、lang、language には setAttribute でなく、element.id で直接読み書きできる\r
                 */     \r
                        // id\r
-                       if( this._dirty & X.Dom.Dirty.CONTENT ) elm.setAttribute( 'id', this._id || ( 'ie4uid' + xnode._uid ) );\r
+                       if( this._dirty & X_Node_Dirty.CONTENT ) elm.setAttribute( 'id', this._id || ( 'ie4uid' + xnode._uid ) );\r
 \r
                        // className\r
-                       if( this._dirty & X.Dom.Dirty.CLASSNAME ){\r
+                       if( this._dirty & X_Node_Dirty.CLASSNAME ){\r
                                this._className ? ( elm.className = this._className ) : elm.removeAttribute( 'class' );\r
                        };\r
                        // style\r
-                       if( this._dirty & X.Dom.Dirty.CSS ){\r
+                       if( this._dirty & X_Node_Dirty.CSS ){\r
                                if( this._cssText !== null || ( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
                                        elm.style.cssText = this._cssText;\r
                                } else {\r
@@ -1141,19 +1141,19 @@ Node.prototype._updateRawNode =
                                };\r
                        };\r
                        \r
-                       if( this._dirty & X.Dom.Dirty.IE_FILTER ){\r
+                       if( this._dirty & X_Node_Dirty.IE_FILTER ){\r
                                this._rawObject.style.filter = X.Dom.Style.SPECIAL_FIX( this._css );\r
                        };\r
                        \r
                        // attr\r
-                       if( this._dirty & X.Dom.Dirty.ATTR && ( attrs = this._newAttrs || this._attrs ) ){\r
-                               rename = X.Dom.Attr.renameForDOM;\r
+                       if( this._dirty & X_Node_Dirty.ATTR && ( attrs = this._newAttrs || this._attrs ) ){\r
+                               rename = X_Node_Attr.renameForDOM;\r
                                for( k in attrs ){\r
                                        ( v = attrs[ k ] ) === undefined ?\r
                                                elm.removeAttribute( rename[ k ] || k ) :\r
                                        this._tag === 'TEXTAREA' && k === 'value' ?\r
                                                ( elm.innerText = v ) :\r
-                                               elm.setAttribute( rename[ k ] || k, X.Dom.Attr.noValue[ k ] ? k : v ); // TODO X.Dom.Attr.noValue[ k ] ? k : v\r
+                                               elm.setAttribute( rename[ k ] || k, X_Node_Attr.noValue[ k ] ? k : v ); // TODO X_Node_Attr.noValue[ k ] ? k : v\r
                                };\r
                                delete this._newAttrs;\r
                        };\r
@@ -1191,25 +1191,25 @@ Node.prototype._actualCreate =
                };\r
                \r
                if( !elm ){\r
-                       if( this._dirty & X.Dom.Dirty.CSS && !( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
+                       if( this._dirty & X_Node_Dirty.CSS && !( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
                                delete this._cssText;\r
                        };\r
                        this._isNew = true;\r
                        this._rawObject = elm =\r
-                               X.Dom._strictElmCreation ?\r
+                               X_Node_strictElmCreation ?\r
                                        document.createElement( [\r
                                                '<', this._tag,\r
                                                        ' UID="', this._uid, '"',\r
                                                        this._id ? ' id="' + this._id + '"' : '',\r
                                                        this._className ? ' class="' + this._className + '"' : '',\r
-                                                       this._attrText === false ? ( this._attrText = X.Dom.Attr.objToAttrText( this._attrs ) ) : this._attrText,\r
+                                                       this._attrText === false ? ( this._attrText = X_Node_Attr.objToAttrText( this._attrs ) ) : this._attrText,\r
                                                        this._cssText ? ' style="' + this._cssText + '"' : '',\r
                                                '>' ].join( '' ) ) :\r
                                        document.createElement( this._tag );\r
                };\r
-               if( X.Dom._useDocumentFragment ){\r
+               if( X_Node_useDocumentFragment ){\r
                        if( ( xnodes = this._xnodes ) && ( l = xnodes.length ) ){\r
-                               !isChild && ( frg = X.Dom._useDocumentFragment ).appendChild( elm );\r
+                               !isChild && ( frg = X_Node_useDocumentFragment ).appendChild( elm );\r
                                for( i = 0; i < l; ++i ){\r
                                        elm.appendChild( xnodes[ i ]._actualCreate( true ) );\r
                                };\r
@@ -1229,14 +1229,14 @@ Node.prototype._actualCreate =
                } else {\r
                        if( this._rawObject && !isChild ) this._actualRemove( true );\r
                        \r
-                       if( this._dirty & X.Dom.Dirty.CSS && !( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
+                       if( this._dirty & X_Node_Dirty.CSS && !( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
                                delete this._cssText;\r
                        };\r
                        \r
                        html = [\r
                                '<', this._tag, ' id=', ( this._id || ( 'ie4uid' + uid ) ), ' UID="', uid, '"',\r
                                this._className ? ' class="' + this._className + '"' : '',\r
-                               this._attrText === false ? ( this._attrText = X.Dom.Attr.objToAttrText( this._attrs ) ) : this._attrText,\r
+                               this._attrText === false ? ( this._attrText = X_Node_Attr.objToAttrText( this._attrs ) ) : this._attrText,\r
                                this._cssText ? ' style="' + this._cssText + '"' : '',\r
                        '>' ];\r
                        \r
@@ -1246,7 +1246,7 @@ Node.prototype._actualCreate =
                                        // only textnode\r
                                        html[ n ] = xnodes[ 0 ]._text;\r
                                        ++n;\r
-                                       this._state |= X.Dom.State.IE4_ONLY_TEXT;\r
+                                       this._state |= X_Node_State.IE4_ONLY_TEXT;\r
                                } else {\r
                                        for( i = 0; i < l; ++i ){\r
                                                html[ n ] = xnodes[ i ]._actualCreate( true );\r
@@ -1278,20 +1278,20 @@ Node.prototype._afterActualCreate =
                l      = xnodes && xnodes.length;\r
                \r
                if( this._isNew ){\r
-                       if( !X.Dom._useDocumentFragment && l ){// docFrg が使えない場合、doc 追加後に子を追加\r
+                       if( !X_Node_useDocumentFragment && l ){// docFrg が使えない場合、doc 追加後に子を追加\r
                                for( i = 0; i < l; ++i ){\r
                                        elm.appendChild( xnodes[ i ]._actualCreate( true ) );\r
                                };\r
                        };\r
-                       if( X.Dom._strictElmCreation ){\r
-                               if( this._dirty & X.Dom.Dirty.IE_FILTER ){\r
+                       if( X_Node_strictElmCreation ){\r
+                               if( this._dirty & X_Node_Dirty.IE_FILTER ){\r
                                        elm.style.filter = X.Dom.Style.SPECIAL_FIX( this._css );\r
                                };\r
                                delete this._dirty;\r
                        } else {\r
                                elm.UID = this._uid;\r
                                this._newAttrs = this._attrs;\r
-                               this._dirty = X.Dom.Dirty.ID | X.Dom.Dirty.CLASSNAME | X.Dom.Dirty.CSS | X.Dom.Dirty.ATTR | X.Dom.Dirty.IE_FILTER;\r
+                               this._dirty = X_Node_Dirty.ID | X_Node_Dirty.CLASSNAME | X_Node_Dirty.CSS | X_Node_Dirty.ATTR | X_Node_Dirty.IE_FILTER;\r
                                this._updateRawNode( elm );\r
                        };\r
                        \r
@@ -1319,7 +1319,7 @@ Node.prototype._afterActualCreate =
                        };\r
                };\r
                // textarea への value の適用はここで\r
-               if( this._dirty & X.Dom.Dirty.IE_FILTER ){\r
+               if( this._dirty & X_Node_Dirty.IE_FILTER ){\r
                        this._ie4getRawNode().style.filter = X.Dom.Style.SPECIAL_FIX( this._css );\r
                };\r
                delete this._dirty;\r
@@ -1363,7 +1363,7 @@ Node.prototype._actualRemove =
                        if( !elm ) return;\r
                        this._xnodeType === 1 && X_EventDispatcher_toggleAllEvents( this, false );// イベントの退避\r
                        \r
-                       if( X.Dom.Attr.HAS_VALUE[ this._tag ] && ( !this._newAttrs || !X_Object_inObject( 'value', this._newAttrs ) ) ){\r
+                       if( X_Node_Attr.HAS_VALUE[ this._tag ] && ( !this._newAttrs || !X_Object_inObject( 'value', this._newAttrs ) ) ){\r
                                this._attrs.value = elm.value;\r
                        };\r
                        elm.removeAttribute( 'id' ); // ?\r
index df7c725..e391e58 100644 (file)
@@ -22,9 +22,9 @@ if( !X.UA.IE || 9 <= X.UA.IE ){
        X.Dom.Event = function( e, xnode ){\r
                var _type = e.type,\r
                        type,\r
-                       changedTouches, targetTouches, targetIDs, changedTargets, isEnd,\r
+                       touches, events,\r
                        altKey, ctrlKey, metaKey, shiftKey, target, related,\r
-                       i, n, time, touch, ev;\r
+                       elm, i, n, time, touch, ev;\r
                \r
                //this._event        = e;\r
                this.type          = type = X.Dom.Event.RenameTo[ _type ] || _type;\r
@@ -66,8 +66,8 @@ if( !X.UA.IE || 9 <= X.UA.IE ){
                        this.buttons       = e.buttons;\r
                                                \r
                        this.pointerId     = e.pointerId;                       \r
-                       this.target        = Node._getXNode( e.target );\r
-                       this.relatedTarget = Node._getXNode( e.relatedTarget ); // xnode\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
@@ -100,7 +100,7 @@ if( !X.UA.IE || 9 <= X.UA.IE ){
                                ctrlKey  = e.ctrlKey;\r
                                metaKey  = e.metaKey;\r
                                shiftKey = e.shiftKey;\r
-                               time     = X.getTime();\r
+                               time     = X_Timer_now();\r
                                for( i = touches.length; i; ){\r
                                        touch   = touches[ --i ];\r
                                        target  = touch.target;\r
@@ -108,9 +108,9 @@ if( !X.UA.IE || 9 <= X.UA.IE ){
                                        events[ i ] = {\r
                                                type          : type,\r
                                                pointerType   : 'touch',\r
-                                               target        : Node._getXNode( target.nodeType === 3 ? target.parentNode : target ),// defeat Safari bug // xnodetouch.target,\r
+                                               target        : X_Node_getXNode( target.nodeType === 3 ? target.parentNode : target ),// defeat Safari bug // xnodetouch.target,\r
                                                currentTarget : xnode,\r
-                                               relatedTarget : Node._getXNode( related.nodeType === 3 ? related.parentNode : related ), // xnode\r
+                                               relatedTarget : X_Node_getXNode( related.nodeType === 3 ? related.parentNode : related ), // xnode\r
                                                isPrimary     : true,\r
                                                hwTimestamp   : time,\r
                                                timestamp     : time,\r
@@ -157,9 +157,9 @@ if( !X.UA.IE || 9 <= X.UA.IE ){
                                this.pressure      = ( this.button !== -1 ? 0.5 : 0 );\r
                                \r
                                elm = e.target;\r
-                               this.target        = Node._getXNode( elm.nodeType === 3 ? elm.parentNode : elm );// defeat Safari bug // xnodetouch.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.getTime(); \r
+                               this.hwTimestamp   = this.timestamp = X_Timer_now(); \r
                                this.altKey        = e.altKey;\r
                                this.ctrlKey       = e.ctrlKey;\r
                                this.metaKey       = e.metaKey;\r
@@ -191,10 +191,10 @@ if( !X.UA.IE || 9 <= X.UA.IE ){
                        \r
                        //http://www.quirksmode.org/js/events_properties.html\r
                        if( elm = e.target ){\r
-                               this.target        = 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 = 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
@@ -232,13 +232,13 @@ if( !X.UA.IE || 9 <= X.UA.IE ){
        };\r
 } else {\r
        X.Dom.Event = function( e, xnode, element ){\r
-               var btn;\r
+               var _type = e.type, btn, type;\r
                \r
-               this.type          = X.Dom.Event.RenameTo[ e.type ] || e.type;\r
-               this.target        = Node._getXNode( e.srcElement ); // xnode\r
+               this.type          = X.Dom.Event.RenameTo[ _type ] || _type;\r
+               this.target        = X_Node_getXNode( e.srcElement ); // xnode\r
                if( this.target && this.target._xnodeType === 3 ) this.target = this.target.parent; // ie4 の fake Textnode がヒットしていないか?\r
                this.currentTarget = xnode; // xnode\r
-               this.relatedTarget = Node._getXNode( e.formElement || e.toElement ); // 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
@@ -247,7 +247,7 @@ if( !X.UA.IE || 9 <= X.UA.IE ){
                this.shiftKey      = e.shiftKey;                \r
 \r
                // http://www.programming-magic.com/20090127231544/\r
-               switch( this.type ){\r
+               switch( _type ){\r
                        case 'click'    :\r
                        case 'dblclick' :\r
                                this.button = 0;\r
@@ -266,16 +266,16 @@ if( !X.UA.IE || 9 <= X.UA.IE ){
                };\r
                this.buttons     = e.button;\r
        \r
-               if( type = X.Dom.Event.toPointer[ e.type ] ){\r
+               if( type = X.Dom.Event.toPointer[ _type ] ){\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.Dom._root ){ // uuu...\r
-                               this.pageX         = e.clientX + X.Dom._root.scrollLeft;\r
-                               this.pageY         = e.clientY + X.Dom._root.scrollTop;\r
+                       //if( X_Dom_rootElement ){ // uuu...\r
+                               this.pageX         = e.clientX + X_Dom_rootElement.scrollLeft;\r
+                               this.pageY         = e.clientY + X_Dom_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
@@ -305,10 +305,6 @@ if( !X.UA.IE || 9 <= X.UA.IE ){
        };\r
 };\r
 \r
-X.Dom.Event.DOM_PRE_INIT        = ++X.Event._LAST_EVENT;\r
-X.Dom.Event.DOM_BUILDER_COMPLETE= ++X.Event._LAST_EVENT;\r
-X.Dom.Event.DOM_INIT            = ++X.Event._LAST_EVENT;\r
-X.Dom.Event.XDOM_READY          = ++X.Event._LAST_EVENT;\r
 X.Dom.Event.VIEW_ACTIVATE       = ++X.Event._LAST_EVENT;\r
 X.Dom.Event.VIEW_DEACTIVATE     = ++X.Event._LAST_EVENT;\r
 X.Dom.Event.VIEW_RESIZED        = ++X.Event._LAST_EVENT;\r
@@ -449,7 +445,7 @@ if( !navigator.pointerEnabled ){
                X.Dom.Event.Rename[ 'pointerup'       ] = [ 'touchup',   'mouseup' ];\r
                X.Dom.Event.Rename[ 'pointermove'     ] = [ 'touchmove', 'mousemove' ];\r
                X.Dom.Event.Rename[ 'pointercancel'   ] = 'touchcancel';\r
-               X.Dom.Event.Rename[ 'click'           ] = [ 'click', 'tap' ];\r
+               //X.Dom.Event.Rename[ 'click'           ] = [ 'click', 'tap' ]; // ループになってしまう!\r
        } else {\r
                X.Dom.Event.Rename[ 'pointerdown'     ] = 'mousedown';\r
                X.Dom.Event.Rename[ 'pointerup'       ] = 'mouseup';\r
@@ -487,7 +483,7 @@ if( !navigator.pointerEnabled ){
 \r
 /* for ie9+/Mozilla/Opera9 */\r
 if( X_UA_EVENT.W3C ){\r
-       Node._document.listenOnce( 'DOMContentLoaded', X.Dom._init );\r
+       Node._document.listenOnce( 'DOMContentLoaded', X_TEMP.onDomContentLoaded );\r
 } else\r
 if( 6 <= X.UA.IE && X.inHead ){\r
        // if this script in Head\r
@@ -500,7 +496,7 @@ if( 6 <= X.UA.IE && X.inHead ){
                        s.onreadystatechange = null;\r
                        s.parentNode.removeChild( s );\r
                        delete X_TEMP._script;\r
-                       X.Dom._init && X.Dom._init();\r
+                       X_TEMP.onDomContentLoaded && X_TEMP.onDomContentLoaded();\r
                };\r
        };\r
 };\r
@@ -508,16 +504,16 @@ if( 6 <= X.UA.IE && X.inHead ){
 // http://lists.apple.com/archives/web-dev/2003/Oct/msg00036.html\r
 if( X.UA.WebKit || X.UA.Safari < 3 ){ // sniff\r
        X.Timer.add( 16, function(){\r
-               if( !X.Dom._init ) return X_Callback_UN_LISTEN;\r
-               if( document.readyState === 'loaded' || document.readyState === 'complete' ) return X.Dom._init();\r
+               if( !X_TEMP.onDomContentLoaded ) return X_Callback_UN_LISTEN;\r
+               if( document.readyState === 'loaded' || document.readyState === 'complete' ) return X_TEMP.onDomContentLoaded();\r
        });\r
 };\r
 \r
 /* for other browsers */\r
-Node._window.listenOnce( 'load', X.Dom._init );\r
+Node._window.listenOnce( 'load', X_TEMP.onDomContentLoaded );\r
 //\r
-X.Dom.listenOnce( X.Dom.Event.XDOM_READY, function(e){\r
-       console.log( 'X.Dom XDomReady ' + X.Dom.readyState );\r
+X.Dom.listenOnce( X.Event.XDOM_READY, function(e){\r
+       console.log( 'X.Dom XDomReady ' + X_Dom_readyState );\r
 } );\r
 \r
 X.Dom.listen( X.Dom.Event.VIEW_RESIZED, function(e){ console.log( 'X.Dom VIEW_RESIZED ' + e.w + ' x ' + e.h ); } );\r
index 923cc99..31d2058 100644 (file)
@@ -15,7 +15,7 @@ X.Dom.BoxModel = {
 \r
 \r
 \r
-X.Dom.listenOnce( X.Dom.Event.DOM_INIT, function(){\r
+X.Dom.listenOnce( X_TEMP.SYSTEM_EVENT_INIT, function(){\r
 \r
        var node = Node._systemNode,\r
        \r
@@ -87,7 +87,7 @@ Node.prototype.width = function(){
                console.log( 'xnode.width() : not belong tree.' );\r
                return 0;\r
        };\r
-       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
+       if( this._state & X_Node_State.DISPLAY_NONE ) return 0;\r
        if( X_UA_DOM.W3C ){\r
                // this.css( X.Dom.Style.Unit.px, 'width' );\r
                return this._rawObject.offsetWidth;\r
@@ -109,7 +109,7 @@ Node.prototype.height = function(){
                console.log( 'xnode.height() : not belong tree.' );\r
                return 0;\r
        };\r
-       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
+       if( this._state & X_Node_State.DISPLAY_NONE ) return 0;\r
        if( X_UA_DOM.W3C ){\r
                // this.css( X.Dom.Style.Unit.px, 'height' );\r
                return this._rawObject.offsetHeight;\r
@@ -131,7 +131,7 @@ Node.prototype.clientWidth = function(){
                console.log( 'xnode.width() : not belong tree.' );\r
                return 0;\r
        };\r
-       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
+       if( this._state & X_Node_State.DISPLAY_NONE ) return 0;\r
        if( X_UA_DOM.W3C ){\r
                // this.css( X.Dom.Style.Unit.px, 'width' );\r
                return this._rawObject.clientWidth;\r
@@ -153,7 +153,7 @@ Node.prototype.clientHeight = function(){
                console.log( 'xnode.height() : not belong tree.' );\r
                return 0;\r
        };\r
-       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
+       if( this._state & X_Node_State.DISPLAY_NONE ) return 0;\r
        if( X_UA_DOM.W3C ){\r
                // this.css( X.Dom.Style.Unit.px, 'height' );\r
                return this._rawObject.clientHeight;\r
@@ -175,7 +175,7 @@ Node.prototype.scrollWidth = function(){
                console.log( 'xnode.width() : not belong tree.' );\r
                return 0;\r
        };\r
-       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
+       if( this._state & X_Node_State.DISPLAY_NONE ) return 0;\r
        if( X_UA_DOM.W3C ){\r
                // this.css( X.Dom.Style.Unit.px, 'width' );\r
                return this._rawObject.scrollWidth;\r
@@ -197,7 +197,7 @@ Node.prototype.scrollHeight = function(){
                console.log( 'xnode.height() : not belong tree.' );\r
                return 0;\r
        };\r
-       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
+       if( this._state & X_Node_State.DISPLAY_NONE ) return 0;\r
        if( X_UA_DOM.W3C ){\r
                // this.css( X.Dom.Style.Unit.px, 'height' );\r
                return this._rawObject.scrollHeight;\r
@@ -219,7 +219,7 @@ Node.prototype.scrollLeft = function(){
                console.log( 'xnode.scrollLeft() : not belong tree.' );\r
                return 0;\r
        };\r
-       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
+       if( this._state & X_Node_State.DISPLAY_NONE ) return 0;\r
        if( X_UA_DOM.W3C ){\r
                // this.css( X.Dom.Style.Unit.px, 'width' );\r
                return this._rawObject.scrollLeft;\r
@@ -241,7 +241,7 @@ Node.prototype.scrollTop = function(){
                console.log( 'xnode.scrollTop() : not belong tree.' );\r
                return 0;\r
        };\r
-       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
+       if( this._state & X_Node_State.DISPLAY_NONE ) return 0;\r
        if( X_UA_DOM.W3C ){\r
                // this.css( X.Dom.Style.Unit.px, 'width' );\r
                return this._rawObject.scrollTop;\r
@@ -271,7 +271,7 @@ Node.prototype.x = function(){
                console.log( 'xnode.x() : not belong tree.' );\r
                return 0;\r
        };\r
-       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
+       if( this._state & X_Node_State.DISPLAY_NONE ) return 0;\r
        if( X_UA_DOM.W3C ){\r
                // this.css( X.Dom.Style.Unit.px, 'left' );\r
                // this.css( X.Dom.Style.Unit.px, 'translateX' );\r
@@ -294,7 +294,7 @@ Node.prototype.y = function(){
                console.log( 'xnode.y() : not belong tree.' );\r
                return 0;\r
        };\r
-       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
+       if( this._state & X_Node_State.DISPLAY_NONE ) return 0;\r
        if( X_UA_DOM.W3C ){\r
                // this.css( X.Dom.Style.Unit.px, 'top' );\r
                // this.css( X.Dom.Style.Unit.px, 'transisitonY' );\r
@@ -319,7 +319,7 @@ Node.prototype.offset = function( /* xnodeParent */ ){
                console.log( 'xnode.offset() : not belong tree.' );\r
                return { x : 0, y : 0 };\r
        };\r
-       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
+       if( this._state & X_Node_State.DISPLAY_NONE ) return 0;\r
        \r
        if( X.Dom.Node._body === this || X.Dom.Node._html === this ){\r
                return { x : 0, y : 0 };\r
index 6e84b1f..2ff418f 100644 (file)
@@ -1,4 +1,4 @@
-X.Dom.Attr = {\r
+var X_Node_Attr = {\r
        noValue : {\r
                checked  : 1,\r
                compact  : 1,\r
@@ -55,7 +55,7 @@ X.Dom.Attr = {
        // 動的に生成した input 要素を文書ツリーに挿入する前に設定した checked 属性は反映されず、defaultChecked だと反映される\r
        // 先頭にスペース\r
        objToAttrText : function( obj ){\r
-               var noValue = X.Dom.Attr.noValue,\r
+               var noValue = X_Node_Attr.noValue,\r
                        attrs = [ '' ], n = 0, p, v;\r
                if( !obj ) return ''; // Opera7\r
                for( p in obj ){\r
@@ -74,13 +74,13 @@ X.Dom.Attr = {
        for( name in renameForDOM ){\r
                renameForTag[ renameForDOM[ name ] ] = name;\r
        };\r
-})( X.Dom.Attr.renameForDOM, X.Dom.Attr.renameForTag );\r
+})( X_Node_Attr.renameForDOM, X_Node_Attr.renameForTag );\r
 \r
 \r
 \r
 /* --------------------------------------\r
  *  attribute\r
- *  X.Dom.Attr.toIndex に定義されている 属性の場合\r
+ *  X_Node_Attr.toIndex に定義されている 属性の場合\r
  * \r
  * http://nanto.asablo.jp/blog/2005/10/29/123294\r
  * className, onclick等 はここで設定しない\r
@@ -100,7 +100,7 @@ X.Dom.Node.prototype.attr = function( nameOrObj /* v */ ){
                };\r
                if( f ){\r
                        this._attrText = false;\r
-                       this._dirty |= X.Dom.Dirty.ATTR;\r
+                       this._dirty |= X_Node_Dirty.ATTR;\r
                        this._root && this._reserveUpdate();                    \r
                };\r
                return this;\r
@@ -109,7 +109,7 @@ X.Dom.Node.prototype.attr = function( nameOrObj /* v */ ){
                // setter\r
                if( this._setAttr( attrs || ( this._attrs = {} ), this._newAttrs || ( this._newAttrs = {} ), nameOrObj, arguments[ 1 ] ) === true ){\r
                        this._attrText = false;\r
-                       this._dirty |= X.Dom.Dirty.ATTR;\r
+                       this._dirty |= X_Node_Dirty.ATTR;\r
                        this._root && this._reserveUpdate();\r
                };\r
                return this;\r
@@ -133,7 +133,7 @@ X.Dom.Node.prototype.attr = function( nameOrObj /* v */ ){
                        case 'selected' :\r
                        case 'disabled' :                       \r
                        case 'selectedIndex' :\r
-                               if( X.Dom.Attr.HAS_VALUE[ this._tag ] ){\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 || this._ie4getRawNode() : this._rawObject ){\r
                                                if( !attrs ) attrs = this._attrs = {};\r
@@ -142,7 +142,7 @@ X.Dom.Node.prototype.attr = function( nameOrObj /* v */ ){
                                };\r
                                break;\r
                };\r
-               return attrs && attrs[ X.Dom.Attr.renameForTag[ nameOrObj ] || nameOrObj ];\r
+               return attrs && attrs[ X_Node_Attr.renameForTag[ nameOrObj ] || nameOrObj ];\r
        };\r
 };\r
 X.Dom.Node.prototype._setAttr = function( attrs, newAttrs, name, v ){\r
@@ -156,7 +156,7 @@ X.Dom.Node.prototype._setAttr = function( attrs, newAttrs, name, v ){
                        v = ( v !== 'ie4uid' + this._uid ) ? v : undefined;\r
                        if( v !== this._id ){\r
                                this._id = v;\r
-                               this._dirty |= X.Dom.Dirty.ID;\r
+                               this._dirty |= X_Node_Dirty.ID;\r
                                this._root && this._reserveUpdate();\r
                        };\r
                        return; \r
@@ -173,7 +173,7 @@ X.Dom.Node.prototype._setAttr = function( attrs, newAttrs, name, v ){
                return;\r
        };\r
        \r
-       name = X.Dom.Attr.renameForTag[ name ] || name;\r
+       name = X_Node_Attr.renameForTag[ name ] || name;\r
        if( attrs[ name ] === v ) return;\r
        \r
        if( v == null ){\r
index f3d8aba..112caf2 100644 (file)
@@ -986,16 +986,16 @@ X.Dom.Node.prototype.css = function( nameOrObj /* orUnitID, valuOrUnitOrName */
                ieFix    = X.Dom.Style.IE_FILTER_FIX;
                for( p in nameOrObj ){
                        if( ieFix[ p ] ){
-                               this._dirty |= X.Dom.Dirty.IE_FILTER;
+                               this._dirty |= X_Node_Dirty.IE_FILTER;
                        };
                        v = nameOrObj[ p ];
                        v || v === 0 ? css[ camelize( p ) ] = v : delete css[ camelize( p ) ];
                        if( p === 'display' ){
-                               v === 'none' ? ( this._state |= X.Dom.State.IE5_DISPLAY_NONE_FIX ) : ( this._state &= ~X.Dom.State.IE5_DISPLAY_NONE_FIX );
-                               v === 'none' ? ( this._state |= X.Dom.State.DISPLAY_NONE ) : ( this._state &= ~X.Dom.State.DISPLAY_NONE );
+                               v === 'none' ? ( this._state |= X_Node_State.IE5_DISPLAY_NONE_FIX ) : ( this._state &= ~X_Node_State.IE5_DISPLAY_NONE_FIX );
+                               v === 'none' ? ( this._state |= X_Node_State.DISPLAY_NONE ) : ( this._state &= ~X_Node_State.DISPLAY_NONE );
                        };
                };
-               this._dirty |= X.Dom.Dirty.CSS;
+               this._dirty |= X_Node_Dirty.CSS;
                this.parent && this._reserveUpdate();
                delete this._cssText;
                return this;
@@ -1008,7 +1008,7 @@ X.Dom.Node.prototype.css = function( nameOrObj /* orUnitID, valuOrUnitOrName */
                        v    = args[ 1 ];
                        if( css[ name ] === v ) return this;
                        if( X.Dom.Style.IE_FILTER_FIX[ name ] ){
-                               this._dirty |= X.Dom.Dirty.IE_FILTER;
+                               this._dirty |= X_Node_Dirty.IE_FILTER;
                        };
                        if( !v && v !== 0 ){
                                delete css[ name ];
@@ -1016,10 +1016,10 @@ X.Dom.Node.prototype.css = function( nameOrObj /* orUnitID, valuOrUnitOrName */
                                css[ name ] = v;
                        };
                        delete this._cssText;
-                       this._dirty |= X.Dom.Dirty.CSS;
+                       this._dirty |= X_Node_Dirty.CSS;
                        if( name === 'display' ){
-                               v === 'none' ? ( this._state |= X.Dom.State.IE5_DISPLAY_NONE_FIX ) : ( this._state &= ~X.Dom.State.IE5_DISPLAY_NONE_FIX );
-                               v === 'none' ? ( this._state |= X.Dom.State.DISPLAY_NONE ) : ( this._state &= ~X.Dom.State.DISPLAY_NONE );
+                               v === 'none' ? ( this._state |= X_Node_State.IE5_DISPLAY_NONE_FIX ) : ( this._state &= ~X_Node_State.IE5_DISPLAY_NONE_FIX );
+                               v === 'none' ? ( this._state |= X_Node_State.DISPLAY_NONE ) : ( this._state &= ~X_Node_State.DISPLAY_NONE );
                        };
                        // parent でなく this._root! でなくて this._state & in tree
                        this.parent && this._reserveUpdate();
@@ -1045,15 +1045,15 @@ X.Dom.Node.prototype.cssText = function( v ){
        var obj, i, l, attr, name;
        if( v === '' ){
                delete this._css;
-               this._state &= ~X.Dom.State.IE5_DISPLAY_NONE_FIX;
-               this._dirty |= X.Dom.Dirty.CSS;
+               this._state &= ~X_Node_State.IE5_DISPLAY_NONE_FIX;
+               this._dirty |= X_Node_Dirty.CSS;
                this.parent && this._reserveUpdate();
                delete this._cssText;
                return this;
        } else
        if( X.Type.isString( v ) ){
                delete this._css;
-               this._state &= ~X.Dom.State.IE5_DISPLAY_NONE_FIX;
+               this._state &= ~X_Node_State.IE5_DISPLAY_NONE_FIX;
                obj = {};
                v   = v.split( ';' ); // TODO content ";" などにも対応
                for( i = 0, l = v.length; i < l; ++i ){
@@ -1063,7 +1063,7 @@ X.Dom.Node.prototype.cssText = function( v ){
                return this.css( obj );
        };
        // getter
-       if( this._dirty & X.Dom.Dirty.CSS && !( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){
+       if( this._dirty & X_Node_Dirty.CSS && !( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){
                delete this._cssText;
        };
        return this._cssText;
@@ -1072,14 +1072,14 @@ X.Dom.Node.prototype.cssText = function( v ){
 /*
  * ここでは HTMLElement のチ1ェックは行わない!
  * TODO
- * body に css attr がセットされた場合には X.Dom.baseFontSize をクリア
+ * body に css attr がセットされた場合には X_Dom_baseFontSize をクリア
  */
 
 X.Dom.Node.prototype._getCharSize =
        window.getComputedStyle ?
                (function(){
                        Node._body._updateTimerID && Node._body._startUpdate();
-                       if( this === Node._body && X.Dom.baseFontSize ) return X.Dom.baseFontSize;
+                       if( this === Node._body && X_Dom_baseFontSize ) return X_Dom_baseFontSize;
                        if( this._fontSize ) return this._fontSize;
                        return this._fontSize = parseFloat( getComputedStyle( this._rawObject, null ).fontSize );
                }) :
@@ -1087,7 +1087,7 @@ X.Dom.Node.prototype._getCharSize =
        document.defaultView && document.defaultView.getComputedStyle ?
                (function(){
                        Node._body._updateTimerID && Node._body._startUpdate();
-                       if( this === Node._body && X.Dom.baseFontSize ) return X.Dom.baseFontSize;
+                       if( this === Node._body && X_Dom_baseFontSize ) return X_Dom_baseFontSize;
                        if( this._fontSize ) return this._fontSize;
                        return this._fontSize = parseFloat( document.defaultView.getComputedStyle( this._rawObject, null ).fontSize );
                }) :
@@ -1104,7 +1104,7 @@ X.Dom.Node.prototype._getCharSize =
                (function(){
                        var font, vu, v, u, _v;
                        Node._body._updateTimerID && Node._body._startUpdate();
-                       if( this === Node._body && X.Dom.baseFontSize ) return X.Dom.baseFontSize;
+                       if( this === Node._body && X_Dom_baseFontSize ) return X_Dom_baseFontSize;
                        if( this._fontSize ) return this._fontSize;
                        
                        font = this._rawObject.currentStyle.fontSize;
@@ -1135,7 +1135,7 @@ X.Dom.Node.prototype._getCharSize =
                (function(){
                        var elm, v;
                        Node._body._updateTimerID && Node._body._startUpdate();
-                       if( this === Node._body && X.Dom.baseFontSize ) return X.Dom.baseFontSize;
+                       if( this === Node._body && X_Dom_baseFontSize ) return X_Dom_baseFontSize;
                        if( this._fontSize ) return this._fontSize;
 
                        this._rawObject.appendChild( elm = document.createElement( 'span' ) );
@@ -1149,7 +1149,7 @@ X.Dom.Node.prototype._getCharSize =
                (function(){
                        var font, vu, v, u, _v;
                        Node._body._updateTimerID && Node._body._startUpdate();
-                       if( this === Node._body && X.Dom.baseFontSize ) return X.Dom.baseFontSize;
+                       if( this === Node._body && X_Dom_baseFontSize ) return X_Dom_baseFontSize;
                        if( this._fontSize ) return this._fontSize;
                        
                        if( this._css && ( font = this._css.fontSize ) ){
@@ -1182,7 +1182,7 @@ X.Dom.Node.prototype._getCharSize =
                }) :
                (function(){
                        var elm, v;
-                       if( this === Node._body && X.Dom.baseFontSize ) return X.Dom.baseFontSize;
+                       if( this === Node._body && X_Dom_baseFontSize ) return X_Dom_baseFontSize;
                        Node._body._updateTimerID && Node._body._startUpdate();
                        if( this._fontSize ) return this._fontSize;
                        
@@ -1260,7 +1260,7 @@ X.Dom.Node.prototype._getCharSize =
                };
 } )();
 
-X.Dom.listenOnce( X.Dom.Event.DOM_INIT, function(){
+X.Dom.listenOnce( X_TEMP.SYSTEM_EVENT_INIT, function(){
        var xnode  = Node._systemNode,
                output = X.Dom.Style._UNIT_RATIO = {},
                list   = 'cm,mm,in,pt,pc'.split( ',' ),
index 136a3af..1f8e25e 100644 (file)
@@ -52,7 +52,7 @@ X.Dom.NodeList.prototype.each = function( func /* opt_args... */ ){
 /* --------------------------------------\r
  *  Fuction Base, multi, getter, setter,\r
  */\r
-X.Dom.listenOnce( X.Dom.Event.DOM_PRE_INIT, function(){\r
+X.Dom.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT, function(){\r
        var target = X.Dom.NodeList.prototype,\r
                src    = X.Dom.Node.prototype,\r
                p, v, multi;\r
index 0c01534..371d81d 100644 (file)
@@ -242,8 +242,8 @@ X.Dom.Query._parse = function( query, last ){
             links, className, attr, flag;\r
 \r
                /*@+debug[*/\r
-               if( X.Dom.readyState < X.Dom.Event.XDOM_READY ){\r
-                       alert( 'not ready! use X.Dom.listenOnce( X.Dom.Event.XDOM_READY, callback )' );\r
+               if( X_Dom_readyState < X.Event.XDOM_READY ){\r
+                       alert( 'not ready! use X.Dom.listenOnce( X.Event.XDOM_READY, callback )' );\r
                        return;\r
                };\r
                /*]@+debug*/\r
@@ -427,7 +427,7 @@ X.Dom.Query._parse = function( query, last ){
                                        op  = filter[ 1 ];\r
                                        val = filter[ 2 ];\r
                                        \r
-                                       key = X.Dom.Attr.renameForTag[ key ] || key;\r
+                                       key = X_Node_Attr.renameForTag[ key ] || key;\r
                                        \r
                                        // [class~='val']\r
                                        if( !isXML && key === 'class' && op === 3 ){\r
@@ -455,7 +455,7 @@ X.Dom.Query._parse = function( query, last ){
                                                                //flag_call ?\r
                                                                //      funcAttr( elem, key ) :\r
                                                                //useName ?\r
-                                                               //      elem[ X.Dom.Attr.renameForDOM[ key ] || key ] :\r
+                                                               //      elem[ X_Node_Attr.renameForDOM[ key ] || key ] :\r
                                                                //      elem.getAttribute( key, 2 );\r
                                                        flag = attr != null;// && ( !useName || attr !== '' );\r
                                                        if( flag && op ){\r
index db496ef..d4030e2 100644 (file)
@@ -5,7 +5,7 @@
  *\r
  */\r
 \r
-X_Dom_Parser = {\r
+var X_Dom_Parser = {\r
        CHARS : {\r
                A:1,B:1,C:1,D:1,E:1,F:1,G:1,H:1,I:1,J:1,K:1,L:1,M:1,N:1,O:1,P:1,Q:1,R:1,S:1,T:1,U:1,V:1,W:1,X:1,Y:1,Z:1,\r
                a:2,b:2,c:2,d:2,e:2,f:2,g:2,h:2,i:2,j:2,k:2,l:2,m:2,n:2,o:2,p:2,q:2,r:2,s:2,t:2,u:2,v:2,w:2,x:2,y:2,z:2,\r
@@ -48,7 +48,7 @@ X_Dom_Parser = {
         */\r
 \r
        // Attributes that have their values filled in disabled="disabled"\r
-       fillAttrs : X.Dom.Attr.noValue, //{checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};\r
+       fillAttrs : X_Node_Attr.noValue, //{checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};\r
 \r
        // Special Elements (can contain anything)\r
        special : { SCRIPT : 1, STYLE : 1, PLAINTEXT : 1, XMP : 1, TEXTAREA : 1 },\r
@@ -56,7 +56,7 @@ X_Dom_Parser = {
        exec : function( html, handler, async ){\r
                var special        = X_Dom_Parser.special,\r
                        //plainText      = X_Dom_Parser.plainText,\r
-                       startTime      = async && X.getTime(),\r
+                       startTime      = async && X_Timer_now(),\r
                        _parseStartTag = X_Dom_Parser._parseStartTag,\r
                        _parseEndTag   = X_Dom_Parser._parseEndTag,\r
                        stack          = async ? async[ 1 ] : [],\r
@@ -124,7 +124,7 @@ X_Dom_Parser = {
                                return;\r
                        };\r
                        \r
-                       if( async && startTime + 15 <= X.getTime() && html ){\r
+                       if( async && startTime + 15 <= X_Timer_now() && html ){\r
                                handler.progress( 1 - html.length / async[ 0 ] );\r
                                X.Timer.once( 0, X_Dom_Parser.exec, [ html, handler, async ] );\r
                                return;\r
@@ -266,7 +266,7 @@ X_Dom_Parser = {
                };\r
        },\r
 \r
-       parseStartTag : function( stack, last, handler, tagName, attrs, unary, index ) {\r
+       parseStartTag : function( stack, last, handler, tagName, attrs, empty, index ) {\r
                var inline   = X_Dom_Parser.inline,\r
                        parseEndTag = X_Dom_Parser.parseEndTag,\r
                        sisters  = X_Dom_Parser.sisters;\r
@@ -277,10 +277,10 @@ X_Dom_Parser = {
                        };\r
                };\r
                last && X_Dom_Parser.closeSelf[ tagName ] === 1 && ( last === tagName || ( sisters[ tagName ] && sisters[ tagName ][ last ] === 1 ) ) && parseEndTag( stack, handler, last );\r
-               unary = unary || X_Dom_Parser.empty[ tagName ];\r
-               !unary && ( stack[ stack.length ] = tagName );\r
+               empty = empty || X_Dom_Parser.empty[ tagName ];\r
+               !empty && ( stack[ stack.length ] = tagName );\r
                \r
-               return handler.start( tagName, attrs, unary, index );\r
+               return handler.start( tagName, attrs, empty, index );\r
        },\r
 \r
        parseEndTag : function( stack, handler, tagName ) {\r
index daa50fb..efa4a8d 100644 (file)
@@ -105,7 +105,7 @@ if( X.UA.Opera7 ){
  * http://kojs.sukobuto.com/docs/visible-binding\r
  * IE6 には、「空の span エレメントに続く空白は無視される」という謎な癖があります。 \r
  */\r
-X.Dom.listenOnce( X.Dom.Event.DOM_PRE_INIT,\r
+X.Dom.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT,\r
        X_UA_DOM.W3C ?\r
 (function(){\r
        var r    = Node._body,\r
@@ -245,7 +245,7 @@ X_TEMP.asyncCreateTree = function ( parent, elems, elmProgress, async ){
                l           = async ? 0           : xnodes.length,\r
                stack       = async ? async.stack : [],\r
                done        = async ? async.done  : 0,\r
-               startTime   = X.getTime(),              \r
+               startTime   = X_Timer_now(),            \r
                current     = async ? async.current : {\r
                        me     : parent,\r
                        xnodes : xnodes,\r
@@ -282,7 +282,7 @@ X_TEMP.asyncCreateTree = function ( parent, elems, elmProgress, async ){
                                        continue;\r
                                };\r
                                \r
-                               if( startTime + 16 <= X.getTime() ){\r
+                               if( startTime + 16 <= X_Timer_now() ){\r
                                        current.i = i;\r
                                        if( async ){\r
                                                async.current = i < l && current;\r
@@ -299,7 +299,7 @@ X_TEMP.asyncCreateTree = function ( parent, elems, elmProgress, async ){
                current = null;\r
        };\r
        // complete\r
-       X.Dom.asyncDispatch( 0, X.Dom.Event.DOM_BUILDER_COMPLETE );\r
+       X.Dom.asyncDispatch( 0, X_TEMP.SYSTEM_EVENT_XTREE );\r
        elmProgress.parentNode ? elmProgress.parentNode.removeChild( elmProgress ) : ( elmProgress.outerHTML = '' );\r
        delete X_TEMP.asyncCreateTree;\r
        delete X_TEMP.bindElementToXnode;\r
@@ -534,8 +534,8 @@ X_TEMP.bindElementToXnode =
                        };\r
                \r
                        // textNode がある\r
-                       ( current.flag & 6 ) && ( parent._dirty |= X.Dom.Dirty.IE4_TEXTNODE_FIX );\r
+                       ( current.flag & 6 ) && ( parent._dirty |= X_Node_Dirty.IE4_TEXTNODE_FIX );\r
                });\r
 \r
 console.log( 'X.Dom.Builder' );\r
-console.log( 'bootTime : ' + ( X.getTime() - X.bootTime ) );
\ No newline at end of file
+console.log( 'bootTime : ' + ( X_Timer_now() - X.bootTime ) );
\ No newline at end of file
index b13c5a4..863ebc3 100644 (file)
@@ -22,10 +22,13 @@ var X_Pulgin_FLASH_VERSION =
                        navigator.mimeTypes[ 'application/x-shockwave-flash' ] &&
                        navigator.mimeTypes[ 'application/x-shockwave-flash' ].enabledPlugin,
 
+/*
+ * ie11 の 互換モード(8,7)では、Silverlight が動作しない?
+ */
        X_Pulgin_SILVER_LIGHT_VERSION = 
                !X.UA.IE && navigator.plugins[ 'Silverlight Plug-In' ] ?
                        parseFloat( navigator.plugins[ 'Silverlight Plug-In' ].version ) :
-               X.UA.ActiveX && 6 <= X.UA.IE ? (function(){
+               X.UA.ActiveX && 6 <= X.UA.IE && !X.UA.IECompat ? (function(){
                            return eval( 'var a,i=0;try{a=new ActiveXObject("AgControl.AgControl");for(i=5;i;--i)if(a.IsVersionSupported(i+".0"))break;}catch(e){i=0}i' );
                        })() :
                        0,
index 26eb94a..cdcc24e 100644 (file)
@@ -18,7 +18,7 @@ X.Util.NinjaIframe = X.EventDispatcher.inherits(
                \r
                Constructor : function( html ){\r
                        \r
-                       this._name = 'hidden-iframe-' + X.getTime();\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.Dom.Node._body.create(\r
index 0900ae9..71c3172 100644 (file)
@@ -1,4 +1,5 @@
 // TODO  onlineevent offlineevent, netspeed\r
+// local への通信に対しては、netspeed を更新しない\r
 X.Net = {\r
 \r
        xhrGet : function( url ){\r
index 175d2ec..4675b13 100644 (file)
@@ -60,7 +60,7 @@ function X_Audio_detectComplete( e, proxy, option, sourceList, source, ext, sup
 };\r
 \r
 \r
-X_AudioProxy = X.EventDispatcher.inherits(\r
+var X_AudioProxy = X.EventDispatcher.inherits(\r
        'X.AV.AudioProxy',\r
        X.Class.POOL_OBJECT,\r
        {\r
index 2019d4a..13b499e 100644 (file)
@@ -130,7 +130,7 @@ if( X.Pulgin.SilverlightEnabled ){
                                 * このページのサンプルは sl5+firefox32 環境で動いている。xaml を js から利用する形ではなく、.xap を sl4 以下で作るのがよさそう.\r
                                 */\r
                                this.proxy       = proxy;\r
-                       this._onload     = 'XAudioSilverlightOnLoad';// + ( ++X_Audio_SLAudio_uid );\r
+                       this._onload     = 'XAudioSilverlightOnLoad' + ( ++X_Audio_SLAudio_uid );\r
                                this._callback   = window[ this._onload ] = X_Callback_create( this, this.onSLReady, [ option.autoplay ] );\r
                        this.xnodeObject = X.Dom.Node._body\r
                                .create( 'object', {\r
@@ -165,6 +165,8 @@ if( X.Pulgin.SilverlightEnabled ){
                                this._callback.kill();\r
                                delete this._callback;\r
 \r
+                               if( sender.findName('media') ) alert( 'exist' );\r
+\r
                                sender.children.add(\r
                                        sender.GetHost().\r
                                        content.\r
index f7dac75..a52c1d7 100644 (file)
@@ -374,7 +374,7 @@ X.Class._override( iScroll.prototype, {
                this.pointX = point.pageX;\r
                this.pointY = point.pageY;\r
 \r
-               this.startTime = e.timeStamp || X.getTime();\r
+               this.startTime = e.timeStamp || X.Timer.now();\r
 \r
                this.uinodeRoot.listen( X.UI.Event.DRAG, this );\r
                this.uinodeRoot.listen( X.UI.Event.DRAG_END, this );\r
@@ -389,7 +389,7 @@ X.Class._override( iScroll.prototype, {
                        newX   = this.x + deltaX,\r
                        newY   = this.y + deltaY,\r
                        c1, c2, scale,\r
-                       timestamp = e.timeStamp ||X.getTime(), ret;\r
+                       timestamp = e.timeStamp ||X.Timer.now(), ret;\r
 \r
                //if (this.options.onBeforeScrollMove) this.options.onBeforeScrollMove.call(this, e);\r
                if( ( ret = this._trigger( X.UI.Event.SCROLL_BEFORE_MOVE ) ) & X.Callback.PREVENT_DEFAULT ){\r
@@ -448,7 +448,7 @@ X.Class._override( iScroll.prototype, {
                var point     = hasTouch ? e.changedTouches[0] : e,\r
                        momentumX = { dist:0, time:0 },\r
                        momentumY = { dist:0, time:0 },\r
-                       duration  = ( e.timeStamp ||X.getTime() ) - this.startTime,\r
+                       duration  = ( e.timeStamp ||X.Timer.now() ) - this.startTime,\r
                        newPosX   = this.x,\r
                        newPosY   = this.y,\r
                        distX, distY,\r
@@ -655,12 +655,12 @@ X.Class._override( iScroll.prototype, {
                        //step.time ? X.Dom.Event.add( this.scroller, TRNEND_EV, this ) /* this._bind(TRNEND_EV) */ : this._resetPos(0);\r
                        //return;\r
                //}\r
-               //this._doAnimate( X.getTime(), step, startX, startY );\r
+               //this._doAnimate( X.Timer.now(), step, startX, startY );\r
        },\r
 \r
 /*\r
        _doAnimate : function( startTime, step, startX, startY ){\r
-               var now =X.getTime(),\r
+               var now =X.Timer.now(),\r
                        easeOut, newX, newY;\r
 \r
                if (now >= startTime + step.time) {\r
index d8dbac2..b13f170 100644 (file)
@@ -1,7 +1,8 @@
 
 X.UI._eventRellay = function( e ){
-       var x       = e.clientX / X.Dom.baseFontSize,
-               y       = e.clientY / X.Dom.baseFontSize,
+       var font    = X.Dom.getBaseFontSize(),
+               x       = e.clientX / font,
+               y       = e.clientY / font,
                type    = X.UI.Event.NameToID[ e.type ],
                i       = 0,
                data    = X.UI.currentRootData,
@@ -84,10 +85,10 @@ X.UI._PageRoot = X.UI._Box.inherits(
                Constructor : function( layout, args ){
                        this.SuperConstructor( layout, args );
                        
-                       if( X.Dom.readyState === X.Dom.Event.XDOM_READY ){
+                       if( X_Dom_readyState === X.Event.XDOM_READY ){
                                X.Timer.once( 0, this, this.start );
                        } else {
-                               X.Dom.listenOnce( X.Dom.Event.XDOM_READY, this, this.start );
+                               X.Dom.listenOnce( X.Event.XDOM_READY, this, this.start );
                        };
                        
                        this.hoverList    = [];
@@ -154,13 +155,14 @@ X.UI._PageRoot = X.UI._Box.inherits(
                        };
                },
                calculate : function( e ){
-                       var font = X.Dom.baseFontSize,
-                               size, w, h;
+                       var font, size, w, h;
                        if( !e ){
                                size = X.Dom.getSize();
+                               font = X.Dom.getBaseFontSize();
                                w    = size[ 0 ];
                                h    = size[ 1 ];
                        } else {
+                               font = e.fontSize;
                                w = e.w;
                                h = e.h;
                        };