diff --git a/dev/js/runner/menu.html b/dev/js/runner/menu.html
index acf96d4..4d2bffa 100644
--- a/dev/js/runner/menu.html
+++ b/dev/js/runner/menu.html
@@ -18,8 +18,9 @@
       }
     });
     require([
-      'lib/domReady!',
-      'spec/menuSpec'
+    'lib/domReady!',
+    'spec/menuSpec',
+    'spec/selectMenuSpec'
     ],
     function () {
       if (jsApiReporter.finished === true)
diff --git a/dev/js/spec/selectMenuSpec.js b/dev/js/spec/selectMenuSpec.js
new file mode 100644
index 0000000..3be39fd
--- /dev/null
+++ b/dev/js/spec/selectMenuSpec.js
@@ -0,0 +1,50 @@
+define(
+  ['selectMenu'],
+  function (selectMenuClass) {
+
+    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'
+	}
+      ];
+
+      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 menu = selectMenuClass.create(element);
+
+	expect(element.style.display).toEqual('none');
+
+	menu.show();
+
+	expect(menu.item(0).active()).toBe(true);
+	expect(menu.item(0).noMore()).toBe(true);
+
+	// TODO: Improve lcfield!!!!!!
+	expect(menu.shownItem(0).lcField()).toEqual(' poliqarp');
+      });
+    });
+  }
+);
diff --git a/dev/js/src/selectMenu.js b/dev/js/src/selectMenu.js
new file mode 100644
index 0000000..d51c31a
--- /dev/null
+++ b/dev/js/src/selectMenu.js
@@ -0,0 +1,43 @@
+define(
+  ['menu', 'menu/item', 'menu/prefix', 'menu/lengthField'],
+  function (menuClass, menuItemClass, prefixClass, lengthFieldClass) {
+
+    return {
+      create : function (element) {
+	var obj = Object.create(menuClass);
+
+	obj._shadow = element;
+
+	var list = [];
+	var options = element.getElementsByTagName('option');
+
+	for (var i = 0; i < options.length; i++) {
+
+	  var item = options.item(i);
+	  var opt = [
+	    item.textContent,
+	    item.getAttribute('value')
+	  ];
+
+	  if (item.hasAttribute('desc'))
+	    opt.push(item.getAttribute('desc'));
+
+	  list.push(opt);
+	};
+
+
+	obj = obj.upgradeTo(this)
+	  ._init(menuItemClass, prefixClass, lengthFieldClass, list);
+
+	obj._firstActive = true;
+
+	element.style.display = 'none';
+
+	if (element.parentNode)
+	  element.parentNode.appendChild(obj.element());
+
+	return obj;
+      }
+    }
+  }
+);
