Commit f6195010eaaa4fb6faa9ce0e0827e34a5649e477

Authored by bernard
1 parent 30c584f0

Changed some attribute names to meet RichFaces naming conventions.

Showing 36 changed files with 1731 additions and 1009 deletions
@@ -48,7 +48,8 @@ @@ -48,7 +48,8 @@
48 <systemProperties> 48 <systemProperties>
49 <property> 49 <property>
50 <name>displayedDaysForMonthViewCalculationTestData</name> 50 <name>displayedDaysForMonthViewCalculationTestData</name>
51 - <value>${basedir}/src/test/resources/displayedDaysForMonthViewCalculationTestData.txt</value> 51 + <value>${basedir}/src/test/resources/displayedDaysForMonthViewCalculationTestData.txt
  52 + </value>
52 </property> 53 </property>
53 <property> 54 <property>
54 <name>displayedDaysForWeekViewCalculationTestData</name> 55 <name>displayedDaysForWeekViewCalculationTestData</name>
1 <listener> 1 <listener>
2 - <name>itemSelectedListener</name> 2 + <name>itemSelectListener</name>
3 <property existintag="true" exist="true" el="true" elonly="true"> 3 <property existintag="true" exist="true" el="true" elonly="true">
4 <name>binding</name> 4 <name>binding</name>
5 - <classname>org.richfaces.scheduleItemSelectedListener</classname> 5 + <classname>org.richfaces.scheduleItemSelectListener</classname>
6 <description>The attribute takes a value-binding expression for a component property of 6 <description>The attribute takes a value-binding expression for a component property of
7 a backing bean 7 a backing bean
8 </description> 8 </description>
9 </property> 9 </property>
10 <listenerclass> 10 <listenerclass>
11 - org.richfaces.component.event.ScheduleItemSelectedListener 11 + org.richfaces.component.event.ScheduleItemSelectListener
12 </listenerclass> 12 </listenerclass>
13 <componentclass> 13 <componentclass>
14 org.richfaces.component.event.ScheduleListenerEventsProducer 14 org.richfaces.component.event.ScheduleListenerEventsProducer
15 </componentclass> 15 </componentclass>
16 <eventclass> 16 <eventclass>
17 - org.richfaces.component.event.ScheduleItemSelectedEvent 17 + org.richfaces.component.event.ScheduleItemSelectEvent
18 </eventclass> 18 </eventclass>
19 <taghandler generate="true"> 19 <taghandler generate="true">
20 <classname> 20 <classname>
21 - org.richfaces.taglib.ScheduleItemSelectedListenerTagHandler 21 + org.richfaces.taglib.ScheduleItemSelectListenerTagHandler
22 </classname> 22 </classname>
23 </taghandler> 23 </taghandler>
24 <tag generate="true"> 24 <tag generate="true">
25 <classname> 25 <classname>
26 - org.richfaces.taglib.ItemSelectedListenerTag 26 + org.richfaces.taglib.ItemSelectListenerTag
27 </classname> 27 </classname>
28 </tag> 28 </tag>
29 29
@@ -107,31 +107,31 @@ @@ -107,31 +107,31 @@
107 </listener> 107 </listener>
108 108
109 <listener> 109 <listener>
110 - <name>viewChangedListener</name> 110 + <name>viewChangeListener</name>
111 <property existintag="true" exist="true" el="true" elonly="true"> 111 <property existintag="true" exist="true" el="true" elonly="true">
112 <name>binding</name> 112 <name>binding</name>
113 - <classname>org.richfaces.scheduleViewChangedListener</classname> 113 + <classname>org.richfaces.scheduleViewChangeListener</classname>
114 <description>The attribute takes a value-binding expression for a component property of 114 <description>The attribute takes a value-binding expression for a component property of
115 a backing bean 115 a backing bean
116 </description> 116 </description>
117 </property> 117 </property>
118 <listenerclass> 118 <listenerclass>
119 - org.richfaces.component.event.ScheduleViewChangedListener 119 + org.richfaces.component.event.ScheduleViewChangeListener
120 </listenerclass> 120 </listenerclass>
121 <componentclass> 121 <componentclass>
122 org.richfaces.component.event.ScheduleListenerEventsProducer 122 org.richfaces.component.event.ScheduleListenerEventsProducer
123 </componentclass> 123 </componentclass>
124 <eventclass> 124 <eventclass>
125 - org.richfaces.component.event.ScheduleViewChangedEvent 125 + org.richfaces.component.event.ScheduleViewChangeEvent
126 </eventclass> 126 </eventclass>
127 <taghandler generate="true"> 127 <taghandler generate="true">
128 <classname> 128 <classname>
129 - org.richfaces.taglib.ScheduleViewChangedListenerTagHandler 129 + org.richfaces.taglib.ScheduleViewChangeListenerTagHandler
130 </classname> 130 </classname>
131 </taghandler> 131 </taghandler>
132 <tag generate="true"> 132 <tag generate="true">
133 <classname> 133 <classname>
134 - org.richfaces.taglib.ViewChangedListenerTag 134 + org.richfaces.taglib.ViewChangeListenerTag
135 </classname> 135 </classname>
136 </tag> 136 </tag>
137 137
@@ -143,31 +143,31 @@ @@ -143,31 +143,31 @@
143 </listener> 143 </listener>
144 144
145 <listener> 145 <listener>
146 - <name>dateRangeChangedListener</name> 146 + <name>dateRangeChangeListener</name>
147 <property existintag="true" exist="true" el="true" elonly="true"> 147 <property existintag="true" exist="true" el="true" elonly="true">
148 <name>binding</name> 148 <name>binding</name>
149 - <classname>org.richfaces.scheduleDateRangeChangedListener</classname> 149 + <classname>org.richfaces.scheduleDateRangeChangeListener</classname>
150 <description>The attribute takes a value-binding expression for a component property of 150 <description>The attribute takes a value-binding expression for a component property of
151 a backing bean 151 a backing bean
152 </description> 152 </description>
153 </property> 153 </property>
154 <listenerclass> 154 <listenerclass>
155 - org.richfaces.component.event.ScheduleDateRangeChangedListener 155 + org.richfaces.component.event.ScheduleDateRangeChangeListener
156 </listenerclass> 156 </listenerclass>
157 <componentclass> 157 <componentclass>
158 org.richfaces.component.event.ScheduleListenerEventsProducer 158 org.richfaces.component.event.ScheduleListenerEventsProducer
159 </componentclass> 159 </componentclass>
160 <eventclass> 160 <eventclass>
161 - org.richfaces.component.event.ScheduleDateRangeChangedEvent 161 + org.richfaces.component.event.ScheduleDateRangeChangeEvent
162 </eventclass> 162 </eventclass>
163 <taghandler generate="true"> 163 <taghandler generate="true">
164 <classname> 164 <classname>
165 - org.richfaces.taglib.ScheduleDateRangeChangedListenerTagHandler 165 + org.richfaces.taglib.ScheduleDateRangeChangeListenerTagHandler
166 </classname> 166 </classname>
167 </taghandler> 167 </taghandler>
168 <tag generate="true"> 168 <tag generate="true">
169 <classname> 169 <classname>
170 - org.richfaces.taglib.DateRangeChangedListenerTag 170 + org.richfaces.taglib.DateRangeChangeListenerTag
171 </classname> 171 </classname>
172 </tag> 172 </tag>
173 173
@@ -178,31 +178,31 @@ @@ -178,31 +178,31 @@
178 </property> 178 </property>
179 </listener> 179 </listener>
180 <listener> 180 <listener>
181 - <name>dateRangeSelectedListener</name> 181 + <name>dateRangeSelectListener</name>
182 <property existintag="true" exist="true" el="true" elonly="true"> 182 <property existintag="true" exist="true" el="true" elonly="true">
183 <name>binding</name> 183 <name>binding</name>
184 - <classname>org.richfaces.scheduleDateRangeChangedListener</classname> 184 + <classname>org.richfaces.scheduleDateRangeSelectdListener</classname>
185 <description>The attribute takes a value-binding expression for a component property of 185 <description>The attribute takes a value-binding expression for a component property of
186 a backing bean 186 a backing bean
187 </description> 187 </description>
188 </property> 188 </property>
189 <listenerclass> 189 <listenerclass>
190 - org.richfaces.component.event.ScheduleDateRangeSelectedListener 190 + org.richfaces.component.event.ScheduleDateRangeSelectListener
191 </listenerclass> 191 </listenerclass>
192 <componentclass> 192 <componentclass>
193 org.richfaces.component.event.ScheduleListenerEventsProducer 193 org.richfaces.component.event.ScheduleListenerEventsProducer
194 </componentclass> 194 </componentclass>
195 <eventclass> 195 <eventclass>
196 - org.richfaces.component.event.ScheduleDateRangeSelectedEvent 196 + org.richfaces.component.event.ScheduleDateRangeSelectEvent
197 </eventclass> 197 </eventclass>
198 <taghandler generate="true"> 198 <taghandler generate="true">
199 <classname> 199 <classname>
200 - org.richfaces.taglib.ScheduleDateRangeSelectedListenerTagHandler 200 + org.richfaces.taglib.ScheduleDateRangeSelectListenerTagHandler
201 </classname> 201 </classname>
202 </taghandler> 202 </taghandler>
203 <tag generate="true"> 203 <tag generate="true">
204 <classname> 204 <classname>
205 - org.richfaces.taglib.DateRangeSelectedListenerTag 205 + org.richfaces.taglib.DateRangeSelectListenerTag
206 </classname> 206 </classname>
207 </tag> 207 </tag>
208 208
@@ -214,31 +214,31 @@ @@ -214,31 +214,31 @@
214 </listener> 214 </listener>
215 215
216 <listener> 216 <listener>
217 - <name>dateSelectedListener</name> 217 + <name>dateSelectListener</name>
218 <property existintag="true" exist="true" el="true" elonly="true"> 218 <property existintag="true" exist="true" el="true" elonly="true">
219 <name>binding</name> 219 <name>binding</name>
220 - <classname>org.richfaces.scheduleDateSelectedListener</classname> 220 + <classname>org.richfaces.scheduleDateSelectListener</classname>
221 <description>The attribute takes a value-binding expression for a component property of 221 <description>The attribute takes a value-binding expression for a component property of
222 a backing bean 222 a backing bean
223 </description> 223 </description>
224 </property> 224 </property>
225 <listenerclass> 225 <listenerclass>
226 - org.richfaces.component.event.ScheduleDateSelectedListener 226 + org.richfaces.component.event.ScheduleDateSelectListener
227 </listenerclass> 227 </listenerclass>
228 <componentclass> 228 <componentclass>
229 org.richfaces.component.event.ScheduleListenerEventsProducer 229 org.richfaces.component.event.ScheduleListenerEventsProducer
230 </componentclass> 230 </componentclass>
231 <eventclass> 231 <eventclass>
232 - org.richfaces.component.event.ScheduleDateSelectedEvent 232 + org.richfaces.component.event.ScheduleDateSelectEvent
233 </eventclass> 233 </eventclass>
234 <taghandler generate="true"> 234 <taghandler generate="true">
235 <classname> 235 <classname>
236 - org.richfaces.taglib.ScheduleDateSelectedListenerTagHandler 236 + org.richfaces.taglib.ScheduleDateSelectListenerTagHandler
237 </classname> 237 </classname>
238 </taghandler> 238 </taghandler>
239 <tag generate="true"> 239 <tag generate="true">
240 <classname> 240 <classname>
241 - org.richfaces.taglib.DateSelectedListenerTag 241 + org.richfaces.taglib.DateSelectListenerTag
242 </classname> 242 </classname>
243 </tag> 243 </tag>
244 244
@@ -37,8 +37,6 @@ @@ -37,8 +37,6 @@
37 &ui_component_attributes; 37 &ui_component_attributes;
38 &commonViewAttributes; 38 &commonViewAttributes;
39 &ajax_component_attributes; 39 &ajax_component_attributes;
40 - <!--TODO how about reRender ajaxSingle and others?-->  
41 - <!--TODO add style attribute-->  
42 <property> 40 <property>
43 <name>switchType</name> 41 <name>switchType</name>
44 <classname>java.lang.String</classname> 42 <classname>java.lang.String</classname>
@@ -462,7 +460,7 @@ @@ -462,7 +460,7 @@
462 </property> 460 </property>
463 461
464 <property> 462 <property>
465 - <name>onItemSelected</name> 463 + <name>onbeforeitemselect</name>
466 <classname>java.lang.String</classname> 464 <classname>java.lang.String</classname>
467 <description> 465 <description>
468 JavaScript code for handling event. 466 JavaScript code for handling event.
@@ -476,7 +474,7 @@ @@ -476,7 +474,7 @@
476 <defaultvalue>null</defaultvalue> 474 <defaultvalue>null</defaultvalue>
477 </property> 475 </property>
478 <property> 476 <property>
479 - <name>onItemSelectedComplete</name> 477 + <name>onitemselect</name>
480 <classname>java.lang.String</classname> 478 <classname>java.lang.String</classname>
481 <description> 479 <description>
482 JavaScript code called when ajax request triggered when item 480 JavaScript code called when ajax request triggered when item
@@ -493,7 +491,7 @@ @@ -493,7 +491,7 @@
493 <defaultvalue>null</defaultvalue> 491 <defaultvalue>null</defaultvalue>
494 </property> 492 </property>
495 <property> 493 <property>
496 - <name>onItemDragStart</name> 494 + <name>onitemdragstart</name>
497 <classname>java.lang.String</classname> 495 <classname>java.lang.String</classname>
498 <description> 496 <description>
499 JavaScript code for handling event. 497 JavaScript code for handling event.
@@ -508,7 +506,7 @@ @@ -508,7 +506,7 @@
508 <defaultvalue>null</defaultvalue> 506 <defaultvalue>null</defaultvalue>
509 </property> 507 </property>
510 <property> 508 <property>
511 - <name>onItemDragStop</name> 509 + <name>onitemdragstop</name>
512 <classname>java.lang.String</classname> 510 <classname>java.lang.String</classname>
513 <description> 511 <description>
514 JavaScript code for handling event. 512 JavaScript code for handling event.
@@ -523,7 +521,7 @@ @@ -523,7 +521,7 @@
523 <defaultvalue>null</defaultvalue> 521 <defaultvalue>null</defaultvalue>
524 </property> 522 </property>
525 <property> 523 <property>
526 - <name>onItemResizeStart</name> 524 + <name>onitemresizestart</name>
527 <classname>java.lang.String</classname> 525 <classname>java.lang.String</classname>
528 <description> 526 <description>
529 JavaScript code for handling event. 527 JavaScript code for handling event.
@@ -538,7 +536,7 @@ @@ -538,7 +536,7 @@
538 <defaultvalue>null</defaultvalue> 536 <defaultvalue>null</defaultvalue>
539 </property> 537 </property>
540 <property> 538 <property>
541 - <name>onItemResizeStop</name> 539 + <name>onitemresizestop</name>
542 <classname>java.lang.String</classname> 540 <classname>java.lang.String</classname>
543 <description> 541 <description>
544 JavaScript code for handling event. 542 JavaScript code for handling event.
@@ -553,7 +551,7 @@ @@ -553,7 +551,7 @@
553 <defaultvalue>null</defaultvalue> 551 <defaultvalue>null</defaultvalue>
554 </property> 552 </property>
555 <property> 553 <property>
556 - <name>onItemDrop</name> 554 + <name>onbeforeitemdrop</name>
557 <classname>java.lang.String</classname> 555 <classname>java.lang.String</classname>
558 <description> 556 <description>
559 JavaScript code for handling event. 557 JavaScript code for handling event.
@@ -578,7 +576,7 @@ @@ -578,7 +576,7 @@
578 <defaultvalue>null</defaultvalue> 576 <defaultvalue>null</defaultvalue>
579 </property> 577 </property>
580 <property> 578 <property>
581 - <name>onItemDropComplete</name> 579 + <name>onitemdrop</name>
582 <classname>java.lang.String</classname> 580 <classname>java.lang.String</classname>
583 <description> 581 <description>
584 JavaScript code called when ajax request triggered when item 582 JavaScript code called when ajax request triggered when item
@@ -607,7 +605,7 @@ @@ -607,7 +605,7 @@
607 <defaultvalue>null</defaultvalue> 605 <defaultvalue>null</defaultvalue>
608 </property> 606 </property>
609 <property> 607 <property>
610 - <name>onItemResized</name> 608 + <name>onbeforeitemresize</name>
611 <classname>java.lang.String</classname> 609 <classname>java.lang.String</classname>
612 <description> 610 <description>
613 JavaScript code for handling event. 611 JavaScript code for handling event.
@@ -630,7 +628,7 @@ @@ -630,7 +628,7 @@
630 <defaultvalue>null</defaultvalue> 628 <defaultvalue>null</defaultvalue>
631 </property> 629 </property>
632 <property> 630 <property>
633 - <name>onItemResizedComplete</name> 631 + <name>onitemresize</name>
634 <classname>java.lang.String</classname> 632 <classname>java.lang.String</classname>
635 <description> 633 <description>
636 JavaScript code called when ajax request triggered when item 634 JavaScript code called when ajax request triggered when item
@@ -655,7 +653,7 @@ @@ -655,7 +653,7 @@
655 <defaultvalue>null</defaultvalue> 653 <defaultvalue>null</defaultvalue>
656 </property> 654 </property>
657 <property> 655 <property>
658 - <name>onItemMouseover</name> 656 + <name>onitemmouseover</name>
659 <classname>java.lang.String</classname> 657 <classname>java.lang.String</classname>
660 <description> 658 <description>
661 JavaScript code for handling event. 659 JavaScript code for handling event.
@@ -669,7 +667,7 @@ @@ -669,7 +667,7 @@
669 <defaultvalue>null</defaultvalue> 667 <defaultvalue>null</defaultvalue>
670 </property> 668 </property>
671 <property> 669 <property>
672 - <name>onItemMouseout</name> 670 + <name>onitemmouseout</name>
673 <classname>java.lang.String</classname> 671 <classname>java.lang.String</classname>
674 <description> 672 <description>
675 JavaScript code for handling event. 673 JavaScript code for handling event.
@@ -683,7 +681,7 @@ @@ -683,7 +681,7 @@
683 <defaultvalue>null</defaultvalue> 681 <defaultvalue>null</defaultvalue>
684 </property> 682 </property>
685 <property> 683 <property>
686 - <name>onViewChanged</name> 684 + <name>onbeforeviewchange</name>
687 <classname>java.lang.String</classname> 685 <classname>java.lang.String</classname>
688 <description> 686 <description>
689 JavaScript code for handling event. 687 JavaScript code for handling event.
@@ -697,7 +695,7 @@ @@ -697,7 +695,7 @@
697 <defaultvalue>null</defaultvalue> 695 <defaultvalue>null</defaultvalue>
698 </property> 696 </property>
699 <property> 697 <property>
700 - <name>onViewChangedComplete</name> 698 + <name>onviewchange</name>
701 <classname>java.lang.String</classname> 699 <classname>java.lang.String</classname>
702 <description> 700 <description>
703 JavaScript code called when ajax request triggered when view 701 JavaScript code called when ajax request triggered when view
@@ -712,7 +710,7 @@ @@ -712,7 +710,7 @@
712 <defaultvalue>null</defaultvalue> 710 <defaultvalue>null</defaultvalue>
713 </property> 711 </property>
714 <property> 712 <property>
715 - <name>onDateSelected</name> 713 + <name>onbeforedateselect</name>
716 <classname>java.lang.String</classname> 714 <classname>java.lang.String</classname>
717 <description> 715 <description>
718 JavaScript code for handling event. 716 JavaScript code for handling event.
@@ -729,7 +727,7 @@ @@ -729,7 +727,7 @@
729 <defaultvalue>null</defaultvalue> 727 <defaultvalue>null</defaultvalue>
730 </property> 728 </property>
731 <property> 729 <property>
732 - <name>onDateSelectedComplete</name> 730 + <name>ondateselect</name>
733 <classname>java.lang.String</classname> 731 <classname>java.lang.String</classname>
734 <description> 732 <description>
735 JavaScript code called when ajax request triggered when date 733 JavaScript code called when ajax request triggered when date
@@ -749,7 +747,7 @@ @@ -749,7 +747,7 @@
749 <defaultvalue>null</defaultvalue> 747 <defaultvalue>null</defaultvalue>
750 </property> 748 </property>
751 <property> 749 <property>
752 - <name>onDateRangeSelected</name> 750 + <name>onbeforedaterangeselect</name>
753 <classname>java.lang.String</classname> 751 <classname>java.lang.String</classname>
754 <description> 752 <description>
755 JavaScript code for handling event. 753 JavaScript code for handling event.
@@ -766,7 +764,7 @@ @@ -766,7 +764,7 @@
766 <defaultvalue>null</defaultvalue> 764 <defaultvalue>null</defaultvalue>
767 </property> 765 </property>
768 <property> 766 <property>
769 - <name>onDateRangeSelectedComplete</name> 767 + <name>ondaterangeselect</name>
770 <classname>java.lang.String</classname> 768 <classname>java.lang.String</classname>
771 <description> 769 <description>
772 JavaScript code called when ajax request triggered when date 770 JavaScript code called when ajax request triggered when date
@@ -785,8 +783,9 @@ @@ -785,8 +783,9 @@
785 </description> 783 </description>
786 <defaultvalue>null</defaultvalue> 784 <defaultvalue>null</defaultvalue>
787 </property> 785 </property>
  786 + <!--TODO change javadoc of event attributes-->
788 <property> 787 <property>
789 - <name>onDateRangeChanged</name> 788 + <name>onbeforedaterangechange</name>
790 <classname>java.lang.String</classname> 789 <classname>java.lang.String</classname>
791 <description> 790 <description>
792 JavaScript code for handling event. 791 JavaScript code for handling event.
@@ -801,7 +800,7 @@ @@ -801,7 +800,7 @@
801 <defaultvalue>null</defaultvalue> 800 <defaultvalue>null</defaultvalue>
802 </property> 801 </property>
803 <property> 802 <property>
804 - <name>onDateRangeChangedComplete</name> 803 + <name>ondaterangechange</name>
805 <classname>java.lang.String</classname> 804 <classname>java.lang.String</classname>
806 <description> 805 <description>
807 JavaScript code called when ajax request triggered when displayed 806 JavaScript code called when ajax request triggered when displayed
@@ -827,7 +826,6 @@ @@ -827,7 +826,6 @@
827 <property elonly="true" attachedstate="true"> 826 <property elonly="true" attachedstate="true">
828 <name>itemMoveListener</name> 827 <name>itemMoveListener</name>
829 <classname>javax.faces.el.MethodBinding</classname> 828 <classname>javax.faces.el.MethodBinding</classname>
830 - <!--<methodargs>org.richfaces.component.event.ScheduleItemMoveEvent</methodargs>-->  
831 <returntype>boolean</returntype> 829 <returntype>boolean</returntype>
832 </property> 830 </property>
833 831
@@ -837,27 +835,27 @@ @@ -837,27 +835,27 @@
837 </property> 835 </property>
838 836
839 <property elonly="true" attachedstate="true"> 837 <property elonly="true" attachedstate="true">
840 - <name>itemSelectedListener</name> 838 + <name>itemSelectListener</name>
841 <classname>javax.faces.el.MethodBinding</classname> 839 <classname>javax.faces.el.MethodBinding</classname>
842 </property> 840 </property>
843 841
844 <property elonly="true" attachedstate="true"> 842 <property elonly="true" attachedstate="true">
845 - <name>viewChangedListener</name> 843 + <name>viewChangeListener</name>
846 <classname>javax.faces.el.MethodBinding</classname> 844 <classname>javax.faces.el.MethodBinding</classname>
847 </property> 845 </property>
848 846
849 <property elonly="true" attachedstate="true"> 847 <property elonly="true" attachedstate="true">
850 - <name>dateRangeChangedListener</name> 848 + <name>dateRangeChangeListener</name>
851 <classname>javax.faces.el.MethodBinding</classname> 849 <classname>javax.faces.el.MethodBinding</classname>
852 </property> 850 </property>
853 851
854 <property elonly="true" attachedstate="true"> 852 <property elonly="true" attachedstate="true">
855 - <name>dateRangeSelectedListener</name> 853 + <name>dateRangeSelectListener</name>
856 <classname>javax.faces.el.MethodBinding</classname> 854 <classname>javax.faces.el.MethodBinding</classname>
857 </property> 855 </property>
858 856
859 <property elonly="true" attachedstate="true"> 857 <property elonly="true" attachedstate="true">
860 - <name>dateSelectedListener</name> 858 + <name>dateSelectListener</name>
861 <classname>javax.faces.el.MethodBinding</classname> 859 <classname>javax.faces.el.MethodBinding</classname>
862 </property> 860 </property>
863 861
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN" 2 <!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN"
3 "http://labs.jboss.com/jbossrichfaces/component-config.dtd" 3 "http://labs.jboss.com/jbossrichfaces/component-config.dtd"
4 -[  
5 -<!ENTITY commonViewAttributes SYSTEM "commonViewAttributes.ent">  
6 -]  
7 -> 4 + [
  5 + <!ENTITY commonViewAttributes SYSTEM "commonViewAttributes.ent">
  6 + ]
  7 + >
8 <components> 8 <components>
9 <component> 9 <component>
10 <name>org.richfaces.ScheduleAgendaDayView</name> 10 <name>org.richfaces.ScheduleAgendaDayView</name>
@@ -22,11 +22,6 @@ @@ -22,11 +22,6 @@
22 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase 22 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
23 </superclass> 23 </superclass>
24 </tag> 24 </tag>
25 - <!--  
26 - <taghandler>  
27 - <classname>org.ajax4jsf.tag.TestHandler</classname>  
28 - </taghandler>  
29 - -->  
30 &ui_component_attributes; 25 &ui_component_attributes;
31 &commonViewAttributes; 26 &commonViewAttributes;
32 </component> 27 </component>
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN" 2 <!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN"
3 "http://labs.jboss.com/jbossrichfaces/component-config.dtd" 3 "http://labs.jboss.com/jbossrichfaces/component-config.dtd"
4 -[  
5 -<!ENTITY commonViewAttributes SYSTEM "commonViewAttributes.ent">  
6 -]  
7 -> 4 + [
  5 + <!ENTITY commonViewAttributes SYSTEM "commonViewAttributes.ent">
  6 + ]
  7 + >
8 <components> 8 <components>
9 <component> 9 <component>
10 <name>org.richfaces.ScheduleAgendaWeekView</name> 10 <name>org.richfaces.ScheduleAgendaWeekView</name>
@@ -22,11 +22,6 @@ @@ -22,11 +22,6 @@
22 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase 22 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
23 </superclass> 23 </superclass>
24 </tag> 24 </tag>
25 - <!--  
26 - <taghandler>  
27 - <classname>org.ajax4jsf.tag.TestHandler</classname>  
28 - </taghandler>  
29 - -->  
30 &ui_component_attributes; 25 &ui_component_attributes;
31 &commonViewAttributes; 26 &commonViewAttributes;
32 </component> 27 </component>
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN" 2 <!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN"
3 "http://labs.jboss.com/jbossrichfaces/component-config.dtd" 3 "http://labs.jboss.com/jbossrichfaces/component-config.dtd"
4 -[  
5 -<!ENTITY commonViewAttributes SYSTEM "commonViewAttributes.ent">  
6 -]  
7 -> 4 + [
  5 + <!ENTITY commonViewAttributes SYSTEM "commonViewAttributes.ent">
  6 + ]
  7 + >
8 <components> 8 <components>
9 <component> 9 <component>
10 <name>org.richfaces.ScheduleBasicDayView</name> 10 <name>org.richfaces.ScheduleBasicDayView</name>
@@ -22,11 +22,6 @@ @@ -22,11 +22,6 @@
22 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase 22 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
23 </superclass> 23 </superclass>
24 </tag> 24 </tag>
25 - <!--  
26 - <taghandler>  
27 - <classname>org.ajax4jsf.tag.TestHandler</classname>  
28 - </taghandler>  
29 - -->  
30 &ui_component_attributes; 25 &ui_component_attributes;
31 &commonViewAttributes; 26 &commonViewAttributes;
32 </component> 27 </component>
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN" 2 <!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN"
3 "http://labs.jboss.com/jbossrichfaces/component-config.dtd" 3 "http://labs.jboss.com/jbossrichfaces/component-config.dtd"
4 -[  
5 -<!ENTITY commonViewAttributes SYSTEM "commonViewAttributes.ent">  
6 -]  
7 -> 4 + [
  5 + <!ENTITY commonViewAttributes SYSTEM "commonViewAttributes.ent">
  6 + ]
  7 + >
8 <components> 8 <components>
9 <component> 9 <component>
10 <name>org.richfaces.ScheduleBasicWeekView</name> 10 <name>org.richfaces.ScheduleBasicWeekView</name>
@@ -22,11 +22,6 @@ @@ -22,11 +22,6 @@
22 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase 22 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
23 </superclass> 23 </superclass>
24 </tag> 24 </tag>
25 - <!--  
26 - <taghandler>  
27 - <classname>org.ajax4jsf.tag.TestHandler</classname>  
28 - </taghandler>  
29 - -->  
30 &ui_component_attributes; 25 &ui_component_attributes;
31 &commonViewAttributes; 26 &commonViewAttributes;
32 </component> 27 </component>
@@ -19,14 +19,7 @@ @@ -19,14 +19,7 @@
19 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase 19 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
20 </superclass> 20 </superclass>
21 </tag> 21 </tag>
22 - <!--  
23 - <taghandler>  
24 - <classname>org.ajax4jsf.tag.TestHandler</classname>  
25 - </taghandler>  
26 - -->  
27 &ui_component_attributes; 22 &ui_component_attributes;
28 - <!--  
29 - -->  
30 <property> 23 <property>
31 <name>styleClass</name> 24 <name>styleClass</name>
32 <classname>java.lang.String</classname> 25 <classname>java.lang.String</classname>
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN" 2 <!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN"
3 "http://labs.jboss.com/jbossrichfaces/component-config.dtd" 3 "http://labs.jboss.com/jbossrichfaces/component-config.dtd"
4 -[  
5 -<!ENTITY commonViewAttributes SYSTEM "commonViewAttributes.ent">  
6 -]  
7 -> 4 + [
  5 + <!ENTITY commonViewAttributes SYSTEM "commonViewAttributes.ent">
  6 + ]
  7 + >
