//\//////////////////////////////////////////////////////////////////////////////////

//\  overLIB 3.33  --  This notice must remain untouched at all times.

//\  Copyright Erik Bosrup 1998-2001. All rights reserved.

//\

//\  By Erik Bosrup (erik@bosrup.com).  Last modified 2001-01-26.

//\  Portions by Dan Steinman (dansteinman.com). Additions by other people are

//\  listed on the overLIB homepage.

//\

//\  Get the latest version at http://www.bosrup.com/web/overlib/

//\

//\  This script is published under an open source license. Please read the license

//\  agreement online at: http://www.bosrup.com/web/overlib/license.html

//\  If you have questions regarding the license please contact erik@bosrup.com.

//\

//\  This script library was originally created for personal use. By request it has

//\  later been made public. This is free software. Do not sell this as your own

//\  work, or remove this copyright notice. For full details on copying or changing

//\  this script please read the license agreement at the link above.

//\

//\  Please give credit on sites that use overLIB and submit changes of the script

//\  so other people can use them as well. This script is free to use, don't abuse.

//\//////////////////////////////////////////////////////////////////////////////////

//\mini





////////////////////////////////////////////////////////////////////////////////////

// CONSTANTS

// Don't touch these. :)

////////////////////////////////////////////////////////////////////////////////////

var INARRAY		=	1;

var CAPARRAY		=	2;

var STICKY		=	3;

var BACKGROUND		=	4;

var NOCLOSE		=	5;

var CAPTION		=	6;

var LEFT		=	7;

var RIGHT		=	8;

var CENTER		=	9;

var OFFSETX		=	10;

var OFFSETY		=	11;

var FGCOLOR		=	12;

var BGCOLOR		=	13;

var TEXTCOLOR		=	14;

var CAPCOLOR		=	15;

var CLOSECOLOR		=	16;

var WIDTH		=	17;

var BORDER		=	18;

var STATUS		=	19;

var AUTOSTATUS		=	20;

var AUTOSTATUSCAP	=	21;

var HEIGHT		=	22;

var CLOSETEXT		=	23;

var SNAPX		=	24;

var SNAPY		=	25;

var FIXX		=	26;

var FIXY		=	27;

var FGBACKGROUND	=	28;

var BGBACKGROUND	=	29;

var PADX		=	30;

var PADY		=	31;

var PADX2		=	32;

var PADY2		=	33;

var FULLHTML		=	34;

var ABOVE		=	35;

var BELOW		=	36;

var CAPICON		=	37;

var TEXTFONT		=	38;

var CAPTIONFONT		=	39;

var CLOSEFONT		=	40;

var TEXTSIZE		=	41;

var CAPTIONSIZE		=	42;

var CLOSESIZE		=	43;

var FRAME		=	44;

var TIMEOUT		=	45;

var FUNCTION		=	46;

var DELAY		=	47;

var HAUTO		=	48;

var VAUTO		=	49;







////////////////////////////////////////////////////////////////////////////////////

// DEFAULT CONFIGURATION

// You don't have to change anything here if you don't want to. All of this can be

// changed on your html page or through an overLIB call.

////////////////////////////////////////////////////////////////////////////////////



// Main background color (the large area)

// Usually a bright color (white, yellow etc)

if (typeof ol_fgcolor == 'undefined') { var ol_fgcolor = "#000000";}

	

// Border color and color of caption

// Usually a dark color (black, brown etc)

if (typeof ol_bgcolor == 'undefined') { var ol_bgcolor = "#000000";}

	

// Text color

// Usually a dark color

if (typeof ol_textcolor == 'undefined') { var ol_textcolor = "#FFFFFF";}

	

// Color of the caption text

// Usually a bright color

if (typeof ol_capcolor == 'undefined') { var ol_capcolor = "#FFFFFF";}

	

// Color of "Close" when using Sticky

// Usually a semi-bright color

if (typeof ol_closecolor == 'undefined') { var ol_closecolor = "#9999FF";}



// Font face for the main text

if (typeof ol_textfont == 'undefined') { var ol_textfont = "Verdana,Arial,Helvetica";}



// Font face for the caption

if (typeof ol_captionfont == 'undefined') { var ol_captionfont = "Verdana,Arial,Helvetica";}



// Font face for the close text

if (typeof ol_closefont == 'undefined') { var ol_closefont = "Verdana,Arial,Helvetica";}



// Font size for the main text

if (typeof ol_textsize == 'undefined') { var ol_textsize = "2";}



// Font size for the caption

if (typeof ol_captionsize == 'undefined') { var ol_captionsize = "1";}



// Font size for the close text

if (typeof ol_closesize == 'undefined') { var ol_closesize = "1";}



// Width of the popups in pixels

// 100-300 pixels is typical

if (typeof ol_width == 'undefined') { var ol_width = "165";}



// How thick the ol_border should be in pixels

// 1-3 pixels is typical

if (typeof ol_border == 'undefined') { var ol_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 ol_offsetx == 'undefined') { var ol_offsetx = 12;}

	

// How many pixels to the below the cursor to show the popup

// Values between 3 and 12 are best

if (typeof ol_offsety == 'undefined') { var ol_offsety = 1;}



// Default text for popups

// Should you forget to pass something to overLIB this will be displayed.

