function Bookmark(rootNode) {
    let ToolbarId = browserId == "F" ? "toolbar_____" : "1";
    chrome.bookmarks.get(ToolbarId, function(list) {
        chrome.bookmarks.search("TreeTabs", function(list) {
            let TreeTabsId;
            for (var elem in list) {
                if (list[elem].parentId == ToolbarId) {
                    TreeTabsId = list[elem].id;
                    break;
                }
            }
            if (TreeTabsId == undefined) {
                chrome.bookmarks.create({parentId: ToolbarId, title: "TreeTabs"}, function(TreeTabsNew) {
                    TreeTabsId = TreeTabsNew.id;
                });
                Bookmark(rootNode);
                return;
            } else {
                let Tabs = document.querySelectorAll("#°" + rootNode.id + " .tab");
                if (rootNode.classList.contains("tab")) {
                    if (Tabs.length > 0) {
                        chrome.tabs.get(parseInt(rootNode.id), function(tab) {
                            if (tab) {
                                chrome.bookmarks.create({parentId: TreeTabsId, title: tab.title}, function(root) {
                                    let TabNodes = document.querySelectorAll("[id='" + rootNode.id + "'], [id='" + rootNode.id + "'] .tab");
                                    for (let s of TabNodes) {
                                        chrome.tabs.get(parseInt(s.id), function(tab) {
                                            if (tab) chrome.bookmarks.create({parentId: root.id, title: tab.title, url: tab.url});
                                        });
                                    }
                                });
                            }
                        });
                    } else {
                        chrome.tabs.get(parseInt(rootNode.id), function(tab) {
                            if (tab) chrome.bookmarks.create({parentId: TreeTabsId, title: tab.title, url: tab.url});
                        });
                    }
                }
                if (rootNode.classList.contains("folder") || rootNode.classList.contains("group")) {
                    let rootName = labels.noname_group;
                    if (rootNode.classList.contains("folder") && tt.folders[rootNode.id]) rootName = tt.folders[rootNode.id].name;
                    if (rootNode.classList.contains("group") && tt.groups[rootNode.id]) rootName = tt.groups[rootNode.id].name;
                    chrome.bookmarks.create({parentId: TreeTabsId, title: rootName}, function(root) {
                        let Nodes = {};
                        let folders = document.querySelectorAll("#°" + rootNode.id + " .folder");
                        for (let f of folders) {
                            if (tt.folders[f.id]) {
                                chrome.bookmarks.create({parentId: root.id, title: tt.folders[f.id].name}, function(Bkfolder) {
                                    Nodes[f.id] = {ttid: f.id, id: Bkfolder.id, ttparent: tt.folders[f.id].parent, parent: root.id};
                                    if (Object.keys(Nodes).length == folders.length) {
                                        for (var elem in Nodes) {
                                            if (Nodes[Nodes[elem].ttparent]) Nodes[Nodes[elem].ttid].parent = Nodes[Nodes[elem].ttparent].id;
                                        }
                                        for (var elem in Nodes) {
                                            chrome.bookmarks.move(Nodes[elem].id, {parentId: Nodes[elem].parent}, function(BkFinalfolder) {});
                                        }
                                    }
                                });
                            }
                        }
                        setTimeout(function() {
                            let reverse_tabs =  Array.from(Tabs).reverse();
                            for (let t of reverse_tabs) {
                                chrome.tabs.get(parseInt(t.id), function(tab) {
                                    if (tab) chrome.bookmarks.create({parentId: (Nodes[t.parentNode.parentNode.id] ? Nodes[t.parentNode.parentNode.id].id : root.id), title: tab.title, url: tab.url});
                                });
                            }
                            // Array.from(Tabs).reverse().forEach(function(t) {
                            //     chrome.tabs.get(parseInt(t.id), function(tab) {
                            //         if (tab) chrome.bookmarks.create({parentId: (Nodes[t.parentNode.parentNode.id] ? Nodes[t.parentNode.parentNode.id].id : root.id), title: tab.title, url: tab.url});
                            //     });
                            // });
                        }, 3000);
                    });
                }
            }
        });
    });
}
