--- webform_validation.validators.inc	2009-11-16 08:03:32.000000000 -0800
+++ webform_validation.validators.inc	2010-01-19 13:08:06.000000000 -0800
@@ -21,6 +21,13 @@
  */
 function webform_validation_webform_validation_validators() {
   return array(
+    'valid_email' => array(
+      'name' => "Valid Email",
+      'component_types' => array(
+        'textfield',
+        'email',
+      ),
+    ),
     'numeric' => array(
       'name' => "Numeric values",
       'component_types' => array(
@@ -99,9 +106,18 @@ function webform_validation_webform_vali
 function webform_validation_webform_validation_validate($validator_name, $items, $components, $rule) {
   if ($items) {
     switch ($validator_name) {
+      case "valid_email":
+        $regex = $rule['data'];
+        foreach ($items as $key => $val) {
+          if (($val)&&(!filter_var($val, FILTER_VALIDATE_EMAIL))) {
+            $errors[$key] = t('%item is not a valid email address', array('%item' => $components[$key]['name']));
+          }
+        }
+        return $errors;
+        break;
       case 'numeric':
         foreach ($items as $key => $val) {
-          if (!is_numeric($val)) {
+          if (($val)&&(!is_numeric($val))) {
             $errors[$key] = t('%item is not numeric', array('%item' => $components[$key]['name']));
           }
         }
@@ -110,7 +126,7 @@ function webform_validation_webform_vali
       case 'min_length':
         $min_length = $rule['data'];
         foreach ($items as $key => $val) {
-          if (drupal_strlen($val) < $min_length) {
+          if (($val)&&(drupal_strlen($val) < $min_length)) {
             $errors[$key] = t('%item needs to be at least %num characters long', array('%item' => $components[$key]['name'], '%num' => $min_length));
           }
         }
@@ -119,7 +135,7 @@ function webform_validation_webform_vali
       case 'max_length':
         $max_length = $rule['data'];
         foreach ($items as $key => $val) {
-          if (drupal_strlen($val) > $max_length) {
+          if (($val)&&(drupal_strlen($val) > $max_length)) {
             $errors[$key] = t('%item can be maximum %num characters long', array('%item' => $components[$key]['name'], '%num' => $max_length));
           }
         }
@@ -158,7 +174,7 @@ function webform_validation_webform_vali
       case "regex":
         $regex = $rule['data'];
         foreach ($items as $key => $val) {
-          if (!preg_match("/$regex/", $val)) {
+          if (($val)&&(!preg_match("/$regex/", $val))) {
             $errors[$key] = $rule['error_message'];
           }
         }
