Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№977629-02-2016 09:50:50

noknok
Участник
 
Группа: Members
Зарегистрирован: 27-02-2016
Сообщений: 68
UA: Firefox 44.0

Re: Custom Buttons

Замечательно дополнение.

Столкнулся с проблемой. Установил кнопку Bookmarks | Manager | Add  https://forum.mozilla-russia.org/viewto … 92#p521492 .   А как удалить теперь ?  В настройках Custom Buttons нет ничего. В самом лисе не знаю как  выдрать из настроек меню. В какой папке сохраняются кнопки Custom Buttons ?

Отсутствует

 

№977729-02-2016 10:15:01

Coroner
Участник
 
Группа: Members
Зарегистрирован: 29-10-2012
Сообщений: 4002
UA: Firefox 44.0

Re: Custom Buttons

noknok, Shift+ПКМ, удалить...
Или настройки дополнений, вкладка Custom Buttons. ПКМ по кнопке, удалить...

noknok пишет

В какой папке сохраняются кнопки Custom Buttons ?

В папке Сustombuttons :) В профиле она. Настройки в файле buttonsoverlay.xul

Отредактировано Coroner (29-02-2016 10:16:18)

Отсутствует

 

№977829-02-2016 10:41:22

noknok
Участник
 
Группа: Members
Зарегистрирован: 27-02-2016
Сообщений: 68
UA: Firefox 44.0

Re: Custom Buttons

Coroner пишет

В папке Сustombuttons :) В профиле она. Настройки в файле buttonsoverlay.xul

Coroner отдельным файлом кнопки не сохраняются ?  Легче переустановить все кнопки чем выискивать в нагромождение текста buttonsoverlay.xul  . Там все равно ошибусь. 

Как в firefox в Настройках меню и панелей инструментов удалять ненужное ? Есть ли такая возможность ?

Отсутствует

 

№977929-02-2016 11:15:00

Coroner
Участник
 
Группа: Members
Зарегистрирован: 29-10-2012
Сообщений: 4002
UA: Firefox 44.0

Re: Custom Buttons

noknok пишет

Как в firefox в Настройках меню и панелей инструментов удалять ненужное ? Есть ли такая возможность ?

Контекстное меню на правой кнопке мыши для всех элементов.

скрытый текст
0c1cf96523a0481688a51d45fbd2a9fb.jpg

Для редактирования меню можно использовать дополнения, например Menu Wizard. Или скрыть лишние элементы используя стили

noknok пишет

Coroner отдельным файлом кнопки не сохраняются ?

Не сохраняются. Но есть кнопки вроде Button Archive или "Экспорт всех кнопок в HTML", которые сохраняют все кнопки в HTML файле для последующей установки всех или только нужных.

Отредактировано Coroner (29-02-2016 11:19:55)

Отсутствует

 

№978029-02-2016 14:40:40

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

emlen пишет

а как-то можно отслеживать выполнение кода? А-то непонятно отчего вдруг кнопка становится серой, приходится в небо пальцем весь код перелопачивать, как так?

Открой в вкладке: chrome://global/content/console.xul и смотри ошибки в коде.

Отсутствует

 

№978129-02-2016 15:47:49

noknok
Участник
 
Группа: Members
Зарегистрирован: 27-02-2016
Сообщений: 68
UA: Firefox 44.0

Re: Custom Buttons

Coroner пишет

Контекстное меню на правой кнопке мыши для всех элементов.

Coroner конечно пробовал так. В этой кнопке нет удаления. Не подскажите что за тема у вас ? Яркие значки кажется. Понравился значок новой вкладки.

Coroner пишет

Не сохраняются. Но есть кнопки вроде Button Archive или "Экспорт всех кнопок в HTML", которые сохраняют все кнопки в HTML файле для последующей установки всех или только нужных.

Button Archive   для меня еще сложна . Ставил ее сегодня утром. Ничего не понял :D

Отредактировано noknok (29-02-2016 15:49:28)

Отсутствует

 

№978229-02-2016 16:46:50

Coroner
Участник
 
Группа: Members
Зарегистрирован: 29-10-2012
Сообщений: 4002
UA: Firefox 44.0

Re: Custom Buttons

noknok пишет

В этой кнопке нет удаления.

И через about:addons во вкладке "Custom Buttons" нет ?
Была где-то на форуме кнопка вроде как для этих случаев. Типа для разработчиков. Но найти её не могу.
Если Button Archive сложная, то попробуйте найти "Экспорт всех кнопок в HTML", я что-то потерял её тут, или возьмите у меня : код её я скопировал сюда, но автора указать не могу.

скрытый текст
:offtopic:

noknok пишет

Яркие значки кажется. Понравился значок новой вкладки.

Это 2 стиля, firefox-dark-theme и firefox-dark-theme2, придающие Firefox вид как у Firefox Developer Edition, работающие через Stylish . Которые опять-таки найти не могу (вообще сегодня ничего не ищется :cry: ). Если понабиться - вышлю код, ну или сами поищите, на форуме были ссылки.

Но значок новой вкладки к ним отношения не имеет, это делает дополнение Classic Theme Restorer , в настройках "настройки цветов" - "новая"...

Отсутствует

 

№978301-03-2016 00:16:43

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 47.0

Re: Custom Buttons

noknok пишет

А как удалить теперь ?  В настройках Custom Buttons нет ничего. В самом лисе не знаю как  выдрать из настроек меню. В какой папке сохраняются кнопки Custom Buttons ?

Если не ошибаюсь, то можно в профиле из ...\custombuttons\backup\ взять нужный тебе buttonsoverlay.xul.bak и заменить им buttonsoverlay.xul в ...\custombuttons\, предварительно переименовав естественно.

Отсутствует

 

№978401-03-2016 02:32:41

Baron_
Забанен
 
Группа: Members
Зарегистрирован: 13-08-2013
Сообщений: 71
UA: Firefox 44.0

Re: Custom Buttons

noknok пишет

Установил кнопку Bookmarks | Manager | Add  https://forum.mozilla-russia.org/viewto … 92#p521492 .   А как удалить теперь ?

Нажмите Shift и удерживая ее нажмите на кнопке правую кнопку мыши. Увидите меню, в том числе - удалить. Или: дополнения - Custom Buttons - нажать удалить напротив нужной кнопки. В чем проблема?

Отредактировано Baron_ (01-03-2016 02:35:23)

Отсутствует

 

№978501-03-2016 10:42:51

emlen
Участник
 
Группа: Members
Зарегистрирован: 22-05-2015
Сообщений: 201
UA: unknown 0.0

Re: Custom Buttons

bunda1 пишет

Открой в вкладке: chrome://global/content/console.xul и смотри ошибки в коде

ясненько, спасиб. А возможно ли при сохранении закладки через
диалог, типа стандартного

Выделить код

Код:

PlacesCommandHook.bookmarkCurrentPage(true, PlacesUtils.toolbarFolderId);

, чтобы добавлялось в начало списка?
И как в этот диалог передать произвольную папку, любой вложенности?

Отредактировано emlen (01-03-2016 11:12:49)


SeaMonkey 2.39 forever

Отсутствует

 

№978601-03-2016 13:14:43

emlen
Участник
 
Группа: Members
Зарегистрирован: 22-05-2015
Сообщений: 201
UA: unknown 0.0

Re: Custom Buttons

А что значит эта ошибка в консоли ошибок:

ошибка↓

Выделить код

Код:

Метка времени: 01.03.2016 13:11:50
Ошибка: A promise chain failed to handle a rejection. Did you forget to '.catch', or did you forget to 'return'?
See https://developer.mozilla.org/Mozilla/JavaScript_code_modules/Promise.jsm/Promise

Date: Tue Mar 01 2016 13:11:45 GMT+0300
Full Message: Invalid livemark
Full Stack: JS frame :: resource://gre/components/nsLivemarkService.js :: getLivemark/< :: line 308
JS frame :: self-hosted :: next :: line 624
JS frame :: resource://gre/modules/Task.jsm :: TaskImpl_run :: line 314
JS frame :: resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js :: Handler.prototype.process :: line 934
JS frame :: resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js :: this.PromiseWalker.walkerLoop :: line 813
JS frame :: resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js :: this.PromiseWalker.scheduleWalkerLoop/< :: line 747
native frame :: <unknown filename> :: <TOP_LEVEL> :: line 0
Источник: resource://gre/components/nsLivemarkService.js
Строка: 308
Исходный код:
308


SeaMonkey 2.39 forever

Отсутствует

 

№978701-03-2016 16:01:57

vv07
Участник
 
Группа: Members
Зарегистрирован: 07-11-2007
Сообщений: 689
UA: Firefox 28.0

Re: Custom Buttons

Осмелюсь повторить свою просьбу https://forum.mozilla-russia.org/viewto … 07#p708407

Нельзя ли поправить код, так что бы работала постоянно, делая текстовые ссылки кликабельными и выделяя ее цветным фоном (к примеру желтым). Что бы не кликать ее постоянно.
Буду признателен за помощь.

Отсутствует

 

№978801-03-2016 16:31:17

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 28.0
Веб-сайт

Re: Custom Buttons

vv07 пишет

Осмелюсь повторить свою просьбу https://forum.mozilla-russia.org/viewto … 07#p708407

Нельзя ли поправить код, так что бы работала постоянно, делая текстовые ссылки кликабельными и выделяя ее цветным фоном (к примеру желтым). Что бы не кликать ее постоянно.
Буду признателен за помощь.

Имхо это будет очень грузить браузер - представляете себе тотальный парсинг каждой страницы.
По идее можно было бы сделать что-то типа жеста, чтобы избегать промежуточного вызова контекстного меню.


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№978901-03-2016 18:04:38

SendInfo
.
 
Группа: Members
Зарегистрирован: 14-02-2011
Сообщений: 271
UA: Firefox 42.0

Re: Custom Buttons

vv07 пишет

Осмелюсь повторить свою просьбу https://forum.mozilla-russia.org/viewto … 07#p708407

Нельзя ли поправить код, так что бы работала постоянно, делая текстовые ссылки кликабельными и выделяя ее цветным фоном (к примеру желтым). Что бы не кликать ее постоянно.
Буду признателен за помощь.

обновлённый скрипт Greasemonkey из которого делалась кнопка

Выделить код

Код:

// ==UserScript==
// @name            Linkification
// @description     Turn plain text URLs into clickable links
// @namespace       http://userscripts.org/users/splurov/
// @version         20150610.1
// @include         *
// @exclude         http://www.google.tld/search*
// @exclude         https://www.google.tld/search*
// @exclude         http://music.google.com/*
// @exclude         https://music.google.com/*
// @exclude         http://mail.google.com/*
// @exclude         https://mail.google.com/*
// @exclude         http://docs.google.com/*
// @exclude         https://docs.google.com/*
// @exclude         http://mxr.mozilla.org/*
// @exclude         http://yandex.com/search*
// @exclude         https://yandex.com/search*
// @exclude         http://yandex.ru/search*
// @exclude         https://yandex.ru/search*
// @downloadURL     https://github.com/dartraiden/Linkification/raw/master/linkification.user.js
// @supportURL        https://github.com/dartraiden/Linkification/issues
// ==/UserScript==

