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 48 <systemProperties>
49 49 <property>
50 50 <name>displayedDaysForMonthViewCalculationTestData</name>
51   - <value>${basedir}/src/test/resources/displayedDaysForMonthViewCalculationTestData.txt</value>
  51 + <value>${basedir}/src/test/resources/displayedDaysForMonthViewCalculationTestData.txt
  52 + </value>
52 53 </property>
53 54 <property>
54 55 <name>displayedDaysForWeekViewCalculationTestData</name>
... ...
1 1 <listener>
2   - <name>itemSelectedListener</name>
  2 + <name>itemSelectListener</name>
3 3 <property existintag="true" exist="true" el="true" elonly="true">
4 4 <name>binding</name>
5   - <classname>org.richfaces.scheduleItemSelectedListener</classname>
  5 + <classname>org.richfaces.scheduleItemSelectListener</classname>
6 6 <description>The attribute takes a value-binding expression for a component property of
7 7 a backing bean
8 8 </description>
9 9 </property>
10 10 <listenerclass>
11   - org.richfaces.component.event.ScheduleItemSelectedListener
  11 + org.richfaces.component.event.ScheduleItemSelectListener
12 12 </listenerclass>
13 13 <componentclass>
14 14 org.richfaces.component.event.ScheduleListenerEventsProducer
15 15 </componentclass>
16 16 <eventclass>
17   - org.richfaces.component.event.ScheduleItemSelectedEvent
  17 + org.richfaces.component.event.ScheduleItemSelectEvent
18 18 </eventclass>
19 19 <taghandler generate="true">
20 20 <classname>
21   - org.richfaces.taglib.ScheduleItemSelectedListenerTagHandler
  21 + org.richfaces.taglib.ScheduleItemSelectListenerTagHandler
22 22 </classname>
23 23 </taghandler>
24 24 <tag generate="true">
25 25 <classname>
26   - org.richfaces.taglib.ItemSelectedListenerTag
  26 + org.richfaces.taglib.ItemSelectListenerTag
27 27 </classname>
28 28 </tag>
29 29
... ... @@ -107,31 +107,31 @@
107 107 </listener>
108 108
109 109 <listener>
110   - <name>viewChangedListener</name>
  110 + <name>viewChangeListener</name>
111 111 <property existintag="true" exist="true" el="true" elonly="true">
112 112 <name>binding</name>
113   - <classname>org.richfaces.scheduleViewChangedListener</classname>
  113 + <classname>org.richfaces.scheduleViewChangeListener</classname>
114 114 <description>The attribute takes a value-binding expression for a component property of
115 115 a backing bean
116 116 </description>
117 117 </property>
118 118 <listenerclass>
119   - org.richfaces.component.event.ScheduleViewChangedListener
  119 + org.richfaces.component.event.ScheduleViewChangeListener
120 120 </listenerclass>
121 121 <componentclass>
122 122 org.richfaces.component.event.ScheduleListenerEventsProducer
123 123 </componentclass>
124 124 <eventclass>
125   - org.richfaces.component.event.ScheduleViewChangedEvent
  125 + org.richfaces.component.event.ScheduleViewChangeEvent
126 126 </eventclass>
127 127 <taghandler generate="true">
128 128 <classname>
129   - org.richfaces.taglib.ScheduleViewChangedListenerTagHandler
  129 + org.richfaces.taglib.ScheduleViewChangeListenerTagHandler
130 130 </classname>
131 131 </taghandler>
132 132 <tag generate="true">
133 133 <classname>
134   - org.richfaces.taglib.ViewChangedListenerTag
  134 + org.richfaces.taglib.ViewChangeListenerTag
135 135 </classname>
136 136 </tag>
137 137
... ... @@ -143,31 +143,31 @@
143 143 </listener>
144 144
145 145 <listener>
146   - <name>dateRangeChangedListener</name>
  146 + <name>dateRangeChangeListener</name>
147 147 <property existintag="true" exist="true" el="true" elonly="true">
148 148 <name>binding</name>
149   - <classname>org.richfaces.scheduleDateRangeChangedListener</classname>
  149 + <classname>org.richfaces.scheduleDateRangeChangeListener</classname>
150 150 <description>The attribute takes a value-binding expression for a component property of
151 151 a backing bean
152 152 </description>
153 153 </property>
154 154 <listenerclass>
155   - org.richfaces.component.event.ScheduleDateRangeChangedListener
  155 + org.richfaces.component.event.ScheduleDateRangeChangeListener
156 156 </listenerclass>
157 157 <componentclass>
158 158 org.richfaces.component.event.ScheduleListenerEventsProducer
159 159 </componentclass>
160 160 <eventclass>
161   - org.richfaces.component.event.ScheduleDateRangeChangedEvent
  161 + org.richfaces.component.event.ScheduleDateRangeChangeEvent
162 162 </eventclass>
163 163 <taghandler generate="true">
164 164 <classname>
165   - org.richfaces.taglib.ScheduleDateRangeChangedListenerTagHandler
  165 + org.richfaces.taglib.ScheduleDateRangeChangeListenerTagHandler
166 166 </classname>
167 167 </taghandler>
168 168 <tag generate="true">
169 169 <classname>
170   - org.richfaces.taglib.DateRangeChangedListenerTag
  170 + org.richfaces.taglib.DateRangeChangeListenerTag
171 171 </classname>
172 172 </tag>
173 173
... ... @@ -178,31 +178,31 @@
178 178 </property>
179 179 </listener>
180 180 <listener>
181   - <name>dateRangeSelectedListener</name>
  181 + <name>dateRangeSelectListener</name>
