]> git.scottworley.com Git - reliable-chat/blobdiff - webclient/rc.js
More "var" in variable declarations.
[reliable-chat] / webclient / rc.js
index 6dc527e724ee1dcb4389a65f0eb7b098634267a5..29b762ef655c8a2b87f2b0b72a0eff31fe646bde 100644 (file)
@@ -1,8 +1,20 @@
-var servers = ['chkno.net', 'localhost'];
+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) {
@@ -12,6 +24,16 @@ function rcserverbase(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));
@@ -30,15 +52,19 @@ function receiveMessage(server, time, 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 (i in servers) {
+       for (var i in servers) {
                if (event.origin === rcserverbase(servers[i])) {
                        messages = JSON.parse(event.data);
-                       for (j in messages) {
+                       for (var j in messages) {
                                if ('Time' in messages[j] &&
                                    'ID'   in messages[j] &&
                                    'Text' in messages[j]) {
@@ -51,11 +77,19 @@ function receiveMessageEvent(event)
 
 function rcconnect() {
        window.addEventListener("message", receiveMessageEvent, false);  
-       for (i in servers) {
+       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");
        }
 }
 
@@ -65,7 +99,7 @@ function rcsend(d, message) {
        var path = "/speak" +
                "?id=" + encodeURIComponent(id) +
                "&text=" + encodeURIComponent(message);
-       for (i in servers) {
+       for (var i in servers) {
                var uri = rcserverbase(servers[i]) + path;
                var img = document.createElement("img");
                img.setAttribute("src", uri);
@@ -75,9 +109,27 @@ function rcsend(d, message) {
 
 function rckeydown(event) {
        if (event.keyCode == 13) {
-               var d = rcaddmessagetohistory(document.input.say.value);
-               rcsend(d, document.input.say.value);
+               var input = document.input.say.value;
                document.input.say.value = "";
-               return false;
+               
+               // 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);
        }
 }