serveall 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/public/404.html +59 -0
- data/lib/public/foundation.css +5333 -0
- data/lib/public/foundation.js +416 -0
- data/lib/public/index.html +4 -4
- data/lib/public/jquery.js +8829 -0
- data/lib/public/modernizr.js +4 -0
- data/lib/serveall/version.rb +1 -1
- data/lib/serveall.rb +32 -36
- data/public/404.html +59 -0
- data/public/foundation.css +5333 -0
- data/public/foundation.js +416 -0
- data/public/index.html +4 -4
- data/public/jquery.js +8829 -0
- data/public/modernizr.js +4 -0
- metadata +12 -2
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Foundation Responsive Library
|
|
3
|
+
* http://foundation.zurb.com
|
|
4
|
+
* Copyright 2013, ZURB
|
|
5
|
+
* Free to use under the MIT license.
|
|
6
|
+
* http://www.opensource.org/licenses/mit-license.php
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
(function ($, window, document, undefined) {
|
|
10
|
+
'use strict';
|
|
11
|
+
|
|
12
|
+
// Used to retrieve Foundation media queries from CSS.
|
|
13
|
+
if($('head').has('.foundation-mq-small').length === 0) {
|
|
14
|
+
$('head').append('<meta class="foundation-mq-small">');
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if($('head').has('.foundation-mq-medium').length === 0) {
|
|
18
|
+
$('head').append('<meta class="foundation-mq-medium">');
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if($('head').has('.foundation-mq-large').length === 0) {
|
|
22
|
+
$('head').append('<meta class="foundation-mq-large">');
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if($('head').has('.foundation-mq-xlarge').length === 0) {
|
|
26
|
+
$('head').append('<meta class="foundation-mq-xlarge">');
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if($('head').has('.foundation-mq-xxlarge').length === 0) {
|
|
30
|
+
$('head').append('<meta class="foundation-mq-xxlarge">');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Embed FastClick (this should be removed later)
|
|
34
|
+
function FastClick(layer){'use strict';var oldOnClick,self=this;this.trackingClick=false;this.trackingClickStart=0;this.targetElement=null;this.touchStartX=0;this.touchStartY=0;this.lastTouchIdentifier=0;this.touchBoundary=10;this.layer=layer;if(!layer||!layer.nodeType){throw new TypeError('Layer must be a document node');}this.onClick=function(){return FastClick.prototype.onClick.apply(self,arguments)};this.onMouse=function(){return FastClick.prototype.onMouse.apply(self,arguments)};this.onTouchStart=function(){return FastClick.prototype.onTouchStart.apply(self,arguments)};this.onTouchMove=function(){return FastClick.prototype.onTouchMove.apply(self,arguments)};this.onTouchEnd=function(){return FastClick.prototype.onTouchEnd.apply(self,arguments)};this.onTouchCancel=function(){return FastClick.prototype.onTouchCancel.apply(self,arguments)};if(FastClick.notNeeded(layer)){return}if(this.deviceIsAndroid){layer.addEventListener('mouseover',this.onMouse,true);layer.addEventListener('mousedown',this.onMouse,true);layer.addEventListener('mouseup',this.onMouse,true)}layer.addEventListener('click',this.onClick,true);layer.addEventListener('touchstart',this.onTouchStart,false);layer.addEventListener('touchmove',this.onTouchMove,false);layer.addEventListener('touchend',this.onTouchEnd,false);layer.addEventListener('touchcancel',this.onTouchCancel,false);if(!Event.prototype.stopImmediatePropagation){layer.removeEventListener=function(type,callback,capture){var rmv=Node.prototype.removeEventListener;if(type==='click'){rmv.call(layer,type,callback.hijacked||callback,capture)}else{rmv.call(layer,type,callback,capture)}};layer.addEventListener=function(type,callback,capture){var adv=Node.prototype.addEventListener;if(type==='click'){adv.call(layer,type,callback.hijacked||(callback.hijacked=function(event){if(!event.propagationStopped){callback(event)}}),capture)}else{adv.call(layer,type,callback,capture)}}}if(typeof layer.onclick==='function'){oldOnClick=layer.onclick;layer.addEventListener('click',function(event){oldOnClick(event)},false);layer.onclick=null}}FastClick.prototype.deviceIsAndroid=navigator.userAgent.indexOf('Android')>0;FastClick.prototype.deviceIsIOS=/iP(ad|hone|od)/.test(navigator.userAgent);FastClick.prototype.deviceIsIOS4=FastClick.prototype.deviceIsIOS&&(/OS 4_\d(_\d)?/).test(navigator.userAgent);FastClick.prototype.deviceIsIOSWithBadTarget=FastClick.prototype.deviceIsIOS&&(/OS ([6-9]|\d{2})_\d/).test(navigator.userAgent);FastClick.prototype.needsClick=function(target){'use strict';switch(target.nodeName.toLowerCase()){case'button':case'select':case'textarea':if(target.disabled){return true}break;case'input':if((this.deviceIsIOS&&target.type==='file')||target.disabled){return true}break;case'label':case'video':return true}return(/\bneedsclick\b/).test(target.className)};FastClick.prototype.needsFocus=function(target){'use strict';switch(target.nodeName.toLowerCase()){case'textarea':case'select':return true;case'input':switch(target.type){case'button':case'checkbox':case'file':case'image':case'radio':case'submit':return false}return!target.disabled&&!target.readOnly;default:return(/\bneedsfocus\b/).test(target.className)}};FastClick.prototype.sendClick=function(targetElement,event){'use strict';var clickEvent,touch;if(document.activeElement&&document.activeElement!==targetElement){document.activeElement.blur()}touch=event.changedTouches[0];clickEvent=document.createEvent('MouseEvents');clickEvent.initMouseEvent('click',true,true,window,1,touch.screenX,touch.screenY,touch.clientX,touch.clientY,false,false,false,false,0,null);clickEvent.forwardedTouchEvent=true;targetElement.dispatchEvent(clickEvent)};FastClick.prototype.focus=function(targetElement){'use strict';var length;if(this.deviceIsIOS&&targetElement.setSelectionRange){length=targetElement.value.length;targetElement.setSelectionRange(length,length)}else{targetElement.focus()}};FastClick.prototype.updateScrollParent=function(targetElement){'use strict';var scrollParent,parentElement;scrollParent=targetElement.fastClickScrollParent;if(!scrollParent||!scrollParent.contains(targetElement)){parentElement=targetElement;do{if(parentElement.scrollHeight>parentElement.offsetHeight){scrollParent=parentElement;targetElement.fastClickScrollParent=parentElement;break}parentElement=parentElement.parentElement}while(parentElement)}if(scrollParent){scrollParent.fastClickLastScrollTop=scrollParent.scrollTop}};FastClick.prototype.getTargetElementFromEventTarget=function(eventTarget){'use strict';if(eventTarget.nodeType===Node.TEXT_NODE){return eventTarget.parentNode}return eventTarget};FastClick.prototype.onTouchStart=function(event){'use strict';var targetElement,touch,selection;if(event.targetTouches.length>1){return true}targetElement=this.getTargetElementFromEventTarget(event.target);touch=event.targetTouches[0];if(this.deviceIsIOS){selection=window.getSelection();if(selection.rangeCount&&!selection.isCollapsed){return true}if(!this.deviceIsIOS4){if(touch.identifier===this.lastTouchIdentifier){event.preventDefault();return false}this.lastTouchIdentifier=touch.identifier;this.updateScrollParent(targetElement)}}this.trackingClick=true;this.trackingClickStart=event.timeStamp;this.targetElement=targetElement;this.touchStartX=touch.pageX;this.touchStartY=touch.pageY;if((event.timeStamp-this.lastClickTime)<200){event.preventDefault()}return true};FastClick.prototype.touchHasMoved=function(event){'use strict';var touch=event.changedTouches[0],boundary=this.touchBoundary;if(Math.abs(touch.pageX-this.touchStartX)>boundary||Math.abs(touch.pageY-this.touchStartY)>boundary){return true}return false};FastClick.prototype.onTouchMove=function(event){'use strict';if(!this.trackingClick){return true}if(this.targetElement!==this.getTargetElementFromEventTarget(event.target)||this.touchHasMoved(event)){this.trackingClick=false;this.targetElement=null}return true};FastClick.prototype.findControl=function(labelElement){'use strict';if(labelElement.control!==undefined){return labelElement.control}if(labelElement.htmlFor){return document.getElementById(labelElement.htmlFor)}return labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea')};FastClick.prototype.onTouchEnd=function(event){'use strict';var forElement,trackingClickStart,targetTagName,scrollParent,touch,targetElement=this.targetElement;if(!this.trackingClick){return true}if((event.timeStamp-this.lastClickTime)<200){this.cancelNextClick=true;return true}this.lastClickTime=event.timeStamp;trackingClickStart=this.trackingClickStart;this.trackingClick=false;this.trackingClickStart=0;if(this.deviceIsIOSWithBadTarget){touch=event.changedTouches[0];targetElement=document.elementFromPoint(touch.pageX-window.pageXOffset,touch.pageY-window.pageYOffset)||targetElement;targetElement.fastClickScrollParent=this.targetElement.fastClickScrollParent}targetTagName=targetElement.tagName.toLowerCase();if(targetTagName==='label'){forElement=this.findControl(targetElement);if(forElement){this.focus(targetElement);if(this.deviceIsAndroid){return false}targetElement=forElement}}else if(this.needsFocus(targetElement)){if((event.timeStamp-trackingClickStart)>100||(this.deviceIsIOS&&window.top!==window&&targetTagName==='input')){this.targetElement=null;return false}this.focus(targetElement);if(!this.deviceIsIOS4||targetTagName!=='select'){this.targetElement=null;event.preventDefault()}return false}if(this.deviceIsIOS&&!this.deviceIsIOS4){scrollParent=targetElement.fastClickScrollParent;if(scrollParent&&scrollParent.fastClickLastScrollTop!==scrollParent.scrollTop){return true}}if(!this.needsClick(targetElement)){event.preventDefault();this.sendClick(targetElement,event)}return false};FastClick.prototype.onTouchCancel=function(){'use strict';this.trackingClick=false;this.targetElement=null};FastClick.prototype.onMouse=function(event){'use strict';if(!this.targetElement){return true}if(event.forwardedTouchEvent){return true}if(!event.cancelable){return true}if(!this.needsClick(this.targetElement)||this.cancelNextClick){if(event.stopImmediatePropagation){event.stopImmediatePropagation()}else{event.propagationStopped=true}event.stopPropagation();event.preventDefault();return false}return true};FastClick.prototype.onClick=function(event){'use strict';var permitted;if(this.trackingClick){this.targetElement=null;this.trackingClick=false;return true}if(event.target.type==='submit'&&event.detail===0){return true}permitted=this.onMouse(event);if(!permitted){this.targetElement=null}return permitted};FastClick.prototype.destroy=function(){'use strict';var layer=this.layer;if(this.deviceIsAndroid){layer.removeEventListener('mouseover',this.onMouse,true);layer.removeEventListener('mousedown',this.onMouse,true);layer.removeEventListener('mouseup',this.onMouse,true)}layer.removeEventListener('click',this.onClick,true);layer.removeEventListener('touchstart',this.onTouchStart,false);layer.removeEventListener('touchmove',this.onTouchMove,false);layer.removeEventListener('touchend',this.onTouchEnd,false);layer.removeEventListener('touchcancel',this.onTouchCancel,false)};FastClick.notNeeded=function(layer){'use strict';var metaViewport;if(typeof window.ontouchstart==='undefined'){return true}if((/Chrome\/[0-9]+/).test(navigator.userAgent)){if(FastClick.prototype.deviceIsAndroid){metaViewport=document.querySelector('meta[name=viewport]');if(metaViewport&&metaViewport.content.indexOf('user-scalable=no')!==-1){return true}}else{return true}}if(layer.style.msTouchAction==='none'){return true}return false};FastClick.attach=function(layer){'use strict';return new FastClick(layer)};if(typeof define!=='undefined'&&define.amd){define(function(){'use strict';return FastClick})}else if(typeof module!=='undefined'&&module.exports){module.exports=FastClick.attach;module.exports.FastClick=FastClick}else{window.FastClick=FastClick}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
// Enable FastClick
|
|
38
|
+
if(typeof FastClick !== 'undefined') {
|
|
39
|
+
FastClick.attach(document.body);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// private Fast Selector wrapper,
|
|
43
|
+
// returns jQuery object. Only use where
|
|
44
|
+
// getElementById is not available.
|
|
45
|
+
var S = function (selector, context) {
|
|
46
|
+
if (typeof selector === 'string') {
|
|
47
|
+
if (context) {
|
|
48
|
+
return $(context.querySelectorAll(selector));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return $(document.querySelectorAll(selector));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return $(selector, context);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/*
|
|
58
|
+
https://github.com/paulirish/matchMedia.js
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
window.matchMedia = window.matchMedia || (function( doc, undefined ) {
|
|
62
|
+
|
|
63
|
+
"use strict";
|
|
64
|
+
|
|
65
|
+
var bool,
|
|
66
|
+
docElem = doc.documentElement,
|
|
67
|
+
refNode = docElem.firstElementChild || docElem.firstChild,
|
|
68
|
+
// fakeBody required for <FF4 when executed in <head>
|
|
69
|
+
fakeBody = doc.createElement( "body" ),
|
|
70
|
+
div = doc.createElement( "div" );
|
|
71
|
+
|
|
72
|
+
div.id = "mq-test-1";
|
|
73
|
+
div.style.cssText = "position:absolute;top:-100em";
|
|
74
|
+
fakeBody.style.background = "none";
|
|
75
|
+
fakeBody.appendChild(div);
|
|
76
|
+
|
|
77
|
+
return function(q){
|
|
78
|
+
|
|
79
|
+
div.innerHTML = "­<style media=\"" + q + "\"> #mq-test-1 { width: 42px; }</style>";
|
|
80
|
+
|
|
81
|
+
docElem.insertBefore( fakeBody, refNode );
|
|
82
|
+
bool = div.offsetWidth === 42;
|
|
83
|
+
docElem.removeChild( fakeBody );
|
|
84
|
+
|
|
85
|
+
return {
|
|
86
|
+
matches: bool,
|
|
87
|
+
media: q
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
}( document ));
|
|
93
|
+
|
|
94
|
+
/*
|
|
95
|
+
* jquery.requestAnimationFrame
|
|
96
|
+
* https://github.com/gnarf37/jquery-requestAnimationFrame
|
|
97
|
+
* Requires jQuery 1.8+
|
|
98
|
+
*
|
|
99
|
+
* Copyright (c) 2012 Corey Frang
|
|
100
|
+
* Licensed under the MIT license.
|
|
101
|
+
*/
|
|
102
|
+
|
|
103
|
+
(function( $ ) {
|
|
104
|
+
|
|
105
|
+
// requestAnimationFrame polyfill adapted from Erik Möller
|
|
106
|
+
// fixes from Paul Irish and Tino Zijdel
|
|
107
|
+
// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
|
|
108
|
+
// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
var animating,
|
|
112
|
+
lastTime = 0,
|
|
113
|
+
vendors = ['webkit', 'moz'],
|
|
114
|
+
requestAnimationFrame = window.requestAnimationFrame,
|
|
115
|
+
cancelAnimationFrame = window.cancelAnimationFrame;
|
|
116
|
+
|
|
117
|
+
for(; lastTime < vendors.length && !requestAnimationFrame; lastTime++) {
|
|
118
|
+
requestAnimationFrame = window[ vendors[lastTime] + "RequestAnimationFrame" ];
|
|
119
|
+
cancelAnimationFrame = cancelAnimationFrame ||
|
|
120
|
+
window[ vendors[lastTime] + "CancelAnimationFrame" ] ||
|
|
121
|
+
window[ vendors[lastTime] + "CancelRequestAnimationFrame" ];
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function raf() {
|
|
125
|
+
if ( animating ) {
|
|
126
|
+
requestAnimationFrame( raf );
|
|
127
|
+
jQuery.fx.tick();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if ( requestAnimationFrame ) {
|
|
132
|
+
// use rAF
|
|
133
|
+
window.requestAnimationFrame = requestAnimationFrame;
|
|
134
|
+
window.cancelAnimationFrame = cancelAnimationFrame;
|
|
135
|
+
jQuery.fx.timer = function( timer ) {
|
|
136
|
+
if ( timer() && jQuery.timers.push( timer ) && !animating ) {
|
|
137
|
+
animating = true;
|
|
138
|
+
raf();
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
jQuery.fx.stop = function() {
|
|
143
|
+
animating = false;
|
|
144
|
+
};
|
|
145
|
+
} else {
|
|
146
|
+
// polyfill
|
|
147
|
+
window.requestAnimationFrame = function( callback, element ) {
|
|
148
|
+
var currTime = new Date().getTime(),
|
|
149
|
+
timeToCall = Math.max( 0, 16 - ( currTime - lastTime ) ),
|
|
150
|
+
id = window.setTimeout( function() {
|
|
151
|
+
callback( currTime + timeToCall );
|
|
152
|
+
}, timeToCall );
|
|
153
|
+
lastTime = currTime + timeToCall;
|
|
154
|
+
return id;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
window.cancelAnimationFrame = function(id) {
|
|
158
|
+
clearTimeout(id);
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
}( jQuery ));
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
function removeQuotes (string) {
|
|
167
|
+
if (typeof string === 'string' || string instanceof String) {
|
|
168
|
+
string = string.replace(/^[\\/'"]+|(;\s?})+|[\\/'"]+$/g, '');
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
return string;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
window.Foundation = {
|
|
175
|
+
name : 'Foundation',
|
|
176
|
+
|
|
177
|
+
version : '5.0.0',
|
|
178
|
+
|
|
179
|
+
media_queries : {
|
|
180
|
+
small : S('.foundation-mq-small').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
|
181
|
+
medium : S('.foundation-mq-medium').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
|
182
|
+
large : S('.foundation-mq-large').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
|
183
|
+
xlarge: S('.foundation-mq-xlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
|
184
|
+
xxlarge: S('.foundation-mq-xxlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, '')
|
|
185
|
+
},
|
|
186
|
+
|
|
187
|
+
stylesheet : $('<style></style>').appendTo('head')[0].sheet,
|
|
188
|
+
|
|
189
|
+
init : function (scope, libraries, method, options, response) {
|
|
190
|
+
var library_arr,
|
|
191
|
+
args = [scope, method, options, response],
|
|
192
|
+
responses = [];
|
|
193
|
+
|
|
194
|
+
// check RTL
|
|
195
|
+
this.rtl = /rtl/i.test(S('html').attr('dir'));
|
|
196
|
+
|
|
197
|
+
// set foundation global scope
|
|
198
|
+
this.scope = scope || this.scope;
|
|
199
|
+
|
|
200
|
+
if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) {
|
|
201
|
+
if (this.libs.hasOwnProperty(libraries)) {
|
|
202
|
+
responses.push(this.init_lib(libraries, args));
|
|
203
|
+
}
|
|
204
|
+
} else {
|
|
205
|
+
for (var lib in this.libs) {
|
|
206
|
+
responses.push(this.init_lib(lib, libraries));
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
return scope;
|
|
211
|
+
},
|
|
212
|
+
|
|
213
|
+
init_lib : function (lib, args) {
|
|
214
|
+
if (this.libs.hasOwnProperty(lib)) {
|
|
215
|
+
this.patch(this.libs[lib]);
|
|
216
|
+
|
|
217
|
+
if (args && args.hasOwnProperty(lib)) {
|
|
218
|
+
return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
return this.libs[lib].init.apply(this.libs[lib], args);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
return function () {};
|
|
225
|
+
},
|
|
226
|
+
|
|
227
|
+
patch : function (lib) {
|
|
228
|
+
lib.scope = this.scope;
|
|
229
|
+
lib['data_options'] = this.lib_methods.data_options;
|
|
230
|
+
lib['bindings'] = this.lib_methods.bindings;
|
|
231
|
+
lib['S'] = S;
|
|
232
|
+
lib.rtl = this.rtl;
|
|
233
|
+
},
|
|
234
|
+
|
|
235
|
+
inherit : function (scope, methods) {
|
|
236
|
+
var methods_arr = methods.split(' ');
|
|
237
|
+
|
|
238
|
+
for (var i = methods_arr.length - 1; i >= 0; i--) {
|
|
239
|
+
if (this.lib_methods.hasOwnProperty(methods_arr[i])) {
|
|
240
|
+
this.libs[scope.name][methods_arr[i]] = this.lib_methods[methods_arr[i]];
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
|
|
245
|
+
random_str : function (length) {
|
|
246
|
+
var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
|
|
247
|
+
|
|
248
|
+
if (!length) {
|
|
249
|
+
length = Math.floor(Math.random() * chars.length);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
var str = '';
|
|
253
|
+
for (var i = 0; i < length; i++) {
|
|
254
|
+
str += chars[Math.floor(Math.random() * chars.length)];
|
|
255
|
+
}
|
|
256
|
+
return str;
|
|
257
|
+
},
|
|
258
|
+
|
|
259
|
+
libs : {},
|
|
260
|
+
|
|
261
|
+
// methods that can be inherited in libraries
|
|
262
|
+
lib_methods : {
|
|
263
|
+
throttle : function(fun, delay) {
|
|
264
|
+
var timer = null;
|
|
265
|
+
|
|
266
|
+
return function () {
|
|
267
|
+
var context = this, args = arguments;
|
|
268
|
+
|
|
269
|
+
clearTimeout(timer);
|
|
270
|
+
timer = setTimeout(function () {
|
|
271
|
+
fun.apply(context, args);
|
|
272
|
+
}, delay);
|
|
273
|
+
};
|
|
274
|
+
},
|
|
275
|
+
|
|
276
|
+
// parses data-options attribute
|
|
277
|
+
data_options : function (el) {
|
|
278
|
+
var opts = {}, ii, p, opts_arr, opts_len,
|
|
279
|
+
data_options = el.data('options');
|
|
280
|
+
|
|
281
|
+
if (typeof data_options === 'object') {
|
|
282
|
+
return data_options;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
opts_arr = (data_options || ':').split(';'),
|
|
286
|
+
opts_len = opts_arr.length;
|
|
287
|
+
|
|
288
|
+
function isNumber (o) {
|
|
289
|
+
return ! isNaN (o-0) && o !== null && o !== "" && o !== false && o !== true;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
function trim(str) {
|
|
293
|
+
if (typeof str === 'string') return $.trim(str);
|
|
294
|
+
return str;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
// parse options
|
|
298
|
+
for (ii = opts_len - 1; ii >= 0; ii--) {
|
|
299
|
+
p = opts_arr[ii].split(':');
|
|
300
|
+
|
|
301
|
+
if (/true/i.test(p[1])) p[1] = true;
|
|
302
|
+
if (/false/i.test(p[1])) p[1] = false;
|
|
303
|
+
if (isNumber(p[1])) p[1] = parseInt(p[1], 10);
|
|
304
|
+
|
|
305
|
+
if (p.length === 2 && p[0].length > 0) {
|
|
306
|
+
opts[trim(p[0])] = trim(p[1]);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
return opts;
|
|
311
|
+
},
|
|
312
|
+
|
|
313
|
+
delay : function (fun, delay) {
|
|
314
|
+
return setTimeout(fun, delay);
|
|
315
|
+
},
|
|
316
|
+
|
|
317
|
+
// test for empty object or array
|
|
318
|
+
empty : function (obj) {
|
|
319
|
+
if (obj.length && obj.length > 0) return false;
|
|
320
|
+
if (obj.length && obj.length === 0) return true;
|
|
321
|
+
|
|
322
|
+
for (var key in obj) {
|
|
323
|
+
if (hasOwnProperty.call(obj, key)) return false;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
return true;
|
|
327
|
+
},
|
|
328
|
+
|
|
329
|
+
register_media : function(media, media_class) {
|
|
330
|
+
if(Foundation.media_queries[media] === undefined) {
|
|
331
|
+
$('head').append('<meta class="' + media_class + '">');
|
|
332
|
+
Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family'));
|
|
333
|
+
}
|
|
334
|
+
},
|
|
335
|
+
|
|
336
|
+
addCustomRule : function(rule, media) {
|
|
337
|
+
if(media === undefined) {
|
|
338
|
+
Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length);
|
|
339
|
+
} else {
|
|
340
|
+
var query = Foundation.media_queries[media];
|
|
341
|
+
if(query !== undefined) {
|
|
342
|
+
Foundation.stylesheet.insertRule('@media ' +
|
|
343
|
+
Foundation.media_queries[media] + '{ ' + rule + ' }');
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
|
|
348
|
+
loaded : function (image, callback) {
|
|
349
|
+
function loaded () {
|
|
350
|
+
callback(image[0]);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
function bindLoad () {
|
|
354
|
+
this.one('load', loaded);
|
|
355
|
+
|
|
356
|
+
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
|
|
357
|
+
var src = this.attr( 'src' ),
|
|
358
|
+
param = src.match( /\?/ ) ? '&' : '?';
|
|
359
|
+
|
|
360
|
+
param += 'random=' + (new Date()).getTime();
|
|
361
|
+
this.attr('src', src + param);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
if (!image.attr('src')) {
|
|
366
|
+
loaded();
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
if (image[0].complete || image[0].readyState === 4) {
|
|
371
|
+
loaded();
|
|
372
|
+
} else {
|
|
373
|
+
bindLoad.call(image);
|
|
374
|
+
}
|
|
375
|
+
},
|
|
376
|
+
|
|
377
|
+
bindings : function (method, options) {
|
|
378
|
+
var self = this,
|
|
379
|
+
should_bind_events = !S(this).data(this.name + '-init');
|
|
380
|
+
|
|
381
|
+
if (typeof method === 'string') {
|
|
382
|
+
return this[method].call(this);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
if (S(this.scope).is('[data-' + this.name +']')) {
|
|
386
|
+
S(this.scope).data(this.name + '-init', $.extend({}, this.settings, (options || method), this.data_options(S(this.scope))));
|
|
387
|
+
|
|
388
|
+
if (should_bind_events) {
|
|
389
|
+
this.events(this.scope);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
} else {
|
|
393
|
+
S('[data-' + this.name + ']', this.scope).each(function () {
|
|
394
|
+
var should_bind_events = !S(this).data(self.name + '-init');
|
|
395
|
+
|
|
396
|
+
S(this).data(self.name + '-init', $.extend({}, self.settings, (options || method), self.data_options(S(this))));
|
|
397
|
+
|
|
398
|
+
if (should_bind_events) {
|
|
399
|
+
self.events(this);
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
$.fn.foundation = function () {
|
|
408
|
+
var args = Array.prototype.slice.call(arguments, 0);
|
|
409
|
+
|
|
410
|
+
return this.each(function () {
|
|
411
|
+
Foundation.init.apply(Foundation, [this].concat(args));
|
|
412
|
+
return this;
|
|
413
|
+
});
|
|
414
|
+
};
|
|
415
|
+
|
|
416
|
+
}(jQuery, this, this.document));
|
data/lib/public/index.html
CHANGED
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
<meta name="author" content="ZURB, inc. ZURB network also includes zurb.com" />
|
|
13
13
|
<meta name="copyright" content="ZURB, inc. Copyright (c) 2013" />
|
|
14
14
|
|
|
15
|
-
<link rel="stylesheet" href="../
|
|
16
|
-
<script src="../
|
|
15
|
+
<link rel="stylesheet" href="../public/foundation.css" />
|
|
16
|
+
<script src="../public/modernizr.js"></script>
|
|
17
17
|
</head>
|
|
18
18
|
<body>
|
|
19
19
|
|
|
@@ -117,8 +117,8 @@
|
|
|
117
117
|
</div>
|
|
118
118
|
</footer>
|
|
119
119
|
|
|
120
|
-
<script src="../
|
|
121
|
-
<script src="../
|
|
120
|
+
<script src="../public/jquery.js"></script>
|
|
121
|
+
<script src="../public/foundation.js"></script>
|
|
122
122
|
<script>
|
|
123
123
|
$(document).foundation();
|
|
124
124
|
|