8 <components> 8 <components>
9 <component> 9 <component>
10 <name>org.richfaces.ScheduleMonthView</name> 10 <name>org.richfaces.ScheduleMonthView</name>
@@ -22,15 +22,8 @@ @@ -22,15 +22,8 @@
22 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase 22 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
23 </superclass> 23 </superclass>
24 </tag> 24 </tag>
25 - <!--  
26 - <taghandler>  
27 - <classname>org.ajax4jsf.tag.TestHandler</classname>  
28 - </taghandler>  
29 - -->  
30 &ui_component_attributes; 25 &ui_component_attributes;
31 &commonViewAttributes; 26 &commonViewAttributes;
32 - <!--  
33 - -->  
34 <property> 27 <property>
35 <name>weekMode</name> 28 <name>weekMode</name>
36 <classname>java.lang.String</classname> 29 <classname>java.lang.String</classname>
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<resource-config>  
3 - <resource class="org.richfaces.renderkit.html.scripts.ScheduleMessages">  
4 - <name>org.richfaces.renderkit.html.scripts.ScheduleMessages</name>  
5 - </resource>  
6 -</resource-config>  
  1 +/*
  2 + * JBoss, Home of Professional Open Source
  3 + * Copyright , Red Hat, Inc. and individual contributors
  4 + * by the @authors tag. See the copyright.txt in the distribution for a
  5 + * full listing of individual contributors.
  6 + *
  7 + * This is free software; you can redistribute it and/or modify it
  8 + * under the terms of the GNU Lesser General Public License as
  9 + * published by the Free Software Foundation; either version 2.1 of
  10 + * the License, or (at your option) any later version.
  11 + *
  12 + * This software is distributed in the hope that it will be useful,
  13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15 + * Lesser General Public License for more details.
  16 + *
  17 + * You should have received a copy of the GNU Lesser General Public
  18 + * License along with this software; if not, write to the Free
  19 + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  20 + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  21 + */
1 package org.richfaces.component; 22 package org.richfaces.component;
2 23
3 /** 24 /**
@@ -18,13 +18,25 @@ import javax.faces.context.FacesContext; @@ -18,13 +18,25 @@ import javax.faces.context.FacesContext;
18 import javax.faces.el.MethodBinding; 18 import javax.faces.el.MethodBinding;
19 import javax.faces.event.AbortProcessingException; 19 import javax.faces.event.AbortProcessingException;
20 import javax.faces.event.FacesEvent; 20 import javax.faces.event.FacesEvent;
21 -import javax.faces.model.*; 21 +import javax.faces.model.ArrayDataModel;
  22 +import javax.faces.model.DataModel;
  23 +import javax.faces.model.ListDataModel;
  24 +import javax.faces.model.ResultDataModel;
  25 +import javax.faces.model.ResultSetDataModel;
  26 +import javax.faces.model.ScalarDataModel;
22 import javax.servlet.jsp.jstl.sql.Result; 27 import javax.servlet.jsp.jstl.sql.Result;
23 import java.io.IOException; 28 import java.io.IOException;
24 import java.sql.ResultSet; 29 import java.sql.ResultSet;
25 import java.text.DateFormat; 30 import java.text.DateFormat;
26 import java.text.SimpleDateFormat; 31 import java.text.SimpleDateFormat;
27 -import java.util.*; 32 +import java.util.ArrayList;
  33 +import java.util.Calendar;
  34 +import java.util.Collections;
  35 +import java.util.Date;
  36 +import java.util.HashMap;
  37 +import java.util.List;
  38 +import java.util.Locale;
  39 +import java.util.Map;
28 40
29 public abstract class UISchedule extends UIComponentBase implements ScheduleCommonViewAttributes, ScheduleListenerEventsProducer, AjaxComponent { 41 public abstract class UISchedule extends UIComponentBase implements ScheduleCommonViewAttributes, ScheduleListenerEventsProducer, AjaxComponent {
30 42
@@ -38,12 +50,42 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm @@ -38,12 +50,42 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
38 public static final String VIEW_AGENDA_WEEK = "agendaWeek"; 50 public static final String VIEW_AGENDA_WEEK = "agendaWeek";
39 public static final String VIEW_BASIC_DAY = "basicDay"; 51 public static final String VIEW_BASIC_DAY = "basicDay";
40 public static final String VIEW_AGENDA_DAY = "agendaDay"; 52 public static final String VIEW_AGENDA_DAY = "agendaDay";
  53 + public static final String DEFAULT_VIEW = VIEW_MONTH;
  54 + /**
  55 + * Values of switchType attribute
  56 + */
  57 + public static final String SWITCH_TYPE_AJAX = "ajax";
  58 + public static final String SWITCH_TYPE_SERVER = "server";
  59 + public static final String SWITCH_TYPE_CLIENT = "client";
  60 + public static final String DEFAULT_SWITCH_TYPE = SWITCH_TYPE_AJAX;
41 /** 61 /**
42 * Values of weekMode attribute. 62 * Values of weekMode attribute.
43 */ 63 */
44 public static final String WEEK_MODE_FIXED = "fixed"; 64 public static final String WEEK_MODE_FIXED = "fixed";
45 public static final String WEEK_MODE_LIQUID = "liquid"; 65 public static final String WEEK_MODE_LIQUID = "liquid";
46 public static final String WEEK_MODE_VARIABLE = "variable"; 66 public static final String WEEK_MODE_VARIABLE = "variable";
  67 + public static final String DEFAULT_WEEK_MODE = WEEK_MODE_FIXED;
  68 + public static final boolean DEFAULT_SHOW_WEEKENDS = true;
  69 + public static final boolean DEFAULT_RTL = false;
  70 + public static final int DEFAULT_FIRST_DAY = Calendar.SUNDAY;
  71 + public static final double DEFAULT_ASPECT_RATIO = 1.35;
  72 + public static final boolean DEFAULT_ALL_DAY_SLOT = true;
  73 + public static final String DEFAULT_AXIS_FORMAT = "h(:mm)tt";
  74 + public static final int DEFAULT_SLOT_MINUTES = 30;
  75 + public static final int DEFAULT_EVENT_MINUTES = 120;
  76 + public static final int DEFAULT_FIRST_HOUR = 6;
  77 + public static final String DEFAULT_MIN_TIME = "0";
  78 + public static final String DEFAULT_MAX_TIME = "24";
  79 + public static final boolean DEFAULT_EDITABLE = false;
  80 + public static final boolean DEFAULT_SELECTABLE = false;
  81 + public static final boolean DEFAULT_SELECT_HELPER = false;
  82 + public static final boolean DEFAULT_UNSELECT_AUTO = true;
  83 + public static final String DEFAULT_UNSELECT_CANCEL = "";
  84 + public static final boolean DEFAULT_DISABLE_DRAGGING = false;
  85 + public static final boolean DEFAULT_DISABLE_RESIZING = false;
  86 + public static final int DEFAULT_DRAG_REVERT_DURATION = 500;
  87 + public static final double DEFAULT_DRAG_OPACITY = .3;
  88 + public static final boolean DEFAULT_ALL_DAY_DEFAULT = true;
47 private DataModel model; 89 private DataModel model;
48 90
49 public abstract Object getValue(); 91 public abstract Object getValue();
@@ -174,123 +216,109 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm @@ -174,123 +216,109 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
174 216
175 public abstract void setDragRevertDuration(Integer dragRevertDuration); 217 public abstract void setDragRevertDuration(Integer dragRevertDuration);
176 218
177 - public abstract Double getDragOpacity();  
178 -  
179 - public abstract void setDragOpacity(Double dragOpacity);  
180 -  
181 public abstract String getStyleClass(); 219 public abstract String getStyleClass();
182 220
183 public abstract void setStyleClass(String styleClass); 221 public abstract void setStyleClass(String styleClass);
184 222
185 - public abstract String getOnItemSelected();  
186 -  
187 - public abstract void setOnItemSelected(String onItemSelect);  
188 -  
189 - public abstract String getOnItemSelectedComplete(); 223 + public abstract String getOnbeforeitemselect();
190 224
191 - public abstract void setOnItemSelectedComplete(String onItemSelectedComplete); 225 + public abstract void setOnbeforeitemselect(String onbeforeitemselect);
192 226
193 - public abstract String getOnItemDragStart(); 227 + public abstract String getOnitemselect();
194 228
195 - public abstract void setOnItemDragStart(String onItemDragStart); 229 + public abstract void setOnitemselect(String onitemselect);
196 230
197 - public abstract String getOnItemDragStop(); 231 + public abstract String getOnitemdragstart();
198 232
199 - public abstract void setOnItemDragStop(String onItemDragStop); 233 + public abstract void setOnitemdragstart(String onitemdragstop);
200 234
201 - public abstract String getOnItemDrop(); 235 + public abstract String getOnitemdragstop();
202 236
203 - public abstract void setOnItemDrop(String onItemDrop); 237 + public abstract void setOnitemdragstop(String onitemdragstop);
204 238
205 - public abstract String getOnItemDropComplete(); 239 + public abstract String getOnbeforeitemdrop();
206 240
207 - public abstract void setOnItemDropComplete(String onItemDropComplete); 241 + public abstract void setOnbeforeitemdrop(String onbeforeitemdrop);
208 242
209 - public abstract String getOnItemResizeStart(); 243 + public abstract String getOnitemdrop();
210 244
211 - public abstract void setOnItemResizeStart(String onItemResizeStart); 245 + public abstract void setOnitemdrop(String onitemdrop);
212 246
213 - public abstract String getOnItemResizeStop(); 247 + public abstract String getOnitemresizestart();
214 248
215 - public abstract void setOnItemResizeStop(String onItemResizeStop); 249 + public abstract void setOnitemresizestart(String onitemresizestart);
216 250
217 - public abstract String getOnItemResized(); 251 + public abstract String getOnitemresizestop();
218 252
219 - public abstract void setOnItemResized(String onItemMouseover); 253 + public abstract void setOnitemresizestop(String onitemresizestop);
220 254
221 - public abstract String getOnItemResizedComplete(); 255 + public abstract String getOnbeforeitemresize();
222 256
223 - public abstract void setOnItemResizedComplete(String setOnItemResizedComplete); 257 + public abstract void setOnbeforeitemresize(String onbeforeitemresize);
224 258
225 - public abstract String getOnItemMouseover(); 259 + public abstract String getOnitemresize();
226 260
227 - public abstract void setOnItemMouseover(String onItemMouseover); 261 + public abstract void setOnitemresize(String onitemresize);
228 262
229 - public abstract String getOnItemMouseout(); 263 + public abstract String getOnitemmouseover();
230 264
231 - public abstract void setOnItemMouseout(String onItemMouseout); 265 + public abstract void setOnitemmouseover(String onitemmouseover);
232 266
233 - public abstract String getOnViewChanged(); 267 + public abstract String getOnitemmouseout();
234 268
235 - public abstract void setOnViewChanged(String onViewChanged); 269 + public abstract void setOnitemmouseout(String onitemmouseout);
236 270
237 - public abstract String getOnViewChangedComplete(); 271 + public abstract String getOnviewchange();
238 272
239 - public abstract void setOnViewChangedComplete(String onViewDisplayComplete); 273 + public abstract void setOnviewchange(String onviewchange);
240 274
241 - public abstract String getOnDateSelected(); 275 + public abstract String getOnbeforedateselect();
242 276
243 - public abstract void setOnDateSelected(String onDaySelected); 277 + public abstract void setOnbeforedateselect(String onbeforedateselect);
244 278
245 - public abstract String getOnDateSelectedComplete(); 279 + public abstract String getOndateselect();
246 280
247 - public abstract void setOnDateSelectedComplete(String setOnDateSelectedComplete); 281 + public abstract void setOndateselect(String ondateselect);
248 282
249 - public abstract String getOnDateRangeSelected(); 283 + public abstract String getOnbeforedaterangeselect();
250 284
251 - public abstract void setOnDateRangeSelected(String onDateRangeSelected); 285 + public abstract void setOnbeforedaterangeselect(String onbeforedaterangeselect);
252 286
253 - public abstract String getOnDateRangeSelectedComplete(); 287 + public abstract String getOndaterangeselect();
254 288
255 - public abstract void setOnDateRangeSelectedComplete(String onDateRangeSelectedComplete); 289 + public abstract void setOndaterangeselect(String ondaterangeselect);
256 290
257 - public abstract String getOnDateRangeChanged(); 291 + public abstract String getOndaterangechange();
258 292
259 - public abstract void setOnDateRangeChanged(String onDateRangeChanged);  
260 -  
261 - public abstract String getOnDateRangeChangedComplete();  
262 -  
263 - public abstract void setOnDateRangeChangedComplete(String onDateRangeChangedComplete);  
264 -  
265 - // TODO do we use MethodBinding or MethodExpression? 293 + public abstract void setOndaterangechange(String ondaterangechange);
266 294
267 public abstract MethodBinding getItemMoveListener(); 295 public abstract MethodBinding getItemMoveListener();
268 296
269 public abstract void setItemMoveListener(MethodBinding listener); 297 public abstract void setItemMoveListener(MethodBinding listener);
270 298
271 - public abstract MethodBinding getItemSelectedListener(); 299 + public abstract MethodBinding getItemSelectListener();
272 300
273 - public abstract void setItemSelectedListener(MethodBinding listener); 301 + public abstract void setItemSelectListener(MethodBinding listener);
274 302
275 public abstract MethodBinding getItemResizeListener(); 303 public abstract MethodBinding getItemResizeListener();
276 304
277 public abstract void setItemResizeListener(MethodBinding listener); 305 public abstract void setItemResizeListener(MethodBinding listener);
278 306
279 - public abstract MethodBinding getViewChangedListener(); 307 + public abstract MethodBinding getViewChangeListener();
280 308
281 - public abstract void setViewChangedListener(MethodBinding listener); 309 + public abstract void setViewChangeListener(MethodBinding listener);
282 310
283 - public abstract MethodBinding getDateRangeChangedListener(); 311 + public abstract MethodBinding getDateRangeChangeListener();
284 312
285 - public abstract void setDateRangeChangedListener(MethodBinding listener); 313 + public abstract void setDateRangeChangeListener(MethodBinding listener);
286 314
287 - public abstract MethodBinding getDateRangeSelectedListener(); 315 + public abstract MethodBinding getDateRangeSelectListener();
288 316
289 - public abstract void setDateRangeSelectedListener(MethodBinding listener); 317 + public abstract void setDateRangeSelectListener(MethodBinding listener);
290 318
291 - public abstract MethodBinding getDateSelectedListener(); 319 + public abstract MethodBinding getDateSelectListener();
292 320
293 - public abstract void setDateSelectedListener(MethodBinding listener); 321 + public abstract void setDateSelectListener(MethodBinding listener);
294 322
295 public abstract String getWidgetVar(); 323 public abstract String getWidgetVar();
296 324
@@ -303,10 +331,10 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm @@ -303,10 +331,10 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
303 * listeners. 331 * listeners.
304 * In case of non vetoable events the order of broadcast is reverse. 332 * In case of non vetoable events the order of broadcast is reverse.
305 * Vetoable events are: ScheduleItemMoveEvent, ScheduleItemResizeEvent 333 * Vetoable events are: ScheduleItemMoveEvent, ScheduleItemResizeEvent
306 - * Non-vetoable events: ScheduleDateRangeChangedEvent, ScheduleItemSelectedEvent,  
307 - * ScheduleViewChangedEvent, ScheduleDateSelectedEvent,  
308 - * ScheduleDateRangeSelectedEvent  
309 - * In case of ScheduleDateRangeChangedEvent new items are returned 334 + * Non-vetoable events: ScheduleDateRangeChangeEvent, ScheduleItemSelectEvent,
  335 + * ScheduleViewChangeEvent, ScheduleDateSelectEvent,
  336 + * ScheduleDateRangeSelectEvent
  337 + * In case of ScheduleDateRangeChangeEvent new items are returned
