function getStyleObject(objectId) {
    // cross-browser function to get an object's style object given its id
    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;
    }
} // getStyleObject

function changeObjectVisibility(objectId, newVisibility) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
	styleObject.visibility = newVisibility;
	return true;
    } else {
	// we couldn't find the object, so we can't change its visibility
	return false;
    }
} // changeObjectVisibility

function moveObject(objectId, newXCoordinate, newYCoordinate) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
	styleObject.left = newXCoordinate;
	styleObject.top = newYCoordinate;
	return true;
    } else {
	// we couldn't find the object, so we can't very well move it
	return false;
    }
} // moveObject

// ********************************
// application-specific functions *
// ********************************

function shownav(navNumber, eventObj) {
    //    alert(eventObj);
    hideAllnavs();
    var navId = 'nav' + navNumber;
    if(changeObjectVisibility(navId, 'visible')) {
	var navTitle = getStyleObject('navTitle' + navNumber);
	eventObj.cancelBubble = true;
	return true;
    } else {
	return false;
    }
}

var numnavs = 1;

function hideAllnavs() {
    for(counter = 1; counter <= numnavs; counter++) {
	changeObjectVisibility('nav' + counter, 'hidden');
	var navTitle = getStyleObject('navTitle' + counter);
    }
}
document.onmouseover = hideAllnavs;