Check the connection

Check the connection, A tool to check your Internet connection

  1. // ==UserScript==
  2. // @name Check the connection
  3. // @namespace https://www.waze.com/*
  4. // @version 1.0
  5. // @description Check the connection, A tool to check your Internet connection
  6. // @author sultan alrefaei
  7. // @match https://www.waze.com/editor/
  8. // @match https://www.waze.com/ar/editor/
  9. // @match https://www.waze.com/editor
  10. // @match https://www.waze.com/ar/editor
  11. // @grant none
  12. // @copyright 2017 sultan alrefaei
  13. // ==/UserScript==
  14.  
  15. var saveNow = 25; // عدد مرات التعديل المسموح بها 25، يمكنك تغيرها الى العدد الذي تريد
  16.  
  17.  
  18. window.onload = function(e){
  19. addTohead();
  20. var isCon = true;
  21. var isClick = true;
  22. setInterval(function(){
  23. var c = getRoot("@counter",0);
  24. var counter = parseInt(c.innerText);
  25. if (counter >= saveNow && isCon){
  26. createAlert();
  27. beep();
  28. isCon = false;
  29. }
  30. if (counter == 0){
  31. var alertFRM = getRoot("#connected");
  32. if (alertFRM != null){
  33. alertFRM.remove();
  34. isClick = true;
  35. }
  36. isCon = true;
  37. }
  38. if (getRoot("@toolbar-button waze-icon-save ItemInactive",0) != undefined){
  39. var BTNSave = getRoot("@toolbar-button waze-icon-save ItemInactive",0);
  40. if (BTNSave != undefined){
  41. if (BTNSave != null){
  42. if (!BTNSave.hasAttribute("id")){
  43. BTNSave.setAttribute("id","SaveBTN");
  44. }
  45. }
  46. }
  47. if (BTNSave != null){
  48. if (isClick){
  49. var mySave = getRoot("#SaveBTN");
  50. var alertFRM = getRoot("#connected");
  51. mySave.addEventListener("click",function(){
  52. if (alertFRM != null){
  53. alertFRM.remove();
  54. }
  55. });
  56. isClick = false;
  57. }
  58. }
  59. }
  60. },100);
  61. }
  62.  
  63. function createAlert(){
  64. var URLLANG = window.location.href;
  65. createDiv(URLLANG.includes("ar"));
  66. try{
  67. requestServer("https://www.waze.com/");
  68. }
  69. catch(err) {
  70. if (div != null){
  71. div.innerHTML = "<div align='center'>لا يوجد إتصال</div";
  72. }
  73. }
  74. }
  75.  
  76. function createDiv(lang){
  77. if (lang == true){
  78. if (getRoot("SaveBTN") == null){
  79. var div = document.createElement("div");
  80. div.id = "connected";
  81. div.style.position = "absolute";
  82. div.style.zIndex = 10000;
  83. div.style.top = "35px";
  84. div.style.width = "200px";
  85. div.style.height = "28px";
  86. div.style.fontSize = "20px";
  87. div.title = "إغلاق التنبيه";
  88. div.style.borderRadius = "7px";
  89. div.style.cursor = "pointer";
  90. div.onclick = function(){
  91. div.remove();
  92. }
  93. div.onmouseover = function(){
  94. div.style.color = "white";
  95. div.style.textShadow = "1px 1px #B71C1C";
  96. div.style.backgroundColor = "#EF5350";
  97. }
  98. div.onmouseleave = function(){
  99. div.style.color = "#212121";
  100. div.style.textShadow = "1px 1px #9E9E9E";
  101. div.style.backgroundColor = "#F5F5F5";
  102. }
  103. div.style.right = "45%";
  104. div.style.color = "#212121";
  105. div.style.backgroundColor = "#F5F5F5";
  106. div.style.boxShadow = "0px 3px #ab3232";
  107. div.style.textShadow = "1px 1px #9E9E9E";
  108. div.style.fontFamily = "'El Messiri', sans-serif";
  109. div.innerHTML = "<div align='center'>"
  110. + "<div style='position: absolute; right:0px; top:0px; height: 28px; background: #ab3232; width:10px; border-radius: 0px 5px 5px 0px;'>"
  111. + "</div>قم بحفظ التعديلات"
  112. + "<div style='position: absolute; left:0px; top:0px; height: 28px; background: #ab3232; width:10px; border-radius: 5px 0px 0px 5px;'>"
  113. + "</div></div>";
  114. document.getElementById("WazeMap").appendChild(div);
  115. }
  116. }else{
  117. if (getRoot("SaveBTN") == null){
  118. var div = document.createElement("div");
  119. div.id = "connected";
  120. div.style.position = "absolute";
  121. div.style.zIndex = 10000;
  122. div.style.top = "35px";
  123. div.style.width = "150px";
  124. div.style.height = "28px";
  125. div.style.fontSize = "20px";
  126. div.title = "Close";
  127. div.style.borderRadius = "7px";
  128. div.style.cursor = "pointer";
  129. div.onclick = function(){
  130. div.remove();
  131. }
  132. div.onmouseover = function(){
  133. div.style.color = "white";
  134. div.style.textShadow = "1px 1px #B71C1C";
  135. div.style.backgroundColor = "#EF5350";
  136. }
  137. div.onmouseleave = function(){
  138. div.style.color = "#212121";
  139. div.style.textShadow = "1px 1px #9E9E9E";
  140. div.style.backgroundColor = "#F5F5F5";
  141. }
  142. div.style.right = "45%";
  143. div.style.color = "#212121";
  144. div.style.backgroundColor = "#F5F5F5";
  145. div.style.boxShadow = "0px 3px #ab3232";
  146. div.style.textShadow = "1px 1px #9E9E9E";
  147. div.style.fontFamily = "'Pontano Sans', sans-serif";
  148. div.innerHTML = "<div align='center'>"
  149. + "<div style='position: absolute; right:0px; top:0px; height: 28px; background: #ab3232; width:8px; border-radius: 0px 5px 5px 0px;'>"
  150. + "</div>Save your edits"
  151. + "<div style='position: absolute; left:0px; top:0px; height: 28px; background: #ab3232; width:8px; border-radius: 5px 0px 0px 5px;'>"
  152. + "</div></div>";
  153. document.getElementById("WazeMap").appendChild(div);
  154. }
  155. }
  156. }
  157.  
  158. function requestServer(URL){
  159. var getReguest = new XMLHttpRequest();
  160. getReguest.open("GET",URL,false);
  161. getReguest.send(null);
  162. }
  163.  
  164. function getRoot(name,index){
  165. if (name != "" || name != null || name != undefined){
  166. if (name.includes("@") && !name.includes("#")){
  167. if (index != null || index != undefined){
  168. var classname = name.replace("@","");
  169. return document.getElementsByClassName(classname)[index];
  170. }else{
  171. var classname = name.replace("@","");
  172. return document.getElementsByClassName(classname);
  173. }
  174. }
  175. else if (name.includes("#") && !name.includes("@")){
  176. idname = name.replace("#","");
  177. return document.getElementById(idname);
  178. }
  179. }
  180. }
  181.  
  182. function addTohead(){
  183. var linkAR = document.createElement("link");
  184. linkAR.href = "https://fonts.googleapis.com/css?family=El+Messiri";
  185. linkAR.rel = "stylesheet";
  186. document.getElementsByTagName("head")[0].appendChild(linkAR);
  187.  
  188. var linkEN = document.createElement("link");
  189. linkEN.href = "https://fonts.googleapis.com/css?family=Pontano+Sans";
  190. linkEN.rel = "stylesheet";
  191. document.getElementsByTagName("head")[0].appendChild(linkEN);
  192. }
  193.  
  194. function beep() {
  195. var snd = new Audio("data:audio/wav;base64,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qJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU=");
  196. snd.play();
  197. }