My Torn Time Table

Shows your local time and a table to convert Torn time to your local time

  1. // ==UserScript==
  2. // @name My Torn Time Table
  3. // @namespace https://bypxbyp.com
  4. // @version 0.4.0
  5. // @description Shows your local time and a table to convert Torn time to your local time
  6. // @license MIT
  7. // @author BypXByp [3243346]
  8. // @match https://www.torn.com/*
  9. // @icon https://www.google.com/s2/favicons?sz=64&domain=torn.com
  10. // @run-at document-start
  11. // @grant none
  12. // ==/UserScript==
  13.  
  14. window.addEventListener('load', function() {
  15. 'use strict';
  16.  
  17. var bShowOnLoad = 1; //Should the table automatically be expanded? 0=No, 1=Yes
  18.  
  19. var theTimeTable;
  20. var timeSpan = document.querySelector('.server-date-time');
  21.  
  22. if (timeSpan) {
  23. var timeString = timeSpan.textContent.trim();
  24. var timeRegex = /(\d{1,2}):(\d{2}):(\d{2})/;
  25. var match = timeString.match(timeRegex);
  26. if (match) {
  27. var hours = parseInt(match[1], 10);
  28. var minutes = parseInt(match[2], 10);
  29. var seconds = parseInt(match[3], 10);
  30.  
  31. var currentDate = new Date();
  32. var timeZoneOffsetMinutes = currentDate.getTimezoneOffset();
  33. var timeZoneOffsetHours = -1 * (timeZoneOffsetMinutes / 60);
  34. var timeZoneOffsetHoursInteger = Math.round(timeZoneOffsetHours);
  35.  
  36. var tl0 = hours + timeZoneOffsetHours;
  37. var tl1 = hours + timeZoneOffsetHours + 1;
  38. var tl2 = hours + timeZoneOffsetHours + 2;
  39. var tl3 = hours + timeZoneOffsetHours + 3;
  40. var tl4 = hours + timeZoneOffsetHours + 4;
  41. var tl5 = hours + timeZoneOffsetHours + 5;
  42. var tl6 = hours + timeZoneOffsetHours + 6;
  43. var tl7 = hours + timeZoneOffsetHours + 7;
  44. var tl8 = hours + timeZoneOffsetHours + 8;
  45. var tl9 = hours + timeZoneOffsetHours + 9;
  46. var tl10 = hours + timeZoneOffsetHours + 10;
  47. var tl11 = hours + timeZoneOffsetHours + 11;
  48. var tl12 = hours + timeZoneOffsetHours + 12;
  49. var tl13 = hours + timeZoneOffsetHours + 13;
  50. var tl14 = hours + timeZoneOffsetHours + 14;
  51. var tl15 = hours + timeZoneOffsetHours + 15;
  52. var tl16 = hours + timeZoneOffsetHours + 16;
  53. var tl17 = hours + timeZoneOffsetHours + 17;
  54. var tl18 = hours + timeZoneOffsetHours + 18;
  55. var tl19 = hours + timeZoneOffsetHours + 19;
  56. var tl20 = hours + timeZoneOffsetHours + 20;
  57. var tl21 = hours + timeZoneOffsetHours + 21;
  58. var tl22 = hours + timeZoneOffsetHours + 22;
  59. var tl23 = hours + timeZoneOffsetHours + 23;
  60. if (tl0 < 0) tl0 += 24;
  61. if (tl1 < 0) tl1 += 24;
  62. if (tl2 < 0) tl2 += 24;
  63. if (tl3 < 0) tl3 += 24;
  64. if (tl4 < 0) tl4 += 24;
  65. if (tl5 < 0) tl5 += 24;
  66. if (tl6 < 0) tl6 += 24;
  67. if (tl7 < 0) tl7 += 24;
  68. if (tl8 < 0) tl8 += 24;
  69. if (tl9 < 0) tl9 += 24;
  70. if (tl10 < 0) tl10 += 24;
  71. if (tl11 < 0) tl11 += 24;
  72. if (tl12 < 0) tl12 += 24;
  73. if (tl13 < 0) tl13 += 24;
  74. if (tl14 < 0) tl14 += 24;
  75. if (tl15 < 0) tl15 += 24;
  76. if (tl16 < 0) tl16 += 24;
  77. if (tl17 < 0) tl17 += 24;
  78. if (tl18 < 0) tl18 += 24;
  79. if (tl19 < 0) tl19 += 24;
  80. if (tl20 < 0) tl20 += 24;
  81. if (tl21 < 0) tl21 += 24;
  82. if (tl22 < 0) tl22 += 24;
  83. if (tl23 < 0) tl23 += 24;
  84. if (tl0 > 23) tl0 -= 24;
  85. if (tl1 > 23) tl1 -= 24;
  86. if (tl2 > 23) tl2 -= 24;
  87. if (tl3 > 23) tl3 -= 24;
  88. if (tl4 > 23) tl4 -= 24;
  89. if (tl5 > 23) tl5 -= 24;
  90. if (tl6 > 23) tl6 -= 24;
  91. if (tl7 > 23) tl7 -= 24;
  92. if (tl8 > 23) tl8 -= 24;
  93. if (tl9 > 23) tl9 -= 24;
  94. if (tl10 > 23) tl10 -= 24;
  95. if (tl11 > 23) tl11 -= 24;
  96. if (tl12 > 23) tl12 -= 24;
  97. if (tl13 > 23) tl13 -= 24;
  98. if (tl14 > 23) tl14 -= 24;
  99. if (tl15 > 23) tl15 -= 24;
  100. if (tl16 > 23) tl16 -= 24;
  101. if (tl17 > 23) tl17 -= 24;
  102. if (tl18 > 23) tl18 -= 24;
  103. if (tl19 > 23) tl19 -= 24;
  104. if (tl20 > 23) tl20 -= 24;
  105. if (tl21 > 23) tl21 -= 24;
  106. if (tl22 > 23) tl22 -= 24;
  107. if (tl23 > 23) tl23 -= 24;
  108. var tc0 = hours;
  109. var tc1 = hours + 1;
  110. var tc2 = hours + 2;
  111. var tc3 = hours + 3;
  112. var tc4 = hours + 4;
  113. var tc5 = hours + 5;
  114. var tc6 = hours + 6;
  115. var tc7 = hours + 7;
  116. var tc8 = hours + 8;
  117. var tc9 = hours + 9;
  118. var tc10 = hours + 10;
  119. var tc11 = hours + 11;
  120. var tc12 = hours + 12;
  121. var tc13 = hours + 13;
  122. var tc14 = hours + 14;
  123. var tc15 = hours + 15;
  124. var tc16 = hours + 16;
  125. var tc17 = hours + 17;
  126. var tc18 = hours + 18;
  127. var tc19 = hours + 19;
  128. var tc20 = hours + 20;
  129. var tc21 = hours + 21;
  130. var tc22 = hours + 22;
  131. var tc23 = hours + 23;
  132. if (tc0 > 23) tc0 -= 24;
  133. if (tc1 > 23) tc1 -= 24;
  134. if (tc2 > 23) tc2 -= 24;
  135. if (tc3 > 23) tc3 -= 24;
  136. if (tc4 > 23) tc4 -= 24;
  137. if (tc5 > 23) tc5 -= 24;
  138. if (tc6 > 23) tc6 -= 24;
  139. if (tc7 > 23) tc7 -= 24;
  140. if (tc8 > 23) tc8 -= 24;
  141. if (tc9 > 23) tc9 -= 24;
  142. if (tc10 > 23) tc10 -= 24;
  143. if (tc11 > 23) tc11 -= 24;
  144. if (tc12 > 23) tc12 -= 24;
  145. if (tc13 > 23) tc13 -= 24;
  146. if (tc14 > 23) tc14 -= 24;
  147. if (tc15 > 23) tc15 -= 24;
  148. if (tc16 > 23) tc16 -= 24;
  149. if (tc17 > 23) tc17 -= 24;
  150. if (tc18 > 23) tc18 -= 24;
  151. if (tc19 > 23) tc19 -= 24;
  152. if (tc20 > 23) tc20 -= 24;
  153. if (tc21 > 23) tc21 -= 24;
  154. if (tc22 > 23) tc22 -= 24;
  155. if (tc23 > 23) tc23 -= 24;
  156.  
  157. var newHours = hours + timeZoneOffsetHours;
  158. var sMinutesLead = "";
  159. if (minutes < 10) sMinutesLead = "0";
  160.  
  161. theTimeTable = '<div><div><a class="toggleCollapseTimeTable" style="cursor: pointer;">Toggle Time Table</a></div><table id="myTornTimeTable" style="color:#e3e3e3;text-align:center;width:100%;"><tr><td colspan=3 style="border-bottom: 1pt solid black;border-top: 1pt solid black;color:#e3e3e3;">Local: ' + tl0 + ':' + sMinutesLead + minutes + '</td></tr><tr><td style="color:#e3e3e3;" width=33%>Add</td><td style="color:#e3e3e3;" width=34%>TCT</td><td style="color:#e3e3e3;" width=33%>Local</td></tr><tr><td style="color:#e3e3e3;">1</td><td style="color:#e3e3e3;">' + tc1 + '</td><td style="color:#e3e3e3;">' + tl1 + '</td></tr><tr><td style="color:#e3e3e3;">2</td><td style="color:#e3e3e3;">' + tc2 + '</td><td style="color:#e3e3e3;">' + tl2 + '</td></tr><tr><td style="color:#e3e3e3;">3</td><td style="color:#e3e3e3;">' + tc3 + '</td><td style="color:#e3e3e3;">' + tl3 + '</td></tr><tr><td style="color:#e3e3e3;">4</td><td style="color:#e3e3e3;">' + tc4 + '</td><td style="color:#e3e3e3;">' + tl4 + '</td></tr><tr><td style="color:#e3e3e3;">5</td><td style="color:#e3e3e3;">' + tc5 + '</td><td style="color:#e3e3e3;">' + tl5 + '</td></tr><tr><td style="color:#e3e3e3;">6</td><td style="color:#e3e3e3;">' + tc6 + '</td><td style="color:#e3e3e3;">' + tl6 + '</td></tr><tr><td style="color:#e3e3e3;">7</td><td style="color:#e3e3e3;">' + tc7 + '</td><td style="color:#e3e3e3;">' + tl7 + '</td></tr><tr><td style="color:#e3e3e3;">8</td><td style="color:#e3e3e3;">' + tc8 + '</td><td style="color:#e3e3e3;">' + tl8 + '</td></tr><tr><td style="color:#e3e3e3;">9</td><td style="color:#e3e3e3;">' + tc9 + '</td><td style="color:#e3e3e3;">' + tl9 + '</td></tr><tr><td style="color:#e3e3e3;">10</td><td style="color:#e3e3e3;">' + tc10 + '</td><td style="color:#e3e3e3;">' + tl10 + '</td></tr><tr><td style="color:#e3e3e3;">11</td><td style="color:#e3e3e3;">' + tc11 + '</td><td style="color:#e3e3e3;">' + tl11 + '</td></tr><tr><td style="color:#e3e3e3;">12</td><td style="color:#e3e3e3;">' + tc12 + '</td><td style="color:#e3e3e3;">' + tl12 + '</td></tr><tr><td style="color:#e3e3e3;">13</td><td style="color:#e3e3e3;">' + tc13 + '</td><td style="color:#e3e3e3;">' + tl13 + '</td></tr><tr><td style="color:#e3e3e3;">14</td><td style="color:#e3e3e3;">' + tc14 + '</td><td style="color:#e3e3e3;">' + tl14 + '</td></tr><tr><td style="color:#e3e3e3;">15</td><td style="color:#e3e3e3;">' + tc15 + '</td><td style="color:#e3e3e3;">' + tl15 + '</td></tr><tr><td style="color:#e3e3e3;">16</td><td style="color:#e3e3e3;">' + tc16 + '</td><td style="color:#e3e3e3;">' + tl16 + '</td></tr><tr><td style="color:#e3e3e3;">17</td><td style="color:#e3e3e3;">' + tc17 + '</td><td style="color:#e3e3e3;">' + tl17 + '</td></tr><tr><td style="color:#e3e3e3;">18</td><td style="color:#e3e3e3;">' + tc18 + '</td><td style="color:#e3e3e3;">' + tl18 + '</td></tr><tr><td style="color:#e3e3e3;">19</td><td style="color:#e3e3e3;">' + tc19 + '</td><td style="color:#e3e3e3;">' + tl19 + '</td></tr><tr><td style="color:#e3e3e3;">20</td><td style="color:#e3e3e3;">' + tc20 + '</td><td style="color:#e3e3e3;">' + tl20 + '</td></tr><tr><td style="color:#e3e3e3;">21</td><td style="color:#e3e3e3;">' + tc21 + '</td><td style="color:#e3e3e3;">' + tl21 + '</td></tr><tr><td style="color:#e3e3e3;">22</td><td style="color:#e3e3e3;">' + tc22 + '</td><td style="color:#e3e3e3;">' + tl22 + '</td></tr><tr><td style="color:#e3e3e3;">23</td><td style="color:#e3e3e3;">' + tc23 + '</td><td style="color:#e3e3e3;">' + tl23 + '</td></tr></table></div>';
  162. } else {
  163. theTimeTable = 'Error (i2)';
  164. }
  165. } else {
  166. theTimeTable = 'Error (i1)';
  167. }
  168.  
  169. var tempDiv = document.createElement('div');
  170.  
  171. tempDiv.innerHTML = theTimeTable;
  172.  
  173. while (tempDiv.firstChild) {
  174. timeSpan.parentNode.insertBefore(tempDiv.firstChild, timeSpan.nextSibling);
  175. }
  176.  
  177. if (bShowOnLoad) {
  178. $('#myTornTimeTable').css('display', '');
  179. } else {
  180. $('#myTornTimeTable').css('display', 'none');
  181. }
  182.  
  183. waitForElementToExist('.toggleCollapseTimeTable').then(()=>{
  184. $('.toggleCollapseTimeTable').on('click', function() {
  185. if ($('#myTornTimeTable').css('display') == 'none') {
  186. $('#myTornTimeTable').css('display', '');
  187. } else {
  188. $('#myTornTimeTable').css('display', 'none');
  189. }
  190. })
  191. })
  192.  
  193. function waitForElementToExist(selector) {
  194. return new Promise(resolve => {
  195. if (document.querySelector(selector)) {
  196. return resolve(document.querySelector(selector));
  197. }
  198. const observer = new MutationObserver(() => {
  199. if (document.querySelector(selector)) {
  200. resolve(document.querySelector(selector));
  201. observer.disconnect();
  202. }
  203. });
  204. observer.observe(document.body, {
  205. subtree: true,
  206. childList: true,
  207. });
  208. });
  209. }
  210. }, false);