(function(){

// (c) http://data.iana.org/TLD/tlds-alpha-by-domain.txt
var domains = ['abb', 'abbott', 'abogado', 'ac', 'academy', 'accenture', 'accountant', 'accountants', 'active', 'actor', 'ad', 'ads', 'adult', 'ae', 'aero', 'af', 'afl', 'ag', 'agency', 'ai', 'aig', 'airforce', 'al', 'allfinanz', 'alsace', 'am', 'amsterdam', 'an', 'android', 'ao', 'apartments', 'aq', 'aquarelle', 'ar', 'archi', 'army', 'arpa', 'as', 'asia', 'associates', 'at', 'attorney', 'au', 'auction', 'audio', 'auto', 'autos', 'aw', 'ax', 'axa', 'az', 'ba', 'band', 'bank', 'bar', 'barclaycard', 'barclays', 'bargains', 'bauhaus', 'bayern', 'bb', 'bbc', 'bd', 'be', 'beer', 'berlin', 'best', 'bf', 'bg', 'bh', 'bi', 'bid', 'bike', 'bingo', 'bio', 'biz', 'bj', 'black', 'blackfriday', 'bloomberg', 'blue', 'bm', 'bmw', 'bn', 'bnpparibas', 'bo', 'boats', 'bond', 'boo', 'boutique', 'br', 'bridgestone', 'broker', 'brussels', 'bs', 'bt', 'budapest', 'build', 'builders', 'business', 'buzz', 'bv', 'bw', 'by', 'bz', 'bzh', 'ca', 'cab', 'cafe', 'cal', 'camera', 'camp', 'cancerresearch', 'canon', 'capetown', 'capital', 'caravan', 'cards', 'care', 'career', 'careers', 'cars', 'cartier', 'casa', 'cash', 'casino', 'cat', 'catering', 'cbn', 'cc', 'cd', 'center', 'ceo', 'cern', 'cf', 'cfa', 'cfd', 'cg', 'ch', 'channel', 'chat', 'cheap', 'chloe', 'christmas', 'chrome', 'church', 'ci', 'citic', 'city', 'ck', 'cl', 'claims', 'cleaning', 'click', 'clinic', 'clothing', 'club', 'cm', 'cn', 'co', 'coach', 'codes', 'coffee', 'college', 'cologne', 'com', 'community', 'company', 'computer', 'condos', 'construction', 'consulting', 'contractors', 'cooking', 'cool', 'coop', 'country', 'courses', 'cr', 'credit', 'creditcard', 'cricket', 'crs', 'cruises', 'cu', 'cuisinella', 'cv', 'cw', 'cx', 'cy', 'cymru', 'cyou', 'cz', 'dabur', 'dad', 'dance', 'date', 'dating', 'datsun', 'day', 'dclk', 'de', 'deals', 'degree', 'delivery', 'democrat', 'dental', 'dentist', 'desi', 'design', 'dev', 'diamonds', 'diet', 'digital', 'direct', 'directory', 'discount', 'dj', 'dk', 'dm', 'dnp', 'do', 'docs', 'dog', 'doha', 'domains', 'doosan', 'download', 'durban', 'dvag', 'dz', 'eat', 'ec', 'edu', 'education', 'ee', 'eg', 'email', 'emerck', 'energy', 'engineer', 'engineering', 'enterprises', 'epson', 'equipment', 'er', 'erni', 'es', 'esq', 'estate', 'et', 'eu', 'eurovision', 'eus', 'events', 'everbank', 'exchange', 'expert', 'exposed', 'express', 'fail', 'faith', 'fan', 'fans', 'farm', 'fashion', 'feedback', 'fi', 'film', 'finance', 'financial', 'firmdale', 'fish', 'fishing', 'fit', 'fitness', 'fj', 'fk', 'flights', 'florist', 'flowers', 'flsmidth', 'fly', 'fm', 'fo', 'foo', 'football', 'forex', 'forsale', 'foundation', 'fr', 'frl', 'frogans', 'fund', 'furniture', 'futbol', 'ga', 'gal', 'gallery', 'garden', 'gb', 'gbiz', 'gd', 'gdn', 'ge', 'gent', 'gf', 'gg', 'ggee', 'gh', 'gi', 'gift', 'gifts', 'gives', 'gl', 'glass', 'gle', 'global', 'globo', 'gm', 'gmail', 'gmo', 'gmx', 'gn', 'gold', 'goldpoint', 'golf', 'goo', 'goog', 'google', 'gop', 'gov', 'gp', 'gq', 'gr', 'graphics', 'gratis', 'green', 'gripe', 'gs', 'gt', 'gu', 'guge', 'guide', 'guitars', 'guru', 'gw', 'gy', 'hamburg', 'hangout', 'haus', 'healthcare', 'help', 'here', 'hermes', 'hiphop', 'hitachi', 'hiv', 'hk', 'hm', 'hn', 'hockey', 'holdings', 'holiday', 'homes', 'honda', 'horse', 'host', 'hosting', 'house', 'how', 'hr', 'ht', 'hu', 'ibm', 'icu', 'id', 'ie', 'ifm', 'il', 'im', 'immo', 'immobilien', 'in', 'industries', 'infiniti', 'info', 'ing', 'ink', 'institute', 'insure', 'int', 'international', 'investments', 'io', 'iq', 'ir', 'irish', 'is', 'it', 'iwc', 'java', 'jcb', 'je', 'jetzt', 'jewelry', 'jm', 'jo', 'jobs', 'joburg', 'jp', 'juegos', 'kaufen', 'kddi', 'ke', 'kg', 'kh', 'ki', 'kim', 'kitchen', 'kiwi', 'km', 'kn', 'koeln', 'komatsu', 'kp', 'kr', 'krd', 'kred', 'kw', 'ky', 'kyoto', 'kz', 'la', 'lacaixa', 'land', 'lat', 'latrobe', 'lawyer', 'lb', 'lc', 'lds', 'lease', 'leclerc', 'legal', 'lgbt', 'li', 'liaison', 'lidl', 'life', 'lighting', 'limited', 'limo', 'link', 'lk', 'loan', 'loans', 'lol', 'london', 'lotte', 'lotto', 'love', 'lr', 'ls', 'lt', 'ltda', 'lu', 'luxe', 'luxury', 'lv', 'ly', 'ma', 'madrid', 'maif', 'maison', 'management', 'mango', 'market', 'marketing', 'markets', 'marriott', 'mc', 'md', 'me', 'media', 'meet', 'melbourne', 'meme', 'memorial', 'menu', 'mg', 'mh', 'miami', 'mil', 'mini', 'mk', 'ml', 'mm', 'mma', 'mn', 'mo', 'mobi', 'moda', 'moe', 'monash', 'money', 'mormon', 'mortgage', 'moscow', 'motorcycles', 'mov', 'movie', 'mp', 'mq', 'mr', 'ms', 'mt', 'mtn', 'mtpc', 'mu', 'museum', 'mv', 'mw', 'mx', 'my', 'mz', 'na', 'nadex', 'nagoya', 'name', 'navy', 'nc', 'ne', 'nec', 'net', 'network', 'neustar', 'new', 'news', 'nexus', 'nf', 'ng', 'ngo', 'nhk', 'ni', 'nico', 'ninja', 'nissan', 'nl', 'no', 'np', 'nr', 'nra', 'nrw', 'ntt', 'nu', 'nyc', 'nz', 'okinawa', 'om', 'one', 'ong', 'onl', 'online', 'ooo', 'oracle', 'org', 'organic', 'osaka', 'otsuka', 'ovh', 'pa', 'page', 'panerai', 'paris', 'partners', 'parts', 'party', 'pe', 'pf', 'pg', 'ph', 'pharmacy', 'philips', 'photo', 'photography', 'photos', 'physio', 'piaget', 'pics', 'pictet', 'pictures', 'pink', 'pizza', 'pk', 'pl', 'place', 'plumbing', 'plus', 'pm', 'pn', 'pohl', 'poker', 'porn', 'post', 'pr', 'praxi', 'press', 'pro', 'prod', 'productions', 'prof', 'properties', 'property', 'ps', 'pt', 'pub', 'pw', 'py', 'qa', 'qpon', 'quebec', 'racing', 're', 'realtor', 'recipes', 'red', 'redstone', 'rehab', 'reise', 'reisen', 'reit', 'ren', 'rent', 'rentals', 'repair', 'report', 'republican', 'rest', 'restaurant', 'review', 'reviews', 'rich', 'rio', 'rip', 'ro', 'rocks', 'rodeo', 'rs', 'rsvp', 'ru', 'ruhr', 'run', 'rw', 'ryukyu', 'sa', 'saarland', 'sale', 'samsung', 'sap', 'sarl', 'saxo', 'sb', 'sc', 'sca', 'scb', 'schmidt', 'scholarships', 'school', 'schule', 'schwarz', 'science', 'scot', 'sd', 'se', 'seat', 'sener', 'services', 'sew', 'sex', 'sexy', 'sg', 'sh', 'shiksha', 'shoes', 'show', 'shriram', 'si', 'singles', 'site', 'sj', 'sk', 'sky', 'sl', 'sm', 'sn', 'so', 'social', 'software', 'sohu', 'solar', 'solutions', 'sony', 'soy', 'space', 'spiegel', 'spreadbetting', 'sr', 'st', 'study', 'style', 'su', 'sucks', 'supplies', 'supply', 'support', 'surf', 'surgery', 'suzuki', 'sv', 'swiss', 'sx', 'sy', 'sydney', 'systems', 'sz', 'taipei', 'tatar', 'tattoo', 'tax', 'taxi', 'tc', 'td', 'team', 'tech', 'technology', 'tel', 'temasek', 'tennis', 'tf', 'tg', 'th', 'theater', 'tickets', 'tienda', 'tips', 'tires', 'tirol', 'tj', 'tk', 'tl', 'tm', 'tn', 'to', 'today', 'tokyo', 'tools', 'top', 'toray', 'toshiba', 'tours', 'town', 'toys', 'tr', 'trade', 'trading', 'training', 'travel', 'trust', 'tt', 'tui', 'tv', 'tw', 'tz', 'ua', 'ug', 'uk', 'university', 'uno', 'uol', 'us', 'uy', 'uz', 'va', 'vacations', 'vc', 've', 'vegas', 'ventures', 'versicherung', 'vet', 'vg', 'vi', 'viajes', 'video', 'villas', 'vision', 'vlaanderen', 'vn', 'vodka', 'vote', 'voting', 'voto', 'voyage', 'vu', 'wales', 'wang', 'watch', 'webcam', 'website', 'wed', 'wedding', 'weir', 'wf', 'whoswho', 'wien', 'wiki', 'williamhill', 'win', 'wme', 'work', 'works', 'world', 'ws', 'wtc', 'wtf', 'xerox', 'xin', 'xxx', 'xyz', 'yachts', 'yandex', 'ye', 'yodobashi', 'yoga', 'yokohama', 'youtube', 'yt', 'za', 'zip', 'zm', 'zone', 'zuerich', 'zw'];

// (c) http://yellow5.us/firefox/linkification/
var tagsForSkip = ['a', 'applet', 'area', 'embed', 'frame', 'frameset', 'head', 'iframe', 'img', 'map', 'meta', 'noscript', 'object', 'option', 'param', 'script', 'select', 'style', 'textarea', 'title'];

var inArray = function(value, items) {
    for (var i = 0; items[i] && value != items[i]; i++);
    return value == items[i];
}

var urlsRegExp = /(^|[\s()\[\]_:~+@*"'>])((?:https?|ftp|irc):\/\/)?([-a-z\d;:&=+$,%_.!~*'()]+@)?((?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:(www|irc|ftp)\.)?(?:(?:[a-z\d]|[a-z\d][a-z\d-]*[a-z\d])\.)+([a-z]{2,6}))(:\d+)?(\/(?:[-\w.!~*'()%:@&=+$,;\/]*[\w~*%@&=+$\/])?(?:\?(?:[-\w;\/?:@&=+$,.!~*'()%\[\]|]*[\w\/@&=+$~*%])?)?(?:#(?:[-\w;\/?:@&=+$,.!~*'()%]*[\w\/@&=+$~*%])?)?|\b)/i

var linksCounter = 0;

var current = document.body;
while (current) {
    if (current.nodeName == '#text' && (match = current.nodeValue.match(urlsRegExp)) && inArray(match[6], domains)) {
        var url;
        if (match[3] && ! match[2] && ! match[5] && ! match[8] && (match[3].indexOf(':') == -1 || match[3].indexOf('mailto:') == 0)) {
            url = (match[3].indexOf('mailto:') == -1 ? 'mailto:' : '')
                    + match[3]
                    + match[4];
        }
        else {
            url = (match[2] ? match[2] : (! match[5] || match[5] == 'www' ? 'http' : match[5]) + '://')
                    + (match[3] ? match[3] : '')
                    + match[4]
                    + (match[7] ? match[7] : '')
                    + (match[8] ? match[8] : '');
        }
        if (url) {
            var range = document.createRange();
            range.setStart(current, match.index + match[1].length);
            range.setEnd(current, match.index + match[0].length);
            var a = document.createElement('a');
            a.setAttribute('href', url);
            a.setAttribute('class', 'linkified');
            a.appendChild(range.extractContents());
            range.insertNode(a);
            range.detach();
            linksCounter++;
        }
    }
    if (current.tagName && !inArray(current.tagName.toLowerCase(), tagsForSkip) && current.firstChild) {
        current = current.firstChild;
    }
    else if (current.nextSibling) {
        current = current.nextSibling;
    }
    else {
        do {
            current = current.parentNode;
        } while (!current.nextSibling && current.parentNode);
        current = current.nextSibling;
    }
}

})();

var style = document.createElement('style');
    style.type = 'text/css';
    style.appendChild(document.createTextNode('a.linkified {color: #006400!important; background-color: #FFFF00!important;}'));
    document.getElementsByTagName('head')[0].appendChild(style);

Отсутствует

 

№979001-03-2016 20:01:49

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

vv07 пишет

Осмелюсь повторить свою просьбу https://forum.mozilla-russia.org/viewto … 07#p708407

В инициализацию:

Выделить код

Код:

function runLinkification() {
var domains = [
  "ac", "ad", "ae", "aero", "af", "ag", "ai", "al", "am", "an", "ao", "aq",
  "ar", "arpa", "as", "asia", "at", "au", "aw", "ax", "az", "ba", "bb", "bd",
  "be", "bf", "bg", "bh", "bi", "biz", "bj", "bm", "bn", "bo", "br", "bs",
  "bt", "bv", "bw", "by", "bz", "ca", "cat", "cc", "cd", "cf", "cg", "ch",
  "ci", "ck", "cl", "cm", "cn", "co", "com", "coop", "cr", "cu", "cv", "cx",
  "cy", "cz", "de", "dj", "dk", "dm", "do", "dz", "ec", "edu", "ee", "eg",
  "er", "es", "et", "eu", "fi", "fj", "fk", "fm", "fo", "fr", "ga", "gb",
  "gd", "ge", "gf", "gg", "gh", "gi", "gl", "gm", "gn", "gov", "gp", "gq",
  "gr", "gs", "gt", "gu", "gw", "gy", "hk", "hm", "hn", "hr", "ht", "hu",
  "id", "ie", "il", "im", "in", "info", "int", "io", "iq", "ir", "is", "it",
  "je", "jm", "jo", "jobs", "jp", "ke", "kg", "kh", "ki", "km", "kn", "kp",
  "kr", "kw", "ky", "kz", "la", "lb", "lc", "li", "lk", "lr", "ls", "lt",
  "lu", "lv", "ly", "ma", "mc", "md", "me", "mg", "mh", "mil", "mk", "ml",
  "mm", "mn", "mo", "mobi", "mp", "mq", "mr", "ms", "mt", "mu", "museum",
  "mv", "mw", "mx", "my", "mz", "na", "name", "nc", "ne", "net", "nf", "ng",
  "ni", "nl", "no", "np", "nr", "nu", "nz", "om", "org", "pa", "pe", "pf",
  "pg", "ph", "pk", "pl", "pm", "pn", "pr", "pro", "ps", "pt", "pw", "py",
  "qa", "re", "ro", "rs", "ru", "rw", "sa", "sb", "sc", "sd", "se", "sg",
  "sh", "si", "sj", "sk", "sl", "sm", "sn", "so", "sr", "st", "su", "sv",
  "sy", "sz", "tc", "td", "tel", "tf", "tg", "th", "tj", "tk", "tl", "tm",
  "tn", "to", "tp", "tr", "travel", "tt", "tv", "tw", "tz", "ua", "ug", "uk",
  "us", "uy", "uz", "va", "vc", "ve", "vg", "vi", "vn", "vu", "wf", "ws",
  "ye", "yt", "yu", "za", "zm", "zw"
];

// (c) http://yellow5.us/firefox/linkification/
var tagsForSkip = [
  "a", "applet", "area", "embed", "frame", "frameset", "head", "iframe",
  "img", "map", "meta", "noscript", "object", "option", "param", "script",
  "select", "style", "textarea", "title"
];

var inArray = function(value, items) {
  for (var i = 0; items[i] && value != items[i]; i++);
  return value == items[i];
}

var urlsRegExp = /(^|[\s()\[\]_:~+@*"'>])((?:https?|ftp|irc):\/\/)?([-a-z\d;:&=+$,%_.!~*'()]+@)?((?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:(www|irc|ftp)\.)?(?:(?:[a-z\d]|[a-z\d][a-z\d-]*[a-z\d])\.)+([a-z]{2,6}))(:\d+)?(\/(?:[-\w.!~*'()%:@&=+$,;\/]*[\w~*%@&=+$\/])?(?:\?(?:[-\w;\/?:@&=+$,.!~*'()%\[\]|]*[\w\/@&=+$~*%])?)?(?:#(?:[-\w;\/?:@&=+$,.!~*'()%]*[\w\/@&=+$~*%])?)?|\b)/i

var linksCounter = 0;

var current = content.document.body;
while (current) {
  if (current.nodeName == "#text" && (match = current.nodeValue.match(urlsRegExp)) && inArray(match[6], domains)) {
    var url;
    if (match[3] && ! match[2] && ! match[5] && ! match[8] && (match[3].indexOf(":") == -1 || match[3].indexOf("mailto:") == 0)) {
      url = (match[3].indexOf("mailto:") == -1 ? "mailto:" : "")
          + match[3]
          + match[4];
    }
    else {
      url = (match[2] ? match[2] : (! match[5] || match[5] == "www" ? "http" : match[5]) + "://")
          + (match[3] ? match[3] : "")
          + match[4]
          + (match[7] ? match[7] : "")
          + (match[8] ? match[8] : "");
    }
    if (url) {
      var range = content.document.createRange();
      range.setStart(current, match.index + match[1].length);
      range.setEnd(current, match.index + match[0].length);
      var a = content.document.createElement("a");
      a.setAttribute("href", url);
      a.setAttribute("target", "_blank");
      a.setAttribute("class", "linkified");
      a.appendChild(range.extractContents());
      range.insertNode(a);
      range.detach();
      linksCounter++;
    }
  }
  if (current.tagName && !inArray(current.tagName.toLowerCase(), tagsForSkip) && current.firstChild) {
    current = current.firstChild;
  }
  else if (current.nextSibling) {
    current = current.nextSibling;
  }
  else {
    do {
      current = current.parentNode;
    } while (!current.nextSibling && current.parentNode);
    current = current.nextSibling;
  }
}};

var listener = { 
   onStateChange: function(wpr, req, flag) {
      if ( !gBrowser.currentURI.spec.startsWith("http") ) return; 
      if ( flag & Ci.nsIWebProgressListener.STATE_STOP ) runLinkification();
   },
      
   onLocationChange: function(wpr, req) {
      if ( !wpr.currentURI.spec.startsWith("http") && !req && wpr.document.readyState == "complete")
           runLinkification();
   }       
};
gBrowser.addProgressListener( listener );
addDestructor(function() gBrowser.removeProgressListener( listener ) );

Добавлено 01-03-2016 20:04:10

emlen пишет

А что значит эта ошибка в консоли ошибок:

Не знаю что за ошибка но точно не связанная с Custom Buttons.

Отредактировано bunda1 (01-03-2016 20:04:10)

Отсутствует

 

№979101-03-2016 20:55:36

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

emlen пишет

диалог, типа стандартного

Выделить код

Код:

PlacesCommandHook.bookmarkCurrentPage(true, PlacesUtils.toolbarFolderId);

, чтобы добавлялось в начало списка?

В инициализацию:

Выделить код

Код:

(()=> { 
   var src = "PlacesCommandHook.bookmarkPage = " + PlacesCommandHook.bookmarkPage.toString(),
       res = src.replace("PlacesUtils.bookmarks.DEFAULT_INDEX", "0");
   eval(res);
   addDestructor(()=> eval(src) );
})();

Добавлено 01-03-2016 20:56:32

emlen пишет

И как в этот диалог передать произвольную папку, любой вложенности?

Не понятно.

Отредактировано bunda1 (01-03-2016 20:56:32)

Отсутствует

 

№979201-03-2016 22:15:01

emlen
Участник
 
Группа: Members
Зарегистрирован: 22-05-2015
Сообщений: 201
UA: unknown 0.0

Re: Custom Buttons

bunda1 пишет

точно не связанная с Custom Buttons

:D:whiteflag:

Добавлено 01-03-2016 22:19:51

bunda1 пишет

В инициализацию:
Код:

чет видимо не то я сделал, здеся куда кидать:

Выделить код

Код:

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%3E%u0417%u0430%u043A%u043B%u0430%u0434%u043E%u0447%u043A%u0438%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAHJklEQVRYhc2XW2wU1x3GJ6lJINSQLpxUiGLABMcUO7Zh8QWDTLhEyhsCZBl4BCREeOEO5o642xIqeYz6UClCQg3pU8RFBgVsuvbMenf2NrO3mb2vx14bI4tKPFT69cU7wi2wVlupPdJfu3vm7Pm+739+Z6WVpP+34XA4dgghEEKwaNEimpub2bVrF52dnXR3d//b1dXV9bi7u3tHSQNCCA5++y1/+eknDMPgvzFev36Nx+Ohq6vr8bQMvK2mmzT4+fx/qX9a8/4uCCG4dOkSHR0ddgkhGB8fZ2JighcvXjAxMcHExIQ99/LlS8bHxxkdHUVdNo+/3/2jXeqyeViWxatXrwiHw6W7IITg6NGjtLW10dbWxpYtWxBCYFkWIyMjFAoFRkdHsSyLfD6PZVmMjY0xNjaG1+tFXurgb7u/tkte6iAUCjE6OsrIyAhdXV28T3/h/Pnz32qgUChgWRaWZZHJZMjn8xQKBXK5HJlMBsuycLvd9FV8ysv2TbzYUs/L9k30VXzKwMAA2WwWy7K4efPmuw3s3H+aOXPmsHv3bpxOJ62trWzevBkhBGNjY6TTaYaHhykUCqTTabLZLENDQ3Y6RVF4vHAu1tb15Nt+j7V1PY8XzsXlcpHNZsnn86UN/OFPD+gZiAKwYsUKNm3ahBDCFn4zcSaTIZVKkclkGBkZQZZlfl5QTuqbZsymz0l908zPC8qRZdk2f+PGjfceweZ3GSgUCqRSKVKpFMlkkpGREfL5PLlcjlwux/DwMLIs8+NnswlvXEWwroLwxlX8+NlsFEWxj+369evvNTDH4XCwc+dOqquraWlpYePGjQgh7NRF8BKJBJlMhmQyydDQELlcjv7+fn6YNwt1bQ3KF79FXVvDD/Nm0d/fTzqdJp1Oc+3atdIQHjp0iNbWVlpbW/nqq69sA6ZpYhgGhmGQz+dJJBJks1lM08Q0TXp7e/l+7sf0O6t4tuQ39Dur+H7uxzx//txm4OrVq6Uh7OjooKGhgaamJjZs2IAQgmw2SyaTsQWz2ax9/qZpkk6ncblcfFc+g1++XMqjBbP55culfFc+g6dPn9qGr1y5Mn0Iq6qqaGtrQwjB0NAQyWSSRCJBPB4nFouRSqWIxWIYhkEsFqO3t5fuT8p4+MXv7Or+pAyXy0U6nSaRSHD58uXpQ1hVVcX69esRQthnXiQ/kUhgmqY9F4vF6Ovr4+rMD3lYV8WZMomHdVVcnfkhfX19GIZBMpnk0qVLpSFsb29n+fLlOJ1O1q1bZxuIRqOYpkksFiMSidjJTdMkmUzy7NkzLnz0AWfKJDo7OzlTJnHhow948uQJ0WiUZDLJxYsXS0N48OBBGhsbaWxspLW1FSEEsVgMTdOIRCLE43Hi8bhtSNM0otEoPT09nCmTuH37Nnfu3OHWrVucKZPo6enBMAzi8TgXLlwoDeGOHTuoqalh1apVrF27FiEEkUiEcDiMrusYhkE0GiUcDhMOhzFNE13XkWWZe/fucf/+fWRZ5sGDB9y9exeXy0U4HCaVSnH+/PnpQ7hs2TJaWloQQqDrOvF4nEgkQiAQIB6PEwwGMQzD7oCmabhcLnw+H8FgEI/Hg8fjsT8nk0nOnTs3fQgrKytpbm5GCGEnjkQi9jH4/X5isRjRaNSeCwQCRCIRotGoPe/3+wkEAhiGwdmzZ0tDuH37diorK6mrq6OpqQkhhA1cIBBA0zT7va7rU8RCoRChUAi/34/P5yMUChEIBAgGg2iaxunTp0tDuH//fhoaGmhoaKCxsREhBJqmEQwGUVUVXdftjXVdR9d1O7nf78fr9RIIBOzXQCBgd6uzs7M0hNu2baO6upra2lrWrFmDEMJubzGVruuoqjrFWFHozeRFg7quo2kap06dmj6ES5Yswel0IoQgFArh9XoJBoP2xkUDxQ6oqorf77cFfT4fPp8PTdPQNI1QKMTJkyenD+HixYtZvXo1QghUVUVRFEKhkE24oigEg0HcbjdutxtVVfH5fLjdbrtbxW54vV40TePEiROlIdy6dSsVFRWsXLmShoYG+xoqioKiKPj9fmRZZnBwEJ/Ph6IoBAIBBgcH7eeKouD1evH7/fZ6r9fL8ePH32tAEkKwb98+amtrqa2tnWKgmMjr9eJ2uxkcHERVVTwej22g2A1ZlnG73QwMDKAoiv1bcOzYsdIG9u7dS01NDTU1NdTX19sMqKqKqqrIsjwlaX9/P263G5/Px8DAgG2yeGxutxuPx/NOA7+SJGmGJEkzJUn6tRCCPXv2UFdXZ5cQYgrpoVCIwcFBNE2bAlnxrnu93ik3objm0aNHHD58+NGk1oxJbWmWJEkOSZIWSpJU5XA4/vy2f0ZHjhz5j+vAgQN/bW9v3z+p5ZjUttOXS5I0f/JhpSRJ1ZIk1UiSVC9J0mpJkpySJK2ZZjknv1M/uUf15J4LJzXK3+jC/3b8AzIAOcZQALNOAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3Evar%20icon%20%3D%20document.getAnonymousElementByAttribute%28%20this%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0Aicon.style.width%20%3D%20%2218px%22%3B%0Aicon.style.height%20%3D%20%2218px%22%3B%0A%0Aif%20%28%20this.hasAttribute%28%22initialized%22%29%20%29%20return%3B%0A%0A//%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-2014%0A//%20version%200.1.1%20-%202014-05-20%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%09var%20prefs%20%3D%20Services.prefs%3B%0A%09%09if%28%21prefs.getBoolPref%28%22intl.locale.matchOS%22%29%29%20%7B%0A%09%09%09var%20locale%20%3D%20prefs.getCharPref%28%22general.useragent.locale%22%29%3B%0A%09%09%09if%28locale.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%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%20..............%0A//this.tooltipText%20%3D%20%22%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u044E%5C%0A//%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5CnCtrl-%u041B%3A%20%u0421%u043A%u0440%u044B%u0442%u044C/%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%5C%0A%20%20//%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%u041F%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u0435%u0434%u0436%u0435%u0440%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%3B%0A%0A%0Athis.ondblclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20if%28e.target%20%3D%3D%20this%20%26amp%3B%26amp%3B%20e.button%20%3D%3D%200%29%7B%0A%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20PlacesCommandHook.showBookmarksManager%28%27AllBookmarks%27%29%3B%0A%20%20%20%20%7D%20%20%20%0A%7D%3B%0A%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%09if%28e.target%20%21%3D%20this%29%0A%09%09return%3B%0A%09%0A%09%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20....%20%20%20%20%0A%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26amp%3B%26amp%3B%20%21e.ctrlKey%20%26amp%3B%26amp%3B%20%21e.shiftKey%20%26amp%3B%26amp%3B%20%21e.altKey%20%26amp%3B%26amp%3B%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20PlacesCommandHook.bookmarkCurrentPage%28true%2C%20PlacesUtils.toolbarFolderId%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%7D%09%09%0A%09%09%0A%09%09%0A%09%09%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%20%28e.shiftKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%29%29%0A%09%09this.bookmarks.changeFolder%28%29%3B%0A%09/*%20else%20if%28e.button%20%3D%3D%201%20%7C%7C%20e.button%20%3D%3D%200%20%26amp%3B%26amp%3B%20%28e.ctrlKey%29%29%0A%09%09var%20bar%20%3D%20document.getElementById%28%22PersonalToolbar%22%29%3B%0A%20%20%20%20%20%20%20%20%20%09bar.collapsed%20%3D%20%21bar.collapsed%3B%0A%20%20%20%20%20%20%20%20%20%09document.persist%28%22PersonalToolbar%22%2C%20%21bar.collapsed%29%3B%09*/%09%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%20%28e.ctrlKey%20%7C%7C%20e.shiftKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%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.some%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%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%20node.open%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%20Application.prefs.getValue%28this.pref%2C%20%22%22%29%3B%0A%09%7D%2C%0A%09set%20folder%28val%29%20%7B%0A%09%09Application.prefs.setValue%28this.pref%2C%20String%28val%29%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%20Application.prefs.getValue%28this.titlePref%2C%20%22%22%29%3B%0A%09%7D%2C%0A%09set%20folderTitle%28val%29%20%7B%0A%09%09Application.prefs.setValue%28this.titlePref%2C%20val%29%3B%0A%09%7D%2C%0A%09get%20wm%28%29%20%7B%0A%09%09delete%20this.wm%3B%0A%09%09return%20this.wm%20%3D%20Components.classes%5B%22@mozilla.org/appshell/window-mediator%3B1%22%5D%0A%09%09%09.getService%28Components.interfaces.nsIWindowMediator%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%20%22PlacesMenuDNDHandler.onDragOver%28event%29%3B%22%29%3B%0A%09%09btn.setAttribute%28%22ondragexit%22%2C%20%20%22PlacesMenuDNDHandler.onDragExit%28event%29%3B%22%29%3B%0A%09//btn.setAttribute%28%22onmouseleave%22%2C%20%22this.mo%20%3D%20false%3B%20setTimeout%28function%28mp%29%20%7B%20if%20%28%20%21mp.mo%20%29%20mp.hidePopup%28%29%20%7D%2C%20200%2C%20this%29%22%29%3B%0A%20%20%20%20%20%20%20%20//btn.setAttribute%28%22onmouseover%22%2C%20%22this.mo%20%3D%20true%22%29%3B%0A%09%09//btn.setAttribute%28%22ondrop%22%2C%20%20%20%20%20%20%22PlacesMenuDNDHandler.onDrop%28event%29%3B%22%29%3B%0A%09%09btn.setAttribute%28%22ondrop%22%2C%20%20%20%20%20%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%20document.createElement%28%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%09var%20placeURI%20%3D%20folder.substr%280%2C%206%29%20%3D%3D%20%22place%3A%22%0A%09%09%09%3F%20folder%0A%09%09%09%3A%20%22place%3Afolder%3D%22%20+%20folder%20+%20%22%26amp%3BexcludeItems%3D0%26amp%3BexpandQueries%3D0%22%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%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%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%09btn._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//%20Add%20%22Open%20All%20in%20Tabs%22%20menuitem%0A%09%09try%20%7B%0A%09%09%09btn._placesView._mayAddCommandsItems.call%28%7B%0A%09%09%09%09_rootElt%3A%20null%2C%0A%09%09%09%09__proto__%3A%20btn._placesView%0A%09%09%09%7D%2C%20btn.firstChild%29%3B%0A%09%09%7D%0A%09%09catch%28e%29%20%7B%0A%09%09%09PlacesViewBase.prototype._mayAddCommandsItems%28btn.firstChild%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09destroy%3A%20function%28%29%20%7B%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%20%22%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u044E%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5CnCtrl-%u041B%3A%20%u0421%u043A%u0440%u044B%u0442%u044C/%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%u041F%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u0435%u0434%u0436%u0435%u0440%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%3B//title%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.button.firstChild%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/%28place%3Afolder%3D%29%5Cw+/%2C%20%22%241%22%20+%20folder%29%0A%09%09%29%3B%0A%09%7D%2C%0A%09selectFolder%3A%20function%28%29%20%7B%0A%09%09var%20winType%20%3D%20this.button.id%20+%20%22%3Adialog%22%3B%0A%09%09var%20win%20%3D%20this.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%20Application.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%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%20100%2C%20this.button%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%20this.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%09btn%20%26amp%3B%26amp%3B%20btn.bookmarks.initWithFolder%28folder%29%3B%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%20Number%28folder%29%3B%0A%09%09var%20bmsvc%20%3D%20Components.classes%5B%22@mozilla.org/browser/nav-bookmarks-service%3B1%22%5D%0A%09%09%09.getService%28Components.interfaces.nsINavBookmarksService%29%3B%0A%09%09switch%28folder%29%20%7B%0A%09%09%09case%20%22BOOKMARKS_MENU%22%3A%20%20%20%20return%20bmsvc.bookmarksMenuFolder%3B%0A%09%09%09case%20%22TOOLBAR%22%3A%20%20%20%20%20%20%20%20%20%20%20return%20bmsvc.toolbarFolder%3B%0A%09%09%09case%20%22UNFILED_BOOKMARKS%22%3A%20return%20bmsvc.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%20%20%20%20var%20ip%20%3D%20new%20InsertionPoint%28folder%2C%20PlacesUtils.bookmarks.DEFAULT_INDEX%2C%20Ci.nsITreeView.DROP_ON%29%3B%0A%09%09%20%20%20%20PlacesControllerDragHelper.onDrop%28ip%2C%20event.dataTransfer%29%3B%0A%09%09%20%20%20%20event.stopPropagation%28%29%3B%0A%09%20%20%20%20%7D%0A%09%20%20%20%20catch%28e%29%20%7B%0A%09%20%20%20%20%09Components.utils.reportError%28e%29%3B%0A%09%20%20%20%20%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%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%09var%20dm%20%3D%20options.hideDropMarker%0A%09%09%09%26amp%3B%26amp%3B%20doc.getAnonymousElementByAttribute%28btn%2C%20%22class%22%2C%20%22toolbarbutton-menu-dropmarker%22%29%3B%0A%09%09var%20lb%20%3D%20options.showLabel%20%21%3D%20undefined%0A%09%09%09%26amp%3B%26amp%3B%20doc.getAnonymousElementByAttribute%28btn%2C%20%22class%22%2C%20%22toolbarbutton-text%22%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%20doc.getAnonymousElementByAttribute%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%0A%0A%0A%0A//%20%u0423%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%u043C%u0438%2C%20%u043E%u0442%2025.10.2014.%20................................%20%0A%28function%20func%28%29%20%7B%0A%20%20%20//%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0433%u0434%u0435%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%0A%20%20%20var%20current%20%3D%20%5B%22about%3Anewtab%22%2C%20%22about%3Ablank%22%2C%20%22chrome%3A//browser/content/bookmarks/bookmarksPanel.xul%22%2C%20%22chrome%3A//sstart/content/sstart.html%22%5D%3B%20%0A%20%20%20%0A%20%20%20const%20background%20%3D%20true%3B%20%20%20%20%20%20//%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%20%u0432%20%u0444%u043E%u043D%u043E%u0432%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%0A%20%20%20const%20nextToCurrent%20%3D%20true%3B%20%20//%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%20%u0440%u044F%u0434%u043E%u043C%20%u0441%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u043E%u0439%0A%20%20%20const%20menuAutoClose%20%3D%20true%3B%20%20%20//%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%20%u043F%u0440%u0438%20%u0443%u0445%u043E%u0434%u0435%20%u043A%u0443%u0440%u0441%u043E%u0440%u0430%0A%20%20%20%0A%20%20%20function%20handleClick%28e%29%20%7B%20%0A%20%20%20%20%20%20var%20target%20%3D%20e.originalTarget%3B%0A%20%20%20%20%20%20var%20sidebar%20%3D%20target.ownerDocument.defaultView.top%20%21%3D%3D%20content%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26amp%3B%26amp%3B%20target.id%20%3D%3D%20%27bookmarks-view-children%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20//if%20%28%20target.localName%20%3D%3D%20%27menuitem%27%20%29%20LOG%28%27%u0423%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%u043C%u0438%20%20%20%27%20+%20target.getAttribute%28%27targetURI%27%29%29%3B%0A%0A%20%20%20%20%20%20if%20%28%20%21sidebar%20%26amp%3B%26amp%3B%20%21target._placesNode%20%29%20return%3B%20//%20%u0441%u0442%u043E%u043F%2C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%2C%20%u043F%u0430%u043F%u043A%u0430%2C%20%u0440%u0430%u0437%u0434%u0435%u043B%u0438%u0442%u0435%u043B%u044C%20%0A%0A%20%20%20%20%20%20//%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%2C%20%u0430%u0434%u0440%u0435%u0441%2C%20%u043F%u0430%u043F%u043A%u0443%20%u0438%20id%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%2C%20%u0434%u0440%u0443%u0433%u0438%u0435%20%u043F%u0435%u0440%u0435%u043C%u0435%u043D%u043D%u044B%u0435%0A%20%20%20%20%20%20if%20%28%20sidebar%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20var%20tree%20%3D%20target.parentNode%3B%0A%20%20%20%20%20%20%20%20%20%20%20var%20box%20%3D%20tree.treeBoxObject%3B%0A%20%20%20%20%20%20%20%20%20%20%20var%20row%20%3D%20box.getRowAt%28e.clientX%2C%20e.clientY%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20var%20node%20%3D%20tree.view.nodeForTreeIndex%28row%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20node%20%3D%20sidebar%20%3F%20node%20%3A%20target._placesNode%2C%0A%20%20%20%20%20%20id%20%3D%20node.itemId%2C%20uri%20%3D%20node.uri%2C%20button%20%3D%20e.button%2C%20type%20%3D%20e.type%2C%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20isFolder%20%3D%20PlacesUtils.nodeIsContainer%28node%29%2C%20isURI%20%3D%20PlacesUtils.nodeIsURI%28node%29%3B%0A%0A%20%20%20%20%20%20//%20%u0434%u0432%u043E%u0439%u043D%u043E%u0439%20%u043A%u043B%u0438%u043A%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%20%u0438%u043B%u0438%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%2C%20%u0440%u0430%u0437%u0434%u0435%u043B%u0438%u0442%u0435%u043B%u044C%20....%0A%20%20%20%20%20%20if%20%28%20button%20%21%3D%3D%201%20%26amp%3B%26amp%3B%20type%20%3D%3D%20%27mouseup%27%20%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20button%20%3D%3D%200%20%26amp%3B%26amp%3B%20func.flag%20%3D%3D%20true%20%26amp%3B%26amp%3B%20isFolder%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20addBookmark%28node%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sidebar%20%26amp%3B%26amp%3B%20tree.view.toggleOpenState%28row%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20button%20%3D%3D%202%20%26amp%3B%26amp%3B%20func.flag%20%3D%3D%20true%20%26amp%3B%26amp%3B%20%21isFolder%20%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20target.ownerDocument.getElementById%28%22placesContext%22%29.hidePopup%28%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20PlacesUtils.bookmarks.removeItem%28id%29%20%7D%20catch%28e%29%20%7B%7D%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%200%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20func.flag%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20func.flag%20%3D%20false%2C%20400%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28%20isFolder%20%29%20return%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u0441%u0442%u043E%u043F%2C%20%u0435%u0441%u043B%u0438%20%u043F%u0430%u043F%u043A%u0430%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%0A%20%20%20%20%20%20if%20%28%20button%20%3D%3D%200%20%29%20window.clearTimeout%28%20func.timer%20%29%3B%20%20//%20%u0441%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u0442%u0430%u0439%u043C%u0435%u0440%20%u0434%u043B%u0438%u043D%u043D%u043E%u0433%u043E%20%u043A%u043B%u0438%u043A%u0430%20%20%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20//%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u043E%20%u0443%u043C%u043E%u043B%u0447%u0430%u043D%u0438%u044E%20%u0434%u043B%u044F%20%u043A%u043B%u0438%u043A%u0430%20%u0438%20%u043E%u0442%u0436%u0430%u0442%u0438%u044F%20....%0A%20%20%20%20%20%20if%20%28%20button%20%21%3D%3D%202%20%26amp%3B%26amp%3B%20/click%7Cmouseup/.test%28type%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20e.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u043B%u0435%u0432%u044B%u0439%20%u0434%u043B%u0438%u043D%u043D%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%0A%20%20%20%20%20%20if%20%28%20button%20%3D%3D%200%20%26amp%3B%26amp%3B%20type%20%3D%3D%20%27mousedown%27%20%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20func.timer%20%3D%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gBrowser.loadURI%28%20uri%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20400%20%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20/*%0A%20%20%20%20%20%20//%20%u043B%u0435%u0432%u044B%u0439%20%u0434%u043B%u0438%u043D%u043D%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0442%u0435%u043A%u0443%u0449%u0443%u044E%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20%u0432%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20%u043F%u043E%u0434%20%u043D%u0430%u0436%u0430%u0442%u043E%u0439%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u043E%u0439%20....%0A%20%20%20%20%20%20if%20%28%20button%20%3D%3D%200%20%26amp%3B%26amp%3B%20type%20%3D%3D%20%27mousedown%27%20%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20func.loadBook%20%3D%20true%3B%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20func.timer%20%3D%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20func.loadBook%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20addBookmark%28node.parent%2C%20id%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20400%20%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20*/%20%20%20%20%0A%20%20%20%20%20%20//%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0438%u043B%u0438%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20....%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28%20button%20%3D%3D%200%20%26amp%3B%26amp%3B%20type%20%3D%3D%20%27mouseup%27%20%26amp%3B%26amp%3B%20func.loadBook%20%26amp%3B%26amp%3B%20isURI%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%28%20uri.startsWith%28%22javascript%22%29%20%7C%7C%20current.indexOf%28content.location.href%29%20%21%3D%3D%20-1%20%7C%7C%20e.ctrlKey%20%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%3F%20gBrowser.loadURI%28%20uri%20%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%3A%20gBrowser.loadOneTab%28%20uri%2C%20%7BrelatedToCurrent%3A%20nextToCurrent%2C%20inBackground%3A%20background%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20referrerURI%3A%20null%20%7D%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20/*%20gBrowser.loadURI%28%20uri%20%29%3B%20*/%0A%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%0A%20%20%20%20%0A%20%20%20%20%20%20/*//%20%u0441%u0440%u0435%u0434%u043D%u0438%u0439%20%u043A%u043B%u0438%u043A%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20....%0A%20%20%20%20%20%20if%20%28%20button%20%3D%3D%201%20%26amp%3B%26amp%3B%20type%20%3D%3D%20%27click%27%20%26amp%3B%26amp%3B%20isURI%20%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20gBrowser.loadURI%28%20uri%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20*/%0A%20%20%20%20%20%20//%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u0441%u0435%20%u043C%u0435%u043D%u044E%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%20%u043F%u0440%u0438%20%u0443%u0445%u043E%u0434%u0435%20%u043A%u0443%u0440%u0441%u043E%u0440%u0430%20....%20%0A%20%20%20%20%20%20var%20menu%20%3D%20target.parentNode%3B%0A%20%20%20%20%20%20if%20%28%20%21menuAutoClose%20%7C%7C%20%21menu%20%7C%7C%20menu.localName%20%21%3D%3D%20%27menupopup%27%20%7C%7C%20type%20%21%3D%3D%20%27click%27%20%7C%7C%20button%20%3D%3D%202%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20menu.onmouseover%20%3D%20function%28%29%20menu.f%20%3D%20true%3B%0A%20%20%20%20%20%20menu.onmouseleave%20%3D%20function%28%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20menu.f%20%3D%20false%3B%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20menu.f%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20for%20%28%20var%20node%20%3D%20menu%3B%20node%3B%20node%20%3D%20node.parentNode%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20node.nodeName%20%3D%3D%20%27menupopup%27%20%26amp%3B%26amp%3B%20node.hidePopup%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20menu.onmouseleave%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%20%7D%2C%20500%29%3B%20%20%20%20%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%7D%3B%0A%20%20%20%5B%22click%22%2C%20%22dragstart%22%2C%20%22mouseup%22%2C%20%22mousedown%22%5D%0A%20%20%20.forEach%28function%28type%29%20addEventListener%28type%2C%20handleClick%2C%20true%29%20%29%3B%0A%20%20%20%0A%20%20%20%0A%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0432%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20%u0432%20%u0443%u043A%u0430%u0437%u0430%u043D%u043D%u043E%u0439%20%u043F%u0430%u043F%u043A%u0435%20....%0A%20%20%20function%20addBookmark%28folder%2C%20id%29%20%7B%0A%20%20%20%20%20%20var%20title%20%3D%20gBrowser.mCurrentTab.label%3B%0A%20%20%20%20%20%20var%20folderId%20%3D%20PlacesUtils.getConcreteItemId%28folder%29%3B%0A%20%20%20%20%20%20var%20index%20%3D%20id%20%3F%20PlacesUtils.bookmarks.getItemIndex%28id%29%20+%201%20%3A%200%3B%0A%20%20%20%20%20%20var%20readOnlyFolder%20%3D%20PlacesUtils.nodeIsQuery%28folder%29%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20PlacesUtils.annotations.itemHasAnnotation%28folderId%2C%20PlacesUtils.LMANNO_FEEDURI%29%3B%0A%20%20%20%20%20%20if%20%28%20%21readOnlyFolder%20%29%0A%20%20%20%20%20%20%20%20%20%20%20PlacesUtils.bookmarks.insertBookmark%28folderId%2C%20gBrowser.currentURI%2C%20index%2C%20title%29%3B%0A%0A%20%20%20%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%0A%20%20%20%20%20%20if%20%28%20id%20%29%20return%3B%0A%20%20%20%20%20%20var%20al%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0A%20%20%20%20%20%20if%20%28%20readOnlyFolder%20%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20al.showAlertNotification%28%22chrome%3A//global/skin/icons/error-16.png%22%2C%20folder.title%2C%20%22%u041D%u0435%20%u043F%u043E%u0434%u0434%u0435%u0440%u0436%u0438%u0432%u0430%u0435%u0442%u0441%u044F%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20icon%20%3D%20gBrowser.mCurrentTab.image%20%7C%7C%20%22chrome%3A//global/skin/icons/information-16.png%22%3B%0A%20%20%20%20%20%20al.showAlertNotification%28icon%2C%20%22%u0414%u043E%u0431%u0430%u0432%u0438%u043B%20%u0432%20%u043F%u0430%u043F%u043A%u0443%20%22%20+%20%28folder.title%20%7C%7C%20%22%28%u0431%u0435%u0437%20%u0437%u0430%u0433%u043E%u043B%u043E%u0432%u043A%u0430%29%22%29%20+%20%22%3A%22%2C%20title.slice%280%2C%20100%29%29%3B%0A%20%20%20%7D%3B%20%20%20%20%0A%7D%29%28%29%3B%0A%0A%0A%0A//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%22%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0432%u0441%u0435%u0445%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%20%u0432%20%u043C%u0435%u043D%u044E%20%22%u0417%u0430%u043A%u043B%u0430%u0434%u043A%u0438%22%2C%20%u043E%u0442%2002.08.2014.%20................................%0A%28function%28%29%20%7B%0A%20%20%20//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u0432%20%u043C%u0435%u043D%u044E%20....%0A%20%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%20%20%20%0A%20%20%20menuitem.setAttribute%28%22label%22%2C%20%22%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0432%u0441%u0435%u0445%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%29%3B%0A%20%20%20var%20sep%20%3D%20document.getElementById%28%22organizeBookmarksSeparator%22%29%3B%20%0A%20%20%20sep.parentNode.insertBefore%28%20menuitem%2C%20sep%20%29%3B%20%20%20%0A%20%20%20addDestructor%28function%28%29%20%7B%20sep.parentNode.removeChild%28%20menuitem%20%29%20%7D%29%3B%0A%20%20%20addEventListener%28%22click%22%2C%20function%28%29%20chooseBookmarks%281%29%2C%20false%2C%20menuitem%20%29%3B%20//%20%u0435%u0441%u043B%u0438%20%u043A%u043B%u0438%u043A%20%u043D%u0430%20%u043F%u0443%u043D%u043A%u0442%u0435%20%u043C%u0435%u043D%u044E%20%20%20%20%20%0A%20%20%20%0A%0A%20%20%20//%20%u041F%u0435%u0440%u0435%u0431%u0440%u0430%u0442%u044C%20%u0432%u0441%u0435%20http%28s%29%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20....%20%0A%20%20%20function%20chooseBookmarks%28%20id%20%29%20%7B%0A%20%20%20%20%20%20var%20folder%20%3D%20PlacesUtils.getFolderContents%28%20id%20%29.root%3B%0A%20%20%20%0A%20%20%20%20%20%20folder.QueryInterface%28Ci.nsINavHistoryContainerResultNode%29%3B%0A%20%20%20%20%20%20folder.containerOpen%20%3D%20true%3B%0A%0A%20%20%20%20%20%20for%20%28%20var%20i%20%3D%200%3B%20i%20%26lt%3B%20folder.childCount%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20child%20%3D%20folder.getChild%28i%29%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20PlacesUtils.nodeIsFolder%28%20child%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%3F%20chooseBookmarks%28%20child.itemId%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%3A%20child.uri.startsWith%28%22http%22%29%20%26amp%3B%26amp%3B%20child.icon%20%3D%3D%20%27%27%20%26amp%3B%26amp%3B%20getSiteFavicon%28%20child.uri%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20folder.containerOpen%20%3D%20false%3B%0A%20%20%20%7D%3B%0A%0A%0A%20%20%20//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u043A%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%u043C%20%u0441%20%u043E%u0434%u0438%u043D%u0430%u043A%u043E%u0432%u044B%u043C%u0438%20%u0430%u0434%u0440%u0435%u0441%u0430%u043C%u0438%20....%20%20%0A%20%20%20function%20setBookFavicon%28%20faviconURI%2C%20siteURI%20%29%20%7B%0A%20%20%20%20%20%20var%20iconURI%20%3D%20Services.io.newURI%28%20faviconURI%2C%20null%2C%20null%29%3B%0A%20%20%20%20%20%20var%20bookmarkURI%20%3D%20Services.io.newURI%28%20siteURI%2C%20null%2C%20null%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20faviconService%20%3D%20Cc%5B%22@mozilla.org/browser/favicon-service%3B1%22%5D.getService%28Ci.mozIAsyncFavicons%29%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20faviconService.setAndFetchFaviconForPage%28%0A%20%20%20%20%20%20%20%20%20bookmarkURI%2C%0A%20%20%20%20%20%20%20%20%20iconURI%2C%0A%20%20%20%20%20%20%20%20%20false%2C%0A%20%20%20%20%20%20%20%20%20faviconService.FAVICON_LOAD_NON_PRIVATE%0A%20%20%20%20%20%20%29%0A%20%20%20%7D%3B%0A%20%20%20%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20%u0438%20%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0443%20%u0438%u043A%u043E%u043D%u043A%u0438%20....%20%0A%20%20%20function%20getSiteFavicon%28%20siteURI%20%29%20%7B%0A%20%20%20%20%20%20var%20hostURI%20%3D%20%22http%3A//%22%20+%20siteURI.split%28/%5C/+/g%29%5B1%5D%20+%20%22/%22%3B%0A%20%20%20%20%20%20var%20faviconURI%20%3D%20hostURI%20+%20%22favicon.ico%22%3B%20%20//%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%2C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0438%u0437%20%u0441%u0430%u0439%u0442%u0430%0A%0A%20%20%20%20%20%20if%20%28%20getSiteFavicon%5BsiteURI%5D%20%29%20return%3B%20%20%20%20%20//%20%u0441%u0442%u043E%u043F%20%u0435%u0441%u043B%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%20%u0441%20%u0442%u0430%u043A%u0438%u043C%20%u0430%u0434%u0440%u0435%u0441%u043E%u043C%20%u0443%u0436%u0435%20%u0431%u044B%u043B%u0430%0A%20%20%20%20%20%20getSiteFavicon%5BsiteURI%5D%20%3D%20true%3B%20%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0438%u0437%20%u0434%u043E%u043A%u0443%u043C%u0435%u043D%u0442%u0430%20%u0441%u0430%u0439%u0442%u0430%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%0A%20%20%20%20%20%20var%20xhr%20%3D%20new%20XMLHttpRequest%28%29%3B%0A%20%20%20%20%20%20xhr.open%28%22GET%22%2C%20siteURI%2C%20true%29%3B%0A%20%20%20%20%20%20xhr.responseType%20%3D%20%22document%22%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20xhr.onload%20%3D%20xhr.onerror%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20var%20doc%20%3D%20xhr.responseXML%3B%0A%20%20%20%20%20%20%20%20%20if%20%28%20doc%20%21%3D%3D%20null%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20links%20%3D%20doc.getElementsByTagName%28%22link%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B...links%5D.forEach%28function%28link%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20/%28%3F%3A%5E%7C%5Cs%29icon%28%3F%3A%5Cs%7C%24%29/.test%28link.rel.toLowerCase%28%29%29%20%29%20faviconURI%20%3D%20link.href%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20setBookFavicon%28%20faviconURI%2C%20siteURI%20%29%3B%20%20//%20%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0443%20%u0438%u043A%u043E%u043D%u043A%u0438%20%20%20%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20xhr.send%28%29%3B%0A%20%20%20%7D%3B%20%20%20%0A%20%20%20%20%20%0A%7D%29%28%29%3B%0A%0A%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bif%28%21event.target%29%20%7B%20//%20Button%27s%20hotkey%20pressed%0A%09if%28this.bookmarks.initialized%29%0A%09%09this.open%20%3D%20%21this.open%3B%0A%09else%0A%09%09this.bookmarks.init%28%29%3B%0A%7D%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

Добавлено 01-03-2016 22:31:42

bunda1 пишет

Не понятно.

как передать или что я имел ввиду?)))

Отредактировано emlen (01-03-2016 22:32:50)


SeaMonkey 2.39 forever

Отсутствует

 

№979301-03-2016 22:43:48

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Custom Buttons

emlen пишет

чет видимо не то я сделал, здеся куда кидать:

В самом внизу:

Выделить код

Код:

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%3E%u0417%u0430%u043A%u043B%u0430%u0434%u043E%u0447%u043A%u0438%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAHJklEQVRYhc2XW2wU1x3GJ6lJINSQLpxUiGLABMcUO7Zh8QWDTLhEyhsCZBl4BCREeOEO5o642xIqeYz6UClCQg3pU8RFBgVsuvbMenf2NrO3mb2vx14bI4tKPFT69cU7wi2wVlupPdJfu3vm7Pm+739+Z6WVpP+34XA4dgghEEKwaNEimpub2bVrF52dnXR3d//b1dXV9bi7u3tHSQNCCA5++y1/+eknDMPgvzFev36Nx+Ohq6vr8bQMvK2mmzT4+fx/qX9a8/4uCCG4dOkSHR0ddgkhGB8fZ2JighcvXjAxMcHExIQ99/LlS8bHxxkdHUVdNo+/3/2jXeqyeViWxatXrwiHw6W7IITg6NGjtLW10dbWxpYtWxBCYFkWIyMjFAoFRkdHsSyLfD6PZVmMjY0xNjaG1+tFXurgb7u/tkte6iAUCjE6OsrIyAhdXV28T3/h/Pnz32qgUChgWRaWZZHJZMjn8xQKBXK5HJlMBsuycLvd9FV8ysv2TbzYUs/L9k30VXzKwMAA2WwWy7K4efPmuw3s3H+aOXPmsHv3bpxOJ62trWzevBkhBGNjY6TTaYaHhykUCqTTabLZLENDQ3Y6RVF4vHAu1tb15Nt+j7V1PY8XzsXlcpHNZsnn86UN/OFPD+gZiAKwYsUKNm3ahBDCFn4zcSaTIZVKkclkGBkZQZZlfl5QTuqbZsymz0l908zPC8qRZdk2f+PGjfceweZ3GSgUCqRSKVKpFMlkkpGREfL5PLlcjlwux/DwMLIs8+NnswlvXEWwroLwxlX8+NlsFEWxj+369evvNTDH4XCwc+dOqquraWlpYePGjQgh7NRF8BKJBJlMhmQyydDQELlcjv7+fn6YNwt1bQ3KF79FXVvDD/Nm0d/fTzqdJp1Oc+3atdIQHjp0iNbWVlpbW/nqq69sA6ZpYhgGhmGQz+dJJBJks1lM08Q0TXp7e/l+7sf0O6t4tuQ39Dur+H7uxzx//txm4OrVq6Uh7OjooKGhgaamJjZs2IAQgmw2SyaTsQWz2ax9/qZpkk6ncblcfFc+g1++XMqjBbP55culfFc+g6dPn9qGr1y5Mn0Iq6qqaGtrQwjB0NAQyWSSRCJBPB4nFouRSqWIxWIYhkEsFqO3t5fuT8p4+MXv7Or+pAyXy0U6nSaRSHD58uXpQ1hVVcX69esRQthnXiQ/kUhgmqY9F4vF6Ovr4+rMD3lYV8WZMomHdVVcnfkhfX19GIZBMpnk0qVLpSFsb29n+fLlOJ1O1q1bZxuIRqOYpkksFiMSidjJTdMkmUzy7NkzLnz0AWfKJDo7OzlTJnHhow948uQJ0WiUZDLJxYsXS0N48OBBGhsbaWxspLW1FSEEsVgMTdOIRCLE43Hi8bhtSNM0otEoPT09nCmTuH37Nnfu3OHWrVucKZPo6enBMAzi8TgXLlwoDeGOHTuoqalh1apVrF27FiEEkUiEcDiMrusYhkE0GiUcDhMOhzFNE13XkWWZe/fucf/+fWRZ5sGDB9y9exeXy0U4HCaVSnH+/PnpQ7hs2TJaWloQQqDrOvF4nEgkQiAQIB6PEwwGMQzD7oCmabhcLnw+H8FgEI/Hg8fjsT8nk0nOnTs3fQgrKytpbm5GCGEnjkQi9jH4/X5isRjRaNSeCwQCRCIRotGoPe/3+wkEAhiGwdmzZ0tDuH37diorK6mrq6OpqQkhhA1cIBBA0zT7va7rU8RCoRChUAi/34/P5yMUChEIBAgGg2iaxunTp0tDuH//fhoaGmhoaKCxsREhBJqmEQwGUVUVXdftjXVdR9d1O7nf78fr9RIIBOzXQCBgd6uzs7M0hNu2baO6upra2lrWrFmDEMJubzGVruuoqjrFWFHozeRFg7quo2kap06dmj6ES5Yswel0IoQgFArh9XoJBoP2xkUDxQ6oqorf77cFfT4fPp8PTdPQNI1QKMTJkyenD+HixYtZvXo1QghUVUVRFEKhkE24oigEg0HcbjdutxtVVfH5fLjdbrtbxW54vV40TePEiROlIdy6dSsVFRWsXLmShoYG+xoqioKiKPj9fmRZZnBwEJ/Ph6IoBAIBBgcH7eeKouD1evH7/fZ6r9fL8ePH32tAEkKwb98+amtrqa2tnWKgmMjr9eJ2uxkcHERVVTwej22g2A1ZlnG73QwMDKAoiv1bcOzYsdIG9u7dS01NDTU1NdTX19sMqKqKqqrIsjwlaX9/P263G5/Px8DAgG2yeGxutxuPx/NOA7+SJGmGJEkzJUn6tRCCPXv2UFdXZ5cQYgrpoVCIwcFBNE2bAlnxrnu93ik3objm0aNHHD58+NGk1oxJbWmWJEkOSZIWSpJU5XA4/vy2f0ZHjhz5j+vAgQN/bW9v3z+p5ZjUttOXS5I0f/JhpSRJ1ZIk1UiSVC9J0mpJkpySJK2ZZjknv1M/uUf15J4LJzXK3+jC/3b8AzIAOcZQALNOAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3Evar%20%5Bimg%5D%20%3D%20document.getAnonymousNodes%28self%29%0Aimg.style.width%20%3D%20%2218px%22%3B%0Aimg.style.height%20%3D%20%2218px%22%3B%0A%0Aif%20%28%20this.hasAttribute%28%22initialized%22%29%20%29%20return%3B%0A%0A//%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-2014%0A//%20version%200.1.1%20-%202014-05-20%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%09var%20prefs%20%3D%20Services.prefs%3B%0A%09%09if%28%21prefs.getBoolPref%28%22intl.locale.matchOS%22%29%29%20%7B%0A%09%09%09var%20locale%20%3D%20prefs.getCharPref%28%22general.useragent.locale%22%29%3B%0A%09%09%09if%28locale.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%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%20..............%0A//this.tooltipText%20%3D%20%22%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u044E%5C%0A//%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5CnCtrl-%u041B%3A%20%u0421%u043A%u0440%u044B%u0442%u044C/%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%5C%0A%20%20//%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%u041F%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u0435%u0434%u0436%u0435%u0440%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%3B%0A%0A%0Athis.ondblclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20if%28e.target%20%3D%3D%20this%20%26amp%3B%26amp%3B%20e.button%20%3D%3D%200%29%7B%0A%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20PlacesCommandHook.showBookmarksManager%28%27AllBookmarks%27%29%3B%0A%20%20%20%20%7D%20%20%20%0A%7D%3B%0A%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%09if%28e.target%20%21%3D%20this%29%0A%09%09return%3B%0A%09%0A%09%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20....%20%20%20%20%0A%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26amp%3B%26amp%3B%20%21e.ctrlKey%20%26amp%3B%26amp%3B%20%21e.shiftKey%20%26amp%3B%26amp%3B%20%21e.altKey%20%26amp%3B%26amp%3B%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20PlacesCommandHook.bookmarkCurrentPage%28true%2C%20PlacesUtils.toolbarFolderId%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%7D%09%09%0A%09%09%0A%09%09%0A%09%09%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%20%28e.shiftKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%29%29%0A%09%09this.bookmarks.changeFolder%28%29%3B%0A%09/*%20else%20if%28e.button%20%3D%3D%201%20%7C%7C%20e.button%20%3D%3D%200%20%26amp%3B%26amp%3B%20%28e.ctrlKey%29%29%0A%09%09var%20bar%20%3D%20document.getElementById%28%22PersonalToolbar%22%29%3B%0A%20%20%20%20%20%20%20%20%20%09bar.collapsed%20%3D%20%21bar.collapsed%3B%0A%20%20%20%20%20%20%20%20%20%09document.persist%28%22PersonalToolbar%22%2C%20%21bar.collapsed%29%3B%09*/%09%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%20%28e.ctrlKey%20%7C%7C%20e.shiftKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%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.some%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%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%20node.open%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%20Application.prefs.getValue%28this.pref%2C%20%22%22%29%3B%0A%09%7D%2C%0A%09set%20folder%28val%29%20%7B%0A%09%09Application.prefs.setValue%28this.pref%2C%20String%28val%29%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%20Application.prefs.getValue%28this.titlePref%2C%20%22%22%29%3B%0A%09%7D%2C%0A%09set%20folderTitle%28val%29%20%7B%0A%09%09Application.prefs.setValue%28this.titlePref%2C%20val%29%3B%0A%09%7D%2C%0A%09get%20wm%28%29%20%7B%0A%09%09delete%20this.wm%3B%0A%09%09return%20this.wm%20%3D%20Components.classes%5B%22@mozilla.org/appshell/window-mediator%3B1%22%5D%0A%09%09%09.getService%28Components.interfaces.nsIWindowMediator%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%20%22PlacesMenuDNDHandler.onDragOver%28event%29%3B%22%29%3B%0A%09%09btn.setAttribute%28%22ondragexit%22%2C%20%20%22PlacesMenuDNDHandler.onDragExit%28event%29%3B%22%29%3B%0A%09//btn.setAttribute%28%22onmouseleave%22%2C%20%22this.mo%20%3D%20false%3B%20setTimeout%28function%28mp%29%20%7B%20if%20%28%20%21mp.mo%20%29%20mp.hidePopup%28%29%20%7D%2C%20200%2C%20this%29%22%29%3B%0A%20%20%20%20%20%20%20%20//btn.setAttribute%28%22onmouseover%22%2C%20%22this.mo%20%3D%20true%22%29%3B%0A%09%09//btn.setAttribute%28%22ondrop%22%2C%20%20%20%20%20%20%22PlacesMenuDNDHandler.onDrop%28event%29%3B%22%29%3B%0A%09%09btn.setAttribute%28%22ondrop%22%2C%20%20%20%20%20%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%20document.createElement%28%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%09var%20placeURI%20%3D%20folder.substr%280%2C%206%29%20%3D%3D%20%22place%3A%22%0A%09%09%09%3F%20folder%0A%09%09%09%3A%20%22place%3Afolder%3D%22%20+%20folder%20+%20%22%26amp%3BexcludeItems%3D0%26amp%3BexpandQueries%3D0%22%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%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%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%09btn._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//%20Add%20%22Open%20All%20in%20Tabs%22%20menuitem%0A%09%09try%20%7B%0A%09%09%09btn._placesView._mayAddCommandsItems.call%28%7B%0A%09%09%09%09_rootElt%3A%20null%2C%0A%09%09%09%09__proto__%3A%20btn._placesView%0A%09%09%09%7D%2C%20btn.firstChild%29%3B%0A%09%09%7D%0A%09%09catch%28e%29%20%7B%0A%09%09%09PlacesViewBase.prototype._mayAddCommandsItems%28btn.firstChild%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09destroy%3A%20function%28%29%20%7B%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%20%22%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u044E%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5CnCtrl-%u041B%3A%20%u0421%u043A%u0440%u044B%u0442%u044C/%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%u041F%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u0435%u0434%u0436%u0435%u0440%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%3B//title%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.button.firstChild%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/%28place%3Afolder%3D%29%5Cw+/%2C%20%22%241%22%20+%20folder%29%0A%09%09%29%3B%0A%09%7D%2C%0A%09selectFolder%3A%20function%28%29%20%7B%0A%09%09var%20winType%20%3D%20this.button.id%20+%20%22%3Adialog%22%3B%0A%09%09var%20win%20%3D%20this.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%20Application.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%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%20100%2C%20this.button%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%20this.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%09btn%20%26amp%3B%26amp%3B%20btn.bookmarks.initWithFolder%28folder%29%3B%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%20Number%28folder%29%3B%0A%09%09var%20bmsvc%20%3D%20Components.classes%5B%22@mozilla.org/browser/nav-bookmarks-service%3B1%22%5D%0A%09%09%09.getService%28Components.interfaces.nsINavBookmarksService%29%3B%0A%09%09switch%28folder%29%20%7B%0A%09%09%09case%20%22BOOKMARKS_MENU%22%3A%20%20%20%20return%20bmsvc.bookmarksMenuFolder%3B%0A%09%09%09case%20%22TOOLBAR%22%3A%20%20%20%20%20%20%20%20%20%20%20return%20bmsvc.toolbarFolder%3B%0A%09%09%09case%20%22UNFILED_BOOKMARKS%22%3A%20return%20bmsvc.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%20%20%20%20var%20ip%20%3D%20new%20InsertionPoint%28folder%2C%20PlacesUtils.bookmarks.DEFAULT_INDEX%2C%20Ci.nsITreeView.DROP_ON%29%3B%0A%09%09%20%20%20%20PlacesControllerDragHelper.onDrop%28ip%2C%20event.dataTransfer%29%3B%0A%09%09%20%20%20%20event.stopPropagation%28%29%3B%0A%09%20%20%20%20%7D%0A%09%20%20%20%20catch%28e%29%20%7B%0A%09%20%20%20%20%09Components.utils.reportError%28e%29%3B%0A%09%20%20%20%20%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%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%09var%20dm%20%3D%20options.hideDropMarker%0A%09%09%09%26amp%3B%26amp%3B%20doc.getAnonymousElementByAttribute%28btn%2C%20%22class%22%2C%20%22toolbarbutton-menu-dropmarker%22%29%3B%0A%09%09var%20lb%20%3D%20options.showLabel%20%21%3D%20undefined%0A%09%09%09%26amp%3B%26amp%3B%20doc.getAnonymousElementByAttribute%28btn%2C%20%22class%22%2C%20%22toolbarbutton-text%22%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%20doc.getAnonymousElementByAttribute%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%0A%0A%0A%0A//%20%u0423%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%u043C%u0438%2C%20%u043E%u0442%2025.10.2014.%20................................%20%0A%28function%20func%28%29%20%7B%0A%20%20%20//%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0433%u0434%u0435%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%0A%20%20%20var%20current%20%3D%20%5B%22about%3Anewtab%22%2C%20%22about%3Ablank%22%2C%20%22chrome%3A//browser/content/bookmarks/bookmarksPanel.xul%22%2C%20%22chrome%3A//sstart/content/sstart.html%22%5D%3B%20%0A%20%20%20%0A%20%20%20const%20background%20%3D%20true%3B%20%20%20%20%20%20//%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%20%u0432%20%u0444%u043E%u043D%u043E%u0432%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%0A%20%20%20const%20nextToCurrent%20%3D%20true%3B%20%20//%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%20%u0440%u044F%u0434%u043E%u043C%20%u0441%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u043E%u0439%0A%20%20%20const%20menuAutoClose%20%3D%20true%3B%20%20%20//%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u044E%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%20%u043F%u0440%u0438%20%u0443%u0445%u043E%u0434%u0435%20%u043A%u0443%u0440%u0441%u043E%u0440%u0430%0A%20%20%20%0A%20%20%20function%20handleClick%28e%29%20%7B%20%0A%20%20%20%20%20%20var%20target%20%3D%20e.originalTarget%3B%0A%20%20%20%20%20%20var%20sidebar%20%3D%20target.ownerDocument.defaultView.top%20%21%3D%3D%20content%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26amp%3B%26amp%3B%20target.id%20%3D%3D%20%27bookmarks-view-children%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20//if%20%28%20target.localName%20%3D%3D%20%27menuitem%27%20%29%20LOG%28%27%u0423%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%u043C%u0438%20%20%20%27%20+%20target.getAttribute%28%27targetURI%27%29%29%3B%0A%0A%20%20%20%20%20%20if%20%28%20%21sidebar%20%26amp%3B%26amp%3B%20%21target._placesNode%20%29%20return%3B%20//%20%u0441%u0442%u043E%u043F%2C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%2C%20%u043F%u0430%u043F%u043A%u0430%2C%20%u0440%u0430%u0437%u0434%u0435%u043B%u0438%u0442%u0435%u043B%u044C%20%0A%0A%20%20%20%20%20%20//%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%2C%20%u0430%u0434%u0440%u0435%u0441%2C%20%u043F%u0430%u043F%u043A%u0443%20%u0438%20id%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%2C%20%u0434%u0440%u0443%u0433%u0438%u0435%20%u043F%u0435%u0440%u0435%u043C%u0435%u043D%u043D%u044B%u0435%0A%20%20%20%20%20%20if%20%28%20sidebar%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20var%20tree%20%3D%20target.parentNode%3B%0A%20%20%20%20%20%20%20%20%20%20%20var%20box%20%3D%20tree.treeBoxObject%3B%0A%20%20%20%20%20%20%20%20%20%20%20var%20row%20%3D%20box.getRowAt%28e.clientX%2C%20e.clientY%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20var%20node%20%3D%20tree.view.nodeForTreeIndex%28row%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20node%20%3D%20sidebar%20%3F%20node%20%3A%20target._placesNode%2C%0A%20%20%20%20%20%20id%20%3D%20node.itemId%2C%20uri%20%3D%20node.uri%2C%20button%20%3D%20e.button%2C%20type%20%3D%20e.type%2C%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20isFolder%20%3D%20PlacesUtils.nodeIsContainer%28node%29%2C%20isURI%20%3D%20PlacesUtils.nodeIsURI%28node%29%3B%0A%0A%20%20%20%20%20%20//%20%u0434%u0432%u043E%u0439%u043D%u043E%u0439%20%u043A%u043B%u0438%u043A%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%20%u0438%u043B%u0438%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%2C%20%u0440%u0430%u0437%u0434%u0435%u043B%u0438%u0442%u0435%u043B%u044C%20....%0A%20%20%20%20%20%20if%20%28%20button%20%21%3D%3D%201%20%26amp%3B%26amp%3B%20type%20%3D%3D%20%27mouseup%27%20%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20button%20%3D%3D%200%20%26amp%3B%26amp%3B%20func.flag%20%3D%3D%20true%20%26amp%3B%26amp%3B%20isFolder%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20addBookmark%28node%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sidebar%20%26amp%3B%26amp%3B%20tree.view.toggleOpenState%28row%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20button%20%3D%3D%202%20%26amp%3B%26amp%3B%20func.flag%20%3D%3D%20true%20%26amp%3B%26amp%3B%20%21isFolder%20%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20target.ownerDocument.getElementById%28%22placesContext%22%29.hidePopup%28%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20PlacesUtils.bookmarks.removeItem%28id%29%20%7D%20catch%28e%29%20%7B%7D%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%200%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20func.flag%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20func.flag%20%3D%20false%2C%20400%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28%20isFolder%20%29%20return%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u0441%u0442%u043E%u043F%2C%20%u0435%u0441%u043B%u0438%20%u043F%u0430%u043F%u043A%u0430%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%0A%20%20%20%20%20%20if%20%28%20button%20%3D%3D%200%20%29%20window.clearTimeout%28%20func.timer%20%29%3B%20%20//%20%u0441%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u0442%u0430%u0439%u043C%u0435%u0440%20%u0434%u043B%u0438%u043D%u043D%u043E%u0433%u043E%20%u043A%u043B%u0438%u043A%u0430%20%20%20%20%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20//%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u043E%20%u0443%u043C%u043E%u043B%u0447%u0430%u043D%u0438%u044E%20%u0434%u043B%u044F%20%u043A%u043B%u0438%u043A%u0430%20%u0438%20%u043E%u0442%u0436%u0430%u0442%u0438%u044F%20....%0A%20%20%20%20%20%20if%20%28%20button%20%21%3D%3D%202%20%26amp%3B%26amp%3B%20/click%7Cmouseup/.test%28type%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20e.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u043B%u0435%u0432%u044B%u0439%20%u0434%u043B%u0438%u043D%u043D%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%0A%20%20%20%20%20%20if%20%28%20button%20%3D%3D%200%20%26amp%3B%26amp%3B%20type%20%3D%3D%20%27mousedown%27%20%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20func.timer%20%3D%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gBrowser.loadURI%28%20uri%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20400%20%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20/*%0A%20%20%20%20%20%20//%20%u043B%u0435%u0432%u044B%u0439%20%u0434%u043B%u0438%u043D%u043D%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0442%u0435%u043A%u0443%u0449%u0443%u044E%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20%u0432%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20%u043F%u043E%u0434%20%u043D%u0430%u0436%u0430%u0442%u043E%u0439%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u043E%u0439%20....%0A%20%20%20%20%20%20if%20%28%20button%20%3D%3D%200%20%26amp%3B%26amp%3B%20type%20%3D%3D%20%27mousedown%27%20%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20func.loadBook%20%3D%20true%3B%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20func.timer%20%3D%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20func.loadBook%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20addBookmark%28node.parent%2C%20id%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20400%20%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20*/%20%20%20%20%0A%20%20%20%20%20%20//%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0438%u043B%u0438%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20....%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28%20button%20%3D%3D%200%20%26amp%3B%26amp%3B%20type%20%3D%3D%20%27mouseup%27%20%26amp%3B%26amp%3B%20func.loadBook%20%26amp%3B%26amp%3B%20isURI%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%28%20uri.startsWith%28%22javascript%22%29%20%7C%7C%20current.indexOf%28content.location.href%29%20%21%3D%3D%20-1%20%7C%7C%20e.ctrlKey%20%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%3F%20gBrowser.loadURI%28%20uri%20%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%3A%20gBrowser.loadOneTab%28%20uri%2C%20%7BrelatedToCurrent%3A%20nextToCurrent%2C%20inBackground%3A%20background%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20referrerURI%3A%20null%20%7D%20%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20/*%20gBrowser.loadURI%28%20uri%20%29%3B%20*/%0A%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%0A%20%20%20%20%0A%20%20%20%20%20%20/*//%20%u0441%u0440%u0435%u0434%u043D%u0438%u0439%20%u043A%u043B%u0438%u043A%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20....%0A%20%20%20%20%20%20if%20%28%20button%20%3D%3D%201%20%26amp%3B%26amp%3B%20type%20%3D%3D%20%27click%27%20%26amp%3B%26amp%3B%20isURI%20%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20gBrowser.loadURI%28%20uri%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20*/%0A%20%20%20%20%20%20//%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u0441%u0435%20%u043C%u0435%u043D%u044E%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%20%u043F%u0440%u0438%20%u0443%u0445%u043E%u0434%u0435%20%u043A%u0443%u0440%u0441%u043E%u0440%u0430%20....%20%0A%20%20%20%20%20%20var%20menu%20%3D%20target.parentNode%3B%0A%20%20%20%20%20%20if%20%28%20%21menuAutoClose%20%7C%7C%20%21menu%20%7C%7C%20menu.localName%20%21%3D%3D%20%27menupopup%27%20%7C%7C%20type%20%21%3D%3D%20%27click%27%20%7C%7C%20button%20%3D%3D%202%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20menu.onmouseover%20%3D%20function%28%29%20menu.f%20%3D%20true%3B%0A%20%20%20%20%20%20menu.onmouseleave%20%3D%20function%28%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20menu.f%20%3D%20false%3B%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%20menu.f%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20for%20%28%20var%20node%20%3D%20menu%3B%20node%3B%20node%20%3D%20node.parentNode%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20node.nodeName%20%3D%3D%20%27menupopup%27%20%26amp%3B%26amp%3B%20node.hidePopup%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20menu.onmouseleave%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%20%7D%2C%20500%29%3B%20%20%20%20%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%7D%3B%0A%20%20%20%5B%22click%22%2C%20%22dragstart%22%2C%20%22mouseup%22%2C%20%22mousedown%22%5D%0A%20%20%20.forEach%28function%28type%29%20addEventListener%28type%2C%20handleClick%2C%20true%29%20%29%3B%0A%20%20%20%0A%20%20%20%0A%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%u0432%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20%u0432%20%u0443%u043A%u0430%u0437%u0430%u043D%u043D%u043E%u0439%20%u043F%u0430%u043F%u043A%u0435%20....%0A%20%20%20function%20addBookmark%28folder%2C%20id%29%20%7B%0A%20%20%20%20%20%20var%20title%20%3D%20gBrowser.mCurrentTab.label%3B%0A%20%20%20%20%20%20var%20folderId%20%3D%20PlacesUtils.getConcreteItemId%28folder%29%3B%0A%20%20%20%20%20%20var%20index%20%3D%20id%20%3F%20PlacesUtils.bookmarks.getItemIndex%28id%29%20+%201%20%3A%200%3B%0A%20%20%20%20%20%20var%20readOnlyFolder%20%3D%20PlacesUtils.nodeIsQuery%28folder%29%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20PlacesUtils.annotations.itemHasAnnotation%28folderId%2C%20PlacesUtils.LMANNO_FEEDURI%29%3B%0A%20%20%20%20%20%20if%20%28%20%21readOnlyFolder%20%29%0A%20%20%20%20%20%20%20%20%20%20%20PlacesUtils.bookmarks.insertBookmark%28folderId%2C%20gBrowser.currentURI%2C%20index%2C%20title%29%3B%0A%0A%20%20%20%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%0A%20%20%20%20%20%20if%20%28%20id%20%29%20return%3B%0A%20%20%20%20%20%20var%20al%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0A%20%20%20%20%20%20if%20%28%20readOnlyFolder%20%29%20%7B%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20al.showAlertNotification%28%22chrome%3A//global/skin/icons/error-16.png%22%2C%20folder.title%2C%20%22%u041D%u0435%20%u043F%u043E%u0434%u0434%u0435%u0440%u0436%u0438%u0432%u0430%u0435%u0442%u0441%u044F%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20icon%20%3D%20gBrowser.mCurrentTab.image%20%7C%7C%20%22chrome%3A//global/skin/icons/information-16.png%22%3B%0A%20%20%20%20%20%20al.showAlertNotification%28icon%2C%20%22%u0414%u043E%u0431%u0430%u0432%u0438%u043B%20%u0432%20%u043F%u0430%u043F%u043A%u0443%20%22%20+%20%28folder.title%20%7C%7C%20%22%28%u0431%u0435%u0437%20%u0437%u0430%u0433%u043E%u043B%u043E%u0432%u043A%u0430%29%22%29%20+%20%22%3A%22%2C%20title.slice%280%2C%20100%29%29%3B%0A%20%20%20%7D%3B%20%20%20%20%0A%7D%29%28%29%3B%0A%0A%0A%0A//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%22%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0432%u0441%u0435%u0445%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%20%u0432%20%u043C%u0435%u043D%u044E%20%22%u0417%u0430%u043A%u043B%u0430%u0434%u043A%u0438%22%2C%20%u043E%u0442%2002.08.2014.%20................................%0A%28function%28%29%20%7B%0A%20%20%20//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u0432%20%u043C%u0435%u043D%u044E%20....%0A%20%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%20%20%20%0A%20%20%20menuitem.setAttribute%28%22label%22%2C%20%22%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0432%u0441%u0435%u0445%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%29%3B%0A%20%20%20var%20sep%20%3D%20document.getElementById%28%22organizeBookmarksSeparator%22%29%3B%20%0A%20%20%20sep.parentNode.insertBefore%28%20menuitem%2C%20sep%20%29%3B%20%20%20%0A%20%20%20addDestructor%28function%28%29%20%7B%20sep.parentNode.removeChild%28%20menuitem%20%29%20%7D%29%3B%0A%20%20%20addEventListener%28%22click%22%2C%20function%28%29%20chooseBookmarks%281%29%2C%20false%2C%20menuitem%20%29%3B%20//%20%u0435%u0441%u043B%u0438%20%u043A%u043B%u0438%u043A%20%u043D%u0430%20%u043F%u0443%u043D%u043A%u0442%u0435%20%u043C%u0435%u043D%u044E%20%20%20%20%20%0A%20%20%20%0A%0A%20%20%20//%20%u041F%u0435%u0440%u0435%u0431%u0440%u0430%u0442%u044C%20%u0432%u0441%u0435%20http%28s%29%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20....%20%0A%20%20%20function%20chooseBookmarks%28%20id%20%29%20%7B%0A%20%20%20%20%20%20var%20folder%20%3D%20PlacesUtils.getFolderContents%28%20id%20%29.root%3B%0A%20%20%20%0A%20%20%20%20%20%20folder.QueryInterface%28Ci.nsINavHistoryContainerResultNode%29%3B%0A%20%20%20%20%20%20folder.containerOpen%20%3D%20true%3B%0A%0A%20%20%20%20%20%20for%20%28%20var%20i%20%3D%200%3B%20i%20%26lt%3B%20folder.childCount%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20child%20%3D%20folder.getChild%28i%29%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20PlacesUtils.nodeIsFolder%28%20child%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%3F%20chooseBookmarks%28%20child.itemId%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%3A%20child.uri.startsWith%28%22http%22%29%20%26amp%3B%26amp%3B%20child.icon%20%3D%3D%20%27%27%20%26amp%3B%26amp%3B%20getSiteFavicon%28%20child.uri%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20folder.containerOpen%20%3D%20false%3B%0A%20%20%20%7D%3B%0A%0A%0A%20%20%20//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u043A%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%u043C%20%u0441%20%u043E%u0434%u0438%u043D%u0430%u043A%u043E%u0432%u044B%u043C%u0438%20%u0430%u0434%u0440%u0435%u0441%u0430%u043C%u0438%20....%20%20%0A%20%20%20function%20setBookFavicon%28%20faviconURI%2C%20siteURI%20%29%20%7B%0A%20%20%20%20%20%20var%20iconURI%20%3D%20Services.io.newURI%28%20faviconURI%2C%20null%2C%20null%29%3B%0A%20%20%20%20%20%20var%20bookmarkURI%20%3D%20Services.io.newURI%28%20siteURI%2C%20null%2C%20null%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20faviconService%20%3D%20Cc%5B%22@mozilla.org/browser/favicon-service%3B1%22%5D.getService%28Ci.mozIAsyncFavicons%29%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20faviconService.setAndFetchFaviconForPage%28%0A%20%20%20%20%20%20%20%20%20bookmarkURI%2C%0A%20%20%20%20%20%20%20%20%20iconURI%2C%0A%20%20%20%20%20%20%20%20%20false%2C%0A%20%20%20%20%20%20%20%20%20faviconService.FAVICON_LOAD_NON_PRIVATE%0A%20%20%20%20%20%20%29%0A%20%20%20%7D%3B%0A%20%20%20%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20%u0438%20%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0443%20%u0438%u043A%u043E%u043D%u043A%u0438%20....%20%0A%20%20%20function%20getSiteFavicon%28%20siteURI%20%29%20%7B%0A%20%20%20%20%20%20var%20hostURI%20%3D%20%22http%3A//%22%20+%20siteURI.split%28/%5C/+/g%29%5B1%5D%20+%20%22/%22%3B%0A%20%20%20%20%20%20var%20faviconURI%20%3D%20hostURI%20+%20%22favicon.ico%22%3B%20%20//%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%2C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0438%u0437%20%u0441%u0430%u0439%u0442%u0430%0A%0A%20%20%20%20%20%20if%20%28%20getSiteFavicon%5BsiteURI%5D%20%29%20return%3B%20%20%20%20%20//%20%u0441%u0442%u043E%u043F%20%u0435%u0441%u043B%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%20%u0441%20%u0442%u0430%u043A%u0438%u043C%20%u0430%u0434%u0440%u0435%u0441%u043E%u043C%20%u0443%u0436%u0435%20%u0431%u044B%u043B%u0430%0A%20%20%20%20%20%20getSiteFavicon%5BsiteURI%5D%20%3D%20true%3B%20%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0438%u0437%20%u0434%u043E%u043A%u0443%u043C%u0435%u043D%u0442%u0430%20%u0441%u0430%u0439%u0442%u0430%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%0A%20%20%20%20%20%20var%20xhr%20%3D%20new%20XMLHttpRequest%28%29%3B%0A%20%20%20%20%20%20xhr.open%28%22GET%22%2C%20siteURI%2C%20true%29%3B%0A%20%20%20%20%20%20xhr.responseType%20%3D%20%22document%22%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20xhr.onload%20%3D%20xhr.onerror%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20var%20doc%20%3D%20xhr.responseXML%3B%0A%20%20%20%20%20%20%20%20%20if%20%28%20doc%20%21%3D%3D%20null%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20links%20%3D%20doc.getElementsByTagName%28%22link%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B...links%5D.forEach%28function%28link%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20/%28%3F%3A%5E%7C%5Cs%29icon%28%3F%3A%5Cs%7C%24%29/.test%28link.rel.toLowerCase%28%29%29%20%29%20faviconURI%20%3D%20link.href%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20setBookFavicon%28%20faviconURI%2C%20siteURI%20%29%3B%20%20//%20%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0443%20%u0438%u043A%u043E%u043D%u043A%u0438%20%20%20%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20xhr.send%28%29%3B%0A%20%20%20%7D%3B%20%20%20%0A%20%20%20%20%20%0A%7D%29%28%29%3B%0A%0A%28%28%29%3D%26gt%3B%20%7B%20%0A%20%20%20var%20src%20%3D%20%22PlacesCommandHook.bookmarkPage%20%3D%20%22%20+%20PlacesCommandHook.bookmarkPage.toString%28%29%2C%0A%20%20%20%20%20%20%20res%20%3D%20src.replace%28%22PlacesUtils.bookmarks.DEFAULT_INDEX%22%2C%20%220%22%29%3B%0A%20%20%20eval%28res%29%3B%0A%20%20%20addDestructor%28%28%29%3D%26gt%3B%20eval%28src%29%20%29%3B%0A%7D%29%28%29%3B%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bif%28%21event.target%29%20%7B%20//%20Button%27s%20hotkey%20pressed%0A%09if%28this.bookmarks.initialized%29%0A%09%09this.open%20%3D%20%21this.open%3B%0A%09else%0A%09%09this.bookmarks.init%28%29%3B%0A%7D%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

Добавлено 01-03-2016 22:44:34

emlen пишет

как передать или что я имел ввиду?)))

