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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
function escapeHTML( html ) {
var trans = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
};
return (html + '').replace(/[&<>\"\']/g, function(c) { return trans[c]; });
}
function setUsers(users) {
// ignored for now
}
function addUser(user) {
// ignored for now
}
function removeUser(user) {
// ignored for now
}
function handlekeys(field, state, e)
{
var keycode;
if (window.event) {
keycode = window.event.keyCode;
} else if (e) {
keycode = e.which;
} else {
return true;
}
if (keycode == 13) {
state.handle('SEND');
return false;
} else {
return true;
}
}
function addMessage(text) {
var div = document.createElement("div");
div.innerHTML = text;
var cl = document.getElementById("chatlog");
cl.appendChild(div);
div.scrollIntoView();
}
state = new FSM({
start: function(fsm, event) {
var user = prompt('What is your nick?', 'lamenick');
fsm.messages = {};
fsm.trans('connecting');
Chat.init(user, fsm);
},
connecting: {
CONNECT: function(fsm, event) {
addMessage('<em>Connected to Mongrel2.org chat demo.</em>');
Chat.socket.send({'type': 'join', 'user': Chat.user});
fsm.trans('connected');
},
},
connected: {
MSG: function(fsm, event) {
addMessage('<b>[ ' + escapeHTML(event.user) + ' ]</b> ' + escapeHTML(event.msg));
},
JOIN: function(fsm, event) {
if(event.user) {
addMessage('<em><b>' + escapeHTML(event.user) + '</b> joined chat.</em>');
addUser(event.user);
}
},
DISCONNECT: function(fsm, event) {
if(event.user) {
addMessage('<em><b>' + escapeHTML(event.user) + '</b> left chat.</em>');
removeUser(event.user);
}
},
USERLIST: function(fsm, event) {
addMessage('<em><b>MEMBERS: </b><em>' + escapeHTML(event.users) + '</em>');
},
CLOSE: function(fsm, event) {
addMessage('<em>Well, looks like Mongrel2 crashed or your internet did.</em>');
fsm.trans('connecting');
},
SEND: function(fsm, event) {
var input = document.getElementById("msginput");
Chat.send(input.value);
input.value = '';
}
}
});
|