if(window.checkLinksToCitations === undefined)
    window.checkLinksToCitations = true;

jQuery(document).ready(function($) {
    // first check: do links in Harvard citations point to a valid citation?
    links = document.links;
    for (i=0; i < links.length; i++)
    {
        href = links.getAttribute('href');
        if (href.indexOf('#CITEREF') === 0)
            if (document.getElementById(href.substring(1)) === null)
                links.parentNode.innerHTML +=
                    " <span class=error>Harv error: link from <code>" +
                    href +
                    "</code> doesn't point to any citation.</span>"; 
    }

    // second check: do CITEREF IDs have Harvard citations pointing to them?
    if(window.checkLinksToCitations) {
        cites = jQuery('.citation');
        for(i=0; i < cites.length; i++) {
            id = cites.getAttribute('id');
            // we only need to check citations with a
            if(!id || id.indexOf('CITEREF') !== 0)
                continue;
            // don't do cites that are inside a ref
            parentid = cites.parentNode.parentNode.getAttribute('id');
            if(parentid && parentid.indexOf('cite_note') === 0)
                continue;
            // check for links to this citation
            query = 'a';
            if(jQuery(query).length === 0) {
                cites.innerHTML +=
                    " <span class=error>Harv error: This citation has an anchor named <code>" + id + "</code> but there is no link to it.</span>";
            }
        }
    }
});