From f8e3c30e2cd08f430d4106f6ab0db28e319eef7b Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 12 Mar 2007 23:06:48 +0000 Subject: [PATCH] Monotone-Parent: 55b46093b748e72cd037f89dc45b4785c5466dc6 Monotone-Revision: 3292f2d387157f6c1152305848b550e74545263e Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-03-12T23:06:48 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 + UI/Scheduler/GNUmakefile | 1 + UI/Scheduler/UIxCalInlineAptView.h | 44 ++ UI/Scheduler/UIxCalInlineAptView.m | 32 +- UI/Scheduler/UIxCalInlineMonthAptView.h | 32 + UI/Scheduler/UIxCalInlineMonthAptView.m | 27 + UI/Scheduler/UIxCalMonthView.h | 9 +- UI/Scheduler/UIxCalMonthView.m | 123 ++-- .../SchedulerUI/UIxCalCalendarsListView.wox | 4 - .../SchedulerUI/UIxCalInlineMonthAptView.wox | 25 + UI/Templates/SchedulerUI/UIxCalMonthView.wox | 224 ++++--- UI/WebServerResources/SchedulerUI.css | 601 ++++++++++-------- UI/WebServerResources/SchedulerUI.js | 44 +- 13 files changed, 696 insertions(+), 476 deletions(-) create mode 100644 UI/Scheduler/UIxCalInlineAptView.h create mode 100644 UI/Scheduler/UIxCalInlineMonthAptView.h create mode 100644 UI/Scheduler/UIxCalInlineMonthAptView.m create mode 100644 UI/Templates/SchedulerUI/UIxCalInlineMonthAptView.wox diff --git a/ChangeLog b/ChangeLog index ed7e606cd..568645278 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-03-12 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalMonthView.m: changed view to use divs instead + of a table, the same way the dayly and weekly views have been for + a few months now. + 2007-02-09 Helge Hess * SoObjects/Appointments/SOGoAppointmentFolder.m: added CalDAV diff --git a/UI/Scheduler/GNUmakefile b/UI/Scheduler/GNUmakefile index e38c03142..8dfd4df72 100644 --- a/UI/Scheduler/GNUmakefile +++ b/UI/Scheduler/GNUmakefile @@ -45,6 +45,7 @@ SchedulerUI_OBJC_FILES = \ UIxDatePicker.m \ UIxTimeDateControl.m \ UIxCalInlineAptView.m \ + UIxCalInlineMonthAptView.m \ UIxCalScheduleOverview.m \ UIxCalParticipationStatusView.m \ UIxCalMonthOverview.m diff --git a/UI/Scheduler/UIxCalInlineAptView.h b/UI/Scheduler/UIxCalInlineAptView.h new file mode 100644 index 000000000..f35ad15ef --- /dev/null +++ b/UI/Scheduler/UIxCalInlineAptView.h @@ -0,0 +1,44 @@ +/* + Copyright (C) 2000-2004 SKYRIX Software AG + + This file is part of OGo + + OGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. + */ +// $Id: UIxCalInlineAptView.h 1031 2007-03-07 22:52:32Z wolfgang $ + +#ifndef UIXCALINLINEAPTVIEW_H +#define UIXCALINLINEAPTVIEW_H + +#import + +@interface UIxCalInlineAptView : WOComponent +{ + NSDictionary *appointment; + id formatter; + id tooltipFormatter; + id url; + id style; + id queryDictionary; + id referenceDate; + int dayStartHour; + int dayEndHour; + BOOL canAccess; +} + +@end + +#endif /* UIXCALINLINEAPTVIEW_H */ diff --git a/UI/Scheduler/UIxCalInlineAptView.m b/UI/Scheduler/UIxCalInlineAptView.m index 039332094..3cbe8dad1 100644 --- a/UI/Scheduler/UIxCalInlineAptView.m +++ b/UI/Scheduler/UIxCalInlineAptView.m @@ -18,36 +18,22 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -// $Id: UIxCalInlineAptView.m 1029 2007-03-02 22:28:13Z wolfgang $ +// $Id: UIxCalInlineAptView.m 1031 2007-03-07 22:52:32Z wolfgang $ #import #import -#import -#import +#import +#import +#import + #import +#import +#import +#import -@interface UIxCalInlineAptView : WOComponent -{ - NSDictionary *appointment; - id formatter; - id tooltipFormatter; - id url; - id style; - id queryDictionary; - id referenceDate; - int dayStartHour; - int dayEndHour; - BOOL canAccess; -} - -@end - -#include "common.h" -#include -#include -#include +#import "UIxCalInlineAptView.h" @implementation UIxCalInlineAptView diff --git a/UI/Scheduler/UIxCalInlineMonthAptView.h b/UI/Scheduler/UIxCalInlineMonthAptView.h new file mode 100644 index 000000000..aae77fc53 --- /dev/null +++ b/UI/Scheduler/UIxCalInlineMonthAptView.h @@ -0,0 +1,32 @@ +/* UIxCalInlineMonthAptView.h - this file is part of SOGo + * + * Copyright (C) 2007 Inverse groupe conseil + * + * Author: Wolfgang Sourdeau + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef UIXCALINLINEMONTHAPTVIEW_H +#define UIXCALINLINEMONTHAPTVIEW_H + +#import "UIxCalInlineAptView.h" + +@interface UIxCalInlineMonthAptView : UIxCalInlineAptView + +@end + +#endif /* UIXCALINLINEMONTHAPTVIEW_H */ diff --git a/UI/Scheduler/UIxCalInlineMonthAptView.m b/UI/Scheduler/UIxCalInlineMonthAptView.m new file mode 100644 index 000000000..ff7a6b6dd --- /dev/null +++ b/UI/Scheduler/UIxCalInlineMonthAptView.m @@ -0,0 +1,27 @@ +/* UIxCalInlineMonthAptView.m - this file is part of SOGo + * + * Copyright (C) 2007 Inverse groupe conseil + * + * Author: Wolfgang Sourdeau + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#import "UIxCalInlineMonthAptView.h" + +@implementation UIxCalInlineMonthAptView + +@end diff --git a/UI/Scheduler/UIxCalMonthView.h b/UI/Scheduler/UIxCalMonthView.h index 94bc806bd..82a9f132e 100644 --- a/UI/Scheduler/UIxCalMonthView.h +++ b/UI/Scheduler/UIxCalMonthView.h @@ -41,9 +41,9 @@ SOGoDateFormatter *dateFormatter; NSMutableDictionary *sortedAppointments; + NSArray *daysToDisplay; NSCalendarDate *currentTableDay; -// NSArray *rangesOf7Days; - NSArray *currentRangeOf7Days; + NSArray *currentTableColumn; } - (id ) defaultAction; @@ -68,11 +68,6 @@ - (NSCalendarDate *) currentTableDay; - (NSString *) labelForCurrentDayCell; -- (NSArray *) rangesOf7Days; - -- (void) setCurrentRangeOf7Days: (NSArray *) newCurrentRangeOf7Days; -- (NSArray *) currentRangeOf7Days; - @end #endif /* UIXCALMONTHVIEW_H */ diff --git a/UI/Scheduler/UIxCalMonthView.m b/UI/Scheduler/UIxCalMonthView.m index 196637353..e5c82ecde 100644 --- a/UI/Scheduler/UIxCalMonthView.m +++ b/UI/Scheduler/UIxCalMonthView.m @@ -1,6 +1,6 @@ /* UIxCalMonthView.m - this file is part of SOGo * - * Copyright (C) 2006 Inverse groupe conseil + * Copyright (C) 2006, 2007 Inverse groupe conseil * * Author: Wolfgang Sourdeau * @@ -48,6 +48,7 @@ dateFormatter = [[SOGoDateFormatter alloc] initWithLocale: [self locale]]; sortedAppointments = [NSMutableDictionary new]; + daysToDisplay = nil; } return self; @@ -60,6 +61,7 @@ - (void) dealloc { + [daysToDisplay release]; [monthAptFormatter release]; [dateFormatter release]; [sortedAppointments release]; @@ -99,19 +101,46 @@ return self; } +- (NSArray *) headerDaysToDisplay +{ + NSMutableArray *headerDaysToDisplay; + unsigned int counter; + + headerDaysToDisplay = [NSMutableArray arrayWithCapacity: 7]; + currentTableDay = [[self selectedDate] mondayOfWeek]; + for (counter = 0; counter < 7; counter++) + { + [headerDaysToDisplay addObject: currentTableDay]; + currentTableDay = [currentTableDay tomorrow]; + } + + return headerDaysToDisplay; +} + - (NSArray *) daysToDisplay { - NSMutableArray *daysToDisplay; - NSCalendarDate *currentDayToDisplay; - unsigned int day; + NSMutableArray *days[7]; + unsigned int counter; + NSCalendarDate *firstOfAllDays, *lastDayOfMonth; - daysToDisplay = [NSMutableArray arrayWithCapacity: 7]; - currentDayToDisplay = [[NSCalendarDate calendarDate] mondayOfWeek]; - for (day = 0; day < 7; day++) + if (!daysToDisplay) { - [daysToDisplay addObject: currentDayToDisplay]; - currentDayToDisplay - = [currentDayToDisplay dateByAddingYears: 0 months: 0 days: 1]; + firstOfAllDays = [[[self selectedDate] firstDayOfMonth] mondayOfWeek]; + lastDayOfMonth = [[self selectedDate] lastDayOfMonth]; + for (counter = 0; counter < 7; counter++) + { + days[counter] = [NSMutableArray new]; + [days[counter] autorelease]; + } + currentTableDay = firstOfAllDays; + while ([currentTableDay earlierDate: lastDayOfMonth] == currentTableDay) + for (counter = 0; counter < 7; counter++) + { + [days[counter] addObject: currentTableDay]; + currentTableDay = [currentTableDay tomorrow]; + } + daysToDisplay = [NSArray arrayWithObjects: days count: 7]; + [daysToDisplay retain]; } return daysToDisplay; @@ -197,14 +226,14 @@ return currentTableDay; } -- (void) setCurrentRangeOf7Days: (NSArray *) newCurrentRangeOf7Days +- (void) setCurrentTableColumn: (NSArray *) newCurrentTableColumn { - currentRangeOf7Days = newCurrentRangeOf7Days; + currentTableColumn = newCurrentTableColumn; } -- (NSArray *) currentRangeOf7Days +- (NSArray *) currentTableColumn { - return currentRangeOf7Days; + return currentTableColumn; } - (NSString *) labelForCurrentDayCell @@ -228,16 +257,48 @@ return label; } +- (NSString *) headerDayCellClasses +{ + return [NSString stringWithFormat: @"headerDay day%d", + [currentTableDay dayOfWeek]]; +} + +- (NSString *) dayHeaderNumber +{ + NSString *nameOfMonth, *dayHeaderNumber; + unsigned int dayOfMonth; + + dayOfMonth = [currentTableDay dayOfMonth]; + if (dayOfMonth == 1 + || [currentTableDay isDateOnSameDay: [currentTableDay lastDayOfMonth]]) + { + nameOfMonth + = [self localizedNameForMonthOfYear: [currentTableDay monthOfYear]]; + dayHeaderNumber = [NSString stringWithFormat: @"%d %@", dayOfMonth, + nameOfMonth]; + } + else + dayHeaderNumber = [NSString stringWithFormat: @"%d", dayOfMonth]; + + return dayHeaderNumber; +} + - (NSString *) dayCellClasses { NSMutableString *classes; NSCalendarDate *selectedDate; - int dayOfWeek; + int dayOfWeek, numberOfWeeks; classes = [NSMutableString new]; [classes autorelease]; - [classes appendString: @"day"]; + dayOfWeek = [currentTableDay dayOfWeek]; + numberOfWeeks = [currentTableColumn count]; + + [classes appendFormat: @"day weekOf%d week%dof%d day%d", + numberOfWeeks, + [currentTableColumn indexOfObject: currentTableDay], + numberOfWeeks, dayOfWeek]; if (dayOfWeek == 0 || dayOfWeek == 6) [classes appendString: @" weekEndDay"]; selectedDate = [self selectedDate]; @@ -287,36 +348,6 @@ return [[lastDayOfMonth mondayOfWeek] dateByAddingYears: 0 months: 0 days: 6]; } -- (NSArray *) rangesOf7Days -{ - NSCalendarDate *currentDate, *firstDayOfMonth, *lastDayOfMonth; - NSMutableArray *rangesOf7Days; - NSArray *currentRange; - int monthOfYear; - - rangesOf7Days = [NSMutableArray new]; - [rangesOf7Days autorelease]; - - firstDayOfMonth = [[self selectedDate] firstDayOfMonth]; - lastDayOfMonth = [firstDayOfMonth lastDayOfMonth]; - currentDate = [firstDayOfMonth mondayOfWeek]; - currentRange = [self _rangeOf7DaysForWeekStartingOn: currentDate]; - [rangesOf7Days addObject: currentRange]; - - currentDate = [[currentRange objectAtIndex: 6] dateByAddingYears: 0 - months: 0 days: 1]; - monthOfYear = [currentDate monthOfYear]; - while ([currentDate monthOfYear] == monthOfYear) - { - currentRange = [self _rangeOf7DaysForWeekStartingOn: currentDate]; - [rangesOf7Days addObject: currentRange]; - currentDate = [[currentRange objectAtIndex: 6] dateByAddingYears: 0 - months: 0 days: 1]; - } - - return rangesOf7Days; -} - - (NSArray *) aptsForCurrentDate { return [sortedAppointments objectForKey: [currentTableDay shortDateString]]; diff --git a/UI/Templates/SchedulerUI/UIxCalCalendarsListView.wox b/UI/Templates/SchedulerUI/UIxCalCalendarsListView.wox index b19ec1dc3..24d547b10 100644 --- a/UI/Templates/SchedulerUI/UIxCalCalendarsListView.wox +++ b/UI/Templates/SchedulerUI/UIxCalCalendarsListView.wox @@ -11,10 +11,6 @@ { background-color: !important; } - TABLE.monthOverview DIV[owner~=''].appointment - { - background-color: !important; - } + +
+
+
+
+
diff --git a/UI/Templates/SchedulerUI/UIxCalMonthView.wox b/UI/Templates/SchedulerUI/UIxCalMonthView.wox index 4d6578bb1..cb098db59 100644 --- a/UI/Templates/SchedulerUI/UIxCalMonthView.wox +++ b/UI/Templates/SchedulerUI/UIxCalMonthView.wox @@ -1,107 +1,135 @@ - - - - - + + + + + + -
- - - - - - - - - - - - - - - - - - + /> + + -
- -