if (typeof ol_text == 'undefined') { var ol_text = "Default Text"; }



// Default caption

// You should leave this blank or you will have problems making non caps popups.

if (typeof ol_cap == 'undefined') { var ol_cap = ""; }



// Decides if sticky popups are default.

// 0 for non, 1 for stickies.

if (typeof ol_sticky == 'undefined') { var ol_sticky = 0; }



// Default background image. Better left empty unless you always want one.

if (typeof ol_background == 'undefined') { var ol_background = "transp.gif"; }



// Text for the closing sticky popups.

// Normal is "Close".

if (typeof ol_close == 'undefined') { var ol_close = "Close"; }



// Default vertical alignment for popups.

// It's best to leave RIGHT here. Other options are LEFT and CENTER.

if (typeof ol_hpos == 'undefined') { var ol_hpos = RIGHT; }



// Default status bar text when a popup is invoked.

if (typeof ol_status == 'undefined') { var ol_status = ""; }



// If the status bar automatically should load either text or caption.

// 0=nothing, 1=text, 2=caption

if (typeof ol_autostatus == 'undefined') { var ol_autostatus = 0; }



// Default height for popup. Often best left alone.

if (typeof ol_height == 'undefined') { var ol_height = -1; }



// Horizontal grid spacing that popups will snap to.

// 0 makes no grid, anything else will cause a snap to that grid spacing.

if (typeof ol_snapx == 'undefined') { var ol_snapx = 0; }



// Vertical grid spacing that popups will snap to.

// 0 makes no grid, andthing else will cause a snap to that grid spacing.

if (typeof ol_snapy == 'undefined') { var ol_snapy = 0; }



// Sets the popups horizontal position to a fixed column.

// Anything above -1 will cause fixed position.

if (typeof ol_fixx == 'undefined') { var ol_fixx = -1; }



// Sets the popups vertical position to a fixed row.

// Anything above -1 will cause fixed position.

if (typeof ol_fixy == 'undefined') { var ol_fixy = -1; }



// Background image for the popups inside.

if (typeof ol_fgbackground == 'undefined') { var ol_fgbackground = ""; }



// Background image for the popups frame.

if (typeof ol_bgbackground == 'undefined') { var ol_bgbackground = ""; }



// How much horizontal left padding text should get by default when BACKGROUND is used.

if (typeof ol_padxl == 'undefined') { var ol_padxl = 1; }



// How much horizontal right padding text should get by default when BACKGROUND is used.

if (typeof ol_padxr == 'undefined') { var ol_padxr = 1; }



// How much vertical top padding text should get by default when BACKGROUND is used.

if (typeof ol_padyt == 'undefined') { var ol_padyt = 1; }



// How much vertical bottom padding text should get by default when BACKGROUND is used.

if (typeof ol_padyb == 'undefined') { var ol_padyb = 1; }



// If the user by default must supply all html for complete popup control.

// Set to 1 to activate, 0 otherwise.

if (typeof ol_fullhtml == 'undefined') { var ol_fullhtml = 0; }



// Default vertical position of the popup. Default should normally be BELOW.

// ABOVE only works when HEIGHT is defined.

if (typeof ol_vpos == 'undefined') { var ol_vpos = BELOW; }



// Default height of popup to use when placing the popup above the cursor.

if (typeof ol_aboveheight == 'undefined') { var ol_aboveheight = 0; }



// Default icon to place next to the popups caption.

if (typeof ol_caption == 'undefined') { var ol_capicon = ""; }



// Default frame. We default to current frame if there is no frame defined.

if (typeof ol_frame == 'undefined') { var ol_frame = self; }



// Default timeout. By default there is no timeout.

if (typeof ol_timeout == 'undefined') { var ol_timeout = 0; }



// Default javascript funktion. By default there is none.

if (typeof ol_function == 'undefined') { var ol_function = Function(); }



// Default timeout. By default there is no timeout.

if (typeof ol_delay == 'undefined') { var ol_delay = 0; }



// If overLIB should decide the horizontal placement.

if (typeof ol_hauto == 'undefined') { var ol_hauto = 0; }



// If overLIB should decide the vertical placement.

if (typeof ol_vauto == 'undefined') { var ol_vauto = 0; }







////////////////////////////////////////////////////////////////////////////////////

// ARRAY CONFIGURATION

// You don't have to change anything here if you don't want to. The following

// arrays can be filled with text and html if you don't wish to pass it from

// your html page.

////////////////////////////////////////////////////////////////////////////////////



// Array with texts.

var ol_texts = new Array("Array Text 0", "Array Text 1");



// Array with captions.

var ol_caps = new Array("Array Caption 0", "Array Caption 1");













////////////////////////////////////////////////////////////////////////////////////

// END CONFIGURATION

////////////////////////////////////////////////////////////////////////////////////







////////////////////////////////////////////////////////////////////////////////////

// INIT

////////////////////////////////////////////////////////////////////////////////////





// Runtime variables init. Used for runtime only, don't change, not for config!

var o3_text = "";

var o3_cap = "";

var o3_sticky = 0;

var o3_background = "";

var o3_close = "Close";

var o3_hpos = RIGHT;

var o3_offsetx = 2;

var o3_offsety = 2;

var o3_fgcolor = "";

