Index: django/contrib/admin/media/js/admin/DateTimeShortcuts.js
===================================================================
--- django/contrib/admin/media/js/admin/DateTimeShortcuts.js	(revision 7403)
+++ django/contrib/admin/media/js/admin/DateTimeShortcuts.js	(working copy)
@@ -55,16 +55,19 @@
         shortcuts_span.appendChild(document.createTextNode('\240|\240'));
         shortcuts_span.appendChild(clock_link);
 
-        // Create clock link div
+        // Create clock link div. Intervals are in 30 minutes, but may be adjusted by modifying values below
         //
         // Markup looks like:
         // <div id="clockbox1" class="clockbox module">
         //     <h2>Choose a time</h2>
         //     <ul class="timelist">
-        //         <li><a href="#">Now</a></li>
         //         <li><a href="#">Midnight</a></li>
-        //         <li><a href="#">6 a.m.</a></li>
+        //         <li><a href="#">12:30 AM</a></li>
+        //         <li><a href="#"><1:00 AM</a></li>
+        //         ...
         //         <li><a href="#">Noon</a></li>
+        //         <li><a href="#">12:30 PM</a></li>
+        //         ...
         //     </ul>
         //     <p class="calendar-cancel"><a href="#">Cancel</a></p>
         // </div>
@@ -78,13 +81,44 @@
         addEvent(clock_box, 'click', DateTimeShortcuts.cancelEventPropagation);
 
         quickElement('h2', clock_box, gettext('Choose a time'));
-        time_list = quickElement('ul', clock_box, '');
-        time_list.className = 'timelist';
-        quickElement("a", quickElement("li", time_list, ""), gettext("Now"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date().getHourMinuteSecond());")
-        quickElement("a", quickElement("li", time_list, ""), gettext("Midnight"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '00:00:00');")
-        quickElement("a", quickElement("li", time_list, ""), gettext("6 a.m."), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '06:00:00');")
-        quickElement("a", quickElement("li", time_list, ""), gettext("Noon"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '12:00:00');")
-
+        var interval_mins = 30; // minutes between displayed times
+        var columns = 4;        // number of columns in popup
+        var total_intervals = 24 * 60 / interval_mins;
+        var time = new Date(0,0,0,0,0,0,0);
+        var midnight = new Date(0,0,0,0,0,0,0);
+        var noon = new Date(0,0,0,12,0,0,0);
+        for (var si=0; si<columns; si++) {
+            time_list = quickElement('ul', clock_box, '');
+            time_list.className = 'timelist';
+            if (si == columns-1) {
+                time_list.id = 'timelist-end';
+            }
+            var this_col_count = total_intervals / columns;
+            for (var sj=0; sj<this_col_count; sj++) {
+                var time_text = null;
+                if (time.getTime() == midnight.getTime())
+                    time_text = gettext("Midnight");
+                else if (time.getTime() == noon.getTime())
+                    time_text = gettext("Noon");
+                else {
+                    var hrs = time.getHours();
+                    if (hrs > 12) {
+                        hrs -= 12;
+                    }
+                    else if (hrs == 0) {
+                        hrs = 12;
+                    }
+                    var mins = "" + time.getMinutes();
+                    if (mins == "0") {
+                        mins = "00"
+                    }
+                    var ap = time.getHours() >= 12 ? "PM" : "AM";
+                    time_text = "" + hrs + ":" + mins + " " + ap;
+                }
+                quickElement("a", quickElement("li", time_list, ""), time_text, "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '" + time.getHourMinute() + "');");
+                time = new Date(time.getTime() + (interval_mins * 60 * 1000)); // interval * seconds in a minute * millis in second
+            }
+        }
         cancel_p = quickElement('p', clock_box, '');
         cancel_p.className = 'calendar-cancel';
         quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissClock(' + num + ');');
