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