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

На IRC-канале #mozilla-ru можно получить техническую консультацию онлайн и, конечно же, порцию общения.

№212614-01-2019 20:45:05

kokoss
Участник
 
Группа: Members
Зарегистрирован: 15-02-2018
Сообщений: 714
UA: Firefox 52.0

Re: Обсуждение кнопок CB

Выделить код

Код:

 /*Initialization Code*/

var btn = this;

btn.lastClick = {
    X: 0,
    Y: 0
};
addEventListener("mouseup", function(e) {
    if (e && e.button == 0 && e.view.top == content) {
        var lc = btn.lastClick;
        lc.X = e.clientX;
        lc.Y = e.clientY;
    }
}, false);

var createWindow = function(text, status, title, id, pos, size){
    var win = document.commandDispatcher.focusedWindow.top == content ? document.commandDispatcher.focusedWindow : content;
    var doc = win.document, wId = 'ujs_window'+(id || ''), w = doc.getElementById(wId);
    var keyDown = function(e){if(!e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode == 27)doc.getElementById(wId).closeWin()};
    if(w)w.closeWin();
    w = doc.createElement('div');
    w.setAttribute('style', 'position:fixed;display:block;visibility:hidden;left:0;top:0;width:auto;height:auto;border:1px solid gray;padding:3px;margin:0;z-index:99999;overflow:hidden;cursor:move;'+(typeof w.style.borderRadius === 'string' ? 'background-color:#f3f5f7;padding-top:4px;border-radius:4px;box-shadow:0 0 15px rgba(0,0,0,.4);' : 'background:-o-skin("Window Skin");'));
    w.id = wId;
    w.closeWin = function(){
        doc.removeEventListener('keydown', keyDown, false);
        this.parentNode.removeChild(this);
    };
    w.addEle = function(str, style){
        var ele = doc.createElement('div');
        ele.setAttribute('style', style);
        if(str){
            ele.innerHTML = str;
            for(var el, all = ele.getElementsByTagName('*'), i = all.length; i--;){
                el = all[i];
                if(/^(script|frame|iframe|applet|embed|object)$/i.test(el.nodeName)){
                    el.parentNode.removeChild(el);
                }else{
                    for(var att = el.attributes, j = att.length; j--;){
                        if(/^on[a-z]+$/i.test(att[j].name))att[j].value = '';
                    }
                }
            }
        };
        return this.appendChild(ele);
    };
    var img = doc.createElement('div');
    img.setAttribute('style', 'display:block;float:right;width:18px;height:18px;padding:0;margin:0;border:none;cursor:pointer;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAQAAAD8x0bcAAAAZElEQVR42mNgGNyAGQixsVGU/AdCXjCbHczmxKaMFywlAlWiw6DAwIZNmQhYGqJEDWoqFiAGVmKKTwk73CRJ/Ep0GIyhbsPpO4hbIG4TwKaMk0EZ7hYBBk1cvmNDEmbDrmSwAADE8h10+qICXwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=");background:-o-skin("Caption Close Button Skin");');
    img.title = (win.navigator.language.indexOf('ru') == 0) ? '\u0417\u0430\u043A\u0440\u044B\u0442\u044C' : 'Close';
    img.addEventListener('click', function(){this.parentNode.closeWin()}, false);
    w.appendChild(img);
    w.addEle(title, 'display:table;color:#000;font:17px Times New Roman;width:auto;height:auto;padding:0;margin:0 2px;cursor:text;');
    var cnt = w.addEle(text, 'display:block;border:1px solid #aaa;margin:2px 0 1px 0;padding:4px;background-color:#fafcfe;color:#000;font:17px Times New Roman;width:320px;height:160px;overflow:auto;cursor:text;');
    w.addEle(status, 'display:table;color:#555;font:13px Times New Roman;width:auto;height:auto;padding:0;margin:0 3px;cursor:text;');
    w.addEventListener('mousedown', function(e){
        if(e.target == w){
            e.preventDefault();
            var grabX = e.clientX, grabY = e.clientY, origX = parseInt(w.style.left), origY = parseInt(w.style.top);
            var mouseMove = function(ev){
                w.style.left = origX+ev.clientX-grabX+'px';
                w.style.top = origY+ev.clientY-grabY+'px';
            };
            doc.addEventListener('mousemove', mouseMove, false);
            doc.addEventListener('mouseup', function(){doc.removeEventListener('mousemove', mouseMove, false)}, false);
        }
    }, false);
    doc.documentElement.appendChild(w);

    if(size){
        cnt.style.height = size.height;
        cnt.style.width = size.width;
    }else{
        for(var i = 3; i < 10; i++){
            if(cnt.scrollHeight > cnt.offsetHeight || cnt.scrollWidth > cnt.offsetWidth){
                cnt.style.height = 80*i+'px';
                cnt.style.width = 180*i+'px';
            }else break;
        }
    };
    var docEle = doc.compatMode == 'CSS1Compat' ? doc.documentElement : doc.body;
    var mX = docEle.clientWidth-w.offsetWidth, mY = docEle.clientHeight-w.offsetHeight;
    if(mX < 0){cnt.style.width = parseInt(cnt.style.width)+mX+'px'; mX = 0};
    if(mY < 0){cnt.style.height = parseInt(cnt.style.height)+mY+'px'; mY =0};
    var hW = parseInt(w.offsetWidth/2);
    w.style.left = (pos && pos.X < mX+hW ? (pos.X > hW ? pos.X-hW : 0) : mX)+'px';
    w.style.top = (pos && pos.Y+10 < mY ? pos.Y+10 : mY)+'px';
    w.style.visibility = 'visible';
    doc.addEventListener('keydown', keyDown, false);
};

var getSel = function (w) {
    var s, d = w.document;
    if (d.selection) {
        var r = d.selection.createRange();
        s = r ? r.text : ''
    } else {
        s = d.getSelection().toString();
        if (!s) {
            var e, t = d.getElementsByTagName('textarea'), u = d.getElementsByTagName('input'), i = t.length;
            while(e = (i > 0) ? t[--i] : u[-i--])try{
                if (e.offsetHeight > 0 && (s = e.value.substring(e.selectionStart, e.selectionEnd))) break
            }catch(x){}
        }
    };
    if (!s) for (var j = 0, f; f = w.frames[j]; j++) {
        try {
            if (s = getSel(f)) break
        } catch(x) {}
    };
    return s
};