Что ты имел ввиду.

Отредактировано bunda1 (01-03-2016 22:44:34)

Отсутствует

 

№979401-03-2016 23:24:45

broker
Участник
 
Группа: Members
Зарегистрирован: 23-06-2015
Сообщений: 103
UA: unknown 0.0

Re: Custom Buttons

Здравствуйте, есть такая замечательная кнопка открить контент в плеере.Я пользуюсь портабельной лисой и всегда таскаю з собой по возможности. Можно сделать так чтоб пути были относительные? Пользуюсь портабле Пот-плеер лежит на флешке, хочу чтоб он запускался с папки где лежит мозилка. 

скрытый текст

Выделить код

Код:

if ( this.hasAttribute("initialized") ) return;
this.setAttribute("context", "");
this.tooltipText="PotPlayer --->\n<--- SMPlayer";

var id = "context-bookmarklink"; // Место врезки

this.onclick = function(e) {
     if ( e.button == 0 ) Play(array[0][1], "-add-to-playlist", "href"); // ПКМ
     if ( e.button == 1 ) gShowPopup(this);                              // Редактировать кнопку
     if ( e.button == 2 ) Play(array[1][1], "/add", "href");             // ЛКМ
}

var contextMenu = document.getElementById("contentAreaContextMenu"); 
var sepOpen = document.getElementById(id);

