diff --git a/wp-content/plugins/wp-recaptcha/LICENSE b/wp-content/plugins/wp-recaptcha/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..5cb775f9a48b57e47f7a424e9e9bc213fb45d412
--- /dev/null
+++ b/wp-content/plugins/wp-recaptcha/LICENSE
@@ -0,0 +1,23 @@
+Copyright (c) 2008 reCAPTCHA -- http://recaptcha.net
+AUTHORS:
+  Mike Crawford
+  Ben Maurer
+  Jorge Pe�a
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+ *
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+ *
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/wp-content/plugins/wp-recaptcha/email.png b/wp-content/plugins/wp-recaptcha/email.png
new file mode 100644
index 0000000000000000000000000000000000000000..7348aed77fe6a64c2210a202f12c6eccae7fcf24
Binary files /dev/null and b/wp-content/plugins/wp-recaptcha/email.png differ
diff --git a/wp-content/plugins/wp-recaptcha/readme.txt b/wp-content/plugins/wp-recaptcha/readme.txt
new file mode 100644
index 0000000000000000000000000000000000000000..86f9654d123a7011cf22d4920a57ffe27c068e4f
--- /dev/null
+++ b/wp-content/plugins/wp-recaptcha/readme.txt
@@ -0,0 +1,116 @@
+=== Plugin Name ===
+Contributors: BlaenkDenum
+Donate link: http://www.blaenkdenum.com
+Tags: comments, registration, recaptcha, antispam, mailhide, captcha, wpmu
+Requires at least: 2.5
+Tested up to: 3.0.1
+Stable tag: 2.9.8.2
+
+Integrates reCAPTCHA anti-spam methods with WordPress including comment, registration, and email spam protection. WPMU Compatible.
+
+== Description ==
+
+= What is reCAPTCHA? =
+
+[reCAPTCHA](http://recaptcha.net/ "reCAPTCHA") is an anti-spam method originating from [Carnegie Mellon University](http://www.cmu.edu/index.shtml "Carnegie Mellon University") which uses [CAPTCHAs](http://recaptcha.net/captcha.html "CAPTCHA") in a [genius way](http://recaptcha.net/learnmore.html "How Does it Work? - reCAPTCHA"). Instead of randomly generating useless characters which users grow tired of continuosly typing in, risking the possibility that spammers will eventually write sophisticated spam bots which use [OCR](http://en.wikipedia.org/wiki/Optical_character_recognition "Optical Character Recognition - Wikipedia") libraries to read the characters, reCAPTCHA uses a different approach.
+
+While the world is in the process of digitizing books, sometimes certain words cannot be read. reCAPTCHA uses a combination of these words, further distorts them, and then constructs a CAPTCHA image. After a ceratin percentage of users solve the 'uknown' word the same way it is assumed that it is the correct spelling of the word. This helps digitize books, giving users a ***reason*** to solve reCAPTCHA forms. Because the industry level scanners and OCR software which are used to digitize the books can't read the words with which the CAPTCHAs are constructed, it is safe to assume that in-house spam-bot OCR techniques will not be able to bypass the CAPTCHA either.
+
+reCAPTCHA has earned a very prestigious reputation among the various CAPTCHA systems available and is used by such sites as [Facebook](http://www.facebook.com), [Twitter](http://www.twitter.com), [StumbleUpon](http://www.stumbleupon.com), and a few U.S. Government Websites such as the [TV Converter Box Coupon Program Website](https://www.dtv2009.gov/ "TV Converter Box Coupon Program Website").
+
+This plugin is [WordPress MU](http://mu.wordpress.org/) compatible.
+
+For more information please view the [plugin page](http://www.blaenkdenum.com/wp-recaptcha/ "WP-reCAPTCHA - Blaenk Denum")..
+
+== Installation ==
+
+To install in regular WordPress:
+
+1. Upload the `wp-recaptcha` folder to the `/wp-content/plugins/` directory
+1. Activate the plugin through the `Plugins` menu in WordPress
+1. Get the reCAPTCHA keys [here](http://recaptcha.net/api/getkey?domain=www.blaenkdenum.com&app=wordpress "reCAPTCHA API keys") and/or the MailHide keys [here](http://mailhide.recaptcha.net/apikey "MailHide keys")
+
+To install in WordPress MU (Optional Activation by Users):
+
+1. Follow the instructions for regular WordPress above
+
+To install in WordPress MU (Forced Activation/Site-Wide):
+
+1. Upload the `wp-recaptcha` folder to the `/wp-content/mu-plugins` directory
+1. **Move** the `wp-recaptcha.php` file out of the `wp-recaptcha` folder so that it is in `/wp-content/mu-plugins`
+1. Now you should have `/wp-content/mu-plugins/wp-recaptcha.php` and `/wp-content/mu-plugins/wp-recaptcha/`
+1. Go to the administrator menu and then go to **Site Admin > reCAPTCHA**
+1. Get the reCAPTCHA keys [here](http://recaptcha.net/api/getkey?domain=www.blaenkdenum.com&app=wordpress "reCAPTCHA API keys") and/or the MailHide keys [here](http://mailhide.recaptcha.net/apikey "MailHide keys")
+
+== Requirements ==
+
+* You need the reCAPTCHA keys [here](http://recaptcha.net/api/getkey?domain=www.blaenkdenum.com&app=wordpress "reCAPTCHA API keys") and/or the MailHide keys [here](http://mailhide.recaptcha.net/apikey "MailHide keys")
+* If you plan on using MailHide, you will need to have the [mcrypt](http://php.net/mcrypt "mcrypt") PHP module loaded (*Most servers do*)
+* If you turn on XHTML 1.0 Compliance you and your users will need to have Javascript enabled to see and complete the reCAPTCHA form
+* Your theme must have a `do_action('comment_form', $post->ID);` call right before the end of your form (*Right before the closing form tag*). Most themes do.
+
+== ChangeLog ==
+
+= Version 2.9.8.2 =
+* Fixed a bug with WordPress 3.0 Multi-Site
+= Version 2.9.8 =
+* Added support for WordPress 3.0 Multi-Site thanks to Tom Lynch
+= Version 2.9.7 =
+* Fixed a relatively new [critical bug](http://www.blaenkdenum.com/2010/03/recaptcha-marking-all-comments-as-spam/) which marked new comments as spam regardless of reCAPTCHA response
+= Version 2.9.6 =
+* Fixed a careless bug affecting custom hidden emails
+* Fixed broken links in readme.txt
+= Version 2.9.5 =
+* Added flexibility to the enabling of MailHide. Can now separately choose to enable/disable MailHide for posts/pages, comments, RSS feed of posts/pages, and RSS feed of comments
+* Fixed an ['endless redirection' bug](http://wordpress.org/support/topic/245154?replies=1 "endless redirection in wp-reCAPTCHA options form") thanks to Edilton Siqueira
+* Fixed a bug in WPMU where wp-admin/user-new.php kept trying to validate the user registration with reCAPTCHA information despite not having shown the reCAPTCHA form, thanks to [Daniel Collis-Puro](http://blogs.law.harvard.edu/ "Weblogs at Harvard Law School") for letting me know
+* Added a line break after the reCAPTCHA form to add some padding space between it and the submit button. Due to [popular demand](http://www.chriscredendino.com/2009/03/08/adding-space-between-recaptcha-and-the-comment-submit-button-on-wordpress/ "Adding space between reCAPTCHA and the comment Submit Button on WordPress")
+* Fixed a validation problem where a style attribute was missing. Thanks to [nv1962](http://wordpress.org/support/profile/304093 "nv1962's profile")
+* Public and Private keys are now trimmed since they are usually pasted from the recaptcha site, to avoid any careless errors
+* Fixed the regular expressions for matching the emails, email@provider.co.uk type emails now work
+= Version 2.9.4 =
+* Fixed a bug where the comment would not be saved if the CAPTCHA wasn't entered correctly. Thanks to Justin Heideman.
+= Version 2.9.3 =
+* Fixed the `recaptcha_wp_saved_comment` function. Thanks to Tomi M.
+= Version 2.9.2 =
+* 'Beautified' the options page.
+* Added two options to allow users to enter their own custom error messages. Also good for foreign language support.
+* Fixed a conflict bug with the OpenID plugin where the reCAPTCHA form would show under the OpenID section in the registration form.
+* Added two new options which allow one to choose the text to be shown for all hidden Emails and/or the title of the link.
+* Fixed a 'Could not open socket' error in recaptchalib.php. [Bug ID 26](http://code.google.com/p/recaptcha/issues/detail?id=26 "recaptchalib.php: Could not open socket (Fix included)")
+* Fixed a WPMU issue where blog registrations weren't possible due to a redirection to the first step in the registration process. Thanks to [Edward](http://yisheng.wordpress.com/2008/08/14/wp-recaptcha-for-wpmu-26/ "Edward").
+= Version 2.9.1 =
+* Forgot that if you can see emails in their true form, then you shouldn't have to see the [nohide][/nohide] tags either. Fixed.
+= Version 2.8.6 =
+* Administration interface is now integrated with 2.5's look and feel. Thanks to [Jeremy Clarke](http://simianuprising.com/ "Jeremy Clarke").
+* Users can now have more control over who sees the reCAPTCHA form and who can see emails in their true form (If MailHide is enabled). Thanks to [Jeremy Clarke](http://simianuprising.com/ "Jeremy Clarke").
+* Fixed a very stupid (**One character deal**) fatal error on most Windows Servers which don't support short tags (short_open_tag). I'm speaking of the so called 'Unexpected $end' error.
+* Accomodated for the fact that in +2.6 the wp-content folder can be anywhere.
+
+== Frequently Asked Questions ==
+
+= HELP, I'm still getting spam! =
+There are four common issues that make reCAPTCHA appear to be broken:
+
+1. **Moderation Emails**: reCAPTCHA marks comments as spam, so even though the comments don't actually get posted, you will be notified of what is supposedly new spam. It is recommended to turn off moderation emails with reCAPTCHA.
+1. **Akismet Spam Queue**: Again, because reCAPTCHA marks comments with a wrongly entered CAPTCHA as spam, they are added to the spam queue. These comments however weren't posted to the blog so reCAPTCHA is still doing it's job. It is recommended to either ignore the Spam Queue and clear it regularly or disable Akismet completely. reCAPTCHA takes care of all of the spam created by bots, which is the usual type of spam. The only other type of spam that would get through is human spam, where humans are hired to manually solve CAPTCHAs. If you still get spam while only having reCAPTCHA enabled, you could be a victim of the latter practice. If this is the case, then turning on Akismet will most likely solve your problem. Again, just because it shows up in the Spam Queue does NOT mean that spam is being posted to your blog, it's more of a 'comments that have been caught as spam by reCAPTCHA' queue.
+1. **Trackbacks and Pingbacks**: reCAPTCHA can't do anything about pingbacks and trackbacks. You can disable pingbacks and trackbacks in Options > Discussion > Allow notifications from other Weblogs (Pingbacks and trackbacks).
+1. **Human Spammers**: Believe it or not, there are people who are paid (or maybe slave labor?) to solve CAPTCHAs all over the internet and spam. This is the last and rarest reason for which it might appear that reCAPTCHA is not working, but it does happen. On this plugin's [home page](http://www.blaenkdenum.com/wp-recaptcha/ Blaenk Denum - WP-reCAPTCHA), these people sometimes attempt to post spam to try and make it seem as if reCAPTCHA is not working. A combination of reCAPTCHA and Akismet might help to solve this problem, and if spam still gets through for this reason, it would be very minimal and easy to manually take care of.
+
+= Why am I getting �Warning: pack() [function.pack]: Type H: illegal hex digit�? =
+You have the keys in the wrong place. Remember, the reCAPTCHA keys are different from the MailHide keys. And the Public keys are different from the Private keys as well. You can�t mix them around. Go through your keys and make sure you have them each in the correct box.
+
+= Aren't you increasing the time users spend solving CAPTCHAs by requiring them to type two words instead of one? =
+Actually, no. Most CAPTCHAs on the Web ask users to enter strings of random characters, which are slower to type than English words. reCAPTCHA requires no more time to solve than most other CAPTCHAs.
+
+= Are reCAPTCHAs less secure than other CAPTCHAs that use random characters instead of words? =
+Because we ask users to enter two words instead of one, we can increase the security of reCAPTCHA against programs that attempt to guess the words using a dictionary. Whenever an IP address fails one reCAPTCHA, we can show them more distorted words, and give them challenges for which we know both words. The probability of randomly guessing both words correctly would be less than one in ten million.
+
+= Are CAPTCHAs secure? I heard spammers are using porn sites to solve them: the CAPTCHAs are sent to a porn site, and the porn site users are asked to solve the CAPTCHA before being able to see a pornographic image. =
+
+CAPTCHAs offer great protection against abuse from automated programs. While it might be the case that some spammers have started using porn sites to attack CAPTCHAs (although there is no recorded evidence of this), the amount of damage this can inflict is tiny (so tiny that we haven't even seen this happen!). Whereas it is trivial to write a bot that abuses an unprotected site millions of times a day, redirecting CAPTCHAs to be solved by humans viewing pornography would only allow spammers to abuse systems a few thousand times per day. The economics of this attack just don't add up: every time a porn site shows a CAPTCHA before a porn image, they risk losing a customer to another site that doesn't do this.
+
+== Screenshots ==
+
+1. The reCAPTCHA Settings
+2. The MailHide Settings
diff --git a/wp-content/plugins/wp-recaptcha/recaptcha.css b/wp-content/plugins/wp-recaptcha/recaptcha.css
new file mode 100644
index 0000000000000000000000000000000000000000..00f43362d7021dcfff3413d25e7a420063a3c881
--- /dev/null
+++ b/wp-content/plugins/wp-recaptcha/recaptcha.css
@@ -0,0 +1,72 @@
+/* RECAPTCHA STYLING */
+.recaptcha-error {
+   font-size: 1.8em;
+   padding-bottom: 8px;
+}
+/* END RECAPTCHA STYLING */
+
+/* MAILHIDE STYLING */
+
+/* This is for plain text emails i.e. haha@lol.com - TEXT*/
+.mh-plaintext {
+   background:transparent url(email.png) no-repeat scroll left center;
+   border:medium none;
+   color:#2277DD;
+   height:16px;
+   padding:2px 2px 4px 20px;
+}
+
+/* This is for plain text emails i.e. haha@lol.com - DOTS*/
+.mh-plaintext a, .mh-plaintext a:hover, .mh-plaintext a:visited, .mh-plaintext a:visited:hover {
+   color: #FF7700;
+   font-weight: bolder;
+   text-decoration: none;
+   border: 0;
+   background-color: transparent !important;
+}
+
+/* This is for hyperlinked emails i.e. <a href="mailto:ohnoes@pwnies.com">TEXT</a> - TEXT*/
+.mh-hyperlinked {
+   background:transparent url(email.png) no-repeat scroll left center;
+   border:medium none;
+   color:#2277DD;
+   height:16px;
+   padding:2px 2px 4px 20px;
+}
+
+/* This is for hyperlinked emails i.e. <a href="mailto:ohnoes@pwnies.com">TEXT</a> - DOTS*/
+.mh-hyperlinked a, .mh-hyperlinked a:hover, .mh-hyperlinked a:visited, .mh-hyperlinked a:visited:hover {
+   color: #FF7700;
+   font-weight: bolder;
+   text-decoration: none;
+   border: 0;
+}
+/* END MAILHIDE STYLING */
+
+/* ADMINISTRATION SETTINGS RECAPTCHA */
+.lang-select label, .theme-select label {
+   vertical-align: middle !important;
+}
+
+.lang-select select, .theme-select select {
+   vertical-align: middle !important;
+}
+
+.recaptcha-form {
+   margin: auto !important;
+   width: 25em !important;
+}
+
+.recaptcha-options td {
+   vertical-align: top !important;
+}
+
+.which-key label {
+   font-weight: bold;
+}
+
+.copyright {
+   text-align: center;
+   font-size: .85em;
+}
+/* END ADMINISTRATION SETTINGS RECAPTCHA */
\ No newline at end of file
diff --git a/wp-content/plugins/wp-recaptcha/recaptchalib.php b/wp-content/plugins/wp-recaptcha/recaptchalib.php
new file mode 100644
index 0000000000000000000000000000000000000000..cb3d9b1264567e324c188f7ee567a569c411cbf9
--- /dev/null
+++ b/wp-content/plugins/wp-recaptcha/recaptchalib.php
@@ -0,0 +1,281 @@
+<?php
+/*
+ * This is a PHP library that handles calling reCAPTCHA.
+ *    - Documentation and latest version
+ *          http://recaptcha.net/plugins/php/
+ *    - Get a reCAPTCHA API Key
+ *          http://recaptcha.net/api/getkey
+ *    - Discussion group
+ *          http://groups.google.com/group/recaptcha
+ *
+ * Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
+ * AUTHORS:
+ *   Mike Crawford
+ *   Ben Maurer
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/**
+ * The reCAPTCHA server URL's
+ */
+define("RECAPTCHA_API_SERVER", "http://api.recaptcha.net");
+define("RECAPTCHA_API_SECURE_SERVER", "https://api-secure.recaptcha.net");
+define("RECAPTCHA_VERIFY_SERVER", "api-verify.recaptcha.net");
+
+/**
+ * Encodes the given data into a query string format
+ * @param $data - array of string elements to be encoded
+ * @return string - encoded request
+ */
+function _recaptcha_qsencode($data) {
+  $req = "";
+  foreach ($data as $key => $value)
+    $req .= $key . '=' . urlencode(stripslashes($value)) . '&';
+
+  // Cut the last '&'
+  $req=substr($req,0,strlen($req)-1);
+  return $req;
+}
+
+/**
+ * Submits an HTTP POST to a reCAPTCHA server
+ * @param string $host
+ * @param string $path
+ * @param array $data
+ * @param int port
+ * @return array response
+ */
+function _recaptcha_http_post($host, $path, $data, $port = 80) {
+  $req = _recaptcha_qsencode ($data);
+
+  $http_request  = "POST $path HTTP/1.0\r\n";
+  $http_request .= "Host: $host\r\n";
+  $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
+  $http_request .= "Content-Length: " . strlen($req) . "\r\n";
+  $http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
+  $http_request .= "\r\n";
+  $http_request .= $req;
+
+  $response = '';
+  if(false == ($fs = @fsockopen($host, $port, $errno, $errstr, 10))) {
+     die('Could not open socket');
+  }
+
+  fwrite($fs, $http_request);
+
+  while (!feof($fs))
+     $response .= fgets($fs, 1160); // One TCP-IP packet
+     
+  fclose($fs);
+  $response = explode("\r\n\r\n", $response, 2);
+
+  return $response;
+}
+
+
+
+/**
+ * Gets the challenge HTML (javascript and non-javascript version).
+ * This is called from the browser, and the resulting reCAPTCHA HTML widget
+ * is embedded within the HTML form it was called from.
+ * @param string $pubkey A public key for reCAPTCHA
+ * @param string $error The error given by reCAPTCHA (optional, default is null)
+ * @param boolean $use_ssl Should the request be made over ssl? (optional, default is false)
+
+ * @return string - The HTML to be embedded in the user's form.
+ */
+function recaptcha_get_html($pubkey, $error = null, $use_ssl = false, $xhtml_compliant = false)
+{
+	if ($pubkey == null || $pubkey == '') {
+		die ("To use reCAPTCHA you must get an API key from <a href='http://recaptcha.net/api/getkey'>http://recaptcha.net/api/getkey</a>");
+	}
+	
+	if ($use_ssl) {
+      $server = RECAPTCHA_API_SECURE_SERVER;
+   } else {
+      $server = RECAPTCHA_API_SERVER;
+   }
+
+  $errorpart = "";
+  if ($error) {
+     $errorpart = "&amp;error=" . $error;
+  }
+  
+  if ($xhtml_compliant) {
+     return '<script type="text/javascript" src="'. $server . '/challenge?k=' . $pubkey . $errorpart . '"></script>
+
+<noscript>
+<div>
+<textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
+<input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
+</div>
+</noscript>';
+  }
+  
+  else {
+     return  '<script type="text/javascript" src="'. $server . '/challenge?k=' . $pubkey . $errorpart . '"></script>
+
+<noscript>
+<iframe src="'. $server . '/noscript?k=' . $pubkey . $errorpart . '" height="300" width="500" frameborder="0"></iframe><br/>
+<textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
+<input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
+</noscript>';
+  }
+  return $output;
+}
+
+/**
+ * A ReCaptchaResponse is returned from recaptcha_check_answer()
+ */
+class ReCaptchaResponse {
+   var $is_valid;
+   var $error;
+}
+
+/**
+  * Calls an HTTP POST function to verify if the user's guess was correct
+  * @param string $privkey
+  * @param string $remoteip
+  * @param string $challenge
+  * @param string $response
+  * @param array $extra_params an array of extra variables to post to the server
+  * @return ReCaptchaResponse
+  */
+function recaptcha_check_answer($privkey, $remoteip, $challenge, $response, $extra_params = array())
+{
+	if ($privkey == null || $privkey == '') {
+		die ("To use reCAPTCHA you must get an API key from <a href='http://recaptcha.net/api/getkey'>http://recaptcha.net/api/getkey</a>");
+	}
+
+	if ($remoteip == null || $remoteip == '') {
+		die ("For security reasons, you must pass the remote ip to reCAPTCHA");
+	}
+  
+   //discard spam submissions
+   if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0) {
+          $recaptcha_response = new ReCaptchaResponse();
+          $recaptcha_response->is_valid = false;
+          $recaptcha_response->error = 'incorrect-captcha-sol';
+          return $recaptcha_response;
+   }
+   
+   $response = _recaptcha_http_post (RECAPTCHA_VERIFY_SERVER, "/verify",
+      array (
+             'privatekey' => $privkey,
+             'remoteip' => $remoteip,
+             'challenge' => $challenge,
+             'response' => $response
+             ) + $extra_params
+      );
+
+   $answers = explode ("\n", $response [1]);
+   $recaptcha_response = new ReCaptchaResponse();
+
+   if (trim ($answers [0]) == 'true') {
+      $recaptcha_response->is_valid = true;
+   }
+   else {
+      $recaptcha_response->is_valid = false;
+      $recaptcha_response->error = $answers [1];
+   }
+   return $recaptcha_response;
+}
+
+/**
+ * gets a URL where the user can sign up for reCAPTCHA. If your application
+ * has a configuration page where you enter a key, you should provide a link
+ * using this function.
+ * @param string $domain The domain where the page is hosted
+ * @param string $appname The name of your application
+ */
+function recaptcha_get_signup_url($domain = null, $appname = null) {
+	return "http://recaptcha.net/api/getkey?" .  _recaptcha_qsencode (array ('domain' => $domain, 'app' => $appname));
+}
+
+function _recaptcha_aes_pad($val) {
+	$block_size = 16;
+	$numpad = $block_size - (strlen ($val) % $block_size);
+	return str_pad($val, strlen ($val) + $numpad, chr($numpad));
+}
+
+/* Mailhide related code */
+
+function _recaptcha_aes_encrypt($val,$ky) {
+	if (! function_exists ("mcrypt_encrypt")) {
+		die ("To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed.");
+	}
+	$mode = MCRYPT_MODE_CBC;   
+	$enc = MCRYPT_RIJNDAEL_128;
+	$val = _recaptcha_aes_pad($val);
+	return mcrypt_encrypt($enc, $ky, $val, $mode, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
+}
+
+
+function _recaptcha_mailhide_urlbase64($x) {
+	return strtr(base64_encode ($x), '+/', '-_');
+}
+
+/* gets the reCAPTCHA Mailhide url for a given email, public key and private key */
+function recaptcha_mailhide_url($pubkey, $privkey, $email) {
+	if ($pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null) {
+		die ("To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " .
+		     "you can do so at <a href='http://mailhide.recaptcha.net/apikey'>http://mailhide.recaptcha.net/apikey</a>");
+	}
+	
+
+	$ky = pack('H*', $privkey);
+	$cryptmail = _recaptcha_aes_encrypt ($email, $ky);
+	
+	return "http://mailhide.recaptcha.net/d?k=" . $pubkey . "&c=" . _recaptcha_mailhide_urlbase64 ($cryptmail);
+}
+
+/**
+ * gets the parts of the email to expose to the user.
+ * eg, given johndoe@example,com return ["john", "example.com"].
+ * the email is then displayed as john...@example.com
+ */
+function _recaptcha_mailhide_email_parts($email) {
+	$arr = preg_split("/@/", $email );
+
+	if (strlen ($arr[0]) <= 4) {
+		$arr[0] = substr ($arr[0], 0, 1);
+	} else if (strlen ($arr[0]) <= 6) {
+		$arr[0] = substr ($arr[0], 0, 3);
+	} else {
+		$arr[0] = substr ($arr[0], 0, 4);
+	}
+	return $arr;
+}
+
+/**
+ * Gets html to display an email address given a public an private key.
+ * to get a key, go to:
+ *
+ * http://mailhide.recaptcha.net/apikey
+ */
+function recaptcha_mailhide_html($pubkey, $privkey, $email) {
+	$emailparts = _recaptcha_mailhide_email_parts ($email);
+	$url = recaptcha_mailhide_url ($pubkey, $privkey, $email);
+	
+	return htmlentities($emailparts[0], ENT_QUOTES) . "<a href='" . htmlentities ($url, ENT_QUOTES) .
+		"' onclick=\"window.open('" . htmlentities ($url, ENT_QUOTES) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">...</a>@" . htmlentities ($emailparts [1], ENT_QUOTES);
+
+}
+?>
diff --git a/wp-content/plugins/wp-recaptcha/screenshot-1.png b/wp-content/plugins/wp-recaptcha/screenshot-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..1392bc92eaef3e278eeedefdc0a1394b00021103
Binary files /dev/null and b/wp-content/plugins/wp-recaptcha/screenshot-1.png differ
diff --git a/wp-content/plugins/wp-recaptcha/screenshot-2.png b/wp-content/plugins/wp-recaptcha/screenshot-2.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b28596fc39a22b0c595fd360d7c80c9d08883d9
Binary files /dev/null and b/wp-content/plugins/wp-recaptcha/screenshot-2.png differ
diff --git a/wp-content/plugins/wp-recaptcha/wp-recaptcha.php b/wp-content/plugins/wp-recaptcha/wp-recaptcha.php
new file mode 100644
index 0000000000000000000000000000000000000000..c8965a9a08c874ec666156698559904ef32e5286
--- /dev/null
+++ b/wp-content/plugins/wp-recaptcha/wp-recaptcha.php
@@ -0,0 +1,1007 @@
+<?php
+/*
+Plugin Name: WP-reCAPTCHA
+Plugin URI: http://www.blaenkdenum.com/wp-recaptcha/
+Description: Integrates reCAPTCHA anti-spam solutions with wordpress
+Version: 2.9.8.2
+Author: Jorge Peña
+Email: support@recaptcha.net
+Author URI: http://www.blaenkdenum.com
+*/
+
+// Plugin was initially created by Ben Maurer and Mike Crawford
+// Permissions/2.5 transition help from Jeremy Clarke @ http://globalvoicesonline.org
+// WordPress 3.0 Multi site update from Tom Lynch @ http://unknowndomain.co.uk
+
+// WORDPRESS TYPE DETECTION
+
+// WordPress MU settings - DON'T EDIT
+//    0 - Regular WordPress installation
+//    1 - WordPress MU Forced Activated
+//    2 - WordPress MU Optional Activation
+//	  3 - WordPress MS Network Activated
+
+$wpmu = 0;
+
+if (basename(dirname(__FILE__)) == "mu-plugins") // forced activated
+   $wpmu = 1;
+else if (basename(dirname(__FILE__)) == "plugins" && function_exists('is_site_admin')) // optionally activated
+   $wpmu = 2;
+
+if (function_exists('is_multisite'))
+	if (is_multisite())
+		$wpmu = 3;
+
+if ($wpmu == 1 || $wpmu == 3)
+   $recaptcha_opt = get_site_option('recaptcha'); // get the options from the database
+else
+   $recaptcha_opt = get_option('recaptcha'); // get the options from the database
+
+// END WORDPRESS TYPE DETECTION
+   
+if ($wpmu == 1)
+   require_once(dirname(__FILE__) . '/wp-recaptcha/recaptchalib.php');
+else
+   require_once(dirname(__FILE__) . '/recaptchalib.php');
+
+// doesn't need to be secret, just shouldn't be used by any other code.
+define ("RECAPTCHA_WP_HASH_SALT", "b7e0638d85f5d7f3694f68e944136d62");
+
+/* =============================================================================
+   CSS - This links the pages to the stylesheet to be properly styled
+   ============================================================================= */
+
+function re_css() {
+   global $recaptcha_opt, $wpmu;
+   
+   if (!defined('WP_CONTENT_URL'))
+      define('WP_CONTENT_URL', get_option('siteurl') . '/wp-content');
+   
+   $path = WP_CONTENT_URL . '/plugins/wp-recaptcha/recaptcha.css';
+   
+   if ($wpmu == 1)
+		$path = WP_CONTENT_URL . '/mu-plugins/wp-recaptcha/recaptcha.css';
+   
+   echo '<link rel="stylesheet" type="text/css" href="' . $path . '" />';
+}
+
+function registration_css() {
+   global $recaptcha_opt;
+   
+   if ($recaptcha_opt['re_registration']) {
+		$width = 0;
+		
+		if ($recaptcha_opt['re_theme_reg'] == 'red' ||
+          $recaptcha_opt['re_theme_reg'] == 'white' ||
+          $recaptcha_opt['re_theme_reg'] == 'blackglass')
+          $width = 358;
+		else if ($recaptcha_opt['re_theme_reg'] == 'clean')
+          $width = 485;
+		
+		echo <<<REGISTRATION
+		<style type="text/css">
+		#login {
+				width: {$width}px !important;
+		}
+		
+		#login a {
+				text-align: center;
+		}
+		
+		#nav {
+				text-align: center;
+		}
+		form .submit {
+            margin-top: 10px;
+      }
+		</style>
+REGISTRATION;
+   }
+}
+
+add_action('wp_head', 're_css'); // include the stylesheet in typical pages to style hidden emails
+add_action('admin_head', 're_css'); // include stylesheet to style options page
+add_action('login_head', 'registration_css'); // include the login div styling, embedded
+
+/* =============================================================================
+   End CSS
+   ============================================================================= */
+
+// If the plugin is deactivated, delete the preferences
+function delete_preferences() {
+   global $wpmu;
+
+   if ($wpmu != 1)
+		delete_option('recaptcha');
+}
+
+register_deactivation_hook(__FILE__, 'delete_preferences');
+
+/* =============================================================================
+   reCAPTCHA on Registration Form - Thanks to Ben C.'s recapture plugin
+   ============================================================================= */
+   
+// Display the reCAPTCHA on the registration form
+function display_recaptcha($errors) {
+	global $recaptcha_opt, $wpmu;
+   
+   if ($recaptcha_opt['re_registration']) {
+		$format = <<<END
+		<script type='text/javascript'>
+		var RecaptchaOptions = { theme : '{$recaptcha_opt['re_theme_reg']}', lang : '{$recaptcha_opt['re_lang']}' , tabindex : 30 };
+		</script>
+END;
+		
+		$comment_string = <<<COMMENT_FORM
+		<script type='text/javascript'>   
+		document.getElementById('recaptcha_table').style.direction = 'ltr';
+		</script>
+COMMENT_FORM;
+
+		if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on")
+         $use_ssl = true;
+		else
+         $use_ssl = false;
+		
+		if ($wpmu == 1) {
+   		$error = $errors->get_error_message('captcha'); ?>
+   		<label for="verification">Verification:</label>
+         <?php echo($error ? '<p class="error">'.$error.'</p>' : '') ?>
+         <?php echo $format . recaptcha_wp_get_html($_GET['rerror'], $use_ssl); ?>
+   		<?php }
+		
+		else {
+         echo '<hr style="clear: both; margin-bottom: 1.5em; border: 0; border-top: 1px solid #999; height: 1px;" />';
+         echo $format . recaptcha_wp_get_html($_GET['rerror'], $use_ssl);
+      }
+   }
+}
+
+// Hook the display_recaptcha function into WordPress
+if ($wpmu != 1 && $wpmu != 3)
+   add_action('register_form', 'display_recaptcha');
+else
+   add_action('signup_extra_fields', 'display_recaptcha');
+
+// Check the captcha
+function check_recaptcha() {
+	global $recaptcha_opt, $errors;
+	
+   if (empty($_POST['recaptcha_response_field']))
+		$errors['blank_captcha'] = $recaptcha_opt['error_blank'];
+   
+   else {
+   	$response = recaptcha_check_answer($recaptcha_opt['privkey'],
+		$_SERVER['REMOTE_ADDR'],
+		$_POST['recaptcha_challenge_field'],
+		$_POST['recaptcha_response_field']);
+
+   	if (!$response->is_valid)
+   		if ($response->error == 'incorrect-captcha-sol')
+   				$errors['captcha_wrong'] = $recaptcha_opt['error_incorrect'];
+   }
+}
+
+// Check the captcha
+function check_recaptcha_new($errors) {
+	global $recaptcha_opt;
+	
+   if (empty($_POST['recaptcha_response_field']) || $_POST['recaptcha_response_field'] == '') {
+		$errors->add('blank_captcha', $recaptcha_opt['error_blank']);
+		return $errors;
+   }
+   
+	$response = recaptcha_check_answer($recaptcha_opt['privkey'],
+      $_SERVER['REMOTE_ADDR'],
+      $_POST['recaptcha_challenge_field'],
+      $_POST['recaptcha_response_field'] );
+
+	if (!$response->is_valid)
+		if ($response->error == 'incorrect-captcha-sol')
+			$errors->add('captcha_wrong', $recaptcha_opt['error_incorrect']);
+   
+   return $errors;
+}
+
+// Check the recaptcha on WordPress MU
+function check_recaptcha_wpmu($result) {
+   global $_POST, $recaptcha_opt;
+   
+   // must make a check here, otherwise the wp-admin/user-new.php script will keep trying to call
+   // this function despite not having called do_action('signup_extra_fields'), so the recaptcha
+   // field was never shown. this way it won't validate if it's called in the admin interface
+   if (!is_admin()) {
+         // It's blogname in 2.6, blog_id prior to that
+      if (isset($_POST['blog_id']) || isset($_POST['blogname']))
+      	return $result;
+
+      // no text entered
+      if (empty($_POST['recaptcha_response_field']) || $_POST['recaptcha_response_field'] == '') {
+      	$result['errors']->add('blank_captcha', $recaptcha_opt['error_blank']);
+      	return $result;
+      }
+
+      $response = recaptcha_check_answer($recaptcha_opt['privkey'],
+         $_SERVER['REMOTE_ADDR'],
+         $_POST['recaptcha_challenge_field'],
+         $_POST['recaptcha_response_field'] );
+
+      // incorrect CAPTCHA
+      if (!$response->is_valid)
+      	if ($response->error == 'incorrect-captcha-sol') {
+      		$result['errors']->add('captcha_wrong', $recaptcha_opt['error_incorrect']);
+            echo "<div class=\"error\">". $recaptcha_opt['error_incorrect'] . "</div>";
+      	}
+   }
+   
+   return $result;
+}
+
+if ($recaptcha_opt['re_registration']) {
+   if ($wpmu == 1 || $wpmu == 3)
+		add_filter('wpmu_validate_user_signup', 'check_recaptcha_wpmu');
+   
+   else if ($wpmu == 0) {
+		// Hook the check_recaptcha function into WordPress
+		if (version_compare(get_bloginfo('version'), '2.5' ) >= 0)
+         add_filter('registration_errors', 'check_recaptcha_new');
+		else
+         add_filter('registration_errors', 'check_recaptcha');
+   }
+}
+/* =============================================================================
+   End reCAPTCHA on Registration Form
+   ============================================================================= */
+
+/* =============================================================================
+   reCAPTCHA Plugin Default Options
+   ============================================================================= */
+
+$option_defaults = array (
+   'pubkey'	=> '', // the public key for reCAPTCHA
+   'privkey'	=> '', // the private key for reCAPTCHA
+   'use_mailhide_posts' => '0', // mailhide for posts/pages
+   'use_mailhide_comments' => '0', // use mailhide for comments
+   'use_mailhide_rss' => '0', // use mailhide for the rss feed of the posts/pages
+   'use_mailhide_rss_comments' => '0', // use mailhide for the rss comments
+   're_bypass' => '', // whether to sometimes skip reCAPTCHAs for registered users
+   're_bypasslevel' => '', // who doesn't have to do the reCAPTCHA (should be a valid WordPress capability slug)
+   'mh_bypass' => '', // whether to sometimes skip the MailHide filter for registered users
+   'mh_bypasslevel' => '', // who can see full emails normally (should be a valid WordPress capability slug)
+   'mailhide_pub' => '', // mailhide public key
+   'mailhide_priv' => '', // mailhide private key
+   're_theme' => 'red', // the default theme for reCAPTCHA on the comment post
+   're_theme_reg' => 'red', // the default theme for reCAPTCHA on the registration form
+   're_lang' => 'en', // the default language for reCAPTCHA
+   're_tabindex' => '5', // the default tabindex for reCAPTCHA
+   're_comments' => '1', // whether or not to show reCAPTCHA on the comment post
+   're_registration' => '1', // whether or not to show reCAPTCHA on the registratoin page
+   're_xhtml' => '0', // whether or not to be XHTML 1.0 Strict compliant
+   'mh_replace_link' => '', // name the link something else
+   'mh_replace_title' => '', // title of the link
+   'error_blank' => '<strong>ERROR</strong>: Please fill in the reCAPTCHA form.', // the message to display when the user enters no CAPTCHA response
+   'error_incorrect' => '<strong>ERROR</strong>: That reCAPTCHA response was incorrect.', // the message to display when the user enters the incorrect CAPTCHA response
+);
+
+// install the defaults
+if ($wpmu != 1)
+   add_option('recaptcha', $option_defaults, 'reCAPTCHA Default Options', 'yes');
+
+/* =============================================================================
+   End reCAPTCHA Plugin Default Options
+   ============================================================================= */
+
+/* =============================================================================
+   MailHide - This scans for addresses and hides them using the MailHide API
+   ============================================================================= */
+
+// The main mailhide filter
+function mh_insert_email($content = '') {
+   global $recaptcha_opt;
+  
+   // set the minimum capability needed to skip the MailHide if there is one
+   if ($recaptcha_opt['mh_bypass'] && $recaptcha_opt['mh_bypasslevel'])
+      $needed_capability = $recaptcha_opt['mh_bypasslevel'];
+        
+	// skip the MailHide display if the minimum capability is met
+	if (($needed_capability && current_user_can($needed_capability)) || !$recaptcha_opt['re_comments']) {
+      // remove the nohides
+      $content = preg_replace('/\[\/?nohide\]/i','',$content);
+		return $content;
+   }
+
+   // Regular Expressions thanks to diabolic from EFNet #regex
+   
+   // match hyperlinks with emails
+   $regex = '%(?<!\[nohide\])<a[^>]*href="((?:mailto:)?([^@"]+@[^@"]+))"[^>]*>(.+?)<\/a>(?!\[/nohide\])%i';
+   $content = preg_replace_callback($regex, "mh_replace_hyperlink", $content);
+   
+   // match emails
+   $regex = '%\b([\w.+-]+@[a-z\d.-]+\.[a-z]{2,6})\b(?!\s*\[\/nohide\]|(?:(?!<a[^>]*>).)*<\/a>)%i';
+   $content = preg_replace_callback($regex, "mh_replace", $content);
+   
+   // remove the nohides
+   $content = preg_replace('/\[\/?nohide\]/i','',$content);
+   return $content;
+}
+
+// replace the hyperlinked emails i.e. <a href="haha@lol.com">this</a> or <a href="mailto:haha@lol.com">that</a>
+function mh_replace_hyperlink($matches) {
+   global $recaptcha_opt;
+   
+   // set the minimum capability needed to skip the MailHide if there is one
+   if ($recaptcha_opt['mh_bypass'] && $recaptcha_opt['mh_bypasslevel'])
+      $needed_capability = $recaptcha_opt['mh_bypasslevel'];
+        
+	// skip the MailHide display if the minimum capability is met
+	if (($needed_capability && current_user_can($needed_capability)) || !$recaptcha_opt['re_comments']) {
+      // remove the nohides
+      $content = preg_replace('/\[\/?nohide\]/i','',$content);
+		return $content;
+   }
+   
+   // get the url, the part inside the href. this is the email of course
+   $url = recaptcha_mailhide_url($recaptcha_opt['mailhide_pub'], $recaptcha_opt['mailhide_priv'], $matches[2]);
+   
+   // construct a new hyperlink with the url hidden but the link text the same
+   $html = "<a href='" . $url . "' onclick=\"window.open('" . htmlentities ($url, ENT_QUOTES) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\">" . $matches[3] . "</a>";
+   
+   // style it
+   $html = '<span class="mh-hyperlinked">' . $html . "</span>";
+   
+   return $html;
+}
+
+// replace the plain text emails i.e. haha@lol.com
+function mh_replace($matches) {
+   global $recaptcha_opt;
+   
+   # var_dump($matches);
+   
+   if ($recaptcha_opt['mh_replace_link'] == "" && $recaptcha_opt['mh_replace_title'] == "") {
+      // find plain text emails and hide them
+      $html = recaptcha_mailhide_html($recaptcha_opt['mailhide_pub'], $recaptcha_opt['mailhide_priv'], $matches[0]);
+   }
+   
+   else {
+      // replace both things
+      if ($recaptcha_opt['mh_replace_link'] != "" && $recaptcha_opt['mh_replace_title'] != "") {
+         $url = recaptcha_mailhide_url($recaptcha_opt['mailhide_pub'], $recaptcha_opt['mailhide_priv'], $matches[0]);
+         $html = "<a href='" . htmlentities($url, ENT_QUOTES) .
+      		"' onclick=\"window.open('" . htmlentities($url, ENT_QUOTES) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"" . $recaptcha_opt['mh_replace_title'] . "\">" . $recaptcha_opt['mh_replace_link'] . "</a>";
+      }
+      
+      // only replace the link
+      else if ($recaptcha_opt['mh_replace_link'] != "" && $recaptcha_opt['mh_replace_title'] == "") {
+         $url = recaptcha_mailhide_url($recaptcha_opt['mailhide_pub'], $recaptcha_opt['mailhide_priv'], $matches[0]);
+         $html = "<a href='" . htmlentities($url, ENT_QUOTES) .
+      		"' onclick=\"window.open('" . htmlentities($url, ENT_QUOTES) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">" . $recaptcha_opt['mh_replace_link'] . "</a>";
+      }
+      
+      // only replace the title
+      else if ($recaptcha_opt['mh_replace_link'] == "" && $recaptcha_opt['mh_replace_title'] != "") {
+         $url = recaptcha_mailhide_url($recaptcha_opt['mailhide_pub'], $recaptcha_opt['mailhide_priv'], $matches[0]);
+         $emailparts = _recaptcha_mailhide_email_parts ($matches[0]);
+      	
+      	$html = htmlentities($emailparts[0], ENT_QUOTES) . "<a href='" . htmlentities($url, ENT_QUOTES) .
+      		"' onclick=\"window.open('" . htmlentities($url, ENT_QUOTES) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"" . $recaptcha_opt['mh_replace_title'] . "\">...</a>@" . htmlentities($emailparts[0], ENT_QUOTES);
+      }
+   }
+   
+   // style it
+   $html = '<span class="mh-plaintext">' . $html . "</span>";
+   
+   return $html;
+}
+
+// add the filters only if mcrypt is loaded
+if (extension_loaded('mcrypt')) {
+   if ($recaptcha_opt['use_mailhide_posts'])
+      add_filter('the_content', 'mh_insert_email');
+   if ($recaptcha_opt['use_mailhide_comments'])
+      add_filter('get_comment_text', 'mh_insert_email');
+   if ($recaptcha_opt['use_mailhide_rss'])
+      add_filter('the_content_rss', 'mh_insert_email');
+   if ($recaptcha_opt['use_mailhide_rss_comments'])
+      add_filter('comment_text_rss', 'mh_insert_email');
+}
+
+/* =============================================================================
+   End MailHide
+   ============================================================================= */
+
+/* =============================================================================
+   reCAPTCHA - The reCAPTCHA comment spam protection section
+   ============================================================================= */
+function recaptcha_wp_hash_comment($id)
+{
+	global $recaptcha_opt;
+   
+	if (function_exists('wp_hash'))
+		return wp_hash(RECAPTCHA_WP_HASH_COMMENT . $id);
+	else
+		return md5(RECAPTCHA_WP_HASH_COMMENT . $recaptcha_opt['privkey'] . $id);
+}
+
+function recaptcha_wp_get_html ($recaptcha_error, $use_ssl=false) {
+	global $recaptcha_opt;
+   
+	return recaptcha_get_html($recaptcha_opt['pubkey'], $recaptcha_error, $use_ssl, $recaptcha_opt['re_xhtml']);
+}
+
+/**
+ *  Embeds the reCAPTCHA widget into the comment form.
+ * 
+ */	
+function recaptcha_comment_form() {
+   global $user_ID, $recaptcha_opt;
+
+   // set the minimum capability needed to skip the captcha if there is one
+   if ($recaptcha_opt['re_bypass'] && $recaptcha_opt['re_bypasslevel'])
+      $needed_capability = $recaptcha_opt['re_bypasslevel'];
+
+	// skip the reCAPTCHA display if the minimum capability is met
+	if (($needed_capability && current_user_can($needed_capability)) || !$recaptcha_opt['re_comments'])
+		return;
+   
+   else {
+		// Did the user fail to match the CAPTCHA? If so, let them know
+		if ($_GET['rerror'] == 'incorrect-captcha-sol')
+		echo "<p class=\"recaptcha-error\">" . $recaptcha_opt['error_incorrect'] . "</p>";
+   
+		//modify the comment form for the reCAPTCHA widget
+		$recaptcha_js_opts = <<<OPTS
+		<script type='text/javascript'>
+				var RecaptchaOptions = { theme : '{$recaptcha_opt['re_theme']}', lang : '{$recaptcha_opt['re_lang']}' , tabindex : {$recaptcha_opt['re_tabindex']} };
+		</script>
+OPTS;
+
+		if ($recaptcha_opt['re_xhtml']) {
+		$comment_string = <<<COMMENT_FORM
+				<div id="recaptcha-submit-btn-area"><br /></div>
+				<script type='text/javascript'>
+				var sub = document.getElementById('submit');
+				sub.parentNode.removeChild(sub);
+				document.getElementById('recaptcha-submit-btn-area').appendChild (sub);
+				document.getElementById('submit').tabIndex = 6;
+				if ( typeof _recaptcha_wordpress_savedcomment != 'undefined') {
+						document.getElementById('comment').value = _recaptcha_wordpress_savedcomment;
+				}
+				document.getElementById('recaptcha_table').style.direction = 'ltr';
+				</script>
+COMMENT_FORM;
+		}
+		
+		else {
+		$comment_string = <<<COMMENT_FORM
+				<div id="recaptcha-submit-btn-area"></div> 
+				<script type='text/javascript'>
+				var sub = document.getElementById('submit');
+				sub.parentNode.removeChild(sub);
+				document.getElementById('recaptcha-submit-btn-area').appendChild (sub);
+				document.getElementById('submit').tabIndex = 6;
+				if ( typeof _recaptcha_wordpress_savedcomment != 'undefined') {
+						document.getElementById('comment').value = _recaptcha_wordpress_savedcomment;
+				}
+				document.getElementById('recaptcha_table').style.direction = 'ltr';
+				</script>
+				<noscript>
+				 <style type='text/css'>#submit {display:none;}</style>
+				 <input name="submit" type="submit" id="submit-alt" tabindex="6" value="Submit Comment"/> 
+				</noscript>
+COMMENT_FORM;
+		}
+
+		if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on")
+         $use_ssl = true;
+		else
+         $use_ssl = false;
+		
+		echo $recaptcha_js_opts .  recaptcha_wp_get_html($_GET['rerror'], $use_ssl) . $comment_string;
+   }
+}
+
+add_action('comment_form', 'recaptcha_comment_form');
+
+function recaptcha_wp_show_captcha_for_comment() {
+   global $user_ID;
+   return true;
+}
+
+$recaptcha_saved_error = '';
+
+/**
+ * Checks if the reCAPTCHA guess was correct and sets an error session variable if not
+ * @param array $comment_data
+ * @return array $comment_data
+ */
+function recaptcha_wp_check_comment($comment_data) {
+	global $user_ID, $recaptcha_opt;
+	global $recaptcha_saved_error;
+   	
+   // set the minimum capability needed to skip the captcha if there is one
+   if ($recaptcha_opt['re_bypass'] && $recaptcha_opt['re_bypasslevel'])
+      $needed_capability = $recaptcha_opt['re_bypasslevel'];
+        
+	// skip the filtering if the minimum capability is met
+	if (($needed_capability && current_user_can($needed_capability)) || !$recaptcha_opt['re_comments'])
+		return $comment_data;
+   
+	if (recaptcha_wp_show_captcha_for_comment()) {
+		if ( $comment_data['comment_type'] == '' ) { // Do not check trackbacks/pingbacks
+			$challenge = $_POST['recaptcha_challenge_field'];
+			$response = $_POST['recaptcha_response_field'];
+
+			$recaptcha_response = recaptcha_check_answer ($recaptcha_opt ['privkey'], $_SERVER['REMOTE_ADDR'], $challenge, $response);
+			if ($recaptcha_response->is_valid)
+				return $comment_data;
+			else {
+				$recaptcha_saved_error = $recaptcha_response->error;
+				add_filter('pre_comment_approved', create_function('$a', 'return \'spam\';'));
+				return $comment_data;
+			}
+		}
+	}
+	return $comment_data;
+}
+
+/*
+ * If the reCAPTCHA guess was incorrect from recaptcha_wp_check_comment, then redirect back to the comment form 
+ * @param string $location
+ * @param OBJECT $comment
+ * @return string $location
+ */
+function recaptcha_wp_relative_redirect($location, $comment) {
+	global $recaptcha_saved_error;
+	if($recaptcha_saved_error != '') { 
+		//replace the '#comment-' chars on the end of $location with '#commentform'.
+
+		$location = substr($location, 0,strrpos($location, '#')) .
+			((strrpos($location, "?") === false) ? "?" : "&") .
+			'rcommentid=' . $comment->comment_ID . 
+			'&rerror=' . $recaptcha_saved_error .
+			'&rchash=' . recaptcha_wp_hash_comment ($comment->comment_ID) . 
+			'#commentform';
+	}
+	return $location;
+}
+
+/*
+ * If the reCAPTCHA guess was incorrect from recaptcha_wp_check_comment, then insert their saved comment text
+ * back in the comment form. 
+ * @param boolean $approved
+ * @return boolean $approved
+ */
+function recaptcha_wp_saved_comment() {
+   if (!is_single() && !is_page())
+      return;
+
+   if ($_GET['rcommentid'] && $_GET['rchash'] == recaptcha_wp_hash_comment ($_GET['rcommentid'])) {
+      $comment = get_comment($_GET['rcommentid']);
+
+      $com = preg_replace('/([\\/\(\)\+\;\'\"])/e','\'%\'.dechex(ord(\'$1\'))', $comment->comment_content);
+      $com = preg_replace('/\\r\\n/m', '\\\n', $com);
+
+      echo "
+      <script type='text/javascript'>
+      var _recaptcha_wordpress_savedcomment =  '" . $com  ."';
+
+      _recaptcha_wordpress_savedcomment = unescape(_recaptcha_wordpress_savedcomment);
+      </script>
+      ";
+
+      wp_delete_comment($comment->comment_ID);
+   }
+}
+
+function recaptcha_wp_blog_domain () {
+	$uri = parse_url(get_settings('siteurl'));
+	return $uri['host'];
+}
+
+add_filter('wp_head', 'recaptcha_wp_saved_comment',0);
+add_filter('preprocess_comment', 'recaptcha_wp_check_comment',0);
+add_filter('comment_post_redirect', 'recaptcha_wp_relative_redirect',0,2);
+
+function recaptcha_wp_add_options_to_admin() {
+   global $wpmu;
+
+	if ($wpmu == 3 && is_super_admin()) {
+		add_submenu_page('ms-admin.php', 'reCAPTCHA', 'reCAPTCHA', 'manage_options', __FILE__, 'recaptcha_wp_options_subpanel');
+		add_options_page('reCAPTCHA', 'reCAPTCHA', 'manage_options', __FILE__, 'recaptcha_wp_options_subpanel');
+	}
+	else if ($wpmu == 1 && is_site_admin()) {
+		add_submenu_page('wpmu-admin.php', 'reCAPTCHA', 'reCAPTCHA', 'manage_options', __FILE__, 'recaptcha_wp_options_subpanel');
+		add_options_page('reCAPTCHA', 'reCAPTCHA', 'manage_options', __FILE__, 'recaptcha_wp_options_subpanel');
+	}
+	else if ($wpmu != 1) {
+		add_options_page('reCAPTCHA', 'reCAPTCHA', 'manage_options', __FILE__, 'recaptcha_wp_options_subpanel');
+	}
+}
+
+function recaptcha_wp_options_subpanel() {
+   global $wpmu;
+	// Default values for the options array
+	$optionarray_def = array(
+		'pubkey'	=> '',
+		'privkey' 	=> '',
+		'use_mailhide_posts' => '',
+		'use_mailhide_comments' => '',
+		'use_mailhide_rss' => '',
+		'use_mailhide_rss_comments' => '',
+		're_bypasslevel' => '3',
+		'mh_bypasslevel' => '3',
+		'mailhide_pub' => '',
+		'mailhide_priv' => '',
+		're_theme' => 'red',
+		're_theme_reg' => 'red',
+		're_lang' => 'en',
+		're_tabindex' => '5',
+		're_comments' => '1',
+		're_registration' => '1',
+		're_xhtml' => '0',
+      'mh_replace_link' => '',
+      'mh_replace_title' => '',
+      'error_blank' => '<strong>ERROR</strong>: Please fill in the reCAPTCHA form.',
+      'error_incorrect' => '<strong>ERROR</strong>: That reCAPTCHA response was incorrect.',
+		);
+
+	if ($wpmu != 1)
+		add_option('recaptcha', $optionarray_def, 'reCAPTCHA Options');
+
+	/* Check form submission and update options if no error occurred */
+	if (isset($_POST['submit'])) {
+		$optionarray_update = array (
+		'pubkey'	=> trim($_POST['recaptcha_opt_pubkey']),
+		'privkey'	=> trim($_POST['recaptcha_opt_privkey']),
+		'use_mailhide_posts' => $_POST['use_mailhide_posts'],
+		'use_mailhide_comments' => $_POST['use_mailhide_comments'],
+		'use_mailhide_rss' => $_POST['use_mailhide_rss'],
+		'use_mailhide_rss_comments' => $_POST['use_mailhide_rss_comments'],
+		're_bypass' => $_POST['re_bypass'],
+		're_bypasslevel' => $_POST['re_bypasslevel'],
+		'mailhide_pub' => trim($_POST['mailhide_pub']),
+		'mailhide_priv' => trim($_POST['mailhide_priv']),
+		'mh_bypass' => $_POST['mh_bypass'],
+		'mh_bypasslevel' => $_POST['mh_bypasslevel'],
+		're_theme' => $_POST['re_theme'],
+		're_theme_reg' => $_POST['re_theme_reg'],
+		're_lang' => $_POST['re_lang'],
+		're_tabindex' => $_POST['re_tabindex'],
+		're_comments' => $_POST['re_comments'],
+		're_registration' => $_POST['re_registration'],
+		're_xhtml' => $_POST['re_xhtml'],
+      'mh_replace_link' => $_POST['mh_replace_link'],
+      'mh_replace_title' => $_POST['mh_replace_title'],
+      'error_blank' => $_POST['error_blank'],
+      'error_incorrect' => $_POST['error_incorrect'],
+		);
+	// save updated options
+	if ($wpmu == 1 || $wpmu == 3)
+		update_site_option('recaptcha', $optionarray_update);
+	else
+		update_option('recaptcha', $optionarray_update);
+}
+
+	/* Get options */
+	if ($wpmu == 1 || $wpmu == 3)
+		$optionarray_def = get_site_option('recaptcha');
+   else
+		$optionarray_def = get_option('recaptcha');
+
+/* =============================================================================
+   reCAPTCHA Admin Page and Functions
+   ============================================================================= */
+   
+/*
+ * Display an HTML <select> listing the capability options for disabling security 
+ * for registered users. 
+ * @param string $select_name slug to use in <select> id and name
+ * @param string $checked_value selected value for dropdown, slug form.
+ * @return NULL
+ */
+ 
+function recaptcha_dropdown_capabilities($select_name, $checked_value="") {
+	// define choices: Display text => permission slug
+	$capability_choices = array (
+	 	'All registered users' => 'read',
+	 	'Edit posts' => 'edit_posts',
+	 	'Publish Posts' => 'publish_posts',
+	 	'Moderate Comments' => 'moderate_comments',
+	 	'Administer site' => 'level_10'
+	 	);
+	// print the <select> and loop through <options>
+	echo '<select name="' . $select_name . '" id="' . $select_name . '">' . "\n";
+	foreach ($capability_choices as $text => $capability) :
+		if ($capability == $checked_value) $checked = ' selected="selected" ';
+		echo '\t <option value="' . $capability . '"' . $checked . ">$text</option> \n";
+		$checked = NULL;
+	endforeach;
+	echo "</select> \n";
+ } // end recaptcha_dropdown_capabilities()
+   
+?>
+
+<!-- ############################## BEGIN: ADMIN OPTIONS ################### -->
+<div class="wrap">
+	<h2>reCAPTCHA Options</h2>
+	<h3>About reCAPTCHA</h3>
+	<p>reCAPTCHA is a free, accessible CAPTCHA service that helps to digitize books while blocking spam on your blog.</p>
+	
+	<p>reCAPTCHA asks commenters to retype two words scanned from a book to prove that they are a human. This verifies that they are not a spambot while also correcting the automatic scans of old books. So you get less spam, and the world gets accurately digitized books. Everybody wins! For details, visit the <a href="http://recaptcha.net/">reCAPTCHA website</a>.</p>
+   <p><strong>NOTE</strong>: If you are using some form of Cache plugin you will probably need to flush/clear your cache for changes to take effect.</p>
+   
+	<form name="form1" method="post" action="<?php echo $_SERVER['REDIRECT_SCRIPT_URI'] . '?page=' . plugin_basename(__FILE__); ?>&updated=true">
+		<div class="submit">
+			<input type="submit" name="submit" value="<?php _e('Update Options') ?> &raquo;" />
+		</div>
+	
+	<!-- ****************** Operands ****************** -->
+   <table class="form-table">
+   <tr valign="top">
+		<th scope="row">reCAPTCHA Keys</th>
+		<td>
+			reCAPTCHA requires an API key, consisting of a "public" and a "private" key. You can sign up for a <a href="<?php echo recaptcha_get_signup_url (recaptcha_wp_blog_domain (), 'wordpress');?>" target="0">free reCAPTCHA key</a>.
+			<br />
+			<p class="re-keys">
+				<!-- reCAPTCHA public key -->
+				<label class="which-key" for="recaptcha_opt_pubkey">Public Key:</label>
+				<input name="recaptcha_opt_pubkey" id="recaptcha_opt_pubkey" size="40" value="<?php  echo $optionarray_def['pubkey']; ?>" />
+				<br />
+				<!-- reCAPTCHA private key -->
+				<label class="which-key" for="recaptcha_opt_privkey">Private Key:</label>
+				<input name="recaptcha_opt_privkey" id="recaptcha_opt_privkey" size="40" value="<?php  echo $optionarray_def['privkey']; ?>" />
+			</p>
+	    </td>
+    </tr>
+  	<tr valign="top">
+		<th scope="row">Comment Options</th>
+		<td>
+			<!-- Show reCAPTCHA on the comment post -->
+			<big><input type="checkbox" name="re_comments" id="re_comments" value="1" <?php if($optionarray_def['re_comments'] == true){echo 'checked="checked"';} ?> /> <label for="re_comments">Enable reCAPTCHA for comments.</label></big>
+			<br />
+			<!-- Don't show reCAPTCHA to admins -->
+			<div class="theme-select">
+			<input type="checkbox" id="re_bypass" name="re_bypass" <?php if($optionarray_def['re_bypass'] == true){echo 'checked="checked"';} ?>/>
+			<label name="re_bypass" for="re_bypass">Hide reCAPTCHA for <strong>registered</strong> users who can:</label>
+			<?php recaptcha_dropdown_capabilities('re_bypasslevel', $optionarray_def['re_bypasslevel']); // <select> of capabilities ?>
+			</div>
+
+			<!-- The theme selection -->
+			<div class="theme-select">
+			<label for="re_theme">Theme:</label>
+			<select name="re_theme" id="re_theme">
+			<option value="red" <?php if($optionarray_def['re_theme'] == 'red'){echo 'selected="selected"';} ?>>Red</option>
+			<option value="white" <?php if($optionarray_def['re_theme'] == 'white'){echo 'selected="selected"';} ?>>White</option>
+			<option value="blackglass" <?php if($optionarray_def['re_theme'] == 'blackglass'){echo 'selected="selected"';} ?>>Black Glass</option>
+			<option value="clean" <?php if($optionarray_def['re_theme'] == 'clean'){echo 'selected="selected"';} ?>>Clean</option>
+			</select>
+			</div>
+			<!-- Tab Index -->
+			<label for="re_tabindex">Tab Index (<em>e.g. WP: <strong>5</strong>, WPMU: <strong>3</strong></em>):</label>
+			<input name="re_tabindex" id="re_tabindex" size="5" value="<?php  echo $optionarray_def['re_tabindex']; ?>" />
+			<br />
+			<?php global $wpmu; if ($wpmu == 1 || $wpmu == 0 || $wpmu == 3) { ?>
+		</td>
+	</tr>
+	<tr valign="top">
+		<th scope="row">Registration Options</th>
+		<td>
+			<!-- Show reCAPTCHA on the registration page -->
+			<big><input type="checkbox" name="re_registration" id="re_registration" value="1" <?php if($optionarray_def['re_registration'] == true){echo 'checked="checked"';} ?> /> <label for="re_registration">Enable reCAPTCHA on registration form.</label></big>
+			<br />
+			<!-- The theme selection -->
+			<div class="theme-select">
+				<label for="re_theme_reg">Theme:</label>
+				<select name="re_theme_reg" id="re_theme_reg">
+				<option value="red" <?php if($optionarray_def['re_theme_reg'] == 'red'){echo 'selected="selected"';} ?>>Red</option>
+				<option value="white" <?php if($optionarray_def['re_theme_reg'] == 'white'){echo 'selected="selected"';} ?>>White</option>
+				<option value="blackglass" <?php if($optionarray_def['re_theme_reg'] == 'blackglass'){echo 'selected="selected"';} ?>>Black Glass</option>
+				<option value="clean" <?php if($optionarray_def['re_theme_reg'] == 'clean'){echo 'selected="selected"';} ?>>Clean</option>
+				</select>
+			</div>
+			<?php } ?>
+		</td>
+	</tr>
+   <tr valign="top">
+      <th scope="row">Error Messages</th>
+         <td>
+            <p>The following are the messages to display when the user does not enter a CAPTCHA response or enters the incorrect CAPTCHA response.</p>
+            <!-- Error Messages -->
+            <p class="re-keys">
+               <!-- Blank -->
+      			<label class="which-key" for="error_blank">No response entered:</label>
+      			<input name="error_blank" id="error_blank" size="80" value="<?php echo $optionarray_def['error_blank']; ?>" />
+      			<br />
+      			<!-- Incorrect -->
+      			<label class="which-key" for="error_incorrect">Incorrect response entered:</label>
+      			<input name="error_incorrect" id="error_incorrect" size="80" value="<?php echo $optionarray_def['error_incorrect']; ?>" />
+      		</p>
+         </td>
+      </th>
+   </tr>
+	 <tr valign="top">
+			<th scope="row">General Settings</th>
+			<td>
+				<!-- The language selection -->
+				<div class="lang-select">
+				<label for="re_lang">Language:</label>
+				<select name="re_lang" id="re_lang">
+				<option value="en" <?php if($optionarray_def['re_lang'] == 'en'){echo 'selected="selected"';} ?>>English</option>
+				<option value="nl" <?php if($optionarray_def['re_lang'] == 'nl'){echo 'selected="selected"';} ?>>Dutch</option>
+				<option value="fr" <?php if($optionarray_def['re_lang'] == 'fr'){echo 'selected="selected"';} ?>>French</option>
+				<option value="de" <?php if($optionarray_def['re_lang'] == 'de'){echo 'selected="selected"';} ?>>German</option>
+				<option value="pt" <?php if($optionarray_def['re_lang'] == 'pt'){echo 'selected="selected"';} ?>>Portuguese</option>
+				<option value="ru" <?php if($optionarray_def['re_lang'] == 'ru'){echo 'selected="selected"';} ?>>Russian</option>
+				<option value="es" <?php if($optionarray_def['re_lang'] == 'es'){echo 'selected="selected"';} ?>>Spanish</option>
+				<option value="tr" <?php if($optionarray_def['re_lang'] == 'tr'){echo 'selected="selected"';} ?>>Turkish</option>
+				</select>
+				</label>
+		    	</div>
+		    	<!-- Whether or not to be XHTML 1.0 Strict compliant -->
+				<input type="checkbox" name="re_xhtml" id="re_xhtml" value="1" <?php if($optionarray_def['re_xhtml'] == true){echo 'checked="checked"';} ?> /> <label for="re_xhtml">Be XHTML 1.0 Strict compliant. <strong>Note</strong>: Bad for users who don't have Javascript enabled in their browser (Majority do).</label>
+				<br />
+			</td>
+		</tr>
+	</table>
+	
+	<h3>About MailHide</h3>
+	<p><a href="http://mailhide.recaptcha.net/" title="mailhide email obfuscation">MailHide</a> uses reCAPTCHA to protect email adresses displayed on your blog from being harvested for spam.</p>
+	<p>Activating MailHide will automatically hide all emails in posts and comments from spam bots. For example, support@recaptcha.net would become supp<a href="http://mailhide.recaptcha.net/d?k=01a8k2oW96qNZ4JhiFx5zDRg==&amp;c=yifPREOOvfzA0o3dbnnwP8fy91UD8RL4SspHDIKHVRE=" onclick="window.open('http://mailhide.recaptcha.net/d?k=01a8k2oW96qNZ4JhiFx5zDRg==&amp;c=yifPREOOvfzA0o3dbnnwP8fy91UD8RL4SspHDIKHVRE=', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;" title="Reveal this e-mail address">...</a>@recaptcha.net. There are also options below for choosing the text to show for hidden emails.</p>
+	<p>MailHide also requires a public and private key which you can generate using the <a href="http://mailhide.recaptcha.net/apikey">key generation service</a>.</p>
+	<table class="form-table">
+	<tr valign="top">
+	<th scope="row">MailHide Keys</th>
+	<td>
+		<!-- MailHide Enabler -->
+		<big>Enable MailHide email obfuscation for:</big><br />
+		   <input type="checkbox" name="use_mailhide_posts" id="use_mailhide_posts" value="1" <?php if($optionarray_def['use_mailhide_posts'] == true){echo 'checked="checked"';} ?> /><label for="use_mailhide_posts">Posts/Pages</label><br />
+		   <input type="checkbox" name="use_mailhide_comments" id="use_mailhide_comments" value="1" <?php if($optionarray_def['use_mailhide_comments'] == true){echo 'checked="checked"';} ?> /><label for="use_mailhide_comments">Comments</label><br />
+		   <input type="checkbox" name="use_mailhide_rss" id="use_mailhide_rss" value="1" <?php if($optionarray_def['use_mailhide_rss'] == true){echo 'checked="checked"';} ?> /><label for="use_mailhide_rss">RSS Feed of Posts/Pages</label><br />
+		   <input type="checkbox" name="use_mailhide_rss_comments" id="use_mailhide_rss_comments" value="1" <?php if($optionarray_def['use_mailhide_rss_comments'] == true){echo 'checked="checked"';} ?> /><label for="use_mailhide_rss_comments">RSS Feed of Comments</label><br />
+		<!-- Public Key -->
+		<p class="re-keys">
+			<label class="which-key" for="mailhide_pub">Public Key:</label>
+			<input name="mailhide_pub" id="mailhide_pub" size="40" value="<?php echo $optionarray_def['mailhide_pub']; ?>" />
+			<br />
+			<!-- Private Key -->
+			<label class="which-key" for="mailhide_priv">Private Key:</label>
+			<input name="mailhide_priv" id="mailhide_priv" size="40" value="<?php echo $optionarray_def['mailhide_priv']; ?>" />
+		</p>
+   </td>
+   </tr>
+   <tr valign="top">
+   <th scope="row">Visibility Options</th>
+   <td>
+		<!-- Don't show mailhide to users who can... -->
+		<div class="theme-select">
+			<input type="checkbox" id="mh_bypass" name="mh_bypass" <?php if($optionarray_def['mh_bypass'] == true){echo 'checked="checked"';} ?>/>
+			<label for="mh_bypass">Show full email adresses to <strong>registered</strong> users who can:</label>
+			<?php recaptcha_dropdown_capabilities('mh_bypasslevel', $optionarray_def['mh_bypasslevel']); // <select> of capabilities ?>
+		</div>
+      <!-- Email Replacement Text -->
+      <p class="re-keys">
+         <p>The following allows you to show the replaced links differently. Usually, you get something like this, supp<a href="http://mailhide.recaptcha.net/d?k=01a8k2oW96qNZ4JhiFx5zDRg==&amp;c=yifPREOOvfzA0o3dbnnwP8fy91UD8RL4SspHDIKHVRE=" onclick="window.open('http://mailhide.recaptcha.net/d?k=01a8k2oW96qNZ4JhiFx5zDRg==&amp;c=yifPREOOvfzA0o3dbnnwP8fy91UD8RL4SspHDIKHVRE=', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;" title="Reveal this e-mail address">...</a>@recaptcha.net , where the email is broken up into two pieces and then a link with dots is placed in the middle. The <strong>Email Replacement Text</strong> value lets you choose what to name the link and then the <strong>Reveal Link Title</strong> value determines the text that is shown when the link is hovered over.</p>
+         <p>For example, if the <strong>Email Replacement Text</strong> option is set to <strong>HIDDEN EMAIL</strong> and the <strong>Reveal Link Title</strong> option is set to <strong>Click here to reveal this address</strong>, then ALL emails will be hidden like this: <a href="http://mailhide.recaptcha.net/d?k=01a8k2oW96qNZ4JhiFx5zDRg==&amp;c=yifPREOOvfzA0o3dbnnwP8fy91UD8RL4SspHDIKHVRE=" onclick="window.open('http://mailhide.recaptcha.net/d?k=01a8k2oW96qNZ4JhiFx5zDRg==&amp;c=yifPREOOvfzA0o3dbnnwP8fy91UD8RL4SspHDIKHVRE=', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;" title="Click here to reveal this address">HIDDEN EMAIL</a></p>
+         <p>If you want to maintain the default method of hiding emails then leave both boxes blank.</p>
+         <label class="whch-key" for="mh_replace_link">EMail Replacement Text:</label>
+         <input name="mh_replace_link" id="mh_replace_link" size="40" value="<?php echo $optionarray_def['mh_replace_link']; ?>" />
+         <br />
+         <label class="which-key" for="mh_replace_title">Reveal Link Title:</label>
+         <input name="mh_replace_title" id="mh_replace_title" size="40" value="<?php echo $optionarray_def['mh_replace_title']; ?>" />
+      </p>
+   </td>
+   </tr>
+   <tr valign="top">
+   <th scope="row">Other Information</th>
+   <td>
+		<!-- MailHide CSS -->
+		<p>CSS: You can style the hidden emails and much more in the <strong>recaptcha.css</strong> stylesheet in wp-recaptcha's plugin folder.</p>
+		<p>You can bypass email hiding for an address by enclosing it within <strong>[nohide][/nohide]</strong>, ex. [nohide]some@email.com[/nohide].</p>
+	</td>
+	</tr>
+	</table>
+	<div class="submit">
+		<input type="submit" name="submit" value="<?php _e('Update Options') ?> &raquo;" />
+	</div>
+
+	</form>
+   <p class="copyright">&copy; Copyright 2008&nbsp;&nbsp;<a href="http://recaptcha.net">reCAPTCHA</a></p>
+</div> <!-- [wrap] -->
+<!-- ############################## END: ADMIN OPTIONS ##################### -->
+
+<?php
+}
+
+/* =============================================================================
+   Apply the admin menu
+============================================================================= */
+
+add_action('admin_menu', 'recaptcha_wp_add_options_to_admin');
+
+// If no reCAPTCHA API keys have been entered
+if ( !($recaptcha_opt ['pubkey'] && $recaptcha_opt['privkey'] ) && !isset($_POST['submit']) ) {
+   function recaptcha_warning() {
+		global $wpmu;
+		
+		$path = plugin_basename(__FILE__);
+		$top = 0;
+		if ($wp_version <= 2.5)
+		$top = 12.7;
+		else
+		$top = 7;
+		echo "
+		<div id='recaptcha-warning' class='updated fade-ff0000'><p><strong>reCAPTCHA is not active</strong> You must <a href='options-general.php?page=" . $path . "'>enter your reCAPTCHA API key</a> for it to work</p></div>
+		<style type='text/css'>
+		#adminmenu { margin-bottom: 5em; }
+		#recaptcha-warning { position: absolute; top: {$top}em; }
+		</style>
+		";
+   }
+   
+   if (($wpmu == 1 && is_site_admin()) || $wpmu != 1)
+		add_action('admin_footer', 'recaptcha_warning');
+   
+   return;
+}
+
+$mailhide_enabled = ($recaptcha_opt['use_mailhide_posts'] || $recaptcha_opt['use_mailhide_comments'] || $recaptcha_opt['use_mailhide_rss'] || $recaptcha_opt['use_mailhide_rss_comments']);
+
+// If the mcrypt PHP module isn't loaded then display an alert
+if (($mailhide_enabled && !extension_loaded('mcrypt')) && !isset($_POST['submit'])) {
+   function mcrypt_warning() {
+		global $wpmu;
+		
+		$path = plugin_basename(__FILE__);
+		$top = 0;
+		if ($wp_version <= 2.5)
+		$top = 12.7;
+		else
+		$top = 7;
+		echo "
+		<div id='recaptcha-warning' class='updated fade-ff0000'><p><strong>MailHide is not active</strong> You must have the <a href='http://us3.php.net/mcrypt'>mcrypt</a> module loaded for it to work</p></div>
+		<style type='text/css'>
+		#adminmenu { margin-bottom: 5em; }
+		#recaptcha-warning { position: absolute; top: {$top}em; }
+		</style>
+		";
+   }
+   
+   if (($wpmu == 1 && is_site_admin()) || $wpmu != 1)
+		add_action('admin_footer', 'mcrypt_warning');
+   
+   return;
+}
+
+// If MailHide is enabled but no keys have been entered
+if ($mailhide_enabled && !($recaptcha_opt['mailhide_pub'] && $recaptcha_opt['mailhide_pub']) && !isset($_POST['submit'])) {
+	function mailhide_warning() {
+		global $wpmu;
+		
+		$path = plugin_basename(__FILE__);
+		$top = 0;
+      
+		if ($wp_version <= 2.5)
+         $top = 12.7;
+		else
+         $top = 7;
+         
+		echo "
+		<div id='recaptcha-warning' class='updated fade-ff0000'><p><strong>MailHide is not active</strong> You must <a href='options-general.php?page=" . $path . "'>enter your MailHide API keys</a> for it to work</p></div>
+		<style type='text/css'>
+		#adminmenu { margin-bottom: 5em; }
+		#recaptcha-warning { position: absolute; top: {$top}em; }
+		</style>
+		";
+	}
+      
+   if (($wpmu == 1 && is_site_admin()) || $wpmu != 1)
+		add_action('admin_footer', 'mailhide_warning');
+   
+	return;
+}
+
+/* =============================================================================
+   End Apply the admin menu
+============================================================================= */
+?>
\ No newline at end of file