jQuery.fn.slideshow = function(settings) {
  settings = settings || {};
  settings.fadeInterval = settings.fadeInterval || 4000;
  settings.fadeSpeed = settings.fadeSpeed || 1000;
  settings.startDelay = settings.startDelay || 0;

  $(this).each(function(){
    var container = this;
    var links = $(this).find("a");
    var max = links.length - 1;
    var curr = 0;
    var noRuns = 1;
    fadesPaused = false;
    function switchImage(){
      if (!fadesPaused) {
        if (curr > max) {
          curr = 0;
        }
        var i = new Image();
        $(i).css({'opacity':'0','position':'absolute'});
        $(container).append(i);
        $(i).bind("load", function(){
          $(this).animate({opacity: 1},settings.fadeSpeed,function(){
            if (noRuns) {
              noRuns = 0
            }
            else {
              $(container).find('img:first').remove();
            }
            curr++;
          });
        }).attr('src', $(links[curr]).attr('href'));
      }
    }
    switchImage();
    if (settings.startDelay) {
      setTimeout(function(){
        setInterval(switchImage, settings.fadeInterval);
      },settings.startDelay);
    }
    else {
      setInterval(switchImage, settings.fadeInterval);
    }
  });
}
