Advertisement
Guest User

Untitled

a guest
Apr 20th, 2016
382
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.55 KB | None | 0 0
  1. /**************************************************************************
  2. * Module: JS_ChatAutoLogon
  3. * Description: Auto Logon in Chat Box!
  4. * Author: Made and Optimizations by JScript - 2014/11/02
  5. * Version: First Release!
  6. ***************************************************************************/
  7. function insertChatBox(chatbox_id, chatbox_url)
  8. {
  9. return insertChatBoxNew(chatbox_id, chatbox_url)
  10. }
  11.  
  12. function insertChatBoxNew(chatbox_id, chatbox_url)
  13. {
  14. // $('#' + chatbox_id).parent().detach().prependTo('#wrapper');
  15. document.getElementById(chatbox_id).innerHTML = '<iframe style="visibility: hidden;" src="/chatbox/index.forum?archives=1" id="frame_chatbox" scrolling="no" width="100%" height="100%" marginwidth="0" marginheight="0" frameborder="0"></iframe>';
  16. var iFrame = document.getElementById('frame_chatbox').contentWindow;
  17. var frame_chatbox_document = setInterval(function()
  18. {
  19. try
  20. {
  21. if (iFrame.jQuery)
  22. {
  23. clearInterval(frame_chatbox_document);
  24. chat_edit()
  25. }
  26. }
  27. catch (e)
  28. {}
  29. }, 50)
  30. }
  31. $(function()
  32. {
  33. if (_userdata.session_logged_in)
  34. {
  35. $('#frame_chatbox').load(function()
  36. {
  37. if (typeof document.getElementById('frame_chatbox').contentWindow['chatEdit'] == 'undefined')
  38. {
  39. chat_edit()
  40. }
  41. })
  42. }
  43. });
  44.  
  45. function chat_edit()
  46. {
  47. var oIframe = (document.getElementById("frame_chatbox").contentWindow.document || document.getElementById("frame_chatbox").contentDocument),
  48. script = oIframe.createElement("script"),
  49. chatbox_script = function()
  50. {
  51. window.chatEdit = {
  52. locale:
  53. {
  54. Remove: "Tem certeza de que deseja remover esta mensagem?",
  55. Save: "Salvar",
  56. Cancel: "Cancelar",
  57. },
  58. config:
  59. {
  60. Title: "",
  61. Notice: 0,
  62. Prefix: "@",
  63. autoLogin: 1,
  64. limitOfMsg: 60,
  65. smilePopUp: 0,
  66. Level: 0,
  67. shakeMsg: "agitou a janela de bate-papo para chamar a atenção de todos!"
  68. },
  69. interval: 0,
  70. cmdArray: ['/id', '/edit', '/del', '/info', '/shake', '/abs', '/away', '/clear', '/cls', '/kick', '/ban', '/unban', '/me', '/exit', '/mod', '/unmod'],
  71. oBBCode:
  72. {
  73. patt: [/\[b](.*?)\[\/b]/gi, /\[i](.*?)\[\/i]/gi, /\[u](.*?)\[\/u]/gi, /\[s](.*?)\[\/s]/gi, /\[center](.*?)\[\/center]/gi, /\[size=(.*?)](.*?)\[\/size]/gi, /\[url](.*?)\[\/url]/gi, /\[url=(.*?)](.*?)\[\/url]/gi, /\[color=(.*?)](.*?)\[\/color]/gi, /\[img](.*?)\[\/img]/gi, /\[spoiler](.*?)\[\/spoiler]/gi, /\[code](.*?)\[\/code]/gi, /\[quote](.*?)\[\/quote]/gi],
  74. html: ["<strong>$1</strong>", "<i>$1</i>", "<span style='text-decoration:underline;'>$1</span>", "<span style='text-decoration:line-through'>$1</span>", "<div style='margin:auto;text-align:center;width:100%'>$1</div>", "<span style='font-size: $1;'>$2</span>", "<a rel='nofollow' target='_blank' href='$1'>$1</a>", "<a rel='nofollow' target='_blank' href='$1'>$2</a>", "<span style='color: $1'>$2</span>", "<img src='$1' style='max-width:120px;max-height:120px;'/>", "<dl class='codebox spoiler'><dt style='cursor: pointer;'>Spoiler:</dt><dd><div class='spoiler_content'>$1</div></dd></dl>", "<dl class='codebox'><dt>Code:</dt><dd class='cont_code'><code>$1</code></dd></dl>", "<blockquote><div>$1</div></blockquote>"]
  75. },
  76. oHTML:
  77. {
  78. patt: [/<strong>(.*?)<\/strong>/gi, /<i>(.*?)<\/i>/gi, /<span style="text-decoration:underline;">(.*?)<\/span>/gi, /<span style="text-decoration:line-through;">(.*?)<\/span>/gi, /<div style="margin:auto;text-align:center;width:100%">(.*?)<\/div>/gi, /<span style="font-size: (.*?);">(.*?)<\/span>/gi, /<a href="(.*?)"><\/a>/gi, /<a href="(.*?)">(.*?)<\/a>/gi, /<span style="color: (.*?)">(.*?)<\/span>/gi, /<dl class="codebox spoiler"><dt style="cursor: pointer;">Spoiler:<\/dt><dd><div class="spoiler_content">(.*?)<\/div><\/dd><\/dl>/gi, /<dl class="codebox"><dt>Code:<\/dt><dd class="cont_code"><code>(.*?)<\/code><\/dd><\/dl>/gi, /<blockquote><div>(.*?)<\/div><\/blockquote>/gi],
  79. bbcode: ['[b]$1[/b]', '[i]$1[/i]', '[u]$1[/u]', '[s]$1[/s]', '[center]$1[/center]', '[size=$1]$2[/size]', '[url]"$1"[/url]', '[url="$1"]$2[/url]', '[color=$1]$2[/color]', '[spoiler]$1[/spoiler]', '[code]$1[/code]', '[quote]$1[/quote]']
  80. },
  81. loadSmile: function()
  82. {
  83. if (chatEdit.config.smilePopUp)
  84. {
  85. return false
  86. }
  87. $("#divsmilies").unbind("click").bind("click", function(event)
  88. {
  89. chatEdit.showSmile(event)
  90. });
  91. jQuery.ajax(
  92. {
  93. url: "/post?mode=smilies",
  94. cache: true,
  95. type: "get",
  96. dataType: "text",
  97. success: function(response, status, xhr)
  98. {
  99. if (xhr.status == 200)
  100. {
  101. var htmlSmile = $("<div>" + response + "</div>");
  102. htmlSmile.find("#smilies_categ, p, span").remove();
  103. htmlSmile.html(htmlSmile.html().replace(/insert_chatboxsmilie/g, "chatEdit.insertSmile"));
  104. var oTarget = htmlSmile.find("a"),
  105. oThis, patt, regex, pHtml = chatEdit.oHTML.patt,
  106. bHtml = chatEdit.oHTML.bbcode;
  107. for (var i = 0, len = oTarget.length; i < len; i++)
  108. {
  109. oThis = $(oTarget[i]);
  110. patt = /\('(.*?)'\)/i.exec(oThis.attr("href"))[1];
  111. regex = new RegExp('<img[^>]+?' + oThis.find('img').attr('src') + '[^>]*>', "gi");
  112. pHtml.push(regex);
  113. bHtml.push(patt.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\^\$\|]/g, "\\$&"))
  114. }
  115. jQuery("#chat-smiles-show").html(htmlSmile.find("#simple-wrap, tbody:last").html())
  116. }
  117. }
  118. });
  119. jQuery("head").append("<style type='text/css'>" + "#chat-smiles-show {" + " background: none no-repeat scroll center center rgb(255, 255, 255);" + " border: 2px solid #d2d2d2;" + " height: 250px;" + " overflow: auto;" + " padding-top: 6px;" + " position: absolute;" + " width: 225px;" + " z-index: 99999;" + "}" + "#chat-smiles-show > p {" + " margin: 0;" + "}" + "#chat-smiles-show p a {" + " margin-bottom: 14px;" + "}" + "#chat-smiles-show a {" + " display: inline-block;" + " font-size: 18px;" + " margin-bottom: 5px;" + " margin-left: 10px;" + " text-decoration: none;" + "}" + "</style>");
  120. jQuery("body").append("<div id='chat-smiles-show' style='display: none;'></div>")
  121. },
  122. showSmile: function(event)
  123. {
  124. var elenPos = jQuery("#divsmilies"),
  125. target = jQuery("#chat-smiles-show");
  126. target.css(
  127. {
  128. "left": (elenPos.offset().left + elenPos.outerWidth()) - target.outerWidth(),
  129. "top": elenPos.offset().top - target.outerHeight()
  130. });
  131. return (target[0].style.display == "none") ? target.fadeIn("fast") : target.fadeOut("fast")
  132. },
  133. insertSmile: function(smile)
  134. {
  135. var id = document.getElementById("message");
  136. id.focus();
  137. id.value += " " + smile + " ";
  138. document.getElementById("chat-smiles-show").style.display = "none"
  139. },
  140. parseBBCode: function(data)
  141. {
  142. var pBBCode = chatEdit.oBBCode.patt,
  143. hBBCode = chatEdit.oBBCode.html;
  144. for (var i = 0, len = pBBCode.length; i < len; i++)
  145. {
  146. data = data.replace(pBBCode[i], hBBCode[i])
  147. }
  148. return data
  149. },
  150. parseHTML: function(data)
  151. {
  152. var pHtml = chatEdit.oHTML.patt,
  153. bHtml = chatEdit.oHTML.bbcode;
  154. for (var i = 0, len = pHtml.length; i < len; i++)
  155. {
  156. data = data.replace(pHtml[i], bHtml[i])
  157. }
  158. return data
  159. },
  160. editShout: function(ID, num, oThis)
  161. {
  162. var oShout = $("#chatbox .shout-" + ID),
  163. oEditor = oShout.find('.date-and-time'),
  164. oMsg = oShout.find('span.msg');
  165. try
  166. {
  167. var sMsg = chatEdit.parseHTML(oMsg.children('span')[0].innerHTML)
  168. }
  169. catch (e)
  170. {
  171. var sMsg = chatEdit.parseHTML(oMsg[0].innerHTML)
  172. }
  173. if (num == 0)
  174. {
  175. var sHtml = '<span>' + ' <textarea id="edit-' + ID + '" style="width: ' + (oMsg.width() - oEditor.width()) + 'px; height: ' + oMsg.height() + 'px;vertical-align: middle;font-family: inherit;font-size: inherit;margin-top: -2px;">' + sMsg + '</textarea>' + ' <input type="submit" style="cursor: pointer;margin-right: 4px;" onclick="chatEdit.submitEdit(' + ID + ', 0, this);" value="' + chatEdit.locale.Save + '" class="button2">' + ' <a title="' + chatEdit.locale.Cancel + '" style="cursor: pointer;" href="javascript:void(0);" onclick="chatEdit.submitEdit(' + ID + ', -1, this);">' + chatEdit.locale.Cancel + '</a>' + ' </span>';
  176. oEditor.hide();
  177. oMsg.hide().before(sHtml)
  178. }
  179. else if (num == 1 && chatEdit.iConfirm(chatEdit.locale.Remove + "\n\n" + sMsg) == 1)
  180. {
  181. chatEdit.submitEdit(ID, 1, oThis)
  182. }
  183. },
  184. submitEdit: function(ID, num, oThis)
  185. {
  186. var p = $(oThis).closest('p');
  187. if (num == 0)
  188. {
  189. var value = $('#edit-' + ID).val();
  190. $('#message').val('/edit' + ID + value);
  191. p.find('span.msg > span').html(chatEdit.parseBBCode(value)).show();
  192. window.chatbox.send()
  193. }
  194. else if (num == 1)
  195. {
  196. $('#message').val('/del' + ID);
  197. $("#chatbox .shout-" + ID).remove();
  198. window.chatbox.send()
  199. }
  200. p.find('.date-and-time').show().end().find('span.msg').show();
  201. $(oThis).parent().remove()
  202. },
  203. shake: function()
  204. {
  205. var iFrame = parent.$("#frame_chatbox"),
  206. interval = 70,
  207. distance = 10,
  208. times = 4;
  209. iFrame.css('position', 'relative');
  210. for (var iter = 0; iter < (times + 1); iter++)
  211. {
  212. iFrame.animate(
  213. {
  214. left: ((iter % 2 == 0 ? distance : distance * -1))
  215. }, interval)
  216. }
  217. iFrame.animate(
  218. {
  219. left: 0
  220. }, interval)
  221. },
  222. iConfirm: function(text)
  223. {
  224. return (confirm(text) == true) ? true : false
  225. },
  226. info:
  227. {
  228. Title: "chatbox8 - Edit Messages",
  229. Version: "1.05222015-jq1.9.1",
  230. Release: "2015-05-22",
  231. codeName: "Bhagavad-Gita",
  232. Author: "JScript - 2015-05-07",
  233. copyRight: "(c) 2015 JScript <jscriptbrasil at live dot com>\nThis work is free. You can redistribute it and/or modify it under the terms of the WTFPL, Version 2"
  234. }
  235. };
  236. (function($)
  237. {
  238. $.assyncFor = function(arr, limitOfMsg, callback)
  239. {
  240. var max_len = (arr.length > limitOfMsg) ? (arr.length - limitOfMsg) : 0;
  241. if (max_len < 0)
  242. {
  243. max_len = 0
  244. }
  245. for (var i = max_len, len = arr.length; i < len; ++i)
  246. {
  247. var boundCallback = callback.bind(null, i, arr[i]);
  248. setTimeout(boundCallback, i)
  249. }
  250. return this
  251. }
  252. }(jQuery));
  253. Chatbox.prototype.send = function(params)
  254. {
  255. var isCMD = null,
  256. message = $('#message').val().trim(),
  257. ID = (Math.random() + "000000000" + _userdata.user_id.toString()).substr(2, 10);
  258. for (var i = 0, len = chatEdit.cmdArray.length; i < len; ++i)
  259. {
  260. if (message.indexOf(chatEdit.cmdArray[i]) == 0)
  261. {
  262. isCMD = chatEdit.cmdArray[i]
  263. }
  264. }
  265. switch (isCMD)
  266. {
  267. case null:
  268. $('#message').val('/id' + ID + "&nbsp;" + message);
  269. break;
  270. case '/shake':
  271. if (_userdata.user_level > 0)
  272. {
  273. $('#message').val('/shake' + ID)
  274. }
  275. break;
  276. case '/info':
  277. return alert(chatEdit.info.Title + '\n\nVersion: ' + chatEdit.info.Version + '\nReselase date: ' + chatEdit.info.Release + '\nCodeName: ' + chatEdit.info.codeName + '\nAuthor: ' + chatEdit.info.Author + '\nCopyright: ' + chatEdit.info.copyRight);
  278. break
  279. }
  280. if (!params)
  281. {
  282. params = $('form[name=\'post\']').serialize()
  283. }
  284. var data = params + '&method=send&archives=' + this.archives,
  285. self = this;
  286. $('#message').val('').focus();
  287. $.ajax(
  288. {
  289. url: this.actionsUrl,
  290. type: 'post',
  291. data: data,
  292. dataType: 'json',
  293. cache: false,
  294. success: function(response)
  295. {
  296. self.refresh(response)
  297. }
  298. })
  299. };
  300. Chatbox.prototype.refresh = function(data)
  301. {
  302. if (data.error)
  303. {
  304. $("body").html(data.error)
  305. }
  306. else
  307. {
  308. if (this.connected)
  309. {
  310. if (!chatEdit.interval)
  311. {
  312. $("#chatbox_display_archives").show();
  313. $("#chatbox_option_co").hide();
  314. $("#chatbox_option_disco, #chatbox_footer").show();
  315. $("#chatbox_messenger_form").css('display', 'block');
  316. $("#chatbox_messenger_form").css('visibility', 'visible');
  317. $(".format-message").each(function()
  318. {
  319. var name = $(this).attr("name");
  320. var value = my_getcookie("CB_" + name);
  321. $(this).prop("checked", parseInt(value) ? true : false)
  322. });
  323. this.format();
  324. if (data.lastModified)
  325. {
  326. this.listenParams.lastModified = data.lastModified
  327. }
  328. $("#chatbox").empty();
  329. chatEdit.interval = setInterval(function()
  330. {
  331. chatbox.get()
  332. }, 5000);
  333. if (document.getElementById("chat-smiles-show") == null)
  334. {
  335. chatEdit.loadSmile()
  336. }
  337. }
  338. }
  339. else
  340. {
  341. if (chatEdit.interval)
  342. {
  343. clearInterval(chatEdit.interval);
  344. chatEdit.interval = 0;
  345. $("#chatbox").empty();
  346. $("#chatbox_option_co").show();
  347. $("#chatbox_option_disco, #chatbox_footer").hide();
  348. $("#chatbox_display_archives").hide();
  349. $("#chatbox_messenger_form").css('display', 'none');
  350. $("#chatbox_messenger_form").css('visibility', 'hidden')
  351. }
  352. }
  353. if (data.users)
  354. {
  355. this.users = [];
  356. $(".online-users, .away-users").empty();
  357. $(".member-title").hide();
  358. for (var i in data.users)
  359. {
  360. var user = data.users[i];
  361. this.users[user.id] = user;
  362. var username = "";
  363. for (var j in data.messages)
  364. {
  365. var message = data.messages[j];
  366. if (message.userId == user.id)
  367. {
  368. if (message.user.avatar)
  369. {
  370. username = "<span class='cb-avatar'><img src='" + message.user.avatar + "' style='height: 24px; width: 24px; margin-right: 4px;'/></span>"
  371. }
  372. }
  373. }
  374. username += "<span style='color:" + user.color + "'>" + (user.admin ? "@ " : "") + "<span class='chatbox-username chatbox-user-username' data-user='" + user.id + "' >" + user.username + "</span></span>";
  375. var list = user.online ? ".online-users" : ".away-users";
  376. $(list).append("<li>" + username + "</li>")
  377. }
  378. if (!$(".online-users").is(":empty"))
  379. {
  380. $(".member-title.online").show()
  381. }
  382. if (!$(".away-users").is(":empty"))
  383. {
  384. $(".member-title.away").show()
  385. }
  386. }
  387. if (data.messages)
  388. {
  389. var scroll = !this.messages || this.messages.length != data.messages.length;
  390. this.messages = data.messages;
  391. if ((scroll && data.messages.length == 1) || !data.connected)
  392. {
  393. $("#chatbox").empty()
  394. }
  395. if (this.messages)
  396. {
  397. var oThis = this,
  398. nNotice = chatEdit.config.Notice,
  399. aMsgLen = oThis.messages.length,
  400. sDomLst = $("#chatbox").html();
  401. html = "";
  402. $.assyncFor(oThis.messages, chatEdit.config.limitOfMsg, function(index, message)
  403. {
  404. var CMD = null,
  405. UID = index;
  406. if (message.userId > 0)
  407. {
  408. CMD = message.msg.match(/([^]+)(\/[a-z]+)(\d{10})([^]+)/)
  409. }
  410. if (CMD !== null)
  411. {
  412. switch (CMD[2])
  413. {
  414. case '/del':
  415. $(".shout-" + CMD[3]).remove();
  416. break;
  417. case '/edit':
  418. $(".shout-" + CMD[3]).find('span.msg').html(CMD[1] + CMD[4]);
  419. break;
  420. case '/shake':
  421. if (((index + 1) == aMsgLen) && scroll && $('#chatbox_members span[data-user="' + message.userId + '"]').length)
  422. {
  423. if (_userdata.user_id !== Number(message.userId))
  424. {
  425. setTimeout(function()
  426. {
  427. chatEdit.shake()
  428. }, 500)
  429. }
  430. html = "<p class='chatbox_row_" + (index % 2 == 1 ? 2 : 1) + " clearfix shout-" + index + "'>" + " <span class='date-and-time' title='" + message.date + "'>(" + message.datetime + ")</span>" + " <span class='msg'><img src='http://r19.imgfast.net/users/1917/43/09/52/smiles/18952631.png' />" + " <span style='color:" + message.user.color + "'><strong> " + message.username + " <span style='color: red'>&nbsp;" + chatEdit.config.shakeMsg + "</span></strong>" + " </span>" + " </span>" + "</p>";
  431. $("#chatbox").append(html)
  432. }
  433. break;
  434. default:
  435. UID = CMD[3];
  436. message.msg = CMD[1] + CMD[4];
  437. CMD = null;
  438. break
  439. }
  440. }
  441. if (CMD == null)
  442. {
  443. if ((sDomLst.indexOf("shout-" + UID) !== -1) || (nNotice && message.userId == -10))
  444. {
  445. return false
  446. }
  447. html = "<p class='chatbox_row_" + (index % 2 == 1 ? 2 : 1) + " clearfix shout-" + UID + "'>" + " <span class='date-and-time' title='" + message.date + "'>(" + message.datetime + ")";
  448. if (message.userId == -10)
  449. {
  450. html += "</span>" + "<span class='msg'><span style='color:" + message.msgColor + "'><strong> " + message.msg + "</strong></span></span>"
  451. }
  452. else
  453. {
  454. if ((_userdata.username == message.username) || (_userdata.user_level > 0))
  455. {
  456. html += " <span class='editor'>" + " &nbsp;<img alt='Edit' style='cursor: pointer;' onclick='chatEdit.editShout(\"" + UID + "\", 0, this);' src='http://i.imgur.com/kW3LoX3.png'>&nbsp;" + " <img alt='Remove' style='cursor: pointer;' onclick='chatEdit.editShout(\"" + UID + "\", 1, this);' src='http://i.imgur.com/KGiq3xm.png'>" + " </span>"
  457. }
  458. html += "</span>" + " <span class='user-msg'>";
  459. if (oThis.avatar)
  460. {
  461. html += "<span class='cb-avatar'><img src='" + message.user.avatar + "' /></span>"
  462. }
  463. html += " <span class='user' style='color:" + message.user.color + "'>" + " <strong> " + (message.user.admin ? chatEdit.config.Prefix + " " : "") + " <span class='chatbox-username chatbox-message-username' data-user='" + message.userId + "' >" + message.username + "</span>&nbsp;:&nbsp;" + " </strong>" + " </span>" + " <span class='msg'>" + message.msg + "</span>" + " </span>"
  464. }
  465. html += "</p>";
  466. $("#chatbox").append(html)
  467. }
  468. if ((index + 1) == aMsgLen)
  469. {
  470. if (scroll)
  471. {
  472. $("#chatbox")[0].scrollTop = $("#chatbox").prop("scrollHeight") * 2
  473. }
  474. }
  475. })
  476. }
  477. }
  478. }
  479. };
  480. if (chatEdit.config.Title.length)
  481. {
  482. $("a.chat-title").text(chatEdit.config.Title)
  483. }
  484. $("#chatbox_option_co, #chatbox_option_disco").bind("click", function()
  485. {
  486. $("#chatbox").empty()
  487. });
  488. parent.document.getElementById('frame_chatbox').style.visibility = 'visible';
  489. if (chatEdit.config.autoLogin)
  490. {
  491. setTimeout(function()
  492. {
  493. $('#chatbox_option_co:visible').click()
  494. }, 1000)
  495. }
  496. };
  497. script.type = "text/javascript";
  498. script.innerHTML = "_userdata = " + JSON.stringify(_userdata) + ";$(function() { (" + chatbox_script.toString() + ")(); });";
  499. oIframe.getElementsByTagName("head")[0].appendChild(script)
  500. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement