From 0248a518996a6bf532cd4d91e8bcab8dde60cee1 Mon Sep 17 00:00:00 2001 From: Scott Worley Date: Sun, 29 Jul 2012 23:32:04 -0700 Subject: [PATCH 1/1] Move javascript and css into the html file. --- webclient/rc.css | 9 --- webclient/rc.html | 151 +++++++++++++++++++++++++++++++++++++++++++++- webclient/rc.js | 135 ----------------------------------------- 3 files changed, 149 insertions(+), 146 deletions(-) delete mode 100644 webclient/rc.css delete mode 100644 webclient/rc.js diff --git a/webclient/rc.css b/webclient/rc.css deleted file mode 100644 index 9459fa8..0000000 --- a/webclient/rc.css +++ /dev/null @@ -1,9 +0,0 @@ -html, body, #outer-table, #history { width: 99.9%; height: 100%; margin: 0; padding: 0 } -#status { background-color: #eef } -#say { width: 100% } -#history { vertical-align: bottom } -img { width: 1px; height: 1px; } -iframe { display: none } -#status span { margin-right: 2em } -#status span.sad { background-color: #fee } -#status span.happy { background-color: #efe } diff --git a/webclient/rc.html b/webclient/rc.html index 7430f3e..a896281 100644 --- a/webclient/rc.html +++ b/webclient/rc.html @@ -4,8 +4,155 @@ Reliable Chat - - + + + diff --git a/webclient/rc.js b/webclient/rc.js deleted file mode 100644 index 29b762e..0000000 --- a/webclient/rc.js +++ /dev/null @@ -1,135 +0,0 @@ -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); - } -} -- 2.44.1