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