diff --git a/office_hours.elements.inc b/office_hours.elements.inc
index 76b9155..fe75486 100644
--- a/office_hours.elements.inc
+++ b/office_hours.elements.inc
@@ -60,12 +60,15 @@ function office_hours_field_process($element, $edit, $form_state, $form) {
     '#type' => 'value',
     '#value' => $day,
   );
+ 
   $element[$field_strhrs] = array(
     '#type' => 'office_hours_select',
     '#title' => t('from'),
     '#default_hours' => isset($element['#value'][$field_strhrs]) ? $element['#value'][$field_strhrs] : '' ,
     '#granularity' => $field['granularity'],
     '#hoursformat' => $field['hoursformat'],
+    '#limitstart' => $field['limitstart'],
+    '#limitend' => $field['limitend'],
   );
   $element[$field_endhrs] = array(
     '#type' => 'office_hours_select',
@@ -73,6 +76,8 @@ function office_hours_field_process($element, $edit, $form_state, $form) {
     '#default_hours' => isset($element['#value'][$field_endhrs]) ? $element['#value'][$field_endhrs] : '',
     '#granularity' => $field['granularity'],
     '#hoursformat' => $field['hoursformat'],
+    '#limitstart' => $field['limitstart'],
+    '#limitend' => $field['limitend'],
   );
 
   $form_state['#field_info'][$field['field_name']] = $field;
@@ -88,31 +93,16 @@ function office_hours_select_process($element, $edit, $form_state, $form) {
   $defhr = '';
   $defmin = '';
   if (is_numeric($element['#default_hours'])) {
-    $hour = _office_hours_mil_to_tf($element['#default_hours']);
-    list($defhr, $defmin) = explode(":", $hour);
-    if ($element['#hoursformat']) {
-      if ($defhr >= 12) {
-        $defhr -= ($defhr != 12) ? 12 : 0;
-        $ampm = 'pm';
-      }
-      elseif ($defhr == 0) {
-        $defhr +=12;
-      }
-    }
-    else {
-      $defhr = str_pad($defhr, 2, '0', STR_PAD_LEFT);
-    }
+    list($defhr,$defmin,$ampm) = _office_hours_return_defaults($element['#default_hours'], $element['#hoursformat']);
   }
-  
   $hours = ($element['#hoursformat'] == 1) ? date_hours('g') : date_hours('H');
+  $hours = _office_hours_limit_hours($hours,$element['#limitstart'],$element['#limitend']);
   $minutes = date_minutes('i', FALSE, $element['#granularity']);
-
   $element['hours'] = array(
     '#type' => 'select',
     '#options' => drupal_map_assoc($hours),
     '#default_value' => isset($defhr) ? $defhr : 0,
   );
-
   $element['minutes'] = array(
     '#type' => 'select',
     '#options' => drupal_map_assoc($minutes),
@@ -132,10 +122,8 @@ function office_hours_select_process($element, $edit, $form_state, $form) {
  * Validate the hours selector element.
  */
 function office_hours_select_validate($element, &$form_state) {
-  //$hour = $element['#value']['hours'];
   $hour = $element['hours']['#value'];
   $minutes = ($element['minutes']['#value'] == 0) ? '00' : $element['minutes']['#value'];
-  //$minutes = ($element['#value']['minutes'] == 0) ? '00' : $element['#value']['minutes'];
   if ($element['#hoursformat']) {
     if ($element['ampm']['#value'] == 'pm' && $hour < 12) $hour += 12;
     if ($element['ampm']['#value'] == 'am' && $hour == 12) $hour = '00';
@@ -153,4 +141,3 @@ function office_hours_select_validate($element, &$form_state) {
     form_error($element, t('Minutes should be between 0 and 59.'));
   }
 }
-
diff --git a/office_hours.module b/office_hours.module
index 815ce99..0252874 100644
--- a/office_hours.module
+++ b/office_hours.module
@@ -110,7 +110,9 @@ function office_hours_field_info() {
 function office_hours_field_settings($op, $field) {
   switch ($op) {
     case 'form':
-    //$options = _office_hours_create_hours_arr($field, FALSE);
+      if (is_numeric($element['#default_hours'])) {
+        list($defhr,$defmin,$ampm) = _office_hours_return_defaults($element['#default_hours'], $field['#hoursformat']);
+      }
       $form = array();
       $form['hoursformat'] = array(
         '#type' => 'select',
@@ -120,6 +122,7 @@ function office_hours_field_settings($op, $field) {
         '#required' => FALSE,
         '#description' => t('Format of the clock. IMPORTANT NOTE: if you do not select "Multiple values", you can enter only one day.'),
       );
+      
       $form['granularity'] = array(
         '#type' => 'select',
         '#title' => t('Granularity of time'),
@@ -128,22 +131,23 @@ function office_hours_field_settings($op, $field) {
         '#required' => FALSE,
         '#description' => t('Restrict the input to fixed fractions of an hour.'),
       );
+
       $form['limitstart'] = array(
-        '#type' => 'office_hours_select',
-        '#title' => t('Limit widget start hours'),
-        '#default_value' => '', //$field['limitstart']? $field['limitstart'] : '',
-        '#granularity' => $field['granularity'],
-        '#hoursformat' => $field['hoursformat'],
-        '#prefix' => '<div class="office-hours-block" style="display:inline">',
+        '#type' => 'select',
+        '#title' => t('Limit widget hours - start from'),
+        '#description' => t('Restrict the hours available - select options will start from this hour'),
+        '#default_value' => !empty($field['limitstart']) ? $field['limitstart'] : '',
+        '#options' => _office_hours_show_ampm(date_hours('H')), 
       );
+
       $form['limitend'] = array(
-        '#type' => 'office_hours_select',
-        '#title' => t('Limit widget end hours'),
-        '#default_hours' => '', //$field['limitend']? $field['limitend'] : '',
-        '#granularity' => $field['granularity'],
-        '#hoursformat' => $field['hoursformat'],
-        '#suffix' => '</div>',
+        '#type' => 'select',
+        '#title' => t('Limit widget hours - until'),
+        '#description' => t('Restrict the hours available - select options will end at this hour'),
+        '#default_value' => !empty($field['limitend']) ? $field['limitend'] : '',
+        '#options' => _office_hours_show_ampm(date_hours('H')),
       );
+
       $form['valhrs'] = array(
         '#type' => 'checkbox',
         '#title' => t('Validate hours'),
@@ -151,6 +155,7 @@ function office_hours_field_settings($op, $field) {
         '#default_value' => isset($field['valhrs']) ? $field['valhrs'] : 0,
         '#description' => t('Please note that this will work as long as the opening hours are not through midnight.'),
       );
+
       $form['addhrs'] = array(
         '#type' => 'checkbox',
         '#title' => t('Display the "Add more hours" link'),
@@ -158,6 +163,7 @@ function office_hours_field_settings($op, $field) {
         '#default_value' => isset($field['addhrs']) ? $field['addhrs'] : 1,
         '#description' => t('Make it possible to use 2 hour block for each day instead of one'),
       );
+      
       $form['showclosed'] = array(
         '#type' => 'checkbox',
         '#title' => t('Show empty days'),
@@ -169,7 +175,7 @@ function office_hours_field_settings($op, $field) {
 
     case 'validate':
       if ($field['limitend'] <= $field['limitstart'] && !empty($field['limitend']) && !empty($field['limitstart'])) {
-	form_set_error('limitend', 'Limit ending hours are earlier than start hours');
+        form_set_error('limitend', 'Limit ending hours are earlier than start hours');
       }
       break;
 
@@ -183,7 +189,7 @@ function office_hours_field_settings($op, $field) {
         'endhours' => array('type' => 'int', 'not null' => FALSE, 'sortable' => TRUE),
       );
       return $columns;
-      break;
+    break;
 
     case 'views data':
       $data = _office_hours_views_field_views_data($field);
@@ -194,7 +200,7 @@ function office_hours_field_settings($op, $field) {
       $data[$table_alias][$field['field_name'] . '_starthours']['filter']['handler'] = 'office_hours_handler_filter_hours';
       $data[$table_alias][$field['field_name'] . '_endhours']['filter']['handler'] = 'content_handler_handler_filter_hours';
       return $data;
-      break;
+    break;
   }
 }
 
@@ -290,6 +296,15 @@ function office_hours_views_api() {
   );
 }
 
+function _office_hours_show_ampm($hours) {
+  foreach($hours as $key=> $hour) {
+   if (!empty($hour)) {
+      $hours[$key] = $hour. ":00 ("._office_hours_convert_to_ampm($hour).")";
+    }
+  }
+  return $hours;
+}
+
 function _office_hours_arrange_day($items) {
   $first = variable_get('date_first_day', 0);
     while ($first > 0) :
@@ -330,6 +345,16 @@ function _office_hours_convert_to_ampm($hour) {
   return $hr . ':' . $min . $ampm;
 }
 
+function _office_hours_limit_hours($hours, $limitstart=0,$limitend=25) {
+  $limitedhours[] = '';
+  foreach($hours as $key=> $hour) {
+   if ($hour>=$limitstart && $hour<=$limitend) {
+      $limitedhours[$key] = $hour;
+    }
+  }
+  return $limitedhours;
+}
+
 function _office_hours_tf_to_mil($hour) {
   if (strstr($hour, ':') == FALSE || is_null($hour)) {
     return $hour;
@@ -339,7 +364,26 @@ function _office_hours_tf_to_mil($hour) {
   return $hr;
 }
 
+function _office_hours_return_defaults($default, $format = 0) {
+  $hour = _office_hours_mil_to_tf($default);
+  list($defhr, $defmin) = explode(":", $hour);
+  if ($format) {
+    if ($defhr >= 12) {
+        $defhr -= ($defhr != 12) ? 12 : 0;
+        $ampm = 'pm';
+      }
+      elseif ($defhr == 0) {
+        $defhr +=12;
+      }
+  }
+  else {
+    $defhr = str_pad($defhr, 2, '0', STR_PAD_LEFT);
+  }
+return array($defhr,$defmin,$ampm);
+}
+
 function _office_hours_mil_to_tf($time = '') {
+  if (strlen($time) == 2) $time = $time.'00';
   $hour = (substr($time, 0, -2)) ? substr($time, 0, -2): '0';
   $min = (substr($time, -2)) ? substr($time, -2): '00';
   return $hour . ":" . $min;
@@ -491,4 +535,4 @@ function _office_hours_views_field_views_data($field) {
     }
     // TODO: provide automatic filters, sorts, and arguments for each column, not just the first?
     return array($table_alias => $data);
-}
\ No newline at end of file
+}
