/************************************************************ * TDS Date Picker * * * * For updated releases/changes visit www.tdscode.com * * * * This code may be used freely as long as this header is * * displayed at the top of this file. * * * * The calendar was designed for Netscape 4.x - higher and * * Internet Explorer 4.x - higher. * * * * For instructions on using the calendar in visit * * www.tdscode.com. Comments and suggestions are welcome. * ************************************************************/ //Global Variables //Define the different browser types that are supported var NS4 = (navigator.appName=="Netscape")&&(parseInt(navigator.appVersion)==4); var NS6 = (navigator.appName=="Netscape")&&(parseInt(navigator.appVersion)==5); var IE4 = document.all; //Calendar objects var calNS4; var calNS6; var calIE4; //Holding Variables var CALENDAR_HTML = ""; var DISPLAY_DATE = ""; var CURRENT_DATE_FIELD = ""; var HLD_DIV = ""; var BUILT = "no"; //End of Global Variables //Write out the style sheets document.write(""); //This function is used to display the calendar function showCalendar(field,date,xPos,yPos) { if (HLD_DIV != date && BUILT == "yes") { if (NS4) calNS4.visibility = 'hidden'; else if (IE4) calIE4.style.visibility = 'hidden'; else if (NS6) calNS6.style.visibility = 'hidden'; BUILT = "no"; HLD_DIV = date; } if (BUILT == "yes") { if (NS4) calNS4.visibility = 'visible'; else if (IE4) calIE4.style.visibility = 'visible'; else if (NS6) calNS6.style.visibility = 'visible'; return; } //Set the Date field to use CURRENT_DATE_FIELD = field; //Set the Display Date to null DISPLAY_DATE = ""; //Build the Calendar buildCalendar(); if (!xPos) xPos = ""; if (!yPos) yPos = ""; //Display the Calendar on the Web page if (NS4) { calNS4 = new Layer(50,this); calNS4.document.write(CALENDAR_HTML); calNS4.document.close(); if (xPos != "" || yPos != "") { this.calNS4.pageX = xPos; this.calNS4.pageY = (yPos - 95); } else { this.calNS4.pageX = document.layers[date].pageX; this.calNS4.pageY = (document.layers[date].pageY - 95); } calNS4.visibility = 'visible'; } else if (IE4) { calIE4 = document.all[date]; calIE4.innerHTML = CALENDAR_HTML; if (xPos != "" || yPos != "") { calIE4.style.posLeft = xPos; calIE4.style.posTop = yPos; } calIE4.style.visibility = 'visible'; } else if (NS6) { calNS6 = document.getElementById(date); calNS6.innerHTML = CALENDAR_HTML; if (xPos != "" || yPos != "") { calNS6.style.top = yPos; calNS6.style.left = xPos; } calNS6.style.visibility = 'visible'; } BUILT = "yes"; } //This function is used to hide the calendar function hideCalendar() { if (BUILT == "no") return; if (NS4) calNS4.visibility = 'hidden'; else if (IE4) calIE4.style.visibility = 'hidden'; else if (NS6) calNS6.style.visibility = 'hidden'; } //This function is used to change the Calendar Date function chgCalendarDate(dspDate) { //Set the Display to the new Date DISPLAY_DATE = dspDate; //Build the Calendar buildCalendar(); //Display the Calendar on the Web page if (NS4) { calNS4.document.write(CALENDAR_HTML); calNS4.document.close(); } else if (IE4) calIE4.innerHTML = CALENDAR_HTML; else if (NS6) calNS6.innerHTML = CALENDAR_HTML; } //This function is used to change the Date field to the selected calendar date function chgDate(txtDate) { var valori = new Array(); valori=txtDate.split('/'); var mese=valori[0]; if (mese<10) mese="0"+mese; var giorno=valori[1]; if (giorno<10) giorno="0"+giorno; var anno=valori[2]; var italianDate=giorno+'/'+mese+'/'+anno; //Change the Date field //document.forms[0][CURRENT_DATE_FIELD].value = txtDate; document.forms[0][CURRENT_DATE_FIELD].value = italianDate; //Hide the Calendar hideCalendar(); } //This function is used to Build the Calendar function buildCalendar() { //Define the Month Names and Month Days Array monthNames = new Array("January","Februrary","March","April","May","June","July","August","September","October","November","Decemeber"); monthDays = new Array(12); //Entry the Total Days for each Month monthDays[0] = 31; monthDays[1] = 28; monthDays[2] = 31; monthDays[3] = 30; monthDays[4] = 31; monthDays[5] = 30; monthDays[6] = 31; monthDays[7] = 31; monthDays[8] = 30; monthDays[9] = 31; monthDays[10] = 30; monthDays[11] = 31; //Determine the Date for the Calendar to Display if (DISPLAY_DATE == "") calendarDateObj = new Date(); else calendarDateObj = new Date(DISPLAY_DATE); //Obtain the Calendar Dates calendarDate = calendarDateObj.getDate(); calendarDay = calendarDateObj.getDay(); calendarMonth = calendarDateObj.getMonth(); calendarYear = calendarDateObj.getYear(); //Obtain Todays Dates currentDateObj = new Date(); currentDate = currentDateObj.getDate(); currentDay = currentDateObj.getDay(); currentMonth = currentDateObj.getMonth(); currentYear = currentDateObj.getYear(); //*** Fix - TDS 2-06-2003 *** if ((calendarMonth == currentMonth) && (calendarYear == currentYear)) { calendarDate = currentDate; calendarDay = currentDay; } if (LeapYear(calendarYear)) monthDays[1] = 29; //*** End Fix - 2-06-2003 *** //Make sure the Year is in the correct century calendarYear = calendarYear % 100; calendarYear = ((calendarYear < 50) ? (2000 + calendarYear) : (1900 + calendarYear)); //Calculate the Blank entries before the 1st of the month blankEntry = calendarDate; while (blankEntry > 7) blankEntry-= 7; blankEntry = calendarDay - blankEntry + 1; if (blankEntry < 0) blankEntry+= 7; //Calculate Next Months Date nextMonth = (calendarMonth + 2); if (nextMonth == 13) { nextMonth = 1; nextYear = (calendarYear + 1); } else nextYear = calendarYear; //*** Fix - TDS 2-06-2003 *** //nextDate = nextMonth + "/" + currentDate + "/" + nextYear; nextDate = nextMonth + "/1/" + nextYear; //*** End Fix - 2-06-2003 *** //Calculate Previous Months Date prevMonth = calendarMonth; if (prevMonth == 0) { prevMonth = 12; prevYear = (calendarYear - 1); } else prevYear = calendarYear; //*** Fix - TDS 2-06-2003 *** //prevDate = prevMonth + "/" + currentDate + "/" + prevYear; prevDate = prevMonth + "/1/" + prevYear; //*** End Fix - 2-06-2003 *** //Build the Header for the Calendar CALENDAR_HTML = ""; CALENDAR_HTML += ""; CALENDAR_HTML += ""; CALENDAR_HTML += ""; CALENDAR_HTML += ""; CALENDAR_HTML += ""; CALENDAR_HTML += ""; CALENDAR_HTML += ""; CALENDAR_HTML += ""; CALENDAR_HTML += ""; CALENDAR_HTML += ""; CALENDAR_HTML += ""; CALENDAR_HTML += ""; CALENDAR_HTML += ""; CALENDAR_HTML += ""; CALENDAR_HTML += ""; //Build a blank cell for each Blank Entry before the 1st of the Month for (s = 0;s < blankEntry;s++) CALENDAR_HTML += ""; //Start the Day Counter dayCount = 1; //Loop through until the total days of calendar month have been reached while (dayCount <= monthDays[calendarMonth]) { //Start a new table row each time through the loop except the first time if (dayCount > 1) CALENDAR_HTML += ""; //Start at the next cell after the blank entries and entry the cells across the row. for (b = blankEntry;b < 7;b++) { //If the Day Counter is greater than the Month total then add blank entries if (dayCount <= monthDays[calendarMonth]) { tdProperties = "onClick=chgDate('" + (calendarMonth + 1) + "/" + dayCount + "/" + calendarYear + "') "; tdData = "" + dayCount + ""; //If the current day is equal to the calendar day and the //current month is equal to the calendar month, check the dates if ((currentDay == calendarDay) && (currentMonth == calendarMonth)) { //If the day counter is equal to the current date then change the color if (dayCount == currentDate) tdProperties = tdProperties + "bgcolor=" + CUR_DAY_BGCOLOR + ""; else tdProperties = tdProperties + "onMouseOver=mOvr(this,'" + DAY_MOCOLOR + "') onMouseOut=mOut(this,'" + DAY_BGCOLOR + "') bgcolor=" + DAY_BGCOLOR + ""; } else tdProperties = tdProperties + "onMouseOver=mOvr(this,'" + DAY_MOCOLOR + "') onMouseOut=mOut(this,'" + DAY_BGCOLOR + "') bgcolor=" + DAY_BGCOLOR + ""; } else { tdProperties = "bgcolor=" + DAY_BGCOLOR; tdData = " "; } //Build the table cells CALENDAR_HTML += ""; //Add to the Day counter dayCount++; } //End the table row CALENDAR_HTML += ""; //Set the Blank entries to zero blankEntry=0; } //End the table CALENDAR_HTML += ""; CALENDAR_HTML += ""; CALENDAR_HTML += ""; CALENDAR_HTML += "
3" + monthNames[calendarMonth] + " " + calendarYear + "4
SUNMONTUEWEDTHRFRISAT
 
" + tdData + "
 
"; } //*** Fix - TDS 2-06-2003 *** //This fuction checks for the Leap Year function LeapYear(year) { if ((year/4) != Math.floor(year/4)) return false; if ((year/100) != Math.floor(year/100)) return true; if ((year/400) != Math.floor(year/400)) return false; return true; } //*** End Fix - 2-06-2003 *** //This function is used to control the mouse over event. function mOvr(src,clrOver) { if (!src.contains(event.fromElement)) { src.style.cursor = 'hand'; src.bgColor = clrOver; } } //This function is used to control the mouse out event. function mOut(src,clrIn) { if (!src.contains(event.toElement)) { src.style.cursor = 'default'; src.bgColor = clrIn; } }