//\//////////////////////////////////////////////////////////////////////////////////
//\ overlib351mws.js  --  Based on overlib v3.51, plus bug-fixes or enhancements
//\ by me, Robert E. Boughner (REB), Dennis Sandow (DS), or Victor D. (VD), or
//\ adapted from Jason Anderson's (JA) jwin library. The mods are flagged with the
//\ string "//FM", followed as appropriate by additional slashes and initials.  The
//\ Change History and Command Reference for overlib351mws.js can be accessed via:
//\
//\	http://www.macridesweb.com/oltest/	-- Foteos Macrides
//\
//\//////////////////////////////////////////////////////////////////////////////////
//\ overLIB 3.51  --  This notice must remain untouched at all times.
//\ Copyright Erik Bosrup 1998-2002. All rights reserved.
//\
//\ By Erik Bosrup (erik@bosrup.com).  Last modified 2002-11-01.
//\ 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 CGCOLOR=14; //FM
var TEXTCOLOR=15;
var CAPCOLOR=16;
var CLOSECOLOR=17;
var WIDTH=18;
var WRAP=19; //FM/REB
var BORDER=20;
var BASE=21; //FM
var STATUS=22;
var AUTOSTATUS=23;
var AUTOSTATUSCAP=24;
var HEIGHT=25;
var CLOSETEXT=26;
var SNAPX=27;
var SNAPY=28;
var FIXX=29;
var FIXY=30;
var RELX=31; //FM/DS/REB
var RELY=32; //FM/DS/REB
var MIDX=33; //FM
var MIDY=34; //FM
var FGBACKGROUND=35;
var BGBACKGROUND=36;
var CGBACKGROUND=37; //FM
var PADX=38;
var PADY=39;
var FULLHTML=40;
var ABOVE=41;
var BELOW=42;
var VCENTER=43; //FM
var CAPICON=44;
var TEXTFONT=45;
var CAPTIONFONT=46;
var CLOSEFONT=47;
var TEXTSIZE=48;
var CAPTIONSIZE=49;
var CLOSESIZE=50;
var FRAME=51;
var TIMEOUT=52;
var FUNCTION=53;
var DELAY=54;
var HAUTO=55;
var VAUTO=56;
var NOJUSTX=57; //FM
var NOJUSTY=58; //FM
var DRAGGABLE=59; //FM/VD/REB
var CLOSECLICK=60;
var FGCLASS=61;
var BGCLASS=62;
var CGCLASS=63; //FM
var TEXTFONTCLASS=64;
var CAPTIONFONTCLASS=65;
var CLOSEFONTCLASS=66;
var REF=67; //FM/REB
var REFC=68; //FM/REB
var REFP=69; //FM/REB
var REFX=70; //FM/REB
var REFY=71; //FM/REB
var SCROLL=72; //FM

////////////////////////////////////////////////////////////////////////////////////
// DEFAULT CONFIGURATION -- You don't have to change anything here if you don't want
// to. Any of this can be changed on your html page or through an overLIB call.
// See overlibConfig.txt for descriptions.
////////////////////////////////////////////////////////////////////////////////////

////////////////  COLORS  ////////////////
if(typeof ol_fgcolor=='undefined') var ol_fgcolor="#00040C";                                  //486BB3 //666666
if(typeof ol_bgcolor=='undefined') var ol_bgcolor="";                                         //#2F287C
if(typeof ol_cgcolor=='undefined') var ol_cgcolor="#666666";                                  //333399
if(typeof ol_textcolor=='undefined') var ol_textcolor="#F7F7E7";
if(typeof ol_capcolor=='undefined') var ol_capcolor="#FD9900";
if(typeof ol_closecolor=='undefined') var ol_closecolor="#F2F2FF";

////////////////  FONTS  ////////////////
if(typeof ol_textfont=='undefined') var ol_textfont="Arial";
if(typeof ol_captionfont=='undefined') var ol_captionfont="Arial";
if(typeof ol_closefont=='undefined') var ol_closefont="Arial";
if(typeof ol_textsize=='undefined') var ol_textsize="1pt";
if(typeof ol_captionsize=='undefined') var ol_captionsize="2";
if(typeof ol_closesize=='undefined') var ol_closesize="1";

////////////////  DIMENSIONS  ////////////////
if(typeof ol_width=='undefined') var ol_width="178";
if(typeof ol_height=='undefined') var ol_height= -1;
if(typeof ol_border=='undefined') var ol_border="0";                                          //1
if(typeof ol_base=='undefined') var ol_base="0";

////////////////  TEXT, CAPTION, STATUS  ////////////////
if(typeof ol_text=='undefined') var ol_text="";                                               //Default Text
if(typeof ol_wrap=='undefined') var ol_wrap=0;
if(typeof ol_cap=='undefined') var ol_cap="";
if(typeof ol_capicon=='undefined') var ol_capicon="";
if(typeof ol_status=='undefined') var ol_status="";
if(typeof ol_autostatus=='undefined') var ol_autostatus=0;

////////////////  BACKGROUND  ////////////////
if(typeof ol_background=='undefined') var ol_background="";
if(typeof ol_fgbackground=='undefined') var ol_fgbackground="graphics/overlibBKD.gif";
if(typeof ol_bgbackground=='undefined') var ol_bgbackground="";
if(typeof ol_cgbackground=='undefined') var ol_cgbackground="graphics/bg_title_08.gif";

////////////////  STICKIES  ////////////////
if(typeof ol_sticky=='undefined') var ol_sticky=0;
if(typeof ol_close=='undefined') var ol_close="";;                                            //Close&nbsp;
if(typeof ol_noclose=='undefined') var ol_noclose=0;
if(typeof ol_closeclick=='undefined') var ol_closeclick=0;

