var Timer = Class.create({
	initialize: function(callback, timeout)
	{
		this.callback = callback;
		this.timeout = timeout;
	}

	,start: function()
	{
		if (this.started)
			return;

		this.timer = setTimeout(this.execute.bind(this), this.timeout);
		this.started = true;
	}

	,stop: function()
	{
		if (! this.started)
			return;

		clearTimeout(this.timer);
		this.started = false;
	}

	,restart: function()
	{
		this.stop();
		this.start();
	}

	,execute: function()
	{
		this.started = false;
		
		if (this.callback)
			this.callback();
	}
	
	,setCallback: function(callback)
	{
		this.callback = callback;
	}
});