     (rel-url book-id chap-num chap-cnt)))
 
 (defn toc-book [b]
-  [:p.tocp {:id (book-elem-id (:id b))}
+  [:p.tocp {:id (str "_" (book-elem-id (:id b)))}
     [:span.chapter (book-name (:id b))]
     " "
     (->> (:chapters b)


(defn js []
"// NOTE: Experimental
document.lastElem = null;

function RemoveHilite(el) {
    if(el) {

    }
}

function FindElem(id)
{
    return id === null ? null : document.getElementById(id);
}

function SetHilight()
{
    var el;
    el = FindElem(lastElem);
    RemoveHilite(el);

    var id = '_' + window.location.hash.substr(1);
    el = FindElem(id);
    if(el) {
        lastElem = id;
        AddHilite(el);
    } else {
        lastElem = null;
    }
}

function CenterElem(el)
{
    if(el) {
        var elRect = el.getBoundingClientRect(),
            elHeight = elRect.bottom - elRect.top,
            docEl = document.documentElement,
            newY = window.scrollY +
                   elRect.top -
                   (docEl.clientHeight - elHeight) / 2;
        window.scrollTo(window.scrollX, newY);
    }
}

window.addEventListener('hashchange', function(e) {
  SetHilight();
});

window.addEventListener('load', function() {
  SetHilight();
  window.setTimeout(function() { CenterElem(FindElem(lastElem)); }, 1);
});

})(document, window);

// Google Analytics
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
