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

Общайтесь со знакомыми и друзьями в нашей группе в Контакте.

№342606-01-2012 21:12:09

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

Re: Custom Buttons

mserv пишет

Мне кажется, будет удобнее включать подсветку нажатием на цифру количества совпадений, у вас на скрине  25.

Включать просто подсветку на странице или автовыделеные на всех страницах из поле вода на панели поиска по странице?  Может лучше сделать дополнительную кнопку на Findbar мини.

Отредактировано bunda1 (06-01-2012 21:43:18)

Отсутствует

 

№342706-01-2012 21:41:28

mserv
Участник
 
Группа: Members
Зарегистрирован: 15-11-2008
Сообщений: 1025
UA: Nightly 12.0

Re: Custom Buttons

bunda1 пишет

Включать просто подсветку на странице

Да, всё найденное на странице.

bunda1 пишет

Может лучше сделать дополнительную кнопку на Findbar мини.

Дополнительная кнопка увеличит Findbar мини, но можно и кнопку, а на ней цифры. :)

Добавлено 06-01-2012 22:10:31
bunda1
Странно, у меня в попап кнопки в автовыделение постоянно находится Firefox, не зависимо от того какое слово скопировано. Его и выделяет, если  findbar  закрыт. Открываю findbar, выделение пропадает. Что это может быть?

Отредактировано mserv (06-01-2012 22:25:46)

Отсутствует

 

№342806-01-2012 22:27:14

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

Re: Custom Buttons

mserv пишет

Дополнительная кнопка увеличит Findbar мини, но можно и кнопку, а на ней цифры. :)

Я подумаю, тут есть проблема.


mserv пишет

Странно, у меня в меню кнопки в автовыделение постоянно находится Firefox, не зависимо от того какое слово скопировано. Его и выделяет, если  findbar  закрыт. Открываю findbar, выделение пропадает. Что это может быть?

Это по умолчанию для автовыделеныя. Можно изменить через контекстное меню: Find - Автовыделение, добавить текст
или
Ctrl+ALT+H   =>  Добавить текст(выделенный / из буфера обмена) для автовыделения текста или выделение текста (выделенный/или из буфера обмена) на странице, если отключена Автовыделение.
или
about:config - FindBar.Highlight.value
Наверно надо будет добавить дополнительный пункт в меню кнопки: Автовыделение, добавить текст

Отсутствует

 

№342906-01-2012 23:53:12

mserv
Участник
 
Группа: Members
Зарегистрирован: 15-11-2008
Сообщений: 1025
UA: Nightly 12.0

Re: Custom Buttons

bunda1 пишет

Ctrl+ALT+H   =>  Добавить текст(выделенный / из буфера обмена) для автовыделения текста или выделение текста (выделенный/или из буфера обмена) на странице, если отключена Автовыделение.

У меня добавляет и при включенном автовыделение.

bunda1 пишет

Наверно надо будет добавить дополнительный пункт в меню кнопки: Автовыделение, добавить текст

И ещё хорошо бы добавить,  сбросить  Автовыделение.

Отсутствует

 

№343007-01-2012 00:03:15

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

Re: Custom Buttons

mserv пишет

И ещё хорошо бы добавить,  сбросить  Автовыделение.

Ok

Отсутствует

 

№343107-01-2012 18:34:29

skynet281978
Участник
 
Группа: Members
Зарегистрирован: 09-03-2011
Сообщений: 507
UA: Firefox 9.0

Re: Custom Buttons

bunda1 пишет

добавил fttp: magnet:?dchub:ed2k:mailto:что бы еще добавить?

будем искать :)

Отсутствует

 

№343207-01-2012 19:59:11

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

Re: Custom Buttons

Inko7 пишет

bunda1
Один вопросик по Toggle  Find+3:
сейчас при нажатии СКМ по кнопке идет поиск по странице из буфера обмена, т.е. открывается findbar в него вставляется содержимое буфера и ищется с подсветкой на странице всего найденного. Это очень хорошо!
А вот при нажатии ЛКМ просто открывается/закрывается findbar. Если же есть что-то выделенное на странице, то findbar откроется с этим текстом, но подсветка всего найденного не происходит.

mserv пишет
bunda1 пишет

Наверно надо будет добавить дополнительный пункт в меню кнопки: Автовыделение, добавить текст

И ещё хорошо бы добавить,  сбросить  Автовыделение.

Toggle  Find+3:

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

Выделить код

Код:

//настройка функций кликов мыши(Mouse Click settings)...................................................
this.onclick = function(event) {
    if(event.button == 0) {
        // Действие при клике ЛКМ
        gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
        if (!gFindBar.hidden){Find(event)};
    }
    else if(event.button == 1) {
        // Действие при клике СКМ
        gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
        goDoCommand("cmd_selectNone");
        goDoCommand("cmd_paste"); 
    }
};


//настройки языка(language settings)...................................................
var cb=custombuttons,self=this,lang=cb.getPref("general.useragent.locale");
lang = lang.replace("-", "_");
function l(str) {

    self.properties = {
    en_US:{     
      Label:       "Search with in a webpage",
      Left:        'L: Toggle Find Bar',
      Middle:      'M: Search for a page from the clipboard',
      Right:       'R: Menu + CB menu',
      Sec:         ' seconds',
      AutoClose:   'Auto close',
      CloseTimer:  '   Close Timer ',
      FindBarMini: 'FindBar mini',
      FindInMenu:  'Find in the context menu',
      PrefValue:   'AutoHighlight, add text',
      ClearPref:   'AutoHighlight, clear',
      AutoHighlight: 'AutoHighlight',
      },
    
    ru:{     
      Label:       "Поиск по странице",
      Left:        'Л: Показать - скрыть поиск по странице',
      Middle:      'С: Поиск по странице из буфера обмена',
      Right:       'П: Mеню + CB меню',
      Sec:         ' секунд',
      AutoClose:   'Автоматически закрыть',
      CloseTimer:  '   Закрыть через ',
      FindBarMini: 'FindBar мини',
      FindInMenu:  'Find в контекстном меню',
      PrefValue:   'Добавить текст',
      ClearPref:   'Сбросить текст', 
      AutoHighlight: 'Автовыделение',    
      }    
  };
  var tstr = cb.getLocalString(self, str);

  // Operations to handle replacements
  if (tstr.match(/[%]\w{1}/g)) {
    lang = (typeof self.properties[lang] != "undefined") ? lang : "en_US";
    for(prop in self.properties[lang]) {
      if ((prop.match(/[_]\w{1}$/)) && ((prop.substr(prop.lastIndexOf("_")+1)) == (tstr.substring(tstr.indexOf("%")+1, tstr.indexOf("%")+4)))) {
        var tok = tstr.substring(tstr.indexOf("%"), tstr.indexOf("%")+4);
        tstr = tstr.replace(tok, l(prop));
      }
    }
  }
  return tstr;
}

  
//переключения языка подсказки (switch tooltip language)
//подсказка.............................................................................
this.showTFinfo = function() {
  
     //getting prefs Unicode value
     var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
     var Val = "\n\n"+ l("AutoHighlight") +": "+ prefs.getComplexValue("FindBar.Highlight.value",
     Components.interfaces.nsISupportsString).data;
     //обрезать подсказку для "Автовыделение"
     var HValue = Val.substring(0,100);
     var HDots = "";
     if (Val.length > 100){var HDots = '.......'; };
      //....
     this.tooltipText = l("Label") +"\n" + l("Left") +"\n" +l("Middle") +"\n"+ l("Right") + HValue + HDots;
}
this.setAttribute("onmouseover", "this.showTFinfo()");



//проверить наличие строк в about:config и создать если не существует(Add preferences)........................................
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
if (custombuttons.getPrefs("FindBar.version") !== '3')
{   
    prefs.setCharPref("FindBar.version", "3");
    prefs.setBoolPref("FindBar.Highlight", true);
    prefs.setCharPref("FindBar.Highlight.value", "Firefox");
    prefs.setBoolPref("FindBar.contextFindWords", true);
    prefs.setBoolPref("FindBar.DblclickClose", true);
    prefs.setCharPref("ui.textHighlightBackground", "#ef0fff");//http://coloria.net/bonus/colornames.htm
  //prefs.setCharPref("ui.textHighlightForeground", "#000000");//http://coloria.net/bonus/colornames.htm
    prefs.setBoolPref("FindBar.mini", false);
    prefs.setBoolPref("FindBar.auto_Close", false);
    prefs.setCharPref("FindBar.CloseTimer", "7");//7 сек(7 sec)
    prefs.setCharPref("FindBar.AutohighlightNum", "3");
};




//настройка меню(CB menu settings)...................................................
//Объявляем 'storage' 'this_'...
storage = globalStorage[document.domain];
var this_ = this;
//изменить нужный пункт меню(toggle menuitems)
//переключаем настройки в about:config(toggle preference)
this.CBlabel = function (mi, id){

//Автоматически закрыть(FB auto close)....
if(!id || id == "FBClose") {
//переключаем настройки в about:config
togglePref("FindBar.auto_Close");
//изменить нужный пункт меню
var label = custombuttonsUtils. getPrefs ("FindBar.auto_Close", true)
        ? '● ' + l("AutoClose")
        : '   ' + l("AutoClose");
    storage['FBClose'] = label;
    if(mi)
        mi.label = label;
};

//FB auto close timer.....
if(!id || id == "CloseTimer") {
(function () {
//Стоп, при инициализации кнопки
if (!id) return;
//switch auto close timer
    var HTTP = "";
    var URL = custombuttons.promptBox(l("AutoClose"), l("CloseTimer")+custombuttons.getPrefs("FindBar.CloseTimer") + l("Sec"), HTTP);
    if (URL[0] == false) return;
    else
    var timer = [URL[1]];
//переключаем настройки в about:config(toggle preference)
prefs.setCharPref("FindBar.CloseTimer", timer);
})();
//изменить нужный пункт меню
var label = l("CloseTimer")+ custombuttons.getPrefs("FindBar.CloseTimer") + l("Sec");
     storage['CloseTimer'] = label; 
     if(mi)
        mi.label = label;
};

//FindBar.mini......
if(!id || id == "FBmini") {
//переключаем настройки в about:config
togglePref("FindBar.mini");
//Запускаем функцию fmini(run fmini)
if (id) fmini(event);
//изменить нужный пункт меню
var label = custombuttonsUtils. getPrefs ("FindBar.mini", true)
        ? '● ' + l("FindBarMini")
        : '   ' + l("FindBarMini");
    storage['FBmini'] = label;
    if(mi)
        mi.label = label;
};

//Find в контекстном меню(Find in the context menu).....
if(!id || id == "FindInMenu") {
// переключаем настройки в about:config
togglePref("FindBar.contextFindWords");
//изменить нужный пункт меню
var label = custombuttonsUtils. getPrefs ("FindBar.contextFindWords", true)
        ? '● ' + l("FindInMenu")
        : '   ' + l("FindInMenu");
    storage['FindInMenu'] = label;
    if(mi)
        mi.label = label;
};

//Автовыделение, добавить текст(Auto Highlight, add text)..... 
if(!id || id == "AddText") {
//Запускаем функцию HighlightAdd(run function HighlightAdd)
if (id) HighlightAdd(event);
//изменить нужный пункт меню(toggle menuitems)
var label = custombuttonsUtils. getPrefs ("FindBar.Highlight.value")
        ? '   ' + l("PrefValue")
        : '   ' + l("PrefValue");
    storage['PrefValue'] = label;
    if(mi)  
        mi.label = label;
};

//Автовыделение, сбросить .....
if(!id || id == "Clear") {
//сбросить настройки в about:config
if (id) prefs.setCharPref("FindBar.Highlight.value", "");    
//всплывающая подсказка
if (id) custombuttons.alertSlide(l("ClearPref"),'????');
//изменить нужный пункт меню(toggle menuitems)
var label = custombuttonsUtils. getPrefs ("FindBar.Highlight.value")
        ? '   ' + l("ClearPref")
        : '   ' + l("ClearPref");
    storage['ClearPref'] = label;
    if(mi)  
        mi.label = label;
};

//Автовыделение(Switch, Auto Highlight).....
if(!id || id == "SwitchHighlight") {
// переключаем настройки в about:config
togglePref("FindBar.Highlight");
//Изменить иконку кнопки
if (id) ToggleImage(event);
//Запускаем функцию Highlight(run function Highlight)
if (id) Highlight(event);
//изменить нужный пункт меню(toggle menuitems)
var label = custombuttonsUtils. getPrefs ("FindBar.Highlight", true)
        ? '● ' + l("AutoHighlight")
        : '   ' + l("AutoHighlight");
    storage['AutoHighlight'] = label;
    if(mi)  
        mi.label = label;
}; 

//переключаем настройки в about:config(toggle preference)....
function togglePref(s){
//Стоп, при инициализации кнопки
if (!id) return;
//переключаем настройки
custombuttons.setPrefs(s, !custombuttons.getPrefs(s));
}
 };
//Запускаем функцию CBlabel(run CBlabel).........
this.CBlabel();


//пункти меню(Our menu items) ....
this.ss = [
  { label: storage['FBClose'], cmd: 'document.popupNode.CBlabel(this, "FBClose")', sItemId: ''},
  { label: storage['CloseTimer'], cmd: 'document.popupNode.CBlabel(this, "CloseTimer")', sItemId: ''},
  { label: "separator", sItemId: ''},
  { label: storage['FBmini'], cmd: 'document.popupNode.CBlabel(this, "FBmini")', sItemId: ''},
  { label: storage['FindInMenu'], cmd: 'document.popupNode.CBlabel(this, "FindInMenu")', sItemId:''},
  { label: "separator", sItemId: ''},
  { label: storage['AutoHighlight'], cmd: 'document.popupNode.CBlabel(this, "SwitchHighlight")', sItemId: ''},
  { label: storage['PrefValue'], cmd: 'document.popupNode.CBlabel(this, "AddText")', sItemId: ''},
  { label: storage['ClearPref'], cmd: 'document.popupNode.CBlabel(this, "Clear")', sItemId: ''}];

 
// Our Initialization function for creating the context menu, setting up menuitems and telling
var Cb = custombuttons;
this.mObj = Cb.getCbContextObj(this);
this.init = function(x) {
  x.mObj.setSub();
  var nItem = {}, mItem = {};
  document.getElementById(CB2const.sCBCtxtMenu).setAttribute("oncommand", "event.stopPropagation()");
  for(var i in x.ss) {
    nItem = new x.mObj.getItem();
    nItem.id = 'Note';
    nItem.label = x.ss[i].label;
    if (nItem.label == "separator") {
        nItem = document.createElement("menuseparator");
      }
    nItem.value = String(i);
    mItem = x.mObj.insertBefore(nItem , x.mObj.oMenu.lastChild);
    this.ss[i].sItemId = mItem.id;
    mItem.setAttribute('oncommand',x.ss[i].cmd)
    mItem.setAttribute("style", "margin-left: -14px;");
     //....
    var CCsubCall = document.getElementById("custombuttons-contextpopup-subCall");
    CCsubCall.setAttribute("style", "margin-left: -4px;");
  }
  x.mObj.getItem();
  nItem = x.mObj.getItem();
  nItem.id = 'Note';
  this.separator = x.mObj.insertBefore( nItem , x.mObj.oMenu.lastChild);
}
this.init(this);




//Стоп, при открытии настройки панелей....................................................
this.onDestroy = function(reason) {
  storage = globalStorage[document.domain]
  //....
  if (reason == "constructor") storage['run'] = 'stop'
  if (reason == "destructor")  delete storage['run']
  if (reason == "update") storage['run'] = 'stop'
}
storage = globalStorage[document.domain];
if (storage['run']== 'stop') return;



//Findbar, установить и удалить атрибут 'mini'(Findbar, set and remove attribute 'mini')...........
//Findbar, установить и удалить  'hits'(Findbar, set and remove  'hits')...........
function fmini(event){
//FindBar, auto find 
if (!gFindBar.hidden)
{
//Find
gFindBar.onFindCommand();
}
var findToolbar = document.getElementById("FindToolbar");
var HighBut = document.getAnonymousElementByAttribute( gFindBar, "anonid", "highlight");
if (custombuttonsUtils. getPrefs ("FindBar.mini", true))
{
findToolbar.setAttribute("mini", "true");
storage['hits'] = ' ';
HighBut.setAttribute("tooltiptext", "L = Find, R = Clear");
}
else
{
findToolbar.removeAttribute("mini")
storage['hits'] = ' hits';
HighBut.setAttribute("tooltiptext", "Highlight");
}
  };
//Запускаем функции fmini(Run the function fmini)  
setTimeout(function() {fmini(event);}, 150)



//Изменить иконку кнопки.................................................................
function ToggleImage(event){
// toggle button image
if (custombuttonsUtils. getPrefs ("FindBar.Highlight", true))
{
this_.image="data:image/x-icon;base64,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";
}
else
{
this_.image="data:image/x-icon;base64,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";
}
  };
ToggleImage(event); 




//find bar сверху (move find bar to the top)................................................
XPCOMUtils.defineLazyGetter(window, "gFindBar", function() {
  let XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
  let findbar = document.createElementNS(XULNS, "findbar");
  findbar.setAttribute("browserid", "content");
  findbar.id = "FindToolbar";
  gBrowser.parentNode.insertBefore(findbar, gBrowser);

  // Force a style flush to ensure that our binding is attached.
  findbar.clientTop;
  window.gFindBarInitialized = true;
  return findbar;
});