182 182 <property existintag="true" exist="true" el="true" elonly="true">
183 183 <name>binding</name>
184   - <classname>org.richfaces.scheduleDateRangeChangedListener</classname>
  184 + <classname>org.richfaces.scheduleDateRangeSelectdListener</classname>
185 185 <description>The attribute takes a value-binding expression for a component property of
186 186 a backing bean
187 187 </description>
188 188 </property>
189 189 <listenerclass>
190   - org.richfaces.component.event.ScheduleDateRangeSelectedListener
  190 + org.richfaces.component.event.ScheduleDateRangeSelectListener
191 191 </listenerclass>
192 192 <componentclass>
193 193 org.richfaces.component.event.ScheduleListenerEventsProducer
194 194 </componentclass>
195 195 <eventclass>
196   - org.richfaces.component.event.ScheduleDateRangeSelectedEvent
  196 + org.richfaces.component.event.ScheduleDateRangeSelectEvent
197 197 </eventclass>
198 198 <taghandler generate="true">
199 199 <classname>
200   - org.richfaces.taglib.ScheduleDateRangeSelectedListenerTagHandler
  200 + org.richfaces.taglib.ScheduleDateRangeSelectListenerTagHandler
201 201 </classname>
202 202 </taghandler>
203 203 <tag generate="true">
204 204 <classname>
205   - org.richfaces.taglib.DateRangeSelectedListenerTag
  205 + org.richfaces.taglib.DateRangeSelectListenerTag
206 206 </classname>
207 207 </tag>
208 208
... ... @@ -214,31 +214,31 @@
214 214 </listener>
215 215
216 216 <listener>
217   - <name>dateSelectedListener</name>
  217 + <name>dateSelectListener</name>
218 218 <property existintag="true" exist="true" el="true" elonly="true">
219 219 <name>binding</name>
220   - <classname>org.richfaces.scheduleDateSelectedListener</classname>
  220 + <classname>org.richfaces.scheduleDateSelectListener</classname>
221 221 <description>The attribute takes a value-binding expression for a component property of
222 222 a backing bean
223 223 </description>
224 224 </property>
225 225 <listenerclass>
226   - org.richfaces.component.event.ScheduleDateSelectedListener
  226 + org.richfaces.component.event.ScheduleDateSelectListener
227 227 </listenerclass>
228 228 <componentclass>
229 229 org.richfaces.component.event.ScheduleListenerEventsProducer
230 230 </componentclass>
231 231 <eventclass>
232   - org.richfaces.component.event.ScheduleDateSelectedEvent
  232 + org.richfaces.component.event.ScheduleDateSelectEvent
233 233 </eventclass>
234 234 <taghandler generate="true">
235 235 <classname>
236   - org.richfaces.taglib.ScheduleDateSelectedListenerTagHandler
  236 + org.richfaces.taglib.ScheduleDateSelectListenerTagHandler
237 237 </classname>
238 238 </taghandler>
239 239 <tag generate="true">
240 240 <classname>
241   - org.richfaces.taglib.DateSelectedListenerTag
  241 + org.richfaces.taglib.DateSelectListenerTag
242 242 </classname>
243 243 </tag>
244 244
... ...
... ... @@ -37,8 +37,6 @@
37 37 &ui_component_attributes;
38 38 &commonViewAttributes;
39 39 &ajax_component_attributes;
40   - <!--TODO how about reRender ajaxSingle and others?-->
41   - <!--TODO add style attribute-->
42 40 <property>
43 41 <name>switchType</name>
44 42 <classname>java.lang.String</classname>
... ... @@ -462,7 +460,7 @@
462 460 </property>
463 461
464 462 <property>
465   - <name>onItemSelected</name>
  463 + <name>onbeforeitemselect</name>
466 464 <classname>java.lang.String</classname>
467 465 <description>
468 466 JavaScript code for handling event.
... ... @@ -476,7 +474,7 @@
476 474 <defaultvalue>null</defaultvalue>
477 475 </property>
478 476 <property>
479   - <name>onItemSelectedComplete</name>
  477 + <name>onitemselect</name>
480 478 <classname>java.lang.String</classname>
481 479 <description>
482 480 JavaScript code called when ajax request triggered when item
... ... @@ -493,7 +491,7 @@
493 491 <defaultvalue>null</defaultvalue>
494 492 </property>
495 493 <property>
496   - <name>onItemDragStart</name>
  494 + <name>onitemdragstart</name>
497 495 <classname>java.lang.String</classname>
498 496 <description>
499 497 JavaScript code for handling event.
... ... @@ -508,7 +506,7 @@
508 506 <defaultvalue>null</defaultvalue>
509 507 </property>
510 508 <property>
511   - <name>onItemDragStop</name>
  509 + <name>onitemdragstop</name>
512 510 <classname>java.lang.String</classname>
513 511 <description>
514 512 JavaScript code for handling event.
... ... @@ -523,7 +521,7 @@
523 521 <defaultvalue>null</defaultvalue>
524 522 </property>
525 523 <property>
526   - <name>onItemResizeStart</name>
  524 + <name>onitemresizestart</name>
527 525 <classname>java.lang.String</classname>
528 526 <description>
529 527 JavaScript code for handling event.
... ... @@ -538,7 +536,7 @@
538 536 <defaultvalue>null</defaultvalue>
539 537 </property>
540 538 <property>
541   - <name>onItemResizeStop</name>
  539 + <name>onitemresizestop</name>
542 540 <classname>java.lang.String</classname>
543 541 <description>
544 542 JavaScript code for handling event.
... ... @@ -553,7 +551,7 @@
553 551 <defaultvalue>null</defaultvalue>
554 552 </property>
555 553 <property>
556   - <name>onItemDrop</name>
  554 + <name>onbeforeitemdrop</name>