var o3_bgcolor = "";

var o3_textcolor = "";

var o3_capcolor = "";

var o3_closecolor = "";

var o3_width = 100;

var o3_border = 1;

var o3_status = "";

var o3_autostatus = 0;

var o3_height = -1;

var o3_snapx = 0;

var o3_snapy = 0;

var o3_fixx = -1;

var o3_fixy = -1;

var o3_fgbackground = "";

var o3_bgbackground = "";

var o3_padxl = 0;

var o3_padxr = 0;

var o3_padyt = 0;

var o3_padyb = 0;

var o3_fullhtml = 0;

var o3_vpos = BELOW;

var o3_aboveheight = 0;

var o3_capicon = "";

var o3_textfont = "Verdana,Arial,Helvetica";

var o3_captionfont = "Verdana,Arial,Helvetica";

var o3_closefont = "Verdana,Arial,Helvetica";

var o3_textsize = "1";

var o3_captionsize = "1";

var o3_closesize = "1";

var o3_frame = self;

var o3_timeout = 0;

var o3_timerid = 0;

var o3_allowmove = 0;

var o3_function = Function();

var o3_delay = 0;

var o3_delayid = 0;

var o3_hauto = 0;

var o3_vauto = 0;





// Display state variables

var o3_x = 0;

var o3_y = 0;

var o3_allow = 0;

var o3_showingsticky = 0;

var o3_removecounter = 0;



// Our layer

var over = null;





// Decide browser version

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;

	}

}





// Capture events, alt. diffuses the overlib function.

if ( (ns4) || (ie4) || (ns6)) {

	document.onmousemove = mouseMove

	if (ns4) document.captureEvents(Event.MOUSEMOVE)

} else {

	overlib = no_overlib;

	nd = no_overlib;

	ver3fix = true;

}





// Fake function for 3.0 users.

function no_overlib() {

	return ver3fix;

}







////////////////////////////////////////////////////////////////////////////////////

// PUBLIC FUNCTIONS

////////////////////////////////////////////////////////////////////////////////////





// overlib(arg0, ..., argN)

// Loads parameters into global runtime variables.

