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