fileuploader-rails 3.0.0 → 3.0.0.1

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.
@@ -1,319 +0,0 @@
1
- var qq = function(element) {
2
- "use strict";
3
-
4
- return {
5
- hide: function() {
6
- element.style.display = 'none';
7
- return this;
8
- },
9
-
10
- /** Returns the function which detaches attached event */
11
- attach: function(type, fn) {
12
- if (element.addEventListener){
13
- element.addEventListener(type, fn, false);
14
- } else if (element.attachEvent){
15
- element.attachEvent('on' + type, fn);
16
- }
17
- return function() {
18
- qq(element).detach(type, fn);
19
- };
20
- },
21
-
22
- detach: function(type, fn) {
23
- if (element.removeEventListener){
24
- element.removeEventListener(type, fn, false);
25
- } else if (element.attachEvent){
26
- element.detachEvent('on' + type, fn);
27
- }
28
- return this;
29
- },
30
-
31
- contains: function(descendant) {
32
- // compareposition returns false in this case
33
- if (element == descendant) {
34
- return true;
35
- }
36
-
37
- if (element.contains){
38
- return element.contains(descendant);
39
- } else {
40
- return !!(descendant.compareDocumentPosition(element) & 8);
41
- }
42
- },
43
-
44
- /**
45
- * Insert this element before elementB.
46
- */
47
- insertBefore: function(elementB) {
48
- elementB.parentNode.insertBefore(element, elementB);
49
- return this;
50
- },
51
-
52
- remove: function() {
53
- element.parentNode.removeChild(element);
54
- return this;
55
- },
56
-
57
- /**
58
- * Sets styles for an element.
59
- * Fixes opacity in IE6-8.
60
- */
61
- css: function(styles) {
62
- if (styles.opacity != null){
63
- if (typeof element.style.opacity != 'string' && typeof(element.filters) != 'undefined'){
64
- styles.filter = 'alpha(opacity=' + Math.round(100 * styles.opacity) + ')';
65
- }
66
- }
67
- qq.extend(element.style, styles);
68
-
69
- return this;
70
- },
71
-
72
- hasClass: function(name) {
73
- var re = new RegExp('(^| )' + name + '( |$)');
74
- return re.test(element.className);
75
- },
76
-
77
- addClass: function(name) {
78
- if (!qq(element).hasClass(name)){
79
- element.className += ' ' + name;
80
- }
81
- return this;
82
- },
83
-
84
- removeClass: function(name) {
85
- var re = new RegExp('(^| )' + name + '( |$)');
86
- element.className = element.className.replace(re, ' ').replace(/^\s+|\s+$/g, "");
87
- return this;
88
- },
89
-
90
- getByClass: function(className) {
91
- if (element.querySelectorAll){
92
- return element.querySelectorAll('.' + className);
93
- }
94
-
95
- var result = [];
96
- var candidates = element.getElementsByTagName("*");
97
- var len = candidates.length;
98
-
99
- for (var i = 0; i < len; i++){
100
- if (qq(candidates[i]).hasClass(className)){
101
- result.push(candidates[i]);
102
- }
103
- }
104
- return result;
105
- },
106
-
107
- children: function() {
108
- var children = [],
109
- child = element.firstChild;
110
-
111
- while (child){
112
- if (child.nodeType == 1){
113
- children.push(child);
114
- }
115
- child = child.nextSibling;
116
- }
117
-
118
- return children;
119
- },
120
-
121
- setText: function(text) {
122
- element.innerText = text;
123
- element.textContent = text;
124
- return this;
125
- },
126
-
127
- clearText: function() {
128
- return qq(element).setText("");
129
- }
130
- };
131
- };
132
-
133
- qq.log = function(message, level) {
134
- if (window.console) {
135
- if (!level || level === 'info') {
136
- window.console.log(message);
137
- }
138
- else
139
- {
140
- if (window.console[level]) {
141
- window.console[level](message);
142
- }
143
- else {
144
- window.console.log('<' + level + '> ' + message);
145
- }
146
- }
147
- }
148
- };
149
-
150
- qq.isObject = function(variable) {
151
- "use strict";
152
- return variable !== null && variable && typeof(variable) === "object" && variable.constructor === Object;
153
- };
154
-
155
- qq.extend = function (first, second, extendNested) {
156
- "use strict";
157
- var prop;
158
- for (prop in second) {
159
- if (second.hasOwnProperty(prop)) {
160
- if (extendNested && qq.isObject(second[prop])) {
161
- if (first[prop] === undefined) {
162
- first[prop] = {};
163
- }
164
- qq.extend(first[prop], second[prop], true);
165
- }
166
- else {
167
- first[prop] = second[prop];
168
- }
169
- }
170
- }
171
- };
172
-
173
- /**
174
- * Searches for a given element in the array, returns -1 if it is not present.
175
- * @param {Number} [from] The index at which to begin the search
176
- */
177
- qq.indexOf = function(arr, elt, from){
178
- if (arr.indexOf) return arr.indexOf(elt, from);
179
-
180
- from = from || 0;
181
- var len = arr.length;
182
-
183
- if (from < 0) from += len;
184
-
185
- for (; from < len; from++){
186
- if (from in arr && arr[from] === elt){
187
- return from;
188
- }
189
- }
190
- return -1;
191
- };
192
-
193
- qq.getUniqueId = (function(){
194
- var id = 0;
195
- return function(){ return id++; };
196
- })();
197
-
198
- //
199
- // Browsers and platforms detection
200
-
201
- qq.ie = function(){ return navigator.userAgent.indexOf('MSIE') != -1; }
202
- qq.ie10 = function(){ return navigator.userAgent.indexOf('MSIE 10') != -1; }
203
- qq.safari = function(){ return navigator.vendor != undefined && navigator.vendor.indexOf("Apple") != -1; }
204
- qq.chrome = function(){ return navigator.vendor != undefined && navigator.vendor.indexOf('Google') != -1; }
205
- qq.firefox = function(){ return (navigator.userAgent.indexOf('Mozilla') != -1 && navigator.vendor != undefined && navigator.vendor == ''); }
206
- qq.windows = function(){ return navigator.platform == "Win32"; }
207
-
208
- //
209
- // Events
210
-
211
- qq.preventDefault = function(e){
212
- if (e.preventDefault){
213
- e.preventDefault();
214
- } else{
215
- e.returnValue = false;
216
- }
217
- };
218
-
219
- /**
220
- * Creates and returns element from html string
221
- * Uses innerHTML to create an element
222
- */
223
- qq.toElement = (function(){
224
- var div = document.createElement('div');
225
- return function(html){
226
- div.innerHTML = html;
227
- var element = div.firstChild;
228
- div.removeChild(element);
229
- return element;
230
- };
231
- })();
232
-
233
- /**
234
- * obj2url() takes a json-object as argument and generates
235
- * a querystring. pretty much like jQuery.param()
236
- *
237
- * how to use:
238
- *
239
- * `qq.obj2url({a:'b',c:'d'},'http://any.url/upload?otherParam=value');`
240
- *
241
- * will result in:
242
- *
243
- * `http://any.url/upload?otherParam=value&a=b&c=d`
244
- *
245
- * @param Object JSON-Object
246
- * @param String current querystring-part
247
- * @return String encoded querystring
248
- */
249
- qq.obj2url = function(obj, temp, prefixDone){
250
- var uristrings = [],
251
- prefix = '&',
252
- add = function(nextObj, i){
253
- var nextTemp = temp
254
- ? (/\[\]$/.test(temp)) // prevent double-encoding
255
- ? temp
256
- : temp+'['+i+']'
257
- : i;
258
- if ((nextTemp != 'undefined') && (i != 'undefined')) {
259
- uristrings.push(
260
- (typeof nextObj === 'object')
261
- ? qq.obj2url(nextObj, nextTemp, true)
262
- : (Object.prototype.toString.call(nextObj) === '[object Function]')
263
- ? encodeURIComponent(nextTemp) + '=' + encodeURIComponent(nextObj())
264
- : encodeURIComponent(nextTemp) + '=' + encodeURIComponent(nextObj)
265
- );
266
- }
267
- };
268
-
269
- if (!prefixDone && temp) {
270
- prefix = (/\?/.test(temp)) ? (/\?$/.test(temp)) ? '' : '&' : '?';
271
- uristrings.push(temp);
272
- uristrings.push(qq.obj2url(obj));
273
- } else if ((Object.prototype.toString.call(obj) === '[object Array]') && (typeof obj != 'undefined') ) {
274
- // we wont use a for-in-loop on an array (performance)
275
- for (var i = 0, len = obj.length; i < len; ++i){
276
- add(obj[i], i);
277
- }
278
- } else if ((typeof obj != 'undefined') && (obj !== null) && (typeof obj === "object")){
279
- // for anything else but a scalar, we will use for-in-loop
280
- for (var i in obj){
281
- add(obj[i], i);
282
- }
283
- } else {
284
- uristrings.push(encodeURIComponent(temp) + '=' + encodeURIComponent(obj));
285
- }
286
-
287
- if (temp) {
288
- return uristrings.join(prefix);
289
- } else {
290
- return uristrings.join(prefix)
291
- .replace(/^&/, '')
292
- .replace(/%20/g, '+');
293
- }
294
- };
295
-
296
- /**
297
- * A generic module which supports object disposing in dispose() method.
298
- * */
299
- qq.DisposeSupport = {
300
- _disposers: [],
301
-
302
- /** Run all registered disposers */
303
- dispose: function() {
304
- var disposer;
305
- while (disposer = this._disposers.shift()) {
306
- disposer();
307
- }
308
- },
309
-
310
- /** Add disposer to the collection */
311
- addDisposer: function(disposeFunction) {
312
- this._disposers.push(disposeFunction);
313
- },
314
-
315
- /** Attach event handler and register de-attacher as a disposer */
316
- _attach: function() {
317
- this.addDisposer(qq(arguments[0]).attach.apply(this, Array.prototype.slice.call(arguments, 1)));
318
- }
319
- };