//\//////////////////////////////////////////////////////////////////////////////////
//\  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

// @version 2.7 last change Mateusz Wolacewicz 10.09.2002


////////////////////////////////////////////////////////////////////////////////////
// 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 = "#666666";}
var ol_fgcolor = "#B8B8D8";

// Border color and color of caption
// Usually a dark color (black, brown etc)
if (typeof ol_bgcolor == 'undefined') { var ol_bgcolor = "#B8B8D8";}

// Text color
// Usually a dark color
if (typeof ol_textcolor == 'undefined') { var ol_textcolor = "#000070";}

// Color of the caption text
// Usually a bright color
if (typeof ol_capcolor == 'undefined') { var ol_capcolor = "#000000";}

// 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 = "1";}

// 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 = "200";}

// 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 = 10;}

// 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 = 10;}

// 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 = ""; }

// 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_OLD(text) {
        txt = 
			"<TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 "+o3_bgcolor+" "+o3_height+">"+
			"<TR><TD class=\"klasse1\">"+
				"<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 "+o3_fgcolor+" "+o3_fgbackground+" "+o3_height+">"+
				"<TR><TD VALIGN=TOP class=\"\">"+
					"<p class=\"\">"+text+"</p>"+
				"</TD></TR></TABLE>"+
			"</TD></TR></TABLE>";
        set_background("");
        return txt;
}

// Makes simple table without caption
function ol_content_simple(text) {
        txt = 
			"<TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING=1 CELLSPACING=0 "+o3_bgcolor+" "+o3_height+">"+
			"<TR><TD class=\"klasse1\">"+
				"<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 "+o3_fgcolor+" "+o3_fgbackground+" "+o3_height+">"+
				"<TR><TD VALIGN=TOP class=\"\">"+
					"<p class=\"\">"+text+"</p>"+
				"</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+"\"> ";
                o3_capicon = ""; // keine icons anzeigen
        }
        //txt = "<TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 "+o3_bgcolor+" "+o3_bgbackground+" "+o3_height+"><TR><TD class=\"klasse1\"><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD class=\"klasse1\"><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>";
        
		txt = 
		"<TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 "+o3_bgcolor+" "+o3_bgbackground+" "+o3_height+">"+
		"<TR><TD class=\"klasse1\">"+
			"<TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0>"+
			"<TR><TD class=\"klasse1\" height=\"20\" valign=\"middle\">"+
				"<B><p class=\"klasse1\">"+o3_capicon+title+"</p></B>"+
			"</TD>"+closing+"</TR></TABLE>"+
			"<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 "+o3_fgcolor+" "+o3_fgbackground+" "+o3_height+">"+
			"<TR><TD VALIGN=TOP class=\"\">"+
				"<p class=\"\">"+text+"</p>"+
			"</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;
			placeX = o3_x;
                        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 {  
	
		winoffset = (ie4) ? o3_frame.document.body.scrollTop : o3_frame.pageYOffset;
		if (ie4) iheight = o3_frame.document.body.clientHeight;
		if (ns4) iheight = o3_frame.innerHeight;
		if (ns6) iheight = o3_frame.outerHeight;
		
                // 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) + winoffset;
                } else {
                        // BELOW
                        placeY = o3_y + o3_offsety + winoffset;
                }

                // 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);
}

