code: function(evt) {
          var x = evt.clientX, y = evt.clientY,
              features = [], targets = [], layers = [],
              layer, target, feature, i, len;
          // go through all layers looking for targets
          for (i=this.map.layers.length-1; i>=0; --i) {
              layer = this.map.layers[i];
              if (layer.div.style.display !== "none") {
                  if (layer.renderer instanceof OpenLayers.Renderer.Elements) {
                      if (layer instanceof OpenLayers.Layer.Vector) {
                          target = document.elementFromPoint(x, y);
                          while (target && target._featureId) {
                              feature = layer.getFeatureById(target._featureId);
                              if (feature) {
                                  features.push(feature);
                                  target.style.display = "none";
                                  targets.push(target);
                                  target = document.elementFromPoint(x, y);
                              } else {
                                  // sketch, all bets off
                                  target = false;
                              }
                          }
                      }
                      layers.push(layer);
                      layer.div.style.display = "none";
                  } else if (layer.renderer instanceof OpenLayers.Renderer.Canvas) {
                      feature = layer.renderer.getFeatureIdFromEvent(evt);
                      if (feature) {
                          features.push(feature);
                          layers.push(layer);
                      }
                  }
              }
          }
          // restore feature visibility
          for (i=0, len=targets.length; i<len; ++i) {
              targets[i].style.display = "";
          }
          // restore layer visibility
          for (i=layers.length-1; i>=0; --i) {
              layers[i].div.style.display = "block";
          }
          return features;
      }
docs: Method: getFeatures
  Get all features at the given screen location.
  
  Parameters:
  evt - {Object} Event object.
  
  Returns:
  {Array(<OpenLayers.Feature.Vector>)} List of features at the given point.