docs: function( event ) {
              var history, hash;
  
              // If hashchange listening is explicitly disabled or pushstate is supported
              // avoid making use of the hashchange handler.
              if (!$.event.special.navigate.isHashChangeEnabled() ||
                  $.event.special.navigate.isPushStateEnabled() ) {
                  return;
              }
  
              // On occasion explicitly want to prevent the next hash from propogating because we only
              // with to alter the url to represent the new state do so here
              if ( this.preventNextHashChange ) {
                  this.preventNextHashChange = false;
                  event.stopImmediatePropagation();
                  return;
              }
  
              history = this.history;
              hash = path.parseLocation().hash;
  
              // If this is a hashchange caused by the back or forward button
              // make sure to set the state of our history stack properly
              this.history.direct({
                  url: hash,
  
                  // When the url is either forward or backward in history include the entry
                  // as data on the event object for merging as data in the navigate event
                  present: function( historyEntry, direction ) {
                      // make sure to create a new object to pass down as the navigate event data
                      event.hashchangeState = $.extend({}, historyEntry);
                      event.hashchangeState.direction = direction;
                  },
  
                  // When we don't find a hash in our history clearly we're aiming to go there
                  // record the entry as new for future traversal
                  //
                  // NOTE it's not entirely clear that this is the right thing to do given that we
                  //      can't know the users intention. It might be better to explicitly _not_
                  //      support location.hash assignment in preference to $.navigate calls
                  // TODO first arg to add should be the href, but it causes issues in identifying
                  //      embeded pages
                  missing: function() {
                      history.add( hash, {
                          hash: hash,
                          title: document.title
                      });
                  }
              });
          }