Index: uc_aac.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/uc_aac/uc_aac.js,v
retrieving revision 1.1
diff -u -p -r1.1 uc_aac.js
--- uc_aac.js	4 Nov 2009 19:04:50 -0000	1.1
+++ uc_aac.js	7 Nov 2009 00:30:40 -0000
@@ -30,6 +30,9 @@ jQuery.fn.uc_aac_attach = function() {
   $(this).find('input:radio[@name^=attributes]').click(function() {
     uc_aac_calculate(this);
   });
+  $(this).find('input:checkbox[@name^=attributes]').click(function() {
+    uc_aac_calculate(this);
+  });
 }
 
 $(function() {
Index: uc_aac.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/uc_aac/uc_aac.module,v
retrieving revision 1.10
diff -u -p -r1.10 uc_aac.module
--- uc_aac.module	4 Nov 2009 19:04:50 -0000	1.10
+++ uc_aac.module	7 Nov 2009 00:30:40 -0000
@@ -49,16 +49,40 @@ function uc_aac_form_alter(&$form, $form
         $form['qty']['#default_value'] = $form['#parameters'][2]->default_qty;
   
         foreach (element_children($form['attributes']) as $aid) {
-          $selected_oid = $form['#parameters'][2]->attributes[$aid]->default_option;
-          $form['attributes'][$aid]['#default_value'] = $selected_oid;
-  
           // Reset options for each $aid
           $options = array();
   
-          foreach ($form['#parameters'][2]->attributes[$aid]->options as $option) {
-            $price = $option->price - $form['#parameters'][2]->attributes[$aid]->options[$selected_oid]->price;
-            $options[$option->oid] = $option->name . ($price != 0 ? ', '. ($price > 0 ? '+' : '') . uc_currency_format($price) : '');
+          if ($form['attributes'][$aid]['#type'] == 'select' || $form['attributes'][$aid]['#type'] == 'radios') {
+            $selected_oid = $form['#parameters'][2]->attributes[$aid]->default_option;
+            $form['attributes'][$aid]['#default_value'] = $selected_oid;
+
+            // Rebuild option text
+            foreach ($form['#parameters'][2]->attributes[$aid]->options as $option) {
+              $price = $option->price - $form['#parameters'][2]->attributes[$aid]->options[$selected_oid]->price;
+              $options[$option->oid] = $option->name . ($price != 0 ? ', '. ($price > 0 ? '+' : '') . uc_currency_format($price) : '');
+            }
+          }
+          elseif ($form['attributes'][$aid]['#type'] == 'checkboxes') {
+            // TODO: Find out why the default option is not always an array.
+            $selected_oid = $form['#parameters'][2]->attributes[$aid]->default_option;
+            if (!is_array($selected_oid)) {
+              $selected_oid = array();
+            }
+            $form['attributes'][$aid]['#default_value'] = $selected_oid;
+
+            // Rebuild option text
+            foreach ($form['#parameters'][2]->attributes[$aid]->options as $option) {
+              // Negate selected options
+              if (in_array($option->oid, $selected_oid)) {
+                $price = -$option->price;
+              }
+              else {
+                $price = $option->price;
+              }
+              $options[$option->oid] = $option->name . ($price != 0 ? ', '. ($price > 0 ? '+' : '') . uc_currency_format($price) : '');
+            }
           }
+
           $form['attributes'][$aid]['#options'] = $options;
         }
       }
