From cb7d7f28af00e47685de391b40f674fd6ed10e5d Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Thu, 24 Aug 2017 16:10:38 +0200
Subject: [PATCH] GuiConnector unit tests

---
 frontend-js/.idea/workspace.xml               | 1174 -----------------
 frontend-js/src/main/css/global.css           |    2 +-
 frontend-js/src/main/js/GuiConnector.js       |  112 +-
 .../main/js/gui/leftPanel/ProjectInfoPanel.js |  552 ++++----
 frontend-js/src/main/js/minerva.js            | 1094 +++++++--------
 frontend-js/src/test/js/GuiConnector-test.js  |   49 +
 frontend-js/src/test/js/minerva-test.js       |    3 -
 7 files changed, 934 insertions(+), 2052 deletions(-)
 delete mode 100644 frontend-js/.idea/workspace.xml
 create mode 100644 frontend-js/src/test/js/GuiConnector-test.js

diff --git a/frontend-js/.idea/workspace.xml b/frontend-js/.idea/workspace.xml
deleted file mode 100644
index 0156c1a5a7..0000000000
--- a/frontend-js/.idea/workspace.xml
+++ /dev/null
@@ -1,1174 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="AnalysisUIOptions">
-    <option name="SCOPE_TYPE" value="8" />
-    <option name="CUSTOM_SCOPE_NAME" value="Project" />
-  </component>
-  <component name="ChangeListManager">
-    <list default="true" id="c119f0dd-fdda-4d02-a51e-86bc6ef7e50c" name="Default" comment="">
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/test/js/mocha-config.js" afterPath="$PROJECT_DIR$/src/test/js/mocha-config.js" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/test/js/gui/admin/MapsAdminPanel-test.js" afterPath="$PROJECT_DIR$/src/test/js/gui/admin/MapsAdminPanel-test.js" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/test/js/minerva-test.js" afterPath="$PROJECT_DIR$/src/test/js/minerva-test.js" />
-    </list>
-    <ignored path="$PROJECT_DIR$/.tmp/" />
-    <ignored path="$PROJECT_DIR$/temp/" />
-    <ignored path="$PROJECT_DIR$/tmp/" />
-    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
-    <option name="TRACKING_ENABLED" value="true" />
-    <option name="SHOW_DIALOG" value="false" />
-    <option name="HIGHLIGHT_CONFLICTS" value="true" />
-    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
-    <option name="LAST_RESOLUTION" value="IGNORE" />
-  </component>
-  <component name="FileEditorManager">
-    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file leaf-file-name="mocha-config.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/test/js/mocha-config.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="432">
-              <caret line="42" column="18" lean-forward="false" selection-start-line="42" selection-start-column="18" selection-end-line="42" selection-end-column="18" />
-              <folding>
-                <marker date="1508237827118" expanded="true" signature="3275:3278" ph="{...}" />
-                <marker date="1508237827118" expanded="true" signature="3275:3280" ph="{...}" />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="AddProjectDialog.js" pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/src/main/js/gui/admin/AddProjectDialog.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="144">
-              <caret line="8" column="32" lean-forward="false" selection-start-line="8" selection-start-column="32" selection-end-line="8" selection-end-column="32" />
-              <folding>
-                <marker date="1508237545671" expanded="true" signature="4765:4771" ph=" " />
-                <marker date="1508237545671" expanded="true" signature="5084:5090" ph=" " />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="GeneVariant.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/js/map/data/GeneVariant.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="666">
-              <caret line="37" column="27" lean-forward="false" selection-start-line="37" selection-start-column="27" selection-end-line="37" selection-end-column="27" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="Chemical.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/js/map/data/Chemical.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="504">
-              <caret line="28" column="64" lean-forward="false" selection-start-line="28" selection-start-column="64" selection-end-line="28" selection-end-column="64" />
-              <folding>
-                <marker date="1508229549461" expanded="true" signature="1073:1101" ph="{...}" />
-                <marker date="1508229549461" expanded="true" signature="1073:1103" ph="{...}" />
-                <marker date="1508229549461" expanded="true" signature="1166:1210" ph="{...}" />
-                <marker date="1508229549461" expanded="true" signature="1269:1305" ph="{...}" />
-                <marker date="1508229549461" expanded="true" signature="1354:1384" ph="{...}" />
-                <marker date="1508229549461" expanded="true" signature="1443:1581" ph="{...}" />
-                <marker date="1508229549461" expanded="true" signature="1516:1579" ph="{...}" />
-                <marker date="1508229549461" expanded="true" signature="1630:1660" ph="{...}" />
-                <marker date="1508229549461" expanded="true" signature="1715:1747" ph="{...}" />
-                <marker date="1508229549461" expanded="true" signature="1794:1822" ph="{...}" />
-                <marker date="1508229549461" expanded="true" signature="1883:1921" ph="{...}" />
-                <marker date="1508229549461" expanded="true" signature="1971:2002" ph="{...}" />
-                <marker date="1508229549461" expanded="true" signature="2075:2125" ph="{...}" />
-                <marker date="1508229549461" expanded="true" signature="2181:2218" ph="{...}" />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="MapModel.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/js/map/data/MapModel.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="10854">
-              <caret line="603" column="27" lean-forward="false" selection-start-line="603" selection-start-column="27" selection-end-line="603" selection-end-column="27" />
-              <folding>
-                <marker date="1508233144455" expanded="true" signature="20010:21349" ph="{...}" />
-                <marker date="1508233144455" expanded="true" signature="20683:20714" ph="{...}" />
-                <marker date="1508233144455" expanded="true" signature="21301:21345" ph="{...}" />
-                <marker date="1508233144455" expanded="true" signature="21400:21961" ph="{...}" />
-                <marker date="1508233144455" expanded="true" signature="21497:21851" ph="{...}" />
-                <marker date="1508233144455" expanded="true" signature="21540:21642" ph="{&quot;columns&quot;: &quot;id,bounds,modelId&quot;...}" />
-                <marker date="1508233144455" expanded="true" signature="21672:21845" ph="{...}" />
-                <marker date="1508233144455" expanded="true" signature="21757:21839" ph="{...}" />
-                <marker date="1508233144455" expanded="true" signature="21885:21957" ph="{...}" />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="TouchMap.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/js/map/TouchMap.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="288">
-              <caret line="16" column="23" lean-forward="false" selection-start-line="16" selection-start-column="23" selection-end-line="16" selection-end-column="23" />
-              <folding>
-                <marker date="1508229549461" expanded="true" signature="201:438" ph="{...}" />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="AbstractCustomMap.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/js/map/AbstractCustomMap.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="487">
-              <caret line="1013" column="29" lean-forward="false" selection-start-line="1013" selection-start-column="29" selection-end-line="1013" selection-end-column="29" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="EditProjectDialog.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/js/gui/admin/EditProjectDialog.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="720">
-              <caret line="40" column="5" lean-forward="false" selection-start-line="40" selection-start-column="5" selection-end-line="40" selection-end-column="5" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="ServerConnector.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/js/ServerConnector.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="2163">
-              <caret line="1128" column="0" lean-forward="false" selection-start-line="1128" selection-start-column="0" selection-end-line="1128" selection-end-column="0" />
-              <folding>
-                <marker date="1508236737742" expanded="true" signature="1565:1881" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="22991:23037" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="23043:23605" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="23119:23599" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="23245:23567" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="23431:23496" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="23658:24354" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="23707:23729" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="23775:23852" ph="{&quot;creator&quot;: params.creator...}" />
-                <marker date="1508236737742" expanded="true" signature="23901:24350" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="23965:24092" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="24117:24336" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="24425:25307" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="24477:24532" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="24553:24604" ph="{&quot;overlayId&quot;: overlayId...}" />
-                <marker date="1508236737742" expanded="true" signature="24691:24819" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="24844:25303" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="24943:25280" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="25199:25274" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="25367:26151" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="25409:25530" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="25781:26147" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="25882:25948" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="25984:26047" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="26053:26124" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="26205:26543" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="26466:26541" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="26698:26767" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="26820:26895" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="26962:27323" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="27003:27034" ph="{&quot;overlayId&quot;: overlayId...}" />
-                <marker date="1508236737742" expanded="true" signature="27119:27241" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="27374:28261" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="27451:27477" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="27520:27556" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="27578:27676" ph="{&quot;id&quot;: params.ids...}" />
-                <marker date="1508236737742" expanded="true" signature="27745:28056" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="27864:27955" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="27961:28051" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="28081:28257" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="28184:28234" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="28310:29397" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="28420:28446" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="28662:28863" ph="{&quot;id&quot;: params.ids...}" />
-                <marker date="1508236737742" expanded="true" signature="28932:29195" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="29008:29097" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="29103:29191" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="29220:29393" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="29323:29370" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="29630:30237" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="29671:29786" ph="{&quot;elementId&quot;: params.elementId...}" />
-                <marker date="1508236737742" expanded="true" signature="29809:29843" ph="{&quot;columns&quot;: params.columns...}" />
-                <marker date="1508236737742" expanded="true" signature="29912:30033" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="30058:30233" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="30291:30538" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="30332:30387" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="30608:31177" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="30649:30683" ph="{&quot;modelId&quot;: params.modelId...}" />
-                <marker date="1508236737742" expanded="true" signature="30706:30775" ph="{&quot;coordinates&quot;: params.coordinates...}" />
-                <marker date="1508236737742" expanded="true" signature="30988:31173" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="31230:31861" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="31313:31376" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="31382:31419" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="31529:31646" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="31664:31857" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="31900:32060" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="32117:32689" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="32158:32192" ph="{&quot;modelId&quot;: params.modelId...}" />
-                <marker date="1508236737742" expanded="true" signature="32215:32286" ph="{&quot;query&quot;: params.query...}" />
-                <marker date="1508236737742" expanded="true" signature="32356:32475" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="32500:32685" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="32603:32662" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="32743:33233" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="32809:32839" ph="{&quot;query&quot;: params.query...}" />
-                <marker date="1508236737742" expanded="true" signature="32908:33032" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="33057:33229" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="33160:33206" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="33288:33780" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="33354:33384" ph="{&quot;query&quot;: params.query...}" />
-                <marker date="1508236737742" expanded="true" signature="33603:33776" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="33706:33753" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="33838:34336" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="33904:33934" ph="{&quot;query&quot;: params.query...}" />
-                <marker date="1508236737742" expanded="true" signature="34003:34131" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="34156:34332" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="34259:34309" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="34402:34684" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="34443:34481" ph="{&quot;overlayId&quot;: params.overlayId...}" />
-                <marker date="1508236737742" expanded="true" signature="34575:34680" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="34742:35301" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="34783:34852" ph="{&quot;projectId&quot;: params.projectId...}" />
-                <marker date="1508236737742" expanded="true" signature="34875:35130" ph="{&quot;token&quot;: params.token...}" />
-                <marker date="1508236737742" expanded="true" signature="35200:35297" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="35359:35921" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="35400:35469" ph="{&quot;projectId&quot;: params.projectId...}" />
-                <marker date="1508236737742" expanded="true" signature="35492:35747" ph="{&quot;token&quot;: params.token...}" />
-                <marker date="1508236737742" expanded="true" signature="35816:35917" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="35972:36111" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="36161:36300" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="36366:36663" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="36396:36418" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="36554:36659" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="36722:37278" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="36955:37079" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="37104:37274" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="37209:37251" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="37338:37895" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="37404:37502" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="37571:37696" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="37721:37891" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="37958:38518" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="38024:38122" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="38191:38319" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="38344:38514" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="38449:38491" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="38567:39367" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="38608:38773" ph="{&quot;elementId&quot;: params.elementId...}" />
-                <marker date="1508236737742" expanded="true" signature="38963:39039" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="39284:39363" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="39416:40021" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="39826:39939" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="39964:40017" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="40074:40454" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="40115:40153" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="40176:40369" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="40192:40365" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="40506:40809" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="40547:40585" ph="{&quot;overlayId&quot;: params.overlayId...}" />
-                <marker date="1508236737742" expanded="true" signature="40679:40805" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="40861:41164" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="40902:40940" ph="{&quot;commentId&quot;: params.commentId...}" />
-                <marker date="1508236737742" expanded="true" signature="41034:41160" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="41227:41503" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="41308:41437" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="41395:41430" ph="{&quot;projectId&quot;: projectId...}" />
-                <marker date="1508236737742" expanded="true" signature="41462:41499" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="41551:41687" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="41634:41683" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="41741:42276" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="41790:41812" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="41859:42016" ph="{&quot;start&quot;: params.start...}" />
-                <marker date="1508236737742" expanded="true" signature="42085:42210" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="42235:42272" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="42333:42543" ph="{...}" />
-                <marker date="1508236737742" expanded="true" signature="42481:42539" ph="{...}" />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="AddOverlayDialog.js" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/js/gui/AddOverlayDialog.js">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="504">
-              <caret line="28" column="32" lean-forward="false" selection-start-line="28" selection-start-column="32" selection-end-line="28" selection-end-column="32" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-    </leaf>
-  </component>
-  <component name="FindInProjectRecents">
-    <findStrings>
-      <find>init</find>
-      <find>initialized</find>
-      <find>openAdd</find>
-      <find>setCen</find>
-      <find>setCenter</find>
-      <find>openDa</find>
-      <find>dialog</find>
-      <find>TopMe</find>
-      <find>showOverviewButton</find>
-      <find>TopMen</find>
-      <find>getProject</find>
-      <find>touch</find>
-      <find>session d</find>
-      <find>session da</find>
-      <find>data</find>
-      <find>CommentsAdminPanel</find>
-      <find>createAd</find>
-      <find>return result\.destroy\(\)\;\n</find>
-      <find>createAdmin</find>
-      <find>destroy</find>
-      <find>destr</find>
-      <find>logger.in</find>
-      <find>resize</find>
-      <find>DataT</find>
-      <find>Table</find>
-      <find>DataTa</find>
-      <find>DataTable</find>
-      <find>isD</find>
-      <find>createA</find>
-      <find>scriptDiv</find>
-    </findStrings>
-    <dirStrings>
-      <dir>C:\Users\piotr.gawron\workspace\MapViewer-parent\frontend-js\src\main\js\gui\leftPanel</dir>
-      <dir>C:\Users\piotr.gawron\workspace\MapViewer-parent\frontend-js\src</dir>
-    </dirStrings>
-  </component>
-  <component name="Git.Settings">
-    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />
-  </component>
-  <component name="IdeDocumentHistory">
-    <option name="CHANGED_PATHS">
-      <list>
-        <option value="$PROJECT_DIR$/src/test/js/gui/AddOverlayDialog-test.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/AddOverlayDialog.js" />
-        <option value="$PROJECT_DIR$/src/test/js/GuiConnector-mock.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/Header.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/LoginDialog.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/leftPanel/ChemicalPanel.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/leftPanel/DrugPanel.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/leftPanel/MiRnaPanel.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/leftPanel/SearchPanel.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/leftPanel/LeftPanel.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/leftPanel/ProjectInfoPanel.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/Panel.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/leftPanel/OverlayPanel.js" />
-        <option value="$PROJECT_DIR$/src/test/js/gui/leftPanel/OverlayPanel-test.js" />
-        <option value="$PROJECT_DIR$/src/test/js/gui/leftPanel/ProjectInfoPanel-test.js" />
-        <option value="$PROJECT_DIR$/src/test/js/gui/Panel-test.js" />
-        <option value="$PROJECT_DIR$/src/main/js/map/CustomMap.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/leftPanel/SubmapPanel.js" />
-        <option value="$PROJECT_DIR$/src/main/js/map/Submap.js" />
-        <option value="$PROJECT_DIR$/src/test/js/map/CustomMap-test.js" />
-        <option value="$PROJECT_DIR$/src/main/js/minerva.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/topMenu/TopMenu.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/admin/MapsAdminPanel.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/admin/CommentsAdminPanel.js" />
-        <option value="$PROJECT_DIR$/src/main/js/Admin.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/leftPanel/PublicationListDialog.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/export/ElementExportPanel.js" />
-        <option value="$PROJECT_DIR$/src/test/js/gui/leftPanel/PublicationListDialog-test.js" />
-        <option value="$PROJECT_DIR$/src/test/js/gui/leftPanel/LeftPanel-test.js" />
-        <option value="$PROJECT_DIR$/src/main/js/gui/admin/EditProjectDialog.js" />
-        <option value="$PROJECT_DIR$/src/test/js/gui/admin/EditProjectDialog-test.js" />
-        <option value="$PROJECT_DIR$/src/test/js/gui/admin/MapsAdminPanel-test.js" />
-        <option value="$PROJECT_DIR$/src/test/js/mocha-config.js" />
-        <option value="$PROJECT_DIR$/src/test/js/minerva-test.js" />
-        <option value="$PROJECT_DIR$/src/main/css/global.css" />
-      </list>
-    </option>
-  </component>
-  <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
-  <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER">
-    <package-json value="$PROJECT_DIR$/package.json" />
-  </component>
-  <component name="JsGulpfileManager">
-    <detection-done>true</detection-done>
-    <sorting>DEFINITION_ORDER</sorting>
-  </component>
-  <component name="NamedScopeManager">
-    <scope name="Project" pattern="file[frontend-js]:src//*" />
-  </component>
-  <component name="NodeModulesDirectoryManager">
-    <handled-path value="$PROJECT_DIR$/node_modules" />
-  </component>
-  <component name="ProjectFrameBounds" extendedState="6">
-    <option name="x" value="260" />
-    <option name="y" value="80" />
-    <option name="width" value="1400" />
-    <option name="height" value="1000" />
-  </component>
-  <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
-  <component name="ProjectView">
-    <navigator currentView="ProjectPane" proportions="" version="1">
-      <flattenPackages />
-      <showMembers />
-      <showModules />
-      <showLibraryContents />
-      <hideEmptyPackages />
-      <abbreviatePackageNames />
-      <autoscrollToSource />
-      <autoscrollFromSource />
-      <sortByType />
-      <manualOrder />
-      <foldersAlwaysOnTop value="true" />
-    </navigator>
-    <panes>
-      <pane id="Scratches" />
-      <pane id="ProjectPane">
-        <subPane>
-          <expand>
-            <path>
-              <item name="frontend-js" type="b2602c69:ProjectViewProjectNode" />
-              <item name="frontend-js" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="frontend-js" type="b2602c69:ProjectViewProjectNode" />
-              <item name="frontend-js" type="462c0819:PsiDirectoryNode" />
-              <item name="src" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="frontend-js" type="b2602c69:ProjectViewProjectNode" />
-              <item name="frontend-js" type="462c0819:PsiDirectoryNode" />
-              <item name="src" type="462c0819:PsiDirectoryNode" />
-              <item name="main" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="frontend-js" type="b2602c69:ProjectViewProjectNode" />
-              <item name="frontend-js" type="462c0819:PsiDirectoryNode" />
-              <item name="src" type="462c0819:PsiDirectoryNode" />
-              <item name="main" type="462c0819:PsiDirectoryNode" />
-              <item name="js" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="frontend-js" type="b2602c69:ProjectViewProjectNode" />
-              <item name="frontend-js" type="462c0819:PsiDirectoryNode" />
-              <item name="src" type="462c0819:PsiDirectoryNode" />
-              <item name="main" type="462c0819:PsiDirectoryNode" />
-              <item name="js" type="462c0819:PsiDirectoryNode" />
-              <item name="gui" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="frontend-js" type="b2602c69:ProjectViewProjectNode" />
-              <item name="frontend-js" type="462c0819:PsiDirectoryNode" />
-              <item name="src" type="462c0819:PsiDirectoryNode" />
-              <item name="main" type="462c0819:PsiDirectoryNode" />
-              <item name="js" type="462c0819:PsiDirectoryNode" />
-              <item name="gui" type="462c0819:PsiDirectoryNode" />
-              <item name="admin" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="frontend-js" type="b2602c69:ProjectViewProjectNode" />
-              <item name="frontend-js" type="462c0819:PsiDirectoryNode" />
-              <item name="src" type="462c0819:PsiDirectoryNode" />
-              <item name="test" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="frontend-js" type="b2602c69:ProjectViewProjectNode" />
-              <item name="frontend-js" type="462c0819:PsiDirectoryNode" />
-              <item name="src" type="462c0819:PsiDirectoryNode" />
-              <item name="test" type="462c0819:PsiDirectoryNode" />
-              <item name="js" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="frontend-js" type="b2602c69:ProjectViewProjectNode" />
-              <item name="frontend-js" type="462c0819:PsiDirectoryNode" />
-              <item name="src" type="462c0819:PsiDirectoryNode" />
-              <item name="test" type="462c0819:PsiDirectoryNode" />
-              <item name="js" type="462c0819:PsiDirectoryNode" />
-              <item name="gui" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="frontend-js" type="b2602c69:ProjectViewProjectNode" />
-              <item name="frontend-js" type="462c0819:PsiDirectoryNode" />
-              <item name="src" type="462c0819:PsiDirectoryNode" />
-              <item name="test" type="462c0819:PsiDirectoryNode" />
-              <item name="js" type="462c0819:PsiDirectoryNode" />
-              <item name="gui" type="462c0819:PsiDirectoryNode" />
-              <item name="admin" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="frontend-js" type="b2602c69:ProjectViewProjectNode" />
-              <item name="frontend-js" type="462c0819:PsiDirectoryNode" />
-              <item name="src" type="462c0819:PsiDirectoryNode" />
-              <item name="test" type="462c0819:PsiDirectoryNode" />
-              <item name="js" type="462c0819:PsiDirectoryNode" />
-              <item name="gui" type="462c0819:PsiDirectoryNode" />
-              <item name="leftPanel" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="frontend-js" type="b2602c69:ProjectViewProjectNode" />
-              <item name="frontend-js" type="462c0819:PsiDirectoryNode" />
-              <item name="src" type="462c0819:PsiDirectoryNode" />
-              <item name="test" type="462c0819:PsiDirectoryNode" />
-              <item name="js" type="462c0819:PsiDirectoryNode" />
-              <item name="map" type="462c0819:PsiDirectoryNode" />
-            </path>
-          </expand>
-          <select />
-        </subPane>
-      </pane>
-      <pane id="Scope" />
-      <pane id="PackagesPane" />
-      <pane id="AndroidView" />
-    </panes>
-  </component>
-  <component name="PropertiesComponent">
-    <property name="WebServerToolWindowFactoryState" value="false" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
-    <property name="nodejs_interpreter_path" value="C:/Program Files/nodejs/node" />
-    <property name="HbShouldOpenHtmlAsHb" value="" />
-    <property name="nodejs.mocha.mocha_node_package_dir" value="$PROJECT_DIR$/node_modules/mocha" />
-    <property name="settings.editor.selected.configurable" value="preferences.sourceCode.JavaScript" />
-    <property name="run.code.analysis.last.selected.profile" value="pProject Default" />
-  </component>
-  <component name="RunDashboard">
-    <option name="ruleStates">
-      <list>
-        <RuleState>
-          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
-        </RuleState>
-        <RuleState>
-          <option name="name" value="StatusDashboardGroupingRule" />
-        </RuleState>
-      </list>
-    </option>
-  </component>
-  <component name="RunManager" selected="npm.test">
-    <configuration name="MapsAdminPanel" type="mocha-javascript-test-runner" factoryName="Mocha" temporary="true" nameIsGenerated="true">
-      <node-interpreter>project</node-interpreter>
-      <node-options />
-      <working-directory>$PROJECT_DIR$</working-directory>
-      <pass-parent-env>true</pass-parent-env>
-      <envs />
-      <ui>bdd</ui>
-      <extra-mocha-options />
-      <test-kind>SUITE</test-kind>
-      <test-file>$PROJECT_DIR$/src/test/js/gui/admin/MapsAdminPanel-test.js</test-file>
-      <test-names>
-        <name value="MapsAdminPanel" />
-      </test-names>
-    </configuration>
-    <configuration name="MapsAdminPanel.onAddClicked" type="mocha-javascript-test-runner" factoryName="Mocha" temporary="true" nameIsGenerated="true">
-      <node-interpreter>project</node-interpreter>
-      <node-options />
-      <working-directory>$PROJECT_DIR$</working-directory>
-      <pass-parent-env>true</pass-parent-env>
-      <envs />
-      <ui>bdd</ui>
-      <extra-mocha-options />
-      <test-kind>SUITE</test-kind>
-      <test-file>$PROJECT_DIR$/src/test/js/gui/admin/MapsAdminPanel-test.js</test-file>
-      <test-names>
-        <name value="MapsAdminPanel" />
-        <name value="onAddClicked" />
-      </test-names>
-    </configuration>
-    <configuration name="OverlayPanel.js" type="NodeJSConfigurationType" factoryName="Node.js" temporary="true" path-to-node="project" path-to-js-file="OverlayPanel.js" working-dir="$PROJECT_DIR$/src/main/js/gui/leftPanel" />
-    <configuration default="true" type="mocha-javascript-test-runner" factoryName="Mocha">
-      <node-interpreter>project</node-interpreter>
-      <node-options />
-      <working-directory>$PROJECT_DIR$</working-directory>
-      <pass-parent-env>true</pass-parent-env>
-      <envs />
-      <ui />
-      <extra-mocha-options />
-      <test-kind>DIRECTORY</test-kind>
-      <test-directory>$PROJECT_DIR$/src/test/js</test-directory>
-      <recursive>true</recursive>
-    </configuration>
-    <configuration default="true" type="js.build_tools.npm" factoryName="npm">
-      <package-json value="$PROJECT_DIR$/package.json" />
-      <command value="run" />
-      <scripts>
-        <script value="test" />
-      </scripts>
-      <node-interpreter value="project" />
-      <envs />
-    </configuration>
-    <configuration name="minerva global" type="mocha-javascript-test-runner" factoryName="Mocha" temporary="true" nameIsGenerated="true">
-      <node-interpreter>project</node-interpreter>
-      <node-options />
-      <working-directory>$PROJECT_DIR$</working-directory>
-      <pass-parent-env>true</pass-parent-env>
-      <envs />
-      <ui>bdd</ui>
-      <extra-mocha-options />
-      <test-kind>SUITE</test-kind>
-      <test-file>$PROJECT_DIR$/src/test/js/minerva-test.js</test-file>
-      <test-names>
-        <name value="minerva global" />
-      </test-names>
-    </configuration>
-    <configuration name="test" type="js.build_tools.npm" factoryName="npm">
-      <package-json value="$PROJECT_DIR$/package.json" />
-      <command value="run" />
-      <scripts>
-        <script value="test" />
-      </scripts>
-      <node-interpreter value="project" />
-      <envs />
-    </configuration>
-    <list size="5">
-      <item index="0" class="java.lang.String" itemvalue="npm.test" />
-      <item index="1" class="java.lang.String" itemvalue="Mocha.MapsAdminPanel.onAddClicked" />
-      <item index="2" class="java.lang.String" itemvalue="Node.js.OverlayPanel.js" />
-      <item index="3" class="java.lang.String" itemvalue="Mocha.MapsAdminPanel" />
-      <item index="4" class="java.lang.String" itemvalue="Mocha.minerva global" />
-    </list>
-    <recent_temporary>
-      <list size="4">
-        <item index="0" class="java.lang.String" itemvalue="Mocha.minerva global" />
-        <item index="1" class="java.lang.String" itemvalue="Mocha.MapsAdminPanel" />
-        <item index="2" class="java.lang.String" itemvalue="Mocha.MapsAdminPanel.onAddClicked" />
-        <item index="3" class="java.lang.String" itemvalue="Node.js.OverlayPanel.js" />
-      </list>
-    </recent_temporary>
-  </component>
-  <component name="ShelveChangesManager" show_recycled="false">
-    <option name="remove_strategy" value="false" />
-  </component>
-  <component name="SvnConfiguration">
-    <configuration />
-  </component>
-  <component name="TaskManager">
-    <task active="true" id="Default" summary="Default task">
-      <changelist id="c119f0dd-fdda-4d02-a51e-86bc6ef7e50c" name="Default" comment="" />
-      <created>1503501471011</created>
-      <option name="number" value="Default" />
-      <option name="presentableId" value="Default" />
-      <updated>1503501471011</updated>
-      <workItem from="1503501472332" duration="132000" />
-      <workItem from="1503501772627" duration="21000" />
-      <workItem from="1503502231792" duration="5017000" />
-      <workItem from="1503560609163" duration="12204000" />
-    </task>
-    <servers />
-  </component>
-  <component name="TestHistory">
-    <history-entry file="MapsAdminPanel - 2017.08.24 at 15h 17m 08s.xml">
-      <configuration name="MapsAdminPanel" configurationId="mocha-javascript-test-runner" />
-    </history-entry>
-    <history-entry file="MapsAdminPanel - 2017.08.24 at 15h 17m 42s.xml">
-      <configuration name="MapsAdminPanel" configurationId="mocha-javascript-test-runner" />
-    </history-entry>
-    <history-entry file="MapsAdminPanel - 2017.08.24 at 15h 18m 07s.xml">
-      <configuration name="MapsAdminPanel" configurationId="mocha-javascript-test-runner" />
-    </history-entry>
-    <history-entry file="MapsAdminPanel - 2017.08.24 at 15h 22m 20s.xml">
-      <configuration name="MapsAdminPanel" configurationId="mocha-javascript-test-runner" />
-    </history-entry>
-    <history-entry file="MapsAdminPanel - 2017.08.24 at 15h 22m 47s.xml">
-      <configuration name="MapsAdminPanel" configurationId="mocha-javascript-test-runner" />
-    </history-entry>
-    <history-entry file="MapsAdminPanel_onAddClicked - 2017.08.24 at 14h 34m 51s.xml">
-      <configuration name="MapsAdminPanel.onAddClicked" configurationId="mocha-javascript-test-runner" />
-    </history-entry>
-    <history-entry file="MapsAdminPanel_onAddClicked - 2017.08.24 at 14h 41m 09s.xml">
-      <configuration name="MapsAdminPanel.onAddClicked" configurationId="mocha-javascript-test-runner" />
-    </history-entry>
-    <history-entry file="minerva_global - 2017.08.24 at 15h 22m 56s.xml">
-      <configuration name="minerva global" configurationId="mocha-javascript-test-runner" />
-    </history-entry>
-  </component>
-  <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="17376000" />
-  </component>
-  <component name="ToolWindowManager">
-    <frame x="1989" y="110" width="1857" height="1212" extended-state="6" />
-    <layout>
-      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
-      <window_info id="DB Browser" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="DB Execution Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
-      <window_info id="npm" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
-      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32786885" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="FAQ Robot" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25175202" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
-      <window_info id="Project Explorer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Job Explorer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="MaxCompute Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
-      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
-      <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Debug Logs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.5679475" sideWeight="0.33802083" order="7" side_tool="true" content_ui="tabs" />
-      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Execute Anonymous" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
-      <window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="MaxCompute Job" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="MaxCompute Job Explorer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Inspection Results" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32969034" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="MaxCompute Project Explorer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Salesforce" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
-      <window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
-      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
-      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33833176" sideWeight="0.49791667" order="10" side_tool="false" content_ui="tabs" x="-170" y="502" width="1920" height="493" />
-      <window_info id="npm" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
-      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.18020834" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
-      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32969034" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-    </layout>
-    <layout-to-restore>
-      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
-      <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Debug Logs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="true" content_ui="tabs" />
-      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
-      <window_info id="Execute Anonymous" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
-      <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
-      <window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
-      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
-      <window_info id="Salesforce" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
-      <window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
-      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
-      <window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
-      <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
-      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
-      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
-      <window_info id="npm" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="true" content_ui="tabs" />
-      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32786885" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" />
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.24959569" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
-      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32969034" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
-      <window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
-    </layout-to-restore>
-  </component>
-  <component name="TypeScriptGeneratedFilesManager">
-    <option name="version" value="1" />
-  </component>
-  <component name="VcsContentAnnotationSettings">
-    <option name="myLimit" value="2678400000" />
-  </component>
-  <component name="XDebuggerManager">
-    <breakpoint-manager />
-    <watches-manager />
-  </component>
-  <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/AddOverlayDialog.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="504">
-          <caret line="28" column="32" lean-forward="false" selection-start-line="28" selection-start-column="32" selection-end-line="28" selection-end-column="32" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/js/mocha-config.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="414">
-          <caret line="23" column="22" lean-forward="false" selection-start-line="23" selection-start-column="22" selection-end-line="23" selection-end-column="22" />
-          <folding>
-            <marker date="1508237827118" expanded="true" signature="3275:3278" ph="{...}" />
-            <marker date="1508237827118" expanded="true" signature="3275:3280" ph="{...}" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/admin/AddProjectDialog.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="144">
-          <caret line="8" column="32" lean-forward="false" selection-start-line="8" selection-start-column="32" selection-end-line="8" selection-end-column="32" />
-          <folding>
-            <marker date="1508237545671" expanded="true" signature="4765:4771" ph=" " />
-            <marker date="1508237545671" expanded="true" signature="5084:5090" ph=" " />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/LeftPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="5576">
-          <caret line="328" column="27" lean-forward="false" selection-start-line="328" selection-start-column="27" selection-end-line="328" selection-end-column="27" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/AbstractDbPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/ChemicalPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1224">
-          <caret line="72" column="0" lean-forward="false" selection-start-line="69" selection-start-column="0" selection-end-line="72" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/DrugPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1071">
-          <caret line="63" column="0" lean-forward="false" selection-start-line="60" selection-start-column="0" selection-end-line="63" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/MiRnaPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1071">
-          <caret line="63" column="0" lean-forward="false" selection-start-line="60" selection-start-column="0" selection-end-line="63" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/OverlayPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="6409">
-          <caret line="377" column="0" lean-forward="false" selection-start-line="374" selection-start-column="0" selection-end-line="377" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/SearchPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="2669">
-          <caret line="157" column="0" lean-forward="false" selection-start-line="154" selection-start-column="0" selection-end-line="157" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/SubmapPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="2397">
-          <caret line="141" column="11" lean-forward="false" selection-start-line="141" selection-start-column="11" selection-end-line="141" selection-end-column="11" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/ProjectInfoPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="6086">
-          <caret line="358" column="37" lean-forward="false" selection-start-line="358" selection-start-column="27" selection-end-line="358" selection-end-column="37" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/js/gui/leftPanel/LeftPanel-test.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1394">
-          <caret line="82" column="76" lean-forward="false" selection-start-line="82" selection-start-column="75" selection-end-line="82" selection-end-column="76" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/js/gui/AddOverlayDialog-test.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="249">
-          <caret line="45" column="2" lean-forward="false" selection-start-line="45" selection-start-column="2" selection-end-line="45" selection-end-column="2" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/AddOverlayDialog.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="504">
-          <caret line="28" column="32" lean-forward="false" selection-start-line="28" selection-start-column="32" selection-end-line="28" selection-end-column="32" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/js/GuiConnector-mock.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="412">
-          <caret line="26" column="38" lean-forward="false" selection-start-line="26" selection-start-column="38" selection-end-line="26" selection-end-column="38" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/ObjectWithListeners.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="208">
-          <caret line="93" column="3" lean-forward="false" selection-start-line="93" selection-start-column="3" selection-end-line="93" selection-end-column="3" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/Header.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="412">
-          <caret line="115" column="5" lean-forward="false" selection-start-line="115" selection-start-column="5" selection-end-line="115" selection-end-column="5" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/LoginDialog.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="303">
-          <caret line="118" column="40" lean-forward="false" selection-start-line="118" selection-start-column="33" selection-end-line="118" selection-end-column="40" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/AbstractDbPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/ChemicalPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1224">
-          <caret line="72" column="0" lean-forward="false" selection-start-line="69" selection-start-column="0" selection-end-line="72" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/DrugPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1071">
-          <caret line="63" column="0" lean-forward="false" selection-start-line="60" selection-start-column="0" selection-end-line="63" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/MiRnaPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1071">
-          <caret line="63" column="0" lean-forward="false" selection-start-line="60" selection-start-column="0" selection-end-line="63" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/SearchPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="2669">
-          <caret line="157" column="0" lean-forward="false" selection-start-line="154" selection-start-column="0" selection-end-line="157" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/Panel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="710">
-          <caret line="289" column="39" lean-forward="false" selection-start-line="289" selection-start-column="39" selection-end-line="289" selection-end-column="39" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/OverlayPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="438">
-          <caret line="360" column="35" lean-forward="false" selection-start-line="360" selection-start-column="35" selection-end-line="360" selection-end-column="35" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/js/gui/leftPanel/OverlayPanel-test.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="434">
-          <caret line="102" column="19" lean-forward="false" selection-start-line="102" selection-start-column="19" selection-end-line="102" selection-end-column="19" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/js/gui/leftPanel/ProjectInfoPanel-test.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="519">
-          <caret line="82" column="8" lean-forward="false" selection-start-line="82" selection-start-column="8" selection-end-line="82" selection-end-column="8" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/SubmapPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="485">
-          <caret line="142" column="0" lean-forward="false" selection-start-line="142" selection-start-column="0" selection-end-line="142" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/CommentDialog.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/js/gui/Panel-test.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="527">
-          <caret line="31" column="8" lean-forward="false" selection-start-line="31" selection-start-column="8" selection-end-line="31" selection-end-column="8" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/map/Submap.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="474">
-          <caret line="137" column="20" lean-forward="false" selection-start-line="137" selection-start-column="20" selection-end-line="137" selection-end-column="20" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/map/CustomMap.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="243">
-          <caret line="1041" column="24" lean-forward="false" selection-start-line="1041" selection-start-column="24" selection-end-line="1041" selection-end-column="24" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/js/map/CustomMap-test.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="609">
-          <caret line="194" column="41" lean-forward="false" selection-start-line="194" selection-start-column="41" selection-end-line="194" selection-end-column="41" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/topMenu/TopMenu.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="553">
-          <caret line="226" column="20" lean-forward="false" selection-start-line="226" selection-start-column="20" selection-end-line="226" selection-end-column="20" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/ProjectInfoPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/admin/CommentsAdminPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="77">
-          <caret line="203" column="18" lean-forward="false" selection-start-line="203" selection-start-column="0" selection-end-line="203" selection-end-column="18" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/LeftPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="252">
-          <caret line="165" column="97" lean-forward="false" selection-start-line="165" selection-start-column="97" selection-end-line="165" selection-end-column="97" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/Admin.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-7">
-          <caret line="178" column="17" lean-forward="false" selection-start-line="178" selection-start-column="17" selection-end-line="178" selection-end-column="17" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/admin/MapsAdminPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-24">
-          <caret line="127" column="33" lean-forward="false" selection-start-line="127" selection-start-column="27" selection-end-line="127" selection-end-column="33" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/js/gui/leftPanel/LeftPanel-test.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="580">
-          <caret line="59" column="0" lean-forward="false" selection-start-line="59" selection-start-column="0" selection-end-line="59" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/export/ElementExportPanel.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-7">
-          <caret line="41" column="0" lean-forward="false" selection-start-line="41" selection-start-column="0" selection-end-line="41" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/leftPanel/PublicationListDialog.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="216">
-          <caret line="129" column="0" lean-forward="false" selection-start-line="128" selection-start-column="0" selection-end-line="129" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/js/gui/leftPanel/PublicationListDialog-test.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-7">
-          <caret line="49" column="0" lean-forward="false" selection-start-line="49" selection-start-column="0" selection-end-line="49" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/gui/admin/EditProjectDialog.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="720">
-          <caret line="40" column="5" lean-forward="false" selection-start-line="40" selection-start-column="5" selection-end-line="40" selection-end-column="5" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/js/gui/admin/EditProjectDialog-test.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-7">
-          <caret line="111" column="0" lean-forward="false" selection-start-line="111" selection-start-column="0" selection-end-line="111" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/js/mocha-config.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="432">
-          <caret line="42" column="18" lean-forward="false" selection-start-line="42" selection-start-column="18" selection-end-line="42" selection-end-column="18" />
-          <folding>
-            <marker date="1508237827118" expanded="true" signature="3275:3278" ph="{...}" />
-            <marker date="1508237827118" expanded="true" signature="3275:3280" ph="{...}" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/js/gui/admin/MapsAdminPanel-test.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="51">
-          <caret line="3" column="0" lean-forward="false" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/js/minerva.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="204">
-          <caret line="66" column="23" lean-forward="false" selection-start-line="66" selection-start-column="23" selection-end-line="66" selection-end-column="23" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/js/minerva-test.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="136">
-          <caret line="18" column="46" lean-forward="true" selection-start-line="18" selection-start-column="46" selection-end-line="18" selection-end-column="46" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/css/global.css">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="460">
-          <caret line="352" column="17" lean-forward="true" selection-start-line="352" selection-start-column="17" selection-end-line="352" selection-end-column="17" />
-        </state>
-      </provider>
-    </entry>
-  </component>
-  <component name="masterDetails">
-    <states>
-      <state key="ScopeChooserConfigurable.UI">
-        <settings>
-          <last-edited>Project</last-edited>
-          <splitter-proportions>
-            <option name="proportions">
-              <list>
-                <option value="0.2" />
-              </list>
-            </option>
-          </splitter-proportions>
-          <order>
-            <scope name="Project" />
-          </order>
-        </settings>
-      </state>
-    </states>
-  </component>
-</project>
\ No newline at end of file
diff --git a/frontend-js/src/main/css/global.css b/frontend-js/src/main/css/global.css
index 9cbfaf7078..7ba03d1b17 100644
--- a/frontend-js/src/main/css/global.css
+++ b/frontend-js/src/main/css/global.css
@@ -207,7 +207,7 @@
 	background-color: #333333;
 	color: #ffffff;
 	display: block;
