# File live_tree.rb, line 145
                def construct_live_tree_function(name, options = {})
                        options = options.dup;
                        if options[:id] != nil
                                tree_id = options[:id]
                        else
                                tree_id = name
                        end
                        for k in [:on_click_item, :on_expand_item, :on_collapse_item, :on_load_item]
                                if options[k] != nil
                                        options[k] = "function(item){" + options[k] + "}"
                                end
                        end
                        if options[:data_url] == nil                         
                                if options[:data_action] == nil
                                        act = name.to_s + "_live_tree_data"
                                else
                                        act = options[:data_action]
                                end
                                if options[:data_controller] == nil
                                        options[:data_url] = { :action => act }
                                else
                                        options[:data_url] = { :controller => options[:data_controller], :action => act }
                                end
                        end
                        options[:data_url] = '"' + escape_javascript(url_for(options[:data_url])) + '"'
                        for k in [:css_class, :css_style]
                                if options[k] != nil
                                        options[k] = '"' + escape_javascript(options[k]) + '"'
                                end
                        end
                        if options[:initial_data_root] != nil
                                item = options[:initial_data_root]
                                if (options[:initial_data_whole_tree])
                                        depth = nil
                                elsif (options[:expand_root_item] == nil || options[:expand_root_item] || options[:hide_root_item])
                                        depth = 2
                                else
                                        depth = 1
                                end
                                
                                if options[:initial_data_options] == nil
                                        data_options_method = controller.method("#{name}_live_tree_options")
                                        if data_options_method
                                                data_options = data_options_method.call
                                        else
                                                data_options = {}
                                        end
                                else
                                        data_options = options[:initial_data_options]
                                end
                                data_options = data_options.dup
                                data_options[:depth] = depth;
                                options[:initial_data] = construct_live_tree_data(item, data_options)
                        end
                        options.delete :id
                        options.delete :data_action
                        options.delete :data_controller
                        options.delete :initial_data_root
                        options.delete :initial_data_options
                        options.delete :initial_data_whole_tree
                        options_js = "{\n" + options.map {|k, v| LiveTreeHelper.live_tree_js_name(k) + ":#{v}"}.join(",\n") + "\n}"                  
                        "new LiveTree(\"" + tree_id.to_s + "\"," + options_js + ")"
                end