You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1832 lines
32 KiB
1832 lines
32 KiB
// |
|
|
|
// JavaScript Calendar Component |
|
|
|
// Author: Robert W. Husted (robert.husted@iname.com) |
|
|
|
// Date: 8/22/1999 |
|
|
|
// Modified Date: 11/30/1999 |
|
|
|
// Modified By: Robert W. Husted |
|
|
|
// Notes: Added frameset support (changed reference for "newWin" to "top.newWin") |
|
|
|
// Also changed Spanish "March" from "Marcha" to "Marzo" |
|
|
|
// Fixed JavaScript Date Anomaly affecting days > 28 |
|
|
|
// |
|
|
|
// |
|
|
|
// |
|
|
|
// Usage: Add the following lines of code to your page to enable the Calendar |
|
|
|
// component. |
|
|
|
// |
|
|
|
// |
|
|
|
// // THIS LINE LOADS THE JS LIBRARY FOR THE CALENDAR COMPONENT |
|
|
|
// |
|
|
|
// <SCRIPT LANGUAGE="JavaScript" SRC="calendar.js"></SCRIPT> |
|
|
|
// |
|
|
|
// |
|
|
|
// |
|
|
|
// // THIS LINE IS USED IN CONJUNCTION WITH A FORM FIELD (myDateField) IN A FORM (myForm). |
|
|
|
// // Replace "myForm" and "myDateField" WITH THE NAME OF YOUR FORM AND INPUT FIELD RESPECTIVELY |
|
|
|
// // WINDOW OPTIONS SET THE WIDTH, HEIGHT, AND X/Y POSITION OF THE CALENDAR WINDOW |
|
|
|
// // WITH TITLEBAR ON, ALL OTHER OPTIONS (TOOLBARS, ETC) ARE DISABLED BY DEFAULT |
|
|
|
// |
|
|
|
// <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> |
|
|
|
// |
|
|
|
// |
|
|
|
// |
|
|
|
// Required Files: |
|
|
|
// |
|
|
|
// calendar.js - contains all JavaScript functions to make the calendar work |
|
|
|
// |
|
|
|
// calendar.html - frameset document (not required if you call the showCalendar() |
|
|
|
// function. However, calling showCalendar() directly causes |
|
|
|
// the Java Virtual Machine (JVM) to start which slows down the |
|
|
|
// loading of the calendar.) |
|
|
|
// |
|
|
|
// |
|
|
|
// Files Generally Included: |
|
|
|
// |
|
|
|
// calendar.gif - image that looks like a little calendar |
|
|
|
// |
|
|
|
// yourPage.html - page that contains a form and a date field which implements |
|
|
|
// the calendar component |
|
|
|
// |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 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/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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 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; |
|
|
|
|
|
|
|
// PRE-BUILD PORTIONS OF THE CALENDAR WHEN THIS JS LIBRARY LOADS INTO THE BROWSER |
|
|
|
buildCalParts(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CALENDAR FUNCTIONS BEGIN HERE --------------------------------------------------- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// SET THE INITIAL VALUE OF THE GLOBAL DATE FIELD |
|
|
|
function setDateField(dateField) { |
|
|
|
|
|
|
|
// ASSIGN THE INCOMING FIELD OBJECT TO A GLOBAL VARIABLE |
|
|
|
calDateField = dateField; |
|
|
|
|
|
|
|
// GET THE VALUE OF THE INCOMING FIELD |
|
|
|
inDate = dateField.value; |
|
|
|
|
|
|
|
// 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) |
|
|
|
|
|
|
|
// --------------------------------------------------------- |
|
|
|
// custom parsing of date format added by dikr, |
|
|
|
// added to support easy integration into dbforms tag library 2002-5-28: |
|
|
|
// ignore case when parsing |
|
|
|
var inputCalFormat = calDateFormat.toLowerCase(); |
|
|
|
|
|
|
|
// if pattern is made just of letters 'y','m','d' and |
|
|
|
// some delimiters '-','_','.' or '/' , e.g. 'dd.mm.yyyy', |
|
|
|
// 'yyyy-mm-dd', 'mm/dd/yyyy', we will try to automatically |
|
|
|
// parse it: |
|
|
|
if (inputCalFormat.match(/[ymd]+[\.\-_\/][ymd]+[\.\-_\/][ymd]+/)) { |
|
|
|
// transform pattern to use standard delimiter '-', |
|
|
|
// e.g. 'dd.mm.yyyy' => 'dd-mm-yyyy' |
|
|
|
// neccessary, because split function does not seem to |
|
|
|
// support regular expr. (or am I wrong?) |
|
|
|
inputCalFormat = inputCalFormat.replace(/[\.\-_\/]+/g,'-'); |
|
|
|
// split input format into components |
|
|
|
var formatComps = inputCalFormat.split('-'); |
|
|
|
|
|
|
|
// now the same for input date: transform to use |
|
|
|
// standard delimiter.... |
|
|
|
inDate2 = inDate.replace(/[\.\-_\/]+/g,'-'); |
|
|
|
// and split it into components: |
|
|
|
datComps = inDate2.split('-'); |
|
|
|
// now examine all (hopefully) three parts: |
|
|
|
for (var ii = 0 ; ii<3;ii++) { |
|
|
|
// ii-th part of pattern, hopefully 'dd', 'mm', 'yy'.... |
|
|
|
var pattpart = formatComps[ii]; |
|
|
|
|
|
|
|
if (pattpart.match(/[y]+/)) inyear = datComps[ii]; // year found |
|
|
|
if (pattpart.match(/[m]+/)) inmonth = datComps[ii] - 1; // month found |
|
|
|
if (pattpart.match(/[d]+/)) inday= datComps[ii]; // day found |
|
|
|
|
|
|
|
} |
|
|
|
// create new date object |
|
|
|
calDate = new Date(inyear,inmonth,inday); |
|
|
|
|
|
|
|
} else { // pattern is somehow different, do not try to |
|
|
|
// parse it and use build-in JavaScript date constructor: |
|
|
|
calDate = new Date(inDate); |
|
|
|
// use English language in case format uses textual months |
|
|
|
// that would not be understood by dbforms |
|
|
|
selectedLanguage = 'en'; |
|
|
|
} |
|
|
|
// end of modifications |
|
|
|
// ---------------------------------------------------------- |
|
|
|
|
|
|
|
|
|
|
|
// 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); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 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></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 |
|
|
|
top.newWin = window.open("javascript:parent.opener.calDocFrameset", "calWin", winPrefs); |
|
|
|
top.newWin.focus(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// CREATE THE TOP CALENDAR FRAME |
|
|
|
function buildTopCalFrame() { |
|
|
|
|
|
|
|
// CREATE THE TOP FRAME OF THE CALENDAR |
|
|
|
var calDoc = |
|
|
|
"<HTML>" + |
|
|
|
"<HEAD>" + |
|
|
|
"</HEAD>" + |
|
|
|
"<BODY BGCOLOR='" + topBackground + "'>" + |
|
|
|
"<FORM NAME='calControl' onSubmit='return false;'>" + |
|
|
|
"<CENTER>" + |
|
|
|
"<TABLE CELLPADDING=0 CELLSPACING=1 BORDER=0>" + |
|
|
|
"<TR><TD COLSPAN=7>" + |
|
|
|
"<CENTER>" + |
|
|
|
getMonthSelect() + |
|
|
|
"<INPUT NAME='year' VALUE='" + calDate.getFullYear() + "'TYPE=TEXT SIZE=4 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='Heute' 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>" + |
|
|
|
"</CENTER>" + |
|
|
|
"</FORM>" + |
|
|
|
"</BODY>" + |
|
|
|
"</HTML>"; |
|
|
|
|
|
|
|
return calDoc; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// CREATE THE BOTTOM CALENDAR FRAME |
|
|
|
// (THE MONTHLY CALENDAR) |
|
|
|
function buildBottomCalFrame() { |
|
|
|
|
|
|
|
// START CALENDAR DOCUMENT |
|
|
|
var 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"; |
|
|
|
|
|
|
|
// DATE CELLS CONTAIN A NUMBER |
|
|
|
for (i = startingPos; i < days; i++) { |
|
|
|
|
|
|
|
var paddingChar = " "; |
|
|
|
|
|
|
|
// ADJUST SPACING SO THAT ALL LINKS HAVE RELATIVELY EQUAL WIDTHS |
|
|
|
if (i-startingPos+1 < 10) { |
|
|
|
padding = " "; |
|
|
|
} |
|
|
|
else { |
|
|
|
padding = " "; |
|
|
|
} |
|
|
|
|
|
|
|
// 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() { |
|
|
|
|
|
|
|
// 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(); |
|
|
|
|
|
|
|
// 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', 'Août', '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 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>" + weekdayArray[i] + "</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 + "'> </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 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.weekday:link { color: " + dateColor + "; text-decoration: none; font: " + fontStyle + "; }" + |
|
|
|
"A.weekday:hover { color: " + hoverColor + "; font: " + fontStyle + "; }" + |
|
|
|
"-->" + |
|
|
|
"</STYLE>" + |
|
|
|
"</HEAD>" + |
|
|
|
"<BODY 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 + |
|
|
|
"<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>"; |
|
|
|
} |
|
|
|
|
|
|
|
// 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; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 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; |
|
|
|
|
|
|
|
// 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); |
|
|
|
} |
|
|
|
|
|
|
|
// RETURN FOUR-DIGIT YEAR |
|
|
|
if (calDateFormat.indexOf("yyyy") != -1) { |
|
|
|
outDate = jsReplace(outDate, "yyyy", year); |
|
|
|
} |
|
|
|
// RETURN TWO-DIGIT YEAR |
|
|
|
else if (calDateFormat.indexOf("yy") != -1) { |
|
|
|
var yearString = "" + year; |
|
|
|
var yearString = yearString.substring(2,4); |
|
|
|
outDate = jsReplace(outDate, "yy", yearString); |
|
|
|
} |
|
|
|
// RETURN FOUR-DIGIT YEAR |
|
|
|
else if (calDateFormat.indexOf("YY") != -1) { |
|
|
|
outDate = jsReplace(outDate, "YY", year); |
|
|
|
} |
|
|
|
|
|
|
|
// RETURN DAY OF MONTH (Initial Caps) |
|
|
|
if (calDateFormat.indexOf("Month") != -1) { |
|
|
|
outDate = jsReplace(outDate, "Month", monthString); |
|
|
|
} |
|
|
|
// RETURN DAY OF MONTH (lowercase letters) |
|
|
|
else if (calDateFormat.indexOf("month") != -1) { |
|
|
|
outDate = jsReplace(outDate, "month", monthString.toLowerCase()); |
|
|
|
} |
|
|
|
// RETURN DAY OF MONTH (UPPERCASE LETTERS) |
|
|
|
else if (calDateFormat.indexOf("MONTH") != -1) { |
|
|
|
outDate = jsReplace(outDate, "MONTH", monthString.toUpperCase()); |
|
|
|
} |
|
|
|
|
|
|
|
// RETURN DAY OF MONTH 3-DAY ABBREVIATION (Initial Caps) |
|
|
|
if (calDateFormat.indexOf("Mon") != -1) { |
|
|
|
outDate = jsReplace(outDate, "Mon", monthAbbrev); |
|
|
|
} |
|
|
|
// RETURN DAY OF MONTH 3-DAY ABBREVIATION (lowercase letters) |
|
|
|
else if (calDateFormat.indexOf("mon") != -1) { |
|
|
|
outDate = jsReplace(outDate, "mon", monthAbbrev.toLowerCase()); |
|
|
|
} |
|
|
|
// RETURN DAY OF MONTH 3-DAY ABBREVIATION (UPPERCASE LETTERS) |
|
|
|
else if (calDateFormat.indexOf("MON") != -1) { |
|
|
|
outDate = jsReplace(outDate, "MON", monthAbbrev.toUpperCase()); |
|
|
|
} |
|
|
|
|
|
|
|
// RETURN WEEKDAY (Initial Caps) |
|
|
|
if (calDateFormat.indexOf("Weekday") != -1) { |
|
|
|
outDate = jsReplace(outDate, "Weekday", weekday); |
|
|
|
} |
|
|
|
// RETURN WEEKDAY (lowercase letters) |
|
|
|
else if (calDateFormat.indexOf("weekday") != -1) { |
|
|
|
outDate = jsReplace(outDate, "weekday", weekday.toLowerCase()); |
|
|
|
} |
|
|
|
// RETURN WEEKDAY (UPPERCASE LETTERS) |
|
|
|
else if (calDateFormat.indexOf("WEEKDAY") != -1) { |
|
|
|
outDate = jsReplace(outDate, "WEEKDAY", weekday.toUpperCase()); |
|
|
|
} |
|
|
|
|
|
|
|
// RETURN WEEKDAY 3-DAY ABBREVIATION (Initial Caps) |
|
|
|
if (calDateFormat.indexOf("Wkdy") != -1) { |
|
|
|
outDate = jsReplace(outDate, "Wkdy", weekdayAbbrev); |
|
|
|
} |
|
|
|
// RETURN WEEKDAY 3-DAY ABBREVIATION (lowercase letters) |
|
|
|
else if (calDateFormat.indexOf("wkdy") != -1) { |
|
|
|
outDate = jsReplace(outDate, "wkdy", weekdayAbbrev.toLowerCase()); |
|
|
|
} |
|
|
|
// RETURN WEEKDAY 3-DAY ABBREVIATION (UPPERCASE LETTERS) |
|
|
|
else if (calDateFormat.indexOf("WKDY") != -1) { |
|
|
|
outDate = jsReplace(outDate, "WKDY", weekdayAbbrev.toUpperCase()); |
|
|
|
} |
|
|
|
|
|
|
|
// SET THE VALUE OF THE FIELD THAT WAS PASSED TO THE CALENDAR |
|
if(calDateField.getAttribute("readonly")) |
|
{ |
|
if(calDateField.getAttribute("readonly")!="true") |
|
{ |
|
calDateField.value = outDate; |
|
} |
|
} |
|
else |
|
{ |
|
calDateField.value = outDate; |
|
} |
|
|
|
|
|
// GIVE FOCUS BACK TO THE DATE FIELD |
|
|
|
calDateField.focus(); |
|
|
|
|
|
|
|
// CLOSE THE CALENDAR WINDOW |
|
|
|
top.newWin.close() |
|
|
|
} |
|
|
|
|