////////////////  POSITIONING  ////////////////
if(typeof ol_hauto=='undefined') var ol_hauto=1;
if(typeof ol_vauto=='undefined') var ol_vauto=1;
if(typeof ol_hpos=='undefined') var ol_hpos=RIGHT;
if(typeof ol_vpos=='undefined') var ol_vpos=BELOW;
if(typeof ol_offsetx=='undefined') var ol_offsetx=0;
if(typeof ol_offsety=='undefined') var ol_offsety=0;
if(typeof ol_snapx=='undefined') var ol_snapx=0;
if(typeof ol_snapy=='undefined') var ol_snapy=0;
if(typeof ol_fixx=='undefined') var ol_fixx= -1;
if(typeof ol_fixy=='undefined') var ol_fixy= -1;
if(typeof ol_relx=='undefined') var ol_relx=null;
if(typeof ol_rely=='undefined') var ol_rely=null;
if(typeof ol_midx=='undefined') var ol_midx=null;
if(typeof ol_midy=='undefined') var ol_midy=null;
if(typeof ol_padxl=='undefined') var ol_padxl=1;
if(typeof ol_padxr=='undefined') var ol_padxr=1;
if(typeof ol_padyt=='undefined') var ol_padyt=0;
if(typeof ol_padyb=='undefined') var ol_padyb=0;
if(typeof ol_nojustx=='undefined') var ol_nojustx=0;
if(typeof ol_nojusty=='undefined') var ol_nojusty=0;

////////////////  GENERAL  ////////////////
if(typeof ol_fullhtml=='undefined') var ol_fullhtml=0;
if(typeof ol_frame=='undefined') var ol_frame=self;
if(typeof ol_timeout=='undefined') var ol_timeout=0;
if(typeof ol_delay=='undefined') var ol_delay=0;
if(typeof ol_function=='undefined') var ol_function=null;
if(typeof ol_draggable=='undefined') var ol_draggable=0;
if(typeof ol_scroll=='undefined') var ol_scroll=0;

////////////////  STYLES  ////////////////
if(typeof ol_fgclass=='undefined') var ol_fgclass="";
if(typeof ol_bgclass=='undefined') var ol_bgclass="";
if(typeof ol_cgclass=='undefined') var ol_cgclass="";
if(typeof ol_textfontclass=='undefined') var ol_textfontclass="";
if(typeof ol_captionfontclass=='undefined') var ol_captionfontclass="caption";
if(typeof ol_closefontclass=='undefined') var ol_closefontclass="";

if(typeof ol_ref=='undefined') var ol_ref=""; //FM/REB
if(typeof ol_refc=='undefined') var ol_refc='UL';
if(typeof ol_refp=='undefined') var ol_refp='UL';
if(typeof ol_refx=='undefined') var ol_refx=0;
if(typeof ol_refy=='undefined') var ol_refy=0;

////////////////  In 3.50, but not in 3.51mws  ////////////////
// Default height of popup to use when placing the popup above the cursor.
  //if (typeof ol_aboveheight == 'undefined') { var ol_aboveheight = 0; }

// This variable determines if you want to use CSS or inline definitions.
// CSSOFF=no CSS    CSSSTYLE=use CSS inline styles    CSSCLASS=use classes
  //if (typeof ol_css == 'undefined') { var ol_css = CSSSTYLE; }

// Unit to be used for the text padding above
// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
// Options include "px", "%", "in", "cm" and more
  //if (typeof ol_padunit == 'undefined') { var ol_padunit = "px";}

// Unit to be used for height of popup
// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
// Options include "px", "%", "in", "cm" and more
  //if (typeof ol_heightunit == 'undefined') { var ol_heightunit = "px";}

// Unit to be used for width of popup
// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
// Options include "px", "%", "in", "cm" and more
  //if (typeof ol_widthunit == 'undefined') { var ol_widthunit = "px";}

// Font size unit for the main text
// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  //if (typeof ol_textsizeunit == 'undefined') { var ol_textsizeunit = "px";}

// Decoration of the main text ("none", "underline", "line-through" or "blink")
// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
if (typeof ol_textdecoration == 'undefined') { var ol_textdecoration = "none";}

// Font style of the main text ("normal" or "italic")
// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  //if (typeof ol_textstyle == 'undefined') { var ol_textstyle = "normal";}

// Font weight of the main text ("normal", "bold", "bolder", "lighter", ect.)
// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  //if (typeof ol_textweight == 'undefined') { var ol_textweight = "normal";}

// Font size unit for the caption
// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  //if (typeof ol_captionsizeunit == 'undefined') { var ol_captionsizeunit = "px";}

// Decoration of the caption ("none", "underline", "line-through" or "blink")
// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  //if (typeof ol_captiondecoration == 'undefined') { var ol_captiondecoration = "none";}

// Font style of the caption ("normal" or "italic")
// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  //if (typeof ol_captionstyle == 'undefined') { var ol_captionstyle = "normal";}

// Font weight of the caption ("normal", "bold", "bolder", "lighter", ect.)
// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  //if (typeof ol_captionweight == 'undefined') { var ol_captionweight = "bold";}

// Font size unit for the close text
// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  //if (typeof ol_closesizeunit == 'undefined') { var ol_closesizeunit = "px";}

// Decoration of the close text ("none", "underline", "line-through" or "blink")
// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  //if (typeof ol_closedecoration == 'undefined') { var ol_closedecoration = "none";}

// Font style of the close text ("normal" or "italic")
// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  //if (typeof ol_closestyle == 'undefined') { var ol_closestyle = "normal";}

// Font weight of the close text ("normal", "bold", "bolder", "lighter", ect.)
// Only used if CSS inline styles are being used (ol_css = CSSSTYLE)
  //if (typeof ol_closeweight == 'undefined') { var ol_closeweight = "normal";}

// Default height of popup to use when placing the popup above the cursor.
  //if (typeof ol_aboveheight == 'undefined') { var ol_aboveheight = 0; }

////////////////////////////////////////////////////////////////////////////////////
// ARRAY CONFIGURATION - See overlibConfig.txt for descriptions.
////////////////////////////////////////////////////////////////////////////////////

if(typeof ol_texts=='undefined') var ol_texts=new Array("Text 0","Text 1");
if(typeof ol_caps=='undefined') var ol_caps=new Array("Caption 0","Caption 1");

