@@ -5096,7 +5146,7 @@ representation, at least at the time of their creation. The server
side representation is a CLOG-obj or one of its descendants that is
returned by one of the many create-* functions. The client side
representation is the DOM element (or other JavaScript object) itself
-stored in the clog array keyed by the html-id clog[html-id][].
+stored in the clog array keyed by the html-id cloghtml-id.
* Client Side Scripting *
diff --git a/static-files/tutorial/jslists/LICENSE b/static-files/tutorial/jslists/LICENSE
new file mode 100644
index 0000000..0a08f68
--- /dev/null
+++ b/static-files/tutorial/jslists/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 TheTechy
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/static-files/tutorial/jslists/README.md b/static-files/tutorial/jslists/README.md
new file mode 100644
index 0000000..6e119ed
--- /dev/null
+++ b/static-files/tutorial/jslists/README.md
@@ -0,0 +1,18 @@
+# jslists
+A library for creating and managing dynamic collapsible lists.
+
+When a recent project required a tree view for displaying MI data, I wanted to use a basic HTML list setup. After a quick trawl, there are either heavy weight libraries like jsTree which have a dependency on jQuery or very light weight libraries that didn't really give me what I needed.
+
+So, I sat down and penned the following little library! It's lightweight enough right now. If I find time I will try and add the features I currently have in dev such as find, expand/close all, drag drop of list nodes.
+
+Load using a normal script tag
+```html
+
+```
+
+Calling JSLists is simple. In the example below, we simply pass the ID of the list we want to collapse:
+```html
+
+```
+There are two parameters in JSLists.applyToList. The first is the ID of the list list you want to collapse.
+The second is the list type, so UL [Unordered list], OL [Ordered list], or ALL.
diff --git a/static-files/tutorial/jslists/example.html b/static-files/tutorial/jslists/example.html
new file mode 100644
index 0000000..f6bfdf2
--- /dev/null
+++ b/static-files/tutorial/jslists/example.html
@@ -0,0 +1,173 @@
+
+
+
+ JSLists - Very simple nested list [Example 1]
+
+
+
+
+
JSLists
+
+
+
Example 1:
+
+
Formula One Teams (2018)
+
+
○ Scuderia Ferrari
+
○ Sahara Force India F1 Team
+
○ Haas F1 Team
+
○ McLaren F1 Team
+
○ Mercedes AMG Petronas Motorsport
+
○ Aston Martin Red Bull Racing
+
○ Renault Sport Formula One Team
+
○ Alfa Romeo Sauber F1 Team
+
○ Red Bull Toro Rosso Honda
+
○ Williams Martini Racing
+
+
+
+
Example 2:
+
+
Formula One Drivers (2018)
+
+
● Lewis Hamilton
+
● Sebastian Vettel
+
● Kimi Räikkönen
+
● Valtteri Bottas
+
● Daniel Ricciardo
+
● Max Verstappen
+
● Nico Hülkenberg
+
● Kevin Magnussen
+
● Fernando Alonso
+
● Sergio Pérez
+
● Carlos Sainz Jr.
+
● Esteban Ocon
+
● Pierre Gasly
+
● Romain Grosjean
+
● Charles Leclerc
+
● Stoffel Vandoorne
+
● Marcus Ericsson
+
● Lance Stroll
+
● Brendon Hartley
+
● Sergey Sirotkin
+
+
+
+
Example 3:
+
+
Formula One combined (2018)
+
+
Scuderia Ferrari
+
+
● Sebastian Vettel
+
● Kimi Räikkönen
+
+
+
Mercedes AMG
+
+
● Lewis Hamilton
+
● Valtteri Bottas
+
+
+
Haas F1 Team
+
+
● Romain Grosjean
+
● Kevin Magnussen
+
+
+
McLaren F1 Team
+
+
● Fernando Alonso
+
● Stoffel Vandoorne
+
+
+
Red Bull Racing
+
+
● Max Verstappen
+
● Daniel Ricciardo
+
+
+
Renault
+
+
● Max Verstappen
+
● Daniel Ricciardo
+
+
+
+
+
+
+
+ jslists is a small JavaScript library that can turn those pesky unordered & ordered list into a funky tree.
+ There is an example to the left which demostrates the basic functionality
+ Because JSLists doesn't effect any element of the HTML list you are passing is, you can use all of the functionality of standard HTML list.
+ So ALL list items can contain any valid HTML elements, such as anchors <a>, <img>, <div> etc.
+ It's pretty easy to use. To create a tree element, give the UL/OL an id, then simply add another unordered or ordered list as a list item. The text within the list item becomes the heading for that list.
+ The markup for the Formula One Teams list to the left is:
+ <ul id='f1teams' class='jslists'>
+ <li>Formula One Teams (2018)
+ <ul>
+ <li>○ Scuderia Ferrari</li>
+ <li>○ Sahara Force India F1 Team</li>
+ <li>○ Haas F1 Team</li>
+ <li>○ McLaren F1 Team</li>
+ <li>○ Mercedes AMG Petronas Motorsport</li>
+ <li>○ Aston Martin Red Bull Racing</li>
+ <li>○ Renault Sport Formula One Team</li>
+ <li>○ Alfa Romeo Sauber F1 Team</li>
+ <li>○ Red Bull Toro Rosso Honda</li>
+ <li>○ Williams Martini Racing</li>
+ </ul>
+ </li>
+ </ul>
+ You can also create nested lists using jsLists. Check out the source code for Example 3 and you will see the pattern is the same as the standard list.
+