+ * The default date format string which can be overriden for localization support. The format must be
+ * valid according to {@link Ext.Date#parse} (defaults to <tt>'m/d/Y'</tt>).
+ */
+ format : "m/d/Y",
+<span id='Ext-form-field-Date-cfg-altFormats'> /**
+</span> * @cfg {String} altFormats
+ * Multiple date formats separated by "<tt>|</tt>" to try when parsing a user input value and it
+ * does not match the defined format (defaults to
+ * <tt>'m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d|n-j|n/j'</tt>).
+ */
+ altFormats : "m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d|n-j|n/j",
+<span id='Ext-form-field-Date-cfg-disabledDaysText'> /**
+</span> * @cfg {String} disabledDaysText
+ * The tooltip to display when the date falls on a disabled day (defaults to <tt>'Disabled'</tt>)
+ */
+ disabledDaysText : "Disabled",
+<span id='Ext-form-field-Date-cfg-disabledDatesText'> /**
+</span> * @cfg {String} disabledDatesText
+ * The tooltip text to display when the date falls on a disabled date (defaults to <tt>'Disabled'</tt>)
+ */
+ disabledDatesText : "Disabled",
+<span id='Ext-form-field-Date-cfg-minText'> /**
+</span> * @cfg {String} minText
+ * The error text to display when the date in the cell is before <tt>{@link #minValue}</tt> (defaults to
+ * <tt>'The date in this field must be after {minValue}'</tt>).
+ */
+ minText : "The date in this field must be equal to or after {0}",
+<span id='Ext-form-field-Date-cfg-maxText'> /**
+</span> * @cfg {String} maxText
+ * The error text to display when the date in the cell is after <tt>{@link #maxValue}</tt> (defaults to
+ * <tt>'The date in this field must be before {maxValue}'</tt>).
+ */
+ maxText : "The date in this field must be equal to or before {0}",
+<span id='Ext-form-field-Date-cfg-invalidText'> /**
+</span> * @cfg {String} invalidText
+ * The error text to display when the date in the field is invalid (defaults to
+ * <tt>'{value} is not a valid date - it must be in the format {format}'</tt>).
+ */
+ invalidText : "{0} is not a valid date - it must be in the format {1}",
+<span id='Ext-form-field-Date-cfg-triggerCls'> /**
+</span> * @cfg {String} triggerCls
+ * An additional CSS class used to style the trigger button. The trigger will always get the
+ * class <tt>'x-form-trigger'</tt> and <tt>triggerCls</tt> will be <b>appended</b> if specified
+ * (defaults to <tt>'x-form-date-trigger'</tt> which displays a calendar icon).
+ */
+ triggerCls : Ext.baseCSSPrefix + 'form-date-trigger',
+<span id='Ext-form-field-Date-cfg-showToday'> /**
+</span> * @cfg {Boolean} showToday
+ * <tt>false</tt> to hide the footer area of the Date picker containing the Today button and disable
+ * the keyboard handler for spacebar that selects the current date (defaults to <tt>true</tt>).
+ */
+ showToday : true,
+<span id='Ext-form-field-Date-cfg-minValue'> /**
+</span> * @cfg {Date/String} minValue
+ * The minimum allowed date. Can be either a Javascript date object or a string date in a
+ * valid format (defaults to undefined).
+ */
+<span id='Ext-form-field-Date-cfg-maxValue'> /**
+</span> * @cfg {Date/String} maxValue
+ * The maximum allowed date. Can be either a Javascript date object or a string date in a
+ * valid format (defaults to undefined).
+ */
+<span id='Ext-form-field-Date-cfg-disabledDays'> /**
+</span> * @cfg {Array} disabledDays
+ * An array of days to disable, 0 based (defaults to undefined). Some examples:<pre><code>
+// disable Sunday and Saturday:
+disabledDays: [0, 6]
+// disable weekdays:
+disabledDays: [1,2,3,4,5]
+ * </code></pre>
+ */
+<span id='Ext-form-field-Date-cfg-disabledDates'> /**
+</span> * @cfg {Array} disabledDates
+ * An array of "dates" to disable, as strings. These strings will be used to build a dynamic regular
+ * expression so they are very powerful. Some examples:<pre><code>
+// disable these exact dates:
+disabledDates: ["03/08/2003", "09/16/2003"]
+// disable these days for every year:
+disabledDates: ["03/08", "09/16"]
+// only match the beginning (useful if you are using short years):
+disabledDates: ["^03/08"]
+// disable every day in March 2006:
+disabledDates: ["03/../2006"]
+// disable every day in every March:
+disabledDates: ["^03"]
+ * </code></pre>
+ * Note that the format of the dates included in the array should exactly match the {@link #format} config.
+ * In order to support regular expressions, if you are using a {@link #format date format} that has "." in
+ * it, you will have to escape the dot when restricting dates. For example: <tt>["03\\.08\\.03"]</tt>.
+ */
+
+<span id='Ext-form-field-Date-cfg-submitFormat'> /**
+</span> * @cfg {String} submitFormat The date format string which will be submitted to the server.
+ * The format must be valid according to {@link Ext.Date#parse} (defaults to <tt>{@link #format}</tt>).
+ */
+
+ // in the absence of a time value, a default value of 12 noon will be used
+ // (note: 12 noon was chosen because it steers well clear of all DST timezone changes)
+ initTime: '12', // 24 hour format
+
+ initTimeFormat: 'H',
+
+ matchFieldWidth: false,
+<span id='Ext-form-field-Date-cfg-startDay'> /**
+</span> * @cfg {Number} startDay
+ * Day index at which the week should begin, 0-based (defaults to 0, which is Sunday)
+ */
+ startDay: 0,
+
+ initComponent : function(){
+ var me = this,
+ isString = Ext.isString,
+ min, max;
+
+ min = me.minValue;
+ max = me.maxValue;
+ if(isString(min)){
+ me.minValue = me.parseDate(min);
+ }
+ if(isString(max)){
+ me.maxValue = me.parseDate(max);
+ }
+ me.disabledDatesRE = null;
+ me.initDisabledDays();
+
+ me.callParent();
+ },
+
+ initValue: function() {
+ var me = this,
+ value = me.value;
+
+ // If a String value was supplied, try to convert it to a proper Date
+ if (Ext.isString(value)) {
+ me.value = me.rawToValue(value);
+ }
+
+ me.callParent();
+ },
+
+ // private
+ initDisabledDays : function(){
+ if(this.disabledDates){
+ var dd = this.disabledDates,
+ len = dd.length - 1,
+ re = "(?:";
+
+ Ext.each(dd, function(d, i){
+ re += Ext.isDate(d) ? '^' + Ext.String.escapeRegex(d.dateFormat(this.format)) + '$' : dd[i];
+ if (i !== len) {
+ re += '|';
+ }
+ }, this);
+ this.disabledDatesRE = new RegExp(re + ')');
+ }
+ },
+
+<span id='Ext-form-field-Date-method-setDisabledDates'> /**
+</span> * Replaces any existing disabled dates with new values and refreshes the Date picker.
+ * @param {Array} disabledDates An array of date strings (see the <tt>{@link #disabledDates}</tt> config
+ * for details on supported values) used to disable a pattern of dates.
+ */
+ setDisabledDates : function(dd){
+ var me = this,
+ picker = me.picker;
+
+ me.disabledDates = dd;
+ me.initDisabledDays();
+ if (picker) {
+ picker.setDisabledDates(me.disabledDatesRE);
+ }
+ },
+
+<span id='Ext-form-field-Date-method-setDisabledDays'> /**
+</span> * Replaces any existing disabled days (by index, 0-6) with new values and refreshes the Date picker.
+ * @param {Array} disabledDays An array of disabled day indexes. See the <tt>{@link #disabledDays}</tt>
+ * config for details on supported values.
+ */
+ setDisabledDays : function(dd){
+ var picker = this.picker;
+
+ this.disabledDays = dd;
+ if (picker) {
+ picker.setDisabledDays(dd);
+ }
+ },
+
+<span id='Ext-form-field-Date-method-setMinValue'> /**
+</span> * Replaces any existing <tt>{@link #minValue}</tt> with the new value and refreshes the Date picker.
+ * @param {Date} value The minimum date that can be selected