//         <A HREF="javascript:doNothing()" onClick="setDateField(document.myForm.myDateField);top.newWin = window.open('calendar.html','cal','dependent=yes,width=210,height=230,screenX=200,screenY=300,titlebar=yes')">
//         <IMG SRC="calendar.gif" BORDER=0></A><font size=1>Popup Calendar</font>


// BEGIN USER-EDITABLE SECTION -----------------------------------------------------
// SPECIFY DATE FORMAT RETURNED BY THIS CALENDAR
// (THIS IS ALSO THE DATE FORMAT RECOGNIZED BY THIS CALENDAR)

// DATE FORMAT OPTIONS:
//
// dd   = 1 or 2-digit Day
// DD   = 2-digit Day
// mm   = 1 or 2-digit Month
// MM   = 2-digit Month
// yy   = 2-digit Year
// YY   = 4-digit Year
// yyyy = 4-digit Year
// month   = Month name in lowercase letters
// Month   = Month name in initial caps
// MONTH   = Month name in captital letters
// mon     = 3-letter month abbreviation in lowercase letters
// Mon     = 3-letter month abbreviation in initial caps
// MON     = 3-letter month abbreviation in uppercase letters
// weekday = name of week in lowercase letters
// Weekday = name of week in initial caps
// WEEKDAY = name of week in uppercase letters
// wkdy    = 3-letter weekday abbreviation in lowercase letters
// Wkdy    = 3-letter weekday abbreviation in initial caps
// WKDY    = 3-letter weekday abbreviation in uppercase letters
//
// Examples:
//
// calDateFormat = "mm/dd/yy";
// calDateFormat = "Weekday, Month dd, yyyy";
// calDateFormat = "wkdy, mon dd, yyyy";
// calDateFormat = "DD.MM.YY";     // FORMAT UNSUPPORTED BY JAVASCRIPT -- REQUIRES CUSTOM PARSING
//

calDateFormat    = "mm/dd/yy";
strFourDigitYearFlag = "N"

// CALENDAR COLORS
topBackground    = "white";         // BG COLOR OF THE TOP FRAME
bottomBackground = "white";         // BG COLOR OF THE BOTTOM FRAME
tableBGColor     = "black";         // BG COLOR OF THE BOTTOM FRAME'S TABLE
cellColor        = "#e6e6f5";     // TABLE CELL BG COLOR OF THE DATE CELLS IN THE BOTTOM FRAME
headingCellColor = "white";         // TABLE CELL BG COLOR OF THE WEEKDAY ABBREVIATIONS
headingTextColor = "black";         // TEXT COLOR OF THE WEEKDAY ABBREVIATIONS
dateColor        = "blue";          // TEXT COLOR OF THE LISTED DATES (1-28+)
focusColor       = "#ff0000";       // TEXT COLOR OF THE SELECTED DATE (OR CURRENT DATE)
hoverColor       = "darkred";       // TEXT COLOR OF A LINK WHEN YOU HOVER OVER IT
fontStyle        = "13px arial, helvetica";           // TEXT STYLE FOR DATES
headingFontStyle = "bold 11pt arial, helvetica";      // TEXT STYLE FOR WEEKDAY ABBREVIATIONS

// FORMATTING PREFERENCES
bottomBorder  = false;        // TRUE/FALSE (WHETHER TO DISPLAY BOTTOM CALENDAR BORDER)
tableBorder   = 0;            // SIZE OF CALENDAR TABLE BORDER (BOTTOM FRAME) 0=none

//Date format


// END USER-EDITABLE SECTION -------------------------------------------------------


// DETERMINE BROWSER BRAND
var isNav = false;
var isIE  = false;

// ASSUME IT'S EITHER NETSCAPE OR MSIE
if (navigator.appName == "Netscape") {
    isNav = true;
}
else {
    isIE = true;
}

// GET CURRENTLY SELECTED LANGUAGE
selectedLanguage = navigator.language;


// CALENDAR FUNCTIONS BEGIN HERE ---------------------------------------------------



// SET THE INITIAL VALUE OF THE GLOBAL DATE FIELD
function setDateField(dateField) {
    dateField = inputdateCalendar(dateField)
    dateField = new Date(dateField);
    // GET THE VALUE OF THE INCOMING FIELD
    calDate = dateField;
    //inDate = dateField.getMonth()+1 + "/" + dateField.getDate() + "/" //+ dateField.getYear();
    //inDate = Date.parse(inDate);
    // SET calDate TO THE DATE IN THE INCOMING FIELD OR DEFAULT TO TODAY'S DATE
    setInitialDate();
    // THE CALENDAR FRAMESET DOCUMENTS ARE CREATED BY JAVASCRIPT FUNCTIONS
    calDocTop    = buildTopCalFrame();
    calDocBottom = buildBottomCalFrame();
}


