var from_toc_frame = 0; var isJavaScriptTOC = 0; var ignore_page_load = 0; var lastSelectedItem; var lastSelectedColor; var lastSelectedWeight; var lastHighlightedChapterAnchor;
function initialize_toc() {
set_initial_state();
}
function set_initial_state() {
for(var i = 0; i < document.links.length; i++) {
document.links[i].onmousedown = link_action;
}
var divs = document.getElementsByTagName("DIV");
if (divs.length) {
isJavaScriptTOC = 1;
from_toc_frame = 1;
for (var i = 0; i < divs.length; i++) {
if (i == 0) {
expand(divs[i]);
} else {
collapse(divs[i]);
}
}
from_toc_frame = 0;
}
}
function link_action() {
ignore_page_load = 1;
var div = div_parent(this);
if (div && div.className) {
from_toc_frame = 1;
var triangle = disclosure_image(this);
if (triangle) {
toggle(div);
} else if (div.className == "jtoc_closed") {
expand(div);
}
from_toc_frame = 0;
}
}
function toggle(div) {
if (div.className) {
if (div.className == "jtoc_open") {
collapse(div);
} else if (div.className == "jtoc_closed") {
expand(div);
}
}
}
function expand_only(div) {
var divs = document.getElementsByTagName("DIV");
if (divs.length) {
for (var i = 0; i < divs.length; i++) {
var current = divs[i];
if (div && current == div) {
expand(current);
} else {
collapse(current);
}
}
}
}
function expand(div) {
if (isNetscape()) {
return;
}
if (div.className != "jtoc_open") {
div.className = "jtoc_open";
var child = collapsible_child(div);
if (child) { child.style.display = ""; }
if (from_toc_frame || !isMacIE()) {
var image = disclosure_image(div);
if (image) { image.src = image.getAttribute("open"); }
}
}
}
function collapse(div) {
if (isNetscape()) {
return;
}
if (div.className != "jtoc_closed") {
div.className = "jtoc_closed";
var child = collapsible_child(div);
if (child) { child.style.display = "none"; }
if (from_toc_frame || !isMacIE()) {
var image = disclosure_image(div);
if (image) { image.src = image.getAttribute("closed"); }
}
}
}
function highlight_chapter_link(div) {
var anchor = first_content_link(div);
if (anchor) {
if (lastHighlightedChapterAnchor) { lastHighlightedChapterAnchor.style.fontWeight = "normal"; }
lastHighlightedChapterAnchor = anchor;
anchor.style.fontWeight = "bold";
}
}
function first_content_link(div) {
var anchors = div.getElementsByTagName("A");
if (anchors.length) {
for (var i = 0; i < anchors.length; i++) {
var anchor = anchors[i];
var logicalPath = anchor.getAttribute("logicalPath");
if (logicalPath) {
return anchor;
}
}
}
}
function div_parent(element) {
var div_parent = element.parentNode;
while (div_parent && div_parent.nodeName != "DIV") {
div_parent = div_parent.parentNode;
}
return div_parent;
}
function disclosure_image(div) {
var images = div.getElementsByTagName("IMG");
if (images.length) {
for (var i = 0; i < images.length; i++) {
var image = images[i];
var open = image.getAttribute("open")
if (open) {
return image;
}
}
}
}
function collapsible_child(div) {
var span_nodes = div.getElementsByTagName("SPAN");
if (span_nodes.length) {
return span_nodes[0];
}
}
function disclosure_triangle() {
var parent = div_parent(this);
if (parent) { toggle(parent); }
return 0;
}
function selected_div(page_location) {
if (isJavaScriptTOC) {
var page_suffix = path_suffix(page_location.pathname);
var all_links = document.links;
for(var i = 0; i < all_links.length; i++) {
var anchor = all_links[i];
var anchor_suffix = path_suffix(anchor.getAttribute("HREF"));
if (page_suffix == anchor_suffix) {
return div_parent(anchor);
}
}
}
}
function page_loaded(page_location) {
if (isJavaScriptTOC) {
var page_suffix = path_suffix(page_location.pathname);
var all_links = document.links;
for(var i = 0; i < all_links.length; i++) {
var anchor = all_links[i];
var anchor_suffix = path_suffix(anchor.getAttribute("HREF"));
if (page_suffix == anchor_suffix) {
if (lastSelectedItem) { lastSelectedItem.style.color = lastSelectedColor; lastSelectedItem.style.fontWeight = lastSelectedWeight }
lastSelectedItem = anchor;
lastSelectedColor = anchor.style.color;
lastSelectedWeight = anchor.style.fontWeight;
anchor.style.color = "black";
anchor.style.fontWeight = "bold";
var parent = div_parent(anchor);
highlight_chapter_link(parent);
if (ignore_page_load) {
ignore_page_load = 0;
} else {
expand_only(parent);
}
break;
}
}
}
}
function path_suffix(path) {
var leaf = "";
var parent = "";
var path_array = path.split('#');
path = path_array[0];
path_array = path.split('/');
var length = path_array.length;
if (length) { leaf = path_array[length - 1]; }
if (length > 1) { parent = path_array[length - 2]; }
return parent + '/' + leaf;
}
function isMacIE() {
if (navigator.appName == "Microsoft Internet Explorer") {
var regex = /Macintosh/;
if (regex.test(navigator.appVersion)) {
return 1;
}
}
return 0;
}
function isNetscape() {
if (navigator.appName == "Netscape") {
var regex = /AppleWebKit/;
if (!regex.test(navigator.appVersion)) {
return 1;
}
}
return 0;
}