//<script>
//this little beuaty allows you to get the abs pos of an element
//so you don't have to do filth like tracking position of mouse..........
function absPos(obj){
	var curleft = curtop = 0;
	if(obj.offsetParent){
	  do{
     curleft += obj.offsetLeft;
     curtop += obj.offsetTop;
    }while(obj = obj.offsetParent);
  }
	return {x:curleft,y:curtop};
}
////////////////////////////////////////////////////////////////////////////////////
// CONSTANTS
// Don't touch these. :)
////////////////////////////////////////////////////////////////////////////////////
var calendarActive = 0;
var selectedDateDay = 0;
var selectedDateMonth = 0;
var selectedDateYear = 0;
var minDateDay = 0;
var minDateMonth = 0;
var minDateYear = 0;
var maxDateDay = 0;
var maxDateMonth = 0;
var maxDateYear = 0;
var excludeWeekend = 0;
var excludeList = '';

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; // PADX2 out
var PADY  =  31; // PADY2 out
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;
var CLOSECLICK  =  50;
var CSSOFF  =  51;
var CSSSTYLE  =  52;
var CSSCLASS  =  53;
var FGCLASS  =  54;
var BGCLASS  =  55;
var TEXTFONTCLASS  =  56;
var CAPTIONFONTCLASS  =  57;
var CLOSEFONTCLASS  =  58;
var PADUNIT  =  59;
var HEIGHTUNIT  =  60;
var WIDTHUNIT  =  61;
var TEXTSIZEUNIT  =  62;
var TEXTDECORATION  =  63;
var TEXTSTYLE  =  64;
var TEXTWEIGHT  =  65;
var CAPTIONSIZEUNIT  =  66;
var CAPTIONDECORATION  =  67;
var CAPTIONSTYLE  =  68;
var CAPTIONWEIGHT  =  69;
var CLOSESIZEUNIT  =  70;
var CLOSEDECORATION  =  71;
var CLOSESTYLE  =  72;
var CLOSEWEIGHT  =  73;


////////////////////////////////////////////////////////////////////////////////////
// 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 = "#F1F1FF";}
	
// Border color and color of caption
// Usually a dark color (black, brown etc)
if (typeof ol_bgcolor == 'undefined') { var ol_bgcolor = "#333366";}
	
// Text color
// Usually a dark color
if (typeof ol_textcolor == 'undefined') { var ol_textcolor = "#000000";}
	
// Color of the caption text
// Usually a bright color
if (typeof ol_capcolor == 'undefined') { var ol_capcolor = "#FFFFFF";}
	
// Color of "Close" when using Sticky
// Usually a semi-bright color
if (typeof ol_closecolor == 'undefined') { var ol_closecolor = "#9999FF";}

// Font face for the main text
if (typeof ol_textfont == 'undefined') { var ol_textfont = "Verdana,Arial,Helvetica";}

// Font face for the caption
if (typeof ol_captionfont == 'undefined') { var ol_captionfont = "Verdana,Arial,Helvetica";}

// Font face for the close text
if (typeof ol_closefont == 'undefined') { var ol_closefont = "Verdana,Arial,Helvetica";}

// Font size for the main text
// When using CSS this will be very small.
if (typeof ol_textsize == 'undefined') { var ol_textsize = "1";}

// Font size for the caption
// When using CSS this will be very small.
if (typeof ol_captionsize == 'undefined') { var ol_captionsize = "1";}

// Font size for the close text
// When using CSS this will be very small.
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 = "100";}

// 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 = ""; }

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



// If the user has to click to close stickies.
if (typeof ol_closeclick == 'undefined') { var ol_closeclick = 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 = CSSOFF; }

// Main background class (eqv of fgcolor)
// This is only used if CSS is set to use classes (ol_css = CSSCLASS)
if (typeof ol_fgclass == 'undefined') { var ol_fgclass = ""; }

// Frame background class (eqv of bgcolor)
// This is only used if CSS is set to use classes (ol_css = CSSCLASS)
if (typeof ol_bgclass == 'undefined') { var ol_bgclass = ""; }

// Main font class
// This is only used if CSS is set to use classes (ol_css = CSSCLASS)
if (typeof ol_textfontclass == 'undefined') { var ol_textfontclass = ""; }

// Caption font class
// This is only used if CSS is set to use classes (ol_css = CSSCLASS)
if (typeof ol_captionfontclass == 'undefined') { var ol_captionfontclass = ""; }

// Close font class
// This is only used if CSS is set to use classes (ol_css = CSSCLASS)
if (typeof ol_closefontclass == 'undefined') { var ol_closefontclass = ""; }

// 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";}



////////////////////////////////////////////////////////////////////////////////////
// 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.
if (typeof ol_texts == 'undefined') { var ol_texts = new Array("Text 0", "Text 1"); }

// Array with captions.
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_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 = null; 
var o3_delay = 0;
var o3_delayid = 0;
var o3_hauto = 0;
var o3_vauto = 0;
var o3_closeclick = 0;

var o3_css = CSSOFF;
var o3_fgclass = "";
var o3_bgclass = "";
var o3_textfontclass = "";
var o3_captionfontclass = "";
var o3_closefontclass = "";
var o3_padunit = "px";
var o3_heightunit = "px";
var o3_widthunit = "px";
var o3_textsizeunit = "px";
var o3_textdecoration = "";
var o3_textstyle = "";
var o3_textweight = "";
var o3_captionsizeunit = "px";
var o3_captiondecoration = "";
var o3_captionstyle = "";
var o3_captionweight = "";
var o3_closesizeunit = "px";
var o3_closedecoration = "";
var o3_closestyle = "";
var o3_closeweight = "";



// 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;
var fnRef;

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


// Netscape 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;
	}
	if (ns6) {
	ns6 = false;
	}
}


// Capture events, alt. diffuses the overlib function.
if ( (ns4) || (ie4) || (ns6)) {
	document.onmousemove = mouseMove;
	if (ns4) document.captureEvents(Event.MOUSEMOVE);
}

