zurb-foundation 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/.gitignore +5 -0
  2. data/Gemfile +4 -0
  3. data/README.markdown +14 -0
  4. data/Rakefile +1 -0
  5. data/app/assets/images/foundation/misc/button-gloss.png +0 -0
  6. data/app/assets/images/foundation/misc/button-overlay.png +0 -0
  7. data/app/assets/images/foundation/misc/custom-form-sprites.png +0 -0
  8. data/app/assets/images/foundation/misc/input-bg.png +0 -0
  9. data/app/assets/images/foundation/misc/modal-gloss.png +0 -0
  10. data/app/assets/images/foundation/misc/table-sorter.png +0 -0
  11. data/app/assets/images/foundation/orbit/bullets.jpg +0 -0
  12. data/app/assets/images/foundation/orbit/left-arrow.png +0 -0
  13. data/app/assets/images/foundation/orbit/loading.gif +0 -0
  14. data/app/assets/images/foundation/orbit/mask-black.png +0 -0
  15. data/app/assets/images/foundation/orbit/pause-black.png +0 -0
  16. data/app/assets/images/foundation/orbit/right-arrow.png +0 -0
  17. data/app/assets/images/foundation/orbit/rotator-black.png +0 -0
  18. data/app/assets/images/foundation/orbit/timer-black.png +0 -0
  19. data/app/assets/javascripts/foundation/app.js +63 -0
  20. data/app/assets/javascripts/foundation/forms.jquery.js +58 -0
  21. data/app/assets/javascripts/foundation/index.js +6 -0
  22. data/app/assets/javascripts/foundation/jquery.customforms.js +162 -0
  23. data/app/assets/javascripts/foundation/jquery.orbit-1.2.3.js +401 -0
  24. data/app/assets/javascripts/foundation/jquery.reveal.js +150 -0
  25. data/app/assets/stylesheets/foundation/fonts/league/League_Gothic-webfont.eot +0 -0
  26. data/app/assets/stylesheets/foundation/fonts/league/League_Gothic-webfont.svg +223 -0
  27. data/app/assets/stylesheets/foundation/fonts/league/League_Gothic-webfont.ttf +0 -0
  28. data/app/assets/stylesheets/foundation/fonts/league/League_Gothic-webfont.woff +0 -0
  29. data/app/assets/stylesheets/foundation/fonts/league/SIL Open Font License 1.1.txt +91 -0
  30. data/app/assets/stylesheets/foundation/fonts/league/font.css.erb +18 -0
  31. data/app/assets/stylesheets/foundation/forms.css.scss.erb +83 -0
  32. data/app/assets/stylesheets/foundation/globals.css.scss.erb +279 -0
  33. data/app/assets/stylesheets/foundation/index.css +10 -0
  34. data/app/assets/stylesheets/foundation/mobile.css.scss.erb +112 -0
  35. data/app/assets/stylesheets/foundation/orbit-1.2.3.css.scss.erb +201 -0
  36. data/app/assets/stylesheets/foundation/reveal.css.scss.erb +91 -0
  37. data/app/assets/stylesheets/foundation/ui.css.scss.erb +212 -0
  38. data/foundation.gemspec +25 -0
  39. data/lib/foundation/engine.rb +5 -0
  40. data/lib/foundation/generators/USAGE +15 -0
  41. data/lib/foundation/generators/install_generator.rb +14 -0
  42. data/lib/foundation/generators/layout_generator.rb +19 -0
  43. data/lib/foundation/generators/templates/application.css +5 -0
  44. data/lib/foundation/generators/templates/application.html.erb +31 -0
  45. data/lib/foundation/generators/templates/application.js +4 -0
  46. data/lib/foundation/version.rb +3 -0
  47. data/lib/zurb-foundation.rb +7 -0
  48. metadata +112 -0
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ .DS_Store
5
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in foundation.gemspec
4
+ gemspec
@@ -0,0 +1,14 @@
1
+ USAGE
2
+ =====
3
+ 1. Inside your Gemfile add the following:
4
+
5
+ `gem "zurb-foundation"`
6
+
7
+ 1. Run `bundle install`
8
+ 1. Run `rails g foundation:install`
9
+ 1. If you want to replace your application layout, run `rails g foundation:layout`
10
+ 1. Eat a cookie.
11
+
12
+ DEPENDENCIES
13
+ ============
14
+ * Rails 3.1
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,63 @@
1
+ $(document).ready(function() {
2
+
3
+ /* Use this js doc for all application specific JS */
4
+
5
+ /* TABS --------------------------------- */
6
+ /* Remove if you don't need :) */
7
+
8
+ var tabs = $('dl.tabs');
9
+ tabsContent = $('ul.tabs-content')
10
+
11
+ tabs.each(function(i) {
12
+ //Get all tabs
13
+ var tab = $(this).children('dd').children('a');
14
+ tab.click(function(e) {
15
+
16
+ //Get Location of tab's content
17
+ var contentLocation = $(this).attr("href")
18
+ contentLocation = contentLocation + "Tab";
19
+
20
+ //Let go if not a hashed one
21
+ if(contentLocation.charAt(0)=="#") {
22
+
23
+ e.preventDefault();
24
+
25
+ //Make Tab Active
26
+ tab.removeClass('active');
27
+ $(this).addClass('active');
28
+
29
+ //Show Tab Content
30
+ $(contentLocation).parent('.tabs-content').children('li').css({"display":"none"});
31
+ $(contentLocation).css({"display":"block"});
32
+
33
+ }
34
+ });
35
+ });
36
+
37
+
38
+ /* PLACEHOLDER FOR FORMS ------------- */
39
+ /* Remove if you don't need :) */
40
+
41
+ $('[placeholder]').focus(function() {
42
+ var input = $(this);
43
+ if (input.val() == input.attr('placeholder')) {
44
+ input.val('');
45
+ input.removeClass('placeholder');
46
+ }
47
+ }).blur(function() {
48
+ var input = $(this);
49
+ if (input.val() == '' || input.val() == input.attr('placeholder')) {
50
+ input.addClass('placeholder');
51
+ input.val(input.attr('placeholder'));
52
+ }
53
+ }).blur();
54
+ $('[placeholder]').parents('form').submit(function() {
55
+ $(this).find('[placeholder]').each(function() {
56
+ var input = $(this);
57
+ if (input.val() == input.attr('placeholder')) {
58
+ input.val('');
59
+ }
60
+ });
61
+ });
62
+
63
+ });
@@ -0,0 +1,58 @@
1
+ /**
2
+ * jQuery.placeholder - Placeholder plugin for input fields
3
+ * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
4
+ * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
5
+ * Date: 2008/10/14
6
+ *
7
+ * @author Blair Mitchelmore
8
+ * @version 1.0.1
9
+ *
10
+ **/
11
+ new function($) {
12
+ $.fn.placeholder = function(settings) {
13
+ settings = settings || {};
14
+ var key = settings.dataKey || "placeholderValue";
15
+ var attr = settings.attr || "placeholder";
16
+ var className = settings.className || "placeholder";
17
+ var values = settings.values || [];
18
+ var block = settings.blockSubmit || false;
19
+ var blank = settings.blankSubmit || false;
20
+ var submit = settings.onSubmit || false;
21
+ var value = settings.value || "";
22
+ var position = settings.cursor_position || 0;
23
+
24
+
25
+ return this.filter(":input").each(function(index) {
26
+ $.data(this, key, values[index] || $(this).attr(attr));
27
+ }).each(function() {
28
+ if ($.trim($(this).val()) === "")
29
+ $(this).addClass(className).val($.data(this, key));
30
+ }).focus(function() {
31
+ if ($.trim($(this).val()) === $.data(this, key))
32
+ $(this).removeClass(className).val(value)
33
+ if ($.fn.setCursorPosition) {
34
+ $(this).setCursorPosition(position);
35
+ }
36
+ }).blur(function() {
37
+ if ($.trim($(this).val()) === value)
38
+ $(this).addClass(className).val($.data(this, key));
39
+ }).each(function(index, elem) {
40
+ if (block)
41
+ new function(e) {
42
+ $(e.form).submit(function() {
43
+ return $.trim($(e).val()) != $.data(e, key)
44
+ });
45
+ }(elem);
46
+ else if (blank)
47
+ new function(e) {
48
+ $(e.form).submit(function() {
49
+ if ($.trim($(e).val()) == $.data(e, key))
50
+ $(e).removeClass(className).val("");
51
+ return true;
52
+ });
53
+ }(elem);
54
+ else if (submit)
55
+ new function(e) { $(e.form).submit(submit); }(elem);
56
+ });
57
+ };
58
+ }(jQuery);
@@ -0,0 +1,6 @@
1
+ //= require ./jquery.reveal
2
+ //= require ./jquery.orbit-1.2.3
3
+ //= require ./jquery.orbit-1.2.3
4
+ //= require ./forms.jquery.js
5
+ //= require ./jquery.customforms
6
+ //= require ./app
@@ -0,0 +1,162 @@
1
+ /*
2
+ * jQuery Custom Forms Plugin 1.0
3
+ * www.ZURB.com
4
+ * Copyright 2010, ZURB
5
+ * Free to use under the MIT license.
6
+ * http://www.opensource.org/licenses/mit-license.php
7
+ */
8
+
9
+ jQuery(document).ready(function ($) {
10
+
11
+ function appendCustomMarkup(type) {
12
+ $('form.custom input:' + type).each(function () {
13
+ var $span = $('<span class="custom ' + type + '"></span>');
14
+ if ($(this).next('span.custom.' + type).length === 0) {
15
+ if (this.checked) {
16
+ $span.addClass('checked');
17
+ }
18
+ $(this)
19
+ .hide()
20
+ .after($span);
21
+ }
22
+ });
23
+ }
24
+ appendCustomMarkup('checkbox');
25
+ appendCustomMarkup('radio');
26
+
27
+ $('form.custom select').each(function () {
28
+ var $this = $(this),
29
+ $customSelect = $this.next('div.custom.dropdown'),
30
+ $options = $this.find('option'),
31
+ maxWidth = 0,
32
+ $li;
33
+
34
+ if ($customSelect.length === 0) {
35
+ $customSelect = $('<div class="custom dropdown"><a href="#" class="selector"></a><ul></ul></div>"');
36
+ $options.each(function () {
37
+ $li = $('<li>' + $(this).html() + '</li>');
38
+ $customSelect.find('ul').append($li);
39
+ });
40
+ $customSelect.prepend('<a href="#" class="current">' + $options.first().html() + '</a>');
41
+
42
+ $this.after($customSelect);
43
+ $this.hide();
44
+ }
45
+
46
+ $options.each(function (index) {
47
+ if (this.selected) {
48
+ $customSelect.find('li').eq(index).addClass('selected');
49
+ $customSelect.find('.current').html($(this).html());
50
+ }
51
+ });
52
+
53
+ $customSelect.find('li').each(function () {
54
+ $customSelect.addClass('open');
55
+ if ($(this).outerWidth() > maxWidth) {
56
+ maxWidth = $(this).outerWidth();
57
+ }
58
+ $customSelect.removeClass('open');
59
+ });
60
+ $customSelect.css('width', maxWidth + 18 + 'px');
61
+ $customSelect.find('ul').css('width', maxWidth + 16 + 'px');
62
+ });
63
+ });
64
+
65
+ (function ($) {
66
+
67
+ function toggleCheckbox($element) {
68
+ var $input = $element.prev(),
69
+ input = $input[0];
70
+
71
+ input.checked = ((input.checked) ? false : true);
72
+ $element.toggleClass('checked');
73
+ }
74
+
75
+ function toggleRadio($element) {
76
+ var $input = $element.prev(),
77
+ input = $input[0];
78
+
79
+ $('input:radio[name=' + $input.attr('name') + ']').each(function () {
80
+ $(this).next().removeClass('checked');
81
+ });
82
+ input.checked = ((input.checked) ? false : true);
83
+ $element.toggleClass('checked');
84
+ }
85
+
86
+ $('form.custom span.custom.checkbox').live('click', function (event) {
87
+ event.preventDefault();
88
+ event.stopPropagation();
89
+
90
+ toggleCheckbox($(this));
91
+ });
92
+
93
+ $('form.custom span.custom.radio').live('click', function (event) {
94
+ event.preventDefault();
95
+ event.stopPropagation();
96
+
97
+ toggleRadio($(this));
98
+ });
99
+
100
+ $('form.custom label').live('click', function (event) {
101
+ var $associatedElement = $('#' + $(this).attr('for')),
102
+ $customCheckbox,
103
+ $customRadio;
104
+ if ($associatedElement.length !== 0) {
105
+ if ($associatedElement.attr('type') === 'checkbox') {
106
+ event.preventDefault();
107
+ $customCheckbox = $(this).find('span.custom.checkbox');
108
+ toggleCheckbox($customCheckbox);
109
+ } else if ($associatedElement.attr('type') === 'radio') {
110
+ event.preventDefault();
111
+ $customRadio = $(this).find('span.custom.radio');
112
+ toggleRadio($customRadio);
113
+ }
114
+ }
115
+ });
116
+
117
+ $('form.custom div.custom.dropdown a.current, form.custom div.custom.dropdown a.selector').live('click', function (event) {
118
+ var $this = $(this),
119
+ $dropdown = $this.closest('div.custom.dropdown');
120
+
121
+ event.preventDefault();
122
+ $dropdown.toggleClass('open');
123
+
124
+ if ($dropdown.hasClass('open')) {
125
+ $(document).bind('click.customdropdown', function (event) {
126
+ $dropdown.removeClass('open');
127
+ $(document).unbind('.customdropdown');
128
+ });
129
+ } else {
130
+ $(document).unbind('.customdropdown');
131
+ }
132
+ });
133
+
134
+ $('form.custom div.custom.dropdown li').live('click', function (event) {
135
+ var $this = $(this),
136
+ $customDropdown = $this.closest('div.custom.dropdown'),
137
+ $select = $customDropdown.prev(),
138
+ selectedIndex = 0;
139
+
140
+ event.preventDefault();
141
+ event.stopPropagation();
142
+
143
+ $this
144
+ .closest('ul')
145
+ .find('li')
146
+ .removeClass('selected');
147
+ $this.addClass('selected');
148
+
149
+ $customDropdown
150
+ .removeClass('open')
151
+ .find('a.current')
152
+ .html($this.html());
153
+
154
+ $this.closest('ul').find('li').each(function (index) {
155
+ if ($this[0] == this) {
156
+ selectedIndex = index;
157
+ }
158
+
159
+ });
160
+ $select[0].selectedIndex = selectedIndex;
161
+ });
162
+ })(jQuery);
@@ -0,0 +1,401 @@
1
+ /*
2
+ * jQuery Orbit Plugin 1.2.3
3
+ * www.ZURB.com/playground
4
+ * Copyright 2010, ZURB
5
+ * Free to use under the MIT license.
6
+ * http://www.opensource.org/licenses/mit-license.php
7
+ */
8
+
9
+
10
+ (function($) {
11
+
12
+ $.fn.orbit = function(options) {
13
+
14
+ //Defaults to extend options
15
+ var defaults = {
16
+ animation: 'horizontal-push', // fade, horizontal-slide, vertical-slide, horizontal-push
17
+ animationSpeed: 600, // how fast animtions are
18
+ timer: true, // true or false to have the timer
19
+ advanceSpeed: 4000, // if timer is enabled, time between transitions
20
+ pauseOnHover: false, // if you hover pauses the slider
21
+ startClockOnMouseOut: false, // if clock should start on MouseOut
22
+ startClockOnMouseOutAfter: 1000, // how long after MouseOut should the timer start again
23
+ directionalNav: true, // manual advancing directional navs
24
+ captions: true, // do you want captions?
25
+ captionAnimation: 'fade', // fade, slideOpen, none
26
+ captionAnimationSpeed: 600, // if so how quickly should they animate in
27
+ bullets: false, // true or false to activate the bullet navigation
28
+ bulletThumbs: false, // thumbnails for the bullets
29
+ bulletThumbLocation: '', // location from this file where thumbs will be
30
+ afterSlideChange: function(){} // empty function
31
+ };
32
+
33
+ //Extend those options
34
+ var options = $.extend(defaults, options);
35
+
36
+ return this.each(function() {
37
+
38
+ // ==============
39
+ // ! SETUP
40
+ // ==============
41
+
42
+ //Global Variables
43
+ var activeSlide = 0,
44
+ numberSlides = 0,
45
+ orbitWidth,
46
+ orbitHeight,
47
+ locked;
48
+
49
+ //Initialize
50
+ var orbit = $(this).addClass('orbit'),
51
+ orbitWrapper = orbit.wrap('<div class="orbit-wrapper" />').parent();
52
+ //orbit.add(orbitWidth).width('1px').height('1px');
53
+
54
+ //Collect all slides and set slider size of largest image
55
+ var slides = orbit.children('img, a, div');
56
+ slides.each(function() {
57
+ var _slide = $(this),
58
+ _slideWidth = _slide.width(),
59
+ _slideHeight = _slide.height();
60
+ if(_slideWidth > orbit.width()) {
61
+ orbit.add(orbitWrapper).width(_slideWidth);
62
+ orbitWidth = orbit.width();
63
+ }
64
+ if(_slideHeight > orbit.height()) {
65
+ orbit.add(orbitWrapper).height(_slideHeight);
66
+ orbitHeight = orbit.height();
67
+ }
68
+ numberSlides++;
69
+ });
70
+
71
+ //Animation locking functions
72
+ function unlock() {
73
+ locked = false;
74
+ }
75
+ function lock() {
76
+ locked = true;
77
+ }
78
+
79
+ //If there is only a single slide remove nav, timer and bullets
80
+ if(slides.length == 1) {
81
+ options.directionalNav = false;
82
+ options.timer = false;
83
+ options.bullets = false;
84
+ }
85
+
86
+ //Set initial front photo z-index and fades it in
87
+ slides.eq(activeSlide)
88
+ .css({"z-index" : 3})
89
+ .fadeIn(function() {
90
+ //brings in all other slides IF css declares a display: none
91
+ slides.css({"display":"block"})
92
+ });
93
+
94
+ // ==============
95
+ // ! TIMER
96
+ // ==============
97
+
98
+ //Timer Execution
99
+ function startClock() {
100
+ if(!options.timer || options.timer == 'false') {
101
+ return false;
102
+ //if timer is hidden, don't need to do crazy calculations
103
+ } else if(timer.is(':hidden')) {
104
+ clock = setInterval(function(e){
105
+ shift("next");
106
+ }, options.advanceSpeed);
107
+ //if timer is visible and working, let's do some math
108
+ } else {
109
+ timerRunning = true;
110
+ pause.removeClass('active')
111
+ clock = setInterval(function(e){
112
+ var degreeCSS = "rotate("+degrees+"deg)"
113
+ degrees += 2
114
+ rotator.css({
115
+ "-webkit-transform": degreeCSS,
116
+ "-moz-transform": degreeCSS,
117
+ "-o-transform": degreeCSS
118
+ });
119
+ if(degrees > 180) {
120
+ rotator.addClass('move');
121
+ mask.addClass('move');
122
+ }
123
+ if(degrees > 360) {
124
+ rotator.removeClass('move');
125
+ mask.removeClass('move');
126
+ degrees = 0;
127
+ shift("next");
128
+ }
129
+ }, options.advanceSpeed/180);
130
+ }
131
+ }
132
+ function stopClock() {
133
+ if(!options.timer || options.timer == 'false') { return false; } else {
134
+ timerRunning = false;
135
+ clearInterval(clock);
136
+ pause.addClass('active');
137
+ }
138
+ }
139
+
140
+ //Timer Setup
141
+ if(options.timer) {
142
+ var timerHTML = '<div class="timer"><span class="mask"><span class="rotator"></span></span><span class="pause"></span></div>'
143
+ orbitWrapper.append(timerHTML);
144
+ var timer = $('div.timer'),
145
+ timerRunning;
146
+ if(timer.length != 0) {
147
+ var rotator = $('div.timer span.rotator'),
148
+ mask = $('div.timer span.mask'),
149
+ pause = $('div.timer span.pause'),
150
+ degrees = 0,
151
+ clock;
152
+ startClock();
153
+ timer.click(function() {
154
+ if(!timerRunning) {
155
+ startClock();
156
+ } else {
157
+ stopClock();
158
+ }
159
+ });
160
+ if(options.startClockOnMouseOut){
161
+ var outTimer;
162
+ orbitWrapper.mouseleave(function() {
163
+ outTimer = setTimeout(function() {
164
+ if(!timerRunning){
165
+ startClock();
166
+ }
167
+ }, options.startClockOnMouseOutAfter)
168
+ })
169
+ orbitWrapper.mouseenter(function() {
170
+ clearTimeout(outTimer);
171
+ })
172
+ }
173
+ }
174
+ }
175
+
176
+ //Pause Timer on hover
177
+ if(options.pauseOnHover) {
178
+ orbitWrapper.mouseenter(function() {
179
+ stopClock();
180
+ });
181
+ }
182
+
183
+ // ==============
184
+ // ! CAPTIONS
185
+ // ==============
186
+
187
+ //Caption Setup
188
+ if(options.captions) {
189
+ var captionHTML = '<div class="orbit-caption"></div>';
190
+ orbitWrapper.append(captionHTML);
191
+ var caption = orbitWrapper.children('.orbit-caption');
192
+ setCaption();
193
+ }
194
+
195
+ //Caption Execution
196
+ function setCaption() {
197
+ if(!options.captions || options.captions =="false") {
198
+ return false;
199
+ } else {
200
+ var _captionLocation = slides.eq(activeSlide).data('caption'); //get ID from rel tag on image
201
+ _captionHTML = $(_captionLocation).html(); //get HTML from the matching HTML entity
202
+ //Set HTML for the caption if it exists
203
+ if(_captionHTML) {
204
+ caption
205
+ .attr('id',_captionLocation) // Add ID caption
206
+ .html(_captionHTML); // Change HTML in Caption
207
+ //Animations for Caption entrances
208
+ if(options.captionAnimation == 'none') {
209
+ caption.show();
210
+ }
211
+ if(options.captionAnimation == 'fade') {
212
+ caption.fadeIn(options.captionAnimationSpeed);
213
+ }
214
+ if(options.captionAnimation == 'slideOpen') {
215
+ caption.slideDown(options.captionAnimationSpeed);
216
+ }
217
+ } else {
218
+ //Animations for Caption exits
219
+ if(options.captionAnimation == 'none') {
220
+ caption.hide();
221
+ }
222
+ if(options.captionAnimation == 'fade') {
223
+ caption.fadeOut(options.captionAnimationSpeed);
224
+ }
225
+ if(options.captionAnimation == 'slideOpen') {
226
+ caption.slideUp(options.captionAnimationSpeed);
227
+ }
228
+ }
229
+ }
230
+ }
231
+
232
+ // ==================
233
+ // ! DIRECTIONAL NAV
234
+ // ==================
235
+
236
+ //DirectionalNav { rightButton --> shift("next"), leftButton --> shift("prev");
237
+ if(options.directionalNav) {
238
+ if(options.directionalNav == "false") { return false; }
239
+ var directionalNavHTML = '<div class="slider-nav"><span class="right">Right</span><span class="left">Left</span></div>';
240
+ orbitWrapper.append(directionalNavHTML);
241
+ var leftBtn = orbitWrapper.children('div.slider-nav').children('span.left'),
242
+ rightBtn = orbitWrapper.children('div.slider-nav').children('span.right');
243
+ leftBtn.click(function() {
244
+ stopClock();
245
+ shift("prev");
246
+ });
247
+ rightBtn.click(function() {
248
+ stopClock();
249
+ shift("next")
250
+ });
251
+ }
252
+
253
+ // ==================
254
+ // ! BULLET NAV
255
+ // ==================
256
+
257
+ //Bullet Nav Setup
258
+ if(options.bullets) {
259
+ var bulletHTML = '<ul class="orbit-bullets"></ul>';
260
+ orbitWrapper.append(bulletHTML);
261
+ var bullets = $('ul.orbit-bullets');
262
+ for(i=0; i<numberSlides; i++) {
263
+ var liMarkup = $('<li>'+(i+1)+'</li>');
264
+ if(options.bulletThumbs) {
265
+ var thumbName = slides.eq(i).data('thumb');
266
+ if(thumbName) {
267
+ var liMarkup = $('<li class="has-thumb">'+i+'</li>')
268
+ liMarkup.css({"background" : "url("+options.bulletThumbLocation+thumbName+") no-repeat"});
269
+ }
270
+ }
271
+ $('ul.orbit-bullets').append(liMarkup);
272
+ liMarkup.data('index',i);
273
+ liMarkup.click(function() {
274
+ stopClock();
275
+ shift($(this).data('index'));
276
+ });
277
+ }
278
+ setActiveBullet();
279
+ }
280
+
281
+ //Bullet Nav Execution
282
+ function setActiveBullet() {
283
+ if(!options.bullets) { return false; } else {
284
+ bullets.children('li').removeClass('active').eq(activeSlide).addClass('active');
285
+ }
286
+ }
287
+
288
+ // ====================
289
+ // ! SHIFT ANIMATIONS
290
+ // ====================
291
+
292
+ //Animating the shift!
293
+ function shift(direction) {
294
+ //remember previous activeSlide
295
+ var prevActiveSlide = activeSlide,
296
+ slideDirection = direction;
297
+ //exit function if bullet clicked is same as the current image
298
+ if(prevActiveSlide == slideDirection) { return false; }
299
+ //reset Z & Unlock
300
+ function resetAndUnlock() {
301
+ slides
302
+ .eq(prevActiveSlide)
303
+ .css({"z-index" : 1});
304
+ unlock();
305
+ options.afterSlideChange.call(this);
306
+ }
307
+ if(slides.length == "1") { return false; }
308
+ if(!locked) {
309
+ lock();
310
+ //deduce the proper activeImage
311
+ if(direction == "next") {
312
+ activeSlide++
313
+ if(activeSlide == numberSlides) {
314
+ activeSlide = 0;
315
+ }
316
+ } else if(direction == "prev") {
317
+ activeSlide--
318
+ if(activeSlide < 0) {
319
+ activeSlide = numberSlides-1;
320
+ }
321
+ } else {
322
+ activeSlide = direction;
323
+ if (prevActiveSlide < activeSlide) {
324
+ slideDirection = "next";
325
+ } else if (prevActiveSlide > activeSlide) {
326
+ slideDirection = "prev"
327
+ }
328
+ }
329
+ //set to correct bullet
330
+ setActiveBullet();
331
+
332
+ //set previous slide z-index to one below what new activeSlide will be
333
+ slides
334
+ .eq(prevActiveSlide)
335
+ .css({"z-index" : 2});
336
+
337
+ //fade
338
+ if(options.animation == "fade") {
339
+ slides
340
+ .eq(activeSlide)
341
+ .css({"opacity" : 0, "z-index" : 3})
342
+ .animate({"opacity" : 1}, options.animationSpeed, resetAndUnlock);
343
+ }
344
+ //horizontal-slide
345
+ if(options.animation == "horizontal-slide") {
346
+ if(slideDirection == "next") {
347
+ slides
348
+ .eq(activeSlide)
349
+ .css({"left": orbitWidth, "z-index" : 3})
350
+ .animate({"left" : 0}, options.animationSpeed, resetAndUnlock);
351
+ }
352
+ if(slideDirection == "prev") {
353
+ slides
354
+ .eq(activeSlide)
355
+ .css({"left": -orbitWidth, "z-index" : 3})
356
+ .animate({"left" : 0}, options.animationSpeed, resetAndUnlock);
357
+ }
358
+ }
359
+ //vertical-slide
360
+ if(options.animation == "vertical-slide") {
361
+ if(slideDirection == "prev") {
362
+ slides
363
+ .eq(activeSlide)
364
+ .css({"top": orbitHeight, "z-index" : 3})
365
+ .animate({"top" : 0}, options.animationSpeed, resetAndUnlock);
366
+ }
367
+ if(slideDirection == "next") {
368
+ slides
369
+ .eq(activeSlide)
370
+ .css({"top": -orbitHeight, "z-index" : 3})
371
+ .animate({"top" : 0}, options.animationSpeed, resetAndUnlock);
372
+ }
373
+ }
374
+ //push-over
375
+ if(options.animation == "horizontal-push") {
376
+ if(slideDirection == "next") {
377
+ slides
378
+ .eq(activeSlide)
379
+ .css({"left": orbitWidth, "z-index" : 3})
380
+ .animate({"left" : 0}, options.animationSpeed, resetAndUnlock);
381
+ slides
382
+ .eq(prevActiveSlide)
383
+ .animate({"left" : -orbitWidth}, options.animationSpeed);
384
+ }
385
+ if(slideDirection == "prev") {
386
+ slides
387
+ .eq(activeSlide)
388
+ .css({"left": -orbitWidth, "z-index" : 3})
389
+ .animate({"left" : 0}, options.animationSpeed, resetAndUnlock);
390
+ slides
391
+ .eq(prevActiveSlide)
392
+ .animate({"left" : orbitWidth}, options.animationSpeed);
393
+ }
394
+ }
395
+ setCaption();
396
+ } //lock
397
+ }//orbit function
398
+ });//each call
399
+ }//orbit plugin call
400
+ })(jQuery);
401
+