function overlib() {

	

	// Load defaults to runtime.

	o3_text = ol_text;

	o3_cap = ol_cap;

	o3_sticky = ol_sticky;

	o3_background = ol_background;

	o3_close = ol_close;

	o3_hpos = ol_hpos;

	o3_offsetx = ol_offsetx;

	o3_offsety = ol_offsety;

	o3_fgcolor = ol_fgcolor;

	o3_bgcolor = ol_bgcolor;

	o3_textcolor = ol_textcolor;

	o3_capcolor = ol_capcolor;

	o3_closecolor = ol_closecolor;

	o3_width = ol_width;

	o3_border = ol_border;

	o3_status = ol_status;

	o3_autostatus = ol_autostatus;

	o3_height = ol_height;

	o3_snapx = ol_snapx;

	o3_snapy = ol_snapy;

	o3_fixx = ol_fixx;

	o3_fixy = ol_fixy;

	o3_fgbackground = ol_fgbackground;

	o3_bgbackground = ol_bgbackground;

	o3_padxl = ol_padxl;

	o3_padxr = ol_padxr;

	o3_padyt = ol_padyt;

	o3_padyb = ol_padyb;

	o3_fullhtml = ol_fullhtml;

	o3_vpos = ol_vpos;

	o3_aboveheight = ol_aboveheight;

	o3_capicon = ol_capicon;

	o3_textfont = ol_textfont;

	o3_captionfont = ol_captionfont;

	o3_closefont = ol_closefont;

	o3_textsize = ol_textsize;

	o3_captionsize = ol_captionsize;

	o3_closesize = ol_closesize;

	o3_timeout = ol_timeout;

	o3_function = ol_function;

	o3_delay = ol_delay;

	o3_hauto = ol_hauto;

	o3_vauto = ol_vauto;



	// Special for frame support, over must be reset...

	if ( (ns4) || (ie4) || (ns6) ) {

		o3_frame = ol_frame;

		if (ns4) over = o3_frame.document.overDiv

		if (ie4) over = o3_frame.overDiv.style

		if (ns6) over = o3_frame.document.getElementById("overDiv");

	}

	

	

	// What the next argument is expected to be.

	var parsemode = -1;

	

	var ar = arguments;



	for (i = 0; i < ar.length; i++) {

		

		if (parsemode == 0) {

			// Arg is command

			if (ar[i] == INARRAY) { parsemode = INARRAY; }

			if (ar[i] == CAPARRAY) { parsemode = CAPARRAY; }

			if (ar[i] == STICKY) { parsemode = opt_STICKY(ar[i]); }

			if (ar[i] == BACKGROUND) { parsemode = BACKGROUND; }

			if (ar[i] == NOCLOSE) { parsemode = opt_NOCLOSE(ar[i]); }

			if (ar[i] == CAPTION) { parsemode = CAPTION; }

			if (ar[i] == LEFT) { parsemode = opt_HPOS(ar[i]); }

			if (ar[i] == RIGHT) { parsemode = opt_HPOS(ar[i]); }

			if (ar[i] == CENTER) { parsemode = opt_HPOS(ar[i]); }

			if (ar[i] == OFFSETX) { parsemode = OFFSETX; }

			if (ar[i] == OFFSETY) { parsemode = OFFSETY; }

			if (ar[i] == FGCOLOR) { parsemode = FGCOLOR; }

			if (ar[i] == BGCOLOR) { parsemode = BGCOLOR; }

			if (ar[i] == TEXTCOLOR) { parsemode = TEXTCOLOR; }

			if (ar[i] == CAPCOLOR) { parsemode = CAPCOLOR; }

			if (ar[i] == CLOSECOLOR) { parsemode = CLOSECOLOR; }

			if (ar[i] == WIDTH) { parsemode = WIDTH; }

			if (ar[i] == BORDER) { parsemode = BORDER; }

			if (ar[i] == STATUS) { parsemode = STATUS; }

			if (ar[i] == AUTOSTATUS) { parsemode = opt_AUTOSTATUS(ar[i]); }

			if (ar[i] == AUTOSTATUSCAP) { parsemode = opt_AUTOSTATUSCAP(ar[i]); }

			if (ar[i] == HEIGHT) { parsemode = HEIGHT; }

			if (ar[i] == CLOSETEXT) { parsemode = CLOSETEXT; }

			if (ar[i] == SNAPX) { parsemode = SNAPX; }

			if (ar[i] == SNAPY) { parsemode = SNAPY; }

			if (ar[i] == FIXX) { parsemode = FIXX; }

			if (ar[i] == FIXY) { parsemode = FIXY; }

			if (ar[i] == FGBACKGROUND) { parsemode = FGBACKGROUND; }

			if (ar[i] == BGBACKGROUND) { parsemode = BGBACKGROUND; }

			if (ar[i] == PADX) { parsemode = PADX; }

			if (ar[i] == PADY) { parsemode = PADY; }

			if (ar[i] == FULLHTML) { parsemode = opt_FULLHTML(ar[i]); }

			if (ar[i] == ABOVE) { parsemode = opt_VPOS(ar[i]); }

			if (ar[i] == BELOW) { parsemode = opt_VPOS(ar[i]); }

			if (ar[i] == CAPICON) { parsemode = CAPICON; }

			if (ar[i] == TEXTFONT) { parsemode = TEXTFONT; }

			if (ar[i] == CAPTIONFONT) { parsemode = CAPTIONFONT; }

			if (ar[i] == CLOSEFONT) { parsemode = CLOSEFONT; }

			if (ar[i] == TEXTSIZE) { parsemode = TEXTSIZE; }

			if (ar[i] == CAPTIONSIZE) { parsemode = CAPTIONSIZE; }

			if (ar[i] == CLOSESIZE) { parsemode = CLOSESIZE; }

			if (ar[i] == FRAME) { parsemode = FRAME; }

			if (ar[i] == TIMEOUT) { parsemode = TIMEOUT; }

			if (ar[i] == FUNCTION) { parsemode = FUNCTION; }

			if (ar[i] == DELAY) { parsemode = DELAY; }

			if (ar[i] == HAUTO) { parsemode = opt_HAUTO(ar[i]); }

			if (ar[i] == VAUTO) { parsemode = opt_VAUTO(ar[i]); }





		} else {

			if (parsemode < 0) {

				// Arg is maintext, unless INARRAY

				if (ar[i] == INARRAY) {

					parsemode = INARRAY;

				} else {

					o3_text = ar[i];

					parsemode = 0;

				}

			} else {

				// Arg is option for command

				if (parsemode == INARRAY) { parsemode = opt_INARRAY(ar[i]); }

				if (parsemode == CAPARRAY) { parsemode = opt_CAPARRAY(ar[i]); }

				if (parsemode == BACKGROUND) { parsemode = opt_BACKGROUND(ar[i]); }

				if (parsemode == CAPTION) { parsemode = opt_CAPTION(ar[i]); }

				if (parsemode == OFFSETX) { parsemode = opt_OFFSETX(ar[i]); }

				if (parsemode == OFFSETY) { parsemode = opt_OFFSETY(ar[i]); }

				if (parsemode == FGCOLOR) { parsemode = opt_FGCOLOR(ar[i]); }

				if (parsemode == BGCOLOR) { parsemode = opt_BGCOLOR(ar[i]); }

				if (parsemode == TEXTCOLOR) { parsemode = opt_TEXTCOLOR(ar[i]); }

				if (parsemode == CAPCOLOR) { parsemode = opt_CAPCOLOR(ar[i]); }

				if (parsemode == CLOSECOLOR) { parsemode = opt_CLOSECOLOR(ar[i]); }

				if (parsemode == WIDTH) { parsemode = opt_WIDTH(ar[i]); }

				if (parsemode == BORDER) { parsemode = opt_BORDER(ar[i]); }

				if (parsemode == STATUS) { parsemode = opt_STATUS(ar[i]); }

				if (parsemode == HEIGHT) { parsemode = opt_HEIGHT(ar[i]); }

				if (parsemode == CLOSETEXT) { parsemode = opt_CLOSETEXT(ar[i]); }

				if (parsemode == SNAPX) { parsemode = opt_SNAPX(ar[i]); }

				if (parsemode == SNAPY) { parsemode = opt_SNAPY(ar[i]); }

				if (parsemode == FIXX) { parsemode = opt_FIXX(ar[i]); }

				if (parsemode == FIXY) { parsemode = opt_FIXY(ar[i]); }

				if (parsemode == FGBACKGROUND) { parsemode = opt_FGBACKGROUND(ar[i]); }

				if (parsemode == BGBACKGROUND) { parsemode = opt_BGBACKGROUND(ar[i]); }

				if (parsemode == PADX2) { parsemode = opt_PADX2(ar[i]); } // must be before PADX

				if (parsemode == PADY2) { parsemode = opt_PADY2(ar[i]); } // must be before PADY

				if (parsemode == PADX) { parsemode = opt_PADX(ar[i]); }

				if (parsemode == PADY) { parsemode = opt_PADY(ar[i]); }

				if (parsemode == CAPICON) { parsemode = opt_CAPICON(ar[i]); }

				if (parsemode == TEXTFONT) { parsemode = opt_TEXTFONT(ar[i]); }

				if (parsemode == CAPTIONFONT) { parsemode = opt_CAPTIONFONT(ar[i]); }

				if (parsemode == CLOSEFONT) { parsemode = opt_CLOSEFONT(ar[i]); }

				if (parsemode == TEXTSIZE) { parsemode = opt_TEXTSIZE(ar[i]); }

				if (parsemode == CAPTIONSIZE) { parsemode = opt_CAPTIONSIZE(ar[i]); }

				if (parsemode == CLOSESIZE) { parsemode = opt_CLOSESIZE(ar[i]); }

				if (parsemode == FRAME) { parsemode = opt_FRAME(ar[i]); }

				if (parsemode == TIMEOUT) { parsemode = opt_TIMEOUT(ar[i]); }

                                if (parsemode == FUNCTION) { parsemode = opt_FUNCTION(ar[i]); }

				if (parsemode == DELAY) { parsemode = opt_DELAY(ar[i]); }



			}

		}

	}



	if (o3_delay == 0) {

		return overlib333();

	} else {

		o3_delayid = setTimeout("overlib333()", o3_delay);



		if (o3_sticky) {

			return false;

		} else {

			return true;

		}

	}

}







