bxslider-rails 3.0.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -8,7 +8,7 @@ bxSlider Author: Steven Wanderski, Copyright 2011
8
8
 
9
9
  ### Extra info
10
10
 
11
- bxSlider v3.0 == bxslider-rails (3.0.0)
11
+ bxSlider4 == bxslider-rails (4.0.0)
12
12
 
13
13
  ## Installation
14
14
 
@@ -30,32 +30,45 @@ The bxSlider is a jQuery HTML Content Slider, so please check if you are using t
30
30
 
31
31
  //= require jquery
32
32
 
33
- Add to your app/assets/javascripts/application.js
34
-
35
- //= require bxslider
36
-
37
- If you are going to use the Easing Transitions you will need the easing1.3.js:
38
-
33
+ Your app/assets/javascripts/application.js must appear like:
34
+ //= require jquery
35
+ //= require jquery_ujs
39
36
  //= require bxslider
40
- //= require easing1.3
37
+ //= require_tree .
41
38
 
42
- Example from http://bxslider.com
39
+ And your app/assets/stylesheets/application.css like this:
40
+ *= require_self
41
+ *= require bxslider
42
+ *= require_tree .
43
+
44
+
45
+ Basic Structure example from http://bxslider.com
43
46
 
44
- <ul id="slider1">
47
+ <ul class="bxslider">
45
48
  <li>Slide one content</li>
46
49
  <li>Slide two content</li>
47
50
  <li>Slide three content</li>
48
51
  <li>And so on...</li>
49
52
  </ul>
50
53
 
54
+
55
+ ## REMEMBER TO INITIALIZE IT!
56
+
51
57
  If you are going to use coffee script:
52
58
 
53
59
  $(document).ready ->
54
- $("#slider1").bxSlider()
60
+ $(".bxslider").bxSlider()
55
61
 
56
62
  Or just javascript:
57
63
 
58
64
  $(document).ready(function(){
59
- $('#slider1').bxSlider();
65
+ $('.bxslider').bxSlider();
60
66
  });
61
67
 
68
+ For more documentation please checkout the bxslider 4 repository here:
69
+ https://github.com/wandoledzep/bxslider-4
70
+
71
+ ##### Gem Author
72
+
73
+ http://twitter.com/manfe01
74
+ http://ferreiramauricio.com
@@ -1,5 +1,5 @@
1
1
  module Bxslider
2
2
  module Rails
3
- VERSION = "3.0.0"
3
+ VERSION = "4.0.0"
4
4
  end
5
5
  end