var array = [
 ["SMPlayer", "C:\\Program Files\\SMPlayer\\smplayer.exe", "-add-to-playlist" ],                    //http://smplayer.sourceforge.net/
 ["PotPlayer", "C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini.exe", "/add" ],                   //https://potplayer.daum.net/?lang=ru
 ["Video Lan", "C:\\Program Files\\VideoLan\\vlc\\vlc.exe", "-AddToPlaylist" ],                     //http://www.videolan.org/vlc/
 ["Rox Player", "C:\\Users\\Home\\AppData\\Local\\ROX Player\\roxplayer.exe", "rox:"],              //http://roxplayer.com/
 ["Download Master", "P:\\PortableApps\\PortableApps\\Download Master Portable\\dmaster.exe", ""],
 
 ["separator"]
            ]
array.forEach(function(m) {
   if (m == "separator") {
       contextMenu.insertBefore(document.createElement("menuseparator"), sepOpen);
       return;
       };
   var menuitem = contextMenu.insertBefore(document.createElement("menuitem"), sepOpen);
   menuitem.id = "open-in";
   var label = m[0], path = m[1], param = m[2]; 
   menuitem.setAttribute("label", label);
   menuitem.setAttribute("class", "menuitem-iconic");
   menuitem.setAttribute("image", "moz-icon://file://" + path);   
   menuitem.onclick =()=> Play(path, param, "");
});
   
