|
33 | 33 | fire = root.add(this), |
34 | 34 | tabs = root.data("tabs"), |
35 | 35 | timer, |
36 | | - hoverTimer, |
37 | | - startTimer, |
38 | | - stopped = false; |
| 36 | + stopped = true; |
39 | 37 |
|
40 | 38 |
|
41 | 39 | // next / prev buttons |
|
51 | 49 | var prevButton = find(conf.prev).click(function() { |
52 | 50 | tabs.prev(); |
53 | 51 | }); |
54 | | - |
| 52 | + |
55 | 53 |
|
56 | 54 | // extend the Tabs API with slideshow methods |
57 | 55 | $.extend(self, { |
|
68 | 66 | play: function() { |
69 | 67 |
|
70 | 68 | // do not start additional timer if already exists |
71 | | - if (timer) { return; } |
| 69 | + if (timer) { return self; } |
72 | 70 |
|
73 | 71 | // onBeforePlay |
74 | 72 | var e = $.Event("onBeforePlay"); |
75 | | - fire.trigger(e); |
76 | | - |
| 73 | + fire.trigger(e); |
77 | 74 | if (e.isDefaultPrevented()) { return self; } |
78 | 75 |
|
79 | | - stopped = false; |
80 | 76 |
|
81 | 77 | // construct new timer |
82 | 78 | timer = setInterval(tabs.next, conf.interval); |
83 | | - |
| 79 | + stopped = false; |
| 80 | + |
84 | 81 | // onPlay |
85 | 82 | fire.trigger("onPlay"); |
86 | 83 |
|
87 | | - tabs.next(); |
| 84 | + return self; |
88 | 85 | }, |
89 | 86 |
|
90 | 87 | pause: function() { |
91 | 88 |
|
92 | | - if (!timer && !startTimer) { return self; } |
| 89 | + if (!timer) { return self; } |
93 | 90 |
|
94 | 91 | // onBeforePause |
95 | 92 | var e = $.Event("onBeforePause"); |
96 | 93 | fire.trigger(e); |
97 | 94 | if (e.isDefaultPrevented()) { return self; } |
98 | 95 |
|
99 | 96 | timer = clearInterval(timer); |
100 | | - startTimer = clearInterval(startTimer); |
101 | 97 |
|
102 | 98 | // onPause |
103 | | - fire.trigger("onPause"); |
| 99 | + fire.trigger("onPause"); |
| 100 | + |
| 101 | + return self; |
104 | 102 | }, |
105 | 103 |
|
106 | 104 | // when stopped - mouseover won't restart |
|
116 | 114 |
|
117 | 115 | // configuration |
118 | 116 | if ($.isFunction(conf[name])) { |
119 | | - self.bind(name, conf[name]); |
| 117 | + $(self).bind(name, conf[name]); |
120 | 118 | } |
121 | 119 |
|
122 | 120 | // API methods |
123 | 121 | self[name] = function(fn) { |
124 | | - return self.bind(name, fn); |
| 122 | + return $(self).bind(name, fn); |
125 | 123 | }; |
126 | 124 | }); |
127 | 125 |
|
128 | 126 |
|
129 | 127 | /* when mouse enters, slideshow stops */ |
130 | 128 | if (conf.autopause) { |
131 | | - var els = tabs.getTabs().add(nextButton).add(prevButton).add(tabs.getPanes()); |
132 | | - |
133 | | - els.hover(function() { |
134 | | - self.pause(); |
135 | | - hoverTimer = clearInterval(hoverTimer); |
136 | | - |
137 | | - }, function() { |
138 | | - if (!stopped) { |
139 | | - hoverTimer = setTimeout(self.play, conf.interval); |
140 | | - } |
| 129 | + tabs.getTabs().add(nextButton).add(prevButton).add(tabs.getPanes()).hover(self.pause, function() { |
| 130 | + if (!stopped) { self.play(); } |
141 | 131 | }); |
142 | 132 | } |
143 | 133 |
|
144 | 134 | if (conf.autoplay) { |
145 | | - startTimer = setTimeout(self.play, conf.interval); |
146 | | - } else { |
147 | | - self.stop(); |
| 135 | + self.play(); |
148 | 136 | } |
149 | 137 |
|
150 | 138 | if (conf.clickable) { |
|
156 | 144 | // manage disabling of next/prev buttons |
157 | 145 | if (!tabs.getConf().rotate) { |
158 | 146 |
|
159 | | - var cls = conf.disabledClass; |
| 147 | + var disabled = conf.disabledClass; |
160 | 148 |
|
161 | 149 | if (!tabs.getIndex()) { |
162 | | - prevButton.addClass(cls); |
| 150 | + prevButton.addClass(disabled); |
163 | 151 | } |
164 | | - tabs.onBeforeClick(function(e, i) { |
165 | | - if (!i) { |
166 | | - prevButton.addClass(cls); |
167 | | - } else { |
168 | | - prevButton.removeClass(cls); |
169 | | - |
170 | | - if (i == tabs.getTabs().length -1) { |
171 | | - nextButton.addClass(cls); |
172 | | - } else { |
173 | | - nextButton.removeClass(cls); |
174 | | - } |
175 | | - } |
| 152 | + |
| 153 | + tabs.onBeforeClick(function(e, i) { |
| 154 | + prevButton.toggleClass(disabled, !i); |
| 155 | + nextButton.toggleClass(disabled, i == tabs.getTabs().length -1); |
176 | 156 | }); |
177 | 157 | } |
178 | 158 | } |
|
0 commit comments