custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EGoogle%20translate%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAALCAIAAAD5gJpuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQtJREFUKM9VkSFOhFEQg799/CjEihWAwKDgIFwAyWHgLDjuAGfZgMCQDQkG8abtQ/z8u9A0k4rOTCez2u0GB0gCsLELbCuxLduJy0zAZgOQBBqQALEbtOQoyRgjSZLt9nOaJyf5K2zPjr01SWst8ermZtzd5euLhCQ2Y9iOHXssIvZYr1f39x/T87Ourtr7O3ZUyK6KlN5HVRaOqlxcNGACJKRItigdHFXpFdXoPVWRGmSac0suRYWUWhz7zt5/BXh65Pi6Hr7rI/IopZyqpSqldLsq9onPX3iabuHYr6o3pCVHP2Sa11nIzZdnMAmOSpyejiocVEhtjrwc15L5l4HVDgReCGTR+V9n/AAByma0J+vVwwAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0A%0Avar%20btn%20%3D%20this%3B%0A%0Abtn.lastClick%20%3D%20%7B%0A%20%20%20%20X%3A%200%2C%0A%20%20%20%20Y%3A%200%0A%7D%3B%0AaddEventListener%28%22mouseup%22%2C%20function%28e%29%20%7B%0A%20%20%20%20if%20%28e%20%26%26%20e.button%20%3D%3D%200%20%26%26%20e.view.top%20%3D%3D%20content%29%20%7B%0A%20%20%20%20%20%20%20%20var%20lc%20%3D%20btn.lastClick%3B%0A%20%20%20%20%20%20%20%20lc.X%20%3D%20e.clientX%3B%0A%20%20%20%20%20%20%20%20lc.Y%20%3D%20e.clientY%3B%0A%20%20%20%20%7D%0A%7D%2C%20false%29%3B%0A%0Avar%20safeHTMLParser%20%3D%20function%28code%29%20%7B%0A%20%20%20%20var%20gUnescapeHTML%20%3D%20Cc%5B%22@mozilla.org/feed-unescapehtml%3B1%22%5D.getService%28Ci.nsIScriptableUnescapeHTML%29%3B%0A%20%20%20%20var%20doc%20%3D%20document.implementation.createDocument%28xhtmlns%2C%20%22html%22%2C%20null%29%3B%0A%20%20%20%20var%20body%20%3D%20document.createElementNS%28xhtmlns%2C%20%22body%22%29%3B%0A%20%20%20%20doc.documentElement.appendChild%28body%29%3B%0A%20%20%20%20body.appendChild%28gUnescapeHTML.parseFragment%28code%2C%20false%2C%20null%2C%20body%29%29%3B%0A%20%20%20%20return%20doc%3B%0A%7D%3B%0A%0Avar%20createWindow%20%3D%20function%28text%2C%20status%2C%20title%2C%20id%2C%20pos%2C%20size%29%7B%0A%20%20%20%20var%20win%20%3D%20document.commandDispatcher.focusedWindow.top%20%3D%3D%20content%20%3F%20document.commandDispatcher.focusedWindow%20%3A%20content%3B%0A%09var%20doc%20%3D%20win.document%2C%20wId%20%3D%20%27ujs_window%27+%28id%20%7C%7C%20%27%27%29%2C%20w%20%3D%20doc.getElementById%28wId%29%3B%0A%09var%20keyDown%20%3D%20function%28e%29%7Bif%28%21e.shiftKey%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.altKey%20%26%26%20e.keyCode%20%3D%3D%2027%29doc.getElementById%28wId%29.closeWin%28%29%7D%3B%0A%09if%28w%29w.closeWin%28%29%3B%0A%09w%20%3D%20doc.createElement%28%27div%27%29%3B%0A%09w.setAttribute%28%27style%27%2C%20%27position%3Afixed%3Bdisplay%3Ablock%3Bvisibility%3Ahidden%3Bleft%3A0%3Btop%3A0%3Bwidth%3Aauto%3Bheight%3Aauto%3Bborder%3A1px%20solid%20gray%3Bpadding%3A3px%3Bmargin%3A0%3Bz-index%3A99999%3Boverflow%3Ahidden%3Bcursor%3Amove%3B%27+%28typeof%20w.style.borderRadius%20%3D%3D%3D%20%27string%27%20%3F%20%27background-color%3A%23f3f5f7%3Bpadding-top%3A4px%3Bborder-radius%3A4px%3Bbox-shadow%3A0%200%2012px%20rgba%280%2C0%2C0%2C.4%29%3B%27%20%3A%20%27background%3A-o-skin%28%22Window%20Skin%22%29%3B%27%29%29%3B%0A%09w.id%20%3D%20wId%3B%0A%09w.closeWin%20%3D%20function%28%29%7B%0A%09%09doc.removeEventListener%28%27keydown%27%2C%20keyDown%2C%20false%29%3B%0A%09%09this.parentNode.removeChild%28this%29%3B%0A%09%7D%3B%0A%09w.addEle%20%3D%20function%28str%2C%20style%29%7B%0A%09%09var%20ele%20%3D%20doc.createElement%28%27div%27%29%3B%0A%09%09ele.setAttribute%28%27style%27%2C%20style%29%3B%0A%09%09if%28str%29%7B%0A%09%09%09ele.innerHTML%20%3D%20str%3B%0A%09%09%09for%28var%20el%2C%20all%20%3D%20ele.getElementsByTagName%28%27*%27%29%2C%20i%20%3D%20all.length%3B%20i--%3B%29%7B%0A%09%09%09%09el%20%3D%20all%5Bi%5D%3B%0A%09%09%09%09if%28/%5E%28script%7Cframe%7Ciframe%7Capplet%7Cembed%7Cobject%29%24/i.test%28el.nodeName%29%29%7B%0A%09%09%09%09%09el.parentNode.removeChild%28el%29%3B%0A%09%09%09%09%7Delse%7B%0A%09%09%09%09%09for%28var%20att%20%3D%20el.attributes%2C%20j%20%3D%20att.length%3B%20j--%3B%29%7B%0A%09%09%09%09%09%09if%28/%5Eon%5Ba-z%5D+%24/i.test%28att%5Bj%5D.name%29%29att%5Bj%5D.value%20%3D%20%27%27%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%09return%20this.appendChild%28ele%29%3B%0A%09%7D%3B%0A%09var%20img%20%3D%20doc.createElement%28%27div%27%29%3B%0A%09img.setAttribute%28%27style%27%2C%20%27display%3Ablock%3Bfloat%3Aright%3Bwidth%3A18px%3Bheight%3A18px%3Bpadding%3A0%3Bmargin%3A0%3Bborder%3Anone%3Bcursor%3Apointer%3Bbackground-image%3Aurl%28%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAQAAAD8x0bcAAAAZElEQVR42mNgGNyAGQixsVGU/AdCXjCbHczmxKaMFywlAlWiw6DAwIZNmQhYGqJEDWoqFiAGVmKKTwk73CRJ/Ep0GIyhbsPpO4hbIG4TwKaMk0EZ7hYBBk1cvmNDEmbDrmSwAADE8h10+qICXwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII%3D%22%29%3Bbackground%3A-o-skin%28%22Caption%20Close%20Button%20Skin%22%29%3B%27%29%3B%0A%09img.title%20%3D%20%28win.navigator.language.indexOf%28%27ru%27%29%20%3D%3D%200%29%20%3F%20%27%5Cu0417%5Cu0430%5Cu043A%5Cu0440%5Cu044B%5Cu0442%5Cu044C%27%20%3A%20%27Close%27%3B%0A%09img.addEventListener%28%27click%27%2C%20function%28%29%7Bthis.parentNode.closeWin%28%29%7D%2C%20false%29%3B%0A%09w.appendChild%28img%29%3B%0A%09w.addEle%28title%2C%20%27display%3Atable%3Bcolor%3A%23000%3Bfont%3A16px%20Times%20New%20Roman%3Bwidth%3Aauto%3Bheight%3Aauto%3Bpadding%3A0%3Bmargin%3A0%202px%3Bcursor%3Atext%3B%27%29%3B%0A%09var%20cnt%20%3D%20w.addEle%28text%2C%20%27display%3Ablock%3Bborder%3A1px%20solid%20%23aaa%3Bmargin%3A2px%200%201px%200%3Bpadding%3A4px%3Bbackground-color%3A%23fafcfe%3Bcolor%3A%23000%3Bfont%3A14px%20Times%20New%20Roman%3Bwidth%3A240px%3Bheight%3A120px%3Boverflow%3Aauto%3Bcursor%3Atext%3B%27%29%3B%0A%09w.addEle%28status%2C%20%27display%3Atable%3Bcolor%3A%23555%3Bfont%3A10px%20Times%20New%20Roman%3Bwidth%3Aauto%3Bheight%3Aauto%3Bpadding%3A0%3Bmargin%3A0%202px%3Bcursor%3Atext%3B%27%29%3B%0A%09w.addEventListener%28%27mousedown%27%2C%20function%28e%29%7B%0A%09%09if%28e.target%20%3D%3D%20w%29%7B%0A%09%09%09e.preventDefault%28%29%3B%0A%09%09%09var%20grabX%20%3D%20e.clientX%2C%20grabY%20%3D%20e.clientY%2C%20origX%20%3D%20parseInt%28w.style.left%29%2C%20origY%20%3D%20parseInt%28w.style.top%29%3B%0A%09%09%09var%20mouseMove%20%3D%20function%28ev%29%7B%0A%09%09%09%09w.style.left%20%3D%20origX+ev.clientX-grabX+%27px%27%3B%0A%09%09%09%09w.style.top%20%3D%20origY+ev.clientY-grabY+%27px%27%3B%0A%09%09%09%7D%3B%0A%09%09%09doc.addEventListener%28%27mousemove%27%2C%20mouseMove%2C%20false%29%3B%0A%09%09%09doc.addEventListener%28%27mouseup%27%2C%20function%28%29%7Bdoc.removeEventListener%28%27mousemove%27%2C%20mouseMove%2C%20false%29%7D%2C%20false%29%3B%0A%09%09%7D%0A%09%7D%2C%20false%29%3B%0A%09doc.documentElement.appendChild%28w%29%3B%0A%0A%09if%28size%29%7B%0A%09%09cnt.style.height%20%3D%20size.height%3B%0A%09%09cnt.style.width%20%3D%20size.width%3B%0A%09%7Delse%7B%0A%09%09for%28var%20i%20%3D%203%3B%20i%20%3C%2010%3B%20i++%29%7B%0A%09%09%09if%28cnt.scrollHeight%20%3E%20cnt.offsetHeight%20%7C%7C%20cnt.scrollWidth%20%3E%20cnt.offsetWidth%29%7B%0A%09%09%09%09cnt.style.height%20%3D%2050*i+%27px%27%3B%0A%09%09%09%09cnt.style.width%20%3D%20100*i+%27px%27%3B%0A%09%09%09%7Delse%20break%3B%0A%09%09%7D%0A%09%7D%3B%0A%09var%20docEle%20%3D%20doc.compatMode%20%3D%3D%20%27CSS1Compat%27%20%3F%20doc.documentElement%20%3A%20doc.body%3B%0A%09var%20mX%20%3D%20docEle.clientWidth-w.offsetWidth%2C%20mY%20%3D%20docEle.clientHeight-w.offsetHeight%3B%0A%09if%28mX%20%3C%200%29%7Bcnt.style.width%20%3D%20parseInt%28cnt.style.width%29+mX+%27px%27%3B%20mX%20%3D%200%7D%3B%0A%09if%28mY%20%3C%200%29%7Bcnt.style.height%20%3D%20parseInt%28cnt.style.height%29+mY+%27px%27%3B%20mY%20%3D0%7D%3B%0A%09var%20hW%20%3D%20parseInt%28w.offsetWidth/2%29%3B%0A%09w.style.left%20%3D%20%28pos%20%26%26%20pos.X%20%3C%20mX+hW%20%3F%20%28pos.X%20%3E%20hW%20%3F%20pos.X-hW%20%3A%200%29%20%3A%20mX%29+%27px%27%3B%0A%09w.style.top%20%3D%20%28pos%20%26%26%20pos.Y+10%20%3C%20mY%20%3F%20pos.Y+10%20%3A%20mY%29+%27px%27%3B%0A%09w.style.visibility%20%3D%20%27visible%27%3B%0A%09doc.addEventListener%28%27keydown%27%2C%20keyDown%2C%20false%29%3B%0A%7D%3B%0A%0Avar%20getSel%20%3D%20function%20%28w%29%20%7B%0A%20%20%20%20var%20s%2C%20d%20%3D%20w.document%3B%0A%20%20%20%20if%20%28d.selection%29%20%7B%0A%20%20%20%20%20%20%20%20var%20r%20%3D%20d.selection.createRange%28%29%3B%0A%20%20%20%20%20%20%20%20s%20%3D%20r%20%3F%20r.text%20%3A%20%27%27%0A%20%20%20%20%7D%20else%20%7B%0A%09%09s%20%3D%20d.getSelection%28%29.toString%28%29%3B%0A%09%09if%20%28%21s%29%20%7B%0A%09%09%09var%20e%2C%20t%20%3D%20d.getElementsByTagName%28%27textarea%27%29%2C%20u%20%3D%20d.getElementsByTagName%28%27input%27%29%2C%20i%20%3D%20t.length%3B%0A%09%09%09while%28e%20%3D%20%28i%20%3E%200%29%20%3F%20t%5B--i%5D%20%3A%20u%5B-i--%5D%29try%7B%0A%09%09%09%09if%20%28e.offsetHeight%20%3E%200%20%26%26%20%28s%20%3D%20e.value.substring%28e.selectionStart%2C%20e.selectionEnd%29%29%29%20break%0A%09%09%09%7Dcatch%28x%29%7B%7D%0A%09%09%7D%0A%09%7D%3B%0A%20%20%20%20if%20%28%21s%29%20for%20%28var%20j%20%3D%200%2C%20f%3B%20f%20%3D%20w.frames%5Bj%5D%3B%20j++%29%20%7B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28s%20%3D%20getSel%28f%29%29%20break%0A%20%20%20%20%20%20%20%20%7D%20catch%28x%29%20%7B%7D%0A%20%20%20%20%7D%3B%0A%20%20%20%20return%20s%0A%7D%3B%0A%0Avar%20ujs_google_translate%20%3D%20function%20%28dir%29%7B%0A%20%20%20%20var%20win%20%3D%20content%2C%20lng%20%3D%20win.navigator.language.slice%280%2C%202%29%2C%20txt%20%3D%20getSel%28win%29%3B%0A%20%20%20%20if%20%28txt%29%20%7B%20%0A%20%20%20%20%20%20%20%20var%20xhr%20%3D%20new%20XMLHttpRequest%28%29%3B%0A%20%20%20%20%20%20%20%20var%20encTxt%20%3D%20%27text%3D%27%20+%20encodeURIComponent%28txt%29%2C%20post%20%3D%20encTxt.length%20%3E%201024%2C%20l%20%3D%20dir.split%28%27%7C%27%29%3B%0A%20%20%20%20%20%20%20%20var%20url%20%3D%20%27http%3A//translate.google.com/%3F%27%20+%20%28post%20%3F%20%27%27%20%3A%20encTxt%20+%20%27%26%27%29%20+%20%27sl%3D%27%20+%20l%5B0%5D%20+%20%27%26tl%3D%27%20+%20l%5B1%5D%20+%20%27%26hl%3D%27%20+%20lng%20+%20%27%26eotf%3D0%26ujs%3Dgtt%27%3B%0A%0A%20%20%20%20%20%20%20%20xhr.open%28post%20%3F%20%27POST%27%20%3A%20%27GET%27%2C%20url%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20if%28post%29xhr.setRequestHeader%28%27Content-Type%27%2C%20%27application/x-www-form-urlencoded%27%29%3B%0A%20%20%20%20%20%20%20%20xhr.onreadystatechange%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20try%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28xhr.readyState%20%3D%3D%204%20%26%26%20xhr.status%20%3D%3D%20200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20result%20%3D%20%27%27%2C%20status%20%3D%20%27%27%2C%20tmp%20%3D%20safeHTMLParser%28xhr.responseText%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20r%20%3D%20tmp.querySelector%28%27%23result_box%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28r%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20p%20%3D%20r.getElementsByTagName%28%27span%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%28var%20i%20%3D%200%2C%20n%3B%20n%20%3D%20p%5Bi%5D%3B%20i++%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20n.setAttribute%28%27style%27%2C%20%27background-color%3Ainherit%3Bcolor%3Ainherit%3Bfont-size%3Ainherit%3Bfont-family%3Aserif%3B%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20result%20%3D%20r.innerHTML%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20sl%20%3D%20tmp.querySelector%28%27%23nc_sl%27%29%2C%20dl%20%3D%20tmp.querySelector%28%27%23nc_dl%27%29%2C%20tl%20%3D%20tmp.querySelector%28%27%23nc_tl%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28sl%20%26%26%20dl%20%26%26%20tl%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20status%20%3D%20%28%28dl.value%20%7C%7C%20sl.value%29+%27%20-%5Cu203A%20%27+tl.value%29.toUpperCase%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20createWindow%28result%2C%20status%2C%20%27%3Ca%20href%3D%22%27+url.replace%28/%26/g%2C%27%26amp%3B%27%29+%27%22%20target%3D%22_blank%22%20style%3D%22display%3Ainline%3Bpadding%3A0%3Bmargin%3A0%3Btext-decoration%3Anone%3Bborder%3Anone%3Bcolor%3A%23009%3Bfont%3A16px%20Times%20New%20Roman%3B%22%3EGoogle%20Translate%3C/a%3E%27%2C%20%27_gt%27%2C%20btn.lastClick%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20catch%20%28x%29%7B%7D%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20xhr.send%28post%20%3F%20encTxt%20%3A%20null%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20win.open%28%27http%3A//translate.google.com/translate%3Fu%3D%27+escape%28win.location.href%29+%27%26hl%3D%27+lng+%27%26langpair%3D%27+dir+%27%26tbb%3D1%27%29%3B%0A%20%20%20%20%7D%3B%0A%7D%3B%0A%0A%0Abtn.onclick%20%3D%20function%28e%29%7Bif%28e.button%20%3D%3D%200%29ujs_google_translate%28%27auto%7Cru%27%29%7D%3B%0A%0Avar%20contextMenu%20%3D%20document.getElementById%28%22contentAreaContextMenu%22%29%3B%0Avar%20nextEleMenu%20%3D%20document.getElementById%28%22context-inspect%22%29%3B%0A%0Avar%20menuId%20%3D%20%22context-ext-google-translate%22%3B%0Avar%20menuItem%20%3D%20document.getElementById%28menuId%29%3B%0Aif%20%28menuItem%29%20%7B%0A%20%20%20%20contextMenu.removeChild%28menuItem.nextElementSibling%29%3B%0A%20%20%20%20contextMenu.removeChild%28menuItem.nextElementSibling%29%3B%0A%20%20%20%20contextMenu.removeChild%28menuItem%29%3B%0A%7D%3B%0A%0AmenuItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0AmenuItem.setAttribute%28%22id%22%2C%20menuId%29%3B%0AmenuItem.setAttribute%28%22label%22%2C%20%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u043D%u0430%20%u0440%u0443%u0441%u0441%u043A%u0438%u0439%22%29%3B%0AmenuItem.addEventListener%28%22command%22%2C%20function%28%29%7Bujs_google_translate%28%27auto%7Cru%27%29%7D%2C%20false%29%3B%0AcontextMenu.insertBefore%28menuItem%2C%20nextEleMenu%29%3B%0A%0AmenuItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0AmenuItem.setAttribute%28%22label%22%2C%20%22%u041F%u0435%u0440%u0435%u0432%u0435%u0441%u0442%u0438%20%u043D%u0430%20%u0430%u043D%u0433%u043B%u0438%u0439%u0441%u043A%u0438%u0439%22%29%3B%0AmenuItem.addEventListener%28%22command%22%2C%20function%28%29%7Bujs_google_translate%28%27auto%7Cen%27%29%7D%2C%20false%29%3B%0AcontextMenu.insertBefore%28menuItem%2C%20nextEleMenu%29%3B%0A%0AcontextMenu.insertBefore%28document.createElement%28%22menuseparator%22%29%2C%20nextEleMenu%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E ˮ⋊ /*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 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 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 ujs_google_translate = function (dir){ var win = content, lng = win.navigator.language.slice(0, 2), txt = getSel(win); if (txt) { var xhr = new XMLHttpRequest(); var encTxt = 'text=' + encodeURIComponent(txt), post = encTxt.length > 1024, l = dir.split('|'); var url = 'http://translate.google.com/?' + (post ? '' : encTxt + '&') + 'sl=' + l[0] + '&tl=' + l[1] + '&hl=' + lng + '&eotf=0&ujs=gtt'; xhr.open(post ? 'POST' : 'GET', url, true); if(post)xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.onreadystatechange = function() { try{ if (xhr.readyState == 4 && xhr.status == 200) { var result = '', status = '', tmp = safeHTMLParser(xhr.responseText); var r = tmp.querySelector('#result_box'); if (r) { var p = r.getElementsByTagName('span'); for(var i = 0, n; n = p[i]; i++){ n.setAttribute('style', 'background-color:inherit;color:inherit;font-size:inherit;font-family:serif;'); }; result = r.innerHTML; }; var sl = tmp.querySelector('#nc_sl'), dl = tmp.querySelector('#nc_dl'), tl = tmp.querySelector('#nc_tl'); if(sl && dl && tl){ status = ((dl.value || sl.value)+' -\u203A '+tl.value).toUpperCase(); }; createWindow(result, status, '<a href="'+url.replace(/&/g,'&')+'" 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){}; }; xhr.send(post ? encTxt : null); } 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.addEventListener("command", function(){ujs_google_translate('auto|ru')}, false); contextMenu.insertBefore(menuItem, nextEleMenu); menuItem = document.createElement("menuitem"); menuItem.setAttribute("label", "Х񦣥򳦠ᮣ쩩򫩩"); menuItem.addEventListener("command", function(){ujs_google_translate('auto|en')}, false); contextMenu.insertBefore(menuItem, nextEleMenu); contextMenu.insertBefore(document.createElement("menuseparator"), nextEleMenu); |