addDestructor(function() {
   [...contextMenu.childNodes].forEach(function(el) {
      if (el.id == "open-in")
          contextMenu.removeChild(el);
   }) 
});

function Play(path, param, link){
   var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
   file.initWithPath(path);
   var process  = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
   process.init(file);
   if (link == "href" || !gContextMenu.onLink) process.run(false, [content.location.href, param], 2);
   else process.run(false, [gContextMenu.getLinkURL(), param], 2);
}

Отсутствует

 

№979502-03-2016 06:17:52

emlen
Участник
 
Группа: Members
Зарегистрирован: 22-05-2015
Сообщений: 201
UA: unknown 0.0

Re: Custom Buttons

bunda1 пишет

Что ты имел ввиду.

вот в поле указанное красной стрелкой
6381427870.png
как данные о произвольной папке закладок можно передавать?
Особенно вложенность папок интересует..

Добавлено 02-03-2016 06:20:34

bunda1 пишет

В самом внизу:

у меня продолжает создаваться в низу списка закладок в указываемой папке

Отредактировано emlen (02-03-2016 06:20:34)


SeaMonkey 2.39 forever

Отсутствует

 

№979602-03-2016 10:35:41

vitalii201
Участник
 
Группа: Members
Зарегистрирован: 24-03-2011
Сообщений: 679
UA: Firefox 44.0