// SET THE INITIAL CALENDAR DATE TO TODAY OR TO THE EXISTING VALUE IN dateField
function setInitialDate() {
   
    // CREATE A NEW DATE OBJECT (WILL GENERALLY PARSE CORRECT DATE EXCEPT WHEN "." IS USED AS A DELIMITER)
    // (THIS ROUTINE DOES *NOT* CATCH ALL DATE FORMATS, IF YOU NEED TO PARSE A CUSTOM DATE FORMAT, DO IT HERE)
    //calDate = new Date(inDate);

    // IF THE INCOMING DATE IS INVALID, USE THE CURRENT DATE
    if (isNaN(calDate)) {

        // ADD CUSTOM DATE PARSING HERE
        // IF IT FAILS, SIMPLY CREATE A NEW DATE OBJECT WHICH DEFAULTS TO THE CURRENT DATE
        calDate = new Date();
    }

    // KEEP TRACK OF THE CURRENT DAY VALUE
    calDay  = calDate.getDate();

    // SET DAY VALUE TO 1... TO AVOID JAVASCRIPT DATE CALCULATION ANOMALIES
    // (IF THE MONTH CHANGES TO FEB AND THE DAY IS 30, THE MONTH WOULD CHANGE TO MARCH
    //  AND THE DAY WOULD CHANGE TO 2.  SETTING THE DAY TO 1 WILL PREVENT THAT)
    calDate.setDate(1);
}

var gstrFormElement
var gstrDictToday
var gstrDictDaysOfWeek
var gstrJanuary
var gstrFebruary
var gstrMarch
var gstrApril
var gstrMay
var gstrJune
var gstrJuly
var gstrAugust
var gstrSeptember
var gstrOctober
var gstrNovember
var gstrDecember
var gstrDateFormat
// POPUP A WINDOW WITH THE CALENDAR IN IT

function showCalendarAtLocation(astrFormElement, astrDateFormat, dateField, strDictToday, strDictTitle, strDictDaysOfWeek, strJanuary, strFebruary, strMarch, strApril, strMay, strJune, strJuly, strAugust, strSeptember, strOctober, strNovember, strDecember,avarWidth,avarHeight) {
	
	var windowHeight = 190;
	var windowWidth = 175;
	var navVers=navigator.appVersion;
	var navVersion=parseInt(navVers);
	
		gstrDictToday = strDictToday
		gstrDictDaysOfWeek = strDictDaysOfWeek
		gstrJanuary = strJanuary
		gstrFebruary = strFebruary
		gstrMarch = strMarch
		gstrApril = strApril
		gstrMay = strMay
		gstrJune = strJune
		gstrJuly = strJuly
		gstrAugust = strAugust
		gstrSeptember = strSeptember
		gstrOctober = strOctober
		gstrNovember = strNovember
		gstrDecember = strDecember
		gstrFormElement = astrFormElement
		gstrDateFormat = astrDateFormat
    
	var agt=navigator.userAgent.toLowerCase();
	var is_major = parseInt(navigator.appVersion);
	var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
		    && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
		    && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
	var is_nav4 = (is_nav && (is_major == 4));

   //dateField = new Date(Date.parse(inidate));
    	
	// BUILD PORTIONS OF THE CALENDAR
	buildCalParts();
   // SET INITIAL VALUE OF THE DATE FIELD AND CREATE TOP AND BOTTOM FRAMES
   setDateField(dateField);

   // USE THE JAVASCRIPT-GENERATED DOCUMENTS (calDocTop, calDocBottom) IN THE FRAMESET
   calDocFrameset = 
	"<HTML><HEAD><TITLE>" + strDictTitle + "</TITLE>" +
	"</HEAD>\n" +
	"\n" +	
	"<FRAMESET ROWS='54,*' FRAMEBORDER='0' >\n" +
	"  <FRAME NAME='topCalFrame' SRC='javascript:parent.opener.calDocTop' SCROLLING='no' >\n" +
	"  <FRAME NAME='bottomCalFrame' SRC='javascript:parent.opener.calDocBottom' SCROLLING='no'>\n" +
	"</FRAMESET>\n" +
	"<BODY>&nbsp;\n" +
	      "</BODY>\n" +
	"</html>"

   // DISPLAY THE CALENDAR IN A NEW POPUP WINDOW
	if(!(is_nav4) && !(is_nav))
	{ 	 if (typeof(top.newWin) == "object")
	   { 	 top.newWin.close();	
	   }
	}		
  top.newWin = window.open("javascript:parent.opener.calDocFrameset", "calWin", "width=" + windowWidth + ",height=" + windowHeight);
  if (navVersion >= 4) {
    newWin.moveTo(avarWidth,avarHeight);
	}

	top.newWin.focus();

}