////////////////////////////////////////////////////////////////////////////////////
// END CONFIGURATION
// Don't change anything below this line, all configuration is above.
////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////
// 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_noclose=0;
var o3_hpos=RIGHT;
var o3_offsetx=10;
var o3_offsety=10;
var o3_fgcolor="";
var o3_bgcolor="";
var o3_cgcolor=""; //FM
var o3_textcolor="";
var o3_capcolor="";
var o3_closecolor="";
var o3_width=200;
var o3_wrap=0; //FM/REB
var o3_border=1;
var o3_base=0; //FM
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_relx=null; //FM/DS/REB
var o3_rely=null; //FM/DS/REB
var o3_midx=null; //FM
var o3_midy=null; //FM
var o3_ref=""; //FM/REB
var o3_refc='UL'; //FM/REB
var o3_refp='UL'; //FM/REB
var o3_refx=0; //FM/REB
var o3_refy=0; //FM/REB
var o3_fgbackground="";
var o3_bgbackground="";
var o3_cgbackground=""; //FM
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_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=null; 
var o3_delay=0;
var o3_delayid=0;
var o3_showid=0; //FM
var o3_hauto=0;
var o3_vauto=0;
var o3_nojustx=0; //FM
var o3_nojusty=0; //FM
var o3_draggable=0; //FM
var o3_closeclick=0;
var o3_fgclass="";
var o3_bgclass="";
var o3_cgclass=""; //FM
var o3_textfontclass="";
var o3_captionfontclass="";
var o3_closefontclass="";

// Display state variables
var o3_x=0;
var o3_y=0;
var o3_allow=0;
var o3_showingsticky=0;
var o3_removecounter=0;
var o3_dragging=0; //FM
var o3_scroll=0; //FM
var oMMv; //FM/REB

// Our layer
var over=null;
var fnRef;
var hSwitch; //FM/REB

// Decide browser version
var ns4=(navigator.appName=='Netscape'&&parseInt(navigator.appVersion)==4);
var ns6=(document.getElementById)?true:false;
var ie4=(document.all)?true:false;
if(ie4) var docRoot='document.body';
var ie5=false;
if(ns4) {
	var oW=window.innerWidth;
	var oH=window.innerHeight;
	window.onresize=
	 function() {if(oW!=window.innerWidth||oH!=window.innerHeight) location.reload();}
}

// Microsoft Stupidity Check(tm).
if(ie4) {
	if((navigator.userAgent.indexOf('MSIE 5')>0)||(navigator.userAgent.indexOf('MSIE 6')>0)) {
		if(document.compatMode&&document.compatMode=='CSS1Compat')
			docRoot='document.documentElement';
		ie5=true;
	}
	ns6=false;
}

