| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | // This file is part of Civetweb project,// http://sourceforge.net/projects/civetweb/var chat = {  // Backend URL, string.  // 'http://backend.address.com' or '' if backend is the same as frontend  backendUrl: '',  maxVisibleMessages: 10,  errorMessageFadeOutTimeoutMs: 2000,  errorMessageFadeOutTimer: null,  lastMessageId: 0,  getMessagesIntervalMs: 1000,};chat.normalizeText = function(text) {  return text.replace('<', '<').replace('>', '>');};chat.refresh = function(data) {  if (data === undefined) {    return;  }    $.each(data, function(index, entry) {    var row = $('<div>').addClass('message-row').appendTo('#mml');    var timestamp = (new Date(entry.timestamp * 1000)).toLocaleTimeString();    $('<span>')      .addClass('message-timestamp')      .html('[' + timestamp + ']')      .prependTo(row);    $('<span>')      .addClass('message-user')      .addClass(entry.user ? '' : 'message-user-server')      .html(chat.normalizeText((entry.user || '[server]') + ':'))      .appendTo(row);    $('<span>')      .addClass('message-text')      .addClass(entry.user ? '' : 'message-text-server')      .html(chat.normalizeText(entry.text))      .appendTo(row);    chat.lastMessageId = Math.max(chat.lastMessageId, entry.id) + 1;  });  // Keep only chat.maxVisibleMessages, delete older ones.  while ($('#mml').children().length > chat.maxVisibleMessages) {    $('#mml div:first-child').remove();  }};chat.getMessages = function(enter_loop) {  $.ajax({    dataType: 'jsonp',    url: chat.backendUrl + '/ajax/get_messages',    data: {last_id: chat.lastMessageId},    success: chat.refresh,    error: function() {    },  });  if (enter_loop) {    window.setTimeout('chat.getMessages(true)', chat.getMessagesIntervalMs);  }};chat.handleMenuItemClick = function(ev) {  $('.menu-item').removeClass('menu-item-selected');  // Deselect menu buttons  $(this).addClass('menu-item-selected');  // Select clicked button  $('.main').addClass('hidden');  // Hide all main windows  $('#' + $(this).attr('name')).removeClass('hidden');  // Show main window};chat.showError = function(message) {  $('#error').html(message).fadeIn('fast');  window.clearTimeout(chat.errorMessageFadeOutTimer);  chat.errorMessageFadeOutTimer = window.setTimeout(function() {      $('#error').fadeOut('slow');  }, chat.errorMessageFadeOutTimeoutMs);};chat.handleMessageInput = function(ev) {  var input = ev.target;  if (ev.keyCode != 13 || !input.value)    return;  //input.disabled = true;  $.ajax({    dataType: 'jsonp',    url: chat.backendUrl + '/ajax/send_message',    data: {text: input.value},    success: function(ev) {      input.value = '';      input.disabled = false;      chat.getMessages(false);    },    error: function(ev) {      chat.showError('Error sending message');      input.disabled = false;    },  });};$(document).ready(function() {  $('.menu-item').click(chat.handleMenuItemClick);  $('.message-input').keypress(chat.handleMessageInput);  chat.getMessages(true);});// vim:ts=2:sw=2:et
 |