--- webform_encrypt.module.orig	2012-03-26 16:34:29.377297200 +0800
+++ webform_encrypt.module	2012-03-27 14:38:41.007606700 +0800
@@ -99,12 +99,28 @@
   foreach ($renderable['#submission']->data as $cid => $entry) {
     if (isset($renderable['#node']->webform['components'][$cid]['extra']['encrypt']) &&
         $renderable['#node']->webform['components'][$cid]['extra']['encrypt']) {
+        
       $form_key = $renderable['#node']->webform['components'][$cid]['form_key'];
-      if (user_access('view encrypted values', $account)) {
-        $renderable[$form_key]['#value'] = decrypt($entry['value'][0], array('base64' => TRUE));
-      } else {
-        $renderable[$form_key]['#value'] = t('[Value Encrypted]');
+      $pid = $renderable['#node']->webform['components'][$cid]['pid'];
+      $parents = array();
+      while ($pid > 0) {
+        $parent_key = $renderable['#node']->webform['components'][$pid]['form_key'];
+        $parents[] = array('form_key' => $parent_key, 'cid' => $pid);
+        $pid = $renderable['#node']->webform['components'][$pid]['pid'];
       }
+      
+      if (empty($parents)) {
+        $component = &$renderable[$form_key];
+      }
+      else {
+        $parents = array_reverse($parents);
+        $component = &$renderable;
+        foreach($parents as $parent) $component = &$component[$parent['form_key']];
+        $component = &$component[$form_key];
+      }
+      
+      $key = (empty($renderable['#email']) && !empty($component['#markup'])) ? '#markup' : '#value';
+      $component[$key] = (user_access('view encrypted values', $account)) ? decrypt($entry['value'][0], array('base64' => TRUE)) : t('[Value Encrypted]');          
     }
   }
 }
