Free Bitcoin


SUBMITTED BY: Guest

DATE: Nov. 2, 2021, 3:49 p.m.

FORMAT: Text only

SIZE: 9.5 kB

HITS: 667

  1. /**
  2. * phpBB3 forum functions
  3. */
  4. /**
  5. * Window popup
  6. */
  7. function popup(url, width, height, name)
  8. {
  9. if (!name)
  10. {
  11. name = '_popup';
  12. }
  13. window.open(url.replace(/&/g, '&'), name, 'height=' + height + ',resizable=yes,scrollbars=yes, width=' + width);
  14. return false;
  15. }
  16. /**
  17. * Jump to page
  18. */
  19. function jumpto()
  20. {
  21. var page = prompt(jump_page, on_page);
  22. if (page !== null && !isNaN(page) && page == Math.floor(page) && page > 0)
  23. {
  24. if (base_url.indexOf('?') == -1)
  25. {
  26. document.location.href = base_url + '?start=' + ((page - 1) * per_page);
  27. }
  28. else
  29. {
  30. document.location.href = base_url.replace(/&/g, '&') + '&start=' + ((page - 1) * per_page);
  31. }
  32. }
  33. }
  34. /**
  35. * Mark/unmark checklist
  36. * id = ID of parent container, name = name prefix, state = state [true/false]
  37. */
  38. function marklist(id, name, state)
  39. {
  40. var parent = document.getElementById(id);
  41. if (!parent)
  42. {
  43. eval('parent = document.' + id);
  44. }
  45. if (!parent)
  46. {
  47. return;
  48. }
  49. var rb = parent.getElementsByTagName('input');
  50. for (var r = 0; r < rb.length; r++)
  51. {
  52. if (rb[r].name.substr(0, name.length) == name)
  53. {
  54. rb[r].checked = state;
  55. }
  56. }
  57. }
  58. /**
  59. * Resize viewable area for attached image or topic review panel (possibly others to come)
  60. * e = element
  61. */
  62. function viewableArea(e, itself)
  63. {
  64. if (!e) return;
  65. if (!itself)
  66. {
  67. e = e.parentNode;
  68. }
  69. if (!e.vaHeight)
  70. {
  71. // Store viewable area height before changing style to auto
  72. e.vaHeight = e.offsetHeight;
  73. e.vaMaxHeight = e.style.maxHeight;
  74. e.style.height = 'auto';
  75. e.style.maxHeight = 'none';
  76. e.style.overflow = 'visible';
  77. }
  78. else
  79. {
  80. // Restore viewable area height to the default
  81. e.style.height = e.vaHeight + 'px';
  82. e.style.overflow = 'auto';
  83. e.style.maxHeight = e.vaMaxHeight;
  84. e.vaHeight = false;
  85. }
  86. }
  87. /**
  88. * Set display of page element
  89. * s[-1,0,1] = hide,toggle display,show
  90. */
  91. function dE(n, s)
  92. {
  93. var e = document.getElementById(n);
  94. if (!s)
  95. {
  96. s = (e.style.display == '' || e.style.display == 'block') ? -1 : 1;
  97. }
  98. e.style.display = (s == 1) ? 'block' : 'none';
  99. }
  100. /**
  101. * Alternate display of subPanels
  102. */
  103. function subPanels(p)
  104. {
  105. var i, e, t;
  106. if (typeof(p) == 'string')
  107. {
  108. show_panel = p;
  109. }
  110. for (i = 0; i < panels.length; i++)
  111. {
  112. e = document.getElementById(panels[i]);
  113. t = document.getElementById(panels[i] + '-tab');
  114. if (e)
  115. {
  116. if (panels[i] == show_panel)
  117. {
  118. e.style.display = 'block';
  119. if (t)
  120. {
  121. t.className = 'activetab';
  122. }
  123. }
  124. else
  125. {
  126. e.style.display = 'none';
  127. if (t)
  128. {
  129. t.className = '';
  130. }
  131. }
  132. }
  133. }
  134. }
  135. /**
  136. * Call print preview
  137. */
  138. function printPage()
  139. {
  140. if (is_ie)
  141. {
  142. printPreview();
  143. }
  144. else
  145. {
  146. window.print();
  147. }
  148. }
  149. /**
  150. * Show/hide groups of blocks
  151. * c = CSS style name
  152. * e = checkbox element
  153. * t = toggle dispay state (used to show 'grip-show' image in the profile block when hiding the profiles)
  154. */
  155. function displayBlocks(c, e, t)
  156. {
  157. var s = (e.checked == true) ? 1 : -1;
  158. if (t)
  159. {
  160. s *= -1;
  161. }
  162. var divs = document.getElementsByTagName("DIV");
  163. for (var d = 0; d < divs.length; d++)
  164. {
  165. if (divs[d].className.indexOf(c) == 0)
  166. {
  167. divs[d].style.display = (s == 1) ? 'none' : 'block';
  168. }
  169. }
  170. }
  171. function selectCode(a)
  172. {
  173. // Get ID of code block
  174. var e = a.parentNode.parentNode.getElementsByTagName('CODE')[0];
  175. // Not IE
  176. if (window.getSelection)
  177. {
  178. var s = window.getSelection();
  179. // Safari
  180. if (s.setBaseAndExtent)
  181. {
  182. s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
  183. }
  184. // Firefox and Opera
  185. else
  186. {
  187. // workaround for bug # 42885
  188. if (window.opera && e.innerHTML.substring(e.innerHTML.length - 4) == '<BR>')
  189. {
  190. e.innerHTML = e.innerHTML + '&nbsp;';
  191. }
  192. var r = document.createRange();
  193. r.selectNodeContents(e);
  194. s.removeAllRanges();
  195. s.addRange(r);
  196. }
  197. }
  198. // Some older browsers
  199. else if (document.getSelection)
  200. {
  201. var s = document.getSelection();
  202. var r = document.createRange();
  203. r.selectNodeContents(e);
  204. s.removeAllRanges();
  205. s.addRange(r);
  206. }
  207. // IE
  208. else if (document.selection)
  209. {
  210. var r = document.body.createTextRange();
  211. r.moveToElementText(e);
  212. r.select();
  213. }
  214. }
  215. /**
  216. * Play quicktime file by determining it's width/height
  217. * from the displayed rectangle area
  218. */
  219. function play_qt_file(obj)
  220. {
  221. var rectangle = obj.GetRectangle();
  222. if (rectangle)
  223. {
  224. rectangle = rectangle.split(',');
  225. var x1 = parseInt(rectangle[0]);
  226. var x2 = parseInt(rectangle[2]);
  227. var y1 = parseInt(rectangle[1]);
  228. var y2 = parseInt(rectangle[3]);
  229. var width = (x1 < 0) ? (x1 * -1) + x2 : x2 - x1;
  230. var height = (y1 < 0) ? (y1 * -1) + y2 : y2 - y1;
  231. }
  232. else
  233. {
  234. var width = 200;
  235. var height = 0;
  236. }
  237. obj.width = width;
  238. obj.height = height + 16;
  239. obj.SetControllerVisible(true);
  240. obj.Play();
  241. }
  242. /**
  243. * Check if the nodeName of elem is name
  244. * @author jQuery
  245. */
  246. function is_node_name(elem, name)
  247. {
  248. return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
  249. }
  250. /**
  251. * Check if elem is in array, return position
  252. * @author jQuery
  253. */
  254. function is_in_array(elem, array)
  255. {
  256. for (var i = 0, length = array.length; i < length; i++)
  257. // === is correct (IE)
  258. if (array[i] === elem)
  259. return i;
  260. return -1;
  261. }
  262. /**
  263. * Find Element, type and class in tree
  264. * Not used, but may come in handy for those not using JQuery
  265. * @author jQuery.find, Meik Sievertsen
  266. */
  267. function find_in_tree(node, tag, type, class_name)
  268. {
  269. var result, element, i = 0, length = node.childNodes.length;
  270. for (element = node.childNodes[0]; i < length; element = node.childNodes[++i])
  271. {
  272. if (!element || element.nodeType != 1) continue;
  273. if ((!tag || is_node_name(element, tag)) && (!type || element.type == type) && (!class_name || is_in_array(class_name, (element.className || element).toString().split(/\s+/)) > -1))
  274. {
  275. return element;
  276. }
  277. if (element.childNodes.length)
  278. result = find_in_tree(element, tag, type, class_name);
  279. if (result) return result;
  280. }
  281. }
  282. var in_autocomplete = false;
  283. var last_key_entered = '';
  284. /**
  285. * Check event key
  286. */
  287. function phpbb_check_key(event)
  288. {
  289. // Keycode is array down or up?
  290. if (event.keyCode && (event.keyCode == 40 || event.keyCode == 38))
  291. in_autocomplete = true;
  292. // Make sure we are not within an "autocompletion" field
  293. if (in_autocomplete)
  294. {
  295. // If return pressed and key changed we reset the autocompletion
  296. if (!last_key_entered || last_key_entered == event.which)
  297. {
  298. in_autocompletion = false;
  299. return true;
  300. }
  301. }
  302. // Keycode is not return, then return. ;)
  303. if (event.which != 13)
  304. {
  305. last_key_entered = event.which;
  306. return true;
  307. }
  308. return false;
  309. }
  310. /**
  311. * Usually used for onkeypress event, to submit a form on enter
  312. */
  313. function submit_default_button(event, selector, class_name)
  314. {
  315. // Add which for key events
  316. if (!event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode))
  317. event.which = event.charCode || event.keyCode;
  318. if (phpbb_check_key(event))
  319. return true;
  320. var current = selector['parentNode'];
  321. // Search parent form element
  322. while (current && (!current.nodeName || current.nodeType != 1 || !is_node_name(current, 'form')) && current != document)
  323. current = current['parentNode'];
  324. // Find the input submit button with the class name
  325. //current = find_in_tree(current, 'input', 'submit', class_name);
  326. var input_tags = current.getElementsByTagName('input');
  327. current = false;
  328. for (var i = 0, element = input_tags[0]; i < input_tags.length; element = input_tags[++i])
  329. {
  330. if (element.type == 'submit' && is_in_array(class_name, (element.className || element).toString().split(/\s+/)) > -1)
  331. current = element;
  332. }
  333. if (!current)
  334. return true;
  335. // Submit form
  336. current.focus();
  337. current.click();
  338. return false;
  339. }
  340. /**
  341. * Apply onkeypress event for forcing default submit button on ENTER key press
  342. * The jQuery snippet used is based on http://greatwebguy.com/programming/dom/default-html-button-submit-on-enter-with-jquery/
  343. * The non-jQuery code is a mimick of the jQuery code ;)
  344. */
  345. function apply_onkeypress_event()
  346. {
  347. // jQuery code in case jQuery is used
  348. if (jquery_present)
  349. {
  350. jQuery('form input[type=text], form input[type=password]').live('keypress', function (e)
  351. {
  352. var default_button = jQuery(this).parents('form').find('input[type=submit].default-submit-action');
  353. if (!default_button || default_button.length <= 0)
  354. return true;
  355. if (phpbb_check_key(e))
  356. return true;
  357. if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13))
  358. {
  359. default_button.click();
  360. return false;
  361. }
  362. return true;
  363. });
  364. return;
  365. }
  366. var input_tags = document.getElementsByTagName('input');
  367. for (var i = 0, element = input_tags[0]; i < input_tags.length ; element = input_tags[++i])
  368. {
  369. if (element.type == 'text' || element.type == 'password')
  370. {
  371. // onkeydown is possible too
  372. element.onkeypress = function (evt) { submit_default_button((evt || window.event), this, 'default-submit-action'); };
  373. }
  374. }
  375. }
  376. /**
  377. * Detect JQuery existance. We currently do not deliver it, but some styles do, so why not benefit from it. ;)
  378. */
  379. var jquery_present = typeof jQuery == 'function';

comments powered by Disqus