speedo 0.1.9 → 0.2.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.
Files changed (113) hide show
  1. data/app/assets/javascripts/speedo.js +12 -12
  2. data/app/views/layouts/speedo/application.html.haml +2 -2
  3. data/lib/speedo/sass.rb +1 -1
  4. data/lib/speedo/version.rb +1 -1
  5. data/test/dummy/log/development.log +889 -0
  6. data/test/dummy/tmp/cache/assets/BC8/350/sprockets%2F3357f02a74351649de62769431854154 +0 -0
  7. data/test/dummy/tmp/cache/assets/BFD/090/sprockets%2F50267839603d9c7384477250f0169f0e +0 -0
  8. data/test/dummy/tmp/cache/assets/C4F/220/sprockets%2F19a6a3539a4ed0526c356691798032a3 +0 -0
  9. data/test/dummy/tmp/cache/assets/C55/E10/sprockets%2F9da121566709335e3081059e7774a9bb +957 -0
  10. data/test/dummy/tmp/cache/assets/C5F/4E0/sprockets%2F4c17092a9c628e66645a4586e9b50717 +57 -0
  11. data/test/dummy/tmp/cache/assets/C82/BB0/sprockets%2F904cd2f9283528b32d94a1d2a6711489 +41 -0
  12. data/test/dummy/tmp/cache/assets/CDE/600/sprockets%2F205a8cce7806d7c77117f1dc263146a8 +0 -0
  13. data/test/dummy/tmp/cache/assets/CE0/930/sprockets%2Fb6670296cd6b3ce81034c8d5d31e5725 +8 -0
  14. data/test/dummy/tmp/cache/assets/CE1/3B0/sprockets%2Fe8865654d2d075e6bba1074193e443dc +350 -0
  15. data/test/dummy/tmp/cache/assets/CF5/F40/sprockets%2F72637ea0f394f68dcc931527509e79ec +0 -0
  16. data/test/dummy/tmp/cache/assets/CF9/7C0/sprockets%2F488b6dcdeb1301268a65202e7101ed2a +974 -0
  17. data/test/dummy/tmp/cache/assets/D0C/C60/sprockets%2F39d93fba83bb3b50a75826703c5a28c5 +311 -0
  18. data/test/dummy/tmp/cache/assets/D1D/D50/sprockets%2F5b87bedce3ae871f14e41e2479290866 +0 -0
  19. data/test/dummy/tmp/cache/assets/D2A/5C0/sprockets%2Fe12edc211b1935a76d3aab4e8716006d +394 -0
  20. data/test/dummy/tmp/cache/assets/D3A/090/sprockets%2F0d24039ad1b8ef3525e367fe51905fbb +11635 -0
  21. data/test/dummy/tmp/cache/assets/D3B/1E0/sprockets%2Fe5f2362b8b1eb8273f1a7764cbb15e35 +11618 -0
  22. data/test/dummy/tmp/cache/assets/D3D/F80/sprockets%2Fadfc8f7271b3a873f3462e149a6a34e0 +374 -0
  23. data/test/dummy/tmp/cache/assets/D3F/0A0/sprockets%2Fc4574a4ea12e8efe636123e1a17f7d66 +11773 -0
  24. data/test/dummy/tmp/cache/assets/D42/CB0/sprockets%2F6c01eb50fe79d82720a649960dee5dd0 +20 -0
  25. data/test/dummy/tmp/cache/assets/D49/2B0/sprockets%2F34363288c95affbe232a199c6938ceab +391 -0
  26. data/test/dummy/tmp/cache/assets/D5B/120/sprockets%2F525577d56abcec9969e805ddc2997fd0 +332 -0
  27. data/test/dummy/tmp/cache/assets/D65/820/sprockets%2F4e91290eae5edd2f4d287ca2952be000 +327 -0
  28. data/test/dummy/tmp/cache/assets/D6C/3D0/sprockets%2Fa62ebc5f479b52c204f4c71ea65594ca +55 -0
  29. data/test/dummy/tmp/cache/assets/D71/D90/sprockets%2F7bb9508df3d877f853823addd4b0a22b +19 -0
  30. data/test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +0 -0
  31. data/test/dummy/tmp/cache/assets/D97/830/sprockets%2Fd55ede995a2705ab74db22acf510dd90 +0 -0
  32. data/test/dummy/tmp/cache/assets/D9B/400/sprockets%2Fec83dc0dc78764b460a3ffc063df25e0 +11789 -0
  33. data/test/dummy/tmp/cache/assets/DA1/670/sprockets%2Fb71f32bbfb530e59ad7a177cf54a888b +0 -0
  34. data/test/dummy/tmp/cache/assets/DA8/760/sprockets%2F1359bb83c703a91d57cfebdaf879a4d7 +9288 -0
  35. data/test/dummy/tmp/cache/assets/DB3/C60/sprockets%2F1ff86e3b1c5bf1c179ac719fced99829 +53 -0
  36. data/test/dummy/tmp/cache/assets/DBE/F80/sprockets%2F8647fc3439abdaa0eb161dadf2fc4304 +694 -0
  37. data/test/dummy/tmp/cache/assets/DC3/CC0/sprockets%2Fa04ece65c59a7a325cab61861da2be7e +0 -0
  38. data/test/dummy/tmp/cache/assets/DC5/290/sprockets%2F1c5dee9b02ab66fbf6e62627a13e27ba +37 -0
  39. data/test/dummy/tmp/cache/assets/DE9/520/sprockets%2Fe9f8259c99da2f355198dc4bcdebb69d +0 -0
  40. data/test/dummy/tmp/cache/assets/DEA/500/sprockets%2F485fc5ba3f81b49ccdd788885ea8de5e +0 -0
  41. data/test/dummy/tmp/cache/assets/DF2/CB0/sprockets%2F4500acae993e0fa07bd48dceee07e2b3 +0 -0
  42. data/test/dummy/tmp/cache/assets/DF9/EB0/sprockets%2Ffcaa51a13d86ac9cf245f2a5d70c9d8c +256 -0
  43. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  44. data/test/dummy/tmp/cache/assets/E7F/BB0/sprockets%2Ffdeefdc424a13a04addae542356dffae +678 -0
  45. data/test/dummy/tmp/cache/assets/E82/D20/sprockets%2Fcdce4acb88dcbeaba64a06a254a9e09f +0 -0
  46. metadata +192 -88
  47. /data/vendor/assets/javascripts/{chosen.jquery.js → speedo/chosen.jquery.js} +0 -0
  48. /data/vendor/assets/javascripts/{jquery.autoSuggest.js → speedo/jquery.autoSuggest.js} +0 -0
  49. /data/vendor/assets/javascripts/{jquery.autogrow.js → speedo/jquery.autogrow.js} +0 -0
  50. /data/vendor/assets/javascripts/{jquery.dataTables.js → speedo/jquery.dataTables.js} +0 -0
  51. /data/vendor/assets/javascripts/{jquery.livequery.js → speedo/jquery.livequery.js} +0 -0
  52. /data/vendor/assets/javascripts/{jquery.mousewheel-3.0.4.pack.js → speedo/jquery.mousewheel-3.0.4.pack.js} +0 -0
  53. /data/vendor/assets/javascripts/{jquery.placeholder.min.js → speedo/jquery.placeholder.min.js} +0 -0
  54. /data/vendor/assets/javascripts/{jquery.spin.js → speedo/jquery.spin.js} +0 -0
  55. /data/vendor/assets/javascripts/{jquery.timeago.js → speedo/jquery.timeago.js} +0 -0
  56. /data/vendor/assets/javascripts/{jquery.tools.min.js → speedo/jquery.tools.min.js} +0 -0
  57. /data/vendor/assets/javascripts/{jquery.uniform.js → speedo/jquery.uniform.js} +0 -0
  58. /data/vendor/assets/javascripts/{modernizr.min.js → speedo/modernizr.min.js} +0 -0
  59. /data/vendor/assets/javascripts/{respond.js → speedo/respond.js} +0 -0
  60. /data/vendor/assets/javascripts/{spin.js → speedo/spin.js} +0 -0
  61. /data/vendor/assets/stylesheets/{autoSuggest.css → speedo/autoSuggest.css} +0 -0
  62. /data/vendor/assets/stylesheets/{chosen-sprite.png → speedo/chosen-sprite.png} +0 -0
  63. /data/vendor/assets/stylesheets/{chosen.css → speedo/chosen.css} +0 -0
  64. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/Sorting icons.psd +0 -0
  65. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/back_disabled.png +0 -0
  66. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/back_enabled.png +0 -0
  67. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/back_enabled_hover.png +0 -0
  68. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/favicon.ico +0 -0
  69. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/forward_disabled.png +0 -0
  70. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/forward_enabled.png +0 -0
  71. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/forward_enabled_hover.png +0 -0
  72. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/sort_asc.png +0 -0
  73. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/sort_asc_disabled.png +0 -0
  74. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/sort_both.png +0 -0
  75. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/sort_desc.png +0 -0
  76. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/sort_desc_disabled.png +0 -0
  77. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  78. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  79. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-bg_glass_65_ffffff_1x400.png +0 -0
  80. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-bg_glass_75_dadada_1x400.png +0 -0
  81. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  82. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-bg_glass_75_ffffff_1x400.png +0 -0
  83. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  84. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-bg_inset-soft_95_fef1ec_1x100.png +0 -0
  85. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-icons_222222_256x240.png +0 -0
  86. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-icons_2e83ff_256x240.png +0 -0
  87. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-icons_454545_256x240.png +0 -0
  88. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-icons_888888_256x240.png +0 -0
  89. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-icons_cd0a0a_256x240.png +0 -0
  90. /data/vendor/assets/stylesheets/{formtastic-buttonless.css → speedo/formtastic-buttonless.css} +0 -0
  91. /data/vendor/assets/stylesheets/{gh-buttons.css → speedo/gh-buttons.css} +0 -0
  92. /data/vendor/assets/stylesheets/{gh-icons.png → speedo/gh-icons.png} +0 -0
  93. /data/vendor/assets/stylesheets/{jquery-ui-1.8.18.custom.css → speedo/jquery-ui-1.8.18.custom.css} +0 -0
  94. /data/vendor/assets/stylesheets/{jquery.dataTables.css → speedo/jquery.dataTables.css} +0 -0
  95. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  96. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  97. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-bg_glass_65_ffffff_1x400.png +0 -0
  98. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-bg_glass_75_dadada_1x400.png +0 -0
  99. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  100. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-bg_glass_75_ffffff_1x400.png +0 -0
  101. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  102. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-bg_inset-soft_95_fef1ec_1x100.png +0 -0
  103. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-icons_222222_256x240.png +0 -0
  104. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-icons_2e83ff_256x240.png +0 -0
  105. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-icons_454545_256x240.png +0 -0
  106. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-icons_888888_256x240.png +0 -0
  107. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-icons_cd0a0a_256x240.png +0 -0
  108. /data/vendor/assets/stylesheets/{normalize.css → speedo/normalize.css} +0 -0
  109. /data/vendor/assets/stylesheets/{uniform → speedo/uniform}/bg-input-focus.png +0 -0
  110. /data/vendor/assets/stylesheets/{uniform → speedo/uniform}/bg-input.png +0 -0
  111. /data/vendor/assets/stylesheets/{uniform → speedo/uniform}/sprite-aristo.png +0 -0
  112. /data/vendor/assets/stylesheets/{uniform → speedo/uniform}/sprite.png +0 -0
  113. /data/vendor/assets/stylesheets/{uniform.default.css → speedo/uniform.default.css} +0 -0
