1 (function( window, document ){
\r
3 lock = 0, w = 0, h = 0,
\r
6 /* -----------------------------------------------
\r
10 function unlock(){ lock = 0; };
\r
13 resize = function(){
\r
16 size = X.Dom.getSize();
\r
17 if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED
\r
20 X.Dom.dispatch( { type : X.Dom.Event.VIEW_RESIZED, w : w, h : h } );
\r
22 X.Timer.once( 1, unlock );// delay unlock
\r
26 resize = function( e ){
\r
27 !lock++ && X.Timer.once( 40, delayResize );
\r
28 e.stopPropagation && e.stopPropagation();
\r
29 e.preventDefault && e.preventDefault();
\r
32 delayResize = function(){
\r
33 var size = X.Dom.getSize(),
\r
35 if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED
\r
38 X.Dom.dispatch( { type : X.Dom.Event.VIEW_RESIZED, w : w, h : h } );
\r
40 X.Timer.once( 1, unlock );
\r
44 X.Dom = X.Class._override(
\r
45 new X.EventDispatcher(),
\r
48 getPointerPosition : function(){
\r
51 /* 要素が視界に入った http://remysharp.com/2009/01/26/element-in-view-event-plugin/ */
\r
52 inView : function( elm ){
\r
57 if( X.Dom.ready ) return X.Callback.UN_LISTEN;
\r
58 if( s = X.Dom._script ){
\r
59 s.parentNode.removeChild( s );
\r
60 s.onreadystatechange = X.emptyFunction;
\r
61 s.onreadystatechange = null;
\r
62 delete X.Dom._script;
\r
67 /* if( X.UA.IE ) */ X.Dom._view = ( document.compatMode !== "CSS1Compat" ? document.body : document.documentElement );
\r
68 size = X.Dom.getSize();
\r
70 X.Dom.dispatch( { type : X.Dom.Event.DOM_PREINIT, w : size[ 0 ], h : size[ 1 ] } );
\r
72 X.Dom.dispatch( { type : X.Dom.Event.INIT, w : size[ 0 ], h : size[ 1 ] } );
\r
74 if( X.UA.IE && X.UA.IE < 9 ){
\r
75 X.Timer.add( 100, resize );
\r
78 b.appendChild( x = document.createElement( 'div' ) );
\r
79 x.style.cssText = 'width:1px;height:1px;line-height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';
\r
80 b.className += [ b.className === '' ? '' : ' ', 'ActiveX-', 1 < x.offsetHeight ? 'enabled' : 'disabled' ].join( '' );
\r
81 b.removeChild( x );
\r
84 X.Dom.Event.add( window, 'resize', resize );
\r
87 //X.Timer.once( 0, X.Dom, X.Dom.dispatch, [ { type : X.Dom.Event.XDOM_READY, w : size[ 0 ], h : size[ 1 ] } ] );
\r
88 X.Dom.dispatch( { type : X.Dom.Event.XDOM_READY, w : size[ 0 ], h : size[ 1 ] } );
\r
89 return X.Callback.UN_LISTEN;
\r
91 // _view : null, for ie
\r
94 new Function( 'return [ X.Dom._view.clientWidth, X.Dom._view.clientHeight ]' ) :
\r
95 new Function( 'return [ window.innerWidth, window.innerHeight ]' ),
\r
97 window.pageXOffset !== undefined ?
\r
98 new Function( 'return [window.pageXOffset,window.pageYOffset]' ) :
\r
99 window.scrollLeft !== undefined ?
\r
100 new Function( 'return [window.scrollLeft,window.scrollTop]') :
\r
101 new Function( 'return [X.Dom._view.scrollLeft,X.Dom._view.scrollTop]' ),
\r
102 getDocumentSize : function(){
\r
104 X.Dom._view.scrollWidth || X.Dom._view.offsetWidth,
\r
105 X.Dom._view.scrollHeight || X.Dom._view.offsetHeight
\r
111 })( window, document );
\r
115 PAINT : 1, // 再描画のみ必要
\r
116 LAYOUT : 2, // レイアウト(ボックスサイズ)の再計算が必要
\r
117 UPDATE_FONT : 4, // フォントサイズが変更された
\r
118 UPDATE_CONTENT : 8, // コンテンツが変更された
\r