]> git.scottworley.com Git - reliable-chat/blobdiff - webclient/rc.html
Link to the project homepage
[reliable-chat] / webclient / rc.html
index d91d3a611c9e069c26ad1c2746dd0d46da63a3d3..7ace5f63d5690048d59e404dbf5813ea88a952fa 100644 (file)
@@ -31,6 +31,9 @@
                color: silver;
                font-family: monospace;
        }
+       a {
+               color: white;
+       }
        #container {
                height: 100%;
        }
                padding: 0px 5px 55px 5px;
                vertical-align: bottom
        }
+       .banner {
+               font-size: 85%;
+               text-align: right;
+       }
        .servercount {
                margin-right: 0.5em;
                font-size: 70%;
                }
        }
 
+       function rcpad2(x) {
+               return (x < 10 ? "0" : "") + x;
+       }
+       function rcpad3(x) {
+               return (x < 10 ? "00" : (x < 100 ? "0" : "")) + x;
+       }
+
        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);
+               return d + " " + rcpad2(h) + ":" + rcpad2(m) + ":" + rcpad2(s);
        }
 
        function rcaddservertimestamptohover(message, server) {
                var divs = message.UI.getElementsByTagName("div");
+               var t = message.ServerTimes[server];
                for (var i in divs) {
                        if (divs[i].getAttribute && divs[i].getAttribute("class") == "servertimestamps") {
                                var d = document.createElement("div");
-                               function pad(x) {
-                                       return (x < 10 ? "00" : (x < 100 ? "0" : "")) + x;
-                               }
-                               var text = rcformattime(message.ServerTimes[server]) + "." + pad(message.ServerTimes[server].getUTCMilliseconds()) + " " + server;
+                               var text = t.getFullYear() + "-" +
+                                       rcpad2(t.getMonth()) + "-" +
+                                       rcpad2(t.getDay()) + " " +
+                                       rcformattime(t) + "." +
+                                       rcpad3(t.getMilliseconds()) + " " +
+                                       server;
                                d.appendChild(document.createTextNode(text));
                                divs[i].appendChild(d);
                        }
                        type += " self";
                }
                text_span.setAttribute("class", type);
-               text_span.appendChild(document.createTextNode(message.Text));
+
+               // URL detection
+               var text = message.Text;
+               var URL_re = /\bhttps?:\/\/\S+/;
+               while (URL_re.test(text)) {
+                       var match = URL_re.exec(text);
+                       var leading_text = text.substr(0, match.index);
+                       if (leading_text) {
+                               text_span.appendChild(document.createTextNode(leading_text));
+                       }
+                       var anchor = document.createElement("a");
+                       anchor.setAttribute("rel", "nofollow");
+                       anchor.setAttribute("href", encodeURI(match[0]));
+                       anchor.appendChild(document.createTextNode(match[0]));
+                       text_span.appendChild(anchor);
+                       text = text.substr(match.index + match[0].length);
+               }
+               if (text) {
+                       text_span.appendChild(document.createTextNode(text));
+               }
+
                message.UI.appendChild(text_span);
        }
 
 
 <body onload="rcconnect()">
        <div id="container">
+               <div class="banner">(You are using <a href="https://github.com/chkno/reliable-chat">Reliable Chat</a>)</div>
                <div id="history"></div>
                <div id="client">
                        <div id="input">