zurb-foundation 2.2.0.2 → 2.2.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.
@@ -21,6 +21,6 @@ Gem::Specification.new do |s|
21
21
  # specify any dependencies here; for example:
22
22
  # s.add_development_dependency "rspec"
23
23
  # s.add_runtime_dependency "rest-client"
24
- s.add_runtime_dependency "rails", "~> 3.1"
24
+ s.add_runtime_dependency "railties", ">= 3.1.0", "< 4.0"
25
25
  s.add_runtime_dependency "jquery-rails", ">= 1.0"
26
26
  end
@@ -1,4 +1,4 @@
1
1
  module Foundation
2
- COMMIT = "add28ff4b81fa1f2e2ed116fd46e44b8aa17acb7"
3
- VERSION = "2.2.0.2"
2
+ COMMIT = "e9d5d8f5267b5d2db23cb74fb307fe149913ca14"
3
+ VERSION = "2.2.1.0"
4
4
  end
@@ -8,12 +8,15 @@ jQuery(document).ready(function ($) {
8
8
  function activateTab($tab) {
9
9
  var $activeTab = $tab.closest('dl').find('a.active'),
10
10
  contentLocation = $tab.attr("href") + 'Tab';
11
+
12
+ // Strip off the current url that IE adds
13
+ contentLocation = contentLocation.replace(/^.+#/, '#');
11
14
 
12
15
  //Make Tab Active
13
16
  $activeTab.removeClass('active');
14
17
  $tab.addClass('active');
15
18
 
16
- //Show Tab Content
19
+ //Show Tab Content
17
20
  $(contentLocation).closest('.tabs-content').children('li').hide();
18
21
  $(contentLocation).css('display', 'block');
19
22
  }
@@ -28,6 +31,7 @@ jQuery(document).ready(function ($) {
28
31
 
29
32
  if (window.location.hash) {
30
33
  activateTab($('a[href="' + window.location.hash + '"]'));
34
+ $.foundation.customForms.appendCustomMarkup();
31
35
  }
32
36
 
33
37
  /* ALERT BOXES ------------ */
@@ -90,7 +94,6 @@ jQuery(document).ready(function ($) {
90
94
  /* DISABLED BUTTONS ------------- */
91
95
  /* Gives elements with a class of 'disabled' a return: false; */
92
96
 
93
-
94
97
  });
95
98
 
96
99
 
@@ -6,6 +6,9 @@
6
6
  * http://www.opensource.org/licenses/mit-license.php
7
7
  */
8
8
 
9
+ jQuery.foundation = jQuery.foundation || {};
10
+ jQuery.foundation.customForms = jQuery.foundation.customForms || {};
11
+
9
12
  jQuery(document).ready(function ($) {
10
13
 
11
14
  function appendCustomMarkup(type) {
@@ -22,8 +25,6 @@ jQuery(document).ready(function ($) {
22
25
  $span.toggleClass('disabled', $this.is(':disabled'));
23
26
  });
24
27
  }
25
- appendCustomMarkup('checkbox');
26
- appendCustomMarkup('radio');
27
28
 
28
29
  function appendCustomSelect(sel) {
29
30
  var $this = $(sel),
@@ -32,6 +33,7 @@ jQuery(document).ready(function ($) {
32
33
  maxWidth = 0,
33
34
  $li;
34
35
 
36
+ if ($this.hasClass('no-custom')) { return; }
35
37
  if ($customSelect.length === 0) {
36
38
  $customSelectSize = '';
37
39
  if ($(sel).hasClass('small')) {
@@ -71,6 +73,9 @@ jQuery(document).ready(function ($) {
71
73
  }
72
74
  });
73
75
 
76
+ $customSelect.css('width', 'inherit');
77
+ $customSelect.find('ul').css('width', 'inherit');
78
+
74
79
  $customSelect.find('li').each(function () {
75
80
  $customSelect.addClass('open');
76
81
  if ($(this).outerWidth() > maxWidth) {
@@ -85,11 +90,17 @@ jQuery(document).ready(function ($) {
85
90
  }
86
91
 
87
92
  }
88
-
89
- $('form.custom select').each(function () {
90
- appendCustomSelect(this);
91
- });
92
93
 
94
+ $.foundation.customForms.appendCustomMarkup = function () {
95
+ appendCustomMarkup('checkbox');
96
+ appendCustomMarkup('radio');
97
+
98
+ $('form.custom select').each(function () {
99
+ appendCustomSelect(this);
100
+ });
101
+ };
102
+
103
+ $.foundation.customForms.appendCustomMarkup();
93
104
  });
94
105
 
95
106
  (function ($) {
@@ -144,13 +155,15 @@ jQuery(document).ready(function ($) {
144
155
  var $input = $element.prev(),
145
156
  input = $input[0];
146
157
 
147
- $('input:radio[name="' + $input.attr('name') + '"]').each(function () {
148
- $(this).next().removeClass('checked');
149
- });
150
- input.checked = ((input.checked) ? false : true);
151
- $element.toggleClass('checked');
158
+ if (false == $input.is(':disabled')) {
159
+ $('input:radio[name="' + $input.attr('name') + '"]').each(function () {
160
+ $(this).next().removeClass('checked');
161
+ });
162
+ input.checked = ((input.checked) ? false : true);
163
+ $element.toggleClass('checked');
152
164
 
153
- $input.trigger('change');
165
+ $input.trigger('change');
166
+ }
154
167
  }
155
168
 
156
169
  $('form.custom span.custom.checkbox').live('click', function (event) {
@@ -8,21 +8,21 @@
8
8
 
9
9
 
10
10
  (function($) {
11
-
11
+
12
12
  $.fn.findFirstImage = function () {
13
13
  return this.first()
14
14
  .find('img')
15
15
  .andSelf().filter('img')
16
16
  .first();
17
17
  };
18
-
18
+
19
19
  var ORBIT = {
20
-
21
- defaults: {
20
+
21
+ defaults: {
22
22
  animation: 'horizontal-push', // fade, horizontal-slide, vertical-slide, horizontal-push, vertical-push
23
23
  animationSpeed: 600, // how fast animtions are
24
24
  timer: true, // true or false to have the timer
25
- advanceSpeed: 4000, // if timer is enabled, time between transitions
25
+ advanceSpeed: 4000, // if timer is enabled, time between transitions
26
26
  pauseOnHover: false, // if you hover pauses the slider
27
27
  startClockOnMouseOut: false, // if clock should start on MouseOut
28
28
  startClockOnMouseOutAfter: 1000, // how long after MouseOut should the timer start again
@@ -32,14 +32,16 @@
32
32
  captions: true, // do you want captions?
33
33
  captionAnimation: 'fade', // fade, slideOpen, none
34
34
  captionAnimationSpeed: 600, // if so how quickly should they animate in
35
+ resetTimerOnClick: false, // true resets the timer instead of pausing slideshow progress on manual navigation
35
36
  bullets: false, // true or false to activate the bullet navigation
36
37
  bulletThumbs: false, // thumbnails for the bullets
37
38
  bulletThumbLocation: '', // location from this file where thumbs will be
38
- afterSlideChange: $.noop, // empty function
39
+ afterSlideChange: $.noop, // empty function
40
+ afterLoadComplete: $.noop, //callback to execute after everything has been loaded
39
41
  fluid: true,
40
42
  centerBullets: true // center bullet nav with js, turn this off if you want to position the bullet nav manually
41
43
  },
42
-
44
+
43
45
  activeSlide: 0,
44
46
  numberSlides: 0,
45
47
  orbitWidth: null,
@@ -52,12 +54,12 @@
52
54
  captionHTML: '<div class="orbit-caption"></div>',
53
55
  directionalNavHTML: '<div class="slider-nav"><span class="right"></span><span class="left"></span></div>',
54
56
  bulletHTML: '<ul class="orbit-bullets"></ul>',
55
-
57
+
56
58
  init: function (element, options) {
57
59
  var $imageSlides,
58
60
  imagesLoadedCount = 0,
59
61
  self = this;
60
-
62
+
61
63
  // Bind functions to correct context
62
64
  this.clickTimer = $.proxy(this.clickTimer, this);
63
65
  this.addBullet = $.proxy(this.addBullet, this);
@@ -66,38 +68,38 @@
66
68
  this.startTimerAfterMouseLeave = $.proxy(this.startTimerAfterMouseLeave, this);
67
69
  this.clearClockMouseLeaveTimer = $.proxy(this.clearClockMouseLeaveTimer, this);
68
70
  this.rotateTimer = $.proxy(this.rotateTimer, this);
69
-
71
+
70
72
  this.options = $.extend({}, this.defaults, options);
71
73
  if (this.options.timer === 'false') this.options.timer = false;
72
74
  if (this.options.captions === 'false') this.options.captions = false;
73
75
  if (this.options.directionalNav === 'false') this.options.directionalNav = false;
74
-
76
+
75
77
  this.$element = $(element);
76
78
  this.$wrapper = this.$element.wrap(this.wrapperHTML).parent();
77
79
  this.$slides = this.$element.children('img, a, div');
78
-
80
+
79
81
  this.$element.bind('orbit.next', function () {
80
82
  self.shift('next');
81
83
  });
82
-
84
+
83
85
  this.$element.bind('orbit.prev', function () {
84
86
  self.shift('prev');
85
87
  });
86
-
88
+
87
89
  this.$element.bind('orbit.goto', function (event, index) {
88
90
  self.shift(index);
89
91
  });
90
-
92
+
91
93
  this.$element.bind('orbit.start', function (event, index) {
92
94
  self.startClock();
93
95
  });
94
-
96
+
95
97
  this.$element.bind('orbit.stop', function (event, index) {
96
98
  self.stopClock();
97
99
  });
98
-
100
+
99
101
  $imageSlides = this.$slides.filter('img');
100
-
102
+
101
103
  if ($imageSlides.length === 0) {
102
104
  this.loaded();
103
105
  } else {
@@ -109,53 +111,55 @@
109
111
  });
110
112
  }
111
113
  },
112
-
114
+
113
115
  loaded: function () {
114
116
  this.$element
115
117
  .addClass('orbit')
116
118
  .css({width: '1px', height: '1px'});
117
-
119
+
118
120
  this.$slides.addClass('orbit-slide');
119
-
121
+
120
122
  this.setDimentionsFromLargestSlide();
121
123
  this.updateOptionsIfOnlyOneSlide();
122
124
  this.setupFirstSlide();
123
-
125
+
124
126
  if (this.options.timer) {
125
127
  this.setupTimer();
126
128
  this.startClock();
127
129
  }
128
-
130
+
129
131
  if (this.options.captions) {
130
132
  this.setupCaptions();
131
133
  }
132
-
134
+
133
135
  if (this.options.directionalNav) {
134
136
  this.setupDirectionalNav();
135
137
  }
136
-
138
+
137
139
  if (this.options.bullets) {
138
140
  this.setupBulletNav();
139
141
  this.setActiveBullet();
140
142
  }
143
+
144
+ this.options.afterLoadComplete.call(this);
141
145
  },
142
-
146
+
143
147
  currentSlide: function () {
144
148
  return this.$slides.eq(this.activeSlide);
145
149
  },
146
-
150
+
147
151
  setDimentionsFromLargestSlide: function () {
148
152
  //Collect all slides and set slider size of largest image
149
153
  var self = this,
150
154
  $fluidPlaceholder;
151
-
155
+
152
156
  self.$element.add(self.$wrapper).width(this.$slides.first().width());
153
157
  self.$element.add(self.$wrapper).height(this.$slides.first().height());
154
158
  self.orbitWidth = this.$slides.first().width();
155
159
  self.orbitHeight = this.$slides.first().height();
156
160
  $fluidPlaceholder = this.$slides.first().findFirstImage().clone();
157
-
158
-
161
+
162
+
159
163
  this.$slides.each(function () {
160
164
  var slide = $(this),
161
165
  slideWidth = slide.width(),
@@ -163,7 +167,7 @@
163
167
 
164
168
  if (slideWidth > self.$element.width()) {
165
169
  self.$element.add(self.$wrapper).width(slideWidth);
166
- self.orbitWidth = self.$element.width();
170
+ self.orbitWidth = self.$element.width();
167
171
  }
168
172
  if (slideHeight > self.$element.height()) {
169
173
  self.$element.add(self.$wrapper).height(slideHeight);
@@ -172,33 +176,33 @@
172
176
  }
173
177
  self.numberSlides += 1;
174
178
  });
175
-
179
+
176
180
  if (this.options.fluid) {
177
181
  if (typeof this.options.fluid === "string") {
178
182
  $fluidPlaceholder = $('<img src="http://placehold.it/' + this.options.fluid + '" />')
179
183
  }
180
-
184
+
181
185
  self.$element.prepend($fluidPlaceholder);
182
186
  $fluidPlaceholder.addClass('fluid-placeholder');
183
187
  self.$element.add(self.$wrapper).css({width: 'inherit'});
184
188
  self.$element.add(self.$wrapper).css({height: 'inherit'});
185
-
189
+
186
190
  $(window).bind('resize', function () {
187
191
  self.orbitWidth = self.$element.width();
188
192
  self.orbitHeight = self.$element.height();
189
193
  });
190
194
  }
191
195
  },
192
-
196
+
193
197
  //Animation locking functions
194
198
  lock: function () {
195
199
  this.locked = true;
196
200
  },
197
-
198
- unlock: function () {
201
+
202
+ unlock: function () {
199
203
  this.locked = false;
200
204
  },
201
-
205
+
202
206
  updateOptionsIfOnlyOneSlide: function () {
203
207
  if(this.$slides.length === 1) {
204
208
  this.options.directionalNav = false;
@@ -206,7 +210,7 @@
206
210
  this.options.bullets = false;
207
211
  }
208
212
  },
209
-
213
+
210
214
  setupFirstSlide: function () {
211
215
  //Set initial front photo z-index and fades it in
212
216
  var self = this;
@@ -217,29 +221,29 @@
217
221
  self.$slides.css({"display":"block"})
218
222
  });
219
223
  },
220
-
224
+
221
225
  startClock: function () {
222
226
  var self = this;
223
-
224
- if(!this.options.timer) {
227
+
228
+ if(!this.options.timer) {
225
229
  return false;
226
- }
230
+ }
227
231
 
228
232
  if (this.$timer.is(':hidden')) {
229
233
  this.clock = setInterval(function () {
230
234
  self.$element.trigger('orbit.next');
231
- }, this.options.advanceSpeed);
235
+ }, this.options.advanceSpeed);
232
236
  } else {
233
237
  this.timerRunning = true;
234
238
  this.$pause.removeClass('active')
235
239
  this.clock = setInterval(this.rotateTimer, this.options.advanceSpeed / 180);
236
240
  }
237
241
  },
238
-
239
- rotateTimer: function () {
242
+
243
+ rotateTimer: function (reset) {
240
244
  var degreeCSS = "rotate(" + this.degrees + "deg)"
241
245
  this.degrees += 2;
242
- this.$rotator.css({
246
+ this.$rotator.css({
243
247
  "-webkit-transform": degreeCSS,
244
248
  "-moz-transform": degreeCSS,
245
249
  "-o-transform": degreeCSS
@@ -248,24 +252,24 @@
248
252
  this.$rotator.addClass('move');
249
253
  this.$mask.addClass('move');
250
254
  }
251
- if(this.degrees > 360) {
255
+ if(this.degrees > 360 || reset) {
252
256
  this.$rotator.removeClass('move');
253
257
  this.$mask.removeClass('move');
254
258
  this.degrees = 0;
255
259
  this.$element.trigger('orbit.next');
256
260
  }
257
261
  },
258
-
262
+
259
263
  stopClock: function () {
260
- if (!this.options.timer) {
261
- return false;
264
+ if (!this.options.timer) {
265
+ return false;
262
266
  } else {
263
267
  this.timerRunning = false;
264
268
  clearInterval(this.clock);
265
269
  this.$pause.addClass('active');
266
270
  }
267
271
  },
268
-
272
+
269
273
  setupTimer: function () {
270
274
  this.$timer = $(this.timerHTML);
271
275
  this.$wrapper.append(this.$timer);
@@ -273,19 +277,19 @@
273
277
  this.$rotator = this.$timer.find('.rotator');
274
278
  this.$mask = this.$timer.find('.mask');
275
279
  this.$pause = this.$timer.find('.pause');
276
-
280
+
277
281
  this.$timer.click(this.clickTimer);
278
282
 
279
283
  if (this.options.startClockOnMouseOut) {
280
284
  this.$wrapper.mouseleave(this.startTimerAfterMouseLeave);
281
285
  this.$wrapper.mouseenter(this.clearClockMouseLeaveTimer);
282
286
  }
283
-
287
+
284
288
  if (this.options.pauseOnHover) {
285
289
  this.$wrapper.mouseenter(this.stopClock);
286
290
  }
287
291
  },
288
-
292
+
289
293
  startTimerAfterMouseLeave: function () {
290
294
  var self = this;
291
295
 
@@ -295,39 +299,39 @@
295
299
  }
296
300
  }, this.options.startClockOnMouseOutAfter)
297
301
  },
298
-
302
+
299
303
  clearClockMouseLeaveTimer: function () {
300
304
  clearTimeout(this.outTimer);
301
305
  },
302
-
306
+
303
307
  clickTimer: function () {
304
308
  if(!this.timerRunning) {
305
309
  this.startClock();
306
- } else {
310
+ } else {
307
311
  this.stopClock();
308
312
  }
309
313
  },
310
-
314
+
311
315
  setupCaptions: function () {
312
316
  this.$caption = $(this.captionHTML);
313
317
  this.$wrapper.append(this.$caption);
314
318
  this.setCaption();
315
319
  },
316
-
320
+
317
321
  setCaption: function () {
318
322
  var captionLocation = this.currentSlide().attr('data-caption'),
319
323
  captionHTML;
320
-
324
+
321
325
  if (!this.options.captions) {
322
- return false;
323
- }
324
-
326
+ return false;
327
+ }
328
+
325
329
  //Set HTML for the caption if it exists
326
330
  if (captionLocation) {
327
331
  captionHTML = $(captionLocation).html(); //get HTML from the matching HTML entity
328
332
  this.$caption
329
333
  .attr('id', captionLocation) // Add ID caption TODO why is the id being set?
330
- .html(captionHTML); // Change HTML in Caption
334
+ .html(captionHTML); // Change HTML in Caption
331
335
  //Animations for Caption entrances
332
336
  switch (this.options.captionAnimation) {
333
337
  case 'none':
@@ -355,27 +359,35 @@
355
359
  }
356
360
  }
357
361
  },
358
-
362
+
359
363
  setupDirectionalNav: function () {
360
364
  var self = this,
361
365
  $directionalNav = $(this.directionalNavHTML);
362
-
366
+
363
367
  $directionalNav.find('.right').html(this.options.directionalNavRightText);
364
368
  $directionalNav.find('.left').html(this.options.directionalNavLeftText);
365
369
 
366
370
  this.$wrapper.append($directionalNav);
367
-
368
- this.$wrapper.find('.left').click(function () {
371
+
372
+ this.$wrapper.find('.left').click(function () {
369
373
  self.stopClock();
374
+ if (self.options.resetTimerOnClick) {
375
+ self.rotateTimer(true);
376
+ self.startClock();
377
+ }
370
378
  self.$element.trigger('orbit.prev');
371
379
  });
372
-
380
+
373
381
  this.$wrapper.find('.right').click(function () {
374
382
  self.stopClock();
383
+ if (self.options.resetTimerOnClick) {
384
+ self.rotateTimer(true);
385
+ self.startClock();
386
+ }
375
387
  self.$element.trigger('orbit.next');
376
388
  });
377
389
  },
378
-
390
+
379
391
  setupBulletNav: function () {
380
392
  this.$bullets = $(this.bulletHTML);
381
393
  this.$wrapper.append(this.$bullets);
@@ -383,7 +395,7 @@
383
395
  this.$element.addClass('with-bullets');
384
396
  if (this.options.centerBullets) this.$bullets.css('margin-left', -this.$bullets.width() / 2);
385
397
  },
386
-
398
+
387
399
  addBullet: function (index, slide) {
388
400
  var position = index + 1,
389
401
  $li = $('<li>' + (position) + '</li>'),
@@ -402,10 +414,14 @@
402
414
  $li.data('index', index);
403
415
  $li.click(function () {
404
416
  self.stopClock();
417
+ if (self.options.resetTimerOnClick) {
418
+ self.rotateTimer(true);
419
+ self.startClock();
420
+ }
405
421
  self.$element.trigger('orbit.goto', [$li.data('index')])
406
422
  });
407
423
  },
408
-
424
+
409
425
  setActiveBullet: function () {
410
426
  if(!this.options.bullets) { return false; } else {
411
427
  this.$bullets.find('li')
@@ -414,7 +430,7 @@
414
430
  .addClass('active');
415
431
  }
416
432
  },
417
-
433
+
418
434
  resetAndUnlock: function () {
419
435
  this.$slides
420
436
  .eq(this.prevActiveSlide)
@@ -422,16 +438,16 @@
422
438
  this.unlock();
423
439
  this.options.afterSlideChange.call(this, this.$slides.eq(this.prevActiveSlide), this.$slides.eq(this.activeSlide));
424
440
  },
425
-
441
+
426
442
  shift: function (direction) {
427
443
  var slideDirection = direction;
428
-
444
+
429
445
  //remember previous activeSlide
430
446
  this.prevActiveSlide = this.activeSlide;
431
-
447
+
432
448
  //exit function if bullet clicked is same as the current image
433
449
  if (this.prevActiveSlide == slideDirection) { return false; }
434
-
450
+
435
451
  if (this.$slides.length == "1") { return false; }
436
452
  if (!this.locked) {
437
453
  this.lock();
@@ -448,21 +464,21 @@
448
464
  }
449
465
  } else {
450
466
  this.activeSlide = direction;
451
- if (this.prevActiveSlide < this.activeSlide) {
467
+ if (this.prevActiveSlide < this.activeSlide) {
452
468
  slideDirection = "next";
453
- } else if (this.prevActiveSlide > this.activeSlide) {
469
+ } else if (this.prevActiveSlide > this.activeSlide) {
454
470
  slideDirection = "prev"
455
471
  }
456
472
  }
457
473
 
458
474
  //set to correct bullet
459
- this.setActiveBullet();
460
-
475
+ this.setActiveBullet();
476
+
461
477
  //set previous slide z-index to one below what new activeSlide will be
462
478
  this.$slides
463
479
  .eq(this.prevActiveSlide)
464
- .css({"z-index" : 2});
465
-
480
+ .css({"z-index" : 2});
481
+
466
482
  //fade
467
483
  if (this.options.animation == "fade") {
468
484
  this.$slides
@@ -470,7 +486,7 @@
470
486
  .css({"opacity" : 0, "z-index" : 3})
471
487
  .animate({"opacity" : 1}, this.options.animationSpeed, this.resetAndUnlock);
472
488
  }
473
-
489
+
474
490
  //horizontal-slide
475
491
  if (this.options.animation == "horizontal-slide") {
476
492
  if (slideDirection == "next") {
@@ -486,9 +502,9 @@
486
502
  .animate({"left" : 0}, this.options.animationSpeed, this.resetAndUnlock);
487
503
  }
488
504
  }
489
-
505
+
490
506
  //vertical-slide
491
- if (this.options.animation == "vertical-slide") {
507
+ if (this.options.animation == "vertical-slide") {
492
508
  if (slideDirection == "prev") {
493
509
  this.$slides
494
510
  .eq(this.activeSlide)
@@ -502,7 +518,7 @@
502
518
  .animate({"top" : 0}, this.options.animationSpeed, this.resetAndUnlock);
503
519
  }
504
520
  }
505
-
521
+
506
522
  //horizontal-push
507
523
  if (this.options.animation == "horizontal-push") {
508
524
  if (slideDirection == "next") {
@@ -524,7 +540,7 @@
524
540
  .animate({"left" : this.orbitWidth}, this.options.animationSpeed);
525
541
  }
526
542
  }
527
-
543
+
528
544
  //vertical-push
529
545
  if (this.options.animation == "vertical-push") {
530
546
  if (slideDirection == "next") {
@@ -546,7 +562,7 @@
546
562
  .animate({top : -this.orbitHeight}, this.options.animationSpeed);
547
563
  }
548
564
  }
549
-
565
+
550
566
  this.setCaption();
551
567
  }
552
568
  }
@@ -560,7 +576,7 @@
560
576
  };
561
577
 
562
578
  })(jQuery);
563
-
579
+
564
580
  /*!
565
581
  * jQuery imageready Plugin
566
582
  * http://www.zurb.com/playground/
@@ -569,19 +585,19 @@
569
585
  * Released under the MIT License
570
586
  */
571
587
  (function ($) {
572
-
588
+
573
589
  var options = {};
574
-
590
+
575
591
  $.event.special.imageready = {
576
-
592
+
577
593
  setup: function (data, namespaces, eventHandle) {
578
594
  options = data || options;
579
595
  },
580
-
596
+
581
597
  add: function (handleObj) {
582
598
  var $this = $(this),
583
599
  src;
584
-
600
+
585
601
  if ( this.nodeType === 1 && this.tagName.toLowerCase() === 'img' && this.src !== '' ) {
586
602
  if (options.forceLoad) {
587
603
  src = $this.attr('src');
@@ -595,12 +611,12 @@
595
611
  }
596
612
  }
597
613
  },
598
-
614
+
599
615
  teardown: function (namespaces) {
600
616
  $(this).unbind('.imageready');
601
617
  }
602
618
  };
603
-
619
+
604
620
  function bindToLoad(element, callback) {
605
621
  var $this = $(element);
606
622
 
@@ -612,3 +628,4 @@
612
628
 
613
629
  }(jQuery));
614
630
 
631
+
@@ -33,6 +33,12 @@
33
33
  input.medium, textarea.medium { width: 254px; }
34
34
  input.large, textarea.large { width: 434px; }
35
35
  input.expand, textarea.expand { width: 100%; }
36
+
37
+ /* Lock textareas so they can't be resized beyond their set width in webkit */
38
+ textarea.locked { max-width: 254px; }
39
+ textarea.locked.small { max-width: 134px; }
40
+ textarea.locked.large { max-width: 434px; }
41
+ textarea.locked.expand { max-width: 100%; }
36
42
 
37
43
  /* Fieldsets */
38
44
  form fieldset { padding: 9px 9px 2px 9px; border: solid 1px #ddd; margin: 18px 0; }
@@ -89,7 +95,7 @@
89
95
  form.custom span.custom.checkbox.checked { background-position: 0 -28px; }
90
96
 
91
97
  form.custom div.custom.dropdown { display: block; position: relative; width: auto; height: 28px; margin-bottom: 9px; margin-top: 2px; }
92
- form.custom div.custom.dropdown a.current { display: block; width: auto; line-height: 26px; min-height: 26px; padding: 0 38px 0 6px; border: solid 1px #ddd; color: #141414; background-color: #fff; }
98
+ form.custom div.custom.dropdown a.current { display: block; width: auto; line-height: 26px; min-height: 26px; padding: 0 38px 0 6px; border: solid 1px #ddd; color: #141414; background-color: #fff; word-wrap: nowrap; }
93
99
  form.custom div.custom.dropdown a.selector { position: absolute; width: 26px; height: 26px; display: block; background: image-url("foundation/misc/custom-form-sprites.png") -14px 1px no-repeat; right: 0; top: 0; border: solid 1px #ddd; }
94
100
  form.custom div.custom.dropdown:hover a.selector,
95
101
  form.custom div.custom.dropdown.open a.selector { background-position: -14px -26px; }
@@ -71,7 +71,7 @@
71
71
  sub {vertical-align: sub;}
72
72
  sup {vertical-align: super;}
73
73
 
74
- body { background: #fff; font-family: "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 13px; line-height: 18px; color: #555; position: relative; -webkit-font-smoothing: antialiased; }
74
+ body { background: #fff; font-family: "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 13px; font-size: 1.3rem; line-height: 18px; color: #555; position: relative; -webkit-font-smoothing: antialiased; }
75
75
 
76
76
 
77
77
 
@@ -17,6 +17,7 @@
17
17
  .column, .columns { margin-left: 4.4%; float: left; min-height: 1px; position: relative; }
18
18
  .column:first-child, .columns:first-child { margin-left: 0; }
19
19
  [class*="column"] + [class*="column"]:last-child { float: right; }
20
+ [class*="column"] + [class*="column"].end { float: left; }
20
21
 
21
22
  .row .one { width: 4.3%; }
22
23
  .row .two { width: 13%; }
@@ -109,19 +110,19 @@
109
110
  .block-grid>li { display: block; height: auto; float: left; }
110
111
 
111
112
  .block-grid.two-up { margin-left: -4% }
112
- .block-grid.two-up>li { margin-left: 4%; width: 46%; }
113
+ .block-grid.two-up>li { margin-left: 4%; width: 46%; margin-bottom: 4%;}
113
114
  /* .block-grid.two-up>li:nth-child(2n+1) {clear: left;} */
114
115
 
115
116
  .block-grid.three-up { margin-left: -2% }
116
- .block-grid.three-up>li { margin-left: 2%; width: 31.3%; }
117
+ .block-grid.three-up>li { margin-left: 2%; width: 31.3%; margin-bottom: 2%;}
117
118
  /* .block-grid.three-up>li:nth-child(3n+1) {clear: left;} */
118
119
 
119
120
  .block-grid.four-up { margin-left: -2% }
120
- .block-grid.four-up>li { margin-left: 2%; width: 23%; }
121
+ .block-grid.four-up>li { margin-left: 2%; width: 23%; margin-bottom: 2%;}
121
122
  /* .block-grid.four-up>li:nth-child(4n+1) {clear: left;} */
122
123
 
123
124
  .block-grid.five-up { margin-left: -1.5% }
124
- .block-grid.five-up>li { margin-left: 1.5%; width: 18.5%; }
125
+ .block-grid.five-up>li { margin-left: 1.5%; width: 18.5%; margin-bottom: 1.5%;}
125
126
  /* .block-grid.five-up>li:nth-child(5n+1) {clear: left;} */
126
127
 
127
128
 
@@ -26,8 +26,8 @@
26
26
  .column, .columns { width: auto !important; float: none; margin-left: 0; margin-right: 0; }
27
27
  .column:last-child, .columns:last-child { margin-right: 0; float: none; }
28
28
  [class*="column"] + [class*="column"]:last-child { float: none; }
29
- [class*="column"]:before, [class*="column"]:after { content:""; display:table; }
30
- [class*="column"]:after { clear: both; }
29
+ .column:before, .columns:before, .column:after, .columns:after { content:""; display:table; }
30
+ .column:after, .columns:after { clear: both; }
31
31
 
32
32
  .offset-by-one, .offset-by-two, .offset-by-three, .offset-by-four, .offset-by-five, .offset-by-six, .offset-by-seven, .offset-by-eight, .offset-by-nine, .offset-by-ten, .offset-by-eleven, .centered { margin-left: 0 !important; }
33
33
 
@@ -174,6 +174,12 @@
174
174
 
175
175
  /* Nav Bar */
176
176
 
177
+ /* Modernizr-enabled tablet targeting */
178
+ @media only screen and (max-width: 1280px) and (min-width: 768px) {
179
+ .touch .nav-bar li a { font-size: 13px; font-size: 1.3rem; }
180
+ .touch .nav-bar li.has-flyout>a.flyout-toggle { padding: 20px; }
181
+ }
182
+
177
183
  @media only screen and (max-width: 767px) {
178
184
  .nav-bar { height: auto; }
179
185
  .nav-bar>li { float: none; display: block; border-right: none; }
@@ -224,4 +224,9 @@ ul.orbit-bullets li.active {
224
224
  ul.orbit-bullets li.active.has-thumb {
225
225
  background-position: 0 0;
226
226
  border-top: 2px solid #000; }
227
+
228
+
229
+ /* Correct timer in IE */
230
+ .timer { display: none !important; }
231
+ div.caption { background:transparent; filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000,endColorstr=#99000000);zoom: 1; }
227
232
 
@@ -227,7 +227,7 @@
227
227
  ul.breadcrumbs li a, ul.breadcrumbs li span { text-transform: uppercase; font-size: 11px; padding-left: 12px; }
228
228
  ul.breadcrumbs li:first-child a, ul.breadcrumbs li:first-child span { padding-left: 0; }
229
229
  ul.breadcrumbs li:before { content: "/"; color: #aaa; }
230
- ul.breadcrumbs li:first-child:before { content: ""; }
230
+ ul.breadcrumbs li:first-child:before { content: " "; }
231
231
  ul.breadcrumbs li.current a { cursor: default; color: #333; }
232
232
  ul.breadcrumbs li:hover a, ul.breadcrumbs li a:focus { text-decoration: underline; }
233
233
  ul.breadcrumbs li.current:hover a, ul.breadcrumbs li.current a:focus { text-decoration: none; }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zurb-foundation
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0.2
4
+ version: 2.2.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,25 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-05 00:00:00.000000000Z
12
+ date: 2012-04-10 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rails
16
- requirement: &70290791276940 !ruby/object:Gem::Requirement
15
+ name: railties
16
+ requirement: &70095506911960 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ~>
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 3.1.0
22
+ - - <
20
23
  - !ruby/object:Gem::Version
21
- version: '3.1'
24
+ version: '4.0'
22
25
  type: :runtime
23
26
  prerelease: false
24
- version_requirements: *70290791276940
27
+ version_requirements: *70095506911960
25
28
  - !ruby/object:Gem::Dependency
26
29
  name: jquery-rails
27
- requirement: &70290791276260 !ruby/object:Gem::Requirement
30
+ requirement: &70095506911000 !ruby/object:Gem::Requirement
28
31
  none: false
29
32
  requirements:
30
33
  - - ! '>='
@@ -32,7 +35,7 @@ dependencies:
32
35
  version: '1.0'
33
36
  type: :runtime
34
37
  prerelease: false
35
- version_requirements: *70290791276260
38
+ version_requirements: *70095506911000
36
39
  description: An easy to use, powerful, and flexible framework for building prototypes
37
40
  and production code on any kind of device.
38
41
  email:
@@ -105,7 +108,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
105
108
  version: '0'
106
109
  segments:
107
110
  - 0
108
- hash: -2580547679821653579
111
+ hash: 2326784064139831020
109
112
  required_rubygems_version: !ruby/object:Gem::Requirement
110
113
  none: false
111
114
  requirements:
@@ -114,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
117
  version: '0'
115
118
  segments:
116
119
  - 0
117
- hash: -2580547679821653579
120
+ hash: 2326784064139831020
118
121
  requirements: []
119
122
  rubyforge_project: foundation
120
123
  rubygems_version: 1.8.10