Re: Custom Buttons

Есть ли кнопка "Restart" для [firefox] 44?

Отсутствует

 

№979702-03-2016 11:15:52

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 42.0

Re: Custom Buttons

vitalii201
Пункт в контекстном меню

скрытый текст

Выделить код

Код:

// Добавить свои пункты в контекстное меню, от 09.02.2016. ...............   
(contextMenu=> {
   
   var menuItem2 = contextMenu.insertBefore(document.createElement("menuitem"), contextMenu.children[1]);
   addDestructor(()=> menuItem2.remove() );
   menuItem2.setAttribute("label", "Перезапуск");
   menuItem2.setAttribute("oncommand", "Application.restart()");
   }
)(document.getElementById("contentAreaContextMenu"));


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№979802-03-2016 11:35:43

vitalii201
Участник
 
Группа: Members
Зарегистрирован: 24-03-2011
Сообщений: 679
UA: Firefox 44.0

Re: Custom Buttons

villa7, спасибо.
Но кнопка была бы удобней.

Отсутствует

 

№979902-03-2016 11:42:18

FMRUser
Участник
 
Группа: Members
Зарегистрирован: 01-03-2014
Сообщений: 817
UA: Firefox 45.0
Веб-сайт

Re: Custom Buttons

vitalii201
Просто в поле "Код":