var getHash = function (txt) {
    TKK=eval('((function(){var a\x3d817046147;var b\x3d-335196159;return 410049+\x27.\x27+(a+b)})())');
    function sM(a) {
        var b;
        if (null !== yr)
            b = yr;
        else {
            b = wr(String.fromCharCode(84));
            var c = wr(String.fromCharCode(75));
            b = [b(), b()];
            b[1] = c();
            b = (yr = window[b.join(c())] || "") || ""
        }
        var d = wr(String.fromCharCode(116))
            , c = wr(String.fromCharCode(107))
            , d = [d(), d()];
        d[1] = c();
        c = "&" + d.join("") + "=";
        d = b.split(".");
        b = Number(d[0]) || 0;
        for (var e = [], f = 0, g = 0; g < a.length; g++) {
            var l = a.charCodeAt(g);
            128 > l ? e[f++] = l : (2048 > l ? e[f++] = l >> 6 | 192 : (55296 == (l & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (l = 65536 + ((l & 1023) << 10) + (a.charCodeAt(++g) & 1023),
                e[f++] = l >> 18 | 240,
                e[f++] = l >> 12 & 63 | 128) : e[f++] = l >> 12 | 224,
                e[f++] = l >> 6 & 63 | 128),
                e[f++] = l & 63 | 128)
        }
        a = b;
        for (f = 0; f < e.length; f++)
            a += e[f],
                a = xr(a, "+-a^+6");
        a = xr(a, "+-3^+b+-f");
        a ^= Number(d[1]) || 0;
        0 > a && (a = (a & 2147483647) + 2147483648);
        a %= 1E6;
        return c + (a.toString() + "." + (a ^ b))
    }

    var yr = null;
    var wr = function(a) {
        return function() {
            return a
        }
    }
        , xr = function(a, b) {
        for (var c = 0; c < b.length - 2; c += 3) {
            var d = b.charAt(c + 2)
                , d = "a" <= d ? d.charCodeAt(0) - 87 : Number(d)
                , d = "+" == b.charAt(c + 1) ? a >>> d : a << d;
            a = "+" == b.charAt(c) ? a + d & 4294967295 : a ^ d
        }
        return a
    };

    return sM(txt);
};

var ujs_google_translate = function (dir){
    var win = content, lng = win.navigator.language.slice(0, 2), txt = getSel(win), l = dir.split('|');
    if (txt) {
        var xhr = new XMLHttpRequest();
        var url = 'https://translate.google.com/translate_a/single?client=t&sl=' + l[0] + '&tl=' + l[1] + '&hl=' + lng + '&eotf=0&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t' + getHash(txt);

        xhr.open('POST', url, true);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
        xhr.onreadystatechange = function() {
            try{
                if (xhr.readyState == 4 && xhr.status == 200) {
                    var result = '', status = '', tmp = JSON.parse(xhr.responseText.replace(/\[(?=,)/g, '[0').replace(/,(?=,|\])/g, ',0'));
                    for(var i = 0, n; n = tmp[0][i]; i++){
                        if(n[0])result += n[0].toString();
                    };
                    result = '<span style="background-color:inherit;color:inherit;font-size:inherit;font-family:Times,serif;">' + result + '</span>';
                    status = tmp[8][0][0].toUpperCase() + ' -\u203A ' + l[1].toUpperCase();

                    createWindow(result, status, '<a href="'+url.replace(/&/g,'&amp;')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:17px Times New Roman;">Google Translate</a>', '_gt', btn.lastClick);
                }
            } catch (x){LOG(x)};
        };
        xhr.send('q=' + encodeURIComponent(txt));
    } else {
        win.open('http://translate.google.com/translate?u='+escape(win.location.href)+'&hl='+lng+'&langpair='+dir+'&tbb=1');
    };
};


btn.onclick = function(e){if(e.button == 0)ujs_google_translate('auto|ru')};

var contextMenu = document.getElementById("contentAreaContextMenu");
var nextEleMenu = document.getElementById("context-inspect");

var menuId = "context-ext-google-translate";
var menuItem = document.getElementById(menuId);
if (menuItem) {
    contextMenu.removeChild(menuItem.nextElementSibling);
    contextMenu.removeChild(menuItem.nextElementSibling);
    contextMenu.removeChild(menuItem);
};

menuItem = document.createElement("menuitem");
menuItem.setAttribute("id", menuId);
menuItem.setAttribute("label", "Перевести на русский");
menuItem.setAttribute("class", "menuitem-iconic");
menuItem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAAAAAAABupgeRAAABBUlEQVR4Ac2RMU4DMRREB2MqihQpAkUaqnAduuQw4Sx03CGcJYIiDYqQ0lCsZ77535ZFcgAkRuPvV7zd/dLiz3N1PFb8hmRckrfELZrF9ONQ1B6Yz0MyM7S0O6zGkVprh/3+Kw/JzkHSpRpJKZkpr9fYbOx0cjVsCbWG31oHBM9mtt0q73ZcrdLhAMlYQKkUI22aqsNo8HKZAMQhvVaKSHWj2Q2aPU3mJQFY7nuHyvYFduP83WF3AJRfcPNYnr/Lp1G1uK4m9sno1LaUbnX/htf8BNzoneUD5NhjvLCMhURQSQ93QCZwXYjFwg3I0NZKrvoknQPMIHkt/jRAQKMeG2yX89/mB4EJbKbZxIhFAAAAAElFTkSuQmCC");
menuItem.addEventListener("command", function(){ujs_google_translate('auto|ru')}, false);
contextMenu.insertBefore(menuItem, nextEleMenu);

menuItem = document.createElement("menuitem");
menuItem.setAttribute("label", "Перевести на английский");
menuItem.setAttribute("class", "menuitem-iconic");
menuItem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAAAAAAABupgeRAAAB5UlEQVR4AWOgPZg0c9+Oq2+qpx9LaQaiw4mNB27efbs2uXFNQh2Q4Zm9zSNth23MhqjGnXMC86vnHmUS4udxv7OvOd2yPE7PTlfCTk9GVVEoyJA7WI8dyPA0k3U1l+jJMV7CeThpTZeoKDdDUsvBPSff/V+6/P/Bvf///2+bdvU/EKRm/k9IBNIlfZe+LFrzvbsbyJ636pKkyQyQhoUb7tZNvPpw3/0/TfX/ISAm5n94BIiRm/n/xYsLd946ei4vajoiqDuRAejQf//+o4PQ0P9+fmhiQGVnrr1kXJNYG2zEzXDxDsPv3wy/fkFJoOTPn39+/fr/69e/37//AUX+/mXRkO458wWHDba2f8wswCyQ3N+/f//8/fP7z5+TV18w2Mdt6plzPiptx5Wr7/+/ffMzOR6kysjkt74hWMPfp06O+2dulZCeFZKwnkE4m8E8bN3i9aCQ+dxY96GrK6bkGJD9R1v3l6Y20NVW9kt+/v//ZdbcFwkxTVPPMQimM8XEqkb7a/zoqLxkH9v4zVyI5+///wyMmtKMmhJAnbLqQjHxaw5r2orOmZN5uj470Zahat6BKS7JzpmLBHXm8GhM5lCdcP7ai1ZpixZxk9NXXjKIFzOIFjAI54oY1vXuue5qmscw+AAAW0tKxtPoicEAAAAASUVORK5CYII=");
menuItem.addEventListener("command", function(){ujs_google_translate('auto|en')}, false);
contextMenu.insertBefore(menuItem, nextEleMenu);

contextMenu.insertBefore(document.createElement("menuseparator"), nextEleMenu);

addEventListener('keydown', function (e){
 if(e.shiftKey && !e.ctrlKey && e.altKey && e.keyCode == 84)ujs_google_translate('auto|ru');
}, false);

Отредактировано kokoss (14-01-2019 21:03:43)

Отсутствует

 

№212714-01-2019 21:39:45

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

Re: Обсуждение кнопок CB

Отсутствует

 

№212814-01-2019 22:14:15

kokoss
Участник
 
Группа: Members
Зарегистрирован: 15-02-2018
Сообщений: 714
UA: Firefox 52.0

Re: Обсуждение кнопок CB

Отсутствует

 

№212916-01-2019 23:48:47

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 409
UA: Firefox 64.0

Re: Обсуждение кнопок CB

Выделить код

Код:

//----------Заменить текст переводом------------ 
function ujs_TexReplace_translate() {
        var win = content, txt = getSel(win);  
        if (txt) {
        var httpRequest = null;
        //var baseUrl = "http://translate.google.com/translate_t";
        var urlParams = "text=" + encodeURIComponent(txt) + "&hl==ru&langpair=auto|ru&tbb=1";
var baseUrl="http://translate.google.com/translate_t?"+ urlParams;
   
        function removeHTMLTags(mitkell) {
        var strTagStrippedText = mitkell.replace(/this.style.backgroundColor='#fff'/ig, "").replace(/this.style.backgroundColor='#ebeff9'/ig, "");
                return strTagStrippedText;
            }

        function infoReceived() { 
           var output = httpRequest.responseText;
           if (txt[0] == " ") {
                    var kezdospace = " ";
                } else {
                    var kezdospace = "";
                }
                if (txt[txt.length - 1] == " ") {
                    var vegespace = " ";
                } else {
                    var vegespace = "";
                }
           if (output.length) {
             output = output.replace(/&quot;/gi,'"');
             output = output.replace(/&lt;/gi,'<');
             output = output.replace(/&gt;/gi,'>');
             output = output.replace(/&amp;/gi,'&');
             output = output.replace(/'/gi,"'");
             var fieldArray = output.split('</head>');
             if (fieldArray[1].search('class="short_text"')!=-1) {
                var tempResz = fieldArray[1].split('<span id=result_box class="short_text">');
             }
            else if (fieldArray[1].search('class="medium_text"')!=-1) {
               var tempResz = fieldArray[1].split('<span id=result_box class="medium_text">');
            }
            else {
                var tempResz = fieldArray[1].split('<span id=result_box class="long_text">');
             }

             var kimenet = tempResz[1].split('</span></div>');
             var range = content.getSelection().getRangeAt(0);
             
             range.deleteContents();
          
             range.insertNode(range. createContextualFragment(kezdospace + removeHTMLTags(kimenet[0])+ vegespace));
           }
        }

            httpRequest = new XMLHttpRequest();
            httpRequest.open("GET", baseUrl, true);
            httpRequest.onload = infoReceived;
            httpRequest.send(null);
    }
};  

Отсутствует

 

№213017-01-2019 00:53:40

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 409
UA: Firefox 64.0

Re: Обсуждение кнопок CB

Отредактировано Andrey_Krropotkin (18-01-2019 08:30:56)

Отсутствует

 

№213117-01-2019 08:57:49

rubel
Участник
 
Группа: Members
Откуда: г.Самара
Зарегистрирован: 10-05-2005
Сообщений: 395
UA: Firefox 63.0

Re: Обсуждение кнопок CB

Отсутствует

 

№213217-01-2019 09:25:19

kokoss
Участник
 
Группа: Members
Зарегистрирован: 15-02-2018
Сообщений: 714
UA: Firefox 52.0

Re: Обсуждение кнопок CB

Отсутствует

 

№213317-01-2019 10:21:36

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 409
UA: Firefox 64.0

Re: Обсуждение кнопок CB

Выделить код

Код:

/*Initialization Code*/
//Варианты выбора языка переводчика для перевода текста в окне. Нужное разкоментировать. Остальное закоментировать.
//Google,
var langFrom_google_text = "auto";//авто
var langTo_google_text = "ru"; 


var mainicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAIAAAD5gJpuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQtJREFUKM9VkSFOhFEQg799/CjEihWAwKDgIFwAyWHgLDjuAGfZgMCQDQkG8abtQ/z8u9A0k4rOTCez2u0GB0gCsLELbCuxLduJy0zAZgOQBBqQALEbtOQoyRgjSZLt9nOaJyf5K2zPjr01SWst8ermZtzd5euLhCQ2Y9iOHXssIvZYr1f39x/T87Ourtr7O3ZUyK6KlN5HVRaOqlxcNGACJKRItigdHFXpFdXoPVWRGmSac0suRYWUWhz7zt5/BXh65Pi6Hr7rI/IopZyqpSqldLsq9onPX3iabuHYr6o3pCVHP2Sa11nIzZdnMAmOSpyejiocVEhtjrwc15L5l4HVDgReCGTR+V9n/AAByma0J+vVwwAAAABJRU5ErkJggg==";

function readFromClipboard() {
  var string;
  try {
      var clipboard = Cc["@mozilla.org/widget/clipboard;1"].
                      getService(Ci.nsIClipboard);
      var trans = Cc["@mozilla.org/widget/transferable;1"].
                  createInstance(Ci.nsITransferable);
      trans.addDataFlavor("text/unicode");
      if (clipboard.supportsSelectionClipboard()) {
        clipboard.getData(trans, clipboard.kSelectionClipboard);
      } else {
        clipboard.getData(trans, clipboard.kGlobalClipboard);
      }
      var data = {};
      var dataLen = {};
      trans.getTransferData("text/unicode", data, dataLen);
      if (data) {
        data = data.value.QueryInterface(Ci.nsISupportsString);
        string = data.data.substring(0, dataLen.value / 2);
      }
  } catch (ex) {
  }
  return string;
}

 
//--------Перевести текст в Google в новой вкладке--------------
function ujs_GoogleTextPageNewa_translate() { 
//var win = content, txt = getSel(win);
txt = readFromClipboard();
var encTxt = encodeURIComponent(txt);
var ctabpos = gBrowser.selectedTab._tPos +1;
var url="http://translate.google.com/translate_t?text="+encTxt+"&sl=auto&tl=ru&hl=ru&eotf=0&ujs=gtt";
gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(url), ctabpos);
};




 //Контекстное меню для перевода текста-------------------------------------------  
(function () {
 if ( document.getElementById("TranslateBufer") ) return; 
 var contextMenu = document.getElementById("contentAreaContextMenu");  
 var Item = document.createElement("menuitem");
       Item.setAttribute("Id", "TranslateBufer");
       Item.setAttribute("label", "Перевод из буфера");
       Item.setAttribute("class", "menuitem-iconic");
       Item.setAttribute("image", mainicon);
       Item.addEventListener("command", function(){ujs_GoogleTextPageNewa_translate()}, false);

  contextMenu.insertBefore(Item, document.getElementById("context-viewpartialsource-selection") ); 
 
   
  
    
     
 })();


Отредактировано Andrey_Krropotkin (17-01-2019 10:39:31)

Отсутствует

 

№213417-01-2019 14:28:45

rubel
Участник
 
Группа: Members
Откуда: г.Самара
Зарегистрирован: 10-05-2005
Сообщений: 395
UA: Firefox 63.0

Re: Обсуждение кнопок CB

Отсутствует

 

№213518-01-2019 08:29:40

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 409
UA: Firefox 64.0

Re: Обсуждение кнопок CB

Выделить код

Код:

/*Initialization Code*/
//--------------------------------Перевод---------------------------------------- 

//Варианты выбора языка переводчика для перевода текста в окне. Нужное разкоментировать. Остальное закоментировать.
//Google,
var langFrom_google_text = "auto";//авто
var langTo_google_text = "ru"; 
//Microsoft 
var langFrom_Microsoft_text = "";//авто 
var langTo_Microsoft_text = "ru"; 
//Promt 
var langFrom_PROMT_text = "a";//авто
var langTo_PROMT_text = "r"; 
//Яндекс 
var langFrom_yandex_text = ""; //авто
//var langFrom_yandex_text = "en-"; //английский и так же другие языки, тире обязательно
var langTo_yandex_text = "ru";


 
var safeHTMLParser = function(code) {
    var gUnescapeHTML = Cc["@mozilla.org/feed-unescapehtml;1"].getService(Ci.nsIScriptableUnescapeHTML);
    var doc = document.implementation.createDocument(xhtmlns, "html", null);
    var body = document.createElementNS(xhtmlns, "body");
    doc.documentElement.appendChild(body);
    body.appendChild(gUnescapeHTML.parseFragment(code, false, null, body));
    return doc;
};
          
//Назначаем иконки
var mainicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAIAAAD5gJpuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQtJREFUKM9VkSFOhFEQg799/CjEihWAwKDgIFwAyWHgLDjuAGfZgMCQDQkG8abtQ/z8u9A0k4rOTCez2u0GB0gCsLELbCuxLduJy0zAZgOQBBqQALEbtOQoyRgjSZLt9nOaJyf5K2zPjr01SWst8ermZtzd5euLhCQ2Y9iOHXssIvZYr1f39x/T87Ourtr7O3ZUyK6KlN5HVRaOqlxcNGACJKRItigdHFXpFdXoPVWRGmSac0suRYWUWhz7zt5/BXh65Pi6Hr7rI/IopZyqpSqldLsq9onPX3iabuHYr6o3pCVHP2Sa11nIzZdnMAmOSpyejiocVEhtjrwc15L5l4HVDgReCGTR+V9n/AAByma0J+vVwwAAAABJRU5ErkJggg==";
var gticon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADPElEQVR4nGWTTWhjZRSG3/uTNr39mTqTn1KacagTqyKIlYJ2ExQCUhiprgpduRVFpLvZjOCsXEgWFqRk0RZcWLopmOnCQcPUsVBiTEZbalrGTJOZJm2aNGm++92b737fcdGZTfvAuznwnMV7OBouEI/HdSHEyNzcXCwajb7r8/n6T09P99bW1u4PDw8/SiQSbHd396IGBINBJJPJQDqdvssYK0kpO0SkiIiUUlII0SqVSr8lk8n3JycnjUsLZmdnb5bL5T+klPK5RNzp0BlzyHEFKXU+cxynubKy8tXExIQJABoAzM/PB6amptYikch70DRtv3iMh5kClPQglcKzozMMXhnAh7E3EL0RhCcEX19f/6xSqSxhdHRUT6VS39i2LYUQtJ7epm9/uEdHtSZJKUkpRa0zm75fvE+f3/mRmM3JcRyqVqulmZmZl7G6uhopl8sHtm3TduEpffH1T1Srn9FFavUmnTRaJKUkx3Go0WiojY2N22aj0Yj5fL6wJyVS6R289koYVwd7L3V07aUBAICUEkopSCk1v99/Sw+Hw5NSyi7OXZQrTQwFBy6f6DlKKSil4HkeOp0ODMO4btq23S+EgFQaAAKzO1BKQdd1AICmaSAiEBGUlBBCwHVduK4LzrlpHh4e7nHOVW+vofdbPmxkHuPWB6/D6vFD13UoRfj38TPsP6mBOxJjN64gdNUC5xz1er2l5/P5XxqNBvNEByPBLmS2n+LXzQK4zcH5ebp9GkAeEksPwJgNxhhs20axWMzo7Xb7US6Xyx7Xanh7LIhXRywklh7i9z/30Wy1YNsMfT0mrG4DGoCO64Ixhlqt5uTz+UVjZ2dHDA0NFYPB4Cd9fVb3W2MhnDZb+DldwD+FCk5OWvivVEX27ycY7APevHkNouNSNpu9l8vlvtMAIBQKGfF4/Mvp6em7oVCoxzAMOB0PjAsQEfxdPvi7DBgG4Dgu5fP5vxYWFj4uFAoHBgAwxmhvby8jpTywLOsdy7IGfKah9XSb56IOeJ7A0dGxs7m5mVpeXv60Xq8fcM7Pf+EFsVhMq1Qq18fHx2ej0ehHgUAgYpqm2W63W6VSKVMsFhe3trYeVKtV/sL5HwhICaDODiyAAAAAAElFTkSuQmCC";
var promticon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADQ0lEQVQ4jX2TX2xTdRTHT7O4GWL0gSwKmphoi3SsdFXHZiRjDExGSIxGHoTgwzDAUoM4skgEE6ckmiiEB2D8GYqbo2LLrmxZ51rWlob+W1e2ua2z2tp1ZVzrunZr161r7/3drw9TCLr4Sc7b+Zycc3IO0QNkY4M333LrD19zGbSc64aWc/VoOZepnnOZD3KuHi3nNB9rCQQcW2kl7CPjH3tPF7OUjpAxEbKDhNwEQUgSxBRBiD8GYWY/UlONzHO76YJery+4LwcmJmrHZtL5tlOVmGsjzPcQFgcIuRBBmCaIaYKYJIip18HyHiylv2Ae5wUtERGFef5ZZzQWS4sSmjgO060yzBsJi/2E3G8E4Y/lDpajDJIwDEkMwW2rHvf5fI/QlZHQFc+CBO8CQ9efOVw8s225gIewFCDkeRnEuSKwzGqw7PuQWAySlMFcrJ4NeIyv0SFv+N5nvIjdgSx2+NLYZ/Sio7nW4uTqdE7jIZ3TfFzntH6u03ON9g/aq9DQvgkftlfg5A+1aGk50EG77MHEK3cyKLHPQm6aRrkljqYu+/V/L/mNjroual0HuqwAnVeAzsix9og6Rg23xjmlLQm5OQ65OQ7FzRlstUyJtoHB7f/Ivf6+2kdNKpFMSlC3EvTjepDhBexo3tNLY+Ep9YaeyaX1tiSU9llscKSw0TOPPTecQ8FgsCgYDBZtt789Sv6NoGEVaKAU5C5F4fWSrHPIW05ERMetQxfV/fPQ+Bbw8nAWFaM5vDq6iK9tt9+77Pnu8NOz20AJDSimAd0tA4XVOGhovHR/vkgksqbqVjC5+VcBVSGGLb8zbAkxVHe642+OvpuQiSqQoAblNaClF1Hs2jQdjUbXPrSks1bHR5UjWZQPZqDxpKFyzEJ17VNckr5HIZOD2HMgUQHKrsOpn84e+c8p8zy/6qVzvZFnDJN46moYxedM+HKyGUPSCOpZI9awUjzBFCjr2+zneX7Viv/Q2tm3t+CEixWccKC68ygmhCj8wi8wCr04JnyCkruqfHd/984V5b+RnbxqbNj11VHLzrZ9kRr9O9ka614orTXseUPZvW8s39b9n/wQfr+/MBwOP+n+2V3huOOoTCQSj6+U9xeWlBixn0UlkAAAAABJRU5ErkJggg==";
var yndicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC8UlEQVQ4jY2TTWgcZQCGv1OLgkX0UlChaC8iEUo1kNJV0UiTNl1SFasYk2pELeohVkOgWkILDSTR2tWGjRILhigVoxIbf1oaWkJtIokmYWOa3253t2T/Z2dnZmfnm5nv8RZIhdIXnst7eE7vK+oH5JvPfSe5HfZ963SImxPsL9E45PD6r/KWvDYsCfaXnN2nzYp1gt2nDZqGbJqGbJrP2ixrPpZU+AoMR5GxFCNRj6Yhmxe/t6j9uji6TvDsV3kaBk1az5XQy4q0pbia8WgYNMmVFA2DJhdWXCypaPrJJPhNgere/ME1wZM9aQ78oOMrGItJlIJIyiVf8rFdxWLW4+UzBfSyImv5vDCg8URPKlf1afw+IYQQO07eIGv5jMcc+v+2OPhjnqThkbV89g9kee9njZzlM5Fw+GXOpueKwa4vU1R9dmNACCHEY91RMqbH5Ws2ZVcR01ySRY/OCwXq+5LU9yWJaS5ayeeV/hQ5y6e+L8nOkzG2dy3vEYETK8Q0l7pwgpThURdOUBdOkLc89vYmiGkug9MGe3sTRHMSWyrqwgme+fw6FccXF0XFsTl026cmFGUx7VATilITihK+lKfsKjr/yKx1CymHklTUhKIEupd4uH32H/HQRzMYZZ94XlJ2FasFyWpBcmneIFN0CYZWqO5e4vlT15CeQrM8qruXeKQ9woOHp3aKB1onieccaj9ZIKW7PNVxdY1dXfOkiy77Ty2TNVzmV21az8R59MgM93842SuEEGJzyxjVx/9Fs1xe+mKB85ECgaMRAkcj1HbOYTk+17Nl9nTNkdIljx+ZZnPLldym5j/vEUIIce+7o1R9PEWwaxbD9nA9RVqXzMRMpqImTx+bwSx7pHVJoH2aLe+Pcfc7o6+uDWnT2yNUtk1Q2TbBjsOTXJzVsKVPseRxcVYjrUtOnI1T2TbB1pbL3PXWyPop3/nGebYdGmf7B3/dkm2Hxrmj+Zyzsfn3resEGxqHOzYc+I3bonH4f3f+Dz63ssfSaOz4AAAAAElFTkSuQmCC";
var bingicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABMUlEQVQ4jY2SsU7DMBCG/TJYYqpEPDojcbq0NGM7sXdnggnigYFOyVDqLLBAkRJLTIwJSwdYw8gj8AQ/Q0kaO6HNSZbPp/P332+ZkJ7hSo2uvNdFV2rwMEOVGw28UVjl5bZZaqi8hA3aqzB/KOBKDVWUrcZ6ir/dgLlSY/HxAx5mmD++d15u7jzMjDNxpcbZyzeE+mz563o4bteaY9nj2bktwP97F7upS72yUgdLfNDIA428g9SD/6APZG84SoDGwoDQeFurly3CEh+OEmBKIFgPcWwBCCHkKPJwt7nA+dvIFBg/C9wUV3VhsbnF4L4NmKYT0Fjg9HVoApgSSL/WBuBkZQKm6QQ08jDLgraF8ZPAdX6JJnCw3AFo5IHGArMs2NVsi44SYIkPlviozraFrvgFK3TyTsPvtF8AAAAASUVORK5CYII=";

function readFromClipboard() {
  var string;
  try {
      var clipboard = Cc["@mozilla.org/widget/clipboard;1"].
                      getService(Ci.nsIClipboard);
      var trans = Cc["@mozilla.org/widget/transferable;1"].
                  createInstance(Ci.nsITransferable);
      trans.addDataFlavor("text/unicode");
      if (clipboard.supportsSelectionClipboard()) {
        clipboard.getData(trans, clipboard.kSelectionClipboard);
      } else {
        clipboard.getData(trans, clipboard.kGlobalClipboard);
      }
      var data = {};
      var dataLen = {};
      trans.getTransferData("text/unicode", data, dataLen);
      if (data) {
        data = data.value.QueryInterface(Ci.nsISupportsString);
        string = data.data.substring(0, dataLen.value / 2);
      }
  } catch (ex) {
  }
  return string;
};



function GetXmlHttpObject(){
         if (window.XMLHttpRequest){ return new XMLHttpRequest();}
         if (window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP");}
        return null;
        };

var btn = this;

btn.lastClick = {
    X: 0,
    Y: 0
};
addEventListener("mouseup", function(e) {
    if (e && e.button == 0 && e.view.top == content) {
        var lc = btn.lastClick;
        lc.X = e.clientX;
        lc.Y = e.clientY;
    }
}, false);

var createWindow = function(text, status, title, id, pos, size){
    var win = document.commandDispatcher.focusedWindow.top == content ? document.commandDispatcher.focusedWindow : content;
    var doc = win.document, wId = 'ujs_window'+(id || ''), w = doc.getElementById(wId);
    var keyDown = function(e){if(!e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode == 27)doc.getElementById(wId).closeWin()};
    if(w)w.closeWin();
    w = doc.createElement('div');
    w.setAttribute('style', 'position:fixed;display:block;visibility:hidden;left:0;top:0;width:auto;height:auto;border:1px solid gray;padding:3px;margin:0;z-index:99999;overflow:hidden;cursor:move;'+(typeof w.style.borderRadius === 'string' ? 'background-color:#f3f5f7;padding-top:4px;border-radius:4px;box-shadow:0 0 12px rgba(0,0,0,.4);' : 'background:-o-skin("Window Skin");'));
    w.id = wId;
    w.closeWin = function(){
        doc.removeEventListener('keydown', keyDown, false);
        this.parentNode.removeChild(this);
    };
    w.addEle = function(str, style){
        var ele = doc.createElement('div');
        ele.setAttribute('style', style);
        if(str){
            ele.innerHTML = str;
            for(var el, all = ele.getElementsByTagName('*'), i = all.length; i--;){
                el = all[i];
                if(/^(script|frame|iframe|applet|embed|object)$/i.test(el.nodeName)){
                    el.parentNode.removeChild(el);
                }else{
                    for(var att = el.attributes, j = att.length; j--;){
                        if(/^on[a-z]+$/i.test(att[j].name))att[j].value = '';
                    }
                }
            }
        };
        return this.appendChild(ele);
    };
    var img = doc.createElement('div');
    img.setAttribute('style', 'display:block;float:right;width:18px;height:18px;padding:0;margin:0;border:none;cursor:pointer;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAQAAAD8x0bcAAAAZElEQVR42mNgGNyAGQixsVGU/AdCXjCbHczmxKaMFywlAlWiw6DAwIZNmQhYGqJEDWoqFiAGVmKKTwk73CRJ/Ep0GIyhbsPpO4hbIG4TwKaMk0EZ7hYBBk1cvmNDEmbDrmSwAADE8h10+qICXwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=");background:-o-skin("Caption Close Button Skin");');
    img.title = (win.navigator.language.indexOf('ru') == 0) ? '\u0417\u0430\u043A\u0440\u044B\u0442\u044C' : 'Close';
    img.addEventListener('click', function(){this.parentNode.closeWin()}, false);
    w.appendChild(img);
    w.addEle(title, 'display:table;color:#000;font:16px Times New Roman;width:auto;height:auto;padding:0;margin:0 2px;cursor:text;');
    var cnt = w.addEle(text, 'display:block;border:1px solid #aaa;margin:2px 0 1px 0;padding:4px;background-color:#fafcfe;color:#000;font:14px Times New Roman;width:240px;height:120px;overflow:auto;cursor:text;');
    w.addEle(status, 'display:table;color:#555;font:10px Times New Roman;width:auto;height:auto;padding:0;margin:0 2px;cursor:text;');
    w.addEventListener('mousedown', function(e){
        if(e.target == w){
            e.preventDefault();
            var grabX = e.clientX, grabY = e.clientY, origX = parseInt(w.style.left), origY = parseInt(w.style.top);
            var mouseMove = function(ev){
                w.style.left = origX+ev.clientX-grabX+'px';
                w.style.top = origY+ev.clientY-grabY+'px';
            };
            doc.addEventListener('mousemove', mouseMove, false);
            doc.addEventListener('mouseup', function(){doc.removeEventListener('mousemove', mouseMove, false)}, false);
        }
    }, false);
    doc.documentElement.appendChild(w);

    if(size){
        cnt.style.height = size.height;
        cnt.style.width = size.width;
    }else{
        for(var i = 3; i < 10; i++){
            if(cnt.scrollHeight > cnt.offsetHeight || cnt.scrollWidth > cnt.offsetWidth){
                cnt.style.height = 50*i+'px';
                cnt.style.width = 100*i+'px';
            }else break;
        }
    };
    var docEle = doc.compatMode == 'CSS1Compat' ? doc.documentElement : doc.body;
    var mX = docEle.clientWidth-w.offsetWidth, mY = docEle.clientHeight-w.offsetHeight;
    if(mX < 0){cnt.style.width = parseInt(cnt.style.width)+mX+'px'; mX = 0};
    if(mY < 0){cnt.style.height = parseInt(cnt.style.height)+mY+'px'; mY =0};
    var hW = parseInt(w.offsetWidth/2);
    w.style.left = (pos && pos.X < mX+hW ? (pos.X > hW ? pos.X-hW : 0) : mX)+'px';
    w.style.top = (pos && pos.Y+10 < mY ? pos.Y+10 : mY)+'px';
    w.style.visibility = 'visible';
    doc.addEventListener('keydown', keyDown, false);
};

var getSel = function (w) {
    var s, d = w.document;
    if (d.selection) {
        var r = d.selection.createRange();
        s = r ? r.text : ''
    } else {
        s = d.getSelection().toString();
        if (!s) {
            var e, t = d.getElementsByTagName('textarea'), u = d.getElementsByTagName('input'), i = t.length;
            while(e = (i > 0) ? t[--i] : u[-i--])try{
                if (e.offsetHeight > 0 && (s = e.value.substring(e.selectionStart, e.selectionEnd))) break
            }catch(x){}
        }
    };
    if (!s) for (var j = 0, f; f = w.frames[j]; j++) {
        try {
            if (s = getSel(f)) break
        } catch(x) {}
    };
    return s
};

var getHash = function (txt) {
    TKK=eval('((function(){var a\x3d817046147;var b\x3d-335196159;return 410049+\x27.\x27+(a+b)})())');
    function sM(a) {
        var b;
        if (null !== yr)
            b = yr;
        else {
            b = wr(String.fromCharCode(84));
            var c = wr(String.fromCharCode(75));
            b = [b(), b()];
            b[1] = c();
            b = (yr = window[b.join(c())] || "") || ""
        }
        var d = wr(String.fromCharCode(116))
            , c = wr(String.fromCharCode(107))
            , d = [d(), d()];
        d[1] = c();
        c = "&" + d.join("") + "=";
        d = b.split(".");
        b = Number(d[0]) || 0;
        for (var e = [], f = 0, g = 0; g < a.length; g++) {
            var l = a.charCodeAt(g);
            128 > l ? e[f++] = l : (2048 > l ? e[f++] = l >> 6 | 192 : (55296 == (l & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (l = 65536 + ((l & 1023) << 10) + (a.charCodeAt(++g) & 1023),
                e[f++] = l >> 18 | 240,
                e[f++] = l >> 12 & 63 | 128) : e[f++] = l >> 12 | 224,
                e[f++] = l >> 6 & 63 | 128),
                e[f++] = l & 63 | 128)
        }
        a = b;
        for (f = 0; f < e.length; f++)
            a += e[f],
                a = xr(a, "+-a^+6");
        a = xr(a, "+-3^+b+-f");
        a ^= Number(d[1]) || 0;
        0 > a && (a = (a & 2147483647) + 2147483648);
        a %= 1E6;
        return c + (a.toString() + "." + (a ^ b))
    }

    var yr = null;
    var wr = function(a) {
        return function() {
            return a
        }
    }
        , xr = function(a, b) {
        for (var c = 0; c < b.length - 2; c += 3) {
            var d = b.charAt(c + 2)
                , d = "a" <= d ? d.charCodeAt(0) - 87 : Number(d)
                , d = "+" == b.charAt(c + 1) ? a >>> d : a << d;
            a = "+" == b.charAt(c) ? a + d & 4294967295 : a ^ d
        }
        return a
    };

    return sM(txt);
};

//----------Перевести  текст  из буфера в окне Google------------


var ujs_google_translat = function (dir){
    var win = content, lng = win.navigator.language.slice(0, 2), txt = readFromClipboard(), l = dir.split('|');
    if (txt) {
        var xhr = new XMLHttpRequest();
        var url = 'https://translate.google.com/translate_a/single?client=t&sl=' + l[0] + '&tl=' + l[1] + '&hl=' + lng + '&eotf=0&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t' + getHash(txt);

        xhr.open('POST', url, true);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
        xhr.onreadystatechange = function() {
            try{
                if (xhr.readyState == 4 && xhr.status == 200) {
                    var result = '', status = '', tmp = JSON.parse(xhr.responseText.replace(/\[(?=,)/g, '[0').replace(/,(?=,|\])/g, ',0'));
                    for(var i = 0, n; n = tmp[0][i]; i++){
                        if(n[0])result += n[0].toString();
                    };
                    result = '<span style="background-color:inherit;color:inherit;font-size:inherit;font-family:Times,serif;">' + result + '</span>';
                    status = tmp[8][0][0].toUpperCase() + ' -\u203A ' + l[1].toUpperCase();

                    createWindow(result, status, '<a href="'+url.replace(/&/g,'&amp;')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:16px Times New Roman;">Google Translate</a>', '_gt', btn.lastClick);
                }
            } catch (x){LOG(x)};
        };
        xhr.send('q=' + encodeURIComponent(txt));
    } else {
        win.open('http://translate.google.com/translate?u='+escape(win.location.href)+'&hl='+lng+'&langpair='+dir+'&tbb=1');
    };
};


//----------Перевести выделенный текст в окне Google------------


var ujs_google_translate = function (dir){
    var win = content, lng = win.navigator.language.slice(0, 2), txt = getSel(win), l = dir.split('|');
    if (txt) {
        var xhr = new XMLHttpRequest();
        var url = 'https://translate.google.com/translate_a/single?client=t&sl=' + l[0] + '&tl=' + l[1] + '&hl=' + lng + '&eotf=0&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t' + getHash(txt);

        xhr.open('POST', url, true);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
        xhr.onreadystatechange = function() {
            try{
                if (xhr.readyState == 4 && xhr.status == 200) {
                    var result = '', status = '', tmp = JSON.parse(xhr.responseText.replace(/\[(?=,)/g, '[0').replace(/,(?=,|\])/g, ',0'));
                    for(var i = 0, n; n = tmp[0][i]; i++){
                        if(n[0])result += n[0].toString();
                    };
                    result = '<span style="background-color:inherit;color:inherit;font-size:inherit;font-family:Times,serif;">' + result + '</span>';
                    status = tmp[8][0][0].toUpperCase() + ' -\u203A ' + l[1].toUpperCase();

                    createWindow(result, status, '<a href="'+url.replace(/&/g,'&amp;')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:16px Times New Roman;">Google Translate</a>', '_gt', btn.lastClick);
                }
            } catch (x){LOG(x)};
        };
        xhr.send('q=' + encodeURIComponent(txt));
    } else {
        win.open('http://translate.google.com/translate?u='+escape(win.location.href)+'&hl='+lng+'&langpair='+dir+'&tbb=1');
    };
};
 
//----------Перевести выделенный текст в окне Microsoft------------
function ujs_Microsoft_translate (){
      var win = content, txt = getSel(win);
    var encTxt = encodeURIComponent(txt);
    if (txt) { 
        var xhr = new XMLHttpRequest();
        var encTxt = encodeURIComponent(txt), post = encTxt.length > 1024;
        var urlt = 'http://www.bing.com/translator/?from='+langFrom_Microsoft_text+'&to='+langTo_Microsoft_text+'&SourceText=' + encTxt;       
       var keyus = "366EA718B7846D2CBD6E0129E55F518D31E741BE"; 
        var uridetect = "http://api.microsofttranslator.com/V2/Ajax.svc/Detect?appId="+keyus+"&text="+ encTxt;
        var url="http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appId="+keyus+"&from="+langFrom_Microsoft_text+"&to="+langTo_Microsoft_text+"&text="+ encTxt;
 
        if (txt && location. hostname != 'http://api.microsofttranslator.com/')
         { var result="Подождите идет перевод", status="";
            createWindow(result, status,'<a href="'+url.replace(/&/g,'&amp;')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:16px Times New Roman;">Bing</a>', '_gt', btn.lastClick);
         }
        function gettransdata(){
           xmlhttp=GetXmlHttpObject();
           xmlhttp.onreadystatechange=stateChanged;
           xmlhttp.open(post ? 'POST' : 'GET', url, true);
           if(post)xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
           xmlhttp.send(post ? encTxt : null);
           xmlhttp1=GetXmlHttpObject();
           xmlhttp1.onreadystatechange=stateChanged;
           xmlhttp1.open('GET', uridetect, true);
           xmlhttp1.send(null);
        }
       function stateChanged(){
         if (xmlhttp.readyState==4 && xmlhttp1.readyState==4)
         {
           var tryain=xmlhttp.responseText;
           tryain=tryain.replace(/\"/g, '').replace(/\\u000d/g, " ").replace(/\\u000a/g, "<br />").replace(/\//g, '');
           var tryain1=xmlhttp1.responseText;
           tryain1=tryain1.replace(/\"/g, '');
           var result = tryain;
           var status =(tryain1 +' -\u203A '+ "ru").toUpperCase();
           createWindow(result, status, '<a href="'+urlt.replace(/&/g,'&amp;')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:16px Times New Roman;">Bing</a>', '_gt', btn.lastClick);
         }
       }  
      gettransdata();
   } 
};

//----------Перевести текст в окне Яндекс------------
function ujs_yandex_translate() {
       var win = content, txt = getSel(win);
       var encTxt = encodeURIComponent(txt);
     if (txt) { 
        var xhr = new XMLHttpRequest();
        var encTxt = encodeURIComponent(txt);
        var keyuser = "региструемся на сайте яндекс и беспалатно получаем ключ и вставляем вместо этого соощения";
        var url ="https://translate.yandex.net/api/v1.5/tr.json/translate?key="+keyuser+"&lang="+langFrom_yandex_text+langTo_yandex_text+"&text=" + encTxt;

        function gettransdata(){
           xmlhttp=GetXmlHttpObject();
           xmlhttp.onreadystatechange=stateChanged;
           xmlhttp.open('GET', url, true);
           xmlhttp.send(null);
        }
        function stateChanged(){
          if (xmlhttp.readyState==4)
           {
           var tryain=xmlhttp.responseText;
           tryain=tryain.replace(/\\n/g, "<br />");
           var data = JSON.parse( tryain );
           var result,status;
           if (data.code == "401") {result = "Неправильный ключ API"; status = "";} 
           if (data.code == "402") {result = "Ключ API заблокирован"; status = "";} 
           if (data.code == "403") {result = "Превышено суточное ограничение на количество запросов"; status = "";} 
           if (data.code == "404") {result = "Превышено суточное ограничение на объем переведенного текста"; status = "";} 
           if (data.code == "413") {result = "Превышен максимально допустимый размер текста"; status = "";} 
           if (data.code == "422") {result = "Текст не может быть переведен"; status = "";} 
           if (data.code == "501") {result = "Заданное направление перевода не поддерживается"; status = "";} 
           if (data.code == "200") {result = data.text; var status1 = data.lang; status =(status1.replace(/\-/g, "-\u203A")).toUpperCase();}
           var urlt = 'http://translate.yandex.ru/?text=' + encTxt + '&lang=' + status1;
           createWindow(result, status, '<a href="'+urlt.replace(/&/g,'&amp;')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:16px Times New Roman;">Яндекс</a>', '_gt', btn.lastClick);
           }
        }  
        gettransdata();
    } 
};



//--------Перевести страницу с Google--------------
function ujs_googlePage_translate() {
   var urlt = content.document.location.href;  
   var url = "http://translate.google.com/translate?hl=ru&sl=auto&tl=ru&u="+ encodeURIComponent(urlt) + "&sandbox=1";
 //loadURI(url);
 getBrowser (). loadURI(url, {
    triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()
});
};

//---------Перевести страницу с Promt---------------
function ujs_PromtPage_translate() {
var urlt = content.document.location.href;
var url = "http://www.translate.ru/siteTranslation/autolink/?direction=ar&template=General&sourceURL="+encodeURIComponent(urlt);
//loadURI(url);
getBrowser (). loadURI(url, {
    triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()
});
};

//---------Перевести страницу с Microsoft---------------
function ujs_MicrosoftPage_translate() {
var urlt = content.document.location.href;
var url = "http://www.microsofttranslator.com/bv.aspx?from=&to=ru&a="+encodeURIComponent(urlt);
//loadURI(url);
getBrowser (). loadURI(url, {
    triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()
});
};


//---------Перевести страницу с Microsoft в новой вкладке ---------------
function ujs_MicrosoftPageNew_translate() {   
        var urlt = content.document.location.href;  
    var url = "http://www.microsofttranslator.com/bv.aspx?from=&to=ru&a="+encodeURIComponent(urlt);
    var ctabpos = gBrowser.selectedTab._tPos +1;
    gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(url), ctabpos);
};
//---------Перевести страницу с Promt в новой вкладке ---------------
function ujs_PromtPageNew_translate() {                 
      var urlt = content.document.location.href;  
    var url = "http://www.translate.ru/site/General/au-ru/?url="+ encodeURIComponent(urlt) + "";
    var ctabpos = gBrowser.selectedTab._tPos +1;
    gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(url), ctabpos);
};
//--------Перевести страницу с Google в новой вкладке --------------
  
function ujs_GooglePageNew_translate() {
   var urlt = content.document.location.href;  
   var url = "http://translate.google.com/translate?hl=ru&sl=auto&tl=ru&u="+ encodeURIComponent(urlt) + "&sandbox=1";
    var ctabpos = gBrowser.selectedTab._tPos +1;
     
   var css = '@-moz-document domain("translate.google.com") {\
   #gb, #gt-c:not([class="g-section"]) { display: none !important; }\
   #contentframe { top: 0 !important; }\
   }';
   var uri = makeURI("data:text/css," + encodeURIComponent(css));
   var sss = Cc["@mozilla.org/content/style-sheet-service;1"]. getService(Ci.nsIStyleSheetService);
   try { sss.unregisterSheet(uri, sss.AGENT_SHEET) }
   catch(e) { sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET) } 

   gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(url), ctabpos);
 };
 
//--------Перевести текст в Google в новой вкладке--------------
function ujs_GoogleTextPageNew_translate() { 
var win = content, txt = getSel(win);
var encTxt = encodeURIComponent(txt);
var ctabpos = gBrowser.selectedTab._tPos +1;
var url="http://translate.google.com/translate_t?text="+encTxt+"&sl=auto&tl=ru&hl=ru&eotf=0&ujs=gtt";
gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(url), ctabpos);
};

//--------Перевести текст в Яндексе в новой вкладке--------------
function ujs_yandexTextPageNew_translate() { 
       var win = content, txt = getSel(win);
        var encTxt = encodeURIComponent(txt);
       var ctabpos = gBrowser.selectedTab._tPos +1;
           var urlt="http://translate.yandex.ru/?text=" + encTxt + "&lang=" + "-ru";
           gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(urlt), ctabpos);
      
};

//---------Перевести текст в PROMT в новой вкладке---------------
function ujs_PROMTTextPageNew_translate(){ 
var win = content, txt = getSel(win);
var encTxt = encodeURIComponent(txt); 
var ctabpos = gBrowser.selectedTab._tPos +1;
var url="http://www.translate.ru/?External=IE8Accelerator&formEncoding=utf-8&direction=ar&prmtlang=ru&status=translate&template=General&source="+encTxt;
gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(url), ctabpos);
};

//---------Перевести текст в Microsoft в новой вкладке---------------
function ujs_MicrosoftTextPageNew_translate(){
  var ctabpos = gBrowser.selectedTab._tPos +1;
  var win = content, txt = getSel(win);
  var encTxt = encodeURIComponent(txt);
  var url="http://www.bing.com/translator/?to=ru&Text="+encTxt;
  gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(url), ctabpos);
};


//Контекстное меню для перевода из буфера-------------------------------------------  

(function () {
 if ( document.getElementById("TranslateBufer") ) return; 
 var contextMenu = document.getElementById("contentAreaContextMenu");  
 var Item = document.createElement("menuitem");
       Item.setAttribute("Id", "TranslateBufer");
       Item.setAttribute("label", "Перевод из буфера");
       Item.setAttribute("class", "menuitem-iconic");
       Item.setAttribute("image", mainicon);
       Item.addEventListener("command", function(){ujs_google_translat('auto|ru')}, false);

  contextMenu.insertBefore(Item, document.getElementById("context-viewpartialsource-selection") ); 

 })();

//Контекстное меню для перевода страниц-------------------------------------------  
(function () {
 if ( document.getElementById("TranslatePage") ) return; 
  
  var menu = document.createElement("menu");  
  var menuPopup = document.createElement("menupopup");
  var contextMenu = document.getElementById("contentAreaContextMenu");  
  
    menu.id = "TranslatePage";
    menu.setAttribute("label", "Перевести страницу");
    menu.setAttribute("class", "menu-iconic");
    menu.setAttribute("image", mainicon);
   
  contextMenu.insertBefore(menu, document.getElementById("context-viewsource") ); 
  menu.appendChild( menuPopup );
  addDestructor(function() { contextMenu.removeChild( menu ) }); 
    var array = [
        {label:"Google", func: ujs_googlePage_translate, image:gticon},
        {label:"Promt ", func: ujs_PromtPageNew_translate, image:promticon},
        {label:"Microsoft", func: ujs_MicrosoftPage_translate, image:bingicon},
        { separator: '' },
        {label:"Google в новой вкладке", func: ujs_GooglePageNew_translate, image:gticon},
        {label:"Promt в новой вкладке", func: ujs_PromtPageNew_translate, image:promticon},
        {label:"Microsoft в новой вкладке", func: ujs_MicrosoftPageNew_translate, image:bingicon}
        ];
        
   array.forEach(function( m ) {  
       if ( "separator" in m ) { menuPopup.appendChild( document.createElement("menuseparator") ); return };
       var mItem = document.createElement("menuitem");
       mItem.setAttribute("label", m.label);
       mItem.setAttribute("class", "menuitem-iconic");
       mItem.setAttribute("image", m.image);
       mItem.addEventListener("command", m.func, false);
       menuPopup.appendChild( mItem );

       });
   
     addEventListener("popupshowing", function() {
     menu.hidden = gContextMenu.isTextSelected || gContextMenu.onImage || gContextMenu.onTextInput ; 
  }, true, contextMenu );
})();



 //Контекстное меню для перевода текста-------------------------------------------  
(function () {
 if ( document.getElementById("TranslateSelected") ) return; 
  
  var menu = document.createElement("menu");  
  var menuPopup = document.createElement("menupopup");
  var contextMenu = document.getElementById("contentAreaContextMenu");  
      
    menu.id = "TranslateSelected";
    menu.setAttribute("label", "Перевести выделенный текст");
    menu.setAttribute("class", "menu-iconic");
    menu.setAttribute("image", mainicon);

  contextMenu.insertBefore(menu, document.getElementById("context-viewpartialsource-selection") ); 
  menu.appendChild( menuPopup );
  addDestructor(function() { contextMenu.removeChild( menu ) });
   
  var Item = document.createElement("menuitem");
       Item.setAttribute("label", "В окне Google");
       Item.setAttribute("class", "menuitem-iconic");
       Item.setAttribute("image", gticon);
       Item.addEventListener("command", function(){ujs_google_translate('auto|ru')}, false);
       menuPopup.appendChild( Item );
     
  var array = [
        {label:"В окне Яндекс", func: ujs_yandex_translate, image:yndicon},
        {label:"В окне Microsoft", func: ujs_Microsoft_translate, image:bingicon},
        { separator: ''},
        {label:"В Google в новой вкладке", func: ujs_GoogleTextPageNew_translate, image:gticon},
        {label:"В Яндексе в новой вкладке", func: ujs_yandexTextPageNew_translate, image:yndicon},
        {label:"В PROMT в новой вкладке", func: ujs_PROMTTextPageNew_translate, image:promticon},
        {label:"В Microsoft в новой вкладке", func: ujs_MicrosoftTextPageNew_translate, image:bingicon}
              ];
  array.forEach(function( m ) {  
        if ( "separator" in m ) { menuPopup.appendChild( document.createElement("menuseparator") ); return };
       var mItem = document.createElement("menuitem");
       mItem.setAttribute("label", m.label);
       mItem.setAttribute("class", "menuitem-iconic");
       mItem.setAttribute("image", m.image);
       mItem.addEventListener("command", m.func, false);
       menuPopup.appendChild( mItem );
       });
 
     addEventListener("popupshowing", function() {
     menu.hidden = !gContextMenu.isTextSelected; 
  }, false, contextMenu ); 
 })();

Отсутствует

 

№213618-01-2019 09:02:42

rubel
Участник
 
Группа: Members
Откуда: г.Самара
Зарегистрирован: 10-05-2005
Сообщений: 395
UA: Firefox 63.0

Re: Обсуждение кнопок CB

Отсутствует

 

№213718-01-2019 09:14:40

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 409
UA: Firefox 64.0

Re: Обсуждение кнопок CB

Отсутствует

 

№213818-01-2019 09:20:54

rubel
Участник
 
Группа: Members
Откуда: г.Самара
Зарегистрирован: 10-05-2005
Сообщений: 395
UA: Firefox 63.0

Re: Обсуждение кнопок CB

Отсутствует

 

№213918-01-2019 16:13:29

nbuh
Участник
 
Группа: Members
Зарегистрирован: 16-01-2013
Сообщений: 43
UA: Firefox 56.0

Re: Обсуждение кнопок CB

Отредактировано nbuh (18-01-2019 16:18:09)

Отсутствует

 

№214023-01-2019 15:15:25

nbuh
Участник
 
Группа: Members
Зарегистрирован: 16-01-2013
Сообщений: 43
UA: Firefox 56.0

Re: Обсуждение кнопок CB

Что то никто не отвечает! Наверно задача не выполнимая.....:)
Задам другой вопрос, более важный для меня. Есть портабельный ФФ 56.02. Установлены несколько кнопок. Работает нормально, но при переходе на другую ось, или при запуске в другом компьютере,  Сustom Buttons как бы отключает свою работу....Т.е. сама она есть, в дополениях - установлена, а кнопок - нет, пропали из панелей....Приходится Сustom Buttons переустановить, ну, а кнопки сразу все появляются и функционируют. Можно это как-то решить, исправить? 
P.S. Сustom Buttons хоть подписанная, хоть нет, одинаковая трабла..Все так мучаются?

Отсутствует

 

№214123-01-2019 21:55:15

func4ptch4
Участник
 
Группа: Members
Зарегистрирован: 03-05-2018
Сообщений: 210
UA: unknown 0.0

Re: Обсуждение кнопок CB

Отсутствует

 

№214224-01-2019 08:37:45

momo2000
Участник
 
Группа: Members
Зарегистрирован: 03-09-2015
Сообщений: 77
UA: Firefox 64.0

Re: Обсуждение кнопок CB

Отсутствует

 

№214324-01-2019 11:37:35

nbuh
Участник
 
Группа: Members
Зарегистрирован: 16-01-2013
Сообщений: 43
UA: Firefox 56.0

Re: Обсуждение кнопок CB

Отредактировано nbuh (24-01-2019 11:39:46)

Отсутствует

 

№214425-01-2019 21:40:03

nbuh
Участник
 
Группа: Members
Зарегистрирован: 16-01-2013
Сообщений: 43
UA: Firefox 56.0

Re: Обсуждение кнопок CB

Отсутствует

 

№214527-01-2019 09:45:11

nbuh
Участник
 
Группа: Members
Зарегистрирован: 16-01-2013
Сообщений: 43
UA: Firefox 56.0

Re: Обсуждение кнопок CB

Отсутствует

 

№214631-01-2019 13:54:55

nbuh
Участник
 
Группа: Members
Зарегистрирован: 16-01-2013
Сообщений: 43
UA: Firefox 56.0

Re: Обсуждение кнопок CB

Отсутствует

 

№214701-02-2019 11:15:52

func4ptch4
Участник
 
Группа: Members
Зарегистрирован: 03-05-2018
Сообщений: 210
UA: unknown 0.0

Re: Обсуждение кнопок CB

Выделить код

Код:

//=======================================================================================
//[+?] AutoDelSql+trash
try{document.getElementById("context-viewimage").setAttribute("onclick","gBrowser.selectedTab=gBrowser.addTab(checkForMiddleClick(this,event))");}
catch(e){};var closer={observe:function(subject,topic,data){if(data=="shutdown"){
var file=Services.dirsvc.get("ProfD",Ci.nsIFile); //file.append("g.vbs");
file.append("SQL.vbs");if(file.exists())file.launch();}}};
Services.obs.addObserver(closer,"quit-application",false); /**/

//= = = = = = = = = = = =
/* //Drage - forum.ru-board.com/topic.cgi?forum=2&topic=4283&start=2100#21
var closer={observe:function(subject,topic,data){if(data=="shutdown"){
            var profile=Services.dirsvc.get('ProfD',Ci.nsIFile);
            var file=Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
file.initWithPath(profile.path+"\\..\\nir\\m.vbs");file.launch();
file.initWithPath(profile.path+"\\sqlite.vbs");file.launch();}}};
Services.obs.addObserver(closer,"quit-application",false); */
//= = =
/* //Vitaliy V. работает на всех плат.Windows+Lin...
var closer={observe: function(subject,topic,data){if(data=="shutdown"){
   var profile=Services.dirsvc.get('ProfD',Ci.nsIFile);
   var dirs=profile.parent;
dirs.append("memreduct");dirs.append("h.vbs");if(dirs.exists())dirs.launch();
profile.append("SQLite.vbs");if(profile.exists())profile.launch();}}};
Services.obs.addObserver(closer,"quit-application",false); */
//= = =
/* //Dumby - forum.mozilla-russia.org/viewtopic.php?pid=765700#p765700||765705#p765705
var closer={observe:function(subject,topic,data){if(data=="shutdown"){
            var file=Services.dirsvc.get('ProfD',Ci.nsIFile);  
            ["custombuttons","backup","buttonsoverlay.xul.bak"].forEach(file.append);file.reveal();
file.initWithPath(profile.path+"\\SQLite.vbs");file.launch();}}};
Services.obs.addObserver(closer,"quit-application",false); */

Отредактировано func4ptch4 (01-02-2019 11:21:13)

Отсутствует

 

№214804-02-2019 22:48:43

nbuh
Участник
 
Группа: Members
Зарегистрирован: 16-01-2013
Сообщений: 43
UA: Firefox 56.0

Re: Обсуждение кнопок CB

Отсутствует

 

№214905-02-2019 17:25:13

func4ptch4
Участник
 
Группа: Members
Зарегистрирован: 03-05-2018
Сообщений: 210
UA: unknown 0.0

Re: Обсуждение кнопок CB

Отсутствует

 

№215022-04-2019 19:57:28

kokoss
Участник
 
Группа: Members
Зарегистрирован: 15-02-2018
Сообщений: 714
UA: Firefox 52.0

Re: Обсуждение кнопок CB

Отредактировано kokoss (22-04-2019 20:17:39)

Отсутствует

 

Board footer

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