public function getEventConfig($id = false, $extended = false, $forEdit = false, $withRecurData = false, $counts = false)
     {
 
-        $regEventFirstTime = false;
-        $regEventLastTime = false;
-
         // Save status of extended data flag
         $saveExtended = $this->postProcAddedEventData;
 
         require_once GLM_MEMBERS_REGISTRATIONS_PLUGIN_CLASS_PATH.'/data/dataRegTime.php';
         $RegTime = new GlmDataRegistrationsRegTime($this->wpdb, $this->config);
 
-        // If this is a time specific event, then get all times except any default entry that might be there from the event having been a non-time_specific event
-        if ($this->regEventData['time_specific']['value']) {
-            $this->regEventData['reg_time'] = $RegTime->getList('T.reg_event = '.$this->regEventData['id'], 'start_datetime', true);     // removed    .' AND T.event_time > 0'
-
-        // Otherwise if this is a non-time_specific event, we only want the default entry
-        } else {
-            $this->regEventData['reg_time'] = $RegTime->getList('T.reg_event = '.$this->regEventData['id'].' AND T.event_time = 0', 'start_datetime', true);
-        }
+        // Get all active reg_time entries for this event
+        $this->regEventData['reg_time'] = $RegTime->getList('T.reg_event = '.$this->regEventData['id'].' AND T.active', 'start_datetime', true);
 
         // Get all reg_class records for this event
         require_once GLM_MEMBERS_REGISTRATIONS_PLUGIN_CLASS_PATH.'/data/dataRegClass.php';
             return false;
         }
 
