+X.View = {\r
+ Event : {\r
+ SYS_READY : 0,\r
+ INIT : 1,\r
+ ADDED : 2,\r
+ CREATION_COMPLETE : 3,\r
+ REMOVED : 4,\r
+ \r
+ VIEW_RESIZED : 5, // リサイズイベントのバブルアップは要素のレイアウトマネジャーでキャンセルされることも\r
+ IN_VIEW : 6, // 要素が視界に入った\r
+ OUT_VIEW : 7,\r
+ \r
+ POINTER_OUT : 8,\r
+ POINTER_IN : 9,\r
+ \r
+ // FOCUS\r
+ // DISABLED\r
+ // ENABLED\r
+ \r
+ /* -- Pointing Device Event -- */\r
+ _START_POINTER : 10,\r
+ \r
+ CONTEXT_MENU : 10, // rightclick or longtouch or menukey\r
+ \r
+ /* -- ここよりあとははノード上をバブルアップ -- */\r
+ _NO_BUBLEUP : 10.5, \r
+ //\r
+ POINTER_START : 11,\r
+ POINTER_END : 12,\r
+ POINTER_MOVE : 13,\r
+ \r
+ SELECT : 14, // click or tap or enterkey\r
+ FILE_DRAG : 15,\r
+ \r
+ /* -- Pointing Device Event -- */\r
+ _END_POINTER : 15,\r
+ \r
+ KEY_DOWN : 16,\r
+ KEY_UP : 17,\r
+ \r
+ SCROLL : 18,\r
+ \r
+ CHANGE : 19,\r
+ SUBMIT : 20,\r
+ \r
+ IdToName : {},\r
+ NameToID : {}\r
+ }\r
+};\r
+\r
+if( window.navigator.msPointerEnabled ){\r
+ X.View.Event.IdToName[ X.View.Event.POINTER_START ] = 'MSPointerDown';\r
+ X.View.Event.IdToName[ X.View.Event.POINTER_END ] = 'MSPointerUp';\r
+ X.View.Event.IdToName[ X.View.Event.POINTER_MOVE ] = 'MSPointerMove';\r
+ X.View.Event.NameToID[ 'MSPointerDown' ] = X.View.Event.POINTER_START;\r
+ X.View.Event.NameToID[ 'MSPointerUp' ] = X.View.Event.POINTER_END;\r
+ X.View.Event.NameToID[ 'MSPointerMove' ] = X.View.Event.POINTER_MOVE;\r
+} else\r
+if( 'ontouchstart' in window || window.DocumentTouch && document instanceof DocumentTouch ){\r
+ X.View.Event.IdToName[ X.View.Event.POINTER_START ] = 'touchstart';\r
+ X.View.Event.IdToName[ X.View.Event.POINTER_END ] = 'touchend';\r
+ X.View.Event.IdToName[ X.View.Event.POINTER_MOVE ] = 'touchmove';\r
+ X.View.Event.NameToID[ 'touchstart' ] = X.View.Event.POINTER_START;\r
+ X.View.Event.NameToID[ 'touchend' ] = X.View.Event.POINTER_END;\r
+ X.View.Event.NameToID[ 'touchmove' ] = X.View.Event.POINTER_MOVE;\r
+} else {\r
+ X.View.Event.IdToName[ X.View.Event.POINTER_START ] = 'mousedown';\r
+ X.View.Event.IdToName[ X.View.Event.POINTER_END ] = 'mouseup';\r
+ X.View.Event.IdToName[ X.View.Event.POINTER_MOVE ] = 'mousemove';\r
+ X.View.Event.NameToID[ 'mousedown' ] = X.View.Event.POINTER_START;\r
+ X.View.Event.NameToID[ 'mouseup' ] = X.View.Event.POINTER_END;\r
+ X.View.Event.NameToID[ 'mousemove' ] = X.View.Event.POINTER_MOVE;\r
+};\r
\r
X.View = (function( window, document ){\r
var view = X.UA.IE ?\r
resize, delayResize;\r
\r
/* -----------------------------------------------\r
- * Document Ready\r
- * Dean Edwards/Matthias Miller/John Resig\r
- */\r
- function init(){\r
- if( X.View.ready ) return;\r
- X.View.ready = true;\r
- X.View.dispatch( { type : X.ViewEvent.SYS_READY, w : w, h : h } );\r
- };\r
- /* for Mozilla/Opera9 */\r
- if( document.addEventListener ){\r
- document.addEventListener( "DOMContentLoaded", init, false );\r
- };\r
- if( 4 < X.UA.IE ){\r
- document.write( "<script id=__ie_onload defer src=javascript:void(0)><\/script>" );\r
- var _script = document.getElementById( "__ie_onload" );\r
- _script.onreadystatechange = function(){\r
- if( this.readyState == "complete" ){\r
- this.parentNode.removeElement( this );\r
- this.onreadystatechange = new Function();\r
- this.onreadystatechange = null;\r
- _script = void 0;\r
- init();\r
- };\r
- }; \r
- };\r
- if( X.UA.WebKit ){ // sniff\r
- var _timer = setInterval( function(){\r
- if( /loaded|complete/.test( document.readyState ) ){\r
- clearInterval( _timer );\r
- init();\r
- };\r
- }, 10);\r
- };\r
- \r
- /* for other browsers */\r
- X.DomEvent.add( window, 'load', init );\r
-\r
-/* -----------------------------------------------\r
* Resize\r
- * uupaa\r
+ * uupaa.js\r
*/\r
function unlock(){ lock = 0; };\r
\r
if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED\r
w = size[ 0 ];\r
h = size[ 1 ];\r
- X.View.dispatch( { type : X.ViewEvent.VIEW_RESIZED, w : w, h : h } );\r
+ X.View.dispatch( { type : X.View.Event.VIEW_RESIZED, w : w, h : h } );\r
};\r
X.Timer.once( 1, unlock );// delay unlock\r
};\r
if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED\r
w = size[ 0 ];\r
h = size[ 1 ];\r
- X.View.dispatch( { type : X.ViewEvent.VIEW_RESIZED, w : w, h : h } );\r
+ X.View.dispatch( { type : X.View.Event.VIEW_RESIZED, w : w, h : h } );\r
};\r
X.Timer.once( 1, unlock );\r
};\r
X.View = X.Class._override( new X.EventDispatcher(),\r
{\r
ready : false,\r
+ _view : view,\r
getSize : ( view.innerWidth ?\r
( function(){\r
return [ view.innerWidth, view.innerHeight ];\r
return [ view.clientWidth, view.clientHeight ];\r
})\r
),\r
+ getPointerPosition : function(){\r
+ \r
+ },\r
/* 要素が視界に入った http://remysharp.com/2009/01/26/element-in-view-event-plugin/ */\r
inView : function( elm ){\r
\r
- }\r
+ },\r
+ _init : function(){\r
+ var s;\r
+ if( X.View.ready ) return X.Callback.UN_LISTEN;\r
+ if( s = X.View._script ){\r
+ s.parentNode.removeChild( s );\r
+ s.onreadystatechange = new Function();\r
+ s.onreadystatechange = null;\r
+ delete X.View._script;\r
+ };\r
+ delete X.View._init;\r
+ X.View.ready = true;\r
+ X.View.dispatch( { type : X.View.Event.SYS_READY } );\r
+ return X.Callback.UN_LISTEN;\r
+ },\r
+ Event : X.View.Event\r
}\r
);\r
\r
- X.View.listenOnce( X.ViewEvent.SYS_READY, function(){\r
- if( X.UA.IE ){\r
- X.Timer.add( 100, 0, resize );\r
+ X.View.listenOnce( X.View.Event.SYS_READY, function(){\r
+ var b, x;\r
+ if( X.UA.IE && X.UA.IE < 9 ){\r
+ X.Timer.add( 100, resize );\r
+ b = document.body;\r
+ b.appendChild( x = document.createElement( 'div' ) );\r
+ x.style.cssText = 'width:1px;height:1px;line-height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';\r
+ b.className += [ b.className === '' ? '' : ' ', 'ActiveX-', 1 < x.offsetHeight ? 'enabled' : 'disabled' ].join( '' );\r
+ b.removeChild( x );\r
} else {\r
X.DomEvent.add( window, 'resize', resize );\r
};\r
return X.View;\r
})( window, document );\r
\r
+\r
+/* -----------------------------------------------\r
+ * Document Ready\r
+ * Dean Edwards/Matthias Miller/John Resig\r
+ */\r
+/* for ie9+/Mozilla/Opera9 */\r
+if( document.addEventListener ){\r
+ X.DomEvent.add( document, 'DOMContentLoaded', X.View._init );\r
+} else\r
+if( 4 < X.UA.IE ){\r
+ // if this script in Head\r
+ document.write( "<script id=__ie_onload defer src=javascript:void(0)><\/script>" );\r
+ X.View._script = document.getElementById( "__ie_onload" );\r
+ X.View._script.onreadystatechange = function(){\r
+ this.readyState === 'complete' && X.View._init();\r
+ };\r
+} else\r
+if( X.UA.WebKit ){ // sniff\r
+ X.Timer.add( 10, function(){\r
+ if( !X.View._init ) return X.Callback.UN_LISTEN;\r
+ if( 'loaded|complete'.indexOf( document.readyState ) !== -1 ) return X.View._init();\r
+ });\r
+};\r
+\r
+/* for other browsers */\r
+X.DomEvent.add( window, 'load', X.View._init );\r
+\r
//\r
-X.View.listen( X.ViewEvent.SYS_READY, function(e){ console.log( 'X.View DomReady ' + X.View.ready ) } );\r
+X.View.listen( X.View.Event.SYS_READY, function(e){ console.log( 'X.View DomReady ' + X.View.ready ) } );\r
\r
-X.View.listen( X.ViewEvent.VIEW_RESIZED, function(e){ console.log( 'X.View VIEW_RESIZED ' + e.w + 'x' + e.h ) } );\r
+X.View.listen( X.View.Event.VIEW_RESIZED, function(e){ console.log( 'X.View VIEW_RESIZED ' + e.w + 'x' + e.h ) } );\r