Binary file
Binary file
@@ -1,1260 +1,3 @@
1
- /**
2
- * jQuery bxSlider v3.0
3
- * http://bxslider.com
4
- *
5
- * Copyright 2011, Steven Wanderski
6
- * http://bxcreative.com
7
- *
8
- * Free to use and abuse under the MIT license.
9
- * http://www.opensource.org/licenses/mit-license.php
10
- *
11
- */
12
-
13
-
14
- (function($){
15
-
16
- $.fn.bxSlider = function(options){
17
-
18
- var defaults = {
19
- mode: 'horizontal', // 'horizontal', 'vertical', 'fade'
20
- infiniteLoop: true, // true, false - display first slide after last
21
- hideControlOnEnd: false, // true, false - if true, will hide 'next' control on last slide and 'prev' control on first
22
- controls: true, // true, false - previous and next controls
23
- speed: 500, // integer - in ms, duration of time slide transitions will occupy
24
- easing: 'swing', // used with jquery.easing.1.3.js - see http://gsgd.co.uk/sandbox/jquery/easing/ for available options
25
- pager: false, // true / false - display a pager
26
- pagerSelector: null, // jQuery selector - element to contain the pager. ex: '#pager'
27
- pagerType: 'full', // 'full', 'short' - if 'full' pager displays 1,2,3... if 'short' pager displays 1 / 4
28
- pagerLocation: 'bottom', // 'bottom', 'top' - location of pager
29
- pagerShortSeparator: '/', // string - ex: 'of' pager would display 1 of 4
30
- pagerActiveClass: 'pager-active', // string - classname attached to the active pager link
31
- nextText: 'next', // string - text displayed for 'next' control
32
- nextImage: '', // string - filepath of image used for 'next' control. ex: 'images/next.jpg'
33
- nextSelector: null, // jQuery selector - element to contain the next control. ex: '#next'
34
- prevText: 'prev', // string - text displayed for 'previous' control
35
- prevImage: '', // string - filepath of image used for 'previous' control. ex: 'images/prev.jpg'
36
- prevSelector: null, // jQuery selector - element to contain the previous control. ex: '#next'
37
- captions: false, // true, false - display image captions (reads the image 'title' tag)
38
- captionsSelector: null, // jQuery selector - element to contain the captions. ex: '#captions'
39
- auto: false, // true, false - make slideshow change automatically
40
- autoDirection: 'next', // 'next', 'prev' - direction in which auto show will traverse
41
- autoControls: false, // true, false - show 'start' and 'stop' controls for auto show
42
- autoControlsSelector: null, // jQuery selector - element to contain the auto controls. ex: '#auto-controls'
43
- autoStart: true, // true, false - if false show will wait for 'start' control to activate
44
- autoHover: false, // true, false - if true show will pause on mouseover
45
- autoDelay: 0, // integer - in ms, the amount of time before starting the auto show
46
- pause: 3000, // integer - in ms, the duration between each slide transition
47
- startText: 'start', // string - text displayed for 'start' control
48
- startImage: '', // string - filepath of image used for 'start' control. ex: 'images/start.jpg'
49
- stopText: 'stop', // string - text displayed for 'stop' control
50
- stopImage: '', // string - filepath of image used for 'stop' control. ex: 'images/stop.jpg'
51
- ticker: false, // true, false - continuous motion ticker mode (think news ticker)
52
- // note: autoControls, autoControlsSelector, and autoHover apply to ticker!
53
- tickerSpeed: 5000, // float - use value between 1 and 5000 to determine ticker speed - the smaller the value the faster the ticker speed
54
- tickerDirection: 'next', // 'next', 'prev' - direction in which ticker show will traverse
55
- tickerHover: false, // true, false - if true ticker will pause on mouseover
56
- wrapperClass: 'bx-wrapper', // string - classname attached to the slider wraper
57
- startingSlide: 0, // integer - show will start on specified slide. note: slides are zero based!
58
- displaySlideQty: 1, // integer - number of slides to display at once
59
- moveSlideQty: 1, // integer - number of slides to move at once
60
- randomStart: false, // true, false - if true show will start on a random slide
61
- onBeforeSlide: function(){}, // function(currentSlideNumber, totalSlideQty, currentSlideHtmlObject) - advanced use only! see the tutorial here: http://bxslider.com/custom-pager
62
- onAfterSlide: function(){}, // function(currentSlideNumber, totalSlideQty, currentSlideHtmlObject) - advanced use only! see the tutorial here: http://bxslider.com/custom-pager
63
- onLastSlide: function(){}, // function(currentSlideNumber, totalSlideQty, currentSlideHtmlObject) - advanced use only! see the tutorial here: http://bxslider.com/custom-pager
64
- onFirstSlide: function(){}, // function(currentSlideNumber, totalSlideQty, currentSlideHtmlObject) - advanced use only! see the tutorial here: http://bxslider.com/custom-pager
65
- onNextSlide: function(){}, // function(currentSlideNumber, totalSlideQty, currentSlideHtmlObject) - advanced use only! see the tutorial here: http://bxslider.com/custom-pager
66
- onPrevSlide: function(){}, // function(currentSlideNumber, totalSlideQty, currentSlideHtmlObject) - advanced use only! see the tutorial here: http://bxslider.com/custom-pager
67
- buildPager: null // function(slideIndex, slideHtmlObject){ return string; } - advanced use only! see the tutorial here: http://bxslider.com/custom-pager
68
- }
69
-
70
- var options = $.extend(defaults, options);
71
-
72
- // cache the base element
73
- var base = this;
74
- // initialize (and localize) all variables
75
- var $parent = '';
76
- var $origElement = '';
77
- var $children = '';
78
- var $outerWrapper = '';
79
- var $firstChild = '';
80
- var childrenWidth = '';
81
- var childrenOuterWidth = '';
82
- var wrapperWidth = '';
83
- var wrapperHeight = '';
84
- var $pager = '';
85
- var interval = '';
86
- var $autoControls = '';
87
- var $stopHtml = '';
88
- var $startContent = '';
89
- var $stopContent = '';
90
- var autoPlaying = true;
91
- var loaded = false;
92
- var childrenMaxWidth = 0;
93
- var childrenMaxHeight = 0;
94
- var currentSlide = 0;
95
- var origLeft = 0;
96
- var origTop = 0;
97
- var origShowWidth = 0;
98
- var origShowHeight = 0;
99
- var tickerLeft = 0;
100
- var tickerTop = 0;
101
- var isWorking = false;
102
-
103
- var firstSlide = 0;
104
- var lastSlide = $children.length - 1;
105
-
106
-
107
- // PUBLIC FUNCTIONS
108
-
109
- /**
110
- * Go to specified slide
111
- */
112
- this.goToSlide = function(number, stopAuto){
113
- if(!isWorking){
114
- isWorking = true;
115
- // set current slide to argument
116
- currentSlide = number;
117
- options.onBeforeSlide(currentSlide, $children.length, $children.eq(currentSlide));
118
- // check if stopAuto argument is supplied
119
- if(typeof(stopAuto) == 'undefined'){
120
- var stopAuto = true;
121
- }
122
- if(stopAuto){
123
- // if show is auto playing, stop it
124
- if(options.auto){
125
- base.stopShow(true);
126
- }
127
- }
128
- slide = number;
129
- // check for first slide callback
130
- if(slide == firstSlide){
131
- options.onFirstSlide(currentSlide, $children.length, $children.eq(currentSlide));
132
- }
133
- // check for last slide callback
134
- if(slide == lastSlide){
135
- options.onLastSlide(currentSlide, $children.length, $children.eq(currentSlide));
136
- }
137
- // horizontal
138
- if(options.mode == 'horizontal'){
139
- $parent.animate({'left': '-'+getSlidePosition(slide, 'left')+'px'}, options.speed, options.easing, function(){
140
- isWorking = false;
141
- // perform the callback function
142
- options.onAfterSlide(currentSlide, $children.length, $children.eq(currentSlide));
143
- });
144
- // vertical
145
- }else if(options.mode == 'vertical'){
146
- $parent.animate({'top': '-'+getSlidePosition(slide, 'top')+'px'}, options.speed, options.easing, function(){
147
- isWorking = false;
148
- // perform the callback function
149
- options.onAfterSlide(currentSlide, $children.length, $children.eq(currentSlide));
150
- });
151
- // fade
152
- }else if(options.mode == 'fade'){
153
- setChildrenFade();
154
- }
155
- // check to remove controls on last/first slide
156
- checkEndControls();
157
- // accomodate multi slides
158
- if(options.moveSlideQty > 1){
159
- number = Math.floor(number / options.moveSlideQty);
160
- }
161
- // make the current slide active
162
- makeSlideActive(number);
163
- // display the caption
164
- showCaptions();
165
- }
166
- }
167
-
168
- /**
169
- * Go to next slide
170
- */
171
- this.goToNextSlide = function(stopAuto){
172
- // check if stopAuto argument is supplied
173
- if(typeof(stopAuto) == 'undefined'){
174
- var stopAuto = true;
175
- }
176
- if(stopAuto){
177
- // if show is auto playing, stop it
178
- if(options.auto){
179
- base.stopShow(true);
180
- }
181
- }
182
- // makes slideshow finite
183
- if(!options.infiniteLoop){
184
- if(!isWorking){
185
- var slideLoop = false;
186
- // make current slide the old value plus moveSlideQty
187
- currentSlide = (currentSlide + (options.moveSlideQty));
188
- // if current slide has looped on itself
189
- if(currentSlide <= lastSlide){
190
- checkEndControls();
191
- // next slide callback
192
- options.onNextSlide(currentSlide, $children.length, $children.eq(currentSlide));
193
- // move to appropriate slide
194
- base.goToSlide(currentSlide);
195
- }else{
196
- currentSlide -= options.moveSlideQty;
197
- }
198
- } // end if(!isWorking)
199
- }else{
200
- if(!isWorking){
201
- isWorking = true;
202
- var slideLoop = false;
203
- // make current slide the old value plus moveSlideQty
204
- currentSlide = (currentSlide + options.moveSlideQty);
205
- // if current slide has looped on itself
206
- if(currentSlide > lastSlide){
207
- currentSlide = currentSlide % $children.length;
208
- slideLoop = true;
209
- }
210
- // next slide callback
211
- options.onNextSlide(currentSlide, $children.length, $children.eq(currentSlide));
212
- // slide before callback
213
- options.onBeforeSlide(currentSlide, $children.length, $children.eq(currentSlide));
214
- if(options.mode == 'horizontal'){
215
- // get the new 'left' property for $parent
216
- var parentLeft = (options.moveSlideQty * childrenOuterWidth);
217
- // animate to the new 'left'
218
- $parent.animate({'left': '-='+parentLeft+'px'}, options.speed, options.easing, function(){
219
- isWorking = false;
220
- // if its time to loop, reset the $parent
221
- if(slideLoop){
222
- $parent.css('left', '-'+getSlidePosition(currentSlide, 'left')+'px');
223
- }
224
- // perform the callback function
225
- options.onAfterSlide(currentSlide, $children.length, $children.eq(currentSlide));
226
- });
227
- }else if(options.mode == 'vertical'){
228
- // get the new 'left' property for $parent
229
- var parentTop = (options.moveSlideQty * childrenMaxHeight);
230
- // animate to the new 'left'
231
- $parent.animate({'top': '-='+parentTop+'px'}, options.speed, options.easing, function(){
232
- isWorking = false;
233
- // if its time to loop, reset the $parent
234
- if(slideLoop){
235
- $parent.css('top', '-'+getSlidePosition(currentSlide, 'top')+'px');
236
- }
237
- // perform the callback function
238
- options.onAfterSlide(currentSlide, $children.length, $children.eq(currentSlide));
239
- });
240
- }else if(options.mode == 'fade'){
241
- setChildrenFade();
242
- }
243
- // make the current slide active
244
- if(options.moveSlideQty > 1){
245
- makeSlideActive(Math.ceil(currentSlide / options.moveSlideQty));
246
- }else{
247
- makeSlideActive(currentSlide);
248
- }
249
- // display the caption
250
- showCaptions();
251
- } // end if(!isWorking)
252
-
253
- }
254
- } // end function
255
-
256
- /**
257
- * Go to previous slide
258
- */
259
- this.goToPreviousSlide = function(stopAuto){
260
- // check if stopAuto argument is supplied
261
- if(typeof(stopAuto) == 'undefined'){
262
- var stopAuto = true;
263
- }
264
- if(stopAuto){
265
- // if show is auto playing, stop it
266
- if(options.auto){
267
- base.stopShow(true);
268
- }
269
- }
270
- // makes slideshow finite
271
- if(!options.infiniteLoop){
272
- if(!isWorking){
273
- var slideLoop = false;
274
- // make current slide the old value plus moveSlideQty
275
- currentSlide = currentSlide - options.moveSlideQty;
276
- // if current slide has looped on itself
277
- if(currentSlide < 0){
278
- currentSlide = 0;
279
- // if specified, hide the control on the last slide
280
- if(options.hideControlOnEnd){
281
- $('.bx-prev', $outerWrapper).hide();
282
- }
283
- }
284
- checkEndControls();
285
- // next slide callback
286
- options.onPrevSlide(currentSlide, $children.length, $children.eq(currentSlide));
287
- // move to appropriate slide
288
- base.goToSlide(currentSlide);
289
- }
290
- }else{
291
- if(!isWorking){
292
- isWorking = true;
293
- var slideLoop = false;
294
- // make current slide the old value plus moveSlideQty
295
- currentSlide = (currentSlide - (options.moveSlideQty));
296
- // if current slide has looped on itself
297
- if(currentSlide < 0){
298
- negativeOffset = (currentSlide % $children.length);
299
- if(negativeOffset == 0){
300
- currentSlide = 0;
301
- }else{
302
- currentSlide = ($children.length) + negativeOffset;
303
- }
304
- slideLoop = true;
305
- }
306
- // next slide callback
307
- options.onPrevSlide(currentSlide, $children.length, $children.eq(currentSlide));
308
- // slide before callback
309
- options.onBeforeSlide(currentSlide, $children.length, $children.eq(currentSlide));
310
- if(options.mode == 'horizontal'){
311
- // get the new 'left' property for $parent
312
- var parentLeft = (options.moveSlideQty * childrenOuterWidth);
313
- // animate to the new 'left'
314
- $parent.animate({'left': '+='+parentLeft+'px'}, options.speed, options.easing, function(){
315
- isWorking = false;
316
- // if its time to loop, reset the $parent
317
- if(slideLoop){
318
- $parent.css('left', '-'+getSlidePosition(currentSlide, 'left')+'px');
319
- }
320
- // perform the callback function
321
- options.onAfterSlide(currentSlide, $children.length, $children.eq(currentSlide));
322
- });
323
- }else if(options.mode == 'vertical'){
324
- // get the new 'left' property for $parent
325
- var parentTop = (options.moveSlideQty * childrenMaxHeight);
326
- // animate to the new 'left'
327
- $parent.animate({'top': '+='+parentTop+'px'}, options.speed, options.easing, function(){
328
- isWorking = false;
329
- // if its time to loop, reset the $parent
330
- if(slideLoop){
331
- $parent.css('top', '-'+getSlidePosition(currentSlide, 'top')+'px');
332
- }
333
- // perform the callback function
334
- options.onAfterSlide(currentSlide, $children.length, $children.eq(currentSlide));
335
- });
336
- }else if(options.mode == 'fade'){
337
- setChildrenFade();
338
- }
339
- // make the current slide active
340
- if(options.moveSlideQty > 1){
341
- makeSlideActive(Math.ceil(currentSlide / options.moveSlideQty));
342
- }else{
343
- makeSlideActive(currentSlide);
344
- }
345
- // display the caption
346
- showCaptions();
347
- } // end if(!isWorking)
348
- }
349
- } // end function
350
-
351
- /**
352
- * Go to first slide
353
- */
354
- this.goToFirstSlide = function(stopAuto){
355
- // check if stopAuto argument is supplied
356
- if(typeof(stopAuto) == 'undefined'){
357
- var stopAuto = true;
358
- }
359
- base.goToSlide(firstSlide, stopAuto);
360
- }
361
-
362
- /**
363
- * Go to last slide
364
- */
365
- this.goToLastSlide = function(){
366
- // check if stopAuto argument is supplied
367
- if(typeof(stopAuto) == 'undefined'){
368
- var stopAuto = true;
369
- }
370
- base.goToSlide(lastSlide, stopAuto);
371
- }
372
-
373
- /**
374
- * Get the current slide
375
- */
376
- this.getCurrentSlide = function(){
377
- return currentSlide;
378
- }
379
-
380
- /**
381
- * Get the total slide count
382
- */
383
- this.getSlideCount = function(){
384
- return $children.length;
385
- }
386
-
387
- /**
388
- * Stop the slideshow
389
- */
390
- this.stopShow = function(changeText){
391
- clearInterval(interval);
392
- // check if changeText argument is supplied
393
- if(typeof(changeText) == 'undefined'){
394
- var changeText = true;
395
- }
396
- if(changeText && options.autoControls){
397
- $autoControls.html($startContent).removeClass('stop').addClass('start');
398
- autoPlaying = false;
399
- }
400
- }
401
-
402
- /**
403
- * Start the slideshow
404
- */
405
- this.startShow = function(changeText){
406
- // check if changeText argument is supplied
407
- if(typeof(changeText) == 'undefined'){
408
- var changeText = true;
409
- }
410
- setAutoInterval();
411
- if(changeText && options.autoControls){
412
- $autoControls.html($stopContent).removeClass('start').addClass('stop');
413
- autoPlaying = true;
414
- }
415
- }
416
-
417
- /**
418
- * Stops the ticker
419
- */
420
- this.stopTicker = function(changeText){
421
- $parent.stop();
422
- // check if changeText argument is supplied
423
- if(typeof(changeText) == 'undefined'){
424
- var changeText = true;
425
- }
426
- if(changeText && options.ticker){
427
- $autoControls.html($startContent).removeClass('stop').addClass('start');
428
- autoPlaying = false;
429
- }
430
- }
431
-
432
- /**
433
- * Starts the ticker
434
- */
435
- this.startTicker = function(changeText){
436
- if(options.mode == 'horizontal'){
437
- if(options.tickerDirection == 'next'){
438
- // get the 'left' property where the ticker stopped
439
- var stoppedLeft = parseInt($parent.css('left'));
440
- // calculate the remaining distance the show must travel until the loop
441
- var remainingDistance = (origShowWidth + stoppedLeft) + $children.eq(0).width();
442
- }else if(options.tickerDirection == 'prev'){
443
- // get the 'left' property where the ticker stopped
444
- var stoppedLeft = -parseInt($parent.css('left'));
445
- // calculate the remaining distance the show must travel until the loop
446
- var remainingDistance = (stoppedLeft) - $children.eq(0).width();
447
- }
448
- // calculate the speed ratio to seamlessly finish the loop
449
- var finishingSpeed = (remainingDistance * options.tickerSpeed) / origShowWidth;
450
- // call the show
451
- moveTheShow(tickerLeft, remainingDistance, finishingSpeed);
452
- }else if(options.mode == 'vertical'){
453
- if(options.tickerDirection == 'next'){
454
- // get the 'top' property where the ticker stopped
455
- var stoppedTop = parseInt($parent.css('top'));
456
- // calculate the remaining distance the show must travel until the loop
457
- var remainingDistance = (origShowHeight + stoppedTop) + $children.eq(0).height();
458
- }else if(options.tickerDirection == 'prev'){
459
- // get the 'left' property where the ticker stopped
460
- var stoppedTop = -parseInt($parent.css('top'));
461
- // calculate the remaining distance the show must travel until the loop
462
- var remainingDistance = (stoppedTop) - $children.eq(0).height();
463
- }
464
- // calculate the speed ratio to seamlessly finish the loop
465
- var finishingSpeed = (remainingDistance * options.tickerSpeed) / origShowHeight;
466
- // call the show
467
- moveTheShow(tickerTop, remainingDistance, finishingSpeed);
468
- // check if changeText argument is supplied
469
- if(typeof(changeText) == 'undefined'){
470
- var changeText = true;
471
- }
472
- if(changeText && options.ticker){
473
- $autoControls.html($stopContent).removeClass('start').addClass('stop');
474
- autoPlaying = true;
475
- }
476
- }
477
- }
478
-
479
- /**
480
- * Initialize a new slideshow
481
- */
482
- this.initShow = function(){
483
-
484
- // reinitialize all variables
485
- // base = this;
486
- $parent = $(this);
487
- $origElement = $parent.clone();
488
- $children = $parent.children();
489
- $outerWrapper = '';
490
- $firstChild = $parent.children(':first');
491
- childrenWidth = $firstChild.width();
492
- childrenMaxWidth = 0;
493
- childrenOuterWidth = $firstChild.outerWidth();
494
- childrenMaxHeight = 0;
495
- wrapperWidth = getWrapperWidth();
496
- wrapperHeight = getWrapperHeight();
497
- isWorking = false;
498
- $pager = '';
499
- currentSlide = 0;
500
- origLeft = 0;
501
- origTop = 0;
502
- interval = '';
503
- $autoControls = '';
504
- $stopHtml = '';
505
- $startContent = '';
506
- $stopContent = '';
507
- autoPlaying = true;
508
- loaded = false;
509
- origShowWidth = 0;
510
- origShowHeight = 0;
511
- tickerLeft = 0;
512
- tickerTop = 0;
513
-
514
- firstSlide = 0;
515
- lastSlide = $children.length - 1;
516
-
517
- // get the largest child's height and width
518
- $children.each(function(index) {
519
- if($(this).outerHeight() > childrenMaxHeight){
520
- childrenMaxHeight = $(this).outerHeight();
521
- }
522
- if($(this).outerWidth() > childrenMaxWidth){
523
- childrenMaxWidth = $(this).outerWidth();
524
- }
525
- });
526
-
527
- // get random slide number
528
- if(options.randomStart){
529
- var randomNumber = Math.floor(Math.random() * $children.length);
530
- currentSlide = randomNumber;
531
- origLeft = childrenOuterWidth * (options.moveSlideQty + randomNumber);
532
- origTop = childrenMaxHeight * (options.moveSlideQty + randomNumber);
533
- // start show at specific slide
534
- }else{
535
- currentSlide = options.startingSlide;
536
- origLeft = childrenOuterWidth * (options.moveSlideQty + options.startingSlide);
537
- origTop = childrenMaxHeight * (options.moveSlideQty + options.startingSlide);
538
- }
539
-
540
- // set initial css
541
- initCss();
542
-
543
- // check to show pager
544
- if(options.pager && !options.ticker){
545
- if(options.pagerType == 'full'){
546
- showPager('full');
547
- }else if(options.pagerType == 'short'){
548
- showPager('short');
549
- }
550
- }
551
-
552
- // check to show controls
553
- if(options.controls && !options.ticker){
554
- setControlsVars();
555
- }
556
-
557
- // check if auto
558
- if(options.auto || options.ticker){
559
- // check if auto controls are displayed
560
- if(options.autoControls){
561
- setAutoControlsVars();
562
- }
563
- // check if show should auto start
564
- if(options.autoStart){
565
- // check if autostart should delay
566
- setTimeout(function(){
567
- base.startShow(true);
568
- }, options.autoDelay);
569
- }else{
570
- base.stopShow(true);
571
- }
572
- // check if show should pause on hover
573
- if(options.autoHover && !options.ticker){
574
- setAutoHover();
575
- }
576
- }
577
- // make the starting slide active
578
- if(options.moveSlideQty > 1){
579
- makeSlideActive(Math.ceil(currentSlide / options.moveSlideQty));
580
- }else{
581
- makeSlideActive(currentSlide);
582
- }
583
- // check for finite show and if controls should be hidden
584
- checkEndControls();
585
- // show captions
586
- if(options.captions){
587
- showCaptions();
588
- }
589
- // perform the callback function
590
- options.onAfterSlide(currentSlide, $children.length, $children.eq(currentSlide));
591
- }
592
-
593
- /**
594
- * Destroy the current slideshow
595
- */
596
- this.destroyShow = function(){
597
- // stop the auto show
598
- clearInterval(interval);
599
- // remove any controls / pagers that have been appended
600
- $('.bx-next, .bx-prev, .bx-pager, .bx-auto', $outerWrapper).remove();
601
- // unwrap all bx-wrappers
602
- $parent.unwrap().unwrap().removeAttr('style');
603
- // remove any styles that were appended
604
- $parent.children().removeAttr('style').not('.pager').remove();
605
- // remove any childrent that were appended
606
- $children.removeClass('pager');
607
-
608
- }
609
-
610
- /**
611
- * Reload the current slideshow
612
- */
613
- this.reloadShow = function(){
614
- base.destroyShow();
615
- base.initShow();
616
- }
617
-
618
- // PRIVATE FUNCTIONS
619
-
620
- /**
621
- * Creates all neccessary styling for the slideshow
622
- */
623
- function initCss(){
624
- // layout the children
625
- setChildrenLayout(options.startingSlide);
626
- // CSS for horizontal mode
627
- if(options.mode == 'horizontal'){
628
- // wrap the <ul> in div that acts as a window and make the <ul> uber wide
629
- $parent
630
- .wrap('<div class="'+options.wrapperClass+'" style="width:'+wrapperWidth+'px; position:relative;"></div>')
631
- .wrap('<div class="bx-window" style="position:relative; overflow:hidden; width:'+wrapperWidth+'px;"></div>')
632
- .css({
633
- width: '999999px',
634
- position: 'relative',
635
- left: '-'+(origLeft)+'px'
636
- });
637
- $parent.children().css({
638
- width: childrenWidth,
639
- 'float': 'left',
640
- listStyle: 'none'
641
- });
642
- $outerWrapper = $parent.parent().parent();
643
- $children.addClass('pager');
644
- // CSS for vertical mode
645
- }else if(options.mode == 'vertical'){
646
- // wrap the <ul> in div that acts as a window and make the <ul> uber tall
647
- $parent
648
- .wrap('<div class="'+options.wrapperClass+'" style="width:'+childrenMaxWidth+'px; position:relative;"></div>')
649
- .wrap('<div class="bx-window" style="width:'+childrenMaxWidth+'px; height:'+wrapperHeight+'px; position:relative; overflow:hidden;"></div>')
650
- .css({
651
- height: '999999px',
652
- position: 'relative',
653
- top: '-'+(origTop)+'px'
654
- });
655
- $parent.children().css({
656
- listStyle: 'none',
657
- height: childrenMaxHeight
658
- });
659
- $outerWrapper = $parent.parent().parent();
660
- $children.addClass('pager');
661
- // CSS for fade mode
662
- }else if(options.mode == 'fade'){
663
- // wrap the <ul> in div that acts as a window
664
- $parent
665
- .wrap('<div class="'+options.wrapperClass+'" style="width:'+childrenMaxWidth+'px; position:relative;"></div>')
666
- .wrap('<div class="bx-window" style="height:'+childrenMaxHeight+'px; width:'+childrenMaxWidth+'px; position:relative; overflow:hidden;"></div>');
667
- $parent.children().css({
668
- listStyle: 'none',
669
- position: 'absolute',
670
- top: 0,
671
- left: 0,
672
- zIndex: 98
673
- });
674
- $outerWrapper = $parent.parent().parent();
675
- $children.not(':eq('+currentSlide+')').fadeTo(0, 0);
676
- $children.eq(currentSlide).css('zIndex', 99);
677
- }
678
- // if captions = true setup a div placeholder
679
- if(options.captions && options.captionsSelector == null){
680
- $outerWrapper.append('<div class="bx-captions"></div>');
681
- }
682
- }
683
-
684
- /**
685
- * Depending on mode, lays out children in the proper setup
686
- */
687
- function setChildrenLayout(){
688
- // lays out children for horizontal or vertical modes
689
- if(options.mode == 'horizontal' || options.mode == 'vertical'){
690
-
691
- // get the children behind
692
- var $prependedChildren = getArraySample($children, 0, options.moveSlideQty, 'backward');
693
-
694
- // add each prepended child to the back of the original element
695
- $.each($prependedChildren, function(index) {
696
- $parent.prepend($(this));
697
- });
698
-
699
- // total number of slides to be hidden after the window
700
- var totalNumberAfterWindow = ($children.length + options.moveSlideQty) - 1;
701
- // number of original slides hidden after the window
702
- var pagerExcess = $children.length - options.displaySlideQty;
703
- // number of slides to append to the original hidden slides
704
- var numberToAppend = totalNumberAfterWindow - pagerExcess;
705
- // get the sample of extra slides to append
706
- var $appendedChildren = getArraySample($children, 0, numberToAppend, 'forward');
707
-
708
- if(options.infiniteLoop){
709
- // add each appended child to the front of the original element
710
- $.each($appendedChildren, function(index) {
711
- $parent.append($(this));
712
- });
713
- }
714
- }
715
- }
716
-
717
- /**
718
- * Sets all variables associated with the controls
719
- */
720
- function setControlsVars(){
721
- // check if text or images should be used for controls
722
- // check "next"
723
- if(options.nextImage != ''){
724
- nextContent = options.nextImage;
725
- nextType = 'image';
726
- }else{
727
- nextContent = options.nextText;
728
- nextType = 'text';
729
- }
730
- // check "prev"
731
- if(options.prevImage != ''){
732
- prevContent = options.prevImage;
733
- prevType = 'image';
734
- }else{
735
- prevContent = options.prevText;
736
- prevType = 'text';
737
- }
738
- // show the controls
739
- showControls(nextType, nextContent, prevType, prevContent);
740
- }
741
-
742
- /**
743
- * Puts slideshow into auto mode
744
- *
745
- * @param int pause number of ms the slideshow will wait between slides
746
- * @param string direction 'forward', 'backward' sets the direction of the slideshow (forward/backward)
747
- * @param bool controls determines if start/stop controls will be displayed
748
- */
749
- function setAutoInterval(){
750
- if(options.auto){
751
- // finite loop
752
- if(!options.infiniteLoop){
753
- if(options.autoDirection == 'next'){
754
- interval = setInterval(function(){
755
- currentSlide += options.moveSlideQty;
756
- // if currentSlide has exceeded total number
757
- if(currentSlide > lastSlide){
758
- currentSlide = currentSlide % $children.length;
759
- }
760
- base.goToSlide(currentSlide, false);
761
- }, options.pause);
762
- }else if(options.autoDirection == 'prev'){
763
- interval = setInterval(function(){
764
- currentSlide -= options.moveSlideQty;
765
- // if currentSlide is smaller than zero
766
- if(currentSlide < 0){
767
- negativeOffset = (currentSlide % $children.length);
768
- if(negativeOffset == 0){
769
- currentSlide = 0;
770
- }else{
771
- currentSlide = ($children.length) + negativeOffset;
772
- }
773
- }
774
- base.goToSlide(currentSlide, false);
775
- }, options.pause);
776
- }
777
- // infinite loop
778
- }else{
779
- if(options.autoDirection == 'next'){
780
- interval = setInterval(function(){
781
- base.goToNextSlide(false);
782
- }, options.pause);
783
- }else if(options.autoDirection == 'prev'){
784
- interval = setInterval(function(){
785
- base.goToPreviousSlide(false);
786
- }, options.pause);
787
- }
788
- }
789
-
790
- }else if(options.ticker){
791
-
792
- options.tickerSpeed *= 10;
793
-
794
- // get the total width of the original show
795
- $('.pager', $outerWrapper).each(function(index) {
796
- origShowWidth += $(this).width();
797
- origShowHeight += $(this).height();
798
- });
799
-
800
- // if prev start the show from the last slide
801
- if(options.tickerDirection == 'prev' && options.mode == 'horizontal'){
802
- $parent.css('left', '-'+(origShowWidth+origLeft)+'px');
803
- }else if(options.tickerDirection == 'prev' && options.mode == 'vertical'){
804
- $parent.css('top', '-'+(origShowHeight+origTop)+'px');
805
- }
806
-
807
- if(options.mode == 'horizontal'){
808
- // get the starting left position
809
- tickerLeft = parseInt($parent.css('left'));
810
- // start the ticker
811
- moveTheShow(tickerLeft, origShowWidth, options.tickerSpeed);
812
- }else if(options.mode == 'vertical'){
813
- // get the starting top position
814
- tickerTop = parseInt($parent.css('top'));
815
- // start the ticker
816
- moveTheShow(tickerTop, origShowHeight, options.tickerSpeed);
817
- }
818
-
819
- // check it tickerHover applies
820
- if(options.tickerHover){
821
- setTickerHover();
822
- }
823
- }
824
- }
825
-
826
- function moveTheShow(leftCss, distance, speed){
827
- // if horizontal
828
- if(options.mode == 'horizontal'){
829
- // if next
830
- if(options.tickerDirection == 'next'){
831
- $parent.animate({'left': '-='+distance+'px'}, speed, 'linear', function(){
832
- $parent.css('left', leftCss);
833
- moveTheShow(leftCss, origShowWidth, options.tickerSpeed);
834
- });
835
- // if prev
836
- }else if(options.tickerDirection == 'prev'){
837
- $parent.animate({'left': '+='+distance+'px'}, speed, 'linear', function(){
838
- $parent.css('left', leftCss);
839
- moveTheShow(leftCss, origShowWidth, options.tickerSpeed);
840
- });
841
- }
842
- // if vertical
843
- }else if(options.mode == 'vertical'){
844
- // if next
845
- if(options.tickerDirection == 'next'){
846
- $parent.animate({'top': '-='+distance+'px'}, speed, 'linear', function(){
847
- $parent.css('top', leftCss);
848
- moveTheShow(leftCss, origShowHeight, options.tickerSpeed);
849
- });
850
- // if prev
851
- }else if(options.tickerDirection == 'prev'){
852
- $parent.animate({'top': '+='+distance+'px'}, speed, 'linear', function(){
853
- $parent.css('top', leftCss);
854
- moveTheShow(leftCss, origShowHeight, options.tickerSpeed);
855
- });
856
- }
857
- }
858
- }
859
-
860
- /**
861
- * Sets all variables associated with the controls
862
- */
863
- function setAutoControlsVars(){
864
- // check if text or images should be used for controls
865
- // check "start"
866
- if(options.startImage != ''){
867
- startContent = options.startImage;
868
- startType = 'image';
869
- }else{
870
- startContent = options.startText;
871
- startType = 'text';
872
- }
873
- // check "stop"
874
- if(options.stopImage != ''){
875
- stopContent = options.stopImage;
876
- stopType = 'image';
877
- }else{
878
- stopContent = options.stopText;
879
- stopType = 'text';
880
- }
881
- // show the controls
882
- showAutoControls(startType, startContent, stopType, stopContent);
883
- }
884
-
885
- /**
886
- * Handles hover events for auto shows
887
- */
888
- function setAutoHover(){
889
- // hover over the slider window
890
- $outerWrapper.find('.bx-window').hover(function() {
891
- if(autoPlaying){
892
- base.stopShow(false);
893
- }
894
- }, function() {
895
- if(autoPlaying){
896
- base.startShow(false);
897
- }
898
- });
899
- }
900
-
901
- /**
902
- * Handles hover events for ticker mode
903
- */
904
- function setTickerHover(){
905
- // on hover stop the animation
906
- $parent.hover(function() {
907
- if(autoPlaying){
908
- base.stopTicker(false);
909
- }
910
- }, function() {
911
- if(autoPlaying){
912
- base.startTicker(false);
913
- }
914
- });
915
- }
916
-
917
- /**
918
- * Handles fade animation
919
- */
920
- function setChildrenFade(){
921
- // fade out any other child besides the current
922
- $children.not(':eq('+currentSlide+')').fadeTo(options.speed, 0).css('zIndex', 98);
923
- // fade in the current slide
924
- $children.eq(currentSlide).css('zIndex', 99).fadeTo(options.speed, 1, function(){
925
- isWorking = false;
926
- // ie fade fix
927
- if(jQuery.browser.msie){
928
- $children.eq(currentSlide).get(0).style.removeAttribute('filter');
929
- }
930
- // perform the callback function
931
- options.onAfterSlide(currentSlide, $children.length, $children.eq(currentSlide));
932
- });
933
- };
934
-
935
- /**
936
- * Makes slide active
937
- */
938
- function makeSlideActive(number){
939
- if(options.pagerType == 'full' && options.pager){
940
- // remove all active classes
941
- $('a', $pager).removeClass(options.pagerActiveClass);
942
- // assign active class to appropriate slide
943
- $('a', $pager).eq(number).addClass(options.pagerActiveClass);
944
- }else if(options.pagerType == 'short' && options.pager){
945
- $('.bx-pager-current', $pager).html(currentSlide+1);
946
- }
947
- }
948
-
949
- /**
950
- * Displays next/prev controls
951
- *
952
- * @param string nextType 'image', 'text'
953
- * @param string nextContent if type='image', specify a filepath to the image. if type='text', specify text.
954
- * @param string prevType 'image', 'text'
955
- * @param string prevContent if type='image', specify a filepath to the image. if type='text', specify text.
956
- */
957
- function showControls(nextType, nextContent, prevType, prevContent){
958
- // create pager html elements
959
- var $nextHtml = $('<a href="" class="bx-next"></a>');
960
- var $prevHtml = $('<a href="" class="bx-prev"></a>');
961
- // check if next is 'text' or 'image'
962
- if(nextType == 'text'){
963
- $nextHtml.html(nextContent);
964
- }else{
965
- $nextHtml.html('<img src="'+nextContent+'" />');
966
- }
967
- // check if prev is 'text' or 'image'
968
- if(prevType == 'text'){
969
- $prevHtml.html(prevContent);
970
- }else{
971
- $prevHtml.html('<img src="'+prevContent+'" />');
972
- }
973
- // check if user supplied a selector to populate next control
974
- if(options.prevSelector){
975
- $(options.prevSelector).append($prevHtml);
976
- }else{
977
- $outerWrapper.append($prevHtml);
978
- }
979
- // check if user supplied a selector to populate next control
980
- if(options.nextSelector){
981
- $(options.nextSelector).append($nextHtml);
982
- }else{
983
- $outerWrapper.append($nextHtml);
984
- }
985
- // click next control
986
- $nextHtml.click(function() {
987
- base.goToNextSlide();
988
- return false;
989
- });
990
- // click prev control
991
- $prevHtml.click(function() {
992
- base.goToPreviousSlide();
993
- return false;
994
- });
995
- }
996
-
997
- /**
998
- * Displays the pager
999
- *
1000
- * @param string type 'full', 'short'
1001
- */
1002
- function showPager(type){
1003
- // sets up logic for finite multi slide shows
1004
- var pagerQty = $children.length;
1005
- // if we are moving more than one at a time and we have a finite loop
1006
- if(options.moveSlideQty > 1){
1007
- // if slides create an odd number of pages
1008
- if($children.length % options.moveSlideQty != 0){
1009
- // pagerQty = $children.length / options.moveSlideQty + 1;
1010
- pagerQty = Math.ceil($children.length / options.moveSlideQty);
1011
- // if slides create an even number of pages
1012
- }else{
1013
- pagerQty = $children.length / options.moveSlideQty;
1014
- }
1015
- }
1016
- var pagerString = '';
1017
- // check if custom build function was supplied
1018
- if(options.buildPager){
1019
- for(var i=0; i<pagerQty; i++){
1020
- pagerString += options.buildPager(i, $children.eq(i * options.moveSlideQty));
1021
- }
1022
-
1023
- // if not, use default pager
1024
- }else if(type == 'full'){
1025
- // build the full pager
1026
- for(var i=1; i<=pagerQty; i++){
1027
- pagerString += '<a href="" class="pager-link pager-'+i+'">'+i+'</a>';
1028
- }
1029
- }else if(type == 'short') {
1030
- // build the short pager
1031
- pagerString = '<span class="bx-pager-current">'+(options.startingSlide+1)+'</span> '+options.pagerShortSeparator+' <span class="bx-pager-total">'+$children.length+'</span>';
1032
- }
1033
- // check if user supplied a pager selector
1034
- if(options.pagerSelector){
1035
- $(options.pagerSelector).append(pagerString);
1036
- $pager = $(options.pagerSelector);
1037
- }else{
1038
- var $pagerContainer = $('<div class="bx-pager"></div>');
1039
- $pagerContainer.append(pagerString);
1040
- // attach the pager to the DOM
1041
- if(options.pagerLocation == 'top'){
1042
- $outerWrapper.prepend($pagerContainer);
1043
- }else if(options.pagerLocation == 'bottom'){
1044
- $outerWrapper.append($pagerContainer);
1045
- }
1046
- // cache the pager element
1047
- $pager = $('.bx-pager', $outerWrapper);
1048
- }
1049
- $pager.children().click(function() {
1050
- // only if pager is full mode
1051
- if(options.pagerType == 'full'){
1052
- // get the index from the link
1053
- var slideIndex = $pager.children().index(this);
1054
- // accomodate moving more than one slide
1055
- if(options.moveSlideQty > 1){
1056
- slideIndex *= options.moveSlideQty;
1057
- }
1058
- base.goToSlide(slideIndex);
1059
- }
1060
- return false;
1061
- });
1062
- }
1063
-
1064
- /**
1065
- * Displays captions
1066
- */
1067
- function showCaptions(){
1068
- // get the title from each image
1069
- var caption = $('img', $children.eq(currentSlide)).attr('title');
1070
- // if the caption exists
1071
- if(caption != ''){
1072
- // if user supplied a selector
1073
- if(options.captionsSelector){
1074
- $(options.captionsSelector).html(caption);
1075
- }else{
1076
- $('.bx-captions', $outerWrapper).html(caption);
1077
- }
1078
- }else{
1079
- // if user supplied a selector
1080
- if(options.captionsSelector){
1081
- $(options.captionsSelector).html('&nbsp;');
1082
- }else{
1083
- $('.bx-captions', $outerWrapper).html('&nbsp;');
1084
- }
1085
- }
1086
- }
1087
-
1088
- /**
1089
- * Displays start/stop controls for auto and ticker mode
1090
- *
1091
- * @param string type 'image', 'text'
1092
- * @param string next [optional] if type='image', specify a filepath to the image. if type='text', specify text.
1093
- * @param string prev [optional] if type='image', specify a filepath to the image. if type='text', specify text.
1094
- */
1095
- function showAutoControls(startType, startContent, stopType, stopContent){
1096
- // create pager html elements
1097
- $autoControls = $('<a href="" class="bx-start"></a>');
1098
- // check if start is 'text' or 'image'
1099
- if(startType == 'text'){
1100
- $startContent = startContent;
1101
- }else{
1102
- $startContent = '<img src="'+startContent+'" />';
1103
- }
1104
- // check if stop is 'text' or 'image'
1105
- if(stopType == 'text'){
1106
- $stopContent = stopContent;
1107
- }else{
1108
- $stopContent = '<img src="'+stopContent+'" />';
1109
- }
1110
- // check if user supplied a selector to populate next control
1111
- if(options.autoControlsSelector){
1112
- $(options.autoControlsSelector).append($autoControls);
1113
- }else{
1114
- $outerWrapper.append('<div class="bx-auto"></div>');
1115
- $('.bx-auto', $outerWrapper).html($autoControls);
1116
- }
1117
-
1118
- // click start control
1119
- $autoControls.click(function() {
1120
- if(options.ticker){
1121
- if($(this).hasClass('stop')){
1122
- base.stopTicker();
1123
- }else if($(this).hasClass('start')){
1124
- base.startTicker();
1125
- }
1126
- }else{
1127
- if($(this).hasClass('stop')){
1128
- base.stopShow(true);
1129
- }else if($(this).hasClass('start')){
1130
- base.startShow(true);
1131
- }
1132
- }
1133
- return false;
1134
- });
1135
-
1136
- }
1137
-
1138
- /**
1139
- * Checks if show is in finite mode, and if slide is either first or last, then hides the respective control
1140
- */
1141
- function checkEndControls(){
1142
- if(!options.infiniteLoop && options.hideControlOnEnd){
1143
- // check previous
1144
- if(currentSlide == firstSlide){
1145
- $('.bx-prev', $outerWrapper).hide();
1146
- }else{
1147
- $('.bx-prev', $outerWrapper).show();
1148
- }
1149
- // check next
1150
- if(currentSlide == lastSlide){
1151
- $('.bx-next', $outerWrapper).hide();
1152
- }else{
1153
- $('.bx-next', $outerWrapper).show();
1154
- }
1155
- }
1156
- }
1157
-
1158
- /**
1159
- * Returns the left offset of the slide from the parent container
1160
- */
1161
- function getSlidePosition(number, side){
1162
- if(side == 'left'){
1163
- var position = $('.pager', $outerWrapper).eq(number).position().left;
1164
- }else if(side == 'top'){
1165
- var position = $('.pager', $outerWrapper).eq(number).position().top;
1166
- }
1167
- return position;
1168
- }
1169
-
1170
- /**
1171
- * Returns the width of the wrapper
1172
- */
1173
- function getWrapperWidth(){
1174
- var wrapperWidth = $firstChild.outerWidth() * options.displaySlideQty;
1175
- return wrapperWidth;
1176
- }
1177
-
1178
- /**
1179
- * Returns the height of the wrapper
1180
- */
1181
- function getWrapperHeight(){
1182
- // if displaying multiple slides, multiple wrapper width by number of slides to display
1183
- var wrapperHeight = $firstChild.outerHeight() * options.displaySlideQty;
1184
- return wrapperHeight;
1185
- }
1186
-
1187
- /**
1188
- * Returns a sample of an arry and loops back on itself if the end of the array is reached
1189
- *
1190
- * @param array array original array the sample is derived from
1191
- * @param int start array index sample will start
1192
- * @param int length number of items in the sample
1193
- * @param string direction 'forward', 'backward' direction the loop should travel in the array
1194
- */
1195
- function getArraySample(array, start, length, direction){
1196
- // initialize empty array
1197
- var sample = [];
1198
- // clone the length argument
1199
- var loopLength = length;
1200
- // determines when the empty array should start being populated
1201
- var startPopulatingArray = false;
1202
- // reverse the array if direction = 'backward'
1203
- if(direction == 'backward'){
1204
- array = $.makeArray(array);
1205
- array.reverse();
1206
- }
1207
- // loop through original array until the length argument is met
1208
- while(loopLength > 0){
1209
- // loop through original array
1210
- $.each(array, function(index, val) {
1211
- // check if length has been met
1212
- if(loopLength > 0){
1213
- // don't do anything unless first index has been reached
1214
- if(!startPopulatingArray){
1215
- // start populating empty array
1216
- if(index == start){
1217
- startPopulatingArray = true;
1218
- // add element to array
1219
- sample.push($(this).clone());
1220
- // decrease the length clone variable
1221
- loopLength--;
1222
- }
1223
- }else{
1224
- // add element to array
1225
- sample.push($(this).clone());
1226
- // decrease the length clone variable
1227
- loopLength--;
1228
- }
1229
- // if length has been met, break loose
1230
- }else{
1231
- return false;
1232
- }
1233
- });
1234
- }
1235
- return sample;
1236
- }
1237
-
1238
- this.each(function(){
1239
- // make sure the element has children
1240
- if($(this).children().length > 0){
1241
- base.initShow();
1242
- }
1243
- });
1244
-
1245
- return this;
1246
- }
1247
-
1248
- jQuery.fx.prototype.cur = function(){
1249
- if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
1250
- return this.elem[ this.prop ];
1251
- }
1252
-
1253
- var r = parseFloat( jQuery.css( this.elem, this.prop ) );
1254
- // return r && r > -10000 ? r : 0;
1255
- return r;
1256
- }
1257
-
1258
-
1259
- })(jQuery);
1260
-
1
+ //= require jquery.bxslider
2
+ //= require jquery.easing.1.3
3
+ //= require jquery.fitvids