//find bar, показать количество совпадений(find bar,show the number of matches)...@author slimx.................
(function() {
    //add label to findbar
    var status = document.getAnonymousElementByAttribute(gFindBar, 'anonid', 'match-case-status');
    var sep = document.createElement("toolbarspacer");
    var count = document.createElement("label");
    count.hidden = true;
    status.parentNode.insertBefore(sep, status);
    status.parentNode.insertBefore(count, status);//findbar-container


    gFindBar.__proto__._foundMatches = count;
    
    gFindBar.__proto__._updateMatchesCount = function(aRes) {
        if (!this._updateMatchCountTimeout)
            window.clearTimeout(this._updateMatchCountTimeout);
        this._updateMatchCountTimeout =
                window.setTimeout(function(aRes, aSelf) {
                    aSelf._updateMatchesCountWorker(aRes);
                }, 0, aRes, this);
    }

    gFindBar.__proto__._updateMatchesCountWorker = function(aRes) {
        var word = this._findField.value;
        if (aRes == this.nsITypeAheadFind.FIND_NOTFOUND || !word) {
            this._foundMatches.hidden = true;
            this._foundMatches.value = "";
        }
        else {
            var matchesCount = this._countMatches(word).toString();
                if (matchesCount != "0") {
                if (matchesCount == "1")
                    this._foundMatches.value = matchesCount + storage['hits'];
                else if (matchesCount == "-1") {
                    var matchLimit = 100;
                    this._foundMatches.value = " \>"+ matchLimit + storage['hits'];
                    //                    var key = (matchLimit > 1000) ? "Decrease" : "Increase";
                } else
                    this._foundMatches.value = matchesCount + storage['hits'];
                this._foundMatches.hidden = false;
                //Findbar, удалить атрибут 'red'(Findbar, remove attribute 'red').............. 
                var findToolbar = document.getElementById("FindToolbar");
                findToolbar.removeAttribute("red");
                //auto Highlight...............
        if (custombuttonsUtils. getPrefs ("FindBar.auto_Close", true))
        {
        //hide Highlight
        gFindBar._highlightDoc(false);
        //....
        var FBNum = custombuttons.getPrefs("FindBar.AutohighlightNum");
                var FBvalue = gFindBar._findField.value;
                if (FBvalue.length >= FBNum)
                {
        //Highlight
        gFindBar._highlightDoc(true, gFindBar._findField.value);
        }
          };  
            }
            else {
                this._foundMatches.hidden = true;
                this._foundMatches.value = "";
                
                //Findbar, установить атрибут 'red'(Findbar, set attribute 'red')...............
                var findToolbar = document.getElementById("FindToolbar");
                findToolbar.setAttribute("red", "true");
             }

            window.clearTimeout(this._updateMatchCountTimeout);
            
        }
    }

    gFindBar.__proto__._countMatches = function(aWord, aWindow) {
        var win = aWindow || this.browser.contentWindow;

        var countFound = 0;
        for (var i = 0, count; win.frames && i < win.frames.length; i++) {
            if ((count = this._countMatches(aWord, win.frames[i])) != -1)
                countFound += count;
            else
                return count;
        }

        var doc = win.document;
        if (!doc || !(doc instanceof HTMLDocument))
            return countFound;

        var body = doc.body;

        var count = body.childNodes.length;
        var searchRange = doc.createRange();
        var startPt = doc.createRange();
        var endPt = doc.createRange();

        searchRange.setStart(body, 0);
        searchRange.setEnd(body, count);

        startPt.setStart(body, 0);
        startPt.setEnd(body, 0);
        endPt.setStart(body, count);
        endPt.setEnd(body, count);

        var retRange = null;
        var finder = Components.classes["@mozilla.org/embedcomp/rangefind;1"]
                .createInstance()
                .QueryInterface(Components.interfaces.nsIFind);

        finder.caseSensitive = this._shouldBeCaseSensitive(aWord);

        var matchLimit = 100;
        while ((retRange = finder.Find(aWord, searchRange, startPt, endPt))) {
            if (this._rangeIsVisible(retRange, win)) {
                if (this._findMode == this.FIND_LINKS) {
                    if (this._rangeStartsInLink(retRange))
                        ++ countFound;
                }
                else
                    ++ countFound;
            }
            if (countFound == matchLimit) {
                countFound = -1;
                break;
            }
            startPt = doc.createRange();
            startPt.setStart(retRange.startContainer, retRange.startOffset + 1);
        }

        return countFound;
    }

    gFindBar.__proto__._rangeIsVisible = function(aRange, aWindow) {
        var node = aRange.startContainer;

        if (node.nodeType == node.ELEMENT_NODE) {
            if (node.hasChildNodes) {
                var childNode = node.childNodes[aRange.startOffset];
                if (childNode)
                    node = childNode;
            }
        }

        while (node && node.nodeType != node.ELEMENT_NODE)
            node = node.parentNode;

        // There is no perfect way to check if a node is visible in JavaScript,
        // so use the best measures we can have
        if (node) {
            var style = aWindow.getComputedStyle(node, "");
            if (style) {
                if (style.visibility == "hidden" ||
                        style.visibility == "collapse" ||
                        style.display == "none")
                        return false;
                if (style.left != "auto" && style.width != "auto")
                    if (style.left < 0 && style.left + style.width < 0)
                        return false;
                if (style.top != "auto" && style.height != "auto")
                    if (style.top < 0 && style.top + style.height < 0)
                        return false;
            }
        }

        return true;
    }

    gFindBar.__proto__._rangeStartsInLink = function(aRange) {
        var isInsideLink = false;

        var node = aRange.startContainer;

        if (node.nodeType == node.ELEMENT_NODE) {
            if (node.hasChildNodes) {
                var childNode = node.childNodes[aRange.startOffset];
                if (childNode)
                    node = childNode;
            }
        }

        const XLink_NS = "http://www.w3.org/1999/xlink";
        do {
            if (node instanceof HTMLAnchorElement) {
                isInsideLink = node.hasAttribute("href");
                break;
            }
            else if (typeof node.hasAttributeNS == "function" &&
                    node.hasAttributeNS(XLink_NS, "href")) {
                isInsideLink = (node.getAttributeNS(XLink_NS, "type") == "simple");
                break;
            }

            node = node.parentNode;
        } while (node);

        return isInsideLink;
    }

    //insert count function to original
    eval("gFindBar._updateCaseSensitivity=" + gFindBar._updateCaseSensitivity.toString().slice(0, -1) + "this._updateMatchesCount();}");
    eval("gFindBar._updateStatusUI=" + gFindBar._updateStatusUI.toString().slice(0, -1) + "this._updateMatchesCount();}");
})();



//FindBar, поиск колесиком мыши(FindBar, Mouse Scroll find )................................................
gFindBar.addEventListener('DOMMouseScroll', function (event){
    //Найти (Find)
    gFindBar.onFindAgainCommand(event.detail < 0);
}, false);


 

//переключить 'Поиск на странице' двойным средним кликом на странице(toggle Find Bar, if Double midlle Click in page)..........
var FBar = {

addEvList : function(event)
{
//Стоп, при открытии настройки панелей
if (storage['run'] == 'stop') return;
   
//добавляем обработчики для обработки мышиных событий на странице.......
//включена 'Использовать автоматическую прокрутку'...
gBrowser.addEventListener('click', function(event){if (custombuttonsUtils. getPrefs ("general.autoScroll", true)){FBar.clickClose(event); }}, true);

//если не включена 'Использовать автоматическую прокрутку'
gBrowser.addEventListener('dblclick', function(event){if (!custombuttonsUtils. getPrefs ("general.autoScroll", true)) FBar.clickClose(event);}, true);
},

clickClose : function(event)
{  
   
   //если нажатие на среднюю кнопку мыши
   if (1 == event.button)
   {
   //Стоп, если это 'bookmark tab','Управление дополнениями'..
   if (getBrowser().currentURI.spec == "chrome://browser/content/bookmarks/bookmarksPanel.xul") return;
   if (getBrowser().currentURI.spec == "chrome://mozapps/content/extensions/extensions.xul") return;
   var strokaadresa= gURLBar.value;
   var nsa=strokaadresa.substring(0,6);
   if (nsa=="about:") return; 
   //Стоп, если это ссылка(if link)
   var link = this.getLink(event.target);
   if(link) return;
   
   //если разрешено в настройках(about:config)
   if (custombuttonsUtils. getPrefs ("FindBar.DblclickClose", true))
   {
   //переключить 'Поиск на странице'
   gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
   if (!gFindBar.hidden){gFindBar.onFindAgainCommand(event.detail = 0)};
   }
      }
},
   
clickLink : function(event)
  {
//Объявляем ссылку'Link'............
this.getLink = function(node) {
    if(!node || !node.localName)
        return null;

    const docNode = Node.DOCUMENT_NODE; // 9
    const eltNode = Node.ELEMENT_NODE; // 1
    for(node = node; node && node.nodeType != docNode; node = node.parentNode) {
        if(
            (
                node instanceof HTMLAnchorElement
                || node instanceof HTMLAreaElement
                || node instanceof HTMLLinkElement
            )
            && node.hasAttribute("href")
            || node.nodeType == eltNode && node.hasAttributeNS("http://www.w3.org/1999/xlink", "href")
        )
            return node;
    }
    return null;
  };
}   
             };
//Запускаем функцию addEvList(run function addEvList)            
FBar.addEvList(event);             
//Запускаем функцию clickLink(run function clickLink)             
FBar.clickLink(event);



//findbar очистить, кликнуть правим кликом на findbar's label-Найти: или на иконку поиска на FindBar mini(FindBar clear findText, right click on findbar's label, else Find button)..............
//findbar поиск, кликнуть левым кликом на findbar's label-Найти: или на иконку поиска на FindBar mini(FindBar find, left click on findbar's label, else Find button)..............  

      var FindButt = document.getAnonymousElementByAttribute(gFindBar, "anonid", "find-label");
      var HighBut = document.getAnonymousElementByAttribute( gFindBar, "anonid", "highlight");
      //.....     
      FindButt.setAttribute("onclick", "event.stopPropagation(); clickFind(event);");
      //.......
      HighBut.addEventListener("click", function(event){
      if (custombuttonsUtils. getPrefs ("FindBar.mini", true)){
      gFindBar.getElement("highlight").removeAttribute("checked");
      //.......
      clickFind(event);
      }
       }, true);
      //.....................
      clickFind = function(event){
      if ( event.button == 0 )
      {
      event.preventDefault();
      event.stopPropagation();
      Find(false);
      }
      else if ( event.button == 2 )
      {
      event.preventDefault();
      event.stopPropagation();
      gFindBar._findField.value = '';
      gFindBar.onFindAgainCommand(false);
      //hide Highlight
      gFindBar._highlightDoc(false);
      }
        };


       
       
        
   
//Поиск по странице из буфера обмена, кликнуть средним кликом на findbar (FindBar Search for a page from the clipboard, midlle click on findbar)..
//Стоп, при открытии настройки панелей(stop, if onDestroy)
if (storage['run'] !== 'stop') (function () {
     gFindBar.addEventListener("click", function(event){
      if ( event.button != 1 )return; 
      event.preventDefault();
      event.stopPropagation();
      this.str = readFromClipboard();
      gFindBar._findField.value = this.str;
      var evt = document.createEvent("UIEvents");
      evt.initUIEvent("input", true, false, window, 0);
      gFindBar._findField.dispatchEvent(evt);
      return;}, true);
})(); 

     
      
//FindBar, автоматически закрыть(autohide Findbar).................................
//Стоп, при открытии настройки панелей(stop, if onDestroy)
if (storage['run'] !== 'stop')(function () {

function go() {
  gFindBar.close();
  }
function on() {
  if (!custombuttonsUtils. getPrefs ("FindBar.auto_Close", true)) return;
  if (gFindBar.hidden) return;
  if (window.ACRun == 'stop') return;
  window.ACRun = 'stop';
  timeoutId = setTimeout(go, custombuttons.getPrefs("FindBar.CloseTimer") + '000')
  gFindBar.addEventListener('mouseover',off, false); 
  gFindBar.addEventListener("DOMAttrModified", Modoff, false);
  }
function Modoff() {
  if (gFindBar.hidden == false){
  off();
  }
    };
function off() {
  window.ACRun = '';
  gFindBar.addEventListener('mouseover',Modoff, false); 
  gFindBar.removeEventListener("DOMAttrModified", off, false);
  clearTimeout(timeoutId);
  }
gBrowser.addEventListener('mouseover',on, false);  
})();




//FindBar, сочетания клавиш(Key config).........................................................
//Стоп, при открытии настройки панелей(stop, if onDestroy)
if (storage['run'] !== 'stop')(function () {
window.addEventListener('keydown', function (event){

//FindBar(ctrl+ F)показать - скрыть(Toggle Find Bar).........
if (event.altKey == false)
{
if ((event.keyCode==0x46)&&(event.ctrlKey))
{
event.preventDefault();
event.stopPropagation();
gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();}}

//Findbar(ctrl+ALT+F), поиск по странице из буфера обмена(find from clipboard).............
if (event.altKey == true)
{
if ((event.keyCode==0x46)&&(event.ctrlKey))
{
gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
goDoCommand("cmd_selectNone");
goDoCommand("cmd_paste");}}

//Findbar(ctrl+ALT+H), FindBar, вести слова для выделение(set Highlight words).............
if (event.altKey == true)
{
if ((event.keyCode==0x48)&&(event.ctrlKey))
{
//Запускаем функцию HighlightAdd(run HighlightAdd) 
HighlightAdd(event);
} 
 }
  }, false);
})();




//Автоматически выделить заранее введенные слова (auto Highlight words permanent)....................................................
function Highlight(event) {

//hide Highlight
gFindBar._highlightDoc(false);

//FindBar, auto find 
if (gFindBar.hidden == false)
{
//Find
gFindBar.onFindCommand();

//Findbar, убрать фокус(Findbar, hide focus) 
_content.focus();

//Findbar, удалить атрибут 'red'(Findbar, remove attribute 'red')..............
var value = gFindBar._findField.value;
if (value == 0)
{ 
var findToolbar = document.getElementById("FindToolbar");
findToolbar.removeAttribute("red");
}
  };
//auto Highlight
if (custombuttonsUtils. getPrefs ("FindBar.Highlight", true))
{
  if (gFindBar.hidden)
     {
     //getting prefs Unicode value
     var value = prefs.getComplexValue("FindBar.Highlight.value",
     Components.interfaces.nsISupportsString).data;
     };
        
  if (gFindBar.hidden == false)
      {
      var FBNum = custombuttons.getPrefs("FindBar.AutohighlightNum");
      var FBvalue = gFindBar._findField.value;
      if (FBvalue.length >= FBNum)
      {
      //getting findField value
      var value = gFindBar._findField.value;
      }
};
//Highlight
gFindBar._highlightDoc(true, value);
}
 };   
//Стоп, при открытии настройки панелей(stop, if onDestroy)
if (storage['run'] !== 'stop') (function () {
// добавляем обработчики
gBrowser.tabContainer.addEventListener("TabSelect", Highlight, false);
document.addEventListener( "DOMContentLoaded", Highlight, false);
gFindBar.addEventListener("DOMAttrModified", function(event){
if (gFindBar.hidden == false) return;
Highlight(event)}, false);
})();




//FindBar. контекстного меню (context Menu).......................................
(function contextFindWords(){
// выходим, если функция уже выполнялась
    if (document.getElementById("contextFindWords")) return;
 
    const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";

    var contextMenu = document.getElementById("contentAreaContextMenu");
    var separator = document.getElementById("context-sep-properties");
    var eventTarget = null;

    var menu = document.createElementNS(kXULNS, "menu");
    menu.id = "contextFindWords";
    var locale = Components.classes["@mozilla.org/preferences-service;1"]
                         .getService(Components.interfaces.nsIPrefBranch)
                         .getCharPref("general.useragent.locale");
       
    menu.setAttribute("label", locale.indexOf("ru") == -1 ? "Find" : "Find");
    //menu.setAttribute("accesskey", "i");
    menu.hidden = true;
    contextMenu.insertBefore(menu, separator);

    var menuPopup = document.createElementNS(kXULNS, "menupopup");
    menu.appendChild(menuPopup);

    var lst = [
        { 
          label:locale.indexOf("ru") == -1 ? "Find on page" : "Найти на странице",
          //accesskey:"F",
          command:ContexFind
        },
        {
          label:locale.indexOf("ru") == -1 ? "Search selected in Website" : "Поиск по сайту(google)",
          command:Search
        },
        {
          label:locale.indexOf("ru") == -1 ? "Highlight selected" : "Выделить текст на странице",
          command:HighlightSel
        },
        {
          label:locale.indexOf("ru") == -1 ? "Auto Highlight, add text" : "Автовыделение, добавить текст",
          command:addSel
        }
        ];
    
    for(var i = 0, m; m = lst[i]; i++){
        var menuItem = document.createElementNS(kXULNS, "menuitem");
        menuItem.setAttribute("label", m.label);
        menuItem.setAttribute("type", "m.radio");
        if ("accesskey" in m) menuItem.setAttribute("accesskey", m.accesskey);
        menuItem.addEventListener("command", m.command, false);
        menuItem.id = "context-Find-Words-" + m.label.toString();
        menuPopup.appendChild(menuItem);
        
    }

    contextMenu.addEventListener("popupshowing", setMenuDisplay, false);

    function setMenuDisplay(aEvent) {
        var t = content.getSelection().toString();
        if(t){
        if (custombuttonsUtils. getPrefs ("FindBar.contextFindWords", true))
        {
        document.getElementById("contextFindWords").hidden = false;
        }
        else   
        {
         document.getElementById("contextFindWords").hidden = true;
        }
              }
        else   
              {
            document.getElementById("contextFindWords").hidden = true;
              }
    }
    
     function ContexFind(){
      //Запускаем функцию Find
       Find(true);
        }
        
    function Search(){
        var focusedWindow = document. commandDispatcher. focusedWindow;
        var text = focusedWindow. getSelection (). toString ();
        var doc = getBrowser (). contentDocument;
        try { var url = doc. location. hostname; }
        catch(e)
        { var url = ""; }
          
        text = escape (convertFromUnicode ("UTF-8", text));
        url = encodeURIComponent (url);
    
        var searchUrl = "http://www.google.com/search?as_q=" + text + "&as_sitesearch=" + url;
        gBrowser.selectedTab = gBrowser.addTab(searchUrl);
        }
    
   function HighlightSel(){
        gFindBar.toggleHighlight(false);
        var text = document.commandDispatcher.focusedWindow.getSelection();
        gFindBar._highlightDoc(true, text);
        goDoCommand("cmd_selectNone");
        }
        
   function addSel(){
        //Запускаем функцию HighlightAdd 
        HighlightAdd(event);
        }     
})();


