public String getInitialization()
{
Locale locale = threadLocale.getLocale();
JSONObject spec = new JSONObject();
DateFormatSymbols symbols = new DateFormatSymbols(locale);
spec.put("months", new JSONArray((Object[])symbols.getMonths()));
StringBuilder days = new StringBuilder();
String[] weekdays = symbols.getWeekdays();
Calendar c = Calendar.getInstance(locale);
int firstDay = c.getFirstDayOfWeek();
// DatePicker needs them in order from monday to sunday.
for (int i = Calendar.MONDAY; i <= Calendar.SATURDAY; i++)
{
days.append(weekdays[i].substring(0, 1));
}
days.append(weekdays[Calendar.SUNDAY].substring(0, 1));
spec.put("days", days.toString().toLowerCase(locale));
// DatePicker expects 0 to be monday. Calendar defines SUNDAY as 1, MONDAY as 2, etc.
spec.put("firstDay", firstDay == Calendar.SUNDAY ? 6 : firstDay - 2);
// TODO: Skip localization if locale is English?
return String.format("Tapestry.DateField.initLocalization(%s);", spec.toString(compactJSON));
}