// BALNK FUNCTION TO DO NOTHING - FOR LINKS

function doNothing() {

 // BLANK

}



calDateFormat    = "mm/dd/yyyy";



// 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        = "lightgrey";     // 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        = "12pt arial, helvetica";           // TEXT STYLE FOR DATES

headingFontStyle = "bold 12pt 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



// THE DECLARATIONS

var dtToday;

var calDoc;

var calendarBegin;

var myMonthField;

var myDayField;

var From;

var FrmNm;

var calendarEnd;

var calendarType;

var numbDays;

var theNumb;



// 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;



// PRE-BUILD PORTIONS OF THE CALENDAR WHEN THIS JS LIBRARY LOADS INTO THE BROWSER

buildCalParts();







// CALENDAR FUNCTIONS BEGIN HERE ---------------------------------------------------



function calCaller(FrmWhere) {

    if (FrmWhere == 'D') {

	      myMonthField = 'Dept_Month';

	      myDayField = 'Dept_Day';

	      calendarType = 'D';

    } 

    else if (FrmWhere == 'R') {

	      myMonthField = 'Ret_Month';

      	myDayField = 'Ret_Day';

      	calendarType = 'R';	

    }

    else if (FrmWhere == 'M') {

       myMonthField = mMonthName;

       myDayField = mDateName;

       theNumb = setFieldNum(mMonthName);

       calendarType = 'M';

    }

}



// SET THE INITIAL VALUE OF THE GLOBAL DATE FIELD

function setDateField(dateField, dtmToday, frmWhere, FrmName) {

    // ASSIGN THE INCOMING FIELD OBJECT TO A GLOBAL VARIABLE

    calDateField = dateField;



    FrmNm = FrmName;

    From = frmWhere;



    // GET THE VALUE OF THE INCOMING FIELD

    inDate = dateField;



    // SET calDate TO THE DATE IN THE INCOMING FIELD OR DEFAULT TO TODAY'S DATE

    setInitialDate();



    // SET CURRENT DATE (THIS DATE) TO VARIABLE

   dtToday = dtmToday;

   

   calCaller(From) ;



    var checkerDate = new Date(dtToday);

 

    if (eval(calDate.getMonth()) < eval(checkerDate.getMonth())) {		

	        calDate.setFullYear(eval(calDate.getFullYear()) + 1);	

    }



    // 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(dtToday);

    }



    // 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);

}





// POPUP A WINDOW WITH THE CALENDAR IN IT

function showCalendar(dateField) {



    // 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>JavaScript Calendar</TITLE>"+

        "<Link rel="+"\""+"stylesheet"+"\""+" href="+"\""+ssPath+"\""+" type="+"\""+"text/css"+"\""+">" +

        "</HEAD>\n" +

        "<FRAMESET ROWS='70,*' 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";



    // DISPLAY THE CALENDAR IN A NEW POPUP WINDOW

    calWin = window.open("javascript:parent.opener.calDocFrameset", "calWin", winPrefs);

    calWin.focus();

}





// CREATE THE TOP CALENDAR FRAME

