| [ Index ] |
PHP Cross Reference of Drupal 6 (gatewave) |
[Summary view] [Print] [Text view]
1 /* 2 * datepicker_options.js 3 */ 4 5 (function($) { 6 7 module("datepicker: options"); 8 9 test('setDefaults', function() { 10 var inp = init('#inp'); 11 equals($.datepicker._defaults.showOn, 'focus', 'Initial showOn'); 12 $.datepicker.setDefaults({showOn: 'button'}); 13 equals($.datepicker._defaults.showOn, 'button', 'Change default showOn'); 14 $.datepicker.setDefaults({showOn: 'focus'}); 15 equals($.datepicker._defaults.showOn, 'focus', 'Restore showOn'); 16 }); 17 18 test('option', function() { 19 var inp = init('#inp'); 20 var inst = $.data(inp[0], PROP_NAME); 21 // Set option 22 equals(inst.settings.showOn, null, 'Initial setting showOn'); 23 equals($.datepicker._get(inst, 'showOn'), 'focus', 'Initial instance showOn'); 24 equals($.datepicker._defaults.showOn, 'focus', 'Initial default showOn'); 25 inp.datepicker('option', 'showOn', 'button'); 26 equals(inst.settings.showOn, 'button', 'Change setting showOn'); 27 equals($.datepicker._get(inst, 'showOn'), 'button', 'Change instance showOn'); 28 equals($.datepicker._defaults.showOn, 'focus', 'Retain default showOn'); 29 inp.datepicker('option', {showOn: 'both'}); 30 equals(inst.settings.showOn, 'both', 'Change setting showOn'); 31 equals($.datepicker._get(inst, 'showOn'), 'both', 'Change instance showOn'); 32 equals($.datepicker._defaults.showOn, 'focus', 'Retain default showOn'); 33 inp.datepicker('option', 'showOn', undefined); 34 equals(inst.settings.showOn, null, 'Clear setting showOn'); 35 equals($.datepicker._get(inst, 'showOn'), 'focus', 'Restore instance showOn'); 36 equals($.datepicker._defaults.showOn, 'focus', 'Retain default showOn'); 37 // Get option 38 inp = init('#inp'); 39 equals(inp.datepicker('option', 'showOn'), 'focus', 'Initial setting showOn'); 40 inp.datepicker('option', 'showOn', 'button'); 41 equals(inp.datepicker('option', 'showOn'), 'button', 'Change instance showOn'); 42 inp.datepicker('option', 'showOn', undefined); 43 equals(inp.datepicker('option', 'showOn'), 'focus', 'Reset instance showOn'); 44 same(inp.datepicker('option', 'all'), {duration: ''}, 'Get instance settings'); 45 same(inp.datepicker('option', 'defaults'), $.datepicker._defaults, 46 'Get default settings'); 47 }); 48 49 test('change', function() { 50 var inp = init('#inp'); 51 var inst = $.data(inp[0], PROP_NAME); 52 equals(inst.settings.showOn, null, 'Initial setting showOn'); 53 equals($.datepicker._get(inst, 'showOn'), 'focus', 'Initial instance showOn'); 54 equals($.datepicker._defaults.showOn, 'focus', 'Initial default showOn'); 55 inp.datepicker('change', 'showOn', 'button'); 56 equals(inst.settings.showOn, 'button', 'Change setting showOn'); 57 equals($.datepicker._get(inst, 'showOn'), 'button', 'Change instance showOn'); 58 equals($.datepicker._defaults.showOn, 'focus', 'Retain default showOn'); 59 inp.datepicker('change', {showOn: 'both'}); 60 equals(inst.settings.showOn, 'both', 'Change setting showOn'); 61 equals($.datepicker._get(inst, 'showOn'), 'both', 'Change instance showOn'); 62 equals($.datepicker._defaults.showOn, 'focus', 'Retain default showOn'); 63 inp.datepicker('change', 'showOn', undefined); 64 equals(inst.settings.showOn, null, 'Clear setting showOn'); 65 equals($.datepicker._get(inst, 'showOn'), 'focus', 'Restore instance showOn'); 66 equals($.datepicker._defaults.showOn, 'focus', 'Retain default showOn'); 67 }); 68 69 test('invocation', function() { 70 var inp = init('#inp'); 71 var dp = $('#ui-datepicker-div'); 72 var body = $('body'); 73 // On focus 74 var button = inp.siblings('button'); 75 ok(button.length == 0, 'Focus - button absent'); 76 var image = inp.siblings('img'); 77 ok(image.length == 0, 'Focus - image absent'); 78 inp.focus(); 79 ok(dp.is(':visible'), 'Focus - rendered on focus'); 80 inp.simulate('keydown', {keyCode: $.simulate.VK_ESC}); 81 ok(!dp.is(':visible'), 'Focus - hidden on exit'); 82 inp.focus(); 83 ok(dp.is(':visible'), 'Focus - rendered on focus'); 84 body.simulate('mousedown', {}); 85 ok(!dp.is(':visible'), 'Focus - hidden on external click'); 86 inp.datepicker('hide').datepicker('destroy'); 87 // On button 88 inp = init('#inp', {showOn: 'button', buttonText: 'Popup'}); 89 ok(!dp.is(':visible'), 'Button - initially hidden'); 90 button = inp.siblings('button'); 91 image = inp.siblings('img'); 92 ok(button.length == 1, 'Button - button present'); 93 ok(image.length == 0, 'Button - image absent'); 94 equals(button.text(), 'Popup', 'Button - button text'); 95 inp.focus(); 96 ok(!dp.is(':visible'), 'Button - not rendered on focus'); 97 button.click(); 98 ok(dp.is(':visible'), 'Button - rendered on button click'); 99 button.click(); 100 ok(!dp.is(':visible'), 'Button - hidden on second button click'); 101 inp.datepicker('hide').datepicker('destroy'); 102 // On image button 103 inp = init('#inp', {showOn: 'button', buttonImageOnly: true, 104 buttonImage: 'img/calendar.gif', buttonText: 'Cal'}); 105 ok(!dp.is(':visible'), 'Image button - initially hidden'); 106 button = inp.siblings('button'); 107 ok(button.length == 0, 'Image button - button absent'); 108 image = inp.siblings('img'); 109 ok(image.length == 1, 'Image button - image present'); 110 equals(image.attr('src'), 'img/calendar.gif', 'Image button - image source'); 111 equals(image.attr('title'), 'Cal', 'Image button - image text'); 112 inp.focus(); 113 ok(!dp.is(':visible'), 'Image button - not rendered on focus'); 114 image.click(); 115 ok(dp.is(':visible'), 'Image button - rendered on image click'); 116 image.click(); 117 ok(!dp.is(':visible'), 'Image button - hidden on second image click'); 118 inp.datepicker('hide').datepicker('destroy'); 119 // On both 120 inp = init('#inp', {showOn: 'both', buttonImage: 'img/calendar.gif'}); 121 ok(!dp.is(':visible'), 'Both - initially hidden'); 122 button = inp.siblings('button'); 123 ok(button.length == 1, 'Both - button present'); 124 image = inp.siblings('img'); 125 ok(image.length == 0, 'Both - image absent'); 126 image = button.children('img'); 127 ok(image.length == 1, 'Both - button image present'); 128 inp.focus(); 129 ok(dp.is(':visible'), 'Both - rendered on focus'); 130 body.simulate('mousedown', {}); 131 ok(!dp.is(':visible'), 'Both - hidden on external click'); 132 button.click(); 133 ok(dp.is(':visible'), 'Both - rendered on button click'); 134 button.click(); 135 ok(!dp.is(':visible'), 'Both - hidden on second button click'); 136 inp.datepicker('hide').datepicker('destroy'); 137 }); 138 139 test('defaultDate', function() { 140 var inp = init('#inp'); 141 var date = new Date(); 142 inp.val('').datepicker('show'). 143 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 144 equalsDate(inp.datepicker('getDate'), date, 'Default date null'); 145 // numeric values 146 inp.datepicker('option', {defaultDate: -2}). 147 datepicker('hide').val('').datepicker('show'). 148 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 149 date.setDate(date.getDate() - 2); 150 equalsDate(inp.datepicker('getDate'), date, 'Default date -2'); 151 inp.datepicker('option', {defaultDate: 3}). 152 datepicker('hide').val('').datepicker('show'). 153 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 154 date.setDate(date.getDate() + 5); 155 equalsDate(inp.datepicker('getDate'), date, 'Default date 3'); 156 inp.datepicker('option', {defaultDate: 1 / 0}). 157 datepicker('hide').val('').datepicker('show'). 158 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 159 date.setDate(date.getDate() - 3); 160 equalsDate(inp.datepicker('getDate'), date, 'Default date Infinity'); 161 inp.datepicker('option', {defaultDate: 1 / 'a'}). 162 datepicker('hide').val('').datepicker('show'). 163 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 164 equalsDate(inp.datepicker('getDate'), date, 'Default date NaN'); 165 // string values 166 inp.datepicker('option', {defaultDate: '-1d'}). 167 datepicker('hide').val('').datepicker('show'). 168 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 169 date.setDate(date.getDate() - 1); 170 equalsDate(inp.datepicker('getDate'), date, 'Default date -1d'); 171 inp.datepicker('option', {defaultDate: '+3D'}). 172 datepicker('hide').val('').datepicker('show'). 173 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 174 date.setDate(date.getDate() + 4); 175 equalsDate(inp.datepicker('getDate'), date, 'Default date +3D'); 176 inp.datepicker('option', {defaultDate: ' -2 w '}). 177 datepicker('hide').val('').datepicker('show'). 178 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 179 date = new Date(); 180 date.setDate(date.getDate() - 14); 181 equalsDate(inp.datepicker('getDate'), date, 'Default date -2 w'); 182 inp.datepicker('option', {defaultDate: '+1 W'}). 183 datepicker('hide').val('').datepicker('show'). 184 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 185 date.setDate(date.getDate() + 21); 186 equalsDate(inp.datepicker('getDate'), date, 'Default date +1 W'); 187 inp.datepicker('option', {defaultDate: ' -1 m '}). 188 datepicker('hide').val('').datepicker('show'). 189 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 190 date = new Date(); 191 date.setMonth(date.getMonth() - 1); 192 equalsDate(inp.datepicker('getDate'), date, 'Default date -1 m'); 193 inp.datepicker('option', {defaultDate: '+2M'}). 194 datepicker('hide').val('').datepicker('show'). 195 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 196 date.setMonth(date.getMonth() + 3); 197 equalsDate(inp.datepicker('getDate'), date, 'Default date +2M'); 198 inp.datepicker('option', {defaultDate: '-2y'}). 199 datepicker('hide').val('').datepicker('show'). 200 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 201 date = new Date(); 202 date.setFullYear(date.getFullYear() - 2); 203 equalsDate(inp.datepicker('getDate'), date, 'Default date -2y'); 204 inp.datepicker('option', {defaultDate: '+1 Y '}). 205 datepicker('hide').val('').datepicker('show'). 206 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 207 date.setFullYear(date.getFullYear() + 3); 208 equalsDate(inp.datepicker('getDate'), date, 'Default date +1 Y'); 209 inp.datepicker('option', {defaultDate: '+1M +10d'}). 210 datepicker('hide').val('').datepicker('show'). 211 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 212 date = new Date(); 213 date.setMonth(date.getMonth() + 1); 214 date.setDate(date.getDate() + 10); 215 equalsDate(inp.datepicker('getDate'), date, 'Default date +1M +10d'); 216 date = new Date(2007, 1 - 1, 26); 217 inp.datepicker('option', {defaultDate: date}). 218 datepicker('hide').val('').datepicker('show'). 219 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 220 equalsDate(inp.datepicker('getDate'), date, 'Default date 01/26/2007'); 221 }); 222 223 test('miscellaneous', function() { 224 var dp = $('#ui-datepicker-div'); 225 var inp = init('#inp'); 226 // Year range 227 var genRange = function(start, offset) { 228 var range = ''; 229 for (var i = start; i < start + offset; i++) { 230 range += i; 231 } 232 return range; 233 }; 234 inp.val('02/04/2008').datepicker('show'); 235 equals(dp.find('.ui-datepicker-year').text(), '2008', 'Year range - read-only default'); 236 inp.datepicker('hide').datepicker('option', {changeYear: true}).datepicker('show'); 237 equals(dp.find('.ui-datepicker-year').text(), genRange(2008 - 10, 21), 'Year range - changeable default'); 238 inp.datepicker('hide').datepicker('option', {yearRange: '-6:+2', changeYear: true}).datepicker('show'); 239 equals(dp.find('.ui-datepicker-year').text(), genRange(2008 - 6, 9), 'Year range - -6:+2'); 240 inp.datepicker('hide').datepicker('option', {yearRange: '2000:2010', changeYear: true}).datepicker('show'); 241 equals(dp.find('.ui-datepicker-year').text(), genRange(2000, 11), 'Year range - 2000:2010'); 242 243 // Navigation as date format 244 inp.datepicker('option', {showButtonPanel: true}); 245 equals(dp.find('.ui-datepicker-prev').text(), 'Prev', 'Navigation prev - default'); 246 equals(dp.find('.ui-datepicker-current').text(), 'Today', 'Navigation current - default'); 247 equals(dp.find('.ui-datepicker-next').text(), 'Next', 'Navigation next - default'); 248 inp.datepicker('hide').datepicker('option', {navigationAsDateFormat: true, prevText: '< M', currentText: 'MM', nextText: 'M >'}).val('02/04/2008').datepicker('show'); 249 var longNames = $.datepicker.regional[''].monthNames; 250 var shortNames = $.datepicker.regional[''].monthNamesShort; 251 var date = new Date(); 252 equals(dp.find('.ui-datepicker-prev').text(), '< ' + shortNames[0], 'Navigation prev - as date format'); 253 equals(dp.find('.ui-datepicker-current').text(), 254 longNames[date.getMonth()], 'Navigation current - as date format'); 255 equals(dp.find('.ui-datepicker-next').text(), 256 shortNames[2] + ' >', 'Navigation next - as date format'); 257 inp.simulate('keydown', {keyCode: $.simulate.VK_PGDN}); 258 equals(dp.find('.ui-datepicker-prev').text(), 259 '< ' + shortNames[1], 'Navigation prev - as date format + pgdn'); 260 equals(dp.find('.ui-datepicker-current').text(), 261 longNames[date.getMonth()], 'Navigation current - as date format + pgdn'); 262 equals(dp.find('.ui-datepicker-next').text(), 263 shortNames[3] + ' >', 'Navigation next - as date format + pgdn'); 264 inp.datepicker('hide').datepicker('option', {gotoCurrent: true}). 265 val('02/04/2008').datepicker('show'); 266 equals(dp.find('.ui-datepicker-prev').text(), 267 '< ' + shortNames[0], 'Navigation prev - as date format + goto current'); 268 equals(dp.find('.ui-datepicker-current').text(), 269 longNames[1], 'Navigation current - as date format + goto current'); 270 equals(dp.find('.ui-datepicker-next').text(), 271 shortNames[2] + ' >', 'Navigation next - as date format + goto current'); 272 }); 273 274 test('minMax', function() { 275 var inp = init('#inp'); 276 var lastYear = new Date(2007, 6 - 1, 4); 277 var nextYear = new Date(2009, 6 - 1, 4); 278 var minDate = new Date(2008, 2 - 1, 29); 279 var maxDate = new Date(2008, 12 - 1, 7); 280 inp.val('06/04/2008').datepicker('show'); 281 inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP}). 282 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 283 equalsDate(inp.datepicker('getDate'), lastYear, 284 'Min/max - null, null - ctrl+pgup'); 285 inp.val('06/04/2008').datepicker('show'); 286 inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN}). 287 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 288 equalsDate(inp.datepicker('getDate'), nextYear, 289 'Min/max - null, null - ctrl+pgdn'); 290 inp.datepicker('option', {minDate: minDate}). 291 datepicker('hide').val('06/04/2008').datepicker('show'); 292 inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP}). 293 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 294 equalsDate(inp.datepicker('getDate'), minDate, 295 'Min/max - 02/29/2008, null - ctrl+pgup'); 296 inp.val('06/04/2008').datepicker('show'); 297 inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN}). 298 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 299 equalsDate(inp.datepicker('getDate'), nextYear, 300 'Min/max - 02/29/2008, null - ctrl+pgdn'); 301 inp.datepicker('option', {maxDate: maxDate}). 302 datepicker('hide').val('06/04/2008').datepicker('show'); 303 inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP}). 304 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 305 equalsDate(inp.datepicker('getDate'), minDate, 306 'Min/max - 02/29/2008, 12/07/2008 - ctrl+pgup'); 307 inp.val('06/04/2008').datepicker('show'); 308 inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN}). 309 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 310 equalsDate(inp.datepicker('getDate'), maxDate, 311 'Min/max - 02/29/2008, 12/07/2008 - ctrl+pgdn'); 312 inp.datepicker('option', {minDate: null}). 313 datepicker('hide').val('06/04/2008').datepicker('show'); 314 inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP}). 315 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 316 equalsDate(inp.datepicker('getDate'), lastYear, 317 'Min/max - null, 12/07/2008 - ctrl+pgup'); 318 inp.val('06/04/2008').datepicker('show'); 319 inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN}). 320 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 321 equalsDate(inp.datepicker('getDate'), maxDate, 322 'Min/max - null, 12/07/2008 - ctrl+pgdn'); 323 // Relative dates 324 var date = new Date(); 325 date.setDate(date.getDate() - 7); 326 inp.datepicker('option', {minDate: '-1w', maxDate: '+1 M +10 D '}). 327 datepicker('hide').val('').datepicker('show'); 328 inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP}). 329 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 330 equalsDate(inp.datepicker('getDate'), date, 331 'Min/max - -1w, +1 M +10 D - ctrl+pgup'); 332 date = new Date(); 333 date.setMonth(date.getMonth() + 1); 334 date.setDate(date.getDate() + 10); 335 inp.val('').datepicker('show'); 336 inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN}). 337 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 338 equalsDate(inp.datepicker('getDate'), date, 339 'Min/max - -1w, +1 M +10 D - ctrl+pgdn'); 340 }); 341 342 test('setDate', function() { 343 var inp = init('#inp'); 344 var date1 = new Date(2008, 6 - 1, 4); 345 var date2 = new Date(); 346 ok(inp.datepicker('getDate') == null, 'Set date - default'); 347 inp.datepicker('setDate', date1); 348 equalsDate(inp.datepicker('getDate'), date1, 'Set date - 2008-06-04'); 349 date1 = new Date(); 350 date1.setDate(date1.getDate() + 7); 351 inp.datepicker('setDate', +7); 352 equalsDate(inp.datepicker('getDate'), date1, 'Set date - +7'); 353 date2.setFullYear(date2.getFullYear() + 2); 354 inp.datepicker('setDate', '+2y'); 355 equalsDate(inp.datepicker('getDate'), date2, 'Set date - +2y'); 356 inp.datepicker('setDate', date1, date2); 357 equalsDate(inp.datepicker('getDate'), date1, 'Set date - two dates'); 358 inp.datepicker('setDate'); 359 ok(inp.datepicker('getDate') == null, 'Set date - null'); 360 // Inline 361 var inl = init('#inl'); 362 date1 = new Date(2008, 6 - 1, 4); 363 date2 = new Date(); 364 equalsDate(inl.datepicker('getDate'), date2, 'Set date inline - default'); 365 inl.datepicker('setDate', date1); 366 equalsDate(inl.datepicker('getDate'), date1, 'Set date inline - 2008-06-04'); 367 date1 = new Date(); 368 date1.setDate(date1.getDate() + 7); 369 inl.datepicker('setDate', +7); 370 equalsDate(inl.datepicker('getDate'), date1, 'Set date inline - +7'); 371 date2.setFullYear(date2.getFullYear() + 2); 372 inl.datepicker('setDate', '+2y'); 373 equalsDate(inl.datepicker('getDate'), date2, 'Set date inline - +2y'); 374 inl.datepicker('setDate', date1, date2); 375 equalsDate(inl.datepicker('getDate'), date1, 'Set date inline - two dates'); 376 inl.datepicker('setDate'); 377 ok(inl.datepicker('getDate') == null, 'Set date inline - null'); 378 // Alternate field 379 var alt = $('#alt'); 380 inp.datepicker('option', {altField: '#alt', altFormat: 'yy-mm-dd'}); 381 date1 = new Date(2008, 6 - 1, 4); 382 inp.datepicker('setDate', date1); 383 equals(inp.val(), '06/04/2008', 'Set date alternate - 06/04/2008'); 384 equals(alt.val(), '2008-06-04', 'Set date alternate - 2008-06-04'); 385 }); 386 387 test('altField', function() { 388 var inp = init('#inp'); 389 var alt = $('#alt'); 390 // No alternate field set 391 alt.val(''); 392 inp.val('06/04/2008').datepicker('show'); 393 inp.simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 394 equals(inp.val(), '06/04/2008', 'Alt field - dp - enter'); 395 equals(alt.val(), '', 'Alt field - alt not set'); 396 // Alternate field set 397 alt.val(''); 398 inp.datepicker('option', {altField: '#alt', altFormat: 'yy-mm-dd'}). 399 val('06/04/2008').datepicker('show'); 400 inp.simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 401 equals(inp.val(), '06/04/2008', 'Alt field - dp - enter'); 402 equals(alt.val(), '2008-06-04', 'Alt field - alt - enter'); 403 // Move from initial date 404 alt.val(''); 405 inp.val('06/04/2008').datepicker('show'); 406 inp.simulate('keydown', {keyCode: $.simulate.VK_PGDN}). 407 simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 408 equals(inp.val(), '07/04/2008', 'Alt field - dp - pgdn'); 409 equals(alt.val(), '2008-07-04', 'Alt field - alt - pgdn'); 410 // Alternate field set - closed 411 alt.val(''); 412 inp.val('06/04/2008').datepicker('show'); 413 inp.simulate('keydown', {keyCode: $.simulate.VK_PGDN}). 414 simulate('keydown', {keyCode: $.simulate.VK_ESC}); 415 equals(inp.val(), '06/04/2008', 'Alt field - dp - pgdn/esc'); 416 equals(alt.val(), '', 'Alt field - alt - pgdn/esc'); 417 // Clear date and alternate 418 alt.val(''); 419 inp.val('06/04/2008').datepicker('show'); 420 inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_END}); 421 equals(inp.val(), '', 'Alt field - dp - ctrl+end'); 422 equals(alt.val(), '', 'Alt field - alt - ctrl+end'); 423 }); 424 425 test('daylightSaving', function() { 426 var inp = init('#inp'); 427 var dp = $('#ui-datepicker-div'); 428 ok(true, 'Daylight saving - ' + new Date()); 429 // Australia, Sydney - AM change, southern hemisphere 430 inp.val('04/01/2008').datepicker('show'); 431 $('.ui-datepicker-calendar td:eq(6) a', dp).simulate('click'); 432 equals(inp.val(), '04/05/2008', 'Daylight saving - Australia 04/05/2008'); 433 inp.val('04/01/2008').datepicker('show'); 434 $('.ui-datepicker-calendar td:eq(7) a', dp).simulate('click'); 435 equals(inp.val(), '04/06/2008', 'Daylight saving - Australia 04/06/2008'); 436 inp.val('04/01/2008').datepicker('show'); 437 $('.ui-datepicker-calendar td:eq(8) a', dp).simulate('click'); 438 equals(inp.val(), '04/07/2008', 'Daylight saving - Australia 04/07/2008'); 439 inp.val('10/01/2008').datepicker('show'); 440 $('.ui-datepicker-calendar td:eq(6) a', dp).simulate('click'); 441 equals(inp.val(), '10/04/2008', 'Daylight saving - Australia 10/04/2008'); 442 inp.val('10/01/2008').datepicker('show'); 443 $('.ui-datepicker-calendar td:eq(7) a', dp).simulate('click'); 444 equals(inp.val(), '10/05/2008', 'Daylight saving - Australia 10/05/2008'); 445 inp.val('10/01/2008').datepicker('show'); 446 $('.ui-datepicker-calendar td:eq(8) a', dp).simulate('click'); 447 equals(inp.val(), '10/06/2008', 'Daylight saving - Australia 10/06/2008'); 448 // Brasil, Brasilia - midnight change, southern hemisphere 449 inp.val('02/01/2008').datepicker('show'); 450 $('.ui-datepicker-calendar td:eq(20) a', dp).simulate('click'); 451 equals(inp.val(), '02/16/2008', 'Daylight saving - Brasil 02/16/2008'); 452 inp.val('02/01/2008').datepicker('show'); 453 $('.ui-datepicker-calendar td:eq(21) a', dp).simulate('click'); 454 equals(inp.val(), '02/17/2008', 'Daylight saving - Brasil 02/17/2008'); 455 inp.val('02/01/2008').datepicker('show'); 456 $('.ui-datepicker-calendar td:eq(22) a', dp).simulate('click'); 457 equals(inp.val(), '02/18/2008', 'Daylight saving - Brasil 02/18/2008'); 458 inp.val('10/01/2008').datepicker('show'); 459 $('.ui-datepicker-calendar td:eq(13) a', dp).simulate('click'); 460 equals(inp.val(), '10/11/2008', 'Daylight saving - Brasil 10/11/2008'); 461 inp.val('10/01/2008').datepicker('show'); 462 $('.ui-datepicker-calendar td:eq(14) a', dp).simulate('click'); 463 equals(inp.val(), '10/12/2008', 'Daylight saving - Brasil 10/12/2008'); 464 inp.val('10/01/2008').datepicker('show'); 465 $('.ui-datepicker-calendar td:eq(15) a', dp).simulate('click'); 466 equals(inp.val(), '10/13/2008', 'Daylight saving - Brasil 10/13/2008'); 467 // Lebanon, Beirut - midnight change, northern hemisphere 468 inp.val('03/01/2008').datepicker('show'); 469 $('.ui-datepicker-calendar td:eq(34) a', dp).simulate('click'); 470 equals(inp.val(), '03/29/2008', 'Daylight saving - Lebanon 03/29/2008'); 471 inp.val('03/01/2008').datepicker('show'); 472 $('.ui-datepicker-calendar td:eq(35) a', dp).simulate('click'); 473 equals(inp.val(), '03/30/2008', 'Daylight saving - Lebanon 03/30/2008'); 474 inp.val('03/01/2008').datepicker('show'); 475 $('.ui-datepicker-calendar td:eq(36) a', dp).simulate('click'); 476 equals(inp.val(), '03/31/2008', 'Daylight saving - Lebanon 03/31/2008'); 477 inp.val('10/01/2008').datepicker('show'); 478 $('.ui-datepicker-calendar td:eq(27) a', dp).simulate('click'); 479 equals(inp.val(), '10/25/2008', 'Daylight saving - Lebanon 10/25/2008'); 480 inp.val('10/01/2008').datepicker('show'); 481 $('.ui-datepicker-calendar td:eq(28) a', dp).simulate('click'); 482 equals(inp.val(), '10/26/2008', 'Daylight saving - Lebanon 10/26/2008'); 483 inp.val('10/01/2008').datepicker('show'); 484 $('.ui-datepicker-calendar td:eq(29) a', dp).simulate('click'); 485 equals(inp.val(), '10/27/2008', 'Daylight saving - Lebanon 10/27/2008'); 486 // US, Eastern - AM change, northern hemisphere 487 inp.val('03/01/2008').datepicker('show'); 488 $('.ui-datepicker-calendar td:eq(13) a', dp).simulate('click'); 489 equals(inp.val(), '03/08/2008', 'Daylight saving - US 03/08/2008'); 490 inp.val('03/01/2008').datepicker('show'); 491 $('.ui-datepicker-calendar td:eq(14) a', dp).simulate('click'); 492 equals(inp.val(), '03/09/2008', 'Daylight saving - US 03/09/2008'); 493 inp.val('03/01/2008').datepicker('show'); 494 $('.ui-datepicker-calendar td:eq(15) a', dp).simulate('click'); 495 equals(inp.val(), '03/10/2008', 'Daylight saving - US 03/10/2008'); 496 inp.val('11/01/2008').datepicker('show'); 497 $('.ui-datepicker-calendar td:eq(6) a', dp).simulate('click'); 498 equals(inp.val(), '11/01/2008', 'Daylight saving - US 11/01/2008'); 499 inp.val('11/01/2008').datepicker('show'); 500 $('.ui-datepicker-calendar td:eq(7) a', dp).simulate('click'); 501 equals(inp.val(), '11/02/2008', 'Daylight saving - US 11/02/2008'); 502 inp.val('11/01/2008').datepicker('show'); 503 $('.ui-datepicker-calendar td:eq(8) a', dp).simulate('click'); 504 equals(inp.val(), '11/03/2008', 'Daylight saving - US 11/03/2008'); 505 }); 506 507 var beforeShowThis = null; 508 var beforeShowInput = null; 509 var beforeShowInst = null; 510 511 function beforeAll(input, inst) { 512 beforeShowThis = this; 513 beforeShowInput = input; 514 beforeShowInst = inst; 515 return {currentText: 'Current'}; 516 } 517 518 var beforeShowDayThis = null; 519 var beforeShowDayOK = true; 520 521 function beforeDay(date) { 522 beforeShowDayThis = this; 523 beforeShowDayOK &= (date > new Date(2008, 1 - 1, 26) && 524 date < new Date(2008, 3 - 1, 6)); 525 return [(date.getDate() % 2 == 0), (date.getDate() % 10 == 0 ? 'day10' : ''), 526 (date.getDate() % 3 == 0 ? 'Divisble by 3' : '')]; 527 } 528 529 function calcWeek(date) { 530 var doy = date.getDate() + 6; 531 for (var m = date.getMonth() - 1; m >= 0; m--) 532 doy += $.datepicker._getDaysInMonth(date.getFullYear(), m); 533 // Simple count from 01/01 starting at week 1 534 return Math.floor(doy / 7); 535 } 536 537 test('callbacks', function() { 538 // Before show 539 var inp = init('#inp', {beforeShow: beforeAll}); 540 var inst = $.data(inp[0], 'datepicker'); 541 equals($.datepicker._get(inst, 'currentText'), 'Today', 'Before show - initial'); 542 inp.val('02/04/2008').datepicker('show'); 543 equals($.datepicker._get(inst, 'currentText'), 'Current', 'Before show - changed'); 544 ok(beforeShowThis.id == inp[0].id, 'Before show - this OK'); 545 ok(beforeShowInput.id == inp[0].id, 'Before show - input OK'); 546 isObj(beforeShowInst, inst, 'Before show - inst OK'); 547 inp.datepicker('hide').datepicker('destroy'); 548 // Before show day 549 inp = init('#inp', {beforeShowDay: beforeDay}); 550 var dp = $('#ui-datepicker-div'); 551 inp.val('02/04/2008').datepicker('show'); 552 ok(beforeShowDayThis.id == inp[0].id, 'Before show day - this OK'); 553 ok(beforeShowDayOK, 'Before show day - dates OK'); 554 var day20 = dp.find('.ui-datepicker-calendar td:contains("20")'); 555 var day21 = dp.find('.ui-datepicker-calendar td:contains("21")'); 556 ok(!day20.is('.ui-datepicker-unselectable'), 'Before show day - unselectable 20'); 557 ok(day21.is('.ui-datepicker-unselectable'), 'Before show day - unselectable 21'); 558 ok(day20.is('.day10'), 'Before show day - CSS 20'); 559 ok(!day21.is('.day10'), 'Before show day - CSS 21'); 560 ok(day20.attr('title') == '', 'Before show day - title 20'); 561 ok(day21.attr('title') == 'Divisble by 3', 'Before show day - title 21'); 562 inp.datepicker('hide').datepicker('destroy'); 563 }); 564 565 test('localisation', function() { 566 var inp = init('#inp', $.datepicker.regional['fr']); 567 inp.datepicker('option', {dateFormat: 'DD, d MM yy', showButtonPanel:true, changeMonth:true, changeYear:true}).val('').datepicker('show'); 568 var dp = $('#ui-datepicker-div'); 569 equals($('.ui-datepicker-close', dp).text(), 'Fermer', 'Localisation - close'); 570 $('.ui-datepicker-close', dp).simulate('mouseover'); 571 equals($('.ui-datepicker-prev', dp).text(), '<Préc', 'Localisation - previous'); 572 equals($('.ui-datepicker-current', dp).text(), 'Courant', 'Localisation - current'); 573 equals($('.ui-datepicker-next', dp).text(), 'Suiv>', 'Localisation - next'); 574 var month = 0; 575 $('.ui-datepicker-month option', dp).each(function() { 576 equals($(this).text(), $.datepicker.regional['fr'].monthNamesShort[month], 577 'Localisation - month ' + month); 578 month++; 579 }); 580 var day = 1; 581 $('.ui-datepicker-calendar th', dp).each(function() { 582 equals($(this).text(), $.datepicker.regional['fr'].dayNamesMin[day], 583 'Localisation - day ' + day); 584 day = (day + 1) % 7; 585 }); 586 inp.simulate('keydown', {keyCode: $.simulate.VK_ENTER}); 587 var date = new Date(); 588 equals(inp.val(), $.datepicker.regional['fr'].dayNames[date.getDay()] + ', ' + 589 date.getDate() + ' ' + $.datepicker.regional['fr'].monthNames[date.getMonth()] + 590 ' ' + date.getFullYear(), 'Localisation - formatting'); 591 }); 592 593 test('noWeekends', function() { 594 for (var i = 1; i <= 31; i++) { 595 var date = new Date(2001, 1 - 1, i); 596 isSet($.datepicker.noWeekends(date), [(i + 1) % 7 >= 2, ''], 597 'No weekends ' + date); 598 } 599 }); 600 601 test('iso8601Week', function() { 602 var date = new Date(2000, 12 - 1, 31); 603 equals($.datepicker.iso8601Week(date), 52, 'ISO 8601 week ' + date); 604 date = new Date(2001, 1 - 1, 1); 605 equals($.datepicker.iso8601Week(date), 1, 'ISO 8601 week ' + date); 606 date = new Date(2001, 1 - 1, 7); 607 equals($.datepicker.iso8601Week(date), 1, 'ISO 8601 week ' + date); 608 date = new Date(2001, 1 - 1, 8); 609 equals($.datepicker.iso8601Week(date), 2, 'ISO 8601 week ' + date); 610 date = new Date(2003, 12 - 1, 28); 611 equals($.datepicker.iso8601Week(date), 52, 'ISO 8601 week ' + date); 612 date = new Date(2003, 12 - 1, 29); 613 equals($.datepicker.iso8601Week(date), 1, 'ISO 8601 week ' + date); 614 date = new Date(2004, 1 - 1, 4); 615 equals($.datepicker.iso8601Week(date), 1, 'ISO 8601 week ' + date); 616 date = new Date(2004, 1 - 1, 5); 617 equals($.datepicker.iso8601Week(date), 2, 'ISO 8601 week ' + date); 618 date = new Date(2009, 12 - 1, 28); 619 equals($.datepicker.iso8601Week(date), 53, 'ISO 8601 week ' + date); 620 date = new Date(2010, 1 - 1, 3); 621 equals($.datepicker.iso8601Week(date), 53, 'ISO 8601 week ' + date); 622 date = new Date(2010, 1 - 1, 4); 623 equals($.datepicker.iso8601Week(date), 1, 'ISO 8601 week ' + date); 624 date = new Date(2010, 1 - 1, 10); 625 equals($.datepicker.iso8601Week(date), 1, 'ISO 8601 week ' + date); 626 }); 627 628 test('parseDate', function() { 629 init('#inp'); 630 ok($.datepicker.parseDate('d m y', '') == null, 'Parse date empty'); 631 equalsDate($.datepicker.parseDate('d m y', '3 2 01'), 632 new Date(2001, 2 - 1, 3), 'Parse date d m y'); 633 equalsDate($.datepicker.parseDate('dd mm yy', '03 02 2001'), 634 new Date(2001, 2 - 1, 3), 'Parse date dd mm yy'); 635 equalsDate($.datepicker.parseDate('d m y', '13 12 01'), 636 new Date(2001, 12 - 1, 13), 'Parse date d m y'); 637 equalsDate($.datepicker.parseDate('dd mm yy', '13 12 2001'), 638 new Date(2001, 12 - 1, 13), 'Parse date dd mm yy'); 639 equalsDate($.datepicker.parseDate('y-o', '2001-34'), 640 new Date(2001, 2 - 1, 3), 'Parse date y-o'); 641 equalsDate($.datepicker.parseDate('yy-oo', '2001-347'), 642 new Date(2001, 12 - 1, 13), 'Parse date yy oo'); 643 equalsDate($.datepicker.parseDate('oo yy', '348 2004'), 644 new Date(2004, 12 - 1, 13), 'Parse date oo-yy'); 645 equalsDate($.datepicker.parseDate('D d M y', 'Sat 3 Feb 01'), 646 new Date(2001, 2 - 1, 3), 'Parse date D d M y'); 647 equalsDate($.datepicker.parseDate('d MM DD yy', '3 February Saturday 2001'), 648 new Date(2001, 2 - 1, 3), 'Parse date dd MM DD yy'); 649 equalsDate($.datepicker.parseDate('DD, MM d, yy', 'Saturday, February 3, 2001'), 650 new Date(2001, 2 - 1, 3), 'Parse date DD, MM d, yy'); 651 equalsDate($.datepicker.parseDate('\'day\' d \'of\' MM (\'\'DD\'\'), yy', 652 'day 3 of February (\'Saturday\'), 2001'), new Date(2001, 2 - 1, 3), 653 'Parse date \'day\' d \'of\' MM (\'\'DD\'\'), yy'); 654 equalsDate($.datepicker.parseDate('y-m-d', '01-02-03'), 655 new Date(2001, 2 - 1, 3), 'Parse date y-m-d - default cutoff'); 656 equalsDate($.datepicker.parseDate('y-m-d', '51-02-03'), 657 new Date(1951, 2 - 1, 3), 'Parse date y-m-d - default cutoff'); 658 equalsDate($.datepicker.parseDate('y-m-d', '51-02-03', {shortYearCutoff: 80}), 659 new Date(2051, 2 - 1, 3), 'Parse date y-m-d - cutoff 80'); 660 equalsDate($.datepicker.parseDate('y-m-d', '51-02-03', {shortYearCutoff: '+60'}), 661 new Date(2051, 2 - 1, 3), 'Parse date y-m-d - cutoff +60'); 662 var fr = $.datepicker.regional['fr']; 663 var settings = {dayNamesShort: fr.dayNamesShort, dayNames: fr.dayNames, 664 monthNamesShort: fr.monthNamesShort, monthNames: fr.monthNames}; 665 equalsDate($.datepicker.parseDate('D d M y', 'Lun 9 Avr 01', settings), 666 new Date(2001, 4 - 1, 9), 'Parse date D M y with settings'); 667 equalsDate($.datepicker.parseDate('d MM DD yy', '9 Avril Lundi 2001', settings), 668 new Date(2001, 4 - 1, 9), 'Parse date d MM DD yy with settings'); 669 equalsDate($.datepicker.parseDate('DD, MM d, yy', 'Lundi, Avril 9, 2001', settings), 670 new Date(2001, 4 - 1, 9), 'Parse date DD, MM d, yy with settings'); 671 equalsDate($.datepicker.parseDate('\'jour\' d \'de\' MM (\'\'DD\'\'), yy', 672 'jour 9 de Avril (\'Lundi\'), 2001', settings), new Date(2001, 4 - 1, 9), 673 'Parse date \'jour\' d \'de\' MM (\'\'DD\'\'), yy with settings'); 674 }); 675 676 test('parseDateErrors', function() { 677 init('#inp'); 678 var expectError = function(expr, value, error) { 679 try { 680 expr(); 681 ok(false, 'Parsed error ' + value); 682 } 683 catch (e) { 684 equals(e, error, 'Parsed error ' + value); 685 } 686 }; 687 expectError(function() { $.datepicker.parseDate(null, 'Sat 2 01'); }, 688 'Sat 2 01', 'Invalid arguments'); 689 expectError(function() { $.datepicker.parseDate('d m y', null); }, 690 'null', 'Invalid arguments'); 691 expectError(function() { $.datepicker.parseDate('d m y', 'Sat 2 01'); }, 692 'Sat 2 01 - d m y', 'Missing number at position 0'); 693 expectError(function() { $.datepicker.parseDate('dd mm yy', 'Sat 2 01'); }, 694 'Sat 2 01 - dd mm yy', 'Missing number at position 0'); 695 expectError(function() { $.datepicker.parseDate('d m y', '3 Feb 01'); }, 696 '3 Feb 01 - d m y', 'Missing number at position 2'); 697 expectError(function() { $.datepicker.parseDate('dd mm yy', '3 Feb 01'); }, 698 '3 Feb 01 - dd mm yy', 'Missing number at position 2'); 699 expectError(function() { $.datepicker.parseDate('d m y', '3 2 AD01'); }, 700 '3 2 AD01 - d m y', 'Missing number at position 4'); 701 expectError(function() { $.datepicker.parseDate('d m yy', '3 2 AD01'); }, 702 '3 2 AD01 - dd mm yy', 'Missing number at position 4'); 703 expectError(function() { $.datepicker.parseDate('y-o', '2001-D01'); }, 704 '2001-D01 - y-o', 'Missing number at position 5'); 705 expectError(function() { $.datepicker.parseDate('yy-oo', '2001-D01'); }, 706 '2001-D01 - yy-oo', 'Missing number at position 5'); 707 expectError(function() { $.datepicker.parseDate('D d M y', 'D7 3 Feb 01'); }, 708 'D7 3 Feb 01 - D d M y', 'Unknown name at position 0'); 709 expectError(function() { $.datepicker.parseDate('D d M y', 'Sat 3 M2 01'); }, 710 'Sat 3 M2 01 - D d M y', 'Unknown name at position 6'); 711 expectError(function() { $.datepicker.parseDate('DD, MM d, yy', 'Saturday- Feb 3, 2001'); }, 712 'Saturday- Feb 3, 2001 - DD, MM d, yy', 'Unexpected literal at position 8'); 713 expectError(function() { $.datepicker.parseDate('\'day\' d \'of\' MM (\'\'DD\'\'), yy', 714 'day 3 of February ("Saturday"), 2001'); }, 715 'day 3 of Mon2 ("Day7"), 2001', 'Unexpected literal at position 19'); 716 expectError(function() { $.datepicker.parseDate('d m y', '29 2 01'); }, 717 '29 2 01 - d m y', 'Invalid date'); 718 var fr = $.datepicker.regional['fr']; 719 var settings = {dayNamesShort: fr.dayNamesShort, dayNames: fr.dayNames, 720 monthNamesShort: fr.monthNamesShort, monthNames: fr.monthNames}; 721 expectError(function() { $.datepicker.parseDate('D d M y', 'Mon 9 Avr 01', settings); }, 722 'Mon 9 Avr 01 - D d M y', 'Unknown name at position 0'); 723 expectError(function() { $.datepicker.parseDate('D d M y', 'Lun 9 Apr 01', settings); }, 724 'Lun 9 Apr 01 - D d M y', 'Unknown name at position 6'); 725 }); 726 727 test('formatDate', function() { 728 init('#inp'); 729 equals($.datepicker.formatDate('d m y', new Date(2001, 2 - 1, 3)), 730 '3 2 01', 'Format date d m y'); 731 equals($.datepicker.formatDate('dd mm yy', new Date(2001, 2 - 1, 3)), 732 '03 02 2001', 'Format date dd mm yy'); 733 equals($.datepicker.formatDate('d m y', new Date(2001, 12 - 1, 13)), 734 '13 12 01', 'Format date d m y'); 735 equals($.datepicker.formatDate('dd mm yy', new Date(2001, 12 - 1, 13)), 736 '13 12 2001', 'Format date dd mm yy'); 737 equals($.datepicker.formatDate('yy-o', new Date(2001, 2 - 1, 3)), 738 '2001-34', 'Format date yy-o'); 739 equals($.datepicker.formatDate('yy-oo', new Date(2001, 2 - 1, 3)), 740 '2001-034', 'Format date yy-oo'); 741 equals($.datepicker.formatDate('D M y', new Date(2001, 2 - 1, 3)), 742 'Sat Feb 01', 'Format date D M y'); 743 equals($.datepicker.formatDate('DD MM yy', new Date(2001, 2 - 1, 3)), 744 'Saturday February 2001', 'Format date DD MM yy'); 745 equals($.datepicker.formatDate('DD, MM d, yy', new Date(2001, 2 - 1, 3)), 746 'Saturday, February 3, 2001', 'Format date DD, MM d, yy'); 747 equals($.datepicker.formatDate('\'day\' d \'of\' MM (\'\'DD\'\'), yy', 748 new Date(2001, 2 - 1, 3)), 'day 3 of February (\'Saturday\'), 2001', 749 'Format date \'day\' d \'of\' MM (\'\'DD\'\'), yy'); 750 var fr = $.datepicker.regional['fr']; 751 var settings = {dayNamesShort: fr.dayNamesShort, dayNames: fr.dayNames, 752 monthNamesShort: fr.monthNamesShort, monthNames: fr.monthNames}; 753 equals($.datepicker.formatDate('D M y', new Date(2001, 4 - 1, 9), settings), 754 'Lun Avr 01', 'Format date D M y with settings'); 755 equals($.datepicker.formatDate('DD MM yy', new Date(2001, 4 - 1, 9), settings), 756 'Lundi Avril 2001', 'Format date DD MM yy with settings'); 757 equals($.datepicker.formatDate('DD, MM d, yy', new Date(2001, 4 - 1, 9), settings), 758 'Lundi, Avril 9, 2001', 'Format date DD, MM d, yy with settings'); 759 equals($.datepicker.formatDate('\'jour\' d \'de\' MM (\'\'DD\'\'), yy', 760 new Date(2001, 4 - 1, 9), settings), 'jour 9 de Avril (\'Lundi\'), 2001', 761 'Format date \'jour\' d \'de\' MM (\'\'DD\'\'), yy with settings'); 762 }); 763 764 })(jQuery);
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Thu Mar 24 11:18:33 2011 | Cross-referenced by PHPXref 0.7 |