--- original.views_calc.module	Tue Jan 16 22:59:12 2007
+++ views_calc.module	Fri Jul 13 13:10:27 2007
@@ -145,6 +145,24 @@ function views_calc_settings($page = '')
           '#options' => $calcs,
           '#multiple' => TRUE,
           );
+        $form['views_calc'][$val]['views_calc_'.$val.'_row_calc_formatter'] = array(
+          '#type' => 'select',
+          '#title' => t('Option on how to display the result'),
+          '#default_value' => variable_get('views_calc_'.$val.'_row_calc_formatter', ''),
+          '#options' => views_calc_calc_formatter(),
+          '#multiple' => FALSE,
+          );
+        $form['views_calc'][$val]['views_calc_'.$val.'_row_calc_prefix'] = array(
+          '#type' => 'textfield',
+          '#title' => t('Prefix the result'),
+          '#default_value' => variable_get('views_calc_'.$val.'_row_calc_prefix', ''),
+          );
+        $form['views_calc'][$val]['views_calc_'.$val.'_row_calc_suffix'] = array(
+          '#type' => 'textfield',
+          '#title' => t('Suffix the result'),
+          '#default_value' => variable_get('views_calc_'.$val.'_row_calc_suffix', ''),
+          );
+
         $form['views_calc'][$val]['views_calc_'.$val.'_col'] = array(
           '#type' => 'select',
           '#title' => t('Columns for column calculation'),
@@ -160,6 +178,24 @@ function views_calc_settings($page = '')
           '#options' => $calcs,
           '#multiple' => TRUE,
           );
+        $form['views_calc'][$val]['views_calc_'.$val.'_col_calc_formatter'] = array(
+          '#type' => 'select',
+          '#title' => t('Option on how to display the result'),
+          '#default_value' => variable_get('views_calc_'.$val.'_col_calc_formatter', ''),
+          '#options' => views_calc_calc_formatter(),
+          '#multiple' => FALSE,
+          );
+        $form['views_calc'][$val]['views_calc_'.$val.'_col_calc_prefix'] = array(
+          '#type' => 'textfield',
+          '#title' => t('Prefix the result'),
+          '#default_value' => variable_get('views_calc_'.$val.'_col_calc_prefix', ''),
+          );
+        $form['views_calc'][$val]['views_calc_'.$val.'_col_calc_suffix'] = array(
+          '#type' => 'textfield',
+          '#title' => t('Suffix the result'),
+          '#default_value' => variable_get('views_calc_'.$val.'_col_calc_suffix', ''),
+          );
+
         $found = true;
       }
     }