if ( (ns4) || (ie4) || (ns6)) {
document.onclick = clickHandle;
if (ns4) document.captureEvents(Event.CLICK);
}


////////////////////////////////////////////////////////////////////////////////////
// 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;
	o3_closeclick = ol_closeclick;
	
	o3_css = ol_css;
	o3_fgclass = ol_fgclass;
	o3_bgclass = ol_bgclass;
	o3_textfontclass = ol_textfontclass;
	o3_captionfontclass = ol_captionfontclass;
	o3_closefontclass = ol_closefontclass;
	o3_padunit = ol_padunit;
	o3_heightunit = ol_heightunit;
	o3_widthunit = ol_widthunit;
	o3_textsizeunit = ol_textsizeunit;
	o3_textdecoration = ol_textdecoration;
	o3_textstyle = ol_textstyle;
	o3_textweight = ol_textweight;
	o3_captionsizeunit = ol_captionsizeunit;
	o3_captiondecoration = ol_captiondecoration;
	o3_captionstyle = ol_captionstyle;
	o3_captionweight = ol_captionweight;
	o3_closesizeunit = ol_closesizeunit;
	o3_closedecoration = ol_closedecoration;
	o3_closestyle = ol_closestyle;
	o3_closeweight = ol_closeweight;
	fnRef = '';
	

	// 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.calendarDiv
	if (ie4) over = o3_frame.calendarDiv.style
	if (ns6) over = o3_frame.document.getElementById("calendarDiv");
	}


	// 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 = (ar[i] == FUNCTION ? 0 : 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_close = ""; continue; }
	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] == 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] == BORDER) { o3_border = ar[++i]; continue; }
	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]; o3_aboveheight = ar[i]; continue; } // Same param again.
	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] == FGBACKGROUND) { o3_fgbackground = ar[++i]; continue; }
	if (ar[i] == BGBACKGROUND) { o3_bgbackground = ar[++i]; continue; }
	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) { o3_vpos = ar[i]; continue; }
	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] == CLOSECLICK) { o3_closeclick = (o3_closeclick == 0) ? 1 : 0; continue; }
	if (ar[i] == CSSOFF) { o3_css = ar[i]; continue; }
	if (ar[i] == CSSSTYLE) { o3_css = ar[i]; continue; }
	if (ar[i] == CSSCLASS) { o3_css = ar[i]; continue; }
	if (ar[i] == FGCLASS) { o3_fgclass = ar[++i]; continue; }
	if (ar[i] == BGCLASS) { o3_bgclass = ar[++i]; continue; }
	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 (ar[i] == PADUNIT) { o3_padunit = ar[++i]; continue; }
	if (ar[i] == HEIGHTUNIT) { o3_heightunit = ar[++i]; continue; }
	if (ar[i] == WIDTHUNIT) { o3_widthunit = ar[++i]; continue; }
	if (ar[i] == TEXTSIZEUNIT) { o3_textsizeunit = ar[++i]; continue; }
	if (ar[i] == TEXTDECORATION) { o3_textdecoration = ar[++i]; continue; }
	if (ar[i] == TEXTSTYLE) { o3_textstyle = ar[++i]; continue; }
	if (ar[i] == TEXTWEIGHT) { o3_textweight = ar[++i]; continue; }
	if (ar[i] == CAPTIONSIZEUNIT) { o3_captionsizeunit = ar[++i]; continue; }
	if (ar[i] == CAPTIONDECORATION) { o3_captiondecoration = ar[++i]; continue; }
	if (ar[i] == CAPTIONSTYLE) { o3_captionstyle = ar[++i]; continue; }
	if (ar[i] == CAPTIONWEIGHT) { o3_captionweight = ar[++i]; continue; }
	if (ar[i] == CLOSESIZEUNIT) { o3_closesizeunit = ar[++i]; continue; }
	if (ar[i] == CLOSEDECORATION) { o3_closedecoration = ar[++i]; continue; }
	if (ar[i] == CLOSESTYLE) { o3_closestyle = ar[++i]; continue; }
	if (ar[i] == CLOSEWEIGHT) { o3_closeweight = ar[++i]; continue; }
	}
	}
	if (udf && o3_function) o3_text = o3_function();

	if (o3_delay == 0) {
	return overlib351();
	} else {
	o3_delayid = setTimeout("overlib351()", o3_delay);
	return false;
	}
}



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

	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_css == CSSOFF) {
	o3_fgbackground = "BACKGROUND=\""+o3_fgbackground+"\"";
	}
	if (o3_bgbackground != "" && o3_css == CSSOFF) {
	o3_bgbackground = "BACKGROUND=\""+o3_bgbackground+"\"";
	}

	// Prepare popup colors
	if (o3_fgcolor != "" && o3_css == CSSOFF) {
	o3_fgcolor = "BGCOLOR=\""+o3_fgcolor+"\"";
	}
	if (o3_bgcolor != "" && o3_css == CSSOFF) {
	o3_bgcolor = "BGCOLOR=\""+o3_bgcolor+"\"";
	}

	// Prepare popup height
	if (o3_height > 0 && o3_css == CSSOFF) {
	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
	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 (o3_status != '');
}



////////////////////////////////////////////////////////////////////////////////////
// LAYER GENERATION FUNCTIONS
////////////////////////////////////////////////////////////////////////////////////