-	flaot: left;
+	float: left;
 	line-height: 35px;
 	height: 35px;
 	z-index: 10000
diff --git a/frontend-js/src/main/js/GuiConnector.js b/frontend-js/src/main/js/GuiConnector.js
index e5dea644c4..f88e1fac21 100644
--- a/frontend-js/src/main/js/GuiConnector.js
+++ b/frontend-js/src/main/js/GuiConnector.js
@@ -11,27 +11,22 @@ var NetworkError = require('./NetworkError');
  * This static global object contains set of functions that returns/set data in
  * the Gui (html).
  */
-var GuiConnector = {};
-
-/**
- * X coordinate of the mouse in a browser.
- */
-GuiConnector.xPos = 0;
-
-/**
- * Y coordinate of the mouse in a browser.
- */
-GuiConnector.yPos = 0;
+function GuiConnector() {
+  // X coordinate of the mouse in a browser.
+  this.xPos = 0;
+  // coordinate of the mouse in a browser.
+  this.yPos = 0;
+}
 
 /**
  * List of GET params passed via url.
  */
 
-GuiConnector.init = function() {
+GuiConnector.prototype.init = function () {
   var self = this;
 
   if (!String.prototype.endsWith) {
-    String.prototype.endsWith = function(pattern) {
+    String.prototype.endsWith = function (pattern) {
       var d = this.length - pattern.length;
       return d >= 0 && this.lastIndexOf(pattern) === d;
     };
@@ -42,7 +37,7 @@ GuiConnector.init = function() {
     alert("This webpage works well with Chrome, Firefox and Safari.");
   }
   // bootstrap tab initialization
-  $("ul.nav-tabs a").click(function(e) {
+  $("ul.nav-tabs a").click(function (e) {
     e.preventDefault();
     $(this).tab('show');
   });
@@ -50,18 +45,18 @@ GuiConnector.init = function() {
   self.getParams = [];
 
   // find GuiConnector.getParams
-  window.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function() {
+  window.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () {
     function decode(s) {
       return decodeURIComponent(s.split("+").join(" "));
     }
 
-    GuiConnector.getParams[decode(arguments[1])] = decode(arguments[2]);
+    self.getParams[decode(arguments[1])] = decode(arguments[2]);
   });
 
   // forser browser to update mouse coordinates whenever mouse move
-  jQuery(document).ready(function() {
-    $(document).mousemove(function(e) {
-      GuiConnector.updateMouseCoordinates(e.pageX, e.pageY);
+  jQuery(document).ready(function () {
+    $(document).mousemove(function (e) {
+      this.updateMouseCoordinates(e.pageX, e.pageY);
     });
   });
 
@@ -72,7 +67,7 @@ GuiConnector.init = function() {
       self.addWindowResizeEvent(window.onresize);
     }
 
-    window.onresize = function() {
+    window.onresize = function () {
       for (var i = 0; i < self._windowResizeEvents.length; i++) {
         self._windowResizeEvents[i]();
       }
@@ -80,18 +75,18 @@ GuiConnector.init = function() {
   }
 };
 
-GuiConnector.addWindowResizeEvent = function(handler) {
+GuiConnector.prototype.addWindowResizeEvent = function (handler) {
   this._windowResizeEvents.push(handler);
 };
 
 /**
  * Returns name of the file with LCSB logo.
- * 
+ *
  * @param bigLogo
  *          {@link Boolean} value determining if we want to have big logo or
  *          small one
  */
-GuiConnector.getLcsbLogoImg = function(bigLogo) {
+GuiConnector.prototype.getLcsbLogoImg = function (bigLogo) {
   if (bigLogo) {
     return 'lcsb_logo_mid.png';
   } else {
@@ -101,48 +96,48 @@ GuiConnector.getLcsbLogoImg = function(bigLogo) {
 
 /**
  * Returns name of the file with image that should be presented when we are
- * wainting for data to be loaded.
+ * waiting for data to be loaded.
  */
-GuiConnector.getLoadingImg = function() {
+GuiConnector.prototype.getLoadingImg = function () {
   return "icons/ajax-loader.gif";
 };
 
 /**
  * Returns home directory for images in the application.
  */
-GuiConnector.getImgPrefix = function() {
+GuiConnector.prototype.getImgPrefix = function () {
   return "resources/images/";
 };
 
 /**
  * Updates coordinates of the mouse in the browser.
  */
-GuiConnector.updateMouseCoordinates = function(x, y) {
+GuiConnector.prototype.updateMouseCoordinates = function (x, y) {
   this.xPos = x;
   this.yPos = y;
 };
 
-GuiConnector.showProcessing = function(messageText) {
-  var self = GuiConnector;
+GuiConnector.prototype.showProcessing = function (messageText) {
+  var self = this;
   if (self._processingDialog === undefined) {
     self._processingDialog = document.createElement("div");
     self._processingDialogContent = document.createElement("div");
     self._processingDialog.appendChild(self._processingDialogContent);
     document.body.appendChild(self._processingDialog);
     $(self._processingDialog).dialog({
-      modal : true,
-      title : "PROCESSING",
-      width : "150px",
-      closeOnEscape : false,
-      dialogClass : 'minerva-no-close',
+      modal: true,
+      title: "PROCESSING",
+      width: "150px",
+      closeOnEscape: false,
+      dialogClass: 'minerva-no-close',
     });
   }
   if (messageText === undefined) {
     messageText = "PROCESSING";
   }
   var messageImg = Functions.createElement({
-    type : "img",
-    src : 'resources/images/icons/ajax-loader.gif',
+    type: "img",
+    src: 'resources/images/icons/ajax-loader.gif',
   });
   self._processingDialogContent.innerHTML = "";
   self._processingDialogContent.style.textAlign = "center";
@@ -153,13 +148,13 @@ GuiConnector.showProcessing = function(messageText) {
   $(self._processingDialog).dialog("open");
 };
 
-GuiConnector.hideProcessing = function() {
-  var self = GuiConnector;
+GuiConnector.prototype.hideProcessing = function () {
+  var self = this;
   $(self._processingDialog).dialog("close");
 };
 
-GuiConnector.alert = function(error) {
-  var self = GuiConnector;
+GuiConnector.prototype.alert = function (error) {
+  var self = this;
   logger.error(error);
   if (self._errorDialog === undefined) {
     self._errorDialog = document.createElement("div");
@@ -167,11 +162,11 @@ GuiConnector.alert = function(error) {
     self._errorDialog.appendChild(self._errorDialogContent);
     document.body.appendChild(self._errorDialog);
     $(self._errorDialog).dialog({
-      classes : {
-        "ui-dialog" : "ui-state-error"
+      classes: {
+        "ui-dialog": "ui-state-error"
       },
-      modal : true,
-      title : "ERROR"
+      modal: true,
+      title: "ERROR"
     }).siblings('.ui-dialog-titlebar').css("background", "red");
   }
   var message = error;
@@ -189,19 +184,19 @@ GuiConnector.alert = function(error) {
 
 };
 
-GuiConnector.info = function(message) {
-  var self = GuiConnector;
+GuiConnector.prototype.info = function (message) {
+  var self = this;
   if (self._infoDialog === undefined) {
     self._infoDialog = document.createElement("div");
     self._infoDialogContent = document.createElement("div");
     self._infoDialog.appendChild(self._infoDialogContent);
     document.body.appendChild(self._infoDialog);
     $(self._infoDialog).dialog({
-      classes : {
-        "ui-dialog" : "ui-state-info"
+      classes: {
+        "ui-dialog": "ui-state-info"
       },
-      modal : true,
-      title : "INFO"
+      modal: true,
+      title: "INFO"
     });
   }
   self._infoDialogContent.innerHTML = message;
@@ -209,4 +204,19 @@ GuiConnector.info = function(message) {
 
 };
 
-module.exports = GuiConnector;
+GuiConnector.prototype.destroy = function () {
+  var self = this;
+
+  if (self._infoDialog !== undefined) {
+    $(self._infoDialog).dialog("destroy").remove();
+  }
+  if (self._processingDialog !== undefined) {
+    $(self._processingDialog).dialog("destroy").remove();
+  }
+
+  if (self._errorDialog !== undefined) {
+    $(self._errorDialog).dialog("destroy").remove();
+  }
+};
+
+module.exports = new GuiConnector();
diff --git a/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js b/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js
index 4971bba90c..0867db4f5c 100644
--- a/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js
+++ b/frontend-js/src/main/js/gui/leftPanel/ProjectInfoPanel.js
@@ -11,21 +11,21 @@ var logger = require('../../logger');
 var Functions = require('../../Functions');
 
 function ProjectInfoPanel(params) {
-    params.panelName = "info";
-    params.scrollable = true;
-    Panel.call(this, params);
-    var self = this;
-    self._createInfoPanelGui();
-    self._createInfoPanelLogic();
-
-    self._createUserDataTab();
-    var logoutButton = self.getControlElement(PanelControlElementType.USER_TAB_LOGOUT_BUTTON);
-
-    logoutButton.onclick = function () {
-        return ServerConnector.logout().then(function () {
-            window.location.reload(false);
-        }).then(null, GuiConnector.alert);
-    };
+  params.panelName = "info";
+  params.scrollable = true;
+  Panel.call(this, params);
+  var self = this;
+  self._createInfoPanelGui();
+  self._createInfoPanelLogic();
+
+  self._createUserDataTab();
+  var logoutButton = self.getControlElement(PanelControlElementType.USER_TAB_LOGOUT_BUTTON);
+
+  logoutButton.onclick = function () {
+    return ServerConnector.logout().then(function () {
+      window.location.reload(false);
+    }).then(null, GuiConnector.alert);
+  };
 
 }
 
@@ -33,281 +33,281 @@ ProjectInfoPanel.prototype = Object.create(Panel.prototype);
 ProjectInfoPanel.prototype.constructor = ProjectInfoPanel;
 
 ProjectInfoPanel.prototype._createInfoPanelGui = function () {
-    var self = this;
-    var guiUtils = self.getGuiUtils();
-    var projectId = self.getMap().getProject().getProjectId();
-
-    var infoDiv = Functions.createElement({
-        type: "div",
-        name: "infoDiv",
-        className: "searchPanel"
-    });
-    this.getElement().appendChild(infoDiv);
-    this.setControlElement(PanelControlElementType.INFO_DIV, infoDiv);
+  var self = this;
+  var guiUtils = self.getGuiUtils();
+  var projectId = self.getMap().getProject().getProjectId();
 
-    var infoTitle = Functions.createElement({
-        type: "h4",
-        content: "PROJECT INFO:"
-    });
-    infoDiv.appendChild(infoTitle);
+  var infoDiv = Functions.createElement({
+    type: "div",
+    name: "infoDiv",
+    className: "searchPanel"
+  });
+  this.getElement().appendChild(infoDiv);
+  this.setControlElement(PanelControlElementType.INFO_DIV, infoDiv);
 
-    var dataTab = Functions.createElement({
-        type: "div",
-        style: "width:100%;display: table;border-spacing: 10px;"
-    });
-    infoDiv.appendChild(dataTab);
+  var infoTitle = Functions.createElement({
+    type: "h4",
+    content: "PROJECT INFO:"
+  });
+  infoDiv.appendChild(infoTitle);
 
-    var projectNameLabel = Functions.createElement({
-        type: "div",
-        content: "Name:"
-    });
-    var projectNameText = Functions.createElement({
-        type: "div",
-        style: "width:100%",
-        name: "projectNameText"
-    });
-    this.setControlElement(PanelControlElementType.INFO_PROJECT_NAME_TEXT, projectNameText);
-    dataTab.appendChild(guiUtils.createTableRow([projectNameLabel, projectNameText]));
+  var dataTab = Functions.createElement({
+    type: "div",
+    style: "width:100%;display: table;border-spacing: 10px;"
+  });
+  infoDiv.appendChild(dataTab);
 
-    var projectVersionLabel = Functions.createElement({
-        type: "div",
-        content: "Version:"
-    });
-    var projectVersionText = Functions.createElement({
-        type: "div",
-        style: "width:100%",
-        name: "projectVersionText"
-    });
-    this.setControlElement(PanelControlElementType.INFO_PROJECT_VERSION_TEXT, projectVersionText);
-    dataTab.appendChild(guiUtils.createTableRow([projectVersionLabel, projectVersionText]));
+  var projectNameLabel = Functions.createElement({
+    type: "div",
+    content: "Name:"
+  });
+  var projectNameText = Functions.createElement({
+    type: "div",
+    style: "width:100%",
+    name: "projectNameText"
+  });
+  this.setControlElement(PanelControlElementType.INFO_PROJECT_NAME_TEXT, projectNameText);
+  dataTab.appendChild(guiUtils.createTableRow([projectNameLabel, projectNameText]));
 
-    infoTitle = Functions.createElement({
-        type: "h4",
-        content: "Data:"
-    });
-    infoDiv.appendChild(infoTitle);
+  var projectVersionLabel = Functions.createElement({
+    type: "div",
+    content: "Version:"
+  });
+  var projectVersionText = Functions.createElement({
+    type: "div",
+    style: "width:100%",
+    name: "projectVersionText"
+  });
+  this.setControlElement(PanelControlElementType.INFO_PROJECT_VERSION_TEXT, projectVersionText);
+  dataTab.appendChild(guiUtils.createTableRow([projectVersionLabel, projectVersionText]));
 
-    var dialogDiv = Functions.createElement({
-        type: "div",
-    });
+  infoTitle = Functions.createElement({
+    type: "h4",
+    content: "Data:"
+  });
+  infoDiv.appendChild(infoTitle);
 
-    this.publicationListDialog = new PublicationListDialog({
-        customMap: self.getMap(),
-        element: dialogDiv,
-    });
+  var dialogDiv = Functions.createElement({
+    type: "div",
+  });
 
-    dataTab = Functions.createElement({
-        type: "ul",
-    });
-    infoDiv.appendChild(dataTab);
+  this.publicationListDialog = new PublicationListDialog({
+    customMap: self.getMap(),
+    element: dialogDiv,
+  });
 
-    var projectPublicationsText = Functions.createElement({
-        type: "span",
-        name: "projectPublicationsText",
-        style: "font-family:FontAwesome; font-weight: normal;font-style: normal;cursor: pointer",
-    });
-    this.setControlElement(PanelControlElementType.INFO_PROJECT_PUBLICATIONS_TEXT, projectPublicationsText);
+  dataTab = Functions.createElement({
+    type: "ul",
+  });
+  infoDiv.appendChild(dataTab);
 
-    var projectPublicationsButton = Functions.createElement({
-        type: "a",
-        name: "projectPublicationsButton",
-    });
-    projectPublicationsButton.appendChild(Functions.createElement({
-        type: "span",
-        content: "<i class='fa fa-list'>&nbsp;",
-    }));
-
-    projectPublicationsButton.appendChild(projectPublicationsText);
-    projectPublicationsButton.appendChild(Functions.createElement({
-        type: "span",
-        style: "font-family:FontAwesome; font-weight: normal;font-style: normal;cursor: pointer",
-        content: "&nbsp;publication(s)",
-    }));
-    this.setControlElement(PanelControlElementType.INFO_PROJECT_SHOW_PUBLICATIONS_BUTTON, projectPublicationsButton);
-
-    var liElement = Functions.createElement({
-        type: "li",
-        style: "line-height: 30px;",
-    });
-    liElement.appendChild(projectPublicationsButton);
-    dataTab.appendChild(liElement);
-
-    var projectOriginalFileButton = Functions.createElement({
-        type: "a",
-        name: "projectOriginalFileButton",
-        href: "#",
-        content: "<i class='fa fa-files-o'>&nbsp;source file",
-    });
-    this.setControlElement(PanelControlElementType.INFO_PROJECT_GET_ORIGINAL_FILE_BUTTON, projectOriginalFileButton);
-    liElement = Functions.createElement({
-        type: "li",
-        style: "line-height: 30px",
-    });
-    liElement.appendChild(projectOriginalFileButton);
-    dataTab.appendChild(liElement);
+  var projectPublicationsText = Functions.createElement({
+    type: "span",
+    name: "projectPublicationsText",
+    style: "font-family:FontAwesome; font-weight: normal;font-style: normal;cursor: pointer",
+  });
+  this.setControlElement(PanelControlElementType.INFO_PROJECT_PUBLICATIONS_TEXT, projectPublicationsText);
 
-    var exportButton = Functions.createElement({
-        type: "a",
-        href: ServerConnector.getServerBaseUrl() + "/export.xhtml?id=" + projectId,
-        content: '<i class="fa fa-mail-forward">&nbsp;EXPORT',
-    });
-    liElement = Functions.createElement({
-        type: "li",
-        style: "line-height: 30px",
-    });
-    liElement.appendChild(exportButton);
-    dataTab.appendChild(liElement);
+  var projectPublicationsButton = Functions.createElement({
+    type: "a",
+    name: "projectPublicationsButton",
+  });
+  projectPublicationsButton.appendChild(Functions.createElement({
+    type: "span",
+    content: "<i class='fa fa-list'>&nbsp;",
+  }));
+
+  projectPublicationsButton.appendChild(projectPublicationsText);
+  projectPublicationsButton.appendChild(Functions.createElement({
+    type: "span",
+    style: "font-family:FontAwesome; font-weight: normal;font-style: normal;cursor: pointer",
+    content: "&nbsp;publication(s)",
+  }));
+  this.setControlElement(PanelControlElementType.INFO_PROJECT_SHOW_PUBLICATIONS_BUTTON, projectPublicationsButton);
+
+  var liElement = Functions.createElement({
+    type: "li",
+    style: "line-height: 30px;",
+  });
+  liElement.appendChild(projectPublicationsButton);
+  dataTab.appendChild(liElement);
+
+  var projectOriginalFileButton = Functions.createElement({
+    type: "a",
+    name: "projectOriginalFileButton",
+    href: "#",
+    content: "<i class='fa fa-files-o'>&nbsp;source file",
+  });
+  this.setControlElement(PanelControlElementType.INFO_PROJECT_GET_ORIGINAL_FILE_BUTTON, projectOriginalFileButton);
+  liElement = Functions.createElement({
+    type: "li",
+    style: "line-height: 30px",
+  });
+  liElement.appendChild(projectOriginalFileButton);
+  dataTab.appendChild(liElement);
 
-    var manualButton = Functions.createElement({
-        type: "a",
-        name: "manualLink",
-        content: '<i class="fa fa-file">&nbsp;MANUAL',
-    });
-    manualButton.href = "#";
-    manualButton.onclick = function () {
-        return ServerConnector.getConfigurationParam(ConfigurationType.USER_MANUAL_FILE).then(function (manualFileUrl) {
-            var win = window.open(manualFileUrl, '_user_manual_');
-            win.focus();
-        });
-    };
-    liElement = Functions.createElement({
-        type: "li",
-        style: "line-height: 30px",
+  var exportButton = Functions.createElement({
+    type: "a",
+    href: ServerConnector.getServerBaseUrl() + "/export.xhtml?id=" + projectId,
+    content: '<i class="fa fa-mail-forward">&nbsp;EXPORT',
+  });
+  liElement = Functions.createElement({
+    type: "li",
+    style: "line-height: 30px",
+  });
+  liElement.appendChild(exportButton);
+  dataTab.appendChild(liElement);
+
+  var manualButton = Functions.createElement({
+    type: "a",
+    name: "manualLink",
+    content: '<i class="fa fa-file">&nbsp;MANUAL',
+  });
+  manualButton.href = "#";
+  manualButton.onclick = function () {
+    return ServerConnector.getConfigurationParam(ConfigurationType.USER_MANUAL_FILE).then(function (manualFileUrl) {
+      var win = window.open(manualFileUrl, '_user_manual_');
+      win.focus();
     });
-    liElement.appendChild(manualButton);
-    dataTab.appendChild(liElement);
+  };
+  liElement = Functions.createElement({
+    type: "li",
+    style: "line-height: 30px",
+  });
+  liElement.appendChild(manualButton);
+  dataTab.appendChild(liElement);
 
 };
 
 ProjectInfoPanel.prototype._createInfoPanelLogic = function () {
-    var self = this;
+  var self = this;
 
-    var downloadSourceButton = self.getControlElement(PanelControlElementType.INFO_PROJECT_GET_ORIGINAL_FILE_BUTTON);
-    var showPublicationsButton = self.getControlElement(PanelControlElementType.INFO_PROJECT_SHOW_PUBLICATIONS_BUTTON);
+  var downloadSourceButton = self.getControlElement(PanelControlElementType.INFO_PROJECT_GET_ORIGINAL_FILE_BUTTON);
+  var showPublicationsButton = self.getControlElement(PanelControlElementType.INFO_PROJECT_SHOW_PUBLICATIONS_BUTTON);
 
-    downloadSourceButton.onclick = function () {
-        return self.downloadSourceFile();
-    };
-    showPublicationsButton.onclick = function () {
-        return self.showPublicationListDialog();
-    };
+  downloadSourceButton.onclick = function () {
+    return self.downloadSourceFile();
+  };
+  showPublicationsButton.onclick = function () {
+    return self.showPublicationListDialog();
+  };
 };
 
 ProjectInfoPanel.prototype.downloadSourceFile = function () {
-    var self = this;
-    return ServerConnector.getProjectSourceDownloadUrl().then(function (url) {
-        return self.downloadFile(url);
-    }).then(null, GuiConnector.alert);
+  var self = this;
+  return ServerConnector.getProjectSourceDownloadUrl().then(function (url) {
+    return self.downloadFile(url);
+  }).then(null, GuiConnector.alert);
 };
 
 ProjectInfoPanel.prototype.showPublicationListDialog = function () {
-    return this.publicationListDialog.show();
+  return this.publicationListDialog.show();
 };
 
 ProjectInfoPanel.prototype.refresh = function () {
-    var self = this;
-
-    var projectNameText = self.getControlElement(PanelControlElementType.INFO_PROJECT_NAME_TEXT);
-    var projectVersionText = self.getControlElement(PanelControlElementType.INFO_PROJECT_VERSION_TEXT);
-    var projectPublicationsText = self.getControlElement(PanelControlElementType.INFO_PROJECT_PUBLICATIONS_TEXT);
-
-    return ServerConnector.getProject().then(function (project) {
-        projectNameText.innerHTML = project.getName();
-        projectVersionText.innerHTML = project.getVersion();
-        return ServerConnector.getProjectStatistics();
-    }).then(function (statistics) {
-        projectPublicationsText.innerHTML = statistics.getPublicationCount();
-        return ServerConnector.getLoggedUser();
-    }).then(function (user) {
-        self.showUserProfilePage(user);
-    });
+  var self = this;
+
+  var projectNameText = self.getControlElement(PanelControlElementType.INFO_PROJECT_NAME_TEXT);
+  var projectVersionText = self.getControlElement(PanelControlElementType.INFO_PROJECT_VERSION_TEXT);
+  var projectPublicationsText = self.getControlElement(PanelControlElementType.INFO_PROJECT_PUBLICATIONS_TEXT);
+
+  return ServerConnector.getProject().then(function (project) {
+    projectNameText.innerHTML = project.getName();
+    projectVersionText.innerHTML = project.getVersion();
+    return ServerConnector.getProjectStatistics();
+  }).then(function (statistics) {
+    projectPublicationsText.innerHTML = statistics.getPublicationCount();
+    return ServerConnector.getLoggedUser();
+  }).then(function (user) {
+    self.showUserProfilePage(user);
+  });
 };
 
 ProjectInfoPanel.prototype._createUserDataTab = function () {
-    var self = this;
-    var guiUtils = self.getGuiUtils();
-    var userDataDiv = Functions.createElement({
-        type: "div",
-        name: "userDataTab",
-        className: "searchPanel",
-        style: "display:none"
-    });
-    this.getElement().appendChild(userDataDiv);
-    this.setControlElement(PanelControlElementType.USER_TAB_USER_DIV, userDataDiv);
+  var self = this;
+  var guiUtils = self.getGuiUtils();
+  var userDataDiv = Functions.createElement({
+    type: "div",
+    name: "userDataTab",
+    className: "searchPanel",
+    style: "display:none"
+  });
+  this.getElement().appendChild(userDataDiv);
+  this.setControlElement(PanelControlElementType.USER_TAB_USER_DIV, userDataDiv);
 
-    var userDataTitle = Functions.createElement({
-        type: "h3",
-        content: '<img src="./resources/images/profile.png" border="0" align="left"/><br/>User data<br/>'
-    });
-    userDataDiv.appendChild(userDataTitle);
+  var userDataTitle = Functions.createElement({
+    type: "h3",
+    content: '<img src="./resources/images/profile.png" border="0" align="left"/><br/>User data<br/>'
+  });
+  userDataDiv.appendChild(userDataTitle);
 
-    var userDataFormTab = Functions.createElement({
-        type: "div",
-        style: "width:100%;display: table;border-spacing: 10px;"
-    });
-    userDataDiv.appendChild(userDataFormTab);
+  var userDataFormTab = Functions.createElement({
+    type: "div",
+    style: "width:100%;display: table;border-spacing: 10px;"
+  });
+  userDataDiv.appendChild(userDataFormTab);
 
-    var loginLabel = Functions.createElement({
-        type: "span",
-        content: "LOGIN:",
-        style: "color:#999999"
-    });
-    var loginText = Functions.createElement({
-        type: "span",
-        name: "loginValue"
-    });
-    this.setControlElement(PanelControlElementType.USER_TAB_LOGIN_TEXT, loginText);
-    userDataDiv.appendChild(guiUtils.createTableRow([loginLabel, loginText]));
+  var loginLabel = Functions.createElement({
+    type: "span",
+    content: "LOGIN:",
+    style: "color:#999999"
+  });
+  var loginText = Functions.createElement({
+    type: "span",
+    name: "loginValue"
+  });
+  this.setControlElement(PanelControlElementType.USER_TAB_LOGIN_TEXT, loginText);
+  userDataDiv.appendChild(guiUtils.createTableRow([loginLabel, loginText]));
 
-    var nameLabel = Functions.createElement({
-        type: "span",
-        content: "NAME:",
-        style: "color:#999999"
-    });
-    var nameText = Functions.createElement({
-        type: "span",
-        name: "nameValue"
-    });
-    this.setControlElement(PanelControlElementType.USER_TAB_NAME_TEXT, nameText);
-    userDataDiv.appendChild(guiUtils.createTableRow([nameLabel, nameText]));
+  var nameLabel = Functions.createElement({
+    type: "span",
+    content: "NAME:",
+    style: "color:#999999"
+  });
+  var nameText = Functions.createElement({
+    type: "span",
+    name: "nameValue"
+  });
+  this.setControlElement(PanelControlElementType.USER_TAB_NAME_TEXT, nameText);
+  userDataDiv.appendChild(guiUtils.createTableRow([nameLabel, nameText]));
 
-    var surnameLabel = Functions.createElement({
-        type: "span",
-        content: "SURNAME:",
-        style: "color:#999999"
-    });
-    var surnameText = Functions.createElement({
-        type: "span",
-        name: "surnameValue"
-    });
-    this.setControlElement(PanelControlElementType.USER_TAB_SURNAME_TEXT, surnameText);
-    userDataDiv.appendChild(guiUtils.createTableRow([surnameLabel, surnameText]));
+  var surnameLabel = Functions.createElement({
+    type: "span",
+    content: "SURNAME:",
+    style: "color:#999999"
+  });
+  var surnameText = Functions.createElement({
+    type: "span",
+    name: "surnameValue"
+  });
+  this.setControlElement(PanelControlElementType.USER_TAB_SURNAME_TEXT, surnameText);
+  userDataDiv.appendChild(guiUtils.createTableRow([surnameLabel, surnameText]));
 
-    var emailLabel = Functions.createElement({
-        type: "span",
-        content: "EMAIL:",
-        style: "color:#999999"
-    });
-    var emailText = Functions.createElement({
-        type: "span",
-        name: "emailValue"
-    });
-    self.setControlElement(PanelControlElementType.USER_TAB_EMAIL_TEXT, emailText);
-    userDataDiv.appendChild(guiUtils.createTableRow([emailLabel, emailText]));
+  var emailLabel = Functions.createElement({
+    type: "span",
+    content: "EMAIL:",
+    style: "color:#999999"
+  });
+  var emailText = Functions.createElement({
+    type: "span",
+    name: "emailValue"
+  });
+  self.setControlElement(PanelControlElementType.USER_TAB_EMAIL_TEXT, emailText);
+  userDataDiv.appendChild(guiUtils.createTableRow([emailLabel, emailText]));
 
-    var centerTag = Functions.createElement({
-        type: "center"
-    });
-    userDataDiv.appendChild(centerTag);
+  var centerTag = Functions.createElement({
+    type: "center"
+  });
+  userDataDiv.appendChild(centerTag);
 
-    var logoutButton = Functions.createElement({
-        type: "button",
-        name: "logoutButton",
-        content: "LOGOUT"
-    });
-    centerTag.appendChild(logoutButton);
-    self.setControlElement(PanelControlElementType.USER_TAB_LOGOUT_BUTTON, logoutButton);
-    self.setControlElement(PanelControlElementType.USER_TAB_USER_DIV, userDataDiv);
+  var logoutButton = Functions.createElement({
+    type: "button",
+    name: "logoutButton",
+    content: "LOGOUT"
+  });
+  centerTag.appendChild(logoutButton);
+  self.setControlElement(PanelControlElementType.USER_TAB_LOGOUT_BUTTON, logoutButton);
+  self.setControlElement(PanelControlElementType.USER_TAB_USER_DIV, userDataDiv);
 
   var loginTabDiv = Functions.createElement({
     type: "div",
@@ -322,34 +322,34 @@ ProjectInfoPanel.prototype._createUserDataTab = function () {
     return self.getParent().getLoginDialog().open();
   };
 
-    self.getElement().appendChild(loginTabDiv);
-    self.setControlElement(PanelControlElementType.USER_TAB_LOGIN_DIV, loginTabDiv);
+  self.getElement().appendChild(loginTabDiv);
+  self.setControlElement(PanelControlElementType.USER_TAB_LOGIN_DIV, loginTabDiv);
 
 };
 
 ProjectInfoPanel.prototype.showUserProfilePage = function (user) {
 
-    var self = this;
-    var userDataTabDiv = self.getControlElement(PanelControlElementType.USER_TAB_USER_DIV);
-    var userLoginTabDiv = self.getControlElement(PanelControlElementType.USER_TAB_LOGIN_DIV);
-    if (user.getLogin() !== "anonymous") {
-        var loginText = self.getControlElement(PanelControlElementType.USER_TAB_LOGIN_TEXT);
-        var nameText = self.getControlElement(PanelControlElementType.USER_TAB_NAME_TEXT);
-        var surnameText = self.getControlElement(PanelControlElementType.USER_TAB_SURNAME_TEXT);
-        var emailText = self.getControlElement(PanelControlElementType.USER_TAB_EMAIL_TEXT);
-
-        userLoginTabDiv.style.display = "none";
-        userDataTabDiv.style.display = "block";
-
-        loginText.innerHTML = user.getLogin();
-        nameText.innerHTML = user.getName();
-        surnameText.innerHTML = user.getSurname();
-        emailText.innerHTML = user.getEmail();
-    } else {
-
-        userLoginTabDiv.style.display = "block";
-        userDataTabDiv.style.display = "none";
-    }
+  var self = this;
+  var userDataTabDiv = self.getControlElement(PanelControlElementType.USER_TAB_USER_DIV);
+  var userLoginTabDiv = self.getControlElement(PanelControlElementType.USER_TAB_LOGIN_DIV);
+  if (user.getLogin() !== "anonymous") {
+    var loginText = self.getControlElement(PanelControlElementType.USER_TAB_LOGIN_TEXT);
+    var nameText = self.getControlElement(PanelControlElementType.USER_TAB_NAME_TEXT);
+    var surnameText = self.getControlElement(PanelControlElementType.USER_TAB_SURNAME_TEXT);
+    var emailText = self.getControlElement(PanelControlElementType.USER_TAB_EMAIL_TEXT);
+
+    userLoginTabDiv.style.display = "none";
+    userDataTabDiv.style.display = "block";
+
+    loginText.innerHTML = user.getLogin();
+    nameText.innerHTML = user.getName();
+    surnameText.innerHTML = user.getSurname();
+    emailText.innerHTML = user.getEmail();
+  } else {
+
+    userLoginTabDiv.style.display = "block";
+    userDataTabDiv.style.display = "none";
+  }
 };
 
 ProjectInfoPanel.prototype.init = function () {
@@ -362,6 +362,6 @@ ProjectInfoPanel.prototype.init = function () {
 };
 
 ProjectInfoPanel.prototype.destroy = function () {
-    return this.publicationListDialog.destroy();
-}
+  return this.publicationListDialog.destroy();
+};
 module.exports = ProjectInfoPanel;
diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js
index 85dea4e3fd..f512561d04 100644
--- a/frontend-js/src/main/js/minerva.js
+++ b/frontend-js/src/main/js/minerva.js
@@ -29,631 +29,631 @@ var logger = require('./logger');
 var customMap, leftPanel, topMenu, legend, mapContextMenu, selectionContextMenu;
 
 function processUrlGetParams(params) {
-    var project = params.getProject();
-    var sessionData = ServerConnector.getSessionData(project);
-
-    var modelId = project.getModel().getId();
-    if (GuiConnector.getParams["submap"] !== undefined) {
-        modelId = parseInt(GuiConnector.getParams["submap"]);
-    }
-
-    var model = project.getModel().getSubmodelById(modelId);
-
-    if (GuiConnector.getParams["x"] !== undefined && GuiConnector.getParams["y"] !== undefined) {
-        var point = new google.maps.Point(GuiConnector.getParams["x"], GuiConnector.getParams["y"]);
-        sessionData.setCenter(model, point);
-    }
-    if (GuiConnector.getParams["zoom"] !== undefined) {
-        sessionData.setZoomLevel(model, GuiConnector.getParams["zoom"]);
-    }
-
-    if (GuiConnector.getParams["comments"] === "on") {
-        sessionData.setShowComments(true);
-    }
-    if (GuiConnector.getParams["search"] !== undefined) {
-        var query = SearchDbOverlay.prototype.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_QUERY,
-            GuiConnector.getParams["search"]);
-        sessionData.setSearchQuery(query);
-    }
+  var project = params.getProject();
+  var sessionData = ServerConnector.getSessionData(project);
+
+  var modelId = project.getModel().getId();
+  if (GuiConnector.getParams["submap"] !== undefined) {
+    modelId = parseInt(GuiConnector.getParams["submap"]);
+  }
+
+  var model = project.getModel().getSubmodelById(modelId);
+
+  if (GuiConnector.getParams["x"] !== undefined && GuiConnector.getParams["y"] !== undefined) {
+    var point = new google.maps.Point(GuiConnector.getParams["x"], GuiConnector.getParams["y"]);
+    sessionData.setCenter(model, point);
+  }
+  if (GuiConnector.getParams["zoom"] !== undefined) {
+    sessionData.setZoomLevel(model, GuiConnector.getParams["zoom"]);
+  }
+
+  if (GuiConnector.getParams["comments"] === "on") {
+    sessionData.setShowComments(true);
+  }
+  if (GuiConnector.getParams["search"] !== undefined) {
+    var query = SearchDbOverlay.prototype.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_QUERY,
+      GuiConnector.getParams["search"]);
+    sessionData.setSearchQuery(query);
+  }
 
 }
 
 function insertGoogleAnalyticsCode() {
-    return ServerConnector.getConfigurationParam(ConfigurationType.GOOGLE_ANALYTICS_IDENTIFIER).then(
-        function (identifier) {
-            if (identifier === "" || identifier === undefined || identifier === null) {
-                return;
-            } else {
-                global._gaq = global._gaq || [];
-                global._gaq.push(['_setAccount', identifier]);
-                global._gaq.push(['_trackPageview']);
-
-                (function () {
-                    var ga = document.createElement('script');
-                    ga.type = 'text/javascript';
-                    ga.async = true;
-                    ga.src = ('https:' === document.location.protocol ? 'https://ssl' : 'http://www')
-                        + '.google-analytics.com/ga.js';
-                    var s = document.getElementsByTagName('script')[0];
-                    s.parentNode.insertBefore(ga, s);
-                })();
-                return;
-            }
-        });
+  return ServerConnector.getConfigurationParam(ConfigurationType.GOOGLE_ANALYTICS_IDENTIFIER).then(
+    function (identifier) {
+      if (identifier === "" || identifier === undefined || identifier === null) {
+        return;
+      } else {
+        global._gaq = global._gaq || [];
+        global._gaq.push(['_setAccount', identifier]);
+        global._gaq.push(['_trackPageview']);
+
+        (function () {
+          var ga = document.createElement('script');
+          ga.type = 'text/javascript';
+          ga.async = true;
+          ga.src = ('https:' === document.location.protocol ? 'https://ssl' : 'http://www')
+            + '.google-analytics.com/ga.js';
+          var s = document.getElementsByTagName('script')[0];
+          s.parentNode.insertBefore(ga, s);
+        })();
+        return;
+      }
+    });
 }
 
 function createDivStructure(element) {
-    var leftPanelDiv = functions.createElement({
-        type: "div",
-        name: "leftPanelDiv",
-        className: "minerva-left-panel",
-    });
-    element.appendChild(leftPanelDiv);
-    var rightPanelDiv = functions.createElement({
-        type: "div",
-        style: "display: table-cell;height:100%;width:100%;",
-    });
-    element.appendChild(rightPanelDiv);
-
-    var rightPanelContainerDiv = functions.createElement({
-        type: "div",
-        style: "height:100%;width:100%;position:relative",
-    });
-    rightPanelDiv.appendChild(rightPanelContainerDiv);
-
-    var menuDiv = functions.createElement({
-        type: "div",
-        name: "menuDiv",
-        className: "menuBelt",
-    });
-    rightPanelContainerDiv.appendChild(menuDiv);
-
-    var mapDiv = functions.createElement({
-        type: "div",
-        name: "mapDiv",
-        className: "mapClass",
-    });
-    rightPanelContainerDiv.appendChild(mapDiv);
-
-    var legendDiv = functions.createElement({
-        type: "div",
-        name: "legendDiv",
-        className: "minerva-legend",
-        style: "display:none",
-    });
-    rightPanelContainerDiv.appendChild(legendDiv);
-
-    var contextMenu = functions.createElement({
-        type: "ul",
-        name: "contextMenu",
-    });
-    element.appendChild(contextMenu);
-    var selectionContextMenu = functions.createElement({
-        type: "ul",
-        name: "selectionContextMenu",
-    });
-    element.appendChild(selectionContextMenu);
+  var leftPanelDiv = functions.createElement({
+    type: "div",
+    name: "leftPanelDiv",
+    className: "minerva-left-panel",
+  });
+  element.appendChild(leftPanelDiv);
+  var rightPanelDiv = functions.createElement({
+    type: "div",
+    style: "display: table-cell;height:100%;width:100%;",
+  });
+  element.appendChild(rightPanelDiv);
+
+  var rightPanelContainerDiv = functions.createElement({
+    type: "div",
+    style: "height:100%;width:100%;position:relative",
+  });
+  rightPanelDiv.appendChild(rightPanelContainerDiv);
+
+  var menuDiv = functions.createElement({
+    type: "div",
+    name: "menuDiv",
+    className: "menuBelt",
+  });
+  rightPanelContainerDiv.appendChild(menuDiv);
+
+  var mapDiv = functions.createElement({
+    type: "div",
+    name: "mapDiv",
+    className: "mapClass",
+  });
+  rightPanelContainerDiv.appendChild(mapDiv);
+
+  var legendDiv = functions.createElement({
+    type: "div",
+    name: "legendDiv",
+    className: "minerva-legend",
+    style: "display:none",
+  });
+  rightPanelContainerDiv.appendChild(legendDiv);
+
+  var contextMenu = functions.createElement({
+    type: "ul",
+    name: "contextMenu",
+  });
+  element.appendChild(contextMenu);
+  var selectionContextMenu = functions.createElement({
+    type: "ul",
+    name: "selectionContextMenu",
+  });
+  element.appendChild(selectionContextMenu);
 }
 
 function getFullElements(customMap, identifiedElements) {
-    var result = [];
-    return Promise.each(
-        identifiedElements,
-        function (item) {
-            if (item.length === undefined) {
-                return customMap.getSubmapById(item.getModelId()).getModel().getByIdentifiedElement(item, true).then(
-                    function (fullElement) {
-                        result.push(fullElement);
-                    });
-            } else {
-                return getFullElements(customMap, item).then(function (resultRow) {
-                    result.push(resultRow);
-                });
-            }
-        }).then(function () {
-        return result;
-    });
+  var result = [];
+  return Promise.each(
+    identifiedElements,
+    function (item) {
+      if (item.length === undefined) {
+        return customMap.getSubmapById(item.getModelId()).getModel().getByIdentifiedElement(item, true).then(
+          function (fullElement) {
+            result.push(fullElement);
+          });
+      } else {
+        return getFullElements(customMap, item).then(function (resultRow) {
+          result.push(resultRow);
+        });
+      }
+    }).then(function () {
+    return result;
+  });
 }
 
 function getOverlayByName(customMap, dbOverlayName) {
-    var dbOverlay = customMap.getOverlayByName(dbOverlayName);
-    if (dbOverlay === null) {
-        var validOverlays = "";
-        var overlays = customMap.getDbOverlays();
-        for (var overlay in overlays) {
-            if (overlays.hasOwnProperty(overlay)) {
-                validOverlays += overlay.getName() + ", ";
-            }
-        }
-        throw new Error("Invalid DbOverlay: " + dbOverlayName + ". Valid DbOverlays: " + validOverlays);
-    } else {
-        return dbOverlay;
+  var dbOverlay = customMap.getOverlayByName(dbOverlayName);
+  if (dbOverlay === null) {
+    var validOverlays = "";
+    var overlays = customMap.getDbOverlays();
+    for (var overlay in overlays) {
+      if (overlays.hasOwnProperty(overlay)) {
+        validOverlays += overlay.getName() + ", ";
+      }
     }
+    throw new Error("Invalid DbOverlay: " + dbOverlayName + ". Valid DbOverlays: " + validOverlays);
+  } else {
+    return dbOverlay;
+  }
 }
 
 function createMarkerElements(options) {
-    var params = options.params;
-    var filteredType = options.filteredType;
-    var isDefault = options.isDefault;
-
-    var markerElements = [];
-    if (params.length === undefined) {
-        params = [params];
-    }
-    for (var i = 0; i < params.length; i++) {
-        var elementParam = params[i];
-        if (elementParam.type === undefined && isDefault) {
-            markerElements.push({
-                element: elementParam.element,
-            });
-        } else if (elementParam.type === filteredType) {
-            markerElements.push({
-                element: elementParam.element,
-                options: elementParam.options,
-            });
-        } else if (elementParam.type !== "ICON" && elementParam.type !== "SURFACE") {
-            throw new Error("Unknown type:" + elementParam.type);
-        }
+  var params = options.params;
+  var filteredType = options.filteredType;
+  var isDefault = options.isDefault;
+
+  var markerElements = [];
+  if (params.length === undefined) {
+    params = [params];
+  }
+  for (var i = 0; i < params.length; i++) {
+    var elementParam = params[i];
+    if (elementParam.type === undefined && isDefault) {
+      markerElements.push({
+        element: elementParam.element,
+      });
+    } else if (elementParam.type === filteredType) {
+      markerElements.push({
+        element: elementParam.element,
+        options: elementParam.options,
+      });
+    } else if (elementParam.type !== "ICON" && elementParam.type !== "SURFACE") {
+      throw new Error("Unknown type:" + elementParam.type);
     }
-    return markerElements;
+  }
+  return markerElements;
 }
 
 function getElements(elementIdentifiers, customMap) {
-    var identifiedElements = [];
+  var identifiedElements = [];
 
-    var elementsByModelId = [];
-    for (var i = 0; i < elementIdentifiers.length; i++) {
-        var identifiedElement = new IdentifiedElement(elementIdentifiers[i]);
-        if (elementsByModelId[identifiedElement.getModelId()] === undefined) {
-            elementsByModelId[identifiedElement.getModelId()] = [];
-        }
-        elementsByModelId[identifiedElement.getModelId()].push(identifiedElement);
-        identifiedElements.push(identifiedElement);
+  var elementsByModelId = [];
+  for (var i = 0; i < elementIdentifiers.length; i++) {
+    var identifiedElement = new IdentifiedElement(elementIdentifiers[i]);
+    if (elementsByModelId[identifiedElement.getModelId()] === undefined) {
+      elementsByModelId[identifiedElement.getModelId()] = [];
     }
-
-    var modelScopePromises = [];
-    for (var key in elementsByModelId) {
-        if (elementsByModelId.hasOwnProperty(key)) {
-            var model = customMap.getModel().getSubmodelById(parseInt(key));
-            modelScopePromises.push(model.getByIdentifiedElements(elementsByModelId[key], true));
-        }
+    elementsByModelId[identifiedElement.getModelId()].push(identifiedElement);
+    identifiedElements.push(identifiedElement);
+  }
+
+  var modelScopePromises = [];
+  for (var key in elementsByModelId) {
+    if (elementsByModelId.hasOwnProperty(key)) {
+      var model = customMap.getModel().getSubmodelById(parseInt(key));
+      modelScopePromises.push(model.getByIdentifiedElements(elementsByModelId[key], true));
     }
-    // first promise fetch all data
-    return Promise.all(modelScopePromises).then(function () {
-        // this promise return result in the right order
-        var elementPromises = [];
-        for (var i = 0; i < identifiedElements.length; i++) {
-            var element = identifiedElements[i];
-            var model = customMap.getModel().getSubmodelById(element.getModelId());
-            var promise = model.getByIdentifiedElement(element, true);
-            elementPromises.push(promise);
-        }
-        return Promise.all(elementPromises);
-    });
+  }
+  // first promise fetch all data
+  return Promise.all(modelScopePromises).then(function () {
+    // this promise return result in the right order
+    var elementPromises = [];
+    for (var i = 0; i < identifiedElements.length; i++) {
+      var element = identifiedElements[i];
+      var model = customMap.getModel().getSubmodelById(element.getModelId());
+      var promise = model.getByIdentifiedElement(element, true);
+      elementPromises.push(promise);
+    }
+    return Promise.all(elementPromises);
+  });
 }
 
 function getReactionsForElements(elementIdentifiers, customMap) {
-    var elementsByModelId = [];
-    for (var i = 0; i < elementIdentifiers.length; i++) {
-        var identifiedElement = new IdentifiedElement(elementIdentifiers[i]);
-        if (elementsByModelId[identifiedElement.getModelId()] === undefined) {
-            elementsByModelId[identifiedElement.getModelId()] = [];
-        }
-        elementsByModelId[identifiedElement.getModelId()].push(identifiedElement);
+  var elementsByModelId = [];
+  for (var i = 0; i < elementIdentifiers.length; i++) {
+    var identifiedElement = new IdentifiedElement(elementIdentifiers[i]);
+    if (elementsByModelId[identifiedElement.getModelId()] === undefined) {
+      elementsByModelId[identifiedElement.getModelId()] = [];
     }
-
-    var modelScopePromises = [];
-    for (var key in elementsByModelId) {
-        if (elementsByModelId.hasOwnProperty(key)) {
-            var model = customMap.getModel().getSubmodelById(parseInt(key));
-            var promise = model.getReactionsForElements(elementsByModelId[key], true);
-            modelScopePromises.push(promise);
-        }
+    elementsByModelId[identifiedElement.getModelId()].push(identifiedElement);
+  }
+
+  var modelScopePromises = [];
+  for (var key in elementsByModelId) {
+    if (elementsByModelId.hasOwnProperty(key)) {
+      var model = customMap.getModel().getSubmodelById(parseInt(key));
+      var promise = model.getReactionsForElements(elementsByModelId[key], true);
+      modelScopePromises.push(promise);
     }
+  }
 
-    // first promise fetch all data
-    return Promise.all(modelScopePromises).then(function (reactionResult) {
-        var result = [];
-        for (var i = 0; i < reactionResult.length; i++) {
-            result = result.concat(reactionResult[i]);
-        }
-        return result;
-    });
+  // first promise fetch all data
+  return Promise.all(modelScopePromises).then(function (reactionResult) {
+    var result = [];
+    for (var i = 0; i < reactionResult.length; i++) {
+      result = result.concat(reactionResult[i]);
+    }
+    return result;
+  });
 }
 
 function createResult(customMap) {
-    return {
-        getVisibleDataOverlays: function () {
-            return customMap.getVisibleDataOverlays();
-        },
-        addListener: function (param) {
-            var dbOverlay = getOverlayByName(customMap, param.dbOverlayName);
-            dbOverlay.addListener(param.type, function (e) {
-                return getFullElements(customMap, e.arg.identifiedElements).then(function (result) {
-                    return param.callback(result);
-                });
-            });
-        },
-        getHighlightedBioEntities: function (dbOverlayName) {
-            if (dbOverlayName === undefined) {
-                dbOverlayName = "user";
-            }
-            var dbOverlay = getOverlayByName(customMap, dbOverlayName);
-            var identifiedElements;
-            return dbOverlay.getIdentifiedElements().then(function (result) {
-                identifiedElements = result;
-                return getFullElements(customMap, identifiedElements);
-            }).then(function (fullElements) {
-                var result = [];
-                for (var i = 0; i < identifiedElements.length; i++) {
-                    var type;
-                    if (identifiedElements[i].getIcon() !== undefined) {
-                        type = "ICON";
-                    } else {
-                        type = "SURFACE";
-                    }
-                    var row = {
-                        element: fullElements[i],
-                        type: type,
-                        options: {
-                            icon: identifiedElements[i].getIcon(),
-                            color: identifiedElements[i].getColor(),
-                            opacity: identifiedElements[i].getOpacity(),
-                        }
-                    };
-                    result.push(row);
-                }
-                return result;
-            });
-        },
-        getProject: function () {
-            return customMap.getProject();
-        },
-        getConfiguration: function () {
-            return ServerConnector.getConfiguration();
-        },
-        getBioEntityById: function (param) {
-            var isArray = true;
-            if (param.length === undefined) {
-                param = [param];
-                isArray = false;
-            }
-            return getElements(param, customMap).then(function (result) {
-                if (!isArray) {
-                    return result[0];
-                } else {
-                    return result;
-                }
-            });
-        },
-        getAllBioEntities: function () {
-            var models = [customMap.getModel()];
-            var result = [];
-            for (var i = 0; i < customMap.getModel().getSubmodels().length; i++) {
-                models.push(customMap.getModel().getSubmodels()[i]);
-            }
-            var promises = [];
-            for (var i = 0; i < models.length; i++) {
-                promises.push(models[i].getAliases({
-                    type: customMap.getConfiguration().getElementTypes(),
-                    complete: true,
-                }));
-            }
-            return Promise.all(promises).then(function (aliasesByModel) {
-                var promises = [];
-                for (var i = 0; i < models.length; i++) {
-                    promises.push(models[i].getReactionsForElements(aliasesByModel[i], true));
-                    for (var j = 0; j < aliasesByModel[i].length; j++) {
-                        result.push(aliasesByModel[i][j]);
-                    }
-                }
-                return Promise.all(promises);
-            }).then(function (reactionsByModel) {
-                for (var i = 0; i < models.length; i++) {
-                    for (var j = 0; j < reactionsByModel[i].length; j++) {
-                        result.push(reactionsByModel[i][j]);
-                    }
-                }
-                return result;
-            });
-        },
-        getReactionsWithElement: function (param) {
-            if (param.length === undefined) {
-                param = [param];
-            }
-            return getReactionsForElements(param, customMap);
-        },
-        destroy: function () {
-            return leftPanel.destroy().then(function () {
-                customMap.destroy();
-                return topMenu.destroy();
-            });
-        },
-        showBioEntity: function (params) {
-            var iconElements = createMarkerElements({
-                params: params,
-                filteredType: "ICON",
-                isDefault: true
-            });
-            var surfaceElements = createMarkerElements({
-                params: params,
-                filteredType: "SURFACE",
-                isDefault: false
-            });
-            return customMap.getOverlayByName("user").addMarker(iconElements).then(function () {
-                return customMap.getOverlayByName("user").addSurface(surfaceElements);
-            });
-        },
-        hideBioEntity: function (params) {
-            var iconElements = createMarkerElements({
-                params: params,
-                filteredType: "ICON",
-                isDefault: true
-            });
-            var surfaceElements = createMarkerElements({
-                params: params,
-                filteredType: "SURFACE",
-                isDefault: false
-            });
-            return customMap.getOverlayByName("user").removeMarker(iconElements).then(function () {
-                return customMap.getOverlayByName("user").removeSurface(surfaceElements);
-            });
-        },
-        setCenter: function (params) {
-            var submap = customMap.getSubmapById(params.modelId);
-            if (submap === null) {
-                throw new Error("Unknown modelId: " + params.modelId);
-            }
-            return submap.setCenter(new google.maps.Point(params.x, params.y));
-        },
-        fitBounds: function (params) {
-            var submap = customMap.getSubmapById(params.modelId);
-            if (submap === null) {
-                throw new Error("Unknown modelId: " + params.modelId);
-            }
-            var p1 = new google.maps.Point(params.x1, params.y1);
-            var p2 = new google.maps.Point(params.x2, params.y2);
-            var latLng1 = submap.fromPointToLatLng(p1);
-            var latLng2 = submap.fromPointToLatLng(p2);
-            var bounds = new google.maps.LatLngBounds();
-            bounds.extend(latLng1);
-            bounds.extend(latLng2);
-            return submap.getGoogleMap().fitBounds(bounds);
-        },
-        setZoom: function (params) {
-            var submap = customMap.getSubmapById(params.modelId);
-            if (submap === null) {
-                throw new Error("Unknown modelId: " + params.modelId);
+  return {
+    getVisibleDataOverlays: function () {
+      return customMap.getVisibleDataOverlays();
+    },
+    addListener: function (param) {
+      var dbOverlay = getOverlayByName(customMap, param.dbOverlayName);
+      dbOverlay.addListener(param.type, function (e) {
+        return getFullElements(customMap, e.arg.identifiedElements).then(function (result) {
+          return param.callback(result);
+        });
+      });
+    },
+    getHighlightedBioEntities: function (dbOverlayName) {
+      if (dbOverlayName === undefined) {
+        dbOverlayName = "user";
+      }
+      var dbOverlay = getOverlayByName(customMap, dbOverlayName);
+      var identifiedElements;
+      return dbOverlay.getIdentifiedElements().then(function (result) {
+        identifiedElements = result;
+        return getFullElements(customMap, identifiedElements);
+      }).then(function (fullElements) {
+        var result = [];
+        for (var i = 0; i < identifiedElements.length; i++) {
+          var type;
+          if (identifiedElements[i].getIcon() !== undefined) {
+            type = "ICON";
+          } else {
+            type = "SURFACE";
+          }
+          var row = {
+            element: fullElements[i],
+            type: type,
+            options: {
+              icon: identifiedElements[i].getIcon(),
+              color: identifiedElements[i].getColor(),
+              opacity: identifiedElements[i].getOpacity(),
             }
-            return submap.setZoom(params.zoom);
-        },
-    };
-}
-
-function initGlobals(params) {
-    if (global.GuiConnector === undefined) {
-        global.GuiConnector = OriginalGuiConnector;
-        global.ServerConnector = OriginalServerConnector;
-        if (params.isDebug()) {
-            logger.setLevel("debug");
+          };
+          result.push(row);
+        }
+        return result;
+      });
+    },
+    getProject: function () {
+      return customMap.getProject();
+    },
+    getConfiguration: function () {
+      return ServerConnector.getConfiguration();
+    },
+    getBioEntityById: function (param) {
+      var isArray = true;
+      if (param.length === undefined) {
+        param = [param];
+        isArray = false;
+      }
+      return getElements(param, customMap).then(function (result) {
+        if (!isArray) {
+          return result[0];
         } else {
-            logger.setLevel("info");
+          return result;
+        }
+      });
+    },
+    getAllBioEntities: function () {
+      var models = [customMap.getModel()];
+      var result = [];
+      for (var i = 0; i < customMap.getModel().getSubmodels().length; i++) {
+        models.push(customMap.getModel().getSubmodels()[i]);
+      }
+      var promises = [];
+      for (var i = 0; i < models.length; i++) {
+        promises.push(models[i].getAliases({
+          type: customMap.getConfiguration().getElementTypes(),
+          complete: true,
+        }));
+      }
+      return Promise.all(promises).then(function (aliasesByModel) {
+        var promises = [];
+        for (var i = 0; i < models.length; i++) {
+          promises.push(models[i].getReactionsForElements(aliasesByModel[i], true));
+          for (var j = 0; j < aliasesByModel[i].length; j++) {
+            result.push(aliasesByModel[i][j]);
+          }
         }
-        GuiConnector.init();
-        if (GuiConnector.getParams['debug'] !== undefined) {
-            logger.setLevel("debug");
+        return Promise.all(promises);
+      }).then(function (reactionsByModel) {
+        for (var i = 0; i < models.length; i++) {
+          for (var j = 0; j < reactionsByModel[i].length; j++) {
+            result.push(reactionsByModel[i][j]);
+          }
         }
+        return result;
+      });
+    },
+    getReactionsWithElement: function (param) {
+      if (param.length === undefined) {
+        param = [param];
+      }
+      return getReactionsForElements(param, customMap);
+    },
+    destroy: function () {
+      return leftPanel.destroy().then(function () {
+        customMap.destroy();
+        return topMenu.destroy();
+      });
+    },
+    showBioEntity: function (params) {
+      var iconElements = createMarkerElements({
+        params: params,
+        filteredType: "ICON",
+        isDefault: true
+      });
+      var surfaceElements = createMarkerElements({
+        params: params,
+        filteredType: "SURFACE",
+        isDefault: false
+      });
+      return customMap.getOverlayByName("user").addMarker(iconElements).then(function () {
+        return customMap.getOverlayByName("user").addSurface(surfaceElements);
+      });
+    },
+    hideBioEntity: function (params) {
+      var iconElements = createMarkerElements({
+        params: params,
+        filteredType: "ICON",
+        isDefault: true
+      });
+      var surfaceElements = createMarkerElements({
+        params: params,
+        filteredType: "SURFACE",
+        isDefault: false
+      });
+      return customMap.getOverlayByName("user").removeMarker(iconElements).then(function () {
+        return customMap.getOverlayByName("user").removeSurface(surfaceElements);
+      });
+    },
+    setCenter: function (params) {
+      var submap = customMap.getSubmapById(params.modelId);
+      if (submap === null) {
+        throw new Error("Unknown modelId: " + params.modelId);
+      }
+      return submap.setCenter(new google.maps.Point(params.x, params.y));
+    },
+    fitBounds: function (params) {
+      var submap = customMap.getSubmapById(params.modelId);
+      if (submap === null) {
+        throw new Error("Unknown modelId: " + params.modelId);
+      }
+      var p1 = new google.maps.Point(params.x1, params.y1);
+      var p2 = new google.maps.Point(params.x2, params.y2);
+      var latLng1 = submap.fromPointToLatLng(p1);
+      var latLng2 = submap.fromPointToLatLng(p2);
+      var bounds = new google.maps.LatLngBounds();
+      bounds.extend(latLng1);
+      bounds.extend(latLng2);
+      return submap.getGoogleMap().fitBounds(bounds);
+    },
+    setZoom: function (params) {
+      var submap = customMap.getSubmapById(params.modelId);
+      if (submap === null) {
+        throw new Error("Unknown modelId: " + params.modelId);
+      }
+      return submap.setZoom(params.zoom);
+    },
+  };
+}
+
+function initGlobals(params) {
+  if (global.GuiConnector === undefined) {
+    global.GuiConnector = OriginalGuiConnector;
+    global.ServerConnector = OriginalServerConnector;
+    if (params.isDebug()) {
+      logger.setLevel("debug");
     } else {
-        logger.warn("global GuiConnector found");
+      logger.setLevel("info");
+    }
+    GuiConnector.init();
+    if (GuiConnector.getParams['debug'] !== undefined) {
+      logger.setLevel("debug");
     }
+  } else {
+    logger.warn("global GuiConnector found");
+  }
 
 }
 
 function verifyBrowser() {
 
-    var browser = functions.browser;
-    if (browser.name === "IE") {
-        if (browser.version <= 8 || browser.compatibilityMode) {
-            var message = "This webpage works only with Internet Explorer version 9 or greater.\n"
-                + "If you have Internet Explorer version 9 or greater and still see this message, please, turn the 'Compatibility modeoff:\n"
-                + "Open Internet Explorer and press the Alt key on your keyboard.\n"
-                + "Select 'Tools' menu item. \n"
-                + "Select the 'Compatibility View' settings option. \n"
-                + "Make sure the 'Display all websites in Compatibility View' check box is unchecked and that the 'Compatibility View; list of websites is cleared.\n"
-                + "\n" + "Alternatively, please, use other browsers: Chrome, Firefox or Safari.";
-            GuiConnector.alert(message);
-        }
+  var browser = functions.browser;
+  if (browser.name === "IE") {
+    if (browser.version <= 8 || browser.compatibilityMode) {
+      var message = "This webpage works only with Internet Explorer version 9 or greater.\n"
+        + "If you have Internet Explorer version 9 or greater and still see this message, please, turn the 'Compatibility modeoff:\n"
+        + "Open Internet Explorer and press the Alt key on your keyboard.\n"
+        + "Select 'Tools' menu item. \n"
+        + "Select the 'Compatibility View' settings option. \n"
+        + "Make sure the 'Display all websites in Compatibility View' check box is unchecked and that the 'Compatibility View; list of websites is cleared.\n"
+        + "\n" + "Alternatively, please, use other browsers: Chrome, Firefox or Safari.";
+      GuiConnector.alert(message);
     }
+  }
 }
 
 function getProject(params) {
-    if (params.getProject() !== undefined) {
-        return Promise.resolve(params.getProject());
-    } else {
-        return ServerConnector.getProject(params.getProjectId());
-    }
+  if (params.getProject() !== undefined) {
+    return Promise.resolve(params.getProject());
+  } else {
+    return ServerConnector.getProject(params.getProjectId());
+  }
 }
 
 function modifyParamsForTouchInterface(params) {
-    if (params.markerOptimization === undefined && params.bigLogo === undefined
-        && params.customTouchInterface === undefined) {
-        var windowsTouchInterface = ((navigator.appVersion.indexOf("Win") > -1) && ('ontouchstart' in document.documentElement));
-        params.markerOptimization = !windowsTouchInterface;
-        params.bigLogo = windowsTouchInterface;
-        params.customTouchInterface = windowsTouchInterface;
-    }
-    return params;
+  if (params.markerOptimization === undefined && params.bigLogo === undefined
+    && params.customTouchInterface === undefined) {
+    var windowsTouchInterface = ((navigator.appVersion.indexOf("Win") > -1) && ('ontouchstart' in document.documentElement));
+    params.markerOptimization = !windowsTouchInterface;
+    params.bigLogo = windowsTouchInterface;
+    params.customTouchInterface = windowsTouchInterface;
+  }
+  return params;
 }
 
 function create(params) {
-    params = modifyParamsForTouchInterface(params);
-    if (!(params instanceof CustomMapOptions)) {
-        params = new CustomMapOptions(params);
+  params = modifyParamsForTouchInterface(params);
+  if (!(params instanceof CustomMapOptions)) {
+    params = new CustomMapOptions(params);
+  }
+  initGlobals(params);
+  params.getElement().style.display = "table";
+  params.getElement().innerHTML = "<div style='vertical-align:middle;display:table-cell;text-align: center'>"
+    + "<img src='resources/images/icons/ajax-loader.gif'/>" + "</div>";
+
+  // make sure that we are logged in
+  return ServerConnector.getToken().then(function () {
+    return ServerConnector.getConfiguration();
+  }).then(function (configuration) {
+    params.setConfiguration(configuration);
+    return getProject(params);
+  }).then(function (project) {
+    if (project === null) {
+      var message = "Project with given id doesn't exist.";
+      message += "<p>Please go to <a href='" + ServerConnector.getServerBaseUrl() + "'>default map</a>";
+      return Promise.reject(new Error(message));
     }
-    initGlobals(params);
-    params.getElement().style.display = "table";
-    params.getElement().innerHTML = "<div style='vertical-align:middle;display:table-cell;text-align: center'>"
-        + "<img src='resources/images/icons/ajax-loader.gif'/>" + "</div>";
-
-    // make sure that we are logged in
-    return ServerConnector.getToken().then(function () {
-        return ServerConnector.getConfiguration();
-    }).then(function (configuration) {
-        params.setConfiguration(configuration);
-        return getProject(params);
-    }).then(function (project) {
-        if (project === null) {
-            var message = "Project with given id doesn't exist.";
-            message += "<p>Please go to <a href='" + ServerConnector.getServerBaseUrl() + "'>default map</a>";
-            return Promise.reject(new Error(message));
-        }
-        params.setProject(project);
-        var element = params.getElement();
-
-        verifyBrowser();
+    params.setProject(project);
+    var element = params.getElement();
 
-        processUrlGetParams(params);
+    verifyBrowser();
 
-        params.getElement().innerHTML = "";
-        createDivStructure(element);
-        params.setElement(functions.getElementByName(element, "mapDiv"));
+    processUrlGetParams(params);
 
-        customMap = new CustomMap(params);
+    params.getElement().innerHTML = "";
+    createDivStructure(element);
+    params.setElement(functions.getElementByName(element, "mapDiv"));
 
-        new DbOverlayCollection({
-            map: customMap
-        });
+    customMap = new CustomMap(params);
 
-        leftPanel = new LeftPanel({
-            element: functions.getElementByName(element, "leftPanelDiv"),
-            customMap: customMap
-        });
-
-        topMenu = new TopMenu({
-            element: functions.getElementByName(element, "menuDiv"),
-            customMap: customMap
-        });
+    new DbOverlayCollection({
+      map: customMap
+    });
 
-        legend = new Legend({
-            element: functions.getElementByName(element, "legendDiv"),
-            customMap: customMap
-        });
+    leftPanel = new LeftPanel({
+      element: functions.getElementByName(element, "leftPanelDiv"),
+      customMap: customMap
+    });
 
-        mapContextMenu = new MapContextMenu({
-            element: functions.getElementByName(element, "contextMenu"),
-            customMap: customMap
-        });
-        customMap.setContextMenu(mapContextMenu);
+    topMenu = new TopMenu({
+      element: functions.getElementByName(element, "menuDiv"),
+      customMap: customMap
+    });
 
-        selectionContextMenu = new SelectionContextMenu({
-            element: functions.getElementByName(element, "selectionContextMenu"),
-            customMap: customMap
-        });
-        customMap.setSelectionContextMenu(selectionContextMenu);
+    legend = new Legend({
+      element: functions.getElementByName(element, "legendDiv"),
+      customMap: customMap
+    });
 
-        topMenu.setLegend(legend);
-        topMenu.setLeftPanel(leftPanel);
+    mapContextMenu = new MapContextMenu({
+      element: functions.getElementByName(element, "contextMenu"),
+      customMap: customMap
+    });
+    customMap.setContextMenu(mapContextMenu);
 
-        return customMap.init();
-    }).then(function () {
-        return insertGoogleAnalyticsCode(customMap);
-    }).then(function () {
-        return leftPanel.init();
-    }).then(function () {
-        return legend.init();
-    }).then(function () {
-        return topMenu.init();
-    }).then(function () {
-        return selectionContextMenu.init();
-    }).then(function () {
-        return mapContextMenu.init();
-    }).then(function () {
-        if (GuiConnector.getParams["layout"] !== undefined) {
-            var layouts = params.getProject().getModel().getLayouts();
-            for (var j = 0; j < layouts.length; j++) {
-                var layout = layouts[j];
-                if (layout.getName() === GuiConnector.getParams["layout"]) {
-                    return customMap.openDataOverlay(layout);
-                }
-            }
+    selectionContextMenu = new SelectionContextMenu({
+      element: functions.getElementByName(element, "selectionContextMenu"),
+      customMap: customMap
+    });
+    customMap.setSelectionContextMenu(selectionContextMenu);
+
+    topMenu.setLegend(legend);
+    topMenu.setLeftPanel(leftPanel);
+
+    return customMap.init();
+  }).then(function () {
+    return insertGoogleAnalyticsCode(customMap);
+  }).then(function () {
+    return leftPanel.init();
+  }).then(function () {
+    return legend.init();
+  }).then(function () {
+    return topMenu.init();
+  }).then(function () {
+    return selectionContextMenu.init();
+  }).then(function () {
+    return mapContextMenu.init();
+  }).then(function () {
+    if (GuiConnector.getParams["layout"] !== undefined) {
+      var layouts = params.getProject().getModel().getLayouts();
+      for (var j = 0; j < layouts.length; j++) {
+        var layout = layouts[j];
+        if (layout.getName() === GuiConnector.getParams["layout"]) {
+          return customMap.openDataOverlay(layout);
         }
-    }).then(function () {
+      }
+    }
+  }).then(function () {
 
-        var submapId = GuiConnector.getParams["submap"];
-        if (submapId !== undefined) {
-            return customMap.openSubmap(submapId);
-        }
-    }).then(function () {
-        var result = createResult(customMap);
+    var submapId = GuiConnector.getParams["submap"];
+    if (submapId !== undefined) {
+      return customMap.openSubmap(submapId);
+    }
+  }).then(function () {
+    var result = createResult(customMap);
 
-        if (params.isDebug()) {
-            result.leftPanel = leftPanel;
-            result.customMap = customMap;
-        }
-        return result;
-    });
+    if (params.isDebug()) {
+      result.leftPanel = leftPanel;
+      result.customMap = customMap;
+    }
+    return result;
+  });
 
 }
 
 function createExport(params) {
-    params = modifyParamsForTouchInterface(params);
-    if (!(params instanceof CustomMapOptions)) {
-        params = new CustomMapOptions(params);
-    }
-    initGlobals(params);
-    params.getElement().style.display = "table";
-    params.getElement().innerHTML = "<div style='vertical-align:middle;display:table-cell;text-align: center'>"
-        + "<img src='resources/images/icons/ajax-loader.gif'/>" + "</div>";
-
-    var result;
-    // make sure that we are logged in
-    return ServerConnector.getToken().then(function () {
-        return ServerConnector.getConfiguration();
-    }).then(function (configuration) {
-        params.setConfiguration(configuration);
-        return getProject(params);
-    }).then(function (project) {
-        params.setProject(project);
-        result = new Export(params);
-        return result.init();
-    }).then(function () {
-        return result;
-    });
+  params = modifyParamsForTouchInterface(params);
+  if (!(params instanceof CustomMapOptions)) {
+    params = new CustomMapOptions(params);
+  }
+  initGlobals(params);
+  params.getElement().style.display = "table";
+  params.getElement().innerHTML = "<div style='vertical-align:middle;display:table-cell;text-align: center'>"
+    + "<img src='resources/images/icons/ajax-loader.gif'/>" + "</div>";
+
+  var result;
+  // make sure that we are logged in
+  return ServerConnector.getToken().then(function () {
+    return ServerConnector.getConfiguration();
+  }).then(function (configuration) {
+    params.setConfiguration(configuration);
+    return getProject(params);
+  }).then(function (project) {
+    params.setProject(project);
+    result = new Export(params);
+    return result.init();
+  }).then(function () {
+    return result;
+  });
 }
 
 function createAdmin(params) {
-    params = modifyParamsForTouchInterface(params);
-    if (!(params instanceof CustomMapOptions)) {
-        params = new CustomMapOptions(params);
-    }
-    initGlobals(params);
-    params.getElement().style.display = "table";
-    params.getElement().innerHTML = "<div style='vertical-align:middle;display:table-cell;text-align: center'>"
-        + "<img src='resources/images/icons/ajax-loader.gif'/>" + "</div>";
-
-    var result;
-    // make sure that we are logged in
-    return ServerConnector.getToken().then(function () {
-        return ServerConnector.getConfiguration();
-    }).then(function (configuration) {
-        params.setConfiguration(configuration);
-        return getProject(params);
-    }).then(function (project) {
-        params.setProject(project);
-        result = new Admin(params);
-        return result.init();
-    }).then(function () {
-        return result;
-    });
+  params = modifyParamsForTouchInterface(params);
+  if (!(params instanceof CustomMapOptions)) {
+    params = new CustomMapOptions(params);
+  }
+  initGlobals(params);
+  params.getElement().style.display = "table";
+  params.getElement().innerHTML = "<div style='vertical-align:middle;display:table-cell;text-align: center'>"
+    + "<img src='resources/images/icons/ajax-loader.gif'/>" + "</div>";
+
+  var result;
+  // make sure that we are logged in
+  return ServerConnector.getToken().then(function () {
+    return ServerConnector.getConfiguration();
+  }).then(function (configuration) {
+    params.setConfiguration(configuration);
+    return getProject(params);
+  }).then(function (project) {
+    params.setProject(project);
+    result = new Admin(params);
+    return result.init();
+  }).then(function () {
+    return result;
+  });
 }
 
 var minerva = {
-    create: create,
-    createExport: createExport,
-    createAdmin: createAdmin,
-    ServerConnector: OriginalServerConnector,
-    GuiConnector: OriginalGuiConnector,
-    DualListbox: require('dual-listbox').DualListbox,
+  create: create,
+  createExport: createExport,
+  createAdmin: createAdmin,
+  ServerConnector: OriginalServerConnector,
+  GuiConnector: OriginalGuiConnector,
+  DualListbox: require('dual-listbox').DualListbox,
 };
 
 module.exports = minerva;
diff --git a/frontend-js/src/test/js/GuiConnector-test.js b/frontend-js/src/test/js/GuiConnector-test.js
new file mode 100644
index 0000000000..b32b7b9cb7
--- /dev/null
+++ b/frontend-js/src/test/js/GuiConnector-test.js
@@ -0,0 +1,49 @@
+"use strict";
+
+require("./mocha-config");
+/* exported logger */
+
+var GuiConnector = require('../../main/js/GuiConnector');
+
+var chai = require('chai');
+var assert = chai.assert;
+var logger = require('./logger');
+
+describe('GuiConnector', function () {
+  it('destroy', function () {
+    var length = document.body.children.length;
+    var connector = new (GuiConnector.constructor)();
+    connector.showProcessing("test");
+    connector.destroy();
+    assert.equal(length, document.body.children.length);
+  });
+
+  it('hideProcessing', function () {
+    var connector = new (GuiConnector.constructor)();
+    connector.showProcessing();
+    connector.hideProcessing();
+    $(".ui-dialog-content").each(function(){
+      assert.notOk($(this).dialog('isOpen'));
+    });
+    connector.destroy();
+  });
+
+  it('alert', function () {
+    var connector = new (GuiConnector.constructor)();
+    connector.alert("some error");
+    $(".ui-dialog-content").each(function(){
+      assert.ok($(this).dialog('isOpen'));
+    });
+    connector.destroy();
+  });
+
+  it('info', function () {
+    var connector = new (GuiConnector.constructor)();
+    connector.info("info message");
+    $(".ui-dialog-content").each(function(){
+      assert.ok($(this).dialog('isOpen'));
+    });
+    connector.destroy();
+  });
+
+});
\ No newline at end of file
diff --git a/frontend-js/src/test/js/minerva-test.js b/frontend-js/src/test/js/minerva-test.js
index 87e03a1f18..dc1501ae74 100644
--- a/frontend-js/src/test/js/minerva-test.js
+++ b/frontend-js/src/test/js/minerva-test.js
@@ -14,14 +14,11 @@ var logger = require('./logger');
 
 describe('minerva global', function () {
   beforeEach(function () {
-    global.scriptDiv = document.createElement("script");
     global.GuiConnector = undefined;
     global.ServerConnector = undefined;
-    document.body.appendChild(global.scriptDiv);
   });
 
   afterEach(function () {
-    document.body.removeChild(global.scriptDiv);
     global.GuiConnector = GuiConnectorMock;
     global.ServerConnector = ServerConnectorMock;
   });
-- 
GitLab