function buildTopCalFrame() {



    // CREATE THE TOP FRAME OF THE CALENDAR

   calDoc =

        "<HTML>" +

        "<HEAD>" +

        "<STYLE>" + 

        ".cText { FONT-SIZE: 8pt; COLOR: #191970; LINE-HEIGHT: 18px; FONT-STYLE: normal; FONT-FAMILY: Verdana; }" +

        ".bton { FONT-WEIGHT: bold; FONT-SIZE: 9pt; BACKGROUND: #eeeeee; VERTICAL-ALIGN: middle; COLOR: #333300; FONT-FAMILY: Arial; LETTER-SPACING: normal; TEXT-ALIGN: center }" + 

        ".txtN { BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; FONT-SIZE: 12px; BORDER-LEFT: 1px solid; BORDER-BOTTOM: 1px solid; FONT-FAMILY: Verdana; }" +

        "</STYLE>" + 	

        "</HEAD>" +

        "<BODY BGCOLOR='" + topBackground + "'>" +

        "<CENTER>" +

        "<TABLE CELLPADDING=0 CELLSPACING=1 BORDER=0>" +

	"<FORM NAME='calControl' onSubmit='return false;'>" +

        "<TR><TD class = 'cText'>" +

        "<CENTER>" +

        getMonthSelect() +

        "</CENTER>" + 

        "</TD><TD class = 'cText'>" +  	

        "<INPUT NAME='year' class ='txtN' VALUE='" + calDate.getFullYear() + "' TYPE=TEXT onFocus = 'blur()' SIZE=3>" +

        "</TD>" + 

        "</TR>" +

        "<TR>" +

        "<TD COLSPAN = '2'>" +

        "<TABLE WIDTH = '100%' CELLPADDING = '0' CELLSPACING = '0' BORDER = '0'>" + 

        "<TR>" +

        "<TD>&nbsp;</TD>" +

        "<TD><INPUT TYPE = 'BUTTON' NAME = 'PreviousMonth' VALUE = ' < ' onClick='parent.opener.setPreviousMonth()' class = 'bton'></TD>" +        

        "<TD><INPUT TYPE = 'BUTTON' NAME = 'Today' VALUE = ' Today ' onClick='parent.opener.setToday()' class = 'bton'></TD>" +

        "<TD><INPUT TYPE = 'BUTTON' NAME = 'NextMonth' VALUE = ' > ' onClick='parent.opener.setNextMonth()' class = 'bton'></TD>" +

        "<TD>&nbsp;</TD>" +

        "</TD>" +

        "</TR>" +

        "</TABLE>" +

        "</TD>" +

        "</TR>" +

        "</FORM>" +

        "</TABLE>" +

        "</CENTER>" +

        "</BODY>" +

        "</HTML>";



    return calDoc;

}





// CREATE THE BOTTOM CALENDAR FRAME 

// (THE MONTHLY CALENDAR)

function buildBottomCalFrame() {       



    // START CALENDAR DOCUMENT

    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 = 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";

    var padding;



    // 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";

        }



    // SET GLOBAL DATE TO TODAY'S DATE

    var chekDate = new Date(dtToday);



    // SET DAY MONTH AND YEAR TO TODAY'S DATE

    var chkMonth = chekDate.getMonth();

    var chkYear  = chekDate.getFullYear();

    var chkDay   = chekDate.getDate();	



        // ADD THE DAY TO THE CALENDAR STRING

        calDoc += "<TD align=center bgcolor='" + cellColor + "'><font face = 'Verdana' size = '2'>";



        var dteSend;



        dteSend = eval(month) + 1;

        dteSend+= "/" + currentDay + "/" + year;



        dateDifference(dtToday, dteSend);



        if ((eval(year) >= eval(chkYear)) && (eval(numbDays) > 331)) {      

calDoc += "<a class='" + dayType + "' href='javascript:parent.opener.showError();'>";

        }		        

        else if ((eval(year) == eval(chkYear)) && (eval(month) == eval(chkMonth)) && (eval(currentDay) < eval(chkDay)+2)) {

calDoc += "<a class='" + dayType + "' href='javascript:parent.opener.showErr();'>";

        }

        else {	

                calDoc += "<a class='" + dayType + "' href='javascript:parent.opener.returnDate(" + currentDay + ")'>";	

        }



        calDoc += padding + currentDay + paddingChar;



        calDoc += "</a>";



        calDoc += "</font></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;



}





// DISPLAY ERROR IF MORE THAN 331 DAYS

function showError() {

      alert("Cannot Make Reservations More than 331 Days in Advance from Current Date "+ dtToday);

      calWin.focus();

}



// DISPLAY ERROR IF PRIOR TO CURRENT DATE

function showErr() {

      alert("Reservations must be booked at least two days prior to departure.");

      calWin.focus();

}



// DISPLAY ERROR IF PRIOR TO CURRENT MONTH

function showErrMon() {

      alert("Cannot display past dates.");

      calWin.focus();

}