function showCalendar(astrFormElement, astrDateFormat, dateField, strDictToday, strDictTitle, strDictDaysOfWeek, strJanuary, strFebruary, strMarch, strApril, strMay, strJune, strJuly, strAugust, strSeptember, strOctober, strNovember, strDecember) {
		gstrDictToday = strDictToday
		gstrDictDaysOfWeek = strDictDaysOfWeek
		gstrJanuary = strJanuary
		gstrFebruary = strFebruary
		gstrMarch = strMarch
		gstrApril = strApril
		gstrMay = strMay
		gstrJune = strJune
		gstrJuly = strJuly
		gstrAugust = strAugust
		gstrSeptember = strSeptember
		gstrOctober = strOctober
		gstrNovember = strNovember
		gstrDecember = strDecember
		gstrFormElement = astrFormElement
		gstrDateFormat = astrDateFormat
    
	var agt=navigator.userAgent.toLowerCase();
	var is_major = parseInt(navigator.appVersion);
	var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
		    && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
		    && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
	var is_nav4 = (is_nav && (is_major == 4));

   //dateField = new Date(Date.parse(inidate));
    	
	// BUILD PORTIONS OF THE CALENDAR
	buildCalParts();
   // SET INITIAL VALUE OF THE DATE FIELD AND CREATE TOP AND BOTTOM FRAMES
   setDateField(dateField);

   // USE THE JAVASCRIPT-GENERATED DOCUMENTS (calDocTop, calDocBottom) IN THE FRAMESET
   calDocFrameset = 
	"<HTML><HEAD><TITLE>" + strDictTitle + "</TITLE>" +
	"</HEAD>\n" +
	"\n" +	
	"<FRAMESET ROWS='54,*' FRAMEBORDER='0' >\n" +
	"  <FRAME NAME='topCalFrame' SRC='javascript:parent.opener.calDocTop' SCROLLING='no' >\n" +
	"  <FRAME NAME='bottomCalFrame' SRC='javascript:parent.opener.calDocBottom' SCROLLING='no'>\n" +
	"</FRAMESET>\n" +
	"<BODY>&nbsp;\n" +
	      "</BODY>\n" +
	"</html>"


   // DISPLAY THE CALENDAR IN A NEW POPUP WINDOW
	if(!(is_nav4) && !(is_nav))
	{ 	 if (typeof(top.newWin) == "object")
	   { 	 top.newWin.close();	
	   }
	}		
	top.newWin = window.open("javascript:parent.opener.calDocFrameset", "calWin", "width=175,height=190");
	top.newWin.focus();

}


// CREATE THE TOP CALENDAR FRAME
function buildTopCalFrame() {

    // CREATE THE TOP FRAME OF THE CALENDAR
    var calDoc =
        "<HTML>" +
        "<HEAD>" +
        "<STYLE type='text/css'>" +
        "<!--" +
        " .row-header {   BACKGROUND-COLOR: #4040af;  COLOR: white;  FONT-FAMILY: Verdana;  FONT-SIZE: 13px;}"+
        "-->" +
        "</STYLE>" +
        "</HEAD>" +
        "<BODY  bottommargin=0 topmargin=0 leftmargin=0 marginheight=0 marginwidth=0 BGCOLOR='" + topBackground + "'>" +
        "<CENTER>" +
			"<FORM NAME='calControl' onSubmit='return false;'>" +  
        "<TABLE CELLPADDING=0 CELLSPACING=1 BORDER=0>" +
      	"<TR><TD COLSPAN=7>" +
        "<CENTER>" +
        getMonthSelect() +
        "<INPUT NAME='year' VALUE='" + calDate.getFullYear() + "'TYPE=TEXT SIZE=4 READONLY MAXLENGTH=4 onChange='parent.opener.setYear()'>" +
        "</CENTER>" +
        "</TD>" +
        "</TR>" +
        "<TR>" +
        "<TD COLSPAN=7>" +
        "<INPUT " +
        "TYPE=BUTTON NAME='previousYear' VALUE='<<'    onClick='parent.opener.setPreviousYear()'><INPUT " +
        "TYPE=BUTTON NAME='previousMonth' VALUE=' < '   onClick='parent.opener.setPreviousMonth()'><INPUT " +
        "TYPE=BUTTON NAME='today' VALUE='" + gstrDictToday + "' onClick='parent.opener.setToday()'><INPUT " +
        "TYPE=BUTTON NAME='nextMonth' VALUE=' > '   onClick='parent.opener.setNextMonth()'><INPUT " +
        "TYPE=BUTTON NAME='nextYear' VALUE='>>'    onClick='parent.opener.setNextYear()'>" +
        "</TD>" +
        "</TR>" +
        "</TABLE>" +
        "</FORM>" +
        "</CENTER>" +
        "</BODY>" +
        "</HTML>";

    return calDoc;
}