// Capture events, alt. diffuses the overlib function. //FM/REB
if(ns4||ie4||ns6) {
	var fN,mseHandler=ol_mouseMove,capExtent=document;
	var re=/function[ ]+(\w+)\(/;
	if(document.onmousemove||(!ie4&&window.onmousemove)){
		if(window.onmousemove) capExtent=window;
		fN=capExtent.onmousemove.toString().match(re);
		var str='ol_mouseMove(e); '+fN[1]+'(e);';
		mseHandler=new Function('e',str);
	}
	capExtent.onmousemove=mseHandler;
	if(ns4) capExtent.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_noclose=ol_noclose;
	o3_hpos=ol_hpos;
	o3_offsetx=ol_offsetx;
	o3_offsety=ol_offsety;
	o3_fgcolor=ol_fgcolor;
	o3_bgcolor=ol_bgcolor;
	o3_cgcolor=ol_cgcolor; //FM
	o3_textcolor=ol_textcolor;
	o3_capcolor=ol_capcolor;
	o3_closecolor=ol_closecolor;
	o3_width=ol_width;
	o3_wrap=ol_wrap; //FM/REB
	o3_border=ol_border;
	o3_base=ol_base; //FM
	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_relx=ol_relx; //FM/DS/REB
	o3_rely=ol_rely; //FM/DS/REB
	o3_midx=ol_midx; //FM
	o3_midy=ol_midy; //FM
	o3_scroll=ol_scroll; //FM
	o3_ref=ol_ref; //FM/REB
	o3_refc=ol_refc; //FM/REB
	o3_refp=ol_refp; //FM/REB
	o3_refx=ol_refx; //FM/REB
	o3_refy=ol_refy; //FM/REB
	o3_fgbackground=ol_fgbackground;
	o3_bgbackground=ol_bgbackground;
	o3_cgbackground=ol_cgbackground; //FM
	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_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;
	o3_nojustx=ol_nojustx; //FM
	o3_nojusty=ol_nojusty; //FM
	o3_draggable=ol_draggable; //FM
	o3_closeclick=ol_closeclick;
	o3_fgclass=ol_fgclass;
	o3_bgclass=ol_bgclass;
	o3_cgclass=ol_cgclass; //FM
	o3_textfontclass=ol_textfontclass;
	o3_captionfontclass=ol_captionfontclass;
	o3_closefontclass=ol_closefontclass;
	fnRef='';
	hSwitch=false; //FM/REB

	// Special for frame support, over must be reset...
	if(ns4||ie4||ns6) {
		if(over) cClick();
		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,udf,v=null;
	var ar=arguments;
	udf=(!ar.length?1:0);
	for(i=0;i<ar.length;i++) {
		if(parsemode<0) {
			// Arg is maintext, unless its a PARAMETER
			if(typeof ar[i]=='number') {
				udf=1;
				i--;
			} else {
				o3_text=ar[i];
			}
			parsemode=0;
		} else {
			// Note: NS4 doesn't like switch cases with vars.
			if(ar[i]==INARRAY){udf=0;o3_text=ol_texts[ar[++i]];continue;}
			if(ar[i]==CAPARRAY){o3_cap=ol_caps[ar[++i]];continue;}
			if(ar[i]==STICKY){o3_sticky=1;continue;}
			if(ar[i]==BACKGROUND){o3_background=ar[++i];continue;}
			if(ar[i]==NOCLOSE){o3_noclose=(o3_noclose==0)?1:0;if(o3_noclose) opt_NOCLOSE();continue;} //FM/REB
			if(ar[i]==CAPTION){o3_cap=ar[++i];continue;}
			if(ar[i]==CENTER||ar[i]==LEFT||ar[i]==RIGHT){o3_hpos=ar[i];continue;}
			if(ar[i]==OFFSETX){o3_offsetx=ar[++i];continue;}
			if(ar[i]==OFFSETY){o3_offsety=ar[++i];continue;}
			if(ar[i]==FGCOLOR){o3_fgcolor=ar[++i];continue;}
			if(ar[i]==BGCOLOR){o3_bgcolor=ar[++i];continue;}
			if(ar[i]==CGCOLOR){o3_cgcolor=ar[++i];continue;} //FM
			if(ar[i]==TEXTCOLOR){o3_textcolor=ar[++i];continue;}
			if(ar[i]==CAPCOLOR){o3_capcolor=ar[++i];continue;}
			if(ar[i]==CLOSECOLOR){o3_closecolor=ar[++i];continue;}
			if(ar[i]==WIDTH){o3_width=ar[++i];continue;}
			if(ar[i]==WRAP){o3_wrap=(o3_wrap==0)?1:0;continue;} //FM/REB
			if(ar[i]==BORDER){o3_border=ar[++i];continue;}
			if(ar[i]==BASE){o3_base=ar[++i];continue;} //FM
			if(ar[i]==STATUS){o3_status=ar[++i];continue;}
			if(ar[i]==AUTOSTATUS){o3_autostatus=(o3_autostatus==1)?0:1;continue;}
			if(ar[i]==AUTOSTATUSCAP){o3_autostatus=(o3_autostatus==2)?0:2;continue;}
			if(ar[i]==HEIGHT){o3_height=ar[++i];continue;}
			if(ar[i]==CLOSETEXT){o3_close=ar[++i];continue;}
			if(ar[i]==SNAPX){o3_snapx=ar[++i];continue;}
			if(ar[i]==SNAPY){o3_snapy=ar[++i];continue;}
			if(ar[i]==FIXX){o3_fixx=ar[++i];continue;}
			if(ar[i]==FIXY){o3_fixy=ar[++i];continue;}
			if(ar[i]==RELX){o3_relx=ar[++i];continue;} //FM/DS/REB
			if(ar[i]==RELY){o3_rely=ar[++i];continue;} //FM/DS/REB
			if(ar[i]==MIDX){o3_midx=ar[++i];continue;} //FM
			if(ar[i]==MIDY){o3_midy=ar[++i];continue;} //FM
			if(ar[i]==SCROLL){o3_scroll=(o3_scroll==0)?1:0;continue;} //FM
			if(ar[i]==REF){o3_ref=ar[++i];continue;} //FM/REB
			if(ar[i]==REFC){o3_refc=ar[++i];continue;} //FM/REB
			if(ar[i]==REFP){o3_refp=ar[++i];continue;} //FM/REB
			if(ar[i]==REFX){o3_refx=ar[++i];continue;} //FM/REB
			if(ar[i]==REFY){o3_refy=ar[++i];continue;} //FM/REB
			if(ar[i]==FGBACKGROUND){o3_fgbackground=ar[++i];continue;}
			if(ar[i]==BGBACKGROUND){o3_bgbackground=ar[++i];continue;}
			if(ar[i]==CGBACKGROUND){o3_cgbackground=ar[++i];continue;} //FM
			if(ar[i]==PADX){o3_padxl=ar[++i];o3_padxr=ar[++i];continue;}
			if(ar[i]==PADY){o3_padyt=ar[++i];o3_padyb=ar[++i];continue;}
			if(ar[i]==FULLHTML){o3_fullhtml=1;continue;}
			if(ar[i]==BELOW||ar[i]==ABOVE||ar[i]==VCENTER){o3_vpos=ar[i];continue;} //FM
			if(ar[i]==CAPICON){o3_capicon=ar[++i];continue;}
			if(ar[i]==TEXTFONT){o3_textfont=ar[++i];continue;}
			if(ar[i]==CAPTIONFONT){o3_captionfont=ar[++i];continue;}
			if(ar[i]==CLOSEFONT){o3_closefont=ar[++i];continue;}
			if(ar[i]==TEXTSIZE){o3_textsize=ar[++i];continue;}
			if(ar[i]==CAPTIONSIZE){o3_captionsize=ar[++i];continue;}
			if(ar[i]==CLOSESIZE){o3_closesize=ar[++i];continue;}
			if(ar[i]==FRAME){opt_FRAME(ar[++i]);continue;}
			if(ar[i]==TIMEOUT){o3_timeout=ar[++i];continue;}
			if(ar[i]==FUNCTION){udf=0;if(typeof ar[i+1]!='number') v=ar[++i];opt_FUNCTION(v);continue;}
			if(ar[i]==DELAY){o3_delay=ar[++i];continue;}
			if(ar[i]==HAUTO){o3_hauto=(o3_hauto==0)?1:0;continue;}
			if(ar[i]==VAUTO){o3_vauto=(o3_vauto==0)?1:0;continue;}
			if(ar[i]==NOJUSTX){o3_nojustx=(o3_nojustx==0)?1:0;continue;} //FM
			if(ar[i]==NOJUSTY){o3_nojusty=(o3_nojusty==0)?1:0;continue;} //FM
			if(ar[i]==DRAGGABLE){o3_draggable=(o3_draggable==0)?1:0;continue;} //FM
			if(ar[i]==CLOSECLICK){o3_closeclick=(o3_closeclick==0)?1:0;continue;}
			if(ar[i]==FGCLASS){o3_fgclass=ar[++i];continue;}
			if(ar[i]==BGCLASS){o3_bgclass=ar[++i];continue;}
			if(ar[i]==CGCLASS){o3_cgclass=ar[++i];continue;} //FM
			if(ar[i]==TEXTFONTCLASS){o3_textfontclass=ar[++i];continue;}
			if(ar[i]==CAPTIONFONTCLASS){o3_captionfontclass=ar[++i];continue;}
			if(ar[i]==CLOSEFONTCLASS){o3_closefontclass=ar[++i];continue;}
		}
	}
	if(udf&&o3_function) o3_text=o3_function();

	if(o3_delay==0) {
		return overlib351();
	} else {
		o3_delayid=setTimeout("overlib351()",o3_delay);
		// Set status line now if specified. //FM
		if(o3_autostatus==2&&o3_cap!="") o3_status=o3_cap;
		else if(o3_autostatus==1&&o3_text!="") o3_status=o3_text;
		if(o3_status!="") self.status=o3_status;
		return(o3_status!="");
	}
}

// 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.51 FUNCTION
////////////////////////////////////////////////////////////////////////////////////

// This function decides what it is we want to display and how we want it done.
function overlib351() {
	// Make layer content
	var layerhtml,sTyp; //FM/REB

	// Initiate dragging if wanted, and this is a sticky, and it is in our frame,
	// otherwise, make sure dragging is off //FM/REB/VD
	if(o3_draggable&&o3_sticky&&(o3_frame==self)) {
		if(!o3_dragging) initDrag();
	} else {
		if(o3_dragging) clearDrag();
	}

	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+"\"";
		}

		if(o3_cgbackground!="") {
			o3_cgbackground=" BACKGROUND=\""+o3_cgbackground+"\"";
		} //FM

		// Prepare popup colors
		if(o3_fgcolor!="") {
			o3_fgcolor=" BGCOLOR=\""+o3_fgcolor+"\"";
		}
		if(o3_bgcolor!="") {
			o3_bgcolor=" BGCOLOR=\""+o3_bgcolor+"\"";
		}
		if(o3_cgcolor!="") {
			o3_cgcolor=" BGCOLOR=\""+o3_cgcolor+"\"";
		} //FM

		// 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) {
		if(o3_timerid>0) {
			clearTimeout(o3_timerid);
			o3_timerid=0;
		}
		o3_showingsticky=1;
		o3_removecounter=0;
	}

	// Write layer
	if(o3_wrap&&!ns4&&!o3_fullhtml) { //FM
		if(ie4) over.pixelWidth=0; //FM/REB
		else if(ns6) repositionTo(over,o3_frame.pageXOffset,o3_frame.pageYOffset);
	}
	layerWrite(layerhtml);
	if(o3_wrap&&!o3_fullhtml) { //FM
		o3_width=(ns4?over.clip.width:(ie4?o3_frame.overDiv.offsetWidth:over.offsetWidth));
		o3_wrap=0;
		if(o3_background!="") {
			layerhtml=ol_content_background(o3_text,o3_background,o3_fullhtml);
		} else {
			if(o3_cap=="") {
				layerhtml=ol_content_simple(o3_text);
			} else {
				if(o3_sticky) {
					layerhtml=ol_content_caption(o3_text,o3_cap,o3_close);
				} else {
					layerhtml=ol_content_caption(o3_text,o3_cap,"");
				}
			}
		}
		layerWrite(layerhtml);
	}

	// Prepare status bar
	if(o3_autostatus>0) {
		o3_status=o3_text;
		if(o3_autostatus>1) {
			o3_status=o3_cap;
		}
	}

	// Initiate a timer for timeout
	if(o3_timeout>0) {
		if(o3_timerid>0) clearTimeout(o3_timerid);
		o3_timerid=setTimeout("cClick()",o3_timeout);
	}

	// Use reference object if requested //FM/REB
	if(o3_ref) refPosition=getRefLocation(o3_ref);
	if(o3_ref&&refPosition[0]==null) {
		// Center popup on failure //FM
		o3_ref="";
		o3_midx=0;
		o3_midy=0;
	}

	// Sanity check for scroll feature //FM
	if(o3_scroll&&(!o3_sticky||o3_draggable||
	(o3_relx==null&&o3_midx==null)||(o3_rely==null&&o3_midy==null)))
		o3_scroll=0;

	// Place and show layer
	disp(o3_status);
	return (o3_status!="");
}


