title: Javascript setInterval scoping issue
body: <p>I have a class I am attempting to use to manage a session on the client side, it looks like this:</p>
  
  <pre><code>var sessionmanager;
  
  sessionmanager = (function() {
  
    sessionmanager.name = 'sessionmanager';
  
    function sessionmanager(timeout, action) {
      if (action != null) {
        this.action = action;
      } else {
        this.action = null;
      }
      if (timeout != null) {
        this.timeout = timeout * 60;
      } else {
        this.timeout = 0;
      }
    }
  
    sessionmanager.prototype.run = function() {
      return window.setInterval(this.tick, 1000);
    };
  
    sessionmanager.prototype.sessionExpired = function() {
      if (this.action != null) {
        window.navigate("timeout.asp");
      }
    };
  
    sessionmanager.prototype.setTimeout = function(timeout) {
      return this.timeout = timeout;
    };
  
    sessionmanager.prototype.tick = function() {
      this.timeout -= 1;
      if (this.timeout &lt; 1) {
        return sessionExpired();
      }
    };
  
    return sessionmanager;
  
  })();
  </code></pre>
  
  <p>However when I debug inside the <code>tick</code> function that is called from within the <code>setInterval</code> callback I get <code>this.timeout = NaN</code></p>
  
  <p>I am guessing I scoped something incorrectly? Help please? I am new to javascript...</p>