--- clientside_validation.js 2013-02-08 11:55:10.809983272 +0000 +++ clientside_validation.js 2013-02-08 11:51:08.853992998 +0000 @@ -1163,48 +1163,63 @@ }); jQuery.validator.addMethod("dateFormat", function(value, element, param) { - var parts = value.split(param.splitter); - var expectedpartscount = 0; - var day = parseInt(parts[param.daypos], 10); - var month = parseInt(parts[param.monthpos], 10); - month = month - 1; - var year = parseInt(parts[param.yearpos], 10); - var date = new Date(); - var result = true; - if (day.toString().length !== parts[param.daypos].length){ - result = false; - } - if (month.toString().length !== parts[param.monthpos].length){ - result = false; - } - if (year.toString().length !== parts[param.yearpos].length){ - result = false; - } - if (param.yearpos !== false){ - expectedpartscount++; - date.setFullYear(year); - if (year !== date.getFullYear()) { + try{ + var parts = value.split(param.splitter); + var expectedpartscount = 0; + var day = parseInt(parts[param.daypos], 10); + + var month = parseInt(parts[param.monthpos], 10); + if (isNaN(month)) { + if (typeof Drupal.settings.clientside_validation_settings[parts[param.monthpos]] !== undefined) { + month = Drupal.settings.clientside_validation_settings[parts[param.monthpos]]; + } + else { + month = new Date(parts[param.monthpos] + " 1, 2000"); + month = month.getMonth(); + } + } + month = month - 1; + + var year = parseInt(parts[param.yearpos], 10); + var date = new Date(); + var result = true; + if (parts[param.daypos].toString().length !== parts[param.daypos].length){ result = false; } - } - if (param.monthpos !== false) { - expectedpartscount++; - date.setMonth(month); - if (month !== date.getMonth()) { + if (parts[param.monthpos].toString().length !== parts[param.monthpos].length){ result = false; } - } - if (param.daypos !== false) { - expectedpartscount++; - date.setDate(day); - if (day !== date.getDate()) { + if (parts[param.yearpos].toString().length !== parts[param.yearpos].length){ result = false; } + if (param.yearpos !== false){ + expectedpartscount++; + date.setFullYear(year); + if (year !== date.getFullYear()) { + result = false; + } + } + if (param.monthpos !== false) { + expectedpartscount++; + date.setMonth(month); + if (month !== date.getMonth()) { + result = false; + } + } + if (param.daypos !== false) { + expectedpartscount++; + date.setDate(day); + if (day !== date.getDate()) { + result = false; + } + } + if (expectedpartscount !== parts.length) { + result = false; + } + return this.optional(element) || result; + } catch(e) { + return this.optional(element) || false; } - if (expectedpartscount !== parts.length) { - result = false; - } - return this.optional(element) || result; }, jQuery.format('The date is not in a valid format')); // Require one of several