code: function(element, axis, fn, all) {
          while (element && (element = element[axis])) { // NOTE: assignment
                  if ( (all || element[TAG_NAME]) && (!fn || fn(element)) ) {
                      return element;
                  }
          }
          return null;
      }
docs: Searches the element by the given axis for the first matching element.
  @method elementByAxis
  @param {HTMLElement} element The html element.
  @param {String} axis The axis to search (parentNode, nextSibling, previousSibling).
  @param {Function} fn optional An optional boolean test to apply.
  @param {Boolean} all optional Whether all node types should be returned, or just element nodes.
  The optional function is passed the current HTMLElement being tested as its only argument.
  If no function is given, the first element is returned.
  @return {HTMLElement | null} The matching element or null if none found.