// Makes simple table without caption
function ol_content_simple(text) {
	if (o3_css == CSSCLASS) txt = "<DIV onMouseOver=\"calendarMouseOver();\" onMouseOut=\"calendarMouseOut();\"><TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 class=\""+o3_bgclass+"\"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 class=\""+o3_fgclass+"\"><TR><TD VALIGN=TOP>"+text+"</TD></TR></TABLE></TD></TR></TABLE></DIV>";
	if (o3_css == CSSSTYLE) txt = "<DIV onMouseOver=\"calendarMouseOver();\" onMouseOut=\"calendarMouseOut();\"><TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 style=\"background-color: "+o3_bgcolor+"; height: "+o3_height+o3_heightunit+";\"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 style=\"color: "+o3_fgcolor+"; background-color: "+o3_fgcolor+"; height: "+o3_height+o3_heightunit+";\"><TR><TD VALIGN=TOP>"+text+"</TD></TR></TABLE></TD></TR></TABLE></DIV>";
	if (o3_css == CSSOFF) txt = "<DIV onMouseOver=\"calendarMouseOver();\" onMouseOut=\"calendarMouseOut();\"><TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 "+o3_bgcolor+" "+o3_height+"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 "+o3_fgcolor+" "+o3_fgbackground+" "+o3_height+"><TR><TD VALIGN=TOP>"+text+"</TD></TR></TABLE></TD></TR></TABLE></DIV>";

	set_background("");
	return txt;
}

// Makes table with caption and optional close link
function ol_content_caption(text, title, close) {
	closing = "";
	closeevent = "onMouseOver";

	calendarActive = 0;

	if (o3_closeclick == 1) closeevent = "onClick";
	if (o3_capicon != "") o3_capicon = "<IMG SRC=\""+o3_capicon+"\"> ";

	if (close != "") {
	if (o3_css == CSSCLASS) closing = "<TD ALIGN=RIGHT><A HREF=\"javascript:return "+fnRef+"cClick();\" "+closeevent+"=\"return " + fnRef + "cClick();\" class=\""+o3_closefontclass+"\">"+close+"</A></TD>";
	if (o3_css == CSSSTYLE) closing = "<TD ALIGN=RIGHT><A HREF=\"javascript:return "+fnRef+"cClick();\" "+closeevent+"=\"return " + fnRef + "cClick();\" style=\"color: "+o3_closecolor+"; font-family: "+o3_closefont+"; font-size: "+o3_closesize+o3_closesizeunit+"; text-decoration: "+o3_closedecoration+"; font-weight: "+o3_closeweight+"; font-style:"+o3_closestyle+";\">"+close+"</A></TD>";
	if (o3_css == CSSOFF) closing = "<TD ALIGN=RIGHT><A HREF=\"javascript:return "+fnRef+"cClick();\" "+closeevent+"=\"return " + fnRef + "cClick();\">"+close+"</A></TD>";
	}

	if (o3_css == CSSCLASS) txt = "<DIV onMouseOver=\"calendarMouseOver();\" onMouseOut=\"calendarMouseOut();\"><TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 class=\""+o3_bgclass+"\"><TR><TD class=CALOuterBorder><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD class=CALCaption>"+o3_capicon+title+"</TD>"+closing+"</TR></TABLE><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 class=\""+o3_fgclass+"\"><TR><TD class=CALInnerBorder VALIGN=TOP>"+text+"</TD></TR></TABLE></TD></TR></TABLE></DIV>";
	if (o3_css == CSSSTYLE) txt = "<DIV onMouseOver=\"calendarMouseOver();\" onMouseOut=\"calendarMouseOut();\"><TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 style=\"background-color: "+o3_bgcolor+"; background-image: url("+o3_bgbackground+"); height: "+o3_height+o3_heightunit+";\"><TR><TD class=CALOuterBorder><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD class=CALCaption>"+o3_capicon+title+"</TD>"+closing+"</TR></TABLE><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 style=\"color: "+o3_fgcolor+"; background-color: "+o3_fgcolor+"; height: "+o3_height+o3_heightunit+";\"><TR><TD class=CALInnerBorder VALIGN=TOP>"+text+"</TD></TR></TABLE></TD></TR></TABLE></DIV>";
	if (o3_css == CSSOFF) txt = "<DIV onMouseOver=\"calendarMouseOver();\" onMouseOut=\"calendarMouseOut();\"><TABLE WIDTH="+o3_width+" BORDER=0 CELLPADDING="+o3_border+" CELLSPACING=0 "+o3_bgcolor+" "+o3_bgbackground+" "+o3_height+"><TR><TD class=CALOuterBorder><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD class=CALCaption><B>"+o3_capicon+title+"</B></TD>"+closing+"</TR></TABLE><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 "+o3_fgcolor+" "+o3_fgbackground+" "+o3_height+"><TR><TD class=CALInnerBorder VALIGN=TOP>"+text+"</TD></TR></TABLE></TD></TR></TABLE></DIV>";

	set_background("");
	return txt;
}

