// // This work is licensed under the Creative Commons Attribution 2.5 License. To // view a copy of this license, visit // http://creativecommons.org/licenses/by/2.5/ // or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San // Francisco, California, 94105, USA. // // All copies and derivatives of this source must contain the license statement // above and the following attribution: // // Author: Kyle Scholz http://kylescholz.com/ // Copyright: 2006 // /** * Timer */ var Timer = function(){}; Timer.prototype = { initialize: function( timeout ) { this['timer']; this['TIMEOUT'] = timeout; this['BASE_TIMEOUT'] = timeout; this['MAX_TIMEOUT'] = 2000; this['interupt'] = true; this['subscribers'] = new Array(); this['ontimeout'] = new EventHandler( this, // notify subscribers and restart timer function() { this.notify(); if ( !this.interupt ) { this.start(); } } ); }, /* * Start the Timer */ start: function() { this['interupt']=false; this['timer'] = setTimeout(this.ontimeout,this['TIMEOUT']); }, /* * Stop the Timer */ stop: function() { this['interupt']=true; }, /* * Add an observer */ subscribe: function( observer ) { this.subscribers.push( observer ); }, /* * notify observers when an event has occured */ notify: function( key, value ) { for( var i=0; i