//Найти на странице.................  
function Find(s){
var findbar, textbox;
var sel = content.getSelection().toString();
var findbar = document.getElementById('FindToolbar');
if('gFindBar' in window && 'onFindAgainCommand' in gFindBar){ 
if (sel){
gFindBar._findField.value = sel;
if(gFindBar.hidden)
gFindBar.onFindCommand();
var evt = document.createEvent("UIEvents");
evt.initUIEvent("input", true, false, window, 0);
gFindBar._findField.dispatchEvent(evt);
}
if (s) return;
gFindBar.onFindAgainCommand(false);
}
  };
        

//Добавить текст(выделенный / из буфера обмена) для автовыделения.....................
function HighlightAdd(event){
//Копируем выделенный текст в буфер
document.getElementById("cmd_copy").doCommand();
// Get the root branch
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
//setting Unicode value
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
//читаем из буфера обмена
str.data = readFromClipboard();
prefs.setComplexValue("FindBar.Highlight.value", 
Components.interfaces.nsISupportsString, str);
//всплывающая подсказка
custombuttons.alertSlide(l("AutoHighlight"), str.data);
//Запускаем функцию Highlight(run Highlight) 
Highlight(event);
      };  
      


//Следим за иконкой статуса на FindBar(Monitor the find-status-icon on FindBar)......................
//Findbar, установить и удалить атрибут 'yellow'(Findbar, set and remove attribute 'yellow') 
function fflash(event){
//..
var findToolbar = document.getElementById("FindToolbar");
var findstatus = gFindBar.getElement("find-status-icon");
//..
findstatus.addEventListener("DOMAttrModified",function(e) {
if(findstatus.getAttribute("status")=="wrapped")
{
findToolbar.setAttribute("yellow", "true");
setTimeout(function() {findToolbar.removeAttribute("yellow"); }, 700);};
}, false)};
//Запускаем функции fflash, fmini(Run the function fflash)
document.addEventListener( "DOMContentLoaded", fflash(event), false);



 
// FindToolbar стиль(style).......................................................................
(function(css) {
      var pi = document.createProcessingInstruction(
      'xml-stylesheet',
      'type="text/css" href="data:text/css;utf-8,' + encodeURIComponent(css) + '"'
    );
    return document.insertBefore(pi, document.documentElement);
  }
)(<![CDATA[
@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

#FindToolbar:not([mini="true"]){
border-bottom: 2px solid; -moz-border-bottom-colors: ThreeDShadow ThreeDHighlight;}

#FindToolbar > .findbar-container > * { display: -moz-box !important; }
#FindToolbar > hbox > label{-moz-appearance: none !important;font-weight: bold  !important;}
#find-field,.findbar-textbox{width: 250px !important;}

#FindToolbar  label[value="(С учётом регистра)"],
#FindToolbar  label[value="(Case sensitive)"],
#FindToolbar .findbar-find-fast.findbar-find-status,
#FindToolbar .findbar-container>image
{display: none !important;}

#FindToolbar[yellow="true"] .findbar-textbox{
   -moz-box-shadow: 0 0 0 1em yellow inset !important;}
#FindToolbar[red="true"] .findbar-textbox{
   -moz-box-shadow: 0 0 0 1em red inset !important;}

#FindToolbar:not([red="true"]) .findbar-textbox[status="notfound"]{
   background: rgba(207,219,236,0.99) !important;
   color: black !important;
   -moz-box-shadow: none !important;}
   
.findbar-closebutton{list-style-image: none !important;
   background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAD2EAAA9hAHVrK90AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABVElEQVR42mL8//8/AzUBQAAxMVAZAAQQ1Q0ECCCqGwgQQCzoAvkN3Q5ACoQ/TGwonYBNE1BNAZASAOINQDUXkOUAAgibC0EKAoC4H6hxARbDQJb0Q9U8QJcHCCBGbLEM1GQApA4AMT8QJwJdsQAqngCk5gPxQyA2AIp/QNcLEECMuJIN1Ov7oVxHqBfXA/FHUJCgexUGAAKIEV86RHLRR6gQyMWOQMMO4NIDEEB4Yxnq1YVQg0C4EJ9hIAAQQHgNBLoQ5E0DJKEAQskGIIAIpUOQa/ShrrwIxPbYYh4ZAAQQEx7XLYAadhHoTVBYJkDDMh6aDrECgABiwmEYKK3FQ13lAA3PC0heBqVRrN4HCCAmHDGbD3VNAnJag0ZIIpS7AJpeUQBAADFhiQQFIG7EldagMV8IxBPQIgwMAAKIkdrlIUAAUb20AQggqhsIEEBUNxAgwAD1Mmk1Ns1bkQAAAABJRU5ErkJggg==") center no-repeat !important; }



/*Find Toolbar, mini......................................... */

#FindToolbar[mini="true"] .findbar-textbox{
   width: 16em !important; 
   height:21px!important;  
   padding-right: 20px !important;
   margin-right: 2px!important;
   margin-left:-4px!important}
   
#FindToolbar[mini="true"]{
   position: fixed;right: 17px;
   background: menu!important;
  -moz-box-shadow: 0px 10px 5px -10px rgba(0,0,0,.3) !important;
   border-radius: 0  0 8px 8px !important;border-top: none !important;
   padding-right:3px!important;}

#FindToolbar[mini="true"] .findbar-container>checkbox{
   margin-left:-24px !important;
   margin-right: -3px !important}

#FindToolbar[mini="true"]  label[class="checkbox-label"],
#FindToolbar[mini="true"]  toolbarbutton.findbar-find-next, 
#FindToolbar[mini="true"]  toolbarbutton.findbar-find-previous,
#FindToolbar[mini="true"] .findbar-highlight label,
#FindToolbar[mini="true"] .findbar-closebutton,
#FindToolbar[mini="true"] .findbar-find-fast[anonid="find-label"],
#FindToolbar[mini="true"] .findbar-find-fast[anonid="match-case-status"] 
{ display: none !important;} 


#FindToolbar[mini="true"] toolbarbutton.findbar-highlight.tabbable, #FindToolbar[mini="true"] toolbarbutton.findbar-highlight.tabbable[checked="true"]{
   -moz-appearance: none !important;
   list-style-image: none !important;
   background: url("data:image/gif;base64,R0lGODlhEAAQAMQWAJmZzJlmzGZmzGZm/2aZ/5mZ/5nM/8zM/8z//5mZmWZmmf///8yZzMzMmZlmmZmZM8zMM8zMZsz/ZsyZZpmZZmZmM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAHoAxYALAAAAAAQABAAAAVsoCUCgQCIaCoKA1G4p7q6RmEXcQoMxYEYQEMOJSAYEL+D8jC0CG6GJTKhUtiAPiSCmlK4er7FgiGzWLGIBUJRZliVCLMi0Sg7FHhq4gGJlFUNEBIQE38pExGDFIYoFIkQi4wWjhEVkiIUFQohADs=") center no-repeat !important; 
   border: 1px solid rgba(0,0,0,0.3) !important;
   height:21px !important;}

#FindToolbar[mini="true"] checkbox{ 
  -moz-box-ordinal-group: 3 !important;}
  
#FindToolbar[mini="true"] textbox.findbar-textbox{
   -moz-box-ordinal-group: 2 !important}

#FindToolbar[mini="true"] toolbarbutton.findbar-highlight{
   -moz-box-ordinal-group: 4 !important;
   margin-left:-3px !important}
   
#FindToolbar[mini="true"] .findbar-closebutton{
   -moz-box-ordinal-group: 7 !important;
}   

]]>.toString());

Отредактировано bunda1 (08-01-2012 00:58:44)

Отсутствует

 

№343308-01-2012 00:18:45

kotopyes
Участник
 
Группа: Members
Зарегистрирован: 06-03-2010
Сообщений: 66
UA: Nightly 12.0

Re: Custom Buttons

Вопрос не по теме, но близко. Темы на форуме подходящей не нашлось.

Нужен жест для FireGestures "следующая группа вкладок/предыдущая группа вкладок" (Панорама).

Буду очень признателен!

Отсутствует

 

№343408-01-2012 00:33:16

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

Re: Custom Buttons

kotopyes пишет

Вопрос не по теме, но близко. Темы на форуме подходящей не нашлось.

Нужен жест для FireGestures "следующая группа вкладок/предыдущая группа вкладок" (Панорама).

Буду очень признателен!

Выделить код

Код:

document.getElementById("Browser:ToggleTabView").doCommand();

Отсутствует

 

№343508-01-2012 01:06:53

kotopyes
Участник
 
Группа: Members
Зарегистрирован: 06-03-2010
Сообщений: 66
UA: Nightly 12.0

Re: Custom Buttons

bunda1,

Выделить код

Код:

document.getElementById("Browser:ToggleTabView").doCommand();

просто открывается Панорама и всё. Хотелось бы, чтобы жестом осуществлялся переход в другую группу панорамы. А в идеале, чтобы было два жеста: следующая группа и предыдущая группа. :blush:

Отсутствует

 

№343608-01-2012 01:19:33

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

Re: Custom Buttons

kotopyes пишет

просто открывается Панорама и всё. Хотелось бы, чтобы жестом осуществлялся переход в другую группу панорамы. А в идеале, чтобы было два жеста: следующая группа и предыдущая группа. :blush:

упс, ошибся. Ну тогда извини я не знаю.

Отредактировано bunda1 (08-01-2012 01:23:51)

Отсутствует

 

№343708-01-2012 01:27:10

kotopyes
Участник
 
Группа: Members
Зарегистрирован: 06-03-2010
Сообщений: 66
UA: Nightly 12.0

Re: Custom Buttons

Не могу сказать точно, так как сам не пользуюсь ТМП, но, вроде бы, в нём есть эти действия, только работающие сочетанием клавиш.

bunda1, спасибо за попытку! -)

Отсутствует

 

№343808-01-2012 01:39:53

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

Re: Custom Buttons

kotopyes пишет

Не могу сказать точно, так как сам не пользуюсь ТМП, но, вроде бы, в нём есть эти действия, только работающие сочетанием клавиш.

не всегда легко из расширения вытащить нужный код.

Отсутствует

 

№343908-01-2012 02:56:52

skynet281978
Участник
 
Группа: Members
Зарегистрирован: 09-03-2011
Сообщений: 507
UA: Firefox 9.0

Re: Custom Buttons

bunda1Можно сделать такие кнопки?

кнопка создающая механизм открытия закладок, журнала, загрузок при выборе пунктов меню в Главном меню (кнопка Firefox) во вкладке, а не в окнах как это есть.
А также, кнопка (как кнопка Просмотр исходного кода (View Source)) для открытия исходного кода во вкладке, через контекстное меню страницы сайта.
Желательно все вкладки с формой поиска и менюшками которые есть в этих окнах (например иногда нужен поиск и перенос длинных строк тоже нужен и т.п.).

Отсутствует

 

№344008-01-2012 03:14:44

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

Re: Custom Buttons

skynet281978
для открытия исходного кода во вкладке  -  это можно, но без поиска и менюшек. Где в контекстном меню страницы должен находится пункт открытия исходного кода.
открытия закладок, журнала, загрузок при выборе пунктов меню в Главном меню (кнопка Firefox) во вкладке - объясни поконкретней.

Отредактировано bunda1 (08-01-2012 03:15:51)

Отсутствует

 

№344108-01-2012 04:30:33

skynet281978
Участник
 
Группа: Members
Зарегистрирован: 09-03-2011
Сообщений: 507
UA: Firefox 9.0

Re: Custom Buttons

bunda1
Вот эти
df8eff3cf285.jpg

А исходный код просто на любой странице любого сайта в контекстном меню, в общем как обычно.
Но если закладки,журнал и загрузки также будут без своих меню, то это полумера того, что нужно и не подходит для применения.
Просто у меня политика чтобы всё открывалось во вкладках, раз уж это браузер.
Мне так нравится.
С помощью дополнений это всё делается, но хотелось бы кнопками...

Отсутствует

 

№344208-01-2012 08:48:25

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Aurora 11.0

Re: Custom Buttons

kotopyes
Стандартное сочетание для переключения групп ctrl+~ но работает оно только в английской раскладке и переключает группы только вперед, если нужно следующая/предыдущая, то в TabUtilities есть сочетание ctrl+(стрелка вверх) и ctrl+(стрелка вниз), возможно можно будет сделать жест выполняющий эти сочетания?

Отсутствует

 

№344308-01-2012 13:32:14

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

Re: Custom Buttons

kotopyes пишет

Вопрос не по теме, но близко. Темы на форуме подходящей не нашлось.
Нужен жест для FireGestures "следующая группа вкладок/предыдущая группа вкладок" (Панорама).

следующая группа вкладок

Выделить код

Код:

var groupItems = TabView._window.GroupItems;
    var tabItem = groupItems.getNextGroupItemTab(true);
    if (!tabItem)
     return;

    var oldGroupItem = groupItems.getActiveGroupItem();
    window.gBrowser.selectedTab = tabItem.tab;
    oldGroupItem.closeIfEmpty();

предыдущая группа вкладок
   

Выделить код

Код:

var groupItems = TabView._window.GroupItems;
    var tabItem = groupItems.getNextGroupItemTab(false);
    if (!tabItem)
     return;

    var oldGroupItem = groupItems.getActiveGroupItem();
    window.gBrowser.selectedTab = tabItem.tab;
    oldGroupItem.closeIfEmpty();

нашел на http://forums.mozillazine.org/viewtopic … start=1875

Отредактировано bunda1 (08-01-2012 14:58:13)

Отсутствует

 

№344408-01-2012 14:20:25

kotopyes
Участник
 
Группа: Members
Зарегистрирован: 06-03-2010
Сообщений: 66
UA: Nightly 12.0

Re: Custom Buttons

Kamui, спасибо, не был в курсе про это сочетание. А чтобы назад, нужно с шифтом (ctrl+shift+~). Но только в английской раскладке, да. Кстати, заодно узнал о дополнении Customizable Shortcuts, которое позволяет сконфигурировать свои сочетания, и проблема с "только в английской раскладке" пропадает.


bunda1, спасибо! То, что нужно. :)

Отредактировано kotopyes (08-01-2012 14:26:11)

Отсутствует

 

№344508-01-2012 19:11:29

mserv
Участник
 
Группа: Members
Зарегистрирован: 15-11-2008
Сообщений: 1025
UA: Nightly 12.0

Re: Custom Buttons

bunda1 пишет

Автовыделение, добавить текст

И ещё хорошо бы добавить,  сбросить  Автовыделение.

Спасибо, стало удобнее.

Добавлено 08-01-2012 19:15:04
bunda1
У меня подсветка всего найденного по СКМ и ЛКМ появляется только после перезагрузки страницы. Интересно в чём может быть причина?

Отредактировано mserv (08-01-2012 19:15:04)

Отсутствует

 

№344608-01-2012 20:00:02

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

Re: Custom Buttons

mserv пишет

bunda1
У меня подсветка всего найденного по СКМ и ЛКМ появляется только после перезагрузки страницы. Интересно в чём может быть причина?

упс, в коде ошибка, попробуй эту
Toggle  Find+3:

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

Выделить код

Код:

//настройка функций кликов мыши(Mouse Click settings)...................................................
this.onclick = function(event) {
    if(event.button == 0) {
        // Действие при клике ЛКМ
        gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
        if (!gFindBar.hidden){Find(event)};
    }
    else if(event.button == 1) {
        // Действие при клике СКМ
        gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
        goDoCommand("cmd_selectNone");
        goDoCommand("cmd_paste"); 
    }
};


//настройки языка(language settings)...................................................
var cb=custombuttons,self=this,lang=cb.getPref("general.useragent.locale");
lang = lang.replace("-", "_");
function l(str) {

    self.properties = {
    en_US:{     
      Label:       "Search with in a webpage",
      Left:        'L: Toggle Find Bar',
      Middle:      'M: Search for a page from the clipboard',
      Right:       'R: Menu + CB menu',
      Sec:         ' seconds',
      AutoClose:   'Auto close',
      CloseTimer:  '   Close Timer ',
      FindBarMini: 'FindBar mini',
      FindInMenu:  'Find in the context menu',
      PrefValue:   'AutoHighlight, add text',
      ClearPref:   'AutoHighlight, clear',
      AutoHighlight: 'AutoHighlight',
      },
    
    ru:{     
      Label:       "Поиск по странице",
      Left:        'Л: Показать - скрыть поиск по странице',
      Middle:      'С: Поиск по странице из буфера обмена',
      Right:       'П: Mеню + CB меню',
      Sec:         ' секунд',
      AutoClose:   'Автоматически закрыть',
      CloseTimer:  '   Закрыть через ',
      FindBarMini: 'FindBar мини',
      FindInMenu:  'Find в контекстном меню',
      PrefValue:   'Добавить текст',
      ClearPref:   'Сбросить текст', 
      AutoHighlight: 'Автовыделение',    
      }    
  };
  var tstr = cb.getLocalString(self, str);

  // Operations to handle replacements
  if (tstr.match(/[%]\w{1}/g)) {
    lang = (typeof self.properties[lang] != "undefined") ? lang : "en_US";
    for(prop in self.properties[lang]) {
      if ((prop.match(/[_]\w{1}$/)) && ((prop.substr(prop.lastIndexOf("_")+1)) == (tstr.substring(tstr.indexOf("%")+1, tstr.indexOf("%")+4)))) {
        var tok = tstr.substring(tstr.indexOf("%"), tstr.indexOf("%")+4);
        tstr = tstr.replace(tok, l(prop));
      }
    }
  }
  return tstr;
}

  
//переключения языка подсказки (switch tooltip language)
//подсказка.............................................................................
this.showTFinfo = function() {
  
     //getting prefs Unicode value
     var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
     var Val = "\n\n"+ l("AutoHighlight") +": "+ prefs.getComplexValue("FindBar.Highlight.value",
     Components.interfaces.nsISupportsString).data;
     //обрезать подсказку для "Автовыделение"
     var HValue = Val.substring(0,100);
     var HDots = "";
     if (Val.length > 100){var HDots = '.......'; };
      //....
     this.tooltipText = l("Label") +"\n" + l("Left") +"\n" +l("Middle") +"\n"+ l("Right") + HValue + HDots;
}
this.setAttribute("onmouseover", "this.showTFinfo()");