// Sets the background picture, padding and lots more. :)
function ol_content_background(text, picture, hasfullhtml) {
	var txt;
	if (hasfullhtml) {
	txt = text;
	} else {
	var pU, hU, wU;
	pU = (o3_padunit == '%' ? '%' : '');
	hU = (o3_heightunit == '%' ? '%' : '');
	wU = (o3_widthunit == '%' ? '%' : '');

	if (o3_css == CSSCLASS) 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)+">"+text+"</TD><TD WIDTH="+o3_padxr+"></TD></TR><TR><TD COLSPAN=3 HEIGHT="+o3_padyb+"></TD></TR></TABLE>";
	if (o3_css == CSSSTYLE) txt = "<TABLE WIDTH="+o3_width+wU+" BORDER=0 CELLPADDING=0 CELLSPACING=0 HEIGHT="+o3_height+hU+"><TR><TD COLSPAN=3 HEIGHT="+o3_padyt+pU+"></TD></TR><TR><TD WIDTH="+o3_padxl+pU+"></TD><TD VALIGN=TOP WIDTH="+(o3_width-o3_padxl-o3_padxr)+pU+">"+text+"</TD><TD WIDTH="+o3_padxr+pU+"></TD></TR><TR><TD COLSPAN=3 HEIGHT="+o3_padyb+pU+"></TD></TR></TABLE>";
	if (o3_css == CSSOFF) 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)+">"+text+"</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();
	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) ? eval('o3_frame.'+docRoot+'.scrollLeft') : o3_frame.pageXOffset;
	if (ie4) iwidth = eval('o3_frame.'+docRoot+'.clientWidth');
	if (ns4 || ns6) iwidth = o3_frame.innerWidth;
	
	// 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 (placeX < winoffset) placeX = winoffset;
	}
	if (o3_hpos == RIGHT) { // Right
	placeX = o3_x+o3_offsetx;
	if ( (eval(placeX) + eval(o3_width)) > (winoffset + iwidth) ) {
	placeX = iwidth + winoffset - o3_width;
	if (placeX < 0) placeX = 0;
	}
	}
	if (o3_hpos == LEFT) { // Left
	placeX = o3_x-o3_offsetx-o3_width;
	if (placeX < winoffset) placeX = winoffset;
	}
	
	// Snapping!
	if (o3_snapx > 1) {
	var snapping = placeX % o3_snapx;
	if (o3_hpos == LEFT) {
	placeX = placeX - (o3_snapx + snapping);
	} else {
	// CENTER and RIGHT
	placeX = placeX + (o3_snapx - snapping);
	}
	if (placeX < winoffset) placeX = winoffset;
	}
	}

	
	
	// VERTICAL PLACEMENT
	if (o3_fixy > -1) {
	// Fixed position
	placeY = o3_fixy;
	} else {
	scrolloffset = (ie4) ? eval('o3_frame.'+docRoot+'.scrollTop') : o3_frame.pageYOffset;

	// If VAUTO, decide what to use.
	if (o3_vauto == 1) {
	if (ie4) iheight = eval('o3_frame.'+docRoot+'.clientHeight');
	if (ns4 || ns6) iheight = o3_frame.innerHeight;

	iheight = (eval(iheight)) / 2;
	if ( (o3_y - scrolloffset) > iheight) {
	o3_vpos = ABOVE;
	} else {
	o3_vpos = BELOW;
	}
	}


	// From mouse
	if (o3_vpos == ABOVE) {
	if (o3_aboveheight == 0) {
	var divref = (ie4) ? o3_frame.document.all['calendarDiv'] : over;
	o3_aboveheight = (ns4) ? divref.clip.height : divref.offsetHeight;
	}

	placeY = o3_y - (o3_aboveheight + o3_offsety);
	if (placeY < scrolloffset) placeY = scrolloffset;
	} else {
	// BELOW
	placeY = o3_y + o3_offsety;
	}

	// Snapping!
	if (o3_snapy > 1) {
	snapping = placeY % o3_snapy;
	
	if (o3_aboveheight > 0 && o3_vpos == ABOVE) {
	placeY = placeY - (o3_snapy + snapping);
	} else {
	placeY = placeY + (o3_snapy - snapping);
	}
	
	if (placeY < scrolloffset) placeY = scrolloffset;
	}
	}


	// 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=eval('event.x+o3_frame.'+docRoot+'.scrollLeft'); o3_y=eval('event.y+o3_frame.'+docRoot+'.scrollTop');}

	if (o3_allowmove == 1) {
	placeLayer();
	}
}

function clickHandle(evt)
{
	if (ns4) document.routeEvent(evt);
	if (over != null && calendarActive == 0) hideObject(over);
}

// 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.calendarDiv =='undefined') return false;
	} else if (ie4) {
	if (typeof frameid.document.all["calendarDiv"] =='undefined') return false;
	} else if (ns6) {
	if (frameid.document.getElementById('calendarDiv') == null) return false;
	}

	return true;
}



////////////////////////////////////////////////////////////////////////////////////
// LAYER FUNCTIONS
////////////////////////////////////////////////////////////////////////////////////


// Writes to a layer
function layerWrite(txt) {
	txt += "\n";
	
	if (ns4) {
	var lyr = o3_frame.document.calendarDiv.document
	lyr.write(txt)
	lyr.close()
	} else if (ie4) {
	o3_frame.document.all["calendarDiv"].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 = (ie4 ? xL + 'px' : xL);
	obj.top = (ie4 ? yL + 'px' : yL);
	} else if (ns6) {
  console.log('here I am ruining EVERYTHING');
  console.log('x:'+xL+' y:'+yL);
	obj.style.left = xL + "px";
	obj.style.top = yL+ "px";
	}
}

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) || (ie4 || (ns6)) ) {
	if (ns4) over = o3_frame.document.calendarDiv;
	if (ie4) over = o3_frame.calendarDiv.style;
	if (ns6) over = o3_frame.document.getElementById("calendarDiv");
	}

	return 0;
}

// Calls an external function
function opt_FUNCTION(callme) {
	o3_text = (callme ? callme() : (o3_function ? o3_function() : 'No Function'));
	return 0;
}


var weekend = [0,6];
var weekendColor = "#e0e0e0";
var fontface = "Verdana";
var fontsize = 8;  // in "pt" units; used with "font-size" style element

var gNow = new Date();
var ggWinContent;
var ggPosX = -1;
var ggPosY = -1;

Calendar.Months = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];

// Non-Leap year Month days..
Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// Leap year Month days..
Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

function Calendar(p_item, p_month, p_year, p_format) {
	if ((p_month == null) && (p_year == null))  return;

	if (p_month == null) {
	this.gMonthName = null;
	this.gMonth = null;
	this.gYearly = true;
	} else {
	this.gMonthName = Calendar.get_month(p_month);
	this.gMonth = new Number(p_month);
	this.gYearly = false;
	}

	this.gYear = p_year;
	this.gFormat = p_format;
	this.gBGColor = "white";
	this.gFGColor = "black";
	this.gTextColor = "black";
	this.gHeaderColor = "black";
	this.gReturnItem = p_item;
}

Calendar.get_month = Calendar_get_month;
Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.calc_month_year = Calendar_calc_month_year;

function Calendar_get_month(monthNo) {
	return Calendar.Months[monthNo];
}

