Use requirejs for clientside scripting
diff --git a/dev/demo/menudemo.js b/dev/demo/menudemo.js
new file mode 100644
index 0000000..e089e89
--- /dev/null
+++ b/dev/demo/menudemo.js
@@ -0,0 +1,74 @@
+requirejs.config({
+ baseUrl: '../js/src'
+});
+
+require(['menu','menu/item', 'menu/prefix'], function (menuClass, itemClass, prefixClass) {
+ var OwnMenuItemClass = {
+ create : function (params) {
+ return Object.create(itemClass).upgradeTo(this)._init(params);
+ },
+ content : function (content) {
+ if (arguments.length === 1) {
+ this._content = content;
+ };
+ return this._content;
+ },
+
+ // enter or click
+ onclick : function () {
+ console.log(this._name);
+ },
+
+ // right arrow
+ further : function () {
+ console.log("Further: " + this._name);
+ },
+ _init : function (params) {
+ if (params[0] === undefined)
+ throw new Error("Missing parameters");
+
+ this._name = params[0];
+ this._content = document.createTextNode(this._name);
+ this._lcField = ' ' + this.content().textContent.toLowerCase();
+
+ return this;
+ }
+ };
+
+ var OwnPrefixClass = {
+ create : function () {
+ return Object.create(prefixClass)
+ .upgradeTo(this)
+ ._init();
+ },
+ onclick : function () {
+ console.log('Prefix: ' + this.value());
+ }
+ };
+
+ var OwnMenu = {
+ create : function (params) {
+ return Object.create(menuClass)
+ .upgradeTo(this)
+ ._init(OwnMenuItemClass, OwnPrefixClass, params);
+ }
+ };
+
+ var menu = OwnMenu.create([
+ ['Titel', 'title', 'string'],
+ ['Untertitel', 'subTitle', 'string'],
+ ['Veröffentlichungsdatum', 'pubDate', 'date'],
+ ['Länge', 'length', 'integer'],
+ ['Autor', 'author', 'string'],
+ ['Genre', 'genre', 'string'],
+ ['corpusID', 'corpusID', 'string'],
+ ['docID', 'docID', 'string'],
+ ['textID', 'textID', 'string']
+ ]);
+
+ document.getElementById('menu').appendChild(menu.element());
+
+ menu.limit(3);
+ menu.show('');
+ menu.focus();
+});