summaryrefslogtreecommitdiff
path: root/public/js/chat.js
blob: 8f9a82ca9216b7d986012201e2e86b029110a7e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
function Chat (app) {
  var base = this;
  var $messages = $("#messages"),
      $message = $("#message"),
      $send = $("#send");
  base.focused = false;

  // Initialize the chat module
  function init(){
    bind();
    $message.focus();
  }

  // Bind events
  function bind(){
    // Listen for chat messages
    app.receive("event-chat", function(data){
      base.receive(data.name, data.message);
    })
    
    // Bind to the chat input form
    $message.on({
      focus: function(){
        base.focused = true;
      },
      blur: function(){
        base.focused = false;
      },
      keydown: function(e){
        switch (e.keyCode) {
          case 13: // enter
            base.send();
            break;
        }
      }
    });
  }

  // Get a message from the message box and send it out
  base.send = function () {
    var message = $("#message").val();
    $("#message").val("");
    base.receive(app.user.name, message);
    app.send("event-chat", { 'name': app.user.name, 'message': message });
  }

  // Receive a message and drop it in the chat
  base.receive = function (name, message) {
    $("#messages").append("<b>" + sanitize(name) + "</b>" + sanitize(message) + "<br>");
  }

  init();
};