Выделить код

Код:

Application.restart()

Отсутствует

 

№980002-03-2016 12:16:53

oleg953
Участник
 
Группа: Members
Откуда: Ростов где Дон
Зарегистрирован: 07-05-2014
Сообщений: 557
UA: Firefox 45.0

Re: Custom Buttons

FMRUser пишет

vitalii201

а можно так

скрытый текст
/*Initialization Code*/

this.tooltipText = "Left     => Перезагрузить \nMiddle => Закрыть \nRight   => Меню";

this.onclick = function(event) {
    if(event.button == 0) {
// Действие при клике ЛКМ
  var appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"]
                             .getService(Components.interfaces.nsIAppStartup);
  appStartup.quit(appStartup.eForceQuit | appStartup.eRestart);
    }
        else if(event.button == 1 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
        // Действие при клике ПКМ без модификаторов
goQuitApplication();
    }
};/*Initialization Code*/                                                                                                                                                                                                                                     //  Настройка функций кликов мыши для кнопки .................
this.onclick = function(e) {
     
    if ( e.button == 0 ) Application.restart(); // ЛКМ
         
    if ( e.button == 1 ) gShowPopup(this); // СКМ
       
    if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { // ПКМ
         e.preventDefault();
         goQuitApplication();
         }
};
this.tooltipText = "Л: Перезагрузить \nС: CB Меню \nП: Закрыть";/*Initialization Code*//*Initialization Code*/                                                                                                                                                                                             // Очистить панель поиска прокруткой колёсиком мыши на панели поиска, от 19.09.2014. ..............
(function () {
   var searchbar = document.getElementById("searchbar");
   if ( !searchbar ) return;

   addEventListener('DOMMouseScroll', function(){
      searchbar.textbox.value = '';
   }, false, searchbar );
})();


в инициализацию

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]