Fix selectMenu test suite
diff --git a/dev/js/spec/matchSpec.js b/dev/js/spec/matchSpec.js
index f365045..1f2eb34 100644
--- a/dev/js/spec/matchSpec.js
+++ b/dev/js/spec/matchSpec.js
@@ -556,15 +556,16 @@
 
     it('should be initializable', function () {
       var menu = matchTreeMenu.create(undefined, [
-	['cnx/c', 'cnx', 'c'],
-	['xip/c', 'xip', 'c']
+	      ['cnx/c', 'cnx', 'c'],
+	      ['xip/c', 'xip', 'c']
       ]);
 
       expect(menu.itemClass()).toEqual(matchTreeItem);
       expect(menu.element().nodeName).toEqual('UL');
-      expect(menu.element().style.opacity).toEqual("0");
+      expect(menu.element().classList.contains('visible')).toBeFalsy();
       expect(menu.limit()).toEqual(6);
       menu.show();
+      expect(menu.element().classList.contains('visible')).toBeTruthy();
       expect(menu.item(0).active()).toBe(false);
     });
   });
diff --git a/dev/js/spec/menuSpec.js b/dev/js/spec/menuSpec.js
index c13d5e6..aba3f1e 100644
--- a/dev/js/spec/menuSpec.js
+++ b/dev/js/spec/menuSpec.js
@@ -1,1755 +1,1756 @@
-define(['menu', 'menu/item', 'menu/prefix', 'menu/lengthField'],
-       function (menuClass, menuItemClass, prefixClass, lengthFieldClass) {
+define(
+  ['menu', 'menu/item', 'menu/prefix', 'menu/lengthField'],
+  function (menuClass, menuItemClass, prefixClass, lengthFieldClass) {
  
-  // The OwnMenu item
-  KorAP.OwnMenuItem = {
-    create : function (params) {
-      return Object.create(menuItemClass).upgradeTo(KorAP.OwnMenuItem)._init(params);
-    },
-    content : function (content) {
-      if (arguments.length === 1) {
-	this._content = content;
-      };
-      return this._content;
-    },
-    _init : function (params) {
-      if (params[0] === undefined)
-	throw new Error("Missing parameters");
+    // The OwnMenu item
+    KorAP.OwnMenuItem = {
+      create : function (params) {
+        return Object.create(menuItemClass).upgradeTo(KorAP.OwnMenuItem)._init(params);
+      },
+      content : function (content) {
+        if (arguments.length === 1) {
+	        this._content = content;
+        };
+        return this._content;
+      },
+      _init : function (params) {
+        if (params[0] === undefined)
+	        throw new Error("Missing parameters");
 
-      this._content = document.createTextNode(params[0]);
-      this._lcField = ' ' + this.content().textContent.toLowerCase();
+        this._content = document.createTextNode(params[0]);
+        this._lcField = ' ' + this.content().textContent.toLowerCase();
 
-      return this;
-    }
-  };
+        return this;
+      }
+    };
 
-  // The OwnMenu
-  KorAP.OwnMenu = {
-    create : function (list) {
-      return Object.create(menuClass)
-	.upgradeTo(KorAP.OwnMenu)
-	._init(list, { itemClass : KorAP.OwnMenuItem });
-    }
-  };
+    // The OwnMenu
+    KorAP.OwnMenu = {
+      create : function (list) {
+        return Object.create(menuClass)
+	        .upgradeTo(KorAP.OwnMenu)
+	        ._init(list, { itemClass : KorAP.OwnMenuItem });
+      }
+    };
 
 
-  // HintMenuItem
-  KorAP.HintMenuItem = {
-    create : function (params) {
-      return Object.create(menuItemClass)
-	.upgradeTo(KorAP.HintMenuItem)
-	._init(params);
-    },
-    content : function (content) {
-      if (arguments.length === 1) {
-	this._content = content;
-      };
-      return this._content;
-    },
-    _init : function (params) {
-      if (params[0] === undefined || params[1] === undefined)
-	throw new Error("Missing parameters");
+    // HintMenuItem
+    KorAP.HintMenuItem = {
+      create : function (params) {
+        return Object.create(menuItemClass)
+	        .upgradeTo(KorAP.HintMenuItem)
+	        ._init(params);
+      },
+      content : function (content) {
+        if (arguments.length === 1) {
+	        this._content = content;
+        };
+        return this._content;
+      },
+      _init : function (params) {
+        if (params[0] === undefined || params[1] === undefined)
+	        throw new Error("Missing parameters");
 
-      this._name   = params[0];
-      this._action = params[1];
-      this._lcField = ' ' + this._name.toLowerCase();
+        this._name   = params[0];
+        this._action = params[1];
+        this._lcField = ' ' + this._name.toLowerCase();
 
-      if (params.length > 2) {
-	this._desc = params[2];
-	this._lcField += " " + this._desc.toLowerCase();
-      };
+        if (params.length > 2) {
+	        this._desc = params[2];
+	        this._lcField += " " + this._desc.toLowerCase();
+        };
+        
+        return this;
+      },
 
-      return this;
-    },
+      name : function () {
+        return this._name;
+      },
+      action : function () {
+        return this._action;
+      },
+      desc : function () {
+        return this._desc;
+      },
+      element : function () {
+        // already defined
+        if (this._element !== undefined)
+	        return this._element;
 
-    name : function () {
-      return this._name;
-    },
-    action : function () {
-      return this._action;
-    },
-    desc : function () {
-      return this._desc;
-    },
-    element : function () {
-      // already defined
-      if (this._element !== undefined)
-	return this._element;
+        // Create list item
+        var li = document.createElement("li");
+        li.setAttribute("data-action", this._action);
 
-      // Create list item
-      var li = document.createElement("li");
-      li.setAttribute("data-action", this._action);
+        // Create title
+        var name =  document.createElement("strong");
+        name.appendChild(document.createTextNode(this._name));
+        
+        li.appendChild(name);
 
-      // Create title
-      var name =  document.createElement("strong");
-      name.appendChild(document.createTextNode(this._name));
+        // Create description
+        if (this._desc !== undefined) {
+	        var desc = document.createElement("span");
+	        desc.appendChild(document.createTextNode(this._desc));
+	        li.appendChild(desc);
+        };
+        return this._element = li;
+      }
+    };
+
+
+    // HintMenu
+    KorAP.HintMenu = {
+      create : function (context, list) {
+        var obj = Object.create(menuClass)
+	          .upgradeTo(KorAP.HintMenu)
+	          ._init(list, {itemClass : KorAP.HintMenuItem});
+        obj._context = context;
+        return obj;
+      }
+    };
+
+
+    // The ComplexMenuItem
+    KorAP.ComplexMenuItem = {
+      create : function (params) {
+        return Object.create(menuItemClass)
+	        .upgradeTo(KorAP.ComplexMenuItem)
+	        ._init(params);
+      },
+      content : function (content) {
+        if (arguments.length === 1) {
+	        this._content = content;
+        };
+        return this._content;
+      },
+      _init : function (params) {
+        if (params[0] === undefined)
+	        throw new Error("Missing parameters");
+
+        var r = document.createElement('div');
+        for (var i = 1; i <= params.length; i++) {
+	        var h = document.createElement('h' + i);
+	        h.appendChild(document.createTextNode(params[i-1]));
+	        r.appendChild(h);
+        };
+
+        this._content = r;
+        this._lcField = ' ' + this.content().textContent.toLowerCase();
+
+        return this;
+      }
+    };
+
+
+    describe('KorAP.MenuItem', function () {
+      it('should be initializable', function () {
+        expect(
+	        function() { menuItemClass.create([]) }
+        ).toThrow(new Error("Missing parameters"));
+
+        expect(
+	        function() { KorAP.OwnMenuItem.create([]) }
+        ).toThrow(new Error("Missing parameters"));
+
+        var mi = KorAP.OwnMenuItem.create(["Baum"]);
+        expect(mi.element().firstChild.nodeValue).toEqual('Baum');
+        expect(mi.lcField()).toEqual(' baum');
+      });
+
+      it('shouldn\'t have a reference to the menu', function () {
+        var menuItem = KorAP.OwnMenuItem.create(['Test']);
+        expect(menuItem.menu()).toBe(undefined);
+      });
+
+      it('should be activatable and deactivateable by class', function () {
+        var menuItem = KorAP.OwnMenuItem.create(['Test']);
+
+        expect(menuItem.active()).toBe(false);
+        expect(menuItem.element().getAttribute("class")).toBe(null);
+        menuItem.active(true);
+        expect(menuItem.active()).toBe(true);
+        expect(menuItem.element().getAttribute("class")).toEqual("active");
+        menuItem.active(false); // Is active
+        expect(menuItem.active()).toBe(false);
+        expect(menuItem.element().getAttribute("class")).toEqual("");
+        menuItem.active(true);
+        expect(menuItem.active()).toBe(true);
+        expect(menuItem.element().getAttribute("class")).toEqual("active");
+
+        menuItem = KorAP.OwnMenuItem.create(['Spiegel']);
+        expect(menuItem.active()).toBe(false);
+        expect(menuItem.element().getAttribute("class")).toBe(null);
+        menuItem.active(false); // Is not active
+        expect(menuItem.active()).toBe(false);
+        expect(menuItem.element().getAttribute("class")).toBe(null);
+      });
+
+      it('should be set to boundary', function () {
+        var menuItem = KorAP.OwnMenuItem.create(['CoreNLP']);
+        expect(menuItem.active()).toBe(false);
+        expect(menuItem.element().getAttribute("class")).toBe(null);
+
+        // Set active
+        menuItem.active(true);
+        expect(menuItem.active()).toBe(true);
+        expect(menuItem.noMore()).toBe(false);
+        expect(menuItem.element().getAttribute("class")).toEqual("active");
+
+        // Set no more
+        menuItem.noMore(true);
+        expect(menuItem.active()).toBe(true);
+        expect(menuItem.noMore()).toBe(true);
+        expect(menuItem.element().getAttribute("class")).toEqual("active no-more");
+
+        // No no more
+        menuItem.noMore(false);
+        expect(menuItem.active()).toBe(true);
+        expect(menuItem.noMore()).toBe(false);
+        expect(menuItem.element().getAttribute("class")).toEqual("active");
+
+        // Set no more, deactivate
+        menuItem.noMore(true);
+        menuItem.active(false);
+        expect(menuItem.active()).toBe(false);
+        expect(menuItem.noMore()).toBe(true);
+        expect(menuItem.element().getAttribute("class")).toEqual("no-more");
+
+        // Set active
+        menuItem.active(true);
+        expect(menuItem.active()).toBe(true);
+        expect(menuItem.noMore()).toBe(true);
+        expect(menuItem.element().getAttribute("class")).toEqual("no-more active");
+      });
+
+
+      it('should be highlightable', function () {
+        // Highlight in the middle
+        var menuItem = KorAP.OwnMenuItem.create(['CoreNLP']);
+        menuItem.highlight("ren");
+        expect(menuItem.element().innerHTML).toEqual("Co<mark>reN</mark>LP");
+
+        menuItem.lowlight();
+        expect(menuItem.element().innerHTML).toEqual("CoreNLP");
+
+        var plain = "<div><h1>CoreNLP</h1><h2>corenlp/</h2></div>";
+
+        // Starting highlight
+        menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/']);
+        menuItem.highlight("cor");
+        expect(menuItem.element().innerHTML).toEqual("<div><h1><mark>Cor</mark>eNLP</h1><h2><mark>cor</mark>enlp/</h2></div>");
+
+        menuItem.lowlight();
+        expect(menuItem.element().innerHTML).toEqual(plain);
+
+        // Starting highlight - short
+        menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/']);
+        menuItem.highlight("c");
+        expect(menuItem.element().innerHTML).toEqual("<div><h1><mark>C</mark>oreNLP</h1><h2><mark>c</mark>orenlp/</h2></div>");
+
+        menuItem.lowlight();
+        expect(menuItem.element().innerHTML).toEqual(plain);
+
+        // Highlight at the end
+        menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/']);
+        menuItem.highlight("nlp");
+        expect(menuItem.element().innerHTML).toEqual("<div><h1>Core<mark>NLP</mark></h1><h2>core<mark>nlp</mark>/</h2></div>");
+
+        menuItem.lowlight();
+        expect(menuItem.element().innerHTML).toEqual(plain);
+
+        // Highlight at the end - short
+        menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/']);
+        menuItem.highlight("p");
+        expect(menuItem.element().innerHTML).toEqual("<div><h1>CoreNL<mark>P</mark></h1><h2>corenl<mark>p</mark>/</h2></div>");
+
+        menuItem.lowlight();
+        expect(menuItem.element().innerHTML).toEqual(plain);
+
+        // No highlight
+        menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/']);
+        menuItem.highlight("xp");
+        expect(menuItem.element().innerHTML).toEqual(plain);
+
+        menuItem.lowlight();
+        expect(menuItem.element().innerHTML).toEqual(plain);
+
+        // Highlight in the middle - first
+        menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
+        menuItem.highlight("ren");
+        expect(menuItem.element().innerHTML).toEqual("<div><h1>Co<mark>reN</mark>LP</h1><h2>co<mark>ren</mark>lp/</h2><h3>This is my Example</h3></div>");
+
+        plain = "<div><h1>CoreNLP</h1><h2>corenlp/</h2><h3>This is my Example</h3></div>"
+
+        menuItem.lowlight();
+        expect(menuItem.element().innerHTML).toEqual(plain);
+
+        // Highlight in the middle - second
+        menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
+        menuItem.highlight("ampl");
+        expect(menuItem.element().innerHTML).toEqual("<div><h1>CoreNLP</h1><h2>corenlp/</h2><h3>This is my Ex<mark>ampl</mark>e</h3></div>");
+
+        menuItem.lowlight();
+        expect(menuItem.element().innerHTML).toEqual(plain);
+
+        // Highlight in the middle - both
+        menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
+        menuItem.highlight("e");
+        expect(menuItem.element().innerHTML).toEqual("<div><h1>Cor<mark>e</mark>NLP</h1><h2>cor<mark>e</mark>nlp/</h2><h3>This is my <mark>E</mark>xampl<mark>e</mark></h3></div>");
+
+        menuItem.lowlight();
+        expect(menuItem.element().innerHTML).toEqual(plain);
+
+        // Highlight in the end - second
+        menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
+        menuItem.highlight("le");
+        expect(menuItem.element().innerHTML).toEqual("<div><h1>CoreNLP</h1><h2>corenlp/</h2><h3>This is my Examp<mark>le</mark></h3></div>");
+
+        menuItem.lowlight();
+        expect(menuItem.element().innerHTML).toEqual(plain);
+
+        // Highlight at the beginning - second
+        menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
+        menuItem.highlight("this");
+        expect(menuItem.element().innerHTML).toEqual("<div><h1>CoreNLP</h1><h2>corenlp/</h2><h3><mark>This</mark> is my Example</h3></div>");
+
+        menuItem.lowlight();
+        expect(menuItem.element().innerHTML).toEqual(plain);
+      });
+    });
+
+
+    describe('KorAP.Menu', function () {
+      var list = [
+        ["Constituency", "c=", "Example 1"],
+        ["Lemma", "l="],
+        ["Morphology", "m=", "Example 2"],
+        ["Part-of-Speech", "p="],
+        ["Syntax", "syn="]
+      ];
+
+      var demolist = [
+        ['Titel', 'title'],
+        ['Untertitel', 'subTitle'],
+        ['Veröffentlichungsdatum', 'pubDate'],
+        ['Länge', 'length'],
+        ['Autor', 'author']
+      ];
+
+      var demolonglist = [
+        ['Titel', 'title'],
+        ['Untertitel', 'subTitle'],
+        ['Veröffentlichungsdatum', 'pubDate'],
+        ['Länge', 'length'],
+        ['Autor', 'author'],
+        ['Genre', 'genre'],
+        ['corpusID', 'corpusID'],
+        ['docID', 'docID'],
+        ['textID', 'textID'],
+      ];
+
+      it('should be initializable', function () {
+        var list = [
+	        ["Constituency"],
+	        ["Lemma"],
+	        ["Morphology"],
+	        ["Part-of-Speech"],
+	        ["Syntax"]
+        ];
+
+        var menu = KorAP.OwnMenu.create(list);
+        menu._firstActive = true;
+        expect(menu.itemClass()).toEqual(KorAP.OwnMenuItem);
+        expect(menu.element().nodeName).toEqual('UL');
+        expect(menu.element().classList.contains('visible')).toBeFalsy();
+        expect(menu.limit()).toEqual(8);
+
+        menu.limit(9);
+        expect(menu.limit()).toEqual(9);
+
+        menu.limit(8);
+
+        // view
+        menu.show();
+
+        // First element in list
+        expect(menu.item(0).active()).toBe(true);
+        expect(menu.item(0).noMore()).toBe(true);
+
+        // Middle element in list
+        expect(menu.item(2).active()).toBe(false);
+        expect(menu.item(2).noMore()).toBe(false);
+
+        // Last element in list
+        expect(menu.item(menu.length() - 1).active()).toBe(false);
+        expect(menu.item(menu.length() - 1).noMore()).toBe(true);
+      });
+
+      it('should have a reference to the menu', function () {
+        var menu = KorAP.HintMenu.create("cnx/", list);
+        expect(menu.item(0).menu()).toEqual(menu);
+
+        menu = KorAP.HintMenu.create("cnx/", list);
+        expect(menu.element().menu).toEqual(menu);
+      });
+
+
+      it('should be visible', function () {
+        var menu = KorAP.HintMenu.create("cnx/", list);
+        expect(menu.removeItems()).toBe(undefined);
+        menu.limit(3);
+
+        expect(menu.show()).toBe(true);
+
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Lemma</strong>");
+        expect(menu.element().childNodes[4].getAttribute("data-action")).toEqual("l=");
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
+        expect(menu.element().childNodes[6]).toBe(undefined);
+
+        // Check boundaries
+        expect(menu.element().childNodes[3].classList.contains("no-more")).toBe(true);
+        expect(menu.element().childNodes[4].classList.contains("no-more")).toBe(false);
+        expect(menu.element().childNodes[5].classList.contains("no-more")).toBe(false);
+      });
+
+      it('should be filterable', function () {
+        var menu = KorAP.HintMenu.create("cnx/", list);
+        menu.limit(3);
+        expect(menu.prefix("o").show()).toBe(true);
+        expect(menu.element().childNodes[0].innerHTML).toEqual("o");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>C<mark>o</mark>nstituency</strong><span>Example 1</span>");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>");
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Part-<mark>o</mark>f-Speech</strong>");
+        expect(menu.element().childNodes[6]).toBe(undefined);
+
+        // Check boundaries
+        expect(menu.element().childNodes[3].classList.contains("no-more")).toBe(true);
+        expect(menu.element().childNodes[4].classList.contains("no-more")).toBe(false);
+        expect(menu.element().childNodes[5].classList.contains("no-more")).toBe(true);
+
+        menu.limit(2);
+
+        expect(menu.prefix("o").show()).toBe(true);
+        expect(menu.element().childNodes[0].innerHTML).toEqual("o");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>C<mark>o</mark>nstituency</strong><span>Example 1</span>");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>");
+        expect(menu.element().childNodes[5]).toBe(undefined);
+
+        // Check boundaries
+        expect(menu.element().childNodes[3].classList.contains("no-more")).toBe(true);
+        expect(menu.element().childNodes[4].classList.contains("no-more")).toBe(false);
+        expect(menu.element().childNodes[5]).toBe(undefined);
+
+        expect(menu.prefix("e").show()).toBe(true);
+        expect(menu.element().childNodes[0].innerHTML).toEqual("e");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constitu<mark>e</mark>ncy</strong><span><mark>E</mark>xampl<mark>e</mark> 1</span>");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span><mark>E</mark>xampl<mark>e</mark> 2</span>");
+        expect(menu.element().childNodes[5]).toBe(undefined);
+
+        menu.limit(5);
+        expect(menu.prefix("a").show()).toBe(true);
+        expect(menu.element().childNodes[0].innerHTML).toEqual("a");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span>Ex<mark>a</mark>mple 1</span>");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Lemm<mark>a</mark></strong>");
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Morphology</strong><span>Ex<mark>a</mark>mple 2</span>");
+        expect(menu.element().childNodes[6].innerHTML).toEqual("<strong>P<mark>a</mark>rt-of-Speech</strong>");
+        expect(menu.element().childNodes[7].innerHTML).toEqual("<strong>Synt<mark>a</mark>x</strong>");
+        expect(menu.element().childNodes[8]).toBe(undefined);
+      });
+
+
+      it('should be nextable', function () {
+        var menu = KorAP.HintMenu.create("cnx/", list);
+        menu._firstActive = true;
+
+        // Show only 3 items
+        menu.limit(3);
+        expect(menu.show()).toBe(true);
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Lemma</strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.element().childNodes[6]).toBe(undefined);
+
+        // Activate next (1)
+        menu.next();
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Lemma</strong>");
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.element().childNodes[6]).toBe(undefined);
+
+        // Activate next (2)
+        menu.next();
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Lemma</strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
+        expect(menu.shownItem(2).active()).toBe(true);
+        expect(menu.element().childNodes[6]).toBe(undefined);
+
+        // Activate next (3)
+        // scroll!
+        menu.next();
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Lemma</strong>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Part-of-Speech</strong>");
+        expect(menu.shownItem(2).active()).toBe(true);
+        expect(menu.element().childNodes[6]).toBe(undefined);
+
+        // Activate next (4)
+        menu.next();
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Part-of-Speech</strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Syntax</strong>");
+        expect(menu.shownItem(2).active()).toBe(true);
+        expect(menu.element().childNodes[6]).toBe(undefined);
+
+        // Activate next (5) - ROLL
+        menu.next();
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Lemma</strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.element().childNodes[6]).toBe(undefined);
+
+        // Active next (6)
+        menu.next();
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Lemma</strong>");
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.element().childNodes[6]).toBe(undefined);
+      });
+
+      it('should be nextable without active field', function () {
+        var menu = KorAP.HintMenu.create("cnx/", list);
+        menu.limit(3);
+        expect(menu.show()).toBe(true);
+        menu.next();
+        expect(menu.shownItem(0).active()).toEqual(true);
+      });
+
+
+      it('should be prevable', function () {
+        var menu = KorAP.HintMenu.create("cnx/", list);
+        menu._firstActive = true;
+        menu.limit(3);
+        expect(menu.show()).toBe(true);
+
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Lemma</strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.element().childNodes[6]).toBe(undefined);
+
+        // Activate prev (1) - roll to bottom
+        menu.prev();
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Part-of-Speech</strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Syntax</strong>");
+        expect(menu.shownItem(2).active()).toBe(true);
+        expect(menu.element().childNodes[6]).toBe(undefined);
+
+        // Activate prev (2)
+        menu.prev();
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Part-of-Speech</strong>");
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Syntax</strong>");
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.element().childNodes[6]).toBe(undefined);
+
+        // Activate prev (3)
+        menu.prev();
+        expect(menu.shownItem(0).name()).toEqual("Morphology");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).name()).toEqual("Part-of-Speech");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).name()).toEqual("Syntax");
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.element().childNodes[6]).toBe(undefined);
+
+        // Activate prev (4)
+        menu.prev();
+        expect(menu.shownItem(0).name()).toEqual("Lemma");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).name()).toEqual("Morphology");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).name()).toEqual("Part-of-Speech");
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.element().childNodes[6]).toBe(undefined);
+
+        // Activate prev (5)
+        menu.prev();
+        expect(menu.shownItem(0).name()).toEqual("Constituency");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).name()).toEqual("Lemma");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).name()).toEqual("Morphology");
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.element().childNodes[6]).toBe(undefined);
+
+        // Activate next (1)
+        menu.next();
+        expect(menu.shownItem(0).name()).toEqual("Constituency");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).name()).toEqual("Lemma");
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.shownItem(2).name()).toEqual("Morphology");
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.element().childNodes[6]).toBe(undefined);
+
+        // Activate prev (6)
+        menu.prev();
+
+        // Activate prev (7)
+        menu.prev();
+        expect(menu.shownItem(0).name()).toEqual("Morphology");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).name()).toEqual("Part-of-Speech");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).name()).toEqual("Syntax");
+        expect(menu.shownItem(2).active()).toBe(true);
+        expect(menu.element().childNodes[6]).toBe(undefined);
+      });
+
+      it('should be prevable without active field', function () {
+        var menu = KorAP.HintMenu.create("cnx/", list);
+        menu.limit(3);
+        expect(menu.show()).toBe(true);
+        menu.prev();
+        expect(menu.shownItem(2).active()).toEqual(true);
+        expect(menu.shownItem(2).lcField()).toEqual(' syntax');
+      });
+
+      it('should be navigatable and filterable (prefix = "o")', function () {
+        var menu = KorAP.HintMenu.create("cnx/", list);
+        menu._firstActive = true;
+        menu.limit(2);
+
+        expect(menu.prefix("o").show()).toBe(true);
+        expect(menu.shownItem(0).name()).toEqual("Constituency");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>C<mark>o</mark>nstituency</strong><span>Example 1</span>");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).name()).toEqual("Morphology");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+        // Next (1)
+        menu.next();
+        expect(menu.shownItem(0).name()).toEqual("Constituency");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>C<mark>o</mark>nstituency</strong><span>Example 1</span>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).name()).toEqual("Morphology");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>");
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+        // Next (2)
+        menu.next();
+        expect(menu.shownItem(0).name()).toEqual("Morphology");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).name()).toEqual("Part-of-Speech");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Part-<mark>o</mark>f-Speech</strong>");
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+        // Next (3) - to prefix
+        menu.next();
+        expect(menu.shownItem(0).name()).toEqual("Morphology");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).name()).toEqual("Part-of-Speech");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Part-<mark>o</mark>f-Speech</strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+        menu.next();
+        expect(menu.shownItem(0).name()).toEqual("Constituency");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>C<mark>o</mark>nstituency</strong><span>Example 1</span>");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).name()).toEqual("Morphology");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2)).toBe(undefined);
+      });
+
+
+      it('should be navigatable and filterable (prefix = "ex", "e")', function () {
+        var menu = KorAP.HintMenu.create("cnx/", list);
+        menu._firstActive = true;
+
+        menu.limit(2);
+        expect(menu.prefix("ex").show()).toBe(true);
+
+        expect(menu.shownItem(0).name()).toEqual("Constituency");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span><mark>Ex</mark>ample 1</span>");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).name()).toEqual("Morphology");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span><mark>Ex</mark>ample 2</span>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+        // Next (1)
+        menu.next();
+        expect(menu.shownItem(0).name()).toEqual("Constituency");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span><mark>Ex</mark>ample 1</span>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).name()).toEqual("Morphology");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span><mark>Ex</mark>ample 2</span>");
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+        // Next (2)
+        menu.next();
+
+        expect(menu.prefix()).toEqual('ex');
+        expect(menu.shownItem(0).name()).toEqual("Constituency");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span><mark>Ex</mark>ample 1</span>");
+        expect(menu.shownItem(0).active()).toBe(false);
+
+        expect(menu.shownItem(1).name()).toEqual("Morphology");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span><mark>Ex</mark>ample 2</span>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+        // Reset limit
+        menu.limit(5);
+
+        // Change show
+        expect(menu.prefix("e").show()).toBe(true);
+        expect(menu._prefix.active()).toBe(false);
+        expect(menu.shownItem(0).name()).toEqual("Constituency");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constitu<mark>e</mark>ncy</strong><span><mark>E</mark>xampl<mark>e</mark> 1</span>");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).name()).toEqual("Morphology");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span><mark>E</mark>xampl<mark>e</mark> 2</span>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+        // Next (1)
+        menu.next();
+        expect(menu._prefix.active()).toBe(false);
+        expect(menu.prefix()).toEqual('e');
+        expect(menu.shownItem(0).name()).toEqual("Constituency");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constitu<mark>e</mark>ncy</strong><span><mark>E</mark>xampl<mark>e</mark> 1</span>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).name()).toEqual("Morphology");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span><mark>E</mark>xampl<mark>e</mark> 2</span>");
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+        // Next (2)
+        menu.next();
+        expect(menu._prefix.active()).toBe(true);
+        expect(menu.shownItem(0).name()).toEqual("Constituency");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constitu<mark>e</mark>ncy</strong><span><mark>E</mark>xampl<mark>e</mark> 1</span>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).name()).toEqual("Morphology");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span><mark>E</mark>xampl<mark>e</mark> 2</span>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+        // Next (3)
+        menu.next();
+        expect(menu._prefix.active()).toBe(false);
+        expect(menu.shownItem(0).name()).toEqual("Constituency");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constitu<mark>e</mark>ncy</strong><span><mark>E</mark>xampl<mark>e</mark> 1</span>");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).name()).toEqual("Morphology");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span><mark>E</mark>xampl<mark>e</mark> 2</span>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2)).toBe(undefined);
+      });
+
+
+      it('should choose prefix with failing prefix (1)', function () {
+        var menu = KorAP.HintMenu.create("cnx/", list);
+        menu.limit(2);
+        expect(menu.prefix("exit").show()).toBe(true);
+        expect(menu.element().querySelector('li')).toBe(null);
+        expect(menu.shownItem(0)).toBeUndefined();
+        expect(menu._prefix.active()).toBe(true);
+      });
+
+
+      it('should choose prefix with failing prefix (2)', function () {
+        var menu = KorAP.HintMenu.create("cnx/", list);
+        menu.limit(2);
+        expect(menu.show()).toBe(true);
+        expect(menu.prefix("exit").show()).toBe(true);
+        expect(menu.element().querySelector('li')).toBe(null);
+        expect(menu.shownItem(0)).toBeUndefined();
+        expect(menu._prefix.active()).toBe(true);
+      });
+
+      it('should ignore navigation with failing prefix', function () {
+        var menu = KorAP.HintMenu.create("cnx/", list);
+        menu.limit(2);
+        expect(menu.show()).toBe(true);
+
+        menu.next();
+
+        expect(menu.prefix("exit").show()).toBe(true);
+        expect(menu.element().querySelector('li')).toBe(null);
+        expect(menu.shownItem(0)).toBeUndefined();
+        expect(menu._prefix.active()).toBe(true);
+
+        menu.next();
+        expect(menu._prefix.active()).toBe(true);
+
+        menu.prev();
+        expect(menu._prefix.active()).toBe(true);
+
+      });
+
+      it('should be navigatable with prefix', function () {
+        var menu = KorAP.HintMenu.create("cnx/", demolist);
+        menu._firstActive = true;
+
+        menu.limit(3);
+
+        expect(menu.show()).toBe(true);
+        expect(menu.prefix()).toEqual("");
+
+        expect(menu.shownItem(0).name()).toEqual("Titel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Titel</strong>");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertitel</strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).name()).toEqual("Veröffentlichungsdatum");
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Veröffentlichungsdatum</strong>");
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(3)).toBe(undefined);
+
+        menu._prefix.add('a');
+        expect(menu.show()).toBe(true);
+        expect(menu.prefix()).toEqual("a");
+        expect(menu.shownItem(0).name()).toEqual("Autor");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong><mark>A</mark>utor</strong>");
+
+        menu._prefix.add('u');
+        expect(menu.show()).toBe(true);
+        expect(menu.prefix()).toEqual("au");
+        expect(menu.shownItem(0).name()).toEqual("Autor");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong><mark>Au</mark>tor</strong>");
+
+        menu._prefix.chop();
+        expect(menu.show()).toBe(true);
+        expect(menu.prefix()).toEqual("a");
+        expect(menu.shownItem(0).name()).toEqual("Autor");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong><mark>A</mark>utor</strong>");
+
+        menu._prefix.chop();
+        expect(menu.show()).toBe(true);
+        expect(menu.prefix()).toEqual("");
+        expect(menu.shownItem(0).name()).toEqual("Titel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Titel</strong>");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertitel</strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).name()).toEqual("Veröffentlichungsdatum");
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Veröffentlichungsdatum</strong>");
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(3)).toBe(undefined);
+
+        // Forward
+        menu._prefix.chop();
+        expect(menu.show()).toBe(true);
+        expect(menu.prefix()).toEqual("");
+        expect(menu.shownItem(0).name()).toEqual("Titel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Titel</strong>");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertitel</strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).name()).toEqual("Veröffentlichungsdatum");
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Veröffentlichungsdatum</strong>");
+        expect(menu.shownItem(2).active()).toBe(false);
+
+        // Forward
+        menu.next();
+        expect(menu.prefix()).toEqual("");
+        expect(menu.shownItem(0).name()).toEqual("Titel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Titel</strong>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertitel</strong>");
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.shownItem(2).name()).toEqual("Veröffentlichungsdatum");
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Veröffentlichungsdatum</strong>");
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(3)).toBe(undefined);
+
+        // Forward
+        menu.next();
+        expect(menu.prefix()).toEqual("");
+        expect(menu.shownItem(0).name()).toEqual("Titel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Titel</strong>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertitel</strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).name()).toEqual("Veröffentlichungsdatum");
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Veröffentlichungsdatum</strong>");
+        expect(menu.shownItem(2).active()).toBe(true);
+        expect(menu.shownItem(3)).toBe(undefined);
+
+        // Forward
+        menu.next();
+        expect(menu.prefix()).toEqual("");
+        expect(menu.shownItem(0).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Untertitel</strong>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).name()).toEqual("Veröffentlichungsdatum");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Veröffentlichungsdatum</strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).name()).toEqual("Länge");
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Länge</strong>");
+        expect(menu.shownItem(2).active()).toBe(true);
+        expect(menu.shownItem(3)).toBe(undefined);
+
+        // Forward
+        menu.next();
+        expect(menu.prefix()).toEqual("");
+        expect(menu.shownItem(0).name()).toEqual("Veröffentlichungsdatum");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Veröffentlichungsdatum</strong>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).name()).toEqual("Länge");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Länge</strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).name()).toEqual("Autor");
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Autor</strong>");
+        expect(menu.shownItem(2).active()).toBe(true);
+        expect(menu.shownItem(3)).toBe(undefined);
+
+        // Forward
+        menu.next();
+        expect(menu.prefix()).toEqual("");
+        expect(menu.shownItem(0).name()).toEqual("Titel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Titel</strong>");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertitel</strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).name()).toEqual("Veröffentlichungsdatum");
+        expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Veröffentlichungsdatum</strong>");
+        expect(menu.shownItem(2).active()).toBe(false);
+      });
+
+
+      it('should be navigatable with a prefix (1)', function () {
+        var menu = KorAP.HintMenu.create("cnx/", demolist);
+        menu._firstActive = true;
+
+        menu.limit(3);
+
+        expect(menu.show()).toBe(true);
+        expect(menu.prefix()).toEqual("");
+
+        // Add prefix in uppercase - but check in lowercase
+        menu.prefix('El');
+        expect(menu.show()).toBe(true);
+
+        expect(menu.prefix()).toEqual("El");
+        expect(menu._prefix.active()).toEqual(false);
+        expect(menu.shownItem(0).name()).toEqual("Titel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+        // Forward
+        menu.next();
+        expect(menu.prefix()).toEqual("El");
+        expect(menu._prefix.active()).toEqual(false);
+        expect(menu.shownItem(0).name()).toEqual("Titel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+        // Forward
+        menu.next();
+        expect(menu.prefix()).toEqual("El");
+        expect(menu._prefix.active()).toEqual(true);
+        expect(menu.shownItem(0).name()).toEqual("Titel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+        // Backward
+        menu.prev();
+        expect(menu.prefix()).toEqual("El");
+        expect(menu._prefix.active()).toEqual(false);
+        expect(menu.shownItem(0).name()).toEqual("Titel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
+        expect(menu.shownItem(0).active()).toBe(false);
+
+        expect(menu.shownItem(1).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.shownItem(2)).toBe(undefined);
+      });
+
+
+      it('should be navigatable with a prefix (2)', function () {
+        var menu = KorAP.HintMenu.create("cnx/", demolist);
+        menu._firstActive = true;
+
+        menu.limit(3);
+        expect(menu.show()).toBe(true);
+        expect(menu.prefix()).toEqual("");
+        menu.prefix('el');
+        expect(menu.show()).toBe(true);
+
+        expect(menu.prefix()).toEqual("el");
+        expect(menu._prefix.active()).toEqual(false);
+        expect(menu.shownItem(0).name()).toEqual("Titel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+        // Backward
+        menu.prev();
+        expect(menu._prefix.active()).toEqual(true);
+
+        expect(menu.shownItem(0).name()).toEqual("Titel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
+        expect(menu.shownItem(0).active()).toBe(false);
+
+        expect(menu.shownItem(1).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+        // Backward
+        menu.prev();
+        expect(menu._prefix.active()).toEqual(false);
+        expect(menu.shownItem(0).name()).toEqual("Titel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.shownItem(2)).toBe(undefined);
+      });
+
+      it('should be navigatable with a prefix (3)', function () {
+        var menu = KorAP.HintMenu.create("cnx/", demolist);
+        menu._firstActive = true;
+        menu.limit(3);
+        expect(menu.show()).toBe(true);
+        expect(menu.prefix()).toEqual("");
+        menu.prefix('el');
+        expect(menu.show()).toBe(true);
+
+        expect(menu.prefix()).toEqual("el");
+        expect(menu._prefix.active()).toEqual(false);
+        expect(menu.shownItem(0).name()).toEqual("Titel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+        // Backward
+        menu.prev();
+        expect(menu._prefix.active()).toEqual(true);
+        expect(menu.shownItem(0).name()).toEqual("Titel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+
+        // Forward
+        menu.next();
+        expect(menu.prefix()).toEqual("el");
+        expect(menu._prefix.active()).toEqual(false);
+        expect(menu.shownItem(0).name()).toEqual("Titel");
+        expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).name()).toEqual("Untertitel");
+        expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2)).toBe(undefined);
+
+      });
+
+      it('should show screens by offset', function () {
+        var menu = KorAP.HintMenu.create('cnx/', demolist);
+        menu.limit(3);
+        expect(menu.show()).toBe(true);
+
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+
+        // Highlight the first entry
+        menu.next();
+
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+
+        // Highlight the second entry
+        menu.next();
+
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(3)).toBe(undefined);
+
+        expect(menu.shownItem(0).lcField()).toEqual(' titel');
+        expect(menu.shownItem(1).lcField()).toEqual(' untertitel');
+
+        // Move to first screen
+        menu.screen(0);
+        expect(menu.shownItem(0).lcField()).toEqual(' titel');
+        expect(menu.shownItem(1).lcField()).toEqual(' untertitel');
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(3)).toBe(undefined);
+
+        // Move to second screen
+        menu.screen(1);
+        expect(menu.shownItem(0).lcField()).toEqual(' untertitel');
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(3)).toBe(undefined);
+
+        menu.screen(2);
+        expect(menu.shownItem(0).lcField()).toEqual(' veröffentlichungsdatum');
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(3)).toBe(undefined);
+
+        menu.screen(1);
+        expect(menu.shownItem(0).lcField()).toEqual(' untertitel');
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(3)).toBe(undefined);
+      });
+
+      it('should show screens by offset when prefixed', function () {
+        var menu = KorAP.HintMenu.create('cnx/', demolist);
+        menu.limit(3);
+        expect(menu.prefix("e").show()).toBe(true);
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+
+        expect(menu.shownItem(0).element().innerHTML).toEqual('<strong>Tit<mark>e</mark>l</strong>');
+        menu.screen(1);
+        expect(menu.shownItem(0).element().innerHTML).toEqual('<strong>Unt<mark>e</mark>rtit<mark>e</mark>l</strong>');
+      });
+
+
+      it('should be page downable', function () {
+        var menu = KorAP.OwnMenu.create(demolonglist);
+        menu.limit(3);
+
+        expect(menu.show(0)).toBe(true);
+
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(0).lcField()).toEqual(' titel');
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(3)).toBe(undefined);
+
+        menu.pageDown();
+
+        expect(menu.shownItem(0).lcField()).toEqual(' länge');
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+
+        menu.pageDown();
+
+        expect(menu.shownItem(0).lcField()).toEqual(' corpusid');
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+
+        // Doesn't matter
+        menu.pageDown();
+
+        expect(menu.shownItem(0).lcField()).toEqual(' corpusid');
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+      });
+
+      it('should be page downable with prefix', function () {
+        var menu = KorAP.OwnMenu.create(demolonglist);
+        menu.limit(3);
+
+        expect(menu.prefix('e').show(0)).toBe(true);
+
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(0).lcField()).toEqual(' titel');
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(1).lcField()).toEqual(' untertitel');
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(2).lcField()).toEqual(' veröffentlichungsdatum');
+        expect(menu.shownItem(3)).toBe(undefined);
+
+        menu.pageDown();
+
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(0).lcField()).toEqual(' länge');
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(1).lcField()).toEqual(' genre');
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(2).lcField()).toEqual(' textid');
+
+        // Doesn't matter
+        menu.pageDown();
+
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(0).lcField()).toEqual(' länge');
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(1).lcField()).toEqual(' genre');
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(2).lcField()).toEqual(' textid');
+      });
+
+
+      it('should be page upable', function () {
+        var menu = KorAP.OwnMenu.create(demolonglist);
+        menu.limit(3);
+
+        // Choose the final value
+        expect(menu.show(1000)).toBe(true);
+
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(true);
+        expect(menu.shownItem(2).lcField()).toEqual(' textid');
+        expect(menu.shownItem(3)).toBe(undefined);
+
+        menu.pageUp();
+
+        expect(menu.shownItem(0).lcField()).toEqual(' länge');
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+
+        menu.pageUp();
+
+        expect(menu.shownItem(0).lcField()).toEqual(' titel');
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+
+        // Doesn't matter
+        menu.pageUp();
+
+        expect(menu.shownItem(0).lcField()).toEqual(' titel');
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+      });
+
+      it('should be page upable with prefix', function () {
+        var menu = KorAP.OwnMenu.create(demolonglist);
+        menu.limit(3);
+
+        // Choose the final value
+        expect(menu.prefix("e").show(1000)).toBe(true);
+
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(0).lcField()).toEqual(' länge');
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(1).lcField()).toEqual(' genre');
+        expect(menu.shownItem(2).active()).toBe(true);
+        expect(menu.shownItem(2).lcField()).toEqual(' textid');
+        expect(menu.shownItem(3)).toBe(undefined);
+
+        menu.pageUp();
+
+        expect(menu.shownItem(0).lcField()).toEqual(' titel');
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(1).lcField()).toEqual(' untertitel');
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(2).lcField()).toEqual(' veröffentlichungsdatum');
+
+        // Doesn't matter
+        menu.pageUp();
+
+        expect(menu.shownItem(0).lcField()).toEqual(' titel');
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(1).lcField()).toEqual(' untertitel');
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(2).lcField()).toEqual(' veröffentlichungsdatum');
+      });
+
+      it('should scroll to a chosen value (1)', function () {
+        var menu = KorAP.OwnMenu.create(demolist);
+        menu.limit(3);
+
+        // Choose value 1
+        expect(menu.show(1)).toBe(true);
+
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(0).lcField()).toEqual(' titel');
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(3)).toBe(undefined);
+
+        // Choose value 2
+        expect(menu.show(2)).toBe(true);
+
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(0).lcField()).toEqual(' titel');
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(true);
+        expect(menu.shownItem(3)).toBe(undefined);
+      });
+
+      it('should scroll to a chosen value (2)', function () {
+        var menu = KorAP.OwnMenu.create(demolonglist);
+
+        // Choose value 3
+        expect(menu.limit(3).show(3)).toBe(true);
+        expect(menu.shownItem(0).lcField()).toEqual(' länge');
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(3)).toBe(undefined);
+      });
+
+      xit('should scroll to a chosen value after prefixing, if the chosen value is live');
+    });
+
+    describe('KorAP.Prefix', function () {
+      it('should be initializable', function () {
+        var p = prefixClass.create();
+        expect(p.element().classList.contains('pref')).toBeTruthy();
+        expect(p.isSet()).not.toBeTruthy();
+
+        /*
+          expect(mi.lcField()).toEqual(' baum');
+        */
+        
+      });
+
+      it('should be modifiable', function () {
+        var p = prefixClass.create();
+        expect(p.value()).toEqual('');
+        expect(p.element().firstChild).toBeNull();
+
+        // Set string
+        expect(p.value('Test')).toEqual('Test');
+        expect(p.value()).toEqual('Test');
+        expect(p.element().firstChild.nodeValue).toEqual('Test');
+
+        // Add string
+        expect(p.add('ified')).toEqual('Testified');
+        expect(p.value()).toEqual('Testified');
+        expect(p.element().firstChild.nodeValue).toEqual('Testified');
+
+        // Clear string
+        p.clear();
+        expect(p.value()).toEqual('');
+        expect(p.element().firstChild).toBeNull();
+
+        // Set string
+        expect(p.value('Test')).toEqual('Test');
+        expect(p.value()).toEqual('Test');
+        expect(p.element().firstChild.nodeValue).toEqual('Test');
+
+        expect(p.chop()).toEqual('Tes');
+        expect(p.value()).toEqual('Tes');
+        expect(p.element().firstChild.nodeValue).toEqual('Tes');
+
+        expect(p.chop()).toEqual('Te');
+        expect(p.value()).toEqual('Te');
+        expect(p.element().firstChild.nodeValue).toEqual('Te');
+
+        expect(p.chop()).toEqual('T');
+        expect(p.value()).toEqual('T');
+        expect(p.element().firstChild.nodeValue).toEqual('T');
+
+        expect(p.chop()).toEqual('');
+        expect(p.value()).toEqual('');
+        expect(p.element().firstChild).toBeNull();
+      });
+
+      it('should be activatable', function () {
+        var p = prefixClass.create();
+        expect(p.value()).toEqual('');
+        expect(p.element().firstChild).toBeNull();
+
+        expect(p.value('Test')).toEqual('Test');
+        expect(p.element().firstChild.nodeValue).toEqual('Test');
+
+        expect(p.active()).not.toBeTruthy();
+        expect(p.element().classList.contains('active')).not.toBeTruthy();
+
+        p.active(true);
+        expect(p.active()).toBeTruthy();
+        expect(p.element().classList.contains('active')).toBeTruthy();
+      });
+    });
+
+    describe('KorAP.LengthField', function () {
+      it('should be initializable', function () {
+        var l = lengthFieldClass.create();
+        expect(l.element().classList.contains('lengthField')).toBeTruthy();
+        expect(l.element().children.length).toEqual(0);      
+      });
+
+      it('should be extensible', function () {
+        var l = lengthFieldClass.create();
+        l.add(['Baum']);
+        expect(l.element().children.length).toEqual(1);
+        expect(l.element().children[0].nodeName).toEqual('SPAN');
+        expect(l.element().children[0].textContent).toEqual('Baum--');
+        l.add(['Fragezeichen']);
+        expect(l.element().children.length).toEqual(2);
+        expect(l.element().children[1].nodeName).toEqual('SPAN');
+        expect(l.element().children[1].textContent).toEqual('Fragezeichen--');
+      });
+
+      it('should be correctly initializable', function () {
+        var list = [
+	        ["Constituency"],
+	        ["Lemma"],
+	        ["Morphology"],
+	        ["Part-of-Speech"],
+	        ["Syntax"]
+        ];
+
+        var menu = KorAP.OwnMenu.create(list);
+
+        expect(menu.lengthField().element().children.length).toEqual(5);
+      });
+    });
+
+    describe('KorAP.Slider', function () {
+
+      var demolonglist = [
+        ['Titel', 'title'],
+        ['Untertitel', 'subTitle'],
+        ['Veröffentlichungsdatum', 'pubDate'],
+        ['Länge', 'length'],
+        ['Autor', 'author'],
+        ['Genre', 'genre'],
+        ['corpusID', 'corpusID'],
+        ['docID', 'docID'],
+        ['textID', 'textID'],
+      ];
+
+      it('should correctly be initializable', function () {
+        var list = [
+	        ["Constituency"],
+	        ["Lemma"],
+	        ["Morphology"],
+	        ["Part-of-Speech"],
+	        ["Syntax"]
+        ];
+
+        var menu = KorAP.OwnMenu.create(list);
+
+        menu._firstActive = true;
+        menu.limit(3);
+
+        expect(menu.show()).toBe(true);
+
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.slider().offset()).toEqual(0);
+        expect(menu.position).toEqual(0);
+      });
+
+      it('should correctly move on arrow keys', function () {
+        var list = [
+	        ["Constituency"],
+	        ["Lemma"],
+	        ["Morphology"],
+	        ["Part-of-Speech"],
+	        ["Syntax"]
+        ];
+
+        var menu = KorAP.OwnMenu.create(list);
+
+        menu._firstActive = true;
+        menu.limit(3);
+
+        expect(menu.show()).toBe(true);
+
+        menu.next();
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.slider().offset()).toEqual(0);
+        expect(menu.position).toEqual(1);
+
+        menu.next();
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(true);
+        expect(menu.slider().offset()).toEqual(0);
+        expect(menu.position).toEqual(2);
+
+        menu.next();
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(true);
+        expect(menu.slider().offset()).toEqual(1);
+        expect(menu.position).toEqual(3);
+
+        menu.next();
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(true);
+        expect(menu.slider().offset()).toEqual(2);
+        expect(menu.position).toEqual(4);
+
+        menu.next();
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.slider().offset()).toEqual(0);
+        expect(menu.position).toEqual(0);
+
+        expect(menu.slider()._slider.style.height).toEqual('60%');
+      });
+
+      it('should correctly resize on prefixing', function () {
+        var menu = KorAP.OwnMenu.create(demolonglist);
+        menu._firstActive = true;
+        menu.limit(3);
+
+        expect(menu.show()).toBe(true);
+        expect(menu.slider().offset()).toEqual(0);
+        expect(menu.slider().length()).toEqual(9);
+
+        expect(menu.prefix("e").show()).toBe(true);
+        expect(menu.slider().length()).toEqual(6);
+
+        expect(menu.prefix("el").show()).toBe(true);
+        expect(menu.slider().length()).toEqual(2);
+
+        expect(menu.prefix("e").show()).toBe(true);
+        expect(menu.slider().length()).toEqual(6);
+
+        expect(menu.prefix("").show()).toBe(true);
+        expect(menu.slider().length()).toEqual(9);
+      });
+
+
+      it('should correctly move the list on mousemove', function () {
+        var list = [
+	        ["Constituency"],
+	        ["Lemma"],
+	        ["Morphology"],
+	        ["Part-of-Speech"],
+	        ["Syntax"]
+        ];
+
+        var menu = KorAP.OwnMenu.create(list);
+
+        menu._firstActive = true;
+        menu.limit(3);
+
+        expect(menu.show()).toBe(true);
+
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.slider().offset()).toEqual(0);
+
+        // This will normally be done on 
+        menu.slider()._rulerHeight = 100;
+        menu.slider()._sliderHeight = 40;
+        menu.slider()._event.initOffset = 0;
+        expect(menu.slider().length()).toEqual(5);
+
+        menu.slider().movetoRel(10);
+        expect(menu.slider().offset()).toEqual(0);
+
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(0).lcField()).toEqual(' constituency');
+        menu.slider().movetoRel(24);
+        expect(menu.slider().offset()).toEqual(0);
+        menu.slider().movetoRel(25);
+        expect(menu.slider().offset()).toEqual(0);
+
+        menu.slider().movetoRel(30);
+        expect(menu.slider().offset()).toEqual(1);
+        menu.slider().movetoRel(59);
+        expect(menu.slider().offset()).toEqual(1);
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(0).lcField()).toEqual(' lemma');
+
+        // Everything > 60 is offset 2
+        menu.slider().movetoRel(60);
+        expect(menu.slider().offset()).toEqual(2);
+        menu.slider().movetoRel(180);
+        expect(menu.slider().offset()).toEqual(2);
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(0).lcField()).toEqual(' morphology');
+
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+
+        // When the active cursor moves again - scroll to viewport
+        // cursor is before viewport
+        menu.next();
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(0).lcField()).toEqual(' lemma');
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).active()).toBe(false);
+
+        menu.next();
+        menu.next();
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(0).lcField()).toEqual(' lemma');
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(1).lcField()).toEqual(' morphology');
+        expect(menu.shownItem(2).active()).toBe(true);
+        expect(menu.shownItem(2).lcField()).toEqual(' part-of-speech');
+
+        menu.slider().movetoRel(0);
+        expect(menu.slider().offset()).toEqual(0);
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(0).lcField()).toEqual(' constituency');
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(1).lcField()).toEqual(' lemma');
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(2).lcField()).toEqual(' morphology');
+
+        // cursor is after viewport
+        menu.next();
+        expect(menu.slider().offset()).toEqual(2);
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(0).lcField()).toEqual(' morphology');
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(1).lcField()).toEqual(' part-of-speech');
+        expect(menu.shownItem(2).active()).toBe(true);
+        expect(menu.shownItem(2).lcField()).toEqual(' syntax');
+
+        menu.slider().movetoRel(0);
+        expect(menu.slider().offset()).toEqual(0);
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(0).lcField()).toEqual(' constituency');
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(1).lcField()).toEqual(' lemma');
+        expect(menu.shownItem(2).active()).toBe(false);
+        expect(menu.shownItem(2).lcField()).toEqual(' morphology');
+
+        menu.prev();
+        expect(menu.slider().offset()).toEqual(2);
+        expect(menu.shownItem(0).lcField()).toEqual(' morphology');
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).lcField()).toEqual(' part-of-speech');
+        expect(menu.shownItem(1).active()).toBe(true);
+        expect(menu.shownItem(2).lcField()).toEqual(' syntax');
+        expect(menu.shownItem(2).active()).toBe(false);
+
+        menu.prev();
+        menu.prev();
+        expect(menu.slider().offset()).toEqual(1);
+        expect(menu.shownItem(0).lcField()).toEqual(' lemma');
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).lcField()).toEqual(' morphology');
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).lcField()).toEqual(' part-of-speech');
+        expect(menu.shownItem(2).active()).toBe(false);
+
+        menu.slider().movetoRel(100);
+        expect(menu.slider().offset()).toEqual(2);
+        expect(menu.shownItem(0).lcField()).toEqual(' morphology');
+        expect(menu.shownItem(0).active()).toBe(false);
+        expect(menu.shownItem(1).lcField()).toEqual(' part-of-speech');
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).lcField()).toEqual(' syntax');
+        expect(menu.shownItem(2).active()).toBe(false);
+
+        menu.prev();
+        expect(menu.slider().offset()).toEqual(0);
+        expect(menu.shownItem(0).lcField()).toEqual(' constituency');
+        expect(menu.shownItem(0).active()).toBe(true);
+        expect(menu.shownItem(1).lcField()).toEqual(' lemma');
+        expect(menu.shownItem(1).active()).toBe(false);
+        expect(menu.shownItem(2).lcField()).toEqual(' morphology');
+        expect(menu.shownItem(2).active()).toBe(false);
+      });
+    });
+
+    describe('KorAP.MenuBenchmark', function () {
+      var menu = menuClass.create([
+        ['Titel', 'title'],
+        ['Untertitel', 'subTitle'],
+        ['Veröffentlichungsdatum', 'pubDate'],
+        ['Länge', 'length'],
+        ['Autor', 'author']
+      ]);
+
+      menu.limit(3).show();
+
+      // Some actions
+      menu.next();
+      menu.next();
+      menu.prev();
+      menu.prev();
+      menu.prev();
       
-      li.appendChild(name);
-
-      // Create description
-      if (this._desc !== undefined) {
-	var desc = document.createElement("span");
-	desc.appendChild(document.createTextNode(this._desc));
-	li.appendChild(desc);
-      };
-      return this._element = li;
-    }
-  };
-
-
-  // HintMenu
-  KorAP.HintMenu = {
-    create : function (context, list) {
-      var obj = Object.create(menuClass)
-	.upgradeTo(KorAP.HintMenu)
-	._init(list, {itemClass : KorAP.HintMenuItem});
-      obj._context = context;
-      return obj;
-    }
-  };
-
-
-  // The ComplexMenuItem
-  KorAP.ComplexMenuItem = {
-    create : function (params) {
-      return Object.create(menuItemClass)
-	.upgradeTo(KorAP.ComplexMenuItem)
-	._init(params);
-    },
-    content : function (content) {
-      if (arguments.length === 1) {
-	this._content = content;
-      };
-      return this._content;
-    },
-    _init : function (params) {
-      if (params[0] === undefined)
-	throw new Error("Missing parameters");
-
-      var r = document.createElement('div');
-      for (var i = 1; i <= params.length; i++) {
-	var h = document.createElement('h' + i);
-	h.appendChild(document.createTextNode(params[i-1]));
-	r.appendChild(h);
-      };
-
-      this._content = r;
-      this._lcField = ' ' + this.content().textContent.toLowerCase();
-
-      return this;
-    }
-  };
-
-
-  describe('KorAP.MenuItem', function () {
-    it('should be initializable', function () {
-      expect(
-	function() { menuItemClass.create([]) }
-      ).toThrow(new Error("Missing parameters"));
-
-      expect(
-	function() { KorAP.OwnMenuItem.create([]) }
-      ).toThrow(new Error("Missing parameters"));
-
-      var mi = KorAP.OwnMenuItem.create(["Baum"]);
-      expect(mi.element().firstChild.nodeValue).toEqual('Baum');
-      expect(mi.lcField()).toEqual(' baum');
-    });
-
-    it('shouldn\'t have a reference to the menu', function () {
-      var menuItem = KorAP.OwnMenuItem.create(['Test']);
-      expect(menuItem.menu()).toBe(undefined);
-    });
-
-    it('should be activatable and deactivateable by class', function () {
-      var menuItem = KorAP.OwnMenuItem.create(['Test']);
-
-      expect(menuItem.active()).toBe(false);
-      expect(menuItem.element().getAttribute("class")).toBe(null);
-      menuItem.active(true);
-      expect(menuItem.active()).toBe(true);
-      expect(menuItem.element().getAttribute("class")).toEqual("active");
-      menuItem.active(false); // Is active
-      expect(menuItem.active()).toBe(false);
-      expect(menuItem.element().getAttribute("class")).toEqual("");
-      menuItem.active(true);
-      expect(menuItem.active()).toBe(true);
-      expect(menuItem.element().getAttribute("class")).toEqual("active");
-
-      menuItem = KorAP.OwnMenuItem.create(['Spiegel']);
-      expect(menuItem.active()).toBe(false);
-      expect(menuItem.element().getAttribute("class")).toBe(null);
-      menuItem.active(false); // Is not active
-      expect(menuItem.active()).toBe(false);
-      expect(menuItem.element().getAttribute("class")).toBe(null);
-    });
-
-    it('should be set to boundary', function () {
-      var menuItem = KorAP.OwnMenuItem.create(['CoreNLP']);
-      expect(menuItem.active()).toBe(false);
-      expect(menuItem.element().getAttribute("class")).toBe(null);
-
-      // Set active
-      menuItem.active(true);
-      expect(menuItem.active()).toBe(true);
-      expect(menuItem.noMore()).toBe(false);
-      expect(menuItem.element().getAttribute("class")).toEqual("active");
-
-      // Set no more
-      menuItem.noMore(true);
-      expect(menuItem.active()).toBe(true);
-      expect(menuItem.noMore()).toBe(true);
-      expect(menuItem.element().getAttribute("class")).toEqual("active no-more");
-
-      // No no more
-      menuItem.noMore(false);
-      expect(menuItem.active()).toBe(true);
-      expect(menuItem.noMore()).toBe(false);
-      expect(menuItem.element().getAttribute("class")).toEqual("active");
-
-      // Set no more, deactivate
-      menuItem.noMore(true);
-      menuItem.active(false);
-      expect(menuItem.active()).toBe(false);
-      expect(menuItem.noMore()).toBe(true);
-      expect(menuItem.element().getAttribute("class")).toEqual("no-more");
-
-      // Set active
-      menuItem.active(true);
-      expect(menuItem.active()).toBe(true);
-      expect(menuItem.noMore()).toBe(true);
-      expect(menuItem.element().getAttribute("class")).toEqual("no-more active");
-    });
-
-
-    it('should be highlightable', function () {
-      // Highlight in the middle
-      var menuItem = KorAP.OwnMenuItem.create(['CoreNLP']);
-      menuItem.highlight("ren");
-      expect(menuItem.element().innerHTML).toEqual("Co<mark>reN</mark>LP");
-
-      menuItem.lowlight();
-      expect(menuItem.element().innerHTML).toEqual("CoreNLP");
-
-      var plain = "<div><h1>CoreNLP</h1><h2>corenlp/</h2></div>";
-
-      // Starting highlight
-      menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/']);
-      menuItem.highlight("cor");
-      expect(menuItem.element().innerHTML).toEqual("<div><h1><mark>Cor</mark>eNLP</h1><h2><mark>cor</mark>enlp/</h2></div>");
-
-      menuItem.lowlight();
-      expect(menuItem.element().innerHTML).toEqual(plain);
-
-      // Starting highlight - short
-      menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/']);
-      menuItem.highlight("c");
-      expect(menuItem.element().innerHTML).toEqual("<div><h1><mark>C</mark>oreNLP</h1><h2><mark>c</mark>orenlp/</h2></div>");
-
-      menuItem.lowlight();
-      expect(menuItem.element().innerHTML).toEqual(plain);
-
-      // Highlight at the end
-      menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/']);
-      menuItem.highlight("nlp");
-      expect(menuItem.element().innerHTML).toEqual("<div><h1>Core<mark>NLP</mark></h1><h2>core<mark>nlp</mark>/</h2></div>");
-
-      menuItem.lowlight();
-      expect(menuItem.element().innerHTML).toEqual(plain);
-
-      // Highlight at the end - short
-      menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/']);
-      menuItem.highlight("p");
-      expect(menuItem.element().innerHTML).toEqual("<div><h1>CoreNL<mark>P</mark></h1><h2>corenl<mark>p</mark>/</h2></div>");
-
-      menuItem.lowlight();
-      expect(menuItem.element().innerHTML).toEqual(plain);
-
-      // No highlight
-      menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/']);
-      menuItem.highlight("xp");
-      expect(menuItem.element().innerHTML).toEqual(plain);
-
-      menuItem.lowlight();
-      expect(menuItem.element().innerHTML).toEqual(plain);
-
-      // Highlight in the middle - first
-      menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
-      menuItem.highlight("ren");
-      expect(menuItem.element().innerHTML).toEqual("<div><h1>Co<mark>reN</mark>LP</h1><h2>co<mark>ren</mark>lp/</h2><h3>This is my Example</h3></div>");
-
-      plain = "<div><h1>CoreNLP</h1><h2>corenlp/</h2><h3>This is my Example</h3></div>"
-
-      menuItem.lowlight();
-      expect(menuItem.element().innerHTML).toEqual(plain);
-
-      // Highlight in the middle - second
-      menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
-      menuItem.highlight("ampl");
-      expect(menuItem.element().innerHTML).toEqual("<div><h1>CoreNLP</h1><h2>corenlp/</h2><h3>This is my Ex<mark>ampl</mark>e</h3></div>");
-
-      menuItem.lowlight();
-      expect(menuItem.element().innerHTML).toEqual(plain);
-
-      // Highlight in the middle - both
-      menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
-      menuItem.highlight("e");
-      expect(menuItem.element().innerHTML).toEqual("<div><h1>Cor<mark>e</mark>NLP</h1><h2>cor<mark>e</mark>nlp/</h2><h3>This is my <mark>E</mark>xampl<mark>e</mark></h3></div>");
-
-      menuItem.lowlight();
-      expect(menuItem.element().innerHTML).toEqual(plain);
-
-      // Highlight in the end - second
-      menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
-      menuItem.highlight("le");
-      expect(menuItem.element().innerHTML).toEqual("<div><h1>CoreNLP</h1><h2>corenlp/</h2><h3>This is my Examp<mark>le</mark></h3></div>");
-
-      menuItem.lowlight();
-      expect(menuItem.element().innerHTML).toEqual(plain);
-
-      // Highlight at the beginning - second
-      menuItem = KorAP.ComplexMenuItem.create(['CoreNLP', 'corenlp/', 'This is my Example']);
-      menuItem.highlight("this");
-      expect(menuItem.element().innerHTML).toEqual("<div><h1>CoreNLP</h1><h2>corenlp/</h2><h3><mark>This</mark> is my Example</h3></div>");
-
-      menuItem.lowlight();
-      expect(menuItem.element().innerHTML).toEqual(plain);
-    });
-  });
-
-
-  describe('KorAP.Menu', function () {
-    var list = [
-      ["Constituency", "c=", "Example 1"],
-      ["Lemma", "l="],
-      ["Morphology", "m=", "Example 2"],
-      ["Part-of-Speech", "p="],
-      ["Syntax", "syn="]
-    ];
-
-    var demolist = [
-      ['Titel', 'title'],
-      ['Untertitel', 'subTitle'],
-      ['Veröffentlichungsdatum', 'pubDate'],
-      ['Länge', 'length'],
-      ['Autor', 'author']
-    ];
-
-    var demolonglist = [
-      ['Titel', 'title'],
-      ['Untertitel', 'subTitle'],
-      ['Veröffentlichungsdatum', 'pubDate'],
-      ['Länge', 'length'],
-      ['Autor', 'author'],
-      ['Genre', 'genre'],
-      ['corpusID', 'corpusID'],
-      ['docID', 'docID'],
-      ['textID', 'textID'],
-    ];
-
-    it('should be initializable', function () {
-      var list = [
-	["Constituency"],
-	["Lemma"],
-	["Morphology"],
-	["Part-of-Speech"],
-	["Syntax"]
-      ];
-
-      var menu = KorAP.OwnMenu.create(list);
-      menu._firstActive = true;
-      expect(menu.itemClass()).toEqual(KorAP.OwnMenuItem);
-      expect(menu.element().nodeName).toEqual('UL');
-      expect(menu.element().classList.contains('visible')).toBeFalsy();
-      expect(menu.limit()).toEqual(8);
-
-      menu.limit(9);
-      expect(menu.limit()).toEqual(9);
-
-      menu.limit(8);
-
-      // view
-      menu.show();
-
-      // First element in list
-      expect(menu.item(0).active()).toBe(true);
-      expect(menu.item(0).noMore()).toBe(true);
-
-      // Middle element in list
-      expect(menu.item(2).active()).toBe(false);
-      expect(menu.item(2).noMore()).toBe(false);
-
-      // Last element in list
-      expect(menu.item(menu.length() - 1).active()).toBe(false);
-      expect(menu.item(menu.length() - 1).noMore()).toBe(true);
-    });
-
-    it('should have a reference to the menu', function () {
-      var menu = KorAP.HintMenu.create("cnx/", list);
-      expect(menu.item(0).menu()).toEqual(menu);
-
-      menu = KorAP.HintMenu.create("cnx/", list);
-      expect(menu.element().menu).toEqual(menu);
-    });
-
-
-    it('should be visible', function () {
-      var menu = KorAP.HintMenu.create("cnx/", list);
-      expect(menu.removeItems()).toBe(undefined);
-      menu.limit(3);
-
-      expect(menu.show()).toBe(true);
-
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Lemma</strong>");
-      expect(menu.element().childNodes[4].getAttribute("data-action")).toEqual("l=");
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
-      expect(menu.element().childNodes[6]).toBe(undefined);
-
-      // Check boundaries
-      expect(menu.element().childNodes[3].classList.contains("no-more")).toBe(true);
-      expect(menu.element().childNodes[4].classList.contains("no-more")).toBe(false);
-      expect(menu.element().childNodes[5].classList.contains("no-more")).toBe(false);
-    });
-
-    it('should be filterable', function () {
-      var menu = KorAP.HintMenu.create("cnx/", list);
-      menu.limit(3);
-      expect(menu.prefix("o").show()).toBe(true);
-      expect(menu.element().childNodes[0].innerHTML).toEqual("o");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>C<mark>o</mark>nstituency</strong><span>Example 1</span>");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>");
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Part-<mark>o</mark>f-Speech</strong>");
-      expect(menu.element().childNodes[6]).toBe(undefined);
-
-      // Check boundaries
-      expect(menu.element().childNodes[3].classList.contains("no-more")).toBe(true);
-      expect(menu.element().childNodes[4].classList.contains("no-more")).toBe(false);
-      expect(menu.element().childNodes[5].classList.contains("no-more")).toBe(true);
-
-      menu.limit(2);
-
-      expect(menu.prefix("o").show()).toBe(true);
-      expect(menu.element().childNodes[0].innerHTML).toEqual("o");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>C<mark>o</mark>nstituency</strong><span>Example 1</span>");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>");
-      expect(menu.element().childNodes[5]).toBe(undefined);
-
-      // Check boundaries
-      expect(menu.element().childNodes[3].classList.contains("no-more")).toBe(true);
-      expect(menu.element().childNodes[4].classList.contains("no-more")).toBe(false);
-      expect(menu.element().childNodes[5]).toBe(undefined);
-
-      expect(menu.prefix("e").show()).toBe(true);
-      expect(menu.element().childNodes[0].innerHTML).toEqual("e");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constitu<mark>e</mark>ncy</strong><span><mark>E</mark>xampl<mark>e</mark> 1</span>");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span><mark>E</mark>xampl<mark>e</mark> 2</span>");
-      expect(menu.element().childNodes[5]).toBe(undefined);
-
-      menu.limit(5);
-      expect(menu.prefix("a").show()).toBe(true);
-      expect(menu.element().childNodes[0].innerHTML).toEqual("a");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span>Ex<mark>a</mark>mple 1</span>");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Lemm<mark>a</mark></strong>");
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Morphology</strong><span>Ex<mark>a</mark>mple 2</span>");
-      expect(menu.element().childNodes[6].innerHTML).toEqual("<strong>P<mark>a</mark>rt-of-Speech</strong>");
-      expect(menu.element().childNodes[7].innerHTML).toEqual("<strong>Synt<mark>a</mark>x</strong>");
-      expect(menu.element().childNodes[8]).toBe(undefined);
-    });
-
-
-    it('should be nextable', function () {
-      var menu = KorAP.HintMenu.create("cnx/", list);
-      menu._firstActive = true;
-
-      // Show only 3 items
-      menu.limit(3);
-      expect(menu.show()).toBe(true);
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Lemma</strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.element().childNodes[6]).toBe(undefined);
-
-      // Activate next (1)
-      menu.next();
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Lemma</strong>");
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.element().childNodes[6]).toBe(undefined);
-
-      // Activate next (2)
-      menu.next();
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Lemma</strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
-      expect(menu.shownItem(2).active()).toBe(true);
-      expect(menu.element().childNodes[6]).toBe(undefined);
-
-      // Activate next (3)
-      // scroll!
-      menu.next();
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Lemma</strong>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Part-of-Speech</strong>");
-      expect(menu.shownItem(2).active()).toBe(true);
-      expect(menu.element().childNodes[6]).toBe(undefined);
-
-      // Activate next (4)
-      menu.next();
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Part-of-Speech</strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Syntax</strong>");
-      expect(menu.shownItem(2).active()).toBe(true);
-      expect(menu.element().childNodes[6]).toBe(undefined);
-
-      // Activate next (5) - ROLL
-      menu.next();
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Lemma</strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.element().childNodes[6]).toBe(undefined);
-
-      // Active next (6)
-      menu.next();
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Lemma</strong>");
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.element().childNodes[6]).toBe(undefined);
-    });
-
-    it('should be nextable without active field', function () {
-      var menu = KorAP.HintMenu.create("cnx/", list);
-      menu.limit(3);
-      expect(menu.show()).toBe(true);
-      menu.next();
-      expect(menu.shownItem(0).active()).toEqual(true);
-    });
-
-
-    it('should be prevable', function () {
-      var menu = KorAP.HintMenu.create("cnx/", list);
-      menu._firstActive = true;
-      menu.limit(3);
-      expect(menu.show()).toBe(true);
-
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span>Example 1</span>");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Lemma</strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.element().childNodes[6]).toBe(undefined);
-
-      // Activate prev (1) - roll to bottom
-      menu.prev();
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Part-of-Speech</strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Syntax</strong>");
-      expect(menu.shownItem(2).active()).toBe(true);
-      expect(menu.element().childNodes[6]).toBe(undefined);
-
-      // Activate prev (2)
-      menu.prev();
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Morphology</strong><span>Example 2</span>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Part-of-Speech</strong>");
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Syntax</strong>");
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.element().childNodes[6]).toBe(undefined);
-
-      // Activate prev (3)
-      menu.prev();
-      expect(menu.shownItem(0).name()).toEqual("Morphology");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).name()).toEqual("Part-of-Speech");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).name()).toEqual("Syntax");
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.element().childNodes[6]).toBe(undefined);
-
-      // Activate prev (4)
-      menu.prev();
-      expect(menu.shownItem(0).name()).toEqual("Lemma");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).name()).toEqual("Morphology");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).name()).toEqual("Part-of-Speech");
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.element().childNodes[6]).toBe(undefined);
-
-      // Activate prev (5)
-      menu.prev();
-      expect(menu.shownItem(0).name()).toEqual("Constituency");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).name()).toEqual("Lemma");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).name()).toEqual("Morphology");
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.element().childNodes[6]).toBe(undefined);
-
-      // Activate next (1)
-      menu.next();
-      expect(menu.shownItem(0).name()).toEqual("Constituency");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).name()).toEqual("Lemma");
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.shownItem(2).name()).toEqual("Morphology");
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.element().childNodes[6]).toBe(undefined);
-
-      // Activate prev (6)
-      menu.prev();
-
-      // Activate prev (7)
-      menu.prev();
-      expect(menu.shownItem(0).name()).toEqual("Morphology");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).name()).toEqual("Part-of-Speech");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).name()).toEqual("Syntax");
-      expect(menu.shownItem(2).active()).toBe(true);
-      expect(menu.element().childNodes[6]).toBe(undefined);
-    });
-
-    it('should be prevable without active field', function () {
-      var menu = KorAP.HintMenu.create("cnx/", list);
-      menu.limit(3);
-      expect(menu.show()).toBe(true);
-      menu.prev();
-      expect(menu.shownItem(2).active()).toEqual(true);
-      expect(menu.shownItem(2).lcField()).toEqual(' syntax');
-    });
-
-    it('should be navigatable and filterable (prefix = "o")', function () {
-      var menu = KorAP.HintMenu.create("cnx/", list);
-      menu._firstActive = true;
-      menu.limit(2);
-
-      expect(menu.prefix("o").show()).toBe(true);
-      expect(menu.shownItem(0).name()).toEqual("Constituency");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>C<mark>o</mark>nstituency</strong><span>Example 1</span>");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).name()).toEqual("Morphology");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-      // Next (1)
-      menu.next();
-      expect(menu.shownItem(0).name()).toEqual("Constituency");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>C<mark>o</mark>nstituency</strong><span>Example 1</span>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).name()).toEqual("Morphology");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>");
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-      // Next (2)
-      menu.next();
-      expect(menu.shownItem(0).name()).toEqual("Morphology");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).name()).toEqual("Part-of-Speech");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Part-<mark>o</mark>f-Speech</strong>");
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-      // Next (3) - to prefix
-      menu.next();
-      expect(menu.shownItem(0).name()).toEqual("Morphology");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).name()).toEqual("Part-of-Speech");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Part-<mark>o</mark>f-Speech</strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-      menu.next();
-      expect(menu.shownItem(0).name()).toEqual("Constituency");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>C<mark>o</mark>nstituency</strong><span>Example 1</span>");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).name()).toEqual("Morphology");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>M<mark>o</mark>rph<mark>o</mark>l<mark>o</mark>gy</strong><span>Example 2</span>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2)).toBe(undefined);
-    });
-
-
-    it('should be navigatable and filterable (prefix = "ex", "e")', function () {
-      var menu = KorAP.HintMenu.create("cnx/", list);
-      menu._firstActive = true;
-
-      menu.limit(2);
-      expect(menu.prefix("ex").show()).toBe(true);
-
-      expect(menu.shownItem(0).name()).toEqual("Constituency");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span><mark>Ex</mark>ample 1</span>");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).name()).toEqual("Morphology");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span><mark>Ex</mark>ample 2</span>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-      // Next (1)
-      menu.next();
-      expect(menu.shownItem(0).name()).toEqual("Constituency");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span><mark>Ex</mark>ample 1</span>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).name()).toEqual("Morphology");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span><mark>Ex</mark>ample 2</span>");
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-      // Next (2)
-      menu.next();
-
-      expect(menu.prefix()).toEqual('ex');
-      expect(menu.shownItem(0).name()).toEqual("Constituency");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constituency</strong><span><mark>Ex</mark>ample 1</span>");
-      expect(menu.shownItem(0).active()).toBe(false);
-
-      expect(menu.shownItem(1).name()).toEqual("Morphology");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span><mark>Ex</mark>ample 2</span>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-      // Reset limit
-      menu.limit(5);
-
-      // Change show
-      expect(menu.prefix("e").show()).toBe(true);
-      expect(menu._prefix.active()).toBe(false);
-      expect(menu.shownItem(0).name()).toEqual("Constituency");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constitu<mark>e</mark>ncy</strong><span><mark>E</mark>xampl<mark>e</mark> 1</span>");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).name()).toEqual("Morphology");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span><mark>E</mark>xampl<mark>e</mark> 2</span>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-      // Next (1)
-      menu.next();
-      expect(menu._prefix.active()).toBe(false);
-      expect(menu.prefix()).toEqual('e');
-      expect(menu.shownItem(0).name()).toEqual("Constituency");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constitu<mark>e</mark>ncy</strong><span><mark>E</mark>xampl<mark>e</mark> 1</span>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).name()).toEqual("Morphology");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span><mark>E</mark>xampl<mark>e</mark> 2</span>");
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-      // Next (2)
-      menu.next();
-      expect(menu._prefix.active()).toBe(true);
-      expect(menu.shownItem(0).name()).toEqual("Constituency");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constitu<mark>e</mark>ncy</strong><span><mark>E</mark>xampl<mark>e</mark> 1</span>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).name()).toEqual("Morphology");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span><mark>E</mark>xampl<mark>e</mark> 2</span>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-      // Next (3)
-      menu.next();
-      expect(menu._prefix.active()).toBe(false);
-      expect(menu.shownItem(0).name()).toEqual("Constituency");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Constitu<mark>e</mark>ncy</strong><span><mark>E</mark>xampl<mark>e</mark> 1</span>");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).name()).toEqual("Morphology");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Morphology</strong><span><mark>E</mark>xampl<mark>e</mark> 2</span>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2)).toBe(undefined);
-    });
-
-
-    it('should choose prefix with failing prefix (1)', function () {
-      var menu = KorAP.HintMenu.create("cnx/", list);
-      menu.limit(2);
-      expect(menu.prefix("exit").show()).toBe(true);
-      expect(menu.element().querySelector('li')).toBe(null);
-      expect(menu.shownItem(0)).toBeUndefined();
-      expect(menu._prefix.active()).toBe(true);
-    });
-
-
-    it('should choose prefix with failing prefix (2)', function () {
-      var menu = KorAP.HintMenu.create("cnx/", list);
-      menu.limit(2);
-      expect(menu.show()).toBe(true);
-      expect(menu.prefix("exit").show()).toBe(true);
-      expect(menu.element().querySelector('li')).toBe(null);
-      expect(menu.shownItem(0)).toBeUndefined();
-      expect(menu._prefix.active()).toBe(true);
-    });
-
-    it('should ignore navigation with failing prefix', function () {
-      var menu = KorAP.HintMenu.create("cnx/", list);
-      menu.limit(2);
-      expect(menu.show()).toBe(true);
-
-      menu.next();
-
-      expect(menu.prefix("exit").show()).toBe(true);
-      expect(menu.element().querySelector('li')).toBe(null);
-      expect(menu.shownItem(0)).toBeUndefined();
-      expect(menu._prefix.active()).toBe(true);
-
-      menu.next();
-      expect(menu._prefix.active()).toBe(true);
-
-      menu.prev();
-      expect(menu._prefix.active()).toBe(true);
-
-    });
-
-    it('should be navigatable with prefix', function () {
-      var menu = KorAP.HintMenu.create("cnx/", demolist);
-      menu._firstActive = true;
-
-      menu.limit(3);
-
-      expect(menu.show()).toBe(true);
-      expect(menu.prefix()).toEqual("");
-
-      expect(menu.shownItem(0).name()).toEqual("Titel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Titel</strong>");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertitel</strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).name()).toEqual("Veröffentlichungsdatum");
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Veröffentlichungsdatum</strong>");
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(3)).toBe(undefined);
-
-      menu._prefix.add('a');
-      expect(menu.show()).toBe(true);
-      expect(menu.prefix()).toEqual("a");
-      expect(menu.shownItem(0).name()).toEqual("Autor");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong><mark>A</mark>utor</strong>");
-
-      menu._prefix.add('u');
-      expect(menu.show()).toBe(true);
-      expect(menu.prefix()).toEqual("au");
-      expect(menu.shownItem(0).name()).toEqual("Autor");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong><mark>Au</mark>tor</strong>");
-
-      menu._prefix.chop();
-      expect(menu.show()).toBe(true);
-      expect(menu.prefix()).toEqual("a");
-      expect(menu.shownItem(0).name()).toEqual("Autor");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong><mark>A</mark>utor</strong>");
-
-      menu._prefix.chop();
-      expect(menu.show()).toBe(true);
-      expect(menu.prefix()).toEqual("");
-      expect(menu.shownItem(0).name()).toEqual("Titel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Titel</strong>");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertitel</strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).name()).toEqual("Veröffentlichungsdatum");
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Veröffentlichungsdatum</strong>");
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(3)).toBe(undefined);
-
-      // Forward
-      menu._prefix.chop();
-      expect(menu.show()).toBe(true);
-      expect(menu.prefix()).toEqual("");
-      expect(menu.shownItem(0).name()).toEqual("Titel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Titel</strong>");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertitel</strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).name()).toEqual("Veröffentlichungsdatum");
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Veröffentlichungsdatum</strong>");
-      expect(menu.shownItem(2).active()).toBe(false);
-
-      // Forward
-      menu.next();
-      expect(menu.prefix()).toEqual("");
-      expect(menu.shownItem(0).name()).toEqual("Titel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Titel</strong>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertitel</strong>");
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.shownItem(2).name()).toEqual("Veröffentlichungsdatum");
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Veröffentlichungsdatum</strong>");
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(3)).toBe(undefined);
-
-      // Forward
-      menu.next();
-      expect(menu.prefix()).toEqual("");
-      expect(menu.shownItem(0).name()).toEqual("Titel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Titel</strong>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertitel</strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).name()).toEqual("Veröffentlichungsdatum");
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Veröffentlichungsdatum</strong>");
-      expect(menu.shownItem(2).active()).toBe(true);
-      expect(menu.shownItem(3)).toBe(undefined);
-
-      // Forward
-      menu.next();
-      expect(menu.prefix()).toEqual("");
-      expect(menu.shownItem(0).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Untertitel</strong>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).name()).toEqual("Veröffentlichungsdatum");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Veröffentlichungsdatum</strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).name()).toEqual("Länge");
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Länge</strong>");
-      expect(menu.shownItem(2).active()).toBe(true);
-      expect(menu.shownItem(3)).toBe(undefined);
-
-      // Forward
-      menu.next();
-      expect(menu.prefix()).toEqual("");
-      expect(menu.shownItem(0).name()).toEqual("Veröffentlichungsdatum");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Veröffentlichungsdatum</strong>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).name()).toEqual("Länge");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Länge</strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).name()).toEqual("Autor");
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Autor</strong>");
-      expect(menu.shownItem(2).active()).toBe(true);
-      expect(menu.shownItem(3)).toBe(undefined);
-
-      // Forward
-      menu.next();
-      expect(menu.prefix()).toEqual("");
-      expect(menu.shownItem(0).name()).toEqual("Titel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Titel</strong>");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertitel</strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).name()).toEqual("Veröffentlichungsdatum");
-      expect(menu.element().childNodes[5].innerHTML).toEqual("<strong>Veröffentlichungsdatum</strong>");
-      expect(menu.shownItem(2).active()).toBe(false);
-    });
-
-
-    it('should be navigatable with a prefix (1)', function () {
-      var menu = KorAP.HintMenu.create("cnx/", demolist);
-      menu._firstActive = true;
-
-      menu.limit(3);
-
-      expect(menu.show()).toBe(true);
-      expect(menu.prefix()).toEqual("");
-
-      // Add prefix in uppercase - but check in lowercase
-      menu.prefix('El');
-      expect(menu.show()).toBe(true);
-
-      expect(menu.prefix()).toEqual("El");
-      expect(menu._prefix.active()).toEqual(false);
-      expect(menu.shownItem(0).name()).toEqual("Titel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-      // Forward
-      menu.next();
-      expect(menu.prefix()).toEqual("El");
-      expect(menu._prefix.active()).toEqual(false);
-      expect(menu.shownItem(0).name()).toEqual("Titel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-      // Forward
-      menu.next();
-      expect(menu.prefix()).toEqual("El");
-      expect(menu._prefix.active()).toEqual(true);
-      expect(menu.shownItem(0).name()).toEqual("Titel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-      // Backward
-      menu.prev();
-      expect(menu.prefix()).toEqual("El");
-      expect(menu._prefix.active()).toEqual(false);
-      expect(menu.shownItem(0).name()).toEqual("Titel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
-      expect(menu.shownItem(0).active()).toBe(false);
-
-      expect(menu.shownItem(1).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.shownItem(2)).toBe(undefined);
-    });
-
-
-    it('should be navigatable with a prefix (2)', function () {
-      var menu = KorAP.HintMenu.create("cnx/", demolist);
-      menu._firstActive = true;
-
-      menu.limit(3);
-      expect(menu.show()).toBe(true);
-      expect(menu.prefix()).toEqual("");
-      menu.prefix('el');
-      expect(menu.show()).toBe(true);
-
-      expect(menu.prefix()).toEqual("el");
-      expect(menu._prefix.active()).toEqual(false);
-      expect(menu.shownItem(0).name()).toEqual("Titel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-      // Backward
-      menu.prev();
-      expect(menu._prefix.active()).toEqual(true);
-
-      expect(menu.shownItem(0).name()).toEqual("Titel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
-      expect(menu.shownItem(0).active()).toBe(false);
-
-      expect(menu.shownItem(1).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-      // Backward
-      menu.prev();
-      expect(menu._prefix.active()).toEqual(false);
-      expect(menu.shownItem(0).name()).toEqual("Titel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.shownItem(2)).toBe(undefined);
-    });
-
-    it('should be navigatable with a prefix (3)', function () {
-      var menu = KorAP.HintMenu.create("cnx/", demolist);
-      menu._firstActive = true;
-      menu.limit(3);
-      expect(menu.show()).toBe(true);
-      expect(menu.prefix()).toEqual("");
-      menu.prefix('el');
-      expect(menu.show()).toBe(true);
-
-      expect(menu.prefix()).toEqual("el");
-      expect(menu._prefix.active()).toEqual(false);
-      expect(menu.shownItem(0).name()).toEqual("Titel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-      // Backward
-      menu.prev();
-      expect(menu._prefix.active()).toEqual(true);
-      expect(menu.shownItem(0).name()).toEqual("Titel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-
-      // Forward
-      menu.next();
-      expect(menu.prefix()).toEqual("el");
-      expect(menu._prefix.active()).toEqual(false);
-      expect(menu.shownItem(0).name()).toEqual("Titel");
-      expect(menu.element().childNodes[3].innerHTML).toEqual("<strong>Tit<mark>el</mark></strong>");
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).name()).toEqual("Untertitel");
-      expect(menu.element().childNodes[4].innerHTML).toEqual("<strong>Untertit<mark>el</mark></strong>");
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2)).toBe(undefined);
-
-    });
-
-    it('should show screens by offset', function () {
-      var menu = KorAP.HintMenu.create('cnx/', demolist);
-      menu.limit(3);
-      expect(menu.show()).toBe(true);
-
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-
-      // Highlight the first entry
-      menu.next();
-
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-
-      // Highlight the second entry
-      menu.next();
-
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(3)).toBe(undefined);
-
-      expect(menu.shownItem(0).lcField()).toEqual(' titel');
-      expect(menu.shownItem(1).lcField()).toEqual(' untertitel');
-
-      // Move to first screen
-      menu.screen(0);
-      expect(menu.shownItem(0).lcField()).toEqual(' titel');
-      expect(menu.shownItem(1).lcField()).toEqual(' untertitel');
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(3)).toBe(undefined);
-
-      // Move to second screen
-      menu.screen(1);
-      expect(menu.shownItem(0).lcField()).toEqual(' untertitel');
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(3)).toBe(undefined);
-
-      menu.screen(2);
-      expect(menu.shownItem(0).lcField()).toEqual(' veröffentlichungsdatum');
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(3)).toBe(undefined);
-
-      menu.screen(1);
-      expect(menu.shownItem(0).lcField()).toEqual(' untertitel');
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(3)).toBe(undefined);
-    });
-
-    it('should show screens by offset when prefixed', function () {
-      var menu = KorAP.HintMenu.create('cnx/', demolist);
-      menu.limit(3);
-      expect(menu.prefix("e").show()).toBe(true);
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-
-      expect(menu.shownItem(0).element().innerHTML).toEqual('<strong>Tit<mark>e</mark>l</strong>');
-      menu.screen(1);
-      expect(menu.shownItem(0).element().innerHTML).toEqual('<strong>Unt<mark>e</mark>rtit<mark>e</mark>l</strong>');
-    });
-
-
-    it('should be page downable', function () {
-      var menu = KorAP.OwnMenu.create(demolonglist);
-      menu.limit(3);
-
-      expect(menu.show(0)).toBe(true);
-
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(0).lcField()).toEqual(' titel');
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(3)).toBe(undefined);
-
       menu.pageDown();
-
-      expect(menu.shownItem(0).lcField()).toEqual(' länge');
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-
-      menu.pageDown();
-
-      expect(menu.shownItem(0).lcField()).toEqual(' corpusid');
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-
-      // Doesn't matter
-      menu.pageDown();
-
-      expect(menu.shownItem(0).lcField()).toEqual(' corpusid');
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-    });
-
-    it('should be page downable with prefix', function () {
-      var menu = KorAP.OwnMenu.create(demolonglist);
-      menu.limit(3);
-
-      expect(menu.prefix('e').show(0)).toBe(true);
-
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(0).lcField()).toEqual(' titel');
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(1).lcField()).toEqual(' untertitel');
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(2).lcField()).toEqual(' veröffentlichungsdatum');
-      expect(menu.shownItem(3)).toBe(undefined);
-
-      menu.pageDown();
-
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(0).lcField()).toEqual(' länge');
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(1).lcField()).toEqual(' genre');
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(2).lcField()).toEqual(' textid');
-
-      // Doesn't matter
-      menu.pageDown();
-
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(0).lcField()).toEqual(' länge');
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(1).lcField()).toEqual(' genre');
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(2).lcField()).toEqual(' textid');
-    });
-
-
-    it('should be page upable', function () {
-      var menu = KorAP.OwnMenu.create(demolonglist);
-      menu.limit(3);
-
-      // Choose the final value
-      expect(menu.show(1000)).toBe(true);
-
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(true);
-      expect(menu.shownItem(2).lcField()).toEqual(' textid');
-      expect(menu.shownItem(3)).toBe(undefined);
-
       menu.pageUp();
 
-      expect(menu.shownItem(0).lcField()).toEqual(' länge');
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-
-      menu.pageUp();
-
-      expect(menu.shownItem(0).lcField()).toEqual(' titel');
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-
-      // Doesn't matter
-      menu.pageUp();
-
-      expect(menu.shownItem(0).lcField()).toEqual(' titel');
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-    });
-
-    it('should be page upable with prefix', function () {
-      var menu = KorAP.OwnMenu.create(demolonglist);
-      menu.limit(3);
-
-      // Choose the final value
-      expect(menu.prefix("e").show(1000)).toBe(true);
-
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(0).lcField()).toEqual(' länge');
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(1).lcField()).toEqual(' genre');
-      expect(menu.shownItem(2).active()).toBe(true);
-      expect(menu.shownItem(2).lcField()).toEqual(' textid');
-      expect(menu.shownItem(3)).toBe(undefined);
-
-      menu.pageUp();
-
-      expect(menu.shownItem(0).lcField()).toEqual(' titel');
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(1).lcField()).toEqual(' untertitel');
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(2).lcField()).toEqual(' veröffentlichungsdatum');
-
-      // Doesn't matter
-      menu.pageUp();
-
-      expect(menu.shownItem(0).lcField()).toEqual(' titel');
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(1).lcField()).toEqual(' untertitel');
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(2).lcField()).toEqual(' veröffentlichungsdatum');
-    });
-
-    it('should scroll to a chosen value (1)', function () {
-      var menu = KorAP.OwnMenu.create(demolist);
-      menu.limit(3);
-
-      // Choose value 1
-      expect(menu.show(1)).toBe(true);
-
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(0).lcField()).toEqual(' titel');
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(3)).toBe(undefined);
-
-      // Choose value 2
-      expect(menu.show(2)).toBe(true);
-
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(0).lcField()).toEqual(' titel');
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(true);
-      expect(menu.shownItem(3)).toBe(undefined);
-    });
-
-    it('should scroll to a chosen value (2)', function () {
-      var menu = KorAP.OwnMenu.create(demolonglist);
-
-      // Choose value 3
-      expect(menu.limit(3).show(3)).toBe(true);
-      expect(menu.shownItem(0).lcField()).toEqual(' länge');
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(3)).toBe(undefined);
-    });
-
-    xit('should scroll to a chosen value after prefixing, if the chosen value is live');
-  });
-
-  describe('KorAP.Prefix', function () {
-    it('should be initializable', function () {
-      var p = prefixClass.create();
-      expect(p.element().classList.contains('pref')).toBeTruthy();
-      expect(p.isSet()).not.toBeTruthy();
-
-/*
-      expect(mi.lcField()).toEqual(' baum');
-*/
-      
-    });
-
-    it('should be modifiable', function () {
-      var p = prefixClass.create();
-      expect(p.value()).toEqual('');
-      expect(p.element().firstChild).toBeNull();
-
-      // Set string
-      expect(p.value('Test')).toEqual('Test');
-      expect(p.value()).toEqual('Test');
-      expect(p.element().firstChild.nodeValue).toEqual('Test');
-
-      // Add string
-      expect(p.add('ified')).toEqual('Testified');
-      expect(p.value()).toEqual('Testified');
-      expect(p.element().firstChild.nodeValue).toEqual('Testified');
-
-      // Clear string
-      p.clear();
-      expect(p.value()).toEqual('');
-      expect(p.element().firstChild).toBeNull();
-
-      // Set string
-      expect(p.value('Test')).toEqual('Test');
-      expect(p.value()).toEqual('Test');
-      expect(p.element().firstChild.nodeValue).toEqual('Test');
-
-      expect(p.chop()).toEqual('Tes');
-      expect(p.value()).toEqual('Tes');
-      expect(p.element().firstChild.nodeValue).toEqual('Tes');
-
-      expect(p.chop()).toEqual('Te');
-      expect(p.value()).toEqual('Te');
-      expect(p.element().firstChild.nodeValue).toEqual('Te');
-
-      expect(p.chop()).toEqual('T');
-      expect(p.value()).toEqual('T');
-      expect(p.element().firstChild.nodeValue).toEqual('T');
-
-      expect(p.chop()).toEqual('');
-      expect(p.value()).toEqual('');
-      expect(p.element().firstChild).toBeNull();
-    });
-
-    it('should be activatable', function () {
-      var p = prefixClass.create();
-      expect(p.value()).toEqual('');
-      expect(p.element().firstChild).toBeNull();
-
-      expect(p.value('Test')).toEqual('Test');
-      expect(p.element().firstChild.nodeValue).toEqual('Test');
-
-      expect(p.active()).not.toBeTruthy();
-      expect(p.element().classList.contains('active')).not.toBeTruthy();
-
-      p.active(true);
-      expect(p.active()).toBeTruthy();
-      expect(p.element().classList.contains('active')).toBeTruthy();
-    });
-  });
-
-  describe('KorAP.LengthField', function () {
-    it('should be initializable', function () {
-      var l = lengthFieldClass.create();
-      expect(l.element().classList.contains('lengthField')).toBeTruthy();
-      expect(l.element().children.length).toEqual(0);      
-    });
-
-    it('should be extensible', function () {
-      var l = lengthFieldClass.create();
-      l.add(['Baum']);
-      expect(l.element().children.length).toEqual(1);
-      expect(l.element().children[0].nodeName).toEqual('SPAN');
-      expect(l.element().children[0].textContent).toEqual('Baum--');
-      l.add(['Fragezeichen']);
-      expect(l.element().children.length).toEqual(2);
-      expect(l.element().children[1].nodeName).toEqual('SPAN');
-      expect(l.element().children[1].textContent).toEqual('Fragezeichen--');
-    });
-
-    it('should be correctly initializable', function () {
-      var list = [
-	["Constituency"],
-	["Lemma"],
-	["Morphology"],
-	["Part-of-Speech"],
-	["Syntax"]
-      ];
-
-      var menu = KorAP.OwnMenu.create(list);
-
-      expect(menu.lengthField().element().children.length).toEqual(5);
-    });
-  });
-
-  describe('KorAP.Slider', function () {
-
-    var demolonglist = [
-      ['Titel', 'title'],
-      ['Untertitel', 'subTitle'],
-      ['Veröffentlichungsdatum', 'pubDate'],
-      ['Länge', 'length'],
-      ['Autor', 'author'],
-      ['Genre', 'genre'],
-      ['corpusID', 'corpusID'],
-      ['docID', 'docID'],
-      ['textID', 'textID'],
-    ];
-
-    it('should correctly be initializable', function () {
-      var list = [
-	["Constituency"],
-	["Lemma"],
-	["Morphology"],
-	["Part-of-Speech"],
-	["Syntax"]
-      ];
-
-      var menu = KorAP.OwnMenu.create(list);
-
-      menu._firstActive = true;
-      menu.limit(3);
-
-      expect(menu.show()).toBe(true);
-
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.slider().offset()).toEqual(0);
-      expect(menu.position).toEqual(0);
-    });
-
-    it('should correctly move on arrow keys', function () {
-      var list = [
-	["Constituency"],
-	["Lemma"],
-	["Morphology"],
-	["Part-of-Speech"],
-	["Syntax"]
-      ];
-
-      var menu = KorAP.OwnMenu.create(list);
-
-      menu._firstActive = true;
-      menu.limit(3);
-
-      expect(menu.show()).toBe(true);
-
-      menu.next();
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.slider().offset()).toEqual(0);
-      expect(menu.position).toEqual(1);
-
-      menu.next();
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(true);
-      expect(menu.slider().offset()).toEqual(0);
-      expect(menu.position).toEqual(2);
-
-      menu.next();
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(true);
-      expect(menu.slider().offset()).toEqual(1);
-      expect(menu.position).toEqual(3);
-
-      menu.next();
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(true);
-      expect(menu.slider().offset()).toEqual(2);
-      expect(menu.position).toEqual(4);
-
-      menu.next();
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.slider().offset()).toEqual(0);
-      expect(menu.position).toEqual(0);
-
-      expect(menu.slider()._slider.style.height).toEqual('60%');
-    });
-
-    it('should correctly resize on prefixing', function () {
-      var menu = KorAP.OwnMenu.create(demolonglist);
-      menu._firstActive = true;
-      menu.limit(3);
-
-      expect(menu.show()).toBe(true);
-      expect(menu.slider().offset()).toEqual(0);
-      expect(menu.slider().length()).toEqual(9);
-
-      expect(menu.prefix("e").show()).toBe(true);
-      expect(menu.slider().length()).toEqual(6);
-
-      expect(menu.prefix("el").show()).toBe(true);
-      expect(menu.slider().length()).toEqual(2);
-
-      expect(menu.prefix("e").show()).toBe(true);
-      expect(menu.slider().length()).toEqual(6);
-
-      expect(menu.prefix("").show()).toBe(true);
-      expect(menu.slider().length()).toEqual(9);
-    });
-
-
-    it('should correctly move the list on mousemove', function () {
-      var list = [
-	["Constituency"],
-	["Lemma"],
-	["Morphology"],
-	["Part-of-Speech"],
-	["Syntax"]
-      ];
-
-      var menu = KorAP.OwnMenu.create(list);
-
-      menu._firstActive = true;
-      menu.limit(3);
-
-      expect(menu.show()).toBe(true);
-
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.slider().offset()).toEqual(0);
-
-      // This will normally be done on 
-      menu.slider()._rulerHeight = 100;
-      menu.slider()._sliderHeight = 40;
-      menu.slider()._event.initOffset = 0;
-      expect(menu.slider().length()).toEqual(5);
-
-      menu.slider().movetoRel(10);
-      expect(menu.slider().offset()).toEqual(0);
-
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(0).lcField()).toEqual(' constituency');
-      menu.slider().movetoRel(24);
-      expect(menu.slider().offset()).toEqual(0);
-      menu.slider().movetoRel(25);
-      expect(menu.slider().offset()).toEqual(0);
-
-      menu.slider().movetoRel(30);
-      expect(menu.slider().offset()).toEqual(1);
-      menu.slider().movetoRel(59);
-      expect(menu.slider().offset()).toEqual(1);
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(0).lcField()).toEqual(' lemma');
-
-      // Everything > 60 is offset 2
-      menu.slider().movetoRel(60);
-      expect(menu.slider().offset()).toEqual(2);
-      menu.slider().movetoRel(180);
-      expect(menu.slider().offset()).toEqual(2);
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(0).lcField()).toEqual(' morphology');
-
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-
-      // When the active cursor moves again - scroll to viewport
-      // cursor is before viewport
-      menu.next();
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(0).lcField()).toEqual(' lemma');
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).active()).toBe(false);
-
+      // There is no fourth item in the list!
+      menu.prefix('e').show(4);
       menu.next();
       menu.next();
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(0).lcField()).toEqual(' lemma');
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(1).lcField()).toEqual(' morphology');
-      expect(menu.shownItem(2).active()).toBe(true);
-      expect(menu.shownItem(2).lcField()).toEqual(' part-of-speech');
-
-      menu.slider().movetoRel(0);
-      expect(menu.slider().offset()).toEqual(0);
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(0).lcField()).toEqual(' constituency');
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(1).lcField()).toEqual(' lemma');
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(2).lcField()).toEqual(' morphology');
-
-      // cursor is after viewport
-      menu.next();
-      expect(menu.slider().offset()).toEqual(2);
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(0).lcField()).toEqual(' morphology');
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(1).lcField()).toEqual(' part-of-speech');
-      expect(menu.shownItem(2).active()).toBe(true);
-      expect(menu.shownItem(2).lcField()).toEqual(' syntax');
-
-      menu.slider().movetoRel(0);
-      expect(menu.slider().offset()).toEqual(0);
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(0).lcField()).toEqual(' constituency');
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(1).lcField()).toEqual(' lemma');
-      expect(menu.shownItem(2).active()).toBe(false);
-      expect(menu.shownItem(2).lcField()).toEqual(' morphology');
-
-      menu.prev();
-      expect(menu.slider().offset()).toEqual(2);
-      expect(menu.shownItem(0).lcField()).toEqual(' morphology');
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).lcField()).toEqual(' part-of-speech');
-      expect(menu.shownItem(1).active()).toBe(true);
-      expect(menu.shownItem(2).lcField()).toEqual(' syntax');
-      expect(menu.shownItem(2).active()).toBe(false);
-
       menu.prev();
       menu.prev();