function Calendar_get_daysofmonth(monthNo, p_year) {
	/* 
	Check for leap year ..
	1.Years evenly divisible by four are normally leap years, except for... 
	2.Years also evenly divisible by 100 are not leap years, except for... 
	3.Years also evenly divisible by 400 are leap years. 
	*/
	if ((p_year % 4) == 0) {
	if ((p_year % 100) == 0 && (p_year % 400) != 0)
	return Calendar.DOMonth[monthNo];
	
	return Calendar.lDOMonth[monthNo];
	} else
	return Calendar.DOMonth[monthNo];
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {
	/* 
	Will return an 1-D array with 1st element being the calculated month 
	and second being the calculated year 
	after applying the month increment/decrement as specified by 'incr' parameter.
	'incr' will normally have 1/-1 to navigate thru the months.
	*/
	var ret_arr = new Array();
	
	if (incr == -1) {
	// B A C K W A R D
	if (p_Month == 0) {
	ret_arr[0] = 11;
	ret_arr[1] = parseInt(p_Year) - 1;
	}
	else {
	ret_arr[0] = parseInt(p_Month) - 1;
	ret_arr[1] = parseInt(p_Year);
	}
	} else if (incr == 1) {
	// F O R W A R D
	if (p_Month == 11) {
	ret_arr[0] = 0;
	ret_arr[1] = parseInt(p_Year) + 1;
	}
	else {
	ret_arr[0] = parseInt(p_Month) + 1;
	ret_arr[1] = parseInt(p_Year);
	}
	}
	
	return ret_arr;
}

function _Calendar_calc_month_year(p_Month, p_Year, incr) {
	/* 
	Will return an 1-D array with 1st element being the calculated month 
	and second being the calculated year 
	after applying the month increment/decrement as specified by 'incr' parameter.
	'incr' will normally have 1/-1 to navigate thru the months.
	*/
	var ret_arr = new Array();
	
	if (incr == -1) {
	// B A C K W A R D
	if (p_Month == 0) {
	ret_arr[0] = 11;
	ret_arr[1] = parseInt(p_Year) - 1;
	}
	else {
	ret_arr[0] = parseInt(p_Month) - 1;
	ret_arr[1] = parseInt(p_Year);
	}
	} else if (incr == 1) {
	// F O R W A R D
	if (p_Month == 11) {
	ret_arr[0] = 0;
	ret_arr[1] = parseInt(p_Year) + 1;
	}
	else {
	ret_arr[0] = parseInt(p_Month) + 1;
	ret_arr[1] = parseInt(p_Year);
	}
	}
	
	return ret_arr;
}

// This is for compatibility with Navigator 3, we have to create and discard one object before the prototype object exists.
new Calendar();

Calendar.prototype.getMonthlyCalendarCode = function() {
	var vCode = "";
	var vHeader_Code = "";
	var vData_Code = "";
	
	// Begin Table Drawing code here..
	vCode += ("<div align=center><TABLE BORDER=0 BGCOLOR=\"" + this.gBGColor + "\" style='font-size:" + fontsize + "pt;'>");
	
	vHeader_Code = this.cal_header();
	vData_Code = this.cal_data();
	vCode += (vHeader_Code + vData_Code);
	
	vCode += "</TABLE></div>";
	
	return vCode;
}

Calendar.prototype.show = function() {
	var vCode = "";

	// Show navigation buttons
	var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1);
	var prevMM = prevMMYYYY[0];
	var prevYYYY = prevMMYYYY[1];

	var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1);
	var nextMM = nextMMYYYY[0];
	var nextYYYY = nextMMYYYY[1];
	
	ggWinContent += ("<TABLE WIDTH='100%' BORDER=0 CELLSPACING=0 CELLPADDING=0 style='font-size:" + fontsize + "pt;' class=CALTable><TR>");
	ggWinContent += ("<TD class=CALCell>");
	if (this.gYear > minDateYear || prevYYYY == this.gYear && this.gMonth+1 > minDateMonth){
	ggWinContent += ("<A HREF=\"javascript:void(0);\" " +
	"onMouseOver=\"window.status='Go back one month'; return true;\" " +
	"onMouseOut=\"window.status=''; return true;\" " +
	"onClick=\"Build(" + 
	"'" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" +
	");" +
	"\"><IMG border=0 width=12 height=12 SRC='"+imgPath+"button_prev.gif'></A>");
	}
	else{
	ggWinContent += "<IMG border=0 width=12 height=12 SRC='"+imgPath+"spacer.gif'>";
	}

	ggWinContent += ("</TD><TD class=CALMonth ALIGN=center>");
	ggWinContent += (this.gMonthName + " " + this.gYear);

	ggWinContent += "</TD>";
	ggWinContent += "<TD class=CALCell ALIGN=right>";
	if ((nextYYYY < maxDateYear || nextYYYY == maxDateYear && nextMM < maxDateMonth) || (maxDateYear == 0 || maxDateMonth == 0)) {
	ggWinContent += ("<A HREF=\"javascript:void(0);\" " +
	"onMouseOver=\"window.status='Go forward one month'; return true;\" " +
	"onMouseOut=\"window.status=''; return true;\" " +
	"onClick=\"Build(" + 
	"'" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" +
	");" +
	"\"><IMG border=0 width=12 height=12 SRC='"+imgPath+"button_next.gif'></A>");
	}
	else{
	ggWinContent += "<IMG border=0 width=12 height=12 SRC='"+imgPath+"spacer.gif'>";
	}

	ggWinContent += ("</TD></TR>");

	// Get the complete calendar code for the month, and add it to the
	//  content var
	vCode = this.getMonthlyCalendarCode();
	ggWinContent += vCode;
}

