/* ------------------------------------------------------------------------
	s3Slider

  Current version:
    Michael Grosser -> http://pragmatig.wordpress.com

  Original:
    Developped By: Boban Karišik -> http://www.serie3.info/
          CSS Help: Mészáros Róbert -> http://www.perspectived.com/

	Copyright: Redistribute, but keep infos at the top.
------------------------------------------------------------------------- */


(function($){


$.fn.s3Slider = function(vars) {
  vars = vars || {};
  var $slider     = $(this);
  var timeOut     = vars.timeOut || 6000;
  var fadeTime    = vars.fadeTime || 1000;
  var current     = 0;
  var mouseOver   = false;
  var items       = $(".resource", $slider);
  var spanOpacity = vars.spanOpacity || 0.7;

  //Track mouseover
  $slider.mouseover(function() {
    mouseOver = true;
  });
  $slider.mouseout(function() {
    mouseOver = false;
  });

  function visible(item){
    return $(item).css('display')!='none'
  }

  function slide(){
    var item = $(items[current]);
    var span = $('.name-description',item);
    if(visible(item)) {
      fadeOut(item,span);
      current = (current + 1) % items.length;
    } else {
      span.hide();
      fadeIn(item,span);
    }
  }

  function setSlideTimeout(time) {
    setTimeout(trySlide, time);
  }

  //if user blocks, then try again in a bit...
  function trySlide(){
    if(mouseOver){
      setSlideTimeout(fadeTime)
    } else {
      slide();
    }
  }

  function fadeIn(item,span){
    //normally fadeIn would be sufficient, but IEs need explicit opacity value [mcritchlow]
    span.css("opacity",0).show().fadeTo(fadeTime,spanOpacity,function(){
      setSlideTimeout(timeOut)//=> wait ...
    });      
    item.fadeIn(fadeTime);

  }

  function fadeOut(item,span){
    span.fadeOut(fadeTime);
    item.fadeOut(fadeTime,function(){
        slide()//=> fadeIn
    })
  }

  //GO!
  $('span',items[0]).css('opacity',spanOpacity); //set initial opacity
  setSlideTimeout(visible(items[0]) ? timeOut : 0); //start sliding
};


})(jQuery);  