AdRemover

Enjoy the web without ads!

  1. // ==UserScript==
  2. // @name AdRemover
  3. // @version 8.5
  4. // @description Enjoy the web without ads!
  5. // @match http://*/*
  6. // @match https://*/*
  7. // @exclude https://www.google.*/*tbm=isch*
  8. // @copyright 2014+, ich01
  9. // @namespace http://userscripts.org/scripts/show/159351
  10. // @grant GM_getValue
  11. // @grant GM_setValue
  12. // @grant GM_registerMenuCommand
  13. // ==/UserScript==
  14. //unsafeWindow
  15. var uw = (this.unsafeWindow) ? this.unsafeWindow : window;
  16. //AdRemover object
  17. uw.adremover = {
  18. thisScriptVersion: "8.5",
  19. startTime: new Date().getMilliseconds(),
  20. startTimeSeconds: new Date().getSeconds(),
  21. isfirefox: false,
  22. keyWordList: [],
  23. keyURLList: [],
  24. keyPopupList: [],
  25. keyInPagePopupList: [],
  26. labelTextes: [],
  27. removedElements: 0,
  28. removedImages: 0,
  29. removedObjects: 0,
  30. removedPlaceholders: 0,
  31. removedSpecialPopups: 0,
  32. AR_elements_activated: true,
  33. AR_objects_activated: true,
  34. AR_images_activated: true,
  35. AR_minimode_activated: false,
  36. AR_placeholders_activated: true,
  37. removedElementsArray: [],
  38. removedImagesArray: [],
  39. removedObjectsArray: [],
  40. removedPlaceholdersArray: [],
  41. removedSpecialPopupsArray: [],
  42. AR_milliseconds: 0,
  43. regexp_adsearch: "",
  44. regexp_iframesearch: "",
  45. regexp_popupsearch: "",
  46. regexp_inpagepopupsearch: "",
  47. testForForbiddenKeywords: function(words) {
  48. var h_Regexp = new RegExp("badge|radio|logo|acad|Ads_BA_TakeOver|fad|load|shad|read|head|add|pad|advanced|grad|admin|nonpro_adslayout|captcha|masthead-|yt-masthead","i");
  49. if (words.search(h_Regexp)>-1) {
  50. return true;
  51. } else {
  52. return false;
  53. }
  54. },
  55. initAdRegexp: function() {
  56. var newRegexpString = adremover.keyWordList[0];
  57. for (var i = 1;i<adremover.keyWordList.length;i++) {
  58. newRegexpString+="|"+adremover.keyWordList[i];
  59. }
  60. var a_Regexp = new RegExp(newRegexpString,"i");
  61. adremover.regexp_adsearch = a_Regexp;
  62. },
  63. initIframeRegexp: function() {
  64. var newRegexpString = adremover.keyURLList[0];
  65. for (var i = 1;i<adremover.keyURLList.length;i++) {
  66. newRegexpString+="|"+adremover.keyURLList[i];
  67. }
  68. var a_Regexp = new RegExp(newRegexpString,"i");
  69. adremover.regexp_iframesearch = a_Regexp;
  70. },
  71. initPopupRegexp: function() {
  72. var newRegexpString = adremover.keyPopupList[0];
  73. for (var i = 1;i<adremover.keyPopupList.length;i++) {
  74. newRegexpString+="|"+adremover.keyPopupList[i];
  75. }
  76. var a_Regexp = new RegExp(newRegexpString,"i");
  77. adremover.regexp_popupsearch = a_Regexp;
  78. },
  79. initInPagePopupRegexp: function() {
  80. var newRegexpString = adremover.keyInPagePopupList[0];
  81. for (var i = 1;i<adremover.keyInPagePopupList.length;i++) {
  82. newRegexpString+="|"+adremover.keyInPagePopupList[i];
  83. }
  84. var a_Regexp = new RegExp(newRegexpString,"i");
  85. adremover.regexp_inpagepopupsearch = a_Regexp;
  86. },
  87. handleIframe: function(iframe) {
  88. if (iframe) {
  89. var oldSRC = iframe.getAttribute("src");
  90. adremover.removedObjectsArray.push(oldSRC);
  91. iframe.outerHTML="";
  92. }
  93. },
  94. getBrowserLanguage: function() {
  95. adremover.labelTextes = [];
  96. adremover.labelTextes[0] = "Total";
  97. adremover.labelTextes[1] = "Elements";
  98. adremover.labelTextes[2] = "Images";
  99. adremover.labelTextes[3] = "Objects";
  100. adremover.labelTextes[4] = "Click for Popup!";
  101. adremover.labelTextes[5] = "Close popup";
  102. adremover.labelTextes[6] = "Restore ads partially";
  103. adremover.labelTextes[7] = "Enable AdRemover on this domain";
  104. adremover.labelTextes[8] = "General Settings";
  105. adremover.labelTextes[9] = "Remove normal elements";
  106. adremover.labelTextes[10] = "Remove images";
  107. adremover.labelTextes[11] = "Remove iframes";
  108. adremover.labelTextes[12] = "Remove placeholders";
  109. adremover.labelTextes[13] = "Ads restored!";
  110. adremover.labelTextes[14] = "An unknown error occurred in AdRemover "+adremover.thisScriptVersion+".";
  111. adremover.labelTextes[15] = "AdRemover is now disabled on this domain!";
  112. adremover.labelTextes[16] = "AdRemover is now enabled on this domain!";
  113. adremover.labelTextes[17] = "Placeholders";
  114. adremover.labelTextes[18] = "About";
  115. adremover.labelTextes[19] = "Author";
  116. adremover.labelTextes[20] = "Minimized info";
  117. if (navigator.language.indexOf("de")>=0) {
  118. //German translation
  119. adremover.labelTextes[0] = "Gesamt";
  120. adremover.labelTextes[1] = "Elemente";
  121. adremover.labelTextes[2] = "Grafiken";
  122. adremover.labelTextes[3] = "Objekte";
  123. adremover.labelTextes[4] = "Klick f&uuml;r Popup!";
  124. adremover.labelTextes[5] = "Popup schlie&szlig;en";
  125. adremover.labelTextes[6] = "Werbung teilweise wiederherstellen";
  126. adremover.labelTextes[7] = "Werbeblocker auf dieser Domain aktivieren";
  127. adremover.labelTextes[8] = "Allgemeine Einstellungen";
  128. adremover.labelTextes[9] = "Normale Elemente entfernen";
  129. adremover.labelTextes[10] = "Grafiken entfernen";
  130. adremover.labelTextes[11] = "Eingebundene Frames entfernen";
  131. adremover.labelTextes[12] = "Platzhalter entfernen";
  132. adremover.labelTextes[13] = "Werbung wiederhergestellt";
  133. adremover.labelTextes[14] = "Ein unbekannter Fehler trat in AdRemover "+adremover.thisScriptVersion+" auf.";
  134. adremover.labelTextes[15] = "AdRemover ist nun auf dieser Domain deaktiviert!";
  135. adremover.labelTextes[16] = "AdRemover ist nun auf dieser Domain wieder aktiviert!";
  136. adremover.labelTextes[17] = "Platzhalter";
  137. adremover.labelTextes[18] = "&Uuml;ber";
  138. adremover.labelTextes[19] = "Autor";
  139. adremover.labelTextes[20] = "Winzige Info";
  140. }
  141. },
  142. createInfoElement: function(removed_elements, removed_images, removed_objects) {
  143. document.getElementsByTagName("body")[0].appendChild(document.createElement("adremover"));
  144. var adrel = document.getElementsByTagName("adremover")[0];
  145. adrel.style.textAlign="left";
  146. adrel.style.lineHeight="12px";
  147. adrel.style.opacity="0.85";
  148. adrel.style.color="black";
  149. adrel.style.position="fixed";
  150. adrel.style.zIndex="9999999999999";
  151. adrel.style.fontSize="11px";
  152. adrel.style.top="0px";
  153. adrel.style.right="0px";
  154. adrel.style.background="rgba(238, 238, 238,0.9)";
  155. adrel.style.borderLeft="2px solid cyan";
  156. adrel.style.borderBottom="2px solid cyan";
  157. adrel.style.boxShadow="cyan -2px 2px 4px 1px";
  158. adrel.style.display="block";
  159. adrel.style.padding="4px";
  160. adrel.style.maxHeight="150px";
  161. adrel.style.maxWidth="150px";
  162. adrel.style.borderBottomLeftRadius="3px";
  163. adrel.style.transition="all 0.8s ease-out";
  164. adrel.style.fontFamily="Arial";
  165. adrel.style.cursor="pointer";
  166. adrel.addEventListener("click", function() {adremover.createPopup();});
  167. var allString = "<span style='font-family:Arial;font-weight:bold;font-size:15px;'>AdRemover "+adremover.thisScriptVersion+"</span><br>";
  168. allString+="<span style='font-family:Arial;font-weight:bold;'>"+adremover.labelTextes[0]+":</span> "+(adremover.removedElements+adremover.removedImages+adremover.removedObjects)+"<br>";
  169. if (adremover.removedElements>0) {
  170. allString+=adremover.labelTextes[1]+": "+adremover.removedElements+"<br>";
  171. }
  172. if (adremover.removedImages>0) {
  173. allString+=adremover.labelTextes[2]+": "+adremover.removedImages+"<br>";
  174. }
  175. if (adremover.removedObjects>0) {
  176. allString+=adremover.labelTextes[3]+": "+adremover.removedObjects+"<br>";
  177. }
  178. if (adremover.removedPlaceholders>0) {
  179. allString+=adremover.labelTextes[17]+": "+adremover.removedPlaceholders+"<br>";
  180. }
  181. if (adremover.removedSpecialPopups>0) {
  182. allString+="Special Popups: "+adremover.removedSpecialPopups+"<br>";
  183. }
  184. allString+="<span style='font-family:Arial;font-weight:bold;'>"+adremover.labelTextes[4]+"</span>";
  185. document.getElementsByTagName("adremover")[0].innerHTML=allString;
  186. setTimeout("adremover.hideInfoElement()", 6000);
  187. },
  188. createMiniInfoElement: function() {
  189. document.getElementsByTagName("body")[0].appendChild(document.createElement("adremover"));
  190. var adrel = document.getElementsByTagName("adremover")[0];
  191. adrel.style.textAlign="left";
  192. adrel.style.lineHeight="12px";
  193. adrel.style.opacity="0.85";
  194. adrel.style.color="black";
  195. adrel.style.position="fixed";
  196. adrel.style.zIndex="9999999999999";
  197. adrel.style.fontSize="11px";
  198. adrel.style.top="0px";
  199. adrel.style.right="0px";
  200. adrel.style.background="rgba(238, 238, 238,0.9)";
  201. adrel.style.borderLeft="2px solid cyan";
  202. adrel.style.borderBottom="2px solid cyan";
  203. adrel.style.boxShadow="cyan -2px 2px 4px 1px";
  204. adrel.style.display="block";
  205. adrel.style.padding="4px";
  206. adrel.style.maxHeight="150px";
  207. adrel.style.maxWidth="150px";
  208. adrel.style.borderBottomLeftRadius="3px";
  209. adrel.style.transition="all 0.8s ease-out";
  210. adrel.style.fontFamily="Arial";
  211. adrel.style.cursor="pointer";
  212. adrel.addEventListener("click", function() {adremover.createPopup();});
  213. var allString = "<span style='font-family:Arial;font-weight:normal;font-size:12px;'>AdRemover</span><br>";
  214. document.getElementsByTagName("adremover")[0].innerHTML=allString;
  215. setTimeout("adremover.hideInfoElement()", 6000);
  216. },
  217. hideInfoElement: function() {
  218. var adrel = document.getElementsByTagName("adremover")[0];
  219. adrel.style.opacity="0";
  220. setTimeout("adremover.hideInfoElement2()", 900);
  221. },
  222. hideInfoElement2: function() {
  223. var adrel = document.getElementsByTagName("adremover")[0];
  224. adrel.style.display="none";
  225. adrel.outerHTML="";
  226. },
  227. checkFirefox: function() {
  228. if (navigator.userAgent.toLowerCase().indexOf("firefox")>-1) {
  229. adremover.isfirefox = true;
  230. }
  231. },
  232. initAdremover: function() {
  233. adremover.getBrowserLanguage();
  234. console.log("Starting AdRemover "+adremover.thisScriptVersion+" on "+document.location+" ...");
  235. //Check for blacklistet Popup
  236. adremover.initBlacklistPopups();
  237. adremover.initPopupRegexp();
  238. if (document.location.toString().toLowerCase().search(adremover.regexp_popupsearch)>-1) {
  239. window.open('','_self');
  240. window.close();
  241. }
  242. //Start cleaning
  243. if (adremover.checkForBlacklist(document.location)==false) {
  244. adremover.getARSettings();
  245. adremover.initKeyWordList();
  246. adremover.initKeyURLList();
  247. adremover.initInPagePopups();
  248. adremover.initInPagePopupRegexp();
  249. adremover.initAdRegexp();
  250. adremover.initIframeRegexp();
  251. adremover.startCleaning();
  252. } else {
  253. adremover.getARSettings();
  254. adremover.createMiniInfoElement();
  255. }
  256. },
  257. secondRun: function() {
  258. console.log("Starting AdRemover "+adremover.thisScriptVersion+" on "+document.location+" 4 seconds after page load ...");
  259. //Check for blacklistet Popup
  260. if (document.location.toString().toLowerCase().search(adremover.regexp_popupsearch)>-1) {
  261. window.open('','_self');
  262. window.close();
  263. }
  264. //Start cleaning
  265. if (adremover.checkForBlacklist(document.location)==false) {
  266. adremover.startCleaning();
  267. }
  268. },
  269. checkForBlacklist: function() {
  270. if (localStorage.getItem("AR_userblacklist")!=undefined && localStorage.getItem("AR_userblacklist")!=null) {
  271. if (localStorage.getItem("AR_userblacklist").indexOf(document.location.host)>=0) {
  272. return true;
  273. } else {
  274. return false;
  275. }
  276. } else {
  277. return false;
  278. }
  279. },
  280. changeBlacklist: function(formelement) {
  281. if (formelement.checked==false) {
  282. localStorage.setItem("AR_userblacklist",localStorage.getItem("AR_userblacklist")+";"+document.location.host);
  283. alert(adremover.labelTextes[15]);
  284. } else if (formelement.checked==true) {
  285. var firstChar = localStorage.getItem("AR_userblacklist").indexOf(document.location.host);
  286. localStorage.setItem("AR_userblacklist",localStorage.getItem("AR_userblacklist").substring(0,firstChar-1)+localStorage.getItem("AR_userblacklist").substring(firstChar+document.location.host.length));
  287. alert(adremover.labelTextes[16]);
  288. } else {
  289. alert(adremover.labelTextes[14]);
  290. }
  291. },
  292. initKeyWordList: function() {
  293. adremover.keyWordList.push("afc");
  294. adremover.keyWordList.push("brandbox");
  295. adremover.keyWordList.push("watch-channel-brand-div");
  296. adremover.keyWordList.push("ad");
  297. adremover.keyWordList.push("rwidesky");
  298. adremover.keyWordList.push("tvcap");
  299. adremover.keyWordList.push("werbung");
  300. adremover.keyWordList.push("billboardcontainer");
  301. adremover.keyWordList.push("medrec");
  302. adremover.keyWordList.push("aswift_");
  303. adremover.keyWordList.push("eyecatcher");
  304. adremover.keyWordList.push("sponsored");
  305. adremover.keyWordList.push("sky");
  306. adremover.keyWordList.push("commercial");
  307. adremover.keyWordList.push("superlayer");
  308. adremover.keyWordList.push("sidebanner");
  309. adremover.keyWordList.push("pyv-watch-related-dest-url");
  310. adremover.keyWordList.push("masthead");
  311. adremover.keyWordList.push("aswift");
  312. adremover.keyWordList.push("adsense");
  313. adremover.keyWordList.push("bannerzone");
  314. },
  315. initKeyURLList: function() {
  316. adremover.keyURLList.push("atdmt.com/MRT");
  317. adremover.keyURLList.push("cdn.movad.net/");
  318. adremover.keyURLList.push("redintelligence.net/request");
  319. adremover.keyURLList.push("ads.adtiger.de/ad");
  320. adremover.keyURLList.push("ads.newtentionassets.net/asset");
  321. adremover.keyURLList.push("hosting.adjug.com/AdJug");
  322. adremover.keyURLList.push("adclient.uimserv.net/html.ng");
  323. adremover.keyURLList.push("creativeproxy.uimserv.net/?LogoutAdProxy");
  324. adremover.keyURLList.push("a.ligatus.com/");
  325. adremover.keyURLList.push("2mdn.net/");
  326. adremover.keyURLList.push("track.adform.net/ad");
  327. adremover.keyURLList.push("hosting.adjug.com/Ad");
  328. adremover.keyURLList.push("ad4mat.de/ads");
  329. adremover.keyURLList.push("zanox-affiliate.de/ppc");
  330. adremover.keyURLList.push("ads.bluelithium.com/iframe");
  331. adremover.keyURLList.push("pagead2.googlesyndication.com/simgad");
  332. adremover.keyURLList.push("ads.tlvmedia.com/st?ad");
  333. adremover.keyURLList.push("ad.xtendmedia.com/st?ad");
  334. adremover.keyURLList.push("zanox-affiliate.de/ppc");
  335. adremover.keyURLList.push("content.yieldmanager.edgesuite.net/atoms");
  336. adremover.keyURLList.push("network.adsmarket.com/ceas");
  337. adremover.keyURLList.push(".ib.adnxs.com/if?");
  338. adremover.keyURLList.push("adserver.freenet.de/Ads");
  339. adremover.keyURLList.push("i.ligatus.com/com_ms");
  340. adremover.keyURLList.push("ds.serving-sys.com/burstingRes");
  341. adremover.keyURLList.push("tags.qservz.com/ct_adi");
  342. adremover.keyURLList.push("image.adjug.com/Advertiser");
  343. adremover.keyURLList.push("tags.qservz.com/ct_adi");
  344. adremover.keyURLList.push("g.doubleclick.net/pagead");
  345. adremover.keyURLList.push("doubleclick.net/");
  346. adremover.keyURLList.push("content-result-ads");
  347. adremover.keyURLList.push("ads.newtention.net/ads");
  348. adremover.keyURLList.push("uk-ads.openx.net");
  349. adremover.keyURLList.push("tag.admeld.com/imp/iframe");
  350. adremover.keyURLList.push("ad.ad-srv.net/request_content.php");
  351. adremover.keyURLList.push("ads.yahoo.com/i");
  352. adremover.keyURLList.push("coinurl.com/get.php?id=");
  353. adremover.keyURLList.push("ad.a-ads.com/");
  354. adremover.keyURLList.push("cpalead.com/banner.php?");
  355. adremover.keyURLList.push("ads.trafficjunky.net/ads");
  356. adremover.keyURLList.push("2mdn.net/ads");
  357. adremover.keyURLList.push("adx.chip.de/www");
  358. adremover.keyURLList.push("ad.ad-srv.net/request_content.php");
  359. adremover.keyURLList.push("img.propellerads.com/www/images");
  360. adremover.keyURLList.push("ad.propellerads.com/a");
  361. },
  362. initInPagePopups: function() {
  363. adremover.keyInPagePopupList.push("adflad.*");
  364. adremover.keyInPagePopupList.push("sponsorads.*");
  365. },
  366. initBlacklistPopups: function() {
  367. adremover.keyPopupList.push("http://www.*mpnrs.com/");
  368. adremover.keyPopupList.push("sunmaker.com/.*/home.html?a_aid=.*&chan=");
  369. adremover.keyPopupList.push("32d1d3b9c.se/?placement=");
  370. adremover.keyPopupList.push("http://cdn.anyoption.com/landing.shtml");
  371. adremover.keyPopupList.push("http://www.adcash.com/script/pop_pack");
  372. adremover.keyPopupList.push("ih.adscale.de/adscale-ih/show");
  373. },
  374. removeNormalElement: function(anElement) {
  375. var acChildren;
  376. if (anElement) {
  377. anElement.style.display="none";
  378. for (var i = 0;i<anElement.children.length;i++) {
  379. acChildren = anElement.children[i];
  380. if (acChildren) {
  381. if (acChildren.nodeName && (acChildren.nodeName=="IFRAME" || acChildren.nodeName=="OBJECT" || acChildren.nodeName=="EMBED")) {
  382. adremover.handleIframe(acChildren);
  383. adremover.removedObjects++;
  384. }
  385. }
  386. }
  387. }
  388. adremover.removedElementsArray.push(anElement);
  389. },
  390. removeElements: function() {
  391. var acEl, acElId, acElClass, acElNodeName, acElSrc, setRemoved;
  392. for (var i = 0;i<document.getElementsByTagName("*").length;i++) {
  393. setRemoved = false;
  394. acEl = document.getElementsByTagName("*")[i];
  395. if (acEl) {
  396. acElNodeName = acEl.nodeName;
  397. //ID and Class check
  398. if (acElNodeName=="DIV" || acElNodeName=="IFRAME" || acElNodeName=="IMG" || acElNodeName=="A" || acElNodeName=="OBJECT" || acElNodeName=="P" || acElNodeName=="SECTION") {
  399. if (acEl.getAttribute("id")) {
  400. acElId = acEl.getAttribute("id").toLowerCase();
  401. } else {
  402. acElId="";
  403. }
  404. if (acEl.className) {
  405. if (acEl.className.baseVal) {
  406. acElClass = acEl.className.baseVal.toString().toLowerCase();
  407. } else if (acEl.className) {
  408. acElClass = acEl.className.toLowerCase();
  409. } else {
  410. acElClass = "";
  411. }
  412. } else {
  413. acElClass = "";
  414. }
  415. if (setRemoved==false && adremover.testForForbiddenKeywords(acElClass)==false && adremover.testForForbiddenKeywords(acElId)==false) {
  416. if (acElId.search(adremover.regexp_adsearch)>-1) {
  417. setRemoved = true;
  418. adremover.removeNormalElement(acEl);
  419. adremover.removedElements++;
  420. }
  421. //Class name check
  422. if (setRemoved==false && acElClass.search(adremover.regexp_adsearch)>-1) {
  423. setRemoved = true;
  424. adremover.removeNormalElement(acEl);
  425. adremover.removedElements++;
  426. }
  427. //Special inpage popup check
  428. if (acElId.search(adremover.regexp_inpagepopupsearch)>-1) {
  429. adremover.removedSpecialPopups++;
  430. adremover.removedSpecialPopupsArray.push(acElId);
  431. acEl.setRemoved = true;
  432. acEl.outerHTML = "";
  433. console.log("Removed a special popup!");
  434. }
  435. }
  436. }
  437. //Iframe and object
  438. if (adremover.AR_objects_activated==true && (acElNodeName=="IFRAME" || acElNodeName=="OBJECT" || acElNodeName=="EMBED")) {
  439. acElSrc = acEl.getAttribute("src");
  440. if (acElSrc) {
  441. acElSrc = acElSrc.toLowerCase();
  442. if (acElSrc.search(adremover.regexp_iframesearch)>-1) {
  443. adremover.handleIframe(acEl);
  444. setRemoved = true;
  445. adremover.removedObjects++;
  446. }
  447. }
  448. }
  449. //image check
  450. if (adremover.AR_images_activated==true && acElNodeName=="IMG") {
  451. acElSrc = acEl.getAttribute("src");
  452. if (acElSrc) {
  453. acElSrc = acElSrc.toLowerCase();
  454. if (acElSrc.search(adremover.regexp_iframesearch)>-1) {
  455. adremover.removedImagesArray.push(acEl);
  456. acEl.style.display="none";
  457. setRemoved = true;
  458. adremover.removedImages++;
  459. } else {
  460. var filename = acElSrc.substring(acElSrc.lastIndexOf("/"));
  461. if (filename.search(adremover.regexp_adsearch)>-1 && adremover.testForForbiddenKeywords(filename)==false) {
  462. adremover.removedImagesArray.push(acEl);
  463. acEl.style.display="none";
  464. setRemoved = true;
  465. adremover.removedImages++;
  466. }
  467. }
  468. }
  469. }
  470. }
  471. }
  472. },
  473. removePlaceholders: function() {
  474. var firstRemoved = false;
  475. for (var i = 0;i<adremover.removedElementsArray.length;i++) {
  476. if (adremover.removedElementsArray[i].parentNode!=null && adremover.removedElementsArray[i].parentNode.nodeName!="BODY") {
  477. if (adremover.removedElementsArray[i].parentNode.children.length==1) {
  478. adremover.removedElementsArray[i].parentNode.style.display="none";
  479. adremover.removedPlaceholdersArray.push(adremover.removedElementsArray[i].parentNode);
  480. adremover.removedPlaceholders++;
  481. firstRemoved = true;
  482. }
  483. if (adremover.removedElementsArray[i].parentNode.parentNode!=null && adremover.removedElementsArray[i].parentNode.parentNode.nodeName!="BODY") {
  484. if (adremover.removedElementsArray[i].parentNode.parentNode.children.length==1 && firstRemoved==true) {
  485. adremover.removedElementsArray[i].parentNode.parentNode.style.display="none";
  486. adremover.removedPlaceholdersArray.push(adremover.removedElementsArray[i].parentNode.parentNode);
  487. adremover.removedPlaceholders++;
  488. }
  489. }
  490. }
  491. firstRemoved = false;
  492. }
  493. for (var j = 0;j<adremover.removedImagesArray.length;j++) {
  494. if (adremover.removedImagesArray[j].parentNode!=null) {
  495. if (adremover.removedImagesArray[j].parentNode.children.length==1 && adremover.removedImagesArray[j].parentNode.nodeName!="BODY") {
  496. adremover.removedImagesArray[j].parentNode.style.display="none";
  497. adremover.removedPlaceholdersArray.push(adremover.removedImagesArray[j].parentNode);
  498. adremover.removedPlaceholders++;
  499. firstRemoved = true;
  500. }
  501. if (adremover.removedImagesArray[j].parentNode.parentNode!=null && adremover.removedImagesArray[j].parentNode.parentNode.nodeName!="BODY") {
  502. if (adremover.removedImagesArray[j].parentNode.parentNode.children.length==1 && firstRemoved==true) {
  503. adremover.removedImagesArray[j].parentNode.parentNode.style.display="none";
  504. adremover.removedPlaceholdersArray.push(adremover.removedImagesArray[j].parentNode.parentNode);
  505. adremover.removedPlaceholders++;
  506. }
  507. }
  508. }
  509. firstRemoved = false;
  510. }
  511. },
  512. createPopup: function() {
  513. //getting information about removed elements
  514. var string2 = "";
  515. for (var h = 0;h<adremover.removedSpecialPopupsArray.length;h++) {
  516. string2+="Special Popup [id="+adremover.removedSpecialPopupsArray[h]+"]<br>";
  517. }
  518. for (var i = 0;i<adremover.removedElementsArray.length;i++) {
  519. if (adremover.removedElementsArray[i]!=null) {
  520. string2+=adremover.removedElementsArray[i].tagName+" [class="+adremover.removedElementsArray[i].className+"] [id="+adremover.removedElementsArray[i].getAttribute("id")+"]<br>";
  521. }
  522. }
  523. for (var j = 0;j<adremover.removedImagesArray.length;j++) {
  524. if (adremover.removedImagesArray[j]!=null) {
  525. string2+=adremover.removedImagesArray[j].tagName+" [class="+adremover.removedImagesArray[j].className+"] [id="+adremover.removedImagesArray[j].getAttribute("id")+"] [src="+adremover.removedImagesArray[j].getAttribute("src")+"]<br>";
  526. }
  527. }
  528. for (var k = 0;k<adremover.removedObjectsArray.length;k++) {
  529. string2+="Iframe/Object [src="+adremover.removedObjectsArray[k]+"]<br>";
  530. }
  531. for (var l = 0;l<adremover.removedPlaceholdersArray.length;l++) {
  532. string2+="PH: "+adremover.removedPlaceholdersArray[l].tagName+" [class="+adremover.removedPlaceholdersArray[l].className+"] [id="+adremover.removedPlaceholdersArray[l].getAttribute("id")+"]<br>";
  533. }
  534. //Create popup
  535. document.getElementsByTagName("body")[0].appendChild(document.createElement("adremoverpopup"));
  536. var adpopup = document.getElementsByTagName("adremoverpopup")[0];
  537. var left = (window.innerWidth - 500) / 2;
  538. var top = (window.innerHeight - 350) / 2;
  539. adpopup.style.top=top + "px";
  540. adpopup.style.left=left + "px";
  541. adpopup.style.background="rgba(200,200,200,0.9)";
  542. adpopup.style.border="1px black solid";
  543. adpopup.style.position="fixed";
  544. adpopup.style.fontFamily="Arial";
  545. adpopup.style.lineHeight="17px";
  546. adpopup.style.display="block";
  547. adpopup.style.width="500px";
  548. adpopup.style.height="350px";
  549. adpopup.style.zIndex="999999999999";
  550. adpopup.style.borderRadius="3px";
  551. adpopup.style.transition="opacity 0.2s ease";
  552. adpopup.style.textAlign="left";
  553. adpopup.style.paddingLeft="5px";
  554. adpopup.style.overflow="scroll";
  555. adpopup.style.color="black";
  556. adpopup.style.boxShadow="0px 0px 2px 3px rgba(0,0,0,0.5)";
  557. adpopup.style.opacity="1";
  558. var string1 = "<span style='left:-1px;background:rgb(245,233,237);width:97%;margin-left:0px;position:absolute;padding:7px;font-family:Arial;font-size:16px;font-weight:bold;color:black;'>AdRemover " + adremover.thisScriptVersion +"</span>";
  559. string1+="<br><br>";
  560. string1+="<span style='background-color:rgba(118,105,199,0.7);color:white;font-weight:bold;font-famliy:Arial;width:50%;border-radius:3px;padding:1px;position:absolute;'>Status</span><br>";
  561. string1+="Runtime: "+adremover.AR_milliseconds+" ms";
  562. string1+="<br>"+adremover.labelTextes[0]+": "+(adremover.removedElements+adremover.removedObjects+adremover.removedImages);
  563. string1+="<br>"+adremover.labelTextes[1]+": "+adremover.removedElements;
  564. string1+="<br>"+adremover.labelTextes[2]+": "+adremover.removedImages;
  565. string1+="<br>"+adremover.labelTextes[3]+": "+adremover.removedObjects;
  566. string1+="<br>"+adremover.labelTextes[17]+": "+adremover.removedPlaceholders;
  567. string1+="<br><input type=button value='"+adremover.labelTextes[5]+"' onclick=adremover.closePopup();>";
  568. string1+="<br><br>";
  569. string1+="<span style='background-color:rgba(118,105,199,0.7);color:white;font-weight:bold;font-family:Arial;width:50%;border-radius:3px;padding:1px;position:absolute;'>Extras</span><br>";
  570. string1+="<input type=button value='"+adremover.labelTextes[6]+"' onclick=adremover.restoreAds(this);><br>";
  571. string1+="<input onchange=adremover.changeBlacklist(this); type=checkbox";
  572. if (adremover.checkForBlacklist(document.location.host)==false) {
  573. string1+=" checked";
  574. }
  575. string1+="> "+adremover.labelTextes[7];
  576. string1+="<br><br>";
  577. string1+="<span style='background-color:rgba(118,105,199,0.7);color:white;font-weight:bold;font-famliy:Arial;width:50%;border-radius:3px;padding:1px;position:absolute;'>"+adremover.labelTextes[8]+"</span><br>";
  578. string1+="<input onclick=adremover.setAR_elements_activated(this); type=checkbox";
  579. if (adremover.AR_elements_activated==true) {
  580. string1+=" checked";
  581. }
  582. string1+="> "+adremover.labelTextes[9]+"<br>";
  583. string1+="<input onclick=adremover.setAR_images_activated(this); type=checkbox";
  584. if (adremover.AR_images_activated==true) {
  585. string1+=" checked";
  586. }
  587. string1+="> "+adremover.labelTextes[10]+"<br>";
  588. string1+="<input onclick=adremover.setAR_objects_activated(this); type=checkbox";
  589. if (adremover.AR_objects_activated==true) {
  590. string1+=" checked";
  591. }
  592. string1+="> "+adremover.labelTextes[11]+"<br>";
  593. string1+="<input onclick=adremover.setAR_placeholders_activated(this); type=checkbox";
  594. if (adremover.AR_placeholders_activated==true) {
  595. string1+=" checked";
  596. }
  597. string1+="> "+adremover.labelTextes[12]+"<br>";
  598. string1+="<input onclick=adremover.setAR_minimode_activated(this); type=checkbox";
  599. if (adremover.AR_minimode_activated==true) {
  600. string1+=" checked";
  601. }
  602. string1+="> "+adremover.labelTextes[20]+"<br>";
  603. string1+="<br>";
  604. string1+="<span style='background-color:rgba(118,105,199,0.7);color:white;font-weight:bold;font-famliy:Arial;width:50%;border-radius:3px;padding:1px;position:absolute;'>"+adremover.labelTextes[18]+"</span><br>";
  605. string1+=adremover.labelTextes[19]+": ich01";
  606. string1+="<br>Homepage: <a href=http://userscripts.org/scripts/show/159351 target=_blank alt=Homepage>*click*</a>";
  607. string1+="<br>Copyright: 2014+, ich01";
  608. string1+="<br><br>";
  609. string1+="<span style='background-color:rgba(118,105,199,0.7);color:white;font-weight:bold;font-famliy:Arial;width:50%;border-radius:3px;padding:1px;position:absolute;'>Details</span><br>";
  610. string1+=string2;
  611. adpopup.innerHTML=string1;
  612. },
  613. startCleaning: function() {
  614. if (adremover.AR_elements_activated==true) {
  615. adremover.removeElements();
  616. }
  617. if (adremover.AR_placeholders_activated==true) {
  618. adremover.removePlaceholders();
  619. }
  620. if (adremover.removedElements>0 || adremover.removedObjects>0 || adremover.removedImages>0) {
  621. if (adremover.AR_minimode_activated==false) {
  622. adremover.createInfoElement();
  623. } else {
  624. adremover.createMiniInfoElement();
  625. }
  626. }
  627. },
  628. closePopup: function() {
  629. var adpopup = document.getElementsByTagName("adremoverpopup")[0];
  630. adpopup.style.opacity="0";
  631. setTimeout("adremover.closePopup2()", 300);
  632. },
  633. closePopup2: function() {
  634. var adpopup = document.getElementsByTagName("adremoverpopup")[0];
  635. adpopup.style.display="none";
  636. adpopup.outerHTML="";
  637. },
  638. setAR_elements_activated: function(formelement) {
  639. if (formelement.checked==true) {
  640. GM_setValue("AR_elements_activated",true);
  641. } else if (formelement.checked==false) {
  642. GM_setValue("AR_elements_activated",false);
  643. } else {
  644. alert(adremover.labelTextes[14]);
  645. }
  646. },
  647. setAR_images_activated: function(formelement) {
  648. if (formelement.checked==true) {
  649. GM_setValue("AR_images_activated",true);
  650. } else if (formelement.checked==false) {
  651. GM_setValue("AR_images_activated",false);
  652. } else {
  653. alert(adremover.labelTextes[14]);
  654. }
  655. },
  656. setAR_objects_activated: function(formelement) {
  657. if (formelement.checked==true) {
  658. GM_setValue("AR_objects_activated",true);
  659. } else if (formelement.checked==false) {
  660. GM_setValue("AR_objects_activated",false);
  661. } else {
  662. alert(adremover.labelTextes[14]);
  663. }
  664. },
  665. setAR_placeholders_activated: function(formelement) {
  666. if (formelement.checked==true) {
  667. GM_setValue("AR_placeholders_activated",true);
  668. } else if (formelement.checked==false) {
  669. GM_setValue("AR_placeholders_activated",false);
  670. } else {
  671. alert(adremover.labelTextes[14]);
  672. }
  673. },
  674. setAR_minimode_activated: function(formelement) {
  675. if (formelement.checked==true) {
  676. GM_setValue("AR_minimode_activated",true);
  677. } else if (formelement.checked==false) {
  678. GM_setValue("AR_minimode_activated",false);
  679. } else {
  680. alert(adremover.labelTextes[14]);
  681. }
  682. },
  683. getARSettings: function() {
  684. //Elements
  685. if (GM_getValue("AR_elements_activated")!=null && GM_getValue("AR_elements_activated")!=undefined) {
  686. adremover.AR_elements_activated = GM_getValue("AR_elements_activated");
  687. } else {
  688. GM_setValue("AR_elements_activated",true);
  689. adremover.AR_elements_activated = true;
  690. }
  691. //Objects
  692. if (GM_getValue("AR_objects_activated")!=null && GM_getValue("AR_objects_activated")!=undefined) {
  693. adremover.AR_objects_activated = GM_getValue("AR_objects_activated");
  694. } else {
  695. GM_setValue("AR_objects_activated",true);
  696. adremover.AR_objects_activated = true;
  697. }
  698. //Images
  699. if (GM_getValue("AR_images_activated")!=null && GM_getValue("AR_images_activated")!=undefined) {
  700. adremover.AR_images_activated = GM_getValue("AR_images_activated");
  701. } else {
  702. GM_setValue("AR_images_activated",true);
  703. adremover.AR_images_activated = true;
  704. }
  705. //Placeholders
  706. if (GM_getValue("AR_placeholders_activated")!=null && GM_getValue("AR_placeholders_activated")!=undefined) {
  707. adremover.AR_placeholders_activated = GM_getValue("AR_placeholders_activated");
  708. } else {
  709. GM_setValue("AR_placeholders_activated",true);
  710. adremover.AR_placeholder_activated = true;
  711. }
  712. //Mini Info enabled
  713. if (GM_getValue("AR_minimode_activated")!=null && GM_getValue("AR_minimode_activated")!=undefined) {
  714. adremover.AR_minimode_activated = GM_getValue("AR_minimode_activated");
  715. } else {
  716. GM_setValue("AR_minimode_actived",false);
  717. adremover.AR_minimode_activated = false;
  718. }
  719. },
  720. restoreAds: function(formelement) {
  721. var restoredElements = 0;
  722. for (var i = 0;i<adremover.removedElementsArray.length;i++) {
  723. if (adremover.removedElementsArray[i]!=null) {
  724. adremover.removedElementsArray[i].style.display="block";
  725. restoredElements++;
  726. }
  727. }
  728. for (var j = 0;j<adremover.removedImagesArray.length;j++) {
  729. if (adremover.removedImagesArray[j]!=null) {
  730. adremover.removedImagesArray[j].style.display="block";
  731. restoredElements++;
  732. }
  733. }
  734. for (var k = 0;k<adremover.removedPlaceholdersArray.length;k++) {
  735. if (adremover.removedPlaceholdersArray[k]!=null) {
  736. adremover.removedPlaceholdersArray[k].style.display="block";
  737. restoredElements++;
  738. }
  739. }
  740. console.log("Restored "+restoredElements+" elements");
  741. formelement.value=adremover.labelTextes[13];
  742. formelement.disabled=true;
  743. }
  744. };
  745. //Init AdRemover
  746. if (navigator.userAgent.toLowerCase().indexOf("firefox")>-1) {
  747. window.adremover = uw.adremover;
  748. console.log("Firefox detected. Compatibility mode enabled.");
  749. }
  750. adremover.initAdremover();
  751. var endTime = new Date().getMilliseconds();
  752. var endTimeSeconds = new Date().getSeconds();
  753. var fullTime = -1;
  754. fullTime = endTime - adremover.startTime;
  755. fullTime+= ((endTimeSeconds-adremover.startTimeSeconds)*1000);
  756. GM_registerMenuCommand("AdRemover Settings",function() {adremover.createPopup();});
  757. adremover.AR_milliseconds=fullTime;
  758. console.log("AdRemover "+adremover.thisScriptVersion+" has finished it's work! ["+fullTime+" ms]");
  759. setTimeout("adremover.secondRun()",4000);