<script type="text/javascript"><!--//--><![CDATA[//><!--
var servers = ['chkno.net', 'rc2.chkno.net', 'echto.net', 'the-wes.com', 'vibrantlogic.com'];
- var session = Math.random();
- var since = {};
- var seen = {};
+ var session = Math.random(); // For outgoing message IDs
+ var since = {}; // server -> time: For fetch?since=
+ var seen = {}; // seen_key -> true
function rcnick() {
var nick = localStorage.getItem("nick");
}
}
+ function rcformattime(t) {
+ var d = t.getDay();
+ d = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][d];
+ var h = t.getHours();
+ var m = t.getMinutes();
+ var s = t.getSeconds();
+ function pad(x) {
+ return (x < 10 ? "0" : "") + x;
+ }
+ return d + " " + pad(h) + ":" + pad(m) + ":" + pad(s);
+ }
+
function rcaddmessagetohistory(message) {
var d = document.createElement("div");
- d.appendChild(document.createTextNode(message));
+ var text = (message.Time ? rcformattime(message.Time) : "") + " " + message.Text;
+ d.appendChild(document.createTextNode(text));
var h = document.getElementById("history");
h.appendChild(d);
window.scrollTo(0, document.body.scrollHeight);
function rcreceivemessages(server, messages) {
for (var i in messages) {
- var seen_key = make_seen_key(messages[i]['ID'], messages[i]['Text']);
+ var m = messages[i];
+ m.Time = new Date(m.Time);
+ var seen_key = make_seen_key(m.ID, m.Text);
if (!(seen_key in seen)) {
seen[seen_key] = true;
- rcaddmessagetohistory(messages[i]['Text']);
+ rcaddmessagetohistory(m);
for (var i in servers) {
rcchangeserverstatus(servers[i], "sad");
}
if (rtxt != null) {
var messages = JSON.parse(rtxt);
if (messages != null) {
- rcreceivemessages(server, messages);
delay = 40;
if (messages.length >= 1 && "Time" in messages[messages.length-1]) {
- since[server] = messages[messages.length-1]["Time"];
+ since[server] = messages[messages.length-1].Time;
}
+ rcreceivemessages(server, messages);
}
}
}
message = "<" + rcnick() + "> " + input;
}
- var d = rcaddmessagetohistory(message);
+ var d = rcaddmessagetohistory({'Text': message});
rcsend(d, message);
}