Index: skins/tango/next-vertical.png
===================================================================
RCS file: skins/tango/next-vertical.png
diff -N skins/tango/next-vertical.png
Binary files /tmp/cvsCnw1OF and /dev/null differ
Index: skins/tango/credits.txt
===================================================================
RCS file: skins/tango/credits.txt
diff -N skins/tango/credits.txt
--- skins/tango/credits.txt	21 Oct 2008 22:43:26 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1 +0,0 @@
-Button images copyright by Tango Icon Library Team (http://tango.freedesktop.org/Tango_Icon_Library)
\ No newline at end of file
Index: skins/tango/next-horizontal.png
===================================================================
RCS file: skins/tango/next-horizontal.png
diff -N skins/tango/next-horizontal.png
Binary files /tmp/cvsTyImAh and /dev/null differ
Index: skins/tango/prev-vertical.png
===================================================================
RCS file: skins/tango/prev-vertical.png
diff -N skins/tango/prev-vertical.png
Binary files /tmp/cvsAOw2tA and /dev/null differ
Index: skins/tango/skin.css
===================================================================
RCS file: skins/tango/skin.css
diff -N skins/tango/skin.css
--- skins/tango/skin.css	21 Oct 2008 22:43:26 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,150 +0,0 @@
-.jcarousel-skin-tango .jcarousel-container {
-    -moz-border-radius: 10px;
-    background: #F0F6F9;
-    border: 1px solid #346F97;
-}
-
-.jcarousel-skin-tango .jcarousel-container-horizontal {
-    width: 245px;
-    padding: 20px 40px;
-}
-
-.jcarousel-skin-tango .jcarousel-container-vertical {
-    width: 75px;
-    height: 245px;
-    padding: 40px 20px;
-}
-
-.jcarousel-skin-tango .jcarousel-clip-horizontal {
-    width:  245px;
-    height: 75px;
-}
-
-.jcarousel-skin-tango .jcarousel-clip-vertical {
-    width:  75px;
-    height: 245px;
-}
-
-.jcarousel-skin-tango .jcarousel-item {
-    width: 75px;
-    height: 75px;
-}
-
-.jcarousel-skin-tango .jcarousel-item-horizontal {
-    margin-right: 10px;
-}
-
-.jcarousel-skin-tango .jcarousel-item-vertical {
-    margin-bottom: 10px;
-}
-
-.jcarousel-skin-tango .jcarousel-item-placeholder {
-    background: #fff;
-    color: #000;
-}
-
-/**
- *  Horizontal Buttons
- */
-.jcarousel-skin-tango .jcarousel-next-horizontal {
-    position: absolute;
-    top: 43px;
-    right: 5px;
-    width: 32px;
-    height: 32px;
-    cursor: pointer;
-    background: transparent url(next-horizontal.png) no-repeat 0 0;
-}
-
-.jcarousel-skin-tango .jcarousel-next-horizontal:hover {
-    background-position: -32px 0;
-}
-
-.jcarousel-skin-tango .jcarousel-next-horizontal:active {
-    background-position: -64px 0;
-}
-
-.jcarousel-skin-tango .jcarousel-next-disabled-horizontal,
-.jcarousel-skin-tango .jcarousel-next-disabled-horizontal:hover,
-.jcarousel-skin-tango .jcarousel-next-disabled-horizontal:active {
-    cursor: default;
-    background-position: -96px 0;
-}
-
-.jcarousel-skin-tango .jcarousel-prev-horizontal {
-    position: absolute;
-    top: 43px;
-    left: 5px;
-    width: 32px;
-    height: 32px;
-    cursor: pointer;
-    background: transparent url(prev-horizontal.png) no-repeat 0 0;
-}
-
-.jcarousel-skin-tango .jcarousel-prev-horizontal:hover {
-    background-position: -32px 0;
-}
-
-.jcarousel-skin-tango .jcarousel-prev-horizontal:active {
-    background-position: -64px 0;
-}
-
-.jcarousel-skin-tango .jcarousel-prev-disabled-horizontal,
-.jcarousel-skin-tango .jcarousel-prev-disabled-horizontal:hover,
-.jcarousel-skin-tango .jcarousel-prev-disabled-horizontal:active {
-    cursor: default;
-    background-position: -96px 0;
-}
-
-/**
- *  Vertical Buttons
- */
-.jcarousel-skin-tango .jcarousel-next-vertical {
-    position: absolute;
-    bottom: 5px;
-    left: 43px;
-    width: 32px;
-    height: 32px;
-    cursor: pointer;
-    background: transparent url(next-vertical.png) no-repeat 0 0;
-}
-
-.jcarousel-skin-tango .jcarousel-next-vertical:hover {
-    background-position: 0 -32px;
-}
-
-.jcarousel-skin-tango .jcarousel-next-vertical:active {
-    background-position: 0 -64px;
-}
-
-.jcarousel-skin-tango .jcarousel-next-disabled-vertical,
-.jcarousel-skin-tango .jcarousel-next-disabled-vertical:hover,
-.jcarousel-skin-tango .jcarousel-next-disabled-vertical:active {
-    cursor: default;
-    background-position: 0 -96px;
-}
-
-.jcarousel-skin-tango .jcarousel-prev-vertical {
-    position: absolute;
-    top: 5px;
-    left: 43px;
-    width: 32px;
-    height: 32px;
-    cursor: pointer;
-    background: transparent url(prev-vertical.png) no-repeat 0 0;
-}
-
-.jcarousel-skin-tango .jcarousel-prev-vertical:hover {
-    background-position: 0 -32px;
-}
-
-.jcarousel-skin-tango .jcarousel-prev-vertical:active {
-    background-position: 0 -64px;
-}
-
-.jcarousel-skin-tango .jcarousel-prev-disabled-vertical,
-.jcarousel-skin-tango .jcarousel-prev-disabled-vertical:hover,
-.jcarousel-skin-tango .jcarousel-prev-disabled-vertical:active {
-    cursor: default;
-    background-position: 0 -96px;
-}
Index: skins/tango/prev-horizontal.png
===================================================================
RCS file: skins/tango/prev-horizontal.png
diff -N skins/tango/prev-horizontal.png
Binary files /tmp/cvsimwhoc and /dev/null differ
Index: viewscarousel_style_plugin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/viewscarousel/viewscarousel_style_plugin.inc,v
retrieving revision 1.2
diff -u -r1.2 viewscarousel_style_plugin.inc
--- viewscarousel_style_plugin.inc	19 Nov 2008 02:17:34 -0000	1.2
+++ viewscarousel_style_plugin.inc	1 Feb 2009 06:14:18 -0000
@@ -11,25 +11,26 @@
 class viewscarousel_style_plugin extends views_plugin_style {
   function option_definition() {
     $options = parent::option_definition();
+    $options['skin'] = array('default' => 'tango');
     $options['vertical'] = array('default' => FALSE);
     $options['start'] = array('default' => 1);
+    $options['offset'] = array('default' => 1);
     $options['scroll'] = array('default' => 3);
     $options['visible'] = array('default' => NULL);
-    $options['animation'] = array('default' => 0);
+    $options['animation'] = array('default' => 'fast');
     $options['easing'] = array('default' => NULL);
     $options['auto'] = array('default' => 0);
     $options['wrap'] = array('default' => NULL);
-    $options['skin'] = array('default' => 'ie7');
     return $options;
   }
-  
+
   function options_form(&$form, &$form_state) {
     parent::options_form($form, $form_state);
     $form['skin'] = array(
       '#type' => 'select',
       '#title' => t('Skin'),
       '#default_value' => $this->options['skin'],
-      '#options' => array('ie7' => t('ie7'), 'tango' => t('tango'), 'custom' => t('custom')),
+      '#options' => array('ie7' => t('IE7'), 'tango' => t('Tango'), 'custom' => t('Custom')),
     );
     $form['vertical'] = array(
       '#type' => 'checkbox',
@@ -43,6 +44,14 @@
       '#maxlength' => 4,
       '#default_value' => $this->options['start'],
     );
+    $form['offset'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Offset'),
+      '#description' => t('The index of the first available item at initialisation.'),
+      '#size' => 4,
+      '#maxlength' => 4,
+      '#default_value' => $this->options['offset'],
+    );
     $form['scroll'] = array(
       '#type' => 'textfield',
       '#title' => t('The number of items to scroll by'),
@@ -88,4 +97,4 @@
       '#options' => array(0 => t('Disabled'), 'first' => t('First'), 'last' => t('Last'), 'both' => t('Both')),
     );
   } 
-}
\ No newline at end of file
+}
Index: viewscarousel.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/viewscarousel/viewscarousel.module,v
retrieving revision 1.8
diff -u -r1.8 viewscarousel.module
--- viewscarousel.module	16 Dec 2008 01:49:45 -0000	1.8
+++ viewscarousel.module	1 Feb 2009 06:14:17 -0000
@@ -13,19 +13,16 @@
 }
 
 function template_preprocess_viewscarousel_view(&$vars) {
-  
-  drupal_add_css(drupal_get_path('module', 'viewscarousel') .'/jquery.jcarousel.css');
-  drupal_add_css(drupal_get_path('module', 'viewscarousel') .'/skins/ie7/skin.css');
-  drupal_add_js(drupal_get_path('module', 'viewscarousel') .'/jquery.jcarousel.min.js');
-  drupal_add_js(drupal_get_path('module', 'viewscarousel') .'/viewscarousel.js');
-  
+  // Retrieve the options from the Views Plugin.  
   $options = viewscarousel_get_options($vars);
   $view = $vars['view'];
-  $vars['viewscarousel_id'] = 'viewscarousel-'. $view->name .'-'. $view->current_display;
-  
-  $vars['viewscarousel_class'] = viewscarousel_get_class($vars);
-  
-  drupal_add_js(array('viewscarousel' => array($vars['viewscarousel_id'] => $options)), 'setting');
+
+  // Setup some variables for the template.
+  $vars['viewscarousel_id'] = form_clean_id('viewscarousel-'. $view->name .'-'. $view->current_display);
+  $vars['viewscarousel_class'] = $vars['options']['skin'];
+
+  // Add the jCarousel on the ID, with the given options and the skin.
+  jcarousel_add('#'. $vars['viewscarousel_id'], $options, $vars['options']['skin']);
 }
 
 /**
@@ -37,8 +34,7 @@
  * @return array
  *  Options that can be passed to jcarousel
  */
