/* Magical footnote re-arranger */

Event.onReady(function () {
    /* Tag links so that they get some :hover lovin' */
    $$('a').each(function (e) {
        if (e.getAttribute('href')) {
            e.addClassName('link');
        }
    });
    
    $$('.footnote').each(function (footnote) {
        footnote.cleanWhitespace();
        
        var anchor = '#' + footnote.firstChild.getAttribute('name');
        var footref = $$('.footref').find(function (e) {
            return e.getAttribute('href') == anchor;
        });

        /* Be safe in case reference-less footnotes */
        if (footref) {
            var parent = $(footref.parentNode);
            var holder = $(parent.previousSibling);
            var tag = holder.tagName;
            
            if (tag) {
                tag = tag.toLowerCase();
            }

            /* Create the <div/> if it doesn't yet exist */
            if (!(tag == "div" && holder.hasClassName('sidebar'))) {
                holder = document.createElement('div');
                holder.addClassName('sidebar');
                parent.parentNode.insertBefore(holder, parent); 
            }
            
            footnote.remove();
            holder.appendChild(footnote);
        }
    });
});
