5 X.Timer = ( function(){
\r
6 var setTimeout = window.setTimeout,
\r
7 clearTimeout = window.clearTimeout,
\r
23 queue = list[ --i ];
\r
24 if( 0 < ( queue[ INDEX_LAST ] -= c ) ) continue;
\r
25 f = queue[ INDEX_CALLBACK ];
\r
26 c = queue[ INDEX_COUNT ];
\r
28 if( ret === false || ret & X.Callback.UN_LISTEN || c === 1 ){
\r
29 list.splice( i, 1 );
\r
34 if( 1 < c ) --queue[ INDEX_COUNT ];
\r
35 queue[ INDEX_LAST ] = queue[ INDEX_TIME ];
\r
41 var list = TICKET_LIST,
\r
46 timerId !== -1 && clearTimeout( timerId );
\r
51 last = list[ --i ][ INDEX_LAST ];
\r
52 if( last < n ) n = last;
\r
54 if( n < next || timerId === -1 ){
\r
55 timerId !== -1 && clearTimeout( timerId );
\r
56 timerId = setTimeout( loop, INTERVAL_TIME * n );
\r
62 add : function( time, opt_count, args1, args2, args3 ){
\r
63 time = time < INTERVAL_TIME ? 1 : ( time / INTERVAL_TIME ) | 0; // 正の数で使える「Math.floor(x)」を「(x | 0)」に;
\r
65 if( typeof opt_count !== 'number' ){
\r
72 TICKET_LIST[ TICKET_LIST.length ] = [ time, time, opt_count, X.Callback.create( args1, args2, args3 ) ];
\r
75 once : function( time, args1, args2, args3 ){
\r
76 X.Timer.add( time, 1, args1, args2, args3 );
\r
78 remove : function( args1, args2 ){
\r
82 if( !callback ) return;
\r
83 while( queue = list[ i ] ){
\r
84 if( queue[ INDEX_CALLBACK ].same( args1, args2 ) === true ){
\r
86 list.splice( i, 1 );
\r
96 ,_loop : X.UA.IE && X.UA.IE < 5 && (function(){
\r
98 loop = 'X.Timer._loop()';
\r