557 555 <classname>java.lang.String</classname>
558 556 <description>
559 557 JavaScript code for handling event.
... ... @@ -578,7 +576,7 @@
578 576 <defaultvalue>null</defaultvalue>
579 577 </property>
580 578 <property>
581   - <name>onItemDropComplete</name>
  579 + <name>onitemdrop</name>
582 580 <classname>java.lang.String</classname>
583 581 <description>
584 582 JavaScript code called when ajax request triggered when item
... ... @@ -607,7 +605,7 @@
607 605 <defaultvalue>null</defaultvalue>
608 606 </property>
609 607 <property>
610   - <name>onItemResized</name>
  608 + <name>onbeforeitemresize</name>
611 609 <classname>java.lang.String</classname>
612 610 <description>
613 611 JavaScript code for handling event.
... ... @@ -630,7 +628,7 @@
630 628 <defaultvalue>null</defaultvalue>
631 629 </property>
632 630 <property>
633   - <name>onItemResizedComplete</name>
  631 + <name>onitemresize</name>
634 632 <classname>java.lang.String</classname>
635 633 <description>
636 634 JavaScript code called when ajax request triggered when item
... ... @@ -655,7 +653,7 @@
655 653 <defaultvalue>null</defaultvalue>
656 654 </property>
657 655 <property>
658   - <name>onItemMouseover</name>
  656 + <name>onitemmouseover</name>
659 657 <classname>java.lang.String</classname>
660 658 <description>
661 659 JavaScript code for handling event.
... ... @@ -669,7 +667,7 @@
669 667 <defaultvalue>null</defaultvalue>
670 668 </property>
671 669 <property>
672   - <name>onItemMouseout</name>
  670 + <name>onitemmouseout</name>
673 671 <classname>java.lang.String</classname>
674 672 <description>
675 673 JavaScript code for handling event.
... ... @@ -683,7 +681,7 @@
683 681 <defaultvalue>null</defaultvalue>
684 682 </property>
685 683 <property>
686   - <name>onViewChanged</name>
  684 + <name>onbeforeviewchange</name>
687 685 <classname>java.lang.String</classname>
688 686 <description>
689 687 JavaScript code for handling event.
... ... @@ -697,7 +695,7 @@
697 695 <defaultvalue>null</defaultvalue>
698 696 </property>
699 697 <property>
700   - <name>onViewChangedComplete</name>
  698 + <name>onviewchange</name>
701 699 <classname>java.lang.String</classname>
702 700 <description>
703 701 JavaScript code called when ajax request triggered when view
... ... @@ -712,7 +710,7 @@
712 710 <defaultvalue>null</defaultvalue>
713 711 </property>
714 712 <property>
715   - <name>onDateSelected</name>
  713 + <name>onbeforedateselect</name>
716 714 <classname>java.lang.String</classname>
717 715 <description>
718 716 JavaScript code for handling event.
... ... @@ -729,7 +727,7 @@
729 727 <defaultvalue>null</defaultvalue>
730 728 </property>
731 729 <property>
732   - <name>onDateSelectedComplete</name>
  730 + <name>ondateselect</name>
733 731 <classname>java.lang.String</classname>
734 732 <description>
735 733 JavaScript code called when ajax request triggered when date
... ... @@ -749,7 +747,7 @@
749 747 <defaultvalue>null</defaultvalue>
750 748 </property>
751 749 <property>
752   - <name>onDateRangeSelected</name>
  750 + <name>onbeforedaterangeselect</name>
753 751 <classname>java.lang.String</classname>
754 752 <description>
755 753 JavaScript code for handling event.
... ... @@ -766,7 +764,7 @@
766 764 <defaultvalue>null</defaultvalue>
767 765 </property>
768 766 <property>
769   - <name>onDateRangeSelectedComplete</name>
  767 + <name>ondaterangeselect</name>
770 768 <classname>java.lang.String</classname>
771 769 <description>
772 770 JavaScript code called when ajax request triggered when date
... ... @@ -785,8 +783,9 @@
785 783 </description>
786 784 <defaultvalue>null</defaultvalue>
787 785 </property>
  786 + <!--TODO change javadoc of event attributes-->
788 787 <property>
789   - <name>onDateRangeChanged</name>
  788 + <name>onbeforedaterangechange</name>
790 789 <classname>java.lang.String</classname>
791 790 <description>
792 791 JavaScript code for handling event.
... ... @@ -801,7 +800,7 @@
801 800 <defaultvalue>null</defaultvalue>
802 801 </property>
803 802 <property>
804   - <name>onDateRangeChangedComplete</name>
  803 + <name>ondaterangechange</name>
805 804 <classname>java.lang.String</classname>
806 805 <description>
807 806 JavaScript code called when ajax request triggered when displayed
... ... @@ -827,7 +826,6 @@
827 826 <property elonly="true" attachedstate="true">
828 827 <name>itemMoveListener</name>
829 828 <classname>javax.faces.el.MethodBinding</classname>
830   - <!--<methodargs>org.richfaces.component.event.ScheduleItemMoveEvent</methodargs>-->
831 829 <returntype>boolean</returntype>
832 830 </property>
833 831
... ... @@ -837,27 +835,27 @@
837 835 </property>
838 836
839 837 <property elonly="true" attachedstate="true">
840   - <name>itemSelectedListener</name>
  838 + <name>itemSelectListener</name>
841 839 <classname>javax.faces.el.MethodBinding</classname>
842 840 </property>
843 841
844 842 <property elonly="true" attachedstate="true">
845   - <name>viewChangedListener</name>
  843 + <name>viewChangeListener</name>
