+ return "http://" + server;
+ }
+}
+
+function rcaddmessagetohistory(message) {
+ var d = document.createElement("div");
+ d.appendChild(document.createTextNode(message));
+ var h = document.getElementById("history");
+ h.appendChild(d);
+ window.scrollTo(0, document.body.scrollHeight);
+ return d;
+}
+
+function make_seen_key(id, text) {
+ return id.replace(/@/g, "@@") + "_@_" + text.replace(/@/g, "@@");
+}
+
+function receiveMessage(server, time, id, text) {
+ var seen_key = make_seen_key(id, text);
+ if (!(seen_key in seen)) {
+ seen[seen_key] = true;
+ rcaddmessagetohistory(text);
+ }
+}
+
+function receiveMessageEvent(event)
+{
+ for (i in servers) {
+ if (event.origin === rcserverbase(servers[i])) {
+ messages = JSON.parse(event.data);
+ for (j in messages) {
+ if ('Time' in messages[j] &&
+ 'ID' in messages[j] &&
+ 'Text' in messages[j]) {
+ receiveMessage(servers[i], messages[j]['Time'], messages[j]['ID'], messages[j]['Text']);
+ }
+ }
+ }
+ }
+}
+
+function rcconnect() {
+ window.addEventListener("message", receiveMessageEvent, false);
+ for (i in servers) {
+ // Create a hidden iframe for same-origin workaround
+ var iframe = document.createElement("iframe");
+ iframe.setAttribute("src", rcserverbase(servers[i]) + "/frame");
+ document.body.insertBefore(iframe, document.body.firstChild);