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