// WRITE THE MONTHLY CALENDAR TO THE BOTTOM CALENDAR FRAME

function writeCalendar() {



    // CREATE THE NEW CALENDAR FOR THE SELECTED MONTH & YEAR

    calDocBottom = buildBottomCalFrame();



    // THIS WILL BE USED BE NS 6 FOR IT SPECIFIC DISPLAY PURPOSES

    var calLayer; 



    // WRITE THE NEW CALENDAR TO THE BOTTOM FRAME  



  

    if (isNav && !document.all && document.getElementById) {

	calLayer = calWin.frames['bottomCalFrame'].document.getElementById("divCal");

	calLayer.innerHTML = calDocBottom; 

    }

    else {

	calWin.frames['bottomCalFrame'].document.open();

 	calWin.frames['bottomCalFrame'].document.writeln(calDocBottom);   

              calWin.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(dtToday);



    // SET DAY MONTH AND YEAR TO TODAY'S DATE

    var month = calDate.getMonth();

    var year  = calDate.getFullYear();



    // SET MONTH IN DROP-DOWN LIST

    calWin.frames['topCalFrame'].document.calControl.month.selectedIndex = month;



    // SET YEAR VALUE

    calWin.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  = calWin.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

        calWin.frames['topCalFrame'].document.calControl.year.focus();

        calWin.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 = calWin.frames['topCalFrame'].document.calControl.month.selectedIndex;



    year    = calDate.getFullYear();



    // SET GLOBAL DATE TO TODAY'S DATE

    var chekDate = new Date(dtToday);



    // SET DAY MONTH AND YEAR TO TODAY'S DATE

    var chkMonth = chekDate.getMonth();

    var chkYear  = chekDate.getFullYear();



    if ((year == chkYear) &&  (eval(month) < eval(chkMonth))) {

	    calDate.setFullYear(eval(year) + 1);



	    // SET YEAR VALUE

	    calWin.frames['topCalFrame'].document.calControl.year.value = eval(year) + 1;

    }



    calDate.setMonth(month);

    writeCalendar();

}





// SET THE GLOBAL DATE TO THE PREVIOUS YEAR AND REDRAW THE CALENDAR

function setPreviousYear() {



    var year  = calWin.frames['topCalFrame'].document.calControl.year.value;



    if (isFourDigitYear(year) && year > 1000) {

        year--;

        calDate.setFullYear(year);

        calWin.frames['topCalFrame'].document.calControl.year.value = year;

        writeCalendar();

    }

}





// SET THE GLOBAL DATE TO THE PREVIOUS MONTH AND REDRAW THE CALENDAR

function setPreviousMonth() {

    calDate = new Date(dtToday);



    var chkYear = calDate.getYear();

    var chkMonth = calDate.getMonth() + 1; 



	if(isNav) {

		chkYear=1900+chkYear;

	}



    var year  = calWin.frames['topCalFrame'].document.calControl.year.value;    

    var month = calWin.frames['topCalFrame'].document.calControl.month.selectedIndex;



    if (isFourDigitYear(year)) {

        // IF MONTH IS JANUARY, SET MONTH TO DECEMBER AND DECREMENT THE YEAR

        if (month == 0) {

            month = 11;

            if (year > 1000) {

                year--;

                calDate.setFullYear(year);

                calWin.frames['topCalFrame'].document.calControl.year.value = year;

            }

        }

        else if ((eval(year) == eval(chkYear)) && (eval(month) < eval(chkMonth))) {

            showErrMon();

        }

        else {

           month--;	

        }

        calDate.setMonth(month);

        calWin.frames['topCalFrame'].document.calControl.month.selectedIndex = month;

        writeCalendar();



    }

}





// SET THE GLOBAL DATE TO THE NEXT MONTH AND REDRAW THE CALENDAR

function setNextMonth() {



    var year = calWin.frames['topCalFrame'].document.calControl.year.value;



    if (isFourDigitYear(year)) {

        var month = calWin.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);

            calWin.frames['topCalFrame'].document.calControl.year.value = year;

        }

        else {

            month++;

        }

        calDate.setMonth(month);

        calWin.frames['topCalFrame'].document.calControl.month.selectedIndex = month;

        writeCalendar();

    }

}





