////////////////////////////////////////////////////////////////////////////////////
//
//    ATTENTION NETSCAPE NAVIGATOR 3.0 USERS!!!
//
//    If you see this text while using the site and you did NOT click on
//    View -> Source, you're using a buggy browser.
//
//    FOLLOW THESE STEPS
//
//    Read through these two steps before doing them.
//    1. Press your BACK BUTTON.
//    2. Click on REFRESH or RELOAD.
//
//    You should now be able to use the site without seeing this message.
//    This problem can however return if your browser does not cache this
//    document correctly.
//
//    UPGRADE YOUR BROWSER
//
//    Upgrade your browser to Netscape's latest and you will not have this
//    problem any more.
//
//    Netscape browsers can be found at http://home.netscape.com/
//
////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////
//  overLIB 2.22  --  Please leave this notice.
//
//  By Erik Bosrup (erik@bosrup.com)  Last modified 1999-03-31
//  Portions by Dan Steinman, Landon Bradshaw and Gnowknayme.
//
//  Get the latest version at http://www.bosrup.com/web/overlib/
//
//  This script library was created for my personal usage from the start
//  but then it became so popular I made an easy to use version. It's that
//  version you're using now. Since this is free please don't try to sell
//  this solution to a company claiming it is yours. Give me credit where
//  credit is due and I'll be happy. And I'd love to see any changes you've
//  done to the code. Free to use - don't abuse.
////////////////////////////////////////////////////////////////////////////////////

//Changes made by Chris Heath (cheath@umich.edu):  
//   * Fixed a bug with IE4.5 (Mac) - same bug as was found in IE5
//   * Moved the popup to (0,0) when it is hidden so that the horizontal
//      scroll bars aren't influenced by the invisble object.  (a bug in 
//      IE5.0 ??)
//   * Added a mechanism for reducing the width of the popup to fit the 
//      text. We treat the "width" parameter only as a maximum width
//   * When creating a popup, it checks that it is entirely onscreen;
//      if not, it changes the offset so that it is.
//Bugs in the above changes:
//   * Some older versions of Netscape allow the popup to appear under a 
//      scroll bar
//   * Some newer versions of IE make the popup 1 pixel wider than needed.
//      (this was deemed better than having the older versions wrap the text
//      onto two lines, because the width was 1 pixel too few)
//   * When the text runs more than one line, the popup width stays at 
//      the maximum width, rather than shrinking to fit the text.

////////////////////////////////////////////////////////////////////////////////////
// CONFIGURATION
////////////////////////////////////////////////////////////////////////////////////

// Main background color (the large area)
// Usually a bright color (white, yellow etc)
	if (typeof fcolor == 'undefined') { var fcolor = "#CCCCFF";}
	
// Border color and color of caption
// Usually a dark color (black, brown etc)
	if (typeof backcolor == 'undefined') { var backcolor = "#333399";}
	
	
// Text color
// Usually a dark color
	if (typeof textcolor == 'undefined') { var textcolor = "#000000";}
	
// Color of the caption text
// Usually a bright color
	if (typeof capcolor == 'undefined') { var capcolor = "#FFFFFF";}
	
// Color of "Close" when using Sticky
// Usually a semi-bright color
	if (typeof closecolor == 'undefined') { var closecolor = "#9999FF";}
	
	
// Width of the popups in pixels
// 100-300 pixels is typical
	if (typeof width == 'undefined') { var width = "200";}
	
// How thick the border should be in pixels
// 1-3 pixels is typical
	if (typeof border == 'undefined') { var border = "1";}
	
	
// How many pixels to the right/left of the cursor to show the popup
// Values between 3 and 12 are best
	if (typeof offsetx == 'undefined') { var offsetx = 10;}
	
// How many pixels to the below the cursor to show the popup
// Values between 3 and 12 are best
	if (typeof offsety == 'undefined') { var offsety = 10;}
	
////////////////////////////////////////////////////////////////////////////////////
// END CONFIGURATION
////////////////////////////////////////////////////////////////////////////////////

ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false

// Microsoft Stupidity Check.
ie4_5 = false;
ie5 = false;
if (ie4) {
	if (navigator.userAgent.indexOf('MSIE 4.5')>0) {  // a Mac-only version
		ie4_5 = true;
	}
	if (navigator.userAgent.indexOf('MSIE 5')>0) {
		ie4_5 = true;
		ie5 = true;
	} 
}

var x = 0;
var y = 0;
var xo = 0;	//offsets for the current popup
var yo = 0;
var w = 0;	//width of the current popup
var h = 0;
var snow = 0;
var sw = 0;
var cnt = 0;
var dir = 1;
var tr = 1;
if ( (ns4) || (ie4) ) {
	if (ns4) over = document.overDiv
	if (ie4) over = overDiv.style
	document.onmousemove = mouseMove
	if (ns4) document.captureEvents(Event.MOUSEMOVE)
}

// Public functions to be used on pages.

// Simple popup right
function drs(text) {
	dts(1,text);
}