// CREATE THE BOTTOM CALENDAR FRAME 
// (THE MONTHLY CALENDAR)
function buildBottomCalFrame() {       

    // START CALENDAR DOCUMENT
    var calDoc = "" 
    calDoc = calendarBegin;

    // GET MONTH, AND YEAR FROM GLOBAL CALENDAR DATE
    month   = calDate.getMonth();
    year    = calDate.getFullYear();


    // GET GLOBALLY-TRACKED DAY VALUE (PREVENTS JAVASCRIPT DATE ANOMALIES)
    day     = calDay;
    var i   = 0;

    // DETERMINE THE NUMBER OF DAYS IN THE CURRENT MONTH
    var days = getDaysInMonth();

    // IF GLOBAL DAY VALUE IS > THAN DAYS IN MONTH, HIGHLIGHT LAST DAY IN MONTH
    if (day > days) {
        day = days;
    }

    // DETERMINE WHAT DAY OF THE WEEK THE CALENDAR STARTS ON
    var firstOfMonth = "";
    firstOfMonth = new Date (year, month, 1);

    // GET THE DAY OF THE WEEK THE FIRST DAY OF THE MONTH FALLS ON
    var startingPos  = firstOfMonth.getDay();
    days += startingPos;

    // KEEP TRACK OF THE COLUMNS, START A NEW ROW AFTER EVERY 7 COLUMNS
    var columnCount = 0;

    // MAKE BEGINNING NON-DATE CELLS BLANK
    for (i = 0; i < startingPos; i++) {

        calDoc += blankCell;
	columnCount++;
    }

    // SET VALUES FOR DAYS OF THE MONTH
    var currentDay = 0;
    var dayType    = "weekday";

    // DATE CELLS CONTAIN A NUMBER
    for (i = startingPos; i < days; i++) {

	var paddingChar = "&nbsp;";

        // ADJUST SPACING SO THAT ALL LINKS HAVE RELATIVELY EQUAL WIDTHS
        if (i-startingPos+1 < 10) {
            padding = "&nbsp;&nbsp;";
        }
        else {
            padding = "&nbsp;";
        }

        // GET THE DAY CURRENTLY BEING WRITTEN
        currentDay = i-startingPos+1;

        // SET THE TYPE OF DAY, THE focusDay GENERALLY APPEARS AS A DIFFERENT COLOR
        if (currentDay == day) {
            dayType = "focusDay";
        }
        else {
            dayType = "weekDay";
        }

        // ADD THE DAY TO THE CALENDAR STRING
        calDoc += "<TD align=center bgcolor='" + cellColor + "'>" +
                  "<a class='" + dayType + "' href='javascript:parent.opener.returnDate(" + 
                  currentDay + ");'>" + padding + currentDay + paddingChar + "</a></TD>";

        columnCount++;

        // START A NEW ROW WHEN NECESSARY
        if (columnCount % 7 == 0) {
            calDoc += "</TR><TR>";
        }
    }

    // MAKE REMAINING NON-DATE CELLS BLANK
    for (i=days; i<42; i++)  {

        calDoc += blankCell;
	columnCount++;

        // START A NEW ROW WHEN NECESSARY
        if (columnCount % 7 == 0) {
            calDoc += "</TR>";
            if (i<41) {
                calDoc += "<TR>";
            }
        }
    }

    // FINISH THE NEW CALENDAR PAGE
    calDoc += calendarEnd;
    // RETURN THE COMPLETED CALENDAR PAGE
   return calDoc
}


// WRITE THE MONTHLY CALENDAR TO THE BOTTOM CALENDAR FRAME
function writeCalendar() {
    calDocBottom = ""
    // CREATE THE NEW CALENDAR FOR THE SELECTED MONTH & YEAR
    calDocBottom = buildBottomCalFrame();
    // WRITE THE NEW CALENDAR TO THE BOTTOM FRAME
    top.newWin.frames["bottomCalFrame"].document.open();
    top.newWin.frames["bottomCalFrame"].document.write(calDocBottom);
    top.newWin.frames["bottomCalFrame"].document.close();
}


// SET THE CALENDAR TO TODAY'S DATE AND DISPLAY THE NEW CALENDAR
function setToday() {

    // SET GLOBAL DATE TO TODAY'S DATE
    calDate = new Date();

    // SET DAY MONTH AND YEAR TO TODAY'S DATE
    var month = calDate.getMonth();
    var year  = calDate.getFullYear();
    calDay = calDate.getDate();

    // SET MONTH IN DROP-DOWN LIST
    top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex = month;

    // SET YEAR VALUE
    top.newWin.frames['topCalFrame'].document.calControl.year.value = year;

    // DISPLAY THE NEW CALENDAR
    writeCalendar();
}


// SET THE GLOBAL DATE TO THE NEWLY ENTERED YEAR AND REDRAW THE CALENDAR
function setYear() {

    // GET THE NEW YEAR VALUE
    var year  = top.newWin.frames['topCalFrame'].document.calControl.year.value;

    // IF IT'S A FOUR-DIGIT YEAR THEN CHANGE THE CALENDAR
    if (isFourDigitYear(year)) {
        calDate.setFullYear(year);
        writeCalendar();
    }
    else {
        // HIGHLIGHT THE YEAR IF THE YEAR IS NOT FOUR DIGITS IN LENGTH
        top.newWin.frames['topCalFrame'].document.calControl.year.focus();
        top.newWin.frames['topCalFrame'].document.calControl.year.select();
    }
}


// SET THE GLOBAL DATE TO THE SELECTED MONTH AND REDRAW THE CALENDAR
function setCurrentMonth() {

    // GET THE NEWLY SELECTED MONTH AND CHANGE THE CALENDAR ACCORDINGLY
    var month = top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex;

    calDate.setMonth(month);
    writeCalendar();
}


