function InitPrefs() {
/* No longer needed (prefs doesn't pop a window anymore)

	// Needed when clicking back from savePrefs window.  Unfortunately
	// some browsers (NS7, others?) trigger onFocus frequently and apparently 
	// at random, so we add the extra needPrefsUpdate variable as a trigger.
	
	if (needPrefsUpdate == 1) {
		loadOlcCookie(document.forms.dataContainer.isbn.value);
		updateForms();
		InitLayers();
		needPrefsUpdate = 0;
	}

*/
}

function eatCookies() {
	// check to see if there are too many cookies on this domain; if so, eat some.
	var allCookies = document.cookie.split("; ");
	if (allCookies.length > 17) {
		var theUrl = "" + document.forms.dataContainer.isbn.value;
		window.open(theUrl,"eatCookies","width=300,height=400,resizable,scrollbars");
	}
}
function Monitor() {
	// This script runs continuously, checking for changed window state (scroll, size)
	// and handling the drawer animations.
	
	// Originally had the drawers using their own setIntervals, but Opera on Windows
	// doesn't handle that very well. (memory problems, I think.)
	
	// check for window resize:
	if (winWidth != getWindowWidth()) InitLayers();
	
	// check for window scroll:
	if (typeof(window.pageYOffset) != "undefined") {
		// Netscape 4; must check this first or else N7 gets lost
		if (window.pageYOffset != scrolledBy) {
			scrolledBy = window.pageYOffset;
			floatNav == 1 ? doFloatToolbarOnly() : doFloat();
		}
	} else if (typeof(document.body) != "undefined") {
		if (typeof(document.body.scrollTop) != "undefined") {
			// IE, Mozilla
			if (document.body.scrollTop != scrolledBy) {
				scrolledBy = document.body.scrollTop;
				floatNav == 1 ? doFloatToolbarOnly() : doFloat();
			}
		} else {
			// Opera:  body.scrollTop should work, but doesn't...?
			// try to fix this... this is the only reason floating doesn't
			// work in opera right now.
			scrolledBy=0;
		}
	} else {
		// unknown, noncompliant browser
		scrolledBy = 0;
	}
	
	// run any ongoing scripts:
	if (curScript) {
		eval(curScript);
	}
	return true;
}
function glideIn(myName, stopPos, whenDone) {
	var curTop = getTop(myName);
	if (curTop >= stopPos) {
		// stop the animation
		setTop(myName, stopPos);
		
		// workaround for a browser-specific visual glitch:
		if (navigator.appName.indexOf("Netscape") != -1 && parseInt(navigator.appVersion) == 4) {
			hideLayer(myName);
			window.setTimeout("showLayer('"+myName+"');",5);
		}

		if (whenDone) eval(whenDone);
		curScript = nextScript; 
		nextScript = "";
	} else {
		// Netscape 6 is way slow... so we bump its speed up.
		if (browserIs.ns && (browserIs.major == 6)) {
			var newTop = (glideSpeed > 0) ? Math.ceil(curTop + ((stopPos-curTop) / (glideSpeed / 2))) + 1 : stopPos;
		} else {
			var newTop = (glideSpeed > 0) ? Math.ceil(curTop + ((stopPos-curTop) / (glideSpeed * 4))) + 1 : stopPos;
		}
		setTop(myName, newTop);
	}
}
function glideOut(myName, startPos, whenDone) {
	var curTop = getTop(myName);
	if (curTop <= -1000) {
		// stop the animation
		hideLayer(myName);
		setZindex(myName, 6);
		if (whenDone) eval(whenDone);
		curScript = nextScript;
		nextScript = ""; 
	} else {
		// Netscape 6 is way slow... so we bump its speed up.
		if (browserIs.ns && (browserIs.major == 6)) {
			var newTop = (glideSpeed > 0) ? Math.ceil(curTop - ((startPos-curTop) / (glideSpeed / 4))) - 1 : -1000;
		} else {
			var newTop = (glideSpeed > 0) ? Math.ceil(curTop - ((startPos-curTop) / (glideSpeed * 2))) - 1 : -1000;
		}
		setTop(myName, newTop);
	}
}
function startAnimation(newAnim) {
	if (curScript == "") {
		curScript = newAnim;
	} else {
		nextScript = newAnim;
	}
}