@@ -0,0 +1,311 @@
1
+ o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1339771360.089366: @value{ I" length:EFi�#I" digest;
2
+ F"%9ea5971910210b3c941b82d1b7d64defI" source;
3
+ FI"�#//fgnass.github.com/spin.js#v1.2.5
4
+ (function(window, document, undefined) {
5
+
6
+ /**
7
+ * Copyright (c) 2011 Felix Gnass [fgnass at neteye dot de]
8
+ * Licensed under the MIT license
9
+ */
10
+
11
+ var prefixes = ['webkit', 'Moz', 'ms', 'O']; /* Vendor prefixes */
12
+ var animations = {}; /* Animation rules keyed by their name */
13
+ var useCssAnimations;
14
+
15
+ /**
16
+ * Utility function to create elements. If no tag name is given,
17
+ * a DIV is created. Optionally properties can be passed.
18
+ */
19
+ function createEl(tag, prop) {
20
+ var el = document.createElement(tag || 'div');
21
+ var n;
22
+
23
+ for(n in prop) {
24
+ el[n] = prop[n];
25
+ }
26
+ return el;
27
+ }
28
+
29
+ /**
30
+ * Appends children and returns the parent.
31
+ */
32
+ function ins(parent /* child1, child2, ...*/) {
33
+ for (var i=1, n=arguments.length; i<n; i++) {
34
+ parent.appendChild(arguments[i]);
35
+ }
36
+ return parent;
37
+ }
38
+
39
+ /**
40
+ * Insert a new stylesheet to hold the @keyframe or VML rules.
41
+ */
42
+ var sheet = function() {
43
+ var el = createEl('style');
44
+ ins(document.getElementsByTagName('head')[0], el);
45
+ return el.sheet || el.styleSheet;
46
+ }();
47
+
48
+ /**
49
+ * Creates an opacity keyframe animation rule and returns its name.
50
+ * Since most mobile Webkits have timing issues with animation-delay,
51
+ * we create separate rules for each line/segment.
52
+ */
53
+ function addAnimation(alpha, trail, i, lines) {
54
+ var name = ['opacity', trail, ~~(alpha*100), i, lines].join('-');
55
+ var start = 0.01 + i/lines*100;
56
+ var z = Math.max(1-(1-alpha)/trail*(100-start) , alpha);
57
+ var prefix = useCssAnimations.substring(0, useCssAnimations.indexOf('Animation')).toLowerCase();
58
+ var pre = prefix && '-'+prefix+'-' || '';
59
+
60
+ if (!animations[name]) {
61
+ sheet.insertRule(
62
+ '@' + pre + 'keyframes ' + name + '{' +
63
+ '0%{opacity:'+z+'}' +
64
+ start + '%{opacity:'+ alpha + '}' +
65
+ (start+0.01) + '%{opacity:1}' +
66
+ (start+trail)%100 + '%{opacity:'+ alpha + '}' +
67
+ '100%{opacity:'+ z + '}' +
68
+ '}', 0);
69
+ animations[name] = 1;
70
+ }
71
+ return name;
72
+ }
73
+
74
+ /**
75
+ * Tries various vendor prefixes and returns the first supported property.
76
+ **/
77
+ function vendor(el, prop) {
78
+ var s = el.style;
79
+ var pp;
80
+ var i;
81
+
82
+ if(s[prop] !== undefined) return prop;
83
+ prop = prop.charAt(0).toUpperCase() + prop.slice(1);
84
+ for(i=0; i<prefixes.length; i++) {
85
+ pp = prefixes[i]+prop;
86
+ if(s[pp] !== undefined) return pp;
87
+ }
88
+ }
89
+
90
+ /**
91
+ * Sets multiple style properties at once.
92
+ */
93
+ function css(el, prop) {
94
+ for (var n in prop) {
95
+ el.style[vendor(el, n)||n] = prop[n];
96
+ }
97
+ return el;
98
+ }
99
+
100
+ /**
101
+ * Fills in default values.
102
+ */
103
+ function merge(obj) {
104
+ for (var i=1; i < arguments.length; i++) {
105
+ var def = arguments[i];
106
+ for (var n in def) {
107
+ if (obj[n] === undefined) obj[n] = def[n];
108
+ }
109
+ }
110
+ return obj;
111
+ }
112
+
113
+ /**
114
+ * Returns the absolute page-offset of the given element.
115
+ */
116
+ function pos(el) {
117
+ var o = {x:el.offsetLeft, y:el.offsetTop};
118
+ while((el = el.offsetParent)) {
119
+ o.x+=el.offsetLeft;
120
+ o.y+=el.offsetTop;
121
+ }
122
+ return o;
123
+ }
124
+
125
+ var defaults = {
126
+ lines: 12, // The number of lines to draw
127
+ length: 7, // The length of each line
128
+ width: 5, // The line thickness
129
+ radius: 10, // The radius of the inner circle
130
+ rotate: 0, // rotation offset
131
+ color: '#000', // #rgb or #rrggbb
132
+ speed: 1, // Rounds per second
133
+ trail: 100, // Afterglow percentage
134
+ opacity: 1/4, // Opacity of the lines
135
+ fps: 20, // Frames per second when using setTimeout()
136
+ zIndex: 2e9, // Use a high z-index by default
137
+ className: 'spinner', // CSS class to assign to the element
138
+ top: 'auto', // center vertically
139
+ left: 'auto' // center horizontally
140
+ };
141
+
142
+ /** The constructor */
143
+ var Spinner = function Spinner(o) {
144
+ if (!this.spin) return new Spinner(o);
145
+ this.opts = merge(o || {}, Spinner.defaults, defaults);
146
+ };
147
+
148
+ Spinner.defaults = {};
149
+ merge(Spinner.prototype, {
150
+ spin: function(target) {
151
+ this.stop();
152
+ var self = this;
153
+ var o = self.opts;
154
+ var el = self.el = css(createEl(0, {className: o.className}), {position: 'relative', zIndex: o.zIndex});
155
+ var mid = o.radius+o.length+o.width;
156
+ var ep; // element position
157
+ var tp; // target position
158
+
159
+ if (target) {
160
+ target.insertBefore(el, target.firstChild||null);
161
+ tp = pos(target);
162
+ ep = pos(el);
163
+ css(el, {
164
+ left: (o.left == 'auto' ? tp.x-ep.x + (target.offsetWidth >> 1) : o.left+mid) + 'px',
165
+ top: (o.top == 'auto' ? tp.y-ep.y + (target.offsetHeight >> 1) : o.top+mid) + 'px'
166
+ });
167
+ }
168
+
169
+ el.setAttribute('aria-role', 'progressbar');
170
+ self.lines(el, self.opts);
171
+
172
+ if (!useCssAnimations) {
173
+ // No CSS animation support, use setTimeout() instead
174
+ var i = 0;
175
+ var fps = o.fps;
176
+ var f = fps/o.speed;
177
+ var ostep = (1-o.opacity)/(f*o.trail / 100);
178
+ var astep = f/o.lines;
179
+
180
+ !function anim() {
181
+ i++;
182
+ for (var s=o.lines; s; s--) {
183
+ var alpha = Math.max(1-(i+s*astep)%f * ostep, o.opacity);
184
+ self.opacity(el, o.lines-s, alpha, o);
185
+ }
186
+ self.timeout = self.el && setTimeout(anim, ~~(1000/fps));
187
+ }();
188
+ }
189
+ return self;
190
+ },
191
+ stop: function() {
192
+ var el = this.el;
193
+ if (el) {
194
+ clearTimeout(this.timeout);
195
+ if (el.parentNode) el.parentNode.removeChild(el);
196
+ this.el = undefined;
197
+ }
198
+ return this;
199
+ },
200
+ lines: function(el, o) {
201
+ var i = 0;
202
+ var seg;
203
+
204
+ function fill(color, shadow) {
205
+ return css(createEl(), {
206
+ position: 'absolute',
207
+ width: (o.length+o.width) + 'px',
208
+ height: o.width + 'px',
209
+ background: color,
210
+ boxShadow: shadow,
211
+ transformOrigin: 'left',
212
+ transform: 'rotate(' + ~~(360/o.lines*i+o.rotate) + 'deg) translate(' + o.radius+'px' +',0)',
213
+ borderRadius: (o.width>>1) + 'px'
214
+ });
215
+ }
216
+ for (; i < o.lines; i++) {
217
+ seg = css(createEl(), {
218
+ position: 'absolute',
219
+ top: 1+~(o.width/2) + 'px',
220
+ transform: o.hwaccel ? 'translate3d(0,0,0)' : '',
221
+ opacity: o.opacity,
222
+ animation: useCssAnimations && addAnimation(o.opacity, o.trail, i, o.lines) + ' ' + 1/o.speed + 's linear infinite'
223
+ });
224
+ if (o.shadow) ins(seg, css(fill('#000', '0 0 4px ' + '#000'), {top: 2+'px'}));
225
+ ins(el, ins(seg, fill(o.color, '0 0 1px rgba(0,0,0,.1)')));
226
+ }
227
+ return el;
228
+ },
229
+ opacity: function(el, i, val) {
230
+ if (i < el.childNodes.length) el.childNodes[i].style.opacity = val;
231
+ }
232
+ });
233
+
234
+ /////////////////////////////////////////////////////////////////////////
235
+ // VML rendering for IE
236
+ /////////////////////////////////////////////////////////////////////////
237
+
238
+ /**
239
+ * Check and init VML support
240
+ */
241
+ !function() {
242
+
243
+ function vml(tag, attr) {
244
+ return createEl('<' + tag + ' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">', attr);
245
+ }
246
+
247
+ var s = css(createEl('group'), {behavior: 'url(#default#VML)'});
248
+
249
+ if (!vendor(s, 'transform') && s.adj) {
250
+
251
+ // VML support detected. Insert CSS rule ...
252
+ sheet.addRule('.spin-vml', 'behavior:url(#default#VML)');
253
+
254
+ Spinner.prototype.lines = function(el, o) {
255
+ var r = o.length+o.width;
256
+ var s = 2*r;
257
+
258
+ function grp() {
259
+ return css(vml('group', {coordsize: s +' '+s, coordorigin: -r +' '+-r}), {width: s, height: s});
260
+ }
261
+
262
+ var margin = -(o.width+o.length)*2+'px';
263
+ var g = css(grp(), {position: 'absolute', top: margin, left: margin});
264
+
265
+ var i;
266
+
267
+ function seg(i, dx, filter) {
268
+ ins(g,
269
+ ins(css(grp(), {rotation: 360 / o.lines * i + 'deg', left: ~~dx}),
270
+ ins(css(vml('roundrect', {arcsize: 1}), {
271
+ width: r,
272
+ height: o.width,
273
+ left: o.radius,
274
+ top: -o.width>>1,
275
+ filter: filter
276
+ }),
277
+ vml('fill', {color: o.color, opacity: o.opacity}),
278
+ vml('stroke', {opacity: 0}) // transparent stroke to fix color bleeding upon opacity change
279
+ )
280
+ )
281
+ );
282
+ }
283
+
284
+ if (o.shadow) {
285
+ for (i = 1; i <= o.lines; i++) {
286
+ seg(i, -2, 'progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)');
287
+ }
288
+ }
289
+ for (i = 1; i <= o.lines; i++) seg(i);
290
+ return ins(el, g);
291
+ };
292
+ Spinner.prototype.opacity = function(el, i, val, o) {
293
+ var c = el.firstChild;
294
+ o = o.shadow && o.lines || 0;
295
+ if (c && i+o < c.childNodes.length) {
296
+ c = c.childNodes[i+o]; c = c && c.firstChild; c = c && c.firstChild;
297
+ if (c) c.opacity = val;
298
+ }
299
+ };
300
+ }
301
+ else {
302
+ useCssAnimations = vendor(s, 'animation');
303
+ }
304
+ }();
305
+
306
+ window.Spinner = Spinner;
307
+
308
+ })(window, document);
309
+ ;
310
+ FI"
311
+ F"%91640474eacd68aef96ef1b45feca45c