forked from grosser/s3_slider
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy paths3-slider.js
99 lines (82 loc) · 2.14 KB
/
s3-slider.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/* ------------------------------------------------------------------------
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 spanOpacity = vars.spanOpacity || .7;
var current = 0;
var mouseOver = false;
var items = $(".slide", $slider);
//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);
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() {
if($.browser.msie){
span.css("opacity",0).show().fadeTo(fadeTime,spanOpacity,function(){
setSlideTimeout(timeOut);//=> wait ...
});
}else{
span.fadeIn(fadeTime,function(){
setSlideTimeout(timeOut);//=> wait ...
});
}
});
}
function fadeOut(item,span){
if($.browser.msie){
span.fadeTo("slow",0,function(){
item.fadeOut(fadeTime,function(){
slide();//=> fadeIn
});
});
}else{
span.fadeOut('slow',function(){
item.fadeOut(fadeTime,function(){
slide();//=> fadeIn
});
});
}
}
setSlideTimeout(visible(items[0]) ? timeOut : 0);//start!
};
})(jQuery);