diff --git a/lisp/calendar/cal-html.el b/lisp/calendar/cal-html.el
new file mode 100644
index 00000000000..5ae3697ade6
--- /dev/null
+++ b/lisp/calendar/cal-html.el
@@ -0,0 +1,444 @@
+;;; cal-html.el --- functions for printing HTML calendars
+
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+;; Author: Anna M. Bigatti
+;; Keywords: calendar
+;; Human-Keywords: calendar, diary, HTML
+;; Created: 23 Aug 2002
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; This package writes HTML calendar files using the user's diary
+;; file. See the Emacs manual for details.
+
+
+;;; Code:
+
+(require 'calendar)
+
+
+(defgroup calendar-html nil
+ "Options for HTML calendars."
+ :prefix "cal-html-"
+ :group 'calendar)
+
+(defcustom cal-html-directory "~/public_html"
+ "Directory for HTML pages generated by cal-html."
+ :type 'string
+ :group 'calendar-html)
+
+(defcustom cal-html-print-day-number-flag nil
+ "Non-nil means print the day-of-the-year number in the monthly cal-html page."
+ :type 'boolean
+ :group 'calendar-html)
+
+(defcustom cal-html-year-index-cols 3
+ "Number of columns in the cal-html yearly index page."
+ :type 'integer
+ :group 'calendar-html)
+
+(defcustom cal-html-day-abbrev-array
+ (calendar-abbrev-construct calendar-day-abbrev-array
+ calendar-day-name-array)
+ "Array of seven strings for abbreviated day names (starting with Sunday)."
+ :type '(vector string string string string string string string)
+ :group 'calendar-html)
+
+(defcustom cal-html-css-default
+ (concat
+ "\n\n")
+ "Default cal-html css style. You can override this with a \"cal.css\" file."
+ :type 'string
+ :group 'calendar-html)
+
+;;; End customizable variables.
+
+
+;;; HTML and CSS code constants.
+
+(defconst cal-html-e-document-string "
\n