diff -Naur recaptcha.old/README.txt recaptcha/README.txt
--- recaptcha.old/README.txt	2009-09-23 12:27:35.000000000 -0500
+++ recaptcha/README.txt	2010-11-24 14:53:53.485433400 -0600
@@ -24,7 +24,7 @@
 
 2. You'll now find a reCAPTCHA tab in the CAPTCHA
    administration page available at:
-       admin/user/captcha/recaptcha
+       admin/config/people/captcha/recaptcha
 
 3. Register for a public and private reCAPTCHA key at:
        http://recaptcha.net/api/getkey
diff -Naur recaptcha.old/recaptcha.admin.inc recaptcha/recaptcha.admin.inc
--- recaptcha.old/recaptcha.admin.inc	2010-05-19 12:29:37.000000000 -0500
+++ recaptcha/recaptcha.admin.inc	2010-11-24 14:18:17.201245000 -0600
@@ -21,7 +21,7 @@
     '#maxlength' => 40,
     '#description' => t('The public key given to you when you <a href="@url" target="_blank">registered at reCAPTCHA.net</a>.', array('@url' => url(recaptcha_get_signup_url($_SERVER['SERVER_NAME'], variable_get('site_name', ''))))),
     '#required' => TRUE,
-   );
+  );
   $form['recaptcha_private_key'] = array(
     '#type' => 'textfield',
     '#title' => t('Private Key'),
diff -Naur recaptcha.old/recaptcha.info recaptcha/recaptcha.info
--- recaptcha.old/recaptcha.info	2010-09-24 07:16:39.000000000 -0500
+++ recaptcha/recaptcha.info	2010-11-24 13:57:54.949336200 -0600
@@ -3,11 +3,8 @@
 description = "Uses the reCAPTCHA web service to improve the CAPTCHA system."
 dependencies[] = captcha
 package = "Spam control"
-core = 6.x
-
-; Information added by drupal.org packaging script on 2010-09-24
-version = "6.x-1.x-dev"
-core = "6.x"
-project = "recaptcha"
-datestamp = "1285330599"
+core = 7.x
 
+files[] = recaptcha.admin.inc
+files[] = recaptcha.module
+files[] = recaptcha.install
\ No newline at end of file
diff -Naur recaptcha.old/recaptcha.install recaptcha/recaptcha.install
--- recaptcha.old/recaptcha.install	2009-07-28 10:39:20.000000000 -0500
+++ recaptcha/recaptcha.install	2010-11-24 14:23:56.758666500 -0600
@@ -1,5 +1,5 @@
 <?php
-/* $Id: recaptcha.install,v 1.2.4.2.2.3.2.2 2009/07/28 15:39:20 robloach Exp $ */
+// $Id$
 
 /**
  * @file
@@ -7,10 +7,13 @@
  */
 
 /**
- * Implementation of hook_uninstall().
+ * Implements hook_uninstall().
  */
 function recaptcha_uninstall() {
-  // Delete all the recaptcha variables and then clear the variable cache  
-  db_query("delete from {variable} where name like '%s'", 'recaptcha_%');
+  // Delete all the recaptcha variables and then clear the variable cache
+  //db_query("delete from {variable} where name like '%s'", 'recaptcha_%');
+  db_delete('variable')
+    ->condition('name', 'recaptcha_%', 'LIKE')
+    ->execute();
   cache_clear_all('variables', 'cache');
-}
+}
\ No newline at end of file
diff -Naur recaptcha.old/recaptcha.module recaptcha/recaptcha.module
--- recaptcha.old/recaptcha.module	2010-09-23 21:25:51.000000000 -0500
+++ recaptcha/recaptcha.module	2010-11-24 15:19:08.345078400 -0600
@@ -1,5 +1,5 @@
 <?php
