diff -up --strip-trailing-cr original/location.inc neu/location.inc
--- location.inc	2007-08-02 03:57:26.000000000 +0200
+++ location.inc	2007-09-28 13:41:58.710592000 +0200
@@ -230,7 +230,7 @@ function location_distance_between($latl
  */
 function location_form($fields = array(), $prefilled_values = array(), $required_fields = array(), $suppressed_values = array(), $description = '', $function = NULL) {
   if (count($fields) == 0) {
-    $fields = array('name', 'street', 'city', 'province', 'postal_code', 'country');
+    $fields = array('name', 'street', 'additional', 'quarter', 'city', 'county', 'province', 'postal_code', 'country');
   }
 
   $form = array();
@@ -260,12 +260,26 @@ function location_form($fields = array()
         '#maxlength' => 64,
         '#required' => in_array('street', $required_fields)
         );
-    $form['additional'] = array(
+    if (in_array('additional', $fields)) {
+      $form['additional'] = array(
+          '#type' => 'textfield',
+          '#title' => t('Additional'),
+          '#default_value' => isset($prefilled_values['additional']) ? $prefilled_values['additional'] : '',
+          '#size' => 64,
+          '#maxlength' => 64
+          );
+     }
+  }
+  if (in_array('quarter', $fields)) {
+    $form['quarter'] = array(
         '#type' => 'textfield',
-        '#title' => t('Additional'),
-        '#default_value' => isset($prefilled_values['additional']) ? $prefilled_values['additional'] : '',
+        '#title' => t('City quarter'),
+        '#default_value' => isset($prefilled_values['quarter']) ? $prefilled_values['quarter'] : '',
         '#size' => 64,
-        '#maxlength' => 64
+        '#maxlength' => 64,
+        '#description' => NULL,
+        '#attributes' => NULL,
+        '#required' => in_array('quarter', $required_fields)
         );
   }
   if (in_array('city', $fields)) {
@@ -280,6 +294,18 @@ function location_form($fields = array()
         '#required' => in_array('city', $required_fields)
         );
   }
+  if (in_array('county', $fields)) {
+    $form['county'] = array(
+        '#type' => 'textfield',
+        '#title' => t('County'),
+        '#default_value' => isset($prefilled_values['county']) ? $prefilled_values['county'] : '',
+        '#size' => 64,
+        '#maxlength' => 64,
+        '#description' => NULL,
+        '#attributes' => NULL,
+        '#required' => in_array('county', $required_fields)
+        );
+  }  
   if (in_array('province', $fields)) {
     if (in_array('province', array_keys($suppressed_values))) {
       $form['province'] = array(
diff -up --strip-trailing-cr original/location.module neu/location.module
--- location.module	2007-08-23 03:09:16.000000000 +0200
+++ location.module	2007-09-28 13:43:24.724273600 +0200
@@ -342,7 +342,7 @@ function location_map_link_options_form(
 
 
 function location_field_names() {
-  return array('name' => t('Location name'), 'street' => t('Street location'), 'city' => t('City'), 'province' => t('State/Province'), 'postal_code' => t('Postal code'), 'country' => t('Country'));
+  return array('name' => t('Location name'), 'street' => t('Street location'), 'additional' => t('Street additional'), 'quarter' => t('City quarter'), 'city' => t('City'), 'county' => t('County'), 'province' => t('State/Province'), 'postal_code' => t('Postal code'), 'country' => t('Country'));
 }
 
 function location_geocoding_parameters_page($country_iso, $service) {
@@ -624,6 +624,20 @@ function location_form_alter($form_id, &
       '#default_value' => variable_get('location_street_'. $type, $default),
       '#options' => array(t('Do not collect a street location for content of this type.'), t('Allow street locations to be submitted for content of this type.'), t('Require street locations to be submitted for content of this type.'))
     );
+
+    $form['location']['location_additional'] = array(
+      '#type' => 'radios',
+      '#title' => t('Street locations additional (only shown if street names are shown)'),
+      '#default_value' => variable_get('location_additional_'. $type, $default),
+      '#options' => array(t('Do not collect a additional street information for content of this type.'), t('Allow additional street information to be submitted for content of this type.'))
+    );
+
+    $form['location']['location_quarter'] = array(
+      '#type' => 'radios',
+      '#title' => t('City quarter'),
+      '#default_value' => variable_get('location_quarter_'. $type, 0),
+      '#options' => array(t('Do not collect city quarter names for content of this type.'), t('Allow city quarter names to be submitted for content of this type.'), t('Require city quarter names to be submitted for content of this type.'))
+    );
     
     $form['location']['location_city'] = array(
       '#type' => 'radios',
@@ -631,6 +645,13 @@ function location_form_alter($form_id, &
       '#default_value' => variable_get('location_city_'. $type, 0),
       '#options' => array(t('Do not collect city names for content of this type.'), t('Allow city names to be submitted for content of this type.'), t('Require city names to be submitted for content of this type.'))
     );
+
+    $form['location']['location_county'] = array(
+      '#type' => 'radios',
+      '#title' => t('County'),
+      '#default_value' => variable_get('location_county_'. $type, 0),
+      '#options' => array(t('Do not collect county names for content of this type.'), t('Allow county names to be submitted for content of this type.'), t('Require county names to be submitted for content of this type.'))
+    );
     
     $form['location']['location_province'] = array(
       '#type' => 'radios',
@@ -1505,14 +1526,16 @@ function _location_save($posted_location
   
     if (isset($posted_location['lat']) && isset($posted_location['lon'])) {
        db_query("DELETE FROM {location} WHERE lid = %d", $lid);
-       db_query("INSERT INTO {location} (lid, type, eid, name, street, additional, city, province, postal_code, country, latitude, longitude, source) VALUES (%d, '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%f', '%f', %d)",
+       db_query("INSERT INTO {location} (lid, type, eid, name, street, additional, quarter, city, county, province, postal_code, country, latitude, longitude, source) VALUES (%d, '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%f', '%f', %d)",
               $lid,
               $type, 
               $user_or_node->$field, 
               (!isset($posted_location['name']) || is_null($posted_location['name'])) ? '' : $posted_location['name'],
               (!isset($posted_location['street']) || is_null($posted_location['street'])) ? '' : $posted_location['street'],
               (!isset($posted_location['additional']) || is_null($posted_location['additional'])) ? '' : $posted_location['additional'],
+              (!isset($posted_location['quarter']) || is_null($posted_location['quarter'])) ? '' : $posted_location['quarter'],
               (!isset($posted_location['city']) || is_null($posted_location['city'])) ? '' : $posted_location['city'],
+              (!isset($posted_location['county']) || is_null($posted_location['county'])) ? '' : $posted_location['county'],
               (!isset($posted_location['province']) || is_null($posted_location['province'])) ? '' : $posted_location['province'],
               (!isset($posted_location['postal_code']) || is_null($posted_location['postal_code'])) ? '' : $posted_location['postal_code'],
               (!isset($posted_location['country']) || is_null($posted_location['country'])) ? NULL : $posted_location['country'],
@@ -1523,14 +1546,16 @@ function _location_save($posted_location
     }
     else {
       db_query("DELETE FROM {location} WHERE lid = %d", $lid);
-      db_query("INSERT INTO {location} (lid, type, eid, name, street, additional, city, province, postal_code, country, source) VALUES (%d, '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d)",
+      db_query("INSERT INTO {location} (lid, type, eid, name, street, additional, quarter, city, county, province, postal_code, country, source) VALUES (%d, '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d)",
               $lid,
               $type,
               $user_or_node->$field, 
               (!isset($posted_location['name']) || is_null($posted_location['name'])) ? '' : $posted_location['name'],
               (!isset($posted_location['street']) || is_null($posted_location['street'])) ? '' : $posted_location['street'],
               (!isset($posted_location['additional']) || is_null($posted_location['additional'])) ? '' : $posted_location['additional'],
+              (!isset($posted_location['quarter']) || is_null($posted_location['quarter'])) ? '' : $posted_location['quarter'],              
               (!isset($posted_location['city']) || is_null($posted_location['city'])) ? '' : $posted_location['city'],
+              (!isset($posted_location['county']) || is_null($posted_location['county'])) ? '' : $posted_location['county'],              
               (!isset($posted_location['province']) || is_null($posted_location['province'])) ? '' : $posted_location['province'],
               (!isset($posted_location['postal_code']) || is_null($posted_location['postal_code'])) ? '' : $posted_location['postal_code'],
               (!isset($posted_location['country']) || is_null($posted_location['country'])) ? NULL : $posted_location['country'],
