utils.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. Array.prototype.toTop = function (a) {
  2. var c;
  3. if (a <= 0 || a >= this.length) {
  4. return false
  5. }
  6. c = this[a];
  7. for (var b = a; b > 0; b--) {
  8. this[b] = this[b - 1]
  9. }
  10. this[0] = c;
  11. return true
  12. };
  13. function getHost(url) {
  14. return (url.match(/:\/\/(.[^:/]+)/)[1]).replace("www.", "")
  15. }
  16. function addBlockRule(rule) {
  17. var dfilters = data.filters;
  18. for (var x = 0; x < dfilters.length; x++) {
  19. var currFilter = dfilters[x];
  20. if ((currFilter.domain !== null) === (rule.domain !== null)) {
  21. if (currFilter.domain !== rule.domain) {
  22. continue
  23. }
  24. } else {
  25. continue
  26. }
  27. if ((currFilter.name !== null) === (rule.name !== null)) {
  28. if (currFilter.name !== rule.name) {
  29. continue;
  30. }
  31. } else {
  32. continue;
  33. }
  34. if ((currFilter.value !== null) === (rule.value !== null)) {
  35. if (currFilter.value !== rule.value) {
  36. continue;
  37. }
  38. } else {
  39. continue;
  40. }
  41. return x;
  42. }
  43. dfilters[dfilters.length] = rule;
  44. data.filters = dfilters;
  45. filterURL = {};
  46. if (rule.name !== undefined) {
  47. filterURL.name = rule.name
  48. }
  49. if (rule.value !== undefined) {
  50. filterURL.value = rule.value
  51. }
  52. if (rule.domain !== undefined) {
  53. filterURL.domain = rule.domain
  54. }
  55. chrome.cookies.getAll({}, function (cookieL) {
  56. for (var x = 0; x < cookieL.length; x++) {
  57. var cCookie = cookieL[x];
  58. if (filterMatchesCookie(filterURL, cCookie.name, cCookie.domain, cCookie.value)) {
  59. var cUrl = (cCookie.secure) ? "https://" : "http://" + cCookie.domain + cCookie.path;
  60. deleteCookie(cUrl, cCookie.name, cCookie.storeId, cCookie)
  61. }
  62. }
  63. });
  64. }
  65. function switchReadOnlyRule(rule) {
  66. var added = true;
  67. var readOnlyList = data.readOnly;
  68. for (var x = 0; x < readOnlyList.length; x++) {
  69. try {
  70. var cRule = readOnlyList[x];
  71. if (cRule.domain === rule.domain && cRule.name === rule.name && cRule.path === rule.path) {
  72. added = false;
  73. readOnlyList.splice(x, 1)
  74. }
  75. } catch (e) {
  76. console.error(e.message);
  77. }
  78. }
  79. if (added) {
  80. readOnlyList[readOnlyList.length] = rule
  81. }
  82. data.readOnly = readOnlyList;
  83. return !!added;
  84. }
  85. function deleteReadOnlyRule(toDelete) {
  86. readOnlyList = data.readOnly;
  87. readOnlyList.splice(toDelete, 1);
  88. data.readOnly = readOnlyList;
  89. }
  90. function deleteBlockRule(toDelete) {
  91. filtersList = data.filters;
  92. filtersList.splice(toDelete, 1);
  93. data.filters = filtersList;
  94. }
  95. function _getMessage(string, args) {
  96. return (chrome.i18n.getMessage("editThis_" + string, args))
  97. }
  98. function filterMatchesCookie(rule, name, domain, value) {
  99. var ruleDomainReg = new RegExp(rule.domain);
  100. var ruleNameReg = new RegExp(rule.name);
  101. var ruleValueReg = new RegExp(rule.value);
  102. if (rule.domain !== undefined && domain.match(ruleDomainReg) === null) {
  103. return false;
  104. }
  105. if (rule.name !== undefined && name.match(ruleNameReg) === null) {
  106. return false;
  107. }
  108. if (rule.value !== undefined && value.match(ruleValueReg) === null) {
  109. return false;
  110. }
  111. return true;
  112. }
  113. function getUrlVars() {
  114. var d = [], c;
  115. var a = window.location.href.slice(window.location.href.indexOf("?") + 1).split("&");
  116. for (var b = 0; b < a.length; b++) {
  117. c = a[b].split("=");
  118. d.push(c[0]);
  119. d[c[0]] = c[1]
  120. }
  121. return d
  122. }
  123. function showPopup(info, tab) {
  124. var tabUrl = encodeURI(tab.url);
  125. var tabID = encodeURI(tab.id);
  126. var tabIncognito = encodeURI(tab.incognito);
  127. var urlToOpen = chrome.extension.getURL("popup.html") + "?url=" + tabUrl + "&id=" + tabID + "&incognito=" + tabIncognito;
  128. chrome.tabs.query({ 'windowId': chrome.windows.WINDOW_ID_CURRENT }, function (tabList) {
  129. for (var x = 0; x < tabList.length; x++) {
  130. var cTab = tabList[x];
  131. if (cTab.url.indexOf(urlToOpen) === 0) {
  132. chrome.tabs.update(cTab.id, {
  133. 'selected': true
  134. });
  135. return
  136. }
  137. }
  138. chrome.tabs.create({
  139. 'url': urlToOpen
  140. })
  141. })
  142. }
  143. function copyToClipboard(text) {
  144. if (text === undefined)
  145. return;
  146. //Appending an element causes the window to scroll...so we save the scroll position and restore it later
  147. var scrollsave = $('body').scrollTop();
  148. var copyDiv = document.createElement('textarea');
  149. copyDiv.style.height = "0.5px";
  150. document.body.appendChild(copyDiv, document.body.firstChild);
  151. $(copyDiv).text(text);
  152. copyDiv.focus();
  153. copyDiv.select();
  154. document.execCommand("copy");
  155. document.body.removeChild(copyDiv);
  156. $('body').scrollTop(scrollsave);
  157. }
  158. function isChristmasPeriod() {
  159. var nowDate = new Date();
  160. var isMidDecember = (nowDate.getMonth() === 11 && nowDate.getDate() > 5);
  161. var isStartJanuary = (nowDate.getMonth() === 0 && nowDate.getDate() <= 6);
  162. return isMidDecember || isStartJanuary;
  163. }
  164. function isHalloweenPeriod() {
  165. var nowDate = new Date();
  166. return (nowDate.getMonth() === 9 && nowDate.getDate() > 27);
  167. }
  168. function setLoaderVisible(visible) {
  169. if (visible) {
  170. $("#loader-container").show();
  171. } else {
  172. $("#loader-container").hide();
  173. }
  174. }