Binary files views_slideshow~/.DS_Store and views_slideshow/.DS_Store differ
diff -upr views_slideshow~/css/views_slideshow.css views_slideshow/css/views_slideshow.css
--- views_slideshow~/css/views_slideshow.css	2009-04-19 12:03:02.000000000 -0700
+++ views_slideshow/css/views_slideshow.css	2009-04-19 11:55:13.000000000 -0700
@@ -2,5 +2,18 @@
 
 .views_slideshow_no_display,
 .views_slideshow_hidden {
-  display: none;
+  filter: alpha(opacity=0);
+  -moz-opacity:0;
+  -khtml-opacity: 0;
+  opacity: 0;
 }
+
+.views_slideshow_slide,
+.views_slideshow_hidden {
+  position: absolute;
+}
+
+/* Override this to match your theme if necessary. Provides a better crossfade for text. */
+.views_slideshow_main div {
+  background-color: #FFFFFE;
+}
\ No newline at end of file
diff -upr views_slideshow~/js/views_slideshow.js views_slideshow/js/views_slideshow.js
--- views_slideshow~/js/views_slideshow.js	2009-04-19 12:03:02.000000000 -0700
+++ views_slideshow/js/views_slideshow.js	2009-04-19 11:53:05.000000000 -0700
@@ -1,5 +1,8 @@
 // $Id: views_slideshow.js,v 1.2 2008/09/30 20:10:22 aaron Exp $
 
+// this is needed for IE to register the starting opacity setting and fade correctly
+$(".views_slideshow_no_display, .views_slideshow_hidden").fadeTo(1,0);
+
 // store the timer and current div data
 slideshow_data = new Array();
 
@@ -46,15 +49,8 @@ function views_slideshow_switch(slidesho
   // turn off our timer
   views_slideshow_timer(slideshow_main, false);
 
-  // check to see if we fade or not
-  if (slideshow_data[slideshow_main]._fade) {
-    // fade out -- at the end, switch to the next slide in the slideshow
-    $(_main_div).fadeTo(slideshow_data[slideshow_main]._fade_speed, slideshow_data[slideshow_main]._fade_value, function() { views_slideshow_set_div(slideshow_main, new_div); });
-  }
-  else {
-    // if we don't have a fade, then just switch without fading
-    views_slideshow_set_div(slideshow_main, new_div);
-  }
+  // switch slides
+  views_slideshow_set_div(slideshow_main, new_div);
 }
 
 // set the main div html to the new node
@@ -80,29 +76,39 @@ function views_slideshow_set_div(slidesh
   // get the div with the html we need
   _new_div = "#views_slideshow_div_" + slideshow_main + "_" + new_div_number;
 
-  // set the html of the new div
-  //   $(_main_div).html($(_new_div).html());
-//   $(_old_breakout).removeClass('views_slideshow_active_teaser');
-//   $(_new_breakout).addClass('views_slideshow_active_teaser');
-
-  $(_old_breakout).hide();
-  $(_new_breakout).show();
-
-  _old_breakout = "#views_slideshow_div_breakout_teaser_" + slideshow_main + "_" + slideshow_data[slideshow_main]._current_div;
-  _new_breakout = "#views_slideshow_div_breakout_teaser_" + slideshow_main + "_" + new_div_number;
-  $(_old_breakout).removeClass('views_slideshow_active_teaser');
-  $(_new_breakout).addClass('views_slideshow_active_teaser');
-
-  // set the current_div number to the new node
-  slideshow_data[slideshow_main]._current_div = new_div_number;
-
   // check to see if we fade or not
   if (slideshow_data[slideshow_main]._fade) {
-    // fade in -- at the end, turn on our timer
-    $(_main_div).fadeTo(slideshow_data[slideshow_main]._fade_speed, 1, function() { views_slideshow_timer(slideshow_main, true); });
+    // cross fade in new slide
+    $(_new_breakout).fadeTo(slideshow_data[slideshow_main]._fade_speed, 1, function() {
+      // cross fade out old slide
+      $(_old_breakout).fadeTo(slideshow_data[slideshow_main]._fade_speed, 0, function() {
+        _old_breakout = "#views_slideshow_div_breakout_teaser_" + slideshow_main + "_" + slideshow_data[slideshow_main]._current_div;
+        _new_breakout = "#views_slideshow_div_breakout_teaser_" + slideshow_main + "_" + new_div_number;
+        $(_old_breakout).removeClass('views_slideshow_active_teaser');
+        $(_new_breakout).addClass('views_slideshow_active_teaser');
+
+        // set the current_div number to the new node
+        slideshow_data[slideshow_main]._current_div = new_div_number;
+
+        // turn on our timer
+        views_slideshow_timer(slideshow_main, true);
+      });
+    });
   }
   else {
-    // if we don't have a fade, then just turn on our timer without fading
+    // cross fade in new slide
+    $(_new_breakout).show();
+    // cross fade out old slide
+    $(_old_breakout).hide();
+    _old_breakout = "#views_slideshow_div_breakout_teaser_" + slideshow_main + "_" + slideshow_data[slideshow_main]._current_div;
+    _new_breakout = "#views_slideshow_div_breakout_teaser_" + slideshow_main + "_" + new_div_number;
+    $(_old_breakout).removeClass('views_slideshow_active_teaser');
+    $(_new_breakout).addClass('views_slideshow_active_teaser');
+
+    // set the current_div number to the new node
+    slideshow_data[slideshow_main]._current_div = new_div_number;
+
+    // turn on our timer
     views_slideshow_timer(slideshow_main, true);
   }
 }
diff -upr views_slideshow~/views_slideshow.theme.inc views_slideshow/views_slideshow.theme.inc
--- views_slideshow~/views_slideshow.theme.inc	2009-04-19 12:03:02.000000000 -0700
+++ views_slideshow/views_slideshow.theme.inc	2009-04-19 12:00:26.000000000 -0700
@@ -85,7 +85,7 @@ function theme_views_slideshow_no_displa
  *  The html that will be placed into the element in its turn during its frame.
  */
 function theme_views_slideshow_no_display_teaser($item, $id, $count) {
-  $hidden = $count ? 'class="views_slideshow_hidden"' : '';
+  $hidden = $count ? 'class="views_slideshow_hidden"' : 'class="views_slideshow_slide"';
   $output = '  <div id="views_slideshow_div_' . $id . '_' . $count . '" '. $hidden .'>' . "\n  ";
   $output .= $item . "\n";
   $output .= '  </div><!--close views_slideshow_div_' . $id . '_' . $count . '-->' . "\n\n";