@@ -174,6 +210,80 @@ function views_calc_settings($page = '')
 }
 
 /**
+ *  Formatter options for the result, based on CCK number.module
+ */
+function views_calc_calc_formatter() {
+
+  return array(
+    'default' => '9999',
+    'us_0'    => '9,999',
+    'us_1'    => '9,999.9',
+    'us_2'    => '9,999.99',
+    'be_0'    => '9.999',   
+    'be_1'    => '9.999,9', 
+    'be_2'    => '9.999,99',
+    'fr_0'    => '9 999',   
+    'fr_1'    => '9 999, 9',
+    'fr_2'    => '9 999, 99',
+    'unformatted' => 'unformatted',
+  );
+}
+
+/**
+ * Display formatted result, based on CCK number.module
+ */
+function views_calc_calc_formatter_display ($data, $formatter, $prefix, $suffix) {
+  // If the value is empty, we have $data = NULL
+  if (is_null($data)) {
+    return '';
+  }
+
+  $data = check_plain($data);
+  $prefix = check_plain($prefix);
+  $suffix = check_plain($suffix);
+
+  if ($formatter == 'unformatted') {
+    return $data;
+  }
+
+  switch ($formatter) {
+  case 'us_0':
+    $value = number_format($data, 0, '.', ',');
+    break;
+  case 'us_1':
+    $value = number_format($data, 1, '.', ',');
+    break;
+  case 'us_2':
+    $value = number_format($data, 2, '.', ',');
+    break;
+  case 'be_0':
+    $value = number_format($data, 0, ',', ' ');
+    break;
+  case 'be_1':
+    $value = number_format($data, 1, ',', '.');
+    break;
+  case 'be_2':
+    $value = number_format($data, 2, ',', '.');
+    break;
+  case 'fr_0':
+    $value = number_format($data, 0, ', ', ' ');
+    break;
+  case 'fr_1':
+    $value = number_format($data, 1, ', ', ' ');
+    break;
+  case 'fr_2':
+    $value = number_format($data, 2, ', ', ' ');
+    break;
+  default:
+    $value = ($data);
+    break;
+  }
+
+  return $prefix . $value . $suffix;
+
+}
+
+/**
  *  Implementation of views_style_plugins() from views.module
  */
 function views_calc_views_style_plugins() {
@@ -241,7 +351,15 @@ function views_calc_calc_view(&$view, &$
   $cols     = (array) variable_get('views_calc_'.$view_calc.'_col','');
   $col_calc = (array) variable_get('views_calc_'.$view_calc.'_col_calc','');
   $calc_options = (array) views_calc_calc_options();
-  
+
+  $col_calc_formatter = variable_get('views_calc_'.$view_calc.'_col_calc_formatter','');
+  $col_calc_prefix = variable_get('views_calc_'.$view_calc.'_col_calc_prefix','');
+  $col_calc_suffix = variable_get('views_calc_'.$view_calc.'_col_calc_suffix','');
+
+  $row_calc_formatter = variable_get('views_calc_'.$view_calc.'_row_calc_formatter','');
+  $row_calc_prefix = variable_get('views_calc_'.$view_calc.'_row_calc_prefix','');
+  $row_calc_suffix = variable_get('views_calc_'.$view_calc.'_row_calc_suffix','');
+
   $row_total = 0;
   $row_count = 0;
   $row_count_filled = 0;
@@ -272,16 +390,16 @@ function views_calc_calc_view(&$view, &$
           if (in_array($field, $rows)) {
             switch ($calc) {
             case ('COUNT'):
-              $add[$calc_options[$calc]] = $row_count;
+              $add[$calc_options[$calc]] = views_calc_calc_formatter_display($row_count, $row_calc_formatter, $row_calc_prefix, $row_calc_suffix);
               break;
             case ('AVERAGE'):
-              $add[$calc_options[$calc]] = $row_count_filled > 0 ? round($row_total / $row_count_filled, 2) : 0;
+              $add[$calc_options[$calc]] = views_calc_calc_formatter_display($row_count_filled > 0 ? round($row_total / $row_count_filled, 2) : 0, $row_calc_formatter, $row_calc_prefix, $row_calc_suffix);
               break;
             case ('AVERAGE_ALL'):
-              $add[$calc_options[$calc]] = $row_count > 0 ? round($row_total / $row_count, 2) : 0;
+              $add[$calc_options[$calc]] = views_calc_calc_formatter_display($row_count > 0 ? round($row_total / $row_count, 2) : 0, $row_calc_formatter, $row_calc_prefix, $row_calc_suffix);
               break;
             default:
-              $add[$calc_options[$calc]] = $row_total;
+              $add[$calc_options[$calc]] = views_calc_calc_formatter_display($row_total, $row_calc_formatter, $row_calc_prefix, $row_calc_suffix);
               break;
             }
           }
@@ -313,16 +431,16 @@ function views_calc_calc_view(&$view, &$
         // this is one of the items being calculated
         switch ($calc) {
         case ('COUNT'):
-          $add[$calc_options[$calc]][$field] = $col_count[$field];
+          $add[$calc_options[$calc]][$field] = views_calc_calc_formatter_display($col_count[$field], $col_calc_formatter, $col_calc_prefix, $col_calc_suffix);
           break;
         case ('AVERAGE'):
-          $add[$calc_options[$calc]][$field] = $col_count_filled[$field] > 0 ? round(($col_total[$field] / $col_count_filled[$field]), 2) : 0;
+          $add[$calc_options[$calc]][$field] = views_calc_calc_formatter_display($col_count_filled[$field] > 0 ? round(($col_total[$field] / $col_count_filled[$field]), 2) : 0, $col_calc_formatter, $col_calc_prefix, $col_calc_suffix);
           break;
         case ('AVERAGE_ALL'):
-          $add[$calc_options[$calc]][$field] = $col_count[$field] > 0 ? round(($col_total[$field] / $col_count[$field]), 2) : 0;
+          $add[$calc_options[$calc]][$field] = views_calc_calc_formatter_display($col_count[$field] > 0 ? round(($col_total[$field] / $col_count[$field]), 2) : 0, $col_calc_formatter, $col_calc_prefix, $col_calc_suffix);
           break;
         default:
-          $add[$calc_options[$calc]][$field] = $col_total[$field];
+          $add[$calc_options[$calc]][$field] = views_calc_calc_formatter_display($col_total[$field], $col_calc_formatter, $col_calc_prefix, $col_calc_suffix);
           break;
         }
     
