// page setup
var animationID;
var startThumb = 109;
var thumbIncrement = 5;
var thumbTrip = 0;
var startScroll = 92;
var bottomClip = 337;
var scrollSpeed = 60;
var direction = 2;
var animationSpeed = 1;
var endThumb = 316;
var thumbChange = endThumb - startThumb; // 425
var thumbLoops = thumbChange / thumbIncrement; // 85
var thumbSpot = startThumb; // 109
var thumbStep = thumbIncrement; // 5
var offsetY;
var storeThumb;
var storeScroll;
var bodyHeight;
var endScroll;
var scrollIncrement;
var scrollChange;
var scrollLoops = thumbLoops; // 85
var scrollStep;
var scrollSpot = startScroll; // 92
var contentObject;
var contentObjectAlt;
var thumbObject;
var scrollUpObject;
var scrollDownObject;
var scrollBarObject;
var scrollBackObject;
var tempButtonID = 10;
var hasChapters = false;
function initScrollers() {
	if (NN4) {
		buttonNames[1] = document.scrollUpDIV.document.scrollUpBUT;
		buttonNames[2] = document.scrollDownDIV.document.scrollDownBUT;
		buttonNames[3] = document.thumbDIV.document.thumbBUT;
		contentObject = document.contentDIV;
		contentObjectAlt = contentObject;
		thumbObject = document.thumbDIV;
		scrollUpObject = document.scrollUpDIV;
		scrollDownObject = document.scrollDownDIV;
		scrollBarObject = document.scrollBackDIV;
		scrollBackObject = document.back5DIV;
		document.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);
	} else if (IE4) {
		buttonNames[1] = document.all.scrollUpBUT;
		buttonNames[2] = document.all.scrollDownBUT;
		buttonNames[3] = document.all.thumbBUT;
		contentObject = document.all.contentDIV.style;
		contentObjectAlt = document.all['contentDIV'];
		thumbObject = document.all.thumbDIV.style;
		scrollUpObject = document.all.scrollUpDIV.style;
		scrollDownObject = document.all.scrollDownDIV.style;
		scrollBarObject = document.all.scrollBackDIV.style;
		scrollBackObject = document.all.back5DIV.style;
	}
	contentObject.active = false;
	thumbObject.active = false;
	document.onmousemove = dragThumb;
	document.onmouseup = directMouseUp;
	measureBody();
	if ((bottomClip - bodyHeight) < startScroll) {
		scrollable = true;
	} else {
		scrollable = false;
	}
	if (scrollable) {
		thumbObject.visibility = (NN4)? "show" : "visible";
		scrollUpObject.visibility = (NN4)? "show" : "visible";
		scrollDownObject.visibility = (NN4)? "show" : "visible";
		scrollBarObject.visibility = (NN4)? "show" : "visible";
		scrollBackObject.visibility = (NN4)? "show" : "visible";
	}
	linkMessages[3] = "click to jump scroll";
	// scroll up
		statusMessages[1] = "scroll up";
		navStatic[1] = new Image(12,11);
		navStatic[1].src = "../images/scroll-up.gif";
		navOver[1] = new Image(12,11);
		navOver[1].src = "../images/scroll-up-o.gif";
		navDown[1] = new Image(12,11);
		navDown[1].src = "../images/scroll-up-d.gif";
	// scroll right
		statusMessages[2] = "scroll down";
		navStatic[2] = new Image(12,11);
		navStatic[2].src = "../images/scroll-down.gif";
		navOver[2] = new Image(12,11);
		navOver[2].src = "../images/scroll-down-o.gif";
		navDown[2] = new Image(12,11);
		navDown[2].src = "../images/scroll-down-d.gif";
	// thumb
		statusMessages[3] = "drag to scroll";
		navStatic[3] = new Image(12,9);
		navStatic[3].src = "../images/scroll-thumb.gif";
		navOver[3] = new Image(12,9);
		navOver[3].src = "../images/scroll-thumb-o.gif";
		navDown[3] = new Image(12,9);
		navDown[3].src = "../images/scroll-thumb-d.gif";
}
// ROLLOVER FUNCTIONS
function rollOnScroll(buttonID) {
	measureBody();
	if ((scrollSpot >= startScroll && buttonID == 1) || (scrollSpot <= endScroll && buttonID == 2)) {
		window.status = "";
		return;
	} else {
		buttonNames[buttonID].src = navOver[buttonID].src;
		window.status = statusMessages[buttonID];
	}
	return true;
}
function rollOffScroll(buttonID) {
	if (contentObject.active == true) {
		window.status = "";
		return;
	}
	buttonNames[buttonID].src = navStatic[buttonID].src;
	window.status = "";
	return true;
}
// SCROLLING FUNCTIONS
function scroll(buttonID) {
	if ((scrollSpot >= startScroll && buttonID == 1) || (scrollSpot <= endScroll && buttonID == 2)) {
		rollOffScroll(buttonID);
		return;
	}
	buttonNames[buttonID].src = navDown[buttonID].src;
	direction = buttonID;
	measureBody();
	if (direction == 1) {
		scrollStep = scrollIncrement;
		thumbStep = -thumbIncrement;
	} else if (direction == 2) {
		scrollStep = -scrollIncrement;
		thumbStep = thumbIncrement;
	}
	tempButtonID = buttonID;
	animationID = window.setInterval("motion()",scrollSpeed);
	return;
}
function motion() {
	if ((thumbSpot >= endThumb && direction == 2) || (thumbSpot <= startThumb && direction == 1)) {
		rollOffScroll(tempButtonID);
		window.clearInterval(animationID);
		contentObject.active = false;
	} else if (contentObject.active) {
		tempThumb = thumbSpot += thumbStep;
		tempScroll = scrollSpot + scrollStep;
		shiftTo(tempThumb,tempScroll);
	} else if (!contentObject.active) {
		window.clearInterval(animationID);
	}
	return;
}
function jumpScroll(evt) {
	thumbObject.active = true;
	contentObject.active = true;
	measureBody();
	var tempY = (NN4)? evt.pageY : window.event.offsetY + startThumb;
	var thumbTemp = 0;
	var scrollTemp = 0;
	var jumpFactor = parseInt(((bottomClip - startScroll) / scrollIncrement),10);
	if (tempY < thumbSpot) {
		thumbTemp = thumbSpot - (jumpFactor * thumbIncrement);
		scrollTemp = scrollSpot + (jumpFactor * scrollIncrement);
	} else if (tempY > thumbSpot + 18) {
		thumbTemp = thumbSpot + (jumpFactor * thumbIncrement);
		scrollTemp = scrollSpot - (jumpFactor * scrollIncrement);
	}
	shiftTo(thumbTemp,scrollTemp);
	thumbObject.active = true;
	contentObject.active = true;
	return true;
}
function measureBody() {
	if (NN4) {
		bodyHeight = contentObject.clip.height;
	} else if (IE4) {
		bodyHeight = contentObjectAlt.scrollHeight;
	}
	endScroll = bottomClip - bodyHeight;
	scrollChange = startScroll - endScroll;
	scrollIncrement = parseInt((scrollChange / scrollLoops),10);
	if (scrollIncrement < 0) {
		scrollIncrement = 0;
	}
	scrollStep = scrollIncrement;
}
// DRAGGING FUNCTIONS
function shiftTo(newThumb,newScroll) {
	if (newThumb >= endThumb || scrollSpot < endScroll) {
		thumbSpot = endThumb;
		scrollSpot = endScroll;
	} else if (newThumb <= startThumb || scrollSpot > startScroll) {
		thumbSpot = startThumb;
		scrollSpot = startScroll;
	} else {
		thumbSpot = newThumb;
		scrollSpot = newScroll;
	}
	if (NN4) {
		contentObject.top = scrollSpot;
		thumbObject.top = thumbSpot;
	} else if (IE4) {
		contentObject.top = scrollSpot + "px";
		thumbObject.top = thumbSpot + "px";
	}
}
function grabThumb(evt,buttonID) {
	if (buttonID == 3) {
		tempButtonID = buttonID;
		thumbObject.active = true;
		buttonNames[buttonID].src = navDown[buttonID].src;
		if (NN4) {
			offsetY = evt.pageY - thumbObject.top;
		} else if (IE4) {
			offsetY = window.event.offsetY;
		}
		return true;
	}
}
function dragThumb(evt) {
	if (thumbObject.active == true) {
		var thumbShot;
		if (NN4) {
			thumbShot = evt.pageY - offsetY;
		} else if (IE4) {
			thumbShot = window.event.clientY - offsetY;
		}
		var thumbShift = thumbSpot - thumbShot;
		direction = (thumbShift < 0)? 2 : 1;
		thumbTrip += Math.abs(thumbShift);
		var tripCheck = parseInt((thumbTrip / thumbIncrement),10);
		if (tripCheck >= 1) {
			var scrollShot;
			if (direction == 1) {
				scrollShot = scrollSpot + (tripCheck * scrollIncrement);
			} else if (direction == 2) {
				scrollShot = scrollSpot - (tripCheck * scrollIncrement);
			}
			thumbTrip -= (tripCheck * thumbIncrement);
			shiftTo(thumbShot,scrollShot);
		}
		return false;
	}
}
function directMouseUp(evt) {
	tempSetID = 0;
	contentObject.active = false;
	thumbObject.active = false;
	thumbTrip = 0;
	offsetY = null;
	for (t=1;t<=3;t++) {
		buttonNames[t].src = navStatic[t].src;
/* 		alert(buttonNames[t] + " | " + buttonNames[t].src); */
	}
}

