    jQuery.fn.fadeIn = function(speed, callback) {
      return this.animate({opacity: 'show'}, speed, function() {
        if (jQuery.browser.msie)
          this.style.removeAttribute('filter');
        if (jQuery.isFunction(callback))
          callback();
      });
    };

    jQuery.fn.fadeOut = function(speed, callback) {
      return this.animate({opacity: 'hide'}, speed, function() {
        if (jQuery.browser.msie)
          this.style.removeAttribute('filter');
        if (jQuery.isFunction(callback))
          callback();
      });
    };

    
    var $autoSlideshow = false;
    var $fade_duration = 500;
    var $change_time = 5000;

    var $active_item = 0;

    jQuery("#image-" + $active_item ).fadeIn($fade_duration);
    jQuery("#page-" + $active_item).addClass('active');

    function randomItem() {
      if($autoSlideshow) {
        $next_item = $active_item + 1;
        if($next_item >= $itemcount)
          $next_item = 0;

        jQuery("#page-" + $next_item).addClass('active');
        jQuery("#page-" + $active_item).removeClass('active');

        jQuery("#image-" + $active_item ).fadeOut($fade_duration, function(){ jQuery("#image-" + $next_item ).fadeIn($fade_duration) });
        $active_item = $next_item;
      }
    };

    function showItem($next_item, $instant) {
      $instant = typeof($instant) != 'undefined' ? $instant : false;      

      if($next_item != $active_item) {
        $autoSlideshow = false;
        jQuery("#page-" + $next_item).addClass('active');
        jQuery("#page-" + $active_item).removeClass('active');

        if($instant) {
          jQuery("#image-" + $active_item ).fadeOut($manual_fade_duration, function(){ jQuery("#image-" + $next_item ).fadeIn($manual_fade_duration) });
        } else {
          jQuery("#image-" + $active_item ).fadeOut($fade_duration, function(){ jQuery("#image-" + $next_item ).fadeIn($fade_duration) });
        }
        
        $active_item = $next_item;
      }
    }

    function autoslidshowOn() {
      $autoSlideshow = true;
    }


    jQuery(function() {
      if(jQuery('#image-1').width() > 0) {
        setInterval( "randomItem()", $change_time );
      }
    });