// Clears popups if appropriate

function nd() {

	if ( o3_removecounter >= 1 ) { o3_showingsticky = 0 };

	if ( (ns4) || (ie4) || (ns6) ) {

		if ( o3_showingsticky == 0 ) {

			o3_allowmove = 0;

			if (over != null) hideObject(over);

		} else {

			o3_removecounter++;

		}

	}

	

	return true;

}















////////////////////////////////////////////////////////////////////////////////////

// OVERLIB 3.33 FUNCTION

////////////////////////////////////////////////////////////////////////////////////





// This function decides what it is we want to display and how we want it done.

function overlib333() {



	// Make layer content

	var layerhtml;



	if (o3_background != "" || o3_fullhtml) {

		// Use background instead of box.

		layerhtml = ol_content_background(o3_text, o3_background, o3_fullhtml);

	} else {

		// They want a popup box.



		// Prepare popup background

		if (o3_fgbackground != "") {

			o3_fgbackground = "BACKGROUND=\""+o3_fgbackground+"\"";

		}

		if (o3_bgbackground != "") {

			o3_bgbackground = "BACKGROUND=\""+o3_bgbackground+"\"";

		}



		// Prepare popup colors

		if (o3_fgcolor != "") {

			o3_fgcolor = "BGCOLOR=\""+o3_fgcolor+"\"";

		}

		if (o3_bgcolor != "") {

			o3_bgcolor = "BGCOLOR=\""+o3_bgcolor+"\"";

		}



		// Prepare popup height

		if (o3_height > 0) {

			o3_height = "HEIGHT=" + o3_height;

		} else {

			o3_height = "";

		}



		// Decide which kinda box.

		if (o3_cap == "") {

			// Plain

			layerhtml = ol_content_simple(o3_text);

		} else {

			// With caption

			if (o3_sticky) {

				// Show close text

				layerhtml = ol_content_caption(o3_text, o3_cap, o3_close);

			} else {

				// No close text

				layerhtml = ol_content_caption(o3_text, o3_cap, "");

			}

		}

	}

	

	// We want it to stick!

	if (o3_sticky) {

		o3_showingsticky = 1;

		o3_removecounter = 0;

	}

	

	// Write layer

	layerWrite(layerhtml);

	

	// Prepare status bar

	if (o3_autostatus > 0) {

		o3_status = o3_text;

		if (o3_autostatus > 1) {

			o3_status = o3_cap;

		}

	}



	// When placing the layer the first time, even stickies may be moved.

	o3_allowmove = 0;



	// Initiate a timer for timeout

	if (o3_timeout > 0) {          

		if (o3_timerid > 0) clearTimeout(o3_timerid);

		o3_timerid = setTimeout("cClick()", o3_timeout);

	}



	// Show layer

	disp(o3_status);



	// Stickies should stay where they are.	

	if (o3_sticky) {

		o3_allowmove = 0;

		return false;

	} else {

		return true;

	}

}







////////////////////////////////////////////////////////////////////////////////////

// LAYER GENERATION FUNCTIONS

////////////////////////////////////////////////////////////////////////////////////



// Makes simple table without caption

