summaryrefslogtreecommitdiff
path: root/public/js/chat.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/js/chat.js')
-rw-r--r--public/js/chat.js53
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();
+};