mx pak1֚def.jsonr&"icons\icon_16.png2 N#Jicons\icon_32.png Uicons\icon_48.pngKlocale\en-US\lng.js1L<ߎklocale\ru-RU\lng.js-3z menu.htmlI5u\noads.js<[ { "author": "Lex1", "website":"http://ruzanow.ru/", "date": "2012-10-22", "type":"extension", "frameworkVersion":"1.0.0", "version":"1.0.0", "guid": "{1DE327E1-7F48-47AA-971A-C226767239C6}", "name": "NoAds", "icon": "icon", "title": { "en": "NoAds", }, 'permissions' : { 'httpRequest': [ '*.adblockplus.org', '*.fanboy.co.nz' ] }, "actions": [ { "type": "script", "include": [ '*.', 'localhost' ], "entryPoints": [ "doc_start" ], "js": [ "noads.js" ], "includeFrames": true }, { "type":"panel", "entryPoints":["toolbar"], "main":"menu.html", "name":"NoAds", "allowPin":true, "resizable":true, "width":{ "default":280, "min":120, "max":340 }, "height": { "default": 120, "min": 100, "max": 200 } } ] } ]PNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxSmL[e>s+i'm C;pnkQ[.if Lt?g!e?4*h  DlW+-wK{ui/Γɛss>9!$ H2 C\n9(Z-)R]mx 0tvT*bp0pk**,@<YOOt (qzB"WRgzT|~~3S*GZ$kg|Hf% &ag:]`GAS <|桓u~2]O>, ekeJճk Blm{@ E _$c$g޽ț"$"?99(TWCae6~e>_;1)͜ - sEaqekD15bGM&E@]8jkAn|aBa(f[,E!-F矛;z[YAnwo]jt~q΢wC~? Y "h,˺XuI&{uj-% /tZF"PE ӘkĽ@}$]0@/| 2oW4" k'"Ϩ}nNת@xӏ(MF\8vn=$Yg;\Kz$kMGǙ|y9p4 ## 'N6ק:,INvӴ'}om.UC߹yil]], *+ ԏGjjJJI$s'-pLO w 8Pt@;^4"תd+RkS?ӧS!d*6Jr9`ȡC*y;{M+V^0 L,%nZtaI! JP;&&_|2 N8u 73S捏QDzsF?$m|=,D/: `jӒŋY++Ǧp]?ޞ˂Q!,۽\FPv)ҁIDI >!ŋ̽5635tON[NNyS}ZC!s?OcctS6 {]Vv(a0 `bƙ~?MLv-0@.?3ߟ?Qv,EYY*p{cM"l "6`uALL,_Z]WgEjQgzzțNhSgJP9>8Ud0D)7RLy'p &J2jOZP!6Pڍ|Pr;^,R@#($1Jn*Zt&yS"oƁT\Vtk%]s a@Ó,4!XlC@0N4"KdF#D2Z_ kR_J%aۗFӜ+ 9ř͛75Α999$ʊJ![sE*Ue1ҩб "0"uR*:z/=Ʈ;j˺k^];J ҍωDݱc猎?p$:::nãF*V˗w39JJl~~ |SӐch.@ޕ>{@ѴCk 7 NR.a6 *Μ9SqC3M-(Çwpi:(su]v{@cb?yg~e [sd7'v:Mj!_iu*oHA^]0̛?o^/AJR͎F3~J i@Z8/Yt=xŕpBBʝ] 30#[,qmy"1%%榣١C +}e=ytR13`^.pė/I t' JЏc.f_;lx,r%7>B|D8d!A ~䳿NoY$^aE7o^ctn7$]M/`BhTO.m)&$diW_M|:zH$<_aVֲ5>-ْuVmAm!!ل5r@ nɦ`!q;2\Nl#:FH3=ӽ *3}os<Ce7癐J1 k4&e2$)zyY,,:9)XɢRx8yvfv99g(C';hLaxgϞe===>{׏ј- kf6~ KsV62Bc9͖Z8X#'PYɊqrH\uu<88p8|c| V<,$|,f4ZR,FM%%M.Wid&_"bɴFz"WtE] CUUiFG #rii)3!,wZ1^oGXdyI^uUU7W.Y2O,$&bZmL&oF3C}}F^9iojb怄3An柘X}sK7?vo+,,$w)xOcb ,yp,*(*}l(:<}ti^ u0::66v<cT3ȑo-4HYh[e[-q8̑|J10?'0 ;){hlHj-qݽCC?([zctG.@>Q'74"bEMM#NH"Asd F#gg Le y=CL$8- g V7a{{8׹JJf@kFGG[ [ZZ^BrkrcN1 ?mdM+X@Y#+pq`rњEo( Wbd2D^w b9uEEu.'Y,\+$2,qZUSwp÷y'{vϞi%%%gn=,|5EExv3l  {,XP5z=)x4x8#˲<)R)H! oh4-kH26>5%;++{nmmڏ{ 9h,,D, J!ywNyu{Yf V l$Nʛ33tO9/ MJtux )9)QM1D9rhil,%`|Kw se]ݪ\#X`N9?-MOs, d|ye2Ыr"0Zgg$Ck0qp&:t11MqEx_MxߧQRݶjޱׯ_Z—=o\n e n0p(lLGRԓ'BR`LG[^^QQQvM E러G|.ԇ8 OЙ}."Ezi͓{έF"tGJ5 7t-IeSr*ţJˠ_nK=y/Z-KTU}!rqq*9qSo/Yh`BS vyqd'Q%yL<64֭#>)US$"24[_xZɤDԻ6?Ka\yl:dhJs&⮨ƀ^y/i(>'"s,vvo<38n7=qt> Fu:_#YA #"썌䡹jw g?99#[Lv+b0m)Lg{nڱ=W6nܸ Qt?s׏'HfKc60%l3R]P]p4ӡ>1à@`:l4^"g[7sY-e&E.A}* "C&AA>o_h_ O|H`VsMIsS^( %Z:ŦNf衹I|3CIbVXD@IDZ^h^q=SW4,%(VA?Az8(SO,"SQ,B,26E'&OBF^)dT%Dpn(h$bСU.]'8)ְtn\Kjn殭c`-ƧpΜ^ʶѴ^Y@E8/p1% P4J+nj|VZK((r9\]?|HDF:uNDgŸ+7B>QI=b'xit.SsJrP"z' h4cx#K_@B+ 8$Xb XUSNݑsI$@9 "< Q @a65}y, U5|`g…TGjR\~]~?odJgQxyЙI yGa!Ȱ@8^tD1P jZ3 wzm$A;w)>ڇ0g܈ :F6n|`9NLISRECW=n^u.Ae;>ú\7C"sZ~9J;;;I&.C ccy`\77pӝO=tډ)RCY7L&g<,'oBC3!\F4 T3>Q[[OZDZlOd}*3VRҙيު[Swϸ()Kj='z6$vnxw.c ٬ f-lQ4ŜCIZ]]IpUL=Ijv _j] *#ٮ@t:lϏQ/0L C=Tq ŵnΙӫChx`n,Mrxޅ[_qZHr8I+Ӧ<}(ފJ vC2wzH d*'aG ʦ΁AZd: "mYig翬 BMt}vQTC-+:&◒;}dJB~OD%MjDr}Adz59Y2WlpA1 WT<~? 5jjL<;Xv|9c61v}w'Iv-`Nm 3?/ؕ"spDRaOYH 4FąpY?.G&FFIeUF͛q֦-^Q暻-Z4E/YjOaWm@CǻnC$4 6r yń(qd$ i$Z戴>5HˆEE'?s^ WML<2EaVB6}_Z51/?mQmZ~sX Bd>4rEt8a͵ 1iɗeF &.&G"ywY%Y1[avB47_+ R9^%} 1L׬97CɓeN5^zS{ ;NKAM+ᩮ>xާ>(Hz1;41%|U7wNYKϤU}& -:ڡe3"8ѼKee/S/+*]d┽'^@NHA'T aL;%Q^kxQ骄XD`!jkb9-tWTTFm $eGY@kNzoP]h"K DCY0ε`Cn# (rZCy}VH|r JڂD&"5C艡CηXR'D-IENDB`// english translation lng = { block: "Block element", blockElements: "Block similar elements", unblock: "Unblock element", unblockLatest: "Unblock latest element", edit: "Edit rules", enableSub: "Enable subscription for this site", disableSub: "Disable subscription for this site", preferences: "Preferences" };// russian translation if(navigator.language.slice(0, 2) == 'ru')lng = { block: "Заблокировать элемент", blockElements: "Заблокировать похожие элементы", unblock: "Разблокировать", unblockLatest: "Разблокировать последнее", edit: "Редактировать правила", enableSub: "Включить подписку для сайта", disableSub: "Выключить подписку для сайта", preferences: "Настройки" }; // ==UserScript== // @name NoAds // @author Lex1 // @version 1.1.4 // @include http://* // @description Block external scripts, block elements of a page and import subscriptions from Adblock Plus EHH. // @ujs:download http://ruzanow.ru/userjs/noads.js // ==/UserScript== (function(){ // global variables var reSkip, reBlock, sStyle, uStyle, sCss = '', uCss = '', blockedScripts = '', inlineScripts = 0, prefix = 'ujs_noads'; var none = '{display: none !important;}', highlight = '{background-color: #FF5555 !important; outline: 1px solid #FF1111 !important; opacity: 0.7 !important;}', padding = 'iframe, embed, object{padding-left: 16px !important; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAPCAQAAABHeoekAAAAc0lEQVQY02P4z4AfMlBPAQMzAzNWNlwIRPEygAA7mM3JgGYCL5gSgUrrMCgwsKEqYABKwjg6DGog09AVMDCIgZmmEGlMBexwjiREPaoCmN3GULegKoD6AmI3xC0C6CZwMijD7AZKamLzBRsQwgCYTZ24AAD8Zqzk4ASGSwAAAABJRU5ErkJggg==") no-repeat scroll 0 0 !important;}'; var rt = window.external.mxGetRuntime(); // helper functions var getValue = function(name){ var s = ''; try{s = decodeURIComponent(rt.storage.getConfig(name))}catch(e){rt.storage.setConfig(name, '')}; return s; }; var setValue = function(name, value){ rt.storage.setConfig(name, encodeURIComponent(value)); }; var delEle = function(ele){ if(ele && ele.parentNode)ele.parentNode.removeChild(ele); }; var addStyle = function(css){ if(document.documentElement.nodeName.toLowerCase() == 'html'){ var s = document.createElement('style'); s.setAttribute('type', 'text/css'); s.setAttribute('style', 'display: none !important;'); s.appendChild(document.createTextNode(css)); return (document.getElementsByTagName('head')[0] || document.documentElement).appendChild(s); } }; var replaceStyle = function(ele, css){ if(ele){ while(ele.firstChild)ele.removeChild(ele.firstChild); ele.appendChild(document.createTextNode(css)); } }; var splitCss = function(css){ var rez = []; css.replace(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/g, function(s, m){rez.push(m.replace(/^\s+|\s+$/g, ''))}); return rez; }; var getTLD = function(domain, full){ if(!domain)return ''; var r = domain.match(/^((?:\d{1,3}\.){3})\d{1,3}$/); if(r)return r[1] + '0'; var a = domain.split('.'), l = a.length; if(l < 2)return domain; return full ? a[l - 2] + '.' + a[l - 1] : a[(l > 2 && /^(co|com|net|org|edu|gov|mil|int)$/i.test(a[l - 2])) ? l - 3 : l - 2]; }; // translations var getLng = function(){ switch(window.navigator.language.slice(0, 2)){ case 'ru': return { _s: function(count){return (count > 4) ? '\u043E\u0432' : ((count > 1) ? '\u0430' : '')}, unblock: '\u0420\u0430\u0437\u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u0442\u044C: ', disabled: '\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u043E', blocked: '\u0417\u0430\u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u043E', script: '\u0441\u043A\u0440\u0438\u043F\u0442', and: ' \u0438 ', element: '\u044D\u043B\u0435\u043C\u0435\u043D\u0442', reload: '\u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443', nDisabled: 'NoAds \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D', nEnabled: 'NoAds \u0432\u043A\u043B\u044E\u0447\u0435\u043D', eStyles: '\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043E\u0442\u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u0442\u0438\u043B\u0438:', bElement: '\u0417\u0430\u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442?', iRules: ' \u043F\u0440\u0430\u0432\u0438\u043B \u0434\u043B\u044F ', iContinue: ' \u0441\u0430\u0439\u0442\u043E\u0432 \u0431\u0443\u0434\u0443\u0442 \u0438\u043C\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u044B. \u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0430\u0442\u044C?', iSubs: '\u041F\u043E\u0434\u043F\u0438\u0441\u043A\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u0430: ', iNoDefSub: '\u041E\u0448\u0438\u0431\u043A\u0430. \u041D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u0430 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0430 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E', iNoQuota: '\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 scriptStorage, \u043B\u0438\u0431\u043E \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043D\u0435 \u0431\u044B\u043B\u043E \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E. \n\n\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0435 "opera:config#PersistentStorage|UserJSStorageQuota" >= 500 Kb.', pInfo: '\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F', pClose: '\u0417\u0430\u043A\u0440\u044B\u0442\u044C', pGlobal: '\u0413\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438', pSite: '\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0434\u043B\u044F \u0441\u0430\u0439\u0442\u0430', pSubscriptions: '\u041F\u043E\u0434\u043F\u0438\u0441\u043A\u0438', pHelp: '\u0421\u043F\u0440\u0430\u0432\u043A\u0430', pSave: '\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C', pCss: 'Css \u0444\u0438\u043B\u044C\u0442\u0440\u044B', pUCss: '\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 css \u0444\u0438\u043B\u044C\u0442\u0440\u044B', pEnabled: '\u0412\u043A\u043B\u044E\u0447\u0435\u043D\u043E', pScripts: '\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0432\u043D\u0435\u0448\u043D\u0438\u0445 \u0441\u043A\u0440\u0438\u043F\u0442\u043E\u0432. \u0411\u0435\u043B\u044B\u0439 \u0441\u043F\u0438\u0441\u043E\u043A', pAbout: 'NoAds v1.1 final\n\n\u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0438:\n\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0441\u043A\u0440\u0438\u043F\u0442\u043E\u0432 \u0441 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u043E\u043C\u0435\u043D\u043E\u0432, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0432 99% \u0441\u043B\u0443\u0447\u0430\u0435\u0432 \u044F\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u0440\u0435\u043A\u043B\u0430\u043C\u043E\u0439.\n\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B, \u0432\u043A\u043B\u044E\u0447\u0430\u044F \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u0443\u044E \u0440\u0435\u043A\u043B\u0430\u043C\u0443.\n\u0418\u043C\u043F\u043E\u0440\u0442 \u043F\u043E\u0434\u043F\u0438\u0441\u043E\u043A AdBlock Plus EHH.\n\n\u0413\u043E\u0440\u044F\u0447\u0438\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u0438:\n\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 - Alt+Shift+P\n\n\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0440\u0435\u043A\u043B\u0430\u043C\u044B - Alt+Shift+A\n\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B - Alt+Shift+B\n\u0420\u0430\u0437\u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 - Alt+Shift+U\n\u0420\u0430\u0437\u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 - Alt+Shift+L\n\n(\u0440\u0430\u0437)\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 - Shift+Click', pBlockingDisabled: '\u041F\u043E\u043B\u043D\u043E\u0441\u0442\u044C\u044E \u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043D\u0430 \u044D\u0442\u043E\u043C \u0441\u0430\u0439\u0442\u0435', pBlockedScripts: '\u0417\u0430\u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0432\u043D\u0435\u0448\u043D\u0438\u0435 \u0441\u043A\u0440\u0438\u043F\u0442\u044B', pDownload: '\u0421\u043A\u0430\u0447\u0430\u0442\u044C \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0443', pAddToWhite: '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0435 \u0432 \u0431\u0435\u043B\u044B\u0439 \u0441\u043F\u0438\u0441\u043E\u043A', pAllRules: '\u0418\u043C\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u0441\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u0430 (\u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043C\u0435\u0434\u043B\u0435\u043D\u043D\u043E)', pAddRules: '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u0430 \u043A \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u043C (\u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043C\u0435\u0434\u043B\u0435\u043D\u043D\u043E)', pShowButton: '\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043A\u043D\u043E\u043F\u043A\u0443 \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u0430' }; case 'tr': return { _s: function(count){return (count > 1) ? 's' : ''}, unblock: 'Serbest b\u0131rak: ', disabled: 'Engelleme durduruldu', blocked: 'Engellendi', script: 'beti\u011Fi', and: ' ve ', element: 'elementi', reload: 'Bu sayfa yeniden yuklenmeli', nDisabled: 'NoAds iptal edildi', nEnabled: 'NoAds aktifle\u015Ftirildi', eStyles: 'Please, edit styles:', bElement: 'Bu element(ler) engellensin mi?', iRules: ' kurallar ', iContinue: ' icerik indirilecek. Devam edilsin mi?', iSubs: 'Subscription is downloaded: ', iNoDefSub: 'Error. There is no default subscription', iNoQuota: 'Your browser does not support scriptStorage or storage quota is not specified. \n\nSet "opera:config#PersistentStorage|UserJSStorageQuota" >= 500 Kb.', pInfo: 'Bilgi', pClose: 'Kapat', pGlobal: 'Genel Tercihler', pSite: 'Site Tercihleri', pSubscriptions: 'Filtreler', pHelp: 'Yard\u0131m', pSave: 'Kaydet', pCss: 'CSS filteri:', pUCss: 'Kullan\u0131c\u0131 css filteri:', pEnabled: 'Aktifle\u015Ftirildi', pScripts: 'Harici betikleri engelle. Beyaz Liste', pAbout: 'NoAds v1.1 final\n\nK\u0131sayollar:\nTercihler - Alt+Shift+P\n\nReklam engelle - Alt+Shift+A\nElement engelle - Alt+Shift+B\nEngellemeyi kald\u0131r - Alt+Shift+U\nSon engelleneni geri getir - Alt+Shift+L\n\nElementleri topluca engelle/kald\u0131r - Shift+Click', pBlockingDisabled: 'Engelleme tamamen iptal edildi', pBlockedScripts: 'Harici betikler engellendi', pDownload: 'Filtre indir', pAddToWhite: 'Add selected to white list', pAllRules: 'Import all rules (maybe slow)', pAddRules: 'Add rules to existing (maybe slow)', pShowButton: 'Show the quick button' }; case 'fr': return { _s: function(count){return (count > 1) ? 's' : ''}, unblock: 'D\u00E9bloquer : ', disabled: 'Blocage d\u00E9sactiv\u00E9', blocked: 'Bloqu\u00E9', script: 'script', and: ' et ', element: '\u00E9l\u00E9ment', reload: 'Cette page doit \u00EAtre recharg\u00E9e', nDisabled: 'NoAds d\u00E9sactiv\u00E9', nEnabled: 'NoAds activ\u00E9', eStyles: 's.v.p., modifiez les styles :', bElement: 'Bloquer cet(ces) \u00E9l\u00E9ment(s) ?', iRules: ' r\u00E8gles pour le site ', iContinue: ' seront import\u00E9es. Continuer ?', iSubs: 'Liste t\u00E9l\u00E9charg\u00E9e : ', iNoDefSub: 'Erreur. Il n\u2019y a pas de liste t\u00E9l\u00E9charg\u00E9e par d\u00E9faut', iNoQuota: 'Votre navigateur ne supporte pas le stockage via Javascript ou aucun quota n\u2019a \u00E9t\u00E9 d\u00E9fini. \n\nMerci d\u2019ajuster l\u2019option "opera:config#PersistentStorage|UserJSStorageQuota" >= 500 Kio.', pInfo: 'Informations', pClose: 'Fermer', pGlobal: 'Pr\u00E9f\u00E9rences globales', pSite: 'Pr\u00E9f\u00E9rences site', pSubscriptions: 'Listes t\u00E9l\u00E9chargeables', pHelp: 'Aide', pSave: 'Sauvegarder', pCss: 'Filtres CSS :', pUCss: 'Filtres User CSS :', pEnabled: 'Activ\u00E9', pScripts: 'Blocage de scripts externes. Liste blanche', pAbout: 'NoAds v1.1 finale\n\nFonctionnalit\u00E9s :\nBloque les scripts externes, n\u2019importe quel \u00E9l\u00E9ment d\u2019une page et importe des listes t\u00E9l\u00E9chargeables depuis AdBlock Plus EHH.\n\nRaccourcis clavier :\nPr\u00E9f\u00E9rences - Alt+Shift+P\n\nBloquer pub - Alt+Shift+A\nBloquer \u00E9l\u00E9ment - Alt+Shift+B\nD\u00E9bloquer - Alt+Shift+U\nD\u00E9bloquer le dernier \u00E9l\u00E9ment bloqu\u00E9 - Alt+Shift+L\n\nBloquer ou d\u00E9bloquer plusieurs \u00E9l\u00E9ments - Shift+Click', pBlockingDisabled: 'D\u00E9sactiver tout blocage sur ce site', pBlockedScripts: 'Scripts externes bloqu\u00E9s', pDownload: 'T\u00E9l\u00E9charger une liste', pAddToWhite: 'Ajouter la s\u00E9lection \u00E0 la liste blanche', pAllRules: 'Importer toutes les r\u00E8gles (parfois lent)', pAddRules: 'Ajouter les r\u00E8gles aux r\u00E8gles existantes (parfois lent)', pShowButton: 'Afficher le bouton d\u2019acc\u00E8s rapide' }; case 'pl': return { _s: function(count){return (count > 1) ? 's' : ''}, unblock: 'Odblokuj: ', disabled: 'Blokowanie jest wy\u0142\u0105czone', blocked: 'Zablokowane', script: 'skrypt', and: ' i ', element: 'element', reload: 'Musisz od\u015Bwie\u017Cy\u0107 stron\u0119', nDisabled: 'NoAds jest wy\u0142\u0105czone', nEnabled: 'NoAds jest w\u0142\u0105czone', eStyles: 'Prosz\u0119 wyedytowa\u0107 style:', bElement: 'Zablokowa\u0107 ten element(y)?', iRules: ' regu\u0142 dla ', iContinue: ' stron zostanie zaimportowanych. Kontynuowa\u0107?', iSubs: 'Pobrano subskrypcj\u0119 z: ', iNoDefSub: 'B\u0142\u0105d. Brak domy\u015Blnych subskrypcji', iNoQuota: 'Twoja przegl\u0105darka nie wspiera scriptStorage albo nie ustawiono storage quota. \n\nUstaw "opera:config#PersistentStorage|UserJSStorageQuota" >= 500 Kb.', pInfo: 'Informacje', pClose: 'Zamknij', pGlobal: 'Globalne preferencje', pSite: 'Preferencje strony', pSubscriptions: 'Subskrypcje', pHelp: 'Pomoc', pSave: 'Zapisz', pCss: 'Filtry CSS:', pUCss: 'Filtry CSS u\u017Cytkownika:', pEnabled: 'W\u0142\u0105cz', pScripts: 'Blokowanie zewn\u0119trznych skrypt\u00f3w. Bia\u0142a Lista:', pAbout: 'NoAds v1.1 final\n\nFunkcje:\nBlokowanie zewn\u0119trznych skrypt\u00f3w, blokowanie element\u00f3w na stronie i importowanie subskrypcji AdBlock Plus EHH.\n\nKlawisze skr\u00f3t\u00f3w:\nUstawienia - Alt+Shift+P\n\nBlokowanie reklam - Alt+Shift+A\nBlokowanie element\u00f3w - Alt+Shift+B\nOdblokuj - Alt+Shift+U\nOdblokuj ostatni element - Alt+Shift+L\n\nZablokuj/odblokuj wiele element\u00f3w - Shift+Klikni\u0119cie', pBlockingDisabled: 'Ca\u0142kowicie wy\u0142\u0105cz blokowanie na tej stronie', pBlockedScripts: 'Zablokowane zewn\u0119trzne skrypty:', pDownload: 'Pobierz subskrypcj\u0119', pAddToWhite: 'Dodaj zaznaczenie do bia\u0142ej listy', pAllRules: 'Zaimportuj wszystkie regu\u0142y (mo\u017Ce spowalnia\u0107)', pAddRules: 'Dodaj regu\u0142y do istniej\u0105cych (mo\u017Ce spowalnia\u0107)', pShowButton: 'Poka\u017C przycisk szybkiego dost\u0119pu' }; case 'zh-tw': return { _s: function(count){return (count > 1) ? '' : ''}, unblock: '\u53D6\u6D88\u963B\u64CB: ', disabled: '\u505C\u6B62\u963B\u64CB', blocked: '\u5DF2\u963B\u64CB', script: '\u8173\u672C', and: ' \u53CA ', element: '\u5143\u7D20', reload: '\u672C\u9801\u9762\u5FC5\u9808\u91CD\u65B0\u8F09\u5165', nDisabled: 'NoAds \u5DF2\u505C\u7528', nEnabled: 'NoAds \u5DF2\u555F\u7528', eStyles: '\u8ACB\u7DE8\u8F2F\u6A23\u5F0F\u898F\u5247:', bElement: '\u662F\u5426\u8981\u963B\u64CB\u6B64\u5143\u7D20?', iRules: ' \u7B46\u898F\u5247, \u53EF\u7528\u65BC ', iContinue: ' \u500B\u7DB2\u7AD9. \u9019\u4E9B\u898F\u5247\u5373\u5C07\u532F\u5165. \u662F\u5426\u8981\u7E7C\u7E8C?', iSubs: '\u5DF2\u4E0B\u8F09\u6B64\u8A02\u95B1\u6E05\u55AE: ', iNoDefSub: '\u932F\u8AA4. \u6C92\u6709\u9810\u8A2D\u7684\u8A02\u95B1\u6E05\u55AE', iNoQuota: '\u4F60\u7684\u700F\u89BD\u5668\u4E26\u4E0D\u652F\u63F4 scriptStorage \u6216\u8005\u662F\u672A\u6307\u5B9A\u5B58\u653E\u5BB9\u91CF. \n\n\u8ACB\u5C07 "opera:config#PersistentStorage|UserJSStorageQuota" \u8A2D\u81F3 500 Kb \u4EE5\u4E0A.', pInfo: '\u8CC7\u8A0A', pClose: '\u95DC\u9589', pGlobal: '\u5168\u57DF\u504F\u597D', pSite: '\u7AD9\u53F0\u504F\u597D', pSubscriptions: '\u8A02\u95B1\u6E05\u55AE', pHelp: '\u8AAA\u660E', pSave: '\u5132\u5B58', pCss: 'CSS \u904E\u6FFE\u898F\u5247:', pUCss: '\u4F7F\u7528\u8005 CSS \u904E\u6FFE\u898F\u5247:', pEnabled: '\u555F\u7528', pScripts: '\u5916\u90E8\u8173\u672C\u767D\u540D\u55AE (\u4E0D\u8981\u963B\u64CB\u9019\u4E9B\u5916\u90E8\u8173\u672C)', pAbout: 'NoAds v1.1.2 \u6B63\u5F0F\u7248\n\n\u529F\u80FD:\n\u963B\u64CB\u5916\u90E8\u8173\u672C, \u963B\u64CB\u9801\u9762\u5143\u7D20, \u4E26\u53EF\u5F9E AdBlock Plus EHH \u532F\u5165\u8A02\u95B1\u6E05\u55AE.\n\n\u71B1\u9375:\n\u504F\u597D\u8A2D\u5B9A - Alt+Shift+P\n\n\u963B\u64CB\u5EE3\u544A - Alt+Shift+A\n\u963B\u64CB\u5143\u7D20 - Alt+Shift+B\n\u53D6\u6D88\u963B\u64CB - Alt+Shift+U\n\u9084\u539F\u6700\u5F8C\u4E00\u500B\u963B\u64CB\u7684\u5143\u7D20 - Alt+Shift+L\n\n\u963B\u64CB\u6216\u53D6\u6D88\u963B\u64CB\u591A\u500B\u5143\u7D20 - \u6309\u4F4F Shift \u518D\u9EDE\u64CA', pBlockingDisabled: '\u5B8C\u5168\u4E0D\u8981\u963B\u64CB\u9019\u500B\u7DB2\u7AD9\u7684\u4EFB\u4F55\u5167\u5BB9', pBlockedScripts: '\u5DF2\u963B\u64CB\u7684\u5916\u90E8\u8173\u672C', pDownload: '\u4E0B\u8F09\u8A02\u95B1\u6E05\u55AE', pAddToWhite: '\u5C07\u6240\u9078\u5167\u5BB9\u52A0\u5165\u767D\u540D\u55AE', pAllRules: '\u532F\u5165\u6240\u6709\u7684\u898F\u5247 (\u53EF\u80FD\u6703\u5F88\u6162)', pAddRules: '\u52A0\u5165\u5DF2\u6709\u7684\u898F\u5247 (\u53EF\u80FD\u6703\u5F88\u6162)', pShowButton: '\u986F\u793A\u5FEB\u901F\u6309\u9215' }; case 'zh_TW': return { _s: function(count){return (count > 1) ? '' : ''}, unblock: '\u53D6\u6D88\u963B\u64CB: ', disabled: '\u505C\u6B62\u963B\u64CB', blocked: '\u5DF2\u963B\u64CB', script: '\u8173\u672C', and: ' \u53CA ', element: '\u5143\u7D20', reload: '\u672C\u9801\u9762\u5FC5\u9808\u91CD\u65B0\u8F09\u5165', nDisabled: 'NoAds \u5DF2\u505C\u7528', nEnabled: 'NoAds \u5DF2\u555F\u7528', eStyles: '\u8ACB\u7DE8\u8F2F\u6A23\u5F0F\u898F\u5247:', bElement: '\u662F\u5426\u8981\u963B\u64CB\u6B64\u5143\u7D20?', iRules: ' \u7B46\u898F\u5247, \u53EF\u7528\u65BC ', iContinue: ' \u500B\u7DB2\u7AD9. \u9019\u4E9B\u898F\u5247\u5373\u5C07\u532F\u5165. \u662F\u5426\u8981\u7E7C\u7E8C?', iSubs: '\u5DF2\u4E0B\u8F09\u6B64\u8A02\u95B1\u6E05\u55AE: ', iNoDefSub: '\u932F\u8AA4. \u6C92\u6709\u9810\u8A2D\u7684\u8A02\u95B1\u6E05\u55AE', iNoQuota: '\u4F60\u7684\u700F\u89BD\u5668\u4E26\u4E0D\u652F\u63F4 scriptStorage \u6216\u8005\u662F\u672A\u6307\u5B9A\u5B58\u653E\u5BB9\u91CF. \n\n\u8ACB\u5C07 "opera:config#PersistentStorage|UserJSStorageQuota" \u8A2D\u81F3 500 Kb \u4EE5\u4E0A.', pInfo: '\u8CC7\u8A0A', pClose: '\u95DC\u9589', pGlobal: '\u5168\u57DF\u504F\u597D', pSite: '\u7AD9\u53F0\u504F\u597D', pSubscriptions: '\u8A02\u95B1\u6E05\u55AE', pHelp: '\u8AAA\u660E', pSave: '\u5132\u5B58', pCss: 'CSS \u904E\u6FFE\u898F\u5247:', pUCss: '\u4F7F\u7528\u8005 CSS \u904E\u6FFE\u898F\u5247:', pEnabled: '\u555F\u7528', pScripts: '\u5916\u90E8\u8173\u672C\u767D\u540D\u55AE (\u4E0D\u8981\u963B\u64CB\u9019\u4E9B\u5916\u90E8\u8173\u672C)', pAbout: 'NoAds v1.1.2 \u6B63\u5F0F\u7248\n\n\u529F\u80FD:\n\u963B\u64CB\u5916\u90E8\u8173\u672C, \u963B\u64CB\u9801\u9762\u5143\u7D20, \u4E26\u53EF\u5F9E AdBlock Plus EHH \u532F\u5165\u8A02\u95B1\u6E05\u55AE.\n\n\u71B1\u9375:\n\u504F\u597D\u8A2D\u5B9A - Alt+Shift+P\n\n\u963B\u64CB\u5EE3\u544A - Alt+Shift+A\n\u963B\u64CB\u5143\u7D20 - Alt+Shift+B\n\u53D6\u6D88\u963B\u64CB - Alt+Shift+U\n\u9084\u539F\u6700\u5F8C\u4E00\u500B\u963B\u64CB\u7684\u5143\u7D20 - Alt+Shift+L\n\n\u963B\u64CB\u6216\u53D6\u6D88\u963B\u64CB\u591A\u500B\u5143\u7D20 - \u6309\u4F4F Shift \u518D\u9EDE\u64CA', pBlockingDisabled: '\u5B8C\u5168\u4E0D\u8981\u963B\u64CB\u9019\u500B\u7DB2\u7AD9\u7684\u4EFB\u4F55\u5167\u5BB9', pBlockedScripts: '\u5DF2\u963B\u64CB\u7684\u5916\u90E8\u8173\u672C', pDownload: '\u4E0B\u8F09\u8A02\u95B1\u6E05\u55AE', pAddToWhite: '\u5C07\u6240\u9078\u5167\u5BB9\u52A0\u5165\u767D\u540D\u55AE', pAllRules: '\u532F\u5165\u6240\u6709\u7684\u898F\u5247 (\u53EF\u80FD\u6703\u5F88\u6162)', pAddRules: '\u52A0\u5165\u5DF2\u6709\u7684\u898F\u5247 (\u53EF\u80FD\u6703\u5F88\u6162)', pShowButton: '\u986F\u793A\u5FEB\u901F\u6309\u9215' }; case 'zh-cn': return { _s: function(count){return (count > 1) ? '' : ''}, unblock: '\u53D6\u6D88\u963B\u6321: ', disabled: '\u505C\u6B62\u963B\u6321', blocked: '\u5DF2\u963B\u6321', script: '\u811A\u672C', and: ' \u53CA ', element: '\u5143\u7D20', reload: '\u672C\u9875\u9762\u5FC5\u987B\u91CD\u65B0\u8F7D\u5165', nDisabled: 'NoAds \u5DF2\u505C\u7528', nEnabled: 'NoAds \u5DF2\u542F\u7528', eStyles: '\u8BF7\u7F16\u8F91\u6837\u5F0F\u89C4\u5219:', bElement: '\u662F\u5426\u8981\u963B\u6321\u6B64\u5143\u7D20?', iRules: ' \u7B14\u89C4\u5219, \u53EF\u7528\u4E8E ', iContinue: ' \u4E2A\u7F51\u7AD9. \u8FD9\u4E9B\u89C4\u5219\u5373\u5C06\u6C47\u5165. \u662F\u5426\u8981\u7EE7\u7EED?', iSubs: '\u5DF2\u4E0B\u8F7D\u6B64\u8BA2\u9605\u6E05\u5355: ', iNoDefSub: '\u9519\u8BEF. \u6CA1\u6709\u9884\u8BBE\u7684\u8BA2\u9605\u6E05\u5355', iNoQuota: '\u4F60\u7684\u6D4F\u89C8\u5668\u5E76\u4E0D\u652F\u63F4 scriptStorage \u6216\u8005\u662F\u672A\u6307\u5B9A\u5B58\u653E\u5BB9\u91CF. \n\n\u8BF7\u5C06 "opera:config#PersistentStorage|UserJSStorageQuota" \u8BBE\u81F3 500 Kb \u4EE5\u4E0A.', pInfo: '\u8D44\u8BAF', pClose: '\u5173\u95ED', pGlobal: '\u5168\u57DF\u504F\u597D', pSite: '\u7AD9\u53F0\u504F\u597D', pSubscriptions: '\u8BA2\u9605\u6E05\u5355', pHelp: '\u8BF4\u660E', pSave: '\u50A8\u5B58', pCss: 'CSS \u8FC7\u6EE4\u89C4\u5219:', pUCss: '\u4F7F\u7528\u8005 CSS \u8FC7\u6EE4\u89C4\u5219:', pEnabled: '\u542F\u7528', pScripts: '\u5916\u90E8\u811A\u672C\u767D\u540D\u5355 (\u4E0D\u8981\u963B\u6321\u8FD9\u4E9B\u5916\u90E8\u811A\u672C)', pAbout: 'NoAds v1.1.2 \u6B63\u5F0F\u7248\n\n\u529F\u80FD:\n\u963B\u6321\u5916\u90E8\u811A\u672C, \u963B\u6321\u9875\u9762\u5143\u7D20, \u5E76\u53EF\u4ECE AdBlock Plus EHH \u6C47\u5165\u8BA2\u9605\u6E05\u5355.\n\n\u70ED\u952E:\n\u504F\u597D\u8BBE\u5B9A - Alt+Shift+P\n\n\u963B\u6321\u5E7F\u544A - Alt+Shift+A\n\u963B\u6321\u5143\u7D20 - Alt+Shift+B\n\u53D6\u6D88\u963B\u6321 - Alt+Shift+U\n\u8FD8\u539F\u6700\u540E\u4E00\u4E2A\u963B\u6321\u7684\u5143\u7D20 - Alt+Shift+L\n\n\u963B\u6321\u6216\u53D6\u6D88\u963B\u6321\u591A\u4E2A\u5143\u7D20 - \u6309\u4F4F Shift \u518D\u70B9\u51FB', pBlockingDisabled: '\u5B8C\u5168\u4E0D\u8981\u963B\u6321\u8FD9\u4E2A\u7F51\u7AD9\u7684\u4EFB\u4F55\u5185\u5BB9', pBlockedScripts: '\u5DF2\u963B\u6321\u7684\u5916\u90E8\u811A\u672C', pDownload: '\u4E0B\u8F7D\u8BA2\u9605\u6E05\u5355', pAddToWhite: '\u5C06\u6240\u9009\u5185\u5BB9\u52A0\u5165\u767D\u540D\u5355', pAllRules: '\u6C47\u5165\u6240\u6709\u7684\u89C4\u5219 (\u53EF\u80FD\u4F1A\u5F88\u6162)', pAddRules: '\u52A0\u5165\u5DF2\u6709\u7684\u89C4\u5219 (\u53EF\u80FD\u4F1A\u5F88\u6162)', pShowButton: '\u663E\u793A\u5FEB\u901F\u6309\u94AE' }; case 'zh_CN': return { _s: function(count){return (count > 1) ? '' : ''}, unblock: '\u53D6\u6D88\u963B\u6321: ', disabled: '\u505C\u6B62\u963B\u6321', blocked: '\u5DF2\u963B\u6321', script: '\u811A\u672C', and: ' \u53CA ', element: '\u5143\u7D20', reload: '\u672C\u9875\u9762\u5FC5\u987B\u91CD\u65B0\u8F7D\u5165', nDisabled: 'NoAds \u5DF2\u505C\u7528', nEnabled: 'NoAds \u5DF2\u542F\u7528', eStyles: '\u8BF7\u7F16\u8F91\u6837\u5F0F\u89C4\u5219:', bElement: '\u662F\u5426\u8981\u963B\u6321\u6B64\u5143\u7D20?', iRules: ' \u7B14\u89C4\u5219, \u53EF\u7528\u4E8E ', iContinue: ' \u4E2A\u7F51\u7AD9. \u8FD9\u4E9B\u89C4\u5219\u5373\u5C06\u6C47\u5165. \u662F\u5426\u8981\u7EE7\u7EED?', iSubs: '\u5DF2\u4E0B\u8F7D\u6B64\u8BA2\u9605\u6E05\u5355: ', iNoDefSub: '\u9519\u8BEF. \u6CA1\u6709\u9884\u8BBE\u7684\u8BA2\u9605\u6E05\u5355', iNoQuota: '\u4F60\u7684\u6D4F\u89C8\u5668\u5E76\u4E0D\u652F\u63F4 scriptStorage \u6216\u8005\u662F\u672A\u6307\u5B9A\u5B58\u653E\u5BB9\u91CF. \n\n\u8BF7\u5C06 "opera:config#PersistentStorage|UserJSStorageQuota" \u8BBE\u81F3 500 Kb \u4EE5\u4E0A.', pInfo: '\u8D44\u8BAF', pClose: '\u5173\u95ED', pGlobal: '\u5168\u57DF\u504F\u597D', pSite: '\u7AD9\u53F0\u504F\u597D', pSubscriptions: '\u8BA2\u9605\u6E05\u5355', pHelp: '\u8BF4\u660E', pSave: '\u50A8\u5B58', pCss: 'CSS \u8FC7\u6EE4\u89C4\u5219:', pUCss: '\u4F7F\u7528\u8005 CSS \u8FC7\u6EE4\u89C4\u5219:', pEnabled: '\u542F\u7528', pScripts: '\u5916\u90E8\u811A\u672C\u767D\u540D\u5355 (\u4E0D\u8981\u963B\u6321\u8FD9\u4E9B\u5916\u90E8\u811A\u672C)', pAbout: 'NoAds v1.1.2 \u6B63\u5F0F\u7248\n\n\u529F\u80FD:\n\u963B\u6321\u5916\u90E8\u811A\u672C, \u963B\u6321\u9875\u9762\u5143\u7D20, \u5E76\u53EF\u4ECE AdBlock Plus EHH \u6C47\u5165\u8BA2\u9605\u6E05\u5355.\n\n\u70ED\u952E:\n\u504F\u597D\u8BBE\u5B9A - Alt+Shift+P\n\n\u963B\u6321\u5E7F\u544A - Alt+Shift+A\n\u963B\u6321\u5143\u7D20 - Alt+Shift+B\n\u53D6\u6D88\u963B\u6321 - Alt+Shift+U\n\u8FD8\u539F\u6700\u540E\u4E00\u4E2A\u963B\u6321\u7684\u5143\u7D20 - Alt+Shift+L\n\n\u963B\u6321\u6216\u53D6\u6D88\u963B\u6321\u591A\u4E2A\u5143\u7D20 - \u6309\u4F4F Shift \u518D\u70B9\u51FB', pBlockingDisabled: '\u5B8C\u5168\u4E0D\u8981\u963B\u6321\u8FD9\u4E2A\u7F51\u7AD9\u7684\u4EFB\u4F55\u5185\u5BB9', pBlockedScripts: '\u5DF2\u963B\u6321\u7684\u5916\u90E8\u811A\u672C', pDownload: '\u4E0B\u8F7D\u8BA2\u9605\u6E05\u5355', pAddToWhite: '\u5C06\u6240\u9009\u5185\u5BB9\u52A0\u5165\u767D\u540D\u5355', pAllRules: '\u6C47\u5165\u6240\u6709\u7684\u89C4\u5219 (\u53EF\u80FD\u4F1A\u5F88\u6162)', pAddRules: '\u52A0\u5165\u5DF2\u6709\u7684\u89C4\u5219 (\u53EF\u80FD\u4F1A\u5F88\u6162)', pShowButton: '\u663E\u793A\u5FEB\u901F\u6309\u94AE' }; default: return { _s: function(count){return (count > 1) ? 's' : ''}, unblock: 'Unblock: ', disabled: 'Blocking disabled', blocked: 'Blocked', script: 'script', and: ' and ', element: 'element', reload: 'This page must be reloaded', nDisabled: 'NoAds disabled', nEnabled: 'NoAds enabled', eStyles: 'Please, edit styles:', bElement: 'Block this element(s)?', iRules: ' rules for ', iContinue: ' sites will be imported. Continue?', iSubs: 'Subscription is downloaded: ', iNoDefSub: 'Error. There is no default subscription', iNoQuota: 'Your browser does not support scriptStorage or storage quota is not specified. \n\nSet "opera:config#PersistentStorage|UserJSStorageQuota" >= 500 Kb.', pInfo: 'Information', pClose: 'Close', pGlobal: 'Global preferences', pSite: 'Site preferences', pSubscriptions: 'Subscriptions', pHelp: 'Help', pSave: 'Save', pCss: 'Css filters:', pUCss: 'User css filters:', pEnabled: 'Enabled', pScripts: 'Block external scripts. White list', pAbout: 'NoAds v1.1 final\n\nFeatures:\nBlock external scripts, block elements of a page and import subscriptions from AdBlock Plus EHH.\n\nHotkeys:\nPreferences - Alt+Shift+P\n\nBlock ads - Alt+Shift+A\nBlock element - Alt+Shift+B\nUnblock - Alt+Shift+U\nUnblock latest element - Alt+Shift+L\n\nBlock/unblock many elements - Shift+Click', pBlockingDisabled: 'Blocking on this site is completely disabled', pBlockedScripts: 'Blocked external scripts', pDownload: 'Download subscription', pAddToWhite: 'Add selected to white list', pAllRules: 'Import all rules (maybe slow)', pAddRules: 'Add rules to existing (maybe slow)', pShowButton: 'Show the quick button' } } }; // helper objects var noads = { domain: window.location.hostname, // adblock clearCss: function(css){ var a = splitCss(css); for(var i = a.length; i--;){ var rule = a[i]+'>'; for(var j = a.length; j--;){ if(a[j].indexOf(rule) == 0)a.splice(j, 1); } }; return a.join(','); }, delCss: function(css, del){ var a = splitCss(css); if(del){ for(var i = a.length; i--;){ if(del.indexOf(a[i]) == 0)a.splice(i, 1); } } else{ a.pop(); }; return a.join(','); }, getAtt: function(el, tags){ var rez = ''; if(el.attributes){ var r = new RegExp('^('+tags+')$'); for(var i = 0, a; a = el.attributes[i]; i++){ var n = a.nodeName.toLowerCase(); if(r.test(n))rez += '['+n+'=\x22'+a.nodeValue.replace(/[\x22\x5C]/g, '\\$&')+'\x22]'; } }; return rez; }, getNth: function(el){ var nth, n = 0, p = el.parentNode; for(var i = 0, c; c = p.childNodes[i]; i++){if(c.nodeType == 1){n++; if(c == el)nth = n}}; return (!nth || n < 2) ? '' : ':nth-child('+nth+')'; }, getCssRule: function(el, wide){ var att, tag, rez = []; while(el){ if(el.nodeType == 1){ tag = el.nodeName; att = this.getAtt(el, 'src') || this.getAtt(el, 'href'); if(att){ rez.unshift(tag+(wide ? att.replace(/^(\[\w+)(=\x22https?:\/\/)([^?#]+\/[^?#]+\/|[^?#]+).*(\x22\])$/i, '$1^$2$3$4') : att)); break; } else{ att = this.getAtt(el, 'id|class|height|width|color|bgcolor|align|valign|type'); rez.unshift(tag+att+((wide != false || /^(html|body)$/i.test(tag)) ? '' : this.getNth(el))); if(wide && att && (document.querySelectorAll ? document.querySelectorAll(tag+att).length == 1 : /\[id=\x22.*?\x22\]|\[class=\x22.*?\x22\]\[|\]\[class=\x22.*?\x22\]/.test(att)))break; } }; el = el.parentNode; }; return rez.join('>'); }, // subscriptions isCorrectDomain: function(domain, domains){ if(!domains)return true; var str, arr = domains.split(','), inDomain = false, exDomain = false; while(domain){ for(var i = 0, l = arr.length; i < l; i++){ str = arr[i]; if(str.charAt(0) != '~'){ if(str == domain){return true}else{inDomain = true}; } else{ if(str.slice(1) == domain){return false}else{exDomain = true}; } }; domain = domain.slice(domain.indexOf('.') + 1 || domain.length); }; return !inDomain && exDomain; }, getRules: function(name){ var rule, pos, rez = [], storage = getValue(name).split('\n'); for(var i = 0, l = storage.length; i < l; i++){ rule = storage[i]; pos = rule.indexOf('##'); if(pos != -1 && this.isCorrectDomain(this.domain, rule.slice(0, pos)))rez[rez.length] = rule.slice(pos + 2); }; return rez.join(','); }, setRules: function(name, selector){ var rule, pos, arr = [], rez = [], storage = getValue(name).split('\n'); var rules = splitCss(selector); rules.posArr = function(arr){ var len = arr.length; if(len)for(var i = 0, l = this.length - len + 1; i < l; i++){ for(var j = 0; j < len; j++){ if(arr[j] != this[i + j])break; }; if(j == len)return i; }; return -1; }; rules.delArr = function(arr){ var pos = this.posArr(arr); if(pos != -1)this.splice(pos, arr.length); }; rules.getCorrected = function(arr){ var rule, pos, len, stArr, currPos, nextPos, rez = []; for(var i = 0, l = arr.length - 1; i <= l; i++){ rule = arr[i]; pos = rule.indexOf('##') + 2; if(i < l){ stArr = splitCss(rule.slice(pos)); currPos = this.posArr(stArr); nextPos = this.posArr(splitCss(arr[i + 1].slice(arr[i + 1].indexOf('##') + 2))); len = currPos < nextPos ? nextPos : (currPos != -1 ? currPos + stArr.length : 0); } else{ len = this.length; }; if(len)rez.push(rule.slice(0, pos) + this.splice(0, len).join(',')); }; return rez; }; for(var i = storage.length; i--;){ rule = storage[i]; pos = rule.indexOf('##'); if(pos != -1 && this.isCorrectDomain(this.domain, rule.slice(0, pos))){ if(pos == 0){rules.delArr(splitCss(rule.slice(pos + 2)))}else{arr.unshift(rule); storage.splice(i, 1)}; } }; switch(arr.length){ case 0: if(rules.length)storage.unshift(this.domain + '##' + rules.join(',')); break; case 1: if(rules.length)storage.unshift(arr[0].slice(0, arr[0].indexOf('##') + 2) + rules.join(',')); break; default: storage = rules.getCorrected(arr).concat(storage); break; }; setValue(name, storage.join('\n')); for(var i = 0, l = storage.length; i < l; i++){ rule = storage[i]; pos = rule.indexOf('##'); if(pos != -1 && this.isCorrectDomain(this.domain, rule.slice(0, pos)))rez.push(rule.slice(pos + 2)); }; return rez.join(','); }, getReScriptBlock: function(name){ var rule, pos, rez = [], storage = getValue(name).split('\n'); for(var i = 0, l = storage.length; i < l; i++){ rule = storage[i]; pos = rule.indexOf('##$$'); if(pos != -1 && this.isCorrectDomain(this.domain, rule.slice(0, pos)))rez[rez.length] = rule.slice(pos + 4); }; return rez.length ? new RegExp(rez.join('|').replace(/\/|\.(?=\w)/g, '\\$&')) : false; } }; var option = { domain: window.location.hostname, get: function(name){return getValue(name) != 'disabled'}, set: function(name, value){setValue(name, !value ? 'disabled' : 'enabled')}, getForSite: function(){return this.isActiveDomain(prefix + '_list_white') || this.isActiveDomain(prefix + '_userlist_white') || this.isActiveDomain(prefix + '_scriptlist_white')}, setForSite: function(value){this.setActiveDomain(prefix + '_list_white', value); this.setActiveDomain(prefix + '_userlist_white', value); this.setActiveDomain(prefix + '_scriptlist_white', value)}, updateCss: function(){ sCss = (this.get(prefix + '_list_state') && option.isActiveDomain(prefix + '_list_white')) ? noads.getRules(prefix + '_list') : ''; if(sStyle){replaceStyle(sStyle, sCss ? sCss + none : '')}else if(sCss){sStyle = addStyle(sCss + none)}; uCss = (this.get(prefix + '_userlist_state') && option.isActiveDomain(prefix + '_userlist_white')) ? uCss = noads.getRules(prefix + '_userlist') : ''; if(uStyle){replaceStyle(uStyle, uCss ? uCss + none : '')}else if(uCss){uStyle = addStyle(uCss + none)}; }, isWhiteListed: function(rule, domain){ var pos = rule.indexOf('$'); if(pos != -1)rule = rule.slice(0, pos); var end = rule.charAt(rule.length - 1) == '^'; if(end)rule = rule.slice(0, -1); pos = domain.indexOf(rule); return (pos == 0 || pos > 0 && domain.charAt(pos - 1) == '.') && (!end || pos + rule.length == domain.length); }, setActiveDomain: function(name, value){ var rez = getValue(name).split('\n'); if(value){ for(var i = rez.length; i--;){ if(rez[i].indexOf('@@||') == 0){ if(this.isWhiteListed(rez[i].slice(4), this.domain))rez.splice(i, 1); } } } else{ rez.unshift('@@||' + this.domain.replace(/^www\./, '') + '^'); }; setValue(name, rez.join('\n')); }, isActiveDomain: function(name, retRe){ var rule, rez = [], storage = getValue(name).split('\n'); for(var i = 0, l = storage.length; i < l; i++){ rule = storage[i]; if(rule.indexOf('@@||') == 0){ if(this.isWhiteListed(rule.slice(4), this.domain))return false; } else if(retRe && rule.indexOf('@@==') == 0)rez[rez.length] = rule.slice(4); }; return retRe ? new RegExp((rez.join('|').replace(/\/|\.(?=\w)/g, '\\$&') || '^$'), 'i') : true; } }; var run = { stop: null, showPreferences: function(){ var getRawRules = function(name, global){ var rez = [], storage = getValue(name).split('\n'); if(global){ var whitelist = getValue(name + '_white').split('\n'); for(var i = 0, l = whitelist.length; i < l; i++){ if(whitelist[i].indexOf('@@') == 0)rez.push(whitelist[i]); } }; for(var i = 0, l = storage.length; i < l; i++){ var rule = storage[i], pos = rule.indexOf('##'); if(pos != -1){ if(global){rez.push(rule)}else{if(noads.isCorrectDomain(noads.domain, rule.slice(0, pos)))rez.push(rule)}; } }; return rez.join('\n\n'); }; var setHideRules = function(name, value, global){ var rule, pos, rez = [], arr = value.split('\n'); for(var i = 0, l = arr.length; i < l; i++){ rule = arr[i]; pos = rule.indexOf('##'); if(pos != -1 && rule.length > pos + 2)rez.push(rule); }; if(!global){ var storage = getValue(name).split('\n'); for(var i = storage.length; i--;){ rule = storage[i]; pos = rule.indexOf('##'); if(pos != -1 && noads.isCorrectDomain(noads.domain, rule.slice(0, pos)))storage.splice(i, 1); }; rez = rez.concat(storage); }; setValue(name, rez.join('\n')); }; var setWhiteList = function(name, value){ var rule, rez = [], arr = value.split('\n'); for(var i = 0, l = arr.length; i < l; i++){ rule = arr[i]; if(rule.indexOf('@@') == 0 && rule.length > 4)rez.push(rule); }; setValue(name, rez.join('\n')); }; var press = function(e){ if(e.keyCode == 27)run.stop(); }; var overlay = document.getElementById(prefix + '_window'); if(overlay){overlay.close(); return}; if(this.stop)this.stop(); overlay = document.createElement('div'); overlay.setAttribute('style', 'position:fixed;display:block;direction:ltr;left:0;top:0;width:100%;height:100%;padding:0;margin:0;z-index:9999;overflow:auto;background-color:#e3e5e7;font:14px Times New Roman;'); overlay.id = prefix + '_window'; overlay.clearStyle = addStyle('body{visibility: hidden !important; overflow: hidden !important;}'); overlay.close = function(){ option.updateCss(); delEle(this.clearStyle); document.removeEventListener('keypress', press, false); run.stop = null; delEle(this); }; this.stop = function(){overlay.close()}; document.addEventListener('keypress', press, false); var lng = getLng(); var win = document.createElement('div'); win.setAttribute('style', 'display:block;width:95%;height:auto;margin:20px auto;padding:5px;overflow:visible;background-color:#f3f4f5;color:black;border-radius:4px;box-shadow:0 0 12px rgba(0,0,0,.4);'); overlay.appendChild(win); var img = document.createElement('div'); img.setAttribute('style', 'display:block;float:right;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAQAAAD8x0bcAAAAZElEQVR42mNgGNyAGQixsVGU/AdCXjCbHczmxKaMFywlAlWiw6DAwIZNmQhYGqJEDWoqFiAGVmKKTwk73CRJ/Ep0GIyhbsPpO4hbIG4TwKaMk0EZ7hYBBk1cvmNDEmbDrmSwAADE8h10+qICXwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=");width:18px;height:18px;padding:0;margin:0;border:none;cursor:pointer;'); img.title = lng.pClose; img.onclick = function(){this.parentNode.parentNode.close()}; win.appendChild(img); win.createMenu = function(){ var menu = document.createElement('ul'); menu.setAttribute('style', 'overflow:hidden;margin:0 0 -1px 2px;padding:2px 2px 0 2px;list-style:none;'); for(var i = 0, item; item = arguments[i]; i++){ var list = document.createElement('li'); list.setAttribute('style', 'float:left;font-family:tahoma,sans-serif;font-size:11px;border:1px solid #aaaaaa;border-bottom-color:#fafbfc;border-radius:4px 4px 0 0;text-align:left;line-height:normal;white-space:nowrap;list-style-position:outside;cursor:default;margin:0 0 0 1px;padding:3px 9px;color:black;'); list.appendChild(document.createTextNode(item[0])); list.onclick = item[1]; menu.appendChild(list); }; this.appendChild(menu); }; var content = document.createElement('div'); content.setAttribute('style', 'display:block;width:auto;height:auto;margin:0 5px 5px 5px;padding:5px;overflow:hidden;border:1px solid #aaaaaa;border-radius:0 4px 4px 4px;background-color:#fafbfc;'); content.clear = function(num){ while(this.firstChild)this.removeChild(this.firstChild); if(arguments.length)for(var i = 0, li = this.previousElementSibling.getElementsByTagName('li'), l = li.length; i < l; i++){ li[i].style.backgroundColor = (i == num) ? '#fafbfc' : '#edeeef'; li[i].style.borderBottomColor = (i == num) ? '#fafbfc' : '#aaaaaa'; } }; content.createTextarea = function(hTxt, sName, global){ var disabled = global ? false : !option.get(sName + '_state'); var p = document.createElement('p'); p.setAttribute('style', 'margin:12px 2px 4px;padding:0;font:16px Times New Roman;'); p.appendChild(document.createTextNode(hTxt)); this.appendChild(p); var textarea = document.createElement('textarea'); textarea.setAttribute('style', 'display:block;margin:0 0 4px 0;padding:0 4px;font:14px Times New Roman;width:100%;height:200px;box-sizing:border-box;'); textarea.rows = '12'; textarea.cols = '160'; textarea.value = getRawRules(sName, global); textarea.disabled = disabled; this.appendChild(textarea); var label = document.createElement('label'); label.setAttribute('style', 'float:right;font:14px Times New Roman;'); label.appendChild(document.createTextNode(lng.pEnabled)); var checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.disabled = disabled; checkbox.checked = !disabled && (global ? option.get(sName + '_state') : option.isActiveDomain(sName + '_white')); checkbox.onclick = function(){ if(global){option.set(sName + '_state', this.checked)}else{option.setActiveDomain(sName + '_white', this.checked)}; }; label.appendChild(checkbox); this.appendChild(label); var button = document.createElement('input'); button.setAttribute('style', 'display:block;font:14px Times New Roman;'); button.type = 'button'; button.value = lng.pSave; button.disabled = disabled; button.onclick = function(){ var val = textarea.value.replace(/^\s+|\r|\s+$/g, ''); setHideRules(sName, val, global); if(global)setWhiteList(sName + '_white', val); }; this.appendChild(button); }; content.createRadioButton = function(txt, url){ var label = document.createElement('label'); label.setAttribute('style', 'display:block;font:14px Times New Roman;margin:2px 0;padding:2px 4px;'); var input = document.createElement('input'); input.type = 'radio'; input.name = 'subs'; if(url == getValue(prefix + '_default_url'))input.checked = true; label.appendChild(input); label.appendChild(document.createTextNode(txt)); if(txt){ var a = document.createElement('a'); a.setAttribute('style', 'display:inline;margin:0;padding:0;font:14px Times New Roman;color:#729fcf;text-decoration:underline;text-transform:none;'); a.href = url; a.target = '_blank'; a.appendChild(document.createTextNode(url)); label.appendChild(a); } else{ input = document.createElement('input'); input.setAttribute('style', 'width:400px;margin:2px;font-size:10px;'); input.type = 'text'; input.value = url; input.onkeyup = function(){this.previousElementSibling.checked = true; setValue(prefix + '_custom_url', this.value)}; label.appendChild(input); }; this.appendChild(label); }; content.showGlobPref = function(){ this.clear(1); this.createTextarea(lng.pUCss, prefix + '_userlist', true); this.createTextarea(lng.pCss, prefix + '_list', true); this.createTextarea(lng.pScripts, prefix + '_scriptlist', true); var label = document.createElement('label'); label.setAttribute('style', 'float:right;font:14px Times New Roman;margin:12px 0;'); label.appendChild(document.createTextNode(lng.pShowButton)); var checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.checked = option.get(prefix + '_button_state'); checkbox.onclick = function(){option.set(prefix + '_button_state', this.checked)}; label.appendChild(checkbox); this.appendChild(label); }; content.showSitePref = function(){ this.clear(0); this.createTextarea(lng.pUCss, prefix + '_userlist'); this.createTextarea(lng.pCss, prefix + '_list'); var disabled = !option.get(prefix + '_scriptlist_state'); var p = document.createElement('p'); p.setAttribute('style', 'margin:12px 2px 4px;padding:0;font:16px Times New Roman;'); p.appendChild(document.createTextNode(lng.pBlockedScripts)); this.appendChild(p); var textarea = document.createElement('textarea'); textarea.setAttribute('style', 'display:block;margin:0 0 4px 0;padding:0 4px;font:14px Times New Roman;width:100%;height:200px;box-sizing:border-box;'); textarea.rows = '12'; textarea.cols = '160'; textarea.value = blockedScripts.replace(/; /g, '\n'); textarea.disabled = disabled; textarea.readOnly = true; this.appendChild(textarea); var label = document.createElement('label'); label.setAttribute('style', 'float:right;font:14px Times New Roman;'); label.appendChild(document.createTextNode(lng.pEnabled)); var checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.disabled = disabled; checkbox.checked = !disabled && option.isActiveDomain(prefix + '_scriptlist_white'); checkbox.onclick = function(){option.setActiveDomain(prefix + '_scriptlist_white', this.checked)}; label.appendChild(checkbox); this.appendChild(label); var button = document.createElement('input'); button.setAttribute('style', 'display:block;font:14px Times New Roman;'); button.type = 'button'; button.value = lng.pAddToWhite; button.onclick = function(){ var val = textarea.value.substring(textarea.selectionStart, textarea.selectionEnd).replace(/^\s+|\r|\s+$/g, ''); if(val){ val = val.replace(/[*+?^=!${}()|[\]\\]|\.(?!\w)/g, '\\$&').replace(/\n+/g, '|'); var whitelist = getValue(prefix + '_scriptlist_white'); setValue(prefix + '_scriptlist_white', '@@==' + val + (whitelist ? '\n' + whitelist : '')); content.showGlobPref(); } }; this.appendChild(button); label = document.createElement('label'); label.setAttribute('style', 'float:right;font:14px Times New Roman;margin:12px 0;'); label.appendChild(document.createTextNode(lng.pBlockingDisabled)); checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.checked = !option.getForSite(); checkbox.onclick = function(){option.setForSite(!this.checked); content.showSitePref()}; label.appendChild(checkbox); this.appendChild(label); }; content.showSubscriptions = function(){ this.clear(2); this.createRadioButton('EasyList (USA): ', 'https://easylist-downloads.adblockplus.org/easylist.txt'); this.createRadioButton('EasyList Germany + EasyList: ', 'https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt'); this.createRadioButton('Liste FR (France) + EasyList: ', 'https://easylist-downloads.adblockplus.org/liste_fr+easylist.txt'); this.createRadioButton('RuAdList (Russia) + EasyList: ', 'https://easylist-downloads.adblockplus.org/ruadlist+easylist.txt'); this.createRadioButton('Fanboy\'s List: ', 'https://secure.fanboy.co.nz/fanboy-adblock.txt'); this.createRadioButton('', getValue(prefix + '_custom_url')); var label = document.createElement('label'); label.setAttribute('style', 'display:block;font:14px Times New Roman;margin:8px 0 2px 5px;'); var checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.id = prefix + '_allRules'; label.appendChild(checkbox); label.appendChild(document.createTextNode(lng.pAllRules)); this.appendChild(label); label = document.createElement('label'); label.setAttribute('style', 'display:block;font:14px Times New Roman;margin:2px 0 16px 5px;'); checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.id = prefix + '_addRules'; label.appendChild(checkbox); label.appendChild(document.createTextNode(lng.pAddRules)); this.appendChild(label); label = document.createElement('label'); label.setAttribute('style', 'float:right;font:14px Times New Roman;margin:8px 0;'); label.appendChild(document.createTextNode(lng.pEnabled)); checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.checked = option.get(prefix + '_subscription_state'); checkbox.onclick = function(){option.set(prefix + '_subscription_state', this.checked)}; label.appendChild(checkbox); this.appendChild(label); var button = document.createElement('input'); button.setAttribute('style', 'display:block;margin:8px;font:14px Times New Roman;'); button.type = 'button'; button.value = lng.pDownload; button.onclick = function(){ var url = '', inputs = this.parentNode.getElementsByTagName('input'); for(var i = 0, radioButton; radioButton = inputs[i]; i++){ if(radioButton.type == 'radio' && radioButton.checked){url = radioButton.nextElementSibling.href || radioButton.nextElementSibling.value; break}; }; if(url){ setValue(prefix + '_default_url', url); var allRules = document.getElementById(prefix + '_allRules').checked; var addRules = document.getElementById(prefix + '_addRules').checked; var req = new XMLHttpRequest(); req.onreadystatechange = function () { if (req.readyState == 4 && req.status == 200) { run.importSubscription(req.responseText, url, allRules, addRules); } else if (req.readyState >= 4) { throw 'server response was: "' + req.statusText + '"'; } }; req.overrideMimeType('text/plain'); req.open('GET', url, true); req.send(null); } }; this.appendChild(button); }; content.showHelp = function(){ this.clear(3); var p = document.createElement('pre'); p.setAttribute('style', 'display:block;margin:4px 0;padding:0 4px;font:14px Times New Roman;width:100%;height:auto;background-color:#fafbfc;color:black;border:none;overflow:visible;box-sizing:border-box;'); p.appendChild(document.createTextNode(lng.pAbout)); this.appendChild(p); }; win.createMenu([lng.pSite, function(){content.showSitePref()}], [lng.pGlobal, function(){content.showGlobPref()}], [lng.pSubscriptions, function(){content.showSubscriptions()}], [lng.pHelp, function(){content.showHelp()}]); win.appendChild(content); content.showSitePref(); document.documentElement.appendChild(overlay); }, setStatus: function(value){ if(window.top == window.self){window.status = value; window.defaultStatus = value; window.setTimeout(function(){window.defaultStatus = ''}, 4000)}; }, postMsg: function(msg){ for(var i = 0, f = window.frames, l = f.length; i < l; i++)if(f[i])f[i].postMessage(msg, '*'); }, // disable and enable blocking toggleBlocking: function(block){ var lng = getLng(); if(arguments.length ? !block : option.getForSite()){ option.setForSite(false); option.updateCss(); this.setStatus(lng.nDisabled); this.postMsg(prefix + '_disable'); } else{ option.setForSite(true); option.updateCss(); this.setStatus(lng.nEnabled); this.postMsg(prefix + '_enable'); } }, // adblock editStyles: function(){ var lng = getLng(); var rez = prompt(lng.eStyles, noads.getRules(prefix + '_userlist')); if(rez != null){ rez = noads.setRules(prefix+'_userlist', rez); uCss = rez; if(rez)rez += none; if(uStyle){replaceStyle(uStyle, rez)}else{uStyle = addStyle(rez)}; } }, unblockEle: function(latest){ if(this.stop)this.stop(); var padCss, css = noads.getRules(prefix + '_userlist'); if(!uStyle || !css)return; var remove = function(){ document.removeEventListener('click', click, false); document.removeEventListener('keyup', press, false); delEle(padCss); run.stop = null; }; var click = function(ev){ ev.preventDefault(); var oldCss = noads.getRules(prefix + '_userlist'); var css = noads.delCss(oldCss, noads.getCssRule(ev.target, false)); if(css == oldCss)css = noads.delCss(oldCss, noads.getCssRule(ev.target, null)); if(css == oldCss)css = noads.delCss(oldCss, noads.getCssRule(ev.target, true)); if(css != oldCss)css = noads.setRules(prefix + '_userlist', css); uCss = css; replaceStyle(uStyle, css ? css+(ev.shiftKey ? highlight : none) : ''); if(!ev.shiftKey)remove(); }; var press = function(ev){ if(ev.keyCode == 27)run.stop(); }; if(latest){ css = noads.delCss(css); css = noads.setRules(prefix + '_userlist', css); uCss = css; replaceStyle(uStyle, css ? css+none : ''); } else{ this.stop = function(){var css = noads.getRules(prefix + '_userlist'); replaceStyle(uStyle, css ? css+none : ''); remove()}; padCss = addStyle(padding); replaceStyle(uStyle, css+highlight); document.addEventListener('click', click, false); document.addEventListener('keyup', press, false); } }, blockEle: function(wide){ if(this.stop)this.stop(); var css, tmpCss, padCss, ele = '', outline = '', bgColor = '', title = ''; var remove = function(){ document.removeEventListener('mouseover', over, false); document.removeEventListener('mouseout', out, false); document.removeEventListener('click', click, false); document.removeEventListener('keyup', press, false); delEle(tmpCss); delEle(padCss); run.stop = null; }; var over = function(ev){ ele = ev.target; title = ele.title; ele.title = 'Tag: '+ele.nodeName+(ele.id ? ', ID: '+ele.id : '')+(ele.className ? ', Class: '+ele.className : ''); outline = ele.style.outline; ele.style.outline = '1px solid #306EFF'; bgColor = ele.style.backgroundColor; ele.style.backgroundColor = '#C6DEFF'; }; var out = function(){ if(ele){ ele.title = title; ele.style.outline = outline; ele.style.backgroundColor = bgColor; } }; var click = function(ev){ if(ele){ ev.preventDefault(); out(); var rules, rule = noads.getCssRule(ele, !wide != !ev.altKey); css = css ? (css != (rules = noads.delCss(css, rule)) ? (ev.shiftKey ? rules : css) : css+','+rule) : rule; if(tmpCss){replaceStyle(tmpCss, css+highlight)}else{tmpCss = addStyle(css+highlight)}; if(!ev.shiftKey){ var lng = getLng(); css = prompt(lng.bElement, css); if(css){ rules = noads.getRules(prefix + '_userlist'); if(rules)css = noads.clearCss(rules+','+css); css = noads.setRules(prefix + '_userlist', css); uCss = css; if(uStyle){replaceStyle(uStyle, css+none)}else{uStyle = addStyle(css+none)}; }; remove(); } } }; var press = function(ev){ if(ev.keyCode == 27)run.stop(); }; run.stop = function(){out(); remove()}; padCss = addStyle(padding); document.addEventListener('mouseover', over, false); document.addEventListener('mouseout', out, false); document.addEventListener('click', click, false); document.addEventListener('keyup', press, false); }, // create default white list setDefWhiteList: function(){ var whiteList = '~youtube.com,~metacafe.com,~lastfm.ru,~livegames.ru,~vkontakte.ru,~eurosport.ru,~imageshack.us,~britannica.com,~vimeo.com,~virustotal.com,' + '~wikipedia.org,~newegg.com,~yahoo.com,~facebook.com,~deviantart.com,~hotmail.com,~picasaweb.google.com,~playset.ru,~molotok.ru,~megashare.by,~ya.ru,' + '~mail.ru,~piter.fm,~kinozal.tv,~tvshack.net,~anonym.to,~twitter.com,~flickr.com,~myspace.com,~bbc.co.uk,~ebay.com,~opera.com,~imdb.com,~macromedia.com'; var skipScripts = '^data:|^http://ajax.googleapis.com/|^http://www.google.com/jsapi|^http://maps.google.com/|^http://www.google.com/recaptcha/' + '|^http://[0-9a-z-]+.gstatic.com/|^http://[0-9a-z-]+.appspot.com/|^http://yui.yahooapis.com/|^http://script.aculo.us/|^http://api.bit.ly/' + '|^http://ipinfodb.com/|^http://api.recaptcha.net/|^http://rutube.ru/|^http://css.yandex.net/|^http://api-maps.yandex.ru/' + '|^http://s\\d+.addthis.com/js/|^http://s\\d+.ucoz.net/src/u.js|^http://[0-9a-z-]+.imgsmail.ru/|^http://62.105.135.100/|^https?://auth.tbn.ru' + '|^https://easylist-downloads.adblockplus.org/[a-z_+-]+.txt$|^https://secure.fanboy.co.nz/[a-z_+-]+.txt$' + '|swfobject.js$|show_afs_search.js$|chart.js$|ajax.js$|widgets.js$|common.js$|AC_RunActiveContent.js$|jquery[0-9a-z.-]*.js$'; var rez = [], arr = whiteList.split(','); for(var i = 0, rule; rule = arr[i]; i++){ if(rule.charAt(0) == '~')rez.push('@@||' + rule.slice(1) + '^'); }; setValue(prefix + '_scriptlist_white', rez.join('\n') + '\n@@==' + skipScripts); }, // import subscription to storage importSubscription: function(list, url, allRules, addRules){ var convertOldRules = function(tagName, attrRules){ var rule, rules, sep, additional = '', id = null, reAttrRules = /\([\w\-]+(?:[$^*]?=[^\(\)"]*)?\)/g; if(tagName == '*')tagName = ''; if(attrRules){ rules = attrRules.match(reAttrRules); for(var i = 0, l = rules.length; i < l; i++){ rule = rules[i].slice(1, -1); sep = rule.indexOf('='); if(sep > 0){ rule = rule.slice(0, sep) + '="' + rule.slice(sep + 1) + '"'; additional += '[' + rule + ']'; } else{ if(id){return ''}else{id = rule}; } } }; if(id){ return tagName + '.' + id + additional + ',' + tagName + '#' + id + additional; } else{ return (tagName || additional) ? tagName + additional : ''; } }; var isSiteOnly = function(domains){ if(domains){ var arr = domains.split(','); for(var i = 0, l = arr.length; i < l; i++){ if(arr[i].charAt(0) != '~')return true; } } }; var isValidSelector = function(selector){ if(document.querySelectorAll)try{document.querySelectorAll(selector)}catch(e){return false}; return true; }; var getHidingRules = function(list, all, script){ var rez = [], scriptList = [], reTrim = /^\s+|\s+$/g, reBlank = /^(?:$|[\[!@]|\/.*\/$)/, reElemHide = /^([^\/\*\|\@"]*?)#(?:([\w\-]+|\*)((?:\([\w\-]+(?:[$^*]?=[^\(\)"]*)?\))*)|#([^{}]+))$/; if(list){ var rule, domains, tagName, attrRules, selector, arr = list.split('\n'); for(var i = 0, l = arr.length; i < l; i++){ rule = arr[i].replace(reTrim, ''); if(!reBlank.test(rule) && reElemHide.test(rule)){ domains = RegExp.$1; tagName = RegExp.$2; attrRules = RegExp.$3; selector = RegExp.$4 || convertOldRules(tagName, attrRules); if(selector){ if(selector.indexOf('$$') != 0){ if(isValidSelector(selector) && (all || isSiteOnly(domains)))rez.push([domains, selector]); } else{ if(script)scriptList.push(domains + '##' + selector); } } } }; if(script)return scriptList; rez.sort(); for(var i = rez.length; i--;){ if(i > 0 && rez[i][0] == rez[i-1][0]){ if(rez[i][1] != rez[i-1][1])rez[i-1][1] += ',' + rez[i][1]; rez.splice(i, 1); } else{ rez[i] = rez[i][0] + '##' + rez[i][1]; } } }; return rez; }; var getHidingRulesLength = function(arr){ var rule, pos, len = 0; for(var i = 0, l = arr.length; i < l; i++){ rule = arr[i]; pos = rule.indexOf('##'); if(pos != -1 && rule.length > pos + 2)len += rule.slice(pos + 2).match(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/g).length; }; return len; }; var storage, lng = getLng(); if(!addRules){ storage = getHidingRules(list, allRules); } else{ storage = getValue(prefix + '_list').split('\n').concat(getHidingRules(list, allRules)); storage.sort(); for(var i = storage.length; i--;){ if(storage[i].indexOf('##') == -1 || storage[i] == storage[i-1])storage.splice(i, 1); } }; if(storage.length){ if(confirm(lng.iSubs+url+'\n\n'+getHidingRulesLength(storage)+lng.iRules+storage.length+lng.iContinue)){ setValue(prefix + '_list', storage.join('\n')); if(list.indexOf('##$$') != -1)setValue(prefix + '_scriptlist', getHidingRules(list, true, true).join('\n')); } } else{ alert('Error!'); } }, // the quick button noreload: true, createButton: function(css, blocked){ var enabled = option.getForSite(); var arrCss = splitCss(css); if(document.querySelectorAll){ for(var i = arrCss.length; i--;){ if(document.querySelectorAll(arrCss[i]).length == 0)arrCss.splice(i, 1); }; css = arrCss.join(','); }; if(enabled && this.noreload && !blocked && !css)return; var sCount = blocked.split('; ').length; var eCount = arrCss.length; var lng = getLng(); var txt = this.noreload ? (enabled ? lng.blocked + ': ' + (blocked ? sCount + ' ' + lng.script + lng._s(sCount) + (css ? lng.and : '') : '') + (css ? eCount + ' ' + lng.element + lng._s(eCount) : '') : lng.disabled) : lng.reload; var title = (enabled && this.noreload) ? lng.unblock + (blocked ? blocked + (css ? '; ' : '') : '') + css : ''; var b = document.getElementById(prefix + '_button'); if(b){b.value = txt; b.title = title; return}; b = document.createElement('input'); b.type = 'button'; b.value = txt; b.title = title; b.id = prefix + '_button'; b.setAttribute('style', 'display:inline-block;position:fixed;visibility:hidden;right:0;bottom:0;width:auto;height:auto;margin:0;padding:1px 8px;font:12px Times New Roman;z-index:9999;cursor:pointer;'); b.addEventListener('click', function(e){ if(e.ctrlKey && !e.shiftKey && !e.altKey){run.showPreferences(); return}; if(run.noreload){ run.toggleBlocking(!enabled); if(css && !blocked){delEle(this)}else{this.value = lng.reload; this.style.width = 'auto'; run.noreload = false}; } else{ window.location.reload(); } }, false); b.addEventListener('mouseout', function(){this.setAttribute('style', 'visibility:hidden;'); delEle(this, this.offsetHeight * this.offsetWidth)}, false); (document.body || document.documentElement).appendChild(b); var maxWidth = b.offsetWidth; b.style.width = 0; b.style.visibility = 'visible'; var timer = window.setInterval(function(){ var width = parseInt(b.style.width || maxWidth) + 20; if(width > maxWidth){clearTimeout(timer); width = maxWidth}; b.style.width = width + 'px'; }, 10); } }; // main code if(!rt.storage){run.setStatus(getLng().iNoQuota); console.log(getLng().iNoQuota); return}; // create the button if(option.get(prefix + '_button_state'))document.addEventListener('mousemove', function(e){ var docEle = (document.compatMode == 'CSS1Compat' && window.postMessage) ? document.documentElement : document.body; if(docEle && docEle.clientHeight - e.clientY < 20 && docEle.clientWidth - e.clientX < 40)run.createButton(sCss ? (uCss ? sCss + ',' + uCss : sCss) : uCss, inlineScripts ? ('