/**
  * Sanitize and validate Schedule settings
  *
  * @param unknown_type $input
  * @return boolean
  */
 public static function sanitize_schedule_settings($input)
 {
     // from server or to user - get_date_from_gmt
     // from user or to server  	get_gmt_from_date
     $schedule_start_date = null;
     if (isset($input[HA_Common::SCHEDULED_START_DATE_OPTION]) && strlen($input[HA_Common::SCHEDULED_START_DATE_OPTION]) > 0) {
         if (HA_Common::check_date_format($input[HA_Common::SCHEDULED_START_DATE_OPTION]) == false) {
             add_settings_error(HA_Common::SCHEDULE_SETTINGS_KEY, 'schedule_start_date_error', 'Scheduled start date invalid format', 'error');
             $input[HA_Common::SCHEDULED_START_DATE_OPTION] = '';
         } else {
             list($year, $month, $day) = explode('-', $input[HA_Common::SCHEDULED_START_DATE_OPTION]);
             // default yyyy-mm-dd format
             // add time part
             $scheduled_start_time_part = $_POST['scheduled_start_time_part'];
             $hour = 0;
             $minute = 0;
             if (!preg_match("/([01]?[0-9]|2[0-3]):([0-5][0-9])/", $scheduled_start_time_part)) {
                 add_settings_error(HA_Common::SCHEDULE_SETTINGS_KEY, 'scheduled_start_time_part_invalid_format_error', 'Invalid scheduled start time format. Time must be in 24 hour format HH:mm (i.e. 12:30).', 'error');
                 // Default to 0, 0, 0
             } else {
                 // set time parts
                 list($hour, $minute) = explode(':', $scheduled_start_time_part);
             }
             $schedule_start_date = get_gmt_from_date(date("Y-m-d H:i:s", gmmktime($hour, $minute, 0, $month, $day, $year)));
             $today = get_gmt_from_date(get_date_from_gmt(date("Y-m-d H:i:s")));
             if (strtotime($schedule_start_date) <= strtotime($today)) {
                 add_settings_error(HA_Common::SCHEDULE_SETTINGS_KEY, 'schedule_start_date_past_error', 'Scheduled start date must be in the future', 'error');
                 $input[HA_Common::SCHEDULED_START_DATE_OPTION] = '';
             }
             $input[HA_Common::SCHEDULED_START_DATE_OPTION] = $schedule_start_date;
         }
     } else {
         $input[HA_Common::SCHEDULED_START_DATE_OPTION] = "";
     }
     if (isset($input[HA_Common::SCHEDULED_END_DATE_OPTION]) && strlen($input[HA_Common::SCHEDULED_END_DATE_OPTION]) > 0) {
         if (HA_Common::check_date_format($input[HA_Common::SCHEDULED_END_DATE_OPTION]) == false) {
             add_settings_error(HA_Common::SCHEDULE_SETTINGS_KEY, 'schedule_end_date_error', 'Scheduled end date invalid format', 'error');
             $input[HA_Common::SCHEDULED_START_DATE_OPTION] = '';
         } else {
             list($year, $month, $day) = explode('-', $input[HA_Common::SCHEDULED_END_DATE_OPTION]);
             // default yyyy-mm-dd format
             // add time part
             $scheduled_end_time_part = $_POST['scheduled_end_time_part'];
             $hour = 23;
             $minute = 59;
             if (!preg_match("/([01]?[0-9]|2[0-3]):([0-5][0-9])/", $scheduled_end_time_part)) {
                 add_settings_error(HA_Common::SCHEDULE_SETTINGS_KEY, 'scheduled_end_time_part_invalid_format_error', 'Invalid scheduled end time format. Time must be in 24 hour format HH:mm (i.e. 12:30).', 'error');
                 // Default to 0, 0, 0
             } else {
                 // set time parts
                 list($hour, $minute) = explode(':', $scheduled_end_time_part);
             }
             $schedule_end_date = get_gmt_from_date(date("Y-m-d H:i:s", gmmktime($hour, $minute, 0, $month, $day, $year)));
             $today = get_gmt_from_date(get_date_from_gmt(date("Y-m-d H:i:s")));
             if (strtotime($schedule_end_date) <= strtotime($today)) {
                 add_settings_error(HA_Common::SCHEDULE_SETTINGS_KEY, 'schedule_end_date_past_error', 'Scheduled end date must be in the future', 'error');
                 $input[HA_Common::SCHEDULED_END_DATE_OPTION] = '';
             } else {
                 if ($schedule_start_date != null && strtotime($schedule_end_date) <= strtotime($schedule_start_date)) {
                     add_settings_error(HA_Common::SCHEDULE_SETTINGS_KEY, 'schedule_end_date_after_start_date_error', 'Scheduled end date must be after the scheduled start date', 'error');
                     $input[HA_Common::SCHEDULED_END_DATE_OPTION] = '';
                 }
             }
             $input[HA_Common::SCHEDULED_END_DATE_OPTION] = $schedule_end_date;
         }
     } else {
         $input[HA_Common::SCHEDULED_END_DATE_OPTION] = "";
     }
     return $input;
 }