function initialize_page() {
    // Called on page load to setup the page.
    announce_page_loaded();
	
	var newDiv = document.createElement('div');
	newDiv.setAttribute('id', 'tooltip');
	newDiv.style.cssText = 'position:absolute; visibility:hidden; font-family: \'Lucida Grande\', Helvetica; font-size: 11px; border: 1px solid #AAA; padding: 3px;';

    var bodyDiv = document.getElementById('bodyText');
	bodyDiv.appendChild(newDiv);
}

function announce_page_loaded() {
    // If we're in a frameset, tell the TOC frame this page was loaded, so it can track it.
    if (document.getElementById && document.getElementById('toc_content')) {
		document.getElementById('toc_content').contentWindow.page_loaded(document.location);
    } else if (frames.length) {
        frames['toc_content'].page_loaded(document.location);
    }
}

function showtip(hovered,event){
// Makes the "tooltip" element visible and moves it to the 
	// (x,y) of the mouse event (plus some buffer zone)
	
	var agent = navigator.userAgent;
	if (agent.indexOf("MSIE") > 0 && agent.indexOf("Mac") > 0) { 
		// IE-Mac no longer supported, and the CSS functionality is not up to the par needed for this
		return;
	}
	
	var abstract_text = hovered.getElementsByTagName('img').item(0).getAttribute('abstract');
	if(!abstract_text) { 
		return; 
	} 
	
	// Event-handling code for cross-browser support
	var mouse_event;
	if(!event) { mouse_event = window.event; } else { mouse_event = event; }
	
	var tooltip = document.getElementById("tooltip");
	tooltip.innerHTML = abstract_text;
	
	tooltip.style.backgroundColor = "#FDFEC8";
	
	var xcoord = 0;
	var ycoord = 0;
	
	if(mouse_event.pageX || mouse_event.pageY) {
	 	xcoord = event.pageX;
	 	ycoord = event.pageY;
	} else if(mouse_event.clientX || mouse_event.clientY) {
		xcoord = mouse_event.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft);
		ycoord = mouse_event.clientY;
	}
	
	tooltip.style.left = xcoord + 4 + "px";
	tooltip.style.top = ycoord + 10 + "px";
	tooltip.style.visibility="visible";
}

function hidetip() {
    var tooltip = getStyleObject("tooltip");
    tooltip.visibility = "hidden";
}

function placeWatermark() {
    if (document.layers) {
        document.watermark.pageX = (window.innerWidth - document.watermark.document.myImage.width)/2;
        document.watermark.pageY = (window.innerHeight - document.watermark.document.myImage.height)/2;
        document.watermark.visibility = 'visible';
    }
}

function closeWatermark() {
    var watermark = getStyleObject("watermark");
    watermark.visibility = "hidden";
}

// cross-browser function to get an object's style object given its
function getStyleObject(objectId) {
    if(document.getElementById && document.getElementById(objectId)) {
	// W3C DOM
	return document.getElementById(objectId).style;
    } else if (document.all && document.all(objectId)) {
	// MSIE 4 DOM
	return document.all(objectId).style;
    } else if (document.layers && document.layers[objectId]) {
	// NN 4 DOM.. note: this won't find nested layers
	return document.layers[objectId];
    } else {
	return false;
    }
}

var state = 'block';
var margin = 210;
// shows or hides the TOC as well as toggles the show/hide text (2 per page)
function showHideTOC() {
    var tocDiv     = getStyleObject("tocMenu");
    var bodyDiv    = getStyleObject("bodyText");
    var showHideTOCUpperSpan = document.getElementById("showHideTOCUpperSpan");
    var showHideTOCLowerSpan = document.getElementById("showHideTOCLowerSpan");
    var upperAnchor = showHideTOCUpperSpan.getElementsByTagName('a').item(1);
    var lowerAnchor = showHideTOCLowerSpan.getElementsByTagName('a').item(1);
    var showText = showHideTOCUpperSpan.getElementsByTagName('img').item(0).getAttribute('showText');
    var hideText = showHideTOCUpperSpan.getElementsByTagName('img').item(0).getAttribute('hideText');

    if (state == 'block') { 
        state = 'none'; 
        margin = 10;
        upperAnchor.innerHTML = showText;
        lowerAnchor.innerHTML = showText;
    } else { 
        state = 'block'; 
        margin = 210;
        upperAnchor.innerHTML = hideText;
        lowerAnchor.innerHTML = hideText;
    }
    
    tocDiv.display = state;
    if (document.layers) {
        bodyDiv.marginLeft = margin;
    } else {
        bodyDiv.marginLeft = margin + "px";
    }
    
    return false;
}