////////////////////////////////////////////////////////////////////////////////////
// DRAGGABLE FUNCTIONS //FM/REB/VD
////////////////////////////////////////////////////////////////////////////////////

function initDrag() {
	oMMv=capExtent.onmousemove;
	if(ns4) {
		document.captureEvents(Event.MOUSEDOWN|Event.CLICK);
		document.onmousedown=grabEl;
		document.onclick=function(e) {return routeEvent(e);}
	} else {
		var ovObj=(ie4?o3_frame.document.all['overDiv']:over);
		ovObj.onmousedown=grabEl;
		if(ie4) ovObj.onselectstart=function() {return false;}
		ovObj.style.cursor="move";
	} 
	o3_dragging=1;
	return true;
}

function grabEl(e) {
	var e=(e)?e:event;
	var ovObj=(ie4?o3_frame.document.all['overDiv']:over);
	var cKy=(ns4?e.modifiers&Event.ALT_MASK:e.altKey);
	if(cKy) {
		if(ie4) ovObj.onselectstart=null;
		if(!ns4) ovObj.style.cursor="auto";
		document.onmouseup=function() {
			if(!ns4) {
				if(ie4) ovObj.onselectstart=function() {return false;}
				if(!ns4) ovObj.style.cursor="move";
			}
		}
		return (ns4?routeEvent(e):true);
	}
	oMMv(e);
	if(ns4) {
		cX=e.pageX;
		cY=e.pageY;
	} else {
		cX=o3_x-(ie4?parseInt(over.left):parseInt(over.style.left));
		cY=o3_y-(ie4?parseInt(over.top):parseInt(over.style.top));
	}
	if(ns4) document.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
	capExtent.onmousemove=moveEl;
	document.onmouseup=function() {capExtent.onmousemove=oMMv;document.onmouseup=null;}
	return (ns4?routeEvent(e):false);
}

function moveEl(e) {
	oMMv(e);
	if(ns4) {
		newX=e.pageX;newY=e.pageY;
		over.moveBy(newX-cX,newY-cY);
		cX=newX;cY=newY;
	} else repositionTo(over,o3_x-cX,o3_y-cY);
	return false;
}

function clearDrag() {
	if(ns4) {
		document.releaseEvents(Event.MOUSEDOWN|Event.MOUSEUP|Event.CLICK);
		document.onmousedown=document.onmouseup=document.onclick=null;
	} else if(ns6) {
		over.onmousedown=null;
		over.style.cursor="auto";
	} else {
		var ovObj=(ie4?o3_frame.document.all['overDiv']:over);
		ovObj.onmousedown=null;
		if(ie4) ovObj.onselectstart=null;
		ovObj.style.cursor="auto";
      }
	o3_dragging=0;
}


////////////////////////////////////////////////////////////////////////////////////
// LAYER GENERATION FUNCTIONS
////////////////////////////////////////////////////////////////////////////////////