Calendar.prototype.showY = function() {
	var vCode = "";
	var i;

	ggWinContent += ("Year : " + this.gYear);
	ggWinContent += "<BR>";

	// Show navigation buttons
	var prevYYYY = parseInt(this.gYear) - 1;
	var nextYYYY = parseInt(this.gYear) + 1;
	
	ggWinContent += ("<TABLE WIDTH='100%' BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0' style='font-size:" + fontsize + "pt;'><TR><TD class=CALCell ALIGN=center>");
	ggWinContent += ("[<A HREF=\"javascript:void(0);\" " +
	"onMouseOver=\"window.status='Go back one year'; return true;\" " +
	"onMouseOut=\"window.status=''; return true;\" " +
	"onClick=\"Build(" + 
	"'" + this.gReturnItem + "', null, '" + prevYYYY + "', '" + this.gFormat + "'" +
	");" +
	"\"><<Year<\/A>]</TD><TD class=CALCell ALIGN=center>");
	ggWinContent += "   </TD><TD ALIGN=center>";
	ggWinContent += ("[<A HREF=\"javascript:void(0);\" " +
	"onMouseOver=\"window.status='Go forward one year'; return true;\" " +
	"onMouseOut=\"window.status=''; return true;\" " +
	"onClick=\"Build(" + 
	"'" + this.gReturnItem + "', null, '" + nextYYYY + "', '" + this.gFormat + "'" +
	");" +
	"\">Year>><\/A>]</TD></TR></TABLE><BR>");

	// Get the complete calendar code for each month.
	// start a table and first row in the table
	ggWinContent += ("<TABLE WIDTH='100%' BORDER=0 CELLSPACING=0 CELLPADDING=5 style='font-size:" + fontsize + "pt;'><TR>");
	var j;
	for (i=0; i<12; i++) {
	// start the table cell
	ggWinContent += "<TD class=CALCell ALIGN='center' VALIGN='top'>";
	this.gMonth = i;
	this.gMonthName = Calendar.get_month(this.gMonth);
	vCode = this.getMonthlyCalendarCode();
	ggWinContent += (this.gMonthName + "/" + this.gYear + "<BR>");
	ggWinContent += vCode;
	ggWinContent += "</TD>";
	if (i == 3 || i == 7) {
	ggWinContent += "</TR><TR>";
	}

	}

	ggWinContent += "</TR></TABLE></font><BR>";
}

Calendar.prototype.cal_header = function() {
	var vCode = "";
	
	vCode = vCode + "<TR>";
	vCode = vCode +   "<TD class=CALWeekday ALIGN=CENTER>S</TD>";
	vCode = vCode +   "<TD class=CALWeekday ALIGN=CENTER>M</TD>";
	vCode = vCode +   "<TD class=CALWeekday ALIGN=CENTER>T</TD>";
	vCode = vCode +   "<TD class=CALWeekday ALIGN=CENTER>W</TD>";
	vCode = vCode +   "<TD class=CALWeekday ALIGN=CENTER>Th</TD>";
	vCode = vCode +   "<TD class=CALWeekday ALIGN=CENTER>F</TD>";
	vCode = vCode +   "<TD class=CALWeekday ALIGN=CENTER>S</TD>";
	vCode = vCode + "</TR>";
	
	return vCode;
}

Calendar.prototype.cal_data = function() {
	var vDate = new Date();
	vDate.setDate(1);
	vDate.setMonth(this.gMonth);
	vDate.setFullYear(this.gYear);

	var vFirstDay=vDate.getDay();
	var vDay=1;
	var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear);
	var vOnLastDay=0;
	var vCode = "";

	/*
	Get day for the 1st of the requested month/year..
	Place as many blank cells before the 1st day of the month as necessary. 
	*/
	vCode = vCode + "<TR>";
	for (i=0; i<vFirstDay; i++) {
	vCode = vCode + "<TD class=CALCell WIDTH='14%'" + this.write_weekend_string(i) + "> </TD>";
	}

	// Write rest of the 1st week
	for (j=vFirstDay; j<7; j++) {
	vCode = vCode + this.format_day(vDay, j);
	vDay=vDay + 1;
	}
	vCode = vCode + "</TR>";

	// Write the rest of the weeks
	for (k=2; k<7; k++) {
	vCode = vCode + "<TR>";

	for (j=0; j<7; j++) {
	vCode = vCode + this.format_day(vDay, j);
	vDay=vDay + 1;

	if (vDay > vLastDay) {
	vOnLastDay = 1;
	break;
	}
	}

	if (j == 6)
	vCode = vCode + "</TR>";
	if (vOnLastDay == 1)
	break;
	}
	
	// Fill up the rest of last week with proper blanks, so that we get proper square blocks
	for (m=1; m<(7-j); m++) {
	if (this.gYearly)
	vCode = vCode + "<TD class=CALCell WIDTH='14%'" + this.write_weekend_string(j+m) + 
	"> </TD>";
	else
	// dates that still aren't active.
	vCode = vCode + "<TD class=CALCell WIDTH='14%'" + this.write_weekend_string(j+m) + 
	"><FONT class=CALCellDisabled>" + m + "</FONT></TD>";
	}
	
	return vCode;
}