846 844 <classname>javax.faces.el.MethodBinding</classname>
847 845 </property>
848 846
849 847 <property elonly="true" attachedstate="true">
850   - <name>dateRangeChangedListener</name>
  848 + <name>dateRangeChangeListener</name>
851 849 <classname>javax.faces.el.MethodBinding</classname>
852 850 </property>
853 851
854 852 <property elonly="true" attachedstate="true">
855   - <name>dateRangeSelectedListener</name>
  853 + <name>dateRangeSelectListener</name>
856 854 <classname>javax.faces.el.MethodBinding</classname>
857 855 </property>
858 856
859 857 <property elonly="true" attachedstate="true">
860   - <name>dateSelectedListener</name>
  858 + <name>dateSelectListener</name>
861 859 <classname>javax.faces.el.MethodBinding</classname>
862 860 </property>
863 861
... ...
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN"
3 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 8 <components>
9 9 <component>
10 10 <name>org.richfaces.ScheduleAgendaDayView</name>
... ... @@ -22,11 +22,6 @@
22 22 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
23 23 </superclass>
24 24 </tag>
25   - <!--
26   - <taghandler>
27   - <classname>org.ajax4jsf.tag.TestHandler</classname>
28   - </taghandler>
29   - -->
30 25 &ui_component_attributes;
31 26 &commonViewAttributes;
32 27 </component>
... ...
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN"
3 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 8 <components>
9 9 <component>
10 10 <name>org.richfaces.ScheduleAgendaWeekView</name>
... ... @@ -22,11 +22,6 @@
22 22 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
23 23 </superclass>
24 24 </tag>
25   - <!--
26   - <taghandler>
27   - <classname>org.ajax4jsf.tag.TestHandler</classname>
28   - </taghandler>
29   - -->
30 25 &ui_component_attributes;
31 26 &commonViewAttributes;
32 27 </component>
... ...
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN"
3 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 8 <components>
9 9 <component>
10 10 <name>org.richfaces.ScheduleBasicDayView</name>
... ... @@ -22,11 +22,6 @@
22 22 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
23 23 </superclass>
24 24 </tag>
25   - <!--
26   - <taghandler>
27   - <classname>org.ajax4jsf.tag.TestHandler</classname>
28   - </taghandler>
29   - -->
30 25 &ui_component_attributes;
31 26 &commonViewAttributes;
32 27 </component>
... ...
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN"
3 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 8 <components>
9 9 <component>
10 10 <name>org.richfaces.ScheduleBasicWeekView</name>
... ... @@ -22,11 +22,6 @@
22 22 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
23 23 </superclass>
24 24 </tag>
25   - <!--
26   - <taghandler>
27   - <classname>org.ajax4jsf.tag.TestHandler</classname>
28   - </taghandler>
29   - -->
30 25 &ui_component_attributes;
31 26 &commonViewAttributes;
32 27 </component>
... ...
... ... @@ -19,14 +19,7 @@
19 19 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
20 20 </superclass>
21 21 </tag>
22   - <!--
23   - <taghandler>
24   - <classname>org.ajax4jsf.tag.TestHandler</classname>
25   - </taghandler>
26   - -->
27 22 &ui_component_attributes;
28   - <!--
29   - -->
30 23 <property>
31 24 <name>styleClass</name>
32 25 <classname>java.lang.String</classname>
... ...
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN"
3 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 8 <components>
9 9 <component>
10 10 <name>org.richfaces.ScheduleMonthView</name>
... ... @@ -22,15 +22,8 @@
22 22 org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
23 23 </superclass>
24 24 </tag>
25   - <!--
26   - <taghandler>
27   - <classname>org.ajax4jsf.tag.TestHandler</classname>
28   - </taghandler>
29   - -->
30 25 &ui_component_attributes;
31 26 &commonViewAttributes;
32   - <!--
33   - -->
34 27 <property>
35 28 <name>weekMode</name>
36 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 22 package org.richfaces.component;
2 23
3 24 /**
... ...
... ... @@ -18,13 +18,25 @@ import javax.faces.context.FacesContext;
18 18 import javax.faces.el.MethodBinding;
19 19 import javax.faces.event.AbortProcessingException;
20 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 27 import javax.servlet.jsp.jstl.sql.Result;
23 28 import java.io.IOException;
24 29 import java.sql.ResultSet;
25 30 import java.text.DateFormat;
26 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 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 50 public static final String VIEW_AGENDA_WEEK = "agendaWeek";
39 51 public static final String VIEW_BASIC_DAY = "basicDay";
40 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 62 * Values of weekMode attribute.
43 63 */
44 64 public static final String WEEK_MODE_FIXED = "fixed";
45 65 public static final String WEEK_MODE_LIQUID = "liquid";
46 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 89 private DataModel model;
48 90
49 91 public abstract Object getValue();
... ... @@ -174,123 +216,109 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
174 216
175 217 public abstract void setDragRevertDuration(Integer dragRevertDuration);
176 218
177   - public abstract Double getDragOpacity();
178   -
179   - public abstract void setDragOpacity(Double dragOpacity);
180   -
181 219 public abstract String getStyleClass();
182 220
183 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 295 public abstract MethodBinding getItemMoveListener();
268 296
269 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 303 public abstract MethodBinding getItemResizeListener();
276 304
277 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 323 public abstract String getWidgetVar();
296 324
... ... @@ -303,10 +331,10 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
303 331 * listeners.
304 332 * In case of non vetoable events the order of broadcast is reverse.
305 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 338 * via response data map of ajaxContext.
311 339 * In case of ScheduleItemMoveEvent and ScheduleItemResizeEvent, the
312 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 346 */
319 347 @Override
320 348 public void broadcast(FacesEvent event) throws AbortProcessingException {
321   - if (event instanceof ScheduleDateRangeChangedEvent) {
  349 + if (event instanceof ScheduleDateRangeChangeEvent) {
322 350 super.broadcast(event);
323 351 new AjaxEvent(this).queue();
324   - ScheduleDateRangeChangedEvent calendarAjaxEvent = (ScheduleDateRangeChangedEvent) event;
  352 + ScheduleDateRangeChangeEvent calendarAjaxEvent = (ScheduleDateRangeChangeEvent) event;
325 353 FacesContext facesContext = getFacesContext();
326 354 AjaxContext ajaxContext = AjaxContext.getCurrentInstance(facesContext);
327   - MethodBinding expression = getDateRangeChangedListener();
  355 + MethodBinding expression = getDateRangeChangeListener();
328 356 if (expression != null) {
329 357 expression.invoke(facesContext, new Object[]{event});
330 358 }
... ... @@ -357,35 +385,35 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
357 385 ajaxContext.getResponseDataMap().put("_ajax:scheduleData", allow);
358 386 super.broadcast(event);
359 387 new AjaxEvent(this).queue();
360   - } else if (event instanceof ScheduleItemSelectedEvent) {
  388 + } else if (event instanceof ScheduleItemSelectEvent) {
361 389 super.broadcast(event);
362 390 new AjaxEvent(this).queue();
363 391 FacesContext facesContext = getFacesContext();
364   - MethodBinding expression = getItemSelectedListener();
  392 + MethodBinding expression = getItemSelectListener();
365 393 if (expression != null) {
366 394 expression.invoke(facesContext, new Object[]{event});
367 395 }
368   - } else if (event instanceof ScheduleViewChangedEvent) {
  396 + } else if (event instanceof ScheduleViewChangeEvent) {
369 397 super.broadcast(event);
370 398 new AjaxEvent(this).queue();
371 399 FacesContext facesContext = getFacesContext();
372   - MethodBinding expression = getViewChangedListener();
  400 + MethodBinding expression = getViewChangeListener();
373 401 if (expression != null) {
374 402 expression.invoke(facesContext, new Object[]{event});
375 403 }
376   - } else if (event instanceof ScheduleDateSelectedEvent) {
  404 + } else if (event instanceof ScheduleDateSelectEvent) {
377 405 super.broadcast(event);
378 406 new AjaxEvent(this).queue();
379 407 FacesContext facesContext = getFacesContext();
380   - MethodBinding expression = getDateSelectedListener();
  408 + MethodBinding expression = getDateSelectListener();
381 409 if (expression != null) {
382 410 expression.invoke(facesContext, new Object[]{event});
383 411 }
384   - } else if (event instanceof ScheduleDateRangeSelectedEvent) {
  412 + } else if (event instanceof ScheduleDateRangeSelectEvent) {
385 413 super.broadcast(event);
386 414 new AjaxEvent(this).queue();
387 415 FacesContext facesContext = getFacesContext();
388   - MethodBinding expression = getDateRangeSelectedListener();
  416 + MethodBinding expression = getDateRangeSelectListener();
389 417 if (expression != null) {
390 418 expression.invoke(facesContext, new Object[]{event});
391 419 }
... ... @@ -406,7 +434,7 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
406 434 // XXX - use more pourful search, as in h:outputLabel
407 435 // component.
408 436 UIComponent focusComponent = RendererUtils.getInstance().
409   - findComponentFor(this, focus);
  437 + findComponentFor(this, focus);
410 438 if (null != focusComponent) {
411 439 focus = focusComponent.getClientId(context);
412 440 }
... ... @@ -541,7 +569,7 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
541 569 if (VIEW_MONTH.equals(view)) {
542 570 if (WEEK_MODE_FIXED.equals(getWeekMode(schedule))) {
543 571 calendar.setTime(getFirstDisplayedDay(schedule));
544   - calendar.add(Calendar.DAY_OF_YEAR, 7 * 6);
  572 + calendar.add(Calendar.DAY_OF_YEAR, 42);
545 573 } else {
546 574 Date date = schedule.getDate();
547 575 if (date != null) {
... ... @@ -597,37 +625,28 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
597 625 */
598 626 public static boolean isShowWeekends(UISchedule schedule) {
599 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 631 public static int getFirstDay(UISchedule schedule) {
604 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 636 public static String getWeekMode(UISchedule schedule) {
612 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 641 public static String getView(UISchedule schedule) {
620 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 646 protected DataModel getDataModel() {
628 647 // Return any previously cached DataModel instance
629 648 if (this.model != null) {
630   - return (model);
  649 + return model;
631 650 }
632 651
633 652 // Synthesize a DataModel around our current value if possible
... ... @@ -647,7 +666,7 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
647 666 } else {
648 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 674 this.model = model;
656 675 }
657 676
658   - public void addItemSelectedListener(ScheduleItemSelectedListener listener) {
  677 + public void addItemSelectListener(ScheduleItemSelectListener listener) {
659 678 addFacesListener(listener);
660 679 }
661 680
662   - public void removeItemSelectedListener(ScheduleItemSelectedListener listener) {
  681 + public void removeItemSelectListener(ScheduleItemSelectListener listener) {
663 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 689 public void addItemMoveListener(ScheduleItemMoveListener listener) {
... ... @@ -691,51 +710,51 @@ public abstract class UISchedule extends UIComponentBase implements ScheduleComm
691 710 return (ScheduleItemResizeListener[]) getFacesListeners(ScheduleItemResizeListener.class);
692 711 }
693 712
694   - public void addViewChangedListener(ScheduleViewChangedListener listener) {
  713 + public void addViewChangeListener(ScheduleViewChangeListener listener) {
695 714 addFacesListener(listener);
696 715 }
697 716
698   - public void removeViewChangedListener(ScheduleViewChangedListener listener) {
  717 + public void removeViewChangeListener(ScheduleViewChangeListener listener) {
699 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 726 addFacesListener(listener);
708 727 }
709 728
710   - public void removeDateRangeChangedListener(ScheduleDateRangeChangedListener listener) {
  729 + public void removeDateRangeChangeListener(ScheduleDateRangeChangeListener listener) {
711 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 738 addFacesListener(listener);
720 739 }
721 740
722   - public void removeDateRangeSelectedListener(ScheduleDateRangeSelectedListener listener) {
  741 + public void removeDateRangeSelectListener(ScheduleDateRangeSelectListener listener) {
723 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 750 addFacesListener(listener);
732 751 }
733 752
734   - public void removeDateSelectedListener(ScheduleDateSelectedListener listener) {
  753 + public void removeDateSelectListener(ScheduleDateSelectListener listener) {
735 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 10
11 11 public static final String COMPONENT_TYPE = "org.richfaces.ScheduleItem";
12 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 16 public abstract String getStyleClass();
15 17
... ...
... ... @@ -5,12 +5,12 @@ import javax.faces.event.FacesEvent;
5 5 import javax.faces.event.FacesListener;
6 6 import java.util.Date;
7 7
8   -public class ScheduleDateRangeChangedEvent extends FacesEvent {
  8 +public class ScheduleDateRangeChangeEvent extends FacesEvent {
9 9
10 10 private Date startDate;
11 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 14 super(component);
15 15 this.startDate = startDate;
16 16 this.endDate = endDate;
... ... @@ -31,11 +31,11 @@ public class ScheduleDateRangeChangedEvent extends FacesEvent {
31 31
32 32 @Override
33 33 public boolean isAppropriateListener(FacesListener listener) {
34   - return listener instanceof ScheduleDateRangeChangedListener;
  34 + return listener instanceof ScheduleDateRangeChangeListener;
35 35 }
36 36
37 37 @Override
38 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 2
3 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 5 import javax.faces.event.FacesListener;
6 6 import java.util.Date;
7 7
8   -public class ScheduleDateRangeSelectedEvent extends FacesEvent {
  8 +public class ScheduleDateRangeSelectEvent extends FacesEvent {
9 9
10 10 private Date startDate;
11 11 private Date endDate;
12 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 15 super(component);
16 16 this.startDate = startDate;
17 17 this.endDate = endDate;
... ... @@ -19,11 +19,11 @@ public class ScheduleDateRangeSelectedEvent extends FacesEvent {
19 19 }
20 20
21 21 public boolean isAppropriateListener(FacesListener facesListener) {
22   - return facesListener instanceof ScheduleDateSelectedListener;
  22 + return facesListener instanceof ScheduleDateSelectListener;
23 23 }
24 24
25 25 public void processListener(FacesListener facesListener) {
26   - ((ScheduleDateRangeSelectedListener) facesListener).dateRangeSelected(this);
  26 + ((ScheduleDateRangeSelectListener) facesListener).dateRangeSelected(this);
27 27 }
28 28
29 29 public Date getStartDate() {
... ...
... ... @@ -2,7 +2,7 @@ package org.richfaces.component.event;
2 2
3 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 5 import javax.faces.event.FacesListener;
6 6 import java.util.Date;
7 7
8   -public class ScheduleDateSelectedEvent extends FacesEvent {
  8 +public class ScheduleDateSelectEvent extends FacesEvent {
9 9
10 10 private Date date;
11 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 14 super(component);
15 15 this.date = date;
16 16 this.allDay = allDay;
17 17 }
18 18
19 19 public boolean isAppropriateListener(FacesListener facesListener) {
20   - return facesListener instanceof ScheduleDateSelectedListener;
  20 + return facesListener instanceof ScheduleDateSelectListener;
21 21 }
22 22
23 23 public void processListener(FacesListener facesListener) {
24   - ((ScheduleDateSelectedListener) facesListener).dateSelected(this);
  24 + ((ScheduleDateSelectListener) facesListener).dateSelected(this);
25 25 }
26 26
27 27 public Date getDate() {
... ...
... ... @@ -2,7 +2,7 @@ package org.richfaces.component.event;
2 2
3 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 45
46 46 @Override
47 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 39
40 40 @Override
41 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 4 import javax.faces.event.FacesEvent;
5 5 import javax.faces.event.FacesListener;
6 6
7   -public class ScheduleItemSelectedEvent extends FacesEvent {
  7 +public class ScheduleItemSelectEvent extends FacesEvent {
8 8
9 9 private String eventId;
10 10
11   - public ScheduleItemSelectedEvent(UIComponent component, String eventId) {
  11 + public ScheduleItemSelectEvent(UIComponent component, String eventId) {
12 12 super(component);
13 13 this.eventId = eventId;
14 14 }
15 15
16 16 public boolean isAppropriateListener(FacesListener facesListener) {
17   - return facesListener instanceof ScheduleItemSelectedListener;
  17 + return facesListener instanceof ScheduleItemSelectListener;
18 18 }
19 19
20 20 public void processListener(FacesListener facesListener) {
21   - ((ScheduleItemSelectedListener) facesListener).itemSelected(this);
  21 + ((ScheduleItemSelectListener) facesListener).itemSelected(this);
22 22 }
23 23
24 24 public String getEventId() {
... ...
... ... @@ -2,7 +2,7 @@ package org.richfaces.component.event;
2 2
3 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 2
3 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 11 void addItemMoveListener(ScheduleItemMoveListener listener);
12 12
... ... @@ -20,27 +20,27 @@ public interface ScheduleListenerEventsProducer {
20 20
21 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 4 import javax.faces.event.FacesEvent;
5 5 import javax.faces.event.FacesListener;
6 6
7   -public class ScheduleViewChangedEvent extends FacesEvent {
  7 +public class ScheduleViewChangeEvent extends FacesEvent {
8 8
9 9 private String view;
10 10
11   - public ScheduleViewChangedEvent(UIComponent component, String view) {
  11 + public ScheduleViewChangeEvent(UIComponent component, String view) {
12 12 super(component);
13 13 this.view = view;
14 14 }
15 15
16 16 public boolean isAppropriateListener(FacesListener facesListener) {
17   - return facesListener instanceof ScheduleViewChangedListener;
  17 + return facesListener instanceof ScheduleViewChangeListener;
18 18 }
19 19
20 20 public void processListener(FacesListener facesListener) {
21   - ((ScheduleViewChangedListener) facesListener).viewChanged(this);
  21 + ((ScheduleViewChangeListener) facesListener).viewChanged(this);
22 22 }
23 23
24 24 public String getView() {
... ...
... ... @@ -2,7 +2,7 @@ package org.richfaces.component.event;
2 2
3 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 6 import org.ajax4jsf.javascript.JSReference;
7 7 import org.ajax4jsf.renderkit.AjaxComponentRendererBase;
8 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 24 import javax.faces.FacesException;
13 25 import javax.faces.component.NamingContainer;
... ... @@ -15,20 +27,22 @@ import javax.faces.component.UIComponent;
15 27 import javax.faces.context.FacesContext;
16 28 import javax.faces.context.ResponseWriter;
17 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 37 public abstract class ScheduleRendererBase extends AjaxComponentRendererBase {
21 38
22 39 public static final String ITEM_MOVE_EVENT = "itemMove";
23 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 46 private static final String CALLBACK = "callback";
33 47 private static final String END_DATE_PARAM = "endDate";
34 48 private static final String START_DATE_PARAM = "startDate";
... ... @@ -38,33 +52,55 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase {
38 52 private static final String ALL_DAY_PARAM = "allDay";
39 53 private static final String EVENT_TYPE_PARAM = "eventType";
40 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 106 @Override
... ... @@ -74,20 +110,28 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase {
74 110 }
75 111 Map<String, String> requestParameterMap = context.getExternalContext().getRequestParameterMap();
76 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 130 try {
87   - if (DATE_RANGE_CHANGED_EVENT.equals(eventTypeParam)) {
  131 + if (DATE_RANGE_CHANGE_EVENT.equals(eventTypeParam)) {
88 132 Date startDate = new Date(Long.parseLong(startDateParam) * 1000);
89 133 Date endDate = new Date(Long.parseLong(endDateParam) * 1000);
90   - new ScheduleDateRangeChangedEvent(component, startDate, endDate).queue();
  134 + new ScheduleDateRangeChangeEvent(component, startDate, endDate).queue();
91 135 } else if (ITEM_MOVE_EVENT.equals(eventTypeParam)) {
92 136 int dayDelta = Integer.parseInt(dayDeltaParam);
93 137 int minuteDelta = Integer.parseInt(minuteDeltaParam);
... ... @@ -97,19 +141,19 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase {
97 141 int dayDelta = Integer.parseInt(dayDeltaParam);
98 142 int minuteDelta = Integer.parseInt(minuteDeltaParam);
99 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 149 Date startDate = new Date(Long.parseLong(startDateParam) * 1000);
106 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 153 Date startDate = new Date(Long.parseLong(startDateParam) * 1000);
110 154 Date endDate = new Date(Long.parseLong(endDateParam) * 1000);
111 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 158 } catch (NumberFormatException ex) {
115 159 throw new FacesException("Cannot convert request parmeters", ex);
... ... @@ -126,19 +170,50 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase {
126 170 writer.writeText("var " + widgetVar + " = ", null);
127 171 }
128 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 218 * Copy attributes from child view components
144 219 */
... ... @@ -170,66 +245,67 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase {
170 245 * Include only attributes that are actually set.
171 246 */
172 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 278 addOptionHash("dragOpacity", schedule, options);
201 279 addOptionHash("titleFormat", schedule, options);
202 280 addOptionHash("timeFormat", schedule, options);
203 281 addOptionHash("columnFormat", schedule, options);
204 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 286 if (headerOptions.size() > 0) {
209 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 309 if (schedule.getDate() != null) {
234 310 Calendar calendar = Calendar.getInstance();
235 311 calendar.setTime(schedule.getDate());
... ... @@ -262,40 +338,40 @@ public abstract class ScheduleRendererBase extends AjaxComponentRendererBase {
262 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 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 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 361 private void addOptionHash(String attribute, UIComponent source, Map<String, Object> options) {
276 362 Map<String, Object> hash = new HashMap<String, Object>(3);
277 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 370 if (hash.size() > 0) {
285 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 375 private static void copyAttribute(String attribute, String suffix, UIComponent source, UIComponent target) {
300 376 Object value = source.getAttributes().get(attribute);
301 377 if (value != null) {
... ...
... ... @@ -19,7 +19,7 @@ public class ScheduleMessages extends ClientScript {
19 19
20 20 public static final String BUNDLE_NAME = "org.richfaces.component.UIScheduleMessages";
21 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 24 @Override
25 25 public InputStream getResourceAsStream(ResourceContext context) {
... ... @@ -34,10 +34,12 @@ public class ScheduleMessages extends ClientScript {
34 34 Locale locale = supportedLocales.next();
35 35 ResourceBundle applicationBundle = ResourceBundle.getBundle(application.getMessageBundle(), locale, loader);
36 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 39 String[] days = new String[]{"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"};
39 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 43 appendArray(out, applicationBundle, stockBundle, "monthNames", "monthNames", months);
42 44 out.append(",");
43 45 appendArray(out, applicationBundle, stockBundle, "monthNamesShort", "monthNamesShort", months);
... ... @@ -46,20 +48,23 @@ public class ScheduleMessages extends ClientScript {
46 48 out.append(",");
47 49 appendArray(out, applicationBundle, stockBundle, "dayNamesShort", "dayNamesShort", days);
48 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 53 out.append("},");
51 54 }
52 55 out.delete(out.length() - 1, out.length());
53 56 out.append("})");
54 57 try {
55 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 61 } catch (UnsupportedEncodingException e) {
58 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 68 String key;
64 69 out.append(jsPropertyName).append(":[");
65 70 for (int i = 0; i < keys.length; i++) {
... ... @@ -72,12 +77,15 @@ public class ScheduleMessages extends ClientScript {
72 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 82 String key;
77 83 out.append(jsPropertyName).append(":{");
78 84 for (int i = 0; i < keys.length; i++) {
79 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 89 if (i + 1 < keys.length) {
82 90 out.append(",");
83 91 }
... ... @@ -92,8 +100,8 @@ public class ScheduleMessages extends ClientScript {
92 100 try {
93 101 return stockBundle.getString(key);
94 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 106 return "";
99 107 }
... ...
1 1 package org.richfaces.taglib;
2 2
3 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 9 import com.sun.facelets.tag.jsf.ComponentConfig;
6 10 import com.sun.facelets.tag.jsf.ComponentHandler;
7 11 import org.richfaces.event.NodeExpandedEvent;
... ... @@ -12,12 +16,12 @@ import javax.faces.el.MethodBinding;
12 16
13 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 21 private final static String ITEM_RESIZE_LISTENER = "itemResizeListener";
18 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 26 public ScheduleTagHandlerBase(ComponentConfig config) {
23 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   -}
\ No newline at end of file
... ... @@ -16,7 +16,7 @@
16 16 <h:scripts>org.ajax4jsf.javascript.AjaxScript,
17 17 /org/ajax4jsf/javascript/scripts/form.js,
18 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 20 /org/richfaces/renderkit/html/scripts/ui.core.js,
21 21 /org/richfaces/renderkit/html/scripts/ui.draggable.js,
22 22 /org/richfaces/renderkit/html/scripts/ui.resizable.js,
... ... @@ -27,10 +27,8 @@
27 27 <jsp:scriptlet>
28 28 <![CDATA[org.richfaces.component.util.FormUtil.throwEnclFormReqExceptionIfNeed(context, component);]]>
29 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 31 <script type="text/javascript">
34   - <f:call name = "writeInitFunction"/>
  32 + <f:call name="writeInitFunction"/>
35 33 </script>
36 34 </f:root>
\ No newline at end of file
... ...
... ... @@ -18,7 +18,6 @@
18 18 * License along with this library; if not, write to the Free Software
19 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 20 */
21   -
22 21 package org.richfaces.component;
23 22
24 23 import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;
... ... @@ -33,32 +32,55 @@ import java.util.StringTokenizer;
33 32 /**
34 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 37 public JSFComponentTest(String testName) {
44 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 48 public void testDisplayedDaysForMonthViewCalculation() throws IOException {
49 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 59 public void testDisplayedDaysForWeekViewCalculation() throws IOException {
53 60 doTestDisplayedDays("displayedDaysForWeekViewCalculationTestData", UISchedule.VIEW_AGENDA_WEEK);
54 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 71 public void testDisplayedDaysForDayViewCalculation() throws IOException {
58 72 doTestDisplayedDays("displayedDaysForDayViewCalculationTestData", UISchedule.VIEW_AGENDA_DAY);
59 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 84 private void doTestDisplayedDays(String fileNameProperty, String view) throws IOException {
63 85 Calendar calendar = Calendar.getInstance();
64 86 UISchedule schedule = (UISchedule) application.createComponent(UISchedule.COMPONENT_TYPE);
... ...
... ... @@ -15,11 +15,8 @@ i - expected end year
15 15 j - expected end month
16 16 k - expected end day
17 17
18   -displayedDaysForDayViewCalculationTestData is not fully ready yet
19   -displayedDaysForMonthViewCalculationTestData lacks expected end date !!!
20   -
21 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 21 Calendar calendar = Calendar.getInstance();
25 22 calendar.setTime(startDate);
... ... @@ -44,4 +41,18 @@ code into UISchedule.getCalendarData method
44 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 58 Just remember to avoid blank lines, especially at the end of file.
\ No newline at end of file
... ...
1   -1,0,2010,0,1,2010,0,1,2010,0,2
2 1 1,0,2010,0,4,2010,0,4,2010,0,5
3 2 1,0,2010,0,5,2010,0,5,2010,0,6
4 3 1,0,2010,0,6,2010,0,6,2010,0,7
... ... @@ -60,4 +59,1164 @@
60 59 1,0,2010,2,25,2010,2,25,2010,2,26
61 60 1,0,2010,2,26,2010,2,26,2010,2,27
62 61 1,0,2010,2,29,2010,2,29,2010,2,30
63   -1,0,2010,2,30,2010,2,30,2010,2,31
\ No newline at end of file
  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
\ No newline at end of file
... ...
Please register or login to post a comment