=== modified file 'uc_cart/uc_cart.module'
--- uc_cart/uc_cart.module	2009-02-13 15:43:12 +0000
+++ uc_cart/uc_cart.module	2009-02-17 21:13:39 +0000
@@ -211,7 +211,7 @@
 function uc_cart_theme() {
   return array(
     'uc_cart_block_title' => array(
-      'arguments' => array('title' => NULL, 'title_class' => NULL, 'cart_image' => FALSE, 'arrow_up_image' => FALSE),
+      'arguments' => array('title' => NULL, 'icon_class' => FALSE, 'collapsible' => FALSE),
     ),
     'uc_cart_block_title_icon' => array(
       'arguments' => array(),
@@ -393,12 +393,10 @@
         if (!$cachable && variable_get('uc_cart_block_collapsible', TRUE)) {
           drupal_add_js(array('ucCollapsedBlock' => variable_get('uc_cart_block_collapsed', TRUE)), 'setting');
           drupal_add_js(drupal_get_path('module', 'uc_cart') .'/uc_cart_block.js');
-          $arrow_up_image = $uc_cart_path .'/images/bullet-arrow-up.gif';
-          $title_class = 'block-cart-title-bar cart-block-toggle';
+          $collapsible = TRUE;
         }
         else {
-          $arrow_up_image = FALSE;
-          $title_class = 'block-cart-title-bar';
+          $collapsible = FALSE;
         }
 
         // Build the cart image if enabled.
@@ -406,15 +404,15 @@
           // If the cart is empty or we need a cachable cart block...
           if ($cachable || !$product_count) {
             // Use the "empty" cart icon.
-            $cart_image = $uc_cart_path .'/images/cart_empty.gif';
+            $icon_class = 'cart-block-icon-empty';
           }
           else {
             // Otherwise use the "full" cart icon.
-            $cart_image = $uc_cart_path .'/images/cart_full.gif';
+            $icon_class = 'cart-block-icon-full';
           }
         }
         else {
-          $cart_image = FALSE;
+          $icon_class = FALSE;
         }
 
         // Set the text of the block title.
@@ -429,7 +427,7 @@
           // Caching is turned on and the user is not logged in, so we should
           // deliver a block that is safe for caching.
           $block = array(
-            'subject' => theme('uc_cart_block_title', $title, $title_class, $cart_image),
+            'subject' => theme('uc_cart_block_title', $title, $icon_class, $collapsible),
             'content' => theme('uc_cart_block_content_cachable'),
           );
         }
@@ -486,7 +484,7 @@
           }
 
           $block = array(
-            'subject' => theme('uc_cart_block_title', $title, $title_class, $cart_image, $arrow_up_image),
+            'subject' => theme('uc_cart_block_title', $title, $icon_class, $collapsible),
             'content' => theme('uc_cart_block_content', $help_text, $items, $item_count, $item_text, $total, $summary_links),
           );
         }
@@ -559,32 +557,29 @@
  *
  * @param $title
  *   The text to use for the title of the block.
- * @param $title_class
- *   The class to assign to the title's span based on collapsibility settings.
- * @param $cart_image
- *   Filepath to the shopping cart icon to use or FALSE if the icon is disabled.
- * @param $arrow_up_image
- *   Filepath to the arrow up image or FALSE if collapsibility is disabled.
+ * @param $icon_class
+ *   Class to use for the cart icon image or FALSE if the icon is disabled.
+ * @param $collapsible
+ *   TRUE or FALSE indicating whether or not the cart block is collapsible.
  * @ingroup themeable
  */
