(function($){$.extend($.tree.plugins,{checkbox:{defaults:{three_state:true},get_checked:function(t){if(!t){t=$.tree.focused();}return t.container.find("a.checked").parent();},get_undeterminded:function(t){if(!t){t=$.tree.focused();}return t.container.find("a.undetermined").parent();},get_unchecked:function(t){if(!t){t=$.tree.focused();}return t.container.find("a:not(.checked, .undetermined)").parent();},check:function(n){if(!n){return false;}var t=$.tree.reference(n);n=t.get_node(n);if(n.children("a").hasClass("checked")){return true;}var opts=$.extend(true,{},$.tree.plugins.checkbox.defaults,t.settings.plugins.checkbox);if(opts.three_state){n.find("li").andSelf().children("a").removeClass("unchecked undetermined").addClass("checked");n.parents("li").each(function(){if($(this).children("ul").find("a:not(.checked):eq(0)").size()>0){$(this).parents("li").andSelf().children("a").removeClass("unchecked checked").addClass("undetermined");return false;}else{$(this).children("a").removeClass("unchecked undetermined").addClass("checked");}});}else{n.children("a").removeClass("unchecked").addClass("checked");}return true;},uncheck:function(n){if(!n){return false;}var t=$.tree.reference(n);n=t.get_node(n);if(n.children("a").hasClass("unchecked")){return true;}var opts=$.extend(true,{},$.tree.plugins.checkbox.defaults,t.settings.plugins.checkbox);if(opts.three_state){n.find("li").andSelf().children("a").removeClass("checked undetermined").addClass("unchecked");n.parents("li").each(function(){if($(this).find("a.checked, a.undetermined").size()-1>0){$(this).parents("li").andSelf().children("a").removeClass("unchecked checked").addClass("undetermined");return false;}else{$(this).children("a").removeClass("checked undetermined").addClass("unchecked");}});}else{n.children("a").removeClass("checked").addClass("unchecked");}return true;},toggle:function(n){if(!n){return false;}var t=$.tree.reference(n);n=t.get_node(n);if(n.children("a").hasClass("checked")){$.tree.plugins.checkbox.uncheck(n);}else{$.tree.plugins.checkbox.check(n);}},callbacks:{onchange:function(n,t){$.tree.plugins.checkbox.toggle(n);}}}});})(jQuery);
