spree_slider 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +11 -0
- data/.rspec +1 -0
- data/Gemfile +13 -0
- data/Gemfile.lock +210 -0
- data/LICENSE +26 -0
- data/README.textile +43 -0
- data/Rakefile +1 -0
- data/Versionfile +10 -0
- data/app/controllers/spree/admin/slides_controller.rb +8 -0
- data/app/models/spree/slide.rb +4 -0
- data/app/overrides/add_slider_to_layout.rb +8 -0
- data/app/overrides/add_slides_to_admin_configurations_menu.rb +9 -0
- data/app/overrides/add_slides_to_admin_configurations_sidebar_menu.rb +7 -0
- data/app/views/spree/admin/slides/_form.html.erb +21 -0
- data/app/views/spree/admin/slides/edit.html.erb +10 -0
- data/app/views/spree/admin/slides/index.html.erb +35 -0
- data/app/views/spree/admin/slides/new.html.erb +9 -0
- data/app/views/spree/admin/slides/show.html.erb +41 -0
- data/app/views/spree/home/index.html.erb +14 -0
- data/config/locales/en.yml +5 -0
- data/config/routes.rb +5 -0
- data/db/migrate/20120222184238_create_slides.rb +16 -0
- data/lib/generators/spree_slider/install_anything_generator.rb +30 -0
- data/lib/generators/spree_slider/install_nivo_generator.rb +34 -0
- data/lib/generators/spree_slider/templates/anything_slider.html.erb +26 -0
- data/lib/generators/spree_slider/templates/nivo_slider.html.erb +38 -0
- data/lib/spree_slider/engine.rb +23 -0
- data/lib/spree_slider.rb +2 -0
- data/script/rails +5 -0
- data/spec/spec_helper.rb +32 -0
- data/spree_slider.gemspec +26 -0
- data/vendor/assets/anything-slider/README.textile +13 -0
- data/vendor/assets/anything-slider/css/anythingslider-ie.css +45 -0
- data/vendor/assets/anything-slider/css/anythingslider.css +204 -0
- data/vendor/assets/anything-slider/css/theme-construction.css +142 -0
- data/vendor/assets/anything-slider/css/theme-cs-portfolio.css +148 -0
- data/vendor/assets/anything-slider/css/theme-metallic.css +146 -0
- data/vendor/assets/anything-slider/css/theme-minimalist-round.css +144 -0
- data/vendor/assets/anything-slider/css/theme-minimalist-square.css +144 -0
- data/vendor/assets/anything-slider/demos/colorbox/border.png +0 -0
- data/vendor/assets/anything-slider/demos/colorbox/colorbox.css +62 -0
- data/vendor/assets/anything-slider/demos/colorbox/controls.png +0 -0
- data/vendor/assets/anything-slider/demos/colorbox/internet_explorer/borderBottomCenter.png +0 -0
- data/vendor/assets/anything-slider/demos/colorbox/internet_explorer/borderBottomLeft.png +0 -0
- data/vendor/assets/anything-slider/demos/colorbox/internet_explorer/borderBottomRight.png +0 -0
- data/vendor/assets/anything-slider/demos/colorbox/internet_explorer/borderMiddleLeft.png +0 -0
- data/vendor/assets/anything-slider/demos/colorbox/internet_explorer/borderMiddleRight.png +0 -0
- data/vendor/assets/anything-slider/demos/colorbox/internet_explorer/borderTopCenter.png +0 -0
- data/vendor/assets/anything-slider/demos/colorbox/internet_explorer/borderTopLeft.png +0 -0
- data/vendor/assets/anything-slider/demos/colorbox/internet_explorer/borderTopRight.png +0 -0
- data/vendor/assets/anything-slider/demos/colorbox/jquery.colorbox-min.js +4 -0
- data/vendor/assets/anything-slider/demos/colorbox/jquery.colorbox.js +769 -0
- data/vendor/assets/anything-slider/demos/colorbox/loading.gif +0 -0
- data/vendor/assets/anything-slider/demos/colorbox/loading_background.png +0 -0
- data/vendor/assets/anything-slider/demos/colorbox/overlay.png +0 -0
- data/vendor/assets/anything-slider/demos/css/page.css +148 -0
- data/vendor/assets/anything-slider/demos/images/251356.jpg +0 -0
- data/vendor/assets/anything-slider/demos/images/apple-touch-icon.png +0 -0
- data/vendor/assets/anything-slider/demos/images/favicon.ico +0 -0
- data/vendor/assets/anything-slider/demos/images/slide-civil-1.jpg +0 -0
- data/vendor/assets/anything-slider/demos/images/slide-civil-2.jpg +0 -0
- data/vendor/assets/anything-slider/demos/images/slide-env-1.jpg +0 -0
- data/vendor/assets/anything-slider/demos/images/slide-env-2.jpg +0 -0
- data/vendor/assets/anything-slider/demos/images/slide-tele-1.jpg +0 -0
- data/vendor/assets/anything-slider/demos/images/slide-tele-2.jpg +0 -0
- data/vendor/assets/anything-slider/demos/images/th-slide-civil-1.jpg +0 -0
- data/vendor/assets/anything-slider/demos/images/th-slide-civil-2.jpg +0 -0
- data/vendor/assets/anything-slider/demos/images/th-slide-env-1.jpg +0 -0
- data/vendor/assets/anything-slider/demos/images/th-slide-env-2.jpg +0 -0
- data/vendor/assets/anything-slider/demos/js/demo.js +132 -0
- data/vendor/assets/anything-slider/demos/video/movie.mp4 +0 -0
- data/vendor/assets/anything-slider/demos/video/movie.ogg +0 -0
- data/vendor/assets/anything-slider/demos/video/movie.webm +0 -0
- data/vendor/assets/anything-slider/demos.html +740 -0
- data/vendor/assets/anything-slider/expand.html +97 -0
- data/vendor/assets/anything-slider/images/arrows-metallic.png +0 -0
- data/vendor/assets/anything-slider/images/arrows-minimalist.png +0 -0
- data/vendor/assets/anything-slider/images/construction.gif +0 -0
- data/vendor/assets/anything-slider/images/cs-portfolio.png +0 -0
- data/vendor/assets/anything-slider/images/default.png +0 -0
- data/vendor/assets/anything-slider/index.html +470 -0
- data/vendor/assets/anything-slider/js/jquery.anythingslider.fx.js +165 -0
- data/vendor/assets/anything-slider/js/jquery.anythingslider.fx.min.js +6 -0
- data/vendor/assets/anything-slider/js/jquery.anythingslider.js +791 -0
- data/vendor/assets/anything-slider/js/jquery.anythingslider.min.js +7 -0
- data/vendor/assets/anything-slider/js/jquery.anythingslider.video.js +367 -0
- data/vendor/assets/anything-slider/js/jquery.anythingslider.video.min.js +8 -0
- data/vendor/assets/anything-slider/js/jquery.easing.1.2.js +140 -0
- data/vendor/assets/anything-slider/js/jquery.min.js +18 -0
- data/vendor/assets/anything-slider/js/swfobject.js +4 -0
- data/vendor/assets/anything-slider/license.txt +165 -0
- data/vendor/assets/anything-slider/simple.html +79 -0
- data/vendor/assets/anything-slider/video.html +341 -0
- data/vendor/assets/nivo-slider/README +1 -0
- data/vendor/assets/nivo-slider/demo/demo.html +39 -0
- data/vendor/assets/nivo-slider/demo/images/dev7logo.png +0 -0
- data/vendor/assets/nivo-slider/demo/images/nemo.jpg +0 -0
- data/vendor/assets/nivo-slider/demo/images/toystory.jpg +0 -0
- data/vendor/assets/nivo-slider/demo/images/up.jpg +0 -0
- data/vendor/assets/nivo-slider/demo/images/walle.jpg +0 -0
- data/vendor/assets/nivo-slider/demo/scripts/jquery-1.6.1.min.js +18 -0
- data/vendor/assets/nivo-slider/demo/style.css +100 -0
- data/vendor/assets/nivo-slider/jquery.nivo.slider.js +685 -0
- data/vendor/assets/nivo-slider/jquery.nivo.slider.pack.js +67 -0
- data/vendor/assets/nivo-slider/license.txt +22 -0
- data/vendor/assets/nivo-slider/nivo-slider.css +89 -0
- data/vendor/assets/nivo-slider/themes/default/arrows.png +0 -0
- data/vendor/assets/nivo-slider/themes/default/bullets.png +0 -0
- data/vendor/assets/nivo-slider/themes/default/default.css +74 -0
- data/vendor/assets/nivo-slider/themes/default/loading.gif +0 -0
- data/vendor/assets/nivo-slider/themes/orman/arrows.png +0 -0
- data/vendor/assets/nivo-slider/themes/orman/bullets.png +0 -0
- data/vendor/assets/nivo-slider/themes/orman/loading.gif +0 -0
- data/vendor/assets/nivo-slider/themes/orman/orman.css +98 -0
- data/vendor/assets/nivo-slider/themes/orman/readme.txt +1 -0
- data/vendor/assets/nivo-slider/themes/orman/ribbon.png +0 -0
- data/vendor/assets/nivo-slider/themes/orman/slider.png +0 -0
- data/vendor/assets/nivo-slider/themes/pascal/bullets.png +0 -0
- data/vendor/assets/nivo-slider/themes/pascal/controlnav.png +0 -0
- data/vendor/assets/nivo-slider/themes/pascal/featured.png +0 -0
- data/vendor/assets/nivo-slider/themes/pascal/loading.gif +0 -0
- data/vendor/assets/nivo-slider/themes/pascal/pascal.css +102 -0
- data/vendor/assets/nivo-slider/themes/pascal/readme.txt +1 -0
- data/vendor/assets/nivo-slider/themes/pascal/ribbon.png +0 -0
- data/vendor/assets/nivo-slider/themes/pascal/slider.png +0 -0
- metadata +236 -0
@@ -0,0 +1,685 @@
|
|
1
|
+
/*
|
2
|
+
* jQuery Nivo Slider v2.6
|
3
|
+
* http://nivo.dev7studios.com
|
4
|
+
*
|
5
|
+
* Copyright 2011, Gilbert Pellegrom
|
6
|
+
* Free to use and abuse under the MIT license.
|
7
|
+
* http://www.opensource.org/licenses/mit-license.php
|
8
|
+
*
|
9
|
+
* March 2010
|
10
|
+
*/
|
11
|
+
|
12
|
+
(function($) {
|
13
|
+
|
14
|
+
var NivoSlider = function(element, options){
|
15
|
+
//Defaults are below
|
16
|
+
var settings = $.extend({}, $.fn.nivoSlider.defaults, options);
|
17
|
+
|
18
|
+
//Useful variables. Play carefully.
|
19
|
+
var vars = {
|
20
|
+
currentSlide: 0,
|
21
|
+
currentImage: '',
|
22
|
+
totalSlides: 0,
|
23
|
+
randAnim: '',
|
24
|
+
running: false,
|
25
|
+
paused: false,
|
26
|
+
stop: false
|
27
|
+
};
|
28
|
+
|
29
|
+
//Get this slider
|
30
|
+
var slider = $(element);
|
31
|
+
slider.data('nivo:vars', vars);
|
32
|
+
slider.css('position','relative');
|
33
|
+
slider.addClass('nivoSlider');
|
34
|
+
|
35
|
+
//Find our slider children
|
36
|
+
var kids = slider.children();
|
37
|
+
kids.each(function() {
|
38
|
+
var child = $(this);
|
39
|
+
var link = '';
|
40
|
+
if(!child.is('img')){
|
41
|
+
if(child.is('a')){
|
42
|
+
child.addClass('nivo-imageLink');
|
43
|
+
link = child;
|
44
|
+
}
|
45
|
+
child = child.find('img:first');
|
46
|
+
}
|
47
|
+
//Get img width & height
|
48
|
+
var childWidth = child.width();
|
49
|
+
if(childWidth == 0) childWidth = child.attr('width');
|
50
|
+
var childHeight = child.height();
|
51
|
+
if(childHeight == 0) childHeight = child.attr('height');
|
52
|
+
//Resize the slider
|
53
|
+
if(childWidth > slider.width()){
|
54
|
+
slider.width(childWidth);
|
55
|
+
}
|
56
|
+
if(childHeight > slider.height()){
|
57
|
+
slider.height(childHeight);
|
58
|
+
}
|
59
|
+
if(link != ''){
|
60
|
+
link.css('display','none');
|
61
|
+
}
|
62
|
+
child.css('display','none');
|
63
|
+
vars.totalSlides++;
|
64
|
+
});
|
65
|
+
|
66
|
+
//Set startSlide
|
67
|
+
if(settings.startSlide > 0){
|
68
|
+
if(settings.startSlide >= vars.totalSlides) settings.startSlide = vars.totalSlides - 1;
|
69
|
+
vars.currentSlide = settings.startSlide;
|
70
|
+
}
|
71
|
+
|
72
|
+
//Get initial image
|
73
|
+
if($(kids[vars.currentSlide]).is('img')){
|
74
|
+
vars.currentImage = $(kids[vars.currentSlide]);
|
75
|
+
} else {
|
76
|
+
vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
|
77
|
+
}
|
78
|
+
|
79
|
+
//Show initial link
|
80
|
+
if($(kids[vars.currentSlide]).is('a')){
|
81
|
+
$(kids[vars.currentSlide]).css('display','block');
|
82
|
+
}
|
83
|
+
|
84
|
+
//Set first background
|
85
|
+
slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
|
86
|
+
|
87
|
+
//Create caption
|
88
|
+
slider.append(
|
89
|
+
$('<div class="nivo-caption"><p></p></div>').css({ display:'none', opacity:settings.captionOpacity })
|
90
|
+
);
|
91
|
+
|
92
|
+
// Process caption function
|
93
|
+
var processCaption = function(settings){
|
94
|
+
var nivoCaption = $('.nivo-caption', slider);
|
95
|
+
if(vars.currentImage.attr('title') != '' && vars.currentImage.attr('title') != undefined){
|
96
|
+
var title = vars.currentImage.attr('title');
|
97
|
+
if(title.substr(0,1) == '#') title = $(title).html();
|
98
|
+
|
99
|
+
if(nivoCaption.css('display') == 'block'){
|
100
|
+
nivoCaption.find('p').fadeOut(settings.animSpeed, function(){
|
101
|
+
$(this).html(title);
|
102
|
+
$(this).fadeIn(settings.animSpeed);
|
103
|
+
});
|
104
|
+
} else {
|
105
|
+
nivoCaption.find('p').html(title);
|
106
|
+
}
|
107
|
+
nivoCaption.fadeIn(settings.animSpeed);
|
108
|
+
} else {
|
109
|
+
nivoCaption.fadeOut(settings.animSpeed);
|
110
|
+
}
|
111
|
+
}
|
112
|
+
|
113
|
+
//Process initial caption
|
114
|
+
processCaption(settings);
|
115
|
+
|
116
|
+
//In the words of Super Mario "let's a go!"
|
117
|
+
var timer = 0;
|
118
|
+
if(!settings.manualAdvance && kids.length > 1){
|
119
|
+
timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
|
120
|
+
}
|
121
|
+
|
122
|
+
//Add Direction nav
|
123
|
+
if(settings.directionNav){
|
124
|
+
slider.append('<div class="nivo-directionNav"><a class="nivo-prevNav">'+ settings.prevText +'</a><a class="nivo-nextNav">'+ settings.nextText +'</a></div>');
|
125
|
+
|
126
|
+
//Hide Direction nav
|
127
|
+
if(settings.directionNavHide){
|
128
|
+
$('.nivo-directionNav', slider).hide();
|
129
|
+
slider.hover(function(){
|
130
|
+
$('.nivo-directionNav', slider).show();
|
131
|
+
}, function(){
|
132
|
+
$('.nivo-directionNav', slider).hide();
|
133
|
+
});
|
134
|
+
}
|
135
|
+
|
136
|
+
$('a.nivo-prevNav', slider).live('click', function(){
|
137
|
+
if(vars.running) return false;
|
138
|
+
clearInterval(timer);
|
139
|
+
timer = '';
|
140
|
+
vars.currentSlide -= 2;
|
141
|
+
nivoRun(slider, kids, settings, 'prev');
|
142
|
+
});
|
143
|
+
|
144
|
+
$('a.nivo-nextNav', slider).live('click', function(){
|
145
|
+
if(vars.running) return false;
|
146
|
+
clearInterval(timer);
|
147
|
+
timer = '';
|
148
|
+
nivoRun(slider, kids, settings, 'next');
|
149
|
+
});
|
150
|
+
}
|
151
|
+
|
152
|
+
//Add Control nav
|
153
|
+
if(settings.controlNav){
|
154
|
+
var nivoControl = $('<div class="nivo-controlNav"></div>');
|
155
|
+
slider.append(nivoControl);
|
156
|
+
for(var i = 0; i < kids.length; i++){
|
157
|
+
if(settings.controlNavThumbs){
|
158
|
+
var child = kids.eq(i);
|
159
|
+
if(!child.is('img')){
|
160
|
+
child = child.find('img:first');
|
161
|
+
}
|
162
|
+
if (settings.controlNavThumbsFromRel) {
|
163
|
+
nivoControl.append('<a class="nivo-control" rel="'+ i +'"><img src="'+ child.attr('rel') + '" alt="" /></a>');
|
164
|
+
} else {
|
165
|
+
nivoControl.append('<a class="nivo-control" rel="'+ i +'"><img src="'+ child.attr('src').replace(settings.controlNavThumbsSearch, settings.controlNavThumbsReplace) +'" alt="" /></a>');
|
166
|
+
}
|
167
|
+
} else {
|
168
|
+
nivoControl.append('<a class="nivo-control" rel="'+ i +'">'+ (i + 1) +'</a>');
|
169
|
+
}
|
170
|
+
|
171
|
+
}
|
172
|
+
//Set initial active link
|
173
|
+
$('.nivo-controlNav a:eq('+ vars.currentSlide +')', slider).addClass('active');
|
174
|
+
|
175
|
+
$('.nivo-controlNav a', slider).live('click', function(){
|
176
|
+
if(vars.running) return false;
|
177
|
+
if($(this).hasClass('active')) return false;
|
178
|
+
clearInterval(timer);
|
179
|
+
timer = '';
|
180
|
+
slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
|
181
|
+
vars.currentSlide = $(this).attr('rel') - 1;
|
182
|
+
nivoRun(slider, kids, settings, 'control');
|
183
|
+
});
|
184
|
+
}
|
185
|
+
|
186
|
+
//Keyboard Navigation
|
187
|
+
if(settings.keyboardNav){
|
188
|
+
$(window).keypress(function(event){
|
189
|
+
//Left
|
190
|
+
if(event.keyCode == '37'){
|
191
|
+
if(vars.running) return false;
|
192
|
+
clearInterval(timer);
|
193
|
+
timer = '';
|
194
|
+
vars.currentSlide-=2;
|
195
|
+
nivoRun(slider, kids, settings, 'prev');
|
196
|
+
}
|
197
|
+
//Right
|
198
|
+
if(event.keyCode == '39'){
|
199
|
+
if(vars.running) return false;
|
200
|
+
clearInterval(timer);
|
201
|
+
timer = '';
|
202
|
+
nivoRun(slider, kids, settings, 'next');
|
203
|
+
}
|
204
|
+
});
|
205
|
+
}
|
206
|
+
|
207
|
+
//For pauseOnHover setting
|
208
|
+
if(settings.pauseOnHover){
|
209
|
+
slider.hover(function(){
|
210
|
+
vars.paused = true;
|
211
|
+
clearInterval(timer);
|
212
|
+
timer = '';
|
213
|
+
}, function(){
|
214
|
+
vars.paused = false;
|
215
|
+
//Restart the timer
|
216
|
+
if(timer == '' && !settings.manualAdvance){
|
217
|
+
timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
|
218
|
+
}
|
219
|
+
});
|
220
|
+
}
|
221
|
+
|
222
|
+
//Event when Animation finishes
|
223
|
+
slider.bind('nivo:animFinished', function(){
|
224
|
+
vars.running = false;
|
225
|
+
//Hide child links
|
226
|
+
$(kids).each(function(){
|
227
|
+
if($(this).is('a')){
|
228
|
+
$(this).css('display','none');
|
229
|
+
}
|
230
|
+
});
|
231
|
+
//Show current link
|
232
|
+
if($(kids[vars.currentSlide]).is('a')){
|
233
|
+
$(kids[vars.currentSlide]).css('display','block');
|
234
|
+
}
|
235
|
+
//Restart the timer
|
236
|
+
if(timer == '' && !vars.paused && !settings.manualAdvance){
|
237
|
+
timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
|
238
|
+
}
|
239
|
+
//Trigger the afterChange callback
|
240
|
+
settings.afterChange.call(this);
|
241
|
+
});
|
242
|
+
|
243
|
+
// Add slices for slice animations
|
244
|
+
var createSlices = function(slider, settings, vars){
|
245
|
+
for(var i = 0; i < settings.slices; i++){
|
246
|
+
var sliceWidth = Math.round(slider.width()/settings.slices);
|
247
|
+
if(i == settings.slices-1){
|
248
|
+
slider.append(
|
249
|
+
$('<div class="nivo-slice"></div>').css({
|
250
|
+
left:(sliceWidth*i)+'px', width:(slider.width()-(sliceWidth*i))+'px',
|
251
|
+
height:'0px',
|
252
|
+
opacity:'0',
|
253
|
+
background: 'url("'+ vars.currentImage.attr('src') +'") no-repeat -'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px 0%'
|
254
|
+
})
|
255
|
+
);
|
256
|
+
} else {
|
257
|
+
slider.append(
|
258
|
+
$('<div class="nivo-slice"></div>').css({
|
259
|
+
left:(sliceWidth*i)+'px', width:sliceWidth+'px',
|
260
|
+
height:'0px',
|
261
|
+
opacity:'0',
|
262
|
+
background: 'url("'+ vars.currentImage.attr('src') +'") no-repeat -'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px 0%'
|
263
|
+
})
|
264
|
+
);
|
265
|
+
}
|
266
|
+
}
|
267
|
+
}
|
268
|
+
|
269
|
+
// Add boxes for box animations
|
270
|
+
var createBoxes = function(slider, settings, vars){
|
271
|
+
var boxWidth = Math.round(slider.width()/settings.boxCols);
|
272
|
+
var boxHeight = Math.round(slider.height()/settings.boxRows);
|
273
|
+
|
274
|
+
for(var rows = 0; rows < settings.boxRows; rows++){
|
275
|
+
for(var cols = 0; cols < settings.boxCols; cols++){
|
276
|
+
if(cols == settings.boxCols-1){
|
277
|
+
slider.append(
|
278
|
+
$('<div class="nivo-box"></div>').css({
|
279
|
+
opacity:0,
|
280
|
+
left:(boxWidth*cols)+'px',
|
281
|
+
top:(boxHeight*rows)+'px',
|
282
|
+
width:(slider.width()-(boxWidth*cols))+'px',
|
283
|
+
height:boxHeight+'px',
|
284
|
+
background: 'url("'+ vars.currentImage.attr('src') +'") no-repeat -'+ ((boxWidth + (cols * boxWidth)) - boxWidth) +'px -'+ ((boxHeight + (rows * boxHeight)) - boxHeight) +'px'
|
285
|
+
})
|
286
|
+
);
|
287
|
+
} else {
|
288
|
+
slider.append(
|
289
|
+
$('<div class="nivo-box"></div>').css({
|
290
|
+
opacity:0,
|
291
|
+
left:(boxWidth*cols)+'px',
|
292
|
+
top:(boxHeight*rows)+'px',
|
293
|
+
width:boxWidth+'px',
|
294
|
+
height:boxHeight+'px',
|
295
|
+
background: 'url("'+ vars.currentImage.attr('src') +'") no-repeat -'+ ((boxWidth + (cols * boxWidth)) - boxWidth) +'px -'+ ((boxHeight + (rows * boxHeight)) - boxHeight) +'px'
|
296
|
+
})
|
297
|
+
);
|
298
|
+
}
|
299
|
+
}
|
300
|
+
}
|
301
|
+
}
|
302
|
+
|
303
|
+
// Private run method
|
304
|
+
var nivoRun = function(slider, kids, settings, nudge){
|
305
|
+
//Get our vars
|
306
|
+
var vars = slider.data('nivo:vars');
|
307
|
+
|
308
|
+
//Trigger the lastSlide callback
|
309
|
+
if(vars && (vars.currentSlide == vars.totalSlides - 1)){
|
310
|
+
settings.lastSlide.call(this);
|
311
|
+
}
|
312
|
+
|
313
|
+
// Stop
|
314
|
+
if((!vars || vars.stop) && !nudge) return false;
|
315
|
+
|
316
|
+
//Trigger the beforeChange callback
|
317
|
+
settings.beforeChange.call(this);
|
318
|
+
|
319
|
+
//Set current background before change
|
320
|
+
if(!nudge){
|
321
|
+
slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
|
322
|
+
} else {
|
323
|
+
if(nudge == 'prev'){
|
324
|
+
slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
|
325
|
+
}
|
326
|
+
if(nudge == 'next'){
|
327
|
+
slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
|
328
|
+
}
|
329
|
+
}
|
330
|
+
vars.currentSlide++;
|
331
|
+
//Trigger the slideshowEnd callback
|
332
|
+
if(vars.currentSlide == vars.totalSlides){
|
333
|
+
vars.currentSlide = 0;
|
334
|
+
settings.slideshowEnd.call(this);
|
335
|
+
}
|
336
|
+
if(vars.currentSlide < 0) vars.currentSlide = (vars.totalSlides - 1);
|
337
|
+
//Set vars.currentImage
|
338
|
+
if($(kids[vars.currentSlide]).is('img')){
|
339
|
+
vars.currentImage = $(kids[vars.currentSlide]);
|
340
|
+
} else {
|
341
|
+
vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
|
342
|
+
}
|
343
|
+
|
344
|
+
//Set active links
|
345
|
+
if(settings.controlNav){
|
346
|
+
$('.nivo-controlNav a', slider).removeClass('active');
|
347
|
+
$('.nivo-controlNav a:eq('+ vars.currentSlide +')', slider).addClass('active');
|
348
|
+
}
|
349
|
+
|
350
|
+
//Process caption
|
351
|
+
processCaption(settings);
|
352
|
+
|
353
|
+
// Remove any slices from last transition
|
354
|
+
$('.nivo-slice', slider).remove();
|
355
|
+
|
356
|
+
// Remove any boxes from last transition
|
357
|
+
$('.nivo-box', slider).remove();
|
358
|
+
|
359
|
+
if(settings.effect == 'random'){
|
360
|
+
var anims = new Array('sliceDownRight','sliceDownLeft','sliceUpRight','sliceUpLeft','sliceUpDown','sliceUpDownLeft','fold','fade',
|
361
|
+
'boxRandom','boxRain','boxRainReverse','boxRainGrow','boxRainGrowReverse');
|
362
|
+
vars.randAnim = anims[Math.floor(Math.random()*(anims.length + 1))];
|
363
|
+
if(vars.randAnim == undefined) vars.randAnim = 'fade';
|
364
|
+
}
|
365
|
+
|
366
|
+
//Run random effect from specified set (eg: effect:'fold,fade')
|
367
|
+
if(settings.effect.indexOf(',') != -1){
|
368
|
+
var anims = settings.effect.split(',');
|
369
|
+
vars.randAnim = anims[Math.floor(Math.random()*(anims.length))];
|
370
|
+
if(vars.randAnim == undefined) vars.randAnim = 'fade';
|
371
|
+
}
|
372
|
+
|
373
|
+
//Run effects
|
374
|
+
vars.running = true;
|
375
|
+
if(settings.effect == 'sliceDown' || settings.effect == 'sliceDownRight' || vars.randAnim == 'sliceDownRight' ||
|
376
|
+
settings.effect == 'sliceDownLeft' || vars.randAnim == 'sliceDownLeft'){
|
377
|
+
createSlices(slider, settings, vars);
|
378
|
+
var timeBuff = 0;
|
379
|
+
var i = 0;
|
380
|
+
var slices = $('.nivo-slice', slider);
|
381
|
+
if(settings.effect == 'sliceDownLeft' || vars.randAnim == 'sliceDownLeft') slices = $('.nivo-slice', slider)._reverse();
|
382
|
+
|
383
|
+
slices.each(function(){
|
384
|
+
var slice = $(this);
|
385
|
+
slice.css({ 'top': '0px' });
|
386
|
+
if(i == settings.slices-1){
|
387
|
+
setTimeout(function(){
|
388
|
+
slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
|
389
|
+
}, (100 + timeBuff));
|
390
|
+
} else {
|
391
|
+
setTimeout(function(){
|
392
|
+
slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
|
393
|
+
}, (100 + timeBuff));
|
394
|
+
}
|
395
|
+
timeBuff += 50;
|
396
|
+
i++;
|
397
|
+
});
|
398
|
+
}
|
399
|
+
else if(settings.effect == 'sliceUp' || settings.effect == 'sliceUpRight' || vars.randAnim == 'sliceUpRight' ||
|
400
|
+
settings.effect == 'sliceUpLeft' || vars.randAnim == 'sliceUpLeft'){
|
401
|
+
createSlices(slider, settings, vars);
|
402
|
+
var timeBuff = 0;
|
403
|
+
var i = 0;
|
404
|
+
var slices = $('.nivo-slice', slider);
|
405
|
+
if(settings.effect == 'sliceUpLeft' || vars.randAnim == 'sliceUpLeft') slices = $('.nivo-slice', slider)._reverse();
|
406
|
+
|
407
|
+
slices.each(function(){
|
408
|
+
var slice = $(this);
|
409
|
+
slice.css({ 'bottom': '0px' });
|
410
|
+
if(i == settings.slices-1){
|
411
|
+
setTimeout(function(){
|
412
|
+
slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
|
413
|
+
}, (100 + timeBuff));
|
414
|
+
} else {
|
415
|
+
setTimeout(function(){
|
416
|
+
slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
|
417
|
+
}, (100 + timeBuff));
|
418
|
+
}
|
419
|
+
timeBuff += 50;
|
420
|
+
i++;
|
421
|
+
});
|
422
|
+
}
|
423
|
+
else if(settings.effect == 'sliceUpDown' || settings.effect == 'sliceUpDownRight' || vars.randAnim == 'sliceUpDown' ||
|
424
|
+
settings.effect == 'sliceUpDownLeft' || vars.randAnim == 'sliceUpDownLeft'){
|
425
|
+
createSlices(slider, settings, vars);
|
426
|
+
var timeBuff = 0;
|
427
|
+
var i = 0;
|
428
|
+
var v = 0;
|
429
|
+
var slices = $('.nivo-slice', slider);
|
430
|
+
if(settings.effect == 'sliceUpDownLeft' || vars.randAnim == 'sliceUpDownLeft') slices = $('.nivo-slice', slider)._reverse();
|
431
|
+
|
432
|
+
slices.each(function(){
|
433
|
+
var slice = $(this);
|
434
|
+
if(i == 0){
|
435
|
+
slice.css('top','0px');
|
436
|
+
i++;
|
437
|
+
} else {
|
438
|
+
slice.css('bottom','0px');
|
439
|
+
i = 0;
|
440
|
+
}
|
441
|
+
|
442
|
+
if(v == settings.slices-1){
|
443
|
+
setTimeout(function(){
|
444
|
+
slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
|
445
|
+
}, (100 + timeBuff));
|
446
|
+
} else {
|
447
|
+
setTimeout(function(){
|
448
|
+
slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
|
449
|
+
}, (100 + timeBuff));
|
450
|
+
}
|
451
|
+
timeBuff += 50;
|
452
|
+
v++;
|
453
|
+
});
|
454
|
+
}
|
455
|
+
else if(settings.effect == 'fold' || vars.randAnim == 'fold'){
|
456
|
+
createSlices(slider, settings, vars);
|
457
|
+
var timeBuff = 0;
|
458
|
+
var i = 0;
|
459
|
+
|
460
|
+
$('.nivo-slice', slider).each(function(){
|
461
|
+
var slice = $(this);
|
462
|
+
var origWidth = slice.width();
|
463
|
+
slice.css({ top:'0px', height:'100%', width:'0px' });
|
464
|
+
if(i == settings.slices-1){
|
465
|
+
setTimeout(function(){
|
466
|
+
slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
|
467
|
+
}, (100 + timeBuff));
|
468
|
+
} else {
|
469
|
+
setTimeout(function(){
|
470
|
+
slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed);
|
471
|
+
}, (100 + timeBuff));
|
472
|
+
}
|
473
|
+
timeBuff += 50;
|
474
|
+
i++;
|
475
|
+
});
|
476
|
+
}
|
477
|
+
else if(settings.effect == 'fade' || vars.randAnim == 'fade'){
|
478
|
+
createSlices(slider, settings, vars);
|
479
|
+
|
480
|
+
var firstSlice = $('.nivo-slice:first', slider);
|
481
|
+
firstSlice.css({
|
482
|
+
'height': '100%',
|
483
|
+
'width': slider.width() + 'px'
|
484
|
+
});
|
485
|
+
|
486
|
+
firstSlice.animate({ opacity:'1.0' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); });
|
487
|
+
}
|
488
|
+
else if(settings.effect == 'slideInRight' || vars.randAnim == 'slideInRight'){
|
489
|
+
createSlices(slider, settings, vars);
|
490
|
+
|
491
|
+
var firstSlice = $('.nivo-slice:first', slider);
|
492
|
+
firstSlice.css({
|
493
|
+
'height': '100%',
|
494
|
+
'width': '0px',
|
495
|
+
'opacity': '1'
|
496
|
+
});
|
497
|
+
|
498
|
+
firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); });
|
499
|
+
}
|
500
|
+
else if(settings.effect == 'slideInLeft' || vars.randAnim == 'slideInLeft'){
|
501
|
+
createSlices(slider, settings, vars);
|
502
|
+
|
503
|
+
var firstSlice = $('.nivo-slice:first', slider);
|
504
|
+
firstSlice.css({
|
505
|
+
'height': '100%',
|
506
|
+
'width': '0px',
|
507
|
+
'opacity': '1',
|
508
|
+
'left': '',
|
509
|
+
'right': '0px'
|
510
|
+
});
|
511
|
+
|
512
|
+
firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), '', function(){
|
513
|
+
// Reset positioning
|
514
|
+
firstSlice.css({
|
515
|
+
'left': '0px',
|
516
|
+
'right': ''
|
517
|
+
});
|
518
|
+
slider.trigger('nivo:animFinished');
|
519
|
+
});
|
520
|
+
}
|
521
|
+
else if(settings.effect == 'boxRandom' || vars.randAnim == 'boxRandom'){
|
522
|
+
createBoxes(slider, settings, vars);
|
523
|
+
|
524
|
+
var totalBoxes = settings.boxCols * settings.boxRows;
|
525
|
+
var i = 0;
|
526
|
+
var timeBuff = 0;
|
527
|
+
|
528
|
+
var boxes = shuffle($('.nivo-box', slider));
|
529
|
+
boxes.each(function(){
|
530
|
+
var box = $(this);
|
531
|
+
if(i == totalBoxes-1){
|
532
|
+
setTimeout(function(){
|
533
|
+
box.animate({ opacity:'1' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
|
534
|
+
}, (100 + timeBuff));
|
535
|
+
} else {
|
536
|
+
setTimeout(function(){
|
537
|
+
box.animate({ opacity:'1' }, settings.animSpeed);
|
538
|
+
}, (100 + timeBuff));
|
539
|
+
}
|
540
|
+
timeBuff += 20;
|
541
|
+
i++;
|
542
|
+
});
|
543
|
+
}
|
544
|
+
else if(settings.effect == 'boxRain' || vars.randAnim == 'boxRain' || settings.effect == 'boxRainReverse' || vars.randAnim == 'boxRainReverse' ||
|
545
|
+
settings.effect == 'boxRainGrow' || vars.randAnim == 'boxRainGrow' || settings.effect == 'boxRainGrowReverse' || vars.randAnim == 'boxRainGrowReverse'){
|
546
|
+
createBoxes(slider, settings, vars);
|
547
|
+
|
548
|
+
var totalBoxes = settings.boxCols * settings.boxRows;
|
549
|
+
var i = 0;
|
550
|
+
var timeBuff = 0;
|
551
|
+
|
552
|
+
// Split boxes into 2D array
|
553
|
+
var rowIndex = 0;
|
554
|
+
var colIndex = 0;
|
555
|
+
var box2Darr = new Array();
|
556
|
+
box2Darr[rowIndex] = new Array();
|
557
|
+
var boxes = $('.nivo-box', slider);
|
558
|
+
if(settings.effect == 'boxRainReverse' || vars.randAnim == 'boxRainReverse' ||
|
559
|
+
settings.effect == 'boxRainGrowReverse' || vars.randAnim == 'boxRainGrowReverse'){
|
560
|
+
boxes = $('.nivo-box', slider)._reverse();
|
561
|
+
}
|
562
|
+
boxes.each(function(){
|
563
|
+
box2Darr[rowIndex][colIndex] = $(this);
|
564
|
+
colIndex++;
|
565
|
+
if(colIndex == settings.boxCols){
|
566
|
+
rowIndex++;
|
567
|
+
colIndex = 0;
|
568
|
+
box2Darr[rowIndex] = new Array();
|
569
|
+
}
|
570
|
+
});
|
571
|
+
|
572
|
+
// Run animation
|
573
|
+
for(var cols = 0; cols < (settings.boxCols * 2); cols++){
|
574
|
+
var prevCol = cols;
|
575
|
+
for(var rows = 0; rows < settings.boxRows; rows++){
|
576
|
+
if(prevCol >= 0 && prevCol < settings.boxCols){
|
577
|
+
/* Due to some weird JS bug with loop vars
|
578
|
+
being used in setTimeout, this is wrapped
|
579
|
+
with an anonymous function call */
|
580
|
+
(function(row, col, time, i, totalBoxes) {
|
581
|
+
var box = $(box2Darr[row][col]);
|
582
|
+
var w = box.width();
|
583
|
+
var h = box.height();
|
584
|
+
if(settings.effect == 'boxRainGrow' || vars.randAnim == 'boxRainGrow' ||
|
585
|
+
settings.effect == 'boxRainGrowReverse' || vars.randAnim == 'boxRainGrowReverse'){
|
586
|
+
box.width(0).height(0);
|
587
|
+
}
|
588
|
+
if(i == totalBoxes-1){
|
589
|
+
setTimeout(function(){
|
590
|
+
box.animate({ opacity:'1', width:w, height:h }, settings.animSpeed/1.3, '', function(){ slider.trigger('nivo:animFinished'); });
|
591
|
+
}, (100 + time));
|
592
|
+
} else {
|
593
|
+
setTimeout(function(){
|
594
|
+
box.animate({ opacity:'1', width:w, height:h }, settings.animSpeed/1.3);
|
595
|
+
}, (100 + time));
|
596
|
+
}
|
597
|
+
})(rows, prevCol, timeBuff, i, totalBoxes);
|
598
|
+
i++;
|
599
|
+
}
|
600
|
+
prevCol--;
|
601
|
+
}
|
602
|
+
timeBuff += 100;
|
603
|
+
}
|
604
|
+
}
|
605
|
+
}
|
606
|
+
|
607
|
+
// Shuffle an array
|
608
|
+
var shuffle = function(arr){
|
609
|
+
for(var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x);
|
610
|
+
return arr;
|
611
|
+
}
|
612
|
+
|
613
|
+
// For debugging
|
614
|
+
var trace = function(msg){
|
615
|
+
if (this.console && typeof console.log != "undefined")
|
616
|
+
console.log(msg);
|
617
|
+
}
|
618
|
+
|
619
|
+
// Start / Stop
|
620
|
+
this.stop = function(){
|
621
|
+
if(!$(element).data('nivo:vars').stop){
|
622
|
+
$(element).data('nivo:vars').stop = true;
|
623
|
+
trace('Stop Slider');
|
624
|
+
}
|
625
|
+
}
|
626
|
+
|
627
|
+
this.start = function(){
|
628
|
+
if($(element).data('nivo:vars').stop){
|
629
|
+
$(element).data('nivo:vars').stop = false;
|
630
|
+
trace('Start Slider');
|
631
|
+
}
|
632
|
+
}
|
633
|
+
|
634
|
+
//Trigger the afterLoad callback
|
635
|
+
settings.afterLoad.call(this);
|
636
|
+
|
637
|
+
return this;
|
638
|
+
};
|
639
|
+
|
640
|
+
$.fn.nivoSlider = function(options) {
|
641
|
+
|
642
|
+
return this.each(function(key, value){
|
643
|
+
var element = $(this);
|
644
|
+
// Return early if this element already has a plugin instance
|
645
|
+
if (element.data('nivoslider')) return element.data('nivoslider');
|
646
|
+
// Pass options to plugin constructor
|
647
|
+
var nivoslider = new NivoSlider(this, options);
|
648
|
+
// Store plugin object in this element's data
|
649
|
+
element.data('nivoslider', nivoslider);
|
650
|
+
});
|
651
|
+
|
652
|
+
};
|
653
|
+
|
654
|
+
//Default settings
|
655
|
+
$.fn.nivoSlider.defaults = {
|
656
|
+
effect: 'random',
|
657
|
+
slices: 15,
|
658
|
+
boxCols: 8,
|
659
|
+
boxRows: 4,
|
660
|
+
animSpeed: 500,
|
661
|
+
pauseTime: 3000,
|
662
|
+
startSlide: 0,
|
663
|
+
directionNav: true,
|
664
|
+
directionNavHide: true,
|
665
|
+
controlNav: true,
|
666
|
+
controlNavThumbs: false,
|
667
|
+
controlNavThumbsFromRel: false,
|
668
|
+
controlNavThumbsSearch: '.jpg',
|
669
|
+
controlNavThumbsReplace: '_thumb.jpg',
|
670
|
+
keyboardNav: true,
|
671
|
+
pauseOnHover: true,
|
672
|
+
manualAdvance: false,
|
673
|
+
captionOpacity: 0.8,
|
674
|
+
prevText: 'Prev',
|
675
|
+
nextText: 'Next',
|
676
|
+
beforeChange: function(){},
|
677
|
+
afterChange: function(){},
|
678
|
+
slideshowEnd: function(){},
|
679
|
+
lastSlide: function(){},
|
680
|
+
afterLoad: function(){}
|
681
|
+
};
|
682
|
+
|
683
|
+
$.fn._reverse = [].reverse;
|
684
|
+
|
685
|
+
})(jQuery);
|