flex-slider-rails 0.1.0
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.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +86 -0
- data/Rakefile +2 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/flex-slider-rails.gemspec +26 -0
- data/lib/flex/slider/rails.rb +9 -0
- data/lib/flex/slider/rails/version.rb +7 -0
- data/vendor/assets/javascripts/.keep +0 -0
- data/vendor/assets/javascripts/jquery.flexslider-min.js +5 -0
- data/vendor/assets/javascripts/jquery.flexslider.js +1191 -0
- data/vendor/assets/stylesheets/.keep +0 -0
- data/vendor/assets/stylesheets/flexslider.css +275 -0
- data/vendor/fonts/flexslider-icon.eot +0 -0
- data/vendor/fonts/flexslider-icon.svg +19 -0
- data/vendor/fonts/flexslider-icon.ttf +0 -0
- data/vendor/fonts/flexslider-icon.woff +0 -0
- data/vendor/images/bg_play_pause.png +0 -0
- metadata +94 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5fbb821633422608909b1b253d9bbe9936cce03a
|
4
|
+
data.tar.gz: bde1da861d0625ea659dc2826149b7950214b9a0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ac6028be0b84c7a7a945971232a823b2aca6dd835d20fc08bca5f59ad948dd93cfc7672d08111790f0cd0adc9eaa1d5d372770c9769678e576efe45a9a0f5825
|
7
|
+
data.tar.gz: f265847c7d7be2c2196c87f24f94e538c51dd5db498c789b16fb22ba0772b9c0dad70b9f880f63332905139fc08f359207d03ea173a8b196e800eacf1652157d
|
data/.gitignore
ADDED
data/CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
2
|
+
|
3
|
+
## Our Pledge
|
4
|
+
|
5
|
+
In the interest of fostering an open and welcoming environment, we as
|
6
|
+
contributors and maintainers pledge to making participation in our project and
|
7
|
+
our community a harassment-free experience for everyone, regardless of age, body
|
8
|
+
size, disability, ethnicity, gender identity and expression, level of experience,
|
9
|
+
nationality, personal appearance, race, religion, or sexual identity and
|
10
|
+
orientation.
|
11
|
+
|
12
|
+
## Our Standards
|
13
|
+
|
14
|
+
Examples of behavior that contributes to creating a positive environment
|
15
|
+
include:
|
16
|
+
|
17
|
+
* Using welcoming and inclusive language
|
18
|
+
* Being respectful of differing viewpoints and experiences
|
19
|
+
* Gracefully accepting constructive criticism
|
20
|
+
* Focusing on what is best for the community
|
21
|
+
* Showing empathy towards other community members
|
22
|
+
|
23
|
+
Examples of unacceptable behavior by participants include:
|
24
|
+
|
25
|
+
* The use of sexualized language or imagery and unwelcome sexual attention or
|
26
|
+
advances
|
27
|
+
* Trolling, insulting/derogatory comments, and personal or political attacks
|
28
|
+
* Public or private harassment
|
29
|
+
* Publishing others' private information, such as a physical or electronic
|
30
|
+
address, without explicit permission
|
31
|
+
* Other conduct which could reasonably be considered inappropriate in a
|
32
|
+
professional setting
|
33
|
+
|
34
|
+
## Our Responsibilities
|
35
|
+
|
36
|
+
Project maintainers are responsible for clarifying the standards of acceptable
|
37
|
+
behavior and are expected to take appropriate and fair corrective action in
|
38
|
+
response to any instances of unacceptable behavior.
|
39
|
+
|
40
|
+
Project maintainers have the right and responsibility to remove, edit, or
|
41
|
+
reject comments, commits, code, wiki edits, issues, and other contributions
|
42
|
+
that are not aligned to this Code of Conduct, or to ban temporarily or
|
43
|
+
permanently any contributor for other behaviors that they deem inappropriate,
|
44
|
+
threatening, offensive, or harmful.
|
45
|
+
|
46
|
+
## Scope
|
47
|
+
|
48
|
+
This Code of Conduct applies both within project spaces and in public spaces
|
49
|
+
when an individual is representing the project or its community. Examples of
|
50
|
+
representing a project or community include using an official project e-mail
|
51
|
+
address, posting via an official social media account, or acting as an appointed
|
52
|
+
representative at an online or offline event. Representation of a project may be
|
53
|
+
further defined and clarified by project maintainers.
|
54
|
+
|
55
|
+
## Enforcement
|
56
|
+
|
57
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
58
|
+
reported by contacting the project team at sadiqmmm@gmail.com. All
|
59
|
+
complaints will be reviewed and investigated and will result in a response that
|
60
|
+
is deemed necessary and appropriate to the circumstances. The project team is
|
61
|
+
obligated to maintain confidentiality with regard to the reporter of an incident.
|
62
|
+
Further details of specific enforcement policies may be posted separately.
|
63
|
+
|
64
|
+
Project maintainers who do not follow or enforce the Code of Conduct in good
|
65
|
+
faith may face temporary or permanent repercussions as determined by other
|
66
|
+
members of the project's leadership.
|
67
|
+
|
68
|
+
## Attribution
|
69
|
+
|
70
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
71
|
+
available at [http://contributor-covenant.org/version/1/4][version]
|
72
|
+
|
73
|
+
[homepage]: http://contributor-covenant.org
|
74
|
+
[version]: http://contributor-covenant.org/version/1/4/
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2016 Mohammed Sadiq
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
# flex-slider-rails
|
2
|
+
[](http://badge.fury.io/rb/flex-slider-rails)
|
3
|
+
|
4
|
+
flex-slider-rails gem is the integration of flexslider javascript library for your Rails 4 and Rails 5 application.
|
5
|
+
|
6
|
+
FlexSlider 2 - The best responsive slider. Period.
|
7
|
+
source: https://github.com/woocommerce/FlexSlider
|
8
|
+
|
9
|
+
Ruby gems url: https://rubygems.org/gems/flex-slider-rails
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
Add this line to your application's Gemfile:
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
gem 'flex-slider-rails'
|
17
|
+
```
|
18
|
+
|
19
|
+
And then execute:
|
20
|
+
|
21
|
+
$ bundle
|
22
|
+
|
23
|
+
Or install it yourself as:
|
24
|
+
|
25
|
+
$ gem install flex-slider-rails
|
26
|
+
|
27
|
+
Now you need to edit your `app/assets/javascripts/application.js` file and add the following line:
|
28
|
+
``` javascript
|
29
|
+
//= require flex-slider-rails
|
30
|
+
```
|
31
|
+
|
32
|
+
## Usage
|
33
|
+
|
34
|
+
Here is the example working code to test with your Rails application.
|
35
|
+
|
36
|
+
Add this sample code to your `app/assets/javascripts/application.js` file
|
37
|
+
|
38
|
+
``` javascript
|
39
|
+
<!-- Place in the <head>, after the three links -->
|
40
|
+
<script type="text/javascript" charset="utf-8">
|
41
|
+
$(window).load(function() {
|
42
|
+
$('.flexslider').flexslider();
|
43
|
+
});
|
44
|
+
</script>
|
45
|
+
```
|
46
|
+
|
47
|
+
*Note:* Here i am using `gem 'jquery-turbolinks'` for using the jquery $(document).ready function
|
48
|
+
|
49
|
+
Add this sample code to your template file like `index.html.erb`
|
50
|
+
|
51
|
+
``` html
|
52
|
+
<!-- Place somewhere in the <body> of your page -->
|
53
|
+
<div class="flexslider">
|
54
|
+
<ul class="slides">
|
55
|
+
<li>
|
56
|
+
<img src="slide1.jpg" />
|
57
|
+
</li>
|
58
|
+
<li>
|
59
|
+
<img src="slide2.jpg" />
|
60
|
+
</li>
|
61
|
+
<li>
|
62
|
+
<img src="slide3.jpg" />
|
63
|
+
</li>
|
64
|
+
</ul>
|
65
|
+
</div>
|
66
|
+
```
|
67
|
+
|
68
|
+
## Full documentation
|
69
|
+
|
70
|
+
Read the FlexSlider documentation here https://woocommerce.com/flexslider/
|
71
|
+
|
72
|
+
## Development
|
73
|
+
|
74
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake false` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
75
|
+
|
76
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
77
|
+
|
78
|
+
## Contributing
|
79
|
+
|
80
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/sadiqmmm/flex-slider-rails. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
|
81
|
+
|
82
|
+
|
83
|
+
## License
|
84
|
+
|
85
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
86
|
+
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "flex/slider/rails"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'flex/slider/rails/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "flex-slider-rails"
|
8
|
+
spec.version = Flex::Slider::Rails::VERSION
|
9
|
+
spec.authors = ["Mohammed Sadiq"]
|
10
|
+
spec.email = ["sadiqmmm@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = spec.description
|
13
|
+
spec.description = 'This gem provides the FlexSlider Javascript library for your Rails 4 and Rails 5 application.'
|
14
|
+
spec.homepage = 'https://github.com/sadiqmmm/flex-slider-rails'
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
|
+
f.match(%r{^(test|spec|features)/})
|
19
|
+
end
|
20
|
+
spec.bindir = "exe"
|
21
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
|
+
spec.require_paths = ["lib"]
|
23
|
+
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.13"
|
25
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
26
|
+
end
|
File without changes
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/*
|
2
|
+
* jQuery FlexSlider v2.6.3
|
3
|
+
* Copyright 2012 WooThemes
|
4
|
+
* Contributing Author: Tyler Smith
|
5
|
+
*/!function($){var e=!0;$.flexslider=function(t,a){var n=$(t);n.vars=$.extend({},$.flexslider.defaults,a);var i=n.vars.namespace,s=window.navigator&&window.navigator.msPointerEnabled&&window.MSGesture,r=("ontouchstart"in window||s||window.DocumentTouch&&document instanceof DocumentTouch)&&n.vars.touch,o="click touchend MSPointerUp keyup",l="",c,d="vertical"===n.vars.direction,u=n.vars.reverse,v=n.vars.itemWidth>0,p="fade"===n.vars.animation,m=""!==n.vars.asNavFor,f={};$.data(t,"flexslider",n),f={init:function(){n.animating=!1,n.currentSlide=parseInt(n.vars.startAt?n.vars.startAt:0,10),isNaN(n.currentSlide)&&(n.currentSlide=0),n.animatingTo=n.currentSlide,n.atEnd=0===n.currentSlide||n.currentSlide===n.last,n.containerSelector=n.vars.selector.substr(0,n.vars.selector.search(" ")),n.slides=$(n.vars.selector,n),n.container=$(n.containerSelector,n),n.count=n.slides.length,n.syncExists=$(n.vars.sync).length>0,"slide"===n.vars.animation&&(n.vars.animation="swing"),n.prop=d?"top":"marginLeft",n.args={},n.manualPause=!1,n.stopped=!1,n.started=!1,n.startTimeout=null,n.transitions=!n.vars.video&&!p&&n.vars.useCSS&&function(){var e=document.createElement("div"),t=["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"];for(var a in t)if(void 0!==e.style[t[a]])return n.pfx=t[a].replace("Perspective","").toLowerCase(),n.prop="-"+n.pfx+"-transform",!0;return!1}(),n.ensureAnimationEnd="",""!==n.vars.controlsContainer&&(n.controlsContainer=$(n.vars.controlsContainer).length>0&&$(n.vars.controlsContainer)),""!==n.vars.manualControls&&(n.manualControls=$(n.vars.manualControls).length>0&&$(n.vars.manualControls)),""!==n.vars.customDirectionNav&&(n.customDirectionNav=2===$(n.vars.customDirectionNav).length&&$(n.vars.customDirectionNav)),n.vars.randomize&&(n.slides.sort(function(){return Math.round(Math.random())-.5}),n.container.empty().append(n.slides)),n.doMath(),n.setup("init"),n.vars.controlNav&&f.controlNav.setup(),n.vars.directionNav&&f.directionNav.setup(),n.vars.keyboard&&(1===$(n.containerSelector).length||n.vars.multipleKeyboard)&&$(document).bind("keyup",function(e){var t=e.keyCode;if(!n.animating&&(39===t||37===t)){var a=39===t?n.getTarget("next"):37===t?n.getTarget("prev"):!1;n.flexAnimate(a,n.vars.pauseOnAction)}}),n.vars.mousewheel&&n.bind("mousewheel",function(e,t,a,i){e.preventDefault();var s=0>t?n.getTarget("next"):n.getTarget("prev");n.flexAnimate(s,n.vars.pauseOnAction)}),n.vars.pausePlay&&f.pausePlay.setup(),n.vars.slideshow&&n.vars.pauseInvisible&&f.pauseInvisible.init(),n.vars.slideshow&&(n.vars.pauseOnHover&&n.hover(function(){n.manualPlay||n.manualPause||n.pause()},function(){n.manualPause||n.manualPlay||n.stopped||n.play()}),n.vars.pauseInvisible&&f.pauseInvisible.isHidden()||(n.vars.initDelay>0?n.startTimeout=setTimeout(n.play,n.vars.initDelay):n.play())),m&&f.asNav.setup(),r&&n.vars.touch&&f.touch(),(!p||p&&n.vars.smoothHeight)&&$(window).bind("resize orientationchange focus",f.resize),n.find("img").attr("draggable","false"),setTimeout(function(){n.vars.start(n)},200)},asNav:{setup:function(){n.asNav=!0,n.animatingTo=Math.floor(n.currentSlide/n.move),n.currentItem=n.currentSlide,n.slides.removeClass(i+"active-slide").eq(n.currentItem).addClass(i+"active-slide"),s?(t._slider=n,n.slides.each(function(){var e=this;e._gesture=new MSGesture,e._gesture.target=e,e.addEventListener("MSPointerDown",function(e){e.preventDefault(),e.currentTarget._gesture&&e.currentTarget._gesture.addPointer(e.pointerId)},!1),e.addEventListener("MSGestureTap",function(e){e.preventDefault();var t=$(this),a=t.index();$(n.vars.asNavFor).data("flexslider").animating||t.hasClass("active")||(n.direction=n.currentItem<a?"next":"prev",n.flexAnimate(a,n.vars.pauseOnAction,!1,!0,!0))})})):n.slides.on(o,function(e){e.preventDefault();var t=$(this),a=t.index(),s=t.offset().left-$(n).scrollLeft();0>=s&&t.hasClass(i+"active-slide")?n.flexAnimate(n.getTarget("prev"),!0):$(n.vars.asNavFor).data("flexslider").animating||t.hasClass(i+"active-slide")||(n.direction=n.currentItem<a?"next":"prev",n.flexAnimate(a,n.vars.pauseOnAction,!1,!0,!0))})}},controlNav:{setup:function(){n.manualControls?f.controlNav.setupManual():f.controlNav.setupPaging()},setupPaging:function(){var e="thumbnails"===n.vars.controlNav?"control-thumbs":"control-paging",t=1,a,s;if(n.controlNavScaffold=$('<ol class="'+i+"control-nav "+i+e+'"></ol>'),n.pagingCount>1)for(var r=0;r<n.pagingCount;r++){s=n.slides.eq(r),void 0===s.attr("data-thumb-alt")&&s.attr("data-thumb-alt","");var c=""!==s.attr("data-thumb-alt")?c=' alt="'+s.attr("data-thumb-alt")+'"':"";if(a="thumbnails"===n.vars.controlNav?'<img src="'+s.attr("data-thumb")+'"'+c+"/>":'<a href="#">'+t+"</a>","thumbnails"===n.vars.controlNav&&!0===n.vars.thumbCaptions){var d=s.attr("data-thumbcaption");""!==d&&void 0!==d&&(a+='<span class="'+i+'caption">'+d+"</span>")}n.controlNavScaffold.append("<li>"+a+"</li>"),t++}n.controlsContainer?$(n.controlsContainer).append(n.controlNavScaffold):n.append(n.controlNavScaffold),f.controlNav.set(),f.controlNav.active(),n.controlNavScaffold.delegate("a, img",o,function(e){if(e.preventDefault(),""===l||l===e.type){var t=$(this),a=n.controlNav.index(t);t.hasClass(i+"active")||(n.direction=a>n.currentSlide?"next":"prev",n.flexAnimate(a,n.vars.pauseOnAction))}""===l&&(l=e.type),f.setToClearWatchedEvent()})},setupManual:function(){n.controlNav=n.manualControls,f.controlNav.active(),n.controlNav.bind(o,function(e){if(e.preventDefault(),""===l||l===e.type){var t=$(this),a=n.controlNav.index(t);t.hasClass(i+"active")||(a>n.currentSlide?n.direction="next":n.direction="prev",n.flexAnimate(a,n.vars.pauseOnAction))}""===l&&(l=e.type),f.setToClearWatchedEvent()})},set:function(){var e="thumbnails"===n.vars.controlNav?"img":"a";n.controlNav=$("."+i+"control-nav li "+e,n.controlsContainer?n.controlsContainer:n)},active:function(){n.controlNav.removeClass(i+"active").eq(n.animatingTo).addClass(i+"active")},update:function(e,t){n.pagingCount>1&&"add"===e?n.controlNavScaffold.append($('<li><a href="#">'+n.count+"</a></li>")):1===n.pagingCount?n.controlNavScaffold.find("li").remove():n.controlNav.eq(t).closest("li").remove(),f.controlNav.set(),n.pagingCount>1&&n.pagingCount!==n.controlNav.length?n.update(t,e):f.controlNav.active()}},directionNav:{setup:function(){var e=$('<ul class="'+i+'direction-nav"><li class="'+i+'nav-prev"><a class="'+i+'prev" href="#">'+n.vars.prevText+'</a></li><li class="'+i+'nav-next"><a class="'+i+'next" href="#">'+n.vars.nextText+"</a></li></ul>");n.customDirectionNav?n.directionNav=n.customDirectionNav:n.controlsContainer?($(n.controlsContainer).append(e),n.directionNav=$("."+i+"direction-nav li a",n.controlsContainer)):(n.append(e),n.directionNav=$("."+i+"direction-nav li a",n)),f.directionNav.update(),n.directionNav.bind(o,function(e){e.preventDefault();var t;""!==l&&l!==e.type||(t=$(this).hasClass(i+"next")?n.getTarget("next"):n.getTarget("prev"),n.flexAnimate(t,n.vars.pauseOnAction)),""===l&&(l=e.type),f.setToClearWatchedEvent()})},update:function(){var e=i+"disabled";1===n.pagingCount?n.directionNav.addClass(e).attr("tabindex","-1"):n.vars.animationLoop?n.directionNav.removeClass(e).removeAttr("tabindex"):0===n.animatingTo?n.directionNav.removeClass(e).filter("."+i+"prev").addClass(e).attr("tabindex","-1"):n.animatingTo===n.last?n.directionNav.removeClass(e).filter("."+i+"next").addClass(e).attr("tabindex","-1"):n.directionNav.removeClass(e).removeAttr("tabindex")}},pausePlay:{setup:function(){var e=$('<div class="'+i+'pauseplay"><a href="#"></a></div>');n.controlsContainer?(n.controlsContainer.append(e),n.pausePlay=$("."+i+"pauseplay a",n.controlsContainer)):(n.append(e),n.pausePlay=$("."+i+"pauseplay a",n)),f.pausePlay.update(n.vars.slideshow?i+"pause":i+"play"),n.pausePlay.bind(o,function(e){e.preventDefault(),""!==l&&l!==e.type||($(this).hasClass(i+"pause")?(n.manualPause=!0,n.manualPlay=!1,n.pause()):(n.manualPause=!1,n.manualPlay=!0,n.play())),""===l&&(l=e.type),f.setToClearWatchedEvent()})},update:function(e){"play"===e?n.pausePlay.removeClass(i+"pause").addClass(i+"play").html(n.vars.playText):n.pausePlay.removeClass(i+"play").addClass(i+"pause").html(n.vars.pauseText)}},touch:function(){function e(e){e.stopPropagation(),n.animating?e.preventDefault():(n.pause(),t._gesture.addPointer(e.pointerId),T=0,c=d?n.h:n.w,f=Number(new Date),l=v&&u&&n.animatingTo===n.last?0:v&&u?n.limit-(n.itemW+n.vars.itemMargin)*n.move*n.animatingTo:v&&n.currentSlide===n.last?n.limit:v?(n.itemW+n.vars.itemMargin)*n.move*n.currentSlide:u?(n.last-n.currentSlide+n.cloneOffset)*c:(n.currentSlide+n.cloneOffset)*c)}function a(e){e.stopPropagation();var a=e.target._slider;if(a){var n=-e.translationX,i=-e.translationY;return T+=d?i:n,m=T,y=d?Math.abs(T)<Math.abs(-n):Math.abs(T)<Math.abs(-i),e.detail===e.MSGESTURE_FLAG_INERTIA?void setImmediate(function(){t._gesture.stop()}):void((!y||Number(new Date)-f>500)&&(e.preventDefault(),!p&&a.transitions&&(a.vars.animationLoop||(m=T/(0===a.currentSlide&&0>T||a.currentSlide===a.last&&T>0?Math.abs(T)/c+2:1)),a.setProps(l+m,"setTouch"))))}}function i(e){e.stopPropagation();var t=e.target._slider;if(t){if(t.animatingTo===t.currentSlide&&!y&&null!==m){var a=u?-m:m,n=a>0?t.getTarget("next"):t.getTarget("prev");t.canAdvance(n)&&(Number(new Date)-f<550&&Math.abs(a)>50||Math.abs(a)>c/2)?t.flexAnimate(n,t.vars.pauseOnAction):p||t.flexAnimate(t.currentSlide,t.vars.pauseOnAction,!0)}r=null,o=null,m=null,l=null,T=0}}var r,o,l,c,m,f,g,h,S,y=!1,x=0,b=0,T=0;s?(t.style.msTouchAction="none",t._gesture=new MSGesture,t._gesture.target=t,t.addEventListener("MSPointerDown",e,!1),t._slider=n,t.addEventListener("MSGestureChange",a,!1),t.addEventListener("MSGestureEnd",i,!1)):(g=function(e){n.animating?e.preventDefault():(window.navigator.msPointerEnabled||1===e.touches.length)&&(n.pause(),c=d?n.h:n.w,f=Number(new Date),x=e.touches[0].pageX,b=e.touches[0].pageY,l=v&&u&&n.animatingTo===n.last?0:v&&u?n.limit-(n.itemW+n.vars.itemMargin)*n.move*n.animatingTo:v&&n.currentSlide===n.last?n.limit:v?(n.itemW+n.vars.itemMargin)*n.move*n.currentSlide:u?(n.last-n.currentSlide+n.cloneOffset)*c:(n.currentSlide+n.cloneOffset)*c,r=d?b:x,o=d?x:b,t.addEventListener("touchmove",h,!1),t.addEventListener("touchend",S,!1))},h=function(e){x=e.touches[0].pageX,b=e.touches[0].pageY,m=d?r-b:r-x,y=d?Math.abs(m)<Math.abs(x-o):Math.abs(m)<Math.abs(b-o);var t=500;(!y||Number(new Date)-f>t)&&(e.preventDefault(),!p&&n.transitions&&(n.vars.animationLoop||(m/=0===n.currentSlide&&0>m||n.currentSlide===n.last&&m>0?Math.abs(m)/c+2:1),n.setProps(l+m,"setTouch")))},S=function(e){if(t.removeEventListener("touchmove",h,!1),n.animatingTo===n.currentSlide&&!y&&null!==m){var a=u?-m:m,i=a>0?n.getTarget("next"):n.getTarget("prev");n.canAdvance(i)&&(Number(new Date)-f<550&&Math.abs(a)>50||Math.abs(a)>c/2)?n.flexAnimate(i,n.vars.pauseOnAction):p||n.flexAnimate(n.currentSlide,n.vars.pauseOnAction,!0)}t.removeEventListener("touchend",S,!1),r=null,o=null,m=null,l=null},t.addEventListener("touchstart",g,!1))},resize:function(){!n.animating&&n.is(":visible")&&(v||n.doMath(),p?f.smoothHeight():v?(n.slides.width(n.computedW),n.update(n.pagingCount),n.setProps()):d?(n.viewport.height(n.h),n.setProps(n.h,"setTotal")):(n.vars.smoothHeight&&f.smoothHeight(),n.newSlides.width(n.computedW),n.setProps(n.computedW,"setTotal")))},smoothHeight:function(e){if(!d||p){var t=p?n:n.viewport;e?t.animate({height:n.slides.eq(n.animatingTo).innerHeight()},e):t.innerHeight(n.slides.eq(n.animatingTo).innerHeight())}},sync:function(e){var t=$(n.vars.sync).data("flexslider"),a=n.animatingTo;switch(e){case"animate":t.flexAnimate(a,n.vars.pauseOnAction,!1,!0);break;case"play":t.playing||t.asNav||t.play();break;case"pause":t.pause()}},uniqueID:function(e){return e.filter("[id]").add(e.find("[id]")).each(function(){var e=$(this);e.attr("id",e.attr("id")+"_clone")}),e},pauseInvisible:{visProp:null,init:function(){var e=f.pauseInvisible.getHiddenProp();if(e){var t=e.replace(/[H|h]idden/,"")+"visibilitychange";document.addEventListener(t,function(){f.pauseInvisible.isHidden()?n.startTimeout?clearTimeout(n.startTimeout):n.pause():n.started?n.play():n.vars.initDelay>0?setTimeout(n.play,n.vars.initDelay):n.play()})}},isHidden:function(){var e=f.pauseInvisible.getHiddenProp();return e?document[e]:!1},getHiddenProp:function(){var e=["webkit","moz","ms","o"];if("hidden"in document)return"hidden";for(var t=0;t<e.length;t++)if(e[t]+"Hidden"in document)return e[t]+"Hidden";return null}},setToClearWatchedEvent:function(){clearTimeout(c),c=setTimeout(function(){l=""},3e3)}},n.flexAnimate=function(e,t,a,s,o){if(n.vars.animationLoop||e===n.currentSlide||(n.direction=e>n.currentSlide?"next":"prev"),m&&1===n.pagingCount&&(n.direction=n.currentItem<e?"next":"prev"),!n.animating&&(n.canAdvance(e,o)||a)&&n.is(":visible")){if(m&&s){var l=$(n.vars.asNavFor).data("flexslider");if(n.atEnd=0===e||e===n.count-1,l.flexAnimate(e,!0,!1,!0,o),n.direction=n.currentItem<e?"next":"prev",l.direction=n.direction,Math.ceil((e+1)/n.visible)-1===n.currentSlide||0===e)return n.currentItem=e,n.slides.removeClass(i+"active-slide").eq(e).addClass(i+"active-slide"),!1;n.currentItem=e,n.slides.removeClass(i+"active-slide").eq(e).addClass(i+"active-slide"),e=Math.floor(e/n.visible)}if(n.animating=!0,n.animatingTo=e,t&&n.pause(),n.vars.before(n),n.syncExists&&!o&&f.sync("animate"),n.vars.controlNav&&f.controlNav.active(),v||n.slides.removeClass(i+"active-slide").eq(e).addClass(i+"active-slide"),n.atEnd=0===e||e===n.last,n.vars.directionNav&&f.directionNav.update(),e===n.last&&(n.vars.end(n),n.vars.animationLoop||n.pause()),p)r?(n.slides.eq(n.currentSlide).css({opacity:0,zIndex:1}),n.slides.eq(e).css({opacity:1,zIndex:2}),n.wrapup(c)):(n.slides.eq(n.currentSlide).css({zIndex:1}).animate({opacity:0},n.vars.animationSpeed,n.vars.easing),n.slides.eq(e).css({zIndex:2}).animate({opacity:1},n.vars.animationSpeed,n.vars.easing,n.wrapup));else{var c=d?n.slides.filter(":first").height():n.computedW,g,h,S;v?(g=n.vars.itemMargin,S=(n.itemW+g)*n.move*n.animatingTo,h=S>n.limit&&1!==n.visible?n.limit:S):h=0===n.currentSlide&&e===n.count-1&&n.vars.animationLoop&&"next"!==n.direction?u?(n.count+n.cloneOffset)*c:0:n.currentSlide===n.last&&0===e&&n.vars.animationLoop&&"prev"!==n.direction?u?0:(n.count+1)*c:u?(n.count-1-e+n.cloneOffset)*c:(e+n.cloneOffset)*c,n.setProps(h,"",n.vars.animationSpeed),n.transitions?(n.vars.animationLoop&&n.atEnd||(n.animating=!1,n.currentSlide=n.animatingTo),n.container.unbind("webkitTransitionEnd transitionend"),n.container.bind("webkitTransitionEnd transitionend",function(){clearTimeout(n.ensureAnimationEnd),n.wrapup(c)}),clearTimeout(n.ensureAnimationEnd),n.ensureAnimationEnd=setTimeout(function(){n.wrapup(c)},n.vars.animationSpeed+100)):n.container.animate(n.args,n.vars.animationSpeed,n.vars.easing,function(){n.wrapup(c)})}n.vars.smoothHeight&&f.smoothHeight(n.vars.animationSpeed)}},n.wrapup=function(e){p||v||(0===n.currentSlide&&n.animatingTo===n.last&&n.vars.animationLoop?n.setProps(e,"jumpEnd"):n.currentSlide===n.last&&0===n.animatingTo&&n.vars.animationLoop&&n.setProps(e,"jumpStart")),n.animating=!1,n.currentSlide=n.animatingTo,n.vars.after(n)},n.animateSlides=function(){!n.animating&&e&&n.flexAnimate(n.getTarget("next"))},n.pause=function(){clearInterval(n.animatedSlides),n.animatedSlides=null,n.playing=!1,n.vars.pausePlay&&f.pausePlay.update("play"),n.syncExists&&f.sync("pause")},n.play=function(){n.playing&&clearInterval(n.animatedSlides),n.animatedSlides=n.animatedSlides||setInterval(n.animateSlides,n.vars.slideshowSpeed),n.started=n.playing=!0,n.vars.pausePlay&&f.pausePlay.update("pause"),n.syncExists&&f.sync("play")},n.stop=function(){n.pause(),n.stopped=!0},n.canAdvance=function(e,t){var a=m?n.pagingCount-1:n.last;return t?!0:m&&n.currentItem===n.count-1&&0===e&&"prev"===n.direction?!0:m&&0===n.currentItem&&e===n.pagingCount-1&&"next"!==n.direction?!1:e!==n.currentSlide||m?n.vars.animationLoop?!0:n.atEnd&&0===n.currentSlide&&e===a&&"next"!==n.direction?!1:!n.atEnd||n.currentSlide!==a||0!==e||"next"!==n.direction:!1},n.getTarget=function(e){return n.direction=e,"next"===e?n.currentSlide===n.last?0:n.currentSlide+1:0===n.currentSlide?n.last:n.currentSlide-1},n.setProps=function(e,t,a){var i=function(){var a=e?e:(n.itemW+n.vars.itemMargin)*n.move*n.animatingTo,i=function(){if(v)return"setTouch"===t?e:u&&n.animatingTo===n.last?0:u?n.limit-(n.itemW+n.vars.itemMargin)*n.move*n.animatingTo:n.animatingTo===n.last?n.limit:a;switch(t){case"setTotal":return u?(n.count-1-n.currentSlide+n.cloneOffset)*e:(n.currentSlide+n.cloneOffset)*e;case"setTouch":return u?e:e;case"jumpEnd":return u?e:n.count*e;case"jumpStart":return u?n.count*e:e;default:return e}}();return-1*i+"px"}();n.transitions&&(i=d?"translate3d(0,"+i+",0)":"translate3d("+i+",0,0)",a=void 0!==a?a/1e3+"s":"0s",n.container.css("-"+n.pfx+"-transition-duration",a),n.container.css("transition-duration",a)),n.args[n.prop]=i,(n.transitions||void 0===a)&&n.container.css(n.args),n.container.css("transform",i)},n.setup=function(e){if(p)n.slides.css({width:"100%","float":"left",marginRight:"-100%",position:"relative"}),"init"===e&&(r?n.slides.css({opacity:0,display:"block",webkitTransition:"opacity "+n.vars.animationSpeed/1e3+"s ease",zIndex:1}).eq(n.currentSlide).css({opacity:1,zIndex:2}):0==n.vars.fadeFirstSlide?n.slides.css({opacity:0,display:"block",zIndex:1}).eq(n.currentSlide).css({zIndex:2}).css({opacity:1}):n.slides.css({opacity:0,display:"block",zIndex:1}).eq(n.currentSlide).css({zIndex:2}).animate({opacity:1},n.vars.animationSpeed,n.vars.easing)),n.vars.smoothHeight&&f.smoothHeight();else{var t,a;"init"===e&&(n.viewport=$('<div class="'+i+'viewport"></div>').css({overflow:"hidden",position:"relative"}).appendTo(n).append(n.container),n.cloneCount=0,n.cloneOffset=0,u&&(a=$.makeArray(n.slides).reverse(),n.slides=$(a),n.container.empty().append(n.slides))),n.vars.animationLoop&&!v&&(n.cloneCount=2,n.cloneOffset=1,"init"!==e&&n.container.find(".clone").remove(),n.container.append(f.uniqueID(n.slides.first().clone().addClass("clone")).attr("aria-hidden","true")).prepend(f.uniqueID(n.slides.last().clone().addClass("clone")).attr("aria-hidden","true"))),n.newSlides=$(n.vars.selector,n),t=u?n.count-1-n.currentSlide+n.cloneOffset:n.currentSlide+n.cloneOffset,d&&!v?(n.container.height(200*(n.count+n.cloneCount)+"%").css("position","absolute").width("100%"),setTimeout(function(){n.newSlides.css({display:"block"}),n.doMath(),n.viewport.height(n.h),n.setProps(t*n.h,"init")},"init"===e?100:0)):(n.container.width(200*(n.count+n.cloneCount)+"%"),n.setProps(t*n.computedW,"init"),setTimeout(function(){n.doMath(),n.newSlides.css({width:n.computedW,marginRight:n.computedM,"float":"left",display:"block"}),n.vars.smoothHeight&&f.smoothHeight()},"init"===e?100:0))}v||n.slides.removeClass(i+"active-slide").eq(n.currentSlide).addClass(i+"active-slide"),n.vars.init(n)},n.doMath=function(){var e=n.slides.first(),t=n.vars.itemMargin,a=n.vars.minItems,i=n.vars.maxItems;n.w=void 0===n.viewport?n.width():n.viewport.width(),n.h=e.height(),n.boxPadding=e.outerWidth()-e.width(),v?(n.itemT=n.vars.itemWidth+t,n.itemM=t,n.minW=a?a*n.itemT:n.w,n.maxW=i?i*n.itemT-t:n.w,n.itemW=n.minW>n.w?(n.w-t*(a-1))/a:n.maxW<n.w?(n.w-t*(i-1))/i:n.vars.itemWidth>n.w?n.w:n.vars.itemWidth,n.visible=Math.floor(n.w/n.itemW),n.move=n.vars.move>0&&n.vars.move<n.visible?n.vars.move:n.visible,n.pagingCount=Math.ceil((n.count-n.visible)/n.move+1),n.last=n.pagingCount-1,n.limit=1===n.pagingCount?0:n.vars.itemWidth>n.w?n.itemW*(n.count-1)+t*(n.count-1):(n.itemW+t)*n.count-n.w-t):(n.itemW=n.w,n.itemM=t,n.pagingCount=n.count,n.last=n.count-1),n.computedW=n.itemW-n.boxPadding,n.computedM=n.itemM},n.update=function(e,t){n.doMath(),v||(e<n.currentSlide?n.currentSlide+=1:e<=n.currentSlide&&0!==e&&(n.currentSlide-=1),n.animatingTo=n.currentSlide),n.vars.controlNav&&!n.manualControls&&("add"===t&&!v||n.pagingCount>n.controlNav.length?f.controlNav.update("add"):("remove"===t&&!v||n.pagingCount<n.controlNav.length)&&(v&&n.currentSlide>n.last&&(n.currentSlide-=1,n.animatingTo-=1),f.controlNav.update("remove",n.last))),n.vars.directionNav&&f.directionNav.update()},n.addSlide=function(e,t){var a=$(e);n.count+=1,n.last=n.count-1,d&&u?void 0!==t?n.slides.eq(n.count-t).after(a):n.container.prepend(a):void 0!==t?n.slides.eq(t).before(a):n.container.append(a),n.update(t,"add"),n.slides=$(n.vars.selector+":not(.clone)",n),n.setup(),n.vars.added(n)},n.removeSlide=function(e){var t=isNaN(e)?n.slides.index($(e)):e;n.count-=1,n.last=n.count-1,isNaN(e)?$(e,n.slides).remove():d&&u?n.slides.eq(n.last).remove():n.slides.eq(e).remove(),n.doMath(),n.update(t,"remove"),n.slides=$(n.vars.selector+":not(.clone)",n),n.setup(),n.vars.removed(n)},f.init()},$(window).blur(function(t){e=!1}).focus(function(t){e=!0}),$.flexslider.defaults={namespace:"flex-",selector:".slides > li",animation:"fade",easing:"swing",direction:"horizontal",reverse:!1,animationLoop:!0,smoothHeight:!1,startAt:0,slideshow:!0,slideshowSpeed:7e3,animationSpeed:600,initDelay:0,randomize:!1,fadeFirstSlide:!0,thumbCaptions:!1,pauseOnAction:!0,pauseOnHover:!1,pauseInvisible:!0,useCSS:!0,touch:!0,video:!1,controlNav:!0,directionNav:!0,prevText:"Previous",nextText:"Next",keyboard:!0,multipleKeyboard:!1,mousewheel:!1,pausePlay:!1,pauseText:"Pause",playText:"Play",controlsContainer:"",manualControls:"",customDirectionNav:"",sync:"",asNavFor:"",itemWidth:0,itemMargin:0,minItems:1,maxItems:0,move:0,allowOneSlide:!0,start:function(){},before:function(){},after:function(){},end:function(){},added:function(){},removed:function(){},init:function(){}},$.fn.flexslider=function(e){if(void 0===e&&(e={}),"object"==typeof e)return this.each(function(){var t=$(this),a=e.selector?e.selector:".slides > li",n=t.find(a);1===n.length&&e.allowOneSlide===!1||0===n.length?(n.fadeIn(400),e.start&&e.start(t)):void 0===t.data("flexslider")&&new $.flexslider(this,e)});var t=$(this).data("flexslider");switch(e){case"play":t.play();break;case"pause":t.pause();break;case"stop":t.stop();break;case"next":t.flexAnimate(t.getTarget("next"),!0);break;case"prev":case"previous":t.flexAnimate(t.getTarget("prev"),!0);break;default:"number"==typeof e&&t.flexAnimate(e,!0)}}}(jQuery);
|
@@ -0,0 +1,1191 @@
|
|
1
|
+
/*
|
2
|
+
* jQuery FlexSlider v2.6.3
|
3
|
+
* Copyright 2012 WooThemes
|
4
|
+
* Contributing Author: Tyler Smith
|
5
|
+
*/
|
6
|
+
;
|
7
|
+
(function ($) {
|
8
|
+
|
9
|
+
var focused = true;
|
10
|
+
|
11
|
+
//FlexSlider: Object Instance
|
12
|
+
$.flexslider = function(el, options) {
|
13
|
+
var slider = $(el);
|
14
|
+
|
15
|
+
// making variables public
|
16
|
+
slider.vars = $.extend({}, $.flexslider.defaults, options);
|
17
|
+
|
18
|
+
var namespace = slider.vars.namespace,
|
19
|
+
msGesture = window.navigator && window.navigator.msPointerEnabled && window.MSGesture,
|
20
|
+
touch = (( "ontouchstart" in window ) || msGesture || window.DocumentTouch && document instanceof DocumentTouch) && slider.vars.touch,
|
21
|
+
// depricating this idea, as devices are being released with both of these events
|
22
|
+
eventType = "click touchend MSPointerUp keyup",
|
23
|
+
watchedEvent = "",
|
24
|
+
watchedEventClearTimer,
|
25
|
+
vertical = slider.vars.direction === "vertical",
|
26
|
+
reverse = slider.vars.reverse,
|
27
|
+
carousel = (slider.vars.itemWidth > 0),
|
28
|
+
fade = slider.vars.animation === "fade",
|
29
|
+
asNav = slider.vars.asNavFor !== "",
|
30
|
+
methods = {};
|
31
|
+
|
32
|
+
// Store a reference to the slider object
|
33
|
+
$.data(el, "flexslider", slider);
|
34
|
+
|
35
|
+
// Private slider methods
|
36
|
+
methods = {
|
37
|
+
init: function() {
|
38
|
+
slider.animating = false;
|
39
|
+
// Get current slide and make sure it is a number
|
40
|
+
slider.currentSlide = parseInt( ( slider.vars.startAt ? slider.vars.startAt : 0), 10 );
|
41
|
+
if ( isNaN( slider.currentSlide ) ) { slider.currentSlide = 0; }
|
42
|
+
slider.animatingTo = slider.currentSlide;
|
43
|
+
slider.atEnd = (slider.currentSlide === 0 || slider.currentSlide === slider.last);
|
44
|
+
slider.containerSelector = slider.vars.selector.substr(0,slider.vars.selector.search(' '));
|
45
|
+
slider.slides = $(slider.vars.selector, slider);
|
46
|
+
slider.container = $(slider.containerSelector, slider);
|
47
|
+
slider.count = slider.slides.length;
|
48
|
+
// SYNC:
|
49
|
+
slider.syncExists = $(slider.vars.sync).length > 0;
|
50
|
+
// SLIDE:
|
51
|
+
if (slider.vars.animation === "slide") { slider.vars.animation = "swing"; }
|
52
|
+
slider.prop = (vertical) ? "top" : "marginLeft";
|
53
|
+
slider.args = {};
|
54
|
+
// SLIDESHOW:
|
55
|
+
slider.manualPause = false;
|
56
|
+
slider.stopped = false;
|
57
|
+
//PAUSE WHEN INVISIBLE
|
58
|
+
slider.started = false;
|
59
|
+
slider.startTimeout = null;
|
60
|
+
// TOUCH/USECSS:
|
61
|
+
slider.transitions = !slider.vars.video && !fade && slider.vars.useCSS && (function() {
|
62
|
+
var obj = document.createElement('div'),
|
63
|
+
props = ['perspectiveProperty', 'WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];
|
64
|
+
for (var i in props) {
|
65
|
+
if ( obj.style[ props[i] ] !== undefined ) {
|
66
|
+
slider.pfx = props[i].replace('Perspective','').toLowerCase();
|
67
|
+
slider.prop = "-" + slider.pfx + "-transform";
|
68
|
+
return true;
|
69
|
+
}
|
70
|
+
}
|
71
|
+
return false;
|
72
|
+
}());
|
73
|
+
slider.ensureAnimationEnd = '';
|
74
|
+
// CONTROLSCONTAINER:
|
75
|
+
if (slider.vars.controlsContainer !== "") slider.controlsContainer = $(slider.vars.controlsContainer).length > 0 && $(slider.vars.controlsContainer);
|
76
|
+
// MANUAL:
|
77
|
+
if (slider.vars.manualControls !== "") slider.manualControls = $(slider.vars.manualControls).length > 0 && $(slider.vars.manualControls);
|
78
|
+
|
79
|
+
// CUSTOM DIRECTION NAV:
|
80
|
+
if (slider.vars.customDirectionNav !== "") slider.customDirectionNav = $(slider.vars.customDirectionNav).length === 2 && $(slider.vars.customDirectionNav);
|
81
|
+
|
82
|
+
// RANDOMIZE:
|
83
|
+
if (slider.vars.randomize) {
|
84
|
+
slider.slides.sort(function() { return (Math.round(Math.random())-0.5); });
|
85
|
+
slider.container.empty().append(slider.slides);
|
86
|
+
}
|
87
|
+
|
88
|
+
slider.doMath();
|
89
|
+
|
90
|
+
// INIT
|
91
|
+
slider.setup("init");
|
92
|
+
|
93
|
+
// CONTROLNAV:
|
94
|
+
if (slider.vars.controlNav) { methods.controlNav.setup(); }
|
95
|
+
|
96
|
+
// DIRECTIONNAV:
|
97
|
+
if (slider.vars.directionNav) { methods.directionNav.setup(); }
|
98
|
+
|
99
|
+
// KEYBOARD:
|
100
|
+
if (slider.vars.keyboard && ($(slider.containerSelector).length === 1 || slider.vars.multipleKeyboard)) {
|
101
|
+
$(document).bind('keyup', function(event) {
|
102
|
+
var keycode = event.keyCode;
|
103
|
+
if (!slider.animating && (keycode === 39 || keycode === 37)) {
|
104
|
+
var target = (keycode === 39) ? slider.getTarget('next') :
|
105
|
+
(keycode === 37) ? slider.getTarget('prev') : false;
|
106
|
+
slider.flexAnimate(target, slider.vars.pauseOnAction);
|
107
|
+
}
|
108
|
+
});
|
109
|
+
}
|
110
|
+
// MOUSEWHEEL:
|
111
|
+
if (slider.vars.mousewheel) {
|
112
|
+
slider.bind('mousewheel', function(event, delta, deltaX, deltaY) {
|
113
|
+
event.preventDefault();
|
114
|
+
var target = (delta < 0) ? slider.getTarget('next') : slider.getTarget('prev');
|
115
|
+
slider.flexAnimate(target, slider.vars.pauseOnAction);
|
116
|
+
});
|
117
|
+
}
|
118
|
+
|
119
|
+
// PAUSEPLAY
|
120
|
+
if (slider.vars.pausePlay) { methods.pausePlay.setup(); }
|
121
|
+
|
122
|
+
//PAUSE WHEN INVISIBLE
|
123
|
+
if (slider.vars.slideshow && slider.vars.pauseInvisible) { methods.pauseInvisible.init(); }
|
124
|
+
|
125
|
+
// SLIDSESHOW
|
126
|
+
if (slider.vars.slideshow) {
|
127
|
+
if (slider.vars.pauseOnHover) {
|
128
|
+
slider.hover(function() {
|
129
|
+
if (!slider.manualPlay && !slider.manualPause) { slider.pause(); }
|
130
|
+
}, function() {
|
131
|
+
if (!slider.manualPause && !slider.manualPlay && !slider.stopped) { slider.play(); }
|
132
|
+
});
|
133
|
+
}
|
134
|
+
// initialize animation
|
135
|
+
//If we're visible, or we don't use PageVisibility API
|
136
|
+
if(!slider.vars.pauseInvisible || !methods.pauseInvisible.isHidden()) {
|
137
|
+
(slider.vars.initDelay > 0) ? slider.startTimeout = setTimeout(slider.play, slider.vars.initDelay) : slider.play();
|
138
|
+
}
|
139
|
+
}
|
140
|
+
|
141
|
+
// ASNAV:
|
142
|
+
if (asNav) { methods.asNav.setup(); }
|
143
|
+
|
144
|
+
// TOUCH
|
145
|
+
if (touch && slider.vars.touch) { methods.touch(); }
|
146
|
+
|
147
|
+
// FADE&&SMOOTHHEIGHT || SLIDE:
|
148
|
+
if (!fade || (fade && slider.vars.smoothHeight)) { $(window).bind("resize orientationchange focus", methods.resize); }
|
149
|
+
|
150
|
+
slider.find("img").attr("draggable", "false");
|
151
|
+
|
152
|
+
// API: start() Callback
|
153
|
+
setTimeout(function(){
|
154
|
+
slider.vars.start(slider);
|
155
|
+
}, 200);
|
156
|
+
},
|
157
|
+
asNav: {
|
158
|
+
setup: function() {
|
159
|
+
slider.asNav = true;
|
160
|
+
slider.animatingTo = Math.floor(slider.currentSlide/slider.move);
|
161
|
+
slider.currentItem = slider.currentSlide;
|
162
|
+
slider.slides.removeClass(namespace + "active-slide").eq(slider.currentItem).addClass(namespace + "active-slide");
|
163
|
+
if(!msGesture){
|
164
|
+
slider.slides.on(eventType, function(e){
|
165
|
+
e.preventDefault();
|
166
|
+
var $slide = $(this),
|
167
|
+
target = $slide.index();
|
168
|
+
var posFromLeft = $slide.offset().left - $(slider).scrollLeft(); // Find position of slide relative to left of slider container
|
169
|
+
if( posFromLeft <= 0 && $slide.hasClass( namespace + 'active-slide' ) ) {
|
170
|
+
slider.flexAnimate(slider.getTarget("prev"), true);
|
171
|
+
} else if (!$(slider.vars.asNavFor).data('flexslider').animating && !$slide.hasClass(namespace + "active-slide")) {
|
172
|
+
slider.direction = (slider.currentItem < target) ? "next" : "prev";
|
173
|
+
slider.flexAnimate(target, slider.vars.pauseOnAction, false, true, true);
|
174
|
+
}
|
175
|
+
});
|
176
|
+
}else{
|
177
|
+
el._slider = slider;
|
178
|
+
slider.slides.each(function (){
|
179
|
+
var that = this;
|
180
|
+
that._gesture = new MSGesture();
|
181
|
+
that._gesture.target = that;
|
182
|
+
that.addEventListener("MSPointerDown", function (e){
|
183
|
+
e.preventDefault();
|
184
|
+
if(e.currentTarget._gesture) {
|
185
|
+
e.currentTarget._gesture.addPointer(e.pointerId);
|
186
|
+
}
|
187
|
+
}, false);
|
188
|
+
that.addEventListener("MSGestureTap", function (e){
|
189
|
+
e.preventDefault();
|
190
|
+
var $slide = $(this),
|
191
|
+
target = $slide.index();
|
192
|
+
if (!$(slider.vars.asNavFor).data('flexslider').animating && !$slide.hasClass('active')) {
|
193
|
+
slider.direction = (slider.currentItem < target) ? "next" : "prev";
|
194
|
+
slider.flexAnimate(target, slider.vars.pauseOnAction, false, true, true);
|
195
|
+
}
|
196
|
+
});
|
197
|
+
});
|
198
|
+
}
|
199
|
+
}
|
200
|
+
},
|
201
|
+
controlNav: {
|
202
|
+
setup: function() {
|
203
|
+
if (!slider.manualControls) {
|
204
|
+
methods.controlNav.setupPaging();
|
205
|
+
} else { // MANUALCONTROLS:
|
206
|
+
methods.controlNav.setupManual();
|
207
|
+
}
|
208
|
+
},
|
209
|
+
setupPaging: function() {
|
210
|
+
var type = (slider.vars.controlNav === "thumbnails") ? 'control-thumbs' : 'control-paging',
|
211
|
+
j = 1,
|
212
|
+
item,
|
213
|
+
slide;
|
214
|
+
|
215
|
+
slider.controlNavScaffold = $('<ol class="'+ namespace + 'control-nav ' + namespace + type + '"></ol>');
|
216
|
+
|
217
|
+
if (slider.pagingCount > 1) {
|
218
|
+
for (var i = 0; i < slider.pagingCount; i++) {
|
219
|
+
slide = slider.slides.eq(i);
|
220
|
+
if ( undefined === slide.attr( 'data-thumb-alt' ) ) { slide.attr( 'data-thumb-alt', '' ); }
|
221
|
+
var altText = ( '' !== slide.attr( 'data-thumb-alt' ) ) ? altText = ' alt="' + slide.attr( 'data-thumb-alt' ) + '"' : '';
|
222
|
+
item = (slider.vars.controlNav === "thumbnails") ? '<img src="' + slide.attr( 'data-thumb' ) + '"' + altText + '/>' : '<a href="#">' + j + '</a>';
|
223
|
+
if ( 'thumbnails' === slider.vars.controlNav && true === slider.vars.thumbCaptions ) {
|
224
|
+
var captn = slide.attr( 'data-thumbcaption' );
|
225
|
+
if ( '' !== captn && undefined !== captn ) { item += '<span class="' + namespace + 'caption">' + captn + '</span>'; }
|
226
|
+
}
|
227
|
+
slider.controlNavScaffold.append('<li>' + item + '</li>');
|
228
|
+
j++;
|
229
|
+
}
|
230
|
+
}
|
231
|
+
|
232
|
+
// CONTROLSCONTAINER:
|
233
|
+
(slider.controlsContainer) ? $(slider.controlsContainer).append(slider.controlNavScaffold) : slider.append(slider.controlNavScaffold);
|
234
|
+
methods.controlNav.set();
|
235
|
+
|
236
|
+
methods.controlNav.active();
|
237
|
+
|
238
|
+
slider.controlNavScaffold.delegate('a, img', eventType, function(event) {
|
239
|
+
event.preventDefault();
|
240
|
+
|
241
|
+
if (watchedEvent === "" || watchedEvent === event.type) {
|
242
|
+
var $this = $(this),
|
243
|
+
target = slider.controlNav.index($this);
|
244
|
+
|
245
|
+
if (!$this.hasClass(namespace + 'active')) {
|
246
|
+
slider.direction = (target > slider.currentSlide) ? "next" : "prev";
|
247
|
+
slider.flexAnimate(target, slider.vars.pauseOnAction);
|
248
|
+
}
|
249
|
+
}
|
250
|
+
|
251
|
+
// setup flags to prevent event duplication
|
252
|
+
if (watchedEvent === "") {
|
253
|
+
watchedEvent = event.type;
|
254
|
+
}
|
255
|
+
methods.setToClearWatchedEvent();
|
256
|
+
|
257
|
+
});
|
258
|
+
},
|
259
|
+
setupManual: function() {
|
260
|
+
slider.controlNav = slider.manualControls;
|
261
|
+
methods.controlNav.active();
|
262
|
+
|
263
|
+
slider.controlNav.bind(eventType, function(event) {
|
264
|
+
event.preventDefault();
|
265
|
+
|
266
|
+
if (watchedEvent === "" || watchedEvent === event.type) {
|
267
|
+
var $this = $(this),
|
268
|
+
target = slider.controlNav.index($this);
|
269
|
+
|
270
|
+
if (!$this.hasClass(namespace + 'active')) {
|
271
|
+
(target > slider.currentSlide) ? slider.direction = "next" : slider.direction = "prev";
|
272
|
+
slider.flexAnimate(target, slider.vars.pauseOnAction);
|
273
|
+
}
|
274
|
+
}
|
275
|
+
|
276
|
+
// setup flags to prevent event duplication
|
277
|
+
if (watchedEvent === "") {
|
278
|
+
watchedEvent = event.type;
|
279
|
+
}
|
280
|
+
methods.setToClearWatchedEvent();
|
281
|
+
});
|
282
|
+
},
|
283
|
+
set: function() {
|
284
|
+
var selector = (slider.vars.controlNav === "thumbnails") ? 'img' : 'a';
|
285
|
+
slider.controlNav = $('.' + namespace + 'control-nav li ' + selector, (slider.controlsContainer) ? slider.controlsContainer : slider);
|
286
|
+
},
|
287
|
+
active: function() {
|
288
|
+
slider.controlNav.removeClass(namespace + "active").eq(slider.animatingTo).addClass(namespace + "active");
|
289
|
+
},
|
290
|
+
update: function(action, pos) {
|
291
|
+
if (slider.pagingCount > 1 && action === "add") {
|
292
|
+
slider.controlNavScaffold.append($('<li><a href="#">' + slider.count + '</a></li>'));
|
293
|
+
} else if (slider.pagingCount === 1) {
|
294
|
+
slider.controlNavScaffold.find('li').remove();
|
295
|
+
} else {
|
296
|
+
slider.controlNav.eq(pos).closest('li').remove();
|
297
|
+
}
|
298
|
+
methods.controlNav.set();
|
299
|
+
(slider.pagingCount > 1 && slider.pagingCount !== slider.controlNav.length) ? slider.update(pos, action) : methods.controlNav.active();
|
300
|
+
}
|
301
|
+
},
|
302
|
+
directionNav: {
|
303
|
+
setup: function() {
|
304
|
+
var directionNavScaffold = $('<ul class="' + namespace + 'direction-nav"><li class="' + namespace + 'nav-prev"><a class="' + namespace + 'prev" href="#">' + slider.vars.prevText + '</a></li><li class="' + namespace + 'nav-next"><a class="' + namespace + 'next" href="#">' + slider.vars.nextText + '</a></li></ul>');
|
305
|
+
|
306
|
+
// CUSTOM DIRECTION NAV:
|
307
|
+
if (slider.customDirectionNav) {
|
308
|
+
slider.directionNav = slider.customDirectionNav;
|
309
|
+
// CONTROLSCONTAINER:
|
310
|
+
} else if (slider.controlsContainer) {
|
311
|
+
$(slider.controlsContainer).append(directionNavScaffold);
|
312
|
+
slider.directionNav = $('.' + namespace + 'direction-nav li a', slider.controlsContainer);
|
313
|
+
} else {
|
314
|
+
slider.append(directionNavScaffold);
|
315
|
+
slider.directionNav = $('.' + namespace + 'direction-nav li a', slider);
|
316
|
+
}
|
317
|
+
|
318
|
+
methods.directionNav.update();
|
319
|
+
|
320
|
+
slider.directionNav.bind(eventType, function(event) {
|
321
|
+
event.preventDefault();
|
322
|
+
var target;
|
323
|
+
|
324
|
+
if (watchedEvent === "" || watchedEvent === event.type) {
|
325
|
+
target = ($(this).hasClass(namespace + 'next')) ? slider.getTarget('next') : slider.getTarget('prev');
|
326
|
+
slider.flexAnimate(target, slider.vars.pauseOnAction);
|
327
|
+
}
|
328
|
+
|
329
|
+
// setup flags to prevent event duplication
|
330
|
+
if (watchedEvent === "") {
|
331
|
+
watchedEvent = event.type;
|
332
|
+
}
|
333
|
+
methods.setToClearWatchedEvent();
|
334
|
+
});
|
335
|
+
},
|
336
|
+
update: function() {
|
337
|
+
var disabledClass = namespace + 'disabled';
|
338
|
+
if (slider.pagingCount === 1) {
|
339
|
+
slider.directionNav.addClass(disabledClass).attr('tabindex', '-1');
|
340
|
+
} else if (!slider.vars.animationLoop) {
|
341
|
+
if (slider.animatingTo === 0) {
|
342
|
+
slider.directionNav.removeClass(disabledClass).filter('.' + namespace + "prev").addClass(disabledClass).attr('tabindex', '-1');
|
343
|
+
} else if (slider.animatingTo === slider.last) {
|
344
|
+
slider.directionNav.removeClass(disabledClass).filter('.' + namespace + "next").addClass(disabledClass).attr('tabindex', '-1');
|
345
|
+
} else {
|
346
|
+
slider.directionNav.removeClass(disabledClass).removeAttr('tabindex');
|
347
|
+
}
|
348
|
+
} else {
|
349
|
+
slider.directionNav.removeClass(disabledClass).removeAttr('tabindex');
|
350
|
+
}
|
351
|
+
}
|
352
|
+
},
|
353
|
+
pausePlay: {
|
354
|
+
setup: function() {
|
355
|
+
var pausePlayScaffold = $('<div class="' + namespace + 'pauseplay"><a href="#"></a></div>');
|
356
|
+
|
357
|
+
// CONTROLSCONTAINER:
|
358
|
+
if (slider.controlsContainer) {
|
359
|
+
slider.controlsContainer.append(pausePlayScaffold);
|
360
|
+
slider.pausePlay = $('.' + namespace + 'pauseplay a', slider.controlsContainer);
|
361
|
+
} else {
|
362
|
+
slider.append(pausePlayScaffold);
|
363
|
+
slider.pausePlay = $('.' + namespace + 'pauseplay a', slider);
|
364
|
+
}
|
365
|
+
|
366
|
+
methods.pausePlay.update((slider.vars.slideshow) ? namespace + 'pause' : namespace + 'play');
|
367
|
+
|
368
|
+
slider.pausePlay.bind(eventType, function(event) {
|
369
|
+
event.preventDefault();
|
370
|
+
|
371
|
+
if (watchedEvent === "" || watchedEvent === event.type) {
|
372
|
+
if ($(this).hasClass(namespace + 'pause')) {
|
373
|
+
slider.manualPause = true;
|
374
|
+
slider.manualPlay = false;
|
375
|
+
slider.pause();
|
376
|
+
} else {
|
377
|
+
slider.manualPause = false;
|
378
|
+
slider.manualPlay = true;
|
379
|
+
slider.play();
|
380
|
+
}
|
381
|
+
}
|
382
|
+
|
383
|
+
// setup flags to prevent event duplication
|
384
|
+
if (watchedEvent === "") {
|
385
|
+
watchedEvent = event.type;
|
386
|
+
}
|
387
|
+
methods.setToClearWatchedEvent();
|
388
|
+
});
|
389
|
+
},
|
390
|
+
update: function(state) {
|
391
|
+
(state === "play") ? slider.pausePlay.removeClass(namespace + 'pause').addClass(namespace + 'play').html(slider.vars.playText) : slider.pausePlay.removeClass(namespace + 'play').addClass(namespace + 'pause').html(slider.vars.pauseText);
|
392
|
+
}
|
393
|
+
},
|
394
|
+
touch: function() {
|
395
|
+
var startX,
|
396
|
+
startY,
|
397
|
+
offset,
|
398
|
+
cwidth,
|
399
|
+
dx,
|
400
|
+
startT,
|
401
|
+
onTouchStart,
|
402
|
+
onTouchMove,
|
403
|
+
onTouchEnd,
|
404
|
+
scrolling = false,
|
405
|
+
localX = 0,
|
406
|
+
localY = 0,
|
407
|
+
accDx = 0;
|
408
|
+
|
409
|
+
if(!msGesture){
|
410
|
+
onTouchStart = function(e) {
|
411
|
+
if (slider.animating) {
|
412
|
+
e.preventDefault();
|
413
|
+
} else if ( ( window.navigator.msPointerEnabled ) || e.touches.length === 1 ) {
|
414
|
+
slider.pause();
|
415
|
+
// CAROUSEL:
|
416
|
+
cwidth = (vertical) ? slider.h : slider. w;
|
417
|
+
startT = Number(new Date());
|
418
|
+
// CAROUSEL:
|
419
|
+
|
420
|
+
// Local vars for X and Y points.
|
421
|
+
localX = e.touches[0].pageX;
|
422
|
+
localY = e.touches[0].pageY;
|
423
|
+
|
424
|
+
offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 :
|
425
|
+
(carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
|
426
|
+
(carousel && slider.currentSlide === slider.last) ? slider.limit :
|
427
|
+
(carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide :
|
428
|
+
(reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;
|
429
|
+
startX = (vertical) ? localY : localX;
|
430
|
+
startY = (vertical) ? localX : localY;
|
431
|
+
|
432
|
+
el.addEventListener('touchmove', onTouchMove, false);
|
433
|
+
el.addEventListener('touchend', onTouchEnd, false);
|
434
|
+
}
|
435
|
+
};
|
436
|
+
|
437
|
+
onTouchMove = function(e) {
|
438
|
+
// Local vars for X and Y points.
|
439
|
+
|
440
|
+
localX = e.touches[0].pageX;
|
441
|
+
localY = e.touches[0].pageY;
|
442
|
+
|
443
|
+
dx = (vertical) ? startX - localY : startX - localX;
|
444
|
+
scrolling = (vertical) ? (Math.abs(dx) < Math.abs(localX - startY)) : (Math.abs(dx) < Math.abs(localY - startY));
|
445
|
+
|
446
|
+
var fxms = 500;
|
447
|
+
|
448
|
+
if ( ! scrolling || Number( new Date() ) - startT > fxms ) {
|
449
|
+
e.preventDefault();
|
450
|
+
if (!fade && slider.transitions) {
|
451
|
+
if (!slider.vars.animationLoop) {
|
452
|
+
dx = dx/((slider.currentSlide === 0 && dx < 0 || slider.currentSlide === slider.last && dx > 0) ? (Math.abs(dx)/cwidth+2) : 1);
|
453
|
+
}
|
454
|
+
slider.setProps(offset + dx, "setTouch");
|
455
|
+
}
|
456
|
+
}
|
457
|
+
};
|
458
|
+
|
459
|
+
onTouchEnd = function(e) {
|
460
|
+
// finish the touch by undoing the touch session
|
461
|
+
el.removeEventListener('touchmove', onTouchMove, false);
|
462
|
+
|
463
|
+
if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {
|
464
|
+
var updateDx = (reverse) ? -dx : dx,
|
465
|
+
target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev');
|
466
|
+
|
467
|
+
if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) {
|
468
|
+
slider.flexAnimate(target, slider.vars.pauseOnAction);
|
469
|
+
} else {
|
470
|
+
if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); }
|
471
|
+
}
|
472
|
+
}
|
473
|
+
el.removeEventListener('touchend', onTouchEnd, false);
|
474
|
+
|
475
|
+
startX = null;
|
476
|
+
startY = null;
|
477
|
+
dx = null;
|
478
|
+
offset = null;
|
479
|
+
};
|
480
|
+
|
481
|
+
el.addEventListener('touchstart', onTouchStart, false);
|
482
|
+
}else{
|
483
|
+
el.style.msTouchAction = "none";
|
484
|
+
el._gesture = new MSGesture();
|
485
|
+
el._gesture.target = el;
|
486
|
+
el.addEventListener("MSPointerDown", onMSPointerDown, false);
|
487
|
+
el._slider = slider;
|
488
|
+
el.addEventListener("MSGestureChange", onMSGestureChange, false);
|
489
|
+
el.addEventListener("MSGestureEnd", onMSGestureEnd, false);
|
490
|
+
|
491
|
+
function onMSPointerDown(e){
|
492
|
+
e.stopPropagation();
|
493
|
+
if (slider.animating) {
|
494
|
+
e.preventDefault();
|
495
|
+
}else{
|
496
|
+
slider.pause();
|
497
|
+
el._gesture.addPointer(e.pointerId);
|
498
|
+
accDx = 0;
|
499
|
+
cwidth = (vertical) ? slider.h : slider. w;
|
500
|
+
startT = Number(new Date());
|
501
|
+
// CAROUSEL:
|
502
|
+
|
503
|
+
offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 :
|
504
|
+
(carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
|
505
|
+
(carousel && slider.currentSlide === slider.last) ? slider.limit :
|
506
|
+
(carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide :
|
507
|
+
(reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;
|
508
|
+
}
|
509
|
+
}
|
510
|
+
|
511
|
+
function onMSGestureChange(e) {
|
512
|
+
e.stopPropagation();
|
513
|
+
var slider = e.target._slider;
|
514
|
+
if(!slider){
|
515
|
+
return;
|
516
|
+
}
|
517
|
+
var transX = -e.translationX,
|
518
|
+
transY = -e.translationY;
|
519
|
+
|
520
|
+
//Accumulate translations.
|
521
|
+
accDx = accDx + ((vertical) ? transY : transX);
|
522
|
+
dx = accDx;
|
523
|
+
scrolling = (vertical) ? (Math.abs(accDx) < Math.abs(-transX)) : (Math.abs(accDx) < Math.abs(-transY));
|
524
|
+
|
525
|
+
if(e.detail === e.MSGESTURE_FLAG_INERTIA){
|
526
|
+
setImmediate(function (){
|
527
|
+
el._gesture.stop();
|
528
|
+
});
|
529
|
+
|
530
|
+
return;
|
531
|
+
}
|
532
|
+
|
533
|
+
if (!scrolling || Number(new Date()) - startT > 500) {
|
534
|
+
e.preventDefault();
|
535
|
+
if (!fade && slider.transitions) {
|
536
|
+
if (!slider.vars.animationLoop) {
|
537
|
+
dx = accDx / ((slider.currentSlide === 0 && accDx < 0 || slider.currentSlide === slider.last && accDx > 0) ? (Math.abs(accDx) / cwidth + 2) : 1);
|
538
|
+
}
|
539
|
+
slider.setProps(offset + dx, "setTouch");
|
540
|
+
}
|
541
|
+
}
|
542
|
+
}
|
543
|
+
|
544
|
+
function onMSGestureEnd(e) {
|
545
|
+
e.stopPropagation();
|
546
|
+
var slider = e.target._slider;
|
547
|
+
if(!slider){
|
548
|
+
return;
|
549
|
+
}
|
550
|
+
if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {
|
551
|
+
var updateDx = (reverse) ? -dx : dx,
|
552
|
+
target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev');
|
553
|
+
|
554
|
+
if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) {
|
555
|
+
slider.flexAnimate(target, slider.vars.pauseOnAction);
|
556
|
+
} else {
|
557
|
+
if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); }
|
558
|
+
}
|
559
|
+
}
|
560
|
+
|
561
|
+
startX = null;
|
562
|
+
startY = null;
|
563
|
+
dx = null;
|
564
|
+
offset = null;
|
565
|
+
accDx = 0;
|
566
|
+
}
|
567
|
+
}
|
568
|
+
},
|
569
|
+
resize: function() {
|
570
|
+
if (!slider.animating && slider.is(':visible')) {
|
571
|
+
if (!carousel) { slider.doMath(); }
|
572
|
+
|
573
|
+
if (fade) {
|
574
|
+
// SMOOTH HEIGHT:
|
575
|
+
methods.smoothHeight();
|
576
|
+
} else if (carousel) { //CAROUSEL:
|
577
|
+
slider.slides.width(slider.computedW);
|
578
|
+
slider.update(slider.pagingCount);
|
579
|
+
slider.setProps();
|
580
|
+
}
|
581
|
+
else if (vertical) { //VERTICAL:
|
582
|
+
slider.viewport.height(slider.h);
|
583
|
+
slider.setProps(slider.h, "setTotal");
|
584
|
+
} else {
|
585
|
+
// SMOOTH HEIGHT:
|
586
|
+
if (slider.vars.smoothHeight) { methods.smoothHeight(); }
|
587
|
+
slider.newSlides.width(slider.computedW);
|
588
|
+
slider.setProps(slider.computedW, "setTotal");
|
589
|
+
}
|
590
|
+
}
|
591
|
+
},
|
592
|
+
smoothHeight: function(dur) {
|
593
|
+
if (!vertical || fade) {
|
594
|
+
var $obj = (fade) ? slider : slider.viewport;
|
595
|
+
(dur) ? $obj.animate({"height": slider.slides.eq(slider.animatingTo).innerHeight()}, dur) : $obj.innerHeight(slider.slides.eq(slider.animatingTo).innerHeight());
|
596
|
+
}
|
597
|
+
},
|
598
|
+
sync: function(action) {
|
599
|
+
var $obj = $(slider.vars.sync).data("flexslider"),
|
600
|
+
target = slider.animatingTo;
|
601
|
+
|
602
|
+
switch (action) {
|
603
|
+
case "animate": $obj.flexAnimate(target, slider.vars.pauseOnAction, false, true); break;
|
604
|
+
case "play": if (!$obj.playing && !$obj.asNav) { $obj.play(); } break;
|
605
|
+
case "pause": $obj.pause(); break;
|
606
|
+
}
|
607
|
+
},
|
608
|
+
uniqueID: function($clone) {
|
609
|
+
// Append _clone to current level and children elements with id attributes
|
610
|
+
$clone.filter( '[id]' ).add($clone.find( '[id]' )).each(function() {
|
611
|
+
var $this = $(this);
|
612
|
+
$this.attr( 'id', $this.attr( 'id' ) + '_clone' );
|
613
|
+
});
|
614
|
+
return $clone;
|
615
|
+
},
|
616
|
+
pauseInvisible: {
|
617
|
+
visProp: null,
|
618
|
+
init: function() {
|
619
|
+
var visProp = methods.pauseInvisible.getHiddenProp();
|
620
|
+
if (visProp) {
|
621
|
+
var evtname = visProp.replace(/[H|h]idden/,'') + 'visibilitychange';
|
622
|
+
document.addEventListener(evtname, function() {
|
623
|
+
if (methods.pauseInvisible.isHidden()) {
|
624
|
+
if(slider.startTimeout) {
|
625
|
+
clearTimeout(slider.startTimeout); //If clock is ticking, stop timer and prevent from starting while invisible
|
626
|
+
} else {
|
627
|
+
slider.pause(); //Or just pause
|
628
|
+
}
|
629
|
+
}
|
630
|
+
else {
|
631
|
+
if(slider.started) {
|
632
|
+
slider.play(); //Initiated before, just play
|
633
|
+
} else {
|
634
|
+
if (slider.vars.initDelay > 0) {
|
635
|
+
setTimeout(slider.play, slider.vars.initDelay);
|
636
|
+
} else {
|
637
|
+
slider.play(); //Didn't init before: simply init or wait for it
|
638
|
+
}
|
639
|
+
}
|
640
|
+
}
|
641
|
+
});
|
642
|
+
}
|
643
|
+
},
|
644
|
+
isHidden: function() {
|
645
|
+
var prop = methods.pauseInvisible.getHiddenProp();
|
646
|
+
if (!prop) {
|
647
|
+
return false;
|
648
|
+
}
|
649
|
+
return document[prop];
|
650
|
+
},
|
651
|
+
getHiddenProp: function() {
|
652
|
+
var prefixes = ['webkit','moz','ms','o'];
|
653
|
+
// if 'hidden' is natively supported just return it
|
654
|
+
if ('hidden' in document) {
|
655
|
+
return 'hidden';
|
656
|
+
}
|
657
|
+
// otherwise loop over all the known prefixes until we find one
|
658
|
+
for ( var i = 0; i < prefixes.length; i++ ) {
|
659
|
+
if ((prefixes[i] + 'Hidden') in document) {
|
660
|
+
return prefixes[i] + 'Hidden';
|
661
|
+
}
|
662
|
+
}
|
663
|
+
// otherwise it's not supported
|
664
|
+
return null;
|
665
|
+
}
|
666
|
+
},
|
667
|
+
setToClearWatchedEvent: function() {
|
668
|
+
clearTimeout(watchedEventClearTimer);
|
669
|
+
watchedEventClearTimer = setTimeout(function() {
|
670
|
+
watchedEvent = "";
|
671
|
+
}, 3000);
|
672
|
+
}
|
673
|
+
};
|
674
|
+
|
675
|
+
// public methods
|
676
|
+
slider.flexAnimate = function(target, pause, override, withSync, fromNav) {
|
677
|
+
if (!slider.vars.animationLoop && target !== slider.currentSlide) {
|
678
|
+
slider.direction = (target > slider.currentSlide) ? "next" : "prev";
|
679
|
+
}
|
680
|
+
|
681
|
+
if (asNav && slider.pagingCount === 1) slider.direction = (slider.currentItem < target) ? "next" : "prev";
|
682
|
+
|
683
|
+
if (!slider.animating && (slider.canAdvance(target, fromNav) || override) && slider.is(":visible")) {
|
684
|
+
if (asNav && withSync) {
|
685
|
+
var master = $(slider.vars.asNavFor).data('flexslider');
|
686
|
+
slider.atEnd = target === 0 || target === slider.count - 1;
|
687
|
+
master.flexAnimate(target, true, false, true, fromNav);
|
688
|
+
slider.direction = (slider.currentItem < target) ? "next" : "prev";
|
689
|
+
master.direction = slider.direction;
|
690
|
+
|
691
|
+
if (Math.ceil((target + 1)/slider.visible) - 1 !== slider.currentSlide && target !== 0) {
|
692
|
+
slider.currentItem = target;
|
693
|
+
slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide");
|
694
|
+
target = Math.floor(target/slider.visible);
|
695
|
+
} else {
|
696
|
+
slider.currentItem = target;
|
697
|
+
slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide");
|
698
|
+
return false;
|
699
|
+
}
|
700
|
+
}
|
701
|
+
|
702
|
+
slider.animating = true;
|
703
|
+
slider.animatingTo = target;
|
704
|
+
|
705
|
+
// SLIDESHOW:
|
706
|
+
if (pause) { slider.pause(); }
|
707
|
+
|
708
|
+
// API: before() animation Callback
|
709
|
+
slider.vars.before(slider);
|
710
|
+
|
711
|
+
// SYNC:
|
712
|
+
if (slider.syncExists && !fromNav) { methods.sync("animate"); }
|
713
|
+
|
714
|
+
// CONTROLNAV
|
715
|
+
if (slider.vars.controlNav) { methods.controlNav.active(); }
|
716
|
+
|
717
|
+
// !CAROUSEL:
|
718
|
+
// CANDIDATE: slide active class (for add/remove slide)
|
719
|
+
if (!carousel) { slider.slides.removeClass(namespace + 'active-slide').eq(target).addClass(namespace + 'active-slide'); }
|
720
|
+
|
721
|
+
// INFINITE LOOP:
|
722
|
+
// CANDIDATE: atEnd
|
723
|
+
slider.atEnd = target === 0 || target === slider.last;
|
724
|
+
|
725
|
+
// DIRECTIONNAV:
|
726
|
+
if (slider.vars.directionNav) { methods.directionNav.update(); }
|
727
|
+
|
728
|
+
if (target === slider.last) {
|
729
|
+
// API: end() of cycle Callback
|
730
|
+
slider.vars.end(slider);
|
731
|
+
// SLIDESHOW && !INFINITE LOOP:
|
732
|
+
if (!slider.vars.animationLoop) { slider.pause(); }
|
733
|
+
}
|
734
|
+
|
735
|
+
// SLIDE:
|
736
|
+
if (!fade) {
|
737
|
+
var dimension = (vertical) ? slider.slides.filter(':first').height() : slider.computedW,
|
738
|
+
margin, slideString, calcNext;
|
739
|
+
|
740
|
+
// INFINITE LOOP / REVERSE:
|
741
|
+
if (carousel) {
|
742
|
+
margin = slider.vars.itemMargin;
|
743
|
+
calcNext = ((slider.itemW + margin) * slider.move) * slider.animatingTo;
|
744
|
+
slideString = (calcNext > slider.limit && slider.visible !== 1) ? slider.limit : calcNext;
|
745
|
+
} else if (slider.currentSlide === 0 && target === slider.count - 1 && slider.vars.animationLoop && slider.direction !== "next") {
|
746
|
+
slideString = (reverse) ? (slider.count + slider.cloneOffset) * dimension : 0;
|
747
|
+
} else if (slider.currentSlide === slider.last && target === 0 && slider.vars.animationLoop && slider.direction !== "prev") {
|
748
|
+
slideString = (reverse) ? 0 : (slider.count + 1) * dimension;
|
749
|
+
} else {
|
750
|
+
slideString = (reverse) ? ((slider.count - 1) - target + slider.cloneOffset) * dimension : (target + slider.cloneOffset) * dimension;
|
751
|
+
}
|
752
|
+
slider.setProps(slideString, "", slider.vars.animationSpeed);
|
753
|
+
if (slider.transitions) {
|
754
|
+
if (!slider.vars.animationLoop || !slider.atEnd) {
|
755
|
+
slider.animating = false;
|
756
|
+
slider.currentSlide = slider.animatingTo;
|
757
|
+
}
|
758
|
+
|
759
|
+
// Unbind previous transitionEnd events and re-bind new transitionEnd event
|
760
|
+
slider.container.unbind("webkitTransitionEnd transitionend");
|
761
|
+
slider.container.bind("webkitTransitionEnd transitionend", function() {
|
762
|
+
clearTimeout(slider.ensureAnimationEnd);
|
763
|
+
slider.wrapup(dimension);
|
764
|
+
});
|
765
|
+
|
766
|
+
// Insurance for the ever-so-fickle transitionEnd event
|
767
|
+
clearTimeout(slider.ensureAnimationEnd);
|
768
|
+
slider.ensureAnimationEnd = setTimeout(function() {
|
769
|
+
slider.wrapup(dimension);
|
770
|
+
}, slider.vars.animationSpeed + 100);
|
771
|
+
|
772
|
+
} else {
|
773
|
+
slider.container.animate(slider.args, slider.vars.animationSpeed, slider.vars.easing, function(){
|
774
|
+
slider.wrapup(dimension);
|
775
|
+
});
|
776
|
+
}
|
777
|
+
} else { // FADE:
|
778
|
+
if (!touch) {
|
779
|
+
slider.slides.eq(slider.currentSlide).css({"zIndex": 1}).animate({"opacity": 0}, slider.vars.animationSpeed, slider.vars.easing);
|
780
|
+
slider.slides.eq(target).css({"zIndex": 2}).animate({"opacity": 1}, slider.vars.animationSpeed, slider.vars.easing, slider.wrapup);
|
781
|
+
} else {
|
782
|
+
slider.slides.eq(slider.currentSlide).css({ "opacity": 0, "zIndex": 1 });
|
783
|
+
slider.slides.eq(target).css({ "opacity": 1, "zIndex": 2 });
|
784
|
+
slider.wrapup(dimension);
|
785
|
+
}
|
786
|
+
}
|
787
|
+
// SMOOTH HEIGHT:
|
788
|
+
if (slider.vars.smoothHeight) { methods.smoothHeight(slider.vars.animationSpeed); }
|
789
|
+
}
|
790
|
+
};
|
791
|
+
slider.wrapup = function(dimension) {
|
792
|
+
// SLIDE:
|
793
|
+
if (!fade && !carousel) {
|
794
|
+
if (slider.currentSlide === 0 && slider.animatingTo === slider.last && slider.vars.animationLoop) {
|
795
|
+
slider.setProps(dimension, "jumpEnd");
|
796
|
+
} else if (slider.currentSlide === slider.last && slider.animatingTo === 0 && slider.vars.animationLoop) {
|
797
|
+
slider.setProps(dimension, "jumpStart");
|
798
|
+
}
|
799
|
+
}
|
800
|
+
slider.animating = false;
|
801
|
+
slider.currentSlide = slider.animatingTo;
|
802
|
+
// API: after() animation Callback
|
803
|
+
slider.vars.after(slider);
|
804
|
+
};
|
805
|
+
|
806
|
+
// SLIDESHOW:
|
807
|
+
slider.animateSlides = function() {
|
808
|
+
if (!slider.animating && focused ) { slider.flexAnimate(slider.getTarget("next")); }
|
809
|
+
};
|
810
|
+
// SLIDESHOW:
|
811
|
+
slider.pause = function() {
|
812
|
+
clearInterval(slider.animatedSlides);
|
813
|
+
slider.animatedSlides = null;
|
814
|
+
slider.playing = false;
|
815
|
+
// PAUSEPLAY:
|
816
|
+
if (slider.vars.pausePlay) { methods.pausePlay.update("play"); }
|
817
|
+
// SYNC:
|
818
|
+
if (slider.syncExists) { methods.sync("pause"); }
|
819
|
+
};
|
820
|
+
// SLIDESHOW:
|
821
|
+
slider.play = function() {
|
822
|
+
if (slider.playing) { clearInterval(slider.animatedSlides); }
|
823
|
+
slider.animatedSlides = slider.animatedSlides || setInterval(slider.animateSlides, slider.vars.slideshowSpeed);
|
824
|
+
slider.started = slider.playing = true;
|
825
|
+
// PAUSEPLAY:
|
826
|
+
if (slider.vars.pausePlay) { methods.pausePlay.update("pause"); }
|
827
|
+
// SYNC:
|
828
|
+
if (slider.syncExists) { methods.sync("play"); }
|
829
|
+
};
|
830
|
+
// STOP:
|
831
|
+
slider.stop = function () {
|
832
|
+
slider.pause();
|
833
|
+
slider.stopped = true;
|
834
|
+
};
|
835
|
+
slider.canAdvance = function(target, fromNav) {
|
836
|
+
// ASNAV:
|
837
|
+
var last = (asNav) ? slider.pagingCount - 1 : slider.last;
|
838
|
+
return (fromNav) ? true :
|
839
|
+
(asNav && slider.currentItem === slider.count - 1 && target === 0 && slider.direction === "prev") ? true :
|
840
|
+
(asNav && slider.currentItem === 0 && target === slider.pagingCount - 1 && slider.direction !== "next") ? false :
|
841
|
+
(target === slider.currentSlide && !asNav) ? false :
|
842
|
+
(slider.vars.animationLoop) ? true :
|
843
|
+
(slider.atEnd && slider.currentSlide === 0 && target === last && slider.direction !== "next") ? false :
|
844
|
+
(slider.atEnd && slider.currentSlide === last && target === 0 && slider.direction === "next") ? false :
|
845
|
+
true;
|
846
|
+
};
|
847
|
+
slider.getTarget = function(dir) {
|
848
|
+
slider.direction = dir;
|
849
|
+
if (dir === "next") {
|
850
|
+
return (slider.currentSlide === slider.last) ? 0 : slider.currentSlide + 1;
|
851
|
+
} else {
|
852
|
+
return (slider.currentSlide === 0) ? slider.last : slider.currentSlide - 1;
|
853
|
+
}
|
854
|
+
};
|
855
|
+
|
856
|
+
// SLIDE:
|
857
|
+
slider.setProps = function(pos, special, dur) {
|
858
|
+
var target = (function() {
|
859
|
+
var posCheck = (pos) ? pos : ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo,
|
860
|
+
posCalc = (function() {
|
861
|
+
if (carousel) {
|
862
|
+
return (special === "setTouch") ? pos :
|
863
|
+
(reverse && slider.animatingTo === slider.last) ? 0 :
|
864
|
+
(reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
|
865
|
+
(slider.animatingTo === slider.last) ? slider.limit : posCheck;
|
866
|
+
} else {
|
867
|
+
switch (special) {
|
868
|
+
case "setTotal": return (reverse) ? ((slider.count - 1) - slider.currentSlide + slider.cloneOffset) * pos : (slider.currentSlide + slider.cloneOffset) * pos;
|
869
|
+
case "setTouch": return (reverse) ? pos : pos;
|
870
|
+
case "jumpEnd": return (reverse) ? pos : slider.count * pos;
|
871
|
+
case "jumpStart": return (reverse) ? slider.count * pos : pos;
|
872
|
+
default: return pos;
|
873
|
+
}
|
874
|
+
}
|
875
|
+
}());
|
876
|
+
|
877
|
+
return (posCalc * -1) + "px";
|
878
|
+
}());
|
879
|
+
|
880
|
+
if (slider.transitions) {
|
881
|
+
target = (vertical) ? "translate3d(0," + target + ",0)" : "translate3d(" + target + ",0,0)";
|
882
|
+
dur = (dur !== undefined) ? (dur/1000) + "s" : "0s";
|
883
|
+
slider.container.css("-" + slider.pfx + "-transition-duration", dur);
|
884
|
+
slider.container.css("transition-duration", dur);
|
885
|
+
}
|
886
|
+
|
887
|
+
slider.args[slider.prop] = target;
|
888
|
+
if (slider.transitions || dur === undefined) { slider.container.css(slider.args); }
|
889
|
+
|
890
|
+
slider.container.css('transform',target);
|
891
|
+
};
|
892
|
+
|
893
|
+
slider.setup = function(type) {
|
894
|
+
// SLIDE:
|
895
|
+
if (!fade) {
|
896
|
+
var sliderOffset, arr;
|
897
|
+
|
898
|
+
if (type === "init") {
|
899
|
+
slider.viewport = $('<div class="' + namespace + 'viewport"></div>').css({"overflow": "hidden", "position": "relative"}).appendTo(slider).append(slider.container);
|
900
|
+
// INFINITE LOOP:
|
901
|
+
slider.cloneCount = 0;
|
902
|
+
slider.cloneOffset = 0;
|
903
|
+
// REVERSE:
|
904
|
+
if (reverse) {
|
905
|
+
arr = $.makeArray(slider.slides).reverse();
|
906
|
+
slider.slides = $(arr);
|
907
|
+
slider.container.empty().append(slider.slides);
|
908
|
+
}
|
909
|
+
}
|
910
|
+
// INFINITE LOOP && !CAROUSEL:
|
911
|
+
if (slider.vars.animationLoop && !carousel) {
|
912
|
+
slider.cloneCount = 2;
|
913
|
+
slider.cloneOffset = 1;
|
914
|
+
// clear out old clones
|
915
|
+
if (type !== "init") { slider.container.find('.clone').remove(); }
|
916
|
+
slider.container.append(methods.uniqueID(slider.slides.first().clone().addClass('clone')).attr('aria-hidden', 'true'))
|
917
|
+
.prepend(methods.uniqueID(slider.slides.last().clone().addClass('clone')).attr('aria-hidden', 'true'));
|
918
|
+
}
|
919
|
+
slider.newSlides = $(slider.vars.selector, slider);
|
920
|
+
|
921
|
+
sliderOffset = (reverse) ? slider.count - 1 - slider.currentSlide + slider.cloneOffset : slider.currentSlide + slider.cloneOffset;
|
922
|
+
// VERTICAL:
|
923
|
+
if (vertical && !carousel) {
|
924
|
+
slider.container.height((slider.count + slider.cloneCount) * 200 + "%").css("position", "absolute").width("100%");
|
925
|
+
setTimeout(function(){
|
926
|
+
slider.newSlides.css({"display": "block"});
|
927
|
+
slider.doMath();
|
928
|
+
slider.viewport.height(slider.h);
|
929
|
+
slider.setProps(sliderOffset * slider.h, "init");
|
930
|
+
}, (type === "init") ? 100 : 0);
|
931
|
+
} else {
|
932
|
+
slider.container.width((slider.count + slider.cloneCount) * 200 + "%");
|
933
|
+
slider.setProps(sliderOffset * slider.computedW, "init");
|
934
|
+
setTimeout(function(){
|
935
|
+
slider.doMath();
|
936
|
+
slider.newSlides.css({"width": slider.computedW, "marginRight" : slider.computedM, "float": "left", "display": "block"});
|
937
|
+
// SMOOTH HEIGHT:
|
938
|
+
if (slider.vars.smoothHeight) { methods.smoothHeight(); }
|
939
|
+
}, (type === "init") ? 100 : 0);
|
940
|
+
}
|
941
|
+
} else { // FADE:
|
942
|
+
slider.slides.css({"width": "100%", "float": "left", "marginRight": "-100%", "position": "relative"});
|
943
|
+
if (type === "init") {
|
944
|
+
if (!touch) {
|
945
|
+
//slider.slides.eq(slider.currentSlide).fadeIn(slider.vars.animationSpeed, slider.vars.easing);
|
946
|
+
if (slider.vars.fadeFirstSlide == false) {
|
947
|
+
slider.slides.css({ "opacity": 0, "display": "block", "zIndex": 1 }).eq(slider.currentSlide).css({"zIndex": 2}).css({"opacity": 1});
|
948
|
+
} else {
|
949
|
+
slider.slides.css({ "opacity": 0, "display": "block", "zIndex": 1 }).eq(slider.currentSlide).css({"zIndex": 2}).animate({"opacity": 1},slider.vars.animationSpeed,slider.vars.easing);
|
950
|
+
}
|
951
|
+
} else {
|
952
|
+
slider.slides.css({ "opacity": 0, "display": "block", "webkitTransition": "opacity " + slider.vars.animationSpeed / 1000 + "s ease", "zIndex": 1 }).eq(slider.currentSlide).css({ "opacity": 1, "zIndex": 2});
|
953
|
+
}
|
954
|
+
}
|
955
|
+
// SMOOTH HEIGHT:
|
956
|
+
if (slider.vars.smoothHeight) { methods.smoothHeight(); }
|
957
|
+
}
|
958
|
+
// !CAROUSEL:
|
959
|
+
// CANDIDATE: active slide
|
960
|
+
if (!carousel) { slider.slides.removeClass(namespace + "active-slide").eq(slider.currentSlide).addClass(namespace + "active-slide"); }
|
961
|
+
|
962
|
+
//FlexSlider: init() Callback
|
963
|
+
slider.vars.init(slider);
|
964
|
+
};
|
965
|
+
|
966
|
+
slider.doMath = function() {
|
967
|
+
var slide = slider.slides.first(),
|
968
|
+
slideMargin = slider.vars.itemMargin,
|
969
|
+
minItems = slider.vars.minItems,
|
970
|
+
maxItems = slider.vars.maxItems;
|
971
|
+
|
972
|
+
slider.w = (slider.viewport===undefined) ? slider.width() : slider.viewport.width();
|
973
|
+
slider.h = slide.height();
|
974
|
+
slider.boxPadding = slide.outerWidth() - slide.width();
|
975
|
+
|
976
|
+
// CAROUSEL:
|
977
|
+
if (carousel) {
|
978
|
+
slider.itemT = slider.vars.itemWidth + slideMargin;
|
979
|
+
slider.itemM = slideMargin;
|
980
|
+
slider.minW = (minItems) ? minItems * slider.itemT : slider.w;
|
981
|
+
slider.maxW = (maxItems) ? (maxItems * slider.itemT) - slideMargin : slider.w;
|
982
|
+
slider.itemW = (slider.minW > slider.w) ? (slider.w - (slideMargin * (minItems - 1)))/minItems :
|
983
|
+
(slider.maxW < slider.w) ? (slider.w - (slideMargin * (maxItems - 1)))/maxItems :
|
984
|
+
(slider.vars.itemWidth > slider.w) ? slider.w : slider.vars.itemWidth;
|
985
|
+
|
986
|
+
slider.visible = Math.floor(slider.w/(slider.itemW));
|
987
|
+
slider.move = (slider.vars.move > 0 && slider.vars.move < slider.visible ) ? slider.vars.move : slider.visible;
|
988
|
+
slider.pagingCount = Math.ceil(((slider.count - slider.visible)/slider.move) + 1);
|
989
|
+
slider.last = slider.pagingCount - 1;
|
990
|
+
slider.limit = (slider.pagingCount === 1) ? 0 :
|
991
|
+
(slider.vars.itemWidth > slider.w) ? (slider.itemW * (slider.count - 1)) + (slideMargin * (slider.count - 1)) : ((slider.itemW + slideMargin) * slider.count) - slider.w - slideMargin;
|
992
|
+
} else {
|
993
|
+
slider.itemW = slider.w;
|
994
|
+
slider.itemM = slideMargin;
|
995
|
+
slider.pagingCount = slider.count;
|
996
|
+
slider.last = slider.count - 1;
|
997
|
+
}
|
998
|
+
slider.computedW = slider.itemW - slider.boxPadding;
|
999
|
+
slider.computedM = slider.itemM;
|
1000
|
+
};
|
1001
|
+
|
1002
|
+
slider.update = function(pos, action) {
|
1003
|
+
slider.doMath();
|
1004
|
+
|
1005
|
+
// update currentSlide and slider.animatingTo if necessary
|
1006
|
+
if (!carousel) {
|
1007
|
+
if (pos < slider.currentSlide) {
|
1008
|
+
slider.currentSlide += 1;
|
1009
|
+
} else if (pos <= slider.currentSlide && pos !== 0) {
|
1010
|
+
slider.currentSlide -= 1;
|
1011
|
+
}
|
1012
|
+
slider.animatingTo = slider.currentSlide;
|
1013
|
+
}
|
1014
|
+
|
1015
|
+
// update controlNav
|
1016
|
+
if (slider.vars.controlNav && !slider.manualControls) {
|
1017
|
+
if ((action === "add" && !carousel) || slider.pagingCount > slider.controlNav.length) {
|
1018
|
+
methods.controlNav.update("add");
|
1019
|
+
} else if ((action === "remove" && !carousel) || slider.pagingCount < slider.controlNav.length) {
|
1020
|
+
if (carousel && slider.currentSlide > slider.last) {
|
1021
|
+
slider.currentSlide -= 1;
|
1022
|
+
slider.animatingTo -= 1;
|
1023
|
+
}
|
1024
|
+
methods.controlNav.update("remove", slider.last);
|
1025
|
+
}
|
1026
|
+
}
|
1027
|
+
// update directionNav
|
1028
|
+
if (slider.vars.directionNav) { methods.directionNav.update(); }
|
1029
|
+
|
1030
|
+
};
|
1031
|
+
|
1032
|
+
slider.addSlide = function(obj, pos) {
|
1033
|
+
var $obj = $(obj);
|
1034
|
+
|
1035
|
+
slider.count += 1;
|
1036
|
+
slider.last = slider.count - 1;
|
1037
|
+
|
1038
|
+
// append new slide
|
1039
|
+
if (vertical && reverse) {
|
1040
|
+
(pos !== undefined) ? slider.slides.eq(slider.count - pos).after($obj) : slider.container.prepend($obj);
|
1041
|
+
} else {
|
1042
|
+
(pos !== undefined) ? slider.slides.eq(pos).before($obj) : slider.container.append($obj);
|
1043
|
+
}
|
1044
|
+
|
1045
|
+
// update currentSlide, animatingTo, controlNav, and directionNav
|
1046
|
+
slider.update(pos, "add");
|
1047
|
+
|
1048
|
+
// update slider.slides
|
1049
|
+
slider.slides = $(slider.vars.selector + ':not(.clone)', slider);
|
1050
|
+
// re-setup the slider to accomdate new slide
|
1051
|
+
slider.setup();
|
1052
|
+
|
1053
|
+
//FlexSlider: added() Callback
|
1054
|
+
slider.vars.added(slider);
|
1055
|
+
};
|
1056
|
+
slider.removeSlide = function(obj) {
|
1057
|
+
var pos = (isNaN(obj)) ? slider.slides.index($(obj)) : obj;
|
1058
|
+
|
1059
|
+
// update count
|
1060
|
+
slider.count -= 1;
|
1061
|
+
slider.last = slider.count - 1;
|
1062
|
+
|
1063
|
+
// remove slide
|
1064
|
+
if (isNaN(obj)) {
|
1065
|
+
$(obj, slider.slides).remove();
|
1066
|
+
} else {
|
1067
|
+
(vertical && reverse) ? slider.slides.eq(slider.last).remove() : slider.slides.eq(obj).remove();
|
1068
|
+
}
|
1069
|
+
|
1070
|
+
// update currentSlide, animatingTo, controlNav, and directionNav
|
1071
|
+
slider.doMath();
|
1072
|
+
slider.update(pos, "remove");
|
1073
|
+
|
1074
|
+
// update slider.slides
|
1075
|
+
slider.slides = $(slider.vars.selector + ':not(.clone)', slider);
|
1076
|
+
// re-setup the slider to accomdate new slide
|
1077
|
+
slider.setup();
|
1078
|
+
|
1079
|
+
// FlexSlider: removed() Callback
|
1080
|
+
slider.vars.removed(slider);
|
1081
|
+
};
|
1082
|
+
|
1083
|
+
//FlexSlider: Initialize
|
1084
|
+
methods.init();
|
1085
|
+
};
|
1086
|
+
|
1087
|
+
// Ensure the slider isn't focussed if the window loses focus.
|
1088
|
+
$( window ).blur( function ( e ) {
|
1089
|
+
focused = false;
|
1090
|
+
}).focus( function ( e ) {
|
1091
|
+
focused = true;
|
1092
|
+
});
|
1093
|
+
|
1094
|
+
//FlexSlider: Default Settings
|
1095
|
+
$.flexslider.defaults = {
|
1096
|
+
namespace: "flex-", //{NEW} String: Prefix string attached to the class of every element generated by the plugin
|
1097
|
+
selector: ".slides > li", //{NEW} Selector: Must match a simple pattern. '{container} > {slide}' -- Ignore pattern at your own peril
|
1098
|
+
animation: "fade", //String: Select your animation type, "fade" or "slide"
|
1099
|
+
easing: "swing", //{NEW} String: Determines the easing method used in jQuery transitions. jQuery easing plugin is supported!
|
1100
|
+
direction: "horizontal", //String: Select the sliding direction, "horizontal" or "vertical"
|
1101
|
+
reverse: false, //{NEW} Boolean: Reverse the animation direction
|
1102
|
+
animationLoop: true, //Boolean: Should the animation loop? If false, directionNav will received "disable" classes at either end
|
1103
|
+
smoothHeight: false, //{NEW} Boolean: Allow height of the slider to animate smoothly in horizontal mode
|
1104
|
+
startAt: 0, //Integer: The slide that the slider should start on. Array notation (0 = first slide)
|
1105
|
+
slideshow: true, //Boolean: Animate slider automatically
|
1106
|
+
slideshowSpeed: 7000, //Integer: Set the speed of the slideshow cycling, in milliseconds
|
1107
|
+
animationSpeed: 600, //Integer: Set the speed of animations, in milliseconds
|
1108
|
+
initDelay: 0, //{NEW} Integer: Set an initialization delay, in milliseconds
|
1109
|
+
randomize: false, //Boolean: Randomize slide order
|
1110
|
+
fadeFirstSlide: true, //Boolean: Fade in the first slide when animation type is "fade"
|
1111
|
+
thumbCaptions: false, //Boolean: Whether or not to put captions on thumbnails when using the "thumbnails" controlNav.
|
1112
|
+
|
1113
|
+
// Usability features
|
1114
|
+
pauseOnAction: true, //Boolean: Pause the slideshow when interacting with control elements, highly recommended.
|
1115
|
+
pauseOnHover: false, //Boolean: Pause the slideshow when hovering over slider, then resume when no longer hovering
|
1116
|
+
pauseInvisible: true, //{NEW} Boolean: Pause the slideshow when tab is invisible, resume when visible. Provides better UX, lower CPU usage.
|
1117
|
+
useCSS: true, //{NEW} Boolean: Slider will use CSS3 transitions if available
|
1118
|
+
touch: true, //{NEW} Boolean: Allow touch swipe navigation of the slider on touch-enabled devices
|
1119
|
+
video: false, //{NEW} Boolean: If using video in the slider, will prevent CSS3 3D Transforms to avoid graphical glitches
|
1120
|
+
|
1121
|
+
// Primary Controls
|
1122
|
+
controlNav: true, //Boolean: Create navigation for paging control of each slide? Note: Leave true for manualControls usage
|
1123
|
+
directionNav: true, //Boolean: Create navigation for previous/next navigation? (true/false)
|
1124
|
+
prevText: "Previous", //String: Set the text for the "previous" directionNav item
|
1125
|
+
nextText: "Next", //String: Set the text for the "next" directionNav item
|
1126
|
+
|
1127
|
+
// Secondary Navigation
|
1128
|
+
keyboard: true, //Boolean: Allow slider navigating via keyboard left/right keys
|
1129
|
+
multipleKeyboard: false, //{NEW} Boolean: Allow keyboard navigation to affect multiple sliders. Default behavior cuts out keyboard navigation with more than one slider present.
|
1130
|
+
mousewheel: false, //{UPDATED} Boolean: Requires jquery.mousewheel.js (https://github.com/brandonaaron/jquery-mousewheel) - Allows slider navigating via mousewheel
|
1131
|
+
pausePlay: false, //Boolean: Create pause/play dynamic element
|
1132
|
+
pauseText: "Pause", //String: Set the text for the "pause" pausePlay item
|
1133
|
+
playText: "Play", //String: Set the text for the "play" pausePlay item
|
1134
|
+
|
1135
|
+
// Special properties
|
1136
|
+
controlsContainer: "", //{UPDATED} jQuery Object/Selector: Declare which container the navigation elements should be appended too. Default container is the FlexSlider element. Example use would be $(".flexslider-container"). Property is ignored if given element is not found.
|
1137
|
+
manualControls: "", //{UPDATED} jQuery Object/Selector: Declare custom control navigation. Examples would be $(".flex-control-nav li") or "#tabs-nav li img", etc. The number of elements in your controlNav should match the number of slides/tabs.
|
1138
|
+
customDirectionNav: "", //{NEW} jQuery Object/Selector: Custom prev / next button. Must be two jQuery elements. In order to make the events work they have to have the classes "prev" and "next" (plus namespace)
|
1139
|
+
sync: "", //{NEW} Selector: Mirror the actions performed on this slider with another slider. Use with care.
|
1140
|
+
asNavFor: "", //{NEW} Selector: Internal property exposed for turning the slider into a thumbnail navigation for another slider
|
1141
|
+
|
1142
|
+
// Carousel Options
|
1143
|
+
itemWidth: 0, //{NEW} Integer: Box-model width of individual carousel items, including horizontal borders and padding.
|
1144
|
+
itemMargin: 0, //{NEW} Integer: Margin between carousel items.
|
1145
|
+
minItems: 1, //{NEW} Integer: Minimum number of carousel items that should be visible. Items will resize fluidly when below this.
|
1146
|
+
maxItems: 0, //{NEW} Integer: Maxmimum number of carousel items that should be visible. Items will resize fluidly when above this limit.
|
1147
|
+
move: 0, //{NEW} Integer: Number of carousel items that should move on animation. If 0, slider will move all visible items.
|
1148
|
+
allowOneSlide: true, //{NEW} Boolean: Whether or not to allow a slider comprised of a single slide
|
1149
|
+
|
1150
|
+
// Callback API
|
1151
|
+
start: function(){}, //Callback: function(slider) - Fires when the slider loads the first slide
|
1152
|
+
before: function(){}, //Callback: function(slider) - Fires asynchronously with each slider animation
|
1153
|
+
after: function(){}, //Callback: function(slider) - Fires after each slider animation completes
|
1154
|
+
end: function(){}, //Callback: function(slider) - Fires when the slider reaches the last slide (asynchronous)
|
1155
|
+
added: function(){}, //{NEW} Callback: function(slider) - Fires after a slide is added
|
1156
|
+
removed: function(){}, //{NEW} Callback: function(slider) - Fires after a slide is removed
|
1157
|
+
init: function() {} //{NEW} Callback: function(slider) - Fires after the slider is initially setup
|
1158
|
+
};
|
1159
|
+
|
1160
|
+
//FlexSlider: Plugin Function
|
1161
|
+
$.fn.flexslider = function(options) {
|
1162
|
+
if (options === undefined) { options = {}; }
|
1163
|
+
|
1164
|
+
if (typeof options === "object") {
|
1165
|
+
return this.each(function() {
|
1166
|
+
var $this = $(this),
|
1167
|
+
selector = (options.selector) ? options.selector : ".slides > li",
|
1168
|
+
$slides = $this.find(selector);
|
1169
|
+
|
1170
|
+
if ( ( $slides.length === 1 && options.allowOneSlide === false ) || $slides.length === 0 ) {
|
1171
|
+
$slides.fadeIn(400);
|
1172
|
+
if (options.start) { options.start($this); }
|
1173
|
+
} else if ($this.data('flexslider') === undefined) {
|
1174
|
+
new $.flexslider(this, options);
|
1175
|
+
}
|
1176
|
+
});
|
1177
|
+
} else {
|
1178
|
+
// Helper strings to quickly perform functions on the slider
|
1179
|
+
var $slider = $(this).data('flexslider');
|
1180
|
+
switch (options) {
|
1181
|
+
case "play": $slider.play(); break;
|
1182
|
+
case "pause": $slider.pause(); break;
|
1183
|
+
case "stop": $slider.stop(); break;
|
1184
|
+
case "next": $slider.flexAnimate($slider.getTarget("next"), true); break;
|
1185
|
+
case "prev":
|
1186
|
+
case "previous": $slider.flexAnimate($slider.getTarget("prev"), true); break;
|
1187
|
+
default: if (typeof options === "number") { $slider.flexAnimate(options, true); }
|
1188
|
+
}
|
1189
|
+
}
|
1190
|
+
};
|
1191
|
+
})(jQuery);
|