// SET THE GLOBAL DATE TO THE NEXT YEAR AND REDRAW THE CALENDAR

function setNextYear() {



    var year  = calWin.frames['topCalFrame'].document.calControl.year.value;

    if (isFourDigitYear(year)) {

        year++;

        calDate.setFullYear(year);

        calWin.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);

}





function dateDifference(dateToday, dateGen) {



	var date1=new Date(dateToday);

	var date2=new Date(dateGen);



	var date1gmtstring=date1.toGMTString();

	var date2gmtstring=date2.toGMTString();

	

	var date1parse=Date.parse(date1gmtstring);

	var date2parse=Date.parse(date2gmtstring);

	

	var diff=(date2parse-date1parse);

	diff = Math.floor((((diff  / 1000) / 60) / 60) / 24);



	numbDays = diff;



}



// 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) {

        calWin.frames['topCalFrame'].document.calControl.year.value = calDate.getFullYear();

        calWin.frames['topCalFrame'].document.calControl.year.select();

        calWin.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');

    }



    // DETERMINE MONTH TO SET AS DEFAULT

    var activeMonth = calDate.getMonth();



    // START HTML SELECT LIST ELEMENT

    monthSelect = "<SELECT class = 'txtB' 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 12 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('Su','Mo','Tu','We','Th','Fr','Sa');

    }



    // 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' bgcolor = '#D7DCE8'><font face = 'Tahoma' size = '3' color = '#6b8ec6'><B>" + weekdayArray[i] + "</B></font></TD>";

    }

    weekdays += "</TR>";



    // RETURN TABLE ROW OF WEEKDAY ABBREVIATIONS TO DISPLAY ABOVE THE CALENDAR

    return weekdays;

}







// PRE-BUILD PORTIONS OF THE CALENDAR (FOR PERFORMANCE REASONS)

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 =

        "<HTML>" +

        "<HEAD>" +

        // STYLESHEET DEFINES APPEARANCE OF CALENDAR

        "<STYLE>" + 

        "A.focusDay:link { FONT-SIZE: 12px; COLOR: #ff6600; FONT-FAMILY: Verdana; TEXT-DECORATION: none }" + 

        "A.focusDay:hover { FONT-SIZE: 12px; COLOR: #ff6600; FONT-FAMILY: Verdana; TEXT-DECORATION: none }" +

        "A.focusDay:visited { FONT-SIZE: 12px; COLOR: #ff6600; FONT-FAMILY: Verdana; TEXT-DECORATION: none }" +

        "A.weekDay:link { FONT-SIZE: 12px; COLOR: #333399; FONT-FAMILY: Verdana; TEXT-DECORATION: none }" +

        "A.weekDay:hover { FONT-SIZE: 12px; COLOR: #ff6600; FONT-FAMILY: Verdana; TEXT-DECORATION: none }" +

        "A.weekDay:visited { FONT-SIZE: 12px; COLOR: #333399; FONT-FAMILY: Verdana; TEXT-DECORATION: none }" +

        ".heading { FONT-WEIGHT: bold; FONT-SIZE: 11pt; COLOR: #6b8ec6; FONT-STYLE: normal; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #d7dce8; TEXT-ALIGN: center }" + 

        "</STYLE>" +  

        "</HEAD>" +

        "<BODY BGCOLOR='" + bottomBackground + "'" +

        "<CENTER>";



        // NAVIGATOR NEEDS A TABLE CONTAINER TO DISPLAY THE TABLE OUTLINES PROPERLY

        // FOR NS 6

        if (isNav && !document.all && document.getElementById) {

            calendarBegin += "<DIV ID = 'divCal'>";

        }

        // FOR NS 4

        if (isNav) {

            calendarBegin += 

                "<TABLE CELLPADDING=0 CELLSPACING=1 BORDER=" + tableBorder + " ALIGN=CENTER BGCOLOR='" + tableBGColor + "'><TR><TD class = 'cHead'>";

        }



        // BUILD WEEKDAY HEADINGS

        calendarBegin +=

            "<TABLE CELLPADDING=0 CELLSPACING=1 BORDER=" + tableBorder + " ALIGN=CENTER BGCOLOR='" + tableBGColor + "'>" +

            weekdays +

            "<TR>";





    // BUILD THE BOTTOM PORTION OF THE CALENDAR PAGE

    calendarEnd = "";



        // WHETHER OR NOT TO DISPLAY A THICK LINE BELOW THE CALENDAR

        if (bottomBorder) {

            calendarEnd += "<TR></TR>";

        }



        // NAVIGATOR NEEDS A TABLE CONTAINER TO DISPLAY THE BORDERS PROPERLY

        if (isNav) {

            calendarEnd += "</TD></TR></TABLE>";

        }



        // FOR NS 6

        if (isNav && !document.all && document.getElementById) {

            calendarEnd += "</DIV>";

        }



        // 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(inString, find, replace) {



    var outString = "";



    if (!inString) {

        return "";

    }



    // REPLACE ALL INSTANCES OF find WITH replace

    if (inString.indexOf(find) != -1) {

        // SEPARATE THE STRING INTO AN ARRAY OF STRINGS USING THE VALUE IN find

        t = inString.split(find);



        // JOIN ALL ELEMENTS OF THE ARRAY, SEPARATED BY THE VALUE IN replace

        return (t.join(replace));

    }

    else {

        return inString;

    }

}





