﻿/*
*
*	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);
};