// Makes simple table without caption //FM
function ol_content_simple(text) {
	txt=
"<TABLE"+(o3_wrap?"":" WIDTH="+o3_width)+o3_height+" BORDER=0 CELLPADDING="+o3_border+
" CELLSPACING=0"+(o3_bgclass?" class=\""+o3_bgclass+"\"":o3_bgcolor+o3_bgbackground)+
"><TR><TD><TABLE WIDTH=100%"+o3_height+" BORDER=0 CELLPADDING=2 CELLSPACING=0"+(o3_fgclass?
" class=\""+o3_fgclass+"\"":o3_fgcolor+o3_fgbackground)+"><TR><TD VALIGN=TOP"+(o3_fgclass?
" class=\""+o3_fgclass+"\"":"")+"><FONT "+(o3_textfontclass?"class=\""+o3_textfontclass+"\">":
"COLOR=\""+o3_textcolor+"\" FACE=\""+o3_textfont+"\" SIZE=\""+o3_textsize+"\">")+
text+
"</FONT></TD></TR></TABLE>"+((o3_base>0)?
("<TABLE width=100% BORDER=0 CELLPADDING=0 CELLSPACING=0>"+"<TR><TD height="+o3_base+
"></TD></TR></TABLE>") : "")+"</TD></TR></TABLE>";
	set_background("");
	return txt;
}

// Makes table with caption and optional close link //FM
function ol_content_caption(text,title,close) {
	closing="";
	closeevent="onMouseOver";
	if(o3_closeclick==1) closeevent="TITLE=\"Click to close.\" onClick";
	if(o3_capicon!="") o3_capicon="<IMG SRC=\""+o3_capicon+"\"> ";
	if(close!="") {
closing="<TD ALIGN=RIGHT><A HREF=\"javascript:return "+fnRef+"cClick();\" "+closeevent+
"=\"return "+fnRef+"cClick();\""+(o3_closefontclass?" class=\""+o3_closefontclass+"\">":
"><FONT COLOR=\""+o3_closecolor+"\" FACE=\""+o3_closefont+"\" SIZE=\""+o3_closesize+"\">")+
close+
(o3_closefontclass?"":"</FONT>")+"</A></TD>";
	}
	txt=
"<TABLE"+(o3_wrap?"":" WIDTH="+o3_width)+o3_height+" BORDER=0 CELLPADDING="+o3_border+
" CELLSPACING=0"+(o3_bgclass?" class=\""+o3_bgclass+"\"":o3_bgcolor+o3_bgbackground)+
"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0"+(o3_cgclass?" class=\""+
o3_cgclass+"\"":o3_cgcolor+o3_cgbackground)+"><TR><TD"+(o3_cgclass?" class=\""+o3_cgclass+
"\">":">")+(o3_captionfontclass?"<FONT class=\""+o3_captionfontclass+"\">":"<B><FONT COLOR=\""+
o3_capcolor+"\" FACE=\""+o3_captionfont+"\" SIZE=\""+o3_captionsize+"\">")+
o3_capicon+
title+
"</FONT>"+(o3_captionfontclass?"":"</B>")+"</TD>"+
closing+
"</TR></TABLE><TABLE WIDTH=100% "+o3_height+" BORDER=0 CELLPADDING=2 CELLSPACING=0"+(o3_fgclass?
" class=\""+o3_fgclass+"\"":o3_fgcolor+o3_fgbackground)+"><TR><TD VALIGN=TOP"+(o3_fgclass?
" class=\""+o3_fgclass+"\"":"")+"><FONT "+(o3_textfontclass?"class=\""+o3_textfontclass+"\">":
"COLOR=\""+o3_textcolor+"\" FACE=\""+o3_textfont+"\" SIZE=\""+o3_textsize+"\">")+
text+
"</FONT></TD></TR></TABLE>"+((o3_base>0)?("<TABLE width=100% BORDER=0 CELLPADDING=0 "+
"CELLSPACING=0><TR><TD height="+o3_base+"></TD></TR></TABLE>"):"")+"</TD></TR></TABLE>";
	set_background("");
	return txt;
}