// Caption popup right
function drc(text, title) {
	dtc(1,text,title);
}

// Sticky caption right
function src(text,title) {
	stc(1,text,title);
}

// Simple popup left
function dls(text) {
	dts(0,text);
}

// Caption popup left
function dlc(text, title) {
	dtc(0,text,title);
}

// Sticky caption left
function slc(text,title) {
	stc(0,text,title);
}

// Simple popup center
function dcs(text) {
	dts(2,text);
}

// Caption popup center
function dcc(text, title) {
	dtc(2,text,title);
}

// Sticky caption center
function scc(text,title) {
	stc(2,text,title);
}

// Clears popups if appropriate
function nd() {
	if ( cnt >= 1 ) { sw = 0 };
	if ( (ns4) || (ie4) ) {
		if ( sw == 0 ) {
			snow = 0;
			hideObject(over);
			// in IE, the position affects the scrollbars
			moveTo(over,0,0);
		} else {
			cnt++;
		}
	}
}

// Non public functions. These are called by other functions etc.

// Simple popup
function dts(d,text) {
	if ( (ns4) || (ie4) ) {
		// in IE, the position affects the width
		moveTo(over,0,0);

		widthstr = "";
		txt = "<TABLE "+widthstr+" BORDER=0 CELLPADDING="+border+" CELLSPACING=0 BGCOLOR=\""+backcolor+"\"><TR><TD><TABLE WIDTH=\"100%\" BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR=\""+fcolor+"\"><TR><TD><FONT FACE=\"Arial,Helvetica\" COLOR=\""+textcolor+"\" SIZE=\"-2\">"+text+"</FONT></TD></TR></TABLE></TD></TR></TABLE>"
		layerWrite(txt)
		w = getLayerWidth();
		if (w > width) w = width;
		widthstr = "WIDTH="+w;
		txt = "<TABLE "+widthstr+" BORDER=0 CELLPADDING="+border+" CELLSPACING=0 BGCOLOR=\""+backcolor+"\"><TR><TD><TABLE WIDTH=\"100%\" BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR=\""+fcolor+"\"><TR><TD><FONT FACE=\"Arial,Helvetica\" COLOR=\""+textcolor+"\" SIZE=\"-2\">"+text+"</FONT></TD></TR></TABLE></TD></TR></TABLE>"
		layerWrite(txt);
		h = getLayerHeight();
		dir = d;
		disp();
	}
	else
		status = text;
}

// Caption popup
function dtc(d,text, title) {
	if ( (ns4) || (ie4) ) {
		// in IE, the position affects the width
		moveTo(over,0,0);

		widthstr = "";
		txt = "<TABLE "+widthstr+" BORDER=0 CELLPADDING="+border+" CELLSPACING=0 BGCOLOR=\""+backcolor+"\"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><SPAN ID=\"PTT\"><B><FONT COLOR=\""+capcolor+"\">"+title+"</FONT></B></SPAN></TD></TR></TABLE><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR=\""+fcolor+"\"><TR><TD><SPAN ID=\"PST\"><FONT COLOR=\""+textcolor+"\">"+text+"</FONT><SPAN></TD></TR></TABLE></TD></TR></TABLE>"
		layerWrite(txt)
		w = getLayerWidth();
		if (w > width) w = width;
		widthstr = "WIDTH="+w;
		txt = "<TABLE "+widthstr+" BORDER=0 CELLPADDING="+border+" CELLSPACING=0 BGCOLOR=\""+backcolor+"\"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><SPAN ID=\"PTT\"><B><FONT COLOR=\""+capcolor+"\">"+title+"</FONT></B></SPAN></TD></TR></TABLE><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR=\""+fcolor+"\"><TR><TD><SPAN ID=\"PST\"><FONT COLOR=\""+textcolor+"\">"+text+"</FONT><SPAN></TD></TR></TABLE></TD></TR></TABLE>"
		layerWrite(txt);
		h = getLayerHeight();
		dir = d;
		disp();
	}
	else
		status = title + ": " + text;
}

