var _this = this;
                                obj = obj ? this._get_node(obj) : this.get_container();
                                if(!obj || obj === -1) { obj = this.get_container_ul(); }
                                var _this = this;
                                obj = obj ? this._get_node(obj) : this.get_container();
                                if(!obj || obj === -1) { obj = this.get_container_ul(); }
                                this.__callback({ "obj" : obj });
                        },
                        clean_node      : function (obj) {
                                obj = obj && obj != -1 ? $(obj) : this.get_container_ul();
                                this.__callback({ "obj" : obj });
                        },
                        clean_node      : function (obj) {
                                obj = obj && obj != -1 ? $(obj) : this.get_container_ul();
                                                        if(s.select_limit == -1 || obj.length < s.select_limit) {
                                                                this.data.ui.last_selected.removeClass("jstree-last-selected");
                                                                this.data.ui.selected.each(function () {
                                                        if(s.select_limit == -1 || obj.length < s.select_limit) {
                                                                this.data.ui.last_selected.removeClass("jstree-last-selected");
                                                                this.data.ui.selected.each(function () {
                                .bind("move_node.jstree", $.proxy(function (e, data) {
                                        if(this._get_settings().crrm.move.open_onmove) {
                                                var t = this;
                                .bind("move_node.jstree", $.proxy(function (e, data) {
                                        if(this._get_settings().crrm.move.open_onmove) {
                                                var t = this;
                                        if(!js.length) { return false; }
                                        for(i = 0, j = js.length; i < j; i++) {
                                                tmp = this._parse_json(js[i], obj, true);
                                        if(!js.length) { return false; }
                                        for(i = 0, j = js.length; i < j; i++) {
                                                tmp = this._parse_json(js[i], obj, true);
                                                var $t = $(this), nm;
                                                $t.children("a" + (_this.data.languages ? "" : ":eq(0)") ).not(":has(.jstree-checkbox)").prepend("<ins class='jstree-checkbox'> </ins>").parent().not(".jstree-checked, .jstree-unchecked").addClass( ts ? "jstree-unchecked" : c );
                                                if(rc) {
                                                var $t = $(this), nm;
                                                $t.children("a" + (_this.data.languages ? "" : ":eq(0)") ).not(":has(.jstree-checkbox)").prepend("<ins class='jstree-checkbox'> </ins>").parent().not(".jstree-checked, .jstree-unchecked").addClass( ts ? "jstree-unchecked" : c );
                                                if(rc) {
                                                if(!coll.filter(".jstree-checked, .jstree-undetermined").length) { return false; }
                                                coll.removeClass("jstree-checked jstree-undetermined").addClass("jstree-unchecked"); 
                                                if(rc) { coll.children(":checkbox").prop("checked", false); }
                                        }
                                        else { 
                                                if(!coll.filter(".jstree-checked, .jstree-undetermined").length) { return false; }
                                                coll.removeClass("jstree-checked jstree-undetermined").addClass("jstree-unchecked"); 
                                                if(rc) { coll.children(":checkbox").prop("checked", false); }
                                        }
                                        else { 
                                                if(!coll.filter(".jstree-unchecked, .jstree-undetermined").length) { return false; }
                                                coll.removeClass("jstree-unchecked jstree-undetermined").addClass("jstree-checked"); 
                                                if(rc) { coll.children(":checkbox").prop("checked", true); }
                                                if(!coll.filter(".jstree-unchecked, .jstree-undetermined").length) { return false; }
                                                coll.removeClass("jstree-unchecked jstree-undetermined").addClass("jstree-checked"); 
                                                if(rc) { coll.children(":checkbox").prop("checked", true); }
-                                                               $this.parentsUntil(".jstree", "li").andSelf().removeClass("jstree-checked jstree-unchecked").addClass("jstree-undetermined");
-                                                               if(rc) { $this.parentsUntil(".jstree", "li").andSelf().children(":checkbox").prop("checked", false); }
+                                                               $this.parentsUntil(".jstree", "li").addBack().removeClass("jstree-checked jstree-unchecked").addClass("jstree-undetermined");
+                                                               if(rc) { $this.parentsUntil(".jstree", "li").addBack().children(":checkbox").prop("checked", false); }
-                                                               $this.parentsUntil(".jstree", "li").andSelf().removeClass("jstree-checked jstree-unchecked").addClass("jstree-undetermined");
-                                                               if(rc) { $this.parentsUntil(".jstree", "li").andSelf().children(":checkbox").prop("checked", false); }
+                                                               $this.parentsUntil(".jstree", "li").addBack().removeClass("jstree-checked jstree-unchecked").addClass("jstree-undetermined");
+                                                               if(rc) { $this.parentsUntil(".jstree", "li").addBack().children(":checkbox").prop("checked", false); }
                                obj = this._get_node(obj);
                                if(!obj.length) { return; }
                                if(this._get_settings().checkbox.two_state) {
                                obj = this._get_node(obj);
                                if(!obj.length) { return; }
                                if(this._get_settings().checkbox.two_state) {
                                else if(a === 0 && b === 0) { this.change_state(obj, true); }
                                else if(a === c) { this.change_state(obj, false); }
                                else { 
                                else if(a === 0 && b === 0) { this.change_state(obj, true); }
                                else if(a === c) { this.change_state(obj, false); }
                                else { 
-                                       obj.parentsUntil(".jstree","li").andSelf().removeClass("jstree-checked jstree-unchecked").addClass("jstree-undetermined");
-                                       if(rc) { obj.parentsUntil(".jstree", "li").andSelf().children(":checkbox").prop("checked", false); }
+                                       obj.parentsUntil(".jstree","li").addBack().removeClass("jstree-checked jstree-unchecked").addClass("jstree-undetermined");
+                                       if(rc) { obj.parentsUntil(".jstree", "li").addBack().children(":checkbox").prop("checked", false); }
                                this.get_container()
                                        .bind("search.jstree", function (e, data) {
                                                $(this).children("ul").find("li").hide().removeClass("jstree-last");
                                this.get_container()
                                        .bind("search.jstree", function (e, data) {
                                                $(this).children("ul").find("li").hide().removeClass("jstree-last");
                                                        .filter("ul").each(function () { $(this).children("li:visible").eq(-1).addClass("jstree-last"); });
                                        })
                                        .bind("clear_search.jstree", function () {
                                                        .filter("ul").each(function () { $(this).children("li:visible").eq(-1).addClass("jstree-last"); });
                                        })
                                        .bind("clear_search.jstree", function () {
                        // this used to use html() and clean the whitespace, but this way any attached data was lost
                        this.data.html_data.original_container_html = this.get_container().find(" > ul > li").clone(true);
                        // remove white space from LI node - otherwise nodes appear a bit to the right
                        // this used to use html() and clean the whitespace, but this way any attached data was lost
                        this.data.html_data.original_container_html = this.get_container().find(" > ul > li").clone(true);
                        // remove white space from LI node - otherwise nodes appear a bit to the right
                                obj = !obj || obj == -1 ? this.get_container().find("> ul > li") : this._get_node(obj);
                                if(obj === false) { return; } // added for removing root nodes
                                obj.each(function () {
                                obj = !obj || obj == -1 ? this.get_container().find("> ul > li") : this._get_node(obj);
                                if(obj === false) { return; } // added for removing root nodes
                                obj.each(function () {
                                                var $t = $(this);
                                                if($t.children(".jstree-wholerow-span").length) { return true; }
                                                $t.prepend("<span class='jstree-wholerow-span' style='width:" + ($t.parentsUntil(".jstree","li").length * 18) + "px;'> </span>");
                                                var $t = $(this);
                                                if($t.children(".jstree-wholerow-span").length) { return true; }
                                                $t.prepend("<span class='jstree-wholerow-span' style='width:" + ($t.parentsUntil(".jstree","li").length * 18) + "px;'> </span>");