// SET THE GLOBAL DATE TO THE PREVIOUS YEAR AND REDRAW THE CALENDAR
function setPreviousYear() {

    var year  = top.newWin.frames['topCalFrame'].document.calControl.year.value;

    if (isFourDigitYear(year) && year > 1000) {
        year--;
        calDate.setFullYear(year);
        top.newWin.frames['topCalFrame'].document.calControl.year.value = year;
        writeCalendar();
    }
}


// SET THE GLOBAL DATE TO THE PREVIOUS MONTH AND REDRAW THE CALENDAR
function setPreviousMonth() {

    var year  = top.newWin.frames['topCalFrame'].document.calControl.year.value;
    if (isFourDigitYear(year)) {
        var month = top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex;

        // IF MONTH IS JANUARY, SET MONTH TO DECEMBER AND DECREMENT THE YEAR
        if (month == 0) {
            month = 11;
            if (year > 1000) {
                year--;
                calDate.setFullYear(year);
                top.newWin.frames['topCalFrame'].document.calControl.year.value = year;
            }
        }
        else {
            month--;
        }
        calDate.setMonth(month);
        top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex = month;
        writeCalendar();
    }
}


// SET THE GLOBAL DATE TO THE NEXT MONTH AND REDRAW THE CALENDAR
function setNextMonth() {

    var year = top.newWin.frames['topCalFrame'].document.calControl.year.value;

    if (isFourDigitYear(year)) {
        var month = top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex;

        // IF MONTH IS DECEMBER, SET MONTH TO JANUARY AND INCREMENT THE YEAR
        if (month == 11) {
            month = 0;
            year++;
            calDate.setFullYear(year);
            top.newWin.frames['topCalFrame'].document.calControl.year.value = year;
        }
        else {
            month++;
        }
        calDate.setMonth(month);
        top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex = month;
        writeCalendar();
    }
}


// SET THE GLOBAL DATE TO THE NEXT YEAR AND REDRAW THE CALENDAR
function setNextYear() {

    var year  = top.newWin.frames['topCalFrame'].document.calControl.year.value;
    if (isFourDigitYear(year)) {
        year++;
        calDate.setFullYear(year);
        top.newWin.frames['topCalFrame'].document.calControl.year.value = year;
        writeCalendar();
    }
}


// GET NUMBER OF DAYS IN MONTH
function getDaysInMonth()  {

    var days;
    var month = calDate.getMonth()+1;
    var year  = calDate.getFullYear();

    // RETURN 31 DAYS
    if (month==1 || month==3 || month==5 || month==7 || month==8 ||
        month==10 || month==12)  {
        days=31;
    }
    // RETURN 30 DAYS
    else if (month==4 || month==6 || month==9 || month==11) {
        days=30;
    }
    // RETURN 29 DAYS
    else if (month==2)  {
        if (isLeapYear(year)) {
            days=29;
        }
        // RETURN 28 DAYS
        else {
            days=28;
        }
    }
    return (days);
}


// CHECK TO SEE IF YEAR IS A LEAP YEAR
function isLeapYear (Year) {

    if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) {
        return (true);
    }
    else {
        return (false);
    }
}


// ENSURE THAT THE YEAR IS FOUR DIGITS IN LENGTH
function isFourDigitYear(year) {

    if (year.length != 4) {
        top.newWin.frames['topCalFrame'].document.calControl.year.value = calDate.getFullYear();
        top.newWin.frames['topCalFrame'].document.calControl.year.select();
        top.newWin.frames['topCalFrame'].document.calControl.year.focus();
    }
    else {
        return true;
    }
}


// BUILD THE MONTH SELECT LIST
function getMonthSelect() {

    // BROWSER LANGUAGE CHECK DONE PREVIOUSLY (navigator.language())
    // FIRST TWO CHARACTERS OF LANGUAGE STRING SPECIFIES THE LANGUAGE
    // (THE LAST THREE OPTIONAL CHARACTERS SPECIFY THE LANGUAGE SUBTYPE)
    // SET THE NAMES OF THE MONTH TO THE PROPER LANGUAGE (DEFAULT TO ENGLISH)
    // IF FRENCH
    if (selectedLanguage == "fr") {
        monthArray = new Array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin',
                               'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
    }
    // IF GERMAN
    else if (selectedLanguage == "de") {
        monthArray = new Array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni',
                               'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember');
    }
    // IF SPANISH
    else if (selectedLanguage == "es") {
        monthArray = new Array('Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio',
                               'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
    }
    // DEFAULT TO ENGLISH
    else {
        //monthArray = new Array('January', 'February', 'March', 'April', 'May', 'June',
        //                     'July', 'August', 'September', 'October', 'November', 'December');
        monthArray = new Array(gstrJanuary, gstrFebruary, gstrMarch, gstrApril, gstrMay, gstrJune, gstrJuly, gstrAugust, gstrSeptember, gstrOctober, gstrNovember, gstrDecember);
    }

    // DETERMINE MONTH TO SET AS DEFAULT
    var activeMonth = calDate.getMonth();

    // START HTML SELECT LIST ELEMENT
    monthSelect = "<SELECT NAME='month' onChange='parent.opener.setCurrentMonth()'>";

    // LOOP THROUGH MONTH ARRAY
    for (i in monthArray) {
        
        // SHOW THE CORRECT MONTH IN THE SELECT LIST
        if (i == activeMonth) {
            monthSelect += "<OPTION SELECTED>" + monthArray[i] + "\n";
        }
        else {
            monthSelect += "<OPTION>" + monthArray[i] + "\n";
        }
    }
    monthSelect += "</SELECT>";

    // RETURN A STRING VALUE WHICH CONTAINS A SELECT LIST OF ALL 11 MONTHS
    return monthSelect;
}