// User this for the font of today and day selected
Calendar.prototype.format_day = function(vDay, weekDay) {
	var vNowDay = gNow.getDate();
	var vNowMonth = gNow.getMonth();
	var vNowYear = gNow.getFullYear();
	var className = "CALCell";
	var shref = "<A HREF='javascript:void(0);' " + 
	"onMouseOver=\"window.status='set date to " + vDay + "'; return true;\" " +
	"onMouseOut=\"window.status=' '; return true;\" " +
	"onClick=\"document." + this.gReturnItem + ".value='" + 
	this.format_data(vDay) + 
	"';ggPosX=-1;ggPosY=-1;nd();nd();\">";
	var ehref = "</A>";

	// cases:
	// 1. Is before dmin
	// 2. Is after dmax
	// 3. Is weekend
	// 4. Is holiday
	// 5. Is date selected
	// 6. Is today.

	if( minDateDay != 0 && minDateMonth != 0 && minDateYear != 0){
	if( this.gYear < minDateYear || this.gYear == minDateYear && (this.gMonth+1 < minDateMonth || (this.gMonth+1 == minDateMonth && vDay < minDateDay))){
	//alert(this.gMonth + "/" + vDay + "/" + this.gYear + " : " + minDateMonth + "/" + minDateDay + "/" + minDateYear);
	shref = "";
	ehref = "";
	className = "CALCellDisabled";
	}
	}

	if( maxDateDay != 0 && maxDateMonth != 0 && maxDateYear != 0){
	if( this.gYear > maxDateYear || this.gYear == maxDateYear && (this.gMonth+1 > maxDateMonth || (this.gMonth+1 == maxDateMonth && vDay >= maxDateDay))){
	//alert(this.gMonth + "/" + vDay + "/" + this.gYear + " : " + minDateMonth + "/" + minDateDay + "/" + minDateYear);
	shref = "";
	ehref = "";
	className = "CALCellDisabled";
	}
	}

	if(excludeWeekend && (weekDay == 0 || weekDay == 6)){
	shref = "";
	ehref = "";
	className = "CALCellDisabled";
	}

	if(excludeList.indexOf('|'+(this.gMonth+1)+'/'+vDay+'/'+this.gYear+'|') >= 0){
	shref = "";
	ehref = "";
	className = "CALCellDisabled";
	//alert((this.gMonth+1)+'/'+vDay+'/'+this.gYear+ ' is a holiday');
	}
	
	if (vDay == selectedDateDay && this.gMonth+1 == selectedDateMonth && this.gYear == selectedDateYear)
	className = "CALCellSelected";

	if (vDay == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear){
	return ("<TD class=CALCellToday WIDTH='14%'" + this.write_weekend_string(j) + ">" + 
	shref + "<FONT class=" + className + ">" +
	vDay + 
	"</FONT>" + ehref +
	"</TD>");
	}
	else{
	return ("<TD class=" + className + " WIDTH='14%'" + this.write_weekend_string(j) + ">" + 
	shref + "<FONT class=" + className + ">" +
	vDay + 
	"</FONT>" + ehref +
	"</TD>");
	}
}

Calendar.prototype.write_weekend_string = function(vday) {
	var i;

	// Return special formatting for the weekend day.
	for (i=0; i<weekend.length; i++) {
	if (vday == weekend[i])
	return (" BGCOLOR=\"" + weekendColor + "\"");
	}
	
	return "";
}

Calendar.prototype.format_data = function(p_day) {
	var vData;
	var vMonth = 1 + this.gMonth;
	var vMon = Calendar.get_month(this.gMonth).substr(0,3).toUpperCase();
	var vFMon = Calendar.get_month(this.gMonth).toUpperCase();
	var vY4 = new String(this.gYear);
	var vY2 = new String(this.gYear.substr(2,2));

	switch (this.gFormat) {
	case "MM\/DD\/YYYY" :
	vData = vMonth + "\/" + p_day + "\/" + vY4;
	break;
	case "MM\/DD\/YY" :
	vData = vMonth + "\/" + p_day + "\/" + vY2;
	break;
	case "MM-DD-YYYY" :
	vData = vMonth + "-" + p_day + "-" + vY4;
	break;
	case "YYYY-MM-DD" :
	vData = vY4 + "-" + vMonth + "-" + p_day;
	break;
	case "MM-DD-YY" :
	vData = vMonth + "-" + p_day + "-" + vY2;
	break;
	case "DD\/MON\/YYYY" :
	vData = p_day + "\/" + vMon + "\/" + vY4;
	break;
	case "DD\/MON\/YY" :
	vData = p_day + "\/" + vMon + "\/" + vY2;
	break;
	case "DD-MON-YYYY" :
	vData = p_day + "-" + vMon + "-" + vY4;
	break;
	case "DD-MON-YY" :
	vData = p_day + "-" + vMon + "-" + vY2;
	break;
	case "DD\/MONTH\/YYYY" :
	vData = p_day + "\/" + vFMon + "\/" + vY4;
	break;
	case "DD\/MONTH\/YY" :
	vData = p_day + "\/" + vFMon + "\/" + vY2;
	break;
	case "DD-MONTH-YYYY" :
	vData = p_day + "-" + vFMon + "-" + vY4;
	break;
	case "DD-MONTH-YY" :
	vData = p_day + "-" + vFMon + "-" + vY2;
	break;
	case "DD\/MM\/YYYY" :
	vData = p_day + "\/" + vMonth + "\/" + vY4;
	break;
	case "DD\/MM\/YY" :
	vData = p_day + "\/" + vMonth + "\/" + vY2;
	break;
	case "DD-MM-YYYY" :
	vData = p_day + "-" + vMonth + "-" + vY4;
	break;
	case "DD-MM-YY" :
	vData = p_day + "-" + vMonth + "-" + vY2;
	break;
	default :
	vData = vMonth + "\/" + p_day + "\/" + vY4;
	}

	return vData;
}

function calendarMouseOver() {
	calendarActive = 1;
}

function calendarMouseOut() {
	calendarActive = 0;
}

