/* ------------------------------------------------------------------------ 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 || vars.timeOut || 6000;//timeOut is deprecated... var fadeTime = vars.fadeTime || 1000; var current = 0; var mouseOver = false; var items = $(".slide", $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 = $('span',item); var span_is_blank = !span.html() || /^\s*$/.test(span.html()); if(span_is_blank){span.hide();span = $('<span>')};//fade this null-element in case no span was found 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){ item.fadeIn(fadeTime, function() { //normally fadeIn would be sufficient, but IEs need explicit opacity value [mcritchlow] span.css("opacity",0).show().fadeTo(fadeTime,spanOpacity,function(){ setSlideTimeout(timeout)//=> wait ... }) }) } function fadeOut(item,span){ span.fadeOut('slow',function(){ 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);