// SET DAYS OF THE WEEK DEPENDING ON LANGUAGE
function createWeekdayList() {
    // IF FRENCH
    if (selectedLanguage == "fr") {
        weekdayList  = new Array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
        weekdayArray = new Array('Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa');
    }
    // IF GERMAN
    else if (selectedLanguage == "de") {
        weekdayList  = new Array('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag');
        weekdayArray = new Array('So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa');
    }
    // IF SPANISH
    else if (selectedLanguage == "es") {
        weekdayList  = new Array('Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado')
        weekdayArray = new Array('Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa');
    }
    else {
        weekdayList  = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
        weekdayArray = new Array(midCalendar(gstrDictDaysOfWeek,1,2), midCalendar(gstrDictDaysOfWeek,3,4), midCalendar(gstrDictDaysOfWeek,5,6), midCalendar(gstrDictDaysOfWeek,7,8), midCalendar(gstrDictDaysOfWeek,9,10), midCalendar(gstrDictDaysOfWeek,11,12), midCalendar(gstrDictDaysOfWeek,13,14));
    }

    // START HTML TO HOLD WEEKDAY NAMES IN TABLE FORMAT
    var weekdays = "<TR BGCOLOR='" + headingCellColor + "'>";

    // LOOP THROUGH WEEKDAY ARRAY
    for (i in weekdayArray) {

        weekdays += "<TD class='heading' align=center>" + weekdayArray[i] + "</TD>";
    }
    weekdays += "</TR>";

    // RETURN TABLE ROW OF WEEKDAY ABBREVIATIONS TO DISPLAY ABOVE THE CALENDAR
    return weekdays;
}


// BUILD PORTIONS OF THE CALENDAR
function buildCalParts() {

    // GENERATE WEEKDAY HEADERS FOR THE CALENDAR
    weekdays = createWeekdayList();

    // BUILD THE BLANK CELL ROWS
    blankCell = "<TD align=center bgcolor='" + cellColor + "'>&nbsp;&nbsp;&nbsp;</TD>";

    // BUILD THE TOP PORTION OF THE CALENDAR PAGE USING CSS TO CONTROL SOME DISPLAY ELEMENTS
    calendarBegin =""
    calendarBegin =
      "<HTML>" +
        "<HEAD>"
				calendarBegin = calendarBegin +
				"<STYLE type='text/css'>" +
				"<!--" +
				" TD.heading { text-decoration: none; color:" + headingTextColor + "; font: " + headingFontStyle + "; }" +
				" A.focusDay:link { color: " + focusColor + "; text-decoration: none; font: " + fontStyle + "; }" +
				" A.focusDay:hover {color: " + focusColor + "; text-decoration: none; font: " + fontStyle + "; }" +
				" A.focusDay:active {  color: " + focusColor + "; text-decoration: none; font: " + fontStyle + "; }" +
				" A.focusDay:visited { color: " + focusColor + "; text-decoration: none; font: " + fontStyle + "; }" +
				" A.weekday:link {  color: " + dateColor + "; text-decoration: none; font: " + fontStyle + "; }" +
				" A.weekday:hover {color: " + hoverColor + "; font: " + fontStyle + "; text-decoration: none; }" +
				" A.weekday:active {  color: " + dateColor + "; text-decoration: none; font: " + fontStyle + "; }" +
				" A.weekday:visited {  color: " + dateColor + "; font: " + fontStyle + "; text-decoration: none;}" +
				" .row-header {   BACKGROUND-COLOR: #4040af;  COLOR: white;  FONT-FAMILY: Verdana;  FONT-SIZE: 13px}"+
				"-->" +
				"</STYLE>"
        calendarBegin = calendarBegin +
        "<SCRIPT LANGUAGE=JavaScript>" +
                    "function pick(symbol) {" +
                        "if (window.opener && !window.opener.closed)" +
                            " window.opener.document.stockForm.Date.value = symbol;" +
   
                          " }" +
                       "</SCRIPT></HEAD>" +
        "<BODY bottommargin=0 topmargin=0 leftmargin=0 marginheight=0 marginwidth=0 BGCOLOR='" + bottomBackground + "'>" +
        "<CENTER>";

        // NAVIGATOR NEEDS A TABLE CONTAINER TO DISPLAY THE TABLE OUTLINES PROPERLY
        if (isNav) {
            calendarBegin += 
                "<TABLE CELLPADDING=0 CELLSPACING=1 BORDER=" + tableBorder + " ALIGN=CENTER BGCOLOR='" + tableBGColor + "'><TR><TD>";
        }
        // BUILD WEEKDAY HEADINGS
        calendarBegin +=
            "<TABLE CELLPADDING=0 CELLSPACING=1 BORDER=" + tableBorder + " ALIGN=CENTER BGCOLOR='" + tableBGColor + "'>" +
            weekdays +
            "";


    // BUILD THE BOTTOM PORTION OF THE CALENDAR PAGE
    calendarEnd = "";

        // NAVIGATOR NEEDS A TABLE CONTAINER TO DISPLAY THE BORDERS PROPERLY
        if (isNav) {
            calendarEnd += "</TABLE></td></tr>";
        }

        // END THE TABLE AND HTML DOCUMENT
        calendarEnd +=
            "</TABLE>" +
            "</CENTER>" +
            "</BODY>" +
            "</HTML>";
}


