keys: separate method to format key letters
[sheet.git] / keys.js
diff --git a/keys.js b/keys.js
index 5dc2e2d2979d8027800055af47aa093c2d382fcc..eca77e5d930adbf82acbaf67b0b7aae6bfce8864 100644 (file)
--- a/keys.js
+++ b/keys.js
@@ -1,4 +1,6 @@
-function setmode(classname) {
+var basetitle = document.title;
+
+function setmode(classname, restore) {
        // set style for each #rows>li>ul>li to display:none unless it matches classname
        var showclass = classname ? '^mode '+classname+'(?!\\w)' : '^(?!mode)';
        var rows = document.getElementById('rows').getElementsByTagName('TR');
@@ -13,10 +15,20 @@ function setmode(classname) {
                if (h3s[i].parentNode.style.display != 'block') continue;
                var header = h3s[i].firstChild.data;
                document.getElementsByTagName('H2')[0].innerHTML = header;
+               document.title = basetitle + ': ' + header;
+               if (restore) break;
+               history.pushState(null, header, classname ? '#'+classname : '#');
                break;
        }
 }
 
+window.addEventListener('hashchange', function(e) {
+       setmode(location.hash.slice(1), true);
+});
+if (location.hash) {
+       setmode(location.hash.slice(1), true);
+}
+
 var keyfocus = undefined;
 document.onkeypress = function(e) {
        var keylabels = document.getElementById('rows').getElementsByTagName('B');