//проверить наличие строк в about:config и создать если не существует(Add preferences)........................................
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
if (custombuttons.getPrefs("FindBar.version") !== '3')
{   
    prefs.setCharPref("FindBar.version", "3");
    prefs.setBoolPref("FindBar.Highlight", true);
    prefs.setCharPref("FindBar.Highlight.value", "Firefox");
    prefs.setBoolPref("FindBar.contextFindWords", true);
    prefs.setBoolPref("FindBar.DblclickClose", true);
    prefs.setCharPref("ui.textHighlightBackground", "#ef0fff");//http://coloria.net/bonus/colornames.htm
  //prefs.setCharPref("ui.textHighlightForeground", "#000000");//http://coloria.net/bonus/colornames.htm
    prefs.setBoolPref("FindBar.mini", false);
    prefs.setBoolPref("FindBar.auto_Close", false);
    prefs.setCharPref("FindBar.CloseTimer", "7");//7 сек(7 sec)
    prefs.setCharPref("FindBar.AutohighlightNum", "3");
};




//настройка меню(CB menu settings)...................................................
//Объявляем 'storage' 'this_'...
storage = globalStorage[document.domain];
var this_ = this;
//изменить нужный пункт меню(toggle menuitems)
//переключаем настройки в about:config(toggle preference)
this.CBlabel = function (mi, id){

//Автоматически закрыть(FB auto close)....
if(!id || id == "FBClose") {
//переключаем настройки в about:config
togglePref("FindBar.auto_Close");
//изменить нужный пункт меню
var label = custombuttonsUtils. getPrefs ("FindBar.auto_Close", true)
        ? '● ' + l("AutoClose")
        : '   ' + l("AutoClose");
    storage['FBClose'] = label;
    if(mi)
        mi.label = label;
};

//FB auto close timer.....
if(!id || id == "CloseTimer") {
(function () {
//Стоп, при инициализации кнопки
if (!id) return;
//switch auto close timer
    var HTTP = "";
    var URL = custombuttons.promptBox(l("AutoClose"), l("CloseTimer")+custombuttons.getPrefs("FindBar.CloseTimer") + l("Sec"), HTTP);
    if (URL[0] == false) return;
    else
    var timer = [URL[1]];
//переключаем настройки в about:config(toggle preference)
prefs.setCharPref("FindBar.CloseTimer", timer);
})();
//изменить нужный пункт меню
var label = l("CloseTimer")+ custombuttons.getPrefs("FindBar.CloseTimer") + l("Sec");
     storage['CloseTimer'] = label; 
     if(mi)
        mi.label = label;
};

//FindBar.mini......
if(!id || id == "FBmini") {
//переключаем настройки в about:config
togglePref("FindBar.mini");
//Запускаем функцию fmini(run fmini)
if (id) fmini(event);
//изменить нужный пункт меню
var label = custombuttonsUtils. getPrefs ("FindBar.mini", true)
        ? '● ' + l("FindBarMini")
        : '   ' + l("FindBarMini");
    storage['FBmini'] = label;
    if(mi)
        mi.label = label;
};

//Find в контекстном меню(Find in the context menu).....
if(!id || id == "FindInMenu") {
// переключаем настройки в about:config
togglePref("FindBar.contextFindWords");
//изменить нужный пункт меню
var label = custombuttonsUtils. getPrefs ("FindBar.contextFindWords", true)
        ? '● ' + l("FindInMenu")
        : '   ' + l("FindInMenu");
    storage['FindInMenu'] = label;
    if(mi)
        mi.label = label;
};

//Автовыделение, добавить текст(Auto Highlight, add text)..... 
if(!id || id == "AddText") {
//Запускаем функцию HighlightAdd(run function HighlightAdd)
if (id) HighlightAdd(event);
//изменить нужный пункт меню(toggle menuitems)
var label = custombuttonsUtils. getPrefs ("FindBar.Highlight.value")
        ? '   ' + l("PrefValue")
        : '   ' + l("PrefValue");
    storage['PrefValue'] = label;
    if(mi)  
        mi.label = label;
};

//Автовыделение, сбросить .....
if(!id || id == "Clear") {
//сбросить настройки в about:config
if (id) prefs.setCharPref("FindBar.Highlight.value", "");    
//всплывающая подсказка
if (id) custombuttons.alertSlide(l("ClearPref"),'????');
//изменить нужный пункт меню(toggle menuitems)
var label = custombuttonsUtils. getPrefs ("FindBar.Highlight.value")
        ? '   ' + l("ClearPref")
        : '   ' + l("ClearPref");
    storage['ClearPref'] = label;
    if(mi)  
        mi.label = label;
};

//Автовыделение(Switch, Auto Highlight).....
if(!id || id == "SwitchHighlight") {
// переключаем настройки в about:config
togglePref("FindBar.Highlight");
//Изменить иконку кнопки
if (id) ToggleImage(event);
//Запускаем функцию Highlight(run function Highlight)
if (id) Highlight(event);
//изменить нужный пункт меню(toggle menuitems)
var label = custombuttonsUtils. getPrefs ("FindBar.Highlight", true)
        ? '● ' + l("AutoHighlight")
        : '   ' + l("AutoHighlight");
    storage['AutoHighlight'] = label;
    if(mi)  
        mi.label = label;
}; 

//переключаем настройки в about:config(toggle preference)....
function togglePref(s){
//Стоп, при инициализации кнопки
if (!id) return;
//переключаем настройки
custombuttons.setPrefs(s, !custombuttons.getPrefs(s));
}
 };
//Запускаем функцию CBlabel(run CBlabel).........
this.CBlabel();


//пункти меню(Our menu items) ....
this.ss = [
  { label: storage['FBClose'], cmd: 'document.popupNode.CBlabel(this, "FBClose")', sItemId: ''},
  { label: storage['CloseTimer'], cmd: 'document.popupNode.CBlabel(this, "CloseTimer")', sItemId: ''},
  { label: "separator", sItemId: ''},
  { label: storage['FBmini'], cmd: 'document.popupNode.CBlabel(this, "FBmini")', sItemId: ''},
  { label: storage['FindInMenu'], cmd: 'document.popupNode.CBlabel(this, "FindInMenu")', sItemId:''},
  { label: "separator", sItemId: ''},
  { label: storage['AutoHighlight'], cmd: 'document.popupNode.CBlabel(this, "SwitchHighlight")', sItemId: ''},
  { label: storage['PrefValue'], cmd: 'document.popupNode.CBlabel(this, "AddText")', sItemId: ''},
  { label: storage['ClearPref'], cmd: 'document.popupNode.CBlabel(this, "Clear")', sItemId: ''}];

 
// Our Initialization function for creating the context menu, setting up menuitems and telling
var Cb = custombuttons;
this.mObj = Cb.getCbContextObj(this);
this.init = function(x) {
  x.mObj.setSub();
  var nItem = {}, mItem = {};
  document.getElementById(CB2const.sCBCtxtMenu).setAttribute("oncommand", "event.stopPropagation()");
  for(var i in x.ss) {
    nItem = new x.mObj.getItem();
    nItem.id = 'Note';
    nItem.label = x.ss[i].label;
    if (nItem.label == "separator") {
        nItem = document.createElement("menuseparator");
      }
    nItem.value = String(i);
    mItem = x.mObj.insertBefore(nItem , x.mObj.oMenu.lastChild);
    this.ss[i].sItemId = mItem.id;
    mItem.setAttribute('oncommand',x.ss[i].cmd)
    mItem.setAttribute("style", "margin-left: -14px;");
     //....
    var CCsubCall = document.getElementById("custombuttons-contextpopup-subCall");
    CCsubCall.setAttribute("style", "margin-left: -4px;");
  }
  x.mObj.getItem();
  nItem = x.mObj.getItem();
  nItem.id = 'Note';
  this.separator = x.mObj.insertBefore( nItem , x.mObj.oMenu.lastChild);
}
this.init(this);




//Стоп, при открытии настройки панелей....................................................
this.onDestroy = function(reason) {
  storage = globalStorage[document.domain]
  //....
  if (reason == "constructor") storage['run'] = 'stop'
  if (reason == "destructor")  delete storage['run']
  if (reason == "update") storage['run'] = 'stop'
}
storage = globalStorage[document.domain];
if (storage['run']== 'stop') return;



//Findbar, установить и удалить атрибут 'mini'(Findbar, set and remove attribute 'mini')...........
//Findbar, установить и удалить  'hits'(Findbar, set and remove  'hits')...........
function fmini(event){
//FindBar, auto find 
if (!gFindBar.hidden)
{
//Find
gFindBar.onFindCommand();
}
var findToolbar = document.getElementById("FindToolbar");
var HighBut = document.getAnonymousElementByAttribute( gFindBar, "anonid", "highlight");
if (custombuttonsUtils. getPrefs ("FindBar.mini", true))
{
findToolbar.setAttribute("mini", "true");
storage['hits'] = ' ';
HighBut.setAttribute("tooltiptext", "L = Find, R = Clear");
}
else
{
findToolbar.removeAttribute("mini")
storage['hits'] = ' hits';
HighBut.setAttribute("tooltiptext", "Highlight");
}
  };
//Запускаем функции fmini(Run the function fmini)  
setTimeout(function() {fmini(event);}, 150)



//Изменить иконку кнопки.................................................................
function ToggleImage(event){
// toggle button image
if (custombuttonsUtils. getPrefs ("FindBar.Highlight", true))
{
this_.image="data:image/x-icon;base64,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";
}
else
{
this_.image="data:image/x-icon;base64,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";
}
  };
ToggleImage(event); 




//find bar сверху (move find bar to the top)................................................
XPCOMUtils.defineLazyGetter(window, "gFindBar", function() {
  let XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
  let findbar = document.createElementNS(XULNS, "findbar");
  findbar.setAttribute("browserid", "content");
  findbar.id = "FindToolbar";
  gBrowser.parentNode.insertBefore(findbar, gBrowser);

  // Force a style flush to ensure that our binding is attached.
  findbar.clientTop;
  window.gFindBarInitialized = true;
  return findbar;
});





//find bar, показать количество совпадений(find bar,show the number of matches)...@author slimx.................
(function() {
    //add label to findbar
    var status = document.getAnonymousElementByAttribute(gFindBar, 'anonid', 'match-case-status');
    var sep = document.createElement("toolbarspacer");
    var count = document.createElement("label");
    count.hidden = true;
    status.parentNode.insertBefore(sep, status);
    status.parentNode.insertBefore(count, status);//findbar-container


    gFindBar.__proto__._foundMatches = count;
    
    gFindBar.__proto__._updateMatchesCount = function(aRes) {
        if (!this._updateMatchCountTimeout)
            window.clearTimeout(this._updateMatchCountTimeout);
        this._updateMatchCountTimeout =
                window.setTimeout(function(aRes, aSelf) {
                    aSelf._updateMatchesCountWorker(aRes);
                }, 0, aRes, this);
    }

    gFindBar.__proto__._updateMatchesCountWorker = function(aRes) {
        var word = this._findField.value;
        if (aRes == this.nsITypeAheadFind.FIND_NOTFOUND || !word) {
            this._foundMatches.hidden = true;
            this._foundMatches.value = "";
        }
        else {
            var matchesCount = this._countMatches(word).toString();
                if (matchesCount != "0") {
                if (matchesCount == "1")
                    this._foundMatches.value = matchesCount + storage['hits'];
                else if (matchesCount == "-1") {
                    var matchLimit = 100;
                    this._foundMatches.value = " \>"+ matchLimit + storage['hits'];
                    //                    var key = (matchLimit > 1000) ? "Decrease" : "Increase";
                } else
                    this._foundMatches.value = matchesCount + storage['hits'];
                this._foundMatches.hidden = false;
                //Findbar, удалить атрибут 'red'(Findbar, remove attribute 'red').............. 
                var findToolbar = document.getElementById("FindToolbar");
                findToolbar.removeAttribute("red");
                //auto Highlight...............
            if (custombuttonsUtils. getPrefs ("FindBar.Highlight", true))
            {
            //Запускаем функцию Highlight(run function Highlight)
             Highlight(false);
            };  
            }
            else {
                this._foundMatches.hidden = true;
                this._foundMatches.value = "";
                
                //Findbar, установить атрибут 'red'(Findbar, set attribute 'red')...............
                var findToolbar = document.getElementById("FindToolbar");
                findToolbar.setAttribute("red", "true");
             }

            window.clearTimeout(this._updateMatchCountTimeout);
            
        }
    }

    gFindBar.__proto__._countMatches = function(aWord, aWindow) {
        var win = aWindow || this.browser.contentWindow;

        var countFound = 0;
        for (var i = 0, count; win.frames && i < win.frames.length; i++) {
            if ((count = this._countMatches(aWord, win.frames[i])) != -1)
                countFound += count;
            else
                return count;
        }

        var doc = win.document;
        if (!doc || !(doc instanceof HTMLDocument))
            return countFound;

        var body = doc.body;

        var count = body.childNodes.length;
        var searchRange = doc.createRange();
        var startPt = doc.createRange();
        var endPt = doc.createRange();

        searchRange.setStart(body, 0);
        searchRange.setEnd(body, count);

        startPt.setStart(body, 0);
        startPt.setEnd(body, 0);
        endPt.setStart(body, count);
        endPt.setEnd(body, count);

        var retRange = null;
        var finder = Components.classes["@mozilla.org/embedcomp/rangefind;1"]
                .createInstance()
                .QueryInterface(Components.interfaces.nsIFind);

        finder.caseSensitive = this._shouldBeCaseSensitive(aWord);

        var matchLimit = 100;
        while ((retRange = finder.Find(aWord, searchRange, startPt, endPt))) {
            if (this._rangeIsVisible(retRange, win)) {
                if (this._findMode == this.FIND_LINKS) {
                    if (this._rangeStartsInLink(retRange))
                        ++ countFound;
                }
                else
                    ++ countFound;
            }
            if (countFound == matchLimit) {
                countFound = -1;
                break;
            }
            startPt = doc.createRange();
            startPt.setStart(retRange.startContainer, retRange.startOffset + 1);
        }

        return countFound;
    }

    gFindBar.__proto__._rangeIsVisible = function(aRange, aWindow) {
        var node = aRange.startContainer;

        if (node.nodeType == node.ELEMENT_NODE) {
            if (node.hasChildNodes) {
                var childNode = node.childNodes[aRange.startOffset];
                if (childNode)
                    node = childNode;
            }
        }

        while (node && node.nodeType != node.ELEMENT_NODE)
            node = node.parentNode;

        // There is no perfect way to check if a node is visible in JavaScript,
        // so use the best measures we can have
        if (node) {
            var style = aWindow.getComputedStyle(node, "");
            if (style) {
                if (style.visibility == "hidden" ||
                        style.visibility == "collapse" ||
                        style.display == "none")
                        return false;
                if (style.left != "auto" && style.width != "auto")
                    if (style.left < 0 && style.left + style.width < 0)
                        return false;
                if (style.top != "auto" && style.height != "auto")
                    if (style.top < 0 && style.top + style.height < 0)
                        return false;
            }
        }

        return true;
    }

    gFindBar.__proto__._rangeStartsInLink = function(aRange) {
        var isInsideLink = false;

        var node = aRange.startContainer;

        if (node.nodeType == node.ELEMENT_NODE) {
            if (node.hasChildNodes) {
                var childNode = node.childNodes[aRange.startOffset];
                if (childNode)
                    node = childNode;
            }
        }

        const XLink_NS = "http://www.w3.org/1999/xlink";
        do {
            if (node instanceof HTMLAnchorElement) {
                isInsideLink = node.hasAttribute("href");
                break;
            }
            else if (typeof node.hasAttributeNS == "function" &&
                    node.hasAttributeNS(XLink_NS, "href")) {
                isInsideLink = (node.getAttributeNS(XLink_NS, "type") == "simple");
                break;
            }

            node = node.parentNode;
        } while (node);

        return isInsideLink;
    }

    //insert count function to original
    eval("gFindBar._updateCaseSensitivity=" + gFindBar._updateCaseSensitivity.toString().slice(0, -1) + "this._updateMatchesCount();}");
    eval("gFindBar._updateStatusUI=" + gFindBar._updateStatusUI.toString().slice(0, -1) + "this._updateMatchesCount();}");
})();



//FindBar, поиск колесиком мыши(FindBar, Mouse Scroll find )................................................
gFindBar.addEventListener('DOMMouseScroll', function (event){
    //Найти (Find)
    gFindBar.onFindAgainCommand(event.detail < 0);
}, false);


 

