--- cck_map.module	2008-05-16 12:53:28.000000000 +0000
+++ cck_map.module	2008-05-16 13:07:05.000000000 +0000
@@ -42,14 +42,24 @@ function cck_map_admin_menu() {
 function cck_map_admin_form() {
   $form = array();
   $key = variable_get('cck_map_key', '');
-  $form['api_key'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Google Maps API Key.'),
-    '#default_value' => $key
-  );
-  $form['submit'] = array('#type' => 'submit', '#value' => t('Submit'));
-  $form['#submit']['cck_map_admin_menu_save'] = array();
-  $form['#method'] = "POST";
+  if (module_exists('keys_api')) {
+    $form['api_key'] = array(
+      '#type' => 'item',
+      '#title' => t('Google map API key'),
+      '#description' => t('Your personal Googlemaps API key.  You must get this for each separate website at <a href="http://www.google.com/apis/maps/">Google Map API website</a>.'),
+      '#value' => t("Managed by <a href='@url'>keys api</a>.", array('@url' => url('admin/settings/keys'))),
+    );
+  }
+  else {
+    $form['api_key'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Google Maps API Key.'),
+      '#default_value' => $key
+    );
+    $form['submit'] = array('#type' => 'submit', '#value' => t('Submit'));
+    $form['#submit']['cck_map_admin_menu_save'] = array();
+    $form['#method'] = "POST";
+  }
   return $form;
 }
 
@@ -227,7 +237,11 @@ function cck_map_field($op, &$node, $fie
     
         //ensure that the google maps javascrip is only added once
         if (!$maps_js_added) {
-          drupal_set_html_head("<script type='text/javascript' src='http://maps.google.com/maps?file=api&v=2&key=". variable_get('cck_map_key', '') ."'></script>" );
+          $key = variable_get('cck_map_key', '');
+          if (module_exists('keys_api')) {
+            $key = keys_api_get_key('CCK Map', $_SERVER['HTTP_HOST']);
+          }
+          drupal_set_html_head("<script type='text/javascript' src='http://maps.google.com/maps?file=api&v=2&key=". $key ."'></script>" );
           $maps_js_added = true;
         }
 
@@ -357,7 +371,9 @@ function cck_map_widget_settings($op, $w
     case 'form':
       $form = array();
       $key = variable_get('cck_map_key', 0);
-      
+      if (module_exists('keys_api')) {
+        $key = keys_api_get_key('CCK Map', $_SERVER['HTTP_HOST']);
+      }
       if (!$key) {
         $form['alert'] = array(
           '#value' => "<p class='error'>You must first get a google maps api key and enter it into the CCK Map settings located ". l('here', 'admin/settings/cck_map') ."</p>",
@@ -428,7 +444,11 @@ function cck_map_widget($op, &$node, $fi
   
       //ensure that the google maps javascrip is only added once
       if (!$maps_js_added) {
-        drupal_set_html_head("<script type='text/javascript' src='http://maps.google.com/maps?file=api&v=2&key=". variable_get('cck_map_key', '') ."'></script>" );
+      $key = variable_get('cck_map_key', '');
+      if (module_exists('keys_api')) {
+        $key = keys_api_get_key('CCK Map', $_SERVER['HTTP_HOST']);
+      }
+        drupal_set_html_head("<script type='text/javascript' src='http://maps.google.com/maps?file=api&v=2&key=". $key ."'></script>" );
         $maps_js_added = true;
       }
 
@@ -626,4 +646,13 @@ function cck_map_create_markers_js($item
      }
   }
   drupal_add_js("{$vars}\$(document).ready(function() { ". $on_load ." } ); ", 'inline');
- }
\ No newline at end of file
+ }
+ 
+ function cck_map_keys_service() {
+  return array(
+    'cck_map_key' => array(
+      'name' => t('CCK Map'),
+      'description' => t('Google Maps API Key'),
+    ),
+  );
+}
