-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathbookmarksFolder.html
More file actions
35 lines (33 loc) · 34.9 KB
/
Copy pathbookmarksFolder.html
File metadata and controls
35 lines (33 loc) · 34.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE HTML>
<meta charset="utf-8"/>
<title>Bookmarks Folder [0.2b2pre - 2021-09-11]</title>
<body>
<a href="custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EBookmarks%20Folder%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAhpJREFUeNqkUz1vE0EQfbO7ZweDUQgECptEFEih4ENJREsTaCkokBCigSIFDf8A0dKAhKyEhgaUNg1CpEFCokzg4gJkJAcjJJtggn2W75zL3S6zd84X0CCPdLq9nZn3Zt7MkTEGg5jAgKbK8zOLOgqvGh0nFyQkSKoykTjHX/ujqX9DhG2fssnnZ58BW1EaJCVWntw4yyCG6A8ATiIhIFTmExOdSQCM1py8ibDyEMYQnMI1TM4+5+b6yRZkG8i+lIJbujUhSUzx/bJKHKbLjgPsl4jWX/HFyySWGMTEGkHH75dukClc53iDjh9ezB/MWgB2xT6EM8RHaYvcYdasS+Wdi6DVsSzs4YnRfQipkHOcEuv2IAWgTUuHoB0g6TulQ22lgtGxERy/WQISkU36WL+TgTt3+5iyZSLy8Pmti+4vb1cv1mN86jSOFI5iq/qIq9ZJ6RZA5ooIxQSa7XBJWWa/vsbKAtP3FriduK+WRPy1BG14VSiTlp8AawYYR+vjKr6s914onjc69RoOF3kq3Sp0c4lDRQois3zau2usAzHT0CH8rLq48/jDYtJCu/ENxelL3EodlM1zqtgd4T5jAGcEfmMN3xvN16vzM56yQcFGC7lTJ4FeiwcxjL82cK9lh7Gx/B61H72FE6NM5s5d9nhgeR3FsEtldjbm32aLMiTak3ffjJWfXvFs5IVEsf8zu/duulsD/s6/BRgAq8u/ourCQ6kAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E//%20http%3A//infocatcher.ucoz.net/js/cb/bookmarksFolder.js%0A//%20https%3A//forum.mozilla-russia.org/viewtopic.php%3Fid%3D57872%0A//%20https%3A//github.com/Infocatcher/Custom_Buttons/tree/master/Bookmarks_Folder%0A%0A//%20Bookmarks%20Folder%20button%20for%20Custom%20Buttons%0A//%20%28code%20for%20%22initialization%22%20section%29%0A%0A//%20%28c%29%20Infocatcher%202011-2021%0A//%20version%200.2b2pre%20-%202021-09-11%0A%0A//%20Compatibility%3A%20Firefox%204.0+%2C%20SeaMonkey%202.1+%0A%0A//%20Icon%20by%20FatCow%20Web%20Hosting%3A%20http%3A//www.iconfinder.com/icondetails/36059/16/%0A%0A//%20Hidden%20feature%3A%20you%20can%20manually%20set%20extensions.custombuttons.button%26lt%3BN%26gt%3B.bookmarkFolder%0A//%20preference%20to%20any%20place%3A%20URI%20https%3A//developer.mozilla.org/en-US/docs/Places_query_URIs%0A//%20%28and%20press%20OK%20in%20button%20editor%20or%20reopen%20window%20or%20restart%20browser%29%0A%0Avar%20options%20%3D%20%7B%0A%09hideDropMarker%3A%20true%2C%20//%20Hide%20%22v%22%20after%20button%27s%20icon%0A%09showLabel%3A%20undefined%2C%20//%20Set%20to%20true/false%20to%20force%20show/hide%20button%27s%20label%0A%09useFolderTitle%3A%20true%2C%0A%09//%20%22Select%20folder%22%20dialog%3A%0A%09dialogWidth%3A%20400%2C%0A%09dialogHeight%3A%20350%2C%0A%09dialogPersist%3A%20%22%22%20//%20Example%3A%20%22screenX%20screenY%20width%20height%22%0A%7D%3B%0A%0Afunction%20_localize%28s%2C%20key%29%20%7B%0A%09var%20strings%20%3D%20%7B%0A%09%09%22Select%20folder%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0412%u044B%u0431%u0435%u0440%u0438%u0442%u0435%20%u043F%u0430%u043F%u043A%u0443%22%0A%09%09%7D%2C%0A%09%09%22Root%20folder%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041A%u043E%u0440%u043D%u0435%u0432%u0430%u044F%20%u043F%u0430%u043F%u043A%u0430%22%0A%09%09%7D%0A%09%7D%3B%0A%09var%20locale%20%3D%20%28function%28%29%20%7B%0A%09%09if%28%22Services%22%20in%20window%20%26amp%3B%26amp%3B%20%22locale%22%20in%20Services%29%20%7B%0A%09%09%09var%20locales%20%3D%20Services.locale.requestedLocales%20//%20Firefox%2064+%0A%09%09%09%09%7C%7C%20Services.locale.getRequestedLocales%20%26amp%3B%26amp%3B%20Services.locale.getRequestedLocales%28%29%3B%0A%09%09%09if%28locales%29%0A%09%09%09%09return%20locales%5B0%5D%3B%0A%09%09%7D%0A%09%09var%20prefs%20%3D%20%22Services%22%20in%20window%20%26amp%3B%26amp%3B%20Services.prefs%0A%09%09%09%7C%7C%20Components.classes%5B%22@mozilla.org/preferences-service%3B1%22%5D%0A%09%09%09%09.getService%28Components.interfaces.nsIPrefBranch%29%3B%0A%09%09function%20pref%28name%2C%20type%29%20%7B%0A%09%09%09return%20prefs.getPrefType%28name%29%20%21%3D%20prefs.PREF_INVALID%20%3F%20prefs%5B%22get%22%20+%20type%20+%20%22Pref%22%5D%28name%29%20%3A%20undefined%3B%0A%09%09%7D%0A%09%09if%28%21pref%28%22intl.locale.matchOS%22%2C%20%22Bool%22%29%29%20%7B%20//%20Also%20see%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D1414390%0A%09%09%09var%20locale%20%3D%20pref%28%22general.useragent.locale%22%2C%20%22Char%22%29%3B%0A%09%09%09if%28locale%20%26amp%3B%26amp%3B%20locale.substr%280%2C%209%29%20%21%3D%20%22chrome%3A//%22%29%0A%09%09%09%09return%20locale%3B%0A%09%09%7D%0A%09%09return%20Components.classes%5B%22@mozilla.org/chrome/chrome-registry%3B1%22%5D%0A%09%09%09.getService%28Components.interfaces.nsIXULChromeRegistry%29%0A%09%09%09.getSelectedLocale%28%22global%22%29%3B%0A%09%7D%29%28%29.match%28/%5E%5Ba-z%5D*/%29%5B0%5D%3B%0A%09_localize%20%3D%20%21locale%20%7C%7C%20locale%20%3D%3D%20%22en%22%0A%09%09%3F%20function%28s%29%20%7B%0A%09%09%09return%20s%3B%0A%09%09%7D%0A%09%09%3A%20function%28s%29%20%7B%0A%09%09%09return%20strings%5Bs%5D%20%26amp%3B%26amp%3B%20strings%5Bs%5D%5Blocale%5D%20%7C%7C%20s%3B%0A%09%09%7D%3B%0A%09return%20_localize.apply%28this%2C%20arguments%29%3B%0A%7D%0A%0Afunction%20hasModifier%28e%29%20%7B%0A%09return%20e.ctrlKey%20%7C%7C%20e.shiftKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%3B%0A%7D%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%09if%28e.target%20%21%3D%20this%29%0A%09%09return%3B%0A%09if%28e.button%20%21%3D%202%20%26amp%3B%26amp%3B%20%21this.bookmarks.initialized%29%0A%09%09this.bookmarks.init%28%29%3B%0A%09else%20if%28e.button%20%3D%3D%201%20%7C%7C%20e.button%20%3D%3D%200%20%26amp%3B%26amp%3B%20hasModifier%28e%29%29%0A%09%09this.bookmarks.changeFolder%28%29%3B%0A%7D%3B%0Athis.onmousedown%20%3D%20function%28e%29%20%7B%0A%09if%28e.target%20%3D%3D%20this%20%26amp%3B%26amp%3B%20e.button%20%3D%3D%200%20%26amp%3B%26amp%3B%20hasModifier%28e%29%29%0A%09%09e.preventDefault%28%29%3B%0A%7D%3B%0Athis.onmouseover%20%3D%20function%28e%29%20%7B%0A%09if%28e.target%20%21%3D%20this%29%0A%09%09return%3B%0A%09Array.prototype.some.call%28%0A%09%09this.parentNode.getElementsByTagName%28%22*%22%29%2C%0A%09%09function%28node%29%20%7B%0A%09%09%09if%28%0A%09%09%09%09node%20%21%3D%20this%0A%09%09%09%09%26amp%3B%26amp%3B%20node.namespaceURI%20%3D%3D%20xulns%0A%09%09%09%09//%20See%20https%3A//github.com/Infocatcher/Custom_Buttons/issues/28%0A%09%09%09%09//%26amp%3B%26amp%3B%20node.boxObject%0A%09%09%09%09//%26amp%3B%26amp%3B%20node.boxObject%20instanceof%20Components.interfaces.nsIMenuBoxObject%0A%09%09%09%09%26amp%3B%26amp%3B%20%22open%22%20in%20node%0A%09%09%09%09%26amp%3B%26amp%3B%20node.open%0A%09%09%09%09%26amp%3B%26amp%3B%20node.getElementsByTagName%28%22menupopup%22%29.length%0A%09%09%09%29%20%7B%0A%09%09%09%09node.open%20%3D%20false%3B%0A%09%09%09%09this.open%20%3D%20true%3B%0A%09%09%09%09return%20true%3B%0A%09%09%09%7D%0A%09%09%09return%20false%3B%0A%09%09%7D%2C%0A%09%09this%0A%09%29%3B%0A%7D%3B%0Athis.bookmarks%20%3D%20%7B%0A%09button%3A%20this%2C%0A%09get%20pref%28%29%20%7B%0A%09%09delete%20this.pref%3B%0A%09%09return%20this.pref%20%3D%20%22extensions.custombuttons.button%22%20+%20this.button.id.match%28/%5Cd*%24/%29%5B0%5D%20+%20%22.bookmarkFolder%22%3B%0A%09%7D%2C%0A%09get%20folder%28%29%20%7B%0A%09%09return%20this.getStringPref%28this.pref%2C%20%22%22%29%3B%0A%09%7D%2C%0A%09set%20folder%28val%29%20%7B%0A%09%09this.setStringPref%28this.pref%2C%20%22%22%20+%20val%29%3B%0A%09%7D%2C%0A%09get%20titlePref%28%29%20%7B%0A%09%09delete%20this.titlePref%3B%0A%09%09return%20this.titlePref%20%3D%20%22extensions.custombuttons.button%22%20+%20this.button.id.match%28/%5Cd*%24/%29%5B0%5D%20+%20%22.bookmarkFolderTitle%22%3B%0A%09%7D%2C%0A%09get%20folderTitle%28%29%20%7B%0A%09%09return%20this.getStringPref%28this.titlePref%2C%20%22%22%29%3B%0A%09%7D%2C%0A%09set%20folderTitle%28val%29%20%7B%0A%09%09this.setStringPref%28this.titlePref%2C%20val%29%3B%0A%09%7D%2C%0A%09initialized%3A%20false%2C%0A%09init%3A%20function%28%29%20%7B%0A%09%09var%20folder%20%3D%20this.folder%3B%0A%09%09if%28%21folder%29%20%7B%0A%09%09%09folder%20%3D%20this.selectFolder%28%29%3B%0A%09%09%09if%28%21folder%29%0A%09%09%09%09return%3B%0A%09%09%09this.folder%20%3D%20folder%3B%0A%09%09%7D%0A%09%09var%20btn%20%3D%20this.button%3B%0A%09%09btn.setAttribute%28%22ondragenter%22%2C%20%22PlacesMenuDNDHandler.onDragEnter%28event%29%3B%22%29%3B%0A%09%09btn.setAttribute%28%22ondragover%22%2C%20%22PlacesMenuDNDHandler.onDragOver%28event%29%3B%22%29%3B%0A%09%09if%28%22onDragExit%22%20in%20PlacesMenuDNDHandler%29%0A%09%09%09btn.setAttribute%28%22ondragexit%22%2C%20%22PlacesMenuDNDHandler.onDragExit%28event%29%3B%22%29%3B%0A%09%09else%0A%09%09%09btn.setAttribute%28%22ondragleave%22%2C%20%22PlacesMenuDNDHandler.onDragLeave%28event%29%3B%22%29%3B%0A%09%09//btn.setAttribute%28%22ondrop%22%2C%20%22PlacesMenuDNDHandler.onDrop%28event%29%3B%22%29%3B%0A%09%09btn.setAttribute%28%22ondrop%22%2C%20%22this.bookmarks.onDrop%28event%29%3B%22%29%3B%0A%09%09var%20mp%20%3D%20btn.getElementsByTagName%28%22menupopup%22%29%3B%0A%09%09mp.length%20%26amp%3B%26amp%3B%20mp%5B0%5D.parentNode.removeChild%28mp%5B0%5D%29%3B%0A%09%09mp%20%3D%20this.mp%20%3D%20%22createXULElement%22%20in%20document%0A%09%09%09%3F%20document.createXULElement%28%22menupopup%22%2C%20%7B%20is%3A%20%22places-popup%22%20%7D%29%0A%09%09%09%3A%20document.createElementNS%28xulns%2C%20%22menupopup%22%29%3B%0A%09%09mp.setAttribute%28%22context%22%2C%20%22placesContext%22%29%3B%0A%09%09mp.setAttribute%28%22placespopup%22%2C%20%22true%22%29%3B%0A%09%09mp.setAttribute%28%22is%22%2C%20%22places-popup%22%29%3B%0A%09%09var%20placeURI%20%3D%20this.toPlaceURI%28folder%29%3B%0A%09%09placeURI%20%3D%20placeURI.replace%28/%22/g%2C%20%27%5C%5C%22%27%29%3B%0A%09%09mp.setAttribute%28%0A%09%09%09%22onpopupshowing%22%2C%0A%09%09%09%27this.parentNode.bookmarks.initMenu%28event%2C%20%22%27%20+%20placeURI%20+%20%27%22%29%3B%27%0A%09%09%29%3B%0A%09%09mp.setAttribute%28%22oncommand%22%2C%20%22BookmarksEventHandler.onCommand%28event%2C%20this.parentNode._placesView%29%3B%22%29%3B%0A%09%09mp.setAttribute%28%22onclick%22%2C%20%22BookmarksEventHandler.onClick%28event%2C%20this.parentNode._placesView%29%3B%22%29%3B%0A%09%09mp.setAttribute%28%22tooltip%22%2C%20%22bhTooltip%22%29%3B%0A%09%09mp.setAttribute%28%22popupsinherittooltip%22%2C%20%22true%22%29%3B%0A%09%09var%20tb%20%3D%20btn.parentNode%3B%0A%09%09if%28tb.getAttribute%28%22orient%22%29%20%3D%3D%20%22vertical%22%29%20%7B%0A%09%09%09//%20https%3A//addons.mozilla.org/firefox/addon/vertical-toolbar/%0A%09%09%09var%20isRight%20%3D%20tb.parentNode.getAttribute%28%22placement%22%29%20%3D%3D%20%22right%22%3B%0A%09%09%09mp.setAttribute%28%22position%22%2C%20isRight%20%3F%20%22start_before%22%20%3A%20%22end_before%22%29%3B%0A%09%09%7D%0A%09%09btn.appendChild%28mp%29%3B%0A%09%09options.useFolderTitle%20%26amp%3B%26amp%3B%20setTimeout%28function%28_this%29%20%7B%0A%09%09%09_this.setButtonTitle%28%29%3B%0A%09%09%7D%2C%200%2C%20this%29%3B%0A%0A%09%09this.initialized%20%3D%20true%3B%0A%09%7D%2C%0A%09toPlaceURI%3A%20function%28folder%29%20%7B%0A%09%09if%28%28%22%22%20+%20folder%29.substr%280%2C%206%29%20%3D%3D%20%22place%3A%22%29%0A%09%09%09return%20folder%3B%0A%09%09return%20%22place%3Afolder%3D%22%20+%20folder%20+%20%22%26amp%3BexcludeItems%3D0%26amp%3BexpandQueries%3D0%22%3B%0A%09%7D%2C%0A%09initMenu%3A%20function%28event%2C%20placeURI%29%20%7B%0A%09%09var%20btn%20%3D%20this.button%3B%0A%09%09if%28%22_placesView%22%20in%20btn%29%0A%09%09%09return%3B%0A%09%09var%20pm%20%3D%20btn._placesMenu%20%3D%20new%20PlacesMenu%28event%2C%20placeURI%29%3B%0A%09%09if%28options.useFolderTitle%29%0A%09%09%09this.setButtonTitle%28btn._placesView._resultNode%20%26amp%3B%26amp%3B%20btn._placesView._resultNode.title%29%3B%0A%09%09%28%7B%20//%20Add%20%22Open%20All%20in%20Tabs%22%20menuitem%0A%09%09%09_rootElt%3A%20null%2C%0A%09%09%09__proto__%3A%20pm%0A%09%09%7D%29._mayAddCommandsItems%28event.currentTarget%29%3B%0A%09%7D%2C%0A%09destroy%3A%20function%28%29%20%7B%0A%09%09this.stopClicker%20%26amp%3B%26amp%3B%20this.stopClicker%28%29%3B%0A%09%09var%20btn%20%3D%20this.button%3B%0A%09%09if%28%21%28%22_placesMenu%22%20in%20btn%29%29%0A%09%09%09return%3B%0A%09%09try%20%7B%0A%09%09%09btn._placesMenu.uninit%28%29%3B%0A%09%09%7D%0A%09%09catch%28e%29%20%7B%0A%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%7D%0A%09%09delete%20btn._placesView%3B%0A%09%09delete%20btn._placesMenu%3B%0A%09%7D%2C%0A%09setButtonTitle%3A%20function%28title%29%20%7B%0A%09%09var%20btn%20%3D%20this.button%3B%0A%09%09if%28title%29%0A%09%09%09this.folderTitle%20%3D%20title%3B%0A%09%09else%0A%09%09%09title%20%3D%20this.folderTitle%3B%0A%09%09if%28title%29%0A%09%09%09btn.tooltipText%20%3D%20btn.label%20%3D%20title%3B%0A%09%7D%2C%0A%09initWithFolder%3A%20function%28folder%29%20%7B%0A%09%09this.destroy%28%29%3B%0A%09%09this.folder%20%3D%20folder%3B%0A%09%09var%20mp%20%3D%20this.mp%3B%0A%09%09mp.setAttribute%28%0A%09%09%09%22onpopupshowing%22%2C%0A%09%09%09mp.getAttribute%28%22onpopupshowing%22%29%0A%09%09%09%09.replace%28/place%3A%5B%5E%27%22%5D+/%2C%20this.toPlaceURI%28folder%29.replace%28/%22/g%2C%20%27%5C%5C%22%27%29%29%0A%09%09%29%3B%0A%09%7D%2C%0A%09updTitleDelay%3A%20100%2C%0A%09selectFolder%3A%20function%28%29%20%7B%0A%09%09if%28parseFloat%28Services.appinfo.platformVersion%29%20%26gt%3B%3D%2059%29%0A%09%09%09return%20this.selectFolderNoUI%28%29%3B%0A%0A%09%09var%20winType%20%3D%20this.button.id%20+%20%22%3Adialog%22%3B%0A%09%09var%20win%20%3D%20Services.wm.getMostRecentWindow%28winType%29%3B%0A%09%09if%28win%29%20%7B%0A%09%09%09win.focus%28%29%3B%0A%09%09%09return%20null%3B%0A%09%09%7D%0A%09%09//%20https%3A//developer.mozilla.org/en/Displaying_Places_information_using_views%0A%09%09var%20rootFolder%20%3D%20PlacesUIUtils.allBookmarksFolderId%3B%0A%09%09var%20placesOverlay%20%3D%20Services.appinfo.name%20%3D%3D%20%22SeaMonkey%22%0A%09%09%09%3F%20%27%5Cn%5C%0A%09%09%09%26lt%3B%3Fxml-stylesheet%20href%3D%22chrome%3A//communicator/skin/bookmarks/bookmarks.css%22%3F%26gt%3B%5Cn%5C%0A%09%09%09%26lt%3B%3Fxml-stylesheet%20href%3D%22chrome%3A//communicator/content/places/places.css%22%3F%26gt%3B%5Cn%5C%0A%09%09%09%26lt%3B%3Fxul-overlay%20href%3D%22chrome%3A//communicator/content/bookmarks/placesOverlay.xul%22%3F%26gt%3B%27%0A%09%09%09%3A%20%27%5Cn%5C%0A%09%09%09%26lt%3B%3Fxml-stylesheet%20href%3D%22chrome%3A//browser/content/places/places.css%22%3F%26gt%3B%5Cn%5C%0A%09%09%09%26lt%3B%3Fxml-stylesheet%20href%3D%22chrome%3A//browser/skin/places/places.css%22%3F%26gt%3B%5Cn%5C%0A%09%09%09%26lt%3B%3Fxul-overlay%20href%3D%22chrome%3A//browser/content/places/placesOverlay.xul%22%3F%26gt%3B%27%3B%0A%09%09//%20Note%3A%20%26lt%3Bproperty%20name%3D%22view%22%26gt%3B%20from%20chrome%3A//communicator/content/places/tree.xml%23places-tree%0A%09%09//%20are%20null%20sometimes.%0A%09%09//%20We%20are%20trying%20to%20re-apply%20binding%20as%20a%20workaround.%0A%09%09var%20persist%20%3D%20options.dialogPersist%3B%0A%09%09if%28persist%29%20%7B%0A%09%09%09persist%20%3D%20%27%5Cn%5C%0A%09%09%09%09persist%3D%22%27%20+%20persist%20+%20%27%22%27%3B%0A%09%09%7D%0A%09%09var%20winSrc%20%3D%20%27%5C%0A%09%09%09%26lt%3B%3Fxml%20version%3D%221.0%22%3F%26gt%3B%5Cn%5C%0A%09%09%09%26lt%3B%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%20type%3D%22text/css%22%3F%26gt%3B%27%0A%09%09%09+%20placesOverlay%20+%20%27%5Cn%5C%0A%09%09%09%26lt%3Bdialog%20xmlns%3D%22%27%20+%20xulns%20+%20%27%22%5Cn%5C%0A%09%09%09%09id%3D%22%27%20+%20this.button.id%20+%20%22-dialog%22%20+%20%27%22%5Cn%5C%0A%09%09%09%09windowtype%3D%22%27%20+%20winType%20+%20%27%22%5Cn%5C%0A%09%09%09%09title%3D%22%27%20+%20_localize%28%22Select%20folder%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09%09buttons%3D%22accept%2Ccancel%22%5Cn%5C%0A%09%09%09%09onload%3D%22init%28%29%3B%22%5Cn%5C%0A%09%09%09%09ondialogaccept%3D%22return%20dialogCallback%28%29%3B%22%5Cn%5C%0A%09%09%09%09width%3D%22%27%20+%20options.dialogWidth%20+%20%27%22%5Cn%5C%0A%09%09%09%09height%3D%22%27%20+%20options.dialogHeight%20+%20%27%22%27%20+%20persist%20+%20%27%26gt%3B%5Cn%5C%0A%09%09%09%09%26lt%3Bkeyset%26gt%3B%5Cn%5C%0A%09%09%09%09%09%26lt%3Bkey%20id%3D%22key-accept%22%20keycode%3D%22VK_RETURN%22%20modifiers%3D%22control%22%5Cn%5C%0A%09%09%09%09%09%09oncommand%3D%22document.documentElement.acceptDialog%28%29%3B%22%20/%26gt%3B%5Cn%5C%0A%09%09%09%09%26lt%3B/keyset%26gt%3B%5Cn%5C%0A%09%09%09%09%26lt%3Btree%20id%3D%22tree%22%20type%3D%22places%22%5Cn%5C%0A%09%09%09%09%09place%3D%22place%3AexcludeItems%3D1%26amp%3Bamp%3BexcludeQueries%3D1%26amp%3Bamp%3Bfolder%3D%27%20+%20rootFolder%20+%20%27%22%5Cn%5C%0A%09%09%09%09%09hidecolumnpicker%3D%22true%22%20seltype%3D%22single%22%20flex%3D%221%22%5Cn%5C%0A%09%09%09%09%09onselect%3D%22onSelect%28%29%3B%22%26gt%3B%5Cn%5C%0A%09%09%09%09%09%26lt%3Btreecols%26gt%3B%5Cn%5C%0A%09%09%09%09%09%09%26lt%3Btreecol%20id%3D%22title%22%20flex%3D%221%22%20primary%3D%22true%22%20hideheader%3D%22true%22%20/%26gt%3B%5Cn%5C%0A%09%09%09%09%09%26lt%3B/treecols%26gt%3B%5Cn%5C%0A%09%09%09%09%09%26lt%3Btreechildren%20/%26gt%3B%5Cn%5C%0A%09%09%09%09%26lt%3B/tree%26gt%3B%5Cn%5C%0A%09%09%09%09%26lt%3Bcheckbox%20id%3D%22root%22%20label%3D%22%27%20+%20_localize%28%22Root%20folder%22%29%20+%20%27%22%20oncommand%3D%22onSelect%28%29%3B%22%20/%26gt%3B%5Cn%5C%0A%09%09%09%09%26lt%3Bscript%20type%3D%22application/javascript%22%26gt%3B%26lt%3B%21%5BCDATA%5B%5Cn%5C%0A%09%09%09%09var%20%5BfolderId%2C%20rootFolder%2C%20callback%2C%20context%5D%20%3D%20window.arguments%3B%5Cn%5C%0A%09%09%09%09var%20tree%20%3D%20document.getElementById%28%22tree%22%29%3B%5Cn%5C%0A%09%09%09%09var%20root%20%3D%20document.getElementById%28%22root%22%29%3B%5Cn%5C%0A%09%09%09%09function%20init%28%29%20%7B%5Cn%5C%0A%09%09%09%09%09if%28%21ensurePlacesBinding%28init%2C%20this%2C%20arguments%29%29%5Cn%5C%0A%09%09%09%09%09%09return%3B%5Cn%5C%0A%09%09%09%09%09if%28folderId%20%3D%3D%20rootFolder%29%5Cn%5C%0A%09%09%09%09%09%09root.checked%20%3D%20true%3B%5Cn%5C%0A%09%09%09%09%09else%20if%28folderId%20%21%3D%20undefined%29%20%7B%5Cn%5C%0A%09%09%09%09%09%09tree.selectItems%28%5BfolderId%5D%29%3B%5Cn%5C%0A%09%09%09%09%09%09var%20i%20%3D%20tree.view.selection.currentIndex%3B%5Cn%5C%0A%09%09%09%09%09%09if%28i%20%21%3D%20-1%29%20%7B%5Cn%5C%0A%09%09%09%09%09%09%09setTimeout%28function%28%29%20%7B%5Cn%5C%0A%09%09%09%09%09%09%09%09tree.treeBoxObject.ensureRowIsVisible%28i%29%3B%5Cn%5C%0A%09%09%09%09%09%09%09%7D%2C%200%29%3B%5Cn%5C%0A%09%09%09%09%09%09%7D%5Cn%5C%0A%09%09%09%09%09%7D%5Cn%5C%0A%09%09%09%09%09onSelect%28%29%3B%5Cn%5C%0A%09%09%09%09%7D%5Cn%5C%0A%09%09%09%09function%20onSelect%28dis%29%20%7B%5Cn%5C%0A%09%09%09%09%09if%28%21ensurePlacesBinding%28onSelect%2C%20this%2C%20arguments%29%29%5Cn%5C%0A%09%09%09%09%09%09return%3B%5Cn%5C%0A%09%09%09%09%09if%28%21arguments.length%29%5Cn%5C%0A%09%09%09%09%09%09dis%20%3D%20%21root.checked%20%26amp%3B%26amp%3B%20%21tree.view.selection.getRangeCount%28%29%3B%5Cn%5C%0A%09%09%09%09%09document.documentElement.getButton%28%22accept%22%29.disabled%20%3D%20dis%3B%5Cn%5C%0A%09%09%09%09%09disableTree%28root.checked%29%3B%5Cn%5C%0A%09%09%09%09%7D%5Cn%5C%0A%09%09%09%09function%20ensurePlacesBinding%28func%2C%20context%2C%20args%29%20%7B%5Cn%5C%0A%09%09%09%09%09if%28tree.view%20%26amp%3B%26amp%3B%20tree.selectItems%29%5Cn%5C%0A%09%09%09%09%09%09return%20true%3B%5Cn%5C%0A%09%09%09%09%09%5C//%20Try%20re-apply%20binding%2C%20hack%20for%20SeaMonkey%5Cn%5C%0A%09%09%09%09%09tree.removeAttribute%28%22type%22%29%3B%5Cn%5C%0A%09%09%09%09%09setTimeout%28function%28%29%20%7B%5Cn%5C%0A%09%09%09%09%09%09tree.setAttribute%28%22type%22%2C%20%22places%22%29%3B%5Cn%5C%0A%09%09%09%09%09%09setTimeout%28function%28%29%20%7B%5Cn%5C%0A%09%09%09%09%09%09%09func.apply%28context%2C%20args%29%3B%5Cn%5C%0A%09%09%09%09%09%09%7D%2C%200%29%3B%5Cn%5C%0A%09%09%09%09%09%7D%2C%200%29%3B%5Cn%5C%0A%09%09%09%09%09return%20false%3B%5Cn%5C%0A%09%09%09%09%7D%5Cn%5C%0A%09%09%09%09function%20disableTree%28dis%29%20%7B%5Cn%5C%0A%09%09%09%09%09var%20treechildren%20%3D%20tree.getElementsByTagName%28%22treechildren%22%29%5B0%5D%3B%5Cn%5C%0A%09%09%09%09%09if%28dis%29%20%7B%5Cn%5C%0A%09%09%09%09%09%09treechildren.style.opacity%20%3D%20%220.6%22%3B%5Cn%5C%0A%09%09%09%09%09%09tree.setAttribute%28%22disabled%22%2C%20%22true%22%29%3B%5Cn%5C%0A%09%09%09%09%09%7D%5Cn%5C%0A%09%09%09%09%09else%20%7B%5Cn%5C%0A%09%09%09%09%09%09treechildren.style.opacity%20%3D%20%22%22%3B%5Cn%5C%0A%09%09%09%09%09%09tree.removeAttribute%28%22disabled%22%29%3B%5Cn%5C%0A%09%09%09%09%09%7D%5Cn%5C%0A%09%09%09%09%7D%5Cn%5C%0A%09%09%09%09function%20dialogCallback%28%29%20%7B%5Cn%5C%0A%09%09%09%09%09if%28root.checked%29%5Cn%5C%0A%09%09%09%09%09%09var%20id%20%3D%20rootFolder%3B%5Cn%5C%0A%09%09%09%09%09else%20%7B%5Cn%5C%0A%09%09%09%09%09%09var%20view%20%3D%20tree.view%3B%5Cn%5C%0A%09%09%09%09%09%09var%20i%20%3D%20view.selection.currentIndex%3B%5Cn%5C%0A%09%09%09%09%09%09if%28i%20%3D%3D%20-1%29%5Cn%5C%0A%09%09%09%09%09%09%09return%20false%3B%5Cn%5C%0A%09%09%09%09%09%09var%20item%20%3D%20view.nodeForTreeIndex%28i%29%3B%5Cn%5C%0A%09%09%09%09%09%09if%28item%29%20%7B%5Cn%5C%0A%09%09%09%09%09%09%09var%20id%20%3D%20/place%3Afolder%3D%28%5C%5Cw+%29/.test%28item.uri%29%5Cn%5C%0A%09%09%09%09%09%09%09%09%3F%20RegExp.%241%5Cn%5C%0A%09%09%09%09%09%09%09%09%3A%20item.itemId%3B%5Cn%5C%0A%09%09%09%09%09%09%7D%5Cn%5C%0A%09%09%09%09%09%7D%5Cn%5C%0A%09%09%09%09%09callback.call%28context%2C%20id%29%3B%5Cn%5C%0A%09%09%09%09%09return%20true%3B%5Cn%5C%0A%09%09%09%09%7D%5Cn%5C%0A%09%09%09%09onSelect%28false%29%3B%5Cn%5C%0A%09%09%09%09%5D%5D%26gt%3B%26lt%3B/script%26gt%3B%5Cn%5C%0A%09%09%09%26lt%3B/dialog%26gt%3B%27%3B%0A%09%09var%20folder%3B%0A%09%09var%20callback%20%3D%20function%28folderId%29%20%7B%0A%09%09%09folder%20%3D%20folderId%3B%0A%09%09%7D%3B%0A%09%09var%20folderId%20%3D%20this.getFolderId%28this.folder%29%3B%0A%09%09if%28%22Services%22%20in%20window%20%26amp%3B%26amp%3B%20Services.prefs.getBoolPref.length%20%26gt%3B%201%29%20%7B%20//%20Firefox%2057+%0A%09%09%09let%20pref%20%3D%20%22security.data_uri.unique_opaque_origin%22%3B%0A%09%09%09if%28Services.prefs.getBoolPref%28pref%2C%20false%29%29%20%7B%0A%09%09%09%09Services.prefs.setBoolPref%28pref%2C%20false%29%3B%0A%09%09%09%09setTimeout%28function%28%29%20%7B%0A%09%09%09%09%09Services.prefs.setBoolPref%28pref%2C%20true%29%3B%0A%09%09%09%09%7D%2C%200%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09window.openDialog%28%0A%09%09%09%22data%3Aapplication/vnd.mozilla.xul+xml%2C%22%20+%20encodeURIComponent%28winSrc.replace%28/%5E%5Cs+/%2C%20%22%22%29%29%2C%0A%09%09%09%22_blank%22%2C%0A%09%09%09%22chrome%2Call%2Cresizable%2Ccenterscreen%2Cmodal%22%2C%0A%09%09%09folderId%2C%20rootFolder%2C%20callback%2C%20this%0A%09%09%29%3B%0A%09%09if%28folder%20%26amp%3B%26amp%3B%20options.useFolderTitle%29%20setTimeout%28function%28btn%29%20%7B%0A%09%09%09var%20mp%20%3D%20btn.firstChild%3B%0A%09%09%09mp.collapsed%20%3D%20true%3B%0A%09%09%09btn.open%20%3D%20true%3B%0A%09%09%09btn.open%20%3D%20false%3B%0A%09%09%09mp.collapsed%20%3D%20false%3B%0A%09%09%7D%2C%20this.updTitleDelay%2C%20this.button%29%3B%0A%09%09return%20folder%3B%0A%09%7D%2C%0A%09selectFolderNoUI%3A%20function%28%29%20%7B%0A%09%09var%20folder%2C%20clicker%3B%0A%0A%09%09var%20_this%20%3D%20this%3B%0A%09%09var%20btn%20%3D%20this.button%3B%0A%09%09btn.style.outline%20%3D%20%223px%20solid%20orange%22%3B%0A%09%09btn.style.outlineOffset%20%3D%20%22-3px%22%3B%0A%09%09var%20cbAttr%20%3D%20%22cb_bookmarksFolder%22%3B%0A%09%09var%20menubar%20%3D%20document.getElementById%28%22toolbar-menubar%22%29%3B%0A%09%09if%28menubar%20%26amp%3B%26amp%3B%20menubar.getAttribute%28%22autohide%22%29%20%3D%3D%20%22true%22%29%0A%09%09%09menubar.setAttribute%28%22autohide%22%2C%20cbAttr%29%3B%0A%09%09var%20inFS%20%3D%20window.fullScreen%3B%0A%09%09if%28inFS%29%0A%09%09%09window.fullScreen%20%3D%20false%3B%0A%09%09var%20wAttr%20%3D%20cbAttr%20+%20%22-%22%20+%20Date.now%28%29%3B%0A%09%09var%20de%20%3D%20document.documentElement%3B%0A%09%09de.setAttribute%28wAttr%2C%20%22true%22%29%3B%0A%09%09var%20stopClicker%20%3D%20this.stopClicker%20%3D%20function%28%29%20%7B%0A%09%09%09_this.stopClicker%20%3D%20null%3B%0A%09%09%09btn.style.outline%20%3D%20btn.style.outlineOffset%20%3D%20%22%22%3B%0A%09%09%09window.removeEventListener%28%22click%22%2C%20clicker%2C%20true%29%3B%0A%09%09%09if%28sss.sheetRegistered%28cssURI%2C%20sss.USER_SHEET%29%29%0A%09%09%09%09sss.unregisterSheet%28cssURI%2C%20sss.USER_SHEET%29%3B%0A%09%09%09if%28menubar%20%26amp%3B%26amp%3B%20menubar.getAttribute%28%22autohide%22%29%20%3D%3D%20cbAttr%29%0A%09%09%09%09menubar.setAttribute%28%22autohide%22%2C%20%22true%22%29%3B%0A%09%09%09if%28inFS%29%0A%09%09%09%09window.fullScreen%20%3D%20true%3B%0A%09%09%09de.removeAttribute%28wAttr%29%3B%0A%09%09%7D%3B%0A%09%09function%20cancelClicker%28%29%20%7B%0A%09%09%09var%20id%20%3D%20PlacesUtils.bookmarks%20%26amp%3B%26amp%3B%20PlacesUtils.bookmarks.rootGuid%20%7C%7C%20%22root________%22%3B%0A%09%09%09folder%20%3D%20%22place%3Aparent%3D%22%20+%20id%3B%0A%09%09%09stopClicker%28%29%3B%0A%09%09%7D%0A%09%09function%20isFolder%28it%29%20%7B%0A%09%09%09if%28it.id%20%3D%3D%20%22bookmarksMenu%22%29%0A%09%09%09%09return%20true%3B%0A%09%09%09return%20it.classList%0A%09%09%09%09%26amp%3B%26amp%3B%20it.classList.contains%28%22bookmark-item%22%29%0A%09%09%09%09%26amp%3B%26amp%3B%20it.getAttribute%28%22container%22%29%20%3D%3D%20%22true%22%3B%0A%09%09%7D%0A%09%09function%20closeMenus%28node%29%20%7B%0A%09%09%09for%28%3B%20node%3B%20node%20%3D%20node.parentNode%29%0A%09%09%09%09%22hidePopup%22%20in%20node%20%26amp%3B%26amp%3B%20node.hidePopup%28%29%3B%0A%09%09%7D%0A%09%09window.addEventListener%28%22click%22%2C%20clicker%20%3D%20function%28e%29%20%7B%0A%09%09%09var%20trg%20%3D%20e.originalTarget%20%7C%7C%20e.target%3B%0A%09%09%09if%28trg%20%3D%3D%20btn%20%26amp%3B%26amp%3B%20e.button%20%26lt%3B%202%29%20%7B%0A%09%09%09%09e.stopPropagation%28%29%3B%0A%09%09%09%09cancelClicker%28%29%3B%0A%09%09%09%09_this.mp%20%26amp%3B%26amp%3B%20closeMenus%28_this.mp%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%09%09%09if%28%21isFolder%28trg%29%29%0A%09%09%09%09return%3B%0A%09%09%09if%28%21%28e.button%20%3D%3D%201%20%7C%7C%20e.button%20%3D%3D%200%20%26amp%3B%26amp%3B%20hasModifier%28e%29%29%29%0A%09%09%09%09return%3B%0A%09%09%09e.preventDefault%28%29%3B%0A%09%09%09e.stopPropagation%28%29%3B%0A%09%09%09e.stopImmediatePropagation%20%26amp%3B%26amp%3B%20e.stopImmediatePropagation%28%29%3B%0A%09%09%09folder%20%3D%20trg._placesNode%20%26amp%3B%26amp%3B%20trg._placesNode.uri%0A%09%09%09%09%7C%7C%20trg._placesView%20%26amp%3B%26amp%3B%20trg._placesView._place%3B%0A%09%09%09stopClicker%28%29%3B%0A%09%09%09closeMenus%28trg%29%3B%0A%09%09%09//%20initMenu%28%29%20-%26gt%3B%20._placesView._resultNode.title%20returns%20%22%22%20sometimes%0A%09%09%09_this.setButtonTitle%28trg.getAttribute%28%22label%22%29%29%3B%0A%09%09%7D%2C%20true%29%3B%0A%0A%09%09var%20cssStr%20%3D%20%27%5C%0A%09%09%09%3Aroot%5B%25wAttr%25%5D%20%23bookmarksMenu%2C%5Cn%5C%0A%09%09%09%3Aroot%5B%25wAttr%25%5D%20.bookmark-item%5Bcontainer%3D%22true%22%5D%20%7B%5Cn%5C%0A%09%09%09%09color%3A%20red%20%21important%3B%5Cn%5C%0A%09%09%09%7D%5Cn%5C%0A%09%09%09%3Aroot%5B%25wAttr%25%5D%20%23bookmarksMenu%3Ahover%2C%5Cn%5C%0A%09%09%09%3Aroot%5B%25wAttr%25%5D%20.bookmark-item%5Bcontainer%3D%22true%22%5D%3Ahover%20%7B%5Cn%5C%0A%09%09%09%09outline%3A%202px%20solid%20orange%20%21important%3B%5Cn%5C%0A%09%09%09%09outline-offset%3A%20-2px%20%21important%3B%5Cn%5C%0A%09%09%09%7D%27%0A%09%09%09.replace%28/%25wAttr%25/g%2C%20wAttr%29%3B%0A%09%09var%20cssURI%20%3D%20Services.io.newURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28cssStr%29%2C%20null%2C%20null%29%3B%0A%09%09var%20sss%20%3D%20Components.classes%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D%0A%09%09%09.getService%28Components.interfaces.nsIStyleSheetService%29%3B%0A%09%09if%28%21sss.sheetRegistered%28cssURI%2C%20sss.USER_SHEET%29%29%0A%09%09%09sss.loadAndRegisterSheet%28cssURI%2C%20sss.USER_SHEET%29%3B%0A%0A%09%09setTimeout%28cancelClicker%2C%2060e3%29%3B%0A%0A%09%09var%20thread%20%3D%20Services.tm.currentThread%3B%0A%09%09while%28folder%20%3D%3D%3D%20undefined%29%20//%20Force%20sync%20magic%0A%09%09%09thread.processNextEvent%28true%29%3B%0A%09%09return%20folder%3B%0A%09%7D%2C%0A%09changeFolder%3A%20function%28%29%20%7B%0A%09%09if%28%21this.initialized%29%20%7B%0A%09%09%09this.init%28%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09var%20folder%20%3D%20this.selectFolder%28%29%3B%0A%09%09if%28%21folder%29%0A%09%09%09return%3B%0A%09%09this.initWithFolder%28folder%29%3B%0A%0A%09%09var%20ws%20%3D%20Services.wm.getEnumerator%28%22navigator%3Abrowser%22%29%3B%0A%09%09while%28ws.hasMoreElements%28%29%29%20%7B%0A%09%09%09let%20w%20%3D%20ws.getNext%28%29%3B%0A%09%09%09if%28w%20%3D%3D%20window%29%0A%09%09%09%09continue%3B%0A%09%09%09let%20btn%20%3D%20w.document.getElementById%28this.button.id%29%3B%0A%09%09%09if%28btn%20%26amp%3B%26amp%3B%20btn.bookmarks%29%20%7B%0A%09%09%09%09btn.bookmarks.initWithFolder%28folder%29%3B%0A%09%09%09%09setTimeout%28function%28btn%2C%20_this%29%20%7B%0A%09%09%09%09%09btn.tooltipText%20%3D%20_this.button.tooltipText%3B%0A%09%09%09%09%7D%2C%20this.updTitleDelay%20+%2010%2C%20btn%2C%20this%29%3B%20//%20See%20selectFolder%28%29%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%09getFolderId%3A%20function%28folder%29%20%7B%0A%09%09if%28/%5E%5Cd+%24/.test%28folder%29%29%0A%09%09%09return%20+folder%3B%0A%09%09if%28/%5Eplace%3Aparent%3D/.test%28folder%29%29%0A%09%09%09return%20folder%3B%0A%09%09switch%28folder%29%20%7B%0A%09%09%09case%20%22BOOKMARKS_MENU%22%3A%20%20%20%20return%20PlacesUtils.bookmarks.bookmarksMenuFolder%3B%0A%09%09%09case%20%22TOOLBAR%22%3A%20%20%20%20%20%20%20%20%20%20%20return%20PlacesUtils.bookmarks.toolbarFolder%3B%0A%09%09%09case%20%22UNFILED_BOOKMARKS%22%3A%20return%20PlacesUtils.bookmarks.unfiledBookmarksFolder%3B%0A%09%09%7D%0A%09%09return%20undefined%3B%0A%09%7D%2C%0A%09placesDrop%3A%20function%28event%2C%20folder%29%20%7B%0A%09%09//%20Based%20on%20PlacesMenuDNDHandler.onDrop%28event%29%20function%0A%09%09try%20%7B%0A%09%09%09var%20ip%20%3D%20%22InsertionPoint%22%20in%20window%0A%09%09%09%09%3F%20new%20InsertionPoint%28folder%2C%20PlacesUtils.bookmarks.DEFAULT_INDEX%2C%20Ci.nsITreeView.DROP_ON%29%0A%09%09%09%09%3A%20new%20PlacesInsertionPoint%28%7B%0A%09%09%09%09%09parentId%3A%20this.button._placesView._resultNode.itemId%2C%0A%09%09%09%09%09parentGuid%3A%20this.button._placesView._resultNode.bookmarkGuid%0A%09%09%09%09%7D%29%3B%0A%09%09%09PlacesControllerDragHelper.onDrop%28ip%2C%20event.dataTransfer%29%3B%0A%09%09%09event.stopPropagation%28%29%3B%0A%09%09%7D%0A%09%09catch%28e%29%20%7B%0A%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09onDrop%3A%20function%28e%29%20%7B%0A%09%09var%20folder%20%3D%20this.folder%3B%0A%09%09if%28e.target%20%21%3D%20this.button%20%7C%7C%20%21folder%29%20%7B%0A%09%09%09PlacesMenuDNDHandler.onDrop%28e%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09var%20folderId%20%3D%20this.getFolderId%28folder%29%3B%0A%09%09if%28folderId%29%0A%09%09%09this.placesDrop%28e%2C%20folderId%29%3B%0A%09%09else%0A%09%09%09PlacesMenuDNDHandler.onDrop%28e%29%3B%0A%09%7D%2C%0A%09getStringPref%3A%20function%28name%2C%20defaultVal%29%20%7B%0A%09%09if%28%22getStringPref%22%20in%20Services.prefs%29%20//%20Firefox%2058+%0A%09%09%09return%20Services.prefs.getStringPref%28name%2C%20defaultVal%29%3B%0A%09%09try%20%7B%0A%09%09%09return%20Services.prefs.getComplexValue%28name%2C%20Components.interfaces.nsISupportsString%29.data%3B%0A%09%09%7D%0A%09%09catch%28e%29%20%7B%0A%09%09%7D%0A%09%09return%20defaultVal%3B%0A%09%7D%2C%0A%09setStringPref%3A%20function%28name%2C%20val%29%20%7B%0A%09%09if%28%22setStringPref%22%20in%20Services.prefs%29%20%7B%20//%20Firefox%2058+%0A%09%09%09Services.prefs.setStringPref%28name%2C%20val%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09var%20ss%20%3D%20Components.interfaces.nsISupportsString%3B%0A%09%09var%20str%20%3D%20Components.classes%5B%22@mozilla.org/supports-string%3B1%22%5D%0A%09%09%09.createInstance%28ss%29%3B%0A%09%09str.data%20%3D%20val%3B%0A%09%09Services.prefs.setComplexValue%28name%2C%20ss%2C%20str%29%3B%0A%09%7D%0A%7D%3B%0A%0Athis.type%20%3D%20%22menu%22%3B%0Athis.orient%20%3D%20%22horizontal%22%3B%0Aif%28options.hideDropMarker%20%7C%7C%20options.showLabel%20%21%3D%20undefined%29%20%7B%0A%09let%20btn%20%3D%20this%3B%0A%09let%20doc%20%3D%20btn.ownerDocument%3B%0A%09let%20stopTime%20%3D%20Date.now%28%29%20+%20500%3B%0A%09setTimeout%28function%20tweakButton%28%29%20%7B%20//%20Wait%20for%20menu%20XBL%20binding%0A%09%09function%20anonElt%28clss%29%20%7B%0A%09%09%09return%20doc.getAnonymousElementByAttribute%0A%09%09%09%09%26amp%3B%26amp%3B%20doc.getAnonymousElementByAttribute%28btn%2C%20%22class%22%2C%20clss%29%0A%09%09%09%09%7C%7C%20btn.getElementsByClassName%28%22toolbarbutton-text%22%29%5B0%5D%20%7C%7C%20null%3B%0A%09%09%7D%0A%09%09var%20dm%20%3D%20options.hideDropMarker%20%26amp%3B%26amp%3B%20%28%0A%09%09%09btn.dropmarker%0A%09%09%09%7C%7C%20anonElt%28btn%2C%20%22class%22%2C%20%22toolbarbutton-menu-dropmarker%22%29%0A%09%09%29%3B%0A%09%09var%20lb%20%3D%20options.showLabel%20%21%3D%20undefined%20%26amp%3B%26amp%3B%20%28%0A%09%09%09btn.multilineLabel%0A%09%09%09%7C%7C%20anonElt%28btn%2C%20%22class%22%2C%20%22toolbarbutton-text%22%29%0A%09%09%29%3B%0A%09%09if%28dm%29%20%7B%0A%09%09%09dm.hidden%20%3D%20true%3B%0A%09%09%09//%20Hack%20for%20Firefox%2019%20and%20large%20icons%0A%09%09%09let%20icon%20%3D%20btn.icon%0A%09%09%09%09%7C%7C%20anonElt%28btn%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%09%09%09if%28icon%29%20%7B%0A%09%09%09%09let%20s%20%3D%20doc.defaultView.getComputedStyle%28icon%2C%20null%29%3B%0A%09%09%09%09if%28s.paddingRight%20%21%3D%20s.paddingLeft%29%0A%09%09%09%09%09icon.style.paddingLeft%20%3D%20icon.style.paddingRight%20%3D%20s.paddingLeft%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09if%28lb%29%0A%09%09%09lb.style.display%20%3D%20options.showLabel%20%3F%20%22-moz-box%22%20%3A%20%22none%22%3B%0A%09%09if%28%21dm%20%26amp%3B%26amp%3B%20%21lb%20%26amp%3B%26amp%3B%20Date.now%28%29%20%26lt%3B%20stopTime%29%0A%09%09%09setTimeout%28tweakButton%2C%2010%29%3B%0A%09%7D%2C%200%29%3B%0A%7D%0A%0AsetTimeout%28function%28_this%29%20%7B%20//%20Don%27t%20show%20modal%20%22Select%20folder%22%20dialog%20during%20initialization%0A%09_this.bookmarks.init%28%29%3B%0A%7D%2C%200%2C%20this%29%3B%0Athis.onDestroy%20%3D%20function%28%29%20%7B%0A%09this.bookmarks.destroy%28%29%3B%0A%7D%3B%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bif%28%21event.target%20%26%26%20%21this.disabled%29%20//%20Button%27s%20hotkey%20pressed%0A%09this.open%20%3D%20true%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E"
>Install</a>
| <a href="https://github.com/Infocatcher/Custom_Buttons/tree/master/Bookmarks_Folder">Source</a>
| <a href="https://github.com/Infocatcher/Custom_Buttons#usage">Instructions</a>
<script type="text/javascript">
var a = document.getElementsByTagName("a")[0];
a.title = document.title;
if(/%3Cimage%3E%3C%21%5BCDATA%5B(data%3A\S+)%5D%5D%3E%3C\/image%3E/.test(a.href)) {
var icon = decodeURIComponent(RegExp.$1);
var img = document.createElement("img");
img.src = icon;
img.alt = "";
img.style.verticalAlign = "middle";
img.style.marginRight = "4px";
img.style.border = "none";
a.insertBefore(img, a.firstChild);
var link = document.createElement("link");
link.rel = "shortcut icon";
link.href = icon;
document.documentElement.insertBefore(link, document.documentElement.firstChild);
}
</script>
<script type="text/javascript" src="https://infocatcher.github.io/Custom_Buttons/viewCustomButton.js"></script>
<script type="text/javascript">
if("viewCustomButtonCode" in window) setTimeout(function() {
viewCustomButtonCode(a.href);
}, 0);
</script>
</body>