code: function(evt) {
          delete this.startEvt;
          var features = this.getFeatures(evt);
          var over = {}, newly = [], feature;
          for (var i=0, len=features.length; i<len; ++i) {
              feature = features[i];
              over[feature.id] = feature;
              if (!this.cache[feature.id]) {
                  newly.push(feature);
              }
          }
          // check if already over features
          var out = [];
          for (var id in this.cache) {
              feature = this.cache[id];
              if (feature.layer && feature.layer.map) {
                  if (!over[feature.id]) {
                      out.push(feature);
                  }
              } else {
                  // removed
                  delete this.cache[id];
              }
          }
          // fire featureover events
          var more;
          for (i=0, len=newly.length; i<len; ++i) {
              feature = newly[i];
              this.cache[feature.id] = feature;
              more = this.triggerEvent("featureover", {feature: feature});
              if (more === false) {
                  break;
              }
          }
          // fire featureout events
          for (i=0, len=out.length; i<len; ++i) {
              feature = out[i];
              delete this.cache[feature.id];
              more = this.triggerEvent("featureout", {feature: feature});
              if (more === false) {
                  break;
              }
          }
      }
docs: Method: onMousemove
  Listener for the mousemove event.
  
  Parameters:
  evt - {<OpenLayers.Event>}