1 // This file is part of Civetweb project,
2 // http://sourceforge.net/projects/civetweb/
5 // Backend URL, string.
6 // 'http://backend.address.com' or '' if backend is the same as frontend
8 maxVisibleMessages
: 10,
9 errorMessageFadeOutTimeoutMs
: 2000,
10 errorMessageFadeOutTimer
: null,
12 getMessagesIntervalMs
: 1000,
15 chat
.normalizeText = function(text
) {
16 return text
.replace('<', '<').replace('>', '>');
19 chat
.refresh = function(data
) {
21 if (data
=== undefined) {
25 $.each(data
, function(index
, entry
) {
26 var row
= $('<div>').addClass('message-row').appendTo('#mml');
27 var timestamp
= (new Date(entry
.timestamp
* 1000)).toLocaleTimeString();
29 .addClass('message-timestamp')
30 .html('[' + timestamp
+ ']')
33 .addClass('message-user')
34 .addClass(entry
.user
? '' : 'message-user-server')
35 .html(chat
.normalizeText((entry
.user
|| '[server]') + ':'))
38 .addClass('message-text')
39 .addClass(entry
.user
? '' : 'message-text-server')
40 .html(chat
.normalizeText(entry
.text
))
42 chat
.lastMessageId
= Math
.max(chat
.lastMessageId
, entry
.id
) + 1;
45 // Keep only chat.maxVisibleMessages, delete older ones.
46 while ($('#mml').children().length
> chat
.maxVisibleMessages
) {
47 $('#mml div:first-child').remove();
51 chat
.getMessages = function(enter_loop
) {
54 url
: chat
.backendUrl
+ '/ajax/get_messages',
55 data
: {last_id
: chat
.lastMessageId
},
56 success
: chat
.refresh
,
61 window
.setTimeout('chat.getMessages(true)', chat
.getMessagesIntervalMs
);
65 chat
.handleMenuItemClick = function(ev
) {
66 $('.menu-item').removeClass('menu-item-selected'); // Deselect menu buttons
67 $(this).addClass('menu-item-selected'); // Select clicked button
68 $('.main').addClass('hidden'); // Hide all main windows
69 $('#' + $(this).attr('name')).removeClass('hidden'); // Show main window
72 chat
.showError = function(message
) {
73 $('#error').html(message
).fadeIn('fast');
74 window
.clearTimeout(chat
.errorMessageFadeOutTimer
);
75 chat
.errorMessageFadeOutTimer
= window
.setTimeout(function() {
76 $('#error').fadeOut('slow');
77 }, chat
.errorMessageFadeOutTimeoutMs
);
80 chat
.handleMessageInput = function(ev
) {
81 var input
= ev
.target
;
82 if (ev
.keyCode
!= 13 || !input
.value
)
84 //input.disabled = true;
87 url
: chat
.backendUrl
+ '/ajax/send_message',
88 data
: {text
: input
.value
},
89 success: function(ev
) {
91 input
.disabled
= false;
92 chat
.getMessages(false);
95 chat
.showError('Error sending message');
96 input
.disabled
= false;
101 $(document
).ready(function() {
102 $('.menu-item').click(chat
.handleMenuItemClick
);
103 $('.message-input').keypress(chat
.handleMessageInput
);
104 chat
.getMessages(true);