// create toc from contents to target.
// # dependency
// -   jquery
// # how to use
//     <script>
//     $(function() { createToc('#contents', '#toc'); });
//     </script>
//     <div id='toc'></div>
//     <div id='contents> <h1>...</h1></h2>...</h2>...</div>
var createToc = function(contents_selector, target_selector){
    var prePos = 0;
    var numOfSections = new Array();
    var parent = $('<div>');
    var toc = parent;
    var ul = null;
    $(contents_selector).find(':header').each(function(){
        var position = parseInt(this.nodeName.charAt(1));
        if (prePos < position) {
            numOfSections[position - 1] = 1;
            prePos = position;
            
            ul = $('<ul>');
            parent.append(ul);
        } else if ( prePos == position ) {
            numOfSections[position - 1] += 1;
        } else if (prePos > position){
            var gapPosition = prePos - position;
            numOfSections[position - 1] += 1;
            prePos = position;
            
            for (var i=0; i<gapPosition; i++) {
                parent = $(ul.parent().get(0));
                ul = $(parent.parent().get(0));
            }
        }
        var secName = '';
        var title = '';
        for (var i=0; i<position; i++) {
            var sec = numOfSections[i];
            title +=(sec + '.');
            secName += (sec + '_');
        }
        title += ( ' ' + $(this).text() );
        $(this).html('<a name="s'+ secName + '">' + title + '</a>');
        
        var li = $('<li><a href="#s' + secName + '">' + title + '</a></li>');
        ul.append(li);
        parent = li;
    });
    $(target_selector).replaceWith(toc);
}