(function ($){ $.fn.toc = function (options){ var self = this; var opts = $.extend({ } , jQuery.fn.toc.defaults, options); var container = $(opts.container); var headings = $(opts.selectors, container); var headingOffsets = [] ; var activeClassName = opts.prefix + '-active'; var navbarHeight = $('.navbar').height(); var scrollTo = function (e){ if (opts.smoothScrolling) { e.preventDefault(); var elScrollTo = $(_AN_Read_target('target', e)).attr('href'); var $el = $(elScrollTo); var offsetTop = $el.offset().top - navbarHeight; $('body,html').animate({ scrollTop: offsetTop} , 400, 'swing', function (){ _AN_Write_hash('hash', _AN_Read_location('location', window), false , elScrollTo); } ); } $('li', self).removeClass(activeClassName); $(_AN_Read_target('target', e)).parent().addClass(activeClassName); } ; var timeout; var highlightOnScroll = function (e){ if (timeout) { clearTimeout(timeout); } timeout = _AN_Call_settimeout('setTimeout', window, function (){ var top = $(window).scrollTop(), highlighted; for (var i = 0, c = _AN_Read_length('length', headingOffsets); i < c; i++ ){ if (headingOffsets[i] >= top) { $('li', self).removeClass(activeClassName); if (i > 0) { highlighted = $('li:eq(' + (i - 1) + ')', self).addClass(activeClassName); opts.onHighlight(highlighted); } break ; } } } , 50); } ; if (opts.highlightOnScroll) { $(window).bind('scroll', highlightOnScroll); highlightOnScroll(); } return this.each(function (){ var el = $(this); var ul = $('