-function viewscarousel_get_options(&$vars) {
-  
+function viewscarousel_get_options(&$vars) {  
   $options = array();
   $options['vertical'] = $vars['options']['vertical'];
   $options['start'] = $vars['options']['start'];
@@ -48,39 +44,15 @@
   $options['easing'] = $vars['options']['easing'];
   $options['auto'] = $vars['options']['auto'];
   $options['wrap'] = $vars['options']['wrap'];
-  
+
   foreach ($options as $key => $value) {
     if (empty($value)) {
       unset($options[$key]);
     }
   }
-  
+
   // Bug fix. 1 is default. If you manually set 1 an empty row is added to left side.
   if ($options['start'] == 1) unset($options['start']);
-  
+
   return $options;
 }
-
-/**
- * Get class for skin and add css file if available
- *
- * @param array $vars
- *  Variables from a _preprocess_viewscarousel_view function
- * @return string
- *  Class name to add to ul
- */
-function viewscarousel_get_class($vars) {
-  switch ($vars['options']['skin']) {
-    case 'ie7':
-      drupal_add_css(drupal_get_path('module', 'viewscarousel') .'/skins/ie7/skin.css');
-      return 'jcarousel-skin-ie7';
-      break;
-    case 'tango':
-      drupal_add_css(drupal_get_path('module', 'viewscarousel') .'/skins/tango/skin.css');
-      return 'jcarousel-skin-tango';
-      break;
-    default:
-      return;
-      break;
-  }
-}
\ No newline at end of file
Index: viewscarousel.js
===================================================================
RCS file: viewscarousel.js
diff -N viewscarousel.js
--- viewscarousel.js	19 Nov 2008 02:17:34 -0000	1.4
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,11 +0,0 @@
-(function($) {
-Drupal.behaviors.viewscarousel = function(context) {
-  $.each(Drupal.settings.viewscarousel, function(id) {
-    if (this.scroll) this.scroll = parseInt(this.scroll);
-    if (this.start) this.start = parseInt(this.start);
-    if (this.visible) this.visible = parseInt(this.visible);
-    if (this.auto) this.auto = parseInt(this.auto);
-    $('#' + id).jcarousel(this);
-  });
-}
-})(jQuery)
\ No newline at end of file
Index: README.txt
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/viewscarousel/README.txt,v
retrieving revision 1.1
diff -u -r1.1 README.txt
--- README.txt	16 Dec 2008 02:05:40 -0000	1.1
+++ README.txt	1 Feb 2009 06:14:17 -0000
@@ -10,7 +10,7 @@
    matt.farina@gmail.com
    http://www.mattfarina.com.com
 
-Requirements: Drupal 6.x, Views
+Requirements: Drupal 6.x, Views, jCarousel
 
 ###   FEATURES   ##########################################################################
 
@@ -21,7 +21,10 @@
 
 1. Download and unzip the Views Carousel module into your modules directory.
 
-3. Goto Administer > Site Building > Modules and enable Views Carousel.
+2. Download and unzip the jCarousel module into your modules directory.
+   http://drupal.org/project/jcarousel
+
+3. Goto Administer > Site Building > Modules and enable jCarousel and Views Carousel.
 
 4. Goto Administer > Site Building > Views and edit or add a view.
 
Index: jquery.jcarousel.min.js
===================================================================
RCS file: jquery.jcarousel.min.js
diff -N jquery.jcarousel.min.js
--- jquery.jcarousel.min.js	21 Oct 2008 22:43:26 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,15 +0,0 @@
-/**
- * jCarousel - Riding carousels with jQuery
- *   http://sorgalla.com/jcarousel/
- *
- * Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * Built on top of the jQuery library
- *   http://jquery.com
- *
- * Inspired by the "Carousel Component" by Bill Scott
- *   http://billwscott.com/carousel/
- */
-(function(B){B.fn.jcarousel=function(D){return this.each(function(){new A(this,D)})};var C={vertical:false,start:1,offset:1,size:null,scroll:3,visible:null,animation:"normal",easing:"swing",auto:0,wrap:null,initCallback:null,reloadCallback:null,itemLoadCallback:null,itemFirstInCallback:null,itemFirstOutCallback:null,itemLastInCallback:null,itemLastOutCallback:null,itemVisibleInCallback:null,itemVisibleOutCallback:null,buttonNextHTML:"<div></div>",buttonPrevHTML:"<div></div>",buttonNextEvent:"click",buttonPrevEvent:"click",buttonNextCallback:null,buttonPrevCallback:null};B.jcarousel=function(G,E){this.options=B.extend({},C,E||{});this.locked=false;this.container=null;this.clip=null;this.list=null;this.buttonNext=null;this.buttonPrev=null;this.wh=!this.options.vertical?"width":"height";this.lt=!this.options.vertical?"left":"top";var K="",I=G.className.split(" ");for(var F=0;F<I.length;F++){if(I[F].indexOf("jcarousel-skin")!=-1){B(G).removeClass(I[F]);var K=I[F];break}}if(G.nodeName=="UL"||G.nodeName=="OL"){this.list=B(G);this.container=this.list.parent();if(this.container.hasClass("jcarousel-clip")){if(!this.container.parent().hasClass("jcarousel-container")){this.container=this.container.wrap("<div></div>")}this.container=this.container.parent()}else{if(!this.container.hasClass("jcarousel-container")){this.container=this.list.wrap("<div></div>").parent()}}}else{this.container=B(G);this.list=B(G).find(">ul,>ol,div>ul,div>ol")}if(K!=""&&this.container.parent()[0].className.indexOf("jcarousel-skin")==-1){this.container.wrap('<div class=" '+K+'"></div>')}this.clip=this.list.parent();if(!this.clip.length||!this.clip.hasClass("jcarousel-clip")){this.clip=this.list.wrap("<div></div>").parent()}this.buttonPrev=B(".jcarousel-prev",this.container);if(this.buttonPrev.size()==0&&this.options.buttonPrevHTML!=null){this.buttonPrev=this.clip.before(this.options.buttonPrevHTML).prev()}this.buttonPrev.addClass(this.className("jcarousel-prev"));this.buttonNext=B(".jcarousel-next",this.container);if(this.buttonNext.size()==0&&this.options.buttonNextHTML!=null){this.buttonNext=this.clip.before(this.options.buttonNextHTML).prev()}this.buttonNext.addClass(this.className("jcarousel-next"));this.clip.addClass(this.className("jcarousel-clip"));this.list.addClass(this.className("jcarousel-list"));this.container.addClass(this.className("jcarousel-container"));var H=this.options.visible!=null?Math.ceil(this.clipping()/this.options.visible):null;var J=this.list.children("li");var L=this;if(J.size()>0){var D=0,F=this.options.offset;J.each(function(){L.format(this,F++);D+=L.dimension(this,H)});this.list.css(this.wh,D+"px");if(!E||E.size===undefined){this.options.size=J.size()}}this.container.css("display","block");this.buttonNext.css("display","block");this.buttonPrev.css("display","block");this.funcNext=function(){L.next()};this.funcPrev=function(){L.prev()};this.funcResize=function(){L.reload()};if(this.options.initCallback!=null){this.options.initCallback(this,"init")}if(B.browser.safari){this.buttons(false,false);B(window).bind("load",function(){L.setup()})}else{this.setup()}};var A=B.jcarousel;A.fn=A.prototype={jcarousel:"0.2.3"};A.fn.extend=A.extend=B.extend;A.fn.extend({setup:function(){this.first=null;this.last=null;this.prevFirst=null;this.prevLast=null;this.animating=false;this.timer=null;this.tail=null;this.inTail=false;if(this.locked){return }this.list.css(this.lt,this.pos(this.options.offset)+"px");var D=this.pos(this.options.start);this.prevFirst=this.prevLast=null;this.animate(D,false);B(window).unbind("resize",this.funcResize).bind("resize",this.funcResize)},reset:function(){this.list.empty();this.list.css(this.lt,"0px");this.list.css(this.wh,"10px");if(this.options.initCallback!=null){this.options.initCallback(this,"reset")}this.setup()},reload:function(){if(this.tail!=null&&this.inTail){this.list.css(this.lt,A.intval(this.list.css(this.lt))+this.tail)}this.tail=null;this.inTail=false;if(this.options.reloadCallback!=null){this.options.reloadCallback(this)}if(this.options.visible!=null){var F=this;var G=Math.ceil(this.clipping()/this.options.visible),E=0,D=0;B("li",this.list).each(function(H){E+=F.dimension(this,G);if(H+1<F.first){D=E}});this.list.css(this.wh,E+"px");this.list.css(this.lt,-D+"px")}this.scroll(this.first,false)},lock:function(){this.locked=true;this.buttons()},unlock:function(){this.locked=false;this.buttons()},size:function(D){if(D!=undefined){this.options.size=D;if(!this.locked){this.buttons()}}return this.options.size},has:function(E,F){if(F==undefined||!F){F=E}if(this.options.size!==null&&F>this.options.size){F=this.options.size}for(var D=E;D<=F;D++){var G=this.get(D);if(!G.length||G.hasClass("jcarousel-item-placeholder")){return false}}return true},get:function(D){return B(".jcarousel-item-"+D,this.list)},add:function(G,L){var H=this.get(G),E=0,K=0;if(H.length==0){var J,H=this.create(G),F=A.intval(G);while(J=this.get(--F)){if(F<=0||J.length){F<=0?this.list.prepend(H):J.after(H);break}}}else{E=this.dimension(H)}H.removeClass(this.className("jcarousel-item-placeholder"));typeof L=="string"?H.html(L):H.empty().append(L);var I=this.options.visible!=null?Math.ceil(this.clipping()/this.options.visible):null;var D=this.dimension(H,I)-E;if(G>0&&G<this.first){this.list.css(this.lt,A.intval(this.list.css(this.lt))-D+"px")}this.list.css(this.wh,A.intval(this.list.css(this.wh))+D+"px");return H},remove:function(D){var E=this.get(D);if(!E.length||(D>=this.first&&D<=this.last)){return }var F=this.dimension(E);if(D<this.first){this.list.css(this.lt,A.intval(this.list.css(this.lt))+F+"px")}E.remove();this.list.css(this.wh,A.intval(this.list.css(this.wh))-F+"px")},next:function(){this.stopAuto();if(this.tail!=null&&!this.inTail){this.scrollTail(false)}else{this.scroll(((this.options.wrap=="both"||this.options.wrap=="last")&&this.options.size!=null&&this.last==this.options.size)?1:this.first+this.options.scroll)}},prev:function(){this.stopAuto();if(this.tail!=null&&this.inTail){this.scrollTail(true)}else{this.scroll(((this.options.wrap=="both"||this.options.wrap=="first")&&this.options.size!=null&&this.first==1)?this.options.size:this.first-this.options.scroll)}},scrollTail:function(D){if(this.locked||this.animating||!this.tail){return }var E=A.intval(this.list.css(this.lt));!D?E-=this.tail:E+=this.tail;this.inTail=!D;this.prevFirst=this.first;this.prevLast=this.last;this.animate(E)},scroll:function(E,D){if(this.locked||this.animating){return }this.animate(this.pos(E),D)},pos:function(Q){if(this.locked||this.animating){return }if(this.options.wrap!="circular"){Q=Q<1?1:(this.options.size&&Q>this.options.size?this.options.size:Q)}var N=this.first>Q;var E=A.intval(this.list.css(this.lt));var R=this.options.wrap!="circular"&&this.first<=1?1:this.first;var U=N?this.get(R):this.get(this.last);var P=N?R:R-1;var S=null,O=0,L=false,T=0;while(N?--P>=Q:++P<Q){S=this.get(P);L=!S.length;if(S.length==0){S=this.create(P).addClass(this.className("jcarousel-item-placeholder"));U[N?"before":"after"](S)}U=S;T=this.dimension(S);if(L){O+=T}if(this.first!=null&&(this.options.wrap=="circular"||(P>=1&&(this.options.size==null||P<=this.options.size)))){E=N?E+T:E-T}}var I=this.clipping();var K=[];var D=0,P=Q,J=0;var U=this.get(Q-1);while(++D){S=this.get(P);L=!S.length;if(S.length==0){S=this.create(P).addClass(this.className("jcarousel-item-placeholder"));U.length==0?this.list.prepend(S):U[N?"before":"after"](S)}U=S;var T=this.dimension(S);if(T==0){alert("jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...");return 0}if(this.options.wrap!="circular"&&this.options.size!==null&&P>this.options.size){K.push(S)}else{if(L){O+=T}}J+=T;if(J>=I){break}P++}for(var H=0;H<K.length;H++){K[H].remove()}if(O>0){this.list.css(this.wh,this.dimension(this.list)+O+"px");if(N){E-=O;this.list.css(this.lt,A.intval(this.list.css(this.lt))-O+"px")}}var G=Q+D-1;if(this.options.wrap!="circular"&&this.options.size&&G>this.options.size){G=this.options.size}if(P>G){D=0,P=G,J=0;while(++D){var S=this.get(P--);if(!S.length){break}J+=this.dimension(S);if(J>=I){break}}}var F=G-D+1;if(this.options.wrap!="circular"&&F<1){F=1}if(this.inTail&&N){E+=this.tail;this.inTail=false}this.tail=null;if(this.options.wrap!="circular"&&G==this.options.size&&(G-D+1)>=1){var M=A.margin(this.get(G),!this.options.vertical?"marginRight":"marginBottom");if((J-M)>I){this.tail=J-I-M}}while(Q-->F){E+=this.dimension(this.get(Q))}this.prevFirst=this.first;this.prevLast=this.last;this.first=F;this.last=G;return E},animate:function(G,D){if(this.locked||this.animating){return }this.animating=true;var E=this;var F=function(){E.animating=false;if(G==0){E.list.css(E.lt,0)}if(E.options.wrap=="both"||E.options.wrap=="last"||E.options.size==null||E.last<E.options.size){E.startAuto()}E.buttons();E.notify("onAfterAnimation")};this.notify("onBeforeAnimation");if(!this.options.animation||D==false){this.list.css(this.lt,G+"px");F()}else{var H=!this.options.vertical?{left:G}:{top:G};this.list.animate(H,this.options.animation,this.options.easing,F)}},startAuto:function(E){if(E!=undefined){this.options.auto=E}if(this.options.auto==0){return this.stopAuto()}if(this.timer!=null){return }var D=this;this.timer=setTimeout(function(){D.next()},this.options.auto*1000)},stopAuto:function(){if(this.timer==null){return }clearTimeout(this.timer);this.timer=null},buttons:function(F,E){if(F==undefined||F==null){var F=!this.locked&&this.options.size!==0&&((this.options.wrap&&this.options.wrap!="first")||this.options.size==null||this.last<this.options.size);if(!this.locked&&(!this.options.wrap||this.options.wrap=="first")&&this.options.size!=null&&this.last>=this.options.size){F=this.tail!=null&&!this.inTail}}if(E==undefined||E==null){var E=!this.locked&&this.options.size!==0&&((this.options.wrap&&this.options.wrap!="last")||this.first>1);if(!this.locked&&(!this.options.wrap||this.options.wrap=="last")&&this.options.size!=null&&this.first==1){E=this.tail!=null&&this.inTail}}var D=this;this.buttonNext[F?"bind":"unbind"](this.options.buttonNextEvent,this.funcNext)[F?"removeClass":"addClass"](this.className("jcarousel-next-disabled")).attr("disabled",F?false:true);this.buttonPrev[E?"bind":"unbind"](this.options.buttonPrevEvent,this.funcPrev)[E?"removeClass":"addClass"](this.className("jcarousel-prev-disabled")).attr("disabled",E?false:true);if(this.buttonNext.length>0&&(this.buttonNext[0].jcarouselstate==undefined||this.buttonNext[0].jcarouselstate!=F)&&this.options.buttonNextCallback!=null){this.buttonNext.each(function(){D.options.buttonNextCallback(D,this,F)});this.buttonNext[0].jcarouselstate=F}if(this.buttonPrev.length>0&&(this.buttonPrev[0].jcarouselstate==undefined||this.buttonPrev[0].jcarouselstate!=E)&&this.options.buttonPrevCallback!=null){this.buttonPrev.each(function(){D.options.buttonPrevCallback(D,this,E)});this.buttonPrev[0].jcarouselstate=E}},notify:function(D){var E=this.prevFirst==null?"init":(this.prevFirst<this.first?"next":"prev");this.callback("itemLoadCallback",D,E);if(this.prevFirst!==this.first){this.callback("itemFirstInCallback",D,E,this.first);this.callback("itemFirstOutCallback",D,E,this.prevFirst)}if(this.prevLast!==this.last){this.callback("itemLastInCallback",D,E,this.last);this.callback("itemLastOutCallback",D,E,this.prevLast)}this.callback("itemVisibleInCallback",D,E,this.first,this.last,this.prevFirst,this.prevLast);this.callback("itemVisibleOutCallback",D,E,this.prevFirst,this.prevLast,this.first,this.last)},callback:function(H,K,D,I,G,F,E){if(this.options[H]==undefined||(typeof this.options[H]!="object"&&K!="onAfterAnimation")){return }var L=typeof this.options[H]=="object"?this.options[H][K]:this.options[H];if(!B.isFunction(L)){return }var M=this;if(I===undefined){L(M,D,K)}else{if(G===undefined){this.get(I).each(function(){L(M,this,I,D,K)})}else{for(var J=I;J<=G;J++){if(J!==null&&!(J>=F&&J<=E)){this.get(J).each(function(){L(M,this,J,D,K)})}}}}},create:function(D){return this.format("<li></li>",D)},format:function(F,E){var D=B(F).addClass(this.className("jcarousel-item")).addClass(this.className("jcarousel-item-"+E));D.attr("jcarouselindex",E);return D},className:function(D){return D+" "+D+(!this.options.vertical?"-horizontal":"-vertical")},dimension:function(G,H){var F=G.jquery!=undefined?G[0]:G;var E=!this.options.vertical?F.offsetWidth+A.margin(F,"marginLeft")+A.margin(F,"marginRight"):F.offsetHeight+A.margin(F,"marginTop")+A.margin(F,"marginBottom");if(H==undefined||E==H){return E}var D=!this.options.vertical?H-A.margin(F,"marginLeft")-A.margin(F,"marginRight"):H-A.margin(F,"marginTop")-A.margin(F,"marginBottom");B(F).css(this.wh,D+"px");return this.dimension(F)},clipping:function(){return !this.options.vertical?this.clip[0].offsetWidth-A.intval(this.clip.css("borderLeftWidth"))-A.intval(this.clip.css("borderRightWidth")):this.clip[0].offsetHeight-A.intval(this.clip.css("borderTopWidth"))-A.intval(this.clip.css("borderBottomWidth"))},index:function(D,E){if(E==undefined){E=this.options.size}return Math.round((((D-1)/E)-Math.floor((D-1)/E))*E)+1}});A.extend({defaults:function(D){return B.extend(C,D||{})},margin:function(H,G){if(!H){return 0}var F=H.jquery!=undefined?H[0]:H;if(G=="marginRight"&&B.browser.safari){var E={display:"block","float":"none",width:"auto"},D,I;B.swap(F,E,function(){D=F.offsetWidth});E.marginRight=0;B.swap(F,E,function(){I=F.offsetWidth});return I-D}return A.intval(B.css(F,G))},intval:function(D){D=parseInt(D);return isNaN(D)?0:D}})})(jQuery);
\ No newline at end of file
Index: jquery.jcarousel.js
===================================================================
RCS file: jquery.jcarousel.js
diff -N jquery.jcarousel.js
--- jquery.jcarousel.js	21 Oct 2008 22:43:26 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,877 +0,0 @@
-/**
- * jCarousel - Riding carousels with jQuery
- *   http://sorgalla.com/jcarousel/
- *
- * Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * Built on top of the jQuery library
- *   http://jquery.com
- *
- * Inspired by the "Carousel Component" by Bill Scott
- *   http://billwscott.com/carousel/
- */
-
-(function($) {
-    /**
-     * Creates a carousel for all matched elements.
-     *
-     * @example $("#mycarousel").jcarousel();
-     * @before <ul id="mycarousel" class="jcarousel-skin-name"><li>First item</li><li>Second item</li></ul>
-     * @result
-     *
-     * <div class="jcarousel-skin-name">
-     *   <div class="jcarousel-container">
-     *     <div disabled="disabled" class="jcarousel-prev jcarousel-prev-disabled"></div>
-     *     <div class="jcarousel-next"></div>
-     *     <div class="jcarousel-clip">
-     *       <ul class="jcarousel-list">
-     *         <li class="jcarousel-item-1">First item</li>
-     *         <li class="jcarousel-item-2">Second item</li>
-     *       </ul>
-     *     </div>
-     *   </div>
-     * </div>
-     *
-     * @name jcarousel
-     * @type jQuery
-     * @param Hash o A set of key/value pairs to set as configuration properties.
-     * @cat Plugins/jCarousel
-     */
-    $.fn.jcarousel = function(o) {
-        return this.each(function() {
-            new $jc(this, o);
-        });
-    };
-
-    // Default configuration properties.
-    var defaults = {
-        vertical: false,
-        start: 1,
-        offset: 1,
-        size: null,
-        scroll: 3,
-        visible: null,
-        animation: 'normal',
-        easing: 'swing',
-        auto: 0,
-        wrap: null,
-        initCallback: null,
-        reloadCallback: null,
-        itemLoadCallback: null,
-        itemFirstInCallback: null,
-        itemFirstOutCallback: null,
-        itemLastInCallback: null,
-        itemLastOutCallback: null,
-        itemVisibleInCallback: null,
-        itemVisibleOutCallback: null,
-        buttonNextHTML: '<div></div>',
-        buttonPrevHTML: '<div></div>',
-        buttonNextEvent: 'click',
-        buttonPrevEvent: 'click',
-        buttonNextCallback: null,
-        buttonPrevCallback: null
-    };
-
-    /**
-     * The jCarousel object.
-     *
-     * @constructor
-     * @name $.jcarousel
-     * @param Object e The element to create the carousel for.
-     * @param Hash o A set of key/value pairs to set as configuration properties.
-     * @cat Plugins/jCarousel
-     */
-    $.jcarousel = function(e, o) {
-        this.options    = $.extend({}, defaults, o || {});
-
-        this.locked     = false;
-
-        this.container  = null;
-        this.clip       = null;
-        this.list       = null;
-        this.buttonNext = null;
-        this.buttonPrev = null;
-
-        this.wh = !this.options.vertical ? 'width' : 'height';
-        this.lt = !this.options.vertical ? 'left' : 'top';
-
-        // Extract skin class
-        var skin = '', split = e.className.split(' ');
-
-        for (var i = 0; i < split.length; i++) {
-            if (split[i].indexOf('jcarousel-skin') != -1) {
-                $(e).removeClass(split[i]);
-                var skin = split[i];
-                break;
-            }
-        }
-
-        if (e.nodeName == 'UL' || e.nodeName == 'OL') {
-            this.list = $(e);
-            this.container = this.list.parent();
-
-            if (this.container.hasClass('jcarousel-clip')) {
-                if (!this.container.parent().hasClass('jcarousel-container'))
-                    this.container = this.container.wrap('<div></div>');
-
-                this.container = this.container.parent();
-            } else if (!this.container.hasClass('jcarousel-container'))
-                this.container = this.list.wrap('<div></div>').parent();
-        } else {
-            this.container = $(e);
-            this.list = $(e).find('>ul,>ol,div>ul,div>ol');
-        }
-
-        if (skin != '' && this.container.parent()[0].className.indexOf('jcarousel-skin') == -1)
-        	this.container.wrap('<div class=" '+ skin + '"></div>');
-
-        this.clip = this.list.parent();
-
-        if (!this.clip.length || !this.clip.hasClass('jcarousel-clip'))
-            this.clip = this.list.wrap('<div></div>').parent();
-
-        this.buttonPrev = $('.jcarousel-prev', this.container);
-
-        if (this.buttonPrev.size() == 0 && this.options.buttonPrevHTML != null)
-            this.buttonPrev = this.clip.before(this.options.buttonPrevHTML).prev();
-
-        this.buttonPrev.addClass(this.className('jcarousel-prev'));
-
-        this.buttonNext = $('.jcarousel-next', this.container);
-
-        if (this.buttonNext.size() == 0 && this.options.buttonNextHTML != null)
-            this.buttonNext = this.clip.before(this.options.buttonNextHTML).prev();
-
-        this.buttonNext.addClass(this.className('jcarousel-next'));
-
-        this.clip.addClass(this.className('jcarousel-clip'));
-        this.list.addClass(this.className('jcarousel-list'));
-        this.container.addClass(this.className('jcarousel-container'));
-
-        var di = this.options.visible != null ? Math.ceil(this.clipping() / this.options.visible) : null;
-        var li = this.list.children('li');
-
-        var self = this;
-
-        if (li.size() > 0) {
-            var wh = 0, i = this.options.offset;
-            li.each(function() {
-                self.format(this, i++);
-                wh += self.dimension(this, di);
-            });
-
-            this.list.css(this.wh, wh + 'px');
-
-            // Only set if not explicitly passed as option
-            if (!o || o.size === undefined)
-                this.options.size = li.size();
-        }
-
-        // For whatever reason, .show() does not work in Safari...
-        this.container.css('display', 'block');
-        this.buttonNext.css('display', 'block');
-        this.buttonPrev.css('display', 'block');
-
-        this.funcNext   = function() { self.next(); };
-        this.funcPrev   = function() { self.prev(); };
-        this.funcResize = function() { self.reload(); };
-
-        if (this.options.initCallback != null)
-            this.options.initCallback(this, 'init');
-
-        if ($.browser.safari) {
-            this.buttons(false, false);
-            $(window).bind('load', function() { self.setup(); });
-        } else
-            this.setup();
-    };
-
-    // Create shortcut for internal use
-    var $jc = $.jcarousel;
-
-    $jc.fn = $jc.prototype = {
-        jcarousel: '0.2.3'
-    };
-
-    $jc.fn.extend = $jc.extend = $.extend;
-
-    $jc.fn.extend({
-        /**
-         * Setups the carousel.
-         *
-         * @name setup
-         * @type undefined
-         * @cat Plugins/jCarousel
-         */
-        setup: function() {
-            this.first     = null;
-            this.last      = null;
-            this.prevFirst = null;
-            this.prevLast  = null;
-            this.animating = false;
-            this.timer     = null;
-            this.tail      = null;
-            this.inTail    = false;
-
-            if (this.locked)
-                return;
-
-            this.list.css(this.lt, this.pos(this.options.offset) + 'px');
-            var p = this.pos(this.options.start);
-            this.prevFirst = this.prevLast = null;
-            this.animate(p, false);
-
-            $(window).unbind('resize', this.funcResize).bind('resize', this.funcResize);
-        },
-
-        /**
-         * Clears the list and resets the carousel.
-         *
-         * @name reset
-         * @type undefined
-         * @cat Plugins/jCarousel
-         */
-        reset: function() {
-            this.list.empty();
-
-            this.list.css(this.lt, '0px');
-            this.list.css(this.wh, '10px');
-
-            if (this.options.initCallback != null)
-                this.options.initCallback(this, 'reset');
-
-            this.setup();
-        },
-
-        /**
-         * Reloads the carousel and adjusts positions.
-         *
-         * @name reload
-         * @type undefined
-         * @cat Plugins/jCarousel
-         */
-        reload: function() {
-            if (this.tail != null && this.inTail)
-                this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + this.tail);
-
-            this.tail   = null;
-            this.inTail = false;
-
-            if (this.options.reloadCallback != null)
-                this.options.reloadCallback(this);
-
-            if (this.options.visible != null) {
-                var self = this;
-                var di = Math.ceil(this.clipping() / this.options.visible), wh = 0, lt = 0;
-                $('li', this.list).each(function(i) {
-                    wh += self.dimension(this, di);
-                    if (i + 1 < self.first)
-                        lt = wh;
-                });
-
-                this.list.css(this.wh, wh + 'px');
-                this.list.css(this.lt, -lt + 'px');
-            }
-
-            this.scroll(this.first, false);
-        },
-
-        /**
-         * Locks the carousel.
-         *
-         * @name lock
-         * @type undefined
-         * @cat Plugins/jCarousel
-         */
-        lock: function() {
-            this.locked = true;
-            this.buttons();
-        },
-
-        /**
-         * Unlocks the carousel.
-         *
-         * @name unlock
-         * @type undefined
-         * @cat Plugins/jCarousel
-         */
-        unlock: function() {
-            this.locked = false;
-            this.buttons();
-        },
-
-        /**
-         * Sets the size of the carousel.
-         *
-         * @name size
-         * @type undefined
-         * @param Number s The size of the carousel.
-         * @cat Plugins/jCarousel
-         */
-        size: function(s) {
-            if (s != undefined) {
-                this.options.size = s;
-                if (!this.locked)
-                    this.buttons();
-            }
-
-            return this.options.size;
-        },
-
-        /**
-         * Checks whether a list element exists for the given index (or index range).
-         *
-         * @name get
-         * @type bool
-         * @param Number i The index of the (first) element.
-         * @param Number i2 The index of the last element.
-         * @cat Plugins/jCarousel
-         */
-        has: function(i, i2) {
-            if (i2 == undefined || !i2)
-                i2 = i;
-
-            if (this.options.size !== null && i2 > this.options.size)
-            	i2 = this.options.size;
-
-            for (var j = i; j <= i2; j++) {
-                var e = this.get(j);
-                if (!e.length || e.hasClass('jcarousel-item-placeholder'))
-                    return false;
-            }
-
-            return true;
-        },
-
-        /**
-         * Returns a jQuery object with list element for the given index.
-         *
-         * @name get
-         * @type jQuery
-         * @param Number i The index of the element.
-         * @cat Plugins/jCarousel
-         */
-        get: function(i) {
-            return $('.jcarousel-item-' + i, this.list);
-        },
-
-        /**
-         * Adds an element for the given index to the list.
-         * If the element already exists, it updates the inner html.
-         * Returns the created element as jQuery object.
-         *
-         * @name add
-         * @type jQuery
-         * @param Number i The index of the element.
-         * @param String s The innerHTML of the element.
-         * @cat Plugins/jCarousel
-         */
-        add: function(i, s) {
-            var e = this.get(i), old = 0, add = 0;
-
-            if (e.length == 0) {
-                var c, e = this.create(i), j = $jc.intval(i);
-                while (c = this.get(--j)) {
-                    if (j <= 0 || c.length) {
-                        j <= 0 ? this.list.prepend(e) : c.after(e);
-                        break;
-                    }
-                }
-            } else
-                old = this.dimension(e);
-
-            e.removeClass(this.className('jcarousel-item-placeholder'));
-            typeof s == 'string' ? e.html(s) : e.empty().append(s);
-
-            var di = this.options.visible != null ? Math.ceil(this.clipping() / this.options.visible) : null;
-            var wh = this.dimension(e, di) - old;
-
-            if (i > 0 && i < this.first)
-                this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - wh + 'px');
-
-            this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) + wh + 'px');
-
-            return e;
-        },
-
-        /**
-         * Removes an element for the given index from the list.
-         *
-         * @name remove
-         * @type undefined
-         * @param Number i The index of the element.
-         * @cat Plugins/jCarousel
-         */
-        remove: function(i) {
-            var e = this.get(i);
-
-            // Check if item exists and is not currently visible
-            if (!e.length || (i >= this.first && i <= this.last))
-                return;
-
-            var d = this.dimension(e);
-
-            if (i < this.first)
-                this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + d + 'px');
-
-            e.remove();
-
-            this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) - d + 'px');
-        },
-
-        /**
-         * Moves the carousel forwards.
-         *
-         * @name next
-         * @type undefined
-         * @cat Plugins/jCarousel
-         */
-        next: function() {
-            this.stopAuto();
-
-            if (this.tail != null && !this.inTail)
-                this.scrollTail(false);
-            else
-                this.scroll(((this.options.wrap == 'both' || this.options.wrap == 'last') && this.options.size != null && this.last == this.options.size) ? 1 : this.first + this.options.scroll);
-        },
-
-        /**
-         * Moves the carousel backwards.
-         *
-         * @name prev
-         * @type undefined
-         * @cat Plugins/jCarousel
-         */
-        prev: function() {
-            this.stopAuto();
-
-            if (this.tail != null && this.inTail)
-                this.scrollTail(true);
-            else
-                this.scroll(((this.options.wrap == 'both' || this.options.wrap == 'first') && this.options.size != null && this.first == 1) ? this.options.size : this.first - this.options.scroll);
-        },
-
-        /**
-         * Scrolls the tail of the carousel.
-         *
-         * @name scrollTail
-         * @type undefined
-         * @param Bool b Whether scroll the tail back or forward.
-         * @cat Plugins/jCarousel
-         */
-        scrollTail: function(b) {
-            if (this.locked || this.animating || !this.tail)
-                return;
-
-            var pos  = $jc.intval(this.list.css(this.lt));
-
-            !b ? pos -= this.tail : pos += this.tail;
-            this.inTail = !b;
-
-            // Save for callbacks
-            this.prevFirst = this.first;
-            this.prevLast  = this.last;
-
-            this.animate(pos);
-        },
-
-        /**
-         * Scrolls the carousel to a certain position.
-         *
-         * @name scroll
-         * @type undefined
-         * @param Number i The index of the element to scoll to.
-         * @param Bool a Flag indicating whether to perform animation.
-         * @cat Plugins/jCarousel
-         */
-        scroll: function(i, a) {
-            if (this.locked || this.animating)
-                return;
-
-            this.animate(this.pos(i), a);
-        },
-
-        /**
-         * Prepares the carousel and return the position for a certian index.
-         *
-         * @name pos
-         * @type Number
-         * @param Number i The index of the element to scoll to.
-         * @cat Plugins/jCarousel
-         */
-        pos: function(i) {
-            if (this.locked || this.animating)
-                return;
-
-            if (this.options.wrap != 'circular')
-                i = i < 1 ? 1 : (this.options.size && i > this.options.size ? this.options.size : i);
-
-            var back = this.first > i;
-            var pos  = $jc.intval(this.list.css(this.lt));
-
-            // Create placeholders, new list width/height
-            // and new list position
-            var f = this.options.wrap != 'circular' && this.first <= 1 ? 1 : this.first;
-            var c = back ? this.get(f) : this.get(this.last);
-            var j = back ? f : f - 1;
-            var e = null, l = 0, p = false, d = 0;
-
-            while (back ? --j >= i : ++j < i) {
-                e = this.get(j);
-                p = !e.length;
-                if (e.length == 0) {
-                    e = this.create(j).addClass(this.className('jcarousel-item-placeholder'));
-                    c[back ? 'before' : 'after' ](e);
-                }
-
-                c = e;
-                d = this.dimension(e);
-
-                if (p)
-                    l += d;
-
-                if (this.first != null && (this.options.wrap == 'circular' || (j >= 1 && (this.options.size == null || j <= this.options.size))))
-                    pos = back ? pos + d : pos - d;
-            }
-
-            // Calculate visible items
-            var clipping = this.clipping();
-            var cache = [];
-            var visible = 0, j = i, v = 0;
-            var c = this.get(i - 1);
-
-            while (++visible) {
-                e = this.get(j);
-                p = !e.length;
-                if (e.length == 0) {
-                    e = this.create(j).addClass(this.className('jcarousel-item-placeholder'));
-                    // This should only happen on a next scroll
-                    c.length == 0 ? this.list.prepend(e) : c[back ? 'before' : 'after' ](e);
-                }
-
-                c = e;
-                var d = this.dimension(e);
-                if (d == 0) {
-                    alert('jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...');
-                    return 0;
-                }
-
-                if (this.options.wrap != 'circular' && this.options.size !== null && j > this.options.size)
-                    cache.push(e);
-                else if (p)
-                    l += d;
-
-                v += d;
-
-                if (v >= clipping)
-                    break;
-
-                j++;
-            }
-
-             // Remove out-of-range placeholders
-            for (var x = 0; x < cache.length; x++)
-                cache[x].remove();
-
-            // Resize list
-            if (l > 0) {
-                this.list.css(this.wh, this.dimension(this.list) + l + 'px');
-
-                if (back) {
-                    pos -= l;
-                    this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - l + 'px');
-                }
-            }
-
-            // Calculate first and last item
-            var last = i + visible - 1;
-            if (this.options.wrap != 'circular' && this.options.size && last > this.options.size)
-                last = this.options.size;
-
-            if (j > last) {
-                visible = 0, j = last, v = 0;
-                while (++visible) {
-                    var e = this.get(j--);
-                    if (!e.length)
-                        break;
-                    v += this.dimension(e);
-                    if (v >= clipping)
-                        break;
-                }
-            }
-
-            var first = last - visible + 1;
-            if (this.options.wrap != 'circular' && first < 1)
-                first = 1;
-
-            if (this.inTail && back) {
-                pos += this.tail;
-                this.inTail = false;
-            }
-
-            this.tail = null;
-            if (this.options.wrap != 'circular' && last == this.options.size && (last - visible + 1) >= 1) {
-                var m = $jc.margin(this.get(last), !this.options.vertical ? 'marginRight' : 'marginBottom');
-                if ((v - m) > clipping)
-                    this.tail = v - clipping - m;
-            }
-
-            // Adjust position
-            while (i-- > first)
-                pos += this.dimension(this.get(i));
-
-            // Save visible item range
-            this.prevFirst = this.first;
-            this.prevLast  = this.last;
-            this.first     = first;
-            this.last      = last;
-
-            return pos;
-        },
-
-        /**
-         * Animates the carousel to a certain position.
-         *
-         * @name animate
-         * @type undefined
-         * @param mixed p Position to scroll to.
-         * @param Bool a Flag indicating whether to perform animation.
-         * @cat Plugins/jCarousel
-         */
-        animate: function(p, a) {
-            if (this.locked || this.animating)
-                return;
-
-            this.animating = true;
-
-            var self = this;
-            var scrolled = function() {
-                self.animating = false;
-
-                if (p == 0)
-                    self.list.css(self.lt,  0);
-
-                if (self.options.wrap == 'both' || self.options.wrap == 'last' || self.options.size == null || self.last < self.options.size)
-                    self.startAuto();
-
-                self.buttons();
-                self.notify('onAfterAnimation');
-            };
-
-            this.notify('onBeforeAnimation');
-
-            // Animate
-            if (!this.options.animation || a == false) {
-                this.list.css(this.lt, p + 'px');
-                scrolled();
-            } else {
-                var o = !this.options.vertical ? {'left': p} : {'top': p};
-                this.list.animate(o, this.options.animation, this.options.easing, scrolled);
-            }
-        },
-
-        /**
-         * Starts autoscrolling.
-         *
-         * @name auto
-         * @type undefined
-         * @param Number s Seconds to periodically autoscroll the content.
-         * @cat Plugins/jCarousel
-         */
-        startAuto: function(s) {
-            if (s != undefined)
-                this.options.auto = s;
-
-            if (this.options.auto == 0)
-                return this.stopAuto();
-
-            if (this.timer != null)
-                return;
-
-            var self = this;
-            this.timer = setTimeout(function() { self.next(); }, this.options.auto * 1000);
-        },
-
-        /**
-         * Stops autoscrolling.
-         *
-         * @name stopAuto
-         * @type undefined
-         * @cat Plugins/jCarousel
-         */
-        stopAuto: function() {
-            if (this.timer == null)
-                return;
-
-            clearTimeout(this.timer);
-            this.timer = null;
-        },
-
-        /**
-         * Sets the states of the prev/next buttons.
-         *
-         * @name buttons
-         * @type undefined
-         * @cat Plugins/jCarousel
-         */
-        buttons: function(n, p) {
-            if (n == undefined || n == null) {
-                var n = !this.locked && this.options.size !== 0 && ((this.options.wrap && this.options.wrap != 'first') || this.options.size == null || this.last < this.options.size);
-                if (!this.locked && (!this.options.wrap || this.options.wrap == 'first') && this.options.size != null && this.last >= this.options.size)
-                    n = this.tail != null && !this.inTail;
-            }
-
-            if (p == undefined || p == null) {
-                var p = !this.locked && this.options.size !== 0 && ((this.options.wrap && this.options.wrap != 'last') || this.first > 1);
-                if (!this.locked && (!this.options.wrap || this.options.wrap == 'last') && this.options.size != null && this.first == 1)
-                    p = this.tail != null && this.inTail;
-            }
-
-            var self = this;
-
-            this.buttonNext[n ? 'bind' : 'unbind'](this.options.buttonNextEvent, this.funcNext)[n ? 'removeClass' : 'addClass'](this.className('jcarousel-next-disabled')).attr('disabled', n ? false : true);
-            this.buttonPrev[p ? 'bind' : 'unbind'](this.options.buttonPrevEvent, this.funcPrev)[p ? 'removeClass' : 'addClass'](this.className('jcarousel-prev-disabled')).attr('disabled', p ? false : true);
-
-            if (this.buttonNext.length > 0 && (this.buttonNext[0].jcarouselstate == undefined || this.buttonNext[0].jcarouselstate != n) && this.options.buttonNextCallback != null) {
-                this.buttonNext.each(function() { self.options.buttonNextCallback(self, this, n); });
-                this.buttonNext[0].jcarouselstate = n;
-            }
-
-            if (this.buttonPrev.length > 0 && (this.buttonPrev[0].jcarouselstate == undefined || this.buttonPrev[0].jcarouselstate != p) && this.options.buttonPrevCallback != null) {
-                this.buttonPrev.each(function() { self.options.buttonPrevCallback(self, this, p); });
-                this.buttonPrev[0].jcarouselstate = p;
-            }
-        },
-
-        notify: function(evt) {
-            var state = this.prevFirst == null ? 'init' : (this.prevFirst < this.first ? 'next' : 'prev');
-
-            // Load items
-            this.callback('itemLoadCallback', evt, state);
-
-            if (this.prevFirst !== this.first) {
-                this.callback('itemFirstInCallback', evt, state, this.first);
-                this.callback('itemFirstOutCallback', evt, state, this.prevFirst);
-            }
-
-            if (this.prevLast !== this.last) {
-                this.callback('itemLastInCallback', evt, state, this.last);
-                this.callback('itemLastOutCallback', evt, state, this.prevLast);
-            }
-
-            this.callback('itemVisibleInCallback', evt, state, this.first, this.last, this.prevFirst, this.prevLast);
-            this.callback('itemVisibleOutCallback', evt, state, this.prevFirst, this.prevLast, this.first, this.last);
-        },
-
-        callback: function(cb, evt, state, i1, i2, i3, i4) {
-            if (this.options[cb] == undefined || (typeof this.options[cb] != 'object' && evt != 'onAfterAnimation'))
-                return;
-
-            var callback = typeof this.options[cb] == 'object' ? this.options[cb][evt] : this.options[cb];
-
-            if (!$.isFunction(callback))
-                return;
-
-            var self = this;
-
-            if (i1 === undefined)
-                callback(self, state, evt);
-            else if (i2 === undefined)
-                this.get(i1).each(function() { callback(self, this, i1, state, evt); });
-            else {
-                for (var i = i1; i <= i2; i++)
-                    if (i !== null && !(i >= i3 && i <= i4))
-                        this.get(i).each(function() { callback(self, this, i, state, evt); });
-            }
-        },
-
-        create: function(i) {
-            return this.format('<li></li>', i);
-        },
-
-        format: function(e, i) {
-            var $e = $(e).addClass(this.className('jcarousel-item')).addClass(this.className('jcarousel-item-' + i));
-            $e.attr('jcarouselindex', i);
-            return $e;
-        },
-
-        className: function(c) {
-            return c + ' ' + c + (!this.options.vertical ? '-horizontal' : '-vertical');
-        },
-
-        dimension: function(e, d) {
-            var el = e.jquery != undefined ? e[0] : e;
-
-            var old = !this.options.vertical ?
-                el.offsetWidth + $jc.margin(el, 'marginLeft') + $jc.margin(el, 'marginRight') :
-                el.offsetHeight + $jc.margin(el, 'marginTop') + $jc.margin(el, 'marginBottom');
-
-            if (d == undefined || old == d)
-                return old;
-
-            var w = !this.options.vertical ?
-                d - $jc.margin(el, 'marginLeft') - $jc.margin(el, 'marginRight') :
-                d - $jc.margin(el, 'marginTop') - $jc.margin(el, 'marginBottom');
-
-            $(el).css(this.wh, w + 'px');
-
-            return this.dimension(el);
-        },
-
-        clipping: function() {
-            return !this.options.vertical ?
-                this.clip[0].offsetWidth - $jc.intval(this.clip.css('borderLeftWidth')) - $jc.intval(this.clip.css('borderRightWidth')) :
-                this.clip[0].offsetHeight - $jc.intval(this.clip.css('borderTopWidth')) - $jc.intval(this.clip.css('borderBottomWidth'));
-        },
-
-        index: function(i, s) {
-            if (s == undefined)
-                s = this.options.size;
-
-            return Math.round((((i-1) / s) - Math.floor((i-1) / s)) * s) + 1;
-        }
-    });
-
-    $jc.extend({
-        /**
-         * Gets/Sets the global default configuration properties.
-         *
-         * @name defaults
-         * @descr Gets/Sets the global default configuration properties.
-         * @type Hash
-         * @param Hash d A set of key/value pairs to set as configuration properties.
-         * @cat Plugins/jCarousel
-         */
-        defaults: function(d) {
-            return $.extend(defaults, d || {});
-        },
-
-        margin: function(e, p) {
-            if (!e)
-                return 0;
-
-            var el = e.jquery != undefined ? e[0] : e;
-
-            if (p == 'marginRight' && $.browser.safari) {
-                var old = {'display': 'block', 'float': 'none', 'width': 'auto'}, oWidth, oWidth2;
-
-                $.swap(el, old, function() { oWidth = el.offsetWidth; });
-
-                old['marginRight'] = 0;
-                $.swap(el, old, function() { oWidth2 = el.offsetWidth; });
-
-                return oWidth2 - oWidth;
-            }
-
-            return $jc.intval($.css(el, p));
-        },
-
-        intval: function(v) {
-            v = parseInt(v);
-            return isNaN(v) ? 0 : v;
-        }
-    });
-
-})(jQuery);
Index: jquery.jcarousel.css
===================================================================
RCS file: jquery.jcarousel.css
diff -N jquery.jcarousel.css
--- jquery.jcarousel.css	21 Oct 2008 22:43:26 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,49 +0,0 @@
-/**
- * This <div> element is wrapped by jCarousel around the list
- * and has the classname "jcarousel-container".
- */
-.jcarousel-container {
-    position: relative;
-}
-
-.jcarousel-clip {
-    z-index: 2;
-    padding: 0;
-    margin: 0;
-    overflow: hidden;
-    position: relative;
-}
-
-.jcarousel-list {
-    z-index: 1;
-    overflow: hidden;
-    position: relative;
-    top: 0;
-    left: 0;
-    margin: 0;
-    padding: 0;
-}
-
-.jcarousel-list li,
-.jcarousel-item {
-    float: left;
-    list-style: none;
-    /* We set the width/height explicitly. No width/height causes infinite loops. */
-    width: 75px;
-    height: 75px;
-}
-
-/**
- * The buttons are added dynamically by jCarousel before
- * the <ul> list (inside the <div> described above) and
- * have the classnames "jcarousel-next" and "jcarousel-prev".
- */
-.jcarousel-next {
-    z-index: 3;
-    display: none;
-}
-
-.jcarousel-prev {
-    z-index: 3;
-    display: none;
-}
Index: viewscarousel-view.tpl.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/viewscarousel/viewscarousel-view.tpl.php,v
retrieving revision 1.1
diff -u -r1.1 viewscarousel-view.tpl.php
--- viewscarousel-view.tpl.php	21 Oct 2008 22:43:26 -0000	1.1
+++ viewscarousel-view.tpl.php	1 Feb 2009 06:14:17 -0000
@@ -13,4 +13,4 @@
       <li><?php print $row ?></li>
     <?php endforeach; ?>
   </ul>
