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