diff -Naur rotor.orig/rotor.css rotor/rotor.css
--- rotor.orig/rotor.css	1970-01-01 07:00:00.000000000 +0700
+++ rotor/rotor.css	2008-08-06 18:03:47.000000000 +0700
@@ -0,0 +1,14 @@
+.rotor, .rotor-items {
+  display:block;
+  text-align:center;
+  
+}
+
+.rotor-items {
+  overflow:hidden;
+  text-align: left;
+}
+
+.rotor-tab.selected {
+  font-weight:bold;
+}
\ No newline at end of file
diff -Naur rotor.orig/rotor.info rotor/rotor.info
--- rotor.orig/rotor.info	2008-08-06 18:08:41.000000000 +0700
+++ rotor/rotor.info	2008-08-06 15:29:44.000000000 +0700
@@ -3,6 +3,7 @@
 description = A rotor banner functionality that shows content for some seconds and keeps changing
 core = 6.x
 package = Advertising
+dependencies[]  = jquery_plugin
 ; Information added by drupal.org packaging script on 2008-04-29
 version = "6.x-1.2"
 core = "6.x"
diff -Naur rotor.orig/rotor.install rotor/rotor.install
--- rotor.orig/rotor.install	2008-08-06 18:08:41.000000000 +0700
+++ rotor/rotor.install	2008-08-06 18:17:16.000000000 +0700
@@ -14,8 +14,12 @@
  */
 function rotor_uninstall() {
   drupal_uninstall_schema('rotor');
+  variable_del('rotor_width');
+  variable_del('rotor_height');
   variable_del('rotor_max_items');
   variable_del('rotor_seconds');
+  variable_del('rotor_speed');
+  variable_del('rotor_effect');
   variable_del('rotor_show_tabs');
   variable_del('rotor_group_tabs');
   drupal_set_message(t('Rotor unistalled'));
diff -Naur rotor.orig/rotor.js rotor/rotor.js
--- rotor.orig/rotor.js	2008-08-06 18:08:41.000000000 +0700
+++ rotor/rotor.js	2008-08-06 18:01:44.000000000 +0700
@@ -1,6 +1,5 @@
 // $Id: rotor.js,v 1.1.2.2 2008/04/29 22:53:59 nestormata Exp $ 
-var rotor_items = new Array();
-var actual_item = 0;
+
 var rotor_interval = null;
 var rotor_init = false;
 $(window).load(
@@ -20,39 +19,31 @@
     }
     rotor_init = true;
     
+	// set speed to an appropriate value
+	rotor_speed == 0? rotor_speed = 1 : rotor_speed = rotor_speed * 1000;
+
     // Checks that the rotor enabled variable has being set to true
     // this must be done also by setting the rotor_time variable and the
     // rotor div. This is done by the drupal module.
     if(typeof rotor_enabled != 'undefined' && rotor_enabled) {
-        //debugger;
-      $('.rotor_content > .rotor_tab').click(function() {
-        //clearInterval(rotor_interval);
-        //rotor_interval = null;
-        animate_rotor_item($(this).parent());
-      });
-      animate_rotor_item();
-      wait_next_rotor();
+      animate_rotor_items();
     }   
-}
+};
 
