$.fn.slideshow = function(speed, delay) {
  return $(this).each(function() {
    var interval, index = 0;
    var icons = $('<div/>', { 'class': 'icons'});
    var images = $(this).children().map(function(i,e){
      var img = $(e).filter('img').add($('img', e)).first();
      var icon = $('<div/>').text(img.attr('title')).click(function(){
        if (i != index) {
          images[index](0);
          index = i;
          images[index](1);
        }
        window.clearInterval(interval);
      }).appendTo(icons);
      var div = $(e).wrap('<div/>').parent().addClass('image').css('opacity','0').hide();
      img.after($('<span/>').addClass('text').text(img.attr('alt')));
      return function(n){
        if (n) div.show();
        div.stop().animate({ opacity: n }, speed, 'linear', function(){ if (!n) $(this).hide(); });
        icon.toggleClass('active', n == 1);
      };
    });
    icons.appendTo(this);
    images[0](1);
    interval = window.setInterval(function() {
      images[index](0);
      index = (index + 1) % images.length;
      images[index](1);
    }, delay);
  });
};

$.fn.loadImages = function(file, names, callback) {
  var obj = this;
  $.ajax(file, {
    dataType: 'xml',
    success: function(data) {
      $(names.image, data).each(function(){
        var o = $('<img/>', { src: "-bildspel/" + $(names.url, this).text(), alt: $(names.text, this).text(), title: $(names.icon, this).text() });
        var link = $(names.link, this).text();
        var target = $(names.target, this).text();
        if (link) {
          o = $('<a/>', { href: link }).append(o);
          if (target) o.attr('target', target);
        }
        $(obj).append(o);
      });
      callback(obj);
    }
  });
}

