blob: 769922f583dd52ef6f39ece1bd74ab7559280335 [file] [log] [blame]
// This script should be included at the END of the document.
// For the fastest loading it does not inlude $(document).ready()
// This Document contains a few helper functions for the documentation to display the current version,
// collapse and expand the menu etc.
// Function to make the sticky header possible
function shiftWindow() {
scrollBy(0, -70);
console.log("window shifted")
}
window.addEventListener("hashchange", shiftWindow);
function loadShift() {
if (window.location.hash) {
console.log("window has hash");
shiftWindow();
}
}
$(window).load(function() {
loadShift();
});
$(function(){
// sidebar accordian-ing
// don't apply on last object (it should be the FAQ) or the first (it should be introduction)
// define an array to which all opened items should be added
var openmenus = [];
var elements = $('.toctree-l2');
// for (var i = 0; i < elements.length; i += 1) { var current = $(elements[i]); current.children('ul').hide();}
// set initial collapsed state
var elements = $('.toctree-l1');
for (var i = 0; i < elements.length; i += 1) {
var current = $(elements[i]);
if (current.hasClass('current')) {
current.addClass('open');
currentlink = current.children('a')[0].href;
openmenus.push(currentlink);
// do nothing
} else {
// collapse children
current.children('ul').hide();
}
}
if (doc_version == "") {
$('.version-flyer ul').html('<li class="alternative active-slug"><a href="" title="Switch to local">Local</a></li>');
}
// mark the active documentation in the version widget
$(".version-flyer a:contains('" + doc_version + "')").parent().addClass('active-slug');
// attached handler on click
// Do not attach to first element or last (intro, faq) so that
// first and last link directly instead of accordian
$('.sidebar > ul > li > a').not(':last').not(':first').click(function(){
var index = $.inArray(this.href, openmenus)
if (index > -1) {
console.log(index);
openmenus.splice(index, 1);
$(this).parent().children('ul').slideUp(200, function() {
$(this).parent().removeClass('open'); // toggle after effect
});
}
else {
openmenus.push(this.href);
var current = $(this);
setTimeout(function() {
// $('.sidebar > ul > li').removeClass('current');
current.parent().addClass('current').addClass('open'); // toggle before effect
current.parent().children('ul').hide();
current.parent().children('ul').slideDown(200);
}, 100);
}
return false;
});
// add class to all those which have children
$('.sidebar > ul > li').not(':last').not(':first').addClass('has-children');
});