2 var CLASSES = $.treeview.classes;
3 var proxied = $.fn.treeview;
4 $.fn.treeview = function(settings) {
5 settings = $.extend({}, settings);
7 return this.trigger("add", [settings.add]);
10 return this.trigger("remove", [settings.remove]);
12 return proxied.apply(this, arguments).bind("add", function(event, branches) {
14 .removeClass(CLASSES.last)
15 .removeClass(CLASSES.lastCollapsable)
16 .removeClass(CLASSES.lastExpandable)
18 .removeClass(CLASSES.lastCollapsableHitarea)
19 .removeClass(CLASSES.lastExpandableHitarea);
20 $(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings, $(this).data("toggler"));
21 }).bind("remove", function(event, branches) {
22 var prev = $(branches).prev();
23 var parent = $(branches).parent();
25 prev.filter(":last-child").addClass(CLASSES.last)
26 .filter("." + CLASSES.expandable).replaceClass(CLASSES.last, CLASSES.lastExpandable).end()
27 .find(">.hitarea").replaceClass(CLASSES.expandableHitarea, CLASSES.lastExpandableHitarea).end()
28 .filter("." + CLASSES.collapsable).replaceClass(CLASSES.last, CLASSES.lastCollapsable).end()
29 .find(">.hitarea").replaceClass(CLASSES.collapsableHitarea, CLASSES.lastCollapsableHitarea);
30 if (parent.is(":not(:has(>))") && parent[0] != this) {
31 parent.parent().removeClass(CLASSES.collapsable).removeClass(CLASSES.expandable)
32 parent.siblings(".hitarea").andSelf().remove();