void CalendarPickerElement::writeDocument(DocumentWriter& writer) { HTMLInputElement* input = hostInput(); DateComponents date; date.setMillisecondsSinceEpochForDate(input->minimum()); String minString = date.toString(); date.setMillisecondsSinceEpochForDate(input->maximum()); String maxString = date.toString(); Decimal step; String stepString = input->fastGetAttribute(stepAttr); if (stepString.isEmpty() || !input->getAllowedValueStep(&step)) stepString = "1"; addString("<!DOCTYPE html><head><meta charset='UTF-8'><style>\n", writer); writer.addData(calendarPickerCss, sizeof(calendarPickerCss)); if (document()->page()) { CString extraStyle = document()->page()->theme()->extraCalendarPickerStyleSheet(); if (extraStyle.length()) writer.addData(extraStyle.data(), extraStyle.length()); } addString("</style></head><body><div id=main>Loading...</div><script>\n" "window.dialogArguments = {\n", writer); addProperty("min", minString, writer); addProperty("max", maxString, writer); addProperty("step", stepString, writer); addProperty("required", input->required(), writer); addProperty("currentValue", input->value(), writer); addProperty("locale", defaultLanguage(), writer); addProperty("todayLabel", calendarTodayText(), writer); addProperty("clearLabel", calendarClearText(), writer); addProperty("weekStartDay", firstDayOfWeek(), writer); addProperty("monthLabels", monthLabels(), writer); addProperty("dayLabels", weekDayShortLabels(), writer); Direction dir = direction(monthLabels()[0][0]); addProperty("isRTL", dir == RightToLeft || dir == RightToLeftArabic, writer); addString("}\n", writer); writer.addData(calendarPickerJs, sizeof(calendarPickerJs)); addString("</script></body>\n", writer); }