////////////////////////////////////////////////////////////////////////////////////
//  Based on overLIB 2.22  --  Please leave this notice.
//	and overLIB 3.33
//
//  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.
////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////
// CONFIGURATION
////////////////////////////////////////////////////////////////////////////////////

// Main background color (the large area)
// Usually a bright color (white, yellow etc)
	if (typeof fcolor == 'undefined') { var fcolor = "#99CCFF";}
	
// Border color and color of caption
// Usually a dark color (black, brown etc)
	if (typeof backcolor == 'undefined') { var backcolor = "#000080";}
	
// Text color
// Usually a dark color
	if (typeof textcolor == 'undefined') { var textcolor = "#000080";}
	
// 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 = "100";}
	
// How thick the border should be in pixels
// 1-3 pixels is typical
	if (typeof border == 'undefined') { var border = "2";}
	
	
// 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 = 20;}
	
// 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 = 15;}
// Font face
	if (typeof textfont == 'undefined') { var textfont = "Verdana,Arial,Helvetica,sans-serif"; }
// Font size
	if (typeof textsize == 'undefined') { var textsize = "-2"; }
		
////////////////////////////////////////////////////////////////////////////////////
// END CONFIGURATION
////////////////////////////////////////////////////////////////////////////////////

var ns4 = (document.layers)? true:false;
var ns6 = (document.getElementById)? true:false;
var ie4 = (document.all)? true:false;
var ie5 = false;

// Microsoft Stupidity Check(tm).
if (ie4) {
	if (navigator.userAgent.indexOf('MSIE 5')>0) {
		ie5 = true;
	}
	if (ns6) {
		ns6 = false;
	}
}
var over = null;
var x = 0;
var y = 0;
var snow = 0;
var sw = 0;
var cnt = 0;
var dir = 1;
if ( (ns4) || (ie4) || (ns6)) {
	document.onmousemove = mouseMove
	if (ns4) document.captureEvents(Event.MOUSEMOVE)
	if (ns4) over = self.document.overDiv
	if (ie4) over = self.overDiv.style
	if (ns6) over = self.document.getElementById("overDiv");
} else {
	overlib = no_overlib;
	nd = no_overlib;
	ver3fix = true;
}

// Fake function for 3.0 users.
function no_overlib() {
	return ver3fix;
}


// Public functions to be used on pages.

// Simple popup right
function drs(text) {
	dts(1,text);
	return (true);
}

// Caption popup right
function drc(text, title) {
	dtc(1,text,title);
	return (true);
}

// Sticky caption right
function src(text,title) {
	stc(1,text,title);
	return (true);
}

// Simple popup left
function dls(text) {
	dts(0,text);
	return (true);
}

// Caption popup left
function dlc(text, title) {
	dtc(0,text,title);
	return (true);
}

// Sticky caption left
function slc(text,title) {
	stc(0,text,title);
	return (true);
}

// Simple popup center
function dcs(text) {
	dts(2,text);
	return (true);
}

// Caption popup center
function dcc(text, title) {
	dtc(2,text,title);
	return (true);
}

// Sticky caption center
function scc(text,title) {
	stc(2,text,title);
	return (true);
}

// Clears popups if appropriate
function nd() {
	if ( cnt >= 1 ) { sw = 0 };
	if ( (ns4) || (ie4) || (ns6)) {
		if ( sw == 0 ) {
			snow = 0;
			if (over !=null) hideObject(over);
		} else {
			cnt++;
		}
	}
	return (true);
}

// Non public functions. These are called by other functions etc.

// Simple popup
function dts(d,text) {
	txt = "<TABLE WIDTH="+width+" 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=\""+textfont+"\" COLOR=\""+textcolor+"\" SIZE=\""+textsize+"\"><b>"+text+"</b></FONT></TD></TR></TABLE></TD></TR></TABLE>"
	layerWrite(txt);
	dir = d;
	disp();
}

