/*
*
*	jQuery Timer plugin v0.1
*		Matt Schmidt [http://www.mattptr.net]
*
*	Licensed under the BSD License:
*		http://mattptr.net/license/license.txt
*
*/

jQuery.timer = function (interval, callback)
{
/**
 *
 * timer() provides a cleaner way to handle intervals  
 *
 *	@usage
 * $.timer(interval, callback);
 *
 *
 * @example
 * $.timer(1000, function (timer) {
 * 	alert("hello");
 * 	timer.stop();
 * });
 * @desc Show an alert box after 1 second and stop
 * 
 * @example
 * var second = false;
 *	$.timer(1000, function (timer) {
 *		if (!second) {
 *			alert('First time!');
 *			second = true;
 *			timer.reset(3000);
 *		}
 *		else {
 *			alert('Second time');
 *			timer.stop();
 *		}
 *	});
 * @desc Show an alert box after 1 second and show another after 3 seconds
 *
 * 
 */

var interval = interval || 100;

if (!callback)
	return false;

_timer = function (interval, callback) {
	this.stop = function () {
		clearInterval(self.id);
	};
	
	this.internalCallback = function () {
		callback(self);
	};
	
	this.reset = function (val) {
		if (self.id)
			clearInterval(self.id);
		
		var val = val || 100;
		this.id = setInterval(this.internalCallback, val);
	};
	
	this.interval = interval;
	this.id = setInterval(this.internalCallback, this.interval);
	
	var self = this;
};

return new _timer(interval, callback);
};