-function theme_uc_cart_block_title($title, $title_class, $cart_image = FALSE, $arrow_up_image = FALSE) {
+function theme_uc_cart_block_title($title, $icon_class = 'cart-empty', $collapsible = TRUE) {
   $output = '';
 
   // Add in the cart image if specified.
-  if ($cart_image) {
-    $output .= theme('uc_cart_block_title_icon', $cart_image);
-  }
-
-  // Add the main title span and text.
-  $output .= '<span class="'. $title_class .'" id="block-cart-title-bar-text">'
-            .'<span id="block-cart-title">'. $title .'</span></span>';
-
-
-  // Add the arrow image if specified.
-  if ($arrow_up_image) {
-    $output .= '<span class="block-cart-title-bar cart-block-toggle" id="block-cart-title-bar-arrow">'
-             . theme('image', $arrow_up_image, '[]', t('Expand the cart block.'), array('id' => 'block-cart-title-arrow'))
-              .'</span>';
+  if ($icon_class) {
+    $output .= theme('uc_cart_block_title_icon', $icon_class);
+  }
+
+  // Add the main title span and text, with or without the arrow based on the
+  // cart block collapsibility settings.
+  if ($collapsible) {
+    $output .= '<span class="cart-block-title-bar" alt="'. t('Show/hide shopping cart contents.')
+              .'" title="'. t('Show/hide shopping cart contents.') .'"><span class="cart-block-title-text">'
+             . $title .'</span><span class="cart-block-arrow"></span></span>';
+  }
+  else {
+    $output .= '<span class="cart-block-title-bar"><span class="cart-block-title-text">'. $title .'</span></span>';
   }
 
   return $output;
@@ -593,12 +588,12 @@
 /**
  * Theme the shopping cart icon.
  *
- * @param $cart_image
- *   Filepath to the shopping cart icon to use.
+ * @param $icon_class
+ *   Class to use for the cart icon image, either cart-full or cart-empty.
  * @ingroup themeable
  */
-function theme_uc_cart_block_title_icon($cart_image) {
-  return l(theme('image', $cart_image, '', t('Shopping cart'), array('id' => 'block-cart-title-image')), 'cart', array('html' => TRUE));
+function theme_uc_cart_block_title_icon($icon_class) {
+  return l('<span class="'. $icon_class .'" alt="'. t('View your shopping cart.') .'" title="'. t('View your shopping cart.') .'" />', 'cart', array('html' => TRUE));
 }
 
  /**
@@ -638,7 +633,7 @@
   }
 
   // Add a wrapper div for use when collapsing the block.
-  $output .= '<div id="block-cart-contents">';
+  $output .= '<div id="cart-block-contents">';
 
   // Add a table of items in the cart or the empty message.
   $output .= theme('uc_cart_block_items', $items);

=== modified file 'uc_cart/uc_cart_block.css'
--- uc_cart/uc_cart_block.css	2009-02-06 21:40:54 +0000
+++ uc_cart/uc_cart_block.css	2009-02-17 21:07:08 +0000
@@ -1,13 +1,45 @@
 /* $Id:$ */
 
-#block-cart-title-bar {
+/**
+ * Styles for the cart block icon.
+ */
+.cart-block-icon-full, .cart-block-icon-empty {
+  display: inline-block;
+  padding: 2px 12px 8px 12px;
+  height: 7px;
+}
+
+.cart-block-icon-full {
+  background: transparent url(images/cart_full.gif) no-repeat left center;
+}
+
+.cart-block-icon-empty {
+  background: transparent url(images/cart_empty.gif) no-repeat left center;
+}
+
+/**
+ * Styles for the cart block title and toggle.
+ */
+.cart-block-title-text {
+  display: inline-block;
+}
+
+.cart-block-toggle {
   cursor: pointer;
-  white-space: nowrap;
-}
-
-#block-cart-title-arrow {
-  padding-top: 5px;
-  padding-right: 2px;
+}
+
+.cart-block-arrow {
+  display: inline-block;
+  padding: 2px 15px 8px 15px;
+  height: 7px;
+}
+
+.cart-block-title-bar .arrow-up {
+  background: transparent url(images/bullet-arrow-up.gif) no-repeat center center;
+}
+
+.cart-block-title-bar .arrow-down {
+  background: transparent url(images/bullet-arrow-down.gif) no-repeat center center;
 }
 
 .cart-help-text {
@@ -16,80 +48,84 @@
   top: -5px;
 }
 
-#block-cart-title-image {
-  padding-right: 5px;
-}
-.block-cart-title-bar {
-  white-space: nowrap;
-}
-.cart-block-toggle {
-  cursor: pointer;
-}
-#block-cart-title-arrow {
-  position: relative;
-  top: -5px;
-  right: -23px;
-}
+/**
+ * Styles for the cart block contents and summary.
+ */
+#cart-block-contents ul.product-description {
+  margin: 0pt;
+  padding: 0pt 0pt 0.25em 1em;
+}
+
+#cart-block-contents .product-description li {
+  margin: 0pt;
+  padding-top: 0pt;
+  padding-bottom: 0pt;
+  font-size: .8em;
+}
+
 .cart-block-items {
   border-bottom: 2px;
   padding: 2px;
 }