-        // For each recurrence
-        foreach ($this->regEventData['recurrences'] as $recurKey=>$recurVal) {
+        // Get the first and last times in the reg_times entries
+        $firstTime = false;
+        $lastTime = false;
+        foreach ($this->regEventData['reg_time'] as $time) {
 
-            $this->regEventData['recurrences'][$recurKey]['haveTimes'] = false;
+            // If the time is not for non-time-specific inventory
+            if (!$time['non_time_specific']['value']) {
 
-            // If we have times for this recurrence
-            if ($recurVal['times'] && count($recurVal['times']) > 0) {
-
-                // Get the first and last event date/time
-                $first = current($recurVal['times']);
-                $last = end($recurVal['times']);
-
-                $this->regEventData['recurrences'][$recurKey]['first_time'] = $first;
-                $this->regEventData['recurrences'][$recurKey]['lastTime'] = $last;
-
-                // Set event first and last times
-                if (!$regEventFirstTime || $regEventFirstTime['start_time']['timestamp'] > $first['start_time']['timestamp'] ) {
-                    $regEventFirstTime = $first;
+                if (!$firstTime || $time['start_datetime']['timestamp'] < $firstTime) {
+                    $firstTime = $time['start_datetime']['timestamp'];
                 }
-                if (!$regEventLastTime || $regEventLastTime['end_time']['timestamp'] < $last['end_time']['timestamp'] ) {
-                    $regEventLastTime = $last;
+                if (!$lastTime || $time['start_datetime']['timestamp'] > $lastTime) {
+                    $lastTime = $time['start_datetime']['timestamp'];
                 }
 
-            } // have times for recurrence
-
-            $recurrenceSummary[] = array(
-                'firstTime'  => $first,
-                'lastTime'   => $last
-            );
+            }
 
-        } // each recurrence
+        }
 
-        // Save First and Last times for the entire event
-        $this->regEventData['firstTime'] = $regEventFirstTime;
-        $this->regEventData['lastTime'] = $regEventLastTime;
+        // Generate date as used in results
+        $firstDateTime = date('Y-m-d H:i:s', $firstTime);
+        $lastDateTime = date('Y-m-d H:i:s', $lastTime);
 
         // Check if we need to update first and/or last event times in database - if so, do that
-        if ($this->regEventData['first_datetime']['timestamp'] != $regEventFirstTime['start_time']['timestamp'] ||
-            $this->regEventData['last_datetime']['timestamp'] != $regEventLastTime['start_time']['timestamp']
+        if ($this->regEventData['first_datetime']['timestamp'] != $firstTime ||
+            $this->regEventData['last_datetime']['timestamp'] != $lastTime
             ) {
+
+            // Update the regEventData first and last times
+            $this->regEventData['first_dateTime'] = array('datetime' => $firstDateTime, 'timestamp' => $firstTime);
+            $this->regEventData['last_dateTime'] = array('datetime' => $lastDateTime, 'timestamp' => $lastTime);
+
+            // Update the database
             $this->wpdb->update(
                 GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX.'reg_event',
                 array(
-                    'first_datetime' => date('Y-m-d H:i:s', $regEventFirstTime['start_time']['timestamp']),
-                    'last_datetime' => date('Y-m-d H:i:s', $regEventLastTime['start_time']['timestamp']),
+                    'first_datetime' => date('Y-m-d H:i:s', $firstTime),
+                    'last_datetime' => date('Y-m-d H:i:s', $lastTime),
                 ),
                 array( 'id' => $this->regEventData['id'] ),
                 array(
             );
         }
 
+        // If this is a non-time-specific event
+        if ($time['non_time_specific']) {
+
+            // Find the non-time-specific time entry
+            foreach ($this->regEventData['reg_time'] as $regTimeKey=>$regTime) {
+
+                // If this is the non-time-specific entry
+                if ($regTime['non_time_specific']['value']) {
+
+                    // If the start and/or end times changed
+                    if ($regTime['start_datetime']['timestamp'] != $firstTime ||
+                        $regTime['end_datetime']['timestamp'] !=- $lastTime
+                        ) {
+
+                        // Update this reg_time entry - NOTE: for non-time-specific entries the end_datetime is the start of the last occurance of the event
+                        $this->regEventData['reg_time'][$regTimeKey]['start_datetime'] = array('datetime' => $firstDateTime, 'timestamp' => $firstTime);
+                        $this->regEventData['reg_time'][$regTimeKey]['end_datetime'] = array('datetime' => $lastDateTime, 'timestamp' => $lastTime);
+
+                        // Update the database
+                        $this->wpdb->update(
+                            GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX.'reg_time',
+                            array(
+                                'start_datetime' => date('Y-m-d H:i:s', $firstTime),
+                                'end_datetime' => date('Y-m-d H:i:s', $lastTime),
+                            ),
+                            array( 'id' => $regTimeKey ),
+                            array(
+                                '%s',
+                                '%s'
+                            )
+                        );
+
+                    } // If times changed
+
+                } // is non_time_specific
+
+            } // each reg_time
+
+        } // non_time_specific
+
+
         // Add Recurrence summary to event data
-        $this->regEventData['recurrenceSummary'] = $recurrenceSummary;
+//        $this->regEventData['recurrenceSummary'] = $recurrenceSummary;
 
         // If recurrences is not requested - dump them now
         if (!$withRecurData) {
 
         // Get the event data
         $this->getEventConfig($regEventId);
-//echo "<pre>".print_r($this->regEventData,1)."</pre>";
 
         // Make sure we have an event
         if (!$this->regEventData) {
         if (!is_array($this->regEventData['reg_time']) || count($this->regEventData['reg_time']) == 0) {
             return false;
         }
-
+/*
         // Check reg_time array
         $timeSpecific = $this->regEventData['time_specific']['value'];
         foreach ($this->regEventData['reg_time'] as $timeKey=>$timeVal) {
             }
 
         }
+*/
 
         // If now we don't have any time entries
         if (count($this->regEventData['reg_time']) == 0) {
         }
 
         // If it's too late to register for this event
-        if ($this->regEventData['lastTime']['start_time']['timestamp'] - time() < ($this->regEventData['reg_hours_before'] & 3600)) {
+        if ($this->regEventData['last_datetime']['timestamp'] - time() < ($this->regEventData['reg_hours_before'] & 3600)) {
             return false;
         }
 
         }
 
         // For each class
-        foreach ($this->regEventData['reg_class'] as $ck=>$cv) {
+        foreach ($this->regEventData['reg_class'] as $regClassKey=>$regClass) {
 
             // If we don't have any rates for this class, remove the class
-            if (!is_array($cv['reg_rate']) || count($cv['reg_rate']) == 0) {
-                unset($this->regEventData['reg_class'][$ck]);
+            if (!is_array($regClass['reg_rate']) || count($regClass['reg_rate']) == 0) {
+                unset($this->regEventData['reg_class'][$regCLassKey]);
             } else {
 
-                $this->regEventData['reg_class'][$ck]['times'] = array();
-                $this->regEventData['reg_class'][$ck]['hasTimes'] = false;
-
-                // For each event time
-                foreach ($this->regEventData['reg_time'] as $tk=>$tv) {
-
-                    // If event is time specific - rates days are per the selected time
-                    if ($this->regEventData['time_specific']['value']) {
-
-                        // If event time is for time-specific event (might be either mixed in)
-// Not checking time specific/non-time specific reg_time records at this time due to adding reg_times manually that don't have event_time(s) that match
-//                        if ($tv['event_time']) {
-
-                            // Try to find a current rate for this time - within the start and end days before this time
-                            foreach ($cv['reg_rate'] as $rk=>$rv) {
+                $this->regEventData['reg_class'][$regCLassKey]['times'] = array();
+                $this->regEventData['reg_class'][$regCLassKey]['non_time_specific_time'] = array();
+                $this->regEventData['reg_class'][$regCLassKey]['hasTimes'] = false;
 
-                                // Calculate earliest and latest days for this rate calculated from the start of this event time
-                                $earliestTime   = strtotime(date('m/d/Y', $tv['start_datetime']['timestamp']).' -'.$rv['start_days'].' days');
-                                $latestTime     = strtotime(date('m/d/Y', $tv['start_datetime']['timestamp']).' -'.($rv['end_days']-1).' days');
+                // For each event time except non-time-specific entry
+                foreach ($this->regEventData['reg_time'] as $regTimeKey=>$regTime) {
 
-                                // If it's time to register with this time/rate - Add it to the class data
-                                if (time() > $earliestTime && time() < $latestTime) {
+                    // Try to find a current rate for this time - within the start and end days before this time
+                    foreach ($regClass['reg_rate'] as $regRateKey=>$regRate) {
 
-                                    // Preserve rate ID and don't let it trash the time ID
-                                    $rv['rate_id'] = $rv['id'];
-                                    unset($rv['id']);
+                        // Calculate earliest and latest days for this rate calculated from the start of this event time
+                        $earliestTime   = strtotime(date('m/d/Y', $regTime['start_datetime']['timestamp']).' -'.$regRate['start_days'].' days');
+                        $latestTime     = strtotime(date('m/d/Y', $regTime['start_datetime']['timestamp']).' -'.($regRate['end_days']-1).' days');
 
-                                    $this->regEventData['reg_class'][$ck]['times'][$tv['event_time']] = array_merge($tv, $rv);
-                                    $this->regEventData['reg_class'][$ck]['hasTimes'] = true;
-                                }
+                        // If it's time to register with this time/rate - Add it to the class data
+                        if (time() > $earliestTime && time() < $latestTime) {
 
-                            }
+                            // Preserve rate ID and don't let it trash the time ID
+                            $regRate['rate_id'] = $regRate['id'];
+                            unset($regRate['id']);
 
-//                        }
+                            $this->regEventData['reg_class'][$regCLassKey]['times'][$regTime['event_time']] = array_merge($regTime, $regRate);
+                            $this->regEventData['reg_class'][$regCLassKey]['hasTimes'] = true;
+                        }
 
-                    // Otherwise for non time specific eventes - rate days are per the first event date
-                    } else {
+                    }
 
-                        // If event time is for non time specific event (might be either mixed in)
-                        if (!$tv['event_time']) {
+                }
 
-                            // Try to find a current rate for this time - within the start and end days before this time
-                            foreach ($cv['reg_rate'] as $rk=>$rv) {
 
-                                // Calculate earliest and latest days for this rate calculated from the start of the first date/time for this event
-                                // ** We may want to make it optional to use the last day of the event ???
-                                $earliestTime   = strtotime(date('m/d/Y', $this->regEventData['firstTime']['start_time']['timestamp']).' -'.$rv['start_days'].' days');
-                                $latestTime     = strtotime(date('m/d/Y', $this->regEventData['firstTime']['start_time']['timestamp']).' -'.($rv['end_days']-1).' days');
+                // If event time is for time-specific event (might be either mixed in)
+                if ($regTime['non_time_specific']) {
 
-                                // If it's time to register with this time/rate - Add it to the class data
-                                if (time() > $earliestTime && time() < $latestTime) {
+                    // Try to find a current rate for this time - within the start and end days before this time
+                    foreach ($regClass['reg_rate'] as $regRateKey=>$regRate) {
 
-                                    // Preserve rate ID and don't let it trash the time ID
-                                    $rv['rate_id'] = $rv['id'];
-                                    unset($rv['id'], $rv['reg_event']);
+                        // Calculate earliest and latest days for this rate calculated from the start of the first date/time for this event
+                        // ** We may want to make it optional to use the last day of the event ???
+                        $earliestTime   = strtotime(date('m/d/Y', $this->regEventData['firstTime']['start_time']['timestamp']).' -'.$regRate['start_days'].' days');
+                        $latestTime     = strtotime(date('m/d/Y', $this->regEventData['firstTime']['start_time']['timestamp']).' -'.($regRate['end_days']-1).' days');
 
-                                    $this->regEventData['reg_class'][$ck]['times'][$tv['event_time']] = array_merge($tv, $rv);
-                                    $this->regEventData['reg_class'][$ck]['hasTimes'] = true;
-                                }
+                        // If it's time to register with this time/rate - Add it to the class data
+                        if (time() > $earliestTime && time() < $latestTime) {
 
-                            }
+                            // Preserve rate ID and don't let it trash the time ID
+                            $regRate['rate_id'] = $regRate['id'];
+                            unset($regRate['id'], $regRate['reg_event']);
 
+                            $this->regEventData['reg_class'][$regCLassKey]['times'][$regTime['event_time']] = array_merge($regTime, $regRate);
+                            $this->regEventData['reg_class'][$regCLassKey]['hasTimes'] = true;
                         }
 
                     }
 
-                } // each event time
+                }
 
             } // Have rates for this class
 
         // Get rid of the provided reg_time entries - No longer needed
         unset($this->regEventData['reg_time']);
 
-        // echo "<pre>".print_r($this->regEventData,1)."<pre>";
+        // echo "<pre>".print_r($this->regEventData,1)."</pre>";
 
         return $this->regEventData;
     }
      * @param integer $regEventId Optional ID of a reg event record. If provided, load all registration data using getEventConfig() above
      *                            This is not required if the event data has already been loaded using getEVentConfig() by the calling code
      * @param boolean $deleteRemovedTimes Optional flag to ask that times removed from the event are removed from registration
+     * @param boolean $nonDateSpecificOnly Optional flag to check only for the default non-date-specific time entry.
      *
      * @return array updated reg_times data or false if not regEventData has been provided or no recurrence data
      */
-    public function checkEventTimes($regEventId = false, $deleteTimes = false)
+    public function checkEventTimes($regEventId = false, $deleteTimes = false, $nonDateSpecificOnly = false)
     {
 
         $needTimesReloaded = false;
             return false;
         }
 
-        // If we don't have recurrences for the event
-        if (!is_array($this->regEventData['recurrences']) || count($this->regEventData['recurrences']) == 0) {
-            return false;
-        }
+        // Only do this if we haven't requested only non-date-specific time entry check
+        if (!$nonDateSpecificOnly) {
+
+            // If we don't have recurrences for the event
+            if (!is_array($this->regEventData['recurrences']) || count($this->regEventData['recurrences']) == 0) {
+                return false;
+            }
 
-        // For each recurrence
-        foreach ($this->regEventData['recurrences'] as $recurKey=>$recurVal) {
+            // For each recurrence
+            foreach ($this->regEventData['recurrences'] as $recurKey=>$recurVal) {
 
-            // If we have times for this recurrence
-            if ($recurVal['times'] && count($recurVal['times']) > 0) {
+                // If we have times for this recurrence
+                if ($recurVal['times'] && count($recurVal['times']) > 0) {
 
-                // If this is a time specific event
-                if ($this->regEventData['time_specific']['value']) {
+                    // If this is a time specific event
+                    if ($this->regEventData['time_specific']['value']) {
 
-                    // Check all event times for matching reg event times
-                    foreach ($recurVal['times'] as $eventTimeKey=>$eventTimeVal) {
+                        // Check all event times for matching reg event times
+                        foreach ($recurVal['times'] as $eventTimeKey=>$eventTimeVal) {
 
-                        $id = false;
+                            $id = false;
 
-                        // If we have any times entries in this event
-                        if (is_array($this->regEventData['reg_time']) && count($this->regEventData['reg_time']) > 0) {
+                            // If we have any times entries in this event
+                            if (is_array($this->regEventData['reg_time']) && count($this->regEventData['reg_time']) > 0) {
 
-                            // Check if this time from the event already exists in reg_times array
-                            reset($this->regEventData['reg_time']);
-                            foreach($this->regEventData['reg_time'] as $regTimeKey=>$regTimeVal) {
-                                if ($regTimeVal['event_time'] == $eventTimeKey) {
+                                // Check if this time from the event already exists in reg_times array
+                                reset($this->regEventData['reg_time']);
+                                foreach($this->regEventData['reg_time'] as $regTimeKey=>$regTimeVal) {
+                                    if ($regTimeVal['event_time'] == $eventTimeKey) {
 
-                                    // Set ID to say we found this one.
-                                    $id = $regTimeKey;
+                                        // Set ID to say we found this one.
+                                        $id = $regTimeKey;
 
-                                    // Also add OK to the reg_time to say that it matches a recur time - see below
-                                    $this->regEventData['reg_time'][$regTimeKey]['OK'] = true;
+                                        // Also add OK to the reg_time to say that it matches a recur time - see below
+                                        $this->regEventData['reg_time'][$regTimeKey]['OK'] = true;
+                                    }
                                 }
-                            }
 
-                        }
-                        // If it wasn't found, then add it
-                        if (!$id) {
-
-                            $needTimesReloaded = true;
-                            $message .= "<br>    New dates and/or times have been added";
-
-                            $sTime = date('Y-m-d H:i:s',strtotime($eventTimeVal['start_time']['datetime']));
-                            $eTime = date('Y-m-d H:i:s',strtotime($eventTimeVal['end_time']['datetime']));
-
-                            // Add reg event time
-                            $this->wpdb->insert(
-                                GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX."reg_time",
-                                array(
-                                    'reg_event'             => $this->regEventData['id'],
-                                    'event_time'            => $eventTimeKey,
-                                    'start_datetime'        => $sTime,
-                                    'end_datetime'          => $eTime,
-                                    'all_day'               => $eventTimeVal['all_day']['value'],
-                                    'attendees'             => $this->regEventData['attendees']['value'],
-                                    'attendee_max'          => $this->regEventData['attendee_max'],
-                                    'attendee_count'        => 0,
-                                    'attendees_pending'     => 0,
-                                    'attendees_available'   => $this->regEventData['attendee_max'],
-                                    'total_base_charge'     => 0,
-
-                                    'total_per_attendee'    => 0,
-                                    'total_other'           => 0,
-                                    'total_taxes'           => 0,
-                                    'total_charges'         => 0,
-                                    'total_discounts'       => 0,
-                                    'total_payments'        => 0
-                                ),
-                                array(
-                                    '%d',   // reg_event
-                                    '%d',   // event_time record ID
-                                    '%s',   // start_datetime
-                                    '%s',   // end_datetime
-                                    '%d',   // all_day flag
-                                    '%d',   // attendees flag
-                                    '%d',   // attendee_max
-                                    '%d',   // attendee_count
-                                    '%d',   // attendees_pending
-                                    '%d',   // attendees_available
-                                    '%f',   // total_base__charge
-                                    '%f',   // total_per_attendee
-                                    '%f',   // total_other
-                                    '%f',   // total_taxes
-                                    '%f',   // total_charges
-                                    '%f',   // total_discounts
-                                    '%f'    // total_payments
-                                )
-                                );
-
-                        } // If time isn't in reg_times
-                    } // each recurrence times
-                } // time specific
-            } // have times for recurrence
-
-        } // each recurrence
-
-        // If this is a time specific event
-        $deleteList = '';
-        $deleteSep = '';
-        if ($this->regEventData['time_specific']['value']) {
-
-            // Check all reg_times we had from before to make sure they were matched with a recur time
-            foreach($this->regEventData['reg_time'] as $regTimeKey=>$regTimeVal) {
-                if (!isset($regTimeVal['OK'])) {
-
-                    // If this time didn't match a recur time, then it must have been removed in the event so add to list
-                    $deleteList .= $deleteSep.$regTimeKey;
-                    $deleteSep = ',';
+                            }
+                            // If it wasn't found, then add it
+                            if (!$id) {
+
+                                $needTimesReloaded = true;
+                                $message .= "<br>    New dates and/or times have been added";
+
+                                $sTime = date('Y-m-d H:i:s',strtotime($eventTimeVal['start_time']['datetime']));
+                                $eTime = date('Y-m-d H:i:s',strtotime($eventTimeVal['end_time']['datetime']));
+
+                                // Add reg event time
+                                $this->wpdb->insert(
+                                    GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX."reg_time",
+                                    array(
+                                        'reg_event'             => $this->regEventData['id'],
+                                        'active'                => false,
+                                        'event_time'            => $eventTimeKey,
+                                        'start_datetime'        => $sTime,
+                                        'end_datetime'          => $eTime,
+                                        'all_day'               => $eventTimeVal['all_day']['value'],
+                                        'non_time_specific'     => false,
+                                        'attendees'             => $this->regEventData['attendees']['value'],
+                                        'attendee_max'          => $this->regEventData['attendee_max'],
+                                        'attendee_count'        => 0,
+                                        'attendees_pending'     => 0,
+                                        'attendees_available'   => $this->regEventData['attendee_max'],
+                                        'total_base_charge'     => 0,
+
+                                        'total_per_attendee'    => 0,
+                                        'total_other'           => 0,
+                                        'total_taxes'           => 0,
+                                        'total_charges'         => 0,
+                                        'total_discounts'       => 0,
+                                        'total_payments'        => 0
+                                    ),
+                                    array(
+                                        '%d',   // reg_event
+                                        '%d',   // event_time record ID
+                                        '%s',   // start_datetime
+                                        '%s',   // end_datetime
+                                        '%d',   // all_day flag
+                                        '%d',   // attendees flag
+                                        '%d',   // attendee_max
+                                        '%d',   // attendee_count
+                                        '%d',   // attendees_pending
+                                        '%d',   // attendees_available
+                                        '%f',   // total_base__charge
+                                        '%f',   // total_per_attendee
+                                        '%f',   // total_other
+                                        '%f',   // total_taxes
+                                        '%f',   // total_charges
+                                        '%f',   // total_discounts
+                                        '%f'    // total_payments
+                                    )
+                                    );
+
+                            } // If time isn't in reg_times
+                        } // each recurrence times
+                    } // time specific
+                } // have times for recurrence
+
+            } // each recurrence
+
+            // If this is a time specific event
+            $deleteList = '';
+            $deleteSep = '';
+            if ($this->regEventData['time_specific']['value']) {
+
+                // Check all reg_times we had from before to make sure they were matched with a recur time
+                foreach($this->regEventData['reg_time'] as $regTimeKey=>$regTimeVal) {
+                    if (!isset($regTimeVal['OK'])) {
+
+                        // If this time didn't match a recur time, then it must have been removed in the event so add to list
+                        $deleteList .= $deleteSep.$regTimeKey;
+                        $deleteSep = ',';
 
+                    }
                 }
+
             }
 
-        }
+            // If requested and there's anything in the delete list, purge them now and say we need a reload
+            if ($deleteTimes && $deleteList != '') {
+                $this->wpdb->query("
+                    DELETE FROM ".GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX."reg_time
+                     WHERE id IN ($deleteList)
+                ");
+                $needTimesReloaded = true;
+                $message .= '<br>    Old dates and/or times have been removed';
+            }
 
-        // If requested and there's anything in the delete list, purge them now and say we need a reload
-        if ($deleteTimes && $deleteList != '') {
-            $this->wpdb->query("
-                DELETE FROM ".GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX."reg_time
-                 WHERE id IN ($deleteList)
-            ");
-            $needTimesReloaded = true;
-            $message .= '<br>    Old dates and/or times have been removed';
-        }
+            // Get rid of all of the recurrence data - No longer needed
+            unset($this->regEventData['recurrences']);
 
-        // Get rid of all of the recurrence data - No longer needed
-        unset($this->regEventData['recurrences']);
 
-        // If not time specific
+        } // if time specific check
+
+        // If this event is not time specific
         if (!$this->regEventData['time_specific']['value']) {
 
             // Do we have default reg_time entry? (event_time is 0)
             $defTime = false;
             if (is_array($this->regEventData['reg_time'])) {
 
-                // Is there's a default entry for not time specific event? (might be others if time_specific had been selected before - they might switch back)
+                // Is there's a default entry for not time specific event?
                 $defTime = false;
                 foreach($this->regEventData['reg_time'] as $r) {
 
-                    if ($r['event_time'] == 0) {
+                    if ($r['non_time_specific']['value']) {
                         $defTime = $r;
                         break;
                     }
                 }
 
-                // Get rid of other time entries and just use this one
-                if ($defTime !== false) {
-                    $this->regEventData['reg_time'] = array();
-                    $this->regEventData['reg_time'][0] = $defTime;
-                }
 
             }
 
                     GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX."reg_time",
                     array(
                         'reg_event'             => $this->regEventData['id'],
+                        'active'                => true,
                         'event_time'            => 0,
                         'start_datetime'        => NULL,
                         'end_datetime'          => NULL,
                         'all_day'               => false,
+                        'non_time_specific'     => true,
                         'attendees'             => $this->regEventData['attendees']['value'],
                         'attendee_max'          => $this->regEventData['attendee_max'],
                         'attendee_count'        => 0,
 
                         <h3>First Event Time:</h3>
                     </div>
                     <div class="glm-small-12 glm-column time-input">
-                        {$regEventFirstTime.start_time.datetime}
+                        {$regEventFirstTime.datetime}
                     </div>
                 </div>
                 <div class="glm-row">
                         <h3>Last Event Time:</h3>
                     </div>
                     <div class="glm-small-12 glm-column">
-                        {$regEventLastTime.end_time.datetime}
+                        {$regEventLastTime.datetime}
                     </div>
                 </div>
             </div>
 <div class="glm-admin-table-inner glm-admin-table">
   {if $haveRegEvent}
     <p><h3>Dates and Availability</h3></p>
-
-   {if $regEvent.time_specific.value}
-
-    <p>Availability guide: (limit)-(registered)-(pending)-(available)</p>
-    <table id="glm-table-calendar" class="glm-admin-table glm-event-table">
-        <tr>
-            <td>
-                <div id="eventCalendar" style="width: 95%;"></div>
-            </td>
-        </tr>
-    </table>
-   {else}
     <p>Event occurs every day from first day to last day at the times shown.</p>
     <table>
       {foreach $regEvent.recurrenceSummary as $rs}
         <tr><th>Last Day of Event: </th><td>{$rs.lastTime.start_time.datetime} - {$rs.lastTime.end_time.datetime}</td></tr>
       {/foreach}
       {foreach $regEvent.reg_time as $rt}
+       {if $rt.non_time_specific.value}
         {if $rt.attendee_max == 0}
-        <tr><th colspan="2">Unlimited registration - Not maintaining available inventory.</th></tr>
-        {else}
+        <tr><th colspan="2">Unlimited registration - Set maximum attendees quantity below to limit registrations.</th></tr>
+        {/if}
         <tr><td colspan="2"> </td></tr>
         <tr><td colspan="2">Limited availability for this event - the below numbers are for all days.</td></tr>
         <tr><th style="text-align: left">Maximum Attendees:</th><td>
         <tr><th style="text-align: left">Registered Attendees:</th><td id="regAtt">{$rt.attendee_count}</td></tr>
         <tr><th style="text-align: left">Pending in Carts:</th><td id="pendAtt">{$rt.attendees_pending}</td></tr>
         <tr><th style="text-align: left">Available for Registration:</th><td id="availAtt">{$rt.attendees_available}</td></tr>
-        {/if}
+       {/if}
       {/foreach}
     </table>
-   {/if}
+    <p>Availability guide: (limit)-(registered)-(pending)-(available)</p>
+    <table id="glm-table-calendar" class="glm-admin-table glm-event-table">
+        <tr>
+            <td>
+                <div id="eventCalendar" style="width: 95%;"></div>
+            </td>
+        </tr>
+    </table>
+
+
   {else}
         <h3>Did not find selected event.</h3>
   {/if}
 
             var fullCalendarLoaded = false;
 
-            // If this is a time specific event, then display the calendar
-            if ({$regEvent.time_specific.value} +0) {
 
-                /*
-                 * Initialize the Full Calendar
-                 */
-                
-                function initFullCalendar(){
-                    $('#eventCalendar').fullCalendar({
-        {if $regEvent}
-                        // Add existing registration dates/times
-                        events: [
-                            {$sep = ''}
-          {if $haveRegEventTimes}
-               {foreach $regEvent.reg_time as $t}
-                            {$sep}{
-                              {if $t.attendee_max == 0}
-                                title:              'unlimited',
-                              {else}
-                                title:              '{$t.attendee_max}-{$t.attendee_count}-{$t.attendees_pending}-{$t.attendees_available}',
-                              {/if}
-                                start:              '{$t.start_datetime.datetime}',
-                                end:                '{$t.end_datetime.datetime}',
-                                active:             {if $t.active.value}true{else}false{/if},
-                              {if $t.active.value}
-                                backgroundColor:    'light-blue',
-                              {else}
+            /*
+             * Initialize the Full Calendar
+             */
+           
+            function initFullCalendar(){
+                $('#eventCalendar').fullCalendar({
+    {if $regEvent}
+                    // Add existing registration dates/times
+                    events: [
+                        {$sep = ''}
+      {if $haveRegEventTimes}
+       {foreach $regEvent.reg_time as $t}
+          {if $t.non_time_specific.value == false}
+                        {$sep}{
+                          {if $t.attendee_max == 0}
+                            title:              'unlimited',
+                          {else}
+                            title:              '{$t.attendee_max}-{$t.attendee_count}-{$t.attendees_pending}-{$t.attendees_available}',
+                          {/if}
+                            start:              '{$t.start_datetime.datetime}',
+                            end:                '{$t.end_datetime.datetime}',
+                            active:             {if $t.active.value}true{else}false{/if},
+                          {if $t.active.value}
+                            backgroundColor:    'light-blue',
+                          {else}
+                            backgroundColor:    '#aaa',
+                          {/if}
+                            allday:             {$t.all_day.value},
+                            attendees:          {if $t.attendees.value}true{else}false{/if},
+                            max:                {$t.attendee_max},
+                            count:              {$t.attendee_count},
+                            pending:            {$t.attendees_pending},
+                            available:          {$t.attendees_available},
+                            datetime:           '{$t.start_datetime.datetime}',
+                            timeid:             {$t.id}
+                        }
+                        {$sep = ','}
+          {/if}
+        {/foreach}
+      {/if}
+                    ],
+                    // Clicking on a date cell (not a reg event) Brings up the new reg event dialog
+                    dayClick: function(date, allDay, jsEvent, view) {
+
+                        $('#dialogAvailSubmit').off('click');           
+                        
+                        $('#availabilityTitle').html('Create New: '+date.format());
+                        $('#availabilityEditDialog').dialog('open');
+                        $('#dialogRegActive').prop('checked', true);
+                        $('#dialogTimeAllDay').prop('checked', false);
+                        $('#dialogAttendees').prop('checked', true);
+                        $('#dialogStartTime').val('');
+                        $('#dialogEndTime').val('');
+                        $('#dialogMaxAtt').val(0);
+                        $('#dialogRegLine').hide();
+                        $('#dialogPendLine').hide();
+                        $('#dialogAvailLine').hide();
+                        $('#dialogAvailSubmit').on('click', function() {
+
+                            // Submit clicked 
+                            var max = $('#dialogMaxAtt').val();
+                            var startDate = new Date($('#dialogStartTime').val());
+                            var startTime = $('#dialogStartTime').val();
+
+                            // Initialize the event data object with submitted data 
+                            var newEvent = {
+                                title:              startTime + ' unlimited',
+                                start:              date.format() + ' ' + startTime,
+                                end:                date.format() + ' ' + $('#dialogEndTime').val(),
+                                active:             $('#dialogRegActive').is(":checked"),
                                 backgroundColor:    '#aaa',
-                              {/if}
-                                allday:             {$t.all_day.value},
-                                attendees:          {if $t.attendees.value}true{else}false{/if},
-                                max:                {$t.attendee_max},
-                                count:              {$t.attendee_count},
-                                pending:            {$t.attendees_pending},
-                                available:          {$t.attendees_available},
-                                datetime:           '{$t.start_datetime.datetime}',
-                                timeid:             {$t.id}
+                                allDay:             $('#dialogTimeAllDay').is(':checked'),
+                                attendees:          $('#dialogAttendees').is(':checked'),          
+                                max:                max,
+                                count:              0,
+                                pending:            0,
+                                available:          max,
+                                timeId:             false                                
+                            };
+
+                            // If max or active is set, override the defaults
+                            if (newEvent.max > 0 ) {
+                                newEvent.title = startTime + ' ' + newEvent.max + '-0-0-' + newEvent.max
+                            }
+                            if (newEvent.active) {
+                                newEvent.backgroundColor = 'light-blue';
                             }
-                            {$sep = ','}
-            {/foreach}
-          {/if}
-                        ],
-                        // Clicking on a date cell (not a reg event) Brings up the new reg event dialog
-                        dayClick: function(date, allDay, jsEvent, view) {
-
-                            $('#dialogAvailSubmit').off('click');           
-                            
-                            $('#availabilityTitle').html('Create New: '+date.format());
-                            $('#availabilityEditDialog').dialog('open');
-                            $('#dialogRegActive').prop('checked', true);
-                            $('#dialogTimeAllDay').prop('checked', false);
-                            $('#dialogAttendees').prop('checked', true);
-                            $('#dialogStartTime').val('');
-                            $('#dialogEndTime').val('');
-                            $('#dialogMaxAtt').val(0);
-                            $('#dialogRegLine').hide();
-                            $('#dialogPendLine').hide();
-                            $('#dialogAvailLine').hide();
-                            $('#dialogAvailSubmit').on('click', function() {
-
-                                // Submit clicked 
-                                var max = $('#dialogMaxAtt').val();
-                                var startDate = new Date($('#dialogStartTime').val());
-                                var startTime = $('#dialogStartTime').val();
-
-                                // Initialize the event data object with submitted data 
-                                var newEvent = {
-                                    title:              startTime + ' unlimited',
-                                    start:              date.format() + ' ' + startTime,
-                                    end:                date.format() + ' ' + $('#dialogEndTime').val(),
-                                    active:             $('#dialogRegActive').is(":checked"),
-                                    backgroundColor:    '#aaa',
-                                    allDay:             $('#dialogTimeAllDay').is(':checked'),
-                                    attendees:          $('#dialogAttendees').is(':checked'),          
-                                    max:                max,
-                                    count:              0,
-                                    pending:            0,
-                                    available:          max,
-                                    timeId:             false                                
-                                };
-
-                                // If max or active is set, override the defaults
-                                if (newEvent.max > 0 ) {
-                                    newEvent.title = startTime + ' ' + newEvent.max + '-0-0-' + newEvent.max
-                                }
-                                if (newEvent.active) {
-                                    newEvent.backgroundColor = 'light-blue';
-                                }
-
-                                // Try to send the data via AJAX
-                                var newTime = $.ajax({
-                                    
-                                    url: "{$ajaxUrl}",
-                                    method: "POST",
-                                    data: {
-                                        action:         "glm_members_admin_ajax",
-                                        glm_action:     "updateAvailability",
-                                        event:          {$regEvent.id},
-                                        newTime:        "true",
-                                        active:         newEvent.active,
-                                        allDay:         newEvent.allDay,
-                                        attendees:      newEvent.attendees,
-                                        start:          newEvent.start,
-                                        end:            newEvent.end,
-                                        max:            newEvent.max
-                                    },
-                                    dataType: "text"
-                                        
-                                }).done( function(newTimeId) {
-
-                                    // If response was not a possible time ID
-                                    newEvent.timeId = parseInt(newTimeId);
 
-                                    if (newEvent.timeId == '0') {
-                                        alert('New event date/time may not have been stored properly. Reload page to check.');
-                                    } else {
-                                        // Should have good time ID, so add it to the calendar
-                                        $('#eventCalendar').fullCalendar('renderEvent', newEvent, true);
-                                    }
-                                    
-                                    $('#availabilityEditDialog').dialog('close');           
-                                    $('#dialogAvailSubmit').off('click');           
+                            // Try to send the data via AJAX
+                            var newTime = $.ajax({
+                                
+                                url: "{$ajaxUrl}",
+                                method: "POST",
+                                data: {
+                                    action:         "glm_members_admin_ajax",
+                                    glm_action:     "updateAvailability",
+                                    event:          {$regEvent.id},
+                                    newTime:        "true",
+                                    active:         newEvent.active,
+                                    allDay:         newEvent.allDay,
+                                    attendees:      newEvent.attendees,
+                                    start:          newEvent.start,
+                                    end:            newEvent.end,
+                                    max:            newEvent.max
+                                },
+                                dataType: "text"
                                     
-                                });
+                            }).done( function(newTimeId) {
 
-                            });
-
-                        },
-                        eventMouseover : function(event, jsEvent, view) {
-                            $('.fc-event').css( 'cursor', 'pointer' );
-                        },
-                        defaultDate : '{$regEventFirstTime.start_time.datetime}',
-                        timeFormat  : 'h:mma',
-                        fixedWeekCount : false,
-                        eventClick: function(calEvent, jsEvent, view) {
-
-                            $('#dialogAvailSubmit').off('click');  
-                            
-                            $("#occurrences").dialog();
-                            $(this).css('border-color', 'red');
+                                // If response was not a possible time ID
+                                newEvent.timeId = parseInt(newTimeId);
 
-                            $('#availabilityEditDialog').dialog('open');
-
-                            $('#dialogAllDayLine').hide();
-                            $('#dialogTrackLine').hide();
-                            $('#dialogStartTimeLine').hide();
-                            $('#dialogEndTimeLine').hide();
-                            
-                            $('#availabilityTitle').html(calEvent.datetime);
-                            $('#dialogRegActive').prop('checked', calEvent.active);
-                            $('#dialogTimeAllDay').prop('checked', calEvent.allDay);
-                            $('#dialogStartTime').val(calEvent.start);
-                            $('#dialogEndTime').val(calEvent.end);
-                            $('#dialogMaxAtt').val(calEvent.max);
-                            $('#dialogRegLine').show();
-                            $('#dialogRegAtt').html(calEvent.count);
-                            $('#dialogPendLine').show();
-                            $('#dialogPendAtt').html(calEvent.pending);
-                            $('#dialogAvailLine').show();
-                            $('#dialogAvailAtt').html(calEvent.available);
-                            $('#dialogAvailSubmit').attr('data-timeid', calEvent.timeid);
-                            // Re-calculate total available when entering
-
-                            $('#dialogMaxAtt').on('change', function() {
-                                var max = $('#dialogMaxAtt').val();
-                                max = max -0;
-                                var available = max - calEvent.count - calEvent.pending;
-                                if (available < 0) {
-                                    max = max - available;
-                                    $('#dialogMaxAtt').val(max);
-                                    available = 0;
-                                }
-                                calEvent.available = available;
-                                $('#dialogAvailAtt').html(available);
-                                $('#dialogMaxAtt').off('change');
-                            });
-                            
-                            $('#dialogAvailSubmit').on('click', function() {
-
-                                var checked = $('#dialogRegActive').is(":checked");
-                                calEvent.active = checked;
-                                if (checked) {
-                                    calEvent.backgroundColor = 'light-blue';
+                                if (newEvent.timeId == '0') {
+                                    alert('New event date/time may not have been stored properly. Reload page to check.');
                                 } else {
-                                    calEvent.backgroundColor = '#aaa';
+                                    // Should have good time ID, so add it to the calendar
+                                    $('#eventCalendar').fullCalendar('renderEvent', newEvent, true);
                                 }
-                                var max = $('#dialogMaxAtt').val();
-                                var timeid = $('#dialogAvailSubmit').attr('data-timeid');
-                                $.ajax({
-                                    url: "{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=updateAvailability&newTime=false&active=" + checked + "&max=" + max + "®_time=" + timeid
-                                });
+                                
                                 $('#availabilityEditDialog').dialog('close');           
                                 $('#dialogAvailSubmit').off('click');           
                                 
-                                calEvent.title = max + '-' + calEvent.count + '-' + calEvent.pending + '-' + calEvent.available;
-                                $('#eventCalendar').fullCalendar('updateEvent', calEvent);      
                             });
 
-                                            
-                        }
-        {/if}
-                    });
-                }
+                        });
 
-                       initFullCalendar();
+                    },
+                    eventMouseover : function(event, jsEvent, view) {
+                        $('.fc-event').css( 'cursor', 'pointer' );
+                    },
+                    defaultDate : '{$defaultCalDate}',
+                    timeFormat  : 'h:mma',
+                    fixedWeekCount : false,
+                    eventClick: function(calEvent, jsEvent, view) {
+
+                        $('#dialogAvailSubmit').off('click');  
+                        
+                        $("#occurrences").dialog();
+                        $(this).css('border-color', 'red');
+
+                        $('#availabilityEditDialog').dialog('open');
+
+                        $('#dialogAllDayLine').hide();
+                        $('#dialogTrackLine').hide();
+                        $('#dialogStartTimeLine').hide();
+                        $('#dialogEndTimeLine').hide();
+                        
+                        $('#availabilityTitle').html(calEvent.datetime);
+                        $('#dialogRegActive').prop('checked', calEvent.active);
+                        $('#dialogTimeAllDay').prop('checked', calEvent.allDay);
+                        $('#dialogStartTime').val(calEvent.start);
+                        $('#dialogEndTime').val(calEvent.end);
+                        $('#dialogMaxAtt').val(calEvent.max);
+                        $('#dialogRegLine').show();
+                        $('#dialogRegAtt').html(calEvent.count);
+                        $('#dialogPendLine').show();
+                        $('#dialogPendAtt').html(calEvent.pending);
+                        $('#dialogAvailLine').show();
+                        $('#dialogAvailAtt').html(calEvent.available);
+                        $('#dialogAvailSubmit').attr('data-timeid', calEvent.timeid);
+                        // Re-calculate total available when entering
+
+                        $('#dialogMaxAtt').on('change', function() {
+                            var max = $('#dialogMaxAtt').val();
+                            max = max -0;
+                            var available = max - calEvent.count - calEvent.pending;
+                            if (available < 0) {
+                                max = max - available;
+                                $('#dialogMaxAtt').val(max);
+                                available = 0;
+                            }
+                            calEvent.available = available;
+                            $('#dialogAvailAtt').html(available);
+                            $('#dialogMaxAtt').off('change');
+                        });
+                        
+                        $('#dialogAvailSubmit').on('click', function() {
+
+                            var checked = $('#dialogRegActive').is(":checked");
+                            calEvent.active = checked;
+                            if (checked) {
+                                calEvent.backgroundColor = 'light-blue';
+                            } else {
+                                calEvent.backgroundColor = '#aaa';
+                            }
+                            var max = $('#dialogMaxAtt').val();
+                            var timeid = $('#dialogAvailSubmit').attr('data-timeid');
+                            $.ajax({
+                                url: "{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=updateAvailability&newTime=false&active=" + checked + "&max=" + max + "®_time=" + timeid
+                            });
+                            $('#availabilityEditDialog').dialog('close');           
+                            $('#dialogAvailSubmit').off('click');           
+                            
+                            calEvent.title = max + '-' + calEvent.count + '-' + calEvent.pending + '-' + calEvent.available;
+                            $('#eventCalendar').fullCalendar('updateEvent', calEvent);      
+                        });
 
-            } else {
+                                        
+                    }
+    {/if}
+                });
+            }
+            initFullCalendar();
 
+            // If not date/time specific then we need to add the data for the non-date-specific time entry.
+            if (!{$regEvent.time_specific.value}) {
+                    
                 // Not date specific so do one counts update form
                 $('#maxAtt').on('change', function() {
                     var max = $('#maxAtt').val();
                     var time = $('#availSubmit').attr('data-timeid');
                     
                     $.ajax({
-                        url: "{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=updateAvailability&max=" + max + "®_time=" + time
+                        url: "{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=updateAvailability&newTime=false&active=true&max=" + max + "®_time=" + time
                     });
                     $("#submit-flash").fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500);
                 });