// REPLACE ALL INSTANCES OF find WITH replace
// inString: the string you want to convert
// find:     the value to search for
// replace:  the value to substitute
//
// usage:    jsReplace(inString, find, replace);
// example:  jsReplace("To be or not to be", "be", "ski");
//           result: "To ski or not to ski"
//

function jsReplace(originalString, findText, replaceText) {
   if (!originalString) {
      return "";
   }

    // REPLACE ALL INSTANCES OF find WITH replace
   if (originalString.indexOf(findText) != -1) {
		var pos=0
		var len = findText.length
		pos=originalString.indexOf(findText)
		while (pos != -1) {
				preString = originalString.substring(0,pos)
				postString = originalString.substring(pos+len,originalString.length)
				originalString = preString + replaceText + postString
				pos = originalString.indexOf(findText)
			}
		return originalString  
    }
   else {
       return originalString;
    }
}


// JAVASCRIPT FUNCTION -- DOES NOTHING (USED FOR THE HREF IN THE CALENDAR CALL)
function doNothing() {
}


// ENSURE THAT VALUE IS TWO DIGITS IN LENGTH
function makeTwoDigit(inValue) {

    var numVal = parseInt(inValue, 10);

    // VALUE IS LESS THAN TWO DIGITS IN LENGTH
    if (numVal < 10) {

        // ADD A LEADING ZERO TO THE VALUE AND RETURN IT
        return("0" + numVal);
    }
    else {
        return numVal;
    }
}


// SET FIELD VALUE TO THE DATE SELECTED AND CLOSE THE CALENDAR WINDOW
function returnDate(inDay)
{

    // inDay = THE DAY THE USER CLICKED ON
    calDate.setDate(inDay);
     
    // SET THE DATE RETURNED TO THE USER
    var day           = calDate.getDate();
    var month         = calDate.getMonth()+1;
    var year          = calDate.getFullYear();
    var monthString   = monthArray[calDate.getMonth()];
    var monthAbbrev   = monthString.substring(0,3);
    var weekday       = weekdayList[calDate.getDay()];
    var weekdayAbbrev = weekday.substring(0,3);

    outDate = calDateFormat;
    day = makeTwoDigit(day);
    month = makeTwoDigit(month);
    // RETURN TWO DIGIT DAY
    if (calDateFormat.indexOf("dd") != -1) {
        outDate = jsReplace(outDate, "dd", day);
    }

    // RETURN TWO DIGIT MONTH
    if (calDateFormat.indexOf("mm") != -1) {
        outDate = jsReplace(outDate, "mm", month);
    }
    
    // RETURN FOUR-DIGIT YEAR
    if (strFourDigitYearFlag == "Y") {
        outDate = jsReplace(outDate, "yy", year);
    }
    // RETURN TWO-DIGIT YEAR
    else {
        var yearString = "" + year;
        var yearString = yearString.substring(2,4);
        outDate = jsReplace(outDate, "yy", yearString);
     }
     
       //this.gstrFormElement = gstrFormElement;
  	  gstrFormElement.value = outputdateCalendar(outDate);

  	  gstrFormElement.focus();
  	  gstrFormElement.blur();
  	  gstrFormElement.focus();
    
    // CLOSE THE CALENDAR WINDOW
    top.newWin.close()
}

function midCalendar(str, intbegin, intend)
{
        var strtemp = "";
	if (str.length < intend) { strtemp = "undefined";}
	else {
		for (var i = intbegin - 1; i < intend; i++) { strtemp = strtemp + str.charAt(i);}
	     }
 	return strtemp;
}

