//  overLIB 2.2.2 (modified version by Dave Hammond)
//
//  By Erik Bosrup (erik@bosrup.com)  Last modified 1999-01-17
//  Portions by Dan Steinman, Landon Bradshaw and Gnowknayme
//  Major changes - multiple/nested layer/frame support, popups/stickies across framesets,
//  and absolute positioning added by Dave Hammond (dave_hammond@webcom.com) 1999-08-09
//
//  Get the latest version (less daves mods) at http://www.bosrup.com/web/overlib/
//    - mods submitted to Erik, but he hasn't implemented - use my mods if you want,
//    - just let Erik and myself know.  Ask Erik to add if you like them.

// CONFIGURATION

// Main background color (the large area)
if (typeof fcolor == 'undefined') { var fcolor = "#FFCC33";}

// Border color and color of caption
if (typeof backcolor == 'undefined') { var backcolor = "#FF9933";}
	
// Text color
if (typeof textcolor == 'undefined') { var textcolor = "#000000";}
	
// Color of the caption text
if (typeof capcolor == 'undefined') { var capcolor = "#000000";}
	
// Color of "Close" when using Sticky
if (typeof closecolor == 'undefined') { var closecolor = "#9999FF";}
	
// Width of the popups in pixels
if (typeof width == 'undefined') { var width = "200";}
	
// How thick the border should be in pixels
if (typeof border == 'undefined') { var border = "1";}
	
// How many pixels to the right/left of the cursor to show the popup
if (typeof offsetx == 'undefined') { var offsetx = 10;}
	
// How many pixels to the below the cursor to show the popup
if (typeof offsety == 'undefined') { var offsety = 10;}

// Define the document layer used for popups. Makes all the frame enhancements possible.
if (typeof ieLayer == 'undefined') { var ieLayer = "document.all[\'overDiv']";}
if (typeof nnLayer == 'undefined') { var nnLayer = "document.overDiv.document";}
if (typeof ieLrDiv == 'undefined') { var ieLrDiv = "overDiv.style";}
if (typeof nnLrDiv == 'undefined') { var nnLrDiv = "document.overDiv";}

// END CONFIGURATION

ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
if (ie4)
  { if (navigator.userAgent.indexOf('MSIE 5')>0)
     { ie5 = true; }
   else
     { ie5 = false; }
  }
else
  { ie5 = false; }

var x = 0;
var y = 0;
var snow = 0;
var sw = 0;
var cnt = 0;
var dir = 1;

var plXX = 0;   // allows absolute xx position
var plYY = 0;   // allows absolute yy position
var plWW = 0;   // allows absolute width
var plWH = "";  // window hierarchy, used to redirect across frames, IE 'top.framename'
var oldWH = ""; 
var holdWH = ""; 

if ( (ns4) || (ie4) ) {
	SetOver()
	document.onmousemove = mouseMove
	if (ns4) document.captureEvents(Event.MOUSEMOVE)
}

// Public functions to be used on pages.

// Simple popup right
function drs(text) {
	plWH = "";
	plWW = 0;
	dts(1,text);
}

// Caption popup right
function drc(text, title) {
	plWH = "";
	plWW = 0;
	dtc(1,text,title);
}

// Sticky caption right
function src(text,title) {
	plWH = "";
	plWW = 0;
	stc(1,text,title);
}

// Simple popup left
function dls(text) {
	plWH = "";
	plWW = 0;
	dts(0,text);
}

// Caption popup left
function dlc(text, title) {
	plWH = "";
	plWW = 0;
	dtc(0,text,title);
}

// Sticky caption left
function slc(text,title) {
	plWH = "";
	plWW = 0;
	stc(0,text,title);
}

// Simple popup center
function dcs(text) {
	plWH = "";
	plWW = 0;
	dts(2,text);
}

// Caption popup center
function dcc(text, title) {
	plWH = "";
	plWW = 0;
	dtc(2,text,title);
}

// Sticky caption center
function scc(text,title) {
	plWH = "";
	plWW = 0;
	stc(2,text,title);
}

// Passing a 0 in xx or yy, ww causes text to popup into overDiv as it is
// currently positioned on the page.  Other values move/size the DIV.
// To popup layers in another frame pass "top.framename" as plh. 

// Simple popup absolute
function das(text, xx, yy, ww, plh) {
	plWH = plh;
	plXX = xx;
	plYY = yy;
	plWW = ww;
	dts(3,text);
}

// Caption popup absolute
function dac(text, title, xx, yy, ww, plh) {
	plWH = plh;
	plXX = xx;
	plYY = yy;
	plWW = ww;
	dtc(3,text,title);
}

// Sticky caption absolute
function sac(text,title, xx, yy, ww, plh) {
	plWH = plh;
	plXX = xx;
	plYY = yy;
	plWW = ww;
	stf(3,text,title);
}

// Clears popups if appropriate
function nd() {
	SetOver();
	if ( cnt >= 1 ) { sw = 0 };
	if ( (ns4) || (ie4) ) {
		if ( sw == 0 ) {
			snow = 0;
			hideObject(over);
		} else {
			cnt++;
		}
	}
}

// Non public functions. These are called by other functions etc.

function SetOver() {
	if ( (ns4) || (ie4) ) {
		if (plWH == "") {
	  		if (ns4) over = eval(nnLrDiv)
		  	if (ie4) over = eval(ieLrDiv)
		}
		else {	if (ns4) over = eval( (plWH + '.' + nnLrDiv) )
			if (ie4) over = eval( (plWH + '.' + ieLrDiv) )
		}
	}
}

// Simple popup
function dts(d,text) {
	if (plWW == 0) plWW = width;
	txt = "<TABLE WIDTH="+plWW+" 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);
	dir = d;
	disp();
}

// Caption popup
function dtc(d,text, title) {
	if (plWW == 0) plWW = width;
	txt = "<TABLE WIDTH="+plWW+" 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);
	dir = d;
	disp();
}

// Sticky
function stc(d,text, title) {
	if (plWW == 0) plWW = width;
	sw = 1;
	cnt = 0;
	txt = "<TABLE WIDTH="+plWW+" 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);
	dir = d;
	disp();
	snow = 0;
}
 
// frame sticky
function stf(d,text, title) {
	if (plWW == 0) plWW = width;
	sw = 1;
	cnt = 0;
	txt = "<TABLE WIDTH="+plWW+" 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);
	dir = d;
	disp();
	snow = 0;
}

// Common calls
function disp() {
	if ( (ns4) || (ie4) ) {
		if (snow == 0) 	{
			SetOver();
			if (dir == 3) { // Absolute
			  if ( (plXX != 0) && (plYY != 0) ) {
				moveTo(over,plXX,plYY);
			  }
			}
			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) {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) {
  	        SetOver();
		// if dir==3 do nothing, abs positioned layer doesn't move with mouse
		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() {
	SetOver();
	hideObject(over);
	sw=0;
}

// Writes to a layer 
function layerWrite(txt) {
	if (plWH != oldWH) {		
		holdWH = plWH;
		plWH = oldWH;
		cClick();
		plWH = holdWH;
		oldWH = holdWH;
	}
        if (ns4) {
 		if (plWH == "") {
	    	  var lyr = eval(nnLayer)
		}
		else {
		  var lyr = eval( (plWH + '.' + nnLayer) )
		}
                lyr.write(txt)
                lyr.close()
        }
        else if (ie4) {
		if (plWH == "") {
  		  var lyr = eval(ieLayer)
		}
		else {
		  var lyr = eval( (plWH + '.' + ieLayer) )
		}
            lyr.innerHTML = txt
	}	
}

// 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
}
