var DateSeparator = "/"; var CenturyNumber = 30; var Calendars = []; var RegExNumbers = /^\-?\d+$/; function BuildCalendar(TheTarget) { this.DateGenerator = This_DateGenerator; this.FindDate = This_FindDate; this.FindTime = This_FindTime; this.FindStamp = This_FindStamp; this.popup = This_Popup; if (!TheTarget) { return DisplayError("Error!\t\t\n\n\tNo target specified.\t\t"); } if (TheTarget.value == null) { return DisplayError("\tError!\t\t\n\n\tParameter specified is not valid.\t\t"); } this.target = TheTarget; this.id = Calendars.length; Calendars[this.id] = this; } function This_Popup (strDate) { this.CurrentDate = this.FindStamp(strDate ? strDate : this.target.value); if (!this.CurrentDate) { return; } var CalendarWindow = window.open('calendar.htm?datetime=' + this.CurrentDate.valueOf()+ '&id=' + this.id, 'Calendar', 'width=200,height=170,status=no,resizable=no,top=200,left=200,dependent=yes,alwaysRaised=yes' ); CalendarWindow.opener = window; CalendarWindow.focus(); } function This_DateGenerator (CurrentDates)
{
return ((CurrentDates.getDate() < 10 ? "0" : "") + CurrentDates.getDate() + DateSeparator + (CurrentDates.getMonth() < 9 ? "0" : "") + (CurrentDates.getMonth() + 1) + DateSeparator + CurrentDates.getFullYear() );
} function This_FindStamp (strDate) { if (!strDate) { return (new Date()); } if (RegExNumbers.exec(strDate)) { return new Date(strDate); } return this.FindTime(this.FindDate(strDate)); } function This_FindDate (TheDate) { var DateArray = TheDate.split(DateSeparator); if (DateArray.length != 3) { return alert ("\tInvalid date format: " + TheDate + ".\t\t\n\n\tAccepted format is dd" + DateSeparator + "mm" + DateSeparator + "yyyy.\t\t"); } if (!DateArray[0]) { return alert ("\tInvalid date format: " + TheDate + ".\t\t\n\n\tNo day value found.\t\t"); } if (!RegExNumbers.exec(DateArray[0])) { return alert ("\tInvalid day value: " + DateArray[0] + ".\t\t\n\n\tAllowed values are numbers.\t\t"); } if (!DateArray[1]) { return alert ("\tInvalid date format: " + TheDate + ".\t\t\n\n\tNo month value found.\t\t"); } if (!RegExNumbers.exec(DateArray[1])) { return alert ("\tInvalid month value: " + DateArray[1] + ".\t\t\n\n\tAllowed values are numbers.\t\t"); } if (!DateArray[2]) { return alert ("\tInvalid date format: " + TheDate + ".\t\t\n\n\tNo year value found.\t\t"); } if (!RegExNumbers.exec(DateArray[2])) { return alert ("\tInvalid year value: " + DateArray[2] + ".\t\t\n\n\tAllowed values are numbers.\t\t"); }  var ThisDate = new Date(); ThisDate.setDate(1);  if (DateArray[1] < 1 || DateArray[1] > 12) { return alert ("\tInvalid month value: " + DateArray[1] + ".\t\t\n\n\tAllowed range is 01 - 12.\t\t"); } ThisDate.setMonth(DateArray[1] - 1);  if (DateArray[2] < 100) { DateArray[2] = Number(DateArray[2]) + (DateArray[2] < CenturyNumber ? 2000 : 1900); } ThisDate.setFullYear(DateArray[2]);  var dt_numdays = new Date(DateArray[2], DateArray[1], 0); ThisDate.setDate(DateArray[0]); if (ThisDate.getMonth() != (DateArray[1] - 1)) { return alert ("\tInvalid day value: " + DateArray[0] + ".\t\t\n\n\tAllowed range is 01 - " + dt_numdays.getDate() + ".\t\t"); } return (ThisDate); } function This_FindTime (ThisDate) { if (!ThisDate) { return null; } return ThisDate; } function DisplayError (str_message) { alert (str_message); return null; }
