docs/default.css
[roojs1] / docs / symbols / src / Roo_bootstrap_Form.js.html
1 <html><head><title>../roojs1/Roo/bootstrap/Form.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  * - LGPL
3  *
4  * form
5  *
6  */
7
8 /**
9  * @class Roo.bootstrap.Form
10  * @extends Roo.bootstrap.Component
11  * Bootstrap Form class
12  * @cfg {String} method  GET | POST (default POST)
13  * @cfg {String} labelAlign top | left (default top)
14  * @cfg {String} align left  | right - for navbars
15  * @cfg {Boolean} loadMask load mask when submit (default true)
16
17  *
18  * @constructor
19  * Create a new Form
20  * @param {Object} config The config object
21  */
22
23
24 </span><span class="jsdoc-var">Roo.bootstrap.Form </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">){
25     </span><span class="jsdoc-var">Roo.bootstrap.Form.superclass.constructor.call</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">);
26     
27     </span><span class="jsdoc-var">Roo.bootstrap.Form.popover.apply</span><span class="jsdoc-syntax">();
28     
29     </span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({
30         </span><span class="jsdoc-comment">/**
31          * @event clientvalidation
32          * If the monitorValid config option is true, this event fires repetitively to notify of valid state
33          * @param {Form} this
34          * @param {Boolean} valid true if the form has passed client-side validation
35          */
36         </span><span class="jsdoc-var">clientvalidation</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
37         </span><span class="jsdoc-comment">/**
38          * @event beforeaction
39          * Fires before any action is performed. Return false to cancel the action.
40          * @param {Form} this
41          * @param {Action} action The action to be performed
42          */
43         </span><span class="jsdoc-var">beforeaction</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
44         </span><span class="jsdoc-comment">/**
45          * @event actionfailed
46          * Fires when an action fails.
47          * @param {Form} this
48          * @param {Action} action The action that failed
49          */
50         </span><span class="jsdoc-var">actionfailed </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
51         </span><span class="jsdoc-comment">/**
52          * @event actioncomplete
53          * Fires when an action is completed.
54          * @param {Form} this
55          * @param {Action} action The action that completed
56          */
57         </span><span class="jsdoc-var">actioncomplete </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
58     </span><span class="jsdoc-syntax">});
59
60 };
61
62 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.bootstrap.Form</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.bootstrap.Component</span><span class="jsdoc-syntax">,  {
63
64      </span><span class="jsdoc-comment">/**
65      * @cfg {String} method
66      * The request method to use (GET or POST) for form actions if one isn't supplied in the action options.
67      */
68     </span><span class="jsdoc-var">method </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'POST'</span><span class="jsdoc-syntax">,
69     </span><span class="jsdoc-comment">/**
70      * @cfg {String} url
71      * The URL to use for form actions if one isn't supplied in the action options.
72      */
73     /**
74      * @cfg {Boolean} fileUpload
75      * Set to true if this form is a file upload.
76      */
77
78     /**
79      * @cfg {Object} baseParams
80      * Parameters to pass with all requests. e.g. baseParams: {id: '123', foo: 'bar'}.
81      */
82
83     /**
84      * @cfg {Number} timeout Timeout for form actions in seconds (default is 30 seconds).
85      */
86     </span><span class="jsdoc-var">timeout</span><span class="jsdoc-syntax">: 30,
87     </span><span class="jsdoc-comment">/**
88      * @cfg {Sting} align (left|right) for navbar forms
89      */
90     </span><span class="jsdoc-var">align </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'left'</span><span class="jsdoc-syntax">,
91
92     </span><span class="jsdoc-comment">// private
93     </span><span class="jsdoc-var">activeAction </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">,
94
95     </span><span class="jsdoc-comment">/**
96      * By default wait messages are displayed with Roo.MessageBox.wait. You can target a specific
97      * element by passing it or its id or mask the form itself by passing in true.
98      * @type Mixed
99      */
100     </span><span class="jsdoc-var">waitMsgTarget </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
101
102     </span><span class="jsdoc-var">loadMask </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
103     
104     </span><span class="jsdoc-comment">/**
105      * @cfg {Boolean} errPopover (true|false) default false
106      */
107     </span><span class="jsdoc-var">errPopover </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
108
109     </span><span class="jsdoc-var">getAutoCreate </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
110
111         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cfg </span><span class="jsdoc-syntax">= {
112             </span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'form'</span><span class="jsdoc-syntax">,
113             </span><span class="jsdoc-var">method </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.method </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">'POST'</span><span class="jsdoc-syntax">,
114             </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.id </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.id</span><span class="jsdoc-syntax">(),
115             </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''
116         </span><span class="jsdoc-syntax">};
117         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.parent</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.xtype.match</span><span class="jsdoc-syntax">(/^Nav/)) {
118             </span><span class="jsdoc-var">cfg.cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'navbar-form navbar-' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.align</span><span class="jsdoc-syntax">;
119
120         }
121
122         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.labelAlign </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'left' </span><span class="jsdoc-syntax">) {
123             </span><span class="jsdoc-var">cfg.cls </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">' form-horizontal'</span><span class="jsdoc-syntax">;
124         }
125
126
127         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">cfg</span><span class="jsdoc-syntax">;
128     },
129     </span><span class="jsdoc-var">initEvents </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
130     {
131         </span><span class="jsdoc-var">this.el.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'submit'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onSubmit</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
132         </span><span class="jsdoc-comment">// this was added as random key presses on the form where triggering form submit.
133         </span><span class="jsdoc-var">this.el.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'keypress'</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">) {
134             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.getCharCode</span><span class="jsdoc-syntax">() != 13) {
135                 </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
136             }
137             </span><span class="jsdoc-comment">// we might need to allow it for textareas.. and some other items.
138             // check e.getTarget().
139
140             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.getTarget</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.nodeName.toLowerCase</span><span class="jsdoc-syntax">() === </span><span class="jsdoc-string">'textarea'</span><span class="jsdoc-syntax">){
141                 </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
142             }
143
144             </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;keypress blocked&quot;</span><span class="jsdoc-syntax">);
145
146             </span><span class="jsdoc-var">e.preventDefault</span><span class="jsdoc-syntax">();
147             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
148         });
149         
150     },
151     </span><span class="jsdoc-comment">// private
152     </span><span class="jsdoc-var">onSubmit </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">){
153         </span><span class="jsdoc-var">e.stopEvent</span><span class="jsdoc-syntax">();
154     },
155
156      </span><span class="jsdoc-comment">/**
157      * Returns true if client-side validation on the form is successful.
158      * @return Boolean
159      */
160     </span><span class="jsdoc-var">isValid </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
161         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">items </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getItems</span><span class="jsdoc-syntax">();
162         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">valid </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
163         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
164         
165         </span><span class="jsdoc-var">items.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">){
166             
167             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f.validate</span><span class="jsdoc-syntax">()){
168                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
169             }
170             
171             </span><span class="jsdoc-var">valid </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
172
173             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">f.el.isVisible</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)){
174                 </span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">;
175             }
176            
177         });
178         
179         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.errPopover </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">valid</span><span class="jsdoc-syntax">){
180             </span><span class="jsdoc-var">Roo.bootstrap.Form.popover.mask</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">);
181         }
182         
183         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">valid</span><span class="jsdoc-syntax">;
184     },
185     
186     </span><span class="jsdoc-comment">/**
187      * Returns true if any fields in this form have changed since their original load.
188      * @return Boolean
189      */
190     </span><span class="jsdoc-var">isDirty </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
191         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dirty </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
192         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">items </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getItems</span><span class="jsdoc-syntax">();
193         </span><span class="jsdoc-var">items.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">){
194            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f.isDirty</span><span class="jsdoc-syntax">()){
195                </span><span class="jsdoc-var">dirty </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
196                </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
197            }
198            </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
199         });
200         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">dirty</span><span class="jsdoc-syntax">;
201     },
202      </span><span class="jsdoc-comment">/**
203      * Performs a predefined action (submit or load) or custom actions you define on this form.
204      * @param {String} actionName The name of the action type
205      * @param {Object} options (optional) The options to pass to the action.  All of the config options listed
206      * below are supported by both the submit and load actions unless otherwise noted (custom actions could also
207      * accept other config options):
208      * &lt;pre&gt;
209 Property          Type             Description
210 ----------------  ---------------  ----------------------------------------------------------------------------------
211 url               String           The url for the action (defaults to the form's url)
212 method            String           The form method to use (defaults to the form's method, or POST if not defined)
213 params            String/Object    The params to pass (defaults to the form's baseParams, or none if not defined)
214 clientValidation  Boolean          Applies to submit only.  Pass true to call form.isValid() prior to posting to
215                                    validate the form on the client (defaults to false)
216      * &lt;/pre&gt;
217      * @return {BasicForm} this
218      */
219     </span><span class="jsdoc-var">doAction </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">action</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">){
220         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">action </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'string'</span><span class="jsdoc-syntax">){
221             </span><span class="jsdoc-var">action </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.form.Action.ACTION_TYPES</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">action</span><span class="jsdoc-syntax">](</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">);
222         }
223         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'beforeaction'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">action</span><span class="jsdoc-syntax">) !== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
224             </span><span class="jsdoc-var">this.beforeAction</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">action</span><span class="jsdoc-syntax">);
225             </span><span class="jsdoc-var">action.run.defer</span><span class="jsdoc-syntax">(100, </span><span class="jsdoc-var">action</span><span class="jsdoc-syntax">);
226         }
227         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
228     },
229
230     </span><span class="jsdoc-comment">// private
231     </span><span class="jsdoc-var">beforeAction </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">action</span><span class="jsdoc-syntax">){
232         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">o </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">action.options</span><span class="jsdoc-syntax">;
233
234         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.loadMask</span><span class="jsdoc-syntax">){
235             </span><span class="jsdoc-var">this.el.mask</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.waitMsg </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">&quot;Sending&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'x-mask-loading'</span><span class="jsdoc-syntax">);
236         }
237         </span><span class="jsdoc-comment">// not really supported yet.. ??
238
239         //if(this.waitMsgTarget === true){
240         //  this.el.mask(o.waitMsg || &quot;Sending&quot;, 'x-mask-loading');
241         //}else if(this.waitMsgTarget){
242         //    this.waitMsgTarget = Roo.get(this.waitMsgTarget);
243         //    this.waitMsgTarget.mask(o.waitMsg || &quot;Sending&quot;, 'x-mask-loading');
244         //}else {
245         //    Roo.MessageBox.wait(o.waitMsg || &quot;Sending&quot;, o.waitTitle || this.waitTitle || 'Please Wait...');
246        // }
247
248     </span><span class="jsdoc-syntax">},
249
250     </span><span class="jsdoc-comment">// private
251     </span><span class="jsdoc-var">afterAction </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">action</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">success</span><span class="jsdoc-syntax">){
252         </span><span class="jsdoc-var">this.activeAction </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
253         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">o </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">action.options</span><span class="jsdoc-syntax">;
254
255         </span><span class="jsdoc-comment">//if(this.waitMsgTarget === true){
256             </span><span class="jsdoc-var">this.el.unmask</span><span class="jsdoc-syntax">();
257         </span><span class="jsdoc-comment">//}else if(this.waitMsgTarget){
258         //    this.waitMsgTarget.unmask();
259         //}else{
260         //    Roo.MessageBox.updateProgress(1);
261         //    Roo.MessageBox.hide();
262        // }
263         //
264         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">success</span><span class="jsdoc-syntax">){
265             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.reset</span><span class="jsdoc-syntax">){
266                 </span><span class="jsdoc-var">this.reset</span><span class="jsdoc-syntax">();
267             }
268             </span><span class="jsdoc-var">Roo.callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.success</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o.scope</span><span class="jsdoc-syntax">, [</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">action</span><span class="jsdoc-syntax">]);
269             </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'actioncomplete'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">action</span><span class="jsdoc-syntax">);
270
271         }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
272
273             </span><span class="jsdoc-comment">// failure condition..
274             // we have a scenario where updates need confirming.
275             // eg. if a locking scenario exists..
276             // we look for { errors : { needs_confirm : true }} in the response.
277             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(
278                 (</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">action.result</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">)  &amp;&amp;
279                 (</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">action.result.errors</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">)  &amp;&amp;
280                 (</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">action.result.errors.needs_confirm</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">)
281            ){
282                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
283                 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;not supported yet&quot;</span><span class="jsdoc-syntax">);
284                  </span><span class="jsdoc-comment">/*
285
286                 Roo.MessageBox.confirm(
287                     &quot;Change requires confirmation&quot;,
288                     action.result.errorMsg,
289                     function(r) {
290                         if (r != 'yes') {
291                             return;
292                         }
293                         _t.doAction('submit', { params :  { _submit_confirmed : 1 } }  );
294                     }
295
296                 );
297                 */
298
299
300                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
301             }
302
303             </span><span class="jsdoc-var">Roo.callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.failure</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o.scope</span><span class="jsdoc-syntax">, [</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">action</span><span class="jsdoc-syntax">]);
304             </span><span class="jsdoc-comment">// show an error message if no failed handler is set..
305             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.hasListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'actionfailed'</span><span class="jsdoc-syntax">)) {
306                 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;need to add dialog support&quot;</span><span class="jsdoc-syntax">);
307                 </span><span class="jsdoc-comment">/*
308                 Roo.MessageBox.alert(&quot;Error&quot;,
309                     (typeof(action.result) != 'undefined' &amp;&amp; typeof(action.result.errorMsg) != 'undefined') ?
310                         action.result.errorMsg :
311                         &quot;Saving Failed, please check your entries or try again&quot;
312                 );
313                 */
314             </span><span class="jsdoc-syntax">}
315
316             </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'actionfailed'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">action</span><span class="jsdoc-syntax">);
317         }
318
319     },
320     </span><span class="jsdoc-comment">/**
321      * Find a Roo.form.Field in this form by id, dataIndex, name or hiddenName
322      * @param {String} id The value to search for
323      * @return Field
324      */
325     </span><span class="jsdoc-var">findField </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
326         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">items </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getItems</span><span class="jsdoc-syntax">();
327         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">field </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">items.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
328         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">field</span><span class="jsdoc-syntax">){
329              </span><span class="jsdoc-var">items.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">){
330                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f.isFormField </span><span class="jsdoc-syntax">&amp;&amp; (</span><span class="jsdoc-var">f.dataIndex </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">f.id </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">f.getName</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">)){
331                     </span><span class="jsdoc-var">field </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">;
332                     </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
333                 }
334                 </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
335             });
336         }
337         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">field </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
338     },
339      </span><span class="jsdoc-comment">/**
340      * Mark fields in this form invalid in bulk.
341      * @param {Array/Object} errors Either an array in the form [{id:'fieldId', msg:'The message'},...] or an object hash of {id: msg, id2: msg2}
342      * @return {BasicForm} this
343      */
344     </span><span class="jsdoc-var">markInvalid </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">errors</span><span class="jsdoc-syntax">){
345         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">errors </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">){
346             </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">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">errors.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
347                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">fieldError </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">errors</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
348                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">f </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.findField</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fieldError.id</span><span class="jsdoc-syntax">);
349                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">){
350                     </span><span class="jsdoc-var">f.markInvalid</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fieldError.msg</span><span class="jsdoc-syntax">);
351                 }
352             }
353         }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
354             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">field</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">;
355             </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">errors</span><span class="jsdoc-syntax">){
356                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">errors</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">] != </span><span class="jsdoc-string">'function' </span><span class="jsdoc-syntax">&amp;&amp; (</span><span class="jsdoc-var">field </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.findField</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">))){
357                     </span><span class="jsdoc-var">field.markInvalid</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">errors</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">]);
358                 }
359             }
360         }
361         </span><span class="jsdoc-comment">//Roo.each(this.childForms || [], function (f) {
362         //    f.markInvalid(errors);
363         //});
364
365         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
366     },
367
368     </span><span class="jsdoc-comment">/**
369      * Set values for fields in this form in bulk.
370      * @param {Array/Object} values Either an array in the form [{id:'fieldId', value:'foo'},...] or an object hash of {id: value, id2: value2}
371      * @return {BasicForm} this
372      */
373     </span><span class="jsdoc-var">setValues </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">){
374         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">values </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// array of objects
375             </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">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">values.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
376                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
377                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">f </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.findField</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v.id</span><span class="jsdoc-syntax">);
378                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">){
379                     </span><span class="jsdoc-var">f.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v.value</span><span class="jsdoc-syntax">);
380                     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.trackResetOnLoad</span><span class="jsdoc-syntax">){
381                         </span><span class="jsdoc-var">f.originalValue </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">f.getValue</span><span class="jsdoc-syntax">();
382                     }
383                 }
384             }
385         }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{ </span><span class="jsdoc-comment">// object hash
386             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">field</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">;
387             </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">){
388                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">] != </span><span class="jsdoc-string">'function' </span><span class="jsdoc-syntax">&amp;&amp; (</span><span class="jsdoc-var">field </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.findField</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">))){
389
390                     </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">field.setFromData </span><span class="jsdoc-syntax">&amp;&amp;
391                         </span><span class="jsdoc-var">field.valueField </span><span class="jsdoc-syntax">&amp;&amp;
392                         </span><span class="jsdoc-var">field.displayField </span><span class="jsdoc-syntax">&amp;&amp;
393                         </span><span class="jsdoc-comment">// combos' with local stores can
394                         // be queried via setValue()
395                         // to set their value..
396                         </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">field.store </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">field.store.isLocal</span><span class="jsdoc-syntax">)
397                         ) {
398                         </span><span class="jsdoc-comment">// it's a combo
399                         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sd </span><span class="jsdoc-syntax">= { };
400                         </span><span class="jsdoc-var">sd</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">field.valueField</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">field.hiddenName</span><span class="jsdoc-syntax">]) == </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">field.hiddenName</span><span class="jsdoc-syntax">];
401                         </span><span class="jsdoc-var">sd</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">field.displayField</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">field.name</span><span class="jsdoc-syntax">]) == </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">field.name</span><span class="jsdoc-syntax">];
402                         </span><span class="jsdoc-var">field.setFromData</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sd</span><span class="jsdoc-syntax">);
403
404                     } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
405                         </span><span class="jsdoc-var">field.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">]);
406                     }
407
408
409                     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.trackResetOnLoad</span><span class="jsdoc-syntax">){
410                         </span><span class="jsdoc-var">field.originalValue </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">field.getValue</span><span class="jsdoc-syntax">();
411                     }
412                 }
413             }
414         }
415
416         </span><span class="jsdoc-comment">//Roo.each(this.childForms || [], function (f) {
417         //    f.setValues(values);
418         //});
419
420         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
421     },
422
423     </span><span class="jsdoc-comment">/**
424      * Returns the fields in this form as an object with key/value pairs. If multiple fields exist with the same name
425      * they are returned as an array.
426      * @param {Boolean} asString
427      * @return {Object}
428      */
429     </span><span class="jsdoc-var">getValues </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">asString</span><span class="jsdoc-syntax">){
430         </span><span class="jsdoc-comment">//if (this.childForms) {
431             // copy values from the child forms
432         //    Roo.each(this.childForms, function (f) {
433         //        this.setValues(f.getValues());
434         //    }, this);
435         //}
436
437
438
439         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">fs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Ajax.serializeForm</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.el.dom</span><span class="jsdoc-syntax">);
440         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">asString </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">){
441             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">fs</span><span class="jsdoc-syntax">;
442         }
443         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.urlDecode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fs</span><span class="jsdoc-syntax">);
444     },
445
446     </span><span class="jsdoc-comment">/**
447      * Returns the fields in this form as an object with key/value pairs.
448      * This differs from getValues as it calls getValue on each child item, rather than using dom data.
449      * @return {Object}
450      */
451     </span><span class="jsdoc-var">getFieldValues </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">with_hidden</span><span class="jsdoc-syntax">)
452     {
453         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">items </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getItems</span><span class="jsdoc-syntax">();
454         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">= {};
455         </span><span class="jsdoc-var">items.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">){
456             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">f.getName</span><span class="jsdoc-syntax">()) {
457                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
458             }
459             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">f.getValue</span><span class="jsdoc-syntax">();
460             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f.inputType </span><span class="jsdoc-syntax">==</span><span class="jsdoc-string">'radio'</span><span class="jsdoc-syntax">) {
461                 </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">ret</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">f.getName</span><span class="jsdoc-syntax">()]) == </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">) {
462                     </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">f.getName</span><span class="jsdoc-syntax">()] = </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// empty..
463                 </span><span class="jsdoc-syntax">}
464
465                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">f.el.dom.checked</span><span class="jsdoc-syntax">) {
466                     </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
467
468                 }
469                 </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">f.el.dom.value</span><span class="jsdoc-syntax">;
470
471             }
472
473             </span><span class="jsdoc-comment">// not sure if this supported any more..
474             </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">v</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'object'</span><span class="jsdoc-syntax">) &amp;&amp; </span><span class="jsdoc-var">f.getRawValue</span><span class="jsdoc-syntax">) {
475                 </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">f.getRawValue</span><span class="jsdoc-syntax">() ; </span><span class="jsdoc-comment">// dates..
476             </span><span class="jsdoc-syntax">}
477             </span><span class="jsdoc-comment">// combo boxes where name != hiddenName...
478             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f.name </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">f.name </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">f.name </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">f.getName</span><span class="jsdoc-syntax">()) {
479                 </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">f.name</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">f.getRawValue</span><span class="jsdoc-syntax">();
480             }
481             </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">f.getName</span><span class="jsdoc-syntax">()] = </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">;
482         });
483
484         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">;
485     },
486
487     </span><span class="jsdoc-comment">/**
488      * Clears all invalid messages in this form.
489      * @return {BasicForm} this
490      */
491     </span><span class="jsdoc-var">clearInvalid </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
492         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">items </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getItems</span><span class="jsdoc-syntax">();
493
494         </span><span class="jsdoc-var">items.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">){
495            </span><span class="jsdoc-var">f.clearInvalid</span><span class="jsdoc-syntax">();
496         });
497
498
499
500         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
501     },
502
503     </span><span class="jsdoc-comment">/**
504      * Resets this form.
505      * @return {BasicForm} this
506      */
507     </span><span class="jsdoc-var">reset </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
508         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">items </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getItems</span><span class="jsdoc-syntax">();
509         </span><span class="jsdoc-var">items.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">){
510             </span><span class="jsdoc-var">f.reset</span><span class="jsdoc-syntax">();
511         });
512
513         </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.childForms </span><span class="jsdoc-syntax">|| [], </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">) {
514             </span><span class="jsdoc-var">f.reset</span><span class="jsdoc-syntax">();
515         });
516
517
518         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
519     },
520     </span><span class="jsdoc-var">getItems </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
521     {
522         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">=</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.util.MixedCollection</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
523             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">o.id </span><span class="jsdoc-syntax">|| (</span><span class="jsdoc-var">o.id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.id</span><span class="jsdoc-syntax">());
524         });
525         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">iter </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">) {
526             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.inputEl</span><span class="jsdoc-syntax">) {
527                 </span><span class="jsdoc-var">r.add</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
528             }
529             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">el.items</span><span class="jsdoc-syntax">) {
530                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
531             }
532             </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.items</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">) {
533                 </span><span class="jsdoc-var">iter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
534             });
535
536
537         };
538
539         </span><span class="jsdoc-var">iter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
540         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">;
541
542
543
544
545     }
546
547 });
548
549 </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.bootstrap.Form</span><span class="jsdoc-syntax">, {
550     
551     </span><span class="jsdoc-var">popover </span><span class="jsdoc-syntax">: {
552         
553         </span><span class="jsdoc-var">isApplied </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
554         
555         </span><span class="jsdoc-var">isMasked </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
556         
557         </span><span class="jsdoc-var">form </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
558         
559         </span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
560         
561         </span><span class="jsdoc-var">oIndex </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
562         
563         </span><span class="jsdoc-var">toolTip </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
564         
565         </span><span class="jsdoc-var">intervalID </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
566     
567         </span><span class="jsdoc-var">apply </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
568         {
569             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isApplied</span><span class="jsdoc-syntax">){
570                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
571             }
572             
573             </span><span class="jsdoc-var">this.toolTip </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.bootstrap.Tooltip</span><span class="jsdoc-syntax">({
574                 </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-form-error-popover'</span><span class="jsdoc-syntax">,
575                 </span><span class="jsdoc-var">alignment </span><span class="jsdoc-syntax">: {
576                     </span><span class="jsdoc-string">'left' </span><span class="jsdoc-syntax">: [</span><span class="jsdoc-string">'r-l'</span><span class="jsdoc-syntax">, [-2,0], </span><span class="jsdoc-string">'right'</span><span class="jsdoc-syntax">],
577                     </span><span class="jsdoc-string">'right' </span><span class="jsdoc-syntax">: [</span><span class="jsdoc-string">'l-r'</span><span class="jsdoc-syntax">, [2,0], </span><span class="jsdoc-string">'left'</span><span class="jsdoc-syntax">],
578                     </span><span class="jsdoc-string">'bottom' </span><span class="jsdoc-syntax">: [</span><span class="jsdoc-string">'tl-bl'</span><span class="jsdoc-syntax">, [0,2], </span><span class="jsdoc-string">'top'</span><span class="jsdoc-syntax">],
579                     </span><span class="jsdoc-string">'top' </span><span class="jsdoc-syntax">: [ </span><span class="jsdoc-string">'bl-tl'</span><span class="jsdoc-syntax">, [0,-2], </span><span class="jsdoc-string">'bottom'</span><span class="jsdoc-syntax">]
580                 }
581             });
582             
583             </span><span class="jsdoc-var">this.toolTip.render</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">));
584
585             </span><span class="jsdoc-var">this.toolTip.el.setVisibilityMode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.Element.DISPLAY</span><span class="jsdoc-syntax">);
586             
587             </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'click'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
588                 </span><span class="jsdoc-var">this.unmask</span><span class="jsdoc-syntax">();
589             }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
590             
591             </span><span class="jsdoc-var">this.isApplied </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true
592         </span><span class="jsdoc-syntax">},
593         
594         </span><span class="jsdoc-var">mask </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">form</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">)
595         {
596             </span><span class="jsdoc-var">this.form </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">form</span><span class="jsdoc-syntax">;
597             
598             </span><span class="jsdoc-var">this.target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">;
599             
600             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.form.errPopover</span><span class="jsdoc-syntax">){
601                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
602             }
603
604             </span><span class="jsdoc-var">this.oIndex </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">target.el.getStyle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'z-index'</span><span class="jsdoc-syntax">);
605             
606             </span><span class="jsdoc-var">this.target.el.setStyle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'z-index'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.bootstrap.Modal.zIndex</span><span class="jsdoc-syntax">++);
607         
608             </span><span class="jsdoc-var">this.target.el.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'roo-invalid-outline'</span><span class="jsdoc-syntax">);
609             
610             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">scrollable </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.target.el.findScrollableParent</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-var">this.target.el.findParent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'div.modal'</span><span class="jsdoc-syntax">, 100, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) || </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">);
611             
612             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">scrolled </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">scrollable.getScroll</span><span class="jsdoc-syntax">();
613             
614             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ot </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.target.el.calcOffsetsTo</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">scrollable</span><span class="jsdoc-syntax">);
615             
616             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">scrollTo </span><span class="jsdoc-syntax">= 0;
617             
618             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ot</span><span class="jsdoc-syntax">[1] &lt;= </span><span class="jsdoc-var">scrolled.top</span><span class="jsdoc-syntax">){
619                 </span><span class="jsdoc-var">scrollTo </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ot</span><span class="jsdoc-syntax">[1] - 100;
620             } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
621                 </span><span class="jsdoc-var">scrollTo </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ot</span><span class="jsdoc-syntax">[1] + </span><span class="jsdoc-var">Roo.lib.Dom.getViewHeight</span><span class="jsdoc-syntax">() - 100;
622             }
623             
624             </span><span class="jsdoc-var">scrollable.scrollTo</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'top'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scrollTo</span><span class="jsdoc-syntax">);
625             
626             </span><span class="jsdoc-var">this.toolTip.bindEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.target.el</span><span class="jsdoc-syntax">;
627         
628             </span><span class="jsdoc-var">this.toolTip.el.setStyle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'z-index'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.bootstrap.Modal.zIndex</span><span class="jsdoc-syntax">++);
629
630             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tip </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.target.blankText</span><span class="jsdoc-syntax">;
631
632             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.target.getValue</span><span class="jsdoc-syntax">() !== </span><span class="jsdoc-string">'' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.target.regexText.length</span><span class="jsdoc-syntax">){
633                 </span><span class="jsdoc-var">tip </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.target.regexText</span><span class="jsdoc-syntax">;
634             }
635
636             </span><span class="jsdoc-var">this.toolTip.show</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tip</span><span class="jsdoc-syntax">);
637             
638             </span><span class="jsdoc-var">this.intervalID </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">window.setInterval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
639                 </span><span class="jsdoc-var">Roo.bootstrap.Form.popover.unmask</span><span class="jsdoc-syntax">();
640             }, 10000);
641
642             </span><span class="jsdoc-var">window.onwheel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){ </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;};
643             
644             (</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){ </span><span class="jsdoc-var">this.isMasked </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">; })</span><span class="jsdoc-var">.defer</span><span class="jsdoc-syntax">(500, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
645             
646         },
647         
648         </span><span class="jsdoc-var">unmask </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
649         {
650             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.isApplied </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">this.isMasked </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">this.form </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">this.target </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">this.form.errPopover</span><span class="jsdoc-syntax">){
651                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
652             }
653             
654             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.oIndex</span><span class="jsdoc-syntax">){
655                 </span><span class="jsdoc-var">this.target.el.setStyle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'z-index'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.oIndex</span><span class="jsdoc-syntax">);
656             }
657             
658             </span><span class="jsdoc-var">this.target.el.removeClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'roo-invalid-outline'</span><span class="jsdoc-syntax">);
659             
660             </span><span class="jsdoc-var">this.toolTip.hide</span><span class="jsdoc-syntax">();
661             
662             </span><span class="jsdoc-var">this.toolTip.el.hide</span><span class="jsdoc-syntax">();
663             
664             </span><span class="jsdoc-var">window.onwheel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){ </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;};
665             
666             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.intervalID</span><span class="jsdoc-syntax">){
667                 </span><span class="jsdoc-var">window.clearInterval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.intervalID</span><span class="jsdoc-syntax">);
668                 </span><span class="jsdoc-var">this.intervalID </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
669             }
670             
671             </span><span class="jsdoc-var">this.isMasked </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
672             
673         }
674         
675     }
676     
677 });
678
679 </span></code></body></html>