diff --git a/frontend-js/src/main/js/gui/leftPanel/GenericSearchPanel.js b/frontend-js/src/main/js/gui/leftPanel/GenericSearchPanel.js
index d0352ecdec6ca3ae683be10341f4f005c8d25c8e..0b0ee47231ab245c0ce9b27aa357ec0214697c6d 100644
--- a/frontend-js/src/main/js/gui/leftPanel/GenericSearchPanel.js
+++ b/frontend-js/src/main/js/gui/leftPanel/GenericSearchPanel.js
@@ -6,6 +6,7 @@ var Promise = require("bluebird");
 
 var AbstractDbPanel = require('./AbstractDbPanel');
 var Alias = require('../../map/data/Alias');
+var IdentifiedElement = require('../../map/data/IdentifiedElement');
 var InvalidArgumentError = require('../../InvalidArgumentError');
 var PanelControlElementType = require('../PanelControlElementType');
 var Reaction = require('../../map/data/Reaction');
@@ -22,15 +23,47 @@ var Functions = require('../../Functions');
  * @extends AbstractDbPanel
  */
 function GenericSearchPanel(params) {
+  var self = this;
   params.panelName = "search";
   params.helpTip = "<p>search tab allows to search for particular elements or interactions in the map</p>"
     + "<p>perfect match tick box active: only terms with an exact match to the query will be returned</p>"
     + "<p>separate multiple search by semicolon</p>";
   params.placeholder = "keyword";
 
-  AbstractDbPanel.call(this, params);
+  AbstractDbPanel.call(self, params);
+
+  self.createSearchGui();
+
+  self.getMap().addListener("onBioEntityClick", function (e) {
+    var identifiedElement = e.arg;
+    var queries = self.getOverlayDb().getQueries();
+    var promises = [];
+    for (var i = 0; i < queries.length; i++) {
+      promises.push(self.getOverlayDb().getElementsByQuery(queries[i]));
+    }
+    return Promise.all(promises).then(function (elements) {
+      var tab = -1;
+      for (var i = 0; i < elements.length; i++) {
+        for (var j = 0; j < elements[i].length; j++) {
+          var element = elements[i][j].element;
+          if (element instanceof SearchBioEntityGroup) {
+            for (var k = 0; k < element.getBioEntities().length; k++) {
+              if (new IdentifiedElement(element.getBioEntities()[k]).equals(identifiedElement)) {
+                tab = i;
+              }
+            }
+          } else if (new IdentifiedElement(element).equals(identifiedElement)) {
+            tab = i;
+          }
+        }
+      }
+      var link = $(".parentTabs > .nav-tabs > li > a", self.getElement())[tab];
+      if (link !== undefined) {
+        return link.click();
+      }
+    });
+  });
 
-  this.createSearchGui();
 }
 
 GenericSearchPanel.prototype = Object.create(AbstractDbPanel.prototype);
diff --git a/frontend-js/src/main/js/map/data/IdentifiedElement.js b/frontend-js/src/main/js/map/data/IdentifiedElement.js
index c2bbe28b91635f18d33c57e28c81c47da1a6492c..5b2e69861f0858a9653a9dea9eaf39ca746e2301 100644
--- a/frontend-js/src/main/js/map/data/IdentifiedElement.js
+++ b/frontend-js/src/main/js/map/data/IdentifiedElement.js
@@ -267,7 +267,7 @@ IdentifiedElement.prototype.setLineColor = function (lineColor) {
 
 /**
  *
- * @param {IdentifiedElement} argument
+ * @param {Object} argument
  * @returns {boolean}
  */
 IdentifiedElement.prototype.equals = function (argument) {