function ol_content_simple(text) {

	txt = "<TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 "+o3_bgcolor+" "+o3_height+"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 "+o3_fgcolor+" "+o3_fgbackground+" "+o3_height+"><TR><TD VALIGN=TOP><FONT FACE=\""+o3_textfont+"\" COLOR=\""+o3_textcolor+"\" SIZE=\""+o3_textsize+"\">"+text+"</FONT></TD></TR></TABLE></TD></TR></TABLE>";

	set_background("");

	return txt;

}



// Makes table with caption and optional close link

function ol_content_caption(text, title, close) {

	closing = "";

	if (close != "") {

		closing = "<TD ALIGN=RIGHT><A HREF=\"/\" onMouseOver=\"cClick();\"><FONT COLOR=\""+o3_closecolor+"\" FACE=\""+o3_closefont+"\" SIZE=\""+o3_closesize+"\">"+close+"</FONT></A></TD>";

	}

	if (o3_capicon != "") {

		o3_capicon = "<IMG SRC=\""+o3_capicon+"\"> ";

	}

	txt = "<TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 "+o3_bgcolor+" "+o3_bgbackground+" "+o3_height+"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><B><FONT COLOR=\""+o3_capcolor+"\" FACE=\""+o3_captionfont+"\" SIZE=\""+o3_captionsize+"\">"+o3_capicon+title+"</FONT></B></TD>"+closing+"</TR></TABLE><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 "+o3_fgcolor+" "+o3_fgbackground+" "+o3_height+"><TR><TD VALIGN=TOP><FONT COLOR=\""+o3_textcolor+"\" FACE=\""+o3_textfont+"\" SIZE=\""+o3_textsize+"\">"+text+"</FONT></TD></TR></TABLE></TD></TR></TABLE>";

	set_background("");

	return txt;

}



// Sets the background picture, padding and lost more. :)

function ol_content_background(text, picture, hasfullhtml) {

	if (hasfullhtml) {

		txt = text;

	} else {

		txt = "<TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING=0 CELLSPACING=0 HEIGHT="+o3_height+"><TR><TD COLSPAN=3 HEIGHT="+o3_padyt+"></TD></TR><TR><TD WIDTH="+o3_padxl+"></TD><TD VALIGN=TOP WIDTH="+(o3_width-o3_padxl-o3_padxr)+"><FONT FACE=\""+o3_textfont+"\" COLOR=\""+o3_textcolor+"\" SIZE=\""+o3_textsize+"\">"+text+"</FONT></TD><TD WIDTH="+o3_padxr+"></TD></TR><TR><TD COLSPAN=3 HEIGHT="+o3_padyb+"></TD></TR></TABLE>";

	}

	set_background(picture);

	return txt;

}



// Loads a picture into the div.

function set_background(pic) {

	if (pic == "") {

		if (ie4) over.backgroundImage = "none";

		if (ns6) over.style.backgroundImage = "none";

	} else {

		if (ns4) {

			over.background.src = pic;

		} else if (ie4) {

			over.backgroundImage = "url("+pic+")";

		} else if (ns6) {

			over.style.backgroundImage = "url("+pic+")";

		}

	}

}







////////////////////////////////////////////////////////////////////////////////////

// HANDLING FUNCTIONS

////////////////////////////////////////////////////////////////////////////////////





// Displays the popup

function disp(statustext) {

	if ( (ns4) || (ie4) || (ns6) ) {

		if (o3_allowmove == 0) 	{

			placeLayer();

			showObject(over);

			o3_allowmove = 1;

		}

	}



	if (statustext != "") {

		self.status = statustext;

	}

}



// Decides where we want the popup.

function placeLayer() {

	var placeX, placeY;

	

	// HORIZONTAL PLACEMENT

	if (o3_fixx > -1) {

		// Fixed position

		placeX = o3_fixx;

	} else {

		winoffset = (ie4) ? o3_frame.document.body.scrollLeft : o3_frame.pageXOffset;

		if (ie4) iwidth = o3_frame.document.body.clientWidth;

		if (ns4) iwidth = o3_frame.innerWidth; // was screwed in mozilla, fixed now?

		if (ns6) iwidth = o3_frame.outerWidth;

		

		// If HAUTO, decide what to use.

		if (o3_hauto == 1) {

			if ( (o3_x - winoffset) > ((eval(iwidth)) / 2)) {

				o3_hpos = LEFT;

			} else {

				o3_hpos = RIGHT;

			}

		}

		

		// From mouse

		if (o3_hpos == CENTER) { // Center

			placeX = o3_x+o3_offsetx-(o3_width/2);

		}

		if (o3_hpos == RIGHT) { // Right

			placeX = o3_x+o3_offsetx;

			if ( (eval(placeX) + eval(o3_width)) > (winoffset + iwidth) ) {

				placeX = iwidth + winoffset - o3_width;

				if (placeX < 0) placeX = 0;

			}

		}

		if (o3_hpos == LEFT) { // Left

			placeX = o3_x-o3_offsetx-o3_width;

			if (placeX < winoffset) placeX = winoffset;

		}

	

		// Snapping!

		if (o3_snapx > 1) {

			var snapping = placeX % o3_snapx;

			if (o3_hpos == LEFT) {

				placeX = placeX - (o3_snapx + snapping);

			} else {

				// CENTER and RIGHT

				placeX = placeX + (o3_snapx - snapping);

			}

			if (placeX < 0) placeX = 0;

		}

	}



	

	

	// VERTICAL PLACEMENT

	if (o3_fixy > -1) {

		// Fixed position

		placeY = o3_fixy;

	} else {

		// If VAUTO, decide what to use.

		if (o3_vauto == 1) {

			if (ie4) iheight = o3_frame.document.body.clientHeight;

			if (ns4) iheight = o3_frame.innerHeight;

			if (ns6) iheight = o3_frame.outerHeight;



			iheight = (eval(iheight)) / 2;

			if (o3_y > iheight) {

				o3_vpos = ABOVE;

			} else {

				o3_vpos = BELOW;

			}

		}



		// From mouse

		if (o3_aboveheight > 0 && o3_vpos == ABOVE) {

			placeY = o3_y - (o3_aboveheight + o3_offsety);

		} else {

			// BELOW

			placeY = o3_y + o3_offsety;

		}



		// Snapping!

		if (o3_snapy > 1) {

			var snapping = placeY % o3_snapy;

			

			if (o3_aboveheight > 0 && o3_vpos == ABOVE) {

				placeY = placeY - (o3_snapy + snapping);

			} else {

				placeY = placeY + (o3_snapy - snapping);

			}

			

			if (placeY < 0) placeY = 0;

		}

	}





	// Actually move the object.	

	repositionTo(over, placeX, placeY);

}





