Changeset 4410
- Timestamp:
- 01/11/08 01:50:44 (1 year ago)
- Files:
-
- 1 modified
-
trunk/ui/current/datepicker/core/ui.datepicker.js (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ui/current/datepicker/core/ui.datepicker.js
r4405 r4410 1062 1062 shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff : 1063 1063 new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); 1064 var date = this._getDefaultDate();1064 var date = defaultDate = this._getDefaultDate(); 1065 1065 if (dates.length > 0) { 1066 1066 var dayNamesShort = this._get('dayNamesShort'); … … 1070 1070 if (dates.length > 1) { 1071 1071 date = $.datepicker.parseDate(dateFormat, dates[1], shortYearCutoff, 1072 dayNamesShort, dayNames, monthNamesShort, monthNames) || 1073 this._getDefaultDate(); 1072 dayNamesShort, dayNames, monthNamesShort, monthNames) || defaultDate; 1074 1073 this._endDay = date.getDate(); 1075 1074 this._endMonth = date.getMonth(); … … 1078 1077 try { 1079 1078 date = $.datepicker.parseDate(dateFormat, dates[0], shortYearCutoff, 1080 dayNamesShort, dayNames, monthNamesShort, monthNames) || 1081 this._getDefaultDate(); 1079 dayNamesShort, dayNames, monthNamesShort, monthNames) ||defaultDate; 1082 1080 } 1083 1081 catch (e) { 1084 1082 $.datepicker.log(e); 1085 date = this._getDefaultDate();1083 date = defaultDate; 1086 1084 } 1087 1085 } … … 1094 1092 /* Retrieve the default date shown on opening. */ 1095 1093 _getDefaultDate: function() { 1096 var offsetDate = function(offset) { 1094 return this._determineDate('defaultDate', new Date()); 1095 }, 1096 1097 /* A date may be specified as an exact value or a relative one. */ 1098 _determineDate: function(name, defaultDate) { 1099 var offsetNumeric = function(offset) { 1097 1100 var date = new Date(); 1098 1101 date.setDate(date.getDate() + offset); 1099 1102 return date; 1100 1103 }; 1101 var defaultDate = this._get('defaultDate'); 1102 return (defaultDate == null ? new Date() : 1103 (typeof defaultDate == 'number' ? offsetDate(defaultDate) : defaultDate)); 1104 var offsetString = function(offset, getDaysInMonth) { 1105 var date = new Date(); 1106 var matches = /^([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?$/.exec(offset); 1107 if (matches) { 1108 var year = date.getFullYear(); 1109 var month = date.getMonth(); 1110 var day = date.getDate(); 1111 switch (matches[2] || 'd') { 1112 case 'd' : case 'D' : 1113 day += (matches[1] - 0); break; 1114 case 'w' : case 'W' : 1115 day += (matches[1] * 7); break; 1116 case 'm' : case 'M' : 1117 month += (matches[1] - 0); 1118 day = Math.min(day, getDaysInMonth(year, month)); 1119 break; 1120 case 'y': case 'Y' : 1121 year += (matches[1] - 0); 1122 day = Math.min(day, getDaysInMonth(year, month)); 1123 break; 1124 } 1125 date = new Date(year, month, day); 1126 } 1127 return date; 1128 }; 1129 var date = this._get(name); 1130 return (date == null ? defaultDate : 1131 (typeof date == 'string' ? offsetString(date, this._getDaysInMonth) : 1132 (typeof date == 'number' ? offsetNumeric(date) : date))); 1104 1133 }, 1105 1134 … … 1359 1388 /* Determine the current maximum date - ensure no time components are set - may be overridden for a range. */ 1360 1389 _getMinMaxDate: function(minMax, checkRange) { 1361 var date = this._get(minMax + 'Date'); 1362 if (typeof date == 'number') { 1363 var offset = date; 1364 date = new Date(); 1365 date.setDate(date.getDate() + offset); 1366 } 1390 var date = this._determineDate(minMax + 'Date', null); 1367 1391 if (date) { 1368 1392 date.setHours(0);
