From 00f57cfe2f323c4cc30d5d87486eaa5bcc56bd1a Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Fri, 16 Sep 2016 01:43:17 +0200
Subject: [PATCH] Added sender colors and fixed a tiny bug

---
 res/search.css |  2 +-
 res/search.js  | 68 +++++++++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 66 insertions(+), 4 deletions(-)

diff --git a/res/search.css b/res/search.css
index 636a0d8..bcbb152 100644
--- a/res/search.css
+++ b/res/search.css
@@ -68,7 +68,7 @@ message sender {
 }
 
 message time {
-    width: 148px;
+    width: 180px;
     display: inline-block;
     padding: 0 24px;
     text-align: right;
diff --git a/res/search.js b/res/search.js
index 46c0db2..2416f74 100644
--- a/res/search.js
+++ b/res/search.js
@@ -22,7 +22,7 @@ var wrap_click_handler = function (fun) {
         var sel = getSelection().toString();
         if (sel) {
             event.stopPropagation();
-        } else {
+        } else if (fun) {
             fun(event);
         }
     }
@@ -61,7 +61,68 @@ $("#q").blur(function () {
 });
 
 var sendercolor = function (nick) {
-    return "";
+    var sendercolors = [
+        "#e90d7f",
+        "#8e55e9",
+        "#b30e0e",
+        "#17b339",
+        "#58afb3",
+        "#9d54b3",
+        "#b39775",
+        "#3176b3",
+        "#e90d7f",
+        "#8e55e9",
+        "#b30e0e",
+        "#17b339",
+        "#58afb3",
+        "#9d54b3",
+        "#b39775",
+        "#3176b3"
+    ];
+
+    var reflect = function(crc, n) {
+        var j = 1, crcout = 0;
+        for (var i = (1 << (n - 1)); i > 0; i >>= 1) {
+            if ((crc & i) > 0) {
+                crcout |= j;
+            }
+            j <<= 1;
+        }
+        return crcout;
+    };
+
+    var qChecksum = function(str) {
+        var crc = 0xffff;
+        var crcHighBitMask = 0x8000;
+
+        for (var i = 0; i < str.length; i++) {
+            var b = str.codePointAt(i);
+            var c = reflect(b, 8);
+            for (var j = 0x80; j > 0; j >>= 1) {
+                var highBit = crc & crcHighBitMask;
+                crc <<= 1;
+                if ((c & j) > 0) {
+                    highBit ^= crcHighBitMask;
+                }
+                if (highBit > 0) {
+                    crc ^= 0x1021;
+                }
+            }
+        }
+
+        crc = reflect(crc, 16);
+        crc ^= 0xffff;
+        crc &= 0xffff;
+
+        return crc;
+    };
+
+    var senderIndex = function (str) {
+        var nickToHash = nick.replace(/_*$/, "").toLowerCase();
+        return qChecksum(str) & 0xF;
+    };
+
+    return sendercolors[senderIndex(nick)];
 };
 
 var render_buffer_full = function (buffer) {
@@ -164,7 +225,8 @@ var attach_context = function (elem) {
     elem.unbind();
     var id = elem.data("contextid");
     var bufferid = elem.data("bufferid");
-    elem.click(wrap_click_handler(make_toggle_context(bufferid, id)));
+    elem.click(wrap_click_handler(function (e) {e.stopPropagation(); }));
+    $("#message"+buffers[bufferid].contexts[id].original.messageid).click(wrap_click_handler(make_toggle_context(bufferid, id)));
     elem.find(".load_before").click(wrap_click_handler(function (e) {
         earlier(bufferid, id, 5);
         e.stopPropagation();
-- 
GitLab