// Moves the layer

function mouseMove(e) {

	if ( (ns4) || (ns6) ) {o3_x=e.pageX; o3_y=e.pageY;}

	if (ie4) {o3_x=event.x; o3_y=event.y;}

	if (ie5) {o3_x=event.x+o3_frame.document.body.scrollLeft; o3_y=event.y+o3_frame.document.body.scrollTop;}

	

	if (o3_allowmove == 1) {

		placeLayer();

	}

}



// The Close onMouseOver function for stickies

function cClick() {

	hideObject(over);

	o3_showingsticky = 0;

}





// Makes sure target frame has overLIB

function compatibleframe(frameid) {        

	if (ns4) {

		if (typeof frameid.document.overDiv =='undefined') return false;

	} else if (ie4) {

		if (typeof frameid.document.all["overDiv"] =='undefined') return false;

	} else if (ns6) {

		if (frameid.document.getElementById('overDiv') == null) return false;

	}



	return true;

}







////////////////////////////////////////////////////////////////////////////////////

// LAYER FUNCTIONS

////////////////////////////////////////////////////////////////////////////////////





// Writes to a layer

function layerWrite(txt) {

	txt += "\n";

	

        if (ns4) {

                var lyr = o3_frame.document.overDiv.document



                lyr.write(txt)

                lyr.close()

        } else if (ie4) {

		o3_frame.document.all["overDiv"].innerHTML = txt

	} else if (ns6) {

		range = o3_frame.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";

        

	if (o3_timerid > 0) clearTimeout(o3_timerid);

	if (o3_delayid > 0) clearTimeout(o3_delayid);

	o3_timerid = 0;

	o3_delayid = 0;

        self.status = "";

}



// Move a layer

function repositionTo(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";

	}

}











////////////////////////////////////////////////////////////////////////////////////

// PARSER FUNCTIONS

////////////////////////////////////////////////////////////////////////////////////





// Sets text from array.

function opt_INARRAY(id) {

	o3_text = ol_texts[id];

	return 0;

}



// Sets caption from array.

function opt_CAPARRAY(id) {

	o3_cap = ol_caps[id];	

	return 0;

}



// Sets stickiness.

function opt_STICKY(unused) {

	o3_sticky = 1;

	return 0;

}



// Sets background picture.

function opt_BACKGROUND(file) {

	o3_background = file;

	return 0;

}



// Sets use of close text.

function opt_NOCLOSE(unused) {

	o3_close = "";

	return 0;

}



// Sets caption.

function opt_CAPTION(text) {

	o3_cap = text;

	return 0;

}



// Sets hpos, for LEFT, RIGHT and CENTER.

function opt_HPOS(pos) {

	o3_hpos = pos;

	return 0;

}



// Sets the x offset

function opt_OFFSETX(offset) {

	o3_offsetx = offset;

	return 0;

}



// Sets the y offset

function opt_OFFSETY(offset) {

	o3_offsety = offset;

	return 0;

}





// Sets the fg color

function opt_FGCOLOR(clr) {

	o3_fgcolor = clr;

	return 0;

}



// Sets the bg color

function opt_BGCOLOR(clr) {

	o3_bgcolor = clr;

	return 0;

}



// Sets the text color

function opt_TEXTCOLOR(clr) {

	o3_textcolor = clr;

	return 0;

}



// Sets the caption color

function opt_CAPCOLOR(clr) {

	o3_capcolor = clr;

	return 0;

}



// Sets the close color

function opt_CLOSECOLOR(clr) {

	o3_closecolor = clr;

	return 0;

}



// Sets the popup width

function opt_WIDTH(pixels) {

	o3_width = pixels;

	return 0;

}



// Sets the popup border width

function opt_BORDER(pixels) {

	o3_border = pixels;

	return 0;

}



