/*! jquery.tocify - v1.9.0 - 2013-10-01
* http://gregfranko.com/jquery.tocify.js/
* Copyright (c) 2013 Greg Franko; Licensed MIT*/
!function(){"use strict";var a,l,h,o,s,n,r,i,d,c;a=window.jQuery,l=window,h=document,s="."+(o="tocify-header"),r="."+(n="tocify-subheader"),d="."+(i="tocify-item"),c="tocify-extend-page",a.widget("toc.tocify",{version:"1.9.0",options:{context:"body",ignoreSelector:null,selectors:"h1, h2, h3",showAndHide:!0,showEffect:"slideDown",showEffectSpeed:"medium",hideEffect:"slideUp",hideEffectSpeed:"medium",smoothScroll:!0,smoothScrollSpeed:"medium",scrollTo:0,showAndHideOnScroll:!0,highlightOnScroll:!0,highlightOffset:40,theme:"bootstrap",extendPage:!0,extendPageOffset:100,history:!0,scrollHistory:!1,hashGenerator:"compact",highlightDefault:!0},_create:function(){var e=this;e.extendPageScroll=!0,e.items=[],e._generateToc(),e._addCSSClasses(),e.webkit=function(){for(var e in l)if(e&&-1!==e.toLowerCase().indexOf("webkit"))return!0;return!1}(),e._setEventHandlers(),a(l).load(function(){e._setActiveElement(!0),a("html, body").promise().done(function(){setTimeout(function(){e.extendPageScroll=!1},0)})})},_generateToc:function(){var t,s=this,i=s.options.ignoreSelector,e=-1!==this.options.selectors.indexOf(",")?a(this.options.context).find(this.options.selectors.replace(/ /g,"").substr(0,this.options.selectors.indexOf(","))):a(this.options.context).find(this.options.selectors.replace(/ /g,""));return e.length?(s.element.addClass("tocify"),void e.each(function(e){a(this).is(i)||(t=a("
",{id:o+e,class:o}).append(s._nestElements(a(this),e)),s.element.append(t),a(this).nextUntil(this.nodeName.toLowerCase()).each(function(){(0===a(this).find(s.options.selectors).length?a(this).filter(s.options.selectors):a(this).find(s.options.selectors)).each(function(){a(this).is(i)||s._appendSubheaders.call(this,s,t)})}))})):void s.element.addClass("tocify-hide")},_setActiveElement:function(e){var t=this,s=l.location.hash.substring(1),i=t.element.find('li[data-unique="'+s+'"]');return s.length?(t.element.find("."+t.focusClass).removeClass(t.focusClass),i.addClass(t.focusClass),t.options.showAndHide&&i.click()):(t.element.find("."+t.focusClass).removeClass(t.focusClass),!s.length&&e&&t.options.highlightDefault&&t.element.find(d).first().addClass(t.focusClass)),t},_nestElements:function(t,e){var s=a.grep(this.items,function(e){return e===t.text()});return s.length?this.items.push(t.text()+e):this.items.push(t.text()),s=this._generateHashValue(s,t,e),e=a("",{class:i,"data-unique":s}).append(a("",{text:t.text()})),t.before(a("",{name:s,"data-unique":s})),e},_generateHashValue:function(e,t,s){var i="",o=this.options.hashGenerator;if("pretty"===o){for(i=t.text().toLowerCase().replace(/\s/g,"-");-1",{class:n,"data-tag":o})).next(r).append(e._nestElements(a(this),s))},_setEventHandlers:function(){var n=this;this.element.on("click.tocify","li",function(){var e;n.options.history&&(l.location.hash=a(this).attr("data-unique")),n.element.find("."+n.focusClass).removeClass(n.focusClass),a(this).addClass(n.focusClass),n.options.showAndHide&&(e=a('li[data-unique="'+a(this).attr("data-unique")+'"]'),n._triggerShow(e)),n._scrollTo(a(this))}),this.element.find("li").on({"mouseenter.tocify":function(){a(this).addClass(n.hoverClass),a(this).css("cursor","pointer")},"mouseleave.tocify":function(){"bootstrap"!==n.options.theme&&a(this).removeClass(n.hoverClass)}}),(n.options.extendPage||n.options.highlightOnScroll||n.options.scrollHistory||n.options.showAndHideOnScroll)&&a(l).on("scroll.tocify",function(){a("html, body").promise().done(function(){var t,o=a(l).scrollTop(),e=a(l).height(),s=a(h).height(),i=a("body")[0].scrollHeight;if(n.options.extendPage&&(n.webkit&&o>=i-e-n.options.extendPageOffset||!n.webkit&&e+o>s-n.options.extendPageOffset)&&!a(".tocify-extend-page").length){if(!(i=a('div[data-unique="'+a(d).last().attr("data-unique")+'"]')).length)return;e=i.offset().top,a(n.options.context).append(a("",{class:c,height:Math.abs(e-o)+"px","data-unique":c})),n.extendPageScroll&&(s=n.element.find("li.active"),n._scrollTo(a('div[data-unique="'+s.attr("data-unique")+'"]')))}setTimeout(function(){var s=null,i=null,e=a(n.options.context).find("div[data-unique]");e.each(function(e){var t=Math.abs((a(this).next().length?a(this).next():a(this)).offset().top-o-n.options.highlightOffset);return(null==s||t