//переключить 'Поиск на странице' двойным средним кликом на странице(toggle Find Bar, if Double midlle Click in page)..........
var FBar = {

addEvList : function(event)
{
//Стоп, при открытии настройки панелей
if (storage['run'] == 'stop') return;
   
//добавляем обработчики для обработки мышиных событий на странице.......
//включена 'Использовать автоматическую прокрутку'...
gBrowser.addEventListener('click', function(event){if (custombuttonsUtils. getPrefs ("general.autoScroll", true)){FBar.clickClose(event); }}, true);

//если не включена 'Использовать автоматическую прокрутку'
gBrowser.addEventListener('dblclick', function(event){if (!custombuttonsUtils. getPrefs ("general.autoScroll", true)) FBar.clickClose(event);}, true);
},

clickClose : function(event)
{  
   
   //если нажатие на среднюю кнопку мыши
   if (1 == event.button)
   {
   //Стоп, если это 'bookmark tab','Управление дополнениями'..
   if (getBrowser().currentURI.spec == "chrome://browser/content/bookmarks/bookmarksPanel.xul") return;
   if (getBrowser().currentURI.spec == "chrome://mozapps/content/extensions/extensions.xul") return;
   var strokaadresa= gURLBar.value;
   var nsa=strokaadresa.substring(0,6);
   if (nsa=="about:") return; 
   //Стоп, если это ссылка(if link)
   var link = this.getLink(event.target);
   if(link) return;
   
   //если разрешено в настройках(about:config)
   if (custombuttonsUtils. getPrefs ("FindBar.DblclickClose", true))
   {
   //переключить 'Поиск на странице'
   gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
   if (!gFindBar.hidden){gFindBar.onFindAgainCommand(event.detail = 0)};
   }
      }
},
   
clickLink : function(event)
  {
//Объявляем ссылку'Link'............
this.getLink = function(node) {
    if(!node || !node.localName)
        return null;

    const docNode = Node.DOCUMENT_NODE; // 9
    const eltNode = Node.ELEMENT_NODE; // 1
    for(node = node; node && node.nodeType != docNode; node = node.parentNode) {
        if(
            (
                node instanceof HTMLAnchorElement
                || node instanceof HTMLAreaElement
                || node instanceof HTMLLinkElement
            )
            && node.hasAttribute("href")
            || node.nodeType == eltNode && node.hasAttributeNS("http://www.w3.org/1999/xlink", "href")
        )
            return node;
    }
    return null;
  };
}   
             };
//Запускаем функцию addEvList(run function addEvList)            
FBar.addEvList(event);             
//Запускаем функцию clickLink(run function clickLink)             
FBar.clickLink(event);



//findbar очистить, кликнуть правим кликом на findbar's label-Найти: или на иконку поиска на FindBar mini(FindBar clear findText, right click on findbar's label, else Find button)..............
//findbar поиск, кликнуть левым кликом на findbar's label-Найти: или на иконку поиска на FindBar mini(FindBar find, left click on findbar's label, else Find button)..............  

      var FindButt = document.getAnonymousElementByAttribute(gFindBar, "anonid", "find-label");
      var HighBut = document.getAnonymousElementByAttribute( gFindBar, "anonid", "highlight");
      //.....     
      FindButt.setAttribute("onclick", "event.stopPropagation(); clickFind(event);");
      //.......
      HighBut.addEventListener("click", function(event){
      if (custombuttonsUtils. getPrefs ("FindBar.mini", true)){
      gFindBar.getElement("highlight").removeAttribute("checked");
      //.......
      clickFind(event);
      }
       }, true);
      //.....................
      clickFind = function(event){
      if ( event.button == 0 )
      {
      event.preventDefault();
      event.stopPropagation();
      Find(false);
      }
      else if ( event.button == 2 )
      {
      event.preventDefault();
      event.stopPropagation();
      gFindBar._findField.value = '';
      gFindBar.onFindAgainCommand(false);
      //hide Highlight
      gFindBar._highlightDoc(false);
      }
        };


       
       
        
   
//Поиск по странице из буфера обмена, кликнуть средним кликом на findbar (FindBar Search for a page from the clipboard, midlle click on findbar)..
//Стоп, при открытии настройки панелей(stop, if onDestroy)
if (storage['run'] !== 'stop') (function () {
     gFindBar.addEventListener("click", function(event){
      if ( event.button != 1 )return; 
      event.preventDefault();
      event.stopPropagation();
      this.str = readFromClipboard();
      gFindBar._findField.value = this.str;
      var evt = document.createEvent("UIEvents");
      evt.initUIEvent("input", true, false, window, 0);
      gFindBar._findField.dispatchEvent(evt);
      return;}, true);
})(); 

     
      
//FindBar, автоматически закрыть(autohide Findbar).................................
//Стоп, при открытии настройки панелей(stop, if onDestroy)
if (storage['run'] !== 'stop')(function () {

function go() {
  gFindBar.close();
  }
function on() {
  if (!custombuttonsUtils. getPrefs ("FindBar.auto_Close", true)) return;
  if (gFindBar.hidden) return;
  if (window.ACRun == 'stop') return;
  window.ACRun = 'stop';
  timeoutId = setTimeout(go, custombuttons.getPrefs("FindBar.CloseTimer") + '000')
  gFindBar.addEventListener('mouseover',off, false); 
  gFindBar.addEventListener("DOMAttrModified", Modoff, false);
  }
function Modoff() {
  if (gFindBar.hidden == false){
  off();
  }
    };
function off() {
  window.ACRun = '';
  gFindBar.addEventListener('mouseover',Modoff, false); 
  gFindBar.removeEventListener("DOMAttrModified", off, false);
  clearTimeout(timeoutId);
  }
gBrowser.addEventListener('mouseover',on, false);  
})();




//FindBar, сочетания клавиш(Key config).........................................................
//Стоп, при открытии настройки панелей(stop, if onDestroy)
if (storage['run'] !== 'stop')(function () {
window.addEventListener('keydown', function (event){

//FindBar(ctrl+ F)показать - скрыть(Toggle Find Bar).........
if (event.altKey == false)
{
if ((event.keyCode==0x46)&&(event.ctrlKey))
{
event.preventDefault();
event.stopPropagation();
gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();}}

//Findbar(ctrl+ALT+F), поиск по странице из буфера обмена(find from clipboard).............
if (event.altKey == true)
{
if ((event.keyCode==0x46)&&(event.ctrlKey))
{
gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
goDoCommand("cmd_selectNone");
goDoCommand("cmd_paste");}}

//Findbar(ctrl+ALT+H), FindBar, вести слова для выделение(set Highlight words).............
if (event.altKey == true)
{
if ((event.keyCode==0x48)&&(event.ctrlKey))
{
//Запускаем функцию HighlightAdd(run HighlightAdd) 
HighlightAdd(event);
} 
 }
  }, false);
})();




//Автоматически выделить заранее введенные слова (auto Highlight words permanent)....................................................
function Highlight(m) {

//hide Highlight
gFindBar._highlightDoc(false);

//FindBar, auto find 
if (!gFindBar.hidden)
{
//Find
if (m) {gFindBar.onFindCommand()}

//Findbar, убрать фокус(Findbar, hide focus) 
_content.focus();

//Findbar, удалить атрибут 'red'(Findbar, remove attribute 'red')..............
var value = gFindBar._findField.value;
if (value == 0)
{ 
var findToolbar = document.getElementById("FindToolbar");
findToolbar.removeAttribute("red");
}
  };
//auto Highlight
if (custombuttonsUtils. getPrefs ("FindBar.Highlight", true))
{
  if (gFindBar.hidden)
     {
     //getting prefs Unicode value
     var value = prefs.getComplexValue("FindBar.Highlight.value",
     Components.interfaces.nsISupportsString).data;
     };
        
  if (gFindBar.hidden == false)
      {
      var FBNum = custombuttons.getPrefs("FindBar.AutohighlightNum");
      var FBvalue = gFindBar._findField.value;
      if (FBvalue.length >= FBNum)
      {
      //getting findField value
      var value = gFindBar._findField.value;
      }
};
//Highlight
gFindBar._highlightDoc(true, value);
}
 };   
//Стоп, при открытии настройки панелей(stop, if onDestroy)
if (storage['run'] !== 'stop') (function () {
// добавляем обработчики
gBrowser.tabContainer.addEventListener("TabSelect", Highlight, false);
document.addEventListener( "DOMContentLoaded", Highlight, false);
gFindBar.addEventListener("DOMAttrModified", function(event){
if (gFindBar.hidden == false) return;
Highlight(event)}, false);
})();




//FindBar. контекстного меню (context Menu).......................................
(function contextFindWords(){
// выходим, если функция уже выполнялась
    if (document.getElementById("contextFindWords")) return;
 
    const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";

    var contextMenu = document.getElementById("contentAreaContextMenu");
    var separator = document.getElementById("context-sep-properties");
    var eventTarget = null;

    var menu = document.createElementNS(kXULNS, "menu");
    menu.id = "contextFindWords";
    var locale = Components.classes["@mozilla.org/preferences-service;1"]
                         .getService(Components.interfaces.nsIPrefBranch)
                         .getCharPref("general.useragent.locale");
       
    menu.setAttribute("label", locale.indexOf("ru") == -1 ? "Find" : "Find");
    //menu.setAttribute("accesskey", "i");
    menu.hidden = true;
    contextMenu.insertBefore(menu, separator);

    var menuPopup = document.createElementNS(kXULNS, "menupopup");
    menu.appendChild(menuPopup);

    var lst = [
        { 
          label:locale.indexOf("ru") == -1 ? "Find on page" : "Найти на странице",
          //accesskey:"F",
          command:ContexFind
        },
        {
          label:locale.indexOf("ru") == -1 ? "Search selected in Website" : "Поиск по сайту(google)",
          command:Search
        },
        {
          label:locale.indexOf("ru") == -1 ? "Highlight selected" : "Выделить текст на странице",
          command:HighlightSel
        },
        {
          label:locale.indexOf("ru") == -1 ? "Auto Highlight, add text" : "Автовыделение, добавить текст",
          command:addSel
        }
        ];
    
    for(var i = 0, m; m = lst[i]; i++){
        var menuItem = document.createElementNS(kXULNS, "menuitem");
        menuItem.setAttribute("label", m.label);
        menuItem.setAttribute("type", "m.radio");
        if ("accesskey" in m) menuItem.setAttribute("accesskey", m.accesskey);
        menuItem.addEventListener("command", m.command, false);
        menuItem.id = "context-Find-Words-" + m.label.toString();
        menuPopup.appendChild(menuItem);
        
    }

    contextMenu.addEventListener("popupshowing", setMenuDisplay, false);

    function setMenuDisplay(aEvent) {
        var t = content.getSelection().toString();
        if(t){
        if (custombuttonsUtils. getPrefs ("FindBar.contextFindWords", true))
        {
        document.getElementById("contextFindWords").hidden = false;
        }
        else   
        {
         document.getElementById("contextFindWords").hidden = true;
        }
              }
        else   
              {
            document.getElementById("contextFindWords").hidden = true;
              }
    }
    
     function ContexFind(){
      //Запускаем функцию Find
       Find(true);
        }
        
    function Search(){
        var focusedWindow = document. commandDispatcher. focusedWindow;
        var text = focusedWindow. getSelection (). toString ();
        var doc = getBrowser (). contentDocument;
        try { var url = doc. location. hostname; }
        catch(e)
        { var url = ""; }
          
        text = escape (convertFromUnicode ("UTF-8", text));
        url = encodeURIComponent (url);
    
        var searchUrl = "http://www.google.com/search?as_q=" + text + "&as_sitesearch=" + url;
        gBrowser.selectedTab = gBrowser.addTab(searchUrl);
        }
    
   function HighlightSel(){
        gFindBar.toggleHighlight(false);
        var text = document.commandDispatcher.focusedWindow.getSelection();
        gFindBar._highlightDoc(true, text);
        goDoCommand("cmd_selectNone");
        }
        
   function addSel(){
        //Запускаем функцию HighlightAdd 
        HighlightAdd(event);
        }     
})();


//Найти на странице.................  
function Find(s){
var findbar, textbox;
var sel = content.getSelection().toString();
var findbar = document.getElementById('FindToolbar');
if('gFindBar' in window && 'onFindAgainCommand' in gFindBar){ 
if (sel){
gFindBar._findField.value = sel;
if(gFindBar.hidden)
gFindBar.onFindCommand();
var evt = document.createEvent("UIEvents");
evt.initUIEvent("input", true, false, window, 0);
gFindBar._findField.dispatchEvent(evt);
}
if (s) return;
gFindBar.onFindAgainCommand(false);
}
  };
        

//Добавить текст(выделенный / из буфера обмена) для автовыделения.....................
function HighlightAdd(event){
//Копируем выделенный текст в буфер
document.getElementById("cmd_copy").doCommand();
// Get the root branch
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
//setting Unicode value
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
//читаем из буфера обмена
str.data = readFromClipboard();
prefs.setComplexValue("FindBar.Highlight.value", 
Components.interfaces.nsISupportsString, str);
//всплывающая подсказка
custombuttons.alertSlide(l("AutoHighlight"), str.data);
//Запускаем функцию Highlight(run Highlight) 
Highlight(event);
      };  
      


//Следим за иконкой статуса на FindBar(Monitor the find-status-icon on FindBar)......................
//Findbar, установить и удалить атрибут 'yellow'(Findbar, set and remove attribute 'yellow') 
function fflash(event){
//..
var findToolbar = document.getElementById("FindToolbar");
var findstatus = gFindBar.getElement("find-status-icon");
//..
findstatus.addEventListener("DOMAttrModified",function(e) {
if(findstatus.getAttribute("status")=="wrapped")
{
findToolbar.setAttribute("yellow", "true");
setTimeout(function() {findToolbar.removeAttribute("yellow"); }, 700);};
}, false)};
//Запускаем функции fflash, fmini(Run the function fflash)
document.addEventListener( "DOMContentLoaded", fflash(event), false);



 
// FindToolbar стиль(style).......................................................................
(function(css) {
      var pi = document.createProcessingInstruction(
      'xml-stylesheet',
      'type="text/css" href="data:text/css;utf-8,' + encodeURIComponent(css) + '"'
    );
    return document.insertBefore(pi, document.documentElement);
  }
)(<![CDATA[
@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

#FindToolbar:not([mini="true"]){
border-bottom: 2px solid; -moz-border-bottom-colors: ThreeDShadow ThreeDHighlight;}

#FindToolbar > .findbar-container > * { display: -moz-box !important; }
#FindToolbar > hbox > label{-moz-appearance: none !important;font-weight: bold  !important;}
#find-field,.findbar-textbox{width: 250px !important;}

#FindToolbar  label[value="(С учётом регистра)"],
#FindToolbar  label[value="(Case sensitive)"],
#FindToolbar .findbar-find-fast.findbar-find-status,
#FindToolbar .findbar-container>image
{display: none !important;}

#FindToolbar[yellow="true"] .findbar-textbox{
   -moz-box-shadow: 0 0 0 1em yellow inset !important;}
#FindToolbar[red="true"] .findbar-textbox{
   -moz-box-shadow: 0 0 0 1em red inset !important;}

#FindToolbar:not([red="true"]) .findbar-textbox[status="notfound"]{
   background: rgba(207,219,236,0.99) !important;
   color: black !important;
   -moz-box-shadow: none !important;}
   
.findbar-closebutton{list-style-image: none !important;
   background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAD2EAAA9hAHVrK90AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABVElEQVR42mL8//8/AzUBQAAxMVAZAAQQ1Q0ECCCqGwgQQCzoAvkN3Q5ACoQ/TGwonYBNE1BNAZASAOINQDUXkOUAAgibC0EKAoC4H6hxARbDQJb0Q9U8QJcHCCBGbLEM1GQApA4AMT8QJwJdsQAqngCk5gPxQyA2AIp/QNcLEECMuJIN1Ov7oVxHqBfXA/FHUJCgexUGAAKIEV86RHLRR6gQyMWOQMMO4NIDEEB4Yxnq1YVQg0C4EJ9hIAAQQHgNBLoQ5E0DJKEAQskGIIAIpUOQa/ShrrwIxPbYYh4ZAAQQEx7XLYAadhHoTVBYJkDDMh6aDrECgABiwmEYKK3FQ13lAA3PC0heBqVRrN4HCCAmHDGbD3VNAnJag0ZIIpS7AJpeUQBAADFhiQQFIG7EldagMV8IxBPQIgwMAAKIkdrlIUAAUb20AQggqhsIEEBUNxAgwAD1Mmk1Ns1bkQAAAABJRU5ErkJggg==") center no-repeat !important; }



/*Find Toolbar, mini......................................... */

#FindToolbar[mini="true"] .findbar-textbox{
   width: 16em !important; 
   height:21px!important;  
   padding-right: 20px !important;
   margin-right: 2px!important;
   margin-left:-4px!important}
   
#FindToolbar[mini="true"]{
   position: fixed;right: 17px;
   background: menu!important;
  -moz-box-shadow: 0px 10px 5px -10px rgba(0,0,0,.3) !important;
   border-radius: 0  0 8px 8px !important;border-top: none !important;
   padding-right:3px!important;}

#FindToolbar[mini="true"] .findbar-container>checkbox{
   margin-left:-24px !important;
   margin-right: -3px !important}

#FindToolbar[mini="true"]  label[class="checkbox-label"],
#FindToolbar[mini="true"]  toolbarbutton.findbar-find-next, 
#FindToolbar[mini="true"]  toolbarbutton.findbar-find-previous,
#FindToolbar[mini="true"] .findbar-highlight label,
#FindToolbar[mini="true"] .findbar-closebutton,
#FindToolbar[mini="true"] .findbar-find-fast[anonid="find-label"],
#FindToolbar[mini="true"] .findbar-find-fast[anonid="match-case-status"] 
{ display: none !important;} 


#FindToolbar[mini="true"] toolbarbutton.findbar-highlight.tabbable, #FindToolbar[mini="true"] toolbarbutton.findbar-highlight.tabbable[checked="true"]{
   -moz-appearance: none !important;
   list-style-image: none !important;
   background: url("data:image/gif;base64,R0lGODlhEAAQAMQWAJmZzJlmzGZmzGZm/2aZ/5mZ/5nM/8zM/8z//5mZmWZmmf///8yZzMzMmZlmmZmZM8zMM8zMZsz/ZsyZZpmZZmZmM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAHoAxYALAAAAAAQABAAAAVsoCUCgQCIaCoKA1G4p7q6RmEXcQoMxYEYQEMOJSAYEL+D8jC0CG6GJTKhUtiAPiSCmlK4er7FgiGzWLGIBUJRZliVCLMi0Sg7FHhq4gGJlFUNEBIQE38pExGDFIYoFIkQi4wWjhEVkiIUFQohADs=") center no-repeat !important; 
   border: 1px solid rgba(0,0,0,0.3) !important;
   height:21px !important;}

