.=< { Star Gans Tq } >=.
//JS DatePicker @0-7DE2F6F8
var DateMasks = new Array(26);
DateMasks["d"] = 0;
DateMasks["dd"] = 2;
DateMasks["m"] = 0;
DateMasks["mm"] = 2;
DateMasks["mmm"] = 3;
DateMasks["mmmm"] = 0;
DateMasks["M"] = 0;
DateMasks["MM"] = 2;
DateMasks["MMM"] = 3;
DateMasks["MMMM"] = 0;
DateMasks["yy"] = 2;
DateMasks["yyyy"] = 4;
DateMasks["h"] = 0;
DateMasks["hh"] = 2;
DateMasks["H"] = 0;
DateMasks["HH"] = 2;
DateMasks["n"] = 0;
DateMasks["nn"] = 2;
DateMasks["s"] = 0;
DateMasks["ss"] = 2;
DateMasks["tt"] = String(getLocaleInfo("AMDesignator")).length;
DateMasks["am/pm"] = 2;
DateMasks["AM/PM"] = 2;
DateMasks["A/P"] = 1;
DateMasks["a/p"] = 1;
DateMasks["w"] = 0;
DateMasks["q"] = 0;
DateMasks["S"] = 0;
function geckoGetRv()
{
if (navigator.product != 'Gecko')
{
return -1;
}
var rvValue = 0;
var ua = navigator.userAgent.toLowerCase();
var rvStart = ua.indexOf('rv:');
var rvEnd = ua.indexOf(')', rvStart);
var rv = ua.substring(rvStart+3, rvEnd);
var rvParts = rv.split('.');
var exp = 1;
for (var i = 0; i < rvParts.length; i++)
{
var val = parseInt(rvParts[i]);
rvValue += val / exp;
exp *= 100;
}
return rvValue;
}
function getDayOfYear(year, month, day)
{
var firstDay = new Date(year, 0, 1);
var date = new Date(year, month, day);
return (date-firstDay)/(1000*60*60*24);
}
function get12Hour(hoursNumber)
{
if (hoursNumber == 0)
hoursNumber = 12;
else if (hoursNumber > 12)
hoursNumber = hoursNumber - 12;
return hoursNumber;
}
function addZero(value, resultLength)
{
var countZero = resultLength - String(value).length;
var result = String(value);
for (var i=0; i<countZero; i++)
result = "0" + result;
return result;
}
function getAMPM(HoursNumber, AnteMeridiem, PostMeridiem)
{
if (HoursNumber >= 0 && HoursNumber < 12)
return AnteMeridiem;
else
return PostMeridiem;
}
function formatDate(dateToFormat, parsedFormat)
{
var resultArray = new Array(parsedFormat.length);
for (var i=0; i<parsedFormat.length; i++)
{
switch (parsedFormat[i])
{
case "d":
resultArray[i] = dateToFormat.getDate();
break;
case "w":
resultArray[i] = dateToFormat.getDay()+1;
break;
case "m": case "M":
resultArray[i] = dateToFormat.getMonth()+1;
break;
case "q":
resultArray[i] = Math.floor((dateToFormat.getMonth()+4)/4);
break;
case "y":
resultArray[i] = getDayOfYear(dateToFormat.getFullYear(), dateToFormat.getMonth(), dateToFormat.getDate());
break;
case "h":
resultArray[i] = "0";//get12Hour(dateToFormat.getHours());
break;
case "H":
resultArray[i] = "0";//dateToFormat.getHours();
break;
case "n":
resultArray[i] = "00";//dateToFormat.getMinutes();
break;
case "s":
resultArray[i] = "00";//dateToFormat.getSeconds();
break;
case "dd":
resultArray[i] = addZero(dateToFormat.getDate(), 2);
break;
case "ww":
resultArray[i] = Math.floor(getDayOfYear(dateToFormat.getFullYear(), dateToFormat.getMonth(), dateToFormat.getDate())/7)+1;
break;
case "mm": case "MM":
resultArray[i] = addZero(dateToFormat.getMonth()+1, 2);
break;
case "yy":
resultArray[i] = String(dateToFormat.getFullYear()).substr(2);
break;
case "hh":
resultArray[i] = "00";//addZero(get12Hour(dateToFormat.getHours()), 2);
break;
case "HH":
resultArray[i] = "00";//addZero(dateToFormat.getHours(), 2);
break;
case "nn":
resultArray[i] = "00";//addZero(dateToFormat.getMinutes(), 2);
break;
case "ss":
resultArray[i] = "00";//addZero(dateToFormat.getSeconds(), 2);
break;
case "S":
resultArray[i] = "000";//"000";
break;
case "ddd":
resultArray[i] = listShortWeekdays[dateToFormat.getDay()];
break;
case "mmm": case "MMM":
resultArray[i] = listShortMonths[dateToFormat.getMonth()];
break;
case "A/P":
resultArray[i] = "A";//getAMPM(dateToFormat.getHours(), "A", "P");
break;
case "a/p":
resultArray[i] = "a";//getAMPM(dateToFormat.getHours(), "a", "p");
break;
case "dddd":
resultArray[i] = listWeekdays[dateToFormat.getDay()];
break;
case "mmmm": case "MMMM":
resultArray[i] = listMonths[dateToFormat.getMonth()];
break;
case "yyyy":
resultArray[i] = dateToFormat.getFullYear();
break;
case "tt":
resultArray[i] = getLocaleInfo("AMDesignator");//getAMPM(dateToFormat.getHours(), getLocaleInfo("AMDesignator"), getLocaleInfo("PMDesignator"));
break;
case "AM/PM":
resultArray[i] = "AM";//getAMPM(dateToFormat.getHours(), "AM", "PM");
break;
case "am/pm":
resultArray[i] = "am";//getAMPM(dateToFormat.getHours(), "am", "pm");
break;
case ":":
resultArray[i] = ":";
break;
case "LongDate":
resultArray[i] = formatDate(dateToFormat, parseDateFormat(getLocaleInfo("longDate")));
break;
case "LongTime":
resultArray[i] = formatDate(dateToFormat, parseDateFormat(getLocaleInfo("longTime")));
break;
case "ShortDate":
resultArray[i] = formatDate(dateToFormat, parseDateFormat(getLocaleInfo("shortDate")));
break;
case "ShortTime":
resultArray[i] = formatDate(dateToFormat, parseDateFormat(getLocaleInfo("shortTime")));
break;
case "GeneralDate":
resultArray[i] = formatDate(dateToFormat, parseDateFormat(getLocaleInfo("shortDate")+" "+getLocaleInfo("longTime")));
break;
default:
if (String(parsedFormat[i]).charAt(0)=="\\")
resultArray[i] = String(parsedFormat[i]).substr(0);
else
resultArray[i] = parsedFormat[i];
}
}
return resultArray.join("");
}
function parseDate(dateToParse, parsedMask)
{
var resultDate, resultDateArray = new Array(8);
var MaskPart, MaskLength, TokenLength;
var IsError;
var DatePosition, MaskPosition;
var Delimiter, BeginDelimiter;
var MonthNumber, MonthName;
var DatePart;
var IS_DATE_POS, YEAR_POS, MONTH_POS, DAY_POS, IS_TIME_POS, HOUR_POS, MINUTE_POS, SECOND_POS;
IS_DATE_POS = 0; YEAR_POS = 1; MONTH_POS = 2; DAY_POS = 3;
IS_TIME_POS = 4; HOUR_POS = 5; MINUTE_POS = 6; SECOND_POS = 7;
if (!parsedMask)
{
resultDate = null;
}
else if (parsedMask[0] == "GeneralDate" && String(dateToParse)!="")
resultDate = parseDate(dateToParse, parseDateFormat(getLocaleInfo("shortDate")+" "+getLocaleInfo("longTime")));
else if (parsedMask[0] == "LongDate" && String(dateToParse)!="")
resultDate = parseDate(dateToParse, parseDateFormat(getLocaleInfo("longDate")));
else if (parsedMask[0] == "ShortDate" && String(dateToParse)!="")
resultDate = parseDate(dateToParse, parseDateFormat(getLocaleInfo("shortDate")));
else if (parsedMask[0] == "LongTime" && String(dateToParse)!="")
resultDate = parseDate(dateToParse, parseDateFormat(getLocaleInfo("longTime")));
else if (parsedMask[0] == "ShortTime" && String(dateToParse)!="")
resultDate = parseDate(dateToParse, parseDateFormat(getLocaleInfo("shortTime")));
else if (String(dateToParse) == "") resultDate = null;
else
{
DatePosition = 0;
MaskPosition = 0;
MaskLength = parsedMask.length;
IsError = false;
// Default date
resultDateArray[IS_DATE_POS] = false;
resultDateArray[IS_TIME_POS] = false;
resultDateArray[YEAR_POS] = 0; resultDateArray[MONTH_POS] = 12; resultDateArray[DAY_POS] = 1;
resultDateArray[HOUR_POS] = 0; resultDateArray[MINUTE_POS] = 0; resultDateArray[SECOND_POS] = 0;
while ((MaskPosition < MaskLength) && !IsError)
{
MaskPart = parsedMask[MaskPosition];
if (DateMasks[MaskPart] != null)
{
TokenLength = DateMasks[MaskPart];
if (TokenLength > 0)
{
DatePart = String(dateToParse).substr(DatePosition, TokenLength);
DatePosition = DatePosition + TokenLength;
}else
{
if (MaskPosition < MaskLength)
{
Delimiter = parsedMask[MaskPosition + 1];
BeginDelimiter = dateToParse.indexOf(Delimiter, DatePosition);
if (BeginDelimiter == -1)
{
//alert("ParseDate function: The number doesn't match the mask.");
return null;
}else
{
DatePart = String(dateToParse).substr(DatePosition, BeginDelimiter - DatePosition);
DatePosition = BeginDelimiter;
}
}else DatePart = String(dateToParse).substr(DatePosition);
}
switch (MaskPart)
{
case "d": case "dd":
resultDateArray[DAY_POS] = Math.floor(DatePart);
resultDateArray[IS_DATE_POS] = true;
break;
case "m": case "mm": case "M": case "MM":
resultDateArray[MONTH_POS] = Math.floor(DatePart);
resultDateArray[IS_DATE_POS] = true;
break;
case "mmm": case "mmmm": case "MMM": case "MMMM":
MonthNumber = 0;
MonthName = String(DatePart).toUpperCase();
if (MaskPart == "mmm")
MonthNamesArray = listShortMonths;
else
MonthNamesArray = listMonths;
while (MonthNumber < 11 && String(MonthNamesArray[MonthNumber]).toUpperCase() != MonthName)
{
MonthNumber = MonthNumber + 1;
}
if (MonthNumber == 11)
{
if (String(MonthNamesArray[11]).toUpperCase() != MonthName)
{
//alert("ParseDate function: The number doesn't match the mask.");
return null;
}
}
resultDateArray[MONTH_POS] = MonthNumber + 1;
resultDateArray[IS_DATE_POS] = true;
break;
case "yy":
var last2Digits = Math.floor(DatePart);
var centuryDigits = (last2Digits>=50)?1900:2000;
resultDateArray[YEAR_POS] = centuryDigits + last2Digits;
resultDateArray[IS_DATE_POS] = true;
break;
case "yyyy":
resultDateArray[YEAR_POS] = Math.floor(DatePart);
resultDateArray[IS_DATE_POS] = true;
break;
case "h": case "hh":
if (Math.floor(DatePart) == 12)
resultDateArray[HOUR_POS] = 0;
else
resultDateArray[HOUR_POS] = Math.floor(DatePart);
resultDateArray[IS_TIME_POS] = true;
break;
case "H": case "HH":
resultDateArray[HOUR_POS] = Math.floor(DatePart);
resultDateArray[IS_TIME_POS] = true;
break;
case "n": case "nn":
resultDateArray[MINUTE_POS] = Math.floor(DatePart);
resultDateArray[IS_TIME_POS] = true;
break;
case "s": case "ss":
resultDateArray[SECOND_POS] = Math.floor(DatePart);
resultDateArray[IS_TIME_POS] = true;
break;
case "tt": case "am/pm": case "a/p": case "AM/PM": case "A/P":
DatePart = DatePart==getLocaleInfo("AMDesignator")?"a":"p";
if (String(DatePart).toLowerCase().charAt(0) == "p")
resultDateArray[HOUR_POS] = resultDateArray[HOUR_POS] + 12;
else if (String(DatePart).toLowerCase().charAt(0) == "a")
resultDateArray[HOUR_POS] = resultDateArray[HOUR_POS];
resultDateArray[IS_TIME_POS] = true;
break;
case "w": case "q": case "S":
//Do Nothing
break;
}
}else DatePosition = DatePosition + parsedMask[MaskPosition].length;
MaskPosition = MaskPosition + 1
}
if (resultDateArray[IS_DATE_POS] && resultDateArray[IS_TIME_POS])
{
resultDate = new Date(resultDateArray[YEAR_POS], resultDateArray[MONTH_POS] - 1, resultDateArray[DAY_POS], resultDateArray[HOUR_POS], resultDateArray[MINUTE_POS], resultDateArray[SECOND_POS]);
}else if (resultDateArray[IS_DATE_POS])
{
resultDate = new Date(resultDateArray[YEAR_POS], resultDateArray[MONTH_POS] - 1, resultDateArray[DAY_POS]);
}else if (resultDateArray[IS_DATE_POS])
{
resultDate = new Date(0, 0, 0, resultDateArray[HOUR_POS], resultDateArray[MINUTE_POS], resultDateArray[SECOND_POS]);
}
}
return resultDate;
}
function checkDateRange(date)
{
var minDate = new Date(1753, 0, 1);
var maxDate = new Date(9999, 11, 31);
if (date < minDate) return minDate;
if (date > maxDate) return maxDate;
return date;
}
// Date formatting functions end ---------------------------------------------------
var DatePickerObject = new Object();
var datepickerControl = null;
var datepickerDocumentTop = null;
var datepickerDocumentBottom = null;
var datepickerSource = "";
var blankCellWeekend = "";
var blankCell = "";
var DatePickerBegin = "";
var DatePickerEnd = "";
var disableEvents = false;
var disableUnload = false;
var datePickerOpened = false;
// 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;
// DatePicker functions begin here ---------------------------------------------------
// Set the initial value of the global date field
function setDateField(dateField)
{
// Assign the incoming field object to a global variable
datepickerControl = eval(dateField);
// Set DatePickerObject.selectedDate to the date in the incoming field or default to today's date
setInitialDate(datepickerControl.value);
datepickerDocumentTop = buildTop();
datepickerDocumentBottom = buildBottom();
}
// Set the initial DatePicker date to today or to the existing value in dateField
function setInitialDate(inDate)
{
// Create a new date object
var date = parseDate(inDate, parseDateFormat(DatePickerObject.format));
if (date) date = checkDateRange(date);
// If the incoming date is invalid, use the current date
if (isNaN(date) || !date)
{
// Simply create a new date object which defaults to the current date
date = new Date();
}
DatePickerObject.selectedDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
// KEEP TRACK OF THE CURRENT DAY VALUE
DatePickerObject.selectedDay = date.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)
date.setDate(1);
DatePickerObject.currentMonth = date.getMonth();
DatePickerObject.currentYear = date.getFullYear();
}
// Popup a window with the DatePicker in it
function showDatePicker(object_name, form_name, form_control)
{
disableEvents = false;
DatePickerObject = eval(object_name);
if (typeof(DatePickerObject)!="object" || !DatePickerObject) return;
DatePickerObject.control = String("document."+form_name+"."+form_control);
DatePickerObject.themePath = DatePickerObject.style;
DatePickerObject.basePath = getBasePath();
DatePickerObject.selectedDate = new Date();
DatePickerObject.selectedDay = 1;
DatePickerObject.currentMonth = DatePickerObject.selectedDate.getMonth();
DatePickerObject.currentYear = DatePickerObject.selectedDate.getFullYear();
if (DatePickerObject.themePath.lastIndexOf("/")!=-1)
DatePickerObject.themePath = DatePickerObject.themePath.substr(0,DatePickerObject.themePath.lastIndexOf("/")+1);
else if (DatePickerObject.themePath.lastIndexOf("\\")!=-1)
DatePickerObject.themePath = DatePickerObject.themePath.substr(0,DatePickerObject.themePath.lastIndexOf("\\")+1);
// Pre-build portions of the DatePicker when this js library loads into the browser !!!!!!
buildDatePickerParts();
// Set initial value of the date field and create top and bottom part
setDateField(DatePickerObject.control);
// Use the javascript-generated documents (datepickerDocumentTop, datepickerDocumentBottom)
datepickerSource = datepickerDocumentBottom;
// Display the DatePicker in a new popup window
try{
top.newWinDatePickerObject.focus();
try{ if(eval(DatePickerObject.control+".value")) writeDatePicker(); } catch(e) {}
}catch(e){
top.newWinDatePickerObject = null;
}
if (!datePickerOpened || typeof(top.newWinDatePickerObject) != "object" || (typeof(top.newWinDatePickerObject) == "object" && top.newWinDatePickerObject == null))
{
var datepickerURL = DatePickerObject.relativePathPart?DatePickerObject.relativePathPart+"DatePicker.html":"DatePicker.html";
var w_left = Math.ceil(screen.width/2-120);
var w_top = Math.ceil(screen.height/2-110);
top.newWinDatePickerObject = window.open(datepickerURL+"?random="+Math.random(), "DatePickerWindow", "dependent=yes,left="+w_left+",top="+w_top+",width=300,height=270,screenX=200,screenY=300,titlebar=yes, center: yes, help: no, resizable: yes, status: no");
datePickerOpened = true;
}
}
// Retrieves a path for the <base> tag to get paths correctly
function getBasePath()
{
var l = String(location.href);
var q = l.indexOf("?"); l = l.substr(0, (q != -1 ? q : l.length));
var index1 = l.lastIndexOf("\\");
var index2 = l.lastIndexOf("/");
var index = index1>index2?index1:index2;
return l.substr(0, index + 1) + DatePickerObject.relativePathPart;
}
// Create the top DatePicker part
function buildTop()
{
// Create the top part of the DatePicker
var imgPrevYear = DatePickerObject.themePath+"Images/Back.gif";
var imgPrevMonth = DatePickerObject.themePath+"Images/Prev.gif";
var imgNextMonth = DatePickerObject.themePath+"Images/Next.gif";
var imgNextYear = DatePickerObject.themePath+"Images/Forward.gif";
/*if (DatePickerObject.hasMasterPage) {
imgPrevYear = DatePickerObject.themePath+"Images/NavigatorFirst.png";
imgPrevMonth = DatePickerObject.themePath+"Images/NavigatorPrev.png";
imgNextMonth = DatePickerObject.themePath+"Images/NavigatorNext.png";
imgNextYear = DatePickerObject.themePath+"Images/NavigatorLast.png";
}*/
var datepickerDocument = (DatePickerObject.themeVersion=="3.0"?"":"<TABLE CELLPADDING=0 CELLSPACING=0 CLASS=CalendarControls>");
if (DatePickerObject.themeVersion!="3.0") datepickerDocument += "<TR><TD>";
datepickerDocument +=
"<A " +
"HREF=\"javascript:parent.opener.setPreviousYear()\"><IMG SRC=\""+imgPrevYear+"\"></A><A " +
"HREF=\"javascript:parent.opener.setPreviousMonth()\"><IMG SRC=\""+imgPrevMonth+"\"></A>";
if (DatePickerObject.themeVersion!="3.0") datepickerDocument += "</TD><TD style=\"text-align:center;\" style=\"width:100%;\">";
else datepickerDocument += " ";
datepickerDocument +=
"<LABEL ID=\"labelMonth\">"+listMonths[DatePickerObject.currentMonth]+"</LABEL> <LABEL ID=\"labelYear\">"+DatePickerObject.currentYear+"</LABEL>";
if (DatePickerObject.themeVersion!="3.0") datepickerDocument += "</TD><TD>";
else datepickerDocument += " ";
datepickerDocument +=
"<A " +
"HREF=\"javascript:parent.opener.setNextMonth()\"><IMG SRC=\""+imgNextMonth+"\"></A><A " +
"HREF=\"javascript:parent.opener.setNextYear()\"><IMG SRC=\""+imgNextYear+"\"></A>";
if (DatePickerObject.themeVersion!="3.0") datepickerDocument += "</TD></TR></TABLE>";
//prompt("",datepickerDocument)
return datepickerDocument;
}
// Create the bottom DatePicker part
function buildBottom()
{
// Start DatePicker document
var datepickerDocument = (isNav?"<HTML>" + "<HEAD>" +
"<base href=\"" + DatePickerObject.basePath + "\">" +
// Stylesheet defines appearance of DatePicker
"<LINK REL=\"stylesheet\" TYPE=\"text/css\" HREF=\""+DatePickerObject.style+"\">" +
"<TITLE> Date Picker </TITLE>" +
"</HEAD>" +
"<BODY ONUNLOAD='parent.opener.UnLoad();'>":"") + DatePickerBegin.replace(/{datepickerDocumentTop}/, datepickerDocumentTop);
// Get month, and year from global DatePicker date
var month = DatePickerObject.currentMonth;
var year = DatePickerObject.currentYear;
var date = new Date();
// Get globally-tracked day value (prevents javascript date anomalies)
var selectedDay = DatePickerObject.selectedDay;
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 (selectedDay > days)
selectedDay = days;
// Determine what day of the week the DatePicker 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() - firstWeekDayIndex;
if (startingPos<0) startingPos += 7;
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++)
{
if ((columnCount + firstWeekDayIndex) % 7 == 0 || (columnCount + firstWeekDayIndex) % 7 == 6)
datepickerDocument += blankCellWeekend
else
datepickerDocument += blankCell;
columnCount++;
}
// Set values for days of the month
var currentDay = 0;
var dayType = "weekday";
var dayBackground = "";
// Date cells contain a number
for (i = startingPos; i < days; i++)
{
var paddingChar = " ";
dayBackground = "";
var padding = "";
// 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 selected day generally appears as a different color
var currentDate = DatePickerObject.selectedDate;
if (currentDay == selectedDay && month==currentDate.getMonth() && year==currentDate.getFullYear())
{
dayType = "CalendarSelectedDay";
dayBackground = "CalendarSelectedDay";
}
else if (currentDay == date.getDate() && month==date.getMonth() && year==date.getFullYear())
{
dayType = "CalendarToday";
dayBackground = "CalendarToday";
}
else
{
dayType = "CalendarDay";
}
// Add the day to the DatePicker string depending on workday or not.
if ((columnCount + firstWeekDayIndex) % 7 == 0 || (columnCount + firstWeekDayIndex) % 7 == 6)
{
datepickerDocument += "<TD style=\"text-align:center;\" class=\""+(dayBackground?dayBackground:"CalendarWeekend")+"\">" +
padding +
"<a href=\"javascript:parent.opener.returnDate(" +
currentDay + ")\">" + currentDay + "</a>" +
paddingChar + "</TD>";
}
else
{
datepickerDocument += "<TD style=\"text-align:center;\" class=\""+(dayBackground?dayBackground:"CalendarDay")+"\">" +
padding +
"<a href=\"javascript:parent.opener.returnDate(" +
currentDay + ")\">" + currentDay + "</a>" +
paddingChar + "</TD>";
}
columnCount++;
// Start a new row when necessary
if (columnCount % 7 == 0)
datepickerDocument += "</TR><TR>";
}
// Make remaining non-date cells blank
for (i=days; i<(startingPos<0?42+startingPos:42); i++)
{
if ((columnCount + firstWeekDayIndex) % 7 == 0 || (columnCount + firstWeekDayIndex) % 7 == 6)
datepickerDocument += blankCellWeekend;
else
datepickerDocument += blankCell;
columnCount++;
// Start a new row when necessary
if (columnCount % 7 == 0)
{
datepickerDocument += "</TR>";
if (i<(startingPos<0?41+startingPos:41)) datepickerDocument += "<TR>";
}
}
// Finish the new DatePicker page
datepickerDocument += DatePickerEnd + (isNav?"</BODY>" + "</HTML>":"");
// Return the completed DatePicker page
return datepickerDocument;
}
// Write the monthly DatePicker to the bottom DatePicker part
function writeDatePicker()
{
// Set top.newWinDatePickerObject when DatePicker window is refreshed
if (!datePickerOpened || typeof(top.newWinDatePickerObject) != "object" || (typeof(top.newWinDatePickerObject) == "object" && top.newWinDatePickerObject == null))
{
var datepickerURL = DatePickerObject.relativePathPart?DatePickerObject.relativePathPart+"DatePicker.html":"DatePicker.html";
var w_left = Math.ceil(screen.width/2-120);
var w_top = Math.ceil(screen.height/2-110);
top.newWinDatePickerObject = window.open(datepickerURL+"?random="+Math.random(), "DatePickerWindow", "dependent=yes,left="+w_left+",top="+w_top+",width=300,height=270,screenX=200,screenY=300,titlebar=yes, center: yes, help: no, resizable: yes, status: no");
}
// Create the new DatePicker for the selected month & year
datepickerDocumentTop = buildTop();
datepickerDocumentBottom = buildBottom();
// Write the new DatePicker to the bottom part
disableUnload = true;
top.newWinDatePickerObject.document.open();
top.newWinDatePickerObject.document.write(datepickerDocumentBottom);
top.newWinDatePickerObject.document.close();
disableUnload = false;
}
// Set the DatePicker to today's date and display the new DatePicker
function setToday()
{
// Set global date to today's date
var date = new Date();
// Set day month and year to today's date
DatePickerObject.currentMonth = date.getMonth();
DatePickerObject.currentYear = date.getFullYear();
returnDate(date.getDate());
}
// Set the global date to the previous year and redraw the DatePicker
function setPreviousYear()
{
var year = DatePickerObject.currentYear - 1;
var date = new Date();
date.setFullYear(year);
date = checkDateRange(date);
year = date.getFullYear();
DatePickerObject.currentYear = year;
writeDatePicker();
}
// Set the global date to the previous month and redraw the DatePicker
function setPreviousMonth()
{
var year = DatePickerObject.currentYear;
var month = DatePickerObject.currentMonth;
// If month is january, set month to december and decrement the year
if (month == 0)
{
month = 11;
if (year > 1000)
{
year--;
var date = new Date();
date.setFullYear(year);
date = checkDateRange(date);
year = date.getFullYear();
DatePickerObject.currentYear = year;
}
}else
{
month--;
}
DatePickerObject.currentMonth = month;
writeDatePicker();
}
// Set the global date to the next month and redraw the DatePicker
function setNextMonth()
{
var year = DatePickerObject.currentYear;
var month = DatePickerObject.currentMonth;
// If month is december, set month to january and increment the year
if (month == 11)
{
month = 0;
year++;
var date = new Date();
date.setFullYear(year);
date = checkDateRange(date);
year = date.getFullYear();
DatePickerObject.currentYear = year;
} else
{
month++;
}
DatePickerObject.currentMonth = month;
writeDatePicker();
}
// Set the global date to the next year and redraw the DatePicker
function setNextYear()
{
var year = DatePickerObject.currentYear + 1;
var date = new Date();
date.setFullYear(year);
date = checkDateRange(date);
year = date.getFullYear();
DatePickerObject.currentYear = year;
writeDatePicker();
}
// Get number of days in month
function getDaysInMonth()
{
var days;
var month = DatePickerObject.currentMonth+1;
var year = DatePickerObject.currentYear;
// 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;
}
// Set days of the week depending on language
function createWeekdayList()
{
firstWeekDayIndex = 0;
newWeekdayArray = new Array(7);
newWeekdayList = new Array(7);
for (var i=0; i<listShortWeekdays.length; i++)
if (listShortWeekdays[i]==firstWeekDay) firstWeekDayIndex = i;
for (var i=firstWeekDayIndex; i<listShortWeekdays.length; i++)
{
newWeekdayArray[i-firstWeekDayIndex] = listShortWeekdays[i];
newWeekdayList[i-firstWeekDayIndex] = listWeekdays[i];
}
for (var i=0; i<firstWeekDayIndex; i++)
{
newWeekdayArray[7-firstWeekDayIndex+i] = listShortWeekdays[i];
newWeekdayList[7-firstWeekDayIndex+i] = listWeekdays[i];
}
// Start html to hold weekday names in table format
var weekdays = "<TR>";
// Loop through weekday array
var columnCount = 0;
for (var i = 0; i < listShortWeekdays.length; i++)
{
weekdays += "<TD class=\"CalendarWeekdayName\" style=\"text-align:center;\">" + newWeekdayArray[i] + "</TD>";
columnCount++;
}
weekdays += "</TR>";
// Return table row of weekday abbreviations to display above the DatePicker
return weekdays;
}
// Pre-build portions of the DatePicker (for performance reasons)
function buildDatePickerParts()
{
// Generate weekday headers for the DatePicker
weekdays = createWeekdayList();
// Build the blank cell rows
blankCell = "<TD style=\"text-align:center;\" class=\"CalendarDay\"> </TD>";
blankCellWeekend = "<TD style=\"text-align:center;\" class=\"CalendarWeekend\"> </TD>";
// Build the top portion of the DatePicker page using css to control some display elements
var stylePath=DatePickerObject.style;
/*if (DatePickerObject.hasMasterPage == true)
stylePath += "Style.css";*/
DatePickerBegin =
(isNav?"":"<HTML>" +
"<HEAD>" +
"<base href=\"" + DatePickerObject.basePath + "\">" +
// Stylesheet defines appearance of DatePicker
"<LINK REL=\"stylesheet\" TYPE=\"text/css\" HREF=\""+stylePath+"\">" +
"<TITLE> Date Picker </TITLE>" +
"</HEAD>" +
"<BODY ONUNLOAD='parent.opener.UnLoad();'>") + "<DIV STYLE='text-align:center'>";
// Navigator needs a table container to display the table outlines properly
if (DatePickerObject.themeVersion=="3.0")
DatePickerBegin += "<TABLE CELLPADDING=0 CELLSPACING=0 style='width: 100%; margin-left: auto; margin-right: auto'><TR><TD>";
else
DatePickerBegin += "<TABLE CELLPADDING=0 CELLSPACING=0 style='width: 100%; margin-left: auto; margin-right: auto'><TR><TD>{datepickerDocumentTop}</TD></TR><TR><TD style=\"text-align:center;vertical-align:top;\">";
// Build weekday headings
if (DatePickerObject.themeVersion=="3.0")
{
DatePickerBegin += "<TABLE CELLPADDING=0 CELLSPACING=0 CLASS=\"Grid\"><TR CLASS=Footer><TD COLSPAN=7>{datepickerDocumentTop}</TD></TR>";
DatePickerBegin += weekdays + "<TR>";
}else
DatePickerBegin += "<TABLE CELLPADDING=0 CELLSPACING=0 CLASS=\"Calendar\">" + weekdays + "<TR>";
// Build the bottom portion of the DatePicker page
DatePickerEnd = "";
if (DatePickerObject.themeVersion=="3.0") {
var translation_language = "fr";
var imgToday = DatePickerObject.themePath+"Images/"+translation_language+"/ButtonToday.gif";
DatePickerEnd += '<tr class=Footer><form id="calTable" name="calTable"><td colspan=7><input type=image src="' + imgToday + '" name=today onClick="parent.opener.setToday()"></td></form></tr>';
}
// Navigator needs a table container to display the borders properly
DatePickerEnd += "</TABLE>";
// End the table and html document
if (DatePickerObject.themeVersion != "3.0")
DatePickerEnd +=
'</TABLE>' +
(isNav ? '<FORM NAME="calTable" onSubmit="return false;">' : '') +
'<TABLE CELLPADDING=0 CELLSPACING=0>' +
(isNav ? "" : '<FORM NAME="calTable" onSubmit="return false;">') +
'<TD>' +
'<INPUT TYPE="button" CLASS="CalendarButton" NAME="today" VALUE="Aujourd'hui" onClick="parent.opener.setToday()">' +
'</TD>' +
(isNav ? '' : '</FORM>')+
'</TABLE>' +
(isNav ? '</FORM>' : '')+
'</DIV>' +
'</HTML>';
}
// Set field value to the date selected and close the DatePicker window
function returnDate(inDay)
{
disableEvents = true;
// inDay = the day the user clicked on
var date = new Date(DatePickerObject.currentYear, DatePickerObject.currentMonth, 1);
date.setDate(inDay);
if (date) date = checkDateRange(date);
// Set the date returned to the user
var dateFormat = DatePickerObject.format;
var outDate = formatDate(date, parseDateFormat(dateFormat));
// Set the value of the field that was passed to the DatePicker
datepickerControl.value = String(outDate).replace(/\s*$/, "");
// Give focus back to the date field
if (datepickerControl.type!="hidden") datepickerControl.focus();
// Close the DatePicker window
top.newWinDatePickerObject.close()
top.newWinDatePickerObject = null;
}
function UnLoad()
{
if (disableUnload) return;
disableEvents = true;
datePickerOpened = false;
}
//End JS DatePicker