(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 scrollTo = function (e){ if (opts.smoothScrolling) { e.preventDefault(); var elScrollTo = $(_AN_Read_target('target', e)).attr('href'); var $el = $(elScrollTo); $('body,html').animate({ scrollTop: $el.offset().top} , 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); highlighted = $('li:eq(' + (i - 1) + ')', self).addClass(activeClassName); opts.onHighlight(highlighted); break ; } } } , 50); } ; if (opts.highlightOnScroll) { $(window).bind('scroll', highlightOnScroll); highlightOnScroll(); } var tocList; var treeObject = { } ; var createTree = function (ul){ var prevLevel = { level: -1, index: -1, parent: -1, val: ''} ; var levelParent = { 0: -1} ; tocList = ul.children("li"); tocList.each(function (i){ var me = $(this).removeClass("toc-active"); var currentLevel = parseInt(me.attr('class').trim().slice(-1)); if (currentLevel > prevLevel.level) { currentParent = prevLevel.index; } else if (currentLevel == prevLevel.level) { currentParent = prevLevel.parent; } else if (currentLevel < prevLevel.level) { currentParent = levelParent[currentLevel] || prevLevel.parent; } levelParent[currentLevel] = currentParent; var currentVal = $('a', this).text().trim().toLowerCase(); treeObject[i] = { val: currentVal, level: currentLevel, parent: currentParent} ; prevLevel = { index: i, val: currentVal, level: currentLevel, parent: currentParent} ; } ); } ; var showParents = function (key){ var me = treeObject[key]; if (me.parent > -1) { _AN_Call_show('show', $(tocList[me.parent])); showParents(me.parent); } } ; var search = function (searchVal){ searchVal = searchVal.trim().toLowerCase(); for (var key in treeObject){ var me = treeObject[key]; if (me.val.indexOf(searchVal) !== -1 || _AN_Read_length('length', searchVal) == 0) { _AN_Call_show('show', $(tocList[key])); if ($(tocList[me.parent]).is(":hidden")) { showParents(key); } } else { $(tocList[key]).hide(); } } } ; return this.each(function (){ var el = $(this); var searchVal = ''; var searchForm = $("
", { class: "form-search quick-search"} ).append($("", { type: "text", class: "input-medium search-query", placeholder: "Quick Search"} )).append($("", { class: "icon icon-search search-icon"} )); searchForm.css({ 'position': 'fixed', 'top': '45px', 'padding-right': '20px'} ); $(".search-icon", searchForm).css({ 'marginLeft': '-20px', 'marginTop': '3px'} ); var ul = $('