// JavaScript Document// Scroll Code	var showscroll = {  init:   function() {    //collect the variables    showscroll.docH = document.getElementById("showscroll-content").offsetHeight;    showscroll.contH = document.getElementById("showscroll-box").offsetHeight;    showscroll.scrollAreaH = document.getElementById("showscroll-area").offsetHeight;	showscroll.timer = null;          //calculate height of scroller and resize the scroller div    //(however, we make sure that it isn't to small for long pages)	//make equal to height of scroller graphic	showscroll.scrollH = 18;    document.getElementById("showscroll-drag").style.height = Math.round(showscroll.scrollH) + "px";        //what is the effective scroll distance once the scoller's height has been taken into account    showscroll.scrollDist = Math.round(showscroll.scrollAreaH-showscroll.scrollH);        //make the scroller div draggable    Drag.init(document.getElementById("showscroll-drag"),null,0,0,-1,showscroll.scrollDist);        //add ondrag function    document.getElementById("showscroll-drag").onDrag = function (x,y) {      var scrollY = parseInt(document.getElementById("showscroll-drag").style.top);      var docY = 0 - (scrollY * (showscroll.docH - showscroll.contH) / showscroll.scrollDist);      document.getElementById("showscroll-content").style.top = docY + "px";    }	this.showscroll.scrollerUp = function () {      var docY = parseInt(document.getElementById("showscroll-content").style.top);      var scrollY = parseInt(document.getElementById("showscroll-drag").style.top);	  if ((scrollY-15)<0) { // at top		document.getElementById("showscroll-drag").style.top = "0px";	  } else {		document.getElementById("showscroll-drag").style.top = (scrollY-15) + "px";	  }		scrollY = parseInt(document.getElementById("showscroll-drag").style.top);		var docY = 0 - (scrollY * (showscroll.docH - showscroll.contH) / showscroll.scrollDist);      	document.getElementById("showscroll-content").style.top = docY + "px";	}		this.showscroll.scrollerDown = function () {      var docY = parseInt(document.getElementById("showscroll-content").style.top);      var scrollY = parseInt(document.getElementById("showscroll-drag").style.top);	  if ((scrollY+15) > showscroll.scrollDist) { // put us past bottom		document.getElementById("showscroll-drag").style.top = (showscroll.scrollDist) + "px";	  } else {		document.getElementById("showscroll-drag").style.top = (scrollY+15) + "px";	  }			scrollY = parseInt(document.getElementById("showscroll-drag").style.top);		var docY = 0 - (scrollY * (showscroll.docH - showscroll.contH) / showscroll.scrollDist);      	document.getElementById("showscroll-content").style.top = docY + "px";	}		//add on up/down button functions	document.getElementById("showscroll-up").onmousedown = function () {		this.timer = setInterval("showscroll.scrollerUp()",20);	}	document.getElementById("showscroll-up").onmouseup = function () {		clearInterval(this.timer);	}	document.getElementById("showscroll-down").onmousedown = function () {		this.timer = setInterval("showscroll.scrollerDown()",20);	}	document.getElementById("showscroll-down").onmouseup = function () {		clearInterval(this.timer);	}  }}/************************************************** * dom-drag.js * 09.25.2001 * www.youngpup.net ************************************************** * 10.28.2001 - fixed minor bug where events * sometimes fired off the handle, not the root. **************************************************/var Drag = {	obj : null,	init : function(o, oRoot, minX, maxX, minY, maxY, bSwapHorzRef, bSwapVertRef, fXMapper, fYMapper)	{		o.onmousedown	= Drag.start;		o.hmode			= bSwapHorzRef ? false : true ;		o.vmode			= bSwapVertRef ? false : true ;		o.root = oRoot && oRoot != null ? oRoot : o ;		if (o.hmode  && isNaN(parseInt(o.root.style.left  ))) o.root.style.left   = "0px";		if (o.vmode  && isNaN(parseInt(o.root.style.top   ))) o.root.style.top    = "0px";		if (!o.hmode && isNaN(parseInt(o.root.style.right ))) o.root.style.right  = "0px";		if (!o.vmode && isNaN(parseInt(o.root.style.bottom))) o.root.style.bottom = "0px";		o.minX	= typeof minX != 'undefined' ? minX : null;		o.minY	= typeof minY != 'undefined' ? minY : null;		o.maxX	= typeof maxX != 'undefined' ? maxX : null;		o.maxY	= typeof maxY != 'undefined' ? maxY : null;		o.xMapper = fXMapper ? fXMapper : null;		o.yMapper = fYMapper ? fYMapper : null;		o.root.onDragStart	= new Function();		o.root.onDragEnd	= new Function();		o.root.onDrag		= new Function();	},	start : function(e)	{		var o = Drag.obj = this;		e = Drag.fixE(e);		var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);		var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );		o.root.onDragStart(x, y);		o.lastMouseX	= e.clientX;		o.lastMouseY	= e.clientY;		if (o.hmode) {			if (o.minX != null)	o.minMouseX	= e.clientX - x + o.minX;			if (o.maxX != null)	o.maxMouseX	= o.minMouseX + o.maxX - o.minX;		} else {			if (o.minX != null) o.maxMouseX = -o.minX + e.clientX + x;			if (o.maxX != null) o.minMouseX = -o.maxX + e.clientX + x;		}		if (o.vmode) {			if (o.minY != null)	o.minMouseY	= e.clientY - y + o.minY;			if (o.maxY != null)	o.maxMouseY	= o.minMouseY + o.maxY - o.minY;		} else {			if (o.minY != null) o.maxMouseY = -o.minY + e.clientY + y;			if (o.maxY != null) o.minMouseY = -o.maxY + e.clientY + y;		}		document.onmousemove	= Drag.drag;		document.onmouseup		= Drag.end;		return false;	},	drag : function(e)	{		e = Drag.fixE(e);		var o = Drag.obj;		var ey	= e.clientY;		var ex	= e.clientX;		var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);		var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );		var nx, ny;		if (o.minX != null) ex = o.hmode ? Math.max(ex, o.minMouseX) : Math.min(ex, o.maxMouseX);		if (o.maxX != null) ex = o.hmode ? Math.min(ex, o.maxMouseX) : Math.max(ex, o.minMouseX);		if (o.minY != null) ey = o.vmode ? Math.max(ey, o.minMouseY) : Math.min(ey, o.maxMouseY);		if (o.maxY != null) ey = o.vmode ? Math.min(ey, o.maxMouseY) : Math.max(ey, o.minMouseY);		nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));		ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));		if (o.xMapper)		nx = o.xMapper(y)		else if (o.yMapper)	ny = o.yMapper(x)		Drag.obj.root.style[o.hmode ? "left" : "right"] = nx + "px";		Drag.obj.root.style[o.vmode ? "top" : "bottom"] = ny + "px";		Drag.obj.lastMouseX	= ex;		Drag.obj.lastMouseY	= ey;		Drag.obj.root.onDrag(nx, ny);		return false;	},	end : function()	{		document.onmousemove = null;		document.onmouseup   = null;		Drag.obj.root.onDragEnd(	parseInt(Drag.obj.root.style[Drag.obj.hmode ? "left" : "right"]), 									parseInt(Drag.obj.root.style[Drag.obj.vmode ? "top" : "bottom"]));		Drag.obj = null;	},	fixE : function(e)	{		if (typeof e == 'undefined') e = window.event;		if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;		if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;		return e;	}};// adds a function to the page onload, so we don't overwrite existing onload functionsfunction addOnLoad(f) {    var currentOnLoad = window.onload;    if (typeof window.onload != "function") {        window.onload = f;    } else {        window.onload = function() {            currentOnLoad();            f();        }    }}