function startUser() {
	if (loggedIn == 1) {
		//teachersEdition == 1 ? startTool("toolProfileProf") : startTool("toolProfile");
		startTool("toolProfile");
	} else {
		startTool("toolLogin");
	}
}

function checkForcedLogin(theUrl, theTarget) {
	if (loggedIn == 1) {
		if (theTarget) {
			window.open(theUrl, theTarget, "toolbar=yes,location=yes,scrollbars=yes");
		} else {
			// window.location.href=theUrl;
			// For some reason the above fails in IE/Win.  This works, though:
			setTimeout("window.location='"+theUrl+"';",10);
		}
	} else {
		// pass the desired URL into the login form:
		document.forms.loginForm.goto_url.value = theUrl;
		if (curTool != "toolLogin") {
			stopTool(); // just in case
			startTool("toolLogin");
		}
	} 
}
function startTool(myName) {
	if (curTool != "") stopTool();
	setTop(myName,-1000);
	setZindex(myName, 7);
	showLayer(myName);
	curTool=myName;
	startAnimation("glideIn('"+myName+"', toolTop,'');");
}
function stopTool(whichTool) {
	// disabled: eRights takes care of this for us
	// need to prevent closing it if we're on a locked page and not logged in.
	//if ((whichTool == 'toolLoginForced') && (isLocked == 1) && (loggedIn == 0)) {
	//	alert("Sorry; you must log in before you can close the drawer on this page.");
	//} else {
		if (curTool != "") startAnimation("glideOut('"+curTool+"',toolTop,'');");
		curTool = "";
	//}
}
function hideTools() {
	for (i in toolLayers) {
		if (getObj(toolLayers[i])) {
			setTop(toolLayers[i], -1000);
		}
	}
}
function doFloat() {
	if (floatNav > 0) {
		toolTop = (scrolledBy > toolOrigin) ? scrolledBy : toolOrigin;
	} else {
		toolTop = toolOrigin;
	}
	showToolbar();

	for (i in floaters) {
		setTop(floaters[i], toolTop);
	}
	for (i in offsetFloaters) {
		setTop(offsetFloaters[i], toolTop+navOffset);
	}

	setTop(curTool, toolTop);
}
function doNoFloat() {
	toolTop = (scrolledBy > toolOrigin) ? scrolledBy : toolOrigin;
	showToolbar();
	// now move everything else
	for (i in floaters) {
		setTop(floaters[i], toolTop);
	}
	for (i in offsetFloaters) {
		setTop(offsetFloaters[i], toolTop+navOffset);
	}
}
function doFloatToolbarOnly() {
	toolTop = (scrolledBy > toolOrigin) ? scrolledBy : toolOrigin;
	if ((scrolledBy > toolOrigin) && (curTool == "")) {
		var theTool = showToolbar();
		setTop(theTool, -100);
		startAnimation("glideIn('"+theTool+"',toolTop,'');");
	} else {
		doFloat();
	}
}
function showToolbar() {
	var theBar = "";
	
	if (scrolledBy > toolOrigin) {		
		if (loggedIn == 1) {
			theBar = (floatNav == 2 ? "toolbar" : "toolbarNocrumb");
		} else {
			theBar = (floatNav == 2 ? "toolbarNologin" : "toolbarNologinNocrumb");
		}
	} else {
		theBar = (loggedIn == 1 ? "toolbar" : "toolbarNologin");
	}
	hideLayer("toolbar");
	hideLayer("toolbarNologin");
	hideLayer("toolbarNocrumb");
	hideLayer("toolbarNologinNocrumb");
	showLayer(theBar);
	return theBar;
}