Index: antispam.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/antispam/antispam.module,v
retrieving revision 1.2
diff -u -r1.2 antispam.module
--- antispam.module	10 Jun 2009 03:10:45 -0000	1.2
+++ antispam.module	5 Oct 2009 18:06:35 -0000
@@ -39,13 +39,6 @@
 define('ANTISPAM_COUNT_FALSE_POSITIVE', 4);
 
 /**
- * Implementation of hook_init().
- */
-function antispam_init() {
-  drupal_add_js(drupal_get_path('module', 'antispam') . '/antispam.js');
-}
-
-/**
  * Implementation of hook_help().
  */
 function antispam_help($path, $arg) {
Index: antispam.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/antispam/antispam.admin.inc,v
retrieving revision 1.3
diff -u -r1.3 antispam.admin.inc
--- antispam.admin.inc	6 Jun 2009 09:50:06 -0000	1.3
+++ antispam.admin.inc	5 Oct 2009 18:06:35 -0000
@@ -26,29 +26,8 @@
   $antispam_deapikey = variable_get('antispam_deapikey', '');
   $service_provider = antispam_get_service_provider();
 
-  switch ($service_provider) {
-    case AKISMET_SERVICE:
-      $apikey = $antispam_wpapikey;
-      $apikeyname = 'antispam_wpapikey';
-      $wpapikey_div_style = 'visibility: visible; overflow: hidden;';
-      $tpapikey_div_style = 'visibility: hidden; height: 0px; overflow: hidden;';
-      $deapikey_div_style = 'visibility: hidden; height: 0px; overflow: hidden;';
-      break;
-    case TYPEPAD_SERVICE:
-      $apikey = $antispam_tpapikey;
-      $apikeyname = 'antispam_tpapikey';
-      $wpapikey_div_style = 'visibility: hidden; height: 0px; overflow: hidden;';
-      $tpapikey_div_style = 'visibility: visible; overflow: hidden;';
-      $deapikey_div_style = 'visibility: hidden; height: 0px; overflow: hidden;';
-      break;
-    case DEFENSIO_SERVICE:
-      $apikey = $antispam_deapikey;
-      $apikeyname = 'antispam_deapikey';
-      $wpapikey_div_style = 'visibility: hidden; height: 0px; overflow: hidden;';
-      $tpapikey_div_style = 'visibility: hidden; height: 0px; overflow: hidden;';
-      $deapikey_div_style = 'visibility: visible; overflow: hidden;';
-      break;
-  }
+  // Validate the current API key.
+  $apikey = antispam_get_api_key($service_provider);
   if (empty($apikey)) {
     $is_valid = TRUE;
   }
@@ -56,6 +35,10 @@
     $is_valid = (antispam_api_cmd_verify_key($apikey) 
                  == ANTISPAM_API_RESULT_SUCCESS ? TRUE : FALSE);
   }
+
+  // Provide the AntiSpam administration JavaScript.
+  drupal_add_js(drupal_get_path('module', 'antispam') .'/antispam.js');
+
   $service_fieldset_collapsed = FALSE; // always show 
 
   $form['service'] = array(
@@ -71,7 +54,6 @@
       t('Defensio'),
     ),
     '#default_value' => $service_provider,
-    '#attributes' => array('onclick' => '_antispam_switch_provider_js(this)'),
     '#description' => t('Please select the anti spam service provider. Although they provide the similar services, TypePad AntiSpam service is free even for commercial sites while Akismet and Defensio have some limitations on the commercial usage.'),
   );
   $form['service']['antispam_wpapikey'] = array(
@@ -86,7 +68,7 @@
         '!akismet-faq' => url('http://akismet.com/faq/'),
       )
     ),
-    '#prefix' => '<div id="div-antispam-wpapikey" style="' . $wpapikey_div_style . '">',
+    '#prefix' => '<div id="antispam-wrapper-0" class="antispam-wrapper">',
     '#suffix' => '</div>',
   );
   $form['service']['antispam_tpapikey'] = array(
@@ -100,7 +82,7 @@
         '!antispam-faq' => url('http://antispam.typepad.com/info/faq.html'),
       )
     ),
-    '#prefix' => '<div id="div-antispam-tpapikey" style="' . $tpapikey_div_style . '">',
+    '#prefix' => '<div id="antispam-wrapper-1" class="antispam-wrapper">',
     '#suffix' => '</div>',
   );
   $form['service']['antispam_deapikey'] = array(
@@ -114,10 +96,23 @@
         '!antispam-faq' => url('http://defensio.com/faq'),
       )
     ),
-    '#prefix' => '<div id="div-antispam-deapikey" style="' . $deapikey_div_style . '">',
+    '#prefix' => '<div id="antispam-wrapper-2" class="antispam-wrapper">',
     '#suffix' => '</div>',
   );
+
+  // Give a warning if the active key is not valid.
   if (!empty($apikey) && !$is_valid) {
+    switch ($service_provider) {
+      case 0:
+        $apikeyname = 'antispam_wpapikey';
+        break;
+      case 1:
+        $apikeyname = 'antispam_tpapikey';
+        break;
+      case 2:
+        $apikeyname = 'antispam_deapikey';
+        break;
+    }
     $form['service'][$apikeyname]['#description'] .= '<div class="marker">'. t('<strong>WARNING: Your API Key doesn\'t seem to be valid!</strong>') .'</div>';
   }
 
Index: antispam.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/antispam/antispam.js,v
retrieving revision 1.1
diff -u -r1.1 antispam.js
--- antispam.js	24 May 2009 03:12:48 -0000	1.1
+++ antispam.js	5 Oct 2009 18:06:35 -0000
@@ -1,37 +1,23 @@
-<!--
-function _antispam_switch_provider_js(myobj) {
-  wpapikey = document.getElementById('div-antispam-wpapikey');
-  tpapikey = document.getElementById('div-antispam-tpapikey');
-  deapikey = document.getElementById('div-antispam-deapikey');
-  if (myobj.value == 2) {
-    // defensio
-    deapikey.style.visibility = "visible";
-    deapikey.style.height = ""; // undefined
+// $Id$
 
-    wpapikey.style.visibility = "hidden";
-    wpapikey.style.height = 0;
-    tpapikey.style.visibility = "hidden";
-    tpapikey.style.height = 0;
-  }
-  else if (myobj.value == 1) {
-    // typepad antispam
-    tpapikey.style.visibility = "visible";
-    tpapikey.style.height = ""; // undefined
+/**
+ * @file
+ * Provides the administration JavaScript for the AntiSpam module.
+ */
 
-    wpapikey.style.visibility = "hidden";
-    wpapikey.style.height = 0;
-    deapikey.style.visibility = "hidden";
-    deapikey.style.height = 0;
-  }
-  else {
-    // akismet
-    wpapikey.style.visibility = "visible";
-    wpapikey.style.height = ""; // undefined
+/**
+ * The AntiSpam administration JavaScript behavior.
+ */
+Drupal.behaviors.antispam = function(context) {
+  // Hide everything but the active provider.
+  var active = $('input[name="antispam_service_provider"]:checked').attr('value');
+  $('.antispam-wrapper').hide();
+  $('#antispam-wrapper-' + active).show();
 
-    tpapikey.style.visibility = "hidden";
-    tpapikey.style.height = 0;
-    deapikey.style.visibility = "hidden";
-    deapikey.style.height = 0;
-  }
-}
-// -->
+  // Switch the active provider with user input.
+  $('input[name="antispam_service_provider"]').click(function() {
+    var active = $(this).attr('value');
+    $('.antispam-wrapper').hide();
+    $('#antispam-wrapper-' + active).show();
+  });
+};