function Build(p_item, p_month, p_year, p_format) {
	var gCal = new Calendar(p_item, p_month, p_year, p_format);

	// Customize your Calendar here..
	gCal.gBGColor="white";
	gCal.gLinkColor="black";
	gCal.gTextColor="black";
	gCal.gHeaderColor="darkgreen";

	// initialize the content string
	ggWinContent = "";

	// Choose appropriate show function
	if (gCal.gYearly) {
	// and, since the yearly calendar is so large, override the positioning and fontsize
	// warning: in IE6, it appears that "select" fields on the form will still show
	//  through the "over" div; Note: you can set these variables as part of the onClick
	//  javascript code before you call the show_yearly_calendar function
	if (ggPosX == -1) ggPosX = 10;
	if (ggPosY == -1) ggPosY = 10;
	if (fontsize == 8) fontsize = 6;
	// generate the calendar
	gCal.showY();
	}
	else {
	gCal.show();
	}

	// if this is the first calendar popup, use autopositioning with an offset
	if (ggPosX == -1 && ggPosY == -1) {
	overlib(ggWinContent, AUTOSTATUSCAP, STICKY, CLOSECLICK, CSSSTYLE,
	TEXTSIZEUNIT, "pt", TEXTSIZE, 8, CAPTIONSIZEUNIT, "pt", CAPTIONSIZE, 8, CLOSESIZEUNIT, "pt", CLOSESIZE, 8,
	CAPTION, "Select a date", OFFSETX, 20, OFFSETY, -20);
	// save where the 'over' div ended up; we want to stay in the same place if the user
	//  clicks on one of the year or month navigation links
	if ( (ns4) || (ie4) ) {
	ggPosX = parseInt(over.left);
	ggPosY = parseInt(over.top);
	} else if (ns6) {
	ggPosX = parseInt(over.style.left);
	ggPosY = parseInt(over.style.top);
	}
	}
	else {
	// we have a saved X & Y position, so use those with the FIXX and FIXY options
	overlib(ggWinContent, AUTOSTATUSCAP, STICKY, CLOSECLICK, CSSSTYLE,
	TEXTSIZEUNIT, "pt", TEXTSIZE, 8, CAPTIONSIZEUNIT, "pt", CAPTIONSIZE, 8, CLOSESIZEUNIT, "pt", CLOSESIZE, 8,
	CAPTION, "Select a date", FIXX, ggPosX, FIXY, ggPosY);
	}
	//window.scroll(ggPosX, ggPosY);
}

function show_calendar() {
	/* 
	p_month : 0-11 for Jan-Dec; 12 for All Months.
	p_year  : 4-digit year
	p_format: Date format (mm/dd/yyyy, dd/mm/yy, ...)
	p_item  : Return Item.
	*/

	var p_item = arguments[0];
	if (arguments[1] == "" || arguments[1] == null || isNaN(arguments[1]))
	p_month = new String(gNow.getMonth());
	else
	var p_month = "" + (arguments[1]-1);
	if (arguments[2] == "" || arguments[2] == null || isNaN(arguments[2]))
	var p_year = new String(gNow.getFullYear().toString());
	else
	p_year = "" + (arguments[2]);
	if (arguments[3] == null)
	var p_format = "MM/DD/YYYY";
	else
	p_format = arguments[3];

//  alert("arguments[1]: \"" + arguments[1] + "\" - arguments[2]: \"" + arguments[2] + "\"");
//  alert("month: " + p_month + " (" + typeof(p_month) + ") - year: " + p_year + " (" + typeof(p_year) + ")");
	Build(p_item, p_month, p_year, p_format);
}
/*
Yearly Calendar Code Starts here
*/
function show_yearly_calendar() {
	// Load the defaults..
	//if (p_year == null || p_year == "")
	//  p_year = new String(gNow.getFullYear().toString());
	//if (p_format == null || p_format == "")
	//  p_format = "MM/DD/YYYY";

	p_item = arguments[0];
	if (arguments[1] == "" || arguments[1] == null)
	p_year = new String(gNow.getFullYear().toString());
	else
	p_year = arguments[1];
	if (arguments[2] == null)
	p_format = "MM/DD/YYYY";
	else
	p_format = arguments[2];

	Build(p_item, null, p_year, p_format);
}

//end (For internal purposes.)
////////////////////////////////////////////////////////////////////////////////////
// COMPATIBLE FUNCTIONS
////////////////////////////////////////////////////////////////////////////////////
function ShowCalendar(eP,eD,eDP,dmin,dmax){
	// ep is the image
	// eD is the input
	// eDP is the current date
	// dmin is the min
	// dmax is the max
	ggPosX = o3_x;
	ggPosY = o3_y;
	setDates(eD.value,dmin,dmax);
	show_calendar(eD.form.name + '.' + eD.name,(selectedDateMonth),selectedDateYear);
	//show_yearly_calendar(eD.form.name + '.' + eD.name);
}

function ShowCalendar30(eD,dmin,dmax,button){
	// eD is the input
	// eDP is the current date
	// dmin is the min
	// dmax is the max
	
	if(button){
    var pos = absPos(document.getElementById(button));
  	ggPosX = pos.x;
  	ggPosY = pos.y;
  }
  else{

	}
	ggPosX = o3_x;
  	ggPosY = o3_y;
	setDates(eD.value,dmin,dmax);
	show_calendar(eD.form.name + '.' + eD.name,(selectedDateMonth),selectedDateYear);
}

function setDates(dsel,dmin,dmax){
	var selectedDate = dsel.split("/");
	var minDate = dmin.split("/");
	var maxDate = dmax.split("/");

	selectedDateDay = 0;
	selectedDateMonth = 0;
	selectedDateYear = 0;
	minDateDay = 0;
	minDateMonth = 0;
	minDateYear = 0;
	maxDateDay = 0;
	maxDateMonth = 0;
	maxDateYear = 0;

	if (!isNaN(selectedDate[1])) selectedDateDay = parseInt(selectedDate[1]);
	if (!isNaN(selectedDate[0])) selectedDateMonth = parseInt(selectedDate[0]);
	if (!isNaN(selectedDate[2])) selectedDateYear = parseInt(selectedDate[2]);

	if (!isNaN(minDate[1])) minDateDay = parseInt(minDate[1]);
	if (!isNaN(minDate[0])) minDateMonth = parseInt(minDate[0]);
	if (!isNaN(minDate[2])) minDateYear = parseInt(minDate[2]);

	if (!isNaN(maxDate[1])) maxDateDay = parseInt(maxDate[1]);
	if (!isNaN(maxDate[0])) maxDateMonth = parseInt(maxDate[0]);
	if (!isNaN(maxDate[2])) maxDateYear = parseInt(maxDate[2]);
}
//</script>
