Fix #5681 - fix bootstrap4 detection
[roojs1] / docs / src / Roo_grid_Calendar.js.html
1 <html><head><title>Roo/grid/Calendar.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
2   
3  * Licence LGPL
4  
5  */
6
7 /**
8  * @class Roo.grid.Calendar
9  * @extends Roo.util.Grid
10  * This class extends the Grid to provide a calendar widget
11  * &lt;br&gt;&lt;br&gt;Usage:&lt;pre&gt;&lt;code&gt;
12  var grid = new Roo.grid.Calendar(&quot;my-container-id&quot;, {
13      ds: myDataStore,
14      cm: myColModel,
15      selModel: mySelectionModel,
16      autoSizeColumns: true,
17      monitorWindowResize: false,
18      trackMouseOver: true
19      eventstore : real data store..
20  });
21  // set any options
22  grid.render();
23   
24   * @constructor
25  * @param {String/HTMLElement/Roo.Element} container The element into which this grid will be rendered -
26  * The container MUST have some type of size defined for the grid to fill. The container will be
27  * automatically set to position relative if it isn't already.
28  * @param {Object} config A config object that sets properties on this grid.
29  */
30 </span><span class="jsdoc-var">Roo.grid.Calendar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">container</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">){
31         </span><span class="jsdoc-comment">// initialize the container
32         </span><span class="jsdoc-var">this.container </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">container</span><span class="jsdoc-syntax">);
33         </span><span class="jsdoc-var">this.container.update</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">);
34         </span><span class="jsdoc-var">this.container.setStyle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;overflow&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;hidden&quot;</span><span class="jsdoc-syntax">);
35     </span><span class="jsdoc-var">this.container.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'x-grid-container'</span><span class="jsdoc-syntax">);
36
37     </span><span class="jsdoc-var">this.id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.container.id</span><span class="jsdoc-syntax">;
38
39     </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
40     </span><span class="jsdoc-comment">// check and correct shorthanded configs
41
42     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">rows </span><span class="jsdoc-syntax">= [];
43     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">d </span><span class="jsdoc-syntax">=1;
44     </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= 0;</span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">&lt; 6;</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">++) {
45
46         </span><span class="jsdoc-var">rows</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">]=[];
47         </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">=0;</span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">&lt; 7;</span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">++) {
48             </span><span class="jsdoc-var">rows</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">]= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
49         }
50     }
51     </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.eventStore</span><span class="jsdoc-syntax">) {
52         </span><span class="jsdoc-var">this.eventStore</span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.eventStore</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.data</span><span class="jsdoc-syntax">);
53         </span><span class="jsdoc-var">this.eventStore.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'load'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">this.onLoad</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
54         </span><span class="jsdoc-var">this.eventStore.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'beforeload'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">this.clearEvents</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
55
56     }
57
58     </span><span class="jsdoc-var">this.dataSource </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.data.Store</span><span class="jsdoc-syntax">({
59             </span><span class="jsdoc-var">proxy</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.data.MemoryProxy</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rows</span><span class="jsdoc-syntax">),
60             </span><span class="jsdoc-var">reader</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.data.ArrayReader</span><span class="jsdoc-syntax">({}, [
61                    </span><span class="jsdoc-string">'weekday0'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'weekday1'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'weekday2'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'weekday3'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'weekday4'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'weekday5'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'weekday6' </span><span class="jsdoc-syntax">])
62     });
63
64     </span><span class="jsdoc-var">this.dataSource.load</span><span class="jsdoc-syntax">();
65     </span><span class="jsdoc-var">this.ds </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.dataSource</span><span class="jsdoc-syntax">;
66     </span><span class="jsdoc-var">this.ds.xmodule </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.xmodule </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
67
68
69     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cellRender </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">)
70     {
71         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">String.format</span><span class="jsdoc-syntax">(
72             </span><span class="jsdoc-string">'&lt;div class=&quot;fc-day  fc-widget-content&quot;&gt;&lt;div&gt;' </span><span class="jsdoc-syntax">+
73                 </span><span class="jsdoc-string">'&lt;div class=&quot;fc-event-container&quot;&gt;&lt;/div&gt;' </span><span class="jsdoc-syntax">+
74                 </span><span class="jsdoc-string">'&lt;div class=&quot;fc-day-number&quot;&gt;{0}&lt;/div&gt;'</span><span class="jsdoc-syntax">+
75
76                 </span><span class="jsdoc-string">'&lt;div class=&quot;fc-day-content&quot;&gt;&lt;div style=&quot;position:relative&quot;&gt;&lt;/div&gt;&lt;/div&gt;' </span><span class="jsdoc-syntax">+
77             </span><span class="jsdoc-string">'&lt;/div&gt;&lt;/div&gt;'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">);
78
79     }
80
81
82     </span><span class="jsdoc-var">this.colModel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.grid.ColumnModel</span><span class="jsdoc-syntax">( [
83         {
84             </span><span class="jsdoc-var">xtype</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'ColumnModel'</span><span class="jsdoc-syntax">,
85             </span><span class="jsdoc-var">xns</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.grid</span><span class="jsdoc-syntax">,
86             </span><span class="jsdoc-var">dataIndex </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'weekday0'</span><span class="jsdoc-syntax">,
87             </span><span class="jsdoc-var">header </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'Sunday'</span><span class="jsdoc-syntax">,
88             </span><span class="jsdoc-var">renderer </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cellRender
89         </span><span class="jsdoc-syntax">},
90         {
91             </span><span class="jsdoc-var">xtype</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'ColumnModel'</span><span class="jsdoc-syntax">,
92             </span><span class="jsdoc-var">xns</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.grid</span><span class="jsdoc-syntax">,
93             </span><span class="jsdoc-var">dataIndex </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'weekday1'</span><span class="jsdoc-syntax">,
94             </span><span class="jsdoc-var">header </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'Monday'</span><span class="jsdoc-syntax">,
95             </span><span class="jsdoc-var">renderer </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cellRender
96         </span><span class="jsdoc-syntax">},
97         {
98             </span><span class="jsdoc-var">xtype</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'ColumnModel'</span><span class="jsdoc-syntax">,
99             </span><span class="jsdoc-var">xns</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.grid</span><span class="jsdoc-syntax">,
100             </span><span class="jsdoc-var">dataIndex </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'weekday2'</span><span class="jsdoc-syntax">,
101             </span><span class="jsdoc-var">header </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'Tuesday'</span><span class="jsdoc-syntax">,
102             </span><span class="jsdoc-var">renderer </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cellRender
103         </span><span class="jsdoc-syntax">},
104         {
105             </span><span class="jsdoc-var">xtype</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'ColumnModel'</span><span class="jsdoc-syntax">,
106             </span><span class="jsdoc-var">xns</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.grid</span><span class="jsdoc-syntax">,
107             </span><span class="jsdoc-var">dataIndex </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'weekday3'</span><span class="jsdoc-syntax">,
108             </span><span class="jsdoc-var">header </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'Wednesday'</span><span class="jsdoc-syntax">,
109             </span><span class="jsdoc-var">renderer </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cellRender
110         </span><span class="jsdoc-syntax">},
111         {
112             </span><span class="jsdoc-var">xtype</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'ColumnModel'</span><span class="jsdoc-syntax">,
113             </span><span class="jsdoc-var">xns</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.grid</span><span class="jsdoc-syntax">,
114             </span><span class="jsdoc-var">dataIndex </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'weekday4'</span><span class="jsdoc-syntax">,
115             </span><span class="jsdoc-var">header </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'Thursday'</span><span class="jsdoc-syntax">,
116             </span><span class="jsdoc-var">renderer </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cellRender
117         </span><span class="jsdoc-syntax">},
118         {
119             </span><span class="jsdoc-var">xtype</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'ColumnModel'</span><span class="jsdoc-syntax">,
120             </span><span class="jsdoc-var">xns</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.grid</span><span class="jsdoc-syntax">,
121             </span><span class="jsdoc-var">dataIndex </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'weekday5'</span><span class="jsdoc-syntax">,
122             </span><span class="jsdoc-var">header </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'Friday'</span><span class="jsdoc-syntax">,
123             </span><span class="jsdoc-var">renderer </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cellRender
124         </span><span class="jsdoc-syntax">},
125         {
126             </span><span class="jsdoc-var">xtype</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'ColumnModel'</span><span class="jsdoc-syntax">,
127             </span><span class="jsdoc-var">xns</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.grid</span><span class="jsdoc-syntax">,
128             </span><span class="jsdoc-var">dataIndex </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'weekday6'</span><span class="jsdoc-syntax">,
129             </span><span class="jsdoc-var">header </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'Saturday'</span><span class="jsdoc-syntax">,
130             </span><span class="jsdoc-var">renderer </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cellRender
131         </span><span class="jsdoc-syntax">}
132     ]);
133     </span><span class="jsdoc-var">this.cm </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.colModel</span><span class="jsdoc-syntax">;
134     </span><span class="jsdoc-var">this.cm.xmodule </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.xmodule </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
135
136
137
138     </span><span class="jsdoc-comment">//this.selModel = new Roo.grid.CellSelectionModel();
139     //this.sm = this.selModel;
140     //this.selModel.init(this);
141
142
143     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.width</span><span class="jsdoc-syntax">){
144         </span><span class="jsdoc-var">this.container.setWidth</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.width</span><span class="jsdoc-syntax">);
145     }
146
147     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.height</span><span class="jsdoc-syntax">){
148         </span><span class="jsdoc-var">this.container.setHeight</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.height</span><span class="jsdoc-syntax">);
149     }
150     </span><span class="jsdoc-comment">/** @private */
151         </span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({
152         </span><span class="jsdoc-comment">// raw events
153         /**
154          * @event click
155          * The raw click event for the entire grid.
156          * @param {Roo.EventObject} e
157          */
158         </span><span class="jsdoc-string">&quot;click&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
159         </span><span class="jsdoc-comment">/**
160          * @event dblclick
161          * The raw dblclick event for the entire grid.
162          * @param {Roo.EventObject} e
163          */
164         </span><span class="jsdoc-string">&quot;dblclick&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
165         </span><span class="jsdoc-comment">/**
166          * @event contextmenu
167          * The raw contextmenu event for the entire grid.
168          * @param {Roo.EventObject} e
169          */
170         </span><span class="jsdoc-string">&quot;contextmenu&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
171         </span><span class="jsdoc-comment">/**
172          * @event mousedown
173          * The raw mousedown event for the entire grid.
174          * @param {Roo.EventObject} e
175          */
176         </span><span class="jsdoc-string">&quot;mousedown&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
177         </span><span class="jsdoc-comment">/**
178          * @event mouseup
179          * The raw mouseup event for the entire grid.
180          * @param {Roo.EventObject} e
181          */
182         </span><span class="jsdoc-string">&quot;mouseup&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
183         </span><span class="jsdoc-comment">/**
184          * @event mouseover
185          * The raw mouseover event for the entire grid.
186          * @param {Roo.EventObject} e
187          */
188         </span><span class="jsdoc-string">&quot;mouseover&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
189         </span><span class="jsdoc-comment">/**
190          * @event mouseout
191          * The raw mouseout event for the entire grid.
192          * @param {Roo.EventObject} e
193          */
194         </span><span class="jsdoc-string">&quot;mouseout&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
195         </span><span class="jsdoc-comment">/**
196          * @event keypress
197          * The raw keypress event for the entire grid.
198          * @param {Roo.EventObject} e
199          */
200         </span><span class="jsdoc-string">&quot;keypress&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
201         </span><span class="jsdoc-comment">/**
202          * @event keydown
203          * The raw keydown event for the entire grid.
204          * @param {Roo.EventObject} e
205          */
206         </span><span class="jsdoc-string">&quot;keydown&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
207
208         </span><span class="jsdoc-comment">// custom events
209
210         /**
211          * @event cellclick
212          * Fires when a cell is clicked
213          * @param {Grid} this
214          * @param {Number} rowIndex
215          * @param {Number} columnIndex
216          * @param {Roo.EventObject} e
217          */
218         </span><span class="jsdoc-string">&quot;cellclick&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
219         </span><span class="jsdoc-comment">/**
220          * @event celldblclick
221          * Fires when a cell is double clicked
222          * @param {Grid} this
223          * @param {Number} rowIndex
224          * @param {Number} columnIndex
225          * @param {Roo.EventObject} e
226          */
227         </span><span class="jsdoc-string">&quot;celldblclick&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
228         </span><span class="jsdoc-comment">/**
229          * @event rowclick
230          * Fires when a row is clicked
231          * @param {Grid} this
232          * @param {Number} rowIndex
233          * @param {Roo.EventObject} e
234          */
235         </span><span class="jsdoc-string">&quot;rowclick&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
236         </span><span class="jsdoc-comment">/**
237          * @event rowdblclick
238          * Fires when a row is double clicked
239          * @param {Grid} this
240          * @param {Number} rowIndex
241          * @param {Roo.EventObject} e
242          */
243         </span><span class="jsdoc-string">&quot;rowdblclick&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
244         </span><span class="jsdoc-comment">/**
245          * @event headerclick
246          * Fires when a header is clicked
247          * @param {Grid} this
248          * @param {Number} columnIndex
249          * @param {Roo.EventObject} e
250          */
251         </span><span class="jsdoc-string">&quot;headerclick&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
252         </span><span class="jsdoc-comment">/**
253          * @event headerdblclick
254          * Fires when a header cell is double clicked
255          * @param {Grid} this
256          * @param {Number} columnIndex
257          * @param {Roo.EventObject} e
258          */
259         </span><span class="jsdoc-string">&quot;headerdblclick&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
260         </span><span class="jsdoc-comment">/**
261          * @event rowcontextmenu
262          * Fires when a row is right clicked
263          * @param {Grid} this
264          * @param {Number} rowIndex
265          * @param {Roo.EventObject} e
266          */
267         </span><span class="jsdoc-string">&quot;rowcontextmenu&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
268         </span><span class="jsdoc-comment">/**
269          * @event cellcontextmenu
270          * Fires when a cell is right clicked
271          * @param {Grid} this
272          * @param {Number} rowIndex
273          * @param {Number} cellIndex
274          * @param {Roo.EventObject} e
275          */
276          </span><span class="jsdoc-string">&quot;cellcontextmenu&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
277         </span><span class="jsdoc-comment">/**
278          * @event headercontextmenu
279          * Fires when a header is right clicked
280          * @param {Grid} this
281          * @param {Number} columnIndex
282          * @param {Roo.EventObject} e
283          */
284         </span><span class="jsdoc-string">&quot;headercontextmenu&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
285         </span><span class="jsdoc-comment">/**
286          * @event bodyscroll
287          * Fires when the body element is scrolled
288          * @param {Number} scrollLeft
289          * @param {Number} scrollTop
290          */
291         </span><span class="jsdoc-string">&quot;bodyscroll&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
292         </span><span class="jsdoc-comment">/**
293          * @event columnresize
294          * Fires when the user resizes a column
295          * @param {Number} columnIndex
296          * @param {Number} newSize
297          */
298         </span><span class="jsdoc-string">&quot;columnresize&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
299         </span><span class="jsdoc-comment">/**
300          * @event columnmove
301          * Fires when the user moves a column
302          * @param {Number} oldIndex
303          * @param {Number} newIndex
304          */
305         </span><span class="jsdoc-string">&quot;columnmove&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
306         </span><span class="jsdoc-comment">/**
307          * @event startdrag
308          * Fires when row(s) start being dragged
309          * @param {Grid} this
310          * @param {Roo.GridDD} dd The drag drop object
311          * @param {event} e The raw browser event
312          */
313         </span><span class="jsdoc-string">&quot;startdrag&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
314         </span><span class="jsdoc-comment">/**
315          * @event enddrag
316          * Fires when a drag operation is complete
317          * @param {Grid} this
318          * @param {Roo.GridDD} dd The drag drop object
319          * @param {event} e The raw browser event
320          */
321         </span><span class="jsdoc-string">&quot;enddrag&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
322         </span><span class="jsdoc-comment">/**
323          * @event dragdrop
324          * Fires when dragged row(s) are dropped on a valid DD target
325          * @param {Grid} this
326          * @param {Roo.GridDD} dd The drag drop object
327          * @param {String} targetId The target drag drop object
328          * @param {event} e The raw browser event
329          */
330         </span><span class="jsdoc-string">&quot;dragdrop&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
331         </span><span class="jsdoc-comment">/**
332          * @event dragover
333          * Fires while row(s) are being dragged. &quot;targetId&quot; is the id of the Yahoo.util.DD object the selected rows are being dragged over.
334          * @param {Grid} this
335          * @param {Roo.GridDD} dd The drag drop object
336          * @param {String} targetId The target drag drop object
337          * @param {event} e The raw browser event
338          */
339         </span><span class="jsdoc-string">&quot;dragover&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
340         </span><span class="jsdoc-comment">/**
341          * @event dragenter
342          *  Fires when the dragged row(s) first cross another DD target while being dragged
343          * @param {Grid} this
344          * @param {Roo.GridDD} dd The drag drop object
345          * @param {String} targetId The target drag drop object
346          * @param {event} e The raw browser event
347          */
348         </span><span class="jsdoc-string">&quot;dragenter&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
349         </span><span class="jsdoc-comment">/**
350          * @event dragout
351          * Fires when the dragged row(s) leave another DD target while being dragged
352          * @param {Grid} this
353          * @param {Roo.GridDD} dd The drag drop object
354          * @param {String} targetId The target drag drop object
355          * @param {event} e The raw browser event
356          */
357         </span><span class="jsdoc-string">&quot;dragout&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
358         </span><span class="jsdoc-comment">/**
359          * @event rowclass
360          * Fires when a row is rendered, so you can change add a style to it.
361          * @param {GridView} gridview   The grid view
362          * @param {Object} rowcfg   contains record  rowIndex and rowClass - set rowClass to add a style.
363          */
364         </span><span class="jsdoc-string">'rowclass' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
365
366         </span><span class="jsdoc-comment">/**
367          * @event render
368          * Fires when the grid is rendered
369          * @param {Grid} grid
370          */
371         </span><span class="jsdoc-string">'render' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
372             </span><span class="jsdoc-comment">/**
373              * @event select
374              * Fires when a date is selected
375              * @param {DatePicker} this
376              * @param {Date} date The selected date
377              */
378         </span><span class="jsdoc-string">'select'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
379         </span><span class="jsdoc-comment">/**
380              * @event monthchange
381              * Fires when the displayed month changes 
382              * @param {DatePicker} this
383              * @param {Date} date The selected month
384              */
385         </span><span class="jsdoc-string">'monthchange'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
386         </span><span class="jsdoc-comment">/**
387              * @event evententer
388              * Fires when mouse over an event
389              * @param {Calendar} this
390              * @param {event} Event
391              */
392         </span><span class="jsdoc-string">'evententer'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
393         </span><span class="jsdoc-comment">/**
394              * @event eventleave
395              * Fires when the mouse leaves an
396              * @param {Calendar} this
397              * @param {event}
398              */
399         </span><span class="jsdoc-string">'eventleave'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
400         </span><span class="jsdoc-comment">/**
401              * @event eventclick
402              * Fires when the mouse click an
403              * @param {Calendar} this
404              * @param {event}
405              */
406         </span><span class="jsdoc-string">'eventclick'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
407         </span><span class="jsdoc-comment">/**
408              * @event eventrender
409              * Fires before each cell is rendered, so you can modify the contents, like cls / title / qtip
410              * @param {Calendar} this
411              * @param {data} data to be modified
412              */
413         </span><span class="jsdoc-string">'eventrender'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
414
415     </span><span class="jsdoc-syntax">});
416
417     </span><span class="jsdoc-var">Roo.grid.Grid.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
418     </span><span class="jsdoc-var">this.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'render'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
419         </span><span class="jsdoc-var">this.view.el.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'x-grid-cal'</span><span class="jsdoc-syntax">);
420
421         (</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() { </span><span class="jsdoc-var">this.setDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Date</span><span class="jsdoc-syntax">()); })</span><span class="jsdoc-var">.defer</span><span class="jsdoc-syntax">(100,</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">//default today..
422
423     </span><span class="jsdoc-syntax">},</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
424
425     </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">Roo.grid.Calendar.style</span><span class="jsdoc-syntax">) {
426         </span><span class="jsdoc-var">Roo.grid.Calendar.style </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.util.CSS.createStyleSheet</span><span class="jsdoc-syntax">({
427
428
429             </span><span class="jsdoc-string">'.x-grid-cal .x-grid-col' </span><span class="jsdoc-syntax">:  {
430                 </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'auto !important'</span><span class="jsdoc-syntax">,
431                 </span><span class="jsdoc-string">'vertical-align'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'top'
432             </span><span class="jsdoc-syntax">},
433             </span><span class="jsdoc-string">'.x-grid-cal  .fc-event-hori' </span><span class="jsdoc-syntax">: {
434                 </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'14px'
435             </span><span class="jsdoc-syntax">}
436
437
438         }, </span><span class="jsdoc-var">Roo.id</span><span class="jsdoc-syntax">());
439     }
440
441
442
443 };
444 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.grid.Calendar</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.grid.Grid</span><span class="jsdoc-syntax">, {
445     </span><span class="jsdoc-comment">/**
446      * @cfg {Store} eventStore The store that loads events.
447      */
448     </span><span class="jsdoc-var">eventStore </span><span class="jsdoc-syntax">: 25,
449
450
451     </span><span class="jsdoc-var">activeDate </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
452     </span><span class="jsdoc-var">startDay </span><span class="jsdoc-syntax">: 0,
453     </span><span class="jsdoc-var">autoWidth </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
454     </span><span class="jsdoc-var">monitorWindowResize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
455
456
457     </span><span class="jsdoc-var">resizeColumns </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
458         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">col </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.view.el.getWidth</span><span class="jsdoc-syntax">() / 7) - 3;
459         </span><span class="jsdoc-comment">// loop through cols, and setWidth
460         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">=0 ; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; 7 ; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
461             </span><span class="jsdoc-var">this.cm.setColumnWidth</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">);
462         }
463     },
464      </span><span class="jsdoc-var">setDate </span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">date</span><span class="jsdoc-syntax">) {
465
466         </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'setDate?'</span><span class="jsdoc-syntax">);
467
468         </span><span class="jsdoc-var">this.resizeColumns</span><span class="jsdoc-syntax">();
469         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">vd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.activeDate</span><span class="jsdoc-syntax">;
470         </span><span class="jsdoc-var">this.activeDate </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">date</span><span class="jsdoc-syntax">;
471 </span><span class="jsdoc-comment">//        if(vd &amp;&amp; this.el){
472 //            var t = date.getTime();
473 //            if(vd.getMonth() == date.getMonth() &amp;&amp; vd.getFullYear() == date.getFullYear()){
474 //                Roo.log('using add remove');
475 //                
476 //                this.fireEvent('monthchange', this, date);
477 //                
478 //                this.cells.removeClass(&quot;fc-state-highlight&quot;);
479 //                this.cells.each(function(c){
480 //                   if(c.dateValue == t){
481 //                       c.addClass(&quot;fc-state-highlight&quot;);
482 //                       setTimeout(function(){
483 //                            try{c.dom.firstChild.focus();}catch(e){}
484 //                       }, 50);
485 //                       return false;
486 //                   }
487 //                   return true;
488 //                });
489 //                return;
490 //            }
491 //        }
492
493         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">days </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">date.getDaysInMonth</span><span class="jsdoc-syntax">();
494
495         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">firstOfMonth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">date.getFirstDateOfMonth</span><span class="jsdoc-syntax">();
496         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">startingPos </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">firstOfMonth.getDay</span><span class="jsdoc-syntax">()-</span><span class="jsdoc-var">this.startDay</span><span class="jsdoc-syntax">;
497
498         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">startingPos </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.startDay</span><span class="jsdoc-syntax">){
499             </span><span class="jsdoc-var">startingPos </span><span class="jsdoc-syntax">+= 7;
500         }
501
502         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pm </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">date.add</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Date.MONTH</span><span class="jsdoc-syntax">, -1);
503         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">prevStart </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">pm.getDaysInMonth</span><span class="jsdoc-syntax">()-</span><span class="jsdoc-var">startingPos</span><span class="jsdoc-syntax">;
504 </span><span class="jsdoc-comment">//        
505
506
507         </span><span class="jsdoc-var">this.cells </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.view.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.x-grid-row .x-grid-col'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
508
509         </span><span class="jsdoc-var">this.textNodes </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.view.el.query</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.x-grid-row .x-grid-col .x-grid-cell-text'</span><span class="jsdoc-syntax">);
510         </span><span class="jsdoc-comment">//this.cells.addClassOnOver('fc-state-hover');
511
512         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cells </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.cells.elements</span><span class="jsdoc-syntax">;
513         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">textEls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.textNodes</span><span class="jsdoc-syntax">;
514
515         </span><span class="jsdoc-comment">//Roo.each(cells, function(cell){
516         //    cell.removeClass([ 'fc-past', 'fc-other-month', 'fc-future', 'fc-state-highlight', 'fc-state-disabled']);
517         //});
518
519         </span><span class="jsdoc-var">days </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">startingPos</span><span class="jsdoc-syntax">;
520
521         </span><span class="jsdoc-comment">// convert everything to numbers so it's fast
522         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">day </span><span class="jsdoc-syntax">= 86400000;
523         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">d </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Date</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pm.getFullYear</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">pm.getMonth</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">prevStart</span><span class="jsdoc-syntax">))</span><span class="jsdoc-var">.clearTime</span><span class="jsdoc-syntax">();
524         </span><span class="jsdoc-comment">//Roo.log(d);
525         //Roo.log(pm);
526         //Roo.log(prevStart);
527
528         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">today </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Date</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.clearTime</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.getTime</span><span class="jsdoc-syntax">();
529         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">date.clearTime</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.getTime</span><span class="jsdoc-syntax">();
530         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">min </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minDate </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.minDate.clearTime</span><span class="jsdoc-syntax">() : </span><span class="jsdoc-var">Number.NEGATIVE_INFINITY</span><span class="jsdoc-syntax">;
531         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">max </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.maxDate </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.maxDate.clearTime</span><span class="jsdoc-syntax">() : </span><span class="jsdoc-var">Number.POSITIVE_INFINITY</span><span class="jsdoc-syntax">;
532         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ddMatch </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.disabledDatesRE</span><span class="jsdoc-syntax">;
533         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ddText </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.disabledDatesText</span><span class="jsdoc-syntax">;
534         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ddays </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.disabledDays </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.disabledDays.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
535         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ddaysText </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.disabledDaysText</span><span class="jsdoc-syntax">;
536         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">format </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.format</span><span class="jsdoc-syntax">;
537
538         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">setCellClass </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cal</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cell</span><span class="jsdoc-syntax">){
539
540             </span><span class="jsdoc-comment">//Roo.log('set Cell Class');
541             </span><span class="jsdoc-var">cell.title </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">;
542             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">d.getTime</span><span class="jsdoc-syntax">();
543
544             </span><span class="jsdoc-comment">//Roo.log(d);
545
546
547             </span><span class="jsdoc-var">cell.dateValue </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">;
548             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">today</span><span class="jsdoc-syntax">){
549                 </span><span class="jsdoc-var">cell.className </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">&quot; fc-today&quot;</span><span class="jsdoc-syntax">;
550                 </span><span class="jsdoc-var">cell.className </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">&quot; fc-state-highlight&quot;</span><span class="jsdoc-syntax">;
551                 </span><span class="jsdoc-var">cell.title </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cal.todayText</span><span class="jsdoc-syntax">;
552             }
553             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">){
554                 </span><span class="jsdoc-comment">// disable highlight in other month..
555                 </span><span class="jsdoc-var">cell.className </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">&quot; fc-state-highlight&quot;</span><span class="jsdoc-syntax">;
556
557             }
558             </span><span class="jsdoc-comment">// disabling
559             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">min</span><span class="jsdoc-syntax">) {
560                 </span><span class="jsdoc-comment">//cell.className = &quot; fc-state-disabled&quot;;
561                 </span><span class="jsdoc-var">cell.title </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cal.minText</span><span class="jsdoc-syntax">;
562                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
563             }
564             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">max</span><span class="jsdoc-syntax">) {
565                 </span><span class="jsdoc-comment">//cell.className = &quot; fc-state-disabled&quot;;
566                 </span><span class="jsdoc-var">cell.title </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cal.maxText</span><span class="jsdoc-syntax">;
567                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
568             }
569             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ddays</span><span class="jsdoc-syntax">){
570                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ddays.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">d.getDay</span><span class="jsdoc-syntax">()) != -1){
571                     </span><span class="jsdoc-comment">// cell.title = ddaysText;
572                    // cell.className = &quot; fc-state-disabled&quot;;
573                 </span><span class="jsdoc-syntax">}
574             }
575             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ddMatch </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">format</span><span class="jsdoc-syntax">){
576                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">fvalue </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">d.dateFormat</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">format</span><span class="jsdoc-syntax">);
577                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ddMatch.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fvalue</span><span class="jsdoc-syntax">)){
578                     </span><span class="jsdoc-var">cell.title </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ddText.replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;%0&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fvalue</span><span class="jsdoc-syntax">);
579                    </span><span class="jsdoc-var">cell.className </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot; fc-state-disabled&quot;</span><span class="jsdoc-syntax">;
580                 }
581             }
582
583             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">cell.initialClassName</span><span class="jsdoc-syntax">) {
584                 </span><span class="jsdoc-var">cell.initialClassName </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cell.dom.className</span><span class="jsdoc-syntax">;
585             }
586
587             </span><span class="jsdoc-var">cell.dom.className </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cell.initialClassName  </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">' ' </span><span class="jsdoc-syntax">+  </span><span class="jsdoc-var">cell.className</span><span class="jsdoc-syntax">;
588         };
589
590         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0;
591
592         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">startingPos</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
593             </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.dayName </span><span class="jsdoc-syntax">=  (++</span><span class="jsdoc-var">prevStart</span><span class="jsdoc-syntax">);
594             </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">textEls</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
595             </span><span class="jsdoc-var">d.setDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">d.getDate</span><span class="jsdoc-syntax">()+1);
596
597             </span><span class="jsdoc-comment">//cells[i].className = &quot;fc-past fc-other-month&quot;;
598             </span><span class="jsdoc-var">setCellClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
599         }
600
601         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">intDay </span><span class="jsdoc-syntax">= 0;
602
603         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">days</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
604             </span><span class="jsdoc-var">intDay </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">startingPos </span><span class="jsdoc-syntax">+ 1;
605             </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.dayName </span><span class="jsdoc-syntax">=  (</span><span class="jsdoc-var">intDay</span><span class="jsdoc-syntax">);
606             </span><span class="jsdoc-var">d.setDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">d.getDate</span><span class="jsdoc-syntax">()+1);
607
608             </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.className </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// &quot;x-date-active&quot;;
609             </span><span class="jsdoc-var">setCellClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
610         }
611         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">extraDays </span><span class="jsdoc-syntax">= 0;
612
613         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; 42; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
614             </span><span class="jsdoc-comment">//textEls[i].innerHTML = (++extraDays);
615
616             </span><span class="jsdoc-var">d.setDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">d.getDate</span><span class="jsdoc-syntax">()+1);
617             </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.dayName </span><span class="jsdoc-syntax">= (++</span><span class="jsdoc-var">extraDays</span><span class="jsdoc-syntax">);
618             </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.className </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;fc-future fc-other-month&quot;</span><span class="jsdoc-syntax">;
619             </span><span class="jsdoc-var">setCellClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
620         }
621
622         </span><span class="jsdoc-comment">//this.el.select('.fc-header-title h2',true).update(Date.monthNames[date.getMonth()] + &quot; &quot; + date.getFullYear());
623
624         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">totalRows </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">date.getDaysInMonth</span><span class="jsdoc-syntax">() + </span><span class="jsdoc-var">date.getFirstDateOfMonth</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.getDay</span><span class="jsdoc-syntax">()) / 7);
625
626         </span><span class="jsdoc-comment">// this will cause all the cells to mis
627         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">rows</span><span class="jsdoc-syntax">= [];
628         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">=0;
629         </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= 0;</span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">&lt; 6;</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">++) {
630             </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">=0;</span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">&lt; 7;</span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">++) {
631                 </span><span class="jsdoc-var">this.ds.getAt</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.set</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'weekday' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++]</span><span class="jsdoc-var">.dayName </span><span class="jsdoc-syntax">);
632             }
633         }
634
635         </span><span class="jsdoc-var">this.cells </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.view.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.x-grid-row .x-grid-col'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
636         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">=0;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">&lt;</span><span class="jsdoc-var">cells.length</span><span class="jsdoc-syntax">;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
637
638             </span><span class="jsdoc-var">this.cells.elements</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.dayName </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.dayName </span><span class="jsdoc-syntax">;
639             </span><span class="jsdoc-var">this.cells.elements</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.className </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.className</span><span class="jsdoc-syntax">;
640             </span><span class="jsdoc-var">this.cells.elements</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.initialClassName </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.initialClassName </span><span class="jsdoc-syntax">;
641             </span><span class="jsdoc-var">this.cells.elements</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.title </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.title </span><span class="jsdoc-syntax">;
642             </span><span class="jsdoc-var">this.cells.elements</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.dateValue </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.dateValue </span><span class="jsdoc-syntax">;
643         }
644
645
646
647
648         </span><span class="jsdoc-comment">//this.el.select('tr.fc-week.fc-prev-last',true).removeClass('fc-last');
649         //this.el.select('tr.fc-week.fc-next-last',true).addClass('fc-last').show();
650
651         ////if(totalRows != 6){
652             //this.el.select('tr.fc-week.fc-last',true).removeClass('fc-last').addClass('fc-next-last').hide();
653            // this.el.select('tr.fc-week.fc-prev-last',true).addClass('fc-last');
654        // }
655
656         </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'monthchange'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">date</span><span class="jsdoc-syntax">);
657
658
659     },
660  </span><span class="jsdoc-comment">/**
661      * Returns the grid's SelectionModel.
662      * @return {SelectionModel}
663      */
664     </span><span class="jsdoc-var">getSelectionModel </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
665         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.selModel</span><span class="jsdoc-syntax">){
666             </span><span class="jsdoc-var">this.selModel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.grid.CellSelectionModel</span><span class="jsdoc-syntax">();
667         }
668         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.selModel</span><span class="jsdoc-syntax">;
669     },
670
671     </span><span class="jsdoc-var">load</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
672         </span><span class="jsdoc-var">this.eventStore.load</span><span class="jsdoc-syntax">()
673
674
675
676     },
677
678     </span><span class="jsdoc-var">findCell </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dt</span><span class="jsdoc-syntax">) {
679         </span><span class="jsdoc-var">dt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dt.clearTime</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.getTime</span><span class="jsdoc-syntax">();
680         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
681         </span><span class="jsdoc-var">this.cells.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">){
682             </span><span class="jsdoc-comment">//Roo.log(&quot;check &quot; +c.dateValue + '?=' + dt);
683             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c.dateValue </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">dt</span><span class="jsdoc-syntax">){
684                 </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">;
685                 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
686             }
687             </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
688         });
689
690         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">;
691     },
692
693     </span><span class="jsdoc-var">findCells </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rec</span><span class="jsdoc-syntax">) {
694         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">s </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">rec.data.start_dt.clone</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.clearTime</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.getTime</span><span class="jsdoc-syntax">();
695        </span><span class="jsdoc-comment">// Roo.log(s);
696         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">rec.data.end_dt.clone</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.clearTime</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.getTime</span><span class="jsdoc-syntax">();
697        </span><span class="jsdoc-comment">// Roo.log(e);
698         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">= [];
699         </span><span class="jsdoc-var">this.cells.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">){
700              </span><span class="jsdoc-comment">////Roo.log(&quot;check &quot; +c.dateValue + '&lt;' + e + ' &gt; ' + s);
701
702             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c.dateValue </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
703                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">;
704             }
705             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c.dateValue </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">){
706                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">;
707             }
708             </span><span class="jsdoc-var">ret.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">);
709         });
710
711         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">;
712     },
713
714     </span><span class="jsdoc-var">findBestRow</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">)
715     {
716         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">= 0;
717
718         </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">=0 ; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">cells.length</span><span class="jsdoc-syntax">;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
719             </span><span class="jsdoc-var">ret  </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.max</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.rows </span><span class="jsdoc-syntax">|| 0,</span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">);
720         }
721         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">;
722
723     },
724
725
726     </span><span class="jsdoc-var">addItem </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rec</span><span class="jsdoc-syntax">)
727     {
728         </span><span class="jsdoc-comment">// look for vertical location slot in
729         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cells </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.findCells</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rec</span><span class="jsdoc-syntax">);
730
731         </span><span class="jsdoc-var">rec.row </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.findBestRow</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">);
732
733         </span><span class="jsdoc-comment">// work out the location.
734
735         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">crow </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
736         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">rows </span><span class="jsdoc-syntax">= [];
737         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">=0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">cells.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
738             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">crow</span><span class="jsdoc-syntax">) {
739                 </span><span class="jsdoc-var">crow </span><span class="jsdoc-syntax">= {
740                     </span><span class="jsdoc-var">start </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">],
741                     </span><span class="jsdoc-var">end </span><span class="jsdoc-syntax">:  </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]
742                 };
743                 </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
744             }
745             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">crow.start.getY</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.getY</span><span class="jsdoc-syntax">()) {
746                 </span><span class="jsdoc-comment">// on same row.
747                 </span><span class="jsdoc-var">crow.end </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
748                 </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
749             }
750             </span><span class="jsdoc-comment">// different row.
751             </span><span class="jsdoc-var">rows.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">crow</span><span class="jsdoc-syntax">);
752             </span><span class="jsdoc-var">crow </span><span class="jsdoc-syntax">= {
753                 </span><span class="jsdoc-var">start</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">],
754                 </span><span class="jsdoc-var">end </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]
755             };
756
757         }
758
759         </span><span class="jsdoc-var">rows.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">crow</span><span class="jsdoc-syntax">);
760         </span><span class="jsdoc-var">rec.els </span><span class="jsdoc-syntax">= [];
761         </span><span class="jsdoc-var">rec.rows </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">rows</span><span class="jsdoc-syntax">;
762         </span><span class="jsdoc-var">rec.cells </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">;
763         </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">cells.length</span><span class="jsdoc-syntax">;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
764             </span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.rows </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.max</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cells</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.rows </span><span class="jsdoc-syntax">|| 0 , </span><span class="jsdoc-var">rec.row </span><span class="jsdoc-syntax">+ 1 );
765
766         }
767
768
769     },
770
771     </span><span class="jsdoc-var">clearEvents</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
772
773         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.eventStore.getCount</span><span class="jsdoc-syntax">()) {
774             </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
775         }
776         </span><span class="jsdoc-comment">// reset number of rows in cells.
777         </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.cells.elements</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">){
778             </span><span class="jsdoc-var">c.rows </span><span class="jsdoc-syntax">= 0;
779         });
780
781         </span><span class="jsdoc-var">this.eventStore.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
782             </span><span class="jsdoc-var">this.clearEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
783         },</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
784
785     },
786
787     </span><span class="jsdoc-var">clearEvent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">)
788     {
789         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ev.els</span><span class="jsdoc-syntax">) {
790             </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ev.els</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">) {
791                 </span><span class="jsdoc-var">el.un</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'mouseenter' </span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">this.onEventEnter</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
792                 </span><span class="jsdoc-var">el.un</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'mouseleave' </span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">this.onEventLeave</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
793                 </span><span class="jsdoc-var">el.remove</span><span class="jsdoc-syntax">();
794             },</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
795             </span><span class="jsdoc-var">ev.els </span><span class="jsdoc-syntax">= [];
796         }
797     },
798
799
800     </span><span class="jsdoc-var">renderEvent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">ctr</span><span class="jsdoc-syntax">) {
801         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">ctr</span><span class="jsdoc-syntax">) {
802              </span><span class="jsdoc-var">ctr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.view.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.fc-event-container'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.first</span><span class="jsdoc-syntax">();
803         }
804
805
806         </span><span class="jsdoc-var">this.clearEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">);
807             </span><span class="jsdoc-comment">//code
808
809
810
811         </span><span class="jsdoc-var">ev.els </span><span class="jsdoc-syntax">= [];
812         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cells </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ev.cells</span><span class="jsdoc-syntax">;
813         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">rows </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ev.rows</span><span class="jsdoc-syntax">;
814         </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'eventrender'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">);
815
816         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">=0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">rows.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
817
818             </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
819             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">== 0) {
820                 </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">' fc-event-start'</span><span class="jsdoc-syntax">;
821             }
822             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">+1) == </span><span class="jsdoc-var">rows.length</span><span class="jsdoc-syntax">) {
823                 </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">' fc-event-end'</span><span class="jsdoc-syntax">;
824             }
825
826             </span><span class="jsdoc-comment">//Roo.log(ev.data);
827             // how many rows should it span..
828             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cg </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.eventTmpl.append</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ctr</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">({
829                 </span><span class="jsdoc-var">fccls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cls
830
831             </span><span class="jsdoc-syntax">}, </span><span class="jsdoc-var">ev.data</span><span class="jsdoc-syntax">) , </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
832
833
834             </span><span class="jsdoc-var">cg.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'mouseenter' </span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">this.onEventEnter</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">);
835             </span><span class="jsdoc-var">cg.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'mouseleave' </span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">this.onEventLeave</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">);
836             </span><span class="jsdoc-var">cg.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'click'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onEventClick</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">);
837
838             </span><span class="jsdoc-var">ev.els.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cg</span><span class="jsdoc-syntax">);
839
840             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sbox </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">rows</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.start.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.fc-day-content'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.first</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.getBox</span><span class="jsdoc-syntax">();
841             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ebox </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">rows</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.end.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.fc-day-content'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.first</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.getBox</span><span class="jsdoc-syntax">();
842             </span><span class="jsdoc-comment">//Roo.log(cg);
843
844             </span><span class="jsdoc-var">cg.setXY</span><span class="jsdoc-syntax">([</span><span class="jsdoc-var">sbox.x </span><span class="jsdoc-syntax">+2, </span><span class="jsdoc-var">sbox.y </span><span class="jsdoc-syntax">+(</span><span class="jsdoc-var">ev.row </span><span class="jsdoc-syntax">* 20)]);
845             </span><span class="jsdoc-var">cg.setWidth</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ebox.right </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">sbox.x </span><span class="jsdoc-syntax">-2);
846         }
847     },
848
849     </span><span class="jsdoc-var">renderEvents</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
850     {
851         </span><span class="jsdoc-comment">// first make sure there is enough space..
852
853         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.eventTmpl</span><span class="jsdoc-syntax">) {
854             </span><span class="jsdoc-var">this.eventTmpl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.Template</span><span class="jsdoc-syntax">(
855                 </span><span class="jsdoc-string">'&lt;div class=&quot;roo-dynamic fc-event fc-event-hori fc-event-draggable ui-draggable {fccls} {cls}&quot;  style=&quot;position: absolute&quot; unselectable=&quot;on&quot;&gt;' </span><span class="jsdoc-syntax">+
856                     </span><span class="jsdoc-string">'&lt;div class=&quot;fc-event-inner&quot;&gt;' </span><span class="jsdoc-syntax">+
857                         </span><span class="jsdoc-string">'&lt;span class=&quot;fc-event-time&quot;&gt;{time}&lt;/span&gt;' </span><span class="jsdoc-syntax">+
858                         </span><span class="jsdoc-string">'&lt;span class=&quot;fc-event-title&quot; qtip=&quot;{qtip}&quot;&gt;{title}&lt;/span&gt;' </span><span class="jsdoc-syntax">+
859                     </span><span class="jsdoc-string">'&lt;/div&gt;' </span><span class="jsdoc-syntax">+
860                     </span><span class="jsdoc-string">'&lt;div class=&quot;ui-resizable-heandle ui-resizable-e&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;' </span><span class="jsdoc-syntax">+
861                 </span><span class="jsdoc-string">'&lt;/div&gt;'
862             </span><span class="jsdoc-syntax">);
863
864         }
865
866
867
868         </span><span class="jsdoc-var">this.cells.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">) {
869             </span><span class="jsdoc-comment">//Roo.log(c.select('.fc-day-content div',true).first());
870             </span><span class="jsdoc-var">c.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.fc-day-content div'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.first</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.setHeight</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Math.max</span><span class="jsdoc-syntax">(34, (</span><span class="jsdoc-var">c.rows </span><span class="jsdoc-syntax">|| 1) * 20));
871         });
872
873         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ctr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.view.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.fc-event-container'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.first</span><span class="jsdoc-syntax">();
874
875         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">;
876         </span><span class="jsdoc-var">this.eventStore.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">){
877
878             </span><span class="jsdoc-var">this.renderEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">);
879
880
881         }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
882         </span><span class="jsdoc-var">this.view.layout</span><span class="jsdoc-syntax">();
883
884     },
885
886     </span><span class="jsdoc-var">onEventEnter</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">event</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">) {
887         </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'evententer'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">event</span><span class="jsdoc-syntax">);
888     },
889
890     </span><span class="jsdoc-var">onEventLeave</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">event</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">) {
891         </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'eventleave'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">event</span><span class="jsdoc-syntax">);
892     },
893
894     </span><span class="jsdoc-var">onEventClick</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">event</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">) {
895         </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'eventclick'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">event</span><span class="jsdoc-syntax">);
896     },
897
898     </span><span class="jsdoc-var">onMonthChange</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">() {
899         </span><span class="jsdoc-var">this.store.load</span><span class="jsdoc-syntax">();
900     },
901
902     </span><span class="jsdoc-var">onLoad</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">() {
903
904         </span><span class="jsdoc-comment">//Roo.log('calendar onload');
905 //         
906         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.eventStore.getCount</span><span class="jsdoc-syntax">() &gt; 0){
907
908
909
910             </span><span class="jsdoc-var">this.eventStore.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">){
911
912
913                 </span><span class="jsdoc-comment">// FIXME..
914                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">add </span><span class="jsdoc-syntax">=   </span><span class="jsdoc-var">d.data</span><span class="jsdoc-syntax">;
915                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">add.end_dt</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">)  {
916                     </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;Missing End time in calendar data: &quot;</span><span class="jsdoc-syntax">);
917                     </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">);
918                     </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
919                 }
920                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">add.start_dt</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">)  {
921                     </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;Missing Start time in calendar data: &quot;</span><span class="jsdoc-syntax">);
922                     </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">);
923                     </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
924                 }
925                 </span><span class="jsdoc-var">add.start_dt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">add.start_dt</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'string' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">Date.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">add.start_dt</span><span class="jsdoc-syntax">,</span><span class="jsdoc-string">'Y-m-d H:i:s'</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">add.start_dt</span><span class="jsdoc-syntax">,
926                 </span><span class="jsdoc-var">add.end_dt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">add.end_dt</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'string' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">Date.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">add.end_dt</span><span class="jsdoc-syntax">,</span><span class="jsdoc-string">'Y-m-d H:i:s'</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">add.end_dt</span><span class="jsdoc-syntax">,
927                 </span><span class="jsdoc-var">add.id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">add.id </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">d.id</span><span class="jsdoc-syntax">;
928                 </span><span class="jsdoc-var">add.title </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">add.title </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">'??'</span><span class="jsdoc-syntax">;
929
930                 </span><span class="jsdoc-var">this.addItem</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">);
931
932
933             },</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
934         }
935
936         </span><span class="jsdoc-var">this.renderEvents</span><span class="jsdoc-syntax">();
937     }
938
939
940 });
941 </span><span class="jsdoc-comment">/*
942  grid : {
943                 xtype: 'Grid',
944                 xns: Roo.grid,
945                 listeners : {
946                     render : function ()
947                     {
948                         _this.grid = this;
949                         
950                         if (!this.view.el.hasClass('course-timesheet')) {
951                             this.view.el.addClass('course-timesheet');
952                         }
953                         if (this.tsStyle) {
954                             this.ds.load({});
955                             return; 
956                         }
957                         Roo.log('width');
958                         Roo.log(_this.grid.view.el.getWidth());
959                         
960                         
961                         this.tsStyle =  Roo.util.CSS.createStyleSheet({
962                             '.course-timesheet .x-grid-row' : {
963                                 height: '80px'
964                             },
965                             '.x-grid-row td' : {
966                                 'vertical-align' : 0
967                             },
968                             '.course-edit-link' : {
969                                 'color' : 'blue',
970                                 'text-overflow' : 'ellipsis',
971                                 'overflow' : 'hidden',
972                                 'white-space' : 'nowrap',
973                                 'cursor' : 'pointer'
974                             },
975                             '.sub-link' : {
976                                 'color' : 'green'
977                             },
978                             '.de-act-sup-link' : {
979                                 'color' : 'purple',
980                                 'text-decoration' : 'line-through'
981                             },
982                             '.de-act-link' : {
983                                 'color' : 'red',
984                                 'text-decoration' : 'line-through'
985                             },
986                             '.course-timesheet .course-highlight' : {
987                                 'border-top-style': 'dashed !important',
988                                 'border-bottom-bottom': 'dashed !important'
989                             },
990                             '.course-timesheet .course-item' : {
991                                 'font-family'   : 'tahoma, arial, helvetica',
992                                 'font-size'     : '11px',
993                                 'overflow'      : 'hidden',
994                                 'padding-left'  : '10px',
995                                 'padding-right' : '10px',
996                                 'padding-top' : '10px' 
997                             }
998                             
999                         }, Roo.id());
1000                                 this.ds.load({});
1001                     }
1002                 },
1003                 autoWidth : true,
1004                 monitorWindowResize : false,
1005                 cellrenderer : function(v,x,r)
1006                 {
1007                     return v;
1008                 },
1009                 sm : {
1010                     xtype: 'CellSelectionModel',
1011                     xns: Roo.grid
1012                 },
1013                 dataSource : {
1014                     xtype: 'Store',
1015                     xns: Roo.data,
1016                     listeners : {
1017                         beforeload : function (_self, options)
1018                         {
1019                             options.params = options.params || {};
1020                             options.params._month = _this.monthField.getValue();
1021                             options.params.limit = 9999;
1022                             options.params['sort'] = 'when_dt';    
1023                             options.params['dir'] = 'ASC';    
1024                             this.proxy.loadResponse = this.loadResponse;
1025                             Roo.log(&quot;load?&quot;);
1026                             //this.addColumns();
1027                         },
1028                         load : function (_self, records, options)
1029                         {
1030                             _this.grid.view.el.select('.course-edit-link', true).on('click', function() {
1031                                 // if you click on the translation.. you can edit it...
1032                                 var el = Roo.get(this);
1033                                 var id = el.dom.getAttribute('data-id');
1034                                 var d = el.dom.getAttribute('data-date');
1035                                 var t = el.dom.getAttribute('data-time');
1036                                 //var id = this.child('span').dom.textContent;
1037                                 
1038                                 //Roo.log(this);
1039                                 Pman.Dialog.CourseCalendar.show({
1040                                     id : id,
1041                                     when_d : d,
1042                                     when_t : t,
1043                                     productitem_active : id ? 1 : 0
1044                                 }, function() {
1045                                     _this.grid.ds.load({});
1046                                 });
1047                            
1048                            });
1049                            
1050                            _this.panel.fireEvent('resize', [ '', '' ]);
1051                         }
1052                     },
1053                     loadResponse : function(o, success, response){
1054                             // this is overridden on before load..
1055                             
1056                             Roo.log(&quot;our code?&quot;);     
1057                             //Roo.log(success);
1058                             //Roo.log(response)
1059                             delete this.activeRequest;
1060                             if(!success){
1061                                 this.fireEvent(&quot;loadexception&quot;, this, o, response);
1062                                 o.request.callback.call(o.request.scope, null, o.request.arg, false);
1063                                 return;
1064                             }
1065                             var result;
1066                             try {
1067                                 result = o.reader.read(response);
1068                             }catch(e){
1069                                 Roo.log(&quot;load exception?&quot;);
1070                                 this.fireEvent(&quot;loadexception&quot;, this, o, response, e);
1071                                 o.request.callback.call(o.request.scope, null, o.request.arg, false);
1072                                 return;
1073                             }
1074                             Roo.log(&quot;ready...&quot;);        
1075                             // loop through result.records;
1076                             // and set this.tdate[date] = [] &lt;&lt; array of records..
1077                             _this.tdata  = {};
1078                             Roo.each(result.records, function(r){
1079                                 //Roo.log(r.data);
1080                                 if(typeof(_this.tdata[r.data.when_dt.format('j')]) == 'undefined'){
1081                                     _this.tdata[r.data.when_dt.format('j')] = [];
1082                                 }
1083                                 _this.tdata[r.data.when_dt.format('j')].push(r.data);
1084                             });
1085                             
1086                             //Roo.log(_this.tdata);
1087                             
1088                             result.records = [];
1089                             result.totalRecords = 6;
1090                     
1091                             // let's generate some duumy records for the rows.
1092                             //var st = _this.dateField.getValue();
1093                             
1094                             // work out monday..
1095                             //st = st.add(Date.DAY, -1 * st.format('w'));
1096                             
1097                             var date = Date.parseDate(_this.monthField.getValue(), &quot;Y-m-d&quot;);
1098                             
1099                             var firstOfMonth = date.getFirstDayOfMonth();
1100                             var days = date.getDaysInMonth();
1101                             var d = 1;
1102                             var firstAdded = false;
1103                             for (var i = 0; i &lt; result.totalRecords ; i++) {
1104                                 //var d= st.add(Date.DAY, i);
1105                                 var row = {};
1106                                 var added = 0;
1107                                 for(var w = 0 ; w &lt; 7 ; w++){
1108                                     if(!firstAdded &amp;&amp; firstOfMonth != w){
1109                                         continue;
1110                                     }
1111                                     if(d &gt; days){
1112                                         continue;
1113                                     }
1114                                     firstAdded = true;
1115                                     var dd = (d &gt; 0 &amp;&amp; d &lt; 10) ? &quot;0&quot;+d : d;
1116                                     row['weekday'+w] = String.format(
1117                                                     '&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;/span&gt;'+
1118                                                     '&lt;span class=&quot;course-edit-link&quot; style=&quot;color:blue;&quot; data-id=&quot;0&quot; data-date=&quot;{1}&quot;&gt; Add New&lt;/span&gt;',
1119                                                     d,
1120                                                     date.format('Y-m-')+dd
1121                                                 );
1122                                     added++;
1123                                     if(typeof(_this.tdata[d]) != 'undefined'){
1124                                         Roo.each(_this.tdata[d], function(r){
1125                                             var is_sub = '';
1126                                             var deactive = '';
1127                                             var id = r.id;
1128                                             var desc = (r.productitem_id_descrip) ? r.productitem_id_descrip : '';
1129                                             if(r.parent_id*1&gt;0){
1130                                                 is_sub = (r.productitem_id_visible*1 &lt; 1) ? 'de-act-sup-link' :'sub-link';
1131                                                 id = r.parent_id;
1132                                             }
1133                                             if(r.productitem_id_visible*1 &lt; 1 &amp;&amp; r.parent_id*1 &lt; 1){
1134                                                 deactive = 'de-act-link';
1135                                             }
1136                                             
1137                                             row['weekday'+w] += String.format(
1138                                                     '&lt;br /&gt;&lt;span class=&quot;course-edit-link {3} {4}&quot; qtip=&quot;{5}&quot; data-id=&quot;{0}&quot;&gt;{2} - {1}&lt;/span&gt;',
1139                                                     id, //0
1140                                                     r.product_id_name, //1
1141                                                     r.when_dt.format('h:ia'), //2
1142                                                     is_sub, //3
1143                                                     deactive, //4
1144                                                     desc // 5
1145                                             );
1146                                         });
1147                                     }
1148                                     d++;
1149                                 }
1150                                 
1151                                 // only do this if something added..
1152                                 if(added &gt; 0){ 
1153                                     result.records.push(_this.grid.dataSource.reader.newRow(row));
1154                                 }
1155                                 
1156                                 
1157                                 // push it twice. (second one with an hour..
1158                                 
1159                             }
1160                             //Roo.log(result);
1161                             this.fireEvent(&quot;load&quot;, this, o, o.request.arg);
1162                             o.request.callback.call(o.request.scope, result, o.request.arg, true);
1163                         },
1164                     sortInfo : {field: 'when_dt', direction : 'ASC' },
1165                     proxy : {
1166                         xtype: 'HttpProxy',
1167                         xns: Roo.data,
1168                         method : 'GET',
1169                         url : baseURL + '/Roo/Shop_course.php'
1170                     },
1171                     reader : {
1172                         xtype: 'JsonReader',
1173                         xns: Roo.data,
1174                         id : 'id',
1175                         fields : [
1176                             {
1177                                 'name': 'id',
1178                                 'type': 'int'
1179                             },
1180                             {
1181                                 'name': 'when_dt',
1182                                 'type': 'string'
1183                             },
1184                             {
1185                                 'name': 'end_dt',
1186                                 'type': 'string'
1187                             },
1188                             {
1189                                 'name': 'parent_id',
1190                                 'type': 'int'
1191                             },
1192                             {
1193                                 'name': 'product_id',
1194                                 'type': 'int'
1195                             },
1196                             {
1197                                 'name': 'productitem_id',
1198                                 'type': 'int'
1199                             },
1200                             {
1201                                 'name': 'guid',
1202                                 'type': 'int'
1203                             }
1204                         ]
1205                     }
1206                 },
1207                 toolbar : {
1208                     xtype: 'Toolbar',
1209                     xns: Roo,
1210                     items : [
1211                         {
1212                             xtype: 'Button',
1213                             xns: Roo.Toolbar,
1214                             listeners : {
1215                                 click : function (_self, e)
1216                                 {
1217                                     var sd = Date.parseDate(_this.monthField.getValue(), &quot;Y-m-d&quot;);
1218                                     sd.setMonth(sd.getMonth()-1);
1219                                     _this.monthField.setValue(sd.format('Y-m-d'));
1220                                     _this.grid.ds.load({});
1221                                 }
1222                             },
1223                             text : &quot;Back&quot;
1224                         },
1225                         {
1226                             xtype: 'Separator',
1227                             xns: Roo.Toolbar
1228                         },
1229                         {
1230                             xtype: 'MonthField',
1231                             xns: Roo.form,
1232                             listeners : {
1233                                 render : function (_self)
1234                                 {
1235                                     _this.monthField = _self;
1236                                    // _this.monthField.set  today
1237                                 },
1238                                 select : function (combo, date)
1239                                 {
1240                                     _this.grid.ds.load({});
1241                                 }
1242                             },
1243                             value : (function() { return new Date(); })()
1244                         },
1245                         {
1246                             xtype: 'Separator',
1247                             xns: Roo.Toolbar
1248                         },
1249                         {
1250                             xtype: 'TextItem',
1251                             xns: Roo.Toolbar,
1252                             text : &quot;Blue: in-active, green: in-active sup-event, red: de-active, purple: de-active sup-event&quot;
1253                         },
1254                         {
1255                             xtype: 'Fill',
1256                             xns: Roo.Toolbar
1257                         },
1258                         {
1259                             xtype: 'Button',
1260                             xns: Roo.Toolbar,
1261                             listeners : {
1262                                 click : function (_self, e)
1263                                 {
1264                                     var sd = Date.parseDate(_this.monthField.getValue(), &quot;Y-m-d&quot;);
1265                                     sd.setMonth(sd.getMonth()+1);
1266                                     _this.monthField.setValue(sd.format('Y-m-d'));
1267                                     _this.grid.ds.load({});
1268                                 }
1269                             },
1270                             text : &quot;Next&quot;
1271                         }
1272                     ]
1273                 },
1274                  
1275             }
1276         };
1277         
1278         */</span></code></body></html>