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