310 * via response data map of ajaxContext. 338 * via response data map of ajaxContext.
311 * In case of ScheduleItemMoveEvent and ScheduleItemResizeEvent, the 339 * In case of ScheduleItemMoveEvent and ScheduleItemResizeEvent, the
312 * decision if veto was raised is sent back to client via response data map 340 * decision if veto was raised is sent back to client via response data map
@@ -318,13 +346,13 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm @@ -318,13 +346,13 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
318 */ 346 */
319 @Override 347 @Override
320 public void broadcast(FacesEvent event) throws AbortProcessingException { 348 public void broadcast(FacesEvent event) throws AbortProcessingException {
321 - if (event instanceof ScheduleDateRangeChangedEvent) { 349 + if (event instanceof ScheduleDateRangeChangeEvent) {
322 super.broadcast(event); 350 super.broadcast(event);
323 new AjaxEvent(this).queue(); 351 new AjaxEvent(this).queue();
324 - ScheduleDateRangeChangedEvent calendarAjaxEvent = (ScheduleDateRangeChangedEvent) event; 352 + ScheduleDateRangeChangeEvent calendarAjaxEvent = (ScheduleDateRangeChangeEvent) event;
325 FacesContext facesContext = getFacesContext(); 353 FacesContext facesContext = getFacesContext();
326 AjaxContext ajaxContext = AjaxContext.getCurrentInstance(facesContext); 354 AjaxContext ajaxContext = AjaxContext.getCurrentInstance(facesContext);
327 - MethodBinding expression = getDateRangeChangedListener(); 355 + MethodBinding expression = getDateRangeChangeListener();
328 if (expression != null) { 356 if (expression != null) {
329 expression.invoke(facesContext, new Object[]{event}); 357 expression.invoke(facesContext, new Object[]{event});
330 } 358 }
@@ -357,35 +385,35 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm @@ -357,35 +385,35 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
357 ajaxContext.getResponseDataMap().put("_ajax:scheduleData", allow); 385 ajaxContext.getResponseDataMap().put("_ajax:scheduleData", allow);
358 super.broadcast(event); 386 super.broadcast(event);
359 new AjaxEvent(this).queue(); 387 new AjaxEvent(this).queue();
360 - } else if (event instanceof ScheduleItemSelectedEvent) { 388 + } else if (event instanceof ScheduleItemSelectEvent) {
361 super.broadcast(event); 389 super.broadcast(event);
362 new AjaxEvent(this).queue(); 390 new AjaxEvent(this).queue();
363 FacesContext facesContext = getFacesContext(); 391 FacesContext facesContext = getFacesContext();
364 - MethodBinding expression = getItemSelectedListener(); 392 + MethodBinding expression = getItemSelectListener();
365 if (expression != null) { 393 if (expression != null) {
366 expression.invoke(facesContext, new Object[]{event}); 394 expression.invoke(facesContext, new Object[]{event});
367 } 395 }
368 - } else if (event instanceof ScheduleViewChangedEvent) { 396 + } else if (event instanceof ScheduleViewChangeEvent) {
369 super.broadcast(event); 397 super.broadcast(event);
370 new AjaxEvent(this).queue(); 398 new AjaxEvent(this).queue();
371 FacesContext facesContext = getFacesContext(); 399 FacesContext facesContext = getFacesContext();
372 - MethodBinding expression = getViewChangedListener(); 400 + MethodBinding expression = getViewChangeListener();
373 if (expression != null) { 401 if (expression != null) {
374 expression.invoke(facesContext, new Object[]{event}); 402 expression.invoke(facesContext, new Object[]{event});
375 } 403 }
376 - } else if (event instanceof ScheduleDateSelectedEvent) { 404 + } else if (event instanceof ScheduleDateSelectEvent) {
377 super.broadcast(event); 405 super.broadcast(event);
378 new AjaxEvent(this).queue(); 406 new AjaxEvent(this).queue();
379 FacesContext facesContext = getFacesContext(); 407 FacesContext facesContext = getFacesContext();
380 - MethodBinding expression = getDateSelectedListener(); 408 + MethodBinding expression = getDateSelectListener();
381 if (expression != null) { 409 if (expression != null) {
382 expression.invoke(facesContext, new Object[]{event}); 410 expression.invoke(facesContext, new Object[]{event});
383 } 411 }
384 - } else if (event instanceof ScheduleDateRangeSelectedEvent) { 412 + } else if (event instanceof ScheduleDateRangeSelectEvent) {
385 super.broadcast(event); 413 super.broadcast(event);
386 new AjaxEvent(this).queue(); 414 new AjaxEvent(this).queue();
387 FacesContext facesContext = getFacesContext(); 415 FacesContext facesContext = getFacesContext();
388 - MethodBinding expression = getDateRangeSelectedListener(); 416 + MethodBinding expression = getDateRangeSelectListener();
389 if (expression != null) { 417 if (expression != null) {
390 expression.invoke(facesContext, new Object[]{event}); 418 expression.invoke(facesContext, new Object[]{event});
391 } 419 }
@@ -406,7 +434,7 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm @@ -406,7 +434,7 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
406 // XXX - use more pourful search, as in h:outputLabel 434 // XXX - use more pourful search, as in h:outputLabel
407 // component. 435 // component.
408 UIComponent focusComponent = RendererUtils.getInstance(). 436 UIComponent focusComponent = RendererUtils.getInstance().
409 - findComponentFor(this, focus); 437 + findComponentFor(this, focus);
410 if (null != focusComponent) { 438 if (null != focusComponent) {
411 focus = focusComponent.getClientId(context); 439 focus = focusComponent.getClientId(context);
412 } 440 }
@@ -541,7 +569,7 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm @@ -541,7 +569,7 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
541 if (VIEW_MONTH.equals(view)) { 569 if (VIEW_MONTH.equals(view)) {
542 if (WEEK_MODE_FIXED.equals(getWeekMode(schedule))) { 570 if (WEEK_MODE_FIXED.equals(getWeekMode(schedule))) {
543 calendar.setTime(getFirstDisplayedDay(schedule)); 571 calendar.setTime(getFirstDisplayedDay(schedule));
544 - calendar.add(Calendar.DAY_OF_YEAR, 7 * 6); 572 + calendar.add(Calendar.DAY_OF_YEAR, 42);
545 } else { 573 } else {
546 Date date = schedule.getDate(); 574 Date date = schedule.getDate();
547 if (date != null) { 575 if (date != null) {
@@ -597,37 +625,28 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm @@ -597,37 +625,28 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
597 */ 625 */
598 public static boolean isShowWeekends(UISchedule schedule) { 626 public static boolean isShowWeekends(UISchedule schedule) {
599 Boolean showWeekends = schedule.getShowWeekends(); 627 Boolean showWeekends = schedule.getShowWeekends();
600 - return showWeekends == null || schedule.getShowWeekends(); 628 + return showWeekends == null ? UISchedule.DEFAULT_SHOW_WEEKENDS : schedule.getShowWeekends();
601 } 629 }
602 630
603 public static int getFirstDay(UISchedule schedule) { 631 public static int getFirstDay(UISchedule schedule) {
604 Integer firstDay = schedule.getFirstDay(); 632 Integer firstDay = schedule.getFirstDay();
605 - if (firstDay == null) {  
606 - firstDay = Calendar.SUNDAY;  
607 - }  
608 - return firstDay; 633 + return firstDay == null ? UISchedule.DEFAULT_FIRST_DAY : firstDay;
609 } 634 }
610 635
611 public static String getWeekMode(UISchedule schedule) { 636 public static String getWeekMode(UISchedule schedule) {
612 String weekMode = schedule.getWeekMode(); 637 String weekMode = schedule.getWeekMode();
613 - if (weekMode == null) {  
614 - weekMode = WEEK_MODE_FIXED;  
615 - }  
616 - return weekMode; 638 + return weekMode == null ? UISchedule.DEFAULT_WEEK_MODE : weekMode;
617 } 639 }
618 640
619 public static String getView(UISchedule schedule) { 641 public static String getView(UISchedule schedule) {
620 String view = schedule.getView(); 642 String view = schedule.getView();
621 - if (view == null) {  
622 - view = VIEW_MONTH;  
623 - }  
624 - return view; 643 + return view == null ? UISchedule.DEFAULT_VIEW : view;
625 } 644 }
626 645
627 protected DataModel getDataModel() { 646 protected DataModel getDataModel() {
628 // Return any previously cached DataModel instance 647 // Return any previously cached DataModel instance
629 if (this.model != null) { 648 if (this.model != null) {
630 - return (model); 649 + return model;
631 } 650 }
632 651
633 // Synthesize a DataModel around our current value if possible 652 // Synthesize a DataModel around our current value if possible
@@ -647,7 +666,7 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm @@ -647,7 +666,7 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
647 } else { 666 } else {
648 setDataModel(new ScalarDataModel(current)); 667 setDataModel(new ScalarDataModel(current));
649 } 668 }
650 - return (model); 669 + return model;
651 670
652 } 671 }
653 672
@@ -655,16 +674,16 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm @@ -655,16 +674,16 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
655 this.model = model; 674 this.model = model;
656 } 675 }
657 676
658 - public void addItemSelectedListener(ScheduleItemSelectedListener listener) { 677 + public void addItemSelectListener(ScheduleItemSelectListener listener) {
659 addFacesListener(listener); 678 addFacesListener(listener);
660 } 679 }
661 680
662 - public void removeItemSelectedListener(ScheduleItemSelectedListener listener) { 681 + public void removeItemSelectListener(ScheduleItemSelectListener listener) {
663 removeFacesListener(listener); 682 removeFacesListener(listener);
664 } 683 }
665 684
666 - public ScheduleItemSelectedListener[] getItemSelectedListeners() {  
667 - return (ScheduleItemSelectedListener[]) getFacesListeners(ScheduleItemSelectedListener.class); 685 + public ScheduleItemSelectListener[] getItemSelectListeners() {
  686 + return (ScheduleItemSelectListener[]) getFacesListeners(ScheduleItemSelectListener.class);
668 } 687 }
669 688
670 public void addItemMoveListener(ScheduleItemMoveListener listener) { 689 public void addItemMoveListener(ScheduleItemMoveListener listener) {
@@ -691,51 +710,51 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm @@ -691,51 +710,51 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
691 return (ScheduleItemResizeListener[]) getFacesListeners(ScheduleItemResizeListener.class); 710 return (ScheduleItemResizeListener[]) getFacesListeners(ScheduleItemResizeListener.class);
692 } 711 }
693 712
694 - public void addViewChangedListener(ScheduleViewChangedListener listener) { 713 + public void addViewChangeListener(ScheduleViewChangeListener listener) {
695 addFacesListener(listener); 714 addFacesListener(listener);
696 } 715 }
697 716
698 - public void removeViewChangedListener(ScheduleViewChangedListener listener) { 717 + public void removeViewChangeListener(ScheduleViewChangeListener listener) {
699 removeFacesListener(listener); 718 removeFacesListener(listener);
700 } 719 }
701 720
702 - public ScheduleViewChangedListener[] getViewChangedListeners() {  
703 - return (ScheduleViewChangedListener[]) getFacesListeners(ScheduleViewChangedListener.class); 721 + public ScheduleViewChangeListener[] getViewChangeListeners() {
  722 + return (ScheduleViewChangeListener[]) getFacesListeners(ScheduleViewChangeListener.class);
704 } 723 }
705 724
706 - public void addDateRangeChangedListener(ScheduleDateRangeChangedListener listener) { 725 + public void addDateRangeChangeListener(ScheduleDateRangeChangeListener listener) {
707 addFacesListener(listener); 726 addFacesListener(listener);
708 } 727 }
709 728
710 - public void removeDateRangeChangedListener(ScheduleDateRangeChangedListener listener) { 729 + public void removeDateRangeChangeListener(ScheduleDateRangeChangeListener listener) {
711 removeFacesListener(listener); 730 removeFacesListener(listener);
712 } 731 }
713 732
714 - public ScheduleDateRangeChangedListener[] getDateRangeChangedListeners() {  
715 - return (ScheduleDateRangeChangedListener[]) getFacesListeners(ScheduleDateRangeChangedListener.class); 733 + public ScheduleDateRangeChangeListener[] getDateRangeChangeListeners() {
  734 + return (ScheduleDateRangeChangeListener[]) getFacesListeners(ScheduleDateRangeChangeListener.class);
716 } 735 }
717 736
718 - public void addDateRangeSelectedListener(ScheduleDateRangeSelectedListener listener) { 737 + public void addDateRangeSelectListener(ScheduleDateRangeSelectListener listener) {
719 addFacesListener(listener); 738 addFacesListener(listener);
720 } 739 }
721 740
722 - public void removeDateRangeSelectedListener(ScheduleDateRangeSelectedListener listener) { 741 + public void removeDateRangeSelectListener(ScheduleDateRangeSelectListener listener) {
723 removeFacesListener(listener); 742 removeFacesListener(listener);
724 } 743 }
725 744
726 - public ScheduleDateRangeSelectedListener[] getDateRangeSelectedListeners() {  
727 - return (ScheduleDateRangeSelectedListener[]) getFacesListeners(ScheduleDateRangeSelectedListener.class); 745 + public ScheduleDateRangeSelectListener[] getDateRangeSelectListeners() {
  746 + return (ScheduleDateRangeSelectListener[]) getFacesListeners(ScheduleDateRangeSelectListener.class);
728 } 747 }
729 748
730 - public void addDateSelectedListener(ScheduleDateSelectedListener listener) { 749 + public void addDateSelectListener(ScheduleDateSelectListener listener) {
731 addFacesListener(listener); 750 addFacesListener(listener);
732 } 751 }
733 752
734 - public void removeDateSelectedListener(ScheduleDateSelectedListener listener) { 753 + public void removeDateSelectListener(ScheduleDateSelectListener listener) {
735 removeFacesListener(listener); 754 removeFacesListener(listener);
736 } 755 }
737 756
738 - public ScheduleDateSelectedListener[] getDateSelectedListeners() {  
739 - return (ScheduleDateSelectedListener[]) getFacesListeners(ScheduleDateSelectedListener.class); 757 + public ScheduleDateSelectListener[] getDateSelectListeners() {
  758 + return (ScheduleDateSelectListener[]) getFacesListeners(ScheduleDateSelectListener.class);
740 } 759 }
741 } 760 }
@@ -10,6 +10,8 @@ public abstract class UIScheduleItem extends UIComponentBase { @@ -10,6 +10,8 @@ public abstract class UIScheduleItem extends UIComponentBase {
10 10
11 public static final String COMPONENT_TYPE = "org.richfaces.ScheduleItem"; 11 public static final String COMPONENT_TYPE = "org.richfaces.ScheduleItem";
12 public static final String COMPONENT_FAMILY = "org.richfaces.Schedule"; 12 public static final String COMPONENT_FAMILY = "org.richfaces.Schedule";
  13 + public static final boolean DEFAULT_ALL_DAY = true;
  14 + public static final boolean DEFAULT_EDITABLE = UISchedule.DEFAULT_EDITABLE;
13 15
14 public abstract String getStyleClass(); 16 public abstract String getStyleClass();
15 17
@@ -5,12 +5,12 @@ import javax.faces.event.FacesEvent; @@ -5,12 +5,12 @@ import javax.faces.event.FacesEvent;
5 import javax.faces.event.FacesListener; 5 import javax.faces.event.FacesListener;
6 import java.util.Date; 6 import java.util.Date;
7 7
8 -public class ScheduleDateRangeChangedEvent extends FacesEvent { 8 +public class ScheduleDateRangeChangeEvent extends FacesEvent {
9 9
10 private Date startDate; 10 private Date startDate;
11 private Date endDate; 11 private Date endDate;
12 12
13 - public ScheduleDateRangeChangedEvent(UIComponent component, Date startDate, Date endDate) { 13 + public ScheduleDateRangeChangeEvent(UIComponent component, Date startDate, Date endDate) {
14 super(component); 14 super(component);
15 this.startDate = startDate; 15 this.startDate = startDate;
16 this.endDate = endDate; 16 this.endDate = endDate;
@@ -31,11 +31,11 @@ public class ScheduleDateRangeChangedEvent extends FacesEvent { @@ -31,11 +31,11 @@ public class ScheduleDateRangeChangedEvent extends FacesEvent {
31 31
32 @Override 32 @Override
33 public boolean isAppropriateListener(FacesListener listener) { 33 public boolean isAppropriateListener(FacesListener listener) {
34 - return listener instanceof ScheduleDateRangeChangedListener; 34 + return listener instanceof ScheduleDateRangeChangeListener;
35 } 35 }
36 36
37 @Override 37 @Override
38 public void processListener(FacesListener listener) { 38 public void processListener(FacesListener listener) {
39 - ((ScheduleDateRangeChangedListener) listener).dateRangeChanged(this); 39 + ((ScheduleDateRangeChangeListener) listener).dateRangeChanged(this);
40 } 40 }
41 } 41 }
@@ -2,7 +2,7 @@ package org.richfaces.component.event; @@ -2,7 +2,7 @@ package org.richfaces.component.event;
2 2
3 import javax.faces.event.FacesListener; 3 import javax.faces.event.FacesListener;
4 4
5 -public interface ScheduleDateRangeChangedListener extends FacesListener { 5 +public interface ScheduleDateRangeChangeListener extends FacesListener {
6 6
7 - void dateRangeChanged(ScheduleDateRangeChangedEvent event); 7 + void dateRangeChanged(ScheduleDateRangeChangeEvent event);
8 } 8 }
@@ -5,13 +5,13 @@ import javax.faces.event.FacesEvent; @@ -5,13 +5,13 @@ import javax.faces.event.FacesEvent;
5 import javax.faces.event.FacesListener; 5 import javax.faces.event.FacesListener;
6 import java.util.Date; 6 import java.util.Date;
7 7
8 -public class ScheduleDateRangeSelectedEvent extends FacesEvent { 8 +public class ScheduleDateRangeSelectEvent extends FacesEvent {
9 9
10 private Date startDate; 10 private Date startDate;
11 private Date endDate; 11 private Date endDate;
12 private boolean allDay; 12 private boolean allDay;
13 13
14 - public ScheduleDateRangeSelectedEvent(UIComponent component, Date startDate, Date endDate, boolean allDay) { 14 + public ScheduleDateRangeSelectEvent(UIComponent component, Date startDate, Date endDate, boolean allDay) {
15 super(component); 15 super(component);
16 this.startDate = startDate; 16 this.startDate = startDate;
17 this.endDate = endDate; 17 this.endDate = endDate;
@@ -19,11 +19,11 @@ public class ScheduleDateRangeSelectedEvent extends FacesEvent { @@ -19,11 +19,11 @@ public class ScheduleDateRangeSelectedEvent extends FacesEvent {
19 } 19 }
20 20
21 public boolean isAppropriateListener(FacesListener facesListener) { 21 public boolean isAppropriateListener(FacesListener facesListener) {
22 - return facesListener instanceof ScheduleDateSelectedListener; 22 + return facesListener instanceof ScheduleDateSelectListener;
23 } 23 }
24 24
25 public void processListener(FacesListener facesListener) { 25 public void processListener(FacesListener facesListener) {
26 - ((ScheduleDateRangeSelectedListener) facesListener).dateRangeSelected(this); 26 + ((ScheduleDateRangeSelectListener) facesListener).dateRangeSelected(this);
27 } 27 }
28 28
29 public Date getStartDate() { 29 public Date getStartDate() {
@@ -2,7 +2,7 @@ package org.richfaces.component.event; @@ -2,7 +2,7 @@ package org.richfaces.component.event;
2 2
3 import javax.faces.event.FacesListener; 3 import javax.faces.event.FacesListener;
4 4
5 -public interface ScheduleDateRangeSelectedListener extends FacesListener { 5 +public interface ScheduleDateRangeSelectListener extends FacesListener {
6 6
7 - void dateRangeSelected(ScheduleDateRangeSelectedEvent event); 7 + void dateRangeSelected(ScheduleDateRangeSelectEvent event);
8 } 8 }
@@ -5,23 +5,23 @@ import javax.faces.event.FacesEvent; @@ -5,23 +5,23 @@ import javax.faces.event.FacesEvent;
5 import javax.faces.event.FacesListener; 5 import javax.faces.event.FacesListener;
6 import java.util.Date; 6 import java.util.Date;
7 7
8 -public class ScheduleDateSelectedEvent extends FacesEvent { 8 +public class ScheduleDateSelectEvent extends FacesEvent {
9 9
10 private Date date; 10 private Date date;
11 private boolean allDay; 11 private boolean allDay;
12 12
13 - public ScheduleDateSelectedEvent(UIComponent component, Date date, boolean allDay) { 13 + public ScheduleDateSelectEvent(UIComponent component, Date date, boolean allDay) {
14 super(component); 14 super(component);
15 this.date = date; 15 this.date = date;
16 this.allDay = allDay; 16 this.allDay = allDay;
17 } 17 }
18 18
19 public boolean isAppropriateListener(FacesListener facesListener) { 19 public boolean isAppropriateListener(FacesListener facesListener) {
20 - return facesListener instanceof ScheduleDateSelectedListener; 20 + return facesListener instanceof ScheduleDateSelectListener;
21 } 21 }
22 22
23 public void processListener(FacesListener facesListener) { 23 public void processListener(FacesListener facesListener) {
24 - ((ScheduleDateSelectedListener) facesListener).dateSelected(this); 24 + ((ScheduleDateSelectListener) facesListener).dateSelected(this);
25 } 25 }
26 26
27 public Date getDate() { 27 public Date getDate() {
@@ -2,7 +2,7 @@ package org.richfaces.component.event; @@ -2,7 +2,7 @@ package org.richfaces.component.event;
2 2
3 import javax.faces.event.FacesListener; 3 import javax.faces.event.FacesListener;
4 4
5 -public interface ScheduleDateSelectedListener extends FacesListener { 5 +public interface ScheduleDateSelectListener extends FacesListener {
6 6
7 - void dateSelected(ScheduleDateSelectedEvent event); 7 + void dateSelected(ScheduleDateSelectEvent event);
8 } 8 }
@@ -45,6 +45,7 @@ public class ScheduleItemMoveEvent extends FacesEvent { @@ -45,6 +45,7 @@ public class ScheduleItemMoveEvent extends FacesEvent {
45 45
46 @Override 46 @Override
47 public String toString() { 47 public String toString() {
48 - return getClass().getSimpleName() + "[eventId=" + eventId + ";dayDelta=" + dayDelta + ";minuteDelta=" + minuteDelta + ";allDay=" + allDay + "]"; 48 + return getClass().getSimpleName() + "[eventId=" + eventId + ";dayDelta=" + dayDelta
  49 + + ";minuteDelta=" + minuteDelta + ";allDay=" + allDay + "]";
49 } 50 }
50 } 51 }
@@ -39,6 +39,7 @@ public class ScheduleItemResizeEvent extends FacesEvent { @@ -39,6 +39,7 @@ public class ScheduleItemResizeEvent extends FacesEvent {
39 39
40 @Override 40 @Override
41 public String toString() { 41 public String toString() {
42 - return getClass().getSimpleName() + "[eventId=" + eventId + ";dayDelta=" + dayDelta + ";minuteDelta=" + minuteDelta + "]"; 42 + return getClass().getSimpleName() + "[eventId=" + eventId + ";dayDelta=" + dayDelta
  43 + + ";minuteDelta=" + minuteDelta + "]";
43 } 44 }
44 } 45 }
@@ -4,21 +4,21 @@ import javax.faces.component.UIComponent; @@ -4,21 +4,21 @@ import javax.faces.component.UIComponent;
4 import javax.faces.event.FacesEvent; 4 import javax.faces.event.FacesEvent;
5 import javax.faces.event.FacesListener; 5 import javax.faces.event.FacesListener;
6 6
7 -public class ScheduleItemSelectedEvent extends FacesEvent { 7 +public class ScheduleItemSelectEvent extends FacesEvent {
8 8
9 private String eventId; 9 private String eventId;
10 10
11 - public ScheduleItemSelectedEvent(UIComponent component, String eventId) { 11 + public ScheduleItemSelectEvent(UIComponent component, String eventId) {
12 super(component); 12 super(component);
13 this.eventId = eventId; 13 this.eventId = eventId;
14 } 14 }
15 15
16 public boolean isAppropriateListener(FacesListener facesListener) { 16 public boolean isAppropriateListener(FacesListener facesListener) {
17 - return facesListener instanceof ScheduleItemSelectedListener; 17 + return facesListener instanceof ScheduleItemSelectListener;
18 } 18 }
19 19
20 public void processListener(FacesListener facesListener) { 20 public void processListener(FacesListener facesListener) {
21 - ((ScheduleItemSelectedListener) facesListener).itemSelected(this); 21 + ((ScheduleItemSelectListener) facesListener).itemSelected(this);
22 } 22 }
23 23
24 public String getEventId() { 24 public String getEventId() {
@@ -2,7 +2,7 @@ package org.richfaces.component.event; @@ -2,7 +2,7 @@ package org.richfaces.component.event;
2 2
3 import javax.faces.event.FacesListener; 3 import javax.faces.event.FacesListener;
4 4
5 -public interface ScheduleItemSelectedListener extends FacesListener { 5 +public interface ScheduleItemSelectListener extends FacesListener {
6 6
7 - public void itemSelected(ScheduleItemSelectedEvent event); 7 + public void itemSelected(ScheduleItemSelectEvent event);
8 } 8 }
@@ -2,11 +2,11 @@ package org.richfaces.component.event; @@ -2,11 +2,11 @@ package org.richfaces.component.event;
2 2
3 public interface ScheduleListenerEventsProducer { 3 public interface ScheduleListenerEventsProducer {
4 4
5 - void addItemSelectedListener(ScheduleItemSelectedListener listener); 5 + void addItemSelectListener(ScheduleItemSelectListener listener);
6 6
7 - void removeItemSelectedListener(ScheduleItemSelectedListener listener); 7 + void removeItemSelectListener(ScheduleItemSelectListener listener);
8 8
9 - ScheduleItemSelectedListener[] getItemSelectedListeners(); 9 + ScheduleItemSelectListener[] getItemSelectListeners();
10 10
11 void addItemMoveListener(ScheduleItemMoveListener listener); 11 void addItemMoveListener(ScheduleItemMoveListener listener);
12 12
@@ -20,27 +20,27 @@ public interface ScheduleListenerEventsProducer { @@ -20,27 +20,27 @@ public interface ScheduleListenerEventsProducer {
20 20
21 ScheduleItemResizeListener[] getItemResizeListeners(); 21 ScheduleItemResizeListener[] getItemResizeListeners();
22 22
23 - void addViewChangedListener(ScheduleViewChangedListener listener); 23 + void addViewChangeListener(ScheduleViewChangeListener listener);
24 24
25 - void removeViewChangedListener(ScheduleViewChangedListener listener); 25 + void removeViewChangeListener(ScheduleViewChangeListener listener);
26 26
27 - ScheduleViewChangedListener[] getViewChangedListeners(); 27 + ScheduleViewChangeListener[] getViewChangeListeners();
28 28
29 - void addDateRangeChangedListener(ScheduleDateRangeChangedListener listener); 29 + void addDateRangeChangeListener(ScheduleDateRangeChangeListener listener);
30 30
31 - void removeDateRangeChangedListener(ScheduleDateRangeChangedListener listener); 31 + void removeDateRangeChangeListener(ScheduleDateRangeChangeListener listener);
32 32
33 - ScheduleDateRangeChangedListener[] getDateRangeChangedListeners(); 33 + ScheduleDateRangeChangeListener[] getDateRangeChangeListeners();
34 34
35 - void addDateRangeSelectedListener(ScheduleDateRangeSelectedListener listener); 35 + void addDateRangeSelectListener(ScheduleDateRangeSelectListener listener);
36 36
37 - void removeDateRangeSelectedListener(ScheduleDateRangeSelectedListener listener); 37 + void removeDateRangeSelectListener(ScheduleDateRangeSelectListener listener);
38 38
39 - ScheduleDateRangeSelectedListener[] getDateRangeSelectedListeners(); 39 + ScheduleDateRangeSelectListener[] getDateRangeSelectListeners();
40 40
41 - void addDateSelectedListener(ScheduleDateSelectedListener listener); 41 + void addDateSelectListener(ScheduleDateSelectListener listener);
42 42
43 - void removeDateSelectedListener(ScheduleDateSelectedListener listener); 43 + void removeDateSelectListener(ScheduleDateSelectListener listener);
44 44
45 - ScheduleDateSelectedListener[] getDateSelectedListeners(); 45 + ScheduleDateSelectListener[] getDateSelectListeners();
46 } 46 }
@@ -4,21 +4,21 @@ import javax.faces.component.UIComponent; @@ -4,21 +4,21 @@ import javax.faces.component.UIComponent;
4 import javax.faces.event.FacesEvent; 4 import javax.faces.event.FacesEvent;
5 import javax.faces.event.FacesListener; 5 import javax.faces.event.FacesListener;
6 6
7 -public class ScheduleViewChangedEvent extends FacesEvent { 7 +public class ScheduleViewChangeEvent extends FacesEvent {
8 8
9 private String view; 9 private String view;
10 10
11 - public ScheduleViewChangedEvent(UIComponent component, String view) { 11 + public ScheduleViewChangeEvent(UIComponent component, String view) {
12 super(component); 12 super(component);
13 this.view = view; 13 this.view = view;
14 } 14 }
15 15
16 public boolean isAppropriateListener(FacesListener facesListener) { 16 public boolean isAppropriateListener(FacesListener facesListener) {
17 - return facesListener instanceof ScheduleViewChangedListener; 17 + return facesListener instanceof ScheduleViewChangeListener;
18 } 18 }
19 19
20 public void processListener(FacesListener facesListener) { 20 public void processListener(FacesListener facesListener) {
21 - ((ScheduleViewChangedListener) facesListener).viewChanged(this); 21 + ((ScheduleViewChangeListener) facesListener).viewChanged(this);
22 } 22 }
23 23
24 public String getView() { 24 public String getView() {
@@ -2,7 +2,7 @@ package org.richfaces.component.event; @@ -2,7 +2,7 @@ package org.richfaces.component.event;
2 2
3 import javax.faces.event.FacesListener; 3 import javax.faces.event.FacesListener;
4 4
5 -public interface ScheduleViewChangedListener extends FacesListener { 5 +public interface ScheduleViewChangeListener extends FacesListener {
6 6
7 - void viewChanged(ScheduleViewChangedEvent event); 7 + void viewChanged(ScheduleViewChangeEvent event);
8 } 8 }
@@ -6,8 +6,20 @@ import org.ajax4jsf.javascript.JSObject; @@ -6,8 +6,20 @@ import org.ajax4jsf.javascript.JSObject;
6 import org.ajax4jsf.javascript.JSReference; 6 import org.ajax4jsf.javascript.JSReference;
7 import org.ajax4jsf.renderkit.AjaxComponentRendererBase; 7 import org.ajax4jsf.renderkit.AjaxComponentRendererBase;
8 import org.ajax4jsf.renderkit.AjaxRendererUtils; 8 import org.ajax4jsf.renderkit.AjaxRendererUtils;
9 -import org.richfaces.component.*;  
10 -import org.richfaces.component.event.*; 9 +import org.richfaces.component.ScheduleCommonViewAttributes;
  10 +import org.richfaces.component.UISchedule;
  11 +import org.richfaces.component.UIScheduleAgendaDayView;
  12 +import org.richfaces.component.UIScheduleAgendaWeekView;
  13 +import org.richfaces.component.UIScheduleBasicDayView;
  14 +import org.richfaces.component.UIScheduleBasicWeekView;
  15 +import org.richfaces.component.UIScheduleMonthView;
  16 +import org.richfaces.component.event.ScheduleDateRangeChangeEvent;
  17 +import org.richfaces.component.event.ScheduleDateRangeSelectEvent;
  18 +import org.richfaces.component.event.ScheduleDateSelectEvent;
  19 +import org.richfaces.component.event.ScheduleItemMoveEvent;
  20 +import org.richfaces.component.event.ScheduleItemResizeEvent;
  21 +import org.richfaces.component.event.ScheduleItemSelectEvent;
  22 +import org.richfaces.component.event.ScheduleViewChangeEvent;
11 23
12 import javax.faces.FacesException; 24 import javax.faces.FacesException;
13 import javax.faces.component.NamingContainer; 25 import javax.faces.component.NamingContainer;
@@ -15,20 +27,22 @@ import javax.faces.component.UIComponent; @@ -15,20 +27,22 @@ import javax.faces.component.UIComponent;
15 import javax.faces.context.FacesContext; 27 import javax.faces.context.FacesContext;
16 import javax.faces.context.ResponseWriter; 28 import javax.faces.context.ResponseWriter;
17 import java.io.IOException; 29 import java.io.IOException;
18 -import java.util.*; 30 +import java.util.Calendar;
  31 +import java.util.Collections;
  32 +import java.util.Date;
  33 +import java.util.HashMap;
  34 +import java.util.Locale;
  35 +import java.util.Map;
19 36
20 public abstract class ScheduleRendererBase extends AjaxComponentRendererBase { 37 public abstract class ScheduleRendererBase extends AjaxComponentRendererBase {
21 38
22 public static final String ITEM_MOVE_EVENT = "itemMove"; 39 public static final String ITEM_MOVE_EVENT = "itemMove";
23 public static final String ITEM_RESIZE_EVENT = "itemResize"; 40 public static final String ITEM_RESIZE_EVENT = "itemResize";
24 - public static final String ITEM_SELECTED_EVENT = "itemSelected";  
25 - public static final String DATE_RANGE_CHANGED_EVENT = "dateRangeChanged";  
26 - public static final String VIEW_CHANGED_EVENT = "viewChanged";  
27 - public static final String DATE_SELECTED_EVENT = "dateSelected";  
28 - public static final String DATE_RANGE_SELECTED_EVENT = "dateRangeSelected";  
29 - public static final String AJAX_MODE = "ajax";  
30 - public static final String SERVER_MODE = "server";  
31 - public static final String CLIENT_MODE = "client"; 41 + public static final String ITEM_SELECT_EVENT = "itemSelect";
  42 + public static final String DATE_RANGE_CHANGE_EVENT = "dateRangeChange";
  43 + public static final String VIEW_CHANGE_EVENT = "viewChange";
  44 + public static final String DATE_SELECT_EVENT = "dateSelect";
  45 + public static final String DATE_RANGE_SELECT_EVENT = "dateRangeSelect";
32 private static final String CALLBACK = "callback"; 46 private static final String CALLBACK = "callback";
33 private static final String END_DATE_PARAM = "endDate"; 47 private static final String END_DATE_PARAM = "endDate";
34 private static final String START_DATE_PARAM = "startDate"; 48 private static final String START_DATE_PARAM = "startDate";
@@ -38,33 +52,55 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase { @@ -38,33 +52,55 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase {
38 private static final String ALL_DAY_PARAM = "allDay"; 52 private static final String ALL_DAY_PARAM = "allDay";
39 private static final String EVENT_TYPE_PARAM = "eventType"; 53 private static final String EVENT_TYPE_PARAM = "eventType";
40 private static final String VIEW_PARAM = "view"; 54 private static final String VIEW_PARAM = "view";
  55 + private static final Map<String, Object> DEFAULTS;
41 56
42 - protected Object createSubmitEventFunction(FacesContext context, UISchedule component) {  
43 - JSFunction jsFunction;  
44 - Map<String, Object> params = new HashMap<String, Object>();  
45 - params.put(getFieldId(context, component, START_DATE_PARAM), new JSReference(START_DATE_PARAM));  
46 - params.put(getFieldId(context, component, END_DATE_PARAM), new JSReference(END_DATE_PARAM));  
47 - params.put(getFieldId(context, component, ITEM_ID_PARAM), new JSReference(ITEM_ID_PARAM));  
48 - params.put(getFieldId(context, component, DAY_DELTA_PARAM), new JSReference(DAY_DELTA_PARAM));  
49 - params.put(getFieldId(context, component, MINUTE_DELTA_PARAM), new JSReference(MINUTE_DELTA_PARAM));  
50 - params.put(getFieldId(context, component, ALL_DAY_PARAM), new JSReference(ALL_DAY_PARAM));  
51 - params.put(getFieldId(context, component, EVENT_TYPE_PARAM), new JSReference(EVENT_TYPE_PARAM));  
52 - params.put(getFieldId(context, component, VIEW_PARAM), new JSReference(VIEW_PARAM));  
53 - if (isAjaxMode(component)) {  
54 - jsFunction = AjaxRendererUtils.buildAjaxFunction(component, context);  
55 - Map<String, Object> eventOptions = AjaxRendererUtils.buildEventOptions(context, component, params);  
56 - eventOptions.put("oncomplete", new JSReference(CALLBACK));  
57 - jsFunction.addParameter(eventOptions);  
58 - } else if (SERVER_MODE.equals(component.getSwitchType())) {  
59 - jsFunction = new JSFunction("Richfaces.jsFormSubmit",  
60 - component.getClientId(context),  
61 - getUtils().getNestingForm(context, component).getClientId(context),  
62 - null,  
63 - params);  
64 - } else {  
65 - return null;  
66 - }  
67 - return new JSFunctionDefinition("event", VIEW_PARAM, EVENT_TYPE_PARAM, ITEM_ID_PARAM, START_DATE_PARAM, END_DATE_PARAM, DAY_DELTA_PARAM, MINUTE_DELTA_PARAM, ALL_DAY_PARAM, CALLBACK).addToBody(jsFunction); 57 + /**
  58 + * Following defaults are be used by addOptionIfSetAndNotDefault
  59 + */
  60 + static {
  61 + Map<String, Object> defaults = new HashMap<String, Object>();
  62 + defaults.put("styleClass", "");
  63 + defaults.put("defaultView", UISchedule.DEFAULT_VIEW);
  64 + defaults.put("firstDay", UISchedule.DEFAULT_FIRST_DAY);
  65 + defaults.put("isRTL", UISchedule.DEFAULT_RTL);
  66 + defaults.put("weekends", UISchedule.DEFAULT_SHOW_WEEKENDS);
  67 + defaults.put("weekMode", UISchedule.DEFAULT_WEEK_MODE);
  68 + defaults.put("aspectRatio", UISchedule.DEFAULT_ASPECT_RATIO);
  69 + defaults.put("allDaySlot", UISchedule.DEFAULT_ALL_DAY_SLOT);
  70 + defaults.put("axisFormat", UISchedule.DEFAULT_AXIS_FORMAT);
  71 + defaults.put("slotMinutes", UISchedule.DEFAULT_SLOT_MINUTES);
  72 + defaults.put("defaultEventMinutes", UISchedule.DEFAULT_EVENT_MINUTES);
  73 + defaults.put("firstHour", UISchedule.DEFAULT_FIRST_HOUR);
  74 + defaults.put("minTime", UISchedule.DEFAULT_MIN_TIME);
  75 + defaults.put("maxTime", UISchedule.DEFAULT_MAX_TIME);
  76 + defaults.put("editable", UISchedule.DEFAULT_EDITABLE);
  77 + defaults.put("selectable", UISchedule.DEFAULT_SELECTABLE);
  78 + defaults.put("selectHelper", UISchedule.DEFAULT_SELECT_HELPER);
  79 + defaults.put("unselectAuto", UISchedule.DEFAULT_UNSELECT_AUTO);
  80 + defaults.put("unselectCancel", UISchedule.DEFAULT_UNSELECT_CANCEL);
  81 + defaults.put("disableDragging", UISchedule.DEFAULT_DISABLE_DRAGGING);
  82 + defaults.put("disableResizing", UISchedule.DEFAULT_DISABLE_RESIZING);
  83 + defaults.put("dragRevertDuration", UISchedule.DEFAULT_DRAG_REVERT_DURATION);
  84 + defaults.put("allDayDefault", UISchedule.DEFAULT_ALL_DAY_DEFAULT);
  85 + defaults.put("onbeforeitemselect", "");
  86 + defaults.put("onitemselect", "");
  87 + defaults.put("onbeforeitemdrop", "");
  88 + defaults.put("onitemdrop", "");
  89 + defaults.put("onbeforeitemresize", "");
  90 + defaults.put("onitemresize", "");
  91 + defaults.put("onitemresizestart", "");
  92 + defaults.put("onitemresizestop", "");
  93 + defaults.put("onitemdragstart", "");
  94 + defaults.put("onitemdragstop", "");
  95 + defaults.put("onitemmouseover", "");
  96 + defaults.put("onitemmouseout", "");
  97 + defaults.put("onviewchange", "");
  98 + defaults.put("onbeforedateselect", "");
  99 + defaults.put("ondateselect", "");
  100 + defaults.put("onbeforedaterangeselect", "");
  101 + defaults.put("ondaterangeselect", "");
  102 + defaults.put("ondaterangechange", "");
  103 + DEFAULTS = Collections.unmodifiableMap(defaults);
68 } 104 }
69 105
70 @Override 106 @Override
@@ -74,20 +110,28 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase { @@ -74,20 +110,28 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase {
74 } 110 }
75 Map<String, String> requestParameterMap = context.getExternalContext().getRequestParameterMap(); 111 Map<String, String> requestParameterMap = context.getExternalContext().getRequestParameterMap();
76 if (requestParameterMap.get(component.getClientId(context)) != null) { 112 if (requestParameterMap.get(component.getClientId(context)) != null) {
77 - String startDateParam = requestParameterMap.get(getFieldId(context, (UISchedule) component, START_DATE_PARAM));  
78 - String endDateParam = requestParameterMap.get(getFieldId(context, (UISchedule) component, END_DATE_PARAM));  
79 - String itemIdParam = requestParameterMap.get(getFieldId(context, (UISchedule) component, ITEM_ID_PARAM));  
80 - String dayDeltaParam = requestParameterMap.get(getFieldId(context, (UISchedule) component, DAY_DELTA_PARAM));  
81 - String minuteDeltaParam = requestParameterMap.get(getFieldId(context, (UISchedule) component, MINUTE_DELTA_PARAM));  
82 - String allDayParam = requestParameterMap.get(getFieldId(context, (UISchedule) component, ALL_DAY_PARAM));  
83 - String eventTypeParam = requestParameterMap.get(getFieldId(context, (UISchedule) component, EVENT_TYPE_PARAM));  
84 - String viewParam = requestParameterMap.get(getFieldId(context, (UISchedule) component, VIEW_PARAM)); 113 + String startDateParam = requestParameterMap.get(getFieldId(context, (UISchedule) component,
  114 + START_DATE_PARAM));
  115 + String endDateParam = requestParameterMap.get(getFieldId(context, (UISchedule) component,
  116 + END_DATE_PARAM));
  117 + String itemIdParam = requestParameterMap.get(getFieldId(context, (UISchedule) component,
  118 + ITEM_ID_PARAM));
  119 + String dayDeltaParam = requestParameterMap.get(getFieldId(context, (UISchedule) component,
  120 + DAY_DELTA_PARAM));
  121 + String minuteDeltaParam = requestParameterMap.get(getFieldId(context, (UISchedule) component,
  122 + MINUTE_DELTA_PARAM));
  123 + String allDayParam = requestParameterMap.get(getFieldId(context, (UISchedule) component,
  124 + ALL_DAY_PARAM));
  125 + String eventTypeParam = requestParameterMap.get(getFieldId(context, (UISchedule) component,
  126 + EVENT_TYPE_PARAM));
  127 + String viewParam = requestParameterMap.get(getFieldId(context, (UISchedule) component,
  128 + VIEW_PARAM));
85 129
86 try { 130 try {
87 - if (DATE_RANGE_CHANGED_EVENT.equals(eventTypeParam)) { 131 + if (DATE_RANGE_CHANGE_EVENT.equals(eventTypeParam)) {
88 Date startDate = new Date(Long.parseLong(startDateParam) * 1000); 132 Date startDate = new Date(Long.parseLong(startDateParam) * 1000);
89 Date endDate = new Date(Long.parseLong(endDateParam) * 1000); 133 Date endDate = new Date(Long.parseLong(endDateParam) * 1000);
90 - new ScheduleDateRangeChangedEvent(component, startDate, endDate).queue(); 134 + new ScheduleDateRangeChangeEvent(component, startDate, endDate).queue();
91 } else if (ITEM_MOVE_EVENT.equals(eventTypeParam)) { 135 } else if (ITEM_MOVE_EVENT.equals(eventTypeParam)) {
92 int dayDelta = Integer.parseInt(dayDeltaParam); 136 int dayDelta = Integer.parseInt(dayDeltaParam);
93 int minuteDelta = Integer.parseInt(minuteDeltaParam); 137 int minuteDelta = Integer.parseInt(minuteDeltaParam);
@@ -97,19 +141,19 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase { @@ -97,19 +141,19 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase {
97 int dayDelta = Integer.parseInt(dayDeltaParam); 141 int dayDelta = Integer.parseInt(dayDeltaParam);
98 int minuteDelta = Integer.parseInt(minuteDeltaParam); 142 int minuteDelta = Integer.parseInt(minuteDeltaParam);
99 new ScheduleItemResizeEvent(component, itemIdParam, dayDelta, minuteDelta).queue(); 143 new ScheduleItemResizeEvent(component, itemIdParam, dayDelta, minuteDelta).queue();
100 - } else if (ITEM_SELECTED_EVENT.equals(eventTypeParam)) {  
101 - new ScheduleItemSelectedEvent(component, itemIdParam).queue();  
102 - } else if (VIEW_CHANGED_EVENT.equals(eventTypeParam)) {  
103 - new ScheduleViewChangedEvent(component, viewParam).queue();  
104 - } else if (DATE_SELECTED_EVENT.equals(eventTypeParam)) { 144 + } else if (ITEM_SELECT_EVENT.equals(eventTypeParam)) {
  145 + new ScheduleItemSelectEvent(component, itemIdParam).queue();
  146 + } else if (VIEW_CHANGE_EVENT.equals(eventTypeParam)) {
  147 + new ScheduleViewChangeEvent(component, viewParam).queue();
  148 + } else if (DATE_SELECT_EVENT.equals(eventTypeParam)) {
105 Date startDate = new Date(Long.parseLong(startDateParam) * 1000); 149 Date startDate = new Date(Long.parseLong(startDateParam) * 1000);
106 boolean allDay = Boolean.parseBoolean(allDayParam); 150 boolean allDay = Boolean.parseBoolean(allDayParam);
107 - new ScheduleDateSelectedEvent(component, startDate, allDay).queue();  
108 - } else if (DATE_RANGE_SELECTED_EVENT.equals(eventTypeParam)) { 151 + new ScheduleDateSelectEvent(component, startDate, allDay).queue();
  152 + } else if (DATE_RANGE_SELECT_EVENT.equals(eventTypeParam)) {
109 Date startDate = new Date(Long.parseLong(startDateParam) * 1000); 153 Date startDate = new Date(Long.parseLong(startDateParam) * 1000);
110 Date endDate = new Date(Long.parseLong(endDateParam) * 1000); 154 Date endDate = new Date(Long.parseLong(endDateParam) * 1000);
111 boolean allDay = Boolean.parseBoolean(allDayParam); 155 boolean allDay = Boolean.parseBoolean(allDayParam);
112 - new ScheduleDateRangeSelectedEvent(component, startDate, endDate, allDay).queue(); 156 + new ScheduleDateRangeSelectEvent(component, startDate, endDate, allDay).queue();
113 } 157 }
114 } catch (NumberFormatException ex) { 158 } catch (NumberFormatException ex) {
115 throw new FacesException("Cannot convert request parmeters", ex); 159 throw new FacesException("Cannot convert request parmeters", ex);
@@ -126,19 +170,50 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase { @@ -126,19 +170,50 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase {
126 writer.writeText("var " + widgetVar + " = ", null); 170 writer.writeText("var " + widgetVar + " = ", null);
127 } 171 }
128 writer.writeText(new JSObject("RichFaces.Schedule", clientId, locale.toString(), 172 writer.writeText(new JSObject("RichFaces.Schedule", clientId, locale.toString(),
129 - getOptions(component),  
130 - DATE_RANGE_CHANGED_EVENT,  
131 - ITEM_SELECTED_EVENT,  
132 - ITEM_MOVE_EVENT,  
133 - ITEM_RESIZE_EVENT,  
134 - VIEW_CHANGED_EVENT,  
135 - DATE_SELECTED_EVENT,  
136 - DATE_RANGE_SELECTED_EVENT,  
137 - createSubmitEventFunction(context, component)).toScript(),  
138 - null); 173 + getOptions(component),
  174 + DATE_RANGE_CHANGE_EVENT,
  175 + ITEM_SELECT_EVENT,
  176 + ITEM_MOVE_EVENT,
  177 + ITEM_RESIZE_EVENT,
  178 + VIEW_CHANGE_EVENT,
  179 + DATE_SELECT_EVENT,
  180 + DATE_RANGE_SELECT_EVENT,
  181 + createSubmitEventFunction(context, component)).toScript(),
  182 + null);
139 } 183 }
140 184
141 - public Map<String, Object> getOptions(UISchedule schedule) throws IOException { 185 + protected Object createSubmitEventFunction(FacesContext context, UISchedule component) {
  186 + JSFunction jsFunction;
  187 + Map<String, Object> params = new HashMap<String, Object>();
  188 + params.put(getFieldId(context, component, START_DATE_PARAM), new JSReference(START_DATE_PARAM));
  189 + params.put(getFieldId(context, component, END_DATE_PARAM), new JSReference(END_DATE_PARAM));
  190 + params.put(getFieldId(context, component, ITEM_ID_PARAM), new JSReference(ITEM_ID_PARAM));
  191 + params.put(getFieldId(context, component, DAY_DELTA_PARAM), new JSReference(DAY_DELTA_PARAM));
  192 + params.put(getFieldId(context, component, MINUTE_DELTA_PARAM), new JSReference(MINUTE_DELTA_PARAM));
  193 + params.put(getFieldId(context, component, ALL_DAY_PARAM), new JSReference(ALL_DAY_PARAM));
  194 + params.put(getFieldId(context, component, EVENT_TYPE_PARAM), new JSReference(EVENT_TYPE_PARAM));
  195 + params.put(getFieldId(context, component, VIEW_PARAM), new JSReference(VIEW_PARAM));
  196 + String clientId = component.getClientId(context);
  197 + params.put(clientId, clientId);
  198 + if (isAjaxMode(component)) {
  199 + jsFunction = AjaxRendererUtils.buildAjaxFunction(component, context);
  200 + Map<String, Object> eventOptions = AjaxRendererUtils.buildEventOptions(context, component, params);
  201 + eventOptions.put("oncomplete", new JSReference(CALLBACK));
  202 + jsFunction.addParameter(eventOptions);
  203 + } else if (UISchedule.SWITCH_TYPE_SERVER.equals(component.getSwitchType())) {
  204 + jsFunction = new JSFunction("Richfaces.jsFormSubmit",
  205 + component.getClientId(context),
  206 + getUtils().getNestingForm(context, component).getClientId(context),
  207 + null,
  208 + params);
  209 + } else {
  210 + return null;
  211 + }
  212 + return new JSFunctionDefinition("event", VIEW_PARAM, EVENT_TYPE_PARAM, ITEM_ID_PARAM, START_DATE_PARAM,
  213 + END_DATE_PARAM, DAY_DELTA_PARAM, MINUTE_DELTA_PARAM, ALL_DAY_PARAM, CALLBACK).addToBody(jsFunction);
  214 + }
  215 +
  216 + protected Map<String, Object> getOptions(UISchedule schedule) throws IOException {
142 /** 217 /**
143 * Copy attributes from child view components 218 * Copy attributes from child view components
144 */ 219 */
@@ -170,66 +245,67 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase { @@ -170,66 +245,67 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase {
170 * Include only attributes that are actually set. 245 * Include only attributes that are actually set.
171 */ 246 */
172 Map<String, Object> options = new HashMap<String, Object>(); 247 Map<String, Object> options = new HashMap<String, Object>();
173 - addOptionIfSet("defaultView", schedule.getView(), options);  
174 -// TODO shall we numerate firstDayOfWeek as in Calendar (sunday=1,monday=2,etc.) or like in widget(sunday=0,monday=1,etc.)?  
175 - if (schedule.getFirstDay() != null) {  
176 - options.put("firstDay", schedule.getFirstDay() - 1); 248 + addOptionIfSetAndNotDefault("defaultView", schedule.getView(), options);
  249 + /**
  250 + * firstDayOfWeek numeration in Calendar (sunday=1,monday=2,etc.) and in widget(sunday=0,monday=1,etc.)
  251 + */
  252 + Integer firstDay = schedule.getFirstDay();
  253 + if (firstDay != null) {
  254 + addOptionIfSetAndNotDefault("firstDay", firstDay - 1, options);
177 } 255 }
178 - addOptionIfSet("isRTL", schedule.getIsRTL(), options);  
179 - addOptionIfSet("weekends", schedule.getShowWeekends(), options);  
180 - addOptionIfSet("weekMode", schedule.getWeekMode(), options);  
181 - addOptionIfSet("height", schedule.getHeight(), options);  
182 - addOptionIfSet("contentHeight", schedule.getContentHeight(), options);  
183 - addOptionIfSet("aspectRatio", schedule.getAspectRatio(), options);  
184 - addOptionIfSet("allDaySlot", schedule.getAllDaySlot(), options);  
185 - addOptionIfSet("allDayText", schedule.getAllDayText(), options);  
186 - addOptionIfSet("axisFormat", schedule.getAxisFormat(), options);  
187 - addOptionIfSet("slotMinutes", schedule.getSlotMinutes(), options);  
188 - addOptionIfSet("defaultEventMinutes", schedule.getDefaultEventMinutes(), options);  
189 - addOptionIfSet("firstHour", schedule.getFirstHour(), options);  
190 - addOptionIfSet("minTime", schedule.getMinTime(), options);  
191 - addOptionIfSet("maxTime", schedule.getMaxTime(), options);  
192 - addOptionIfSet("editable", schedule.getEditable(), options);  
193 - addOptionIfSet("selectable", schedule.getSelectable(), options);  
194 - addOptionIfSet("selectHelper", schedule.getSelectHelper(), options);  
195 - addOptionIfSet("unselectAuto", schedule.getUnselectAuto(), options);  
196 - addOptionIfSet("unselectCancel", schedule.getUnselectCancel(), options);  
197 - addOptionIfSet("disableDragging", schedule.getDisableDragging(), options);  
198 - addOptionIfSet("disableResizing", schedule.getDisableResizing(), options);  
199 - addOptionIfSet("dragRevertDuration", schedule.getDragRevertDuration(), options); 256 + addOptionIfSetAndNotDefault("isRTL", schedule.getIsRTL(), options);
  257 + addOptionIfSetAndNotDefault("weekends", schedule.getShowWeekends(), options);
  258 + addOptionIfSetAndNotDefault("weekMode", schedule.getWeekMode(), options);
  259 + addOptionIfSetAndNotDefault("height", schedule.getHeight(), options);
  260 + addOptionIfSetAndNotDefault("contentHeight", schedule.getContentHeight(), options);
  261 + addOptionIfSetAndNotDefault("aspectRatio", schedule.getAspectRatio(), options);
  262 + addOptionIfSetAndNotDefault("allDaySlot", schedule.getAllDaySlot(), options);
  263 + addOptionIfSetAndNotDefault("allDayText", schedule.getAllDayText(), options);
  264 + addOptionIfSetAndNotDefault("axisFormat", schedule.getAxisFormat(), options);
  265 + addOptionIfSetAndNotDefault("slotMinutes", schedule.getSlotMinutes(), options);
  266 + addOptionIfSetAndNotDefault("defaultEventMinutes", schedule.getDefaultEventMinutes(), options);
  267 + addOptionIfSetAndNotDefault("firstHour", schedule.getFirstHour(), options);
  268 + addOptionIfSetAndNotDefault("minTime", schedule.getMinTime(), options);
  269 + addOptionIfSetAndNotDefault("maxTime", schedule.getMaxTime(), options);
  270 + addOptionIfSetAndNotDefault("editable", schedule.getEditable(), options);
  271 + addOptionIfSetAndNotDefault("selectable", schedule.getSelectable(), options);
  272 + addOptionIfSetAndNotDefault("selectHelper", schedule.getSelectHelper(), options);
  273 + addOptionIfSetAndNotDefault("unselectAuto", schedule.getUnselectAuto(), options);
  274 + addOptionIfSetAndNotDefault("unselectCancel", schedule.getUnselectCancel(), options);
  275 + addOptionIfSetAndNotDefault("disableDragging", schedule.getDisableDragging(), options);
  276 + addOptionIfSetAndNotDefault("disableResizing", schedule.getDisableResizing(), options);
  277 + addOptionIfSetAndNotDefault("dragRevertDuration", schedule.getDragRevertDuration(), options);
200 addOptionHash("dragOpacity", schedule, options); 278 addOptionHash("dragOpacity", schedule, options);
201 addOptionHash("titleFormat", schedule, options); 279 addOptionHash("titleFormat", schedule, options);
202 addOptionHash("timeFormat", schedule, options); 280 addOptionHash("timeFormat", schedule, options);
203 addOptionHash("columnFormat", schedule, options); 281 addOptionHash("columnFormat", schedule, options);
204 Map<String, Object> headerOptions = new HashMap<String, Object>(3); 282 Map<String, Object> headerOptions = new HashMap<String, Object>(3);
205 - addOptionIfSet("left", schedule.getHeaderLeft(), headerOptions);  
206 - addOptionIfSet("center", schedule.getHeaderCenter(), headerOptions);  
207 - addOptionIfSet("right", schedule.getHeaderRight(), headerOptions); 283 + addOptionIfSetAndNotDefault("left", schedule.getHeaderLeft(), headerOptions);
  284 + addOptionIfSetAndNotDefault("center", schedule.getHeaderCenter(), headerOptions);
  285 + addOptionIfSetAndNotDefault("right", schedule.getHeaderRight(), headerOptions);
208 if (headerOptions.size() > 0) { 286 if (headerOptions.size() > 0) {
209 options.put("header", headerOptions); 287 options.put("header", headerOptions);
210 } 288 }
211 - addOptionIfSet("allDayDefault", schedule.getAllDayByDefault(), options); 289 + addOptionIfSetAndNotDefault("allDayDefault", schedule.getAllDayByDefault(), options);
212 290
213 - addOptionIfSet("onItemSelected", schedule.getOnItemSelected(), options);  
214 - addOptionIfSet("onItemSelectedComplete", schedule.getOnItemSelectedComplete(), options);  
215 - addOptionIfSet("onItemDrop", schedule.getOnItemDrop(), options);  
216 - addOptionIfSet("onItemDropComplete", schedule.getOnItemDropComplete(), options);  
217 - addOptionIfSet("onItemResized", schedule.getOnItemResized(), options);  
218 - addOptionIfSet("onItemResizedComplete", schedule.getOnItemResizedComplete(), options);  
219 - addOptionIfSet("onItemResizeStart", schedule.getOnItemResizeStart(), options);  
220 - addOptionIfSet("onItemResizeStop", schedule.getOnItemResizeStop(), options);  
221 - addOptionIfSet("onItemDragStart", schedule.getOnItemDragStart(), options);  
222 - addOptionIfSet("onItemDragStop", schedule.getOnItemDragStop(), options);  
223 - addOptionIfSet("onItemMouseover", schedule.getOnItemMouseover(), options);  
224 - addOptionIfSet("onItemMouseout", schedule.getOnItemMouseout(), options);  
225 - addOptionIfSet("onViewChanged", schedule.getOnViewChanged(), options);  
226 - addOptionIfSet("onViewChangedComplete", schedule.getOnViewChangedComplete(), options);  
227 - addOptionIfSet("onDateSelected", schedule.getOnDateSelected(), options);  
228 - addOptionIfSet("onDateSelectedComplete", schedule.getOnDateSelectedComplete(), options);  
229 - addOptionIfSet("onDateRangeSelected", schedule.getOnDateRangeSelected(), options);  
230 - addOptionIfSet("onDateRangeSelectedComplete", schedule.getOnDateRangeSelectedComplete(), options);  
231 - addOptionIfSet("onDateRangeChanged", schedule.getOnDateRangeChanged(), options);  
232 - addOptionIfSet("onDateRangeChangedComplete", schedule.getOnDateRangeChangedComplete(), options); 291 + addOptionIfSetAndNotDefault("onbeforeitemselect", schedule.getOnbeforeitemselect(), options);
  292 + addOptionIfSetAndNotDefault("onitemselect", schedule.getOnitemselect(), options);
  293 + addOptionIfSetAndNotDefault("onbeforeitemdrop", schedule.getOnbeforeitemdrop(), options);
  294 + addOptionIfSetAndNotDefault("onitemdrop", schedule.getOnitemdrop(), options);
  295 + addOptionIfSetAndNotDefault("onbeforeitemresize", schedule.getOnbeforeitemresize(), options);
  296 + addOptionIfSetAndNotDefault("onitemresize", schedule.getOnitemresize(), options);
  297 + addOptionIfSetAndNotDefault("onitemresizestart", schedule.getOnitemresizestart(), options);
  298 + addOptionIfSetAndNotDefault("onitemresizestop", schedule.getOnitemresizestop(), options);
  299 + addOptionIfSetAndNotDefault("onitemdragstart", schedule.getOnitemdragstart(), options);
  300 + addOptionIfSetAndNotDefault("onitemdragstop", schedule.getOnitemdragstop(), options);
  301 + addOptionIfSetAndNotDefault("onitemmouseover", schedule.getOnitemmouseover(), options);
  302 + addOptionIfSetAndNotDefault("onitemmouseout", schedule.getOnitemmouseout(), options);
  303 + addOptionIfSetAndNotDefault("onviewchange", schedule.getOnviewchange(), options);
  304 + addOptionIfSetAndNotDefault("onbeforedateselect", schedule.getOnbeforedateselect(), options);
  305 + addOptionIfSetAndNotDefault("ondateselect", schedule.getOndateselect(), options);
  306 + addOptionIfSetAndNotDefault("onbeforedaterangeselect", schedule.getOnbeforedaterangeselect(), options);
  307 + addOptionIfSetAndNotDefault("ondaterangeselect", schedule.getOndaterangeselect(), options);
  308 + addOptionIfSetAndNotDefault("ondaterangechange", schedule.getOndaterangechange(), options);
233 if (schedule.getDate() != null) { 309 if (schedule.getDate() != null) {
234 Calendar calendar = Calendar.getInstance(); 310 Calendar calendar = Calendar.getInstance();
235 calendar.setTime(schedule.getDate()); 311 calendar.setTime(schedule.getDate());
@@ -262,40 +338,40 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase { @@ -262,40 +338,40 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase {
262 return options; 338 return options;
263 } 339 }
264 340
265 - protected void addOptionIfSet(String optionName, Object value, Map<String, Object> options) {  
266 - if (value != null && value != "") { 341 + protected void addOptionIfSetAndNotDefault(String optionName, Object value, Map<String, Object> options) {
  342 + if (value != null && !"".equals(value) && !value.equals(DEFAULTS.get(optionName))) {
267 options.put(optionName, value); 343 options.put(optionName, value);
268 } 344 }
269 } 345 }
270 346
271 - public String getFieldId(FacesContext context, UISchedule component, String attribute) { 347 + protected String getFieldId(FacesContext context, UISchedule component, String attribute) {
272 return getUtils().clientId(context, component) + NamingContainer.SEPARATOR_CHAR + attribute; 348 return getUtils().clientId(context, component) + NamingContainer.SEPARATOR_CHAR + attribute;
273 } 349 }
274 350
  351 + protected boolean isAjaxMode(UISchedule component) {
  352 + String mode = component.getSwitchType();
  353 + return UISchedule.SWITCH_TYPE_AJAX.equals(mode) || "".equals(mode) || null == mode;
  354 + }
  355 +
  356 + protected boolean isClientMode(UISchedule component) {
  357 + String mode = component.getSwitchType();
  358 + return UISchedule.SWITCH_TYPE_CLIENT.equals(mode);
  359 + }
  360 +
275 private void addOptionHash(String attribute, UIComponent source, Map<String, Object> options) { 361 private void addOptionHash(String attribute, UIComponent source, Map<String, Object> options) {
276 Map<String, Object> hash = new HashMap<String, Object>(3); 362 Map<String, Object> hash = new HashMap<String, Object>(3);
277 Map<String, Object> attributes = source.getAttributes(); 363 Map<String, Object> attributes = source.getAttributes();
278 - addOptionIfSet("month", attributes.get(attribute + "Month"), hash);  
279 - addOptionIfSet("basicWeek", attributes.get(attribute + "BasicWeek"), hash);  
280 - addOptionIfSet("agendaWeek", attributes.get(attribute + "AgendaWeek"), hash);  
281 - addOptionIfSet("basicDay", attributes.get(attribute + "BasicDay"), hash);  
282 - addOptionIfSet("agendaDay", attributes.get(attribute + "AgendaDay"), hash);  
283 - addOptionIfSet("", attributes.get(attribute), hash); 364 + addOptionIfSetAndNotDefault("month", attributes.get(attribute + "Month"), hash);
  365 + addOptionIfSetAndNotDefault("basicWeek", attributes.get(attribute + "BasicWeek"), hash);
  366 + addOptionIfSetAndNotDefault("agendaWeek", attributes.get(attribute + "AgendaWeek"), hash);
  367 + addOptionIfSetAndNotDefault("basicDay", attributes.get(attribute + "BasicDay"), hash);
  368 + addOptionIfSetAndNotDefault("agendaDay", attributes.get(attribute + "AgendaDay"), hash);
  369 + addOptionIfSetAndNotDefault("", attributes.get(attribute), hash);
284 if (hash.size() > 0) { 370 if (hash.size() > 0) {
285 options.put(attribute, hash); 371 options.put(attribute, hash);
286 } 372 }
287 } 373 }
288 374
289 - private boolean isAjaxMode(UISchedule component) {  
290 - String mode = component.getSwitchType();  
291 - return AJAX_MODE.equals(mode) || "".equals(mode) || null == mode;  
292 - }  
293 -  
294 - private boolean isClientMode(UISchedule component) {  
295 - String mode = component.getSwitchType();  
296 - return CLIENT_MODE.equals(mode);  
297 - }  
298 -  
299 private static void copyAttribute(String attribute, String suffix, UIComponent source, UIComponent target) { 375 private static void copyAttribute(String attribute, String suffix, UIComponent source, UIComponent target) {
300 Object value = source.getAttributes().get(attribute); 376 Object value = source.getAttributes().get(attribute);
301 if (value != null) { 377 if (value != null) {
@@ -19,7 +19,7 @@ public class ScheduleMessages extends ClientScript { @@ -19,7 +19,7 @@ public class ScheduleMessages extends ClientScript {
19 19
20 public static final String BUNDLE_NAME = "org.richfaces.component.UIScheduleMessages"; 20 public static final String BUNDLE_NAME = "org.richfaces.component.UIScheduleMessages";
21 private static final String MESSAGE_KEY_BASE = "org.richfaces.component.UISchedule."; 21 private static final String MESSAGE_KEY_BASE = "org.richfaces.component.UISchedule.";
22 - private static final Log log = LogFactory.getLog(ClientScript.class); 22 + private static final Log LOG = LogFactory.getLog(ScheduleMessages.class);
23 23
24 @Override 24 @Override
25 public InputStream getResourceAsStream(ResourceContext context) { 25 public InputStream getResourceAsStream(ResourceContext context) {
@@ -34,10 +34,12 @@ public class ScheduleMessages extends ClientScript { @@ -34,10 +34,12 @@ public class ScheduleMessages extends ClientScript {
34 Locale locale = supportedLocales.next(); 34 Locale locale = supportedLocales.next();
35 ResourceBundle applicationBundle = ResourceBundle.getBundle(application.getMessageBundle(), locale, loader); 35 ResourceBundle applicationBundle = ResourceBundle.getBundle(application.getMessageBundle(), locale, loader);
36 ResourceBundle stockBundle = ResourceBundle.getBundle(BUNDLE_NAME, locale, loader); 36 ResourceBundle stockBundle = ResourceBundle.getBundle(BUNDLE_NAME, locale, loader);
37 - String[] months = new String[]{"JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER"}; 37 + String[] months = new String[]{"JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "AUGUST",
  38 + "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER"};
38 String[] days = new String[]{"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"}; 39 String[] days = new String[]{"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"};
39 out.append("'").append(locale.toString()).append("':{"); 40 out.append("'").append(locale.toString()).append("':{");
40 - out.append("allDayText:'").append(escape(getMessageFromBundle(MESSAGE_KEY_BASE + "allDay", applicationBundle, stockBundle))).append("',"); 41 + out.append("allDayText:'").append(escape(getMessageFromBundle(MESSAGE_KEY_BASE + "allDay",
  42 + applicationBundle, stockBundle))).append("',");
41 appendArray(out, applicationBundle, stockBundle, "monthNames", "monthNames", months); 43 appendArray(out, applicationBundle, stockBundle, "monthNames", "monthNames", months);
42 out.append(","); 44 out.append(",");
43 appendArray(out, applicationBundle, stockBundle, "monthNamesShort", "monthNamesShort", months); 45 appendArray(out, applicationBundle, stockBundle, "monthNamesShort", "monthNamesShort", months);
@@ -46,20 +48,23 @@ public class ScheduleMessages extends ClientScript { @@ -46,20 +48,23 @@ public class ScheduleMessages extends ClientScript {
46 out.append(","); 48 out.append(",");
47 appendArray(out, applicationBundle, stockBundle, "dayNamesShort", "dayNamesShort", days); 49 appendArray(out, applicationBundle, stockBundle, "dayNamesShort", "dayNamesShort", days);
48 out.append(","); 50 out.append(",");
49 - appendMap(out, applicationBundle, stockBundle, "buttonText", "buttonTexts", new String[]{"prev", "next", "prevYear", "nextYear", "today", "month", "day", "week"}); 51 + appendMap(out, applicationBundle, stockBundle, "buttonText", "buttonTexts", new String[]{"prev", "next",
  52 + "prevYear", "nextYear", "today", "month", "day", "week"});
50 out.append("},"); 53 out.append("},");
51 } 54 }
52 out.delete(out.length() - 1, out.length()); 55 out.delete(out.length() - 1, out.length());
53 out.append("})"); 56 out.append("})");
54 try { 57 try {
55 // TODO where to get encoding from? It should match properties file's encoding, but probably be converted to response encoding 58 // TODO where to get encoding from? It should match properties file's encoding, but probably be converted to response encoding
56 - return new ByteArrayInputStream(out.toString().getBytes(application.getViewHandler().calculateCharacterEncoding(facesContext))); 59 + return new ByteArrayInputStream(out.toString().getBytes(application.getViewHandler()
  60 + .calculateCharacterEncoding(facesContext)));
57 } catch (UnsupportedEncodingException e) { 61 } catch (UnsupportedEncodingException e) {
58 throw new RuntimeException(e); 62 throw new RuntimeException(e);
59 } 63 }
60 } 64 }
61 65
62 - private void appendArray(StringBuilder out, ResourceBundle applicationBundle, ResourceBundle stockBundle, String jsPropertyName, String prefix, String[] keys) { 66 + private void appendArray(StringBuilder out, ResourceBundle applicationBundle, ResourceBundle stockBundle,
  67 + String jsPropertyName, String prefix, String[] keys) {
63 String key; 68 String key;
64 out.append(jsPropertyName).append(":["); 69 out.append(jsPropertyName).append(":[");
65 for (int i = 0; i < keys.length; i++) { 70 for (int i = 0; i < keys.length; i++) {
@@ -72,12 +77,15 @@ public class ScheduleMessages extends ClientScript { @@ -72,12 +77,15 @@ public class ScheduleMessages extends ClientScript {
72 out.append("]"); 77 out.append("]");
73 } 78 }
74 79
75 - private void appendMap(StringBuilder out, ResourceBundle applicationBundle, ResourceBundle stockBundle, String jsPropertyName, String prefix, String[] keys) { 80 + private void appendMap(StringBuilder out, ResourceBundle applicationBundle, ResourceBundle stockBundle,
  81 + String jsPropertyName, String prefix, String[] keys) {
76 String key; 82 String key;
77 out.append(jsPropertyName).append(":{"); 83 out.append(jsPropertyName).append(":{");
78 for (int i = 0; i < keys.length; i++) { 84 for (int i = 0; i < keys.length; i++) {
79 key = MESSAGE_KEY_BASE + prefix + "." + keys[i]; 85 key = MESSAGE_KEY_BASE + prefix + "." + keys[i];
80 - out.append(keys[i]).append(":").append("'").append(escape(getMessageFromBundle(key, applicationBundle, stockBundle))).append("'"); 86 + out.append(keys[i]).append(":").append("'").append(escape(
  87 + getMessageFromBundle(key, applicationBundle, stockBundle))
  88 + ).append("'");
81 if (i + 1 < keys.length) { 89 if (i + 1 < keys.length) {
82 out.append(","); 90 out.append(",");
83 } 91 }
@@ -92,8 +100,8 @@ public class ScheduleMessages extends ClientScript { @@ -92,8 +100,8 @@ public class ScheduleMessages extends ClientScript {
92 try { 100 try {
93 return stockBundle.getString(key); 101 return stockBundle.getString(key);
94 } catch (MissingResourceException e1) { 102 } catch (MissingResourceException e1) {
95 - if (log.isWarnEnabled()) {  
96 - log.warn("Cannot find resource " + e1.getKey() + " in bundle " + e1.getClassName()); 103 + if (LOG.isWarnEnabled()) {
  104 + LOG.warn("Cannot find resource " + e1.getKey() + " in bundle " + e1.getClassName());
97 } 105 }
98 return ""; 106 return "";
99 } 107 }
1 package org.richfaces.taglib; 1 package org.richfaces.taglib;
2 2
3 import com.sun.facelets.FaceletContext; 3 import com.sun.facelets.FaceletContext;
4 -import com.sun.facelets.tag.*; 4 +import com.sun.facelets.tag.MetaRule;
  5 +import com.sun.facelets.tag.MetaRuleset;
  6 +import com.sun.facelets.tag.Metadata;
  7 +import com.sun.facelets.tag.MetadataTarget;
  8 +import com.sun.facelets.tag.TagAttribute;
5 import com.sun.facelets.tag.jsf.ComponentConfig; 9 import com.sun.facelets.tag.jsf.ComponentConfig;
6 import com.sun.facelets.tag.jsf.ComponentHandler; 10 import com.sun.facelets.tag.jsf.ComponentHandler;
7 import org.richfaces.event.NodeExpandedEvent; 11 import org.richfaces.event.NodeExpandedEvent;
@@ -12,12 +16,12 @@ import javax.faces.el.MethodBinding; @@ -12,12 +16,12 @@ import javax.faces.el.MethodBinding;
12 16
13 public class ScheduleTagHandlerBase extends ComponentHandler { 17 public class ScheduleTagHandlerBase extends ComponentHandler {
14 18
15 - private final static String DATE_RANGE_CHANGED_LISTENER = "dateRangeChangedListener";  
16 - private final static String DATE_SELECTED_LISTENER = "dateSelectedListener"; 19 + private final static String DATE_RANGE_CHANGED_LISTENER = "dateRangeChangeListener";
  20 + private final static String DATE_SELECTED_LISTENER = "dateSelectListener";
17 private final static String ITEM_RESIZE_LISTENER = "itemResizeListener"; 21 private final static String ITEM_RESIZE_LISTENER = "itemResizeListener";
18 private final static String ITEM_MOVE_LISTENER = "itemMoveListener"; 22 private final static String ITEM_MOVE_LISTENER = "itemMoveListener";
19 - private final static String ITEM_SELECTED_LISTENER = "itemSelectedListener";  
20 - private final static String VIEW_CHANGED_LISTENER = "viewChangedListener"; 23 + private final static String ITEM_SELECTED_LISTENER = "itemSelectListener";
  24 + private final static String VIEW_CHANGED_LISTENER = "viewChangeListener";
21 25
22 public ScheduleTagHandlerBase(ComponentConfig config) { 26 public ScheduleTagHandlerBase(ComponentConfig config) {
23 super(config); 27 super(config);
This diff could not be displayed because it is too large.
1 -window.RichFaces = window.RichFaces || {};  
2 -//TODO test ajax reRender  
3 -RichFaces.Schedule = function(id, locale, options, loadItemsEventName, itemSelectedEventName, itemMovedEventName, itemResizedEventName, viewChangedEventName, daySelectedEventName, dateRangeSelectedEventName, submitEventFunction) {  
4 -  
5 - var _this = this;  
6 - this.scheduleNode = document.getElementById(id);  
7 - this.scheduleNode.component = this;  
8 - if (!this.scheduleNode) {  
9 - throw "No element with id '" + id + "' found.";  
10 - }  
11 -  
12 - /**  
13 - * Message bundle setup.  
14 - */  
15 - options = jQuery.extend(this.messages[locale], options);  
16 -  
17 - jQuery(document).ready(function() {  
18 - _this.delegate = jQuery(_this.scheduleNode).fullCalendar(options);  
19 - window.status = _this.delegate;  
20 - });  
21 -  
22 -  
23 - // ---  
24 - /**  
25 - * Utility functions.  
26 - */  
27 - // ---  
28 - /**  
29 - * Converts javascript date into integer that can be used as param  
30 - * for new Date(long) - milliseconds since epoch.  
31 - */  
32 - var formatDateParam = function(date) {  
33 - return Math.round(date.getTime() / 1000);  
34 - };  
35 - /**  
36 - * Compares two dates with with an accuracy of a day.  
37 - */  
38 - var isSameDay = function(dateA, dateB) {  
39 - if (!dateA instanceof Date || !dateB instanceof Date) {  
40 - throw "Both params must be Date objects";  
41 - }  
42 - return dateA.getYear() == dateB.getYear()  
43 - && dateA.getMonth() == dateB.getMonth()  
44 - && dateA.getDate() == dateB.getDate();  
45 - };  
46 - // ---  
47 - /**  
48 - * DELEGATE SETUP.  
49 - * Delegate (fullCalendar) needs callback methods  
50 - * for various events such as item clicking, dragging, resizing or loading  
51 - * items.  
52 - * Functions below can be overriden by ones declared in "options" parameter.  
53 - */  
54 - // ---  
55 - /**  
56 - * Called by fullCalendar when it needs to load items - initial load,  
57 - * view type change, time navigation.  
58 - * If in ajax mode, then some initial items should be provided.  
59 - * If so then they are used for the first invocation of this function.  
60 - * This avoids creating additional ajax request on initial rendering.  
61 - * Custom users code cannot raise veto so any return statements there are  
62 - * ignored.  
63 - */  
64 - var dateRangeChange = function(startDate, endDate, callback) {  
65 - var firstInvocation = options.initialItems != null;  
66 - if (firstInvocation) {  
67 - var startDateData = options.initialItems.startDate;  
68 - var endDateData = options.initialItems.endDate;  
69 - var initialStartDate = new Date(startDateData.year, startDateData.month, startDateData.date);  
70 - var initialEndDate = new Date(endDateData.year, endDateData.month, endDateData.date);  
71 - var items = options.initialItems.items;  
72 - /**  
73 - * After initial load this should be cleaned so items are not cached.  
74 - */  
75 - options.initialItems = null;  
76 - /**  
77 - * In case the JSF component made a mistake in calculating initial  
78 - * date range we don't use initial items and just continue.  
79 - */  
80 - if (isSameDay(startDate, initialStartDate) && isSameDay(endDate, initialEndDate)) {  
81 - callback(items);  
82 - return;  
83 - }  
84 - }  
85 - if (!firstInvocation && options.onDateRangeChanged != null) {  
86 - RichFaces.Schedule.eval("(function(){" + options.onDateRangeChanged + "})()", {  
87 - 'startDate':startDate,  
88 - 'endDate':endDate  
89 - });  
90 - }  
91 - if (submitEventFunction != null) {  
92 - submitEventFunction({} /* stub event */,  
93 - null,  
94 - loadItemsEventName,  
95 - null,  
96 - formatDateParam(startDate),  
97 - formatDateParam(endDate),  
98 - null, null, null,  
99 - function(request, event, data) {  
100 - var scheduleData = request.getJSON('_ajax:scheduleData')  
101 - if (scheduleData != undefined) {  
102 - callback(scheduleData);  
103 - }  
104 - if (options.onDateRangeChangedComplete != null) {  
105 - RichFaces.Schedule.eval("(function(){" + options.onDateRangeChangedComplete + "})()", {  
106 - 'startDate':startDate,  
107 - 'endDate':endDate,  
108 - 'request':request,  
109 - 'data':data,  
110 - 'items':scheduleData  
111 - });  
112 - }  
113 - }  
114 - );  
115 - }  
116 - };  
117 - /**  
118 - * Called by fullCalendar when item has started to be dragged.  
119 - */  
120 - var itemDragStart = function(item, event, ui, view) {  
121 - if (options.onItemDragStart != null) {  
122 - RichFaces.Schedule.eval("(function(){" + options.onItemDragStart + "})()", {  
123 - 'item':item,  
124 - 'event':event,  
125 - 'ui':ui,  
126 - 'view':view  
127 - });  
128 - }  
129 - };  
130 - /**  
131 - * Called by fullCalendar when item has stopped to be dragged.  
132 - * This is invoked between itemDragStart and itemDrop.  
133 - */  
134 - var itemDragStop = function(item, event, ui, view) {  
135 - if (options.onItemDragStop != null) {  
136 - RichFaces.Schedule.eval("(function(){" + options.onItemDragStop + "})()", {  
137 - 'item':item,  
138 - 'event':event,  
139 - 'ui':ui,  
140 - 'view':view  
141 - });  
142 - }  
143 - };  
144 - /**  
145 - * Called by fullCalendar when item was dropped (dragging finished).  
146 - * This is invoked after itemDragStop.  
147 - * Custom users code may raise veto by returning "false". In such case  
148 - * changes will be reverted and no event will be sent to server.  
149 - */  
150 - var itemDrop = function(item, dayDelta, minuteDelta, allDay, revertFunc, event, ui, view) {  
151 - var result;  
152 - if (options.onItemDrop != null) {  
153 - result = RichFaces.Schedule.eval("(function(){" + options.onItemDrop + "})()", {  
154 - 'item':item,  
155 - 'dayDelta':dayDelta,  
156 - 'minuteDelta':minuteDelta,  
157 - 'allDay':allDay,  
158 - 'event':event,  
159 - 'ui':ui,  
160 - 'view':view  
161 - });  
162 - if (result === false) {  
163 - revertFunc();  
164 - return;  
165 - }  
166 - }  
167 - if (submitEventFunction != null) {  
168 - submitEventFunction(event,  
169 - null,  
170 - itemMovedEventName,  
171 - item.id,  
172 - null,  
173 - null,  
174 - dayDelta, minuteDelta, allDay,  
175 - function(request, event, data) {  
176 - var decision = request.getJSON('_ajax:scheduleData');  
177 - var vetoed = false;  
178 - if (decision != undefined && decision !== true) {  
179 - revertFunc();  
180 - vetoed = true;  
181 - }  
182 - if (options.onItemDropComplete != null) {  
183 - RichFaces.Schedule.eval("(function(){" + options.onItemDropComplete + "})()", {  
184 - 'item':item,  
185 - 'dayDelta':dayDelta,  
186 - 'minuteDelta':minuteDelta,  
187 - 'allDay':allDay,  
188 - 'event':event,  
189 - 'ui':ui,  
190 - 'view':view,  
191 - 'request':request,  
192 - 'data':data,  
193 - 'vetoed':vetoed  
194 - });  
195 - }  
196 - }  
197 - );  
198 - }  
199 - return;  
200 - };  
201 - /**  
202 - * Called by fullCalendar when item has started to be resized.  
203 - */  
204 - var itemResizeStart = function(item, event, ui, view) {  
205 - if (options.onItemResizeStart != null) {  
206 - RichFaces.Schedule.eval("(function(){" + options.onItemResizeStart + "})()", {  
207 - 'item':item,  
208 - 'event':event,  
209 - 'ui':ui,  
210 - 'view':view  
211 - });  
212 - }  
213 - };  
214 - /**  
215 - * Called by fullCalendar when item has stopped to be resized.  
216 - * This is invoked between itemResizeStart and itemResized.  
217 - */  
218 - var itemResizeStop = function(item, event, ui, view) {  
219 - if (options.onItemResizeStop != null) {  
220 - RichFaces.Schedule.eval("(function(){" + options.onItemResizeStop + "})()", {  
221 - 'item':item,  
222 - 'event':event,  
223 - 'ui':ui,  
224 - 'view':view  
225 - });  
226 - }  
227 - };  
228 - /**  
229 - * Called by fullCalendar when item was resized.  
230 - * This is invoked after itemResizeStop.  
231 - * Custom users code may raise veto by returning "false". In such case  
232 - * changes will be reverted and no event will be sent to server.  
233 - */  
234 - var itemResized = function(item, dayDelta, minuteDelta, revertFunc, event, ui, view) {  
235 - var result;  
236 - if (options.onItemResized != null) {  
237 - result = RichFaces.Schedule.eval("(function(){" + options.onItemResized + "})()", {  
238 - 'item':item,  
239 - 'dayDelta':dayDelta,  
240 - 'minuteDelta':minuteDelta,  
241 - 'event':event,  
242 - 'ui':ui,  
243 - 'view':view  
244 - });  
245 - if (result === false) {  
246 - revertFunc();  
247 - return;  
248 - }  
249 - }  
250 - if (submitEventFunction != null) {  
251 - submitEventFunction(event,  
252 - null,  
253 - itemResizedEventName,  
254 - item.id,  
255 - null,  
256 - null,  
257 - dayDelta, minuteDelta, null,  
258 - function(request, event, data) {  
259 - var decision = request.getJSON('_ajax:scheduleData');  
260 - var vetoed = false;  
261 - if (decision != undefined && decision !== true) {  
262 - revertFunc();  
263 - vetoed = true;  
264 - }  
265 - if (options.onItemResizedComplete != null) {  
266 - RichFaces.Schedule.eval("(function(){" + options.onItemResizedComplete + "})()", {  
267 - 'item':item,  
268 - 'dayDelta':dayDelta,  
269 - 'minuteDelta':minuteDelta,  
270 - 'event':event,  
271 - 'ui':ui,  
272 - 'view':view,  
273 - 'request':request,  
274 - 'data':data,  
275 - 'vetoed':vetoed  
276 - });  
277 - }  
278 - }  
279 - );  
280 - }  
281 - };  
282 - /**  
283 - * Called by fullCalendar when mouse moves over item.  
284 - */  
285 - var itemMouseover = function(item, event, view) {  
286 - if (options.onItemMouseover != null) {  
287 - RichFaces.Schedule.eval("(function(){" + options.onItemMouseover + "})()", {  
288 - 'item':item,  
289 - 'event':event,  
290 - 'view':view  
291 - });  
292 - }  
293 - };  
294 - /**  
295 - * Called by fullCalendar when mouse leaves item.  
296 - */  
297 - var itemMouseout = function(item, event, view) {  
298 - if (options.onItemMouseout != null) {  
299 - RichFaces.Schedule.eval("(function(){" + options.onItemMouseout + "})()", {  
300 - 'item':item,  
301 - 'event':event,  
302 - 'view':view  
303 - });  
304 - }  
305 - };  
306 - /**  
307 - * Called by fullCalendar when item is clicked.  
308 - * Custom users code may return "false". In such case  
309 - * changes no event will be sent to server and false will be returned  
310 - * to fullCalendar, which will prevent redirecting to URL associated  
311 - * with item (if such url was defined for the item).  
312 - */  
313 - var itemClick = function(item, event, view) {  
314 - var result;  
315 - if (options.onItemSelected != null) {  
316 - result = RichFaces.Schedule.eval("(function(){" + options.onItemSelected + "})()", {  
317 - 'item':item,  
318 - 'event':event,  
319 - 'view':view  
320 - });  
321 - }  
322 - if (result === false) {  
323 - return false;  
324 - }  
325 - if (submitEventFunction != null) {  
326 - submitEventFunction(event,  
327 - null,  
328 - itemSelectedEventName,  
329 - item.id,  
330 - null, null, null, null, null, function(request, event, data) {  
331 - if (options.onItemSelectedComplete != null) {  
332 - RichFaces.Schedule.eval("(function(){" + options.onItemSelectedComplete + "})()", {  
333 - 'item':item,  
334 - 'event':event,  
335 - 'view':view,  
336 - 'request':request,  
337 - 'data':data  
338 - });  
339 - }  
340 - }  
341 - );  
342 - }  
343 - return result;  
344 - };  
345 - /**  
346 - * Called by fullCalendar when day is clicked.  
347 - * Custom users code may raise veto by returning "false". In such case  
348 - * changes will be reverted and no event will be sent to server.  
349 - */  
350 - var dayClick = function(date, allDay, event, view) {  
351 - if (options.onDateSelected != null) {  
352 - var result = RichFaces.Schedule.eval("(function(){" + options.onDateSelected + "})()", {  
353 - 'date':date,  
354 - 'allDay':allDay,  
355 - 'event':event,  
356 - 'view':view  
357 - });  
358 - if (result === false) {  
359 - return;  
360 - }  
361 - }  
362 - if (submitEventFunction != null) {  
363 - submitEventFunction(event,  
364 - null,  
365 - daySelectedEventName,  
366 - null, formatDateParam(date), null, null, null, allDay, function(request, event, data) {  
367 - if (options.onDateSelectedComplete != null) {  
368 - RichFaces.Schedule.eval("(function(){" + options.onDateSelectedComplete + "})()", {  
369 - 'date':date,  
370 - 'allDay':allDay,  
371 - 'request':request,  
372 - 'event':event,  
373 - 'view':view,  
374 - 'data':data  
375 - });  
376 - }  
377 - }  
378 - );  
379 - }  
380 - };  
381 - var selectedView;  
382 - /**  
383 - * Called by fullCalendar when view or dates change.  
384 - * We want to notify user only about view change, so we cache current view  
385 - * on private variable "selectedView" and compare it with value passed  
386 - * in parameter.  
387 - * Custom users code may not raise veto so any "return" statements are  
388 - * ignored.  
389 - */  
390 - var viewChanged = function(view) {  
391 - if (selectedView != view && selectedView != undefined) {  
392 - if (options.onViewChanged != null) {  
393 - RichFaces.Schedule.eval("(function(){" + options.onViewChanged + "})()", {  
394 - 'view':view  
395 - });  
396 - }  
397 - if (submitEventFunction != null) {  
398 - submitEventFunction({},  
399 - view.name,  
400 - viewChangedEventName,  
401 - null, null, null, null, null, null, function(request, event, data) {  
402 - if (options.onViewChangedComplete != null) {  
403 - RichFaces.Schedule.eval("(function(){" + options.onViewChangedComplete + "})()", {  
404 - 'view':view,  
405 - 'request':request,  
406 - 'data':data  
407 - });  
408 - }  
409 - }  
410 - );  
411 - }  
412 - }  
413 - selectedView = view;  
414 - };  
415 - /**  
416 - * Called by fullCalendar when some date range is selected (user clicks  
417 - * and drags over empty time cells).  
418 - * Custom users code may raise veto by returning "false". In such case  
419 - * changes will be reverted and no event will be sent to server.  
420 - * What is more, selection will be cleared at the end of this function.  
421 - * (This is bad, i guess, but for now i don't see other way to  
422 - * hide selection marker after selection was made, event sent to server,  
423 - * and server side listeners have created new event for that selection.  
424 - * If no unselect would happen then we selection helper would still be there  
425 - * and mess the looks)  
426 - */  
427 - var dateRangeSelected = function(startDate, endDate, allDay, view) {  
428 - if (!_this.delegate.fullCalendar('option', 'selectable')) {  
429 - return;  
430 - }  
431 - var result;  
432 - if (options.onDateRangeSelected != null) {  
433 - result = RichFaces.Schedule.eval("(function(){" + options.onDateRangeSelected + "})()", {  
434 - 'startDate':startDate,  
435 - 'endDate':endDate,  
436 - 'allDay':allDay,  
437 - 'view':view  
438 - });  
439 - }  
440 - if (result === false) {  
441 - return;  
442 - }  
443 - if (submitEventFunction != null) {  
444 - submitEventFunction({},  
445 - null,  
446 - dateRangeSelectedEventName,  
447 - null, formatDateParam(startDate), formatDateParam(endDate), null, null, allDay,  
448 - function(request, event, data) {  
449 - _this.refetchItems();  
450 - if (options.onDateRangeSelectedComplete != null) {  
451 - RichFaces.Schedule.eval("(function(){" + options.onDateRangeSelectedComplete + "})()", {  
452 - 'startDate':startDate,  
453 - 'endDate':endDate,  
454 - 'allDay':allDay,  
455 - 'view':view,  
456 - 'request':request,  
457 - 'data':data  
458 - });  
459 - }  
460 - }  
461 - );  
462 - }  
463 - };  
464 - options = jQuery.extend({  
465 - events: dateRangeChange,  
466 - eventDragStart: itemDragStart,  
467 - eventDragStop: itemDragStop,  
468 - eventDrop: itemDrop,  
469 - eventResizeStart: itemResizeStart,  
470 - eventResizeStop: itemResizeStop,  
471 - eventResize: itemResized,  
472 - eventClick: itemClick,  
473 - eventMouseover: itemMouseover,  
474 - eventMouseout: itemMouseout,  
475 - viewDisplay: viewChanged,  
476 - dayClick: dayClick,  
477 - select: dateRangeSelected  
478 - }, options);  
479 -  
480 -};  
481 -RichFaces.Schedule.prototype.messages = {};  
482 -/**  
483 - * This function evaluates code in template with object in ScopeChain.  
484 - * This is usefull if you need to evaluate code that uses member names  
485 - * that colide with external names that the code refers to.  
486 - * There is almost exact method in utils.js called Richfaces.eval,  
487 - * but it swallows exception thrown during evaluation, which makes debugging  
488 - * hard.  
489 - */  
490 -RichFaces.Schedule.eval = function(template, object) {  
491 - var value = '';  
492 - with (object) {  
493 - value = eval(template);  
494 - }  
495 - return value;  
496 -}  
497 -RichFaces.Schedule.prototype.select = function(startDate, endDate, allDay) {  
498 - this.delegate.fullCalendar('select', startDate, endDate, allDay);  
499 -}  
500 -RichFaces.Schedule.prototype.unselect = function() {  
501 - this.delegate.fullCalendar('unselect');  
502 -}  
503 -RichFaces.Schedule.prototype.render = function() {  
504 - this.delegate.fullCalendar('render');  
505 -}  
506 -RichFaces.Schedule.prototype.destroy = function() {  
507 - this.delegate.fullCalendar('destroy');  
508 -}  
509 -RichFaces.Schedule.prototype.getView = function() {  
510 - return this.delegate.fullCalendar('getView');  
511 -}  
512 -RichFaces.Schedule.prototype.changeView = function(viewName) {  
513 - this.delegate.fullCalendar('changeView', viewName);  
514 -}  
515 -RichFaces.Schedule.prototype.prev = function() {  
516 - this.delegate.fullCalendar('prev');  
517 -}  
518 -RichFaces.Schedule.prototype.next = function() {  
519 - this.delegate.fullCalendar('next');  
520 -}  
521 -RichFaces.Schedule.prototype.prevYear = function() {  
522 - this.delegate.fullCalendar('prevYear');  
523 -}  
524 -RichFaces.Schedule.prototype.nextYear = function() {  
525 - this.delegate.fullCalendar('nextYear');  
526 -}  
527 -RichFaces.Schedule.prototype.today = function() {  
528 - this.delegate.fullCalendar('today');  
529 -}  
530 -RichFaces.Schedule.prototype.gotoDate = function(year, month, date) {  
531 - this.delegate.fullCalendar('gotoDate', year, month, date);  
532 -}  
533 -RichFaces.Schedule.prototype.incrementDate = function(years, months, days) {  
534 - this.delegate.fullCalendar('incrementDate', years, months, days);  
535 -}  
536 -RichFaces.Schedule.prototype.updateItem = function(item) {  
537 - this.delegate.fullCalendar('updateItem', item);  
538 -}  
539 -RichFaces.Schedule.prototype.getItems = function(idOrFilter) {  
540 - return this.delegate.fullCalendar('clientEvents', idOrFilter);  
541 -}  
542 -RichFaces.Schedule.prototype.removeItems = function(idOrFilter) {  
543 - this.delegate.fullCalendar('removeEvents', idOrFilter);  
544 -}  
545 -RichFaces.Schedule.prototype.refetchItems = function() {  
546 - this.delegate.fullCalendar('refetchEvents');  
547 -}  
548 -RichFaces.Schedule.prototype.addItemsSource = function(source) {  
549 - this.delegate.fullCalendar('addEventSource', source);  
550 -}  
551 -RichFaces.Schedule.prototype.removeItemsSource = function(source) {  
552 - this.delegate.fullCalendar('removeEventSource', source);  
553 -}  
554 -RichFaces.Schedule.prototype.addItem = function(event, stick) {  
555 - this.delegate.fullCalendar('renderEvent', event, stick);  
556 -}  
557 -RichFaces.Schedule.prototype.reRender = function() {  
558 - this.delegate.fullCalendar('rerenderEvents');  
559 -}  
@@ -16,7 +16,7 @@ @@ -16,7 +16,7 @@
16 <h:scripts>org.ajax4jsf.javascript.AjaxScript, 16 <h:scripts>org.ajax4jsf.javascript.AjaxScript,
17 /org/ajax4jsf/javascript/scripts/form.js, 17 /org/ajax4jsf/javascript/scripts/form.js,
18 /org/richfaces/renderkit/html/scripts/form.js, 18 /org/richfaces/renderkit/html/scripts/form.js,
19 - /org/richfaces/renderkit/html/scripts/jquery/jquery.js, 19 + /org/richfaces/renderkit/html/scripts/jquery-1.4.2.js,
20 /org/richfaces/renderkit/html/scripts/ui.core.js, 20 /org/richfaces/renderkit/html/scripts/ui.core.js,
21 /org/richfaces/renderkit/html/scripts/ui.draggable.js, 21 /org/richfaces/renderkit/html/scripts/ui.draggable.js,
22 /org/richfaces/renderkit/html/scripts/ui.resizable.js, 22 /org/richfaces/renderkit/html/scripts/ui.resizable.js,
@@ -27,10 +27,8 @@ @@ -27,10 +27,8 @@
27 <jsp:scriptlet> 27 <jsp:scriptlet>
28 <![CDATA[org.richfaces.component.util.FormUtil.throwEnclFormReqExceptionIfNeed(context, component);]]> 28 <![CDATA[org.richfaces.component.util.FormUtil.throwEnclFormReqExceptionIfNeed(context, component);]]>
29 </jsp:scriptlet> 29 </jsp:scriptlet>
30 - <div id="#{clientId}" class="rich-schedule #{component.attributes['styleClass']}"  
31 - x:passThruWithExclusions="value,name,type,id"></div>  
32 - <input type="hidden" name="#{clientId}" id="#{clientId}"/> 30 + <div id="#{clientId}" class="rich-schedule #{component.attributes['styleClass']}"/>
33 <script type="text/javascript"> 31 <script type="text/javascript">
34 - <f:call name = "writeInitFunction"/> 32 + <f:call name="writeInitFunction"/>
35 </script> 33 </script>
36 </f:root> 34 </f:root>
@@ -18,7 +18,6 @@ @@ -18,7 +18,6 @@
18 * License along with this library; if not, write to the Free Software 18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */ 20 */
21 -  
22 package org.richfaces.component; 21 package org.richfaces.component;
23 22
24 import org.ajax4jsf.tests.AbstractAjax4JsfTestCase; 23 import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;
@@ -33,32 +32,55 @@ import java.util.StringTokenizer; @@ -33,32 +32,55 @@ import java.util.StringTokenizer;
33 /** 32 /**
34 * Unit test for simple Component. 33 * Unit test for simple Component.
35 */ 34 */
36 -public class JSFComponentTest  
37 - extends AbstractAjax4JsfTestCase {  
38 - /**  
39 - * Create the test case  
40 - *  
41 - * @param testName name of the test case  
42 - */ 35 +public class JSFComponentTest extends AbstractAjax4JsfTestCase {
  36 +
43 public JSFComponentTest(String testName) { 37 public JSFComponentTest(String testName) {
44 super(testName); 38 super(testName);
45 } 39 }
46 -//TODO add test data for week and day  
47 40
  41 + /**
  42 + * Checks if component properly calculates date ranges of displayed days
  43 + * in order to provide initial events.
  44 + *
  45 + * @throws IOException if file with test data cannot be read
  46 + * @see JSFComponentTest#doTestDisplayedDays(java.lang.String, java.lang.String)
  47 + */
48 public void testDisplayedDaysForMonthViewCalculation() throws IOException { 48 public void testDisplayedDaysForMonthViewCalculation() throws IOException {
49 doTestDisplayedDays("displayedDaysForMonthViewCalculationTestData", UISchedule.VIEW_MONTH); 49 doTestDisplayedDays("displayedDaysForMonthViewCalculationTestData", UISchedule.VIEW_MONTH);
50 } 50 }
51 51
  52 + /**
  53 + * Checks if component properly calculates date ranges of displayed days
  54 + * in order to provide initial events.
  55 + *
  56 + * @throws IOException if file with test data cannot be read
  57 + * @see JSFComponentTest#doTestDisplayedDays(java.lang.String, java.lang.String)
  58 + */
52 public void testDisplayedDaysForWeekViewCalculation() throws IOException { 59 public void testDisplayedDaysForWeekViewCalculation() throws IOException {
53 doTestDisplayedDays("displayedDaysForWeekViewCalculationTestData", UISchedule.VIEW_AGENDA_WEEK); 60 doTestDisplayedDays("displayedDaysForWeekViewCalculationTestData", UISchedule.VIEW_AGENDA_WEEK);
54 doTestDisplayedDays("displayedDaysForWeekViewCalculationTestData", UISchedule.VIEW_BASIC_WEEK); 61 doTestDisplayedDays("displayedDaysForWeekViewCalculationTestData", UISchedule.VIEW_BASIC_WEEK);
55 } 62 }
56 63
  64 + /**
  65 + * Checks if component properly calculates date ranges of displayed days
  66 + * in order to provide initial events.
  67 + *
  68 + * @throws IOException if file with test data cannot be read
  69 + * @see JSFComponentTest#doTestDisplayedDays(java.lang.String, java.lang.String)
  70 + */
57 public void testDisplayedDaysForDayViewCalculation() throws IOException { 71 public void testDisplayedDaysForDayViewCalculation() throws IOException {
58 doTestDisplayedDays("displayedDaysForDayViewCalculationTestData", UISchedule.VIEW_AGENDA_DAY); 72 doTestDisplayedDays("displayedDaysForDayViewCalculationTestData", UISchedule.VIEW_AGENDA_DAY);
59 doTestDisplayedDays("displayedDaysForDayViewCalculationTestData", UISchedule.VIEW_BASIC_DAY); 73 doTestDisplayedDays("displayedDaysForDayViewCalculationTestData", UISchedule.VIEW_BASIC_DAY);
60 } 74 }
61 75
  76 + /**
  77 + * Checks if component properly calculates date ranges of displayed days
  78 + * in order to provide initial events.
  79 + *
  80 + * @param fileNameProperty name of file with test data
  81 + * @param view view name for which calculation should be tested
  82 + * @throws IOException if file with test data cannot be read
  83 + */
62 private void doTestDisplayedDays(String fileNameProperty, String view) throws IOException { 84 private void doTestDisplayedDays(String fileNameProperty, String view) throws IOException {
63 Calendar calendar = Calendar.getInstance(); 85 Calendar calendar = Calendar.getInstance();
64 UISchedule schedule = (UISchedule) application.createComponent(UISchedule.COMPONENT_TYPE); 86 UISchedule schedule = (UISchedule) application.createComponent(UISchedule.COMPONENT_TYPE);
@@ -15,11 +15,8 @@ i - expected end year @@ -15,11 +15,8 @@ i - expected end year
15 j - expected end month 15 j - expected end month
16 k - expected end day 16 k - expected end day
17 17
18 -displayedDaysForDayViewCalculationTestData is not fully ready yet  
19 -displayedDaysForMonthViewCalculationTestData lacks expected end date !!!  
20 -  
21 If anything in algorithm changes and test data will become invalid, they can be easily recreated by putting following 18 If anything in algorithm changes and test data will become invalid, they can be easily recreated by putting following
22 -code into UISchedule.getCalendarData method 19 +code into UISchedule.getScheduleData method
23 20
24 Calendar calendar = Calendar.getInstance(); 21 Calendar calendar = Calendar.getInstance();
25 calendar.setTime(startDate); 22 calendar.setTime(startDate);
@@ -44,4 +41,18 @@ code into UISchedule.getCalendarData method @@ -44,4 +41,18 @@ code into UISchedule.getCalendarData method
44 // + "," + lastDayCalendar.get(Calendar.YEAR) + "," + lastDayCalendar.get(Calendar.MONTH) + "," + lastDayCalendar.get(Calendar.DATE) 41 // + "," + lastDayCalendar.get(Calendar.YEAR) + "," + lastDayCalendar.get(Calendar.MONTH) + "," + lastDayCalendar.get(Calendar.DATE)
45 ); 42 );
46 43
  44 +If you do not want to click several thousand times to navigate through dates in schedule widget just add this to your page (index.xhtml in demo fits great):
  45 + <input type="button" value="Lunch auto navigation" onclick="lunchAutoNavigation()"/>
  46 + <script>
  47 + function lunchAutoNavigation() {
  48 + var fc = jQuery('#sf\\:schedule:first');
  49 + fc.fullCalendar('next');
  50 + if(fc.fullCalendar('getDate').getFullYear() &lt; 2020)
  51 + setTimeout("lunchAutoNavigation()",250);
  52 + }
  53 + </script>
  54 +Test data should cover combinations of firstDay (1-7), showWeekends(true/false) and :
  55 + - 20 years for month view
  56 + - 5 years for week view
  57 +For day view it is unnecesary to include combinations of firstDay, and date range should cover 2 years only.
47 Just remember to avoid blank lines, especially at the end of file. 58 Just remember to avoid blank lines, especially at the end of file.
1 -1,0,2010,0,1,2010,0,1,2010,0,2  
2 1,0,2010,0,4,2010,0,4,2010,0,5 1 1,0,2010,0,4,2010,0,4,2010,0,5
3 1,0,2010,0,5,2010,0,5,2010,0,6 2 1,0,2010,0,5,2010,0,5,2010,0,6
4 1,0,2010,0,6,2010,0,6,2010,0,7 3 1,0,2010,0,6,2010,0,6,2010,0,7
@@ -60,4 +59,1164 @@ @@ -60,4 +59,1164 @@
60 1,0,2010,2,25,2010,2,25,2010,2,26 59 1,0,2010,2,25,2010,2,25,2010,2,26
61 1,0,2010,2,26,2010,2,26,2010,2,27 60 1,0,2010,2,26,2010,2,26,2010,2,27
62 1,0,2010,2,29,2010,2,29,2010,2,30 61 1,0,2010,2,29,2010,2,29,2010,2,30
63 -1,0,2010,2,30,2010,2,30,2010,2,31  
  62 +1,0,2010,2,30,2010,2,30,2010,2,31
  63 +1,0,2010,2,31,2010,2,31,2010,3,1
  64 +1,0,2010,3,1,2010,3,1,2010,3,2
  65 +1,0,2010,3,2,2010,3,2,2010,3,3
  66 +1,0,2010,3,5,2010,3,5,2010,3,6
  67 +1,0,2010,3,6,2010,3,6,2010,3,7
  68 +1,0,2010,3,7,2010,3,7,2010,3,8
  69 +1,0,2010,3,8,2010,3,8,2010,3,9
  70 +1,0,2010,3,9,2010,3,9,2010,3,10
  71 +1,0,2010,3,12,2010,3,12,2010,3,13
  72 +1,0,2010,3,13,2010,3,13,2010,3,14
  73 +1,0,2010,3,14,2010,3,14,2010,3,15
  74 +1,0,2010,3,15,2010,3,15,2010,3,16
  75 +1,0,2010,3,16,2010,3,16,2010,3,17
  76 +1,0,2010,3,19,2010,3,19,2010,3,20
  77 +1,0,2010,3,20,2010,3,20,2010,3,21
  78 +1,0,2010,3,21,2010,3,21,2010,3,22
  79 +1,0,2010,3,22,2010,3,22,2010,3,23
  80 +1,0,2010,3,23,2010,3,23,2010,3,24
  81 +1,0,2010,3,26,2010,3,26,2010,3,27
  82 +1,0,2010,3,27,2010,3,27,2010,3,28
  83 +1,0,2010,3,28,2010,3,28,2010,3,29
  84 +1,0,2010,3,29,2010,3,29,2010,3,30
  85 +1,0,2010,3,30,2010,3,30,2010,4,1
  86 +1,0,2010,4,3,2010,4,3,2010,4,4
  87 +1,0,2010,4,4,2010,4,4,2010,4,5
  88 +1,0,2010,4,5,2010,4,5,2010,4,6
  89 +1,0,2010,4,6,2010,4,6,2010,4,7
  90 +1,0,2010,4,7,2010,4,7,2010,4,8
  91 +1,0,2010,4,10,2010,4,10,2010,4,11
  92 +1,0,2010,4,11,2010,4,11,2010,4,12
  93 +1,0,2010,4,12,2010,4,12,2010,4,13
  94 +1,0,2010,4,13,2010,4,13,2010,4,14
  95 +1,0,2010,4,14,2010,4,14,2010,4,15
  96 +1,0,2010,4,17,2010,4,17,2010,4,18
  97 +1,0,2010,4,18,2010,4,18,2010,4,19
  98 +1,0,2010,4,19,2010,4,19,2010,4,20
  99 +1,0,2010,4,20,2010,4,20,2010,4,21
  100 +1,0,2010,4,21,2010,4,21,2010,4,22
  101 +1,0,2010,4,24,2010,4,24,2010,4,25
  102 +1,0,2010,4,25,2010,4,25,2010,4,26
  103 +1,0,2010,4,26,2010,4,26,2010,4,27
  104 +1,0,2010,4,27,2010,4,27,2010,4,28
  105 +1,0,2010,4,28,2010,4,28,2010,4,29
  106 +1,0,2010,4,31,2010,4,31,2010,5,1
  107 +1,0,2010,5,1,2010,5,1,2010,5,2
  108 +1,0,2010,5,2,2010,5,2,2010,5,3
  109 +1,0,2010,5,3,2010,5,3,2010,5,4
  110 +1,0,2010,5,4,2010,5,4,2010,5,5
  111 +1,0,2010,5,7,2010,5,7,2010,5,8
  112 +1,0,2010,5,8,2010,5,8,2010,5,9
  113 +1,0,2010,5,9,2010,5,9,2010,5,10
  114 +1,0,2010,5,10,2010,5,10,2010,5,11
  115 +1,0,2010,5,11,2010,5,11,2010,5,12
  116 +1,0,2010,5,14,2010,5,14,2010,5,15
  117 +1,0,2010,5,15,2010,5,15,2010,5,16
  118 +1,0,2010,5,16,2010,5,16,2010,5,17
  119 +1,0,2010,5,17,2010,5,17,2010,5,18
  120 +1,0,2010,5,18,2010,5,18,2010,5,19
  121 +1,0,2010,5,21,2010,5,21,2010,5,22
  122 +1,0,2010,5,22,2010,5,22,2010,5,23
  123 +1,0,2010,5,23,2010,5,23,2010,5,24
  124 +1,0,2010,5,24,2010,5,24,2010,5,25
  125 +1,0,2010,5,25,2010,5,25,2010,5,26
  126 +1,0,2010,5,28,2010,5,28,2010,5,29
  127 +1,0,2010,5,29,2010,5,29,2010,5,30
  128 +1,0,2010,5,30,2010,5,30,2010,6,1
  129 +1,0,2010,6,1,2010,6,1,2010,6,2
  130 +1,0,2010,6,2,2010,6,2,2010,6,3
  131 +1,0,2010,6,5,2010,6,5,2010,6,6
  132 +1,0,2010,6,6,2010,6,6,2010,6,7
  133 +1,0,2010,6,7,2010,6,7,2010,6,8
  134 +1,0,2010,6,8,2010,6,8,2010,6,9
  135 +1,0,2010,6,9,2010,6,9,2010,6,10
  136 +1,0,2010,6,12,2010,6,12,2010,6,13
  137 +1,0,2010,6,13,2010,6,13,2010,6,14
  138 +1,0,2010,6,14,2010,6,14,2010,6,15
  139 +1,0,2010,6,15,2010,6,15,2010,6,16
  140 +1,0,2010,6,16,2010,6,16,2010,6,17
  141 +1,0,2010,6,19,2010,6,19,2010,6,20
  142 +1,0,2010,6,20,2010,6,20,2010,6,21
  143 +1,0,2010,6,21,2010,6,21,2010,6,22
  144 +1,0,2010,6,22,2010,6,22,2010,6,23
  145 +1,0,2010,6,23,2010,6,23,2010,6,24
  146 +1,0,2010,6,26,2010,6,26,2010,6,27
  147 +1,0,2010,6,27,2010,6,27,2010,6,28
  148 +1,0,2010,6,28,2010,6,28,2010,6,29
  149 +1,0,2010,6,29,2010,6,29,2010,6,30
  150 +1,0,2010,6,30,2010,6,30,2010,6,31
  151 +1,0,2010,7,2,2010,7,2,2010,7,3
  152 +1,0,2010,7,3,2010,7,3,2010,7,4
  153 +1,0,2010,7,4,2010,7,4,2010,7,5
  154 +1,0,2010,7,5,2010,7,5,2010,7,6
  155 +1,0,2010,7,6,2010,7,6,2010,7,7
  156 +1,0,2010,7,9,2010,7,9,2010,7,10
  157 +1,0,2010,7,10,2010,7,10,2010,7,11
  158 +1,0,2010,7,11,2010,7,11,2010,7,12
  159 +1,0,2010,7,12,2010,7,12,2010,7,13
  160 +1,0,2010,7,13,2010,7,13,2010,7,14
  161 +1,0,2010,7,16,2010,7,16,2010,7,17
  162 +1,0,2010,7,17,2010,7,17,2010,7,18
  163 +1,0,2010,7,18,2010,7,18,2010,7,19
  164 +1,0,2010,7,19,2010,7,19,2010,7,20
  165 +1,0,2010,7,20,2010,7,20,2010,7,21
  166 +1,0,2010,7,23,2010,7,23,2010,7,24
  167 +1,0,2010,7,24,2010,7,24,2010,7,25
  168 +1,0,2010,7,25,2010,7,25,2010,7,26
  169 +1,0,2010,7,26,2010,7,26,2010,7,27
  170 +1,0,2010,7,27,2010,7,27,2010,7,28
  171 +1,0,2010,7,30,2010,7,30,2010,7,31
  172 +1,0,2010,7,31,2010,7,31,2010,8,1
  173 +1,0,2010,8,1,2010,8,1,2010,8,2
  174 +1,0,2010,8,2,2010,8,2,2010,8,3
  175 +1,0,2010,8,3,2010,8,3,2010,8,4
  176 +1,0,2010,8,6,2010,8,6,2010,8,7
  177 +1,0,2010,8,7,2010,8,7,2010,8,8
  178 +1,0,2010,8,8,2010,8,8,2010,8,9
  179 +1,0,2010,8,9,2010,8,9,2010,8,10
  180 +1,0,2010,8,10,2010,8,10,2010,8,11
  181 +1,0,2010,8,13,2010,8,13,2010,8,14
  182 +1,0,2010,8,14,2010,8,14,2010,8,15
  183 +1,0,2010,8,15,2010,8,15,2010,8,16
  184 +1,0,2010,8,16,2010,8,16,2010,8,17
  185 +1,0,2010,8,17,2010,8,17,2010,8,18
  186 +1,0,2010,8,20,2010,8,20,2010,8,21
  187 +1,0,2010,8,21,2010,8,21,2010,8,22
  188 +1,0,2010,8,22,2010,8,22,2010,8,23
  189 +1,0,2010,8,23,2010,8,23,2010,8,24
  190 +1,0,2010,8,24,2010,8,24,2010,8,25
  191 +1,0,2010,8,27,2010,8,27,2010,8,28
  192 +1,0,2010,8,28,2010,8,28,2010,8,29
  193 +1,0,2010,8,29,2010,8,29,2010,8,30
  194 +1,0,2010,8,30,2010,8,30,2010,9,1
  195 +1,0,2010,9,1,2010,9,1,2010,9,2
  196 +1,0,2010,9,4,2010,9,4,2010,9,5
  197 +1,0,2010,9,5,2010,9,5,2010,9,6
  198 +1,0,2010,9,6,2010,9,6,2010,9,7
  199 +1,0,2010,9,7,2010,9,7,2010,9,8
  200 +1,0,2010,9,8,2010,9,8,2010,9,9
  201 +1,0,2010,9,11,2010,9,11,2010,9,12
  202 +1,0,2010,9,12,2010,9,12,2010,9,13
  203 +1,0,2010,9,13,2010,9,13,2010,9,14
  204 +1,0,2010,9,14,2010,9,14,2010,9,15
  205 +1,0,2010,9,15,2010,9,15,2010,9,16
  206 +1,0,2010,9,18,2010,9,18,2010,9,19
  207 +1,0,2010,9,19,2010,9,19,2010,9,20
  208 +1,0,2010,9,20,2010,9,20,2010,9,21
  209 +1,0,2010,9,21,2010,9,21,2010,9,22
  210 +1,0,2010,9,22,2010,9,22,2010,9,23
  211 +1,0,2010,9,25,2010,9,25,2010,9,26
  212 +1,0,2010,9,26,2010,9,26,2010,9,27
  213 +1,0,2010,9,27,2010,9,27,2010,9,28
  214 +1,0,2010,9,28,2010,9,28,2010,9,29
  215 +1,0,2010,9,29,2010,9,29,2010,9,30
  216 +1,0,2010,10,1,2010,10,1,2010,10,2
  217 +1,0,2010,10,2,2010,10,2,2010,10,3
  218 +1,0,2010,10,3,2010,10,3,2010,10,4
  219 +1,0,2010,10,4,2010,10,4,2010,10,5
  220 +1,0,2010,10,5,2010,10,5,2010,10,6
  221 +1,0,2010,10,8,2010,10,8,2010,10,9
  222 +1,0,2010,10,9,2010,10,9,2010,10,10
  223 +1,0,2010,10,10,2010,10,10,2010,10,11
  224 +1,0,2010,10,11,2010,10,11,2010,10,12
  225 +1,0,2010,10,12,2010,10,12,2010,10,13
  226 +1,0,2010,10,15,2010,10,15,2010,10,16
  227 +1,0,2010,10,16,2010,10,16,2010,10,17
  228 +1,0,2010,10,17,2010,10,17,2010,10,18
  229 +1,0,2010,10,18,2010,10,18,2010,10,19
  230 +1,0,2010,10,19,2010,10,19,2010,10,20
  231 +1,0,2010,10,22,2010,10,22,2010,10,23
  232 +1,0,2010,10,23,2010,10,23,2010,10,24
  233 +1,0,2010,10,24,2010,10,24,2010,10,25
  234 +1,0,2010,10,25,2010,10,25,2010,10,26
  235 +1,0,2010,10,26,2010,10,26,2010,10,27
  236 +1,0,2010,10,29,2010,10,29,2010,10,30
  237 +1,0,2010,10,30,2010,10,30,2010,11,1
  238 +1,0,2010,11,1,2010,11,1,2010,11,2
  239 +1,0,2010,11,2,2010,11,2,2010,11,3
  240 +1,0,2010,11,3,2010,11,3,2010,11,4
  241 +1,0,2010,11,6,2010,11,6,2010,11,7
  242 +1,0,2010,11,7,2010,11,7,2010,11,8
  243 +1,0,2010,11,8,2010,11,8,2010,11,9
  244 +1,0,2010,11,9,2010,11,9,2010,11,10
  245 +1,0,2010,11,10,2010,11,10,2010,11,11
  246 +1,0,2010,11,13,2010,11,13,2010,11,14
  247 +1,0,2010,11,14,2010,11,14,2010,11,15
  248 +1,0,2010,11,15,2010,11,15,2010,11,16
  249 +1,0,2010,11,16,2010,11,16,2010,11,17
  250 +1,0,2010,11,17,2010,11,17,2010,11,18
  251 +1,0,2010,11,20,2010,11,20,2010,11,21
  252 +1,0,2010,11,21,2010,11,21,2010,11,22
  253 +1,0,2010,11,22,2010,11,22,2010,11,23
  254 +1,0,2010,11,23,2010,11,23,2010,11,24
  255 +1,0,2010,11,24,2010,11,24,2010,11,25
  256 +1,0,2010,11,27,2010,11,27,2010,11,28
  257 +1,0,2010,11,28,2010,11,28,2010,11,29
  258 +1,0,2010,11,29,2010,11,29,2010,11,30
  259 +1,0,2010,11,30,2010,11,30,2010,11,31
  260 +1,0,2010,11,31,2010,11,31,2011,0,1
  261 +1,0,2011,0,3,2011,0,3,2011,0,4
  262 +1,0,2011,0,4,2011,0,4,2011,0,5
  263 +1,0,2011,0,5,2011,0,5,2011,0,6
  264 +1,0,2011,0,6,2011,0,6,2011,0,7
  265 +1,0,2011,0,7,2011,0,7,2011,0,8
  266 +1,0,2011,0,10,2011,0,10,2011,0,11
  267 +1,0,2011,0,11,2011,0,11,2011,0,12
  268 +1,0,2011,0,12,2011,0,12,2011,0,13
  269 +1,0,2011,0,13,2011,0,13,2011,0,14
  270 +1,0,2011,0,14,2011,0,14,2011,0,15
  271 +1,0,2011,0,17,2011,0,17,2011,0,18
  272 +1,0,2011,0,18,2011,0,18,2011,0,19
  273 +1,0,2011,0,19,2011,0,19,2011,0,20
  274 +1,0,2011,0,20,2011,0,20,2011,0,21
  275 +1,0,2011,0,21,2011,0,21,2011,0,22
  276 +1,0,2011,0,24,2011,0,24,2011,0,25
  277 +1,0,2011,0,25,2011,0,25,2011,0,26
  278 +1,0,2011,0,26,2011,0,26,2011,0,27
  279 +1,0,2011,0,27,2011,0,27,2011,0,28
  280 +1,0,2011,0,28,2011,0,28,2011,0,29
  281 +1,0,2011,0,31,2011,0,31,2011,1,1
  282 +1,0,2011,1,1,2011,1,1,2011,1,2
  283 +1,0,2011,1,2,2011,1,2,2011,1,3
  284 +1,0,2011,1,3,2011,1,3,2011,1,4
  285 +1,0,2011,1,4,2011,1,4,2011,1,5
  286 +1,0,2011,1,7,2011,1,7,2011,1,8
  287 +1,0,2011,1,8,2011,1,8,2011,1,9
  288 +1,0,2011,1,9,2011,1,9,2011,1,10
  289 +1,0,2011,1,10,2011,1,10,2011,1,11
  290 +1,0,2011,1,11,2011,1,11,2011,1,12
  291 +1,0,2011,1,14,2011,1,14,2011,1,15
  292 +1,0,2011,1,15,2011,1,15,2011,1,16
  293 +1,0,2011,1,16,2011,1,16,2011,1,17
  294 +1,0,2011,1,17,2011,1,17,2011,1,18
  295 +1,0,2011,1,18,2011,1,18,2011,1,19
  296 +1,0,2011,1,21,2011,1,21,2011,1,22
  297 +1,0,2011,1,22,2011,1,22,2011,1,23
  298 +1,0,2011,1,23,2011,1,23,2011,1,24
  299 +1,0,2011,1,24,2011,1,24,2011,1,25
  300 +1,0,2011,1,25,2011,1,25,2011,1,26
  301 +1,0,2011,1,28,2011,1,28,2011,2,1
  302 +1,0,2011,2,1,2011,2,1,2011,2,2
  303 +1,0,2011,2,2,2011,2,2,2011,2,3
  304 +1,0,2011,2,3,2011,2,3,2011,2,4
  305 +1,0,2011,2,4,2011,2,4,2011,2,5
  306 +1,0,2011,2,7,2011,2,7,2011,2,8
  307 +1,0,2011,2,8,2011,2,8,2011,2,9
  308 +1,0,2011,2,9,2011,2,9,2011,2,10
  309 +1,0,2011,2,10,2011,2,10,2011,2,11
  310 +1,0,2011,2,11,2011,2,11,2011,2,12
  311 +1,0,2011,2,14,2011,2,14,2011,2,15
  312 +1,0,2011,2,15,2011,2,15,2011,2,16
  313 +1,0,2011,2,16,2011,2,16,2011,2,17
  314 +1,0,2011,2,17,2011,2,17,2011,2,18
  315 +1,0,2011,2,18,2011,2,18,2011,2,19
  316 +1,0,2011,2,21,2011,2,21,2011,2,22
  317 +1,0,2011,2,22,2011,2,22,2011,2,23
  318 +1,0,2011,2,23,2011,2,23,2011,2,24
  319 +1,0,2011,2,24,2011,2,24,2011,2,25
  320 +1,0,2011,2,25,2011,2,25,2011,2,26
  321 +1,0,2011,2,28,2011,2,28,2011,2,29
  322 +1,0,2011,2,29,2011,2,29,2011,2,30
  323 +1,0,2011,2,30,2011,2,30,2011,2,31
  324 +1,0,2011,2,31,2011,2,31,2011,3,1
  325 +1,0,2011,3,1,2011,3,1,2011,3,2
  326 +1,0,2011,3,4,2011,3,4,2011,3,5
  327 +1,0,2011,3,5,2011,3,5,2011,3,6
  328 +1,0,2011,3,6,2011,3,6,2011,3,7
  329 +1,0,2011,3,7,2011,3,7,2011,3,8
  330 +1,0,2011,3,8,2011,3,8,2011,3,9
  331 +1,0,2011,3,11,2011,3,11,2011,3,12
  332 +1,0,2011,3,12,2011,3,12,2011,3,13
  333 +1,0,2011,3,13,2011,3,13,2011,3,14
  334 +1,0,2011,3,14,2011,3,14,2011,3,15
  335 +1,0,2011,3,15,2011,3,15,2011,3,16
  336 +1,0,2011,3,18,2011,3,18,2011,3,19
  337 +1,0,2011,3,19,2011,3,19,2011,3,20
  338 +1,0,2011,3,20,2011,3,20,2011,3,21
  339 +1,0,2011,3,21,2011,3,21,2011,3,22
  340 +1,0,2011,3,22,2011,3,22,2011,3,23
  341 +1,0,2011,3,25,2011,3,25,2011,3,26
  342 +1,0,2011,3,26,2011,3,26,2011,3,27
  343 +1,0,2011,3,27,2011,3,27,2011,3,28
  344 +1,0,2011,3,28,2011,3,28,2011,3,29
  345 +1,0,2011,3,29,2011,3,29,2011,3,30
  346 +1,0,2011,4,2,2011,4,2,2011,4,3
  347 +1,0,2011,4,3,2011,4,3,2011,4,4
  348 +1,0,2011,4,4,2011,4,4,2011,4,5
  349 +1,0,2011,4,5,2011,4,5,2011,4,6
  350 +1,0,2011,4,6,2011,4,6,2011,4,7
  351 +1,0,2011,4,9,2011,4,9,2011,4,10
  352 +1,0,2011,4,10,2011,4,10,2011,4,11
  353 +1,0,2011,4,11,2011,4,11,2011,4,12
  354 +1,0,2011,4,12,2011,4,12,2011,4,13
  355 +1,0,2011,4,13,2011,4,13,2011,4,14
  356 +1,0,2011,4,16,2011,4,16,2011,4,17
  357 +1,0,2011,4,17,2011,4,17,2011,4,18
  358 +1,0,2011,4,18,2011,4,18,2011,4,19
  359 +1,0,2011,4,19,2011,4,19,2011,4,20
  360 +1,0,2011,4,20,2011,4,20,2011,4,21
  361 +1,0,2011,4,23,2011,4,23,2011,4,24
  362 +1,0,2011,4,24,2011,4,24,2011,4,25
  363 +1,0,2011,4,25,2011,4,25,2011,4,26
  364 +1,0,2011,4,26,2011,4,26,2011,4,27
  365 +1,0,2011,4,27,2011,4,27,2011,4,28
  366 +1,0,2011,4,30,2011,4,30,2011,4,31
  367 +1,0,2011,4,31,2011,4,31,2011,5,1
  368 +1,0,2011,5,1,2011,5,1,2011,5,2
  369 +1,0,2011,5,2,2011,5,2,2011,5,3
  370 +1,0,2011,5,3,2011,5,3,2011,5,4
  371 +1,0,2011,5,6,2011,5,6,2011,5,7
  372 +1,0,2011,5,7,2011,5,7,2011,5,8
  373 +1,0,2011,5,8,2011,5,8,2011,5,9
  374 +1,0,2011,5,9,2011,5,9,2011,5,10
  375 +1,0,2011,5,10,2011,5,10,2011,5,11
  376 +1,0,2011,5,13,2011,5,13,2011,5,14
  377 +1,0,2011,5,14,2011,5,14,2011,5,15
  378 +1,0,2011,5,15,2011,5,15,2011,5,16
  379 +1,0,2011,5,16,2011,5,16,2011,5,17
  380 +1,0,2011,5,17,2011,5,17,2011,5,18
  381 +1,0,2011,5,20,2011,5,20,2011,5,21
  382 +1,0,2011,5,21,2011,5,21,2011,5,22
  383 +1,0,2011,5,22,2011,5,22,2011,5,23
  384 +1,0,2011,5,23,2011,5,23,2011,5,24
  385 +1,0,2011,5,24,2011,5,24,2011,5,25
  386 +1,0,2011,5,27,2011,5,27,2011,5,28
  387 +1,0,2011,5,28,2011,5,28,2011,5,29
  388 +1,0,2011,5,29,2011,5,29,2011,5,30
  389 +1,0,2011,5,30,2011,5,30,2011,6,1
  390 +1,0,2011,6,1,2011,6,1,2011,6,2
  391 +1,0,2011,6,4,2011,6,4,2011,6,5
  392 +1,0,2011,6,5,2011,6,5,2011,6,6
  393 +1,0,2011,6,6,2011,6,6,2011,6,7
  394 +1,0,2011,6,7,2011,6,7,2011,6,8
  395 +1,0,2011,6,8,2011,6,8,2011,6,9
  396 +1,0,2011,6,11,2011,6,11,2011,6,12
  397 +1,0,2011,6,12,2011,6,12,2011,6,13
  398 +1,0,2011,6,13,2011,6,13,2011,6,14
  399 +1,0,2011,6,14,2011,6,14,2011,6,15
  400 +1,0,2011,6,15,2011,6,15,2011,6,16
  401 +1,0,2011,6,18,2011,6,18,2011,6,19
  402 +1,0,2011,6,19,2011,6,19,2011,6,20
  403 +1,0,2011,6,20,2011,6,20,2011,6,21
  404 +1,0,2011,6,21,2011,6,21,2011,6,22
  405 +1,0,2011,6,22,2011,6,22,2011,6,23
  406 +1,0,2011,6,25,2011,6,25,2011,6,26
  407 +1,0,2011,6,26,2011,6,26,2011,6,27
  408 +1,0,2011,6,27,2011,6,27,2011,6,28
  409 +1,0,2011,6,28,2011,6,28,2011,6,29
  410 +1,0,2011,6,29,2011,6,29,2011,6,30
  411 +1,0,2011,7,1,2011,7,1,2011,7,2
  412 +1,0,2011,7,2,2011,7,2,2011,7,3
  413 +1,0,2011,7,3,2011,7,3,2011,7,4
  414 +1,0,2011,7,4,2011,7,4,2011,7,5
  415 +1,0,2011,7,5,2011,7,5,2011,7,6
  416 +1,0,2011,7,8,2011,7,8,2011,7,9
  417 +1,0,2011,7,9,2011,7,9,2011,7,10
  418 +1,0,2011,7,10,2011,7,10,2011,7,11
  419 +1,0,2011,7,11,2011,7,11,2011,7,12
  420 +1,0,2011,7,12,2011,7,12,2011,7,13
  421 +1,0,2011,7,15,2011,7,15,2011,7,16
  422 +1,0,2011,7,16,2011,7,16,2011,7,17
  423 +1,0,2011,7,17,2011,7,17,2011,7,18
  424 +1,0,2011,7,18,2011,7,18,2011,7,19
  425 +1,0,2011,7,19,2011,7,19,2011,7,20
  426 +1,0,2011,7,22,2011,7,22,2011,7,23
  427 +1,0,2011,7,23,2011,7,23,2011,7,24
  428 +1,0,2011,7,24,2011,7,24,2011,7,25
  429 +1,0,2011,7,25,2011,7,25,2011,7,26
  430 +1,0,2011,7,26,2011,7,26,2011,7,27
  431 +1,0,2011,7,29,2011,7,29,2011,7,30
  432 +1,0,2011,7,30,2011,7,30,2011,7,31
  433 +1,0,2011,7,31,2011,7,31,2011,8,1
  434 +1,0,2011,8,1,2011,8,1,2011,8,2
  435 +1,0,2011,8,2,2011,8,2,2011,8,3
  436 +1,0,2011,8,5,2011,8,5,2011,8,6
  437 +1,0,2011,8,6,2011,8,6,2011,8,7
  438 +1,0,2011,8,7,2011,8,7,2011,8,8
  439 +1,0,2011,8,8,2011,8,8,2011,8,9
  440 +1,0,2011,8,9,2011,8,9,2011,8,10
  441 +1,0,2011,8,12,2011,8,12,2011,8,13
  442 +1,0,2011,8,13,2011,8,13,2011,8,14
  443 +1,0,2011,8,14,2011,8,14,2011,8,15
  444 +1,0,2011,8,15,2011,8,15,2011,8,16
  445 +1,0,2011,8,16,2011,8,16,2011,8,17
  446 +1,0,2011,8,19,2011,8,19,2011,8,20
  447 +1,0,2011,8,20,2011,8,20,2011,8,21
  448 +1,0,2011,8,21,2011,8,21,2011,8,22
  449 +1,0,2011,8,22,2011,8,22,2011,8,23
  450 +1,0,2011,8,23,2011,8,23,2011,8,24
  451 +1,0,2011,8,26,2011,8,26,2011,8,27
  452 +1,0,2011,8,27,2011,8,27,2011,8,28
  453 +1,0,2011,8,28,2011,8,28,2011,8,29
  454 +1,0,2011,8,29,2011,8,29,2011,8,30
  455 +1,0,2011,8,30,2011,8,30,2011,9,1
  456 +1,0,2011,9,3,2011,9,3,2011,9,4
  457 +1,0,2011,9,4,2011,9,4,2011,9,5
  458 +1,0,2011,9,5,2011,9,5,2011,9,6
  459 +1,0,2011,9,6,2011,9,6,2011,9,7
  460 +1,0,2011,9,7,2011,9,7,2011,9,8
  461 +1,0,2011,9,10,2011,9,10,2011,9,11
  462 +1,0,2011,9,11,2011,9,11,2011,9,12
  463 +1,0,2011,9,12,2011,9,12,2011,9,13
  464 +1,0,2011,9,13,2011,9,13,2011,9,14
  465 +1,0,2011,9,14,2011,9,14,2011,9,15
  466 +1,0,2011,9,17,2011,9,17,2011,9,18
  467 +1,0,2011,9,18,2011,9,18,2011,9,19
  468 +1,0,2011,9,19,2011,9,19,2011,9,20
  469 +1,0,2011,9,20,2011,9,20,2011,9,21
  470 +1,0,2011,9,21,2011,9,21,2011,9,22
  471 +1,0,2011,9,24,2011,9,24,2011,9,25
  472 +1,0,2011,9,25,2011,9,25,2011,9,26
  473 +1,0,2011,9,26,2011,9,26,2011,9,27
  474 +1,0,2011,9,27,2011,9,27,2011,9,28
  475 +1,0,2011,9,28,2011,9,28,2011,9,29
  476 +1,0,2011,9,31,2011,9,31,2011,10,1
  477 +1,0,2011,10,1,2011,10,1,2011,10,2
  478 +1,0,2011,10,2,2011,10,2,2011,10,3
  479 +1,0,2011,10,3,2011,10,3,2011,10,4
  480 +1,0,2011,10,4,2011,10,4,2011,10,5
  481 +1,0,2011,10,7,2011,10,7,2011,10,8
  482 +1,0,2011,10,8,2011,10,8,2011,10,9
  483 +1,0,2011,10,9,2011,10,9,2011,10,10
  484 +1,0,2011,10,10,2011,10,10,2011,10,11
  485 +1,0,2011,10,11,2011,10,11,2011,10,12
  486 +1,0,2011,10,14,2011,10,14,2011,10,15
  487 +1,0,2011,10,15,2011,10,15,2011,10,16
  488 +1,0,2011,10,16,2011,10,16,2011,10,17
  489 +1,0,2011,10,17,2011,10,17,2011,10,18
  490 +1,0,2011,10,18,2011,10,18,2011,10,19
  491 +1,0,2011,10,21,2011,10,21,2011,10,22
  492 +1,0,2011,10,22,2011,10,22,2011,10,23
  493 +1,0,2011,10,23,2011,10,23,2011,10,24
  494 +1,0,2011,10,24,2011,10,24,2011,10,25
  495 +1,0,2011,10,25,2011,10,25,2011,10,26
  496 +1,0,2011,10,28,2011,10,28,2011,10,29
  497 +1,0,2011,10,29,2011,10,29,2011,10,30
  498 +1,0,2011,10,30,2011,10,30,2011,11,1
  499 +1,0,2011,11,1,2011,11,1,2011,11,2
  500 +1,0,2011,11,2,2011,11,2,2011,11,3
  501 +1,0,2011,11,5,2011,11,5,2011,11,6
  502 +1,0,2011,11,6,2011,11,6,2011,11,7
  503 +1,0,2011,11,7,2011,11,7,2011,11,8
  504 +1,0,2011,11,8,2011,11,8,2011,11,9
  505 +1,0,2011,11,9,2011,11,9,2011,11,10
  506 +1,0,2011,11,12,2011,11,12,2011,11,13
  507 +1,0,2011,11,13,2011,11,13,2011,11,14
  508 +1,0,2011,11,14,2011,11,14,2011,11,15
  509 +1,0,2011,11,15,2011,11,15,2011,11,16
  510 +1,0,2011,11,16,2011,11,16,2011,11,17
  511 +1,0,2011,11,19,2011,11,19,2011,11,20
  512 +1,0,2011,11,20,2011,11,20,2011,11,21
  513 +1,0,2011,11,21,2011,11,21,2011,11,22
  514 +1,0,2011,11,22,2011,11,22,2011,11,23
  515 +1,0,2011,11,23,2011,11,23,2011,11,24
  516 +1,0,2011,11,26,2011,11,26,2011,11,27
  517 +1,0,2011,11,27,2011,11,27,2011,11,28
  518 +1,0,2011,11,28,2011,11,28,2011,11,29
  519 +1,0,2011,11,29,2011,11,29,2011,11,30
  520 +1,0,2011,11,30,2011,11,30,2011,11,31
  521 +1,0,2012,0,2,2012,0,2,2012,0,3
  522 +1,0,2012,0,3,2012,0,3,2012,0,4
  523 +1,0,2012,0,4,2012,0,4,2012,0,5
  524 +1,0,2012,0,5,2012,0,5,2012,0,6
  525 +1,0,2012,0,6,2012,0,6,2012,0,7
  526 +1,0,2012,0,9,2012,0,9,2012,0,10
  527 +1,0,2012,0,10,2012,0,10,2012,0,11
  528 +1,0,2012,0,11,2012,0,11,2012,0,12
  529 +1,0,2012,0,12,2012,0,12,2012,0,13
  530 +1,0,2012,0,13,2012,0,13,2012,0,14
  531 +1,0,2012,0,16,2012,0,16,2012,0,17
  532 +1,0,2012,0,17,2012,0,17,2012,0,18
  533 +1,0,2012,0,18,2012,0,18,2012,0,19
  534 +1,0,2012,0,19,2012,0,19,2012,0,20
  535 +1,0,2012,0,20,2012,0,20,2012,0,21
  536 +1,0,2012,0,23,2012,0,23,2012,0,24
  537 +1,0,2012,0,24,2012,0,24,2012,0,25
  538 +1,0,2012,0,25,2012,0,25,2012,0,26
  539 +1,0,2012,0,26,2012,0,26,2012,0,27
  540 +1,0,2012,0,27,2012,0,27,2012,0,28
  541 +1,0,2012,0,30,2012,0,30,2012,0,31
  542 +1,0,2012,0,31,2012,0,31,2012,1,1
  543 +1,0,2012,1,1,2012,1,1,2012,1,2
  544 +1,0,2012,1,2,2012,1,2,2012,1,3
  545 +1,0,2012,1,3,2012,1,3,2012,1,4
  546 +1,0,2012,1,6,2012,1,6,2012,1,7
  547 +1,0,2012,1,7,2012,1,7,2012,1,8
  548 +1,0,2012,1,8,2012,1,8,2012,1,9
  549 +1,0,2012,1,9,2012,1,9,2012,1,10
  550 +1,0,2012,1,10,2012,1,10,2012,1,11
  551 +1,0,2012,1,13,2012,1,13,2012,1,14
  552 +1,0,2012,1,14,2012,1,14,2012,1,15
  553 +1,0,2012,1,15,2012,1,15,2012,1,16
  554 +1,0,2012,1,16,2012,1,16,2012,1,17
  555 +1,0,2012,1,17,2012,1,17,2012,1,18
  556 +1,0,2012,1,20,2012,1,20,2012,1,21
  557 +1,0,2012,1,21,2012,1,21,2012,1,22
  558 +1,0,2012,1,22,2012,1,22,2012,1,23
  559 +1,0,2012,1,23,2012,1,23,2012,1,24
  560 +1,0,2012,1,24,2012,1,24,2012,1,25
  561 +1,0,2012,1,27,2012,1,27,2012,1,28
  562 +1,0,2012,1,28,2012,1,28,2012,1,29
  563 +1,0,2012,1,29,2012,1,29,2012,2,1
  564 +1,0,2012,2,1,2012,2,1,2012,2,2
  565 +1,0,2012,2,2,2012,2,2,2012,2,3
  566 +1,0,2012,2,5,2012,2,5,2012,2,6
  567 +1,0,2012,2,6,2012,2,6,2012,2,7
  568 +1,0,2012,2,7,2012,2,7,2012,2,8
  569 +1,0,2012,2,8,2012,2,8,2012,2,9
  570 +1,0,2012,2,9,2012,2,9,2012,2,10
  571 +1,0,2012,2,12,2012,2,12,2012,2,13
  572 +1,0,2012,2,13,2012,2,13,2012,2,14
  573 +1,0,2012,2,14,2012,2,14,2012,2,15
  574 +1,0,2012,2,15,2012,2,15,2012,2,16
  575 +1,0,2012,2,16,2012,2,16,2012,2,17
  576 +1,0,2012,2,19,2012,2,19,2012,2,20
  577 +1,0,2012,2,20,2012,2,20,2012,2,21
  578 +1,0,2012,2,21,2012,2,21,2012,2,22
  579 +1,0,2012,2,22,2012,2,22,2012,2,23
  580 +1,0,2012,2,23,2012,2,23,2012,2,24
  581 +1,0,2012,2,26,2012,2,26,2012,2,27
  582 +1,0,2012,2,27,2012,2,27,2012,2,28
  583 +1,0,2012,2,28,2012,2,28,2012,2,29
  584 +1,0,2012,2,29,2012,2,29,2012,2,30
  585 +1,0,2012,2,30,2012,2,30,2012,2,31
  586 +1,0,2012,3,2,2012,3,2,2012,3,3
  587 +1,0,2012,3,3,2012,3,3,2012,3,4
  588 +1,0,2012,3,4,2012,3,4,2012,3,5
  589 +1,0,2012,3,5,2012,3,5,2012,3,6
  590 +1,0,2012,3,6,2012,3,6,2012,3,7
  591 +1,0,2012,3,9,2012,3,9,2012,3,10
  592 +1,0,2012,3,10,2012,3,10,2012,3,11
  593 +1,0,2012,3,11,2012,3,11,2012,3,12
  594 +1,0,2012,3,12,2012,3,12,2012,3,13
  595 +1,0,2012,3,13,2012,3,13,2012,3,14
  596 +1,0,2012,3,16,2012,3,16,2012,3,17
  597 +1,0,2012,3,17,2012,3,17,2012,3,18
  598 +1,0,2012,3,18,2012,3,18,2012,3,19
  599 +1,0,2012,3,19,2012,3,19,2012,3,20
  600 +1,0,2012,3,20,2012,3,20,2012,3,21
  601 +1,0,2012,3,23,2012,3,23,2012,3,24
  602 +1,0,2012,3,24,2012,3,24,2012,3,25
  603 +1,0,2012,3,25,2012,3,25,2012,3,26
  604 +1,0,2012,3,26,2012,3,26,2012,3,27
  605 +1,0,2012,3,27,2012,3,27,2012,3,28
  606 +1,0,2012,3,30,2012,3,30,2012,4,1
  607 +1,0,2012,4,1,2012,4,1,2012,4,2
  608 +1,0,2012,4,2,2012,4,2,2012,4,3
  609 +1,0,2012,4,3,2012,4,3,2012,4,4
  610 +1,0,2012,4,4,2012,4,4,2012,4,5
  611 +1,0,2012,4,7,2012,4,7,2012,4,8
  612 +1,0,2012,4,8,2012,4,8,2012,4,9
  613 +1,0,2012,4,9,2012,4,9,2012,4,10
  614 +1,0,2012,4,10,2012,4,10,2012,4,11
  615 +1,0,2012,4,11,2012,4,11,2012,4,12
  616 +1,0,2012,4,14,2012,4,14,2012,4,15
  617 +1,0,2012,4,15,2012,4,15,2012,4,16
  618 +1,0,2012,4,16,2012,4,16,2012,4,17
  619 +1,0,2012,4,17,2012,4,17,2012,4,18
  620 +1,0,2012,4,18,2012,4,18,2012,4,19
  621 +1,0,2012,4,21,2012,4,21,2012,4,22
  622 +1,0,2012,4,22,2012,4,22,2012,4,23
  623 +1,0,2012,4,23,2012,4,23,2012,4,24
  624 +1,0,2012,4,24,2012,4,24,2012,4,25
  625 +1,0,2012,4,25,2012,4,25,2012,4,26
  626 +1,0,2012,4,28,2012,4,28,2012,4,29
  627 +1,0,2012,4,29,2012,4,29,2012,4,30
  628 +1,0,2012,4,30,2012,4,30,2012,4,31
  629 +1,0,2012,4,31,2012,4,31,2012,5,1
  630 +1,0,2012,5,1,2012,5,1,2012,5,2
  631 +1,0,2012,5,4,2012,5,4,2012,5,5
  632 +1,0,2012,5,5,2012,5,5,2012,5,6
  633 +1,0,2012,5,6,2012,5,6,2012,5,7
  634 +1,0,2012,5,7,2012,5,7,2012,5,8
  635 +1,0,2012,5,8,2012,5,8,2012,5,9
  636 +1,0,2012,5,11,2012,5,11,2012,5,12
  637 +1,0,2012,5,12,2012,5,12,2012,5,13
  638 +1,0,2012,5,13,2012,5,13,2012,5,14
  639 +1,0,2012,5,14,2012,5,14,2012,5,15
  640 +1,0,2012,5,15,2012,5,15,2012,5,16
  641 +1,0,2012,5,18,2012,5,18,2012,5,19
  642 +1,0,2012,5,19,2012,5,19,2012,5,20
  643 +1,0,2012,5,20,2012,5,20,2012,5,21
  644 +1,0,2012,5,21,2012,5,21,2012,5,22
  645 +1,0,2012,5,22,2012,5,22,2012,5,23
  646 +1,0,2012,5,25,2012,5,25,2012,5,26
  647 +1,0,2012,5,26,2012,5,26,2012,5,27
  648 +1,0,2012,5,27,2012,5,27,2012,5,28
  649 +1,0,2012,5,28,2012,5,28,2012,5,29
  650 +1,0,2012,5,29,2012,5,29,2012,5,30
  651 +1,0,2012,6,2,2012,6,2,2012,6,3
  652 +1,0,2012,6,3,2012,6,3,2012,6,4
  653 +1,0,2012,6,4,2012,6,4,2012,6,5
  654 +1,0,2012,6,5,2012,6,5,2012,6,6
  655 +1,0,2012,6,6,2012,6,6,2012,6,7
  656 +1,0,2012,6,9,2012,6,9,2012,6,10
  657 +1,0,2012,6,10,2012,6,10,2012,6,11
  658 +1,0,2012,6,11,2012,6,11,2012,6,12
  659 +1,0,2012,6,12,2012,6,12,2012,6,13
  660 +1,0,2012,6,13,2012,6,13,2012,6,14
  661 +1,0,2012,6,16,2012,6,16,2012,6,17
  662 +1,0,2012,6,17,2012,6,17,2012,6,18
  663 +1,0,2012,6,18,2012,6,18,2012,6,19
  664 +1,0,2012,6,19,2012,6,19,2012,6,20
  665 +1,0,2012,6,20,2012,6,20,2012,6,21
  666 +1,0,2012,6,23,2012,6,23,2012,6,24
  667 +1,0,2012,6,24,2012,6,24,2012,6,25
  668 +1,0,2012,6,25,2012,6,25,2012,6,26
  669 +1,0,2012,6,26,2012,6,26,2012,6,27
  670 +1,0,2012,6,27,2012,6,27,2012,6,28
  671 +1,0,2012,6,30,2012,6,30,2012,6,31
  672 +1,0,2012,6,31,2012,6,31,2012,7,1
  673 +1,0,2012,7,1,2012,7,1,2012,7,2
  674 +1,0,2012,7,2,2012,7,2,2012,7,3
  675 +1,0,2012,7,3,2012,7,3,2012,7,4
  676 +1,0,2012,7,6,2012,7,6,2012,7,7
  677 +1,0,2012,7,7,2012,7,7,2012,7,8
  678 +1,0,2012,7,8,2012,7,8,2012,7,9
  679 +1,0,2012,7,9,2012,7,9,2012,7,10
  680 +1,0,2012,7,10,2012,7,10,2012,7,11
  681 +1,0,2012,7,13,2012,7,13,2012,7,14
  682 +1,0,2012,7,14,2012,7,14,2012,7,15
  683 +1,0,2012,7,15,2012,7,15,2012,7,16
  684 +1,0,2012,7,16,2012,7,16,2012,7,17
  685 +1,0,2012,7,17,2012,7,17,2012,7,18
  686 +1,0,2012,7,20,2012,7,20,2012,7,21
  687 +1,0,2012,7,21,2012,7,21,2012,7,22
  688 +1,0,2012,7,22,2012,7,22,2012,7,23
  689 +1,0,2012,7,23,2012,7,23,2012,7,24
  690 +1,0,2012,7,24,2012,7,24,2012,7,25
  691 +1,0,2012,7,27,2012,7,27,2012,7,28
  692 +1,0,2012,7,28,2012,7,28,2012,7,29
  693 +1,0,2012,7,29,2012,7,29,2012,7,30
  694 +1,0,2012,7,30,2012,7,30,2012,7,31
  695 +1,0,2012,7,31,2012,7,31,2012,8,1
  696 +1,0,2012,8,3,2012,8,3,2012,8,4
  697 +1,0,2012,8,4,2012,8,4,2012,8,5
  698 +1,0,2012,8,5,2012,8,5,2012,8,6
  699 +1,0,2012,8,6,2012,8,6,2012,8,7
  700 +1,0,2012,8,7,2012,8,7,2012,8,8
  701 +1,0,2012,8,10,2012,8,10,2012,8,11
  702 +1,0,2012,8,11,2012,8,11,2012,8,12
  703 +1,0,2012,8,12,2012,8,12,2012,8,13
  704 +1,0,2012,8,13,2012,8,13,2012,8,14
  705 +1,0,2012,8,14,2012,8,14,2012,8,15
  706 +1,0,2012,8,17,2012,8,17,2012,8,18
  707 +1,0,2012,8,18,2012,8,18,2012,8,19
  708 +1,0,2012,8,19,2012,8,19,2012,8,20
  709 +1,0,2012,8,20,2012,8,20,2012,8,21
  710 +1,0,2012,8,21,2012,8,21,2012,8,22
  711 +1,0,2012,8,24,2012,8,24,2012,8,25
  712 +1,0,2012,8,25,2012,8,25,2012,8,26
  713 +1,0,2012,8,26,2012,8,26,2012,8,27
  714 +1,0,2012,8,27,2012,8,27,2012,8,28
  715 +1,0,2012,8,28,2012,8,28,2012,8,29
  716 +1,0,2012,9,1,2012,9,1,2012,9,2
  717 +1,0,2012,9,2,2012,9,2,2012,9,3
  718 +1,0,2012,9,3,2012,9,3,2012,9,4
  719 +1,0,2012,9,4,2012,9,4,2012,9,5
  720 +1,0,2012,9,5,2012,9,5,2012,9,6
  721 +1,0,2012,9,8,2012,9,8,2012,9,9
  722 +1,0,2012,9,9,2012,9,9,2012,9,10
  723 +1,0,2012,9,10,2012,9,10,2012,9,11
  724 +1,0,2012,9,11,2012,9,11,2012,9,12
  725 +1,0,2012,9,12,2012,9,12,2012,9,13
  726 +1,0,2012,9,15,2012,9,15,2012,9,16
  727 +1,0,2012,9,16,2012,9,16,2012,9,17
  728 +1,0,2012,9,17,2012,9,17,2012,9,18
  729 +1,0,2012,9,18,2012,9,18,2012,9,19
  730 +1,0,2012,9,19,2012,9,19,2012,9,20
  731 +1,0,2012,9,22,2012,9,22,2012,9,23
  732 +1,0,2012,9,23,2012,9,23,2012,9,24
  733 +1,0,2012,9,24,2012,9,24,2012,9,25
  734 +1,0,2012,9,25,2012,9,25,2012,9,26
  735 +1,0,2012,9,26,2012,9,26,2012,9,27
  736 +1,0,2012,9,29,2012,9,29,2012,9,30
  737 +1,0,2012,9,30,2012,9,30,2012,9,31
  738 +1,0,2012,9,31,2012,9,31,2012,10,1
  739 +1,0,2012,10,1,2012,10,1,2012,10,2
  740 +1,0,2012,10,2,2012,10,2,2012,10,3
  741 +1,0,2012,10,5,2012,10,5,2012,10,6
  742 +1,0,2012,10,6,2012,10,6,2012,10,7
  743 +1,0,2012,10,7,2012,10,7,2012,10,8
  744 +1,0,2012,10,8,2012,10,8,2012,10,9
  745 +1,0,2012,10,9,2012,10,9,2012,10,10
  746 +1,0,2012,10,12,2012,10,12,2012,10,13
  747 +1,0,2012,10,13,2012,10,13,2012,10,14
  748 +1,0,2012,10,14,2012,10,14,2012,10,15
  749 +1,0,2012,10,15,2012,10,15,2012,10,16
  750 +1,0,2012,10,16,2012,10,16,2012,10,17
  751 +1,0,2012,10,19,2012,10,19,2012,10,20
  752 +1,0,2012,10,20,2012,10,20,2012,10,21
  753 +1,0,2012,10,21,2012,10,21,2012,10,22
  754 +1,0,2012,10,22,2012,10,22,2012,10,23
  755 +1,0,2012,10,23,2012,10,23,2012,10,24
  756 +1,0,2012,10,26,2012,10,26,2012,10,27
  757 +1,0,2012,10,27,2012,10,27,2012,10,28
  758 +1,0,2012,10,28,2012,10,28,2012,10,29
  759 +1,0,2012,10,29,2012,10,29,2012,10,30
  760 +1,0,2012,10,30,2012,10,30,2012,11,1
  761 +1,0,2012,11,3,2012,11,3,2012,11,4
  762 +1,0,2012,11,4,2012,11,4,2012,11,5
  763 +1,0,2012,11,5,2012,11,5,2012,11,6
  764 +1,0,2012,11,6,2012,11,6,2012,11,7
  765 +1,0,2012,11,7,2012,11,7,2012,11,8
  766 +1,0,2012,11,10,2012,11,10,2012,11,11
  767 +1,0,2012,11,11,2012,11,11,2012,11,12
  768 +1,0,2012,11,12,2012,11,12,2012,11,13
  769 +1,0,2012,11,13,2012,11,13,2012,11,14
  770 +1,0,2012,11,14,2012,11,14,2012,11,15
  771 +1,0,2012,11,17,2012,11,17,2012,11,18
  772 +1,0,2012,11,18,2012,11,18,2012,11,19
  773 +1,0,2012,11,19,2012,11,19,2012,11,20
  774 +1,0,2012,11,20,2012,11,20,2012,11,21
  775 +1,0,2012,11,21,2012,11,21,2012,11,22
  776 +1,0,2012,11,24,2012,11,24,2012,11,25
  777 +1,0,2012,11,25,2012,11,25,2012,11,26
  778 +1,0,2012,11,26,2012,11,26,2012,11,27
  779 +1,0,2012,11,27,2012,11,27,2012,11,28
  780 +1,0,2012,11,28,2012,11,28,2012,11,29
  781 +1,0,2012,11,31,2012,11,31,2013,0,1
  782 +1,0,2013,0,1,2013,0,1,2013,0,2
  783 +1,0,2013,0,2,2013,0,2,2013,0,3
  784 +1,0,2013,0,3,2013,0,3,2013,0,4
  785 +1,0,2013,0,4,2013,0,4,2013,0,5
  786 +1,0,2013,0,7,2013,0,7,2013,0,8
  787 +1,0,2013,0,8,2013,0,8,2013,0,9
  788 +1,0,2013,0,9,2013,0,9,2013,0,10
  789 +1,0,2013,0,10,2013,0,10,2013,0,11
  790 +1,0,2013,0,11,2013,0,11,2013,0,12
  791 +1,0,2013,0,14,2013,0,14,2013,0,15
  792 +1,0,2013,0,15,2013,0,15,2013,0,16
  793 +1,0,2013,0,16,2013,0,16,2013,0,17
  794 +1,0,2013,0,17,2013,0,17,2013,0,18
  795 +1,0,2013,0,18,2013,0,18,2013,0,19
  796 +1,0,2013,0,21,2013,0,21,2013,0,22
  797 +1,0,2013,0,22,2013,0,22,2013,0,23
  798 +1,0,2013,0,23,2013,0,23,2013,0,24
  799 +1,0,2013,0,24,2013,0,24,2013,0,25
  800 +1,0,2013,0,25,2013,0,25,2013,0,26
  801 +1,0,2013,0,28,2013,0,28,2013,0,29
  802 +1,0,2013,0,29,2013,0,29,2013,0,30
  803 +1,0,2013,0,30,2013,0,30,2013,0,31
  804 +1,0,2013,0,31,2013,0,31,2013,1,1
  805 +1,0,2013,1,1,2013,1,1,2013,1,2
  806 +1,0,2013,1,4,2013,1,4,2013,1,5
  807 +1,0,2013,1,5,2013,1,5,2013,1,6
  808 +1,0,2013,1,6,2013,1,6,2013,1,7
  809 +1,0,2013,1,7,2013,1,7,2013,1,8
  810 +1,0,2013,1,8,2013,1,8,2013,1,9
  811 +1,0,2013,1,11,2013,1,11,2013,1,12
  812 +1,0,2013,1,12,2013,1,12,2013,1,13
  813 +1,0,2013,1,13,2013,1,13,2013,1,14
  814 +1,0,2013,1,14,2013,1,14,2013,1,15
  815 +1,0,2013,1,15,2013,1,15,2013,1,16
  816 +1,0,2013,1,18,2013,1,18,2013,1,19
  817 +1,0,2013,1,19,2013,1,19,2013,1,20
  818 +1,0,2013,1,20,2013,1,20,2013,1,21
  819 +1,0,2013,1,21,2013,1,21,2013,1,22
  820 +1,0,2013,1,22,2013,1,22,2013,1,23
  821 +1,0,2013,1,25,2013,1,25,2013,1,26
  822 +1,0,2013,1,26,2013,1,26,2013,1,27
  823 +1,0,2013,1,27,2013,1,27,2013,1,28
  824 +1,0,2013,1,28,2013,1,28,2013,2,1
  825 +1,0,2013,2,1,2013,2,1,2013,2,2
  826 +1,0,2013,2,4,2013,2,4,2013,2,5
  827 +1,0,2013,2,5,2013,2,5,2013,2,6
  828 +1,0,2013,2,6,2013,2,6,2013,2,7
  829 +1,0,2013,2,7,2013,2,7,2013,2,8
  830 +1,0,2013,2,8,2013,2,8,2013,2,9
  831 +1,0,2013,2,11,2013,2,11,2013,2,12
  832 +1,0,2013,2,12,2013,2,12,2013,2,13
  833 +1,0,2013,2,13,2013,2,13,2013,2,14
  834 +1,0,2013,2,14,2013,2,14,2013,2,15
  835 +1,0,2013,2,15,2013,2,15,2013,2,16
  836 +1,0,2013,2,18,2013,2,18,2013,2,19
  837 +1,0,2013,2,19,2013,2,19,2013,2,20
  838 +1,0,2013,2,20,2013,2,20,2013,2,21
  839 +1,0,2013,2,21,2013,2,21,2013,2,22
  840 +1,0,2013,2,22,2013,2,22,2013,2,23
  841 +1,0,2013,2,25,2013,2,25,2013,2,26
  842 +1,0,2013,2,26,2013,2,26,2013,2,27
  843 +1,0,2013,2,27,2013,2,27,2013,2,28
  844 +1,0,2013,2,28,2013,2,28,2013,2,29
  845 +1,0,2013,2,29,2013,2,29,2013,2,30
  846 +1,0,2013,3,1,2013,3,1,2013,3,2
  847 +1,0,2013,3,2,2013,3,2,2013,3,3
  848 +1,0,2013,3,3,2013,3,3,2013,3,4
  849 +1,0,2013,3,4,2013,3,4,2013,3,5
  850 +1,0,2013,3,5,2013,3,5,2013,3,6
  851 +1,0,2013,3,8,2013,3,8,2013,3,9
  852 +1,0,2013,3,9,2013,3,9,2013,3,10
  853 +1,0,2013,3,10,2013,3,10,2013,3,11
  854 +1,0,2013,3,11,2013,3,11,2013,3,12
  855 +1,0,2013,3,12,2013,3,12,2013,3,13
  856 +1,0,2013,3,15,2013,3,15,2013,3,16
  857 +1,0,2013,3,16,2013,3,16,2013,3,17
  858 +1,0,2013,3,17,2013,3,17,2013,3,18
  859 +1,0,2013,3,18,2013,3,18,2013,3,19
  860 +1,0,2013,3,19,2013,3,19,2013,3,20
  861 +1,0,2013,3,22,2013,3,22,2013,3,23
  862 +1,0,2013,3,23,2013,3,23,2013,3,24
  863 +1,0,2013,3,24,2013,3,24,2013,3,25
  864 +1,0,2013,3,25,2013,3,25,2013,3,26
  865 +1,0,2013,3,26,2013,3,26,2013,3,27
  866 +1,0,2013,3,29,2013,3,29,2013,3,30
  867 +1,0,2013,3,30,2013,3,30,2013,4,1
  868 +1,0,2013,4,1,2013,4,1,2013,4,2
  869 +1,0,2013,4,2,2013,4,2,2013,4,3
  870 +1,0,2013,4,3,2013,4,3,2013,4,4
  871 +1,0,2013,4,6,2013,4,6,2013,4,7
  872 +1,0,2013,4,7,2013,4,7,2013,4,8
  873 +1,0,2013,4,8,2013,4,8,2013,4,9
  874 +1,0,2013,4,9,2013,4,9,2013,4,10
  875 +1,0,2013,4,10,2013,4,10,2013,4,11
  876 +1,0,2013,4,13,2013,4,13,2013,4,14
  877 +1,0,2013,4,14,2013,4,14,2013,4,15
  878 +1,0,2013,4,15,2013,4,15,2013,4,16
  879 +1,0,2013,4,16,2013,4,16,2013,4,17
  880 +1,0,2013,4,17,2013,4,17,2013,4,18
  881 +1,0,2013,4,20,2013,4,20,2013,4,21
  882 +1,0,2013,4,21,2013,4,21,2013,4,22
  883 +1,0,2013,4,22,2013,4,22,2013,4,23
  884 +1,0,2013,4,23,2013,4,23,2013,4,24
  885 +1,0,2013,4,24,2013,4,24,2013,4,25
  886 +1,0,2013,4,27,2013,4,27,2013,4,28
  887 +1,0,2013,4,28,2013,4,28,2013,4,29
  888 +1,0,2013,4,29,2013,4,29,2013,4,30
  889 +1,0,2013,4,30,2013,4,30,2013,4,31
  890 +1,0,2013,4,31,2013,4,31,2013,5,1
  891 +1,0,2013,5,3,2013,5,3,2013,5,4
  892 +1,0,2013,5,4,2013,5,4,2013,5,5
  893 +1,0,2013,5,5,2013,5,5,2013,5,6
  894 +1,0,2013,5,6,2013,5,6,2013,5,7
  895 +1,0,2013,5,7,2013,5,7,2013,5,8
  896 +1,0,2013,5,10,2013,5,10,2013,5,11
  897 +1,0,2013,5,11,2013,5,11,2013,5,12
  898 +1,0,2013,5,12,2013,5,12,2013,5,13
  899 +1,0,2013,5,13,2013,5,13,2013,5,14
  900 +1,0,2013,5,14,2013,5,14,2013,5,15
  901 +1,0,2013,5,17,2013,5,17,2013,5,18
  902 +1,0,2013,5,18,2013,5,18,2013,5,19
  903 +1,0,2013,5,19,2013,5,19,2013,5,20
  904 +1,0,2013,5,20,2013,5,20,2013,5,21
  905 +1,0,2013,5,21,2013,5,21,2013,5,22
  906 +1,0,2013,5,24,2013,5,24,2013,5,25
  907 +1,0,2013,5,25,2013,5,25,2013,5,26
  908 +1,0,2013,5,26,2013,5,26,2013,5,27
  909 +1,0,2013,5,27,2013,5,27,2013,5,28
  910 +1,0,2013,5,28,2013,5,28,2013,5,29
  911 +1,0,2013,6,1,2013,6,1,2013,6,2
  912 +1,0,2013,6,2,2013,6,2,2013,6,3
  913 +1,0,2013,6,3,2013,6,3,2013,6,4
  914 +1,0,2013,6,4,2013,6,4,2013,6,5
  915 +1,0,2013,6,5,2013,6,5,2013,6,6
  916 +1,0,2013,6,8,2013,6,8,2013,6,9
  917 +1,0,2013,6,9,2013,6,9,2013,6,10
  918 +1,0,2013,6,10,2013,6,10,2013,6,11
  919 +1,0,2013,6,11,2013,6,11,2013,6,12
  920 +1,0,2013,6,12,2013,6,12,2013,6,13
  921 +1,0,2013,6,15,2013,6,15,2013,6,16
  922 +1,0,2013,6,16,2013,6,16,2013,6,17
  923 +1,0,2013,6,17,2013,6,17,2013,6,18
  924 +1,0,2013,6,18,2013,6,18,2013,6,19
  925 +1,0,2013,6,19,2013,6,19,2013,6,20
  926 +1,0,2013,6,22,2013,6,22,2013,6,23
  927 +1,0,2013,6,23,2013,6,23,2013,6,24
  928 +1,0,2013,6,24,2013,6,24,2013,6,25
  929 +1,0,2013,6,25,2013,6,25,2013,6,26
  930 +1,0,2013,6,26,2013,6,26,2013,6,27
  931 +1,0,2013,6,29,2013,6,29,2013,6,30
  932 +1,0,2013,6,30,2013,6,30,2013,6,31
  933 +1,0,2013,6,31,2013,6,31,2013,7,1
  934 +1,0,2013,7,1,2013,7,1,2013,7,2
  935 +1,0,2013,7,2,2013,7,2,2013,7,3
  936 +1,0,2013,7,5,2013,7,5,2013,7,6
  937 +1,0,2013,7,6,2013,7,6,2013,7,7
  938 +1,0,2013,7,7,2013,7,7,2013,7,8
  939 +1,0,2013,7,8,2013,7,8,2013,7,9
  940 +1,0,2013,7,9,2013,7,9,2013,7,10
  941 +1,0,2013,7,12,2013,7,12,2013,7,13
  942 +1,0,2013,7,13,2013,7,13,2013,7,14
  943 +1,0,2013,7,14,2013,7,14,2013,7,15
  944 +1,0,2013,7,15,2013,7,15,2013,7,16
  945 +1,0,2013,7,16,2013,7,16,2013,7,17
  946 +1,0,2013,7,19,2013,7,19,2013,7,20
  947 +1,0,2013,7,20,2013,7,20,2013,7,21
  948 +1,0,2013,7,21,2013,7,21,2013,7,22
  949 +1,0,2013,7,22,2013,7,22,2013,7,23
  950 +1,0,2013,7,23,2013,7,23,2013,7,24
  951 +1,0,2013,7,26,2013,7,26,2013,7,27
  952 +1,0,2013,7,27,2013,7,27,2013,7,28
  953 +1,0,2013,7,28,2013,7,28,2013,7,29
  954 +1,0,2013,7,29,2013,7,29,2013,7,30
  955 +1,0,2013,7,30,2013,7,30,2013,7,31
  956 +1,0,2013,8,2,2013,8,2,2013,8,3
  957 +1,0,2013,8,3,2013,8,3,2013,8,4
  958 +1,0,2013,8,4,2013,8,4,2013,8,5
  959 +1,0,2013,8,5,2013,8,5,2013,8,6
  960 +1,0,2013,8,6,2013,8,6,2013,8,7
  961 +1,0,2013,8,9,2013,8,9,2013,8,10
  962 +1,0,2013,8,10,2013,8,10,2013,8,11
  963 +1,0,2013,8,11,2013,8,11,2013,8,12
  964 +1,0,2013,8,12,2013,8,12,2013,8,13
  965 +1,0,2013,8,13,2013,8,13,2013,8,14
  966 +1,0,2013,8,16,2013,8,16,2013,8,17
  967 +1,0,2013,8,17,2013,8,17,2013,8,18
  968 +1,0,2013,8,18,2013,8,18,2013,8,19
  969 +1,0,2013,8,19,2013,8,19,2013,8,20
  970 +1,0,2013,8,20,2013,8,20,2013,8,21
  971 +1,0,2013,8,23,2013,8,23,2013,8,24
  972 +1,0,2013,8,24,2013,8,24,2013,8,25
  973 +1,0,2013,8,25,2013,8,25,2013,8,26
  974 +1,0,2013,8,26,2013,8,26,2013,8,27
  975 +1,0,2013,8,27,2013,8,27,2013,8,28
  976 +1,0,2013,8,30,2013,8,30,2013,9,1
  977 +1,0,2013,9,1,2013,9,1,2013,9,2
  978 +1,0,2013,9,2,2013,9,2,2013,9,3
  979 +1,0,2013,9,3,2013,9,3,2013,9,4
  980 +1,0,2013,9,4,2013,9,4,2013,9,5
  981 +1,0,2013,9,7,2013,9,7,2013,9,8
  982 +1,0,2013,9,8,2013,9,8,2013,9,9
  983 +1,0,2013,9,9,2013,9,9,2013,9,10
  984 +1,0,2013,9,10,2013,9,10,2013,9,11
  985 +1,0,2013,9,11,2013,9,11,2013,9,12
  986 +1,0,2013,9,14,2013,9,14,2013,9,15
  987 +1,0,2013,9,15,2013,9,15,2013,9,16
  988 +1,0,2013,9,16,2013,9,16,2013,9,17
  989 +1,0,2013,9,17,2013,9,17,2013,9,18
  990 +1,0,2013,9,18,2013,9,18,2013,9,19
  991 +1,0,2013,9,21,2013,9,21,2013,9,22
  992 +1,0,2013,9,22,2013,9,22,2013,9,23
  993 +1,0,2013,9,23,2013,9,23,2013,9,24
  994 +1,0,2013,9,24,2013,9,24,2013,9,25
  995 +1,0,2013,9,25,2013,9,25,2013,9,26
  996 +1,0,2013,9,28,2013,9,28,2013,9,29
  997 +1,0,2013,9,29,2013,9,29,2013,9,30
  998 +1,0,2013,9,30,2013,9,30,2013,9,31
  999 +1,0,2013,9,31,2013,9,31,2013,10,1
  1000 +1,0,2013,10,1,2013,10,1,2013,10,2
  1001 +1,0,2013,10,4,2013,10,4,2013,10,5
  1002 +1,0,2013,10,5,2013,10,5,2013,10,6
  1003 +1,0,2013,10,6,2013,10,6,2013,10,7
  1004 +1,0,2013,10,7,2013,10,7,2013,10,8
  1005 +1,0,2013,10,8,2013,10,8,2013,10,9
  1006 +1,0,2013,10,11,2013,10,11,2013,10,12
  1007 +1,0,2013,10,12,2013,10,12,2013,10,13
  1008 +1,0,2013,10,13,2013,10,13,2013,10,14
  1009 +1,0,2013,10,14,2013,10,14,2013,10,15
  1010 +1,0,2013,10,15,2013,10,15,2013,10,16
  1011 +1,0,2013,10,18,2013,10,18,2013,10,19
  1012 +1,0,2013,10,19,2013,10,19,2013,10,20
  1013 +1,0,2013,10,20,2013,10,20,2013,10,21
  1014 +1,0,2013,10,21,2013,10,21,2013,10,22
  1015 +1,0,2013,10,22,2013,10,22,2013,10,23
  1016 +1,0,2013,10,25,2013,10,25,2013,10,26
  1017 +1,0,2013,10,26,2013,10,26,2013,10,27
  1018 +1,0,2013,10,27,2013,10,27,2013,10,28
  1019 +1,0,2013,10,28,2013,10,28,2013,10,29
  1020 +1,0,2013,10,29,2013,10,29,2013,10,30
  1021 +1,0,2013,11,2,2013,11,2,2013,11,3
  1022 +1,0,2013,11,3,2013,11,3,2013,11,4
  1023 +1,0,2013,11,4,2013,11,4,2013,11,5
  1024 +1,0,2013,11,5,2013,11,5,2013,11,6
  1025 +1,0,2013,11,6,2013,11,6,2013,11,7
  1026 +1,0,2013,11,9,2013,11,9,2013,11,10
  1027 +1,0,2013,11,10,2013,11,10,2013,11,11
  1028 +1,0,2013,11,11,2013,11,11,2013,11,12
  1029 +1,0,2013,11,12,2013,11,12,2013,11,13
  1030 +1,0,2013,11,13,2013,11,13,2013,11,14
  1031 +1,0,2013,11,16,2013,11,16,2013,11,17
  1032 +1,0,2013,11,17,2013,11,17,2013,11,18
  1033 +1,0,2013,11,18,2013,11,18,2013,11,19
  1034 +1,0,2013,11,19,2013,11,19,2013,11,20
  1035 +1,0,2013,11,20,2013,11,20,2013,11,21
  1036 +1,0,2013,11,23,2013,11,23,2013,11,24
  1037 +1,0,2013,11,24,2013,11,24,2013,11,25
  1038 +1,0,2013,11,25,2013,11,25,2013,11,26
  1039 +1,0,2013,11,26,2013,11,26,2013,11,27
  1040 +1,0,2013,11,27,2013,11,27,2013,11,28
  1041 +1,0,2013,11,30,2013,11,30,2013,11,31
  1042 +1,0,2013,11,31,2013,11,31,2014,0,1
  1043 +1,0,2014,0,1,2014,0,1,2014,0,2
  1044 +1,0,2014,0,2,2014,0,2,2014,0,3
  1045 +1,0,2014,0,3,2014,0,3,2014,0,4
  1046 +1,0,2014,0,6,2014,0,6,2014,0,7
  1047 +1,0,2014,0,7,2014,0,7,2014,0,8
  1048 +1,0,2014,0,8,2014,0,8,2014,0,9
  1049 +1,0,2014,0,9,2014,0,9,2014,0,10
  1050 +1,0,2014,0,10,2014,0,10,2014,0,11
  1051 +1,0,2014,0,13,2014,0,13,2014,0,14
  1052 +1,0,2014,0,14,2014,0,14,2014,0,15
  1053 +1,0,2014,0,15,2014,0,15,2014,0,16
  1054 +1,0,2014,0,16,2014,0,16,2014,0,17
  1055 +1,0,2014,0,17,2014,0,17,2014,0,18
  1056 +1,0,2014,0,20,2014,0,20,2014,0,21
  1057 +1,0,2014,0,21,2014,0,21,2014,0,22
  1058 +1,0,2014,0,22,2014,0,22,2014,0,23
  1059 +1,0,2014,0,23,2014,0,23,2014,0,24
  1060 +1,0,2014,0,24,2014,0,24,2014,0,25
  1061 +1,0,2014,0,27,2014,0,27,2014,0,28
  1062 +1,0,2014,0,28,2014,0,28,2014,0,29
  1063 +1,0,2014,0,29,2014,0,29,2014,0,30
  1064 +1,0,2014,0,30,2014,0,30,2014,0,31
  1065 +1,0,2014,0,31,2014,0,31,2014,1,1
  1066 +1,0,2014,1,3,2014,1,3,2014,1,4
  1067 +1,0,2014,1,4,2014,1,4,2014,1,5
  1068 +1,0,2014,1,5,2014,1,5,2014,1,6
  1069 +1,0,2014,1,6,2014,1,6,2014,1,7
  1070 +1,0,2014,1,7,2014,1,7,2014,1,8
  1071 +1,0,2014,1,10,2014,1,10,2014,1,11
  1072 +1,0,2014,1,11,2014,1,11,2014,1,12
  1073 +1,0,2014,1,12,2014,1,12,2014,1,13
  1074 +1,0,2014,1,13,2014,1,13,2014,1,14
  1075 +1,0,2014,1,14,2014,1,14,2014,1,15
  1076 +1,0,2014,1,17,2014,1,17,2014,1,18
  1077 +1,0,2014,1,18,2014,1,18,2014,1,19
  1078 +1,0,2014,1,19,2014,1,19,2014,1,20
  1079 +1,0,2014,1,20,2014,1,20,2014,1,21
  1080 +1,0,2014,1,21,2014,1,21,2014,1,22
  1081 +1,0,2014,1,24,2014,1,24,2014,1,25
  1082 +1,0,2014,1,25,2014,1,25,2014,1,26
  1083 +1,0,2014,1,26,2014,1,26,2014,1,27
  1084 +1,0,2014,1,27,2014,1,27,2014,1,28
  1085 +1,0,2014,1,28,2014,1,28,2014,2,1
  1086 +1,0,2014,2,3,2014,2,3,2014,2,4
  1087 +1,0,2014,2,4,2014,2,4,2014,2,5
  1088 +1,0,2014,2,5,2014,2,5,2014,2,6
  1089 +1,0,2014,2,6,2014,2,6,2014,2,7
  1090 +1,0,2014,2,7,2014,2,7,2014,2,8
  1091 +1,0,2014,2,10,2014,2,10,2014,2,11
  1092 +1,0,2014,2,11,2014,2,11,2014,2,12
  1093 +1,0,2014,2,12,2014,2,12,2014,2,13
  1094 +1,0,2014,2,13,2014,2,13,2014,2,14
  1095 +1,0,2014,2,14,2014,2,14,2014,2,15
  1096 +1,0,2014,2,17,2014,2,17,2014,2,18
  1097 +1,0,2014,2,18,2014,2,18,2014,2,19
  1098 +1,0,2014,2,19,2014,2,19,2014,2,20
  1099 +1,0,2014,2,20,2014,2,20,2014,2,21
  1100 +1,0,2014,2,21,2014,2,21,2014,2,22
  1101 +1,0,2014,2,24,2014,2,24,2014,2,25
  1102 +1,0,2014,2,25,2014,2,25,2014,2,26
  1103 +1,0,2014,2,26,2014,2,26,2014,2,27
  1104 +1,0,2014,2,27,2014,2,27,2014,2,28
  1105 +1,0,2014,2,28,2014,2,28,2014,2,29
  1106 +1,0,2014,2,31,2014,2,31,2014,3,1
  1107 +1,0,2014,3,1,2014,3,1,2014,3,2
  1108 +1,0,2014,3,2,2014,3,2,2014,3,3
  1109 +1,0,2014,3,3,2014,3,3,2014,3,4
  1110 +1,0,2014,3,4,2014,3,4,2014,3,5
  1111 +1,0,2014,3,7,2014,3,7,2014,3,8
  1112 +1,0,2014,3,8,2014,3,8,2014,3,9
  1113 +1,0,2014,3,9,2014,3,9,2014,3,10
  1114 +1,0,2014,3,10,2014,3,10,2014,3,11
  1115 +1,0,2014,3,11,2014,3,11,2014,3,12
  1116 +1,0,2014,3,14,2014,3,14,2014,3,15
  1117 +1,0,2014,3,15,2014,3,15,2014,3,16
  1118 +1,0,2014,3,16,2014,3,16,2014,3,17
  1119 +1,0,2014,3,17,2014,3,17,2014,3,18
  1120 +1,0,2014,3,18,2014,3,18,2014,3,19
  1121 +1,0,2014,3,21,2014,3,21,2014,3,22
  1122 +1,0,2014,3,22,2014,3,22,2014,3,23
  1123 +1,0,2014,3,23,2014,3,23,2014,3,24
  1124 +1,0,2014,3,24,2014,3,24,2014,3,25
  1125 +1,0,2014,3,25,2014,3,25,2014,3,26
  1126 +1,0,2014,3,28,2014,3,28,2014,3,29
  1127 +1,0,2014,3,29,2014,3,29,2014,3,30
  1128 +1,0,2014,3,30,2014,3,30,2014,4,1
  1129 +1,0,2014,4,1,2014,4,1,2014,4,2
  1130 +1,0,2014,4,2,2014,4,2,2014,4,3
  1131 +1,0,2014,4,5,2014,4,5,2014,4,6
  1132 +1,0,2014,4,6,2014,4,6,2014,4,7
  1133 +1,0,2014,4,7,2014,4,7,2014,4,8
  1134 +1,0,2014,4,8,2014,4,8,2014,4,9
  1135 +1,0,2014,4,9,2014,4,9,2014,4,10
  1136 +1,0,2014,4,12,2014,4,12,2014,4,13
  1137 +1,0,2014,4,13,2014,4,13,2014,4,14
  1138 +1,0,2014,4,14,2014,4,14,2014,4,15
  1139 +1,0,2014,4,15,2014,4,15,2014,4,16
  1140 +1,0,2014,4,16,2014,4,16,2014,4,17
  1141 +1,0,2014,4,19,2014,4,19,2014,4,20
  1142 +1,0,2014,4,20,2014,4,20,2014,4,21
  1143 +1,0,2014,4,21,2014,4,21,2014,4,22
  1144 +1,0,2014,4,22,2014,4,22,2014,4,23
  1145 +1,0,2014,4,23,2014,4,23,2014,4,24
  1146 +1,0,2014,4,26,2014,4,26,2014,4,27
  1147 +1,0,2014,4,27,2014,4,27,2014,4,28
  1148 +1,0,2014,4,28,2014,4,28,2014,4,29
  1149 +1,0,2014,4,29,2014,4,29,2014,4,30
  1150 +1,0,2014,4,30,2014,4,30,2014,4,31
  1151 +1,0,2014,5,2,2014,5,2,2014,5,3
  1152 +1,0,2014,5,3,2014,5,3,2014,5,4
  1153 +1,0,2014,5,4,2014,5,4,2014,5,5
  1154 +1,0,2014,5,5,2014,5,5,2014,5,6
  1155 +1,0,2014,5,6,2014,5,6,2014,5,7
  1156 +1,0,2014,5,9,2014,5,9,2014,5,10
  1157 +1,0,2014,5,10,2014,5,10,2014,5,11
  1158 +1,0,2014,5,11,2014,5,11,2014,5,12
  1159 +1,0,2014,5,12,2014,5,12,2014,5,13
  1160 +1,0,2014,5,13,2014,5,13,2014,5,14
  1161 +1,0,2014,5,16,2014,5,16,2014,5,17
  1162 +1,0,2014,5,17,2014,5,17,2014,5,18
  1163 +1,0,2014,5,18,2014,5,18,2014,5,19
  1164 +1,0,2014,5,19,2014,5,19,2014,5,20
  1165 +1,0,2014,5,20,2014,5,20,2014,5,21
  1166 +1,0,2014,5,23,2014,5,23,2014,5,24
  1167 +1,0,2014,5,24,2014,5,24,2014,5,25
  1168 +1,0,2014,5,25,2014,5,25,2014,5,26
  1169 +1,0,2014,5,26,2014,5,26,2014,5,27
  1170 +1,0,2014,5,27,2014,5,27,2014,5,28
  1171 +1,0,2014,5,30,2014,5,30,2014,6,1
  1172 +1,0,2014,6,1,2014,6,1,2014,6,2
  1173 +1,0,2014,6,2,2014,6,2,2014,6,3
  1174 +1,0,2014,6,3,2014,6,3,2014,6,4
  1175 +1,0,2014,6,4,2014,6,4,2014,6,5
  1176 +1,0,2014,6,7,2014,6,7,2014,6,8
  1177 +1,0,2014,6,8,2014,6,8,2014,6,9
  1178 +1,0,2014,6,9,2014,6,9,2014,6,10
  1179 +1,0,2014,6,10,2014,6,10,2014,6,11
  1180 +1,0,2014,6,11,2014,6,11,2014,6,12
  1181 +1,0,2014,6,14,2014,6,14,2014,6,15
  1182 +1,0,2014,6,15,2014,6,15,2014,6,16
  1183 +1,0,2014,6,16,2014,6,16,2014,6,17
  1184 +1,0,2014,6,17,2014,6,17,2014,6,18
  1185 +1,0,2014,6,18,2014,6,18,2014,6,19
  1186 +1,0,2014,6,21,2014,6,21,2014,6,22
  1187 +1,0,2014,6,22,2014,6,22,2014,6,23
  1188 +1,0,2014,6,23,2014,6,23,2014,6,24
  1189 +1,0,2014,6,24,2014,6,24,2014,6,25
  1190 +1,0,2014,6,25,2014,6,25,2014,6,26
  1191 +1,0,2014,6,28,2014,6,28,2014,6,29
  1192 +1,0,2014,6,29,2014,6,29,2014,6,30
  1193 +1,0,2014,6,30,2014,6,30,2014,6,31
  1194 +1,0,2014,6,31,2014,6,31,2014,7,1
  1195 +1,0,2014,7,1,2014,7,1,2014,7,2
  1196 +1,0,2014,7,4,2014,7,4,2014,7,5
  1197 +1,0,2014,7,5,2014,7,5,2014,7,6
  1198 +1,0,2014,7,6,2014,7,6,2014,7,7
  1199 +1,0,2014,7,7,2014,7,7,2014,7,8
  1200 +1,0,2014,7,8,2014,7,8,2014,7,9
  1201 +1,0,2014,7,11,2014,7,11,2014,7,12
  1202 +1,0,2014,7,12,2014,7,12,2014,7,13
  1203 +1,0,2014,7,13,2014,7,13,2014,7,14
  1204 +1,0,2014,7,14,2014,7,14,2014,7,15
  1205 +1,0,2014,7,15,2014,7,15,2014,7,16
  1206 +1,0,2014,7,18,2014,7,18,2014,7,19
  1207 +1,0,2014,7,19,2014,7,19,2014,7,20
  1208 +1,0,2014,7,20,2014,7,20,2014,7,21
  1209 +1,0,2014,7,21,2014,7,21,2014,7,22
  1210 +1,0,2014,7,22,2014,7,22,2014,7,23
  1211 +1,0,2014,7,25,2014,7,25,2014,7,26
  1212 +1,0,2014,7,26,2014,7,26,2014,7,27
  1213 +1,0,2014,7,27,2014,7,27,2014,7,28
  1214 +1,0,2014,7,28,2014,7,28,2014,7,29
  1215 +1,0,2014,7,29,2014,7,29,2014,7,30
  1216 +1,0,2014,8,1,2014,8,1,2014,8,2
  1217 +1,0,2014,8,2,2014,8,2,2014,8,3
  1218 +1,0,2014,8,3,2014,8,3,2014,8,4
  1219 +1,0,2014,8,4,2014,8,4,2014,8,5
  1220 +1,0,2014,8,5,2014,8,5,2014,8,6
  1221 +1,0,2014,8,8,2014,8,8,2014,8,9
  1222 +1,0,2014,8,8,2014,8,8,2014,8,9
Please register or login to post a comment