-/* $Id: recaptcha.module,v 1.13.2.4.2.11.2.14 2010/09/24 02:25:51 bleen18 Exp $ */
+// $Id$
 
 /**
  * @file
@@ -7,7 +7,7 @@
  */
 
 /**
- * Implementation of hook_help().
+ * Implements hook_help().
  */
 function recaptcha_help($path, $arg) {
   $output = '';
@@ -20,11 +20,11 @@
       $output .= t('Uses the <a href="@url" target="_blank">reCAPTCHA</a> web service to improve the CAPTCHA system and protect email addresses.', array('@url' => url('http://www.recaptcha.net')));
       break;
     case 'admin/help#recaptcha':
-      $output .= '<p>'.
+      $output .= '<p>' .
         t('Uses the reCAPTCHA web service to improve the CAPTCHA module and protect email addresses. For more information on what reCAPTCHA is, visit <a href="@url" target="_blank">the official website</a>.', array('@url' => url('http://www.recaptcha.net'))) .
-        '</p><h3>'.
+        '</p><h3>' .
         t('Configuration') .
-        '</h3><p>'.
+        '</h3><p>' .
         t('The settings associated with reCAPTCHA can be found in the <a href="@recaptchatab">reCAPTCHA tab</a>, in the <a href="@captchasettings">CAPTCHA settings</a>. You must set your public and private reCAPTCHA keys in order to use the module. Once the public and private keys are set, visit the <a href="@captchasettings">CAPTCHA settings</a>, where you can choose where reCAPTCHA should be displayed.', array('@recaptchatab' => url('admin/user/captcha/recaptcha'), '@captchasettings' => url('admin/user/captcha'))) .
         '</p>';
       break;
@@ -33,11 +33,11 @@
 }
 
 /**
- * Implementation of hook_menu().
+ * Implements hook_menu().
  */
 function recaptcha_menu() {
   $items = array();
-  $items['admin/user/captcha/recaptcha'] = array(
+  $items['admin/config/people/captcha/recaptcha'] = array(
     'title' => 'reCAPTCHA',
     'description' => 'Administer the reCAPTCHA web service.',
     'page callback' => 'drupal_get_form',
@@ -50,18 +50,23 @@
 }
 
 /**
- * Implementation of hook_perm().
+ * Implements hook_perm().
  */
-function recaptcha_perm() {
-  return array('administer recaptcha');
+function recaptcha_permission() {
+  return array(
+    'administer recaptcha' => array(
+      'title' => t('reCaptcha Administration'),
+      'description' => t('Administer reCaptcha settings'),
+    ),
+  );
 }
 
 /**
- * Implementation of hook_captcha().
+ * Implements hook_captcha().
  */
 function recaptcha_captcha() {
   $args = func_get_args();
-  $op = array_shift($args); 
+  $op = array_shift($args);
   switch ($op) {
     case 'list':
       return array('reCAPTCHA');
@@ -90,7 +95,7 @@
 
         if ($recaptcha_ajax_api) {
           // By default CAPTCHA turns off page caching on
-          // any page where a CAPTCHA challenge appears. 
+          // any page where a CAPTCHA challenge appears.
           // If recaptcha is using AJAX API, set caching
           // back to it's old state as stored in DB.
           global $conf;
@@ -111,7 +116,7 @@
           if (isset($language->language)) {
             // reCAPTCHA uses two-character language codes, so 'pt-br' must be
             // passed as 'pt' (cf. http://wiki.recaptcha.net/index.php/I18n).
-            $recaptcha_options['lang'] = substr($language->language, 0, 2);
+            $recaptcha_options['lang'] = drupal_substr($language->language, 0, 2);
           }
 
           // Add support to display the custom theme.
@@ -124,7 +129,7 @@
           if (!empty($recaptcha_tabindex)) {
             $recaptcha_options['tabindex'] = $recaptcha_tabindex;
           }
-          drupal_add_js('var RecaptchaOptions = '. drupal_to_js($recaptcha_options) .';', 'inline');
+          drupal_add_js('var RecaptchaOptions = ' . drupal_json_encode($recaptcha_options) . ';', array('type' => 'inline'));
         }
 
         // Create the form. Captcha requires TRUE to be returned in solution.
@@ -140,18 +145,18 @@
         if ($recaptcha_ajax_api == FALSE) {
           $captcha['form']['captcha_form'] = array(
             '#type' => 'item',
-            '#value' => ($recaptcha_form_value ? '<div id="recaptcha_custom_theme_widget">'. $recaptcha_form_value .'</div>' : '') . $html,
+            '#markup' => ($recaptcha_form_value ? '<div id="recaptcha_custom_theme_widget">' . $recaptcha_form_value . '</div>' : '') . $html,
           );
         }
         else {
           $html = ($recaptcha_theme == 'custom') ? theme('recaptcha_custom_widget') : '';
           $captcha['form']['captcha_form'] = array(
             '#type' => 'item',
-            '#value' => '<div id="recaptcha_ajax_api_container">'. $html .'</div>',
+            '#markup' => '<div id="recaptcha_ajax_api_container">' . $html . '</div>',
           );
-          $js = "$(function() { Recaptcha.create('$recaptcha_public_key', 'recaptcha_ajax_api_container', {theme: '$recaptcha_theme'});});";
-          drupal_add_js($js, 'inline', 'header');
-          drupal_set_html_head('<script type="text/javascript" src="http://api.recaptcha.net/js/recaptcha_ajax.js"></script>');
+          $js = "(function ($) { $(function() { Recaptcha.create('$recaptcha_public_key', 'recaptcha_ajax_api_container', {theme: '$recaptcha_theme'});});})(jQuery);";
+          drupal_add_js('http://api.recaptcha.net/js/recaptcha_ajax.js', array('type' => 'external'));
+          drupal_add_js($js, array('type' => 'inline'));
         }
       }
       return $captcha;
@@ -175,8 +180,8 @@
 }
 
 /**
- * Implementation of hook_theme().
- */ 
+ * Implements hook_theme().
+ */
 function recaptcha_theme() {
   return array(
     'recaptcha_custom_widget' => array(
diff -Naur recaptcha.old/recaptcha_mailhide.info recaptcha/recaptcha_mailhide.info
--- recaptcha.old/recaptcha_mailhide.info	2010-09-24 07:16:39.000000000 -0500
+++ recaptcha/recaptcha_mailhide.info	2010-11-24 15:24:17.268747900 -0600
@@ -1,12 +1,7 @@
-; $Id: recaptcha_mailhide.info,v 1.1.2.5.2.3 2009/08/10 17:50:02 robloach Exp $
+; $Id$
 name = reCAPTCHA Mailhide
 description = "Uses the reCAPTCHA web service to protect email addresses."
 package = "Spam control"
-core = 6.x
-
-; Information added by drupal.org packaging script on 2010-09-24
-version = "6.x-1.x-dev"
-core = "6.x"
-project = "recaptcha"
-datestamp = "1285330599"
+core = 7.x
 
+files[] = recaptcha_mailhide.module
\ No newline at end of file
diff -Naur recaptcha.old/recaptcha_mailhide.module recaptcha/recaptcha_mailhide.module
--- recaptcha.old/recaptcha_mailhide.module	2009-09-28 21:51:30.000000000 -0500
+++ recaptcha/recaptcha_mailhide.module	2010-11-24 15:56:39.929861700 -0600
@@ -1,5 +1,5 @@
 <?php
-/* $Id: recaptcha_mailhide.module,v 1.1.2.7.2.5 2009/09/29 02:51:30 robloach Exp $ */
+// $Id$
 
 /**
  * @file
@@ -7,8 +7,8 @@
  */
 
 /**
-* Implementation of hook_help().
-*/
+ * Implements hook_help().
+ */
 function recaptcha_mailhide_help($path, $arg) {
   $output = '';
   switch ($path) {
@@ -19,12 +19,12 @@
       $output .= t('Uses the <a href="@url" target="_blank">reCAPTCHA</a> web service to protect email addresses.', array('@url' => url('http://www.recaptcha.net')));
       break;
     case 'admin/help#recaptcha':
-      $output .= '<p>'.
+      $output .= '<p>' .
         t('Uses the reCAPTCHA web service to protect email addresses. For more information on what reCAPTCHA Mailhide is, visit <a href="@url" target="_blank">the official website</a>.', array('@url' => url('http://mailhide.recaptcha.net'))) .
-        '</p><h3>'.
+        '</p><h3>' .
         t('Configuration') .
-        '</h3><p>'.
-        t('Head over to the <a href="@inputformats">input format settings</a> and add the <a href="@url" target="_blank">reCAPTCHA Mailhide</a> input filter to hide posted emails.', array('@inputformats' => url('admin/settings/filters'), '@url' => url('http://mailhide.recaptcha.net'))) .
+        '</h3><p>' .
+        t('Head over to the <a href="@inputformats">input format settings</a> and add the <a href="@url" target="_blank">reCAPTCHA Mailhide</a> input filter to hide posted emails.', array('@inputformats' => url('admin/settings/filter'), '@url' => url('http://mailhide.recaptcha.net'))) .
         '</p>';
       break;
   }
@@ -32,60 +32,57 @@
 }
 
 /**
- * Implementation of hook_filter().
- */ 
-function recaptcha_mailhide_filter($op, $delta = 0, $format = -1, $text = '') {
-  switch ($op) {
-    case 'list':
-      return array(0 => t('reCAPTCHA Mailhide'));
-
-    case 'description':
-      return recaptcha_mailhide_filter_tips($delta, $format);
-
-    case 'settings':
-        _recaptcha_mailhide_load_library();
-        $form['filter_recaptcha'] = array('#type' => 'fieldset', '#title' => t('reCAPTCHA Mailhide Keys'), '#collapsible' => TRUE, '#collapsed' => FALSE);
-        $form['filter_recaptcha']['recaptcha_mailhide_public_key'] = array(
-          '#type' => 'textfield',
-          '#title' => t('Public Key'),
-          '#default_value' => variable_get('recaptcha_mailhide_public_key', ''),
-          '#maxlength' => 50,
-          '#description' => t('Your public Mailhide key obtained from <a href="@url" target="_blank">reCAPTCHA</a>.', array('@url' => 'http://mailhide.recaptcha.net/apikey')),
-          );
-        $form['filter_recaptcha']['recaptcha_mailhide_private_key'] = array(
-          '#type' => 'textfield',
-          '#title' => t('Private Key'),
-          '#default_value' => variable_get('recaptcha_mailhide_private_key', ''),
-          '#maxlength' => 50,
-          '#description' => t('Your private Mailhide key obtained from <a href="@url" target="_blank">reCAPTCHA</a>.', array('@url' => 'http://mailhide.recaptcha.net/apikey')),
-          );
-        return $form;
-      break;
+ * Implements hook_filter_info().
+ */
+function recaptcha_mailhide_filter_info() {
+  $filters['filter_recaptcha_mailhide'] = array(
+    'title' => t('reCAPTCHA Mailhide'),
+    'description' => _filter_recaptcha_mailhide_tips('', ''),
+    'process callback' => '_filter_recaptcha_mailhide',
+    'settings callback' => '_filter_recaptcha_mailhide_settings',
+    'tips callback' => '_filter_recaptcha_mailhide_tips',
+    'cache' => FALSE,
+  );
+  return $filters;
+}
 
-    case 'process':
-      global $_recaptcha_mailhide_public_key, $_recaptcha_mailhide_private_key, $_recaptcha_mailhide_nokey_warn;
-      _recaptcha_mailhide_load_library();
-      $_recaptcha_mailhide_public_key = variable_get('recaptcha_mailhide_public_key', '');
-      $_recaptcha_mailhide_private_key = variable_get('recaptcha_mailhide_private_key', '');
-
-      $text   = ' '. $text .' ';
-      $text = preg_replace_callback("!(<p>|<li>|<br\s*/?>|[ \n\r\t\(])([A-Za-z0-9._-]+@[A-Za-z0-9._+-]+\.[A-Za-z]{2,4})([.,?]?)(?=(</p>|</li>|<br\s*/?>|[ \n\r\t\)]))!i", '_recaptcha_replace', $text);
-      $text = substr($text, 1, -1);
-
-      unset($_recaptcha_mailhide_public_key);
-      unset($_recaptcha_mailhide_private_key);
-      unset($_recaptcha_mailhide_nokey_warn);
-      return $text;
+// Filter callbacks
+function _filter_recaptcha_mailhide($text, $filter, $format) {
+  global $_recaptcha_mailhide_public_key, $_recaptcha_mailhide_private_key, $_recaptcha_mailhide_nokey_warn;
+  _recaptcha_mailhide_load_library();
+  $_recaptcha_mailhide_public_key = $filter->settings['recaptcha_mailhide_public_key'];
+  $_recaptcha_mailhide_private_key = $filter->settings['recaptcha_mailhide_private_key'];
+
+  $text = ' ' . $text . ' ';
+  $text = preg_replace_callback("!(<p>|<li>|<br\s*/?>|[ \n\r\t\(])([A-Za-z0-9._-]+@[A-Za-z0-9._+-]+\.[A-Za-z]{2,4})([.,?]?)(?=(</p>|</li>|<br\s*/?>|[ \n\r\t\)]))!i", '_recaptcha_replace', $text);
+  $text = drupal_substr($text, 1, -1);
+
+  unset($_recaptcha_mailhide_public_key);
+  unset($_recaptcha_mailhide_private_key);
+  unset($_recaptcha_mailhide_nokey_warn);
+  return $text;
+}
 
-    default:
-      return $text;
-  }
+function _filter_recaptcha_mailhide_settings($form, &$form_state, $filter, $format, $defaults, $filters) {
+  _recaptcha_mailhide_load_library();
+  $settings['recaptcha_mailhide_public_key'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Public Key'),
+    '#default_value' => $filter->settings['recaptcha_mailhide_public_key'],
+    '#maxlength' => 50,
+    '#description' => t('Your public Mailhide key obtained from <a href="@url" target="_blank">reCAPTCHA</a>.', array('@url' => 'http://mailhide.recaptcha.net/apikey')),
+    );
+  $settings['recaptcha_mailhide_private_key'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Private Key'),
+    '#default_value' => $filter->settings['recaptcha_mailhide_private_key'],
+    '#maxlength' => 50,
+    '#description' => t('Your private Mailhide key obtained from <a href="@url" target="_blank">reCAPTCHA</a>.', array('@url' => 'http://mailhide.recaptcha.net/apikey')),
+    );
+  return $settings;
 }
 
-/**
- * Implementation of hook_filter_tips().
- */
-function recaptcha_mailhide_filter_tips($delta, $format, $long = false) {
+function _filter_recaptcha_mailhide_tips($filter, $format, $long = FALSE) {
   return t('E-Mail addresses are hidden with <a href="@url" target="_blank">reCAPTCHA Mailhide</a>.', array('@url' => 'http://mailhide.recaptcha.net/'));
 }
 
