2
0

comm.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. var VisibleMenu = ""; // 記錄目前顯示的子選單的 ID
  2. // 顯示或隱藏子選單
  3. function switchMenu(theMainMenu, theSubMenu, theEvent) {
  4. var SubMenu = document.getElementById(theSubMenu);
  5. if (SubMenu.style.display == "none") {
  6. // 顯示子選單
  7. SubMenu.style.display = "block";
  8. hideMenu(); // 隱藏子選單
  9. VisibleMenu = theSubMenu;
  10. } else {
  11. // 隱藏子選單
  12. if (theEvent != "MouseOver" || VisibleMenu != theSubMenu) {
  13. SubMenu.style.display = "none";
  14. VisibleMenu = "";
  15. }
  16. }
  17. }
  18. // 隱藏子選單
  19. function hideMenu() {
  20. if (VisibleMenu != "") {
  21. document.getElementById(VisibleMenu).style.display = "none";
  22. }
  23. VisibleMenu = "";
  24. }
  25. function com_show_sub_tree(obj) {
  26. eParent = obj.parentNode;
  27. var x = eParent.getElementsByTagName("ul");
  28. if (x[0].style.display == "none") {
  29. x[0].style.display = "block";
  30. obj.getElementsByTagName("span")[0].innerHTML = "-";
  31. } else {
  32. x[0].style.display = "none";
  33. obj.getElementsByTagName("span")[0].innerHTML = "+";
  34. }
  35. }
  36. //check if the next sibling node is an element node
  37. function com_get_nextsibling(n) {
  38. let x = n.nextSibling;
  39. if (x != null) {
  40. while (x.nodeType != 1) {
  41. x = x.nextSibling;
  42. if (x == null) {
  43. return null;
  44. }
  45. }
  46. }
  47. return x;
  48. }
  49. function com_guid(trim = true, hyphen = false) {
  50. //guid生成器
  51. if (trim) {
  52. if (hyphen) {
  53. var tmp = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
  54. } else {
  55. var tmp = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  56. }
  57. } else {
  58. if (hyphen) {
  59. var tmp = "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}";
  60. } else {
  61. var tmp = "{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}";
  62. }
  63. }
  64. var guid = tmp.replace(/[xy]/g, function (c) {
  65. var r = (Math.random() * 16) | 0,
  66. v = c == "x" ? r : (r & 0x3) | 0x8;
  67. return v.toString(16);
  68. });
  69. return guid.toUpperCase();
  70. }
  71. function com_uuid() {
  72. //guid生成器
  73. let tmp = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
  74. let uuid = tmp.replace(/[xy]/g, function (c) {
  75. var r = (Math.random() * 16) | 0,
  76. v = c == "x" ? r : (r & 0x3) | 0x8;
  77. return v.toString(16);
  78. });
  79. return uuid.toLowerCase();
  80. }
  81. function com_xmlToString(elem) {
  82. var serialized;
  83. try {
  84. serializer = new XMLSerializer();
  85. serialized = serializer.serializeToString(elem);
  86. } catch (e) {
  87. serialized = elem.xml;
  88. }
  89. return serialized;
  90. }
  91. function com_getPaliReal(inStr) {
  92. if (typeof inStr == "undefined") {
  93. return "";
  94. }
  95. var paliletter = "abcdefghijklmnoprstuvyāīūṅñṭḍṇḷṃ";
  96. var output = "";
  97. inStr = inStr.toLowerCase();
  98. inStr = inStr.replace(/ṁ/g, "ṃ");
  99. inStr = inStr.replace(/ŋ/g, "ṃ");
  100. for (x in inStr) {
  101. if (paliletter.indexOf(inStr[x]) != -1) {
  102. output += inStr[x];
  103. }
  104. }
  105. return output;
  106. }
  107. function getCookie(c_name) {
  108. if (document.cookie.length > 0) {
  109. c_start = document.cookie.indexOf(c_name + "=");
  110. if (c_start != -1) {
  111. c_start = c_start + c_name.length + 1;
  112. c_end = document.cookie.indexOf(";", c_start);
  113. if (c_end == -1) c_end = document.cookie.length;
  114. return unescape(document.cookie.substring(c_start, c_end));
  115. } else {
  116. return "";
  117. }
  118. } else {
  119. return "";
  120. }
  121. }
  122. function setTimeZone() {
  123. const date = new Date();
  124. const timezone = date.getTimezoneOffset();
  125. setCookie("timezone", timezone, 10);
  126. }
  127. function setCookie(c_name, value, expiredays) {
  128. var exdate = new Date();
  129. exdate.setDate(exdate.getDate() + expiredays);
  130. document.cookie =
  131. c_name + "=" + escape(value) + (expiredays == null ? "" : "; expires=" + exdate.toGMTString() + ";path=/");
  132. }
  133. function copy_to_clipboard(strInput) {
  134. const input = document.createElement("input");
  135. input.setAttribute("readonly", "readonly");
  136. input.setAttribute("value", strInput);
  137. document.body.appendChild(input);
  138. // input.setSelectionRange(0, strInput.length);
  139. // input.focus();
  140. input.select();
  141. if (document.execCommand("copy")) {
  142. document.execCommand("copy");
  143. console.log("复制成功");
  144. ntf_show("“" + strInput + "”" + gLocal.gui.copied_to_clipboard);
  145. }
  146. document.body.removeChild(input);
  147. }
  148. function getPassDataTime(time) {
  149. let currDate = new Date();
  150. let pass = currDate.getTime() - time;
  151. let strPassTime = "";
  152. if (pass < 120 * 1000) {
  153. //二分钟内
  154. strPassTime = Math.floor(pass / 1000) + gLocal.gui.secs_ago;
  155. } else if (pass < 7200 * 1000) {
  156. //二小时内
  157. strPassTime = Math.floor(pass / 1000 / 60) + gLocal.gui.mins_ago;
  158. } else if (pass < 3600 * 48 * 1000) {
  159. //二天内
  160. strPassTime = Math.floor(pass / 1000 / 3600) + gLocal.gui.hs_ago;
  161. } else if (pass < 3600 * 24 * 14 * 1000) {
  162. //二周内
  163. strPassTime = Math.floor(pass / 1000 / 3600 / 24) + gLocal.gui.days_ago;
  164. } else if (pass < 3600 * 24 * 60 * 1000) {
  165. //二个月内
  166. strPassTime = Math.floor(pass / 1000 / 3600 / 24 / 7) + gLocal.gui.weeks_ago;
  167. } else if (pass < 3600 * 24 * 365 * 1000) {
  168. //一年内
  169. strPassTime = Math.floor(pass / 1000 / 3600 / 24 / 30) + gLocal.gui.months_ago;
  170. } else if (pass < 3600 * 24 * 730 * 1000) {
  171. //超过1年小于2年
  172. strPassTime = Math.floor(pass / 1000 / 3600 / 24 / 365) + gLocal.gui.year_ago;
  173. } else {
  174. strPassTime = Math.floor(pass / 1000 / 3600 / 24 / 365) + gLocal.gui.years_ago;
  175. }
  176. return strPassTime;
  177. }
  178. function getFullDataTime(time) {
  179. let inputDate = new Date();
  180. inputDate.setTime(time);
  181. return inputDate.toLocaleString();
  182. }
  183. function getDataTime(time) {
  184. let today = new Date();
  185. let inputDate = new Date();
  186. inputDate.setTime(time);
  187. let day = inputDate.getDate();
  188. let month = inputDate.getMonth() + 1;
  189. let year = inputDate.getFullYear();
  190. let hours = inputDate.getHours();
  191. let minutes = inputDate.getMinutes();
  192. let seconds = inputDate.getSeconds();
  193. let today_day = today.getDate();
  194. let today_month = today.getMonth() + 1;
  195. let today_year = today.getFullYear();
  196. let today_hours = today.getHours();
  197. let today_minutes = today.getMinutes();
  198. let today_seconds = today.getSeconds();
  199. let output = "";
  200. if (today_day == day && today_month == month && today_year == year) {
  201. //当天
  202. output = hours + ":" + minutes;
  203. } else if (today_year != year) {
  204. //不同年
  205. output = year;
  206. } else {
  207. //同一年
  208. output = month + "/" + day;
  209. }
  210. return output;
  211. }
  212. function str_diff(str1, str2) {
  213. let output = "";
  214. const diff = Diff.diffChars(str1, str2);
  215. diff.forEach((part) => {
  216. // green for additions, red for deletions
  217. // grey for common parts
  218. if (part.added) {
  219. output += "<ins>" + part.value + "</ins>";
  220. } else if (part.removed) {
  221. output += "<del>" + part.value + "</del>";
  222. } else {
  223. output += part.value;
  224. }
  225. });
  226. return output;
  227. }
  228. //所有页面都需要在加载的的时候设置浏览器时区
  229. setTimeZone();