-function animate_rotor_item(rotor_item) {
-  if(typeof rotor_item == "undefined" || typeof rotor_item == "number"){
-    rotor_item = $('.rotor_content').get(actual_item);
-  }
-  $('#rotor > .rotor_content > .rotor_content_detail').hide();
-  $('#rotor > .rotor_content > .rotor_tab').removeClass('selected');
-  $('.rotor_content_detail', rotor_item).show();
-  $('.rotor_tab', rotor_item).addClass('selected');
-  var contents = $('.rotor_content');
-  var actual = contents.get(actual_item);
-  actual_item = (actual_item + 1) % contents.length;
-}
-
-function wait_next_rotor() {
-  var contents = $('.rotor_content');
-  if(contents.length > 0) {
-    if (!rotor_interval) {
-        rotor_interval = setInterval(animate_rotor_item, rotor_time * 1000);
-    }
-  }
-}
+function animate_rotor_items(){
+	// redefine Cycle's updateActivePagerLink function 
+	$.fn.cycle.updateActivePagerLink = function(pager, currSlideIndex){
+		$(pager).find('.rotor-tab').removeClass('selected')
+		.filter('.rotor-tab:eq(' + currSlideIndex + ')').addClass('selected');
+	};
+	
+	$('.rotor-items').cycle({
+		timeout: rotor_time * 1000,
+		speed: rotor_speed,
+		fx: rotor_effect,
+		pager: '.rotor-tabs',
+		pagerAnchorBuilder: function(idx, slide){
+			return '.rotor-tabs';
+		}
+	});
+};
diff -Naur rotor.orig/rotor.module rotor/rotor.module
--- rotor.orig/rotor.module	2008-08-06 18:08:41.000000000 +0700
+++ rotor/rotor.module	2008-08-06 18:21:41.000000000 +0700
@@ -104,6 +104,22 @@
  * Admin settings form page.
  */
 function rotor_admin_form() {
+  $form['height'] = array(
+    '#type'           => 'textfield',
+    '#title'          => t('Height'),
+    '#default_value'  => variable_get('rotor_height', 200),
+    '#rows' => 1,
+    '#size' => 4,
+    '#description'    => t('The rotor item height, in pixels.'),
+  );
+  $form['width'] = array(
+    '#type'           => 'textfield',
+    '#title'          => t('Width'),
+    '#default_value'  => variable_get('rotor_width', 200),
+    '#rows' => 1,
+    '#size' => 4,
+    '#description'    => t('The rotor item width, in pixels.'),
+  );
   $form['max_items'] = array(
     '#type' => 'textfield',
     '#title' => t('Max nodes'),
@@ -120,6 +136,35 @@
     '#size' => 2,
     '#description' => t('The time in seconds that will be shown every rotor item before change to the next one.'),
   );
+  $form['speed'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Speed'),
+    '#default_value' => variable_get('rotor_speed', 1),
+    '#rows' => 1,
+    '#size' => 2,
+    '#description' => t('The time in seconds of the transition effect between each rotor item. (set to 0 for no transition)'),
+  );
+  $form['effect'] = array(
+    '#type' => 'select',
+    '#title' => t('Effect'),
+    '#default_value' => variable_get('rotor_effect', 'fade'),
+    '#options'        => array(
+      'fade' => t('Fade'),
+      'shuffle' => t('Shuffle'),
+      'zoom' => t('Zoom'),
+      'turnUp' => t('Turn Up'),
+      'turnDown' => t('Turn Down'),
+      'curtainX' => t('Curtain X'),
+      'curtainY' => t('Curtain Y'),
+      'scrollLeft' => t('Scroll Left'),
+      'scrollRight' => t('Scroll Right'),
+      'scrollUp' => t('Scroll Up'),
+      'scrollDown' => t('Scroll Down'),
+      'slideX' => t('Slide X'),
+      'slideY' => t('Slide Y')
+    ),
+    '#description' => t('The effect to use when changing to the next rotor item.'),
+  );
   $form['show_tab'] = array(
     '#type' => 'checkbox',
     '#title' => t('Enable tabs'),
@@ -155,16 +200,24 @@
 function rotor_admin_form_submit(&$node, &$form_state) {
   $values = $form_state['values'];
   if ($values['op'] == $values['submit']) {
+    variable_set('rotor_height', $values['height']);
+    variable_set('rotor_width', $values['width']);
     variable_set('rotor_max_items', $values['max_items']);
     variable_set('rotor_seconds', $values['time']);
+    variable_set('rotor_speed', $values['speed']);
+    variable_set('rotor_effect', $values['effect']);
     variable_set('rotor_show_tabs', $values['show_tab']);
     variable_set('rotor_group_tabs', $values['group_tabs']);
     variable_set('rotor_imagecache_preset', $values['imagecache']);
     drupal_set_message(t('Settings saved'));
   } 
   else {
+    variable_set('rotor_height', 200);
+    variable_set('rotor_width', 200);
     variable_set('rotor_max_items', 3);
     variable_set('rotor_seconds', 10);
+	variable_set('rotor_speed', $values['speed']);
+    variable_set('rotor_effect', 'fade');
     variable_set('rotor_show_tabs', TRUE);
     variable_set('rotor_group_tabs', ROTOR_GROUP_TABS);
     variable_set('rotor_imagecache_preset', 0);
@@ -362,19 +415,31 @@
 
   // Prints the script variables and includes the rotor javascript file.
   $time = variable_get('rotor_seconds', 10);
-  drupal_add_js(drupal_get_path('module', 'rotor') . '/rotor.js');
+  $speed = variable_get('rotor_speed', 1);
+  $effect = variable_get('rotor_effect', 'fade');
+  
+  // Add the CSS file
+  drupal_add_css(drupal_get_path('module', 'rotor') .'/rotor.css');
+  
+  // Add the main JavaScript, that does all the magic
+  drupal_add_js(drupal_get_path('module', 'rotor') .'/rotor.js');
+  drupal_add_js(drupal_get_path('module', 'jquery_plugin') .'/jquery.cycle.min.js');
   drupal_add_js('var rotor_enabled = true;', 'inline');
+  drupal_add_js('var rotor_effect = "' . $effect . '";', 'inline');
   drupal_add_js('var rotor_time = ' . $time . ';', 'inline');
+  drupal_add_js('var rotor_speed = ' . $speed . ';', 'inline');
+
+  // Setting the image height and width
+  $css_width  = variable_get('rotor_width', 200) .'px';
+  $css_height = variable_get('rotor_height', 200) .'px';
 
   // Print the rotor items.
-  $output = '<div id="rotor">';
+  $output = "<div class='rotor' style=\"width:$css_width;\">\n";
   if(variable_get('rotor_group_tabs', ROTOR_GROUP_TABS) == ROTOR_GROUP_TABS) {
     $output .= theme('rotor_tabs', $items);
-    $output .= theme('rotor_items', $items);
-  }
-  else {
-    $output .= theme('rotor_items', $items);
   }
+  $output .= theme('rotor_items', $items);
+ 
   $output .= '</div>';
   return $output;
 }
@@ -389,9 +454,9 @@
   $group_tabs = variable_get('rotor_group_tabs', ROTOR_GROUP_TABS);
   $output = '';
   if($show_tabs && $group_tabs == ROTOR_GROUP_TABS) {
-    $output = '<div class="rotor_tabs">';
+    $output = '<div class="rotor-tabs">';
     foreach ($items as $item) {
-      $output .= '<div class="rotor_tab">' . $item->title . '</div>';
+      $output .= '<div class="rotor-tab">' . $item->title . '</div>';
     }
     $output .= '</div>';
   }
@@ -404,10 +469,16 @@
  * @param array $items The array of items.
  */
 function theme_rotor_items($items = array()) {
-  $output = '';
+	
+  // Setting the image height and width
+  $css_width  = variable_get('rotor_width', 200) .'px';
+  $css_height = variable_get('rotor_height', 200) .'px';
+  
+  $output = "<div class='rotor-items' style=\"height:$css_height;width:$css_width;\">";
   foreach ($items as $item) {
       $output .= theme('rotor_item', $item);
   }
+  $output .= '</div>';
   return $output;
 }
 
@@ -419,11 +490,11 @@
 function theme_rotor_item($item) {
   $show_tabs = variable_get('rotor_show_tabs', TRUE);
   $group_tabs = variable_get('rotor_group_tabs', ROTOR_GROUP_TABS);
-  $output = '<div class="rotor_content">';
+  $output = '<div class="rotor-content">';
   if($show_tabs && $group_tabs == ROTOR_DONT_GROUP_TABS) {
-    $output .= '<div class="rotor_tab">' . $item->title . '</div>';
+    $output .= '<div class="rotor-tab">' . $item->title . '</div>';
   }
-  $output .= '<div class="rotor_content_detail" style="display:none">'
+  $output .= '<div class="rotor-content-detail">'
     . ($item->rotor_image
     ? theme('rotor_image', $item->rotor_image)
     : $item->body) 
@@ -455,6 +526,6 @@
       );
   }
   $output = l(t('Add new item'), 'node/add/rotor-item');
-  $output .= theme('table', $headers, $rows, array('class' => 'rotor_admin_list'));
+  $output .= theme('table', $headers, $rows, array('class' => 'rotor-admin-list'));
   return $output;
-}
\ No newline at end of file
+}
