diff options
Diffstat (limited to 'public/js/chat.js')
| -rw-r--r-- | public/js/chat.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/public/js/chat.js b/public/js/chat.js new file mode 100644 index 0000000..8f9a82c --- /dev/null +++ b/public/js/chat.js @@ -0,0 +1,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(); +}; |