// Caption popup
function dtc(d,text, title) {
	txt = "<TABLE WIDTH="+width+" BORDER=\"0\" CELLPADDING="+border+" CELLSPACING=0 BGCOLOR=\""+backcolor+"\"><TR><TD><TABLE WIDTH=\"100%\" BORDER=0 CELLPADDING=2 CELLSPACING=0><TR><TD><B><FONT FACE=\""+textfont+"\" SIZE=\""+textsize+"\" COLOR=\""+capcolor+"\">"+title+"</FONT></B></TD></TR></TABLE><TABLE WIDTH=\"100%\" BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR=\""+fcolor+"\"><TR><TD><FONT  FACE=\""+textfont+"\" SIZE=\""+textsize+"\" COLOR=\""+textcolor+"\">"+text+"</FONT></TD></TR></TABLE></TD></TR></TABLE>"
 	layerWrite(txt);
	dir = d;
	disp();
}

// Sticky
function stc(d,text, title) {
	sw = 1;
	cnt = 0;
	txt = "<TABLE WIDTH="+width+" BORDER=\"0\" CELLPADDING="+border+" CELLSPACING=0 BGCOLOR=\""+backcolor+"\"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><B><FONT FACE=\""+textfont+"\" SIZE=\""+textsize+"\" COLOR=\""+capcolor+"\">"+title+"</FONT></B></TD><TD ALIGN=RIGHT><A HREF=\"/\" onMouseOver=\"cClick();\"><FONT FACE=\""+textfont+"\" SIZE=\""+textsize+"\" COLOR=\""+closecolor+"\">Close</FONT></A></TD></TR></TABLE><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR=\""+fcolor+"\"><TR><TD><FONT FACE=\""+textfont+"\" SIZE=\""+textsize+"\" COLOR=\""+textcolor+"\">"+text+"</FONT></TD></TR></TABLE></TD></TR></TABLE>"
	layerWrite(txt);
	dir = d;
	disp();
	snow = 0;
}

// Common calls
function disp() {
	if ((ns4) || (ie4) || (ns6)) {
		if (snow == 0) 	{
			if (dir == 2) { // Center
				moveTo(over,x+offsetx-(width/2),y+offsety);
			}
			if (dir == 1) { // Right
				moveTo(over,x+offsetx,y+offsety);
			}
			if (dir == 0) { // Left
				moveTo(over,x-offsetx-width,y+offsety);
			}
			showObject(over);
			snow = 1;
		}
	}
// Here you can make the text goto the statusbar.
}

// Moves the layer
function mouseMove(e) {
	if ((ns4) || (ns6)) {x=e.pageX; y=e.pageY;}
	if (ie4) {x=event.x; y=event.y;}
	if (ie5) {x=event.x+document.body.scrollLeft; y=event.y+document.body.scrollTop;}
	if (snow) {
		if (dir == 2) { // Center
			moveTo(over,x+offsetx-(width/2),y+offsety);
		}
		if (dir == 1) { // Right
			moveTo(over,x+offsetx,y+offsety);
		}
		if (dir == 0) { // Left
			moveTo(over,x-offsetx-width,y+offsety);
		}
	}
}

// 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;
	} else if (ns6) {
		range = self.document.createRange();
		range.setStartBefore(over);
		domfrag = range.createContextualFragment(txt);
		while (over.hasChildNodes()) {
			over.removeChild(over.lastChild);
		}
 		over.appendChild(domfrag);
	}
}

// Make an object visible
function showObject(obj) {
        if (ns4) obj.visibility = "show";
        else if (ie4) obj.visibility = "visible";
	else if (ns6) obj.style.visibility = "visible";
}

// Hides an object
function hideObject(obj) {
        if (ns4) obj.visibility = "hide";
        else if (ie4) obj.visibility = "hidden";
	else if (ns6) obj.style.visibility = "hidden";
}

// Move a layer
function moveTo(obj,xL,yL) {
	if ( (ns4) || (ie4) ) {
	        obj.left = xL;
	        obj.top = yL;
	} else if (ns6) {
		obj.style.left = xL + "px";
		obj.style.top = yL+ "px";
	}
}