// 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;



    // RETURN TWO DIGIT DAY

    if (calDateFormat.indexOf("DD") != -1) {

        day = makeTwoDigit(day);

        outDate = jsReplace(outDate, "DD", day);

    }

    // RETURN ONE OR TWO DIGIT DAY

    else if (calDateFormat.indexOf("dd") != -1) {

        outDate = jsReplace(outDate, "dd", day);

    }



    // RETURN TWO DIGIT MONTH

    if (calDateFormat.indexOf("MM") != -1) {

        month = makeTwoDigit(month);

        outDate = jsReplace(outDate, "MM", month);

    }

    // RETURN ONE OR TWO DIGIT MONTH

    else if (calDateFormat.indexOf("mm") != -1) {

        outDate = jsReplace(outDate, "mm", month);

    }



    // SET THE VALUE OF THE FIELD THAT WAS PASSED TO THE CALENDAR

    calCaller(From);

    document.forms[FrmNm].elements[myDayField].selectedIndex = calDate.getDate() - 1;

    document.forms[FrmNm].elements[myMonthField].selectedIndex = calDate.getMonth();



    document.forms[FrmNm].elements[myDayField].focus();



    if (From == "D") {

      	calCaller('R');

      	document.forms[FrmNm].elements[myDayField].focus();	

	      if (isNav && !document.all && !document.getElementById) {

       		document.forms[FrmNm].elements[myDayField].blur();	

      	}

      	calCaller('D');

      	document.forms[FrmNm].elements[myDayField].focus();

    }

    else if(From == "R") {

      	calCaller('D');

      	document.forms[FrmNm].elements[myDayField].focus();

       	if (isNav && !document.all && !document.getElementById) {

	        	document.forms[FrmNm].elements[myDayField].blur();	

        }

        calCaller('R');

       	document.forms[FrmNm].elements[myDayField].focus();

    }

    else if (From == "M") {

        calCaller('M');

        document.forms[FrmNm].elements[myDayField].focus();

        if (isNav && !document.all && !document.getElementById) {

               document.forms[FrmNm].elements[myDayField].blur();

        }

        document.forms[FrmNm].elements[myDayField].focus();

    }



    if (From == 'M') {

        AdvanceDate(FrmNm,theNumb);

    }

   	

    // CLOSE THE CALENDAR WINDOW

    calWin.close()



}


