+++ /dev/null
-var servers = ['chkno.net', 'rc2.chkno.net', 'echto.net', 'the-wes.com', 'vibrantlogic.com'];
-
-var session = Math.random();
-var seen = {};
-
-function rcnick() {
- var nick = localStorage.getItem("nick");
- if (nick) {
- return nick;
- }
- return 'anonymous';
-}
-
-function rcsetnick(new_nick) {
- localStorage.setItem("nick", new_nick);
-}
-
-function rcserverbase(server) {
- // Add the default port if server doesn't contain a port number already
- if (server.indexOf(":") == -1) {
- return "http://" + server + ":21059";
- } else {
- return "http://" + server;
- }
-}
-
-function rcchangeserverstatus(server, new_status) {
- var statusbar = document.getElementById("status");
- var spans = statusbar.getElementsByTagName("span");
- for (var i in spans) {
- if (spans[i].firstChild && 'data' in spans[i].firstChild && spans[i].firstChild.data == server) {
- spans[i].setAttribute("class", new_status);
- }
- }
-}
-
-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);
- for (var i in servers) {
- rcchangeserverstatus(servers[i], "sad");
- }
- }
- rcchangeserverstatus(server, "happy");
-}
-
-function receiveMessageEvent(event)
-{
- for (var i in servers) {
- if (event.origin === rcserverbase(servers[i])) {
- messages = JSON.parse(event.data);
- for (var 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 (var 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);
- // Status bar entry
- var status_indicator = document.createElement("span");
- status_indicator.appendChild(document.createTextNode(servers[i]));
- status_indicator.setAttribute("class", "sad");
- document.getElementById("status").appendChild(status_indicator);
- }
- if (rcnick() == 'anonymous') {
- rcaddmessagetohistory("-!- Set your nick with /nick");
- }
-}
-
-function rcsend(d, message) {
- var id = new Date().getTime() + "-" + session + "-" + Math.random();
- seen[make_seen_key(id, message)] = true;
- var path = "/speak" +
- "?id=" + encodeURIComponent(id) +
- "&text=" + encodeURIComponent(message);
- for (var i in servers) {
- var uri = rcserverbase(servers[i]) + path;
- var img = document.createElement("img");
- img.setAttribute("src", uri);
- d.appendChild(img);
- }
-}
-
-function rckeydown(event) {
- if (event.keyCode == 13) {
- var input = document.input.say.value;
- document.input.say.value = "";
-
- // Check nick change
- var message;
- var re = /^\/nick (.*)/;
- var match = re.exec(input);
- if (match) {
- message = "*** " + rcnick() + " is now known as " + match[1];
- rcsetnick(match[1]);
- } else {
- message = "<" + rcnick() + "> " + input;
- }
-
- // Remind people to set their nick
- if (rcnick() == 'anonymous') {
- rcaddmessagetohistory("-!- Set your nick with /nick");
- }
-
- // Say the message
- var d = rcaddmessagetohistory(message);
- rcsend(d, message);
- }
-}