;(function ($) {
function load (settings, root, child, container) {
$.getjson (Settings.url, {root:root}, function (response) {
function CreateNode (parent) {
var current = $ ("<li/>"). attr ("id", This.id | | ""). html ("<span>" + This.text + "</span>"). Appendto (parent);
if (this.classes) {
Current.children ("span"). addclass (this.classes);
}
if (this.expanded) {
Current.addclass ("open");
}
if (This.haschildren | | This.children && this.children.length) {
var branch = $ ("<ul/>"). Appendto (current);
if (This.haschildren) {
Current.addclass ("HasChildren");
Createnode.call ({
Text: "Placeholder",
ID: "Placeholder",
Children:[]
}, Branch);
}
if (This.children && this.children.length) {
$.each (This.children, CreateNode, [branch])
}
}
}
$.each (response, CreateNode, [child]);
$ (container). TreeView ({add:child});
});
}
var proxied = $.fn.treeview;
$.fn.treeview = function (settings) {
if (!settings.url) {
Return proxied.apply (this, arguments);
}
var container = this;
Load (settings, "source", this, container);
var usertoggle = Settings.toggle;
Return Proxied.call (this, $.extend ({}, settings, {
Collapsed:true,
Toggle:function () {
var $this = $ (this);
if ($this. Hasclass ("HasChildren")) {
var childlist = $this. Removeclass ("HasChildren"). Find ("ul");
Childlist.empty ();
Load (settings, this.id, childlist, container);
}
if (Usertoggle) {
Usertoggle.apply (this, arguments);
}
}
}));
};
}) (JQuery);