// Sticky
function stc(d,text, title) {
	if ( (ns4) || (ie4) ) {
		// in IE, the position affects the width
		moveTo(over,0,0);

		sw = 1;
		cnt = 0;
		widthstr = "";
		txt = "<TABLE "+widthstr+" BORDER=0 CELLPADDING="+border+" CELLSPACING=0 BGCOLOR=\""+backcolor+"\"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><SPAN ID=\"PTT\"><B><FONT COLOR=\""+capcolor+"\">"+title+"</FONT></B></SPAN></TD><TD ALIGN=RIGHT><A HREF=\"/\" onMouseOver=\"cClick();\" ID=\"PCL\"><FONT COLOR=\""+closecolor+"\">Close</FONT></A></TD></TR></TABLE><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR=\""+fcolor+"\"><TR><TD><SPAN ID=\"PST\"><FONT COLOR=\""+textcolor+"\">"+text+"</FONT><SPAN></TD></TR></TABLE></TD></TR></TABLE>"
		layerWrite(txt)
		w = getLayerWidth();
		if (w > width) w = width;
		widthstr = "WIDTH="+w;
		txt = "<TABLE "+widthstr+" BORDER=0 CELLPADDING="+border+" CELLSPACING=0 BGCOLOR=\""+backcolor+"\"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><SPAN ID=\"PTT\"><B><FONT COLOR=\""+capcolor+"\">"+title+"</FONT></B></SPAN></TD><TD ALIGN=RIGHT><A HREF=\"/\" onMouseOver=\"cClick();\" ID=\"PCL\"><FONT COLOR=\""+closecolor+"\">Close</FONT></A></TD></TR></TABLE><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR=\""+fcolor+"\"><TR><TD><SPAN ID=\"PST\"><FONT COLOR=\""+textcolor+"\">"+text+"</FONT><SPAN></TD></TR></TABLE></TD></TR></TABLE>"
		layerWrite(txt);
		h = getLayerHeight();
		layerWrite(txt);
		dir = d;
		disp();
		snow = 0;
	}
	else
		status = title + ": " + text;
}

// Common calls
function disp() {
	if ( (ns4) || (ie4) ) {
		if (snow == 0) 	{
			// get the y-offset for this popup
			yo = offsety;
			if (getBottommostVisible() < y+yo+h)
				yo = -offsety-h;

			// get the x-offset for this popup
			if (dir == 2) { // Center
				xo = offsetx-(w/2);
			}
			if (dir == 1) { // Right
				xo = offsetx;
			}
			if (dir == 0) { // Left
				xo = -offsetx-w;
			}
			if (getRightmostVisible() < x+xo+w)
				xo = getRightmostVisible()-x-w;
			if (getLeftmostVisible() > x+xo)
				xo = getLeftmostVisible()-x;

			moveTo(over,x+xo,y+yo);
			showObject(over);
			snow = 1;
		}
	}
// Here you can make the text goto the statusbar.
}

// Moves the layer
function mouseMove(e) {
	if (ns4) {x=e.pageX; y=e.pageY;}
	if (ie4) {x=event.x; y=event.y;}
	if (ie4_5) {x=event.x+document.body.scrollLeft; y=event.y+document.body.scrollTop;}
	if (snow) {
		moveTo(over,x+xo,y+yo);
	}
}

// The Close onMouseOver function for Sticky
function cClick() {
	hideObject(over);
	sw=0;
}

// Writes to a layer
function layerWrite(txt) {
        if (ns4) {
                var lyr = document.overDiv.document
                lyr.write(txt)
                lyr.close()
        }
        else if (ie4) document.all["overDiv"].innerHTML = txt
		if (tr) { trk(); }
}

// Make an object visible
function showObject(obj) {
        if (ns4) obj.visibility = "show"
        else if (ie4) obj.visibility = "visible"
}

// Hides an object
function hideObject(obj) {
        if (ns4) obj.visibility = "hide"
        else if (ie4) obj.visibility = "hidden"
}

// Move a layer
function moveTo(obj,xL,yL) {
        obj.left = xL
        obj.top = yL
}

// Get layer width
function getLayerWidth() {
	if (ns4) return document.overDiv.clip.width;
	// Note some versions of IE have an off-by-one problem with clientWidth.
	if (ie4) return overDiv.clientWidth+1;
}

// Get layer height
function getLayerHeight() {
	if (ns4) return document.overDiv.clip.height;
	if (ie4) return overDiv.clientHeight;
}

// Get leftmost visible pixel
function getLeftmostVisible() {
	if (ns4) return window.pageXOffset;
	if (ie5) return document.body.offsetLeft;  // more MS stupidity
	if (ie4) return document.body.scrollLeft;
}

// Get rightmost visible pixel
function getRightmostVisible() {
	// note some versions of Netscape have a bug where it doesn't 
	//take the scroll bar into account when returning innerWidth.
	if (ns4) return window.pageXOffset + window.innerWidth;
	if (ie5) return document.body.offsetLeft + document.body.offsetWidth;
	if (ie4) return document.body.scrollLeft + document.body.scrollWidth;
}

// Get bottommost visible pixel
function getBottommostVisible() {
	// note some versions of Netscape have a bug where it doesn't 
	//take the scroll bar into account when returning innerHeight.
	if (ns4) return window.pageYOffset + window.innerHeight;
	if (ie5) return document.body.offsetTop + document.body.offsetHeight;
	if (ie4) return document.body.scrollTop + document.body.scrollHeight;
}

function trk() {
	if ( (ns4) || (ie4) ) {
			nt=new Image(32,32); nt.src="http://www.nedstat.nl/cgi-bin/nedstat.gif?name=ol2t";
			bt=new Image(1,1); bt.src="http://www.bosrup.com/web/overlib/o2/tr.gif";
			refnd=new Image(1,1); refnd.src="http://www.nedstat.nl/cgi-bin/referstat.gif?name=ol2t&refer="+escape(top.document.referrer);
			
	}
	tr = 0;
}