-</div>
\ No newline at end of file
+</div>
Index: viewscarousel.info
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/viewscarousel/viewscarousel.info,v
retrieving revision 1.3
diff -u -r1.3 viewscarousel.info
--- viewscarousel.info	21 Oct 2008 22:43:26 -0000	1.3
+++ viewscarousel.info	1 Feb 2009 06:14:17 -0000
@@ -3,4 +3,5 @@
 description = Provide Views Style plugin for jCarousel.
 package = Views
 core = 6.x
-dependencies[] = views
\ No newline at end of file
+dependencies[] = views
+dependencies[] = jcarousel
Index: skins/ie7/credits.txt
===================================================================
RCS file: skins/ie7/credits.txt
diff -N skins/ie7/credits.txt
--- skins/ie7/credits.txt	21 Oct 2008 22:43:26 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1 +0,0 @@
-Button images copyright by Microsoft Corporation (http://microsoft.com)
\ No newline at end of file
Index: skins/ie7/loading_small.gif
===================================================================
RCS file: skins/ie7/loading_small.gif
diff -N skins/ie7/loading_small.gif
Binary files /tmp/cvsRcEsYC and /dev/null differ
Index: skins/ie7/loading-small.gif
===================================================================
RCS file: skins/ie7/loading-small.gif
diff -N skins/ie7/loading-small.gif
Binary files /tmp/cvsYSbPBW and /dev/null differ
Index: skins/ie7/loading.gif
===================================================================
RCS file: skins/ie7/loading.gif
diff -N skins/ie7/loading.gif
Binary files /tmp/cvssEotfg and /dev/null differ
Index: skins/ie7/next-horizontal.gif
===================================================================
RCS file: skins/ie7/next-horizontal.gif
diff -N skins/ie7/next-horizontal.gif
Binary files /tmp/cvsOGXpVz and /dev/null differ
Index: skins/ie7/skin.css
===================================================================
RCS file: skins/ie7/skin.css
diff -N skins/ie7/skin.css
--- skins/ie7/skin.css	21 Oct 2008 22:43:26 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,153 +0,0 @@
-.jcarousel-skin-ie7 .jcarousel-container {
-    -moz-border-radius: 10px;
-    background: #D4D0C8;
-    border: 1px solid #808080;
-}
-
-.jcarousel-skin-ie7 .jcarousel-container-horizontal {
-    width: 245px;
-    padding: 20px 40px;
-}
-
-.jcarousel-skin-ie7 .jcarousel-container-vertical {
-    width: 75px;
-    height: 245px;
-    padding: 40px 20px;
-}
-
-.jcarousel-skin-ie7 .jcarousel-clip-horizontal {
-    width:  245px;
-    height: 77px;
-}
-
-.jcarousel-skin-ie7 .jcarousel-clip-vertical {
-    width:  77px;
-    height: 245px;
-}
-
-.jcarousel-skin-ie7 .jcarousel-item {
-    width: 75px;
-    height: 75px;
-    border: 1px solid #fff;
-}
-
-.jcarousel-skin-ie7 .jcarousel-item:hover {
-    border-color: #808080;
-}
-
-.jcarousel-skin-ie7 .jcarousel-item-horizontal {
-    margin-right: 7px;
-}
-
-.jcarousel-skin-ie7 .jcarousel-item-vertical {
-    margin-bottom: 7px;
-}
-
-.jcarousel-skin-ie7 .jcarousel-item-placeholder {
-}
-
-/**
- *  Horizontal Buttons
- */
-.jcarousel-skin-ie7 .jcarousel-next-horizontal {
-    position: absolute;
-    top: 43px;
-    right: 5px;
-    width: 32px;
-    height: 32px;
-    cursor: pointer;
-    background: transparent url(next-horizontal.gif) no-repeat 0 0;
-}
-
-.jcarousel-skin-ie7 .jcarousel-next-horizontal:hover {
-    background-position: -32px 0;
-}
-
-.jcarousel-skin-ie7 .jcarousel-next-horizontal:active {
-    background-position: -64px 0;
-}
-
-.jcarousel-skin-ie7 .jcarousel-next-disabled-horizontal,
-.jcarousel-skin-ie7 .jcarousel-next-disabled-horizontal:hover,
-.jcarousel-skin-ie7 .jcarousel-next-disabled-horizontal:active {
-    cursor: default;
-    background-position: -96px 0;
-}
-
-.jcarousel-skin-ie7 .jcarousel-prev-horizontal {
-    position: absolute;
-    top: 43px;
-    left: 5px;
-    width: 32px;
-    height: 32px;
-    cursor: pointer;
-    background: transparent url(prev-horizontal.gif) no-repeat 0 0;
-}
-
-.jcarousel-skin-ie7 .jcarousel-prev-horizontal:hover {
-    background-position: -32px 0;
-}
-
-.jcarousel-skin-ie7 .jcarousel-prev-horizontal:active {
-    background-position: -64px 0;
-}
-
-.jcarousel-skin-ie7 .jcarousel-prev-disabled-horizontal,
-.jcarousel-skin-ie7 .jcarousel-prev-disabled-horizontal:hover,
-.jcarousel-skin-ie7 .jcarousel-prev-disabled-horizontal:active {
-    cursor: default;
-    background-position: -96px 0;
-}
-
-/**
- *  Vertical Buttons
- */
-.jcarousel-skin-ie7 .jcarousel-next-vertical {
-    position: absolute;
-    bottom: 5px;
-    left: 43px;
-    width: 32px;
-    height: 32px;
-    cursor: pointer;
-    background: transparent url(next-vertical.gif) no-repeat 0 0;
-}
-
-.jcarousel-skin-ie7 .jcarousel-next-vertical:hover {
-    background-position: 0 -32px;
-}
-
-.jcarousel-skin-ie7 .jcarousel-next-vertical:active {
-    background-position: 0 -64px;
-}
-
-.jcarousel-skin-ie7 .jcarousel-next-disabled-vertical,
-.jcarousel-skin-ie7 .jcarousel-next-disabled-vertical:hover,
-.jcarousel-skin-ie7 .jcarousel-next-disabled-vertical:active {
-    cursor: default;
-    background-position: 0 -96px;
-}
-
-.jcarousel-skin-ie7 .jcarousel-prev-vertical {
-    position: absolute;
-    top: 5px;
-    left: 43px;
-    width: 32px;
-    height: 32px;
-    cursor: pointer;
-    background: transparent url(prev-vertical.gif) no-repeat 0 0;
-}
-
-.jcarousel-skin-ie7 .jcarousel-prev-vertical:hover {
-    background-position: 0 -32px;
-}
-
-.jcarousel-skin-ie7 .jcarousel-prev-vertical:active {
-    background-position: 0 -64px;
-}
-
-.jcarousel-skin-ie7 .jcarousel-prev-disabled-vertical,
-.jcarousel-skin-ie7 .jcarousel-prev-disabled-vertical:hover,
-.jcarousel-skin-ie7 .jcarousel-prev-disabled-vertical:active {
-    cursor: default;
-    background-position: 0 -96px;
-}
Index: skins/ie7/prev-horizontal.gif
===================================================================
RCS file: skins/ie7/prev-horizontal.gif
diff -N skins/ie7/prev-horizontal.gif
Binary files /tmp/cvsybxWmd and /dev/null differ
