var _selectedNodeIndex = -1;
var _tocNodeCount = -1
function moveToNextNode(ignoreHeadingNodes) {
return _moveNode(false, ignoreHeadingNodes);
}
function moveToPreviousNode(ignoreHeadingNodes) {
return _moveNode(true, ignoreHeadingNodes);
}
function getNodeByHref(href) {
return _getAnchors().filter(function () {
return $(this).attr("href") == href;
}).first();
}
function getSelectedNode() {
return _getAnchors().filter(function () {
return $(this).attr("data-node-index") == _selectedNodeIndex;
}).first();
}
function setSelectedNode(anchor) {
_selectedNodeIndex = parseInt(anchor.attr("data-node-index"));
}
function isLastNodeSelected() {
if (_tocNodeCount == -1) {
_tocNodeCount = _getAnchors().length;
}
return _selectedNodeIndex == _tocNodeCount - 1;
}
function isFirstNodeSelected() {
return _selectedNodeIndex == 0;
}
function _getAnchors() {
return $('div#container > ul#root a[data-node-index]');
}
function _moveNode(isPrevious, ignoreHeadingNodes) {
var anchors = _getAnchors();
if (isPrevious) {
if (_selectedNodeIndex > 0) {
if (ignoreHeadingNodes) {
do {
_selectedNodeIndex--;
} while (anchors.eq(_selectedNodeIndex).attr("href").substring(0, 1) == "#" && _selectedNodeIndex > 0);
}
else {
_selectedNodeIndex--;
}
}
}
else {
if (anchors.length - 1 > _selectedNodeIndex) {
if (ignoreHeadingNodes) {
do {
_selectedNodeIndex++;
} while (anchors.eq(_selectedNodeIndex).attr("href").substring(0, 1) == "#" && anchors.length - 1 > _selectedNodeIndex);
}
else {
_selectedNodeIndex++;
}
}
}
return anchors.eq(_selectedNodeIndex);
}