nivo 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. data/.DS_Store +0 -0
  2. data/.gitignore +4 -0
  3. data/Gemfile +15 -0
  4. data/README.md +76 -0
  5. data/Rakefile +38 -0
  6. data/app/.DS_Store +0 -0
  7. data/app/controllers/.DS_Store +0 -0
  8. data/app/controllers/nivo/manage_slides_controller.rb +19 -0
  9. data/app/controllers/nivo/slides_controller.rb +55 -0
  10. data/app/models/.DS_Store +0 -0
  11. data/app/models/nivo/slide.rb +60 -0
  12. data/app/views/.DS_Store +0 -0
  13. data/app/views/nivo/_slideshow.html.haml +14 -0
  14. data/app/views/nivo/slides/_form.html.haml +27 -0
  15. data/app/views/nivo/slides/_search.html.haml +5 -0
  16. data/app/views/nivo/slides/edit.html.haml +5 -0
  17. data/app/views/nivo/slides/index.html.haml +26 -0
  18. data/app/views/nivo/slides/index.js.haml +2 -0
  19. data/app/views/nivo/slides/new.html.haml +6 -0
  20. data/app/views/nivo/slides/show.html.haml +19 -0
  21. data/config/.DS_Store +0 -0
  22. data/config/nivo_config.yml +34 -0
  23. data/config/routes.rb +15 -0
  24. data/lib/.DS_Store +0 -0
  25. data/lib/engine.rb +34 -0
  26. data/lib/nivo/config.rb +8 -0
  27. data/lib/nivo/helper.rb +14 -0
  28. data/lib/nivo/manage_slides.rb +17 -0
  29. data/lib/nivo/version.rb +3 -0
  30. data/lib/nivo.rb +13 -0
  31. data/lib/rails/.DS_Store +0 -0
  32. data/lib/rails/generators/.DS_Store +0 -0
  33. data/lib/rails/generators/nivo/.DS_Store +0 -0
  34. data/lib/rails/generators/nivo/controller_generator.rb +18 -0
  35. data/lib/rails/generators/nivo/install_generator.rb +49 -0
  36. data/lib/rails/generators/nivo/stylesheet_generator.rb +18 -0
  37. data/lib/rails/generators/nivo/templates/migration.rb +12 -0
  38. data/lib/rails/generators/nivo/templates/nivo_config.yml +29 -0
  39. data/lib/rails/generators/nivo/templates/schema.rb +15 -0
  40. data/lib/rails/generators/nivo/views_generator.rb +18 -0
  41. data/lib/rails/railties/tasks.rake +0 -0
  42. data/nivo.gemspec +28 -0
  43. data/public/.DS_Store +0 -0
  44. data/public/images/.DS_Store +0 -0
  45. data/public/images/arrows.png +0 -0
  46. data/public/images/bullets.png +0 -0
  47. data/public/images/loading.gif +0 -0
  48. data/public/javascripts/.DS_Store +0 -0
  49. data/public/javascripts/nivo-admin.js +10 -0
  50. data/public/javascripts/nivo-dragsort.js +288 -0
  51. data/public/javascripts/nivo-serialize.js +98 -0
  52. data/public/javascripts/nivo-settings.js +6 -0
  53. data/public/javascripts/nivo-slider.js +685 -0
  54. data/public/stylesheets/.DS_Store +0 -0
  55. data/public/stylesheets/.gitkeep +0 -0
  56. data/public/stylesheets/default.css +75 -0
  57. data/public/stylesheets/nivo-slider.css +89 -0
  58. data/test/.DS_Store +0 -0
  59. data/test/helper.rb +18 -0
  60. data/test/test_nivo.rb +10 -0
  61. metadata +157 -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);
Binary file
File without changes