[ Index ]

PHP Cross Reference of Drupal 6 (gatewave)

title

Body

[close]

/sites/all/modules/jquery_ui/jquery.ui/tests/unit/datepicker/ -> datepicker_options.js (source)

   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);


Generated: Thu Mar 24 11:18:33 2011 Cross-referenced by PHPXref 0.7