function outputdateCalendar(strDate)
{	var strdatetemp = "";
    var strDateFormatTemp;
   strDateFormatTemp = gstrDateFormat
	var strdatesep = midCalendar(strDateFormatTemp, 3, 3);
	strDateFormatTemp = leftCalendar(strDateFormatTemp, 2) + midCalendar(strDateFormatTemp, 4, 5) + rightCalendar(strDateFormatTemp, 2)
	if (strFourDigitYearFlag == "N")
  {	
		if (strDateFormatTemp == "MMDDYY") { strdatetemp = leftCalendar(strDate, 2) + strdatesep + midCalendar(strDate, 4, 5) + strdatesep + rightCalendar(strDate, 2);}
		if (strDateFormatTemp == "DDMMYY") { strdatetemp = midCalendar(strDate, 4, 5) + strdatesep + leftCalendar(strDate, 2) + strdatesep + rightCalendar(strDate, 2);}
		if (strDateFormatTemp == "YYMMDD") { strdatetemp = rightCalendar(strDate, 2) + strdatesep + leftCalendar(strDate, 2) + strdatesep + midCalendar(strDate, 4, 5);}
	}
	if (strFourDigitYearFlag == "Y")
  {
  	if (strDateFormatTemp == "MMDDYY") { strdatetemp = leftCalendar(strDate, 2) + strdatesep + midCalendar(strDate, 4, 5) + strdatesep + rightCalendar(strDate, 4);}
		if (strDateFormatTemp == "DDMMYY") { strdatetemp = midCalendar(strDate, 4, 5) + strdatesep + leftCalendar(strDate, 2) + strdatesep + rightCalendar(strDate, 4);}
		if (strDateFormatTemp == "YYMMDD") { strdatetemp = rightCalendar(strDate, 4) + strdatesep + leftCalendar(strDate, 2) + strdatesep + midCalendar(strDate, 4, 5);}
  }	
	return strdatetemp;
}

function inputdateCalendar(strDate)
{	 var strdatetemp="";
    var strDateFormatTemp;
    strDateFormatTemp = gstrDateFormat
    if (strDate.length == 8)
    {	 strDateFormatTemp = leftCalendar(strDateFormatTemp, 2) + midCalendar(strDateFormatTemp, 4, 5) + rightCalendar(strDateFormatTemp, 2)
				if (strDateFormatTemp == "MMDDYY") { strdatetemp = leftCalendar(strDate, 2) + "/" + midCalendar(strDate, 4, 5) + "/" + rightCalendar(strDate, 2);}
				if (strDateFormatTemp == "DDMMYY") { strdatetemp = midCalendar(strDate, 4, 5) + "/" + leftCalendar(strDate, 2) + "/" + rightCalendar(strDate, 2);}
				if (strDateFormatTemp == "YYMMDD") { strdatetemp = midCalendar(strDate, 4, 5) + "/" + rightCalendar(strDate, 2) + "/" + leftCalendar(strDate, 2);}
				if (strdatetemp == "00/00/00")
						{strdatetemp = "";}
			        // ASSIGN THE INCOMING FIELD OBJECT TO A GLOBAL VARIABLE

				var s= strdatetemp.substr(6, 2);
				if (s < 20) { 
				strdatetemp = strdatetemp.substr(0, 2) + "/" + strdatetemp.substr(3, 2) + "/" + strdatetemp.substr(6, 2).replace(s, "20"+s)}
				else
				{strdatetemp = strdatetemp.substr(0, 2) + "/" + strdatetemp.substr(3, 2) + "/" + strdatetemp.substr(6, 2).replace(s, "19"+s)}
  			strFourDigitYearFlag = "N"
    }
    if (strDate.length == 10)
    {	 strDateFormatTemp = leftCalendar(strDateFormatTemp, 2) + midCalendar(strDateFormatTemp, 4, 5) + rightCalendar(strDateFormatTemp, 2)
				if (strDateFormatTemp == "MMDDYY") { strdatetemp = leftCalendar(strDate, 2) + "/" + midCalendar(strDate, 4, 5) + "/" + rightCalendar(strDate, 4);}
				if (strDateFormatTemp == "DDMMYY") { strdatetemp = midCalendar(strDate, 4, 5) + "/" + leftCalendar(strDate, 2) + "/" + rightCalendar(strDate, 4);}
				if (strDateFormatTemp == "YYMMDD") { strdatetemp = midCalendar(strDate, 4, 5) + "/" + rightCalendar(strDate, 4) + "/" + leftCalendar(strDate, 2);}
				if (strdatetemp == "00/00/0000")
						{strdatetemp = "";}
		   strFourDigitYearFlag = "Y"
    }

return strdatetemp;
 
}
function rightCalendar(astr, aint)
{
	var strtemp = "";
	if (astr.length < aint) { strtemp = "undefined";}
	else {
			for (var i = 0; i < aint; i++) { strtemp = astr.charAt(astr.length - i - 1) + 

strtemp;}
		}
	return strtemp;
}  
function leftCalendar(astr, aint)
{
	var strtemp = "";
	if (astr.length < aint) { strtemp = "undefined";}
	else {
			for (var i = 0; i < aint; i++) { strtemp = strtemp + astr.charAt(i);}
		}
	return strtemp;
}  