diff --git a/source/java/org/alfresco/repo/web/scripts/calendar/AbstractCalendarListingWebScript.java b/source/java/org/alfresco/repo/web/scripts/calendar/AbstractCalendarListingWebScript.java
new file mode 100644
index 0000000000..24f089cc7d
--- /dev/null
+++ b/source/java/org/alfresco/repo/web/scripts/calendar/AbstractCalendarListingWebScript.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2005-2011 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ */
+package org.alfresco.repo.web.scripts.calendar;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.alfresco.service.cmr.calendar.CalendarEntry;
+import org.alfresco.service.cmr.calendar.CalendarRecurrenceHelper;
+
+/**
+ * This class provides functionality common across the webscripts
+ * which list events.
+ *
+ * @author Nick Burch
+ * @since 4.0
+ */
+public abstract class AbstractCalendarListingWebScript extends AbstractCalendarWebScript
+{
+ protected static final String RESULT_NAME = "name";
+ protected static final String RESULT_TITLE = "title";
+ protected static final String RESULT_START = "start";
+ protected static final String RESULT_END = "end";
+
+ /**
+ * Returns a Comparator for (re-)sorting events, typically used after
+ * expanding out recurring instances.
+ */
+ protected static Comparator