(function( $ ){
  $.fn.mySlideShow = function(el,delay) {
    var captionDiv = $('#slideshow_caption');
    var dataEls=$('.slideshow_data_item');
    var slides=[];
    $.each(dataEls,function(i,el){
      el = $(el);
      slides[i] = {
        href: el.find('a').attr('href'),
        src: el.find('img').attr('src'),
        caption: el.find('span').html()
      };
    });
    var cache = [];
    var timer;
    $.each(slides,function(i,slide){
     
      var cacheDiv = $('<div class="slide"></div>');
      var link = $('<a href="'+slide.href+'">' + slide.caption + '</a>');
      var image = $('<img src="' + slide.src + '"/>');
      image.addClass('slide-img');
/*
      $.each(slides,function(j,slide){
        var box = $('<div class="box"></div>');
        if(i === j) {
          box.addClass('selected');
        } else {
          box.click(function(){
            gotoSlide(j);
          });
        }
        nav.append(box);
      });
*/  
      cacheDiv.append(image);
  //    cacheDiv.css('background-image','url('+slide.src+')');
  //    cacheDiv.css('background-position','50%');
  //    cacheDiv.css('background-repeat','no-repeat');
      cache.push(cacheDiv);
    });
    function gotoSlide(i) {
      if(timer!==undefined) {
        clearTimeout(timer);
      }
      (function(i,del){
        var callee = arguments.callee;
        var img = $(cache[i]);
        $(el).append(img);
        captionDiv.fadeOut('slow');
        img.fadeIn('slow',function(){
          captionDiv.empty();
          if(slides[i].href==='') {
            captionDiv.html(slides[i].caption);
          } else {
            captionDiv.html('<a href="'+slides[i].href+'">' + slides[i].caption + '</a>');
          }
          captionDiv.hide();
          setTimeout(function(){
            captionDiv.fadeIn(2000);
          },100);
          if(del!==undefined) {
            del.css('display','none');
          } 
          timer = setTimeout(function(){
            callee((i+1)%cache.length,img);
          },delay);
        }); 

      })(i);
    }
    gotoSlide(0);
  };
})( jQuery );

