summaryrefslogtreecommitdiffstats
path: root/ecomp-portal-FE/client/bower_components/jqTree/_entries
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-portal-FE/client/bower_components/jqTree/_entries')
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/01_general.md7
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/02_introduction.md9
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/03_features.md15
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/04_demo.html34
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/05_requirements.md6
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/06_downloads.md9
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/07_tutorial.md77
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/08_examples.md8
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/09_usecases.md17
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/10_changelog.md233
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/11_options.md6
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/12_autoescape.md6
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/13_autoopen.md28
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/14_buttonleft.md12
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/15_closedicon.md12
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/16_data.md46
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/17_datafilter.md17
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/18_data-url.md45
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/19_draganddrop.md18
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/20_keyboardsupport.md14
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/21_oncanmove.md22
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/22_oncanmoveto.md22
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/23_oncanselectnode.md26
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/24_oncreateli.md16
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/25_onismovehandle.md17
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/26_onloadfailed.md15
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/27_onloading.md22
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/28_openedicon.md12
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/29_openfolderdelay.md13
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/30_rtl.md18
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/31_savestate.md42
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/32_selectable.md18
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/33_slide.md12
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/34_usecontextmenu.md14
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/35_functions.md6
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/36_addnodeafter.md20
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/36a_addparentnode.md20
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/37_addnodebefore.md8
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/38_appendnode.md50
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/39_closenode.md23
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/40_destroy.md12
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/41_getnodebycallback.md24
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/42_getnodebyid.md21
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/43_getnodebyhtmlelement.md29
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/44_getselectednode.md10
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/45_getstate.md19
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/46_gettree.md12
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/47_loaddata.md46
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/48_loaddatafromurl.md55
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/49_movedown.md8
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/50_movenode.md15
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/51_moveup.md8
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/52_opennode.md44
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/53_reload.md22
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/54_removenode.md12
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/55_selectnode.md24
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/56_scrolltonode.md13
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/57_setoption.md12
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/58_setstate.md8
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/59_toggle.md8
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/60_tojson.md13
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/61_updatenode.md50
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/62_events.md6
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/63_tree-click.md37
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/64_tree-close.md15
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/65_tree-contextmenu.md21
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/66_tree-dblclick.md19
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/67_tree-init.md15
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/68_tree-move.md73
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/69_tree-open.md15
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/70_tree-select.md28
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/71_multiple-selection.md9
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/72_add-to-selection.md11
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/73_get-selected-nodes.md10
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/74_is-node-selected.md11
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/75_remove-from-selection.md11
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/76_node-functions.md13
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/77_children.md12
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/78_getdata.md17
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/79_getlevel.md13
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/80_getnextnode.md12
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/81_getnextsibling.md10
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/82_getpreviousnode.md12
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/83_getprevioussibling.md10
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/84_parent.md10
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/insert.py46
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/_entries/renumber.py38
87 files changed, 1954 insertions, 0 deletions
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/01_general.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/01_general.md
new file mode 100644
index 00000000..c25dfcc9
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/01_general.md
@@ -0,0 +1,7 @@
+---
+title: General
+name: general
+section: true
+hide_title: true
+---
+
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/02_introduction.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/02_introduction.md
new file mode 100644
index 00000000..be5205ca
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/02_introduction.md
@@ -0,0 +1,9 @@
+---
+title: Introduction
+name: introduction
+---
+
+JqTree is a jQuery widget for displaying a **tree structure** in html. It supports **json data**, loading via
+**ajax** and **drag-and-drop**.
+
+[![Bower version](https://img.shields.io/bower/v/jqtree.svg)](https://mbraak.github.io/jqTree/) [![NPM version](https://img.shields.io/npm/v/jqtree.svg)](https://www.npmjs.com/package/jqtree)
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/03_features.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/03_features.md
new file mode 100644
index 00000000..9c31e019
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/03_features.md
@@ -0,0 +1,15 @@
+---
+title: Features
+name: features
+---
+
+* Create a tree from JSON data
+* Load data using ajax
+* Drag and drop
+* Saves the state
+* Keyboard support
+* Lazy loading
+* Works on ie8+, firefox, chrome and safari
+* Written in Coffeescript
+
+The project is [hosted on github](https://github.com/mbraak/jqTree), has a [test suite](test/test.html). There is also a [test suite for ie8 and older](test/test_jquery_1.html) and a [test suite for jquery 2](test/test_jquery_2.html).
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/04_demo.html b/ecomp-portal-FE/client/bower_components/jqTree/_entries/04_demo.html
new file mode 100644
index 00000000..d2b81b6e
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/04_demo.html
@@ -0,0 +1,34 @@
+---
+title: Demo
+name: demo
+---
+
+<div class="row">
+ <div class="col-md-6">
+{% highlight js %}
+var data = [
+ {
+ name: 'node1', id: 1,
+ children: [
+ { name: 'child1', id: 2 },
+ { name: 'child2', id: 3 }
+ ]
+ },
+ {
+ name: 'node2', id: 4,
+ children: [
+ { name: 'child3', id: 5 }
+ ]
+ }
+];
+$('#tree1').tree({
+ data: data,
+ autoOpen: true,
+ dragAndDrop: true
+});
+{% endhighlight %}
+ </div>
+ <div class="col-md-6">
+ <div id="tree1"></div>
+ </div>
+</div>
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/05_requirements.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/05_requirements.md
new file mode 100644
index 00000000..d5890de4
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/05_requirements.md
@@ -0,0 +1,6 @@
+---
+title: Requirements
+name: requirements
+---
+
+* [jQuery](http://jquery.com) 1.9+, 2.x or 3.x
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/06_downloads.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/06_downloads.md
new file mode 100644
index 00000000..77485b2e
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/06_downloads.md
@@ -0,0 +1,9 @@
+---
+title: Downloads
+name: downloads
+---
+
+* All (version {{ site.jqtree_version }}): [jqTree.tar.gz](https://github.com/mbraak/jqTree/tarball/master)
+* Javascript: [tree.jquery.js](tree.jquery.js)
+* Css: [jqtree.css](jqtree.css)
+* Image: [jqtree-circle.png](jqtree-circle.png)
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/07_tutorial.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/07_tutorial.md
new file mode 100644
index 00000000..55fe21e0
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/07_tutorial.md
@@ -0,0 +1,77 @@
+---
+title: Tutorial
+name: Tutorial
+---
+
+Include [jQuery](http://code.jquery.com/jquery.min.js)
+
+{% highlight html %}
+<script src="jquery.min.js"></script>
+{% endhighlight %}
+
+Include tree.jquery.js:
+
+{% highlight html %}
+<script src="tree.jquery.js"></script>
+{% endhighlight %}
+
+Include jqtree.css:
+
+{% highlight html %}
+<link rel="stylesheet" href="jqtree.css">
+{% endhighlight %}
+
+Optionally, for saveState include [jquery-cookie](https://github.com/carhartl/jquery-cookie):
+
+{% highlight html %}
+<script src="jquery.cookie.js"></script>
+{% endhighlight %}
+
+Create a div.
+
+{% highlight html %}
+<div id="tree1"></div>
+{% endhighlight %}
+
+Create tree data.
+
+{% highlight js %}
+var data = [
+ {
+ name: 'node1',
+ children: [
+ { name: 'child1' },
+ { name: 'child2' }
+ ]
+ },
+ {
+ name: 'node2',
+ children: [
+ { name: 'child3' }
+ ]
+ }
+];
+{% endhighlight %}
+
+Create tree widget.
+
+{% highlight js %}
+$(function() {
+ $('#tree1').tree({
+ data: data
+ });
+});
+{% endhighlight %}
+
+Alternatively, get the data from the server.
+
+{% highlight js %}
+$.getJSON(
+ '/some_url/',
+ function(data) {
+ $('#tree1').tree({
+ data: data
+ });
+ }
+);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/08_examples.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/08_examples.md
new file mode 100644
index 00000000..7911c85f
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/08_examples.md
@@ -0,0 +1,8 @@
+---
+title: Examples
+name: examples
+---
+
+{% for e in site.examples %}
+* [{{ e.title }}]({{ site.baseurl }}{{ e.url }})
+{% endfor %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/09_usecases.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/09_usecases.md
new file mode 100644
index 00000000..f01ea2ef
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/09_usecases.md
@@ -0,0 +1,17 @@
+---
+title: Use cases
+name: usecases
+---
+
+Use cases or implementations of JqTree
+
+##### With AngularJS and FireBase
+* [https://github.com/romelgomez/jqtree-angularjs-firebase-example](https://github.com/romelgomez/jqtree-angularjs-firebase-example)
+
+##### With CakePHP and OpenShift
+* Code: [https://github.com/romelgomez/jqtree-cakephp-openshift-example](https://github.com/romelgomez/jqtree-cakephp-openshift-example)
+* Demo: [http://jqtreecakephpexample-theteacher.rhcloud.com/](http://jqtreecakephpexample-theteacher.rhcloud.com/)
+
+##### With Spring MVC and Google App Engine
+* Code: [https://github.com/romelgomez/jqtree-spring-mvc-gae-example](https://github.com/romelgomez/jqtree-spring-mvc-gae-example)
+* Demo: [http://jqtree-spring-mvc-gae-example.appspot.com/](http://jqtree-spring-mvc-gae-example.appspot.com/)
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/10_changelog.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/10_changelog.md
new file mode 100644
index 00000000..9c69467e
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/10_changelog.md
@@ -0,0 +1,233 @@
+---
+title: Changelog
+name: changelog
+---
+
+##### 1.3.7 (january 11 2017)
+
+* Issue 462: add on_finished parameter to openNode function
+* Issue 467: fix autoscroll when tree position changes after tree init (thanks to Themre)
+
+##### 1.3.6 (november 5 2016)
+
+* Issue 453: make it possible to initialize the tree without data
+* Issue 455: isNodeSelected must return boolean (thanks to Joshua Harrison)
+
+##### 1.3.5 (september 15 2016)
+
+* Issue 437: autoEscape option applies to dragged elements
+* Issue 448: calling updateNode with an empty children array should remove the children
+
+##### 1.3.4 (july 18 2016)
+
+* Issue 433: Added getNodeByHtmlElement function
+* Issue 435: Added getNodeByCallback function
+* Issue 437: Fix XSS issue in drag and drop
+
+##### 1.3.3 (may 30 2016)
+
+* Issue 420: Set the correct aria-level after updating a node (thanks to Fermin Gallego)
+* Issue 426 and 427: Make it possible to append a subtree using appendNode
+ * also works for addNodeAfter, addNodeBefore, prependNode and updateNode
+
+##### 1.3.2 (march 3 2016)
+
+* Issue 412: Set ajax parameters in dataUrl option (thanks to Atul Bajpai)
+* Issue 415: Add onLoading callback parameter
+
+##### 1.3.0 (november 8 2015)
+
+* Issue 234: Added onDragMove and onDragStop callbacks
+* Issue 394: Label displays 'null' in UI when the label key is null (thanks to Carlos Ponce)
+* Issue 396: Trigger init.tree correctly for load on demand (thanks to jmashore)
+* Issue 397: Aria accessibility support (thanks to Rich Caloggero)
+* Issue 398: Functions should return the `jquery` element
+* Issue 400: Added on_finished parameter to reload function
+* Issue 402: Fix autoscroll when tree element is created outside the dom (thanks to hbaptiste)
+
+##### 1.2.1 (july 14 2015)
+
+* Issue 48: Added right-to-left support (thanks to Mohamed Ouederni, Ashraf Fayad and Udi Oron)
+* Issue 371: Added include_parent parameter to getData function
+* Issue 375: Fix conflict with prototype.js (thanks to Henry de Guzman)
+
+##### 1.1.0 (april 6 2015)
+
+* Issue 348: Circle for drag-and-drop is not positioned correctly for content box-sizing
+* Issue 356: Fixed drag-and-drop after nodeUpdate (thanks to Iker Vázquez)
+* Issue 360: Add a trailing semicolon to tree.jquery.js (thanks to David Thenon)
+
+##### 1.0.0 (january 11 2015)
+
+* Issues 273 and 304: autoOpen and saveState now works for nodes that are loaded on demand
+* Issue 283: Added getNodesByProperty function (thanks to Neeraj)
+* Issue 332: openNode should open parent nodes (thanks to Kitano Yoshitomo)
+* Issue 335: Add cloneNode missing argument for Gecko <13.0 (thanks to Tvinky)
+* Issue 337: Added functions for moving up and down
+* Issue 341: Fixed drag-and-drop border when nodes have padding (thanks to Alex Musayev)
+
+##### 0.22 (september 25 2014)
+
+* Issue 291: Dragging Item - do not open node if you don't stay over it (thanks to Roman Klos)
+* Issue 300: Toggle function should get default slide value from options (thanks to Tazle)
+* Issue 303: Correctly set selected_node parameter in query string
+* Issue 315: Fix for issue when moving node over closed folder (thanks to terrybr)
+* Issue 320: Fixed error in drag and drop (thanks to Jerry Wu)
+
+##### 0.21 (june 7 2014)
+
+* Issue 263: Improve styling of toggle button
+* Issue 266: Make it possible to use html for toggle buttons
+* Issue 262: updateNode on first level makes node disappear (thanks to Miloš Đekić)
+* Issue 260: Exempt 'select' elements from keyboard navigation (thanks to Eli Flanagan)
+* Issue 270: Fixed error 'selected_single_node is not defined' (thanks to Bryan Smith)
+* Issue 279: .jqtree-moving removed when loading subtree (thanks to Marc-Stefan Cassola)
+* Issue 280: CSS3 Circle and style optimization (thanks to Marc-Stefan Cassola)
+* Issue 283: Added function getNodesByProperty (thanks to Cedrik Vanderhaegen)
+* Issue 292: Save state if multiple nodes are selected (thanks to MykhailoP)
+* Issue 294: Handle click on input element in tree (thanks to Naeco33)
+
+##### 0.20 (march 9 2014)
+
+* Issue 235: Added setOption function
+* Issue 241: Prevent duplicate event call after re-initalization
+* Issue 246: Check if folder must be opened while moving node (thanks to Dave Gardner)
+* Issue 247: Improve performance of updateNode (thanks to Gordon Woodhull)
+* Issue 250: Improve performance of creating dom elements (thanks to Carlos Scheidegger)
+* Issue 252: BorderDropHint has wrong height for border-box box-sizing (thanks to simshaun)
+* Issue 253: Added reload function
+* Issue 256: Toggler button is underlined
+* Issue 257: Make it possible to open a lazily loaded folder using the keyboard
+* Issue 258: Correctly unselect children if a node is reloaded
+
+##### 0.19 (december 8 2013)
+
+* Issue 225: Fixes TypeError when removing nodes without ids that aren't selected (thanks to Marcus McCurdy)
+* Issue 222: scrollToNode does not consider direct parent
+* Issue 228: add property click_event to tree.click and tree.dblclick events (thanks to Gordon Woodhull)
+* Issue 78: Added option openFolderDelay: the delay for opening a folder during drag-and-drop (thanks to Jason Diamond)
+
+##### 0.18 (september 17 2013)
+
+* Issue 132: Skip keyboard handling if focus is on input element (thanks to Bingeling)
+* Issue 179 and 180: Added dataFilter option to filter the returned data from jQuery.ajax (thanks to Cheton Wu and Tony Dilger)
+* Issue 184: If the node id is 0, the id mapping is incorrect (thanks to Ika Wu)
+* Issue 190: The function selectNode should not toggle (thanks to Gordon Woodhull)
+* Issue 192: Added keyboardSupport option (thanks to Ika Wu)
+* Issue 181: Added tree.dblclick event (thanks to eskaigualker)
+* Issue 196: localStorage doesn't work in Safari private browsing (thanks to thebagg)
+* Issue 203: Adding deselected_node attribute to event object of tree.select event (thanks to tedtoer)
+
+##### 0.17 (july 14 2013)
+
+* Issue 132: Added keyboard support
+* Issue 154: Calling loadDataFromUrl should not trigger tree.init event (thanks to Davide Bellini)
+* Issue 158: Index not updated on updateNode (thanks to Sam Mousa)
+* Issue 159: Cannot reselect node after unselecting it (thanks to Comanche)
+* Issue 162: Added getPreviousSibling and getNextSibling functions (thanks to Dimaninc)
+* Issue 169: Added touch support (thanks to Comanche)
+* Issue 171: Added functions getState and setState
+* Issue 175: Make it possible to install jqTree using bower (thanks to Adam Miskiewicz)
+
+##### 0.16 (may 17 2013)
+
+* Issue 62: Added functions for multiple select
+* Issue 125: Add option for overriding TRIANGLE_RIGHT and TRIANGLE_DOWN (thanks to Sam D)
+* Issue 126: Event tree.open event fires after first tree.select on top level node
+* Issue 129: Allow native context menu to be display (thanks to Charles Bourasseau)
+* Issue 130: Selectable not implemented (thanks to Sam D)
+* Issue 133: loadDataFromUrl doesn't work when only parent_node and callback are passed in (thanks to Simone Deponti)
+* Issue 134: selectNode from inside tree.init breaks on loadData (thanks to Sam D)
+* Issue 145: Auto-open nodes with drag n drop when drag not enabled for that node (thanks to Daniel Powell)
+* Issue 146: Added function scrollToNode (thanks to Davide Bellini)
+
+##### 0.15 (march 16 2013)
+
+* Issue 100: Clicking on the jqtree-element element will trigger click event
+* Issue 102: Add original event to tree.move event
+* Issue 103: Added getLevel function to Node class
+* Issue 104: The addNodeBefore method must return the new node
+* Issue 105: Added nodeClass option
+* Issue 112: Fix call to iterate in removeNode (thanks to Ingemar Ådahl)
+* Issue 113: Added onLoadFailed option (thanks to Shuhei Kondo)
+* Issue 118: Deselect a node when click and already selected
+* Issue 119: Make it easier to reload a subtree
+* Issue 121: Unselect node if it's reloaded by loadDataFromUrl
+
+##### 0.14 (december 2 2012)
+
+###### Api changes
+
+* Removed parameter **must_open_parents** from function **selectNode**.
+* Changed **slide** parameter in functions **openNode** and **closeNode**.
+
+###### Issues
+
+* Issue 80: Support more options for loading data from the server. E.g. the 'post' method (thanks to Rodrigo Rosenfeld Rosas)
+* Issue 81: getSelectedNode must return false if node is removed
+* Issue 82: Autoscroll for drag-and-drop
+* Issue 84: Fix correct type param in $.ajax() (thanks to Rodrigo Rosenfeld Rosas)
+* Issue 85: Option to turn slide animation on or off
+* Issue 86: The openNode function must automatically open parents
+* Issue 87: Remove the must_open_parents parameter from the selectNode function
+* Issue 88: selectNode must also work if selectable option is false
+* Issue 89: Clicking in title with img or em does not work
+* Issue 96: Added jqtree_common class to avoid css clashes (thanks to Yaniv Iny)
+
+##### 0.13 (october 10 2012)
+
+* Issue 54: Added tree.select event
+* Issue 63: Fixed contextmenu event
+* Issue 67: Use unicode characters for triangle buttons (thanks to Younès)
+* Issue 70: Load data from the server using the loadData function
+* Issue 78: Drag and drop is trigger happy
+
+##### 0.12 (august 14 2012)
+
+* Issue 46: Added tree.refresh event
+* Issue 47: Function 'selectNode' must properly open the parent nodes
+* Issue 49: Make sure that widget functions can be called in the 'tree.init' event
+* Issue 50: Add namespace to css classes
+* Issue 51: closeNode to collapse tree doesn't work
+* Issue 55: Load-on-demand from the server
+* Issue 58: Added updateNode function
+* Issue 59: Added moveNode function
+* Issue 60: Use native JSON.stringify function
+
+##### 0.11 (july 8 2012)
+
+* Autoescape text
+* Added autoEscape option
+* Issue 33: appendNode does not correctly refresh the tree
+* Issue 34: unset internal pointer to previously selected node on DOM deselect
+* Issue 38: Correctly check if browser has support for localstorage
+* Issue 41: Open nodes are not displayed correctly in ie7
+
+##### 0.10 (june 10 2012)
+
+* Optimized getNodeById
+* Issue #18 and #26: Made comparison in getNodeById less strict
+* Added function prependNode
+* Added 'data-url' option
+* Added removeNode function
+* Issue #24: Tree with jquery ui Dialog: expand causes resize and move problem
+* Added Travis ci support
+* Added addNodeAfter, addNodeBefore and addParentNode
+* Renamed icons.png to jqtree-icons.png
+* selectNode with empty node deselects the current node
+
+##### 0.9 (may 9 2012)
+
+* Issue 15: 'tree.open' event is not triggered when dragging nodes
+* Issue 18: Allow moveNode to be canceled through ev.preventDefault()
+* Use sprite for images
+* Added function closeNode
+* Added support for localstorage
+* Implemented alternative data format
+
+##### 0.8 (april 18 2012)
+
+* Replace jquery.ui widget with SimpleWidget
+* Added 'previous_parent' to 'tree.move' event
+* Add posibility to load subtree
+* Added 'tree.open' and 'tree.close' events
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/11_options.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/11_options.md
new file mode 100644
index 00000000..5f017c70
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/11_options.md
@@ -0,0 +1,6 @@
+---
+title: Tree options
+name: tree-options
+section: true
+---
+
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/12_autoescape.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/12_autoescape.md
new file mode 100644
index 00000000..dd959e4f
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/12_autoescape.md
@@ -0,0 +1,6 @@
+---
+title: autoEscape
+name: options-autoescape
+---
+
+Determine if text is autoescaped. The default is true.
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/13_autoopen.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/13_autoopen.md
new file mode 100644
index 00000000..c140d1bf
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/13_autoopen.md
@@ -0,0 +1,28 @@
+---
+title: autoOpen
+name: options-autoopen
+---
+
+Open nodes initially.
+
+* **true**: open all nodes.
+* **false (default)**: do nothing
+* **n**: open n levels
+
+Open all nodes initially:
+
+{% highlight js %}
+$('#tree1').tree({
+ data: data,
+ autoOpen: true
+});
+{% endhighlight %}
+
+Open first level nodes:
+
+{% highlight js %}
+$('#tree1').tree({
+ data: data,
+ autoOpen: 0
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/14_buttonleft.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/14_buttonleft.md
new file mode 100644
index 00000000..c5186c2d
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/14_buttonleft.md
@@ -0,0 +1,12 @@
+---
+title: buttonLeft
+name: options-buttonleft
+---
+
+Set the position of the toggle button; can be `true` (left) or `false` (right). The default is `true`.
+
+{% highlight js %}
+$('#tree1').tree({
+ buttonLeft: false
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/15_closedicon.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/15_closedicon.md
new file mode 100644
index 00000000..668abbdb
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/15_closedicon.md
@@ -0,0 +1,12 @@
+---
+title: closedIcon
+name: options-closedicon
+---
+
+A character or symbol to display on closed nodes. The default is '&amp;#x25ba;' (&#x25ba;)
+
+{% highlight js %}
+$('#tree1').tree({
+ closedIcon: '+'
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/16_data.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/16_data.md
new file mode 100644
index 00000000..12588779
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/16_data.md
@@ -0,0 +1,46 @@
+---
+title: data
+name: options-data
+---
+
+Define the contents of the tree. The data is a nested array of objects. This option is required.
+
+It looks like this:
+
+{% highlight js %}
+var data = [
+ {
+ name: 'node1',
+ children: [
+ { name: 'child1' },
+ { name: 'child2' }
+ ]
+ },
+ {
+ name: 'node2',
+ children: [
+ { name: 'child3' }
+ ]
+ }
+];
+$('#tree1').tree({data: data});
+{% endhighlight %}
+
+* **name**: name of a node (required)
+ * Note that you can also use `label` instead of `name`
+* **children**: array of child nodes (optional)
+* **id**: int or string (optional)
+ * Must be an int or a string
+ * Must be unique in the tree
+ * The `id` property is required if you use the multiple selection feature
+
+You can also include other data in the objects. You can later access this data.
+
+For example, to add an id:
+
+{% highlight js %}
+{
+ name: 'node1',
+ id: 1
+}
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/17_datafilter.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/17_datafilter.md
new file mode 100644
index 00000000..90316af2
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/17_datafilter.md
@@ -0,0 +1,17 @@
+---
+title: dataFilter
+name: options-datafilter
+---
+
+Process the tree data from the server.
+
+{% highlight js %}
+$('#tree1').tree({
+ dataUrl: '/my/data/',
+ dataFilter: function(data) {
+ // Example:
+ // the server puts the tree data in 'my_tree_data'
+ return data['my_tree_data'];
+ }
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/18_data-url.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/18_data-url.md
new file mode 100644
index 00000000..063c1514
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/18_data-url.md
@@ -0,0 +1,45 @@
+---
+title: dataUrl
+name: options-data-url
+---
+
+Load the node data from this url.
+
+{% highlight js %}
+$('#tree1').tree({
+ dataUrl: '/example_data.json'
+});
+{% endhighlight %}
+
+You can also set the **data-url** attribute on the dom element:
+
+{% highlight html %}
+<div id="tree1" data-url="/example_data.json"></div>
+<script>
+ $('#tree1').tree();
+</script>
+{% endhighlight %}
+
+You can set additional [jquery ajax options](http://api.jquery.com/jQuery.ajax/) in an object:
+
+{% highlight js %}
+$('#tree1').tree({
+ dataUrl: {
+ url: '/example_data.json',
+ headers: {'abc': 'def'}
+ }
+});
+{% endhighlight %}
+
+Or you can use a function:
+
+{% highlight js %}
+$('#tree1').tree({
+ dataUrl: function(node) {
+ return {
+ url: '/example_data.json',
+ headers: {'abc': 'def'}
+ };
+ }
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/19_draganddrop.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/19_draganddrop.md
new file mode 100644
index 00000000..01d80c15
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/19_draganddrop.md
@@ -0,0 +1,18 @@
+---
+title: dragAndDrop
+name: options-draganddrop
+---
+
+Turn on dragging and dropping of nodes.
+
+* **true**: turn on drag and drop
+* **false (default)**: do not allow drag and drop
+
+Example: turn on drag and drop.
+
+{% highlight js %}
+$('#tree1').tree({
+ data: data,
+ dragAndDrop: true
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/20_keyboardsupport.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/20_keyboardsupport.md
new file mode 100644
index 00000000..46bd004e
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/20_keyboardsupport.md
@@ -0,0 +1,14 @@
+---
+title: keyboardSupport
+name: options-keyboardsupport
+---
+
+Enable or disable keyboard support. Default is enabled.
+
+Example: disable keyboard support.
+
+{% highlight js %}
+$('#tree1').tree({
+ keyboardSupport: false
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/21_oncanmove.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/21_oncanmove.md
new file mode 100644
index 00000000..ee19cf06
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/21_oncanmove.md
@@ -0,0 +1,22 @@
+---
+title: onCanMove
+name: options-oncanmove
+---
+
+You can override this function to determine if a node can be moved.
+
+{% highlight js %}
+$('#tree1').tree({
+ data: data,
+ dragAndDrop: true,
+ onCanMove: function(node) {
+ if (! node.parent.parent) {
+ // Example: Cannot move root node
+ return false;
+ }
+ else {
+ return true;
+ }
+ }
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/22_oncanmoveto.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/22_oncanmoveto.md
new file mode 100644
index 00000000..abd68c1e
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/22_oncanmoveto.md
@@ -0,0 +1,22 @@
+---
+title: onCanMoveTo
+name: options-oncanmoveto
+---
+
+You can override this function to determine if a node can be moved to a certain position.
+
+{% highlight js %}
+$('#tree1').tree({
+ data: data,
+ dragAndDrop: true,
+ onCanMoveTo: function(moved_node, target_node, position) {
+ if (target_node.is_menu) {
+ // Example: can move inside menu, not before or after
+ return (position == 'inside');
+ }
+ else {
+ return true;
+ }
+ }
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/23_oncanselectnode.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/23_oncanselectnode.md
new file mode 100644
index 00000000..5bf15a25
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/23_oncanselectnode.md
@@ -0,0 +1,26 @@
+---
+title: onCanSelectNode
+name: options-oncanselectnode
+---
+
+You can set a function to override if a node can be selected. The function gets a node as parameter, and must return true or false.
+
+For this to work, the option 'selectable' must be 'true'.
+
+{% highlight js %}
+// Example: nodes with children cannot be selected
+$('#tree1').tree({
+ data: data,
+ selectable: true
+ onCanSelectNode: function(node) {
+ if (node.children.length == 0) {
+ // Nodes without children can be selected
+ return true;
+ }
+ else {
+ // Nodes with children cannot be selected
+ return false;
+ }
+ }
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/24_oncreateli.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/24_oncreateli.md
new file mode 100644
index 00000000..3008f9d8
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/24_oncreateli.md
@@ -0,0 +1,16 @@
+---
+title: onCreateLi
+name: options-oncreateli
+---
+
+The function is called for each created node. You can use this to define extra html.
+
+{% highlight js %}
+$('#tree1').tree({
+ data: data,
+ onCreateLi: function(node, $li) {
+ // Add 'icon' span before title
+ $li.find('.jqtree-title').before('<span class="icon"></span>');
+ }
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/25_onismovehandle.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/25_onismovehandle.md
new file mode 100644
index 00000000..fc904d6f
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/25_onismovehandle.md
@@ -0,0 +1,17 @@
+---
+title: onIsMoveHandle
+name: options-onismovehandle
+---
+
+You can override this function to determine if a dom element can be used to move a node.
+
+{% highlight js %}
+$('#tree1').tree({
+ data: data,
+ onIsMoveHandle: function($element) {
+ // Only dom elements with 'jqtree-title' class can be used
+ // as move handle.
+ return ($element.is('.jqtree-title'));
+ }
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/26_onloadfailed.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/26_onloadfailed.md
new file mode 100644
index 00000000..42fe248d
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/26_onloadfailed.md
@@ -0,0 +1,15 @@
+---
+title: onLoadFailed
+name: options-onloadfailed
+---
+
+When loading the data by ajax fails, then the option **onLoadFailed** is called.
+
+{% highlight js %}
+$('#tree1').tree({
+ dataUrl: '/my/data/',
+ onLoadFailed: function(response) {
+ //
+ }
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/27_onloading.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/27_onloading.md
new file mode 100644
index 00000000..db954f8c
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/27_onloading.md
@@ -0,0 +1,22 @@
+---
+title: onLoading
+name: options-onloading
+---
+
+The onLoading parameter is called when the tree data is loading. This gives us the opportunity to display a loading signal.
+
+Callback looks like this:
+
+```js
+function (is_loading, node, $el)
+```
+
+* **is_loading**: boolean
+ * true: data is loading
+ * false: data is loaded
+* **node**:
+ * Node: if a node is loading
+ * null: if the tree is loading
+* **$el**:
+ * if a node is loading this is the `li` element
+ * if the tree is loading is the `ul` element of the whole tree
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/28_openedicon.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/28_openedicon.md
new file mode 100644
index 00000000..f3e8c7a9
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/28_openedicon.md
@@ -0,0 +1,12 @@
+---
+title: openedIcon
+name: options-openedicon
+---
+
+A character or symbol to display on opened nodes. The default is '&amp;#x25bc;' (&#x25bc;)
+
+{% highlight js %}
+$('#tree1').tree({
+ openedIcon: '-'
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/29_openfolderdelay.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/29_openfolderdelay.md
new file mode 100644
index 00000000..c47ad958
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/29_openfolderdelay.md
@@ -0,0 +1,13 @@
+---
+title: openFolderDelay
+name: options-openfolderdelay
+---
+
+Set the delay for opening a folder during drag-and-drop. The delay is in milliseconds. The default is 500 ms.
+
+{% highlight js %}
+$('#tree1').tree({
+ dataUrl: '/my/data/',
+ openFolderDelay: 1000
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/30_rtl.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/30_rtl.md
new file mode 100644
index 00000000..f9b20df1
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/30_rtl.md
@@ -0,0 +1,18 @@
+---
+title: rtl
+name: options-rtl
+---
+
+Set right-to-left support (true / false). Default is false.
+
+{% highlight js %}
+$('#tree1').tree({
+ rtl: true
+});
+{% endhighlight %}
+
+You can also set the option using ``data-rtl``.
+
+{% highlight html %}
+ <div id="tree1" data-url="/data" data-rtl></div>
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/31_savestate.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/31_savestate.md
new file mode 100644
index 00000000..3667129e
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/31_savestate.md
@@ -0,0 +1,42 @@
+---
+title: saveState
+name: options-savestate
+---
+
+Save and restore the state of the tree automatically. Saves in a cookie which nodes are opened and selected.
+
+The state is saved in localstorage. In browsers that do not support localstorage, the state is saved in a cookie.
+For this to work, please include [jquery-cookie](https://github.com/carhartl/jquery-cookie).
+
+For this to work, you should give each node in the tree data an id field:
+
+{% highlight js %}
+{
+ name: 'node1',
+ id: 123,
+ childen: [
+ name: 'child1',
+ id: 124
+ ]
+}
+{% endhighlight %}
+
+* **true**: save and restore state in a cookie
+* **false (default)**: do nothing
+* **string**: save state and use this name to store in a cookie
+
+{% highlight js %}
+$('#tree1').tree({
+ data: data,
+ saveState: true
+});
+{% endhighlight %}
+
+Example: save state in key 'tree1':
+
+{% highlight js %}
+$('#tree1').tree({
+ data: data,
+ saveState: 'tree1'
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/32_selectable.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/32_selectable.md
new file mode 100644
index 00000000..18dd4d31
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/32_selectable.md
@@ -0,0 +1,18 @@
+---
+title: selectable
+name: options-selectable
+---
+
+Turn on selection of nodes.
+
+* **true (default)**: turn on selection of nodes
+* **false**: turn off selection of nodes
+
+Example: turn off selection of nodes.
+
+{% highlight js %}
+$('#tree1').tree({
+ data: data,
+ selectable: false
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/33_slide.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/33_slide.md
new file mode 100644
index 00000000..94a1b381
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/33_slide.md
@@ -0,0 +1,12 @@
+---
+title: slide
+name: options-slide
+---
+
+Turn slide animation on or off. Default is true.
+
+{% highlight js %}
+$('#tree1').tree({
+ slide: false
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/34_usecontextmenu.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/34_usecontextmenu.md
new file mode 100644
index 00000000..71137b03
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/34_usecontextmenu.md
@@ -0,0 +1,14 @@
+---
+title: useContextMenu
+name: usecontextmenu
+---
+
+Bind the context menu event (true/false).
+
+**true** (default)
+
+A right mouse-click will trigger a [tree.contextmenu](#event-tree-contextmenu) event. This overrides the native contextmenu of the browser.
+
+**false**
+
+A right mouse-click will trigger the native contextmenu of the browser.
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/35_functions.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/35_functions.md
new file mode 100644
index 00000000..6ee8428d
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/35_functions.md
@@ -0,0 +1,6 @@
+---
+title: Functions
+name: functions
+section: true
+---
+
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/36_addnodeafter.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/36_addnodeafter.md
new file mode 100644
index 00000000..a5abd263
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/36_addnodeafter.md
@@ -0,0 +1,20 @@
+---
+title: addNodeAfter
+name: functions-addnodeafter
+---
+
+**function addNodeAfter(new_node_info, existing_node);**
+
+Add a new node after this existing node.
+
+{% highlight js %}
+var node1 = $('#tree1', 'getNodeByName', 'node1');
+$('#tree1').tree(
+ 'addNodeAfter',
+ {
+ name: 'new_node',
+ id: 456
+ },
+ node1
+);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/36a_addparentnode.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/36a_addparentnode.md
new file mode 100644
index 00000000..541af68c
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/36a_addparentnode.md
@@ -0,0 +1,20 @@
+---
+title: addParentNode
+name: functions-addparentnode
+---
+
+**function addParentNode(new_node_info, existing_node);**
+
+Add a new node as parent of this existing node.
+
+{% highlight js %}
+var node1 = $('#tree1', 'getNodeByName', 'node1');
+$('#tree1').tree(
+ 'addParentNode',
+ {
+ name: 'new_parent',
+ id: 456
+ },
+ node1
+);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/37_addnodebefore.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/37_addnodebefore.md
new file mode 100644
index 00000000..1451754d
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/37_addnodebefore.md
@@ -0,0 +1,8 @@
+---
+title: addNodeBefore
+name: functions-addnodebefore
+---
+
+**function addNodeBefore(new_node_info, existing_node);**
+
+Add a new node before this existing node.
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/38_appendnode.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/38_appendnode.md
new file mode 100644
index 00000000..2eeea284
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/38_appendnode.md
@@ -0,0 +1,50 @@
+---
+title: appendNode
+name: functions-appendnode
+---
+
+**function appendNode(new_node_info, parent_node);**
+
+Add a node to this parent node. If **parent_node** is empty, then the new node becomes a root node.
+
+{% highlight js %}
+var parent_node = $tree.tree('getNodeById', 123);
+
+$tree.tree(
+ 'appendNode',
+ {
+ name: 'new_node',
+ id: 456
+ },
+ parent_node
+);
+{% endhighlight %}
+
+To add a root node, leave *parent_node* empty:
+
+{% highlight js %}
+$tree.tree(
+ 'appendNode',
+ {
+ name: 'new_node',
+ id: 456
+ }
+);
+{% endhighlight %}
+
+It's also possible to append a subtree:
+
+{% highlight js %}
+$tree.tree(
+ 'appendNode',
+ {
+ name: 'new_node',
+ id: 456,
+ children: [
+ { name: 'child1', id: 457 },
+ { name: 'child2', id: 458 }
+ ]
+ },
+ parent_node
+);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/39_closenode.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/39_closenode.md
new file mode 100644
index 00000000..0e90ae5d
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/39_closenode.md
@@ -0,0 +1,23 @@
+---
+title: closeNode
+name: functions-closenode
+---
+
+**function closeNode(node);**
+
+**function closeNode(node, slide);**
+
+Close this node. The node must have child nodes.
+
+Parameter **slide**: close the node using a slide animation (default is true).
+
+{% highlight js %}
+var node = $tree.tree('getNodeById', 123);
+$tree.tree('closeNode', node);
+{% endhighlight %}
+
+To close the node without the slide animation, call with **slide** parameter is false.
+
+{% highlight js %}
+$tree.tree('closeNode', node, false);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/40_destroy.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/40_destroy.md
new file mode 100644
index 00000000..54c12d21
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/40_destroy.md
@@ -0,0 +1,12 @@
+---
+title: destroy
+name: functions-destroy
+---
+
+**function destroy();**
+
+Destroy the tree. This removes the dom elements and event bindings.
+
+{% highlight js %}
+$('#tree1').tree('destroy');
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/41_getnodebycallback.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/41_getnodebycallback.md
new file mode 100644
index 00000000..e6519192
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/41_getnodebycallback.md
@@ -0,0 +1,24 @@
+---
+title: getNodeByCallback
+name: functions-getnodebycallback
+---
+
+**function getNodeByCallback(callback);**
+
+Get a tree node using a callback. The callback should return true if the node is found.
+
+{% highlight js %}
+var node = $('#tree1').tree(
+ 'getNodeByCallback',
+ function(node) {
+ if (node.name == 'abc') {
+ // Node is found; return true
+ return true;
+ }
+ else {
+ // Node not found; continue searching
+ return false;
+ }
+ }
+);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/42_getnodebyid.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/42_getnodebyid.md
new file mode 100644
index 00000000..8cc4b444
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/42_getnodebyid.md
@@ -0,0 +1,21 @@
+---
+title: getNodeById
+name: functions-getnodebyid
+---
+
+**function getNodeById(id);**
+
+Get a tree node by node-id. This assumes that you have given the nodes in the data a unique id.
+
+{% highlight js %}
+var $tree = $('#tree1');
+var data = [
+ { id: 10, name: 'n1' },
+ { id: 11, name: 'n2' }
+];
+
+$tree.tree({
+ data: data
+});
+var node = $tree.tree('getNodeById', 10);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/43_getnodebyhtmlelement.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/43_getnodebyhtmlelement.md
new file mode 100644
index 00000000..926f90a5
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/43_getnodebyhtmlelement.md
@@ -0,0 +1,29 @@
+---
+title: getNodeByHtmlElement
+name: functions-getnodebyhtmlelement
+---
+
+**function getNodeByHtmlElement(html_element);**
+
+Get a tree node by an html element. The html element should be:
+
+* The `li` element for the node
+* Or, an element inside the `li`. For example the `span` for the title.
+
+{% highlight js %}
+var element = document.querySelector('#tree1 .jqtree-title');
+
+var node = $('#tree1').tree('getNodeByHtmlElement', element);
+
+console.log(node);
+{% endhighlight %}
+
+The element can also be a jquery element:
+
+{% highlight js %}
+var $element = $('#tree1 .jqtree-title');
+
+var node = $('#tree1').tree('getNodeByHtmlElement', $element);
+
+console.log(node);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/44_getselectednode.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/44_getselectednode.md
new file mode 100644
index 00000000..d63bd9d4
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/44_getselectednode.md
@@ -0,0 +1,10 @@
+---
+title: getSelectedNode
+name: functions-getselectednode
+---
+
+Get the selected node. Returns the row data or false.
+
+{% highlight js %}
+var node = $tree.tree('getSelectedNode');
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/45_getstate.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/45_getstate.md
new file mode 100644
index 00000000..04e0684c
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/45_getstate.md
@@ -0,0 +1,19 @@
+---
+title: getState
+name: functions-getstate
+---
+
+Get the state of tree: which nodes are open and which one is selected?
+
+Returns a javascript object that contains the ids of open nodes and selected nodes:
+
+{% highlight js %}
+{
+ open_nodes: [1, 2, 3],
+ selected_node: [4, 5, 6]
+}
+{% endhighlight %}
+
+If you want to use this function, then your tree data should include an **id** property for each node.
+
+You can use this function in combination with [setState](#functions-setstate) to save and restore the tree state.
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/46_gettree.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/46_gettree.md
new file mode 100644
index 00000000..db898b0e
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/46_gettree.md
@@ -0,0 +1,12 @@
+---
+title: getTree
+name: functions-gettree
+---
+
+**function getTree();**
+
+Get the root node of the tree.
+
+{% highlight js %}
+var tree_data = $('#tree1').tree('getTree');
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/47_loaddata.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/47_loaddata.md
new file mode 100644
index 00000000..fb010961
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/47_loaddata.md
@@ -0,0 +1,46 @@
+---
+title: loadData
+name: functions-loaddata
+---
+
+**function loadData(data);**
+
+**function loadData(data, parent_node);**
+
+Load data in the tree. The data is array of nodes.
+
+You can **replace the whole tree** or you can **load a subtree**.
+
+{% highlight js %}
+// Assuming the tree exists
+var new_data = [
+ {
+ name: 'node1',
+ children: [
+ { name: 'child1' },
+ { name: 'child2' }
+ ]
+ },
+ {
+ name: 'node2',
+ children: [
+ { name: 'child3' }
+ ]
+ }
+];
+$('#tree1').tree('loadData', new_data);
+{% endhighlight %}
+
+Load a subtree:
+
+{% highlight js %}
+// Get node by id (this assumes that the nodes have an id)
+var node = $('#tree1').tree('getNodeById', 100);
+
+// Add new nodes
+var data = [
+ { name: 'new node' },
+ { name: 'another new node' }
+];
+$('#tree1').tree('loadData', data, node);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/48_loaddatafromurl.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/48_loaddatafromurl.md
new file mode 100644
index 00000000..3a005f31
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/48_loaddatafromurl.md
@@ -0,0 +1,55 @@
+---
+title: loadDataFromUrl
+name: functions-loaddatafromurl
+---
+
+**function loadDataFromUrl(url);**
+
+**function loadDataFromUrl(url, parent_node);**
+
+**function loadDataFromUrl(parent_node);**
+
+Load data in the tree from an url using ajax. You can **replace the whole tree** or you can **load a subtree**.
+
+{% highlight js %}
+$('#tree1').tree('loadDataFromUrl', '/category/tree/');
+{% endhighlight %}
+
+Load a subtree:
+
+{% highlight js %}
+var node = $('#tree1').tree('getNodeById', 123);
+$('#tree1').tree('loadDataFromUrl', '/category/tree/123', node);
+{% endhighlight %}
+
+You can also omit the url. In this case jqTree will generate a url for you. This is very useful if you use the load-on-demand feature:
+
+{% highlight js %}
+var $tree = $('#tree1');
+
+$tree.tree({
+ dataUrl: '/my_data/'
+});
+
+var node = $tree.tree('getNodeById', 456);
+
+// jqTree will load data from /my_data/?node=456
+$tree.tree('loadDataFromUrl', node);
+{% endhighlight %}
+
+You can also add an **on_finished** callback parameter that will be called when the data is loaded:
+
+**function loadDataFromUrl(url, parent_node, on_finished);**
+
+**function loadDataFromUrl(parent_node, on_finished);**
+
+{% highlight js %}
+$('#tree1').tree(
+ 'loadDataFromUrl',
+ '/category/tree/123',
+ null,
+ function() {
+ alert('data is loaded');
+ }
+);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/49_movedown.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/49_movedown.md
new file mode 100644
index 00000000..41cd3121
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/49_movedown.md
@@ -0,0 +1,8 @@
+---
+title: moveDown
+name: functions-movedown
+---
+
+**function moveDown()**
+
+Select the next node. This does the same as the *down* key. \ No newline at end of file
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/50_movenode.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/50_movenode.md
new file mode 100644
index 00000000..c4697ec2
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/50_movenode.md
@@ -0,0 +1,15 @@
+---
+title: moveNode
+name: functions-movenode
+---
+
+**function moveNode(node, target_node, position);**
+
+Move a node. Position can be 'before', 'after' or 'inside'.
+
+{% highlight js %}
+var node = $tree.tree('getNodeById', 1);
+var target_node = $tree.tree('getNodeById', 2);
+
+$tree.tree('moveNode', node, target_node, 'after');
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/51_moveup.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/51_moveup.md
new file mode 100644
index 00000000..d20cfa9a
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/51_moveup.md
@@ -0,0 +1,8 @@
+---
+title: moveUp
+name: functions-moveup
+---
+
+**function moveUp()**
+
+Select the previous node. This does the same as the *up* key. \ No newline at end of file
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/52_opennode.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/52_opennode.md
new file mode 100644
index 00000000..5c9a6c19
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/52_opennode.md
@@ -0,0 +1,44 @@
+---
+title: openNode
+name: functions-opennode
+---
+
+**function openNode(node);**
+
+**function openNode(node, slide);**
+
+**function openNode(node, on_finished);**
+
+**function openNode(node, slide, on_finished);**
+
+Open this node. The node must have child nodes.
+
+Parameter **slide (optional)**: open the node using a slide animation (default is true).
+Parameter **on_finished (optional)**: callback when the node is opened; this also works for nodes that are loaded lazily
+
+{% highlight js %}
+// create tree
+var $tree = $('#tree1');
+$tree.tree({
+ data: data
+});
+
+var node = $tree.tree('getNodeById', 123);
+$tree.tree('openNode', node);
+{% endhighlight %}
+
+To open the node without the slide animation, call with **slide** parameter is false.
+
+{% highlight js %}
+$tree.tree('openNode', node, false);
+{% endhighlight %}
+
+Example with `on_finished` callback:
+
+{% highlight js %}
+function handleOpened(node) {
+ console.log('openende node', node.name);
+}
+
+$tree.tree('openNode', node, handleOpened);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/53_reload.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/53_reload.md
new file mode 100644
index 00000000..7be6e8ac
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/53_reload.md
@@ -0,0 +1,22 @@
+---
+title: reload
+name: functions-reload
+---
+
+**function reload();**
+
+**function reload(on_finished);**
+
+Reload data from the server.
+
+* Call `on_finished` when the data is loaded.
+
+{% highlight js %}
+$('#tree1').tree('reload');
+{% endhighlight %}
+
+{% highlight js %}
+$('#tree1').tree('reload', function() {
+ console.log('data is loaded');
+});
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/54_removenode.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/54_removenode.md
new file mode 100644
index 00000000..8bfe8fd1
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/54_removenode.md
@@ -0,0 +1,12 @@
+---
+title: removeNode
+name: functions-removenode
+---
+
+**function removeNode(node);**
+
+Remove node from the tree.
+
+{% highlight js %}
+$('#tree1').tree('removeNode', node);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/55_selectnode.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/55_selectnode.md
new file mode 100644
index 00000000..a3ab45e7
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/55_selectnode.md
@@ -0,0 +1,24 @@
+---
+title: selectNode
+name: functions-selectnode
+---
+
+**function selectNode(node);**
+
+**function selectNode(null);**
+
+Select this node.
+
+You can deselect the current node by calling **selectNode(null)**.
+
+{% highlight js %}
+// create tree
+var $tree = $('#tree1');
+$tree.tree({
+ data: data,
+ selectable: true
+});
+
+var node = $tree.tree('getNodeById', 123);
+$tree.tree('selectNode', node);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/56_scrolltonode.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/56_scrolltonode.md
new file mode 100644
index 00000000..e9ac2dcc
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/56_scrolltonode.md
@@ -0,0 +1,13 @@
+---
+title: scrollToNode
+name: functions-scrolltonode
+---
+
+**function scrollToNode(node);**
+
+Scroll to this node. This is useful if the tree is in a container div and is scrollable.
+
+{% highlight js %}
+var node = $tree.tree('getNodeById', 1);
+$tree.tree('scrollToNode', node);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/57_setoption.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/57_setoption.md
new file mode 100644
index 00000000..f49608c0
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/57_setoption.md
@@ -0,0 +1,12 @@
+---
+title: setOption
+name: functions-setoption
+---
+
+**function setOption(option, value);**
+
+Set a tree option. These are the same options that you can set when creating the tree.
+
+{% highlight js %}
+$('#tree1').tree('setOption', 'keyboardSupport', false);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/58_setstate.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/58_setstate.md
new file mode 100644
index 00000000..9c68cfa6
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/58_setstate.md
@@ -0,0 +1,8 @@
+---
+title: setState
+name: functions-setstate
+---
+
+Set the state of the tree: which nodes are open and which one is selected?
+
+See [getState](#functions-getstate) for more information.
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/59_toggle.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/59_toggle.md
new file mode 100644
index 00000000..3cf38939
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/59_toggle.md
@@ -0,0 +1,8 @@
+---
+title: toggle
+name: functions-toggle
+---
+
+**function toggle(node);**
+
+Open or close the tree node.
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/60_tojson.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/60_tojson.md
new file mode 100644
index 00000000..55da1d7b
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/60_tojson.md
@@ -0,0 +1,13 @@
+---
+title: toJson
+name: functions-tojson
+---
+
+**function toJson();**
+
+Get the tree data as json.
+
+{% highlight js %}
+// Assuming the tree exists
+$('#tree1').tree('toJson');
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/61_updatenode.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/61_updatenode.md
new file mode 100644
index 00000000..49005ed8
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/61_updatenode.md
@@ -0,0 +1,50 @@
+---
+title: updateNode
+name: functions-updatenode
+---
+
+**function updateNode(node, name);**
+
+**function updateNode(node, data);**
+
+Update the title of a node. You can also update the data.
+
+Update the name:
+
+{% highlight js %}
+var node = $tree.tree('getNodeById', 123);
+
+$tree.tree('updateNode', node, 'new name');
+{% endhighlight %}
+
+Update the data (including the name)
+
+{% highlight js %}
+var node = $tree.tree('getNodeById', 123);
+
+$tree.tree(
+ 'updateNode',
+ node,
+ {
+ name: 'new name',
+ id: 1,
+ other_property: 'abc'
+ }
+);
+{% endhighlight %}
+
+It is also possible to update the children. Note that this removes the existing children:
+
+{% highlight js %}
+$tree.tree(
+ 'updateNode',
+ node,
+ {
+ name: 'new name',
+ id: 1,
+ children: [
+ { name: 'child1', id: 2 }
+ ]
+ }
+);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/62_events.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/62_events.md
new file mode 100644
index 00000000..065e4cd5
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/62_events.md
@@ -0,0 +1,6 @@
+---
+title: Events
+name: events
+section: true
+---
+
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/63_tree-click.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/63_tree-click.md
new file mode 100644
index 00000000..acd430dc
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/63_tree-click.md
@@ -0,0 +1,37 @@
+---
+title: tree.click
+name: event-tree-click
+---
+
+Triggered when a tree node is clicked. The event contains the following properties:
+
+* **node**: the node that is clicked on
+* **click_event**: the original click event
+
+{% highlight js %}
+// create tree
+$('#tree1').tree({
+ data: data
+});
+
+// bind 'tree.click' event
+$('#tree1').bind(
+ 'tree.click',
+ function(event) {
+ // The clicked node is 'event.node'
+ var node = event.node;
+ alert(node.name);
+ }
+);
+{% endhighlight %}
+
+The default action is to select the node. You can prevent the selection by calling **preventDefault**:
+
+{% highlight js %}
+$('#tree1').bind(
+ 'tree.click',
+ function(event) {
+ event.preventDefault();
+ }
+);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/64_tree-close.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/64_tree-close.md
new file mode 100644
index 00000000..1dd599cf
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/64_tree-close.md
@@ -0,0 +1,15 @@
+---
+title: tree.close
+name: event-tree-close
+---
+
+Called when a node is closed.
+
+{% highlight js %}
+$('#tree1').bind(
+ 'tree.close',
+ function(e) {
+ console.log(e.node);
+ }
+);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/65_tree-contextmenu.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/65_tree-contextmenu.md
new file mode 100644
index 00000000..9535c6cb
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/65_tree-contextmenu.md
@@ -0,0 +1,21 @@
+---
+title: tree.contextmenu
+name: event-tree-contextmenu
+---
+
+Triggered when the user right-clicks a tree node. The event contains the following properties:
+
+* **node**: the node that is clicked on
+* **click_event**: the original click event
+
+{% highlight js %}
+// bind 'tree.contextmenu' event
+$('#tree1').bind(
+ 'tree.contextmenu',
+ function(event) {
+ // The clicked node is 'event.node'
+ var node = event.node;
+ alert(node.name);
+ }
+);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/66_tree-dblclick.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/66_tree-dblclick.md
new file mode 100644
index 00000000..97768a38
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/66_tree-dblclick.md
@@ -0,0 +1,19 @@
+---
+title: tree.dblclick
+name: event-tree-dblclick
+---
+
+The **tree.dblclick** is fired when a tree node is double-clicked. The event contains the following properties:
+
+* **node**: the node that is clicked on
+* **click_event**: the original click event
+
+{% highlight js %}
+$('#tree1').bind(
+ 'tree.dblclick',
+ function(event) {
+ // event.node is the clicked node
+ console.log(event.node);
+ }
+);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/67_tree-init.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/67_tree-init.md
new file mode 100644
index 00000000..ca1acc53
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/67_tree-init.md
@@ -0,0 +1,15 @@
+---
+title: tree.init
+name: event-tree-init
+---
+
+Called when the tree is initialized. This is particularly useful when the data is loaded from the server.
+
+{% highlight js %}
+$('#tree1').bind(
+ 'tree.init',
+ function() {
+ // initializing code
+ }
+);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/68_tree-move.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/68_tree-move.md
new file mode 100644
index 00000000..897d65be
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/68_tree-move.md
@@ -0,0 +1,73 @@
+---
+title: tree.move
+name: event-tree-move
+---
+
+Triggered when the user moves a node.
+
+Note that this event is called **before** the node is moved. See note about `do_move` below.
+
+Event.move_info contains:
+
+* moved_node
+* target_node
+* position: (before, after or inside)
+* previous_parent
+
+{% highlight js %}
+$('#tree1').tree({
+ data: data,
+ dragAndDrop: true
+});
+
+$('#tree1').bind(
+ 'tree.move',
+ function(event) {
+ console.log('moved_node', event.move_info.moved_node);
+ console.log('target_node', event.move_info.target_node);
+ console.log('position', event.move_info.position);
+ console.log('previous_parent', event.move_info.previous_parent);
+ }
+);
+{% endhighlight %}
+
+You can prevent the move by calling **event.preventDefault()**
+
+{% highlight js %}
+$('#tree1').bind(
+ 'tree.move',
+ function(event) {
+ event.preventDefault();
+ }
+);
+{% endhighlight %}
+
+You can later call **event.move_info.move_info.do_move()** to move the node. This way you can ask the user before moving the node:
+
+{% highlight js %}
+$('#tree1').bind(
+ 'tree.move',
+ function(event) {
+ event.preventDefault();
+
+ if (confirm('Really move?')) {
+ event.move_info.do_move();
+ }
+ }
+);
+{% endhighlight %}
+
+Note that if you want to serialise the tree, for example to POST back to a server, you need to let tree complete the move first:
+
+{% highlight js %}
+$('#tree1').bind(
+ 'tree.move',
+ function(event)
+ {
+ event.preventDefault();
+ // do the move first, and _then_ POST back.
+ event.move_info.do_move();
+ $.post('your_url', {tree: $(this).tree('toJson')});
+ }
+);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/69_tree-open.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/69_tree-open.md
new file mode 100644
index 00000000..2489510e
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/69_tree-open.md
@@ -0,0 +1,15 @@
+---
+title: tree.open
+name: event-tree-open
+---
+
+Called when a node is opened.
+
+{% highlight js %}
+$('#tree1').bind(
+ 'tree.open',
+ function(e) {
+ console.log(e.node);
+ }
+);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/70_tree-select.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/70_tree-select.md
new file mode 100644
index 00000000..4d62828a
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/70_tree-select.md
@@ -0,0 +1,28 @@
+---
+title: tree.select
+name: event-tree-select
+---
+
+Triggered when a tree node is selected or deselected.
+
+If a node is selected, then **event.node** contains the selected node.
+
+If a node is deselected, then the **event.node** property is null.
+
+{% highlight js %}
+$('#tree1').bind(
+ 'tree.select',
+ function(event) {
+ if (event.node) {
+ // node was selected
+ var node = event.node;
+ alert(node.name);
+ }
+ else {
+ // event.node is null
+ // a node was deselected
+ // e.previous_node contains the deselected node
+ }
+ }
+);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/71_multiple-selection.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/71_multiple-selection.md
new file mode 100644
index 00000000..15221640
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/71_multiple-selection.md
@@ -0,0 +1,9 @@
+---
+title: Multiple selection
+name: multiple-selection
+section: true
+---
+
+Jqtree has some functions that can help you to implement multiple selection. See [Example 8 - multiple select](examples/08_multiple_select).
+
+In order for multiple selection to work, you must give the nodes an id.
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/72_add-to-selection.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/72_add-to-selection.md
new file mode 100644
index 00000000..646fba1a
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/72_add-to-selection.md
@@ -0,0 +1,11 @@
+---
+title: addToSelection
+name: multiple-selection-add-to-selection
+---
+
+Add this node to the selection
+
+{% highlight js %}
+var node = $('#tree1').tree('getNodeById', 123);
+$('#tree1').tree('addToSelection', node);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/73_get-selected-nodes.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/73_get-selected-nodes.md
new file mode 100644
index 00000000..563d0683
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/73_get-selected-nodes.md
@@ -0,0 +1,10 @@
+---
+title: getSelectedNodes
+name: multiple-selection-get-selected-nodes
+---
+
+Return a list of selected nodes.
+
+{% highlight js %}
+var nodes = $('#tree1').tree('getSelectedNodes');
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/74_is-node-selected.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/74_is-node-selected.md
new file mode 100644
index 00000000..7c0d9a32
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/74_is-node-selected.md
@@ -0,0 +1,11 @@
+---
+title: isNodeSelected
+name: multiple-selection-is-node-selected
+---
+
+Return if this node is selected.
+
+{% highlight js %}
+var node = $('#tree1').tree('getNodeById', 123);
+var is_selected = $('#tree1').tree('isNodeSelected', node);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/75_remove-from-selection.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/75_remove-from-selection.md
new file mode 100644
index 00000000..8b311074
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/75_remove-from-selection.md
@@ -0,0 +1,11 @@
+---
+title: removeFromSelection
+name: multiple-selection-remove-from-selection
+---
+
+Remove this node from the selection.
+
+{% highlight js %}
+var node = $('#tree1').tree('getNodeById', 123);
+$('#tree1').tree('removeFromSelection', node);
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/76_node-functions.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/76_node-functions.md
new file mode 100644
index 00000000..e4ebf7c9
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/76_node-functions.md
@@ -0,0 +1,13 @@
+---
+title: Node functions
+name: node-functions
+section: true
+---
+
+You can access a node using for example [getNodeById](#functions-getnodebyid) function:
+
+{% highlight js %}
+var node = $('#tree1').tree('getNodeById', 123);
+{% endhighlight %}
+
+The Node object has the following properties and functions:
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/77_children.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/77_children.md
new file mode 100644
index 00000000..f04b357b
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/77_children.md
@@ -0,0 +1,12 @@
+---
+title: children
+name: node-functions-children
+---
+
+You can access the children of a node using the **children** property.
+
+{% highlight js %}
+for (var i=0; i < node.children.length; i++) {
+ var child = node.children[i];
+}
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/78_getdata.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/78_getdata.md
new file mode 100644
index 00000000..dff9020c
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/78_getdata.md
@@ -0,0 +1,17 @@
+---
+title: getData
+name: node-functions-getdata
+---
+
+**function getData(include_parent = false);**
+
+Get the subtree of this node.
+
+**include_parent**
+
+* **true**: include node and children
+* **false**: only include children (default)
+
+{% highlight js %}
+var data = node.getData();
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/79_getlevel.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/79_getlevel.md
new file mode 100644
index 00000000..183e63ca
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/79_getlevel.md
@@ -0,0 +1,13 @@
+---
+title: getLevel
+name: node-functions-getlevel
+---
+
+Get the level of a node. The level is distance of a node to the root node.
+
+{% highlight js %}
+var node = $('#tree1').tree('getNodeById', 123);
+
+// result is e.g. 2
+var level = node.getLevel();
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/80_getnextnode.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/80_getnextnode.md
new file mode 100644
index 00000000..4364ad93
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/80_getnextnode.md
@@ -0,0 +1,12 @@
+---
+title: getNextNode
+name: node-functions-getnextnode
+---
+
+Get the next node in the tree. Does the same as using the *down* key.
+
+Returns a node or null.
+
+{% highlight js %}
+var node = node.getNextNode();
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/81_getnextsibling.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/81_getnextsibling.md
new file mode 100644
index 00000000..03ff2e26
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/81_getnextsibling.md
@@ -0,0 +1,10 @@
+---
+title: getNextSibling
+name: node-functions-getnextsibling
+---
+
+Get the next sibling of this node. Returns a node or null.
+
+{% highlight js %}
+var node = node.getNextSibling();
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/82_getpreviousnode.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/82_getpreviousnode.md
new file mode 100644
index 00000000..3560ff9b
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/82_getpreviousnode.md
@@ -0,0 +1,12 @@
+---
+title: getPreviousNode
+name: node-functions-getpreviousnode
+---
+
+Get the previous node in the tree. Does the same as using the *up* key.
+
+Returns a node or null.
+
+{% highlight js %}
+var node = node.getPreviousNode();
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/83_getprevioussibling.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/83_getprevioussibling.md
new file mode 100644
index 00000000..4b417344
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/83_getprevioussibling.md
@@ -0,0 +1,10 @@
+---
+title: getPreviousSibling
+name: node-functions-getprevioussibling
+---
+
+Get the previous sibling of this node. Returns a node or null.
+
+{% highlight js %}
+var node = node.getPreviousSibling();
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/84_parent.md b/ecomp-portal-FE/client/bower_components/jqTree/_entries/84_parent.md
new file mode 100644
index 00000000..83c635c1
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/84_parent.md
@@ -0,0 +1,10 @@
+---
+title: parent
+name: node-functions-parent
+---
+
+You can access the parent of a node using the **parent** property.
+
+{% highlight js %}
+var parent_node = node.parent;
+{% endhighlight %}
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/insert.py b/ecomp-portal-FE/client/bower_components/jqTree/_entries/insert.py
new file mode 100644
index 00000000..d72ef4b9
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/insert.py
@@ -0,0 +1,46 @@
+import os
+import argparse
+import re
+
+
+parser = argparse.ArgumentParser()
+parser.add_argument('index', type=int)
+
+args = parser.parse_args()
+
+insert_index = args.index
+
+filenames = os.listdir('.')
+
+file_tuples = []
+
+re_file = re.compile(r'^(\d\d)_(.*)$')
+
+for filename in filenames:
+ m = re_file.match(filename)
+
+ if m:
+ i = int(m.groups()[0])
+
+ t = i, filename
+
+ file_tuples.append(t)
+
+file_tuples = sorted(file_tuples, key=lambda t: t[0])
+
+for i, t in enumerate(file_tuples):
+ if i + 1 != t[0]:
+ raise Exception('Expected index %s for %s' % (i, t[1]))
+
+for i in range(insert_index - 1, len(file_tuples)):
+ old_filename = file_tuples[i][1]
+
+ m = re_file.match(old_filename)
+
+ filepart = m.groups()[1]
+
+ new_filename = '%02d_%s' % (i + 2, filepart)
+
+ print 'rename %s to %s' % (old_filename, new_filename)
+
+ os.rename(old_filename, new_filename)
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/_entries/renumber.py b/ecomp-portal-FE/client/bower_components/jqTree/_entries/renumber.py
new file mode 100644
index 00000000..8efb0b6e
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/jqTree/_entries/renumber.py
@@ -0,0 +1,38 @@
+import os
+import re
+
+
+filenames = os.listdir('.')
+
+file_tuples = []
+
+re_file = re.compile(r'^(\d\d)_(.*)$')
+
+for filename in filenames:
+ m = re_file.match(filename)
+
+ if m:
+ i = int(m.groups()[0])
+
+ t = i, filename
+
+ file_tuples.append(t)
+
+file_tuples = sorted(file_tuples, key=lambda t: t[0])
+
+for i, t in enumerate(file_tuples):
+ old_filename = file_tuples[i][1]
+
+ m = re_file.match(old_filename)
+
+ file_index = int(m.groups()[0])
+ filepart = m.groups()[1]
+
+ expected_index = i + 1
+
+ if file_index != expected_index:
+ new_filename = '%02d_%s' % (expected_index, filepart)
+
+ print 'rename %s to %s' % (old_filename, new_filename)
+
+ os.rename(old_filename, new_filename)