// Sets the background picture, padding and lots more. :) //FM
function ol_content_background(text, picture, hasfullhtml) {
	if (hasfullhtml) {
		txt=text;
	} else {
		txt=
"<TABLE"+(o3_wrap?"":" 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"+(o3_wrap?"":" WIDTH="+(o3_width-o3_padxl-o3_padxr))+"><FONT "+
(o3_textfontclass?"class=\""+o3_textfontclass+"\">":"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(ns4) over.background.src=null;
		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();
			(ns6?o3_showid=setTimeout("showObject(over)",1):showObject(over)); //FM/REB
			o3_allowmove=(o3_sticky?0:1); //FM/JA/REB
		}
	}
	if(statustext!="") {
		self.status=statustext;
	}
}

// Decides where we want the popup.
function placeLayer() {
	var placeX,placeY,iwidth=100,iheight=100,SBfactor=0;
	var winoffset,scrolloffset,popwidth,popheight;
	if(ie4||(o3_frame.document.body&&typeof o3_frame.document.body.clientWidth=='number'&&
	   o3_frame.document.body.clientWidth>0))
		iwidth=eval('o3_frame.'+(ns6?'document.body':docRoot)+'.clientWidth');
	else if(typeof(o3_frame.innerWidth)=='number') {
		SBfactor=Math.ceil(1.4*(o3_frame.outerWidth-o3_frame.innerWidth));
		iwidth=o3_frame.innerWidth;
	} //FM/DS/REB
	winoffset=(ie4)?eval('o3_frame.'+docRoot+'.scrollLeft'):o3_frame.pageXOffset;
	popwidth=(ns4?over.clip.width:(ie4?o3_frame.overDiv.offsetWidth:over.offsetWidth)); //FM

	// HORIZONTAL PLACEMENT
	if(o3_ref!=""||o3_fixx> -1||o3_relx!=null||o3_midx!=null) {
		if(o3_ref!="") {
			// Position relative to a reference object //FM/REB
			placeX=refPosition[0];
		} else {
			if(o3_midx!=null) {
				// Position middle of popup relative to middle of window //FM
				placeX=winoffset+((iwidth-popwidth-SBfactor)/2)+o3_midx;
			} else {
				if(o3_relx!=null) {
					// Position relative to window margins //FM/DS
					if(o3_relx>=0) placeX=winoffset+o3_relx;
					else placeX=winoffset+o3_relx+iwidth-popwidth-SBfactor;
				} else {
					// Fixed position
					placeX=o3_fixx;
				}
			}
		}
	} else {
		// 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-eval(popwidth)/2)+o3_offsetx;
		}
		if(o3_hpos==RIGHT) { // Right
			placeX=o3_x+o3_offsetx;
		}
		if(o3_hpos==LEFT) { // Left
			placeX=o3_x-o3_offsetx-popwidth;
		}
		// 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(!o3_nojustx&&(eval(placeX)+eval(popwidth))>(winoffset+iwidth-SBfactor))
		placeX=iwidth+winoffset-popwidth-SBfactor; //FM/DS
	if(!o3_nojustx&&placeX<winoffset) placeX=winoffset; //FM/DS

	// VERTICAL PLACEMENT
	scrolloffset=(ie4)?eval('o3_frame.'+docRoot+'.scrollTop'):o3_frame.pageYOffset;
	if(ie4||(o3_frame.document.body&&typeof o3_frame.document.body.clientHeight=='number'&&
	   o3_frame.document.body.clientHeight>0))
		iheight=eval('o3_frame.'+(ns6?'document.body':docRoot)+'.clientHeight');
	else if(typeof(o3_frame.innerHeight)=='number')
		iheight=o3_frame.innerHeight;
	divref=(ie4)?o3_frame.document.all['overDiv']:over;
	popheight=(ns4)?divref.clip.height:divref.offsetHeight; //FM
	if(o3_ref!=""||o3_fixy> -1||o3_rely!=null||o3_midy!=null) {
		if(o3_ref!="") {
			// Position relative to a reference object //FM/REB
			placeY=refPosition[1];
		} else {
			if(o3_midy!=null) {
				// Position middle of popup relative to middle of window //FM
				placeY=scrolloffset+((iheight-popheight)/2)+o3_midy;
			} else {
				if(o3_rely!=null) {
					// Position relative to window margins //FM/DS
					if(o3_rely>=0) placeY=scrolloffset+o3_rely;
					else placeY=scrolloffset+o3_rely+iheight-popheight;
				} else {
					// Fixed position
					placeY=o3_fixy;
				}
			}
		}
	} else {
		// If VAUTO, decide what to use.
		if(o3_vauto==1) {
			iheightv=(eval(iheight))/2;
			if((o3_y-scrolloffset)>iheightv) {
				o3_vpos=ABOVE;
			} else {
				o3_vpos=BELOW;
			}
		}
		// From mouse
		if(o3_vpos==VCENTER) { //FM
			placeY=(o3_y-eval(popheight)/2)+o3_offsety;
		}
		if(o3_vpos==ABOVE) {
			placeY=o3_y-(popheight+o3_offsety);
		}
		if(o3_vpos==BELOW) {
			placeY=o3_y+o3_offsety;
		}
		// Snapping!
		if(o3_snapy>1) {
			var snapping=placeY % o3_snapy;
			if(popheight>0&&o3_vpos==ABOVE) {
				placeY=placeY-(o3_snapy+snapping);
			} else {
				placeY=placeY+(o3_snapy-snapping);
			}
		}
	}
	if(!o3_nojusty&&(placeY+popheight)>(scrolloffset+iheight))
		placeY=scrolloffset+iheight-popheight; //FM/DS
	if(!o3_nojusty&&placeY<scrolloffset) placeY=scrolloffset; //FM/DS

	// Actually move the object.
	repositionTo(over,placeX,placeY);
	if(ns6) {iheight=o3_frame.innerHeight;repositionTo(over,placeX,placeY);}
}

// Gets location of a reference object //FM/JA/REB
function getRefLocation(ref){
	var mn=ref,mref=getRefById(mn,o3_frame.document);
	var mkObj,of,offsets;
	if(mref==null) mref=getRefByName(mn,o3_frame.document);
	if(mref==null) return [null,null];
	mkObj=mref;
	offsets=[o3_refx,o3_refy];
	if(document.layers){
		if(typeof mref.length!='undefined'&&mref.length>1){
			mkObj=mref[0];
			offsets[0] += mref[0].x+mref[1].pageX;
			offsets[1] += mref[0].y+mref[1].pageY;
		}else{
			if((mref.toString().indexOf('Image')!= -1)||
			   (mref.toString().indexOf('Anchor')!= -1)){
				offsets[0] += mref.x;
				offsets[1] += mref.y;
			}else{
				offsets[0] += mref.pageX;
				offsets[1] += mref.pageY;
			}
		}
	}else{
		offsets[0] += pageLocation(mref,'Left');
		offsets[1] += pageLocation(mref,'Top');
	}
	of=getRefOffsets(mkObj);
	offsets[0] += of[0];
	offsets[1] += of[1];
	return offsets;
}

// Gets popup versus reference object offsets //FM/JA/REB
function getRefOffsets(mkObj){
	var ovObj=(ie4?o3_frame.document.all['overDiv']:over);
	var mc=o3_refc.toUpperCase(),mp=o3_refp.toUpperCase();
	var mW=mH=pW=pH=0;
	var off=[0,0];
	pW=(ns4?ovObj.clip.width:ovObj.offsetWidth);
	pH=(ns4?ovObj.clip.height:ovObj.offsetHeight);
	if(mkObj.toString().indexOf('Image')!= -1) {
		mW=mkObj.width;
		mH=mkObj.height;
	} else if(mkObj.toString().indexOf('Anchor')!= -1){
		mc=o3_refc='UL';
	} else {
		mW=(ns4)?mkObj.clip.width:mkObj.offsetWidth;
		mH=(ns4)?mkObj.clip.height:mkObj.offsetHeight;
	}
	if(mc=='UL'){
		if(mp=='UR') off=[-pW,0];
		else if(mp=='LL') off=[0,-pH];
		else if(mp=='LR') off=[-pW,-pH];
	} else if(mc=='UR') {
		if(mp=='UR') off=[mW-pW,0];
		else if(mp=='LL') off=[mW,-pH];
		else if(mp=='LR') off=[mW-pW,-pH];
		else off=[mW,0];
	}else if(mc=='LL') {
		if(mp=='UR') off=[-pW,mH];
		else if(mp=='LL') off=[0,mH-pH];
		else if(mp=='LR') off=[-pW,mH-pH];
		else off=[0,mH];
	} else if(mc=='LR') {
		if(mp=='UR') off=[mW-pW,mH];
		else if(mp=='LL') off=[mW,mH-pH];
		else if(mp=='LR') off=[mW-pW,mH-pH];
		else off=[mW,mH];
	}
	return off;
}

// Gets location of object in page //FM/JA/REB
function pageLocation(o,t){
	var x=0;
	while(o.offsetParent&&o.offsetParent.tagName!="BODY"){
		x += o['offset'+t];
		o=o.offsetParent;
	}
	x += o['offset'+t];
	return x;
} 

// Gets reference object by ID (or NAME synonym for post-NS4 browsers) //FM/JA/REB 
function getRefById(l,d){
	var r="",j;
	d=(d||document);
	if(d.all) {
		return d.all[l];
	} else if(d.getElementById){
		return d.getElementById(l);
	} else if(d.layers&&d.layers.length>0){
		if(d.layers[l]) return d.layers[l];
		for(j=0;j<d.layers.length;j++){
			r=getRefById(l,d.layers[j].document);
			if(r) return r;
		}
	}
	return null;
}

// Seek reference object by NAME if not found by ID //FM/JA/REB
function getRefByName(l,d){
	var r=null,j;
	d=(d||document);
	if(typeof d.images[l]!='undefined'&&d.images[l]){
		return d.images[l];
	} else if(typeof d.anchors[l]!='undefined'&&d.anchors[l]) {
		return d.anchors[l];
	} else if(d.layers&&d.layers.length>0){
		for(j=0;j<d.layers.length;j++){
			r=getRefByName(l,d.layers[j].document);
			if(r&&r.length>0) return r;
			else if(r) return [r,d.layers[j]]; 
		}
	}
	return null;
}

// Moves the layer
function ol_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=eval('event.x+o3_frame.'+docRoot+'.scrollLeft');o3_y=eval('event.y+o3_frame.'+docRoot+'.scrollTop');}
	if(o3_allowmove==1||(o3_showingsticky&&o3_scroll)) placeLayer(); //FM
	if(hSwitch&&!ns4&&cursorOff()) {cClick();hSwitch=!hSwitch;} //FM/REB
}

