summaryrefslogtreecommitdiff
path: root/public/js/chat.js
blob: 67b6255e23e7759caba6a3d87e100d98042b7c54 (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
54
55
56
57
58
59
60
var Chat = {
	height: 300,

	init: function(){
		$("#chat-message").on("keydown", Chat.keys);
	},

	keys: function (e) {
		switch (e.keyCode) {
			case 13: // enter
				Chat.send ();
				break
			case 33: // pageup
				var x = $("#chat_container").scrollTop() - Chat.height + 20;
				$("#chat_container").scrollTop( x );
				break
			case 34: // pagedown
				var x = $("#chat_container").scrollTop() + Chat.height + 20;
				$("#chat_container").scrollTop( x );
				break
		}
	},
	
	send: function () {
		var body = $("#chat-message").val();
		$("#chat-message").val("");
		
		Chat.add({ nick: Game.nick, body: body, you: true });
		Events.send.message({ nick: Game.nick, body: body });
	},
	
	parse: function (raw) {
		if (! raw) return "";
		if (raw.indexOf("http") !== -1) {
			var words = sanitize(raw).split(" ")
			var parsed = []
			for (var i = 0; i < words.length; i++) {
				if (words[i].indexOf("http") === 0) {
					parsed.push ("<a href='"+words[i]+"' target='_blank'>"+words[i]+"</a>")
				}
				else {
					parsed.push (words[i])
				}
			}
			return parsed.join(" ");
		}
		return sanitize(raw);
	},
	
	add: function (msg) {
		var klass = msg.nick == Game.nick ? "you" : "";
		var html = "<p><span class='nick " + klass + "'>"+msg.nick+"</span><span class='msg'>"+Chat.parse(msg.body)+"</span></p>";
		$("#chat").append( html );
		if ($("#chat p").length > 50) {
			$("#chat").first().remove();
		}
		scrollToBottom("#chat");
	}
}