+ wc_printf("</tr></table>");
+}
+
+
+/*
+ * Display this user's summary page
+ */
+void summary(void) {
+ char title[256];
+
+ output_headers(1, 1, 2, 0, 0, 0);
+ wc_printf("<div id=\"banner\" class=\"banner\">\n");
+ wc_printf("<table border=0><tr>");
+ wc_printf("<td><img src=\"static/webcit_icons/essen/32x32/summary.png\"></td>");
+ wc_printf("<td><h1>");
+ snprintf(title, sizeof title, _("Summary page for %s"),
+ ( (WC->logged_in) ? ChrPtr(WC->wc_fullname) : ChrPtr(WC->serv_info->serv_humannode))
+ );
+ escputs(title);
+ wc_printf("</h1><h2>");
+ output_date();
+ wc_printf("</h2></td></tr></table>");
+ wc_printf("<div id=\"actiondiv\">");
+ wc_printf("<ul class=\"room_actions\">\n");
+ wc_printf("<li class=\"start_page\">");
+ offer_start_page(NULL, &NoCtx);
+ wc_printf("</li></ul>");
+ wc_printf("</div>"); /* actiondiv */
+ wc_printf("</div>"); /* banner */
+
+ /*
+ * You guessed it ... we're going to refresh using ajax.
+ * In the future we might consider updating individual sections of the summary
+ * instead of the whole thing.
+ */
+ wc_printf("<div id=\"content\" class=\"service\">\n");
+ summary_inner_div();
+ wc_printf("</div>\n");
+
+ wc_printf(
+ "<script type=\"text/javascript\"> "
+ " new Ajax.PeriodicalUpdater('msg_inner', 'new_messages_html', "
+ " { method: 'get', frequency: 60 } ); "
+ " new Ajax.PeriodicalUpdater('tasks_inner', 'tasks_inner_html', "
+ " { method: 'get', frequency: 120 } ); "
+ " new Ajax.PeriodicalUpdater('calendar_inner', 'calendar_inner_html', "
+ " { method: 'get', frequency: 90 } ); "
+ " new Ajax.PeriodicalUpdater('do_template', 'template=who_summary', "
+ " { method: 'get', frequency: 30 } ); "
+ "</script> \n"
+ );
+