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