// Sets the status bar text

function opt_STATUS(text) {

	o3_status = text;

	return 0;

}



// Sets that status bar text to the text

function opt_AUTOSTATUS(val) {

	o3_autostatus = 1;

	return 0;

}



// Sets that status bar text to the caption

function opt_AUTOSTATUSCAP(val) {

	o3_autostatus = 2;

	return 0;

}



// Sets the popup height

function opt_HEIGHT(pixels) {

	o3_height = pixels;

	o3_aboveheight = pixels;

	return 0;

}



// Sets the close text.

function opt_CLOSETEXT(text) {

	o3_close = text;

	return 0;

}



// Sets horizontal snapping

function opt_SNAPX(pixels) {

	o3_snapx = pixels;

	return 0;

}



// Sets vertical snapping

function opt_SNAPY(pixels) {

	o3_snapy = pixels;

	return 0;

}



// Sets horizontal position

function opt_FIXX(pos) {

	o3_fixx = pos;

	return 0;

}



// Sets vertical position

function opt_FIXY(pos) {

	o3_fixy = pos;

	return 0;

}



// Sets the fg background

function opt_FGBACKGROUND(picture) {

	o3_fgbackground = picture;

	return 0;

}



// Sets the bg background

function opt_BGBACKGROUND(picture) {

	o3_bgbackground = picture;

	return 0;

}



// Sets the left x padding for background

function opt_PADX(pixels) {

	o3_padxl = pixels;

	return PADX2;

}



// Sets the top y padding for background

function opt_PADY(pixels) {

	o3_padyt = pixels;

	return PADY2;

}



// Sets the right x padding for background

function opt_PADX2(pixels) {

	o3_padxr = pixels;

	return 0;

}



// Sets the bottom y padding for background

function opt_PADY2(pixels) {

	o3_padyb = pixels;

	return 0;

}



// Sets that user provides full html.

function opt_FULLHTML(unused) {

	o3_fullhtml = 1;

	return 0;

}



// Sets vpos, for ABOVE and BELOW

function opt_VPOS(pos) {

	o3_vpos = pos;

	return 0;

}



// Sets the caption icon.

function opt_CAPICON(icon) {

	o3_capicon = icon;

	return 0;

}



// Sets the text font

function opt_TEXTFONT(fontname) {

	o3_textfont = fontname;

	return 0;

}



// Sets the caption font

function opt_CAPTIONFONT(fontname) {

	o3_captionfont = fontname;

	return 0;

}



// Sets the close font

function opt_CLOSEFONT(fontname) {

	o3_closefont = fontname;

	return 0;

}



// Sets the text font size

function opt_TEXTSIZE(fontsize) {

	o3_textsize = fontsize;

	return 0;

}



// Sets the caption font size

function opt_CAPTIONSIZE(fontsize) {

	o3_captionsize = fontsize;

	return 0;

}



// Sets the close font size

function opt_CLOSESIZE(fontsize) {

	o3_closesize = fontsize;

	return 0;

}



// Defines which frame we should point to.

function opt_FRAME(frm) {

        o3_frame = compatibleframe(frm) ? frm : ol_frame;



	if ( (ns4) || (ie4 || (ns6)) ) {

		if (ns4) over = o3_frame.document.overDiv;

		if (ie4) over = o3_frame.overDiv.style;

		if (ns6) over = o3_frame.document.getElementById("overDiv");

	}



	return 0;

}



// Sets the popup timeout (note: 1 sec = 1000)

function opt_TIMEOUT(maxtime) {

	o3_timeout = maxtime;

	return 0;

}



// Calls an external function

function opt_FUNCTION(callme) {

	o3_text = callme()

	return 0;

}



// Sets the popup delay (note: 1 sec = 1000)

function opt_DELAY(waittime) {

	o3_delay = waittime;

	return 0;

}



// Sets the auto horizontal option

function opt_HAUTO(onoff) {

	if (o3_hauto == 0) {

		o3_hauto = 1;

	} else {

		o3_hauto = 0;

	}

	return 0;

}



// Sets the auto vertical option

function opt_VAUTO(onoff) {

	if (o3_vauto == 0) {

		o3_vauto = 1;

	} else {

		o3_vauto = 0;

	}

	return 0;

}





//end (For internal purposes.)

////////////////////////////////////////////////////////////////////////////////////

// OVERLIB 2 COMPATABILITY FUNCTIONS

// If you aren't upgrading you can remove the below section.

////////////////////////////////////////////////////////////////////////////////////



// Converts old 0=left, 1=right and 2=center into constants.

function vpos_convert(d) {

	if (d == 0) {

		d = LEFT;

	} else {

		if (d == 1) {

			d = RIGHT;

		} else {

			d = CENTER;

		}

	}

	

	return d;

}



// Simple popup

function dts(d,text) {

	o3_hpos = vpos_convert(d);

	overlib(text, o3_hpos, CAPTION, "");

}



// Caption popup

function dtc(d,text, title) {

	o3_hpos = vpos_convert(d);

	overlib(text, CAPTION, title, o3_hpos);

}



// Sticky

function stc(d,text, title) {

	o3_hpos = vpos_convert(d);

	overlib(text, CAPTION, title, o3_hpos, STICKY);

}



// 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);

}