+
 .cart-block-items tbody {
   border-top: 0px;
 }
+
 .cart-block-items tr {
   vertical-align: top;
 }
+
 .cart-block-items tr.odd, .cart-block-items tr.even {
   background-color: inherit;
   border: none;
 }
+
 .cart-block-item-title {
   width: 100%;
 }
+
 .cart-block-item-price {
   text-align: right;
   white-space: nowrap;
 }
+
 .cart-block-summary {
   padding: 2px;
 }
+
 .cart-block-summary tbody {
   border-top: 0px;
 }
+
 .cart-block-summary tr {
   vertical-align: top;
 }
+
 .cart-block-summary-items {
   white-space: nowrap;
 }
+
 .cart-block-summary-total {
   width: 100%;
   text-align: right;
 }
+
 .cart-block-summary-total label {
   font-weight: bold;
 }
+
 .cart-block-summary-links {
   text-align: right;
 }
+
 .cart-block-summary-links ul.links li {
-  padding: 0em .5em;
+  padding: 0em 1em 0em .75em;
   border-right: solid 1px;
 }
+
 .cart-block-summary-links ul.links li.last {
   padding-right: 0em;
   border-right: none;
 }
 
-#block-cart-contents ul.product-description {
-  margin: 0pt;
-  padding: 0pt 0pt 0.25em 1em;
-}
-#block-cart-contents .product-description li {
-  margin: 0pt;
-  padding-top: 0pt;
-  padding-bottom: 0pt;
-  font-size: .8em;
-}
-

=== modified file 'uc_cart/uc_cart_block.js'
--- uc_cart/uc_cart_block.js	2008-10-13 21:11:06 +0000
+++ uc_cart/uc_cart_block.js	2009-02-17 21:02:05 +0000
@@ -4,7 +4,7 @@
  * Set the behavior to (un)collapse the cart block on a click
  */
 Drupal.behaviors.ucCollapseBlock = function(context) {
-  $('.cart-block-toggle:not(.ucCollapseBlock-processed)', context).addClass('ucCollapseBlock-processed').click(
+  $('.cart-block-title-bar:not(.ucCollapseBlock-processed)', context).addClass('ucCollapseBlock-processed').click(
     function() {
       cart_block_toggle();
     }
@@ -17,7 +17,14 @@
 $(document).ready(
   function() {
     if (Drupal.settings.ucCollapsedBlock == true) {
-      $('#block-cart-contents').hide();
+      // Hide the contents.
+      $('#cart-block-contents').hide();
+
+      // Add the appropriate title bar class.
+      $('.cart-block-title-bar').addClass('cart-block-toggle');
+
+      // Add the appropriate arrow class.
+      $('.cart-block-arrow').removeClass('arrow-down').addClass('arrow-up');
     }
   }
 );
@@ -26,13 +33,14 @@
  * Toggle the shopping cart block open and closed.
  */
 function cart_block_toggle() {
-  $('#block-cart-contents').toggle();
+  // Toggle the display of the cart contents table.
+  $('#cart-block-contents').toggle();
 
-  isrc = $('#block-cart-title-arrow').attr('src');
-  if (isrc.toLowerCase().match("up") != null) {
-    $('#block-cart-title-arrow').attr('src', isrc.split('-up').join('-down'));
+  // Toggle the class of the cart block arrow.
+  if ($('.cart-block-arrow').hasClass('arrow-up')) {
+    $('.cart-block-arrow').removeClass('arrow-up').addClass('arrow-down');
   }
   else {
-    $('#block-cart-title-arrow').attr('src', isrc.split('-down').join('-up'));
+    $('.cart-block-arrow').removeClass('arrow-down').addClass('arrow-up');
   }
 }