-      expect(menu.slider().offset()).toEqual(1);
-      expect(menu.shownItem(0).lcField()).toEqual(' lemma');
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).lcField()).toEqual(' morphology');
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).lcField()).toEqual(' part-of-speech');
-      expect(menu.shownItem(2).active()).toBe(false);
-
-      menu.slider().movetoRel(100);
-      expect(menu.slider().offset()).toEqual(2);
-      expect(menu.shownItem(0).lcField()).toEqual(' morphology');
-      expect(menu.shownItem(0).active()).toBe(false);
-      expect(menu.shownItem(1).lcField()).toEqual(' part-of-speech');
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).lcField()).toEqual(' syntax');
-      expect(menu.shownItem(2).active()).toBe(false);
-
       menu.prev();
-      expect(menu.slider().offset()).toEqual(0);
-      expect(menu.shownItem(0).lcField()).toEqual(' constituency');
-      expect(menu.shownItem(0).active()).toBe(true);
-      expect(menu.shownItem(1).lcField()).toEqual(' lemma');
-      expect(menu.shownItem(1).active()).toBe(false);
-      expect(menu.shownItem(2).lcField()).toEqual(' morphology');
-      expect(menu.shownItem(2).active()).toBe(false);
     });
   });
-
-  describe('KorAP.MenuBenchmark', function () {
-    var menu = menuClass.create([
-      ['Titel', 'title'],
-      ['Untertitel', 'subTitle'],
-      ['Veröffentlichungsdatum', 'pubDate'],
-      ['Länge', 'length'],
-      ['Autor', 'author']
-    ]);
-
-    menu.limit(3).show();
-
-    // Some actions
-    menu.next();
-    menu.next();
-    menu.prev();
-    menu.prev();
-    menu.prev();
-    
-    menu.pageDown();
-    menu.pageUp();
-
-    // There is no fourth item in the list!
-    menu.prefix('e').show(4);
-    menu.next();
-    menu.next();
-    menu.prev();
-    menu.prev();
-    menu.prev();
-  });
-});
diff --git a/dev/js/spec/selectMenuSpec.js b/dev/js/spec/selectMenuSpec.js
index 3be39fd..5f0c909 100644
--- a/dev/js/spec/selectMenuSpec.js
+++ b/dev/js/spec/selectMenuSpec.js
@@ -2,48 +2,57 @@
   ['selectMenu'],
   function (selectMenuClass) {
 
+    /*
+     * Check for preselected values
+     */
+    
     describe('KorAP.SelectMenu', function () {
       var list = [
-	{
-	  content : 'Poliqarp',
-	  value : 'poliqarp',
-	  desc : 'The Polish National Corpus QL'
-	},
-	{
-	  content : 'Cosmas II',
-	  value : 'cosmas2',
-	  desc : 'The Polish National Corpus QL'
-	},
-	{
-	  content : 'Annis',
-	  value : 'annis'
-	},
-	{
-	  content : 'CQL v1.2',
-	  value : 'cql'
-	}
+	      {
+	        content : 'Poliqarp',
+	        value : 'poliqarp',
+	        desc : 'The Polish National Corpus QL'
+	      },
+	      {
+	        content : 'Cosmas II',
+	        value : 'cosmas2',
+	        desc : 'The Polish National Corpus QL'
+	      },
+	      {
+	        content : 'Annis',
+	        value : 'annis'
+	      },
+	      {
+	        content : 'CQL v1.2',
+	        value : 'cql'
+	      }
       ];
-
+      
       it('should replace a select element', function () {
-	var div = document.createElement('div');
-	var element = div.appendChild(document.createElement('select'));
-	for (i in list) {
-	  var opt = element.appendChild(document.createElement('option'));
-	  opt.setAttribute('value', list[i].value);
-	  opt.appendChild(document.createTextNode(list[i].content));
-	};
+	      var div = document.createElement('div');
+	      var element = div.appendChild(document.createElement('select'));
+	      for (i in list) {
+	        var opt = element.appendChild(document.createElement('option'));
+	        opt.setAttribute('value', list[i].value);
+	        opt.appendChild(document.createTextNode(list[i].content));
+	      };
 
-	var menu = selectMenuClass.create(element);
+	      var menu = selectMenuClass.create(div);
 
-	expect(element.style.display).toEqual('none');
+	      expect(element.style.display).toEqual('none');
 
-	menu.show();
+        // This selects the first item
+        expect(menu.select()).toEqual(0);
+        expect(menu._title.textContent).toEqual('Poliqarp');
+        
+        // Now show the menu
+	      menu.showSelected();
 
-	expect(menu.item(0).active()).toBe(true);
-	expect(menu.item(0).noMore()).toBe(true);
+        expect(menu.item(0).active()).toBe(true);
+	      expect(menu.item(0).noMore()).toBe(true);
 
-	// TODO: Improve lcfield!!!!!!
-	expect(menu.shownItem(0).lcField()).toEqual(' poliqarp');
+        // TODO: Improve lcfield!!!!!!
+	      expect(menu.shownItem(0).lcField()).toEqual(' poliqarp');
       });
     });
   }