#FindToolbar[mini="true"] checkbox{ 
  -moz-box-ordinal-group: 3 !important;}
  
#FindToolbar[mini="true"] textbox.findbar-textbox{
   -moz-box-ordinal-group: 2 !important}

#FindToolbar[mini="true"] toolbarbutton.findbar-highlight{
   -moz-box-ordinal-group: 4 !important;
   margin-left:-3px !important}
   
#FindToolbar[mini="true"] .findbar-closebutton{
   -moz-box-ordinal-group: 7 !important;
}   

]]>.toString());

Отсутствует

 

№344708-01-2012 20:11:47

mserv
Участник
 
Группа: Members
Зарегистрирован: 15-11-2008
Сообщений: 1025
UA: Nightly 12.0

Re: Custom Buttons

bunda1 пишет

упс, в коде ошибка, попробуй эту

Да, теперь всё ОК.  :beer:

Отсутствует

 

№344809-01-2012 15:01:26

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1005
UA: Firefox 9.0

Re: Custom Buttons

bunda1 пишет

Да, есть такой не понятный глюк, иногда this.onDestroy = function() {... не удаляет обработчик, это как то зависит от другого кода в кнопке.
Папробуй так, без gBrowser.removeEventListener("dblclick".....

Спасибо! Вторым способом все получилось без проблем :)
И за исправление Toggle  Find+3 также спасибо.

Отсутствует

 

№344914-01-2012 12:45:48

Ste_pan
Участник
 
Группа: Members
Откуда: приморский край п.сибирцево
Зарегистрирован: 13-02-2011
Сообщений: 63
UA: Firefox 7.0

Re: Custom Buttons

люди давайте протестим кнопку отправка смс на номера билайн мегафон нтк .
кнопка работает так:выделил текст, нажал, вылетела форма. В форме уже выделенный текст ,на форме есть кнопка "sel "-копирует нужный текст в текстериа, заменяя предыдущий  ;кнопка ">"-сворачивает форму в полоску  ;"sav"-сохраняет номер в адресную книгу номер дожен быть   в первом инпуте а имя в том что под капшей ,первый select - адресная книга,второй выбор оператора(при сохранении в адресную книгу он должен соответствовать оператору введеного номера и при отправке тоже(если номер не из адресной книги));"отчет"- запрашивает отчет об отправке с сервера (в  "otchet" надо перед этим выбрать одно из отправленных смс); смен капши клик по капше (нтк,билайн)
чтобы все работало нужно чтобы в папке профиля была папка sms  а в ней 3 файла 1:-"s_arhiv.html" в нем такие строчки "<menulist width="175" id="menulist_" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
        <menupopup>
        <menuitem label="otchet"/>l"
2:-"s_sprav.html" -"<select name="Pre" class="homer_" style="width: 75px;">;"
3:-"mega_.html" -

скрытый текст
<form id="sendsms" action="https://sendsms.megafon.ru/sms.action" method="post" enctype="multipart/form-data" >
        <input type="hidden" name="charcheck" value="йцукен"  />
    <input type="hidden" name="lang"      value=""  />
<div id="get" style="width:0px;height:0px" >
    <select style="width:0px;height:0px" name="prefix" tabindex='1'>
                    <option value="7926" name="prefix_f">+7 926</option>

                    <option value="7925" name="prefix_f">+7 495(925*)</option>
                    <option value="7921" name="prefix_f">+7 812(921*)</option>
                    <option value="7931" name="prefix_f">+7 931</option>
                    <option value="7920" name="prefix_f">+7 920</option>
                    <option value="7922" name="prefix_f">+7 922</option>
                    <option value="7923" name="prefix_f">+7 923</option>

                    <option value="7924" name="prefix_f">+7 924</option>
                    <option value="7927" name="prefix_f">+7 927</option>
                    <option value="7928" name="prefix_f">+7 928</option>
                    <option value="7937" name="prefix_f">+7 937</option>
                    <option value="7929" name="prefix_f">+7 929</option>
                    <option value="7930" name="prefix_f">+7 930</option>

                    <option value="7932" name="prefix_f">+7 932</option>
                    <option value="7938" name="prefix_f">+7 938</option>
                    <option value="7933" name="prefix_f">+7 933</option>
       
            </select>

    <input style="width:0px;height:0px" tabindex='2' maxlength="7" size="9" name="addr" type="text" id="addr" pp:pattern="[0-9]{7}" notice="Введите номер телефона абонента" placeholder="Номер телефона абонента" value=""/>



    <textarea style="width:0px;height:0px" tabindex='3' rows="4" cols="29" name="message" id="message" pp:pattern="string" maxlength="150" notice="Введите сообщение (не более 150 символов)" placeholder="Ваше сообщение"></textarea>

   

    <label style="width:0px;height:0px"><input style="width:0px;height:0px" tabindex='4' name="transliterate" id="transliterate" type="checkbox" onclick="javascript:calculate_len()"/></label>
    <label style="width:0px;height:0px"><input style="width:0px;height:0px" tabindex='5' value="on" id="send_after_flag" name="send_after_flag" type="checkbox" onclick="javascript:defer_onclick();" /></label>

   
   
    </div>
    <div id="recaptcha_widget">

    <div class="image-cell">
        <div style="border: 1.5px solid dimgray!important;" id="recaptcha_image"></div>

        <input type="text" id="recaptcha_response_field" name="recaptcha_response_field" pp:pattern="string" notice="Введите код с картинки" placeholder="Введите два слова с картинки" value="" />
    <a title="Обновить изображение" href="javascript:Recaptcha.reload()">reolad</a>
    </div>
   

</div>

<script type="text/javascript">

    var RecaptchaOptions = {
        theme : 'custom',
        custom_theme_widget: 'recaptcha_widget',
        lang : 'ru',
        tabindex: 3
       
    };
</script>

<script type="text/javascript"
    src="http://www.google.com/recaptcha/api/challenge?k=6Lc7XMUSAAAAAALuekCTAzdT5U0zeiEUQbTRZIBu">
</script>

   
</form>


иницыализация 
скрытый текст
this. onclick = function (event){
if (event. button == 0)
           {

function cbTranslatorButton (browser)
{
    this. doc = browser. contentDocument;
    this. win = browser. contentDocument. defaultView;
}
cbTranslatorButton. prototype =
{
    doc: null,
    win: null,
    toolbar: null,
    clse: null,
    sv: null,
    sav: null,
    sel_: null,
    iframe_: null,
    ntc_cookie: null,
   
    grabX: 0,
    origX: 0,
    grabY: 0,
    origY: 0,
/////////////////////////////////////////////////////////////////////////////////////////////////////
sel: function ()
    {
        var tqa = document.commandDispatcher.focusedElement
        if(tqa)
            {
                var uy=tqa.tagName
                var arr = [];
                arr[0] ='html:input'
                arr[1] ='INPUT'
                arr[2] ='TEXTAREA'
                var j = 0
                for(var i=0;i<arr.length;i++)
                    {
                        if (uy==arr[i])
                            {
                                var j = 1
                                break;
                            }
                    }
                if (j==1)
                    {
                        var as = tqa.value
                        var sell = as.substring(tqa.selectionStart, tqa.selectionEnd);
                        if(sell)
                            {
                                return sell;
                            }
                        return as
                    }
                else
                    {
                        var t = this.doc. defaultView. getSelection ();
                        if(t)
                            {
                                return t
                            }
                    }
            }
        var t = document. commandDispatcher. focusedWindow. getSelection (). toString ();
        if(t)
            {
                return t
            }
        var t = ''
        var t = t. toString ();
        return t
    },   
getS_otchet: function ()
    {
        var iframe=this. iframe_.contentDocument;
        var menulist_ = iframe.getElementById('menulist_').getAttribute('value')
        if(menulist_.length == 0){return}
        switch (menulist_.length)
        {   
            case 8:
                this.ntc_ochet(menulist_);
                break;
            case 16:
                this.mega_ochet(menulist_);
                break;
            default:
                this.beeline_otchet(menulist_)
                break;
        }
       
    },
s_otprav: function (event)
    {
        var iframe=this. iframe_.contentDocument;
        var flag = iframe.getElementById('fl');
        switch (flag.options[flag.selectedIndex].value)
        {   
            case 'bl':
                this.beeline_otprav();
                break;
            case 'mg':
                this.mega_otprav(menulist_);
                break;
            case 'nt':
                this.ntc_otprav();
                break;
        }
           
    },   
handleEvent: function (event)
    {
        switch (event. type)
        {
            case "mousedown":
                this. tbOnMouseDown (event);
                break;
            case "mousemove":
                this. tbOnMouseMove (event);
                break;
            case "mouseup":
                this. tbOnMouseUp (event);
                break;
            case "click":
                if(event. currentTarget. getAttribute ('id')=='s_otchet')
                    {
                        this.getS_otchet();
                        break
                    }
                if(event. currentTarget. getAttribute ('name')=='captchaSms')
                    {
                        this.img();
                        break
                    }   
                if(event. currentTarget. getAttribute ('id')=='s_otprav_id')
                    {
                        this.s_otprav();
                        break
                    }
                if(event. currentTarget. getAttribute ('id')=='sav_N')
                    {
                        this.sav_N();
                        break
                    }
                if(event. currentTarget. getAttribute ('name')=='Address22')
                    {
                        var iframe=this. iframe_.contentDocument;
                        iframe.getElementsByClassName('homer_')[0].selectedIndex=-1
                        iframe.getElementsByClassName('nom_')[0].value=''
                        break
                    }
                if(event. currentTarget. getAttribute ('id')=='s_sv')
                    {
                        this.sms_sv()
                        break
                    }   
                if(event. currentTarget. getAttribute ('id')=='sel_')
                    {
                        var iframe= this. iframe_. contentDocument;
                        iframe.getElementsByName('Message')[0].value=this.sel()
                        break
                    }
                if((event. currentTarget. getAttribute ('class')=='fl')||(event. currentTarget. getAttribute ('class')=='hom_'))
                    {
                        this.flag_click(event)
                        break
                    }   
                this. clseOnClick (event);
                break;
            case "load":
                this. frameOnLoad (event);
                break;
            default:;
        }
    },

tbOnMouseMove: function (event)
    {
        this. toolbar. style. left = this. origX + event. clientX - this. grabX + 'px';
        this. toolbar. style. top = this. origY + event. clientY - this. grabY + 'px';
    },
   
tbOnMouseUp: function (event)
    {
        this. doc. removeEventListener ('mousemove', this, false);
        this. toolbar. style. zIndex = 9997;
    },
   
tbOnMouseDown: function (event)
    {
        if (event. target == this. toolbar)
        {
            event. preventDefault ();
            this. toolbar. style. zIndex = 9998;
            this. grabX = event. clientX;
            this. grabY = event. clientY;
            this. origX = parseInt (this. toolbar. style. left);
            this. origY = parseInt (this. toolbar. style. top);
            this. doc. addEventListener ('mousemove', this, false);
            this. doc. addEventListener ('mouseup', this, false);
        }
    },
   
removeEventListener: function (element, eventType, captureFlag)
    {
        try
        {
            element. removeEventListener (eventType, this, captureFlag);
        }
        catch (err) {}
    },
   
removeElement: function (element)
    {
        try
        {
            element. parentNode. removeChild (element);
        }
        catch (err) {}
    },
   
clseOnClick: function (event)
    {
        this. iframe_.removeEventListener ('load', this, false);
        var iframe=this. iframe_. contentDocument;
        var captchaSms = iframe.getElementsByName('captchaSms')[0]
        var select= iframe.getElementsByTagName('select')[1]
        select.selectedIndex=-1
        for(var i=0; i < select.options.length; i++)
            {
                select.options[i]. removeEventListener('click', this, false);
            }
        var homer_= iframe.getElementsByClassName('homer_')[0]
        homer_.selectedIndex=-1
        for(var i=0; i < homer_.options.length; i++)
            {
                homer_.options[i]. removeEventListener('click', this, false);
            }
        iframe.getElementsByClassName('nom_')[0]. removeEventListener ('click', this, false);
        captchaSms. removeEventListener ('click', this, false);
        iframe.getElementById('s_otchet'). removeEventListener('click', this, false);
        iframe.getElementById('s_otprav_id'). removeEventListener('click', this, false);
        this. iframe_. setAttribute('src','about:blank')
        this. clse. removeEventListener ('click', this, false);
        this. sv. removeEventListener ('click', this, false);
        this. sav . removeEventListener ('click', this, false);
        this. sel_.removeEventListener ('click', this, false);
        this. removeEventListener (this. toolbar, 'mousedown', false);
        this. removeEventListener (this. doc, 'mousemove', false);
        this. removeEventListener (this. doc, 'mouseup', false);
        this. removeElement (this. sv);
        this. removeElement (this. sav);
        this. removeElement (this. sel_);
        this. removeElement (this. iframe_);
        this. removeElement (this. toolbar);
        this. clse = null;
        this. sv = null;
        this. sav = null;
        this. sel_ = null;
        this. toolbar = null;
        this. win = null;
        this. doc = null;
    },
ujs_createWindow: function ()
    {
        var doc = this. doc;
        toolbar = doc. createElement ('div');
        this. toolbar = toolbar;
        toolbar. innerHTML = '<div></div><button>close</button>'
        toolbar. setAttribute('style', 'position:fixed;background:aquamarine;display:block;visibility:hidden;left:0px;top:0;height:avto;width:avto;font:16px Times New Roman;border:1px solid gray;padding:3px;z-index:9997;overflow:visible;cursor:move;background-color:rgba(110,150,179,.59) !important;');
        toolbar. addEventListener ('mousedown', this, false);
        var clse = toolbar. lastChild;
        clse. setAttribute ('style', ' border: 1px solid rgba(0,0,0,.99)!important;background: transparent !important;border-radius: 3px;margin: 4px 3px 4px 0 !important;cursor:pointer;float:right;');
        this. clse = clse;
        clse. addEventListener ('click', this, false);
        var but= doc. createElement ('button')
        but. innerHTML='>'
        but. addEventListener ('click', this, false);
        this. sv = but;
        but. setAttribute('id','s_sv')
        but. setAttribute ('style', ' border: 1px solid rgba(0,0,0,.99)!important;background: transparent !important;border-radius: 3px;margin: 4px 3px 4px 0 !important;cursor:pointer;');
        toolbar.appendChild (but)
        var sav= doc. createElement ('button')
        sav. innerHTML='sav'
        sav. addEventListener ('click', this, false);
        this. sav = sav;
        sav. setAttribute('id','sav_N')   
        sav. setAttribute ('style', ' border: 1px solid rgba(0,0,0,.99)!important;background: transparent !important;border-radius: 3px;margin: 4px 3px 4px 0 !important;cursor:pointer;');
        toolbar. appendChild (sav);
        var but= doc. createElement ('button')
        but. innerHTML='sel'
        but. addEventListener ('click', this, false);
        this. sel_ = but;
        but. setAttribute('id','sel_')
        but. setAttribute('style', 'border: 1px solid rgba(0,0,0,.99)!important;background: transparent !important;border-radius: 3px;margin: 4px 3px 4px 0 !important;cursor:pointer;');
        toolbar. appendChild (but)
       
        var iframe_= doc. createElement ('iframe')
        this. iframe_ = iframe_;
        iframe_. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;width:335px;overflow:auto;cursor:text;');
        iframe_.style.height='343px'
        iframe_. addEventListener ('load', this, false);
        iframe_. setAttribute('id','iframe_osnov')
        iframe_. setAttribute('src','about:blank')
        toolbar.firstChild. appendChild (iframe_);
        doc. documentElement. appendChild (toolbar);
        var halfWidth = parseInt (toolbar. offsetWidth / 2);
       
        toolbar. style. left = 470 + "px";
        toolbar. style. top = 20 + "px";
        toolbar. style. visibility = 'visible';
        return
    },
frameOnLoad: function (event)
    {
        var doc = this. doc;
        var iframe = event. currentTarget;
        iframe. removeEventListener ('load', this, false);
        var t= this.sel()
        var tl=t.length
       
        var propertiesService = Cc["@mozilla.org/file/directory_service;1"]
                            .getService(Ci.nsIProperties);
        var currProfD = propertiesService.get("ProfD", Ci.nsIFile);
        var profileDir = currProfD.path;
        var aUrl="s_sprav.html"
        var file_=this.menulist(aUrl)+'</select>';
       
        var Form='<form class="form" name="Submit" style="width: 315px;" id="osnovnaiFORMAindexd" action="http://vntc.ru/berkut/indexd.php?sub=1" accept-charset="windows-1251" method="post" >'
        var Form1='</form>'
        var obnov='<nobr> - <select id="fl" style="width: 75px;"><option value="bl" class="fl" >beeline</option><option value="nt" class="fl" selected="selected">ntc</option><option value="mg" class="fl">mega</option></select></nobr>';
        var capshaq ='<div><img src="data:image/png;base64,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" name="captchaSms" style="margin-left: 20%;margin-top: 9px; border: 1.5px solid dimgray!important;height: 40px;width: 130px;"></div>'
        var SelectN=file_
        var nomer='<nobr>+7 <input style="width: 75px;" class="nom_" name="Address22" type="text" maxlength="10"> - </nobr>'
        var Flash= '<input name="Flashsm" style="width:0px;" value="" type="checkbox">Flash' 
        var Textarea='<textarea rows="4" cols="36" name="Message"   onkeyup="Javascript: ele = this.form;Msg = ele.Message.value;Msglen= Msg.length;if (Msglen > 520) ele.Message.value=Msg.substring(0, 520);ele.sms_gate_charcount.value = ele.Message.value.length;" onchange="Javascript: ChangeCharCount(this.form)" >'+t+'</textarea>'
        var capsha='<input  style="margin-left: 20%;width: 131px;" name="keystring2" value="" id="capsha" type="text"><br><br>'
        var length='<input id="sms_gate_charcount" style="height:16px;width: 32px;" value="'+tl+'">RU:70-ENG:160'
        var delet='<td colspan="7"><nobr><input  value="Del" onclick="ty3= new String();this.form.Message.value=ty3" type="button"></nobr></td>'
        var StatysSmsBar='<input type="text" style="height:22px;width: 310px;" id="StatysSmsBar" >'

        var otprav= doc. createElement ('button')
        otprav. innerHTML='отп'
        otprav. addEventListener ('click', this, false);
        otprav. setAttribute('id','s_otprav_id')
        var l='</menupopup></menulist>';   
        var file_=this.menulist("s_arhiv.html")+'</menupopup></menulist>';
        var menulist = custombuttonsUtils. makeXML (file_);
   
        var otchet= doc. createElement ('button')
        otchet. innerHTML='отчет'
        otchet. addEventListener ('click', this, false);
        otchet. setAttribute('id','s_otchet')
        var iframe = iframe. contentDocument;
        var file_=Form+nomer+SelectN+obnov+capshaq+capsha+delet+length+Flash+Textarea+StatysSmsBar+Form1+'<div></div>';
        iframe.write(file_);
        var captchaSms = iframe.getElementsByName('captchaSms')[0];
        captchaSms. addEventListener ('click', this, false);
        var body = iframe. getElementsByTagName ("body")[0];
        var select= iframe.getElementsByTagName('select')[1];
        select.selectedIndex=-1;
        for(var i=0; i < select.options.length; i++)
            {
                select.options[i]. addEventListener ('click', this, false);
            }
        var homer_= iframe.getElementsByClassName('homer_')[0]
        homer_.selectedIndex=-1
        for(var i=0; i < homer_.options.length; i++)
            {
                homer_.options[i]. addEventListener ('click', this, false);
            }
        iframe.getElementsByClassName('nom_')[0]. addEventListener ('click', this, false);
        body.insertBefore(otprav, body.lastChild );
        body.insertBefore(menulist, body.lastChild );
        body.insertBefore(otchet, body.lastChild );
    },
menulist: function (aURL)
    {
        var propertiesService = Cc["@mozilla.org/file/directory_service;1"]
                            .getService(Ci.nsIProperties);
        var currProfD = propertiesService.get("ProfD", Ci.nsIFile);
        var profileDir = currProfD.path;
        desktopPath = currProfD.path+"\\sms\\";
        var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
        file.initWithPath(desktopPath);
        file.append(aURL)
        var data     = new String();
        var fiStream = Components.classes['@mozilla.org/network/file-input-stream;1']
                            .createInstance(Components.interfaces.nsIFileInputStream);
        var siStream = Components.classes['@mozilla.org/scriptableinputstream;1']
                      .createInstance(Components.interfaces.nsIScriptableInputStream);
        fiStream.init(file, 1, 0, false);
        siStream.init(fiStream);
        data = siStream.read(-1);
        var utf8Converter = Components.classes["@mozilla.org/intl/utf8converterservice;1"]
                            .getService(Components.interfaces.nsIUTF8ConverterService); 
        var data = utf8Converter.convertURISpecToUTF8 (data, "UTF-8"); 
        siStream.close();
        fiStream.close();
        return data;
    },
sav_: function (text,nam_e)
    {
        var propertiesService = Cc["@mozilla.org/file/directory_service;1"]
                            .getService(Ci.nsIProperties);
        var currProfD = propertiesService.get("ProfD", Ci.nsIFile);
        var profileDir = currProfD.path;
        desktopPath = currProfD.path+"\\sms\\";
        var directoryService = Components.classes['@mozilla.org/file/directory_service;1'].getService(Components.interfaces.nsIProperties);
        var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
        file.initWithPath(desktopPath);
        file.append(nam_e)
        var stream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
        var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].createInstance(Components.interfaces.nsIConverterOutputStream);
        stream.init(file, 0x02 | 0x10, 0664, 0);
        converter.init(stream, "UTF-8", 0, 0x0000);
        converter.writeString(text,"UTF-8");
        converter.close();
        stream.close();
    },
img: function ()
    {
        var iframe=this. iframe_.contentDocument;
        var captchaSms = iframe.getElementsByName('captchaSms')[0]
        var flag = iframe.getElementById('fl')
        if(flag.options[flag.selectedIndex].value=='nt')
            {
                captchaSms. setAttribute('src','http://vntc.ru/kcaptcha/index.php?PHPSESSID='+this.ntc_cookie+Math.random());
            }
        if(flag.options[flag.selectedIndex].value=='bl')
            {
                xmlhttp = new XMLHttpRequest()
                var mim = "http://www.beeline.ru/mamimg.aspx?width=120&height=30";
                var r = Math.random();
                mim = mim + "&r=" + r;   
                xmlhttp.open('GET',mim, false);
                xmlhttp.setRequestHeader('Accept', 'image/png,image/*;q=0.8,*/*;q=0.5')
                xmlhttp.setRequestHeader('Accept-Language', 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3')
                xmlhttp.setRequestHeader('Accept-Encoding', 'gzip, deflate')
                xmlhttp.setRequestHeader('Accept-Charset', 'windows-1251,utf-8;q=0.7,*;q=0.7')
                xmlhttp.setRequestHeader('Connection', 'keep-alive')
                xmlhttp.setRequestHeader('Host', 'www.beeline.ru')
                xmlhttp.setRequestHeader('DNT', '1')
                xmlhttp.setRequestHeader('Referer', 'https://www.beeline.ru/sms/index.wbp')
                xmlhttp.onreadystatechange = function()
                    {
                        captchaSms.src = mim ;
                    }
                xmlhttp.send(null);
            }
    },
flag_click: function (event)
    {
        var iframe=this. iframe_.contentDocument;
        var captchaSms = iframe.getElementsByName('captchaSms')[0]
        var flag = iframe.getElementById('fl')
        var doc = this. doc;
        if(event. currentTarget.parentNode.hasAttribute('class'))
            {
                var nom=event. currentTarget. getAttribute ('title')
                iframe.getElementsByName('Address22')[0].value=nom
                if(event. currentTarget. getAttribute ('value')=='bl')
                    {
                        flag.selectedIndex=0
                    }
                if(event. currentTarget. getAttribute ('value')=='nt')
                    {
                        flag.selectedIndex=1
                    }   
                if(event. currentTarget. getAttribute ('value')=='mg')
                    {
                        flag.selectedIndex=2
                    }   
            }
        if(event. currentTarget.value=='mg')
            {
                if(iframe.getElementById('FrameMegafon'))
                    {
                        return
                    }   
                else
                    {   
                        doc.getElementById('iframe_osnov').style.height='380px'
                        var frame = doc. createElement ('iframe');
                        frame. setAttribute ('style', 'width:0px;height:0px;')
                        frame. setAttribute ('id', 'FrameMegafon')
                        frame. setAttribute ('frameborder', '0')
                        frame. setAttribute ('seamless',null)
                        frame. setAttribute('src','about:blank')
                        captchaSms.parentNode.insertBefore(frame, captchaSms)
                        frame. setAttribute ('style', 'width:320')
                        captchaSms. setAttribute ('style', 'width:0px;height:0px;')
                        captchaSms.parentNode.nextSibling . setAttribute ('style', 'display: none')
                        captchaSms.parentNode.nextSibling .nextSibling . setAttribute ('style', 'display: none')
                        captchaSms.parentNode.nextSibling .nextSibling .nextSibling . setAttribute ('style', 'display: none')
                        iframe.getElementById('sms_gate_charcount').nextSibling. textContent='RU:60-ENG:150'
                        iframe.getElementById('sms_gate_charcount').nextSibling.nextSibling. setAttribute ('disabled', 'true')
                        var file_=this.menulist("mega_.html")
                        frame. setAttribute('src','https://sendsms.megafon.ru')
                        frame. contentDocument.location.href='https://sendsms.megafon.ru'
                        frame. contentDocument.write(file_);
                        frame. contentDocument.close();
                       
                    }
            }
        if((event. currentTarget.value=='bl')||(event. currentTarget.value=='nt'))
            {   
                var mg=iframe.getElementById('FrameMegafon')
                if(iframe.getElementById('FrameMegafon'))
                    {
                        iframe.getElementById('FrameMegafon'). parentNode. removeChild (iframe.getElementById('FrameMegafon'));
                        captchaSms. setAttribute ('style', 'margin-left: 20%;margin-top: 9px; border: 1.5px solid dimgray!important;height: 40px;width: 130px;')
                        captchaSms.parentNode.nextSibling . setAttribute ('style', 'margin-left: 20%;width: 131px;display: -moz-box;')
                        captchaSms.parentNode.nextSibling .nextSibling . setAttribute ('style', 'display: -moz-box;')
                        captchaSms.parentNode.nextSibling .nextSibling .nextSibling . setAttribute ('style', 'display: -moz-box;')
                        doc.getElementById('iframe_osnov').style.height='343px'
                    }
                if(event. currentTarget.value=='nt')
                    {
                        iframe.getElementById('sms_gate_charcount').nextSibling. textContent='RU:70-ENG:160'
                        iframe.getElementById('sms_gate_charcount').nextSibling.nextSibling.removeAttribute ('disabled')
                        if(!(this.ntc_cookie))
                            {
                                OBJ=this
                                xmlhttp_ = new XMLHttpRequest()
                                xmlhttp_.open('GET',"http://vntc.ru/mobile/gsm/sms.php", false);
                                xmlhttp_.onreadystatechange = function()
                                    {
                                        var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
                                        var uri = ios.newURI("http://vntc.ru/", null, null);
                                        var cookieSvc = Components.classes["@mozilla.org/cookieService;1"].getService(Components.interfaces.nsICookieService);
                                        var cookie = cookieSvc.getCookieString(uri, null);
                                        var ind=cookie.indexOf('PHPSESSID=')+10
                                        var cookie_ =cookie.slice(ind,ind+26)
                                        OBJ.ntc_cookie=cookie_
                                        var iframe=OBJ. iframe_.contentDocument;
                                        var captchaSms = iframe.getElementsByName('captchaSms')[0]
                                        captchaSms. setAttribute('src','http://vntc.ru/kcaptcha/index.php?PHPSESSID='+cookie_+Math.random())
                                        OBJ=null
                                    }
                                xmlhttp_.send(null);
                            }
                        else
                            {
                                var cookieManager = Components.classes["@mozilla.org/cookiemanager;1"]
                                        .getService(Components.interfaces.nsICookieManager);
                                cookieManager.remove('vntc.ru', 'BITRIX_SM_GUEST_ID', '/', null)   
                                cookieManager.remove('vntc.ru', 'BITRIX_SM_LAST_VISIT', '/', null)   
                                cookieManager.remove('vntc.ru', 'PHPSESSID', '/', null)
                                var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
                                var cookieUri = ios.newURI("http://vntc.ru/", null, null);
                                var cookieSvc = Components.classes["@mozilla.org/cookieService;1"].getService(Components.interfaces.nsICookieService);
                                cookieSvc.setCookieString(cookieUri, null, 'PHPSESSID='+this.ntc_cookie, null);
                                captchaSms. setAttribute('src','http://vntc.ru/kcaptcha/index.php?PHPSESSID='+cookie_+Math.random())
                            }
                    }
                if(event. currentTarget.value=='bl')
                    {
                        xmlhttp = new XMLHttpRequest()
                        var mim = "http://www.beeline.ru/mamimg.aspx?width=120&height=30";
                        var r = Math.random();
                        mim = mim + "&r=" + r;   
                        xmlhttp.open('GET',mim, false);
                        xmlhttp.setRequestHeader('Accept', 'image/png,image/*;q=0.8,*/*;q=0.5')
                        xmlhttp.setRequestHeader('Accept-Language', 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3')
                        xmlhttp.setRequestHeader('Accept-Encoding', 'gzip, deflate')
                        xmlhttp.setRequestHeader('Accept-Charset', 'windows-1251,utf-8;q=0.7,*;q=0.7')
                        xmlhttp.setRequestHeader('Connection', 'keep-alive')
                        xmlhttp.setRequestHeader('Host', 'www.beeline.ru')
                        xmlhttp.setRequestHeader('DNT', '1')
                        xmlhttp.setRequestHeader('Referer', 'https://www.beeline.ru/sms/index.wbp')
                        xmlhttp.onreadystatechange = function()
                            {
                                captchaSms.src = mim ;
                            }
                        xmlhttp.send(null);
                        iframe.getElementById('sms_gate_charcount').nextSibling. textContent='RU:50-ENG:140'
                        iframe.getElementById('sms_gate_charcount').nextSibling.nextSibling. setAttribute ('disabled', 'true')
                    }
            }
    },   
sav_N: function ()
    {
        var doc = this.doc
        var iframe=this. iframe_. contentDocument;
        var nomer = iframe.getElementsByName('Address22')[0].value
        var flag = iframe.getElementById('fl')
        var value_F =flag.options[flag.selectedIndex].value
        var fl=iframe.getElementById('FrameMegafon')
        if(fl)
            {
                var ime = fl. contentDocument.getElementById('recaptcha_response_field').value
            }
        else
            {
                var ime = iframe.getElementsByName('keystring2')[0].value
            }
        var res = '<option class="hom_" value="'+value_F+'" title='+nomer+'>'+ime+'</option> \r\n'
        var n = doc. createElement ('option');
        n. innerHTML=ime
       
        n. setAttribute ('class', 'hom_')
        n. setAttribute ('value', value_F)
        n. setAttribute ('title', nomer)
        n. addEventListener ('click', this, false);
        var nam_e='s_sprav.html'
        iframe.getElementsByName('Pre')[0]. appendChild (n)
        iframe.getElementsByName('Pre')[0].selectedIndex=-1
        this.sav_(res,nam_e)
    },
sms_sv: function (event)
    {
        var iframe=this. iframe_.contentDocument;
        var doc = this. doc;
        var fl=iframe.getElementById('FrameMegafon')
        if(fl)
            {
                var f = doc.getElementById('iframe_osnov')
                if(f.style.height== "0px")
                    {
                       
                        f. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:380px;width:335px;overflow:auto;cursor:text;');
                    }
                else
                    {
                        f. setAttribute('style','height:0px;width:335px;')
                    }
            }
        else
            {
                var f = doc.getElementById('iframe_osnov')
                if(f.style.height== "0px")
                    {
                       
                        f. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:343px;width:335px;overflow:auto;cursor:text;');
                    }
                else
                    {
                        f. setAttribute('style','height:0px;width:335px;')
                    }
            }
    },           
beeline_otprav: function (event)
    {
        OBJ=this
        var THIS=this
        xmlhtt = new XMLHttpRequest()
        xmlhtt.open('GET',"https://www.beeline.ru/sms/index.wbp", false);
        xmlhtt.onreadystatechange = function()
            {
                var doc = getBrowser (). contentDocument;
                var iframe= doc.getElementById('iframe_osnov')
                var iframe=iframe. contentDocument;
                var nomer = iframe.getElementsByName('Address22')[0].value
                var TolbarSms = iframe.getElementById('StatysSmsBar')
                var smstoprefix=nomer.slice(0,3)
                var smsto=nomer.slice(3,10)
                var smstext=iframe.getElementsByName('Message')[0].value
                var obj = doc.createElement ('html');
                obj. innerHTML =xmlhtt.responseText
                var afcode=obj.getElementsByTagName('form')[1].nextSibling.nextSibling.nextSibling.value
                var confirmcode=iframe.getElementById('capsha').value
                var params = 'send='+'&smstext=' + encodeURIComponent(smstext) + '&afcode=' +afcode+ '&smstoprefix='+smstoprefix+'&smsto='+smsto+'&dirtysmstext='+ encodeURIComponent(smstext)+'&confirm_key='+'&confirmcode='+confirmcode+'&x='+'&y='
                xmlhttp = new XMLHttpRequest()
                xmlhttp.open('POST',"https://www.beeline.ru/sms/index.wbp", true);
                xmlhttp.setRequestHeader('Accept-Language', 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3')
                xmlhttp.setRequestHeader('Accept-Encoding', 'gzip, deflate')
                xmlhttp.setRequestHeader('Accept-Charset', 'windows-1251,utf-8;q=0.7,*;q=0.7')
                xmlhttp.setRequestHeader('Connection', 'keep-alive')
                xmlhttp.setRequestHeader('Host', 'www.beeline.ru')
                xmlhttp.setRequestHeader('DNT', '1')
                xmlhttp.setRequestHeader('Referer', 'https://www.beeline.ru/sms/index.wbp')
                xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
                xmlhttp.setRequestHeader('Content-Length', '')
                xmlhttp.onreadystatechange = function()
                    {
                        var obj = getBrowser (). contentDocument.createElement ('html');
                        obj. innerHTML =xmlhttp.responseText
                        if(obj .getElementsByClassName('btext')[0])
                            {
                                var t = obj .getElementsByClassName('btext')[0]. innerHTML
                                if(t.length==81)
                                    {
                                        var cod = obj .getElementsByClassName('btext')[0].previousSibling.value
                                        var doc = getBrowser (). contentDocument;
                                        var iframe= doc.getElementById('iframe_osnov')
                                        var iframe=iframe. contentDocument;
                                        var TolbarSms = iframe.getElementById('StatysSmsBar')
                                        TolbarSms.value=t.slice(t.length-56,t.length)   
                                        var flag = iframe.getElementById('fl').options[iframe.getElementById('fl').selectedIndex].value
                                        var menulist_ = iframe.getElementById('menulist_')
                                        var nomer = iframe.getElementsByName('Address22')[0].value
                                        var name = iframe.getElementsByName('Pre')[0]
                                        if ( name.selectedIndex != -1)
                                            {
                                                var name1 =name.options[name.selectedIndex].value+' ';
                                            }
                                        else{var name1 ='_'}
                                        var now = new Date();
                                        var thisMonth = now.getMonth() +'/'+now.getDate()+"_"+now.getHours()+':'+now.getMinutes()+'_';
                                        var l='<menuitem xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" class="'+flag+'" label="'+thisMonth+name1+nomer+'" value="'+cod+'"/> \r\n';
                                        var nam_e='s_arhiv.html'
                                        OBJ.sav_(l,nam_e)
                                        OBJ=null
                                        var l= custombuttonsUtils. makeXML (l);
                                        menulist_.firstChild. appendChild (l)
                                    }
                                else
                                    {
                                        TolbarSms.value=t
                                    }
                           
                            }
                        var ff=xmlhttp.responseText
                    }
                xmlhttp.send(params)
            }
        xmlhtt.send(null);
    },           
beeline_otchet: function (menulist_)
    {
        var params = 'smsid=' +menulist_+ '&x='+'&y='
        xmlhttp = new XMLHttpRequest()
        xmlhttp.open('POST',"https://www.beeline.ru/sms/index.wbp", false);
        xmlhttp.setRequestHeader('Accept-Language', 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3')
                xmlhttp.setRequestHeader('Accept-Encoding', 'gzip, deflate')
                xmlhttp.setRequestHeader('Accept-Charset', 'windows-1251,utf-8;q=0.7,*;q=0.7')
                xmlhttp.setRequestHeader('Connection', 'keep-alive')
                xmlhttp.setRequestHeader('Host', 'www.beeline.ru')
                xmlhttp.setRequestHeader('DNT', '1')
                xmlhttp.setRequestHeader('Referer', 'https://www.beeline.ru/sms/index.wbp')
                xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
                xmlhttp.setRequestHeader('Content-Length', '')
                xmlhttp.onreadystatechange = function()
                    {
                        var obj = getBrowser (). contentDocument.createElement ('html');
                        obj. innerHTML =xmlhttp.responseText
                        var t = obj .getElementsByClassName('btext')[0]. innerHTML
                        var doc = getBrowser (). contentDocument;
                        var iframe= doc.getElementById('iframe_osnov')
                        var iframe=iframe. contentDocument;
                        iframe.getElementById('StatysSmsBar').value=t
                    }
                xmlhttp.send(params)
    },
mega_otprav: function ()
    {   
        var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
        var uri = ios.newURI("https:/megafon.ru/", null, null);
        var cookieSvc = Components.classes["@mozilla.org/cookieService;1"].getService(Components.interfaces.nsICookieService);
        var cookie = cookieSvc.getCookieString(uri, null);
       
        if( cookie== null || cookie.indexOf('bookmarks')==-1)
            {
                var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
                var cookieUri = ios.newURI("https://megafon.ru/", null, null);
                var cookieSvc = Components.classes["@mozilla.org/cookieService;1"].getService(Components.interfaces.nsICookieService);
                cookieSvc.setCookieString(cookieUri, null, 'bookmarks=eNpLtDKwqq4FAAZPAf4%3D;', null);
            }   
        OBJ=this
        var iframe=this. iframe_.contentDocument;
        var doc = this. doc;
        var iframe_mg=iframe.getElementById('FrameMegafon').contentDocument;
        var nomer = iframe.getElementsByName('Address22')[0].value
        var smstoprefix='7'+nomer.slice(0,3)
        var smsto=nomer.slice(3,10)
        var smstext=iframe.getElementsByName('Message')[0].innerHTML
        var Message_=iframe_mg.getElementsByName('message')[0]
        var TolbarSms = iframe.getElementById('StatysSmsBar')
        var form_ = iframe_mg.getElementById('sendsms')
        var select_Prefix = iframe_mg.getElementsByName('prefix')[0]
        var mg_homer = iframe_mg.getElementsByName('addr')[0]
        for(var i=0; i < select_Prefix.options.length; i++)
            {
                var res=select_Prefix.options[i];
                if(res.value==smstoprefix)
                    {
                        res. setAttribute('selected','selected')
                    }
            }
        mg_homer. setAttribute('value',smsto)
        Message_.innerHTML=smstext
        var doc = getBrowser (). contentDocument;
        var iframe= doc.getElementById('iframe_osnov'). contentDocument;
        var iframe_mg=iframe.getElementById('FrameMegafon').contentDocument;
        var form_ = iframe_mg.getElementById('sendsms')
        var formData = new FormData(form_);
        xmlhttp = new XMLHttpRequest()
        xmlhttp.open('POST',"https://sendsms.megafon.ru/sms.action", true);
        xmlhttp.setRequestHeader('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
        xmlhttp.setRequestHeader('Accept-Language', 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3')
        xmlhttp.setRequestHeader('Accept-Encoding', 'gzip, deflate')
        xmlhttp.setRequestHeader('Accept-Charset', 'windows-1251,utf-8;q=0.7,*;q=0.7')
        xmlhttp.setRequestHeader('Connection', 'close')
        xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache")
        xmlhttp.setRequestHeader('Host', 'sendsms.megafon.ru')
        xmlhttp.setRequestHeader('DNT', '1')
        xmlhttp.setRequestHeader('Referer', 'https://sendsms.megafon.ru/')
        //xmlhttp.setRequestHeader('Cookie', 'form[prefix]='+smstoprefix+';form[addr]='+smsto+';')
        //xmlhttp.setRequestHeader('Content-Type', 'multipart/form-data; boundary=---------------------------41184676334')
        xmlhttp.setRequestHeader('Content-Length', '')
                xmlhttp.onreadystatechange = function()
                    {
                        var doc = getBrowser (). contentDocument;
                        var obj_ = doc.createElement ('html');
                        obj_. innerHTML =xmlhttp.responseText
                        var iframe= doc.getElementById('iframe_osnov')
                        var iframe=iframe. contentDocument;
                        var flag = iframe.getElementById('fl').options[iframe.getElementById('fl').selectedIndex].value
                        var menulist_ = iframe.getElementById('menulist_')
                        var nomer = iframe.getElementsByName('Address22')[0].value
                        var name = iframe.getElementsByName('Pre')[0]
                        if ( name.selectedIndex != -1)
                            {
                                var name1 =name.options[name.selectedIndex].value+' ';
                            }
                        else{var name1 ='_'}
                        var TolbarSms = iframe.getElementById('StatysSmsBar')
                        var statys_=obj_ .getElementsByClassName('backnav')[0].nextSibling.nextSibling. innerHTML
                        for(;;)
                        {
                            var index =statys_.indexOf('    ')
                            var inde=statys_.indexOf(' ')
                            if(index==1||inde==1||index==0||inde==0)
                                {
                                    statys_=statys_.slice(1,statys_.length)
                                                       
                                }
                            else
                                {
                                    break;
                                }
                        }       
                        var st_=obj_ .getElementsByClassName('backnav')[0].nextSibling.nextSibling
                        var cl =st_. hasAttribute('class')
                        if(!cl)
                            {
                                var index =statys_.indexOf('SMS-')
                                if(!(index==-1))
                                    {
                                       
                                       
                                        var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
                                        var uri = ios.newURI("https://sendsms.megafon.ru/", null, null);
                                        var cookieSvc = Components.classes["@mozilla.org/cookieService;1"].getService(Components.interfaces.nsICookieService);
                                        var cookie = cookieSvc.getCookieString(uri, null);
                                        if(cookie.indexOf('checkstatus=')==-1)
                                            {
                                                TolbarSms.value=statys_
                                            }   
                                        else
                                            {
                                                var index =cookie.indexOf('checkstatus=')
                                                var cod=cookie.slice(index+12,index+28)
                                                var now = new Date();
                                                var thisMonth = now.getMonth() +'/'+now.getDate()+"_"+now.getHours()+':'+now.getMinutes()+'_';
                                                var l='<menuitem xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" class="'+flag+'" label="'+thisMonth+name1+nomer+'" value="'+cod+'"/> \r\n';
                                                var nam_e='s_arhiv.html'
                                                OBJ.sav_(l,nam_e)
                                                OBJ=null
                                                var l= custombuttonsUtils. makeXML (l);
                                                menulist_.firstChild. appendChild (l)
                                                xmlhttp_ = new XMLHttpRequest()
                                                xmlhttp_.open('GET',"https://sendsms.megafon.ru/send/status/checkstatus", false);
                                                xmlhttp_.onreadystatechange = function()
                                                    {
                                                        var doc = getBrowser (). contentDocument;
                                                        var obj_ = doc.createElement ('html');
                                                        obj_. innerHTML =xmlhttp_.responseText
                                                        var time=obj_ .getElementsByClassName('value')[0]. innerHTML
                                                        var statys_=obj_ .getElementsByClassName('value')[1]. innerHTML
                                                        for(;;)
                                                        {
                                                            var index =statys_.indexOf('    ')
                                                            var inde=statys_.indexOf(' ')
                                                            if(index==1||inde==1||index==0||inde==0)
                                                                {
                                                                    statys_=statys_.slice(1,statys_.length)
                                                       
                                                                }
                                                            else
                                                                {
                                                                    break;
                                                                }
                                                        }       
                                                        var iframe= doc.getElementById('iframe_osnov')
                                                        var iframe=iframe. contentDocument;
                                                        var TolbarSms = iframe.getElementById('StatysSmsBar')
                                                        var v =time.slice(time.length-5,time.length)
                                                        var min=time.slice(time.length-3,time.length)
                                                        var v_arr=time.split(' ',2)
                                                        var hours=v.slice(0,2)
                                                        var hours=parseInt(hours, 10)
                                                        var Time = new Date();
                                                        var Time1 = new Date();
                                                        Time1.setHours(hours);
                                                        Time.setHours(07);
                                                        Time1.setHours(Time1.getHours()+Time.getHours());
                                                        var res=v_arr[0]+'.'+v_arr[1].slice(0,3)+'_'+Time1.getHours().toString()+min+' '+statys_
                                                        TolbarSms.value=res
                                                    }
                                                xmlhttp_.send(null);   
                                            }
                                    }
                                else
                                    {
                                        TolbarSms.value=statys_
                                    }
                            }
                        else
                            {
                                TolbarSms.value=statys_
                            }
                    }
        xmlhttp.send(formData)               
    },
mega_ochet: function (menulist_)
    {   
        var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
        var cookieUri = ios.newURI("https://sendsms.megafon.ru/", null, null);
        var cookieSvc = Components.classes["@mozilla.org/cookieService;1"].getService(Components.interfaces.nsICookieService);
        cookieSvc.setCookieString(cookieUri, null, 'checkstatus='+menulist_+';"', null);
        xmlhttph = new XMLHttpRequest()
        xmlhttph.open('GET',"https://sendsms.megafon.ru/send/status/checkstatus", false);
        xmlhttph.onreadystatechange = function()
            {
                var doc = getBrowser (). contentDocument;
               
                var obj_ = doc.createElement ('html');
                obj_. innerHTML =xmlhttph.responseText
                var iframe= doc.getElementById('iframe_osnov'). contentDocument;
                var TolbarSms = iframe.getElementById('StatysSmsBar')
                var fl=obj_ .getElementsByClassName('value') .length
                if(fl==0)
                    {
                        TolbarSms.value='отчет удален с сервера'
                    }
                else
                    {
                       
                        var time=obj_ .getElementsByClassName('value')[0]. innerHTML
                        var statys_=obj_ .getElementsByClassName('value')[1]. innerHTML
                       
                        for(;;)
                        {
                            var index =statys_.indexOf('    ')
                            var inde=statys_.indexOf(' ')
                            if(index==1||inde==1||index==0||inde==0)
                                {
                                        statys_=statys_.slice(1,statys_.length)               
                                }
                            else
                                {
                                    break;
                                }
                        }       
                        var v =time.slice(time.length-5,time.length)
                        var min=time.slice(time.length-3,time.length)
                        var v_arr=time.split(' ',2)
                        var hours=v.slice(0,2)
                        var hours=parseInt(hours, 10)
                        var Time = new Date();
                        var Time1 = new Date();
                        Time1.setHours(hours);
                        Time.setHours(07);
                        Time1.setHours(Time1.getHours()+Time.getHours());
                        var res=v_arr[0]+'.'+v_arr[1].slice(0,3)+'_'+Time1.getHours().toString()+min+' '+statys_
                        TolbarSms.value=res
                       
                    }
            }
        xmlhttph.send(null);   
    },
ntc_otprav: function ()
    {
       
        OBJ=this
        var iframe=this. iframe_.contentDocument;
        var formData ='Prefix=7902065&'+'Address=&'+'Address22='+iframe.getElementsByName('Address22')[0].value+'&'
        if(iframe.getElementsByName('Flashsm')[0].value==1)
            {
                formData=formData+'Flashsm=&'
            }
        formData=formData+'keystring2='+iframe.getElementsByName('keystring2')[0].value+'&'
        var data =iframe.getElementsByName('Message')[0].value
        var converter = Components.classes['@mozilla.org/intl/texttosuburi;1']
                          .createInstance(Components.interfaces.nsITextToSubURI);
        var data = converter.ConvertAndEscape('windows-1251', data);
        formData=formData+'Message='+ data+';'
        xmlhttp = new XMLHttpRequest()
        xmlhttp.open('POST',"http://vntc.ru/berkut/indexd.php?sub=1", true);
        xmlhttp.overrideMimeType('text/plain;charset=windows-1251');
        xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
        xmlhttp.setRequestHeader('Content-Length', '')
        xmlhttp.onreadystatechange = function()
            {
                //var doc = getBrowser (). contentDocument;
                //doc. getElementsByTagName ("body")[0].innerHTML=xmlhttp.responseText
                var doc = getBrowser (). contentDocument;
                var iframe= doc.getElementById('iframe_osnov'). contentDocument;
                var flag = iframe.getElementById('fl').options[iframe.getElementById('fl').selectedIndex].value
                var nomer = iframe.getElementsByName('Address22')[0].value
                var name = iframe.getElementsByName('Pre')[0]
                if ( name.selectedIndex != -1)
                    {
                        var name1 =name.options[name.selectedIndex].innerHTML+' ';
                    }
                else{var name1 ='_'}
                var now = new Date();
                var thisMonth = now.getMonth() +'/'+now.getDate()+"_"+now.getHours()+':'+now.getMinutes()+'_';
                var menulist_ = iframe.getElementById('menulist_')
                var TolbarSms = iframe.getElementById('StatysSmsBar')
                var obj = getBrowser (). contentDocument.createElement ('html');
                obj. innerHTML =xmlhttp.responseText
                var nom= obj. getElementsByTagName ("B") [0];
                var nom1= nom.innerHTML
                var tex =nom.parentNode.innerHTML
                var index_teg =tex.indexOf('<')-2
                for(;;)
                {
                    if(tex.length==1)
                        {
                            break;
                        }
                    if(tex.indexOf('    ')==1||tex.indexOf(' ')==1||tex.indexOf('    ')==0||tex.indexOf(' ')==0)
                        {
                            tex=tex.slice(1,tex.length)               
                        }
                    else
                        {
                            break;
                        }
                }   
                tex=tex.slice(0,index_teg)
               
                if(nom1.length == 8)
                    {
                        var l='<menuitem xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" class="'+flag+'" label="'+thisMonth+name1+nomer+'" value="'+nom1+'"/> \r\n';
                        var nam_e='s_arhiv.html'
                        OBJ.sav_(l,nam_e)
                        TolbarSms.value=nom1
                        var l= custombuttonsUtils. makeXML (l);
                        menulist_.firstChild. appendChild (l)
                        OBJ=null
                        var formData ='Identity='+nom1+'&Submit=%CF%F0%EE%E2%E5%F0%E8%F2%FC'
                        xmlhttp = new XMLHttpRequest()
                        xmlhttp.open('POST',"http://vntc.ru/berkut/Queryb.php", true);
                        xmlhttp.overrideMimeType('text/plain;charset=windows-1251');
                        xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
                        xmlhttp.setRequestHeader('Content-Length', '')
                        xmlhttp.onreadystatechange = function()
                            {
                                var doc = getBrowser (). contentDocument;
                                var iframe= doc.getElementById('iframe_osnov'). contentDocument;
                                var TolbarSms = iframe.getElementById('StatysSmsBar')
                                var obj = getBrowser (). contentDocument.createElement ('html');
                                obj. innerHTML =xmlhttp.responseText
                                var nom= obj. getElementsByTagName ("B") [0];
                                TolbarSms.value=nom.innerHTML
                            }
                        xmlhttp.send(formData);   
                    }
                else
                    {
                        TolbarSms.value=tex
                        OBJ=null
                    }
            }
        xmlhttp.send(formData);
    },
ntc_ochet: function (menulist_)
    {
        var formData ='Identity='+menulist_+'&Submit=%CF%F0%EE%E2%E5%F0%E8%F2%FC'
        xmlhttp = new XMLHttpRequest()
        xmlhttp.open('POST',"http://vntc.ru/berkut/Queryb.php", true);
        xmlhttp.overrideMimeType('text/plain;charset=windows-1251');
        xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
        xmlhttp.setRequestHeader('Content-Length', '')
        xmlhttp.onreadystatechange = function()
            {
                var doc = getBrowser (). contentDocument;
                var iframe= doc.getElementById('iframe_osnov'). contentDocument;
                var TolbarSms = iframe.getElementById('StatysSmsBar')
                var obj = getBrowser (). contentDocument.createElement ('html');
                obj. innerHTML =xmlhttp.responseText
                var nom= obj. getElementsByTagName ("B") [0];
                TolbarSms.value=nom.innerHTML
            }
        xmlhttp.send(formData);   
    }
};

var ct = getBrowser (). selectedTab;
if (!ct. cbTranslateButton5)
    ct. cbTranslateButton5 = [];
var translator = new cbTranslatorButton (getBrowser ());
ct. cbTranslateButton5. push (translator);
translator. ujs_createWindow()

}}

Отсутствует

 

№345014-01-2012 12:52:25

Void Dragon
Участник
 
Группа: Members
Зарегистрирован: 13-04-2011
Сообщений: 521
UA: Firefox 9.0

Re: Custom Buttons

Как присвоить кнопке Custom Buttons иконку кнопки История (она меняется в зависимости от personas)?

И еще, я уже это когда-то писал. Можно ли кнопкой сделать все текстовые поля изменяющими размер?

Отредактировано Void Dragon (14-01-2012 12:58:58)

Отсутствует

 

Board footer

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