-
+
-
+ +
+ + + + + + diff --git a/UI/WebServerResources/SchedulerUI.css b/UI/WebServerResources/SchedulerUI.css index a94bcd8b0..c3f2bebe2 100644 --- a/UI/WebServerResources/SchedulerUI.css +++ b/UI/WebServerResources/SchedulerUI.css @@ -293,60 +293,6 @@ TABLE._unfocused#appointmentsList TR._selected TD color: #fff !important;; } -TABLE.monthOverview -{ position: absolute; - display: table; - margin: 0 auto; - padding: 1em; - border-collapse: collapse; - display: table; - margin: 0px auto; - padding: 0px; - width: 98%; - height: 98%; - min-width: 60em; - min-height: 25em; } - -TABLE.monthOverview TD -{ border: 2px solid #397d94; - padding: 0px; - margin: 0px; } - -TABLE.monthOverview TD.day -{ vertical-align: top; - margin: 0px; - padding: 0px; - height: 15%; - min-height: 15%; - max-height: 15%; } - -TABLE.monthOverview TD.day > DIV.dayContent -{ display: block; - width: 100%; - height: 100%; - overflow: auto; } - -TABLE.monthOverview TD.header -{ text-align: center; - color: #397d94; - width: 14%; - height: 2em; - font-weight: bold; - background: #e7efef; } - -TABLE.monthOverview TD.dayOfToday -{ border: 3px solid #397d94; - background-color: #deebf7; } - -TABLE.monthOverview TD.weekEndDay -{ background-color: #fffbe7; } - -TABLE.monthOverview TD.dayOfAnotherMonth -{ background-color: #e7efef; } - -TABLE.monthOverview TD.selectedDay -{ background-color: #ffe79c; } - SPAN.dayCellLabel { color: #77a; font-weight: bold; } @@ -595,7 +541,6 @@ SPAN[class~="freeBusyZoneElement"].maybe-busy SPAN[class~="colorBox"].noFreeBusy { background-color: #559; } - /* new draggable presentation */ DIV.daysView @@ -614,6 +559,126 @@ DIV.daysView DIV.days DIV.multicolumnDayView DIV.lastDayUser { border-right: 1px solid #397d94; } +DIV.monthView +{ position: absolute; + left: .5em; + top: .5em; + right: .5em; + bottom: .5em; + padding: 0px; + width: 98%; + height: 98%; + min-width: 60em; + min-height: 25em; } + +DIV.monthView > DIV, +DIV.monthView > DIV.days > DIV +{ position: absolute; } + +DIV.monthView > DIV.headerDay +{ text-align: center; + border-left: 2px solid #397d94; + border-top: 2px solid #397d94; + top: 0px; + color: #397d94; + height: 2em; + font-weight: bold; + background: #e7efef; } + +DIV.monthView DIV.dayOfToday +{ border: 1px solid #397d94; + background-color: #deebf7; } + +DIV.monthView DIV.weekEndDay +{ background-color: #fffbe7; } + +DIV.monthView DIV.dayOfAnotherMonth +{ background-color: #e7efef; } + +DIV.monthView DIV.selectedDay +{ background-color: #ffe79c; } + +DIV.monthView DIV.dayHeader +{ margin-left: 1em; + color: #397d94; + font-weight: bold; } + +DIV.monthView DIV.days +{ position: absolute; + top: 2em; + bottom: 0px; + left: 0px; + right: 0px; } + +DIV.monthView DIV.day +{ position: absolute; + border-left: 2px solid #397d94; + border-top: 2px solid #397d94; + min-height: 4em; + overflow: auto; } + +DIV.weekOf4 +{ height: 25%; } + +DIV.weekOf5 +{ height: 20%; } + +DIV.weekOf6 +{ height: 16.666667%; } + +DIV.monthView DIV.week0of4, +DIV.monthView DIV.week0of5, +DIV.monthView DIV.week0of6 +{ top: 0px; } + +DIV.monthView DIV.week1of4 +{ top: 25%; } + +DIV.monthView DIV.week2of4 +{ top: 50%; } + +DIV.monthView DIV.week3of4 +{ top: 75%; } + +DIV.monthView DIV.week1of5 +{ top: 20%; } + +DIV.monthView DIV.week2of5 +{ top: 40%; } + +DIV.monthView DIV.week3of5 +{ top: 60%; } + +DIV.monthView DIV.week4of5 +{ top: 80%; } + +DIV.monthView DIV.week1of6 +{ top: 16.666667%; } + +DIV.monthView DIV.week2of6 +{ top: 33.333333%; } + +DIV.monthView DIV.week3of6 +{ top: 50%; } + +DIV.monthView DIV.week4of6 +{ top: 66.666667%; } + +DIV.monthView DIV.week4of6 +{ top: 83.333333%; } + +DIV.monthView DIV.week3 +{ top: 45%; } + +DIV.monthView DIV.week4 +{ top: 60%; } + +DIV.monthView DIV.week5 +{ top: 75%; } + +DIV.monthView DIV.week6 +{ top: 90%; } + DIV.daysView DIV.day { position: absolute; border-left: 1px solid #397d94; @@ -645,27 +710,36 @@ DIV.daysViewFor1Days DIV.day border-right: 1px solid #397d94; left: 0px; } +DIV.monthView DIV.headerDay, +DIV.monthView DIV.day, DIV.daysViewFor7Days DIV.day { width: 14.2857%; } +DIV.monthView DIV.day1, DIV.daysViewFor7Days DIV.day1 { left: 0px; } +DIV.monthView DIV.day2, DIV.daysViewFor7Days DIV.day2 { left: 14.2857%; } +DIV.monthView DIV.day3, DIV.daysViewFor7Days DIV.day3 { left: 28.5714%; } +DIV.monthView DIV.day4, DIV.daysViewFor7Days DIV.day4 { left: 42.8571%; } +DIV.monthView DIV.day5, DIV.daysViewFor7Days DIV.day5 { left: 57.1428%; } +DIV.monthView DIV.day6, DIV.daysViewFor7Days DIV.day6 { left: 71.4285%; } +DIV.monthView DIV.day0, DIV.daysViewFor7Days DIV.day0 { left: 85.7142%; border-right: 1px solid #397d94; } @@ -872,611 +946,590 @@ DIV.gradient > IMG { height: 100%; width: 100%; } -TABLE.monthOverview DIV.appointment -{ margin: 0px; - margin-top: 1px; +DIV.monthView DIV.appointment +{ position: relative !important; + white-space: nowrap; padding: 1px; - border: 0px; - height: auto; - width: auto; - position: static; - overflow: hidden; - background-color: #fff; } + height: 1.5em; } -TABLE.monthOverview DIV.appointmentInside -{ cursor: default; - margin: 0px; - padding: 1px; - border: 0px; - height: auto; - width: auto; - position: static; } - -TABLE.monthOverview DIV.shadow, -TABLE.monthOverview DIV.gradient -{ display: none; } - -TABLE.monthOverview DIV.text -{ position: static; } - -DIV[class~="appointment"].starts0 +DIV.daysView DIV[class~="appointment"].starts0 { top: 0.000000%; } -DIV[class~="appointment"].starts1 +DIV.daysView DIV[class~="appointment"].starts1 { top: 1.041667%; } -DIV[class~="appointment"].starts2 +DIV.daysView DIV[class~="appointment"].starts2 { top: 2.083333%; } -DIV[class~="appointment"].starts3 +DIV.daysView DIV[class~="appointment"].starts3 { top: 3.125000%; } -DIV[class~="appointment"].starts4 +DIV.daysView DIV[class~="appointment"].starts4 { top: 4.166667%; } -DIV[class~="appointment"].starts5 +DIV.daysView DIV[class~="appointment"].starts5 { top: 5.208333%; } -DIV[class~="appointment"].starts6 +DIV.daysView DIV[class~="appointment"].starts6 { top: 6.250000%; } -DIV[class~="appointment"].starts7 +DIV.daysView DIV[class~="appointment"].starts7 { top: 7.291667%; } -DIV[class~="appointment"].starts8 +DIV.daysView DIV[class~="appointment"].starts8 { top: 8.333333%; } -DIV[class~="appointment"].starts9 +DIV.daysView DIV[class~="appointment"].starts9 { top: 9.375000%; } -DIV[class~="appointment"].starts10 +DIV.daysView DIV[class~="appointment"].starts10 { top: 10.416667%; } -DIV[class~="appointment"].starts11 +DIV.daysView DIV[class~="appointment"].starts11 { top: 11.458333%; } -DIV[class~="appointment"].starts12 +DIV.daysView DIV[class~="appointment"].starts12 { top: 12.500000%; } -DIV[class~="appointment"].starts13 +DIV.daysView DIV[class~="appointment"].starts13 { top: 13.541667%; } -DIV[class~="appointment"].starts14 +DIV.daysView DIV[class~="appointment"].starts14 { top: 14.583333%; } -DIV[class~="appointment"].starts15 +DIV.daysView DIV[class~="appointment"].starts15 { top: 15.625000%; } -DIV[class~="appointment"].starts16 +DIV.daysView DIV[class~="appointment"].starts16 { top: 16.666667%; } -DIV[class~="appointment"].starts17 +DIV.daysView DIV[class~="appointment"].starts17 { top: 17.708333%; } -DIV[class~="appointment"].starts18 +DIV.daysView DIV[class~="appointment"].starts18 { top: 18.750000%; } -DIV[class~="appointment"].starts19 +DIV.daysView DIV[class~="appointment"].starts19 { top: 19.791667%; } -DIV[class~="appointment"].starts20 +DIV.daysView DIV[class~="appointment"].starts20 { top: 20.833333%; } -DIV[class~="appointment"].starts21 +DIV.daysView DIV[class~="appointment"].starts21 { top: 21.875000%; } -DIV[class~="appointment"].starts22 +DIV.daysView DIV[class~="appointment"].starts22 { top: 22.916667%; } -DIV[class~="appointment"].starts23 +DIV.daysView DIV[class~="appointment"].starts23 { top: 23.958333%; } -DIV[class~="appointment"].starts24 +DIV.daysView DIV[class~="appointment"].starts24 { top: 25.000000%; } -DIV[class~="appointment"].starts25 +DIV.daysView DIV[class~="appointment"].starts25 { top: 26.041667%; } -DIV[class~="appointment"].starts26 +DIV.daysView DIV[class~="appointment"].starts26 { top: 27.083333%; } -DIV[class~="appointment"].starts27 +DIV.daysView DIV[class~="appointment"].starts27 { top: 28.125000%; } -DIV[class~="appointment"].starts28 +DIV.daysView DIV[class~="appointment"].starts28 { top: 29.166667%; } -DIV[class~="appointment"].starts29 +DIV.daysView DIV[class~="appointment"].starts29 { top: 30.208333%; } -DIV[class~="appointment"].starts30 +DIV.daysView DIV[class~="appointment"].starts30 { top: 31.250000%; } -DIV[class~="appointment"].starts31 +DIV.daysView DIV[class~="appointment"].starts31 { top: 32.291667%; } -DIV[class~="appointment"].starts32 +DIV.daysView DIV[class~="appointment"].starts32 { top: 33.333333%; } -DIV[class~="appointment"].starts33 +DIV.daysView DIV[class~="appointment"].starts33 { top: 34.375000%; } -DIV[class~="appointment"].starts34 +DIV.daysView DIV[class~="appointment"].starts34 { top: 35.416667%; } -DIV[class~="appointment"].starts35 +DIV.daysView DIV[class~="appointment"].starts35 { top: 36.458333%; } -DIV[class~="appointment"].starts36 +DIV.daysView DIV[class~="appointment"].starts36 { top: 37.500000%; } -DIV[class~="appointment"].starts37 +DIV.daysView DIV[class~="appointment"].starts37 { top: 38.541667%; } -DIV[class~="appointment"].starts38 +DIV.daysView DIV[class~="appointment"].starts38 { top: 39.583333%; } -DIV[class~="appointment"].starts39 +DIV.daysView DIV[class~="appointment"].starts39 { top: 40.625000%; } -DIV[class~="appointment"].starts40 +DIV.daysView DIV[class~="appointment"].starts40 { top: 41.666667%; } -DIV[class~="appointment"].starts41 +DIV.daysView DIV[class~="appointment"].starts41 { top: 42.708333%; } -DIV[class~="appointment"].starts42 +DIV.daysView DIV[class~="appointment"].starts42 { top: 43.750000%; } -DIV[class~="appointment"].starts43 +DIV.daysView DIV[class~="appointment"].starts43 { top: 44.791667%; } -DIV[class~="appointment"].starts44 +DIV.daysView DIV[class~="appointment"].starts44 { top: 45.833333%; } -DIV[class~="appointment"].starts45 +DIV.daysView DIV[class~="appointment"].starts45 { top: 46.875000%; } -DIV[class~="appointment"].starts46 +DIV.daysView DIV[class~="appointment"].starts46 { top: 47.916667%; } -DIV[class~="appointment"].starts47 +DIV.daysView DIV[class~="appointment"].starts47 { top: 48.958333%; } -DIV[class~="appointment"].starts48 +DIV.daysView DIV[class~="appointment"].starts48 { top: 50.000000%; } -DIV[class~="appointment"].starts49 +DIV.daysView DIV[class~="appointment"].starts49 { top: 51.041667%; } -DIV[class~="appointment"].starts50 +DIV.daysView DIV[class~="appointment"].starts50 { top: 52.083333%; } -DIV[class~="appointment"].starts51 +DIV.daysView DIV[class~="appointment"].starts51 { top: 53.125000%; } -DIV[class~="appointment"].starts52 +DIV.daysView DIV[class~="appointment"].starts52 { top: 54.166667%; } -DIV[class~="appointment"].starts53 +DIV.daysView DIV[class~="appointment"].starts53 { top: 55.208333%; } -DIV[class~="appointment"].starts54 +DIV.daysView DIV[class~="appointment"].starts54 { top: 56.250000%; } -DIV[class~="appointment"].starts55 +DIV.daysView DIV[class~="appointment"].starts55 { top: 57.291667%; } -DIV[class~="appointment"].starts56 +DIV.daysView DIV[class~="appointment"].starts56 { top: 58.333333%; } -DIV[class~="appointment"].starts57 +DIV.daysView DIV[class~="appointment"].starts57 { top: 59.375000%; } -DIV[class~="appointment"].starts58 +DIV.daysView DIV[class~="appointment"].starts58 { top: 60.416667%; } -DIV[class~="appointment"].starts59 +DIV.daysView DIV[class~="appointment"].starts59 { top: 61.458333%; } -DIV[class~="appointment"].starts60 +DIV.daysView DIV[class~="appointment"].starts60 { top: 62.500000%; } -DIV[class~="appointment"].starts61 +DIV.daysView DIV[class~="appointment"].starts61 { top: 63.541667%; } -DIV[class~="appointment"].starts62 +DIV.daysView DIV[class~="appointment"].starts62 { top: 64.583333%; } -DIV[class~="appointment"].starts63 +DIV.daysView DIV[class~="appointment"].starts63 { top: 65.625000%; } -DIV[class~="appointment"].starts64 +DIV.daysView DIV[class~="appointment"].starts64 { top: 66.666667%; } -DIV[class~="appointment"].starts65 +DIV.daysView DIV[class~="appointment"].starts65 { top: 67.708333%; } -DIV[class~="appointment"].starts66 +DIV.daysView DIV[class~="appointment"].starts66 { top: 68.750000%; } -DIV[class~="appointment"].starts67 +DIV.daysView DIV[class~="appointment"].starts67 { top: 69.791667%; } -DIV[class~="appointment"].starts68 +DIV.daysView DIV[class~="appointment"].starts68 { top: 70.833333%; } -DIV[class~="appointment"].starts69 +DIV.daysView DIV[class~="appointment"].starts69 { top: 71.875000%; } -DIV[class~="appointment"].starts70 +DIV.daysView DIV[class~="appointment"].starts70 { top: 72.916667%; } -DIV[class~="appointment"].starts71 +DIV.daysView DIV[class~="appointment"].starts71 { top: 73.958333%; } -DIV[class~="appointment"].starts72 +DIV.daysView DIV[class~="appointment"].starts72 { top: 75.000000%; } -DIV[class~="appointment"].starts73 +DIV.daysView DIV[class~="appointment"].starts73 { top: 76.041667%; } -DIV[class~="appointment"].starts74 +DIV.daysView DIV[class~="appointment"].starts74 { top: 77.083333%; } -DIV[class~="appointment"].starts75 +DIV.daysView DIV[class~="appointment"].starts75 { top: 78.125000%; } -DIV[class~="appointment"].starts76 +DIV.daysView DIV[class~="appointment"].starts76 { top: 79.166667%; } -DIV[class~="appointment"].starts77 +DIV.daysView DIV[class~="appointment"].starts77 { top: 80.208333%; } -DIV[class~="appointment"].starts78 +DIV.daysView DIV[class~="appointment"].starts78 { top: 81.250000%; } -DIV[class~="appointment"].starts79 +DIV.daysView DIV[class~="appointment"].starts79 { top: 82.291667%; } -DIV[class~="appointment"].starts80 +DIV.daysView DIV[class~="appointment"].starts80 { top: 83.333333%; } -DIV[class~="appointment"].starts81 +DIV.daysView DIV[class~="appointment"].starts81 { top: 84.375000%; } -DIV[class~="appointment"].starts82 +DIV.daysView DIV[class~="appointment"].starts82 { top: 85.416667%; } -DIV[class~="appointment"].starts83 +DIV.daysView DIV[class~="appointment"].starts83 { top: 86.458333%; } -DIV[class~="appointment"].starts84 +DIV.daysView DIV[class~="appointment"].starts84 { top: 87.500000%; } -DIV[class~="appointment"].starts85 +DIV.daysView DIV[class~="appointment"].starts85 { top: 88.541667%; } -DIV[class~="appointment"].starts86 +DIV.daysView DIV[class~="appointment"].starts86 { top: 89.583333%; } -DIV[class~="appointment"].starts87 +DIV.daysView DIV[class~="appointment"].starts87 { top: 90.625000%; } -DIV[class~="appointment"].starts88 +DIV.daysView DIV[class~="appointment"].starts88 { top: 91.666667%; } -DIV[class~="appointment"].starts89 +DIV.daysView DIV[class~="appointment"].starts89 { top: 92.708333%; } -DIV[class~="appointment"].starts90 +DIV.daysView DIV[class~="appointment"].starts90 { top: 93.750000%; } -DIV[class~="appointment"].starts91 +DIV.daysView DIV[class~="appointment"].starts91 { top: 94.791667%; } -DIV[class~="appointment"].starts92 +DIV.daysView DIV[class~="appointment"].starts92 { top: 95.833333%; } -DIV[class~="appointment"].starts93 +DIV.daysView DIV[class~="appointment"].starts93 { top: 96.875000%; } -DIV[class~="appointment"].starts94 +DIV.daysView DIV[class~="appointment"].starts94 { top: 97.916667%; } -DIV[class~="appointment"].starts95 +DIV.daysView DIV[class~="appointment"].starts95 { top: 98.958333%; } -DIV[class~="appointment"].starts96 +DIV.daysView DIV[class~="appointment"].starts96 { top: 100.000000%; } -DIV[class~="appointment"].lasts0 +DIV.daysView DIV[class~="appointment"].lasts0 { height: 0px; } -DIV[class~="appointment"].lasts1 +DIV.daysView DIV[class~="appointment"].lasts1 { height: 1.041667%; } -DIV[class~="appointment"].lasts2 +DIV.daysView DIV[class~="appointment"].lasts2 { height: 2.083333%; } -DIV[class~="appointment"].lasts3 +DIV.daysView DIV[class~="appointment"].lasts3 { height: 3.125000%; } -DIV[class~="appointment"].lasts4 +DIV.daysView DIV[class~="appointment"].lasts4 { height: 4.166667%; } -DIV[class~="appointment"].lasts5 +DIV.daysView DIV[class~="appointment"].lasts5 { height: 5.208333%; } -DIV[class~="appointment"].lasts6 +DIV.daysView DIV[class~="appointment"].lasts6 { height: 6.250000%; } -DIV[class~="appointment"].lasts7 +DIV.daysView DIV[class~="appointment"].lasts7 { height: 7.291667%; } -DIV[class~="appointment"].lasts8 +DIV.daysView DIV[class~="appointment"].lasts8 { height: 8.333333%; } -DIV[class~="appointment"].lasts9 +DIV.daysView DIV[class~="appointment"].lasts9 { height: 9.375000%; } -DIV[class~="appointment"].lasts10 +DIV.daysView DIV[class~="appointment"].lasts10 { height: 10.416667%; } -DIV[class~="appointment"].lasts11 +DIV.daysView DIV[class~="appointment"].lasts11 { height: 11.458333%; } -DIV[class~="appointment"].lasts12 +DIV.daysView DIV[class~="appointment"].lasts12 { height: 12.500000%; } -DIV[class~="appointment"].lasts13 +DIV.daysView DIV[class~="appointment"].lasts13 { height: 13.541667%; } -DIV[class~="appointment"].lasts14 +DIV.daysView DIV[class~="appointment"].lasts14 { height: 14.583333%; } -DIV[class~="appointment"].lasts15 +DIV.daysView DIV[class~="appointment"].lasts15 { height: 15.625000%; } -DIV[class~="appointment"].lasts16 +DIV.daysView DIV[class~="appointment"].lasts16 { height: 16.666667%; } -DIV[class~="appointment"].lasts17 +DIV.daysView DIV[class~="appointment"].lasts17 { height: 17.708333%; } -DIV[class~="appointment"].lasts18 +DIV.daysView DIV[class~="appointment"].lasts18 { height: 18.750000%; } -DIV[class~="appointment"].lasts19 +DIV.daysView DIV[class~="appointment"].lasts19 { height: 19.791667%; } -DIV[class~="appointment"].lasts20 +DIV.daysView DIV[class~="appointment"].lasts20 { height: 20.833333%; } -DIV[class~="appointment"].lasts21 +DIV.daysView DIV[class~="appointment"].lasts21 { height: 21.875000%; } -DIV[class~="appointment"].lasts22 +DIV.daysView DIV[class~="appointment"].lasts22 { height: 22.916667%; } -DIV[class~="appointment"].lasts23 +DIV.daysView DIV[class~="appointment"].lasts23 { height: 23.958333%; } -DIV[class~="appointment"].lasts24 +DIV.daysView DIV[class~="appointment"].lasts24 { height: 25.000000%; } -DIV[class~="appointment"].lasts25 +DIV.daysView DIV[class~="appointment"].lasts25 { height: 26.041667%; } -DIV[class~="appointment"].lasts26 +DIV.daysView DIV[class~="appointment"].lasts26 { height: 27.083333%; } -DIV[class~="appointment"].lasts27 +DIV.daysView DIV[class~="appointment"].lasts27 { height: 28.125000%; } -DIV[class~="appointment"].lasts28 +DIV.daysView DIV[class~="appointment"].lasts28 { height: 29.166667%; } -DIV[class~="appointment"].lasts29 +DIV.daysView DIV[class~="appointment"].lasts29 { height: 30.208333%; } -DIV[class~="appointment"].lasts30 +DIV.daysView DIV[class~="appointment"].lasts30 { height: 31.250000%; } -DIV[class~="appointment"].lasts31 +DIV.daysView DIV[class~="appointment"].lasts31 { height: 32.291667%; } -DIV[class~="appointment"].lasts32 +DIV.daysView DIV[class~="appointment"].lasts32 { height: 33.333333%; } -DIV[class~="appointment"].lasts33 +DIV.daysView DIV[class~="appointment"].lasts33 { height: 34.375000%; } -DIV[class~="appointment"].lasts34 +DIV.daysView DIV[class~="appointment"].lasts34 { height: 35.416667%; } -DIV[class~="appointment"].lasts35 +DIV.daysView DIV[class~="appointment"].lasts35 { height: 36.458333%; } -DIV[class~="appointment"].lasts36 +DIV.daysView DIV[class~="appointment"].lasts36 { height: 37.500000%; } -DIV[class~="appointment"].lasts37 +DIV.daysView DIV[class~="appointment"].lasts37 { height: 38.541667%; } -DIV[class~="appointment"].lasts38 +DIV.daysView DIV[class~="appointment"].lasts38 { height: 39.583333%; } -DIV[class~="appointment"].lasts39 +DIV.daysView DIV[class~="appointment"].lasts39 { height: 40.625000%; } -DIV[class~="appointment"].lasts40 +DIV.daysView DIV[class~="appointment"].lasts40 { height: 41.666667%; } -DIV[class~="appointment"].lasts41 +DIV.daysView DIV[class~="appointment"].lasts41 { height: 42.708333%; } -DIV[class~="appointment"].lasts42 +DIV.daysView DIV[class~="appointment"].lasts42 { height: 43.750000%; } -DIV[class~="appointment"].lasts43 +DIV.daysView DIV[class~="appointment"].lasts43 { height: 44.791667%; } -DIV[class~="appointment"].lasts44 +DIV.daysView DIV[class~="appointment"].lasts44 { height: 45.833333%; } -DIV[class~="appointment"].lasts45 +DIV.daysView DIV[class~="appointment"].lasts45 { height: 46.875000%; } -DIV[class~="appointment"].lasts46 +DIV.daysView DIV[class~="appointment"].lasts46 { height: 47.916667%; } -DIV[class~="appointment"].lasts47 +DIV.daysView DIV[class~="appointment"].lasts47 { height: 48.958333%; } -DIV[class~="appointment"].lasts48 +DIV.daysView DIV[class~="appointment"].lasts48 { height: 50.000000%; } -DIV[class~="appointment"].lasts49 +DIV.daysView DIV[class~="appointment"].lasts49 { height: 51.041667%; } -DIV[class~="appointment"].lasts50 +DIV.daysView DIV[class~="appointment"].lasts50 { height: 52.083333%; } -DIV[class~="appointment"].lasts51 +DIV.daysView DIV[class~="appointment"].lasts51 { height: 53.125000%; } -DIV[class~="appointment"].lasts52 +DIV.daysView DIV[class~="appointment"].lasts52 { height: 54.166667%; } -DIV[class~="appointment"].lasts53 +DIV.daysView DIV[class~="appointment"].lasts53 { height: 55.208333%; } -DIV[class~="appointment"].lasts54 +DIV.daysView DIV[class~="appointment"].lasts54 { height: 56.250000%; } -DIV[class~="appointment"].lasts55 +DIV.daysView DIV[class~="appointment"].lasts55 { height: 57.291667%; } -DIV[class~="appointment"].lasts56 +DIV.daysView DIV[class~="appointment"].lasts56 { height: 58.333333%; } -DIV[class~="appointment"].lasts57 +DIV.daysView DIV[class~="appointment"].lasts57 { height: 59.375000%; } -DIV[class~="appointment"].lasts58 +DIV.daysView DIV[class~="appointment"].lasts58 { height: 60.416667%; } -DIV[class~="appointment"].lasts59 +DIV.daysView DIV[class~="appointment"].lasts59 { height: 61.458333%; } -DIV[class~="appointment"].lasts60 +DIV.daysView DIV[class~="appointment"].lasts60 { height: 62.500000%; } -DIV[class~="appointment"].lasts61 +DIV.daysView DIV[class~="appointment"].lasts61 { height: 63.541667%; } -DIV[class~="appointment"].lasts62 +DIV.daysView DIV[class~="appointment"].lasts62 { height: 64.583333%; } -DIV[class~="appointment"].lasts63 +DIV.daysView DIV[class~="appointment"].lasts63 { height: 65.625000%; } -DIV[class~="appointment"].lasts64 +DIV.daysView DIV[class~="appointment"].lasts64 { height: 66.666667%; } -DIV[class~="appointment"].lasts65 +DIV.daysView DIV[class~="appointment"].lasts65 { height: 67.708333%; } -DIV[class~="appointment"].lasts66 +DIV.daysView DIV[class~="appointment"].lasts66 { height: 68.750000%; } -DIV[class~="appointment"].lasts67 +DIV.daysView DIV[class~="appointment"].lasts67 { height: 69.791667%; } -DIV[class~="appointment"].lasts68 +DIV.daysView DIV[class~="appointment"].lasts68 { height: 70.833333%; } -DIV[class~="appointment"].lasts69 +DIV.daysView DIV[class~="appointment"].lasts69 { height: 71.875000%; } -DIV[class~="appointment"].lasts70 +DIV.daysView DIV[class~="appointment"].lasts70 { height: 72.916667%; } -DIV[class~="appointment"].lasts71 +DIV.daysView DIV[class~="appointment"].lasts71 { height: 73.958333%; } -DIV[class~="appointment"].lasts72 +DIV.daysView DIV[class~="appointment"].lasts72 { height: 75.000000%; } -DIV[class~="appointment"].lasts73 +DIV.daysView DIV[class~="appointment"].lasts73 { height: 76.041667%; } -DIV[class~="appointment"].lasts74 +DIV.daysView DIV[class~="appointment"].lasts74 { height: 77.083333%; } -DIV[class~="appointment"].lasts75 +DIV.daysView DIV[class~="appointment"].lasts75 { height: 78.125000%; } -DIV[class~="appointment"].lasts76 +DIV.daysView DIV[class~="appointment"].lasts76 { height: 79.166667%; } -DIV[class~="appointment"].lasts77 +DIV.daysView DIV[class~="appointment"].lasts77 { height: 80.208333%; } -DIV[class~="appointment"].lasts78 +DIV.daysView DIV[class~="appointment"].lasts78 { height: 81.250000%; } -DIV[class~="appointment"].lasts79 +DIV.daysView DIV[class~="appointment"].lasts79 { height: 82.291667%; } -DIV[class~="appointment"].lasts80 +DIV.daysView DIV[class~="appointment"].lasts80 { height: 83.333333%; } -DIV[class~="appointment"].lasts81 +DIV.daysView DIV[class~="appointment"].lasts81 { height: 84.375000%; } -DIV[class~="appointment"].lasts82 +DIV.daysView DIV[class~="appointment"].lasts82 { height: 85.416667%; } -DIV[class~="appointment"].lasts83 +DIV.daysView DIV[class~="appointment"].lasts83 { height: 86.458333%; } -DIV[class~="appointment"].lasts84 +DIV.daysView DIV[class~="appointment"].lasts84 { height: 87.500000%; } -DIV[class~="appointment"].lasts85 +DIV.daysView DIV[class~="appointment"].lasts85 { height: 88.541667%; } -DIV[class~="appointment"].lasts86 +DIV.daysView DIV[class~="appointment"].lasts86 { height: 89.583333%; } -DIV[class~="appointment"].lasts87 +DIV.daysView DIV[class~="appointment"].lasts87 { height: 90.625000%; } -DIV[class~="appointment"].lasts88 +DIV.daysView DIV[class~="appointment"].lasts88 { height: 91.666667%; } -DIV[class~="appointment"].lasts89 +DIV.daysView DIV[class~="appointment"].lasts89 { height: 92.708333%; } -DIV[class~="appointment"].lasts90 +DIV.daysView DIV[class~="appointment"].lasts90 { height: 93.750000%; } -DIV[class~="appointment"].lasts91 +DIV.daysView DIV[class~="appointment"].lasts91 { height: 94.791667%; } -DIV[class~="appointment"].lasts92 +DIV.daysView DIV[class~="appointment"].lasts92 { height: 95.833333%; } -DIV[class~="appointment"].lasts93 +DIV.daysView DIV[class~="appointment"].lasts93 { height: 96.875000%; } -DIV[class~="appointment"].lasts94 +DIV.daysView DIV[class~="appointment"].lasts94 { height: 97.916667%; } -DIV[class~="appointment"].lasts95 +DIV.daysView DIV[class~="appointment"].lasts95 { height: 98.958333%; } -DIV[class~="appointment"].lasts96 +DIV.daysView DIV[class~="appointment"].lasts96 { height: 100.000000%; } diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index 9d5daf1f5..88a6680f6 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -817,36 +817,32 @@ function changeWeekCalendarDisplayOfSelectedDay(node) { node.addClassName("selectedDay"); } -function findMonthCalendarSelectedCell(table) { - var tbody = table.tBodies[0]; - var rows = tbody.rows; +function findMonthCalendarSelectedCell(daysContainer) { + var found = false; + var i = 0; - var i = 1; - while (i < rows.length && !table.selectedCell) { - var cells = rows[i].cells; - var j = 0; - while (j < cells.length && !table.selectedCell) { - if (cells[j].hasClassName("selectedDay")) - table.selectedCell = cells[j]; + while (!found && i < daysContainer.childNodes.length) { + var currentNode = daysContainer.childNodes[i]; + if (currentNode instanceof HTMLDivElement + && currentNode.hasClassName("selectedDay")) { + daysContainer.selectedCell = currentNode; + found = true; + } else - j++; - } - i++; - } + i++; + } } function changeMonthCalendarDisplayOfSelectedDay(node) { - var tr = node.parentNode; - var table = tr.parentNode.parentNode; - - if (!table.selectedCell) - findMonthCalendarSelectedCell(table); - - if (table.selectedCell) - table.selectedCell.removeClassName("selectedDay"); - table.selectedCell = node; - node.addClassName("selectedDay"); + var daysContainer = node.parentNode; + if (!daysContainer.selectedCell) + findMonthCalendarSelectedCell(daysContainer); + + if (daysContainer.selectedCell) + daysContainer.selectedCell.removeClassName("selectedDay"); + daysContainer.selectedCell = node; + node.addClassName("selectedDay"); } function onHideCompletedTasks(node)