// The Close onMouseOver function for stickies
function cClick() {
	hideObject(over);
	o3_showingsticky=0;
	return false;
}

// 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.setStartAfter(over); //FM/REB
		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) {
		if(o3_showid>0){clearTimeout(o3_showid);o3_showid=0;} //FM
		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="";
	if(o3_dragging) clearDrag(); //FM
	// Cancel any previous settings of mouseouts or mouseovers //FM/REB
	var Obj=(ie4)?o3_frame.document.all['overDiv']:over;
	if((ie4||ns6)&&Obj.onmouseover) Obj.onmouseover=null;
	if(ns4&&(Obj.onmouseout||Obj.onmouseover)) {
		Obj.releaseEvents(Event.MOUSEOUT||Event.MOUSEOVER);
		Obj.onmouseout=Obj.onmouseover=null;
	}
}

// Move a layer
function repositionTo(obj,xL,yL) {
	if(ns4||ie4) {
	        obj.left=(ie4?xL+'px':xL);
	        obj.top=(ie4?yL+'px':yL);
	} else if(ns6) {
		obj.style.left=xL+"px";
		obj.style.top=yL+"px";
	}
}

// Check position of cursor relative to overDiv DIVision; mouseOut function //FM/REB
function cursorOff() {
	var Obj=(ie4)?o3_frame.document.all['overDiv']:over;
	var left=parseInt(Obj.style.left);
	var top=parseInt(Obj.style.top);
	var right=left+Obj.offsetWidth;
	var bottom=top+Obj.offsetHeight;
	if(o3_x<left||o3_x>right||o3_y<top||o3_y>bottom) return true;
	return false;
}

function getFrameRef(thisFrame,ofrm) {
	var retVal='';
	for(var i=0;i<thisFrame.length;i++) {
 		if(thisFrame[i].length>0) { 
			retVal=getFrameRef(thisFrame[i],ofrm);
			if(retVal=='') continue;
		}
		else if(thisFrame[i]!=ofrm) continue;
		retVal='['+i+']'+retVal;
		break;
	}
	return retVal;
}


////////////////////////////////////////////////////////////////////////////////////
// PARSER FUNCTIONS
////////////////////////////////////////////////////////////////////////////////////

// Defines which frame we should point to.
function opt_FRAME(frm) {
	o3_frame=compatibleframe(frm)?frm:ol_frame;
	if(o3_frame!=ol_frame) {
		var tFrm=getFrameRef(top.frames,o3_frame);
		var sFrm=getFrameRef(top.frames,ol_frame);
		if(sFrm.length==tFrm.length) {
			l=tFrm.lastIndexOf('[');
			if(l) {
				while(sFrm.substring(0,l)!=tFrm.substring(0,l))
				l=tFrm.lastIndexOf('[',l-1);
				tFrm=tFrm.substr(l);
				sFrm=sFrm.substr(l);
			}
		}
		var cnt=0,p='',str=tFrm;
		while((k=str.lastIndexOf('['))!= -1) {
			cnt++;
			str=str.substring(0,k);
		}
		for(var i=0;i<cnt;i++) p=p+'parent.';
		fnRef=p+'frames'+sFrm+'.';
	}
	if(ns4) over=o3_frame.document.overDiv;
	if(ie4) over=o3_frame.overDiv.style;
	if(ns6) over=o3_frame.document.getElementById("overDiv");
	return 0;
}

// Calls an external function
function opt_FUNCTION(callme) {
	o3_text=(callme?(typeof callme=='string'?(/.+\(.*\)/.test(callme)?eval(callme):
		callme):callme()):(o3_function?o3_function():'No Function'));
	return 0;
}

// Sets up mouseOver, mouseOut and Timeout handling for NOCLOSE stickies //FM/REB
function opt_NOCLOSE(unused) {
	o3_close="";
	var Obj=(ie4)?o3_frame.document.all['overDiv']:over;
	if(ns4) {
		Obj.captureEvents(Event.MOUSEOUT||Event.MOUSEOVER);
		Obj.onmouseover=function(){
			if(o3_timerid>0) {clearTimeout(o3_timerid);o3_timerid=0;}}
		Obj.onmouseout=cClick;
	}
	if(ie4||ns6) Obj.onmouseover=function(){
		hSwitch=true;if(o3_timerid>0) {clearTimeout(o3_timerid);o3_timerid=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);}
