1. On unresponsive GUI:
On rare occasions I could reproduce this in Chrome, but now I can't seem to reproduce it al all. using setTimeout on $("#elementEditorTabs").tabs doesn't seem to make any difference, even if I try a timeout of 8000ms. If you can easily reproduce you could try putting some console.log statements in the javscript to see where the code fails.
2. On the memory leak:
In Chrome I can reproduce a pretty severe memory leak, yes! In Firefox it leaks memory for a short while, then reclaims it all again periodically. Actually I think there are multiple leaks, because by commenting out bits of code the leak becomes less severe, but still exists.
Commenting out "initialiseElementEditor" doesn't seem to stop leaking much at all, if anything.
Commenting out:
$("#elementEditor").load(
'@Html.Raw(@Url.Action("EditElement", new { id = Model.GameId, key = "KEY", tab = "TAB" }))'.replace("KEY", data.rslt.obj.attr("data-key").replace(/ /g, "%20")).replace("TAB", _selectTab), function () ...
makes the leak quite considerably smaller. So it seems most of the leak comes from inserting ElementEditor.cshtml into the page (or I guess more specfically, probably from not clearing up the memory used by what was previously there). I deleted all of EditorElement.cshtml except for a single div and that too greatly reduced the leak. You could try deleting various parts of ElementEditor.cshtml and see what difference it makes.
I also tried Chrome memory profile by going F12->profiles->heap snapshot. This shows huge number of objects created using the array constructor, but can't work out how to make it provide any useful information about where they got initialized.
3. Other:
a) Why:
function selectTreeNode(node) {
$("#gameTree").jstree("deselect_all");
$("#gameTree").jstree("select_node", "#tree-" + node.replace(/ /g, "-"));
when select_limit is 1?
b) click player, then click object in the same room as the player -> "Sorry, an internal error occurred: The method or operation is not implemented." I sometimes get this error on other objects, too.
c) F12 in chrome says that at all times the page has two elements with id "form-loading"