hoarder-js 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +2 -0
- data/Gemfile.lock +2 -2
- data/Manifest +14 -3
- data/assets/scripts/coffee/hoarder/form/form.coffee +47 -44
- data/assets/scripts/coffee/hoarder/form/form_serializer.coffee +23 -0
- data/assets/scripts/coffee/hoarder/form_manager.coffee +35 -19
- data/assets/scripts/coffee/hoarder/submitter/form_submitter.coffee +10 -15
- data/assets/scripts/coffee/hoarder/submitter/submitters/base_submitter.coffee +11 -0
- data/assets/scripts/coffee/hoarder/submitter/submitters/polling_submitter.coffee +30 -27
- data/assets/scripts/coffee/hoarder/submitter/submitters/simple_submitter.coffee +11 -21
- data/assets/scripts/coffee/hoarder/validator/constraints/alpha_constraint.coffee +8 -14
- data/assets/scripts/coffee/hoarder/validator/constraints/alphanumeric_constraint.coffee +8 -14
- data/assets/scripts/coffee/hoarder/validator/constraints/base_constraint.coffee +10 -0
- data/assets/scripts/coffee/hoarder/validator/constraints/credit_card_constraint.coffee +8 -14
- data/assets/scripts/coffee/hoarder/validator/constraints/email_constraint.coffee +8 -14
- data/assets/scripts/coffee/hoarder/validator/constraints/max_length_constraint.coffee +8 -14
- data/assets/scripts/coffee/hoarder/validator/constraints/min_length_constraint.coffee +8 -14
- data/assets/scripts/coffee/hoarder/validator/constraints/numeric_constraint.coffee +8 -14
- data/assets/scripts/coffee/hoarder/validator/constraints/phone_constraint.coffee +8 -14
- data/assets/scripts/coffee/hoarder/validator/constraints/required_constraint.coffee +8 -14
- data/assets/scripts/coffee/hoarder/validator/form_validator.coffee +30 -25
- data/assets/scripts/coffee/hoarder/validator/rules/validation_rule.coffee +10 -0
- data/assets/scripts/js/lib/bonzo.js +1151 -0
- data/assets/scripts/js/lib/qwery.js +369 -0
- data/assets/scripts/js/lib/reqwest.js +565 -0
- data/assets/scripts/js/patches/event_listeners.js +73 -0
- data/bin/hoarder.js +2807 -369
- data/hoarder-js.gemspec +3 -3
- data/spec/jasmine.yml +3 -0
- data/spec/runner.html +44 -34
- data/spec/support/fixtures.coffee +19 -0
- data/spec/support/lib/jasmine-fixture.js +506 -0
- data/spec/support/lib/jquery-1.7.1.min.js +4 -0
- data/spec/support/mocks.coffee +12 -37
- data/spec/support/requirements.coffee +0 -1
- data/spec/tests/form/form_serializer_spec.coffee +78 -0
- data/spec/tests/form/form_spec.coffee +127 -0
- data/spec/tests/form_manager_spec.coffee +128 -40
- data/spec/tests/submitter/form_submitter_spec.coffee +59 -42
- data/spec/tests/submitter/submitters/polling_submitter_spec.coffee +102 -57
- data/spec/tests/submitter/submitters/simple_submitter_spec.coffee +42 -16
- data/spec/tests/validator/constraints_spec.coffee +65 -57
- data/spec/tests/validator/form_validator_spec.coffee +39 -23
- data/spec/tests/validator/validation_rule_spec.coffee +14 -0
- metadata +16 -5
- data/assets/scripts/coffee/hoarder/form/form_element.coffee +0 -22
- data/assets/scripts/coffee/hoarder/validator/error/validation_error.coffee +0 -9
- data/assets/scripts/js/lib/jquery.js +0 -5
@@ -0,0 +1,73 @@
|
|
1
|
+
// this only brings addEventListener into IE8
|
2
|
+
|
3
|
+
(function() {
|
4
|
+
if (!Event.prototype.preventDefault) {
|
5
|
+
Event.prototype.preventDefault=function() {
|
6
|
+
this.returnValue=false;
|
7
|
+
};
|
8
|
+
}
|
9
|
+
if (!Event.prototype.stopPropagation) {
|
10
|
+
Event.prototype.stopPropagation=function() {
|
11
|
+
this.cancelBubble=true;
|
12
|
+
};
|
13
|
+
}
|
14
|
+
if (!Element.prototype.addEventListener) {
|
15
|
+
var eventListeners=[];
|
16
|
+
|
17
|
+
var addEventListener=function(type,listener /*, useCapture (will be ignored) */) {
|
18
|
+
var self=this;
|
19
|
+
var wrapper=function(e) {
|
20
|
+
e.target=e.srcElement;
|
21
|
+
e.currentTarget=self;
|
22
|
+
if (listener.handleEvent) {
|
23
|
+
listener.handleEvent(e);
|
24
|
+
} else {
|
25
|
+
listener.call(self,e);
|
26
|
+
}
|
27
|
+
};
|
28
|
+
if (type=="DOMContentLoaded") {
|
29
|
+
var wrapper2=function(e) {
|
30
|
+
if (document.readyState=="complete") {
|
31
|
+
wrapper(e);
|
32
|
+
}
|
33
|
+
};
|
34
|
+
document.attachEvent("onreadystatechange",wrapper2);
|
35
|
+
eventListeners.push({object:this,type:type,listener:listener,wrapper:wrapper2});
|
36
|
+
|
37
|
+
if (document.readyState=="complete") {
|
38
|
+
var e=new Event();
|
39
|
+
e.srcElement=window;
|
40
|
+
wrapper2(e);
|
41
|
+
}
|
42
|
+
} else {
|
43
|
+
this.attachEvent("on"+type,wrapper);
|
44
|
+
eventListeners.push({object:this,type:type,listener:listener,wrapper:wrapper});
|
45
|
+
}
|
46
|
+
};
|
47
|
+
var removeEventListener=function(type,listener /*, useCapture (will be ignored) */) {
|
48
|
+
var counter=0;
|
49
|
+
while (counter<eventListeners.length) {
|
50
|
+
var eventListener=eventListeners[counter];
|
51
|
+
if (eventListener.object==this && eventListener.type==type && eventListener.listener==listener) {
|
52
|
+
if (type=="DOMContentLoaded") {
|
53
|
+
this.detachEvent("onreadystatechange",eventListener.wrapper);
|
54
|
+
} else {
|
55
|
+
this.detachEvent("on"+type,eventListener.wrapper);
|
56
|
+
}
|
57
|
+
break;
|
58
|
+
}
|
59
|
+
++counter;
|
60
|
+
}
|
61
|
+
};
|
62
|
+
Element.prototype.addEventListener=addEventListener;
|
63
|
+
Element.prototype.removeEventListener=removeEventListener;
|
64
|
+
if (HTMLDocument) {
|
65
|
+
HTMLDocument.prototype.addEventListener=addEventListener;
|
66
|
+
HTMLDocument.prototype.removeEventListener=removeEventListener;
|
67
|
+
}
|
68
|
+
if (Window) {
|
69
|
+
Window.prototype.addEventListener=addEventListener;
|
70
|
+
Window.prototype.removeEventListener=removeEventListener;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
})();
|
data/bin/hoarder.js
CHANGED
@@ -4,83 +4,84 @@
|
|
4
4
|
var formCache = null;
|
5
5
|
var formFunc = function() {
|
6
6
|
return (function() {
|
7
|
-
var Form,
|
7
|
+
var Form, FormSerializer;
|
8
8
|
|
9
|
-
require(
|
10
|
-
|
11
|
-
FormElement = require("hoarder/form/form_element");
|
9
|
+
FormSerializer = require('hoarder/form/form_serializer');
|
12
10
|
|
13
11
|
Form = (function() {
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
this.
|
18
|
-
return e.preventDefault();
|
19
|
-
});
|
20
|
-
this.action = this.form.attr("action");
|
21
|
-
this.method = this.form.attr("method");
|
12
|
+
var createElement;
|
13
|
+
|
14
|
+
function Form(formElement) {
|
15
|
+
this.formElement = formElement;
|
22
16
|
this.addedElements = [];
|
23
17
|
}
|
24
18
|
|
25
19
|
Form.prototype.elements = function() {
|
26
|
-
var
|
20
|
+
var index, _i, _ref, _ref1, _ref2, _results;
|
27
21
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
selects = this.form.find("select");
|
34
|
-
if (selects.length > 0) {
|
35
|
-
elements = elements.concat(selects.toArray());
|
36
|
-
}
|
37
|
-
textareas = this.form.find("textarea");
|
38
|
-
if (textareas.length > 0) {
|
39
|
-
elements = elements.concat(textareas.toArray());
|
22
|
+
_results = [];
|
23
|
+
for (index = _i = 0, _ref = this.formElement.length; 0 <= _ref ? _i <= _ref : _i >= _ref; index = 0 <= _ref ? ++_i : --_i) {
|
24
|
+
if ((_ref1 = (_ref2 = this.formElement[index]) != null ? _ref2.nodeName : void 0) === 'INPUT' || _ref1 === 'SELECT' || _ref1 === 'TEXTAREA') {
|
25
|
+
_results.push(this.formElement[index]);
|
26
|
+
}
|
40
27
|
}
|
41
|
-
|
42
|
-
|
43
|
-
element = elements[_i];
|
44
|
-
validationRules = element.getAttribute("data-validation") != null ? (function() {
|
45
|
-
var _j, _len1, _ref, _results;
|
28
|
+
return _results;
|
29
|
+
};
|
46
30
|
|
47
|
-
|
48
|
-
|
49
|
-
for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {
|
50
|
-
rule = _ref[_j];
|
51
|
-
_results.push(rule.trim());
|
52
|
-
}
|
53
|
-
return _results;
|
54
|
-
})() : [];
|
55
|
-
selector = "" + element.nodeName + "[data-bind='" + (element.getAttribute("data-bind")) + "']";
|
56
|
-
formElements.push(new FormElement(element.name, element.value, selector, validationRules));
|
57
|
-
}
|
58
|
-
return formElements;
|
31
|
+
Form.prototype.action = function() {
|
32
|
+
return this.formElement.action;
|
59
33
|
};
|
60
34
|
|
61
|
-
Form.prototype.
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
35
|
+
Form.prototype.method = function() {
|
36
|
+
return this.formElement.method;
|
37
|
+
};
|
38
|
+
|
39
|
+
Form.prototype.addElement = function(name, value) {
|
40
|
+
var element;
|
41
|
+
|
42
|
+
if (this.hasElement(name)) {
|
43
|
+
throw new Error("'" + name + "' already exists as an element on the form.");
|
68
44
|
}
|
45
|
+
element = createElement(name, value);
|
46
|
+
this.formElement.appendChild(element);
|
47
|
+
this.addedElements.push(element);
|
48
|
+
return element;
|
69
49
|
};
|
70
50
|
|
71
51
|
Form.prototype.addElements = function(elements) {
|
72
|
-
var element, _i, _len
|
52
|
+
var e, element, errors, _i, _len;
|
73
53
|
|
74
|
-
|
54
|
+
errors = [];
|
75
55
|
for (_i = 0, _len = elements.length; _i < _len; _i++) {
|
76
56
|
element = elements[_i];
|
77
|
-
|
57
|
+
try {
|
58
|
+
this.addElement(element.name, element.value);
|
59
|
+
} catch (_error) {
|
60
|
+
e = _error;
|
61
|
+
errors.push(e);
|
62
|
+
}
|
63
|
+
}
|
64
|
+
if (errors.length) {
|
65
|
+
throw errors[0];
|
66
|
+
}
|
67
|
+
};
|
68
|
+
|
69
|
+
Form.prototype.hasElement = function(name) {
|
70
|
+
return this.getElement(name) != null;
|
71
|
+
};
|
72
|
+
|
73
|
+
Form.prototype.getElement = function(name) {
|
74
|
+
if (this.formElement[name] instanceof HTMLElement) {
|
75
|
+
return this.formElement[name];
|
78
76
|
}
|
79
|
-
return _results;
|
80
77
|
};
|
81
78
|
|
82
79
|
Form.prototype.updateAddedElement = function(name, value) {
|
83
|
-
|
80
|
+
if (this.formElement[name] != null) {
|
81
|
+
return this.formElement[name].value = value;
|
82
|
+
} else {
|
83
|
+
return this.addElement(name, value);
|
84
|
+
}
|
84
85
|
};
|
85
86
|
|
86
87
|
Form.prototype.clearAddedElements = function() {
|
@@ -89,13 +90,23 @@
|
|
89
90
|
_ref = this.addedElements;
|
90
91
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
91
92
|
element = _ref[_i];
|
92
|
-
|
93
|
+
this.formElement.removeChild(element);
|
93
94
|
}
|
94
95
|
return this.addedElements = [];
|
95
96
|
};
|
96
97
|
|
97
98
|
Form.prototype.serialize = function() {
|
98
|
-
return
|
99
|
+
return FormSerializer.toString(this);
|
100
|
+
};
|
101
|
+
|
102
|
+
createElement = function(name, value) {
|
103
|
+
var element;
|
104
|
+
|
105
|
+
element = document.createElement("input");
|
106
|
+
element.type = "hidden";
|
107
|
+
element.name = name;
|
108
|
+
element.value = value;
|
109
|
+
return element;
|
99
110
|
};
|
100
111
|
|
101
112
|
return Form;
|
@@ -118,52 +129,97 @@
|
|
118
129
|
|
119
130
|
(function() {
|
120
131
|
var modules = window.modules || [];
|
121
|
-
var
|
122
|
-
var
|
132
|
+
var form_serializerCache = null;
|
133
|
+
var form_serializerFunc = function() {
|
123
134
|
return (function() {
|
124
|
-
var
|
135
|
+
var Serializer;
|
125
136
|
|
126
|
-
|
137
|
+
Serializer = (function() {
|
138
|
+
var isCheckable, isComplicated, isFile, isMultiSelect, removeNulls, serializeElement;
|
127
139
|
|
128
|
-
|
129
|
-
function FormElement(name, value, selector, validationRules) {
|
130
|
-
this.name = name;
|
131
|
-
this.value = value;
|
132
|
-
this.selector = selector;
|
133
|
-
this.validationRules = validationRules != null ? validationRules : [];
|
134
|
-
}
|
140
|
+
function Serializer() {}
|
135
141
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
142
|
+
Serializer.toString = function(form) {
|
143
|
+
var element;
|
144
|
+
|
145
|
+
return removeNulls((function() {
|
146
|
+
var _i, _len, _ref, _results;
|
147
|
+
|
148
|
+
_ref = form.elements();
|
149
|
+
_results = [];
|
150
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
151
|
+
element = _ref[_i];
|
152
|
+
_results.push(serializeElement(element));
|
153
|
+
}
|
154
|
+
return _results;
|
155
|
+
})()).join("&");
|
156
|
+
};
|
157
|
+
|
158
|
+
serializeElement = function(element) {
|
159
|
+
var option;
|
160
|
+
|
161
|
+
if (!isComplicated(element)) {
|
162
|
+
return "" + element.name + "=" + (encodeURIComponent(element.value));
|
163
|
+
}
|
164
|
+
if (isCheckable(element) && element.checked) {
|
165
|
+
return "" + element.name + "=" + (encodeURIComponent(element.value));
|
166
|
+
}
|
167
|
+
if (isMultiSelect(element)) {
|
168
|
+
return ((function() {
|
169
|
+
var _i, _len, _ref, _results;
|
170
|
+
|
171
|
+
_ref = element.options;
|
172
|
+
_results = [];
|
173
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
174
|
+
option = _ref[_i];
|
175
|
+
if (option.selected) {
|
176
|
+
_results.push("" + element.name + "=" + (encodeURIComponent(option.value)));
|
177
|
+
}
|
178
|
+
}
|
179
|
+
return _results;
|
180
|
+
})()).join("&");
|
181
|
+
}
|
182
|
+
return null;
|
183
|
+
};
|
184
|
+
|
185
|
+
isComplicated = function(element) {
|
186
|
+
return isCheckable(element) || isMultiSelect(element) || isFile(element);
|
187
|
+
};
|
188
|
+
|
189
|
+
isCheckable = function(element) {
|
190
|
+
var _ref;
|
191
|
+
|
192
|
+
return element.nodeName === "INPUT" && ((_ref = element.type) === "checkbox" || _ref === "radio");
|
193
|
+
};
|
194
|
+
|
195
|
+
isMultiSelect = function(element) {
|
196
|
+
return element.nodeName === "SELECT" && element.type === "select-multiple";
|
197
|
+
};
|
198
|
+
|
199
|
+
isFile = function(element) {
|
200
|
+
return element.nodeName === "INPUT" && element.type === "file";
|
145
201
|
};
|
146
202
|
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
203
|
+
removeNulls = function(array) {
|
204
|
+
return array.filter(function(e) {
|
205
|
+
return e;
|
206
|
+
});
|
151
207
|
};
|
152
208
|
|
153
|
-
return
|
209
|
+
return Serializer;
|
154
210
|
|
155
211
|
})();
|
156
212
|
|
157
|
-
return
|
213
|
+
return Serializer;
|
158
214
|
|
159
215
|
}).call(this);
|
160
216
|
|
161
217
|
};
|
162
|
-
modules.
|
163
|
-
if (
|
164
|
-
|
218
|
+
modules.hoarder__form__form_serializer = function() {
|
219
|
+
if (form_serializerCache === null) {
|
220
|
+
form_serializerCache = form_serializerFunc();
|
165
221
|
}
|
166
|
-
return
|
222
|
+
return form_serializerCache;
|
167
223
|
};
|
168
224
|
window.modules = modules;
|
169
225
|
})();
|
@@ -173,44 +229,89 @@
|
|
173
229
|
var form_managerCache = null;
|
174
230
|
var form_managerFunc = function() {
|
175
231
|
return (function() {
|
176
|
-
var FormManager, FormSubmitter, FormValidator, Signal, SignalRelay;
|
232
|
+
var Form, FormManager, FormSubmitter, FormValidator, Signal, SignalRelay;
|
233
|
+
|
234
|
+
require('patches/event_listeners');
|
177
235
|
|
178
236
|
Signal = require("cronus/signal");
|
179
237
|
|
180
238
|
SignalRelay = require("cronus/signal_relay");
|
181
239
|
|
240
|
+
Form = require('hoarder/form/form');
|
241
|
+
|
182
242
|
FormSubmitter = require('hoarder/submitter/form_submitter');
|
183
243
|
|
184
244
|
FormValidator = require('hoarder/validator/form_validator');
|
185
245
|
|
186
246
|
FormManager = (function() {
|
247
|
+
var getForm, submit;
|
248
|
+
|
249
|
+
FormManager.create = function(pollingUrl, pollFrequency) {
|
250
|
+
if (pollingUrl == null) {
|
251
|
+
pollingUrl = "";
|
252
|
+
}
|
253
|
+
if (pollFrequency == null) {
|
254
|
+
pollFrequency = 1000;
|
255
|
+
}
|
256
|
+
return new this(FormSubmitter.create(pollingUrl, pollFrequency), FormValidator.create());
|
257
|
+
};
|
258
|
+
|
187
259
|
function FormManager(formSubmitter, formValidator) {
|
188
260
|
this.formSubmitter = formSubmitter;
|
189
261
|
this.formValidator = formValidator;
|
190
262
|
this.validatedWithErrors = new Signal();
|
191
263
|
this.submittedWithSuccess = new SignalRelay(this.formSubmitter.submittedWithSuccess);
|
192
264
|
this.submittedWithError = new SignalRelay(this.formSubmitter.submittedWithError);
|
265
|
+
this._forms = [];
|
266
|
+
this._listeners = {};
|
193
267
|
}
|
194
268
|
|
195
|
-
FormManager
|
196
|
-
|
197
|
-
|
269
|
+
FormManager.prototype.manage = function(formId, type) {
|
270
|
+
var form, formElement,
|
271
|
+
_this = this;
|
272
|
+
|
273
|
+
if (type == null) {
|
274
|
+
type = 'simple';
|
198
275
|
}
|
199
|
-
|
276
|
+
if (getForm.call(this, formId) != null) {
|
277
|
+
throw new Error("'" + formId + "' is already a managed form.");
|
278
|
+
}
|
279
|
+
formElement = document.getElementById(formId);
|
280
|
+
form = new Form(formElement);
|
281
|
+
formElement.addEventListener('submit', this._listeners[formId] = function(event) {
|
282
|
+
event.preventDefault();
|
283
|
+
return submit.call(_this, form, type);
|
284
|
+
});
|
285
|
+
this._forms.push(form);
|
286
|
+
return form;
|
200
287
|
};
|
201
288
|
|
202
|
-
FormManager.prototype.
|
203
|
-
|
289
|
+
FormManager.prototype.release = function(formId) {
|
290
|
+
var form;
|
291
|
+
|
292
|
+
form = getForm.call(this, formId);
|
293
|
+
form.formElement.removeEventListener('submit', this._listeners[formId]);
|
294
|
+
delete this._listeners[formId];
|
295
|
+
return this._forms.splice(this._forms.indexOf(form), 1);
|
204
296
|
};
|
205
297
|
|
206
|
-
|
207
|
-
var
|
298
|
+
getForm = function(formId) {
|
299
|
+
var form, _i, _len, _ref;
|
300
|
+
|
301
|
+
_ref = this._forms;
|
302
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
303
|
+
form = _ref[_i];
|
304
|
+
if (form.formElement.id === formId) {
|
305
|
+
return form;
|
306
|
+
}
|
307
|
+
}
|
308
|
+
};
|
208
309
|
|
209
|
-
|
210
|
-
if (
|
211
|
-
return this.
|
310
|
+
submit = function(form, type) {
|
311
|
+
if (this.formValidator.validateForm(form)) {
|
312
|
+
return this.formSubmitter.submit(form, type);
|
212
313
|
} else {
|
213
|
-
return this.
|
314
|
+
return this.validatedWithErrors.dispatch(form);
|
214
315
|
}
|
215
316
|
};
|
216
317
|
|
@@ -246,35 +347,53 @@
|
|
246
347
|
PollingSubmitter = require("hoarder/submitter/submitters/polling_submitter");
|
247
348
|
|
248
349
|
FormSubmitter = (function() {
|
350
|
+
FormSubmitter.create = function(pollingUrl, pollFrequency) {
|
351
|
+
if (pollFrequency == null) {
|
352
|
+
pollFrequency = 1000;
|
353
|
+
}
|
354
|
+
return new this([new SimpleSubmitter(), new PollingSubmitter(pollingUrl, pollFrequency)]);
|
355
|
+
};
|
356
|
+
|
249
357
|
function FormSubmitter(submitters) {
|
250
|
-
var errorSignals, submitter, successSignals
|
358
|
+
var errorSignals, submitter, successSignals;
|
251
359
|
|
252
360
|
this.submitters = submitters;
|
253
|
-
successSignals =
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
361
|
+
successSignals = (function() {
|
362
|
+
var _i, _len, _ref, _results;
|
363
|
+
|
364
|
+
_ref = this.submitters;
|
365
|
+
_results = [];
|
366
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
367
|
+
submitter = _ref[_i];
|
368
|
+
_results.push(submitter.submittedWithSuccess);
|
369
|
+
}
|
370
|
+
return _results;
|
371
|
+
}).call(this);
|
372
|
+
errorSignals = (function() {
|
373
|
+
var _i, _len, _ref, _results;
|
374
|
+
|
375
|
+
_ref = this.submitters;
|
376
|
+
_results = [];
|
377
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
378
|
+
submitter = _ref[_i];
|
379
|
+
_results.push(submitter.submittedWithError);
|
380
|
+
}
|
381
|
+
return _results;
|
382
|
+
}).call(this);
|
261
383
|
this.submittedWithSuccess = new MultiSignalRelay(successSignals);
|
262
384
|
this.submittedWithError = new MultiSignalRelay(errorSignals);
|
263
385
|
}
|
264
386
|
|
265
|
-
FormSubmitter
|
266
|
-
return new this([new SimpleSubmitter(), new PollingSubmitter(pollingUrl, 1000)]);
|
267
|
-
};
|
268
|
-
|
269
|
-
FormSubmitter.prototype.submitForm = function(form) {
|
387
|
+
FormSubmitter.prototype.submit = function(form, type) {
|
270
388
|
var submitter, _i, _len, _ref, _results;
|
271
389
|
|
272
390
|
_ref = this.submitters;
|
273
391
|
_results = [];
|
274
392
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
275
393
|
submitter = _ref[_i];
|
276
|
-
if (submitter.canSubmit(
|
277
|
-
|
394
|
+
if (submitter.canSubmit(type)) {
|
395
|
+
submitter.submit(form);
|
396
|
+
break;
|
278
397
|
} else {
|
279
398
|
_results.push(void 0);
|
280
399
|
}
|
@@ -300,72 +419,117 @@
|
|
300
419
|
window.modules = modules;
|
301
420
|
})();
|
302
421
|
|
422
|
+
(function() {
|
423
|
+
var modules = window.modules || [];
|
424
|
+
var base_submitterCache = null;
|
425
|
+
var base_submitterFunc = function() {
|
426
|
+
return (function() {
|
427
|
+
var BaseSubmitter, Signal;
|
428
|
+
|
429
|
+
Signal = require('cronus/signal');
|
430
|
+
|
431
|
+
BaseSubmitter = (function() {
|
432
|
+
function BaseSubmitter() {
|
433
|
+
this.submittedWithSuccess = new Signal();
|
434
|
+
this.submittedWithError = new Signal();
|
435
|
+
}
|
436
|
+
|
437
|
+
BaseSubmitter.prototype.canSubmit = function(type) {
|
438
|
+
return type === this.type;
|
439
|
+
};
|
440
|
+
|
441
|
+
return BaseSubmitter;
|
442
|
+
|
443
|
+
})();
|
444
|
+
|
445
|
+
return BaseSubmitter;
|
446
|
+
|
447
|
+
}).call(this);
|
448
|
+
|
449
|
+
};
|
450
|
+
modules.hoarder__submitter__submitters__base_submitter = function() {
|
451
|
+
if (base_submitterCache === null) {
|
452
|
+
base_submitterCache = base_submitterFunc();
|
453
|
+
}
|
454
|
+
return base_submitterCache;
|
455
|
+
};
|
456
|
+
window.modules = modules;
|
457
|
+
})();
|
458
|
+
|
303
459
|
(function() {
|
304
460
|
var modules = window.modules || [];
|
305
461
|
var polling_submitterCache = null;
|
306
462
|
var polling_submitterFunc = function() {
|
307
463
|
return (function() {
|
308
|
-
var
|
464
|
+
var BaseSubmitter, PollingSubmitter,
|
309
465
|
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
|
310
466
|
__hasProp = {}.hasOwnProperty,
|
311
467
|
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
312
468
|
|
313
|
-
|
469
|
+
require('lib/reqwest');
|
470
|
+
|
471
|
+
BaseSubmitter = require("hoarder/submitter/submitters/base_submitter");
|
314
472
|
|
315
473
|
PollingSubmitter = (function(_super) {
|
474
|
+
var pollSuccess;
|
475
|
+
|
316
476
|
__extends(PollingSubmitter, _super);
|
317
477
|
|
318
478
|
function PollingSubmitter(pollUrl, pollFrequency) {
|
319
479
|
this.pollUrl = pollUrl;
|
320
480
|
this.pollFrequency = pollFrequency;
|
321
|
-
this.
|
322
|
-
this.queryPoll = __bind(this.queryPoll, this);
|
481
|
+
this.poll = __bind(this.poll, this);
|
323
482
|
PollingSubmitter.__super__.constructor.call(this);
|
483
|
+
this.type = 'polling';
|
324
484
|
}
|
325
485
|
|
326
|
-
PollingSubmitter.prototype.
|
327
|
-
return form.type === "polling";
|
328
|
-
};
|
329
|
-
|
330
|
-
PollingSubmitter.prototype.submitSuccess = function(form, data) {
|
486
|
+
PollingSubmitter.prototype.submit = function(form) {
|
331
487
|
var _this = this;
|
332
488
|
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
489
|
+
return reqwest({
|
490
|
+
url: form.action,
|
491
|
+
type: form.method,
|
492
|
+
data: form.serialize(),
|
493
|
+
success: function(data) {
|
494
|
+
return _this.poll(form, data.processId);
|
495
|
+
},
|
496
|
+
error: function(xhr, text) {
|
497
|
+
return _this.submittedWithError.dispatch(form, text);
|
498
|
+
}
|
499
|
+
});
|
337
500
|
};
|
338
501
|
|
339
|
-
PollingSubmitter.prototype.
|
502
|
+
PollingSubmitter.prototype.poll = function(form, processId) {
|
340
503
|
var _this = this;
|
341
504
|
|
342
|
-
|
343
|
-
this.
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
}
|
354
|
-
});
|
355
|
-
}
|
505
|
+
return reqwest({
|
506
|
+
url: this.pollUrl,
|
507
|
+
type: "POST",
|
508
|
+
data: "processId=" + processId,
|
509
|
+
success: function(data) {
|
510
|
+
return pollSuccess.call(_this, form, processId, data);
|
511
|
+
},
|
512
|
+
error: function(xhr, text) {
|
513
|
+
return _this.submittedWithError.dispatch(form, text);
|
514
|
+
}
|
515
|
+
});
|
356
516
|
};
|
357
517
|
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
return this.submittedWithSuccess.dispatch(form, data.
|
518
|
+
pollSuccess = function(form, processId, data) {
|
519
|
+
var _this = this;
|
520
|
+
|
521
|
+
if (data.processCompleted) {
|
522
|
+
return this.submittedWithSuccess.dispatch(form, data.processData);
|
523
|
+
} else {
|
524
|
+
return setTimeout(function() {
|
525
|
+
return _this.poll(form, data.processId);
|
526
|
+
}, this.pollFrequency);
|
363
527
|
}
|
364
528
|
};
|
365
529
|
|
366
530
|
return PollingSubmitter;
|
367
531
|
|
368
|
-
})(
|
532
|
+
})(BaseSubmitter);
|
369
533
|
|
370
534
|
return PollingSubmitter;
|
371
535
|
|
@@ -386,49 +550,41 @@
|
|
386
550
|
var simple_submitterCache = null;
|
387
551
|
var simple_submitterFunc = function() {
|
388
552
|
return (function() {
|
389
|
-
var
|
553
|
+
var BaseSubmitter, SimpleSubmitter,
|
554
|
+
__hasProp = {}.hasOwnProperty,
|
555
|
+
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
390
556
|
|
391
|
-
require(
|
557
|
+
require('lib/reqwest');
|
392
558
|
|
393
|
-
|
559
|
+
BaseSubmitter = require('hoarder/submitter/submitters/base_submitter');
|
560
|
+
|
561
|
+
SimpleSubmitter = (function(_super) {
|
562
|
+
__extends(SimpleSubmitter, _super);
|
394
563
|
|
395
|
-
SimpleSubmitter = (function() {
|
396
564
|
function SimpleSubmitter() {
|
397
|
-
|
398
|
-
this.
|
565
|
+
SimpleSubmitter.__super__.constructor.call(this);
|
566
|
+
this.type = 'simple';
|
399
567
|
}
|
400
568
|
|
401
|
-
SimpleSubmitter.prototype.
|
402
|
-
return form.type === "simple";
|
403
|
-
};
|
404
|
-
|
405
|
-
SimpleSubmitter.prototype.submitForm = function(form) {
|
569
|
+
SimpleSubmitter.prototype.submit = function(form) {
|
406
570
|
var _this = this;
|
407
571
|
|
408
|
-
return
|
572
|
+
return reqwest({
|
409
573
|
url: form.action,
|
410
574
|
type: form.method,
|
411
575
|
data: form.serialize(),
|
412
576
|
success: function(data) {
|
413
|
-
return _this.
|
577
|
+
return _this.submittedWithSuccess.dispatch(form, data);
|
414
578
|
},
|
415
579
|
error: function(xhr, text) {
|
416
|
-
return _this.
|
580
|
+
return _this.submittedWithError.dispatch(form, text);
|
417
581
|
}
|
418
582
|
});
|
419
583
|
};
|
420
584
|
|
421
|
-
SimpleSubmitter.prototype.submitSuccess = function(form, data) {
|
422
|
-
return this.submittedWithSuccess.dispatch(form, data);
|
423
|
-
};
|
424
|
-
|
425
|
-
SimpleSubmitter.prototype.submitError = function(form, xhr, text) {
|
426
|
-
return this.submittedWithError.dispatch(form, text);
|
427
|
-
};
|
428
|
-
|
429
585
|
return SimpleSubmitter;
|
430
586
|
|
431
|
-
})();
|
587
|
+
})(BaseSubmitter);
|
432
588
|
|
433
589
|
return SimpleSubmitter;
|
434
590
|
|
@@ -449,22 +605,30 @@
|
|
449
605
|
var alpha_constraintCache = null;
|
450
606
|
var alpha_constraintFunc = function() {
|
451
607
|
return (function() {
|
452
|
-
var AlphaConstraint,
|
608
|
+
var AlphaConstraint, BaseConstraint,
|
609
|
+
__hasProp = {}.hasOwnProperty,
|
610
|
+
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
611
|
+
|
612
|
+
BaseConstraint = require('hoarder/validator/constraints/base_constraint');
|
453
613
|
|
454
|
-
|
614
|
+
AlphaConstraint = (function(_super) {
|
615
|
+
__extends(AlphaConstraint, _super);
|
455
616
|
|
456
|
-
|
457
|
-
|
617
|
+
function AlphaConstraint() {
|
618
|
+
this.type = "alpha";
|
619
|
+
}
|
458
620
|
|
459
|
-
AlphaConstraint.prototype.
|
460
|
-
return
|
621
|
+
AlphaConstraint.prototype.rulePasses = function(element) {
|
622
|
+
return element.value.match(/^[A-Za-z\s]*$/);
|
461
623
|
};
|
462
624
|
|
463
|
-
AlphaConstraint.prototype.
|
625
|
+
AlphaConstraint.prototype.errorMessage = function() {
|
626
|
+
return "This field only accepts numbers and characters (0-9, A-Z, a-z).";
|
627
|
+
};
|
464
628
|
|
465
629
|
return AlphaConstraint;
|
466
630
|
|
467
|
-
})();
|
631
|
+
})(BaseConstraint);
|
468
632
|
|
469
633
|
return AlphaConstraint;
|
470
634
|
|
@@ -485,28 +649,30 @@
|
|
485
649
|
var alphanumeric_constraintCache = null;
|
486
650
|
var alphanumeric_constraintFunc = function() {
|
487
651
|
return (function() {
|
488
|
-
var AlphanumericConstraint,
|
652
|
+
var AlphanumericConstraint, BaseConstraint,
|
653
|
+
__hasProp = {}.hasOwnProperty,
|
654
|
+
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
655
|
+
|
656
|
+
BaseConstraint = require('hoarder/validator/constraints/base_constraint');
|
489
657
|
|
490
|
-
|
658
|
+
AlphanumericConstraint = (function(_super) {
|
659
|
+
__extends(AlphanumericConstraint, _super);
|
491
660
|
|
492
|
-
|
493
|
-
|
661
|
+
function AlphanumericConstraint() {
|
662
|
+
this.type = "alphanumeric";
|
663
|
+
}
|
494
664
|
|
495
|
-
AlphanumericConstraint.prototype.
|
496
|
-
return
|
665
|
+
AlphanumericConstraint.prototype.rulePasses = function(element) {
|
666
|
+
return element.value.match(/^[A-Za-z0-9\s]*$/);
|
497
667
|
};
|
498
668
|
|
499
|
-
AlphanumericConstraint.prototype.
|
500
|
-
|
501
|
-
return [];
|
502
|
-
} else {
|
503
|
-
return [new ValidationError("This field only accepts numbers and characters (0-9, A-Z, a-z).")];
|
504
|
-
}
|
669
|
+
AlphanumericConstraint.prototype.errorMessage = function() {
|
670
|
+
return "This field only accepts numbers and characters (0-9, A-Z, a-z).";
|
505
671
|
};
|
506
672
|
|
507
673
|
return AlphanumericConstraint;
|
508
674
|
|
509
|
-
})();
|
675
|
+
})(BaseConstraint);
|
510
676
|
|
511
677
|
return AlphanumericConstraint;
|
512
678
|
|
@@ -522,33 +688,75 @@
|
|
522
688
|
window.modules = modules;
|
523
689
|
})();
|
524
690
|
|
691
|
+
(function() {
|
692
|
+
var modules = window.modules || [];
|
693
|
+
var base_constraintCache = null;
|
694
|
+
var base_constraintFunc = function() {
|
695
|
+
return (function() {
|
696
|
+
var BaseConstraint;
|
697
|
+
|
698
|
+
BaseConstraint = (function() {
|
699
|
+
function BaseConstraint() {
|
700
|
+
this.type = null;
|
701
|
+
}
|
702
|
+
|
703
|
+
BaseConstraint.prototype.canHandle = function(rule) {
|
704
|
+
return rule.type === this.type;
|
705
|
+
};
|
706
|
+
|
707
|
+
BaseConstraint.prototype.handle = function(element, rule) {
|
708
|
+
if (!this.rulePasses(element, rule)) {
|
709
|
+
return element.setCustomValidity(this.errorMessage(rule, element));
|
710
|
+
}
|
711
|
+
};
|
712
|
+
|
713
|
+
return BaseConstraint;
|
714
|
+
|
715
|
+
})();
|
716
|
+
|
717
|
+
return BaseConstraint;
|
718
|
+
|
719
|
+
}).call(this);
|
720
|
+
|
721
|
+
};
|
722
|
+
modules.hoarder__validator__constraints__base_constraint = function() {
|
723
|
+
if (base_constraintCache === null) {
|
724
|
+
base_constraintCache = base_constraintFunc();
|
725
|
+
}
|
726
|
+
return base_constraintCache;
|
727
|
+
};
|
728
|
+
window.modules = modules;
|
729
|
+
})();
|
730
|
+
|
525
731
|
(function() {
|
526
732
|
var modules = window.modules || [];
|
527
733
|
var credit_card_constraintCache = null;
|
528
734
|
var credit_card_constraintFunc = function() {
|
529
735
|
return (function() {
|
530
|
-
var CreditCardConstraint,
|
736
|
+
var BaseConstraint, CreditCardConstraint,
|
737
|
+
__hasProp = {}.hasOwnProperty,
|
738
|
+
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
531
739
|
|
532
|
-
|
740
|
+
BaseConstraint = require('hoarder/validator/constraints/base_constraint');
|
533
741
|
|
534
|
-
CreditCardConstraint = (function() {
|
535
|
-
|
742
|
+
CreditCardConstraint = (function(_super) {
|
743
|
+
__extends(CreditCardConstraint, _super);
|
536
744
|
|
537
|
-
CreditCardConstraint
|
538
|
-
|
745
|
+
function CreditCardConstraint() {
|
746
|
+
this.type = "creditCard";
|
747
|
+
}
|
748
|
+
|
749
|
+
CreditCardConstraint.prototype.rulePasses = function(element) {
|
750
|
+
return element.value.match(/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/);
|
539
751
|
};
|
540
752
|
|
541
|
-
CreditCardConstraint.prototype.
|
542
|
-
|
543
|
-
return [];
|
544
|
-
} else {
|
545
|
-
return [new ValidationError("Please enter a valid credit card number.")];
|
546
|
-
}
|
753
|
+
CreditCardConstraint.prototype.errorMessage = function() {
|
754
|
+
return "Please enter a valid credit card number.";
|
547
755
|
};
|
548
756
|
|
549
757
|
return CreditCardConstraint;
|
550
758
|
|
551
|
-
})();
|
759
|
+
})(BaseConstraint);
|
552
760
|
|
553
761
|
return CreditCardConstraint;
|
554
762
|
|
@@ -569,28 +777,30 @@
|
|
569
777
|
var email_constraintCache = null;
|
570
778
|
var email_constraintFunc = function() {
|
571
779
|
return (function() {
|
572
|
-
var EmailConstraint,
|
780
|
+
var BaseConstraint, EmailConstraint,
|
781
|
+
__hasProp = {}.hasOwnProperty,
|
782
|
+
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
573
783
|
|
574
|
-
|
784
|
+
BaseConstraint = require('hoarder/validator/constraints/base_constraint');
|
575
785
|
|
576
|
-
EmailConstraint = (function() {
|
577
|
-
|
786
|
+
EmailConstraint = (function(_super) {
|
787
|
+
__extends(EmailConstraint, _super);
|
578
788
|
|
579
|
-
EmailConstraint
|
580
|
-
|
789
|
+
function EmailConstraint() {
|
790
|
+
this.type = "email";
|
791
|
+
}
|
792
|
+
|
793
|
+
EmailConstraint.prototype.rulePasses = function(element) {
|
794
|
+
return element.value.match(/^([a-zA-Z0-9_-]+)@([a-zA-Z0-9.-]+)\.([a-zA-Z]{2,4})$/i);
|
581
795
|
};
|
582
796
|
|
583
|
-
EmailConstraint.prototype.
|
584
|
-
|
585
|
-
return [];
|
586
|
-
} else {
|
587
|
-
return [new ValidationError("Please enter a valid email address.")];
|
588
|
-
}
|
797
|
+
EmailConstraint.prototype.errorMessage = function() {
|
798
|
+
return "Please enter a valid email address.";
|
589
799
|
};
|
590
800
|
|
591
801
|
return EmailConstraint;
|
592
802
|
|
593
|
-
})();
|
803
|
+
})(BaseConstraint);
|
594
804
|
|
595
805
|
return EmailConstraint;
|
596
806
|
|
@@ -611,28 +821,30 @@
|
|
611
821
|
var max_length_constraintCache = null;
|
612
822
|
var max_length_constraintFunc = function() {
|
613
823
|
return (function() {
|
614
|
-
var MaxLengthConstraint,
|
824
|
+
var BaseConstraint, MaxLengthConstraint,
|
825
|
+
__hasProp = {}.hasOwnProperty,
|
826
|
+
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
615
827
|
|
616
|
-
|
828
|
+
BaseConstraint = require("hoarder/validator/constraints/base_constraint");
|
617
829
|
|
618
|
-
MaxLengthConstraint = (function() {
|
619
|
-
|
830
|
+
MaxLengthConstraint = (function(_super) {
|
831
|
+
__extends(MaxLengthConstraint, _super);
|
620
832
|
|
621
|
-
MaxLengthConstraint
|
622
|
-
|
833
|
+
function MaxLengthConstraint() {
|
834
|
+
this.type = "maxLength";
|
835
|
+
}
|
836
|
+
|
837
|
+
MaxLengthConstraint.prototype.rulePasses = function(element, rule) {
|
838
|
+
return element.value.length <= rule.context;
|
623
839
|
};
|
624
840
|
|
625
|
-
MaxLengthConstraint.prototype.
|
626
|
-
|
627
|
-
return [];
|
628
|
-
} else {
|
629
|
-
return [new ValidationError("The maximum length of this field is " + context.value + ".")];
|
630
|
-
}
|
841
|
+
MaxLengthConstraint.prototype.errorMessage = function(rule) {
|
842
|
+
return "The maximum length of this field is " + rule.context + ".";
|
631
843
|
};
|
632
844
|
|
633
845
|
return MaxLengthConstraint;
|
634
846
|
|
635
|
-
})();
|
847
|
+
})(BaseConstraint);
|
636
848
|
|
637
849
|
return MaxLengthConstraint;
|
638
850
|
|
@@ -653,28 +865,30 @@
|
|
653
865
|
var min_length_constraintCache = null;
|
654
866
|
var min_length_constraintFunc = function() {
|
655
867
|
return (function() {
|
656
|
-
var MinLengthConstraint,
|
868
|
+
var BaseConstraint, MinLengthConstraint,
|
869
|
+
__hasProp = {}.hasOwnProperty,
|
870
|
+
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
657
871
|
|
658
|
-
|
872
|
+
BaseConstraint = require("hoarder/validator/constraints/base_constraint");
|
659
873
|
|
660
|
-
MinLengthConstraint = (function() {
|
661
|
-
|
874
|
+
MinLengthConstraint = (function(_super) {
|
875
|
+
__extends(MinLengthConstraint, _super);
|
662
876
|
|
663
|
-
MinLengthConstraint
|
664
|
-
|
877
|
+
function MinLengthConstraint() {
|
878
|
+
this.type = "minLength";
|
879
|
+
}
|
880
|
+
|
881
|
+
MinLengthConstraint.prototype.rulePasses = function(element, rule) {
|
882
|
+
return element.value.length >= rule.context;
|
665
883
|
};
|
666
884
|
|
667
|
-
MinLengthConstraint.prototype.
|
668
|
-
|
669
|
-
return [];
|
670
|
-
} else {
|
671
|
-
return [new ValidationError("The minimum length of this field is " + context.value + ".")];
|
672
|
-
}
|
885
|
+
MinLengthConstraint.prototype.errorMessage = function(rule) {
|
886
|
+
return "The minimum length of this field is " + rule.context + ".";
|
673
887
|
};
|
674
888
|
|
675
889
|
return MinLengthConstraint;
|
676
890
|
|
677
|
-
})();
|
891
|
+
})(BaseConstraint);
|
678
892
|
|
679
893
|
return MinLengthConstraint;
|
680
894
|
|
@@ -695,28 +909,30 @@
|
|
695
909
|
var numeric_constraintCache = null;
|
696
910
|
var numeric_constraintFunc = function() {
|
697
911
|
return (function() {
|
698
|
-
var NumericConstraint,
|
912
|
+
var BaseConstraint, NumericConstraint,
|
913
|
+
__hasProp = {}.hasOwnProperty,
|
914
|
+
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
699
915
|
|
700
|
-
|
916
|
+
BaseConstraint = require("hoarder/validator/constraints/base_constraint");
|
701
917
|
|
702
|
-
NumericConstraint = (function() {
|
703
|
-
|
918
|
+
NumericConstraint = (function(_super) {
|
919
|
+
__extends(NumericConstraint, _super);
|
704
920
|
|
705
|
-
NumericConstraint
|
706
|
-
|
921
|
+
function NumericConstraint() {
|
922
|
+
this.type = "numeric";
|
923
|
+
}
|
924
|
+
|
925
|
+
NumericConstraint.prototype.rulePasses = function(element) {
|
926
|
+
return element.value.match(/^[0-9]*$/);
|
707
927
|
};
|
708
928
|
|
709
|
-
NumericConstraint.prototype.
|
710
|
-
|
711
|
-
return [];
|
712
|
-
} else {
|
713
|
-
return [new ValidationError("This field only accepts numbers (0-9).")];
|
714
|
-
}
|
929
|
+
NumericConstraint.prototype.errorMessage = function() {
|
930
|
+
return "This field only accepts numbers (0-9).";
|
715
931
|
};
|
716
932
|
|
717
933
|
return NumericConstraint;
|
718
934
|
|
719
|
-
})();
|
935
|
+
})(BaseConstraint);
|
720
936
|
|
721
937
|
return NumericConstraint;
|
722
938
|
|
@@ -737,28 +953,30 @@
|
|
737
953
|
var phone_constraintCache = null;
|
738
954
|
var phone_constraintFunc = function() {
|
739
955
|
return (function() {
|
740
|
-
var PhoneConstraint,
|
956
|
+
var BaseConstraint, PhoneConstraint,
|
957
|
+
__hasProp = {}.hasOwnProperty,
|
958
|
+
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
741
959
|
|
742
|
-
|
960
|
+
BaseConstraint = require('hoarder/validator/constraints/base_constraint');
|
743
961
|
|
744
|
-
PhoneConstraint = (function() {
|
745
|
-
|
962
|
+
PhoneConstraint = (function(_super) {
|
963
|
+
__extends(PhoneConstraint, _super);
|
746
964
|
|
747
|
-
PhoneConstraint
|
748
|
-
|
965
|
+
function PhoneConstraint() {
|
966
|
+
this.type = "phone";
|
967
|
+
}
|
968
|
+
|
969
|
+
PhoneConstraint.prototype.rulePasses = function(element) {
|
970
|
+
return element.value.match(/^\d?[.(\-]?\d\d\d[.)\-]?\d\d\d[.\-]?\d\d\d\d$/);
|
749
971
|
};
|
750
972
|
|
751
|
-
PhoneConstraint.prototype.
|
752
|
-
|
753
|
-
return [];
|
754
|
-
} else {
|
755
|
-
return [new ValidationError("Please enter a valid phone number.")];
|
756
|
-
}
|
973
|
+
PhoneConstraint.prototype.errorMessage = function() {
|
974
|
+
return "Please enter a valid phone number.";
|
757
975
|
};
|
758
976
|
|
759
977
|
return PhoneConstraint;
|
760
978
|
|
761
|
-
})();
|
979
|
+
})(BaseConstraint);
|
762
980
|
|
763
981
|
return PhoneConstraint;
|
764
982
|
|
@@ -779,28 +997,30 @@
|
|
779
997
|
var required_constraintCache = null;
|
780
998
|
var required_constraintFunc = function() {
|
781
999
|
return (function() {
|
782
|
-
var RequiredConstraint,
|
1000
|
+
var BaseConstraint, RequiredConstraint,
|
1001
|
+
__hasProp = {}.hasOwnProperty,
|
1002
|
+
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
783
1003
|
|
784
|
-
|
1004
|
+
BaseConstraint = require('hoarder/validator/constraints/base_constraint');
|
785
1005
|
|
786
|
-
RequiredConstraint = (function() {
|
787
|
-
|
1006
|
+
RequiredConstraint = (function(_super) {
|
1007
|
+
__extends(RequiredConstraint, _super);
|
788
1008
|
|
789
|
-
RequiredConstraint
|
790
|
-
|
1009
|
+
function RequiredConstraint() {
|
1010
|
+
this.type = "required";
|
1011
|
+
}
|
1012
|
+
|
1013
|
+
RequiredConstraint.prototype.rulePasses = function(element) {
|
1014
|
+
return (element.value != null) && element.value !== "";
|
791
1015
|
};
|
792
1016
|
|
793
|
-
RequiredConstraint.prototype.
|
794
|
-
|
795
|
-
return [];
|
796
|
-
} else {
|
797
|
-
return [new ValidationError("This field is required.")];
|
798
|
-
}
|
1017
|
+
RequiredConstraint.prototype.errorMessage = function() {
|
1018
|
+
return "This field is required.";
|
799
1019
|
};
|
800
1020
|
|
801
1021
|
return RequiredConstraint;
|
802
1022
|
|
803
|
-
})();
|
1023
|
+
})(BaseConstraint);
|
804
1024
|
|
805
1025
|
return RequiredConstraint;
|
806
1026
|
|
@@ -818,46 +1038,20 @@
|
|
818
1038
|
|
819
1039
|
(function() {
|
820
1040
|
var modules = window.modules || [];
|
821
|
-
var
|
822
|
-
var
|
1041
|
+
var form_validatorCache = null;
|
1042
|
+
var form_validatorFunc = function() {
|
823
1043
|
return (function() {
|
824
|
-
var
|
1044
|
+
var AlphaConstraint, AlphanumericConstraint, CreditCardConstraint, EmailConstraint, FormValidator, MaxLengthConstraint, MinLengthConstraint, NumericConstraint, PhoneConstraint, RequiredConstraint, ValidationRule;
|
825
1045
|
|
826
|
-
|
827
|
-
function ValidationError(message) {
|
828
|
-
this.message = message;
|
829
|
-
}
|
1046
|
+
ValidationRule = require('hoarder/validator/rules/validation_rule');
|
830
1047
|
|
831
|
-
|
1048
|
+
AlphaConstraint = require("hoarder/validator/constraints/alpha_constraint");
|
832
1049
|
|
833
|
-
|
1050
|
+
AlphanumericConstraint = require("hoarder/validator/constraints/alphanumeric_constraint");
|
834
1051
|
|
835
|
-
|
1052
|
+
CreditCardConstraint = require("hoarder/validator/constraints/credit_card_constraint");
|
836
1053
|
|
837
|
-
|
838
|
-
|
839
|
-
};
|
840
|
-
modules.hoarder__validator__error__validation_error = function() {
|
841
|
-
if (validation_errorCache === null) {
|
842
|
-
validation_errorCache = validation_errorFunc();
|
843
|
-
}
|
844
|
-
return validation_errorCache;
|
845
|
-
};
|
846
|
-
window.modules = modules;
|
847
|
-
})();
|
848
|
-
|
849
|
-
(function() {
|
850
|
-
var modules = window.modules || [];
|
851
|
-
var form_validatorCache = null;
|
852
|
-
var form_validatorFunc = function() {
|
853
|
-
return (function() {
|
854
|
-
var AlphanumericConstraint, CreditCardConstraint, EmailConstraint, FormValidator, MaxLengthConstraint, MinLengthConstraint, NumericConstraint, PhoneConstraint, RequiredConstraint;
|
855
|
-
|
856
|
-
AlphanumericConstraint = require("hoarder/validator/constraints/alphanumeric_constraint");
|
857
|
-
|
858
|
-
CreditCardConstraint = require("hoarder/validator/constraints/credit_card_constraint");
|
859
|
-
|
860
|
-
EmailConstraint = require("hoarder/validator/constraints/email_constraint");
|
1054
|
+
EmailConstraint = require("hoarder/validator/constraints/email_constraint");
|
861
1055
|
|
862
1056
|
MaxLengthConstraint = require("hoarder/validator/constraints/max_length_constraint");
|
863
1057
|
|
@@ -870,51 +1064,74 @@
|
|
870
1064
|
RequiredConstraint = require("hoarder/validator/constraints/required_constraint");
|
871
1065
|
|
872
1066
|
FormValidator = (function() {
|
1067
|
+
var isValid, validationStringsFrom;
|
1068
|
+
|
1069
|
+
FormValidator.libraryConstraints = [new AlphaConstraint(), new AlphanumericConstraint(), new CreditCardConstraint(), new EmailConstraint(), new MaxLengthConstraint(), new MinLengthConstraint(), new NumericConstraint(), new PhoneConstraint(), new RequiredConstraint()];
|
1070
|
+
|
1071
|
+
FormValidator.create = function() {
|
1072
|
+
return new this(FormValidator.libraryConstraints);
|
1073
|
+
};
|
1074
|
+
|
873
1075
|
function FormValidator(constraints) {
|
874
1076
|
this.constraints = constraints;
|
875
1077
|
}
|
876
1078
|
|
877
|
-
FormValidator["default"] = function() {
|
878
|
-
return new this([new AlphanumericConstraint(), new CreditCardConstraint(), new EmailConstraint(), new MaxLengthConstraint(), new MinLengthConstraint(), new NumericConstraint(), new PhoneConstraint(), new RequiredConstraint()]);
|
879
|
-
};
|
880
|
-
|
881
1079
|
FormValidator.prototype.validateForm = function(form) {
|
882
|
-
var element,
|
1080
|
+
var element, isValid, _i, _len, _ref;
|
883
1081
|
|
884
|
-
|
1082
|
+
isValid = true;
|
885
1083
|
_ref = form.elements();
|
886
1084
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
887
1085
|
element = _ref[_i];
|
888
|
-
|
1086
|
+
if (!this.validateElement(element)) {
|
1087
|
+
isValid = false;
|
1088
|
+
}
|
889
1089
|
}
|
890
|
-
return
|
1090
|
+
return isValid;
|
891
1091
|
};
|
892
1092
|
|
893
1093
|
FormValidator.prototype.validateElement = function(element) {
|
894
|
-
var constraint,
|
1094
|
+
var constraint, rule, ruleString, _i, _j, _len, _len1, _ref, _ref1;
|
895
1095
|
|
896
|
-
_ref = element
|
1096
|
+
_ref = validationStringsFrom(element);
|
897
1097
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
898
|
-
|
899
|
-
|
900
|
-
type = ruleParts[0];
|
901
|
-
context = {};
|
902
|
-
if (ruleParts.length > 1) {
|
903
|
-
context.value = ruleParts[1];
|
904
|
-
}
|
1098
|
+
ruleString = _ref[_i];
|
1099
|
+
rule = ValidationRule.fromString(ruleString);
|
905
1100
|
_ref1 = this.constraints;
|
906
1101
|
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
|
907
1102
|
constraint = _ref1[_j];
|
908
|
-
if (constraint.canHandle(
|
909
|
-
|
910
|
-
if (errors.length > 0) {
|
911
|
-
element.addError(errors[0]);
|
912
|
-
return errors;
|
913
|
-
}
|
1103
|
+
if (constraint.canHandle(rule)) {
|
1104
|
+
constraint.handle(element, rule);
|
914
1105
|
}
|
1106
|
+
if (!isValid(element)) {
|
1107
|
+
break;
|
1108
|
+
}
|
1109
|
+
}
|
1110
|
+
if (!isValid(element)) {
|
1111
|
+
break;
|
915
1112
|
}
|
916
1113
|
}
|
917
|
-
return
|
1114
|
+
return isValid(element);
|
1115
|
+
};
|
1116
|
+
|
1117
|
+
validationStringsFrom = function(element) {
|
1118
|
+
var ruleString, validationAttribute, _i, _len, _ref, _results;
|
1119
|
+
|
1120
|
+
validationAttribute = element.getAttribute("data-validation");
|
1121
|
+
if (validationAttribute == null) {
|
1122
|
+
return [];
|
1123
|
+
}
|
1124
|
+
_ref = validationAttribute.split(',');
|
1125
|
+
_results = [];
|
1126
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
1127
|
+
ruleString = _ref[_i];
|
1128
|
+
_results.push(ruleString.trim());
|
1129
|
+
}
|
1130
|
+
return _results;
|
1131
|
+
};
|
1132
|
+
|
1133
|
+
isValid = function(element) {
|
1134
|
+
return !element.validity.customError;
|
918
1135
|
};
|
919
1136
|
|
920
1137
|
return FormValidator;
|
@@ -937,19 +1154,2256 @@
|
|
937
1154
|
|
938
1155
|
(function() {
|
939
1156
|
var modules = window.modules || [];
|
940
|
-
var
|
941
|
-
var
|
942
|
-
|
943
|
-
|
944
|
-
*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;
|
945
|
-
return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="<a name='"+x+"'></a><div name='"+x+"'></div>",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="<input type='hidden' i=''/>",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&>(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Nt=/^(?:checkbox|radio)$/i,Ct=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l)
|
946
|
-
}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=ln(e,t),Pt.detach()),Gt[e]=n),n}function ln(e,t){var n=b(t.createElement(e)).appendTo(t.body),r=b.css(n[0],"display");return n.remove(),r}b.each(["height","width"],function(e,n){b.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(b.css(e,"display"))?b.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,i),i):0)}}}),b.support.opacity||(b.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=b.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===b.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),b(function(){b.support.reliableMarginRight||(b.cssHooks.marginRight={get:function(e,n){return n?b.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!b.support.pixelPosition&&b.fn.position&&b.each(["top","left"],function(e,n){b.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?b(e).position()[n]+"px":r):t}}})}),b.expr&&b.expr.filters&&(b.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!b.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||b.css(e,"display"))},b.expr.filters.visible=function(e){return!b.expr.filters.hidden(e)}),b.each({margin:"",padding:"",border:"Width"},function(e,t){b.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(b.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=b.prop(this,"elements");return e?b.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!b(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Nt.test(e))}).map(function(e,t){var n=b(this).val();return null==n?null:b.isArray(n)?b.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),b.param=function(e,n){var r,i=[],o=function(e,t){t=b.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=b.ajaxSettings&&b.ajaxSettings.traditional),b.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(b.isArray(t))b.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==b.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}b.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){b.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),b.fn.hover=function(e,t){return this.mouseenter(e).mouseleave(t||e)};var mn,yn,vn=b.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Nn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Cn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=b.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=a.href}catch(Ln){yn=o.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(b.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(u){var l;return o[u]=!0,b.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||a||o[c]?a?!(l=c):t:(n.dataTypes.unshift(c),s(c),!1)}),l}return s(n.dataTypes[0])||!o["*"]&&s("*")}function Mn(e,n){var r,i,o=b.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&b.extend(!0,e,r),e}b.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),b.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&b.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?b("<div>").append(b.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},b.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){b.fn[t]=function(e){return this.on(t,e)}}),b.each(["get","post"],function(e,n){b[n]=function(e,r,i,o){return b.isFunction(r)&&(o=o||i,i=r,r=t),b.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Nn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Mn(Mn(e,b.ajaxSettings),t):Mn(b.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,u,l,c,p=b.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?b(f):b.event,h=b.Deferred(),g=b.Callbacks("once memory"),m=p.statusCode||{},y={},v={},x=0,T="canceled",N={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)m[t]=[m[t],e[t]];else N.always(e[N.status]);return this},abort:function(e){var t=e||T;return l&&l.abort(t),k(0,t),this}};if(h.promise(N).complete=g.add,N.success=N.done,N.error=N.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=b.trim(p.dataType||"*").toLowerCase().match(w)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?80:443))==(mn[3]||("http:"===mn[1]?80:443)))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=b.param(p.data,p.traditional)),qn(An,p,n,N),2===x)return N;u=p.global,u&&0===b.active++&&b.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Cn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(b.lastModified[o]&&N.setRequestHeader("If-Modified-Since",b.lastModified[o]),b.etag[o]&&N.setRequestHeader("If-None-Match",b.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&N.setRequestHeader("Content-Type",p.contentType),N.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)N.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,N,p)===!1||2===x))return N.abort();T="abort";for(i in{success:1,error:1,complete:1})N[i](p[i]);if(l=qn(jn,p,n,N)){N.readyState=1,u&&d.trigger("ajaxSend",[N,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){N.abort("timeout")},p.timeout));try{x=1,l.send(y,k)}catch(C){if(!(2>x))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,C=n;2!==x&&(x=2,s&&clearTimeout(s),l=t,a=i||"",N.readyState=e>0?4:0,r&&(w=_n(p,N,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=N.getResponseHeader("Last-Modified"),T&&(b.lastModified[o]=T),T=N.getResponseHeader("etag"),T&&(b.etag[o]=T)),204===e?(c=!0,C="nocontent"):304===e?(c=!0,C="notmodified"):(c=Fn(p,w),C=c.state,y=c.data,v=c.error,c=!v)):(v=C,(e||!C)&&(C="error",0>e&&(e=0))),N.status=e,N.statusText=(n||C)+"",c?h.resolveWith(f,[y,C,N]):h.rejectWith(f,[N,C,v]),N.statusCode(m),m=t,u&&d.trigger(c?"ajaxSuccess":"ajaxError",[N,p,c?y:v]),g.fireWith(f,[N,C]),u&&(d.trigger("ajaxComplete",[N,p]),--b.active||b.event.trigger("ajaxStop")))}return N},getScript:function(e,n){return b.get(e,t,n,"script")},getJSON:function(e,t,n){return b.get(e,t,n,"json")}});function _n(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(s in c)s in r&&(n[c[s]]=r[s]);while("*"===l[0])l.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in u)if(u[s]&&u[s].test(o)){l.unshift(s);break}if(l[0]in r)a=l[0];else{for(s in r){if(!l[0]||e.converters[s+" "+l[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function Fn(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(i in e.converters)a[i.toLowerCase()]=e.converters[i];for(;r=u[++s];)if("*"!==r){if("*"!==l&&l!==r){if(i=a[l+" "+r]||a["* "+r],!i)for(n in a)if(o=n.split(" "),o[1]===r&&(i=a[l+" "+o[0]]||a["* "+o[0]])){i===!0?i=a[n]:a[n]!==!0&&(r=o[0],u.splice(s--,0,r));break}if(i!==!0)if(i&&e["throws"])t=i(t);else try{t=i(t)}catch(c){return{state:"parsererror",error:i?c:"No conversion from "+l+" to "+r}}}l=r}return{state:"success",data:t}}b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),b.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=o.head||b("head")[0]||o.documentElement;return{send:function(t,i){n=o.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var On=[],Bn=/(=)\?(?=&|$)|\?\?/;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=On.pop()||b.expando+"_"+vn++;return this[e]=!0,e}}),b.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=b.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||b.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,On.push(o)),s&&b.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}b.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=b.ajaxSettings.xhr(),b.support.cors=!!Rn&&"withCredentials"in Rn,Rn=b.support.ajax=!!Rn,Rn&&b.ajaxTransport(function(n){if(!n.crossDomain||b.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=b.noop,$n&&delete Pn[a]),i)4!==u.readyState&&u.abort();else{p={},s=u.status,l=u.getAllResponseHeaders(),"string"==typeof u.responseText&&(p.text=u.responseText);try{c=u.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,l)},n.async?4===u.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},b(e).unload($n)),Pn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+x+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=Yn.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(b.cssNumber[e]?"":"px"),"px"!==r&&s){s=b.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,b.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=b.now()}function Zn(e,t){b.each(t,function(t,n){var r=(Qn[t]||[]).concat(Qn["*"]),i=0,o=r.length;for(;o>i;i++)if(r[i].call(e,t,n))return})}function er(e,t,n){var r,i,o=0,a=Gn.length,s=b.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;for(;u>a;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:b.extend({},t),opts:b.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=b.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(tr(c,l.opts.specialEasing);a>o;o++)if(r=Gn[o].call(l,e,c,l.opts))return r;return Zn(l,c),b.isFunction(l.opts.start)&&l.opts.start.call(e,l),b.fx.timer(b.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function tr(e,t){var n,r,i,o,a;for(i in e)if(r=b.camelCase(i),o=t[r],n=e[i],b.isArray(n)&&(o=n[1],n=e[i]=n[0]),i!==r&&(e[r]=n,delete e[i]),a=b.cssHooks[r],a&&"expand"in a){n=a.expand(n),delete e[r];for(i in n)i in e||(e[i]=n[i],t[i]=o)}else t[r]=o}b.Animation=b.extend(er,{tweener:function(e,t){b.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,u,l,c,p,f=this,d=e.style,h={},g=[],m=e.nodeType&&nn(e);n.queue||(c=b._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,p=c.empty.fire,c.empty.fire=function(){c.unqueued||p()}),c.unqueued++,f.always(function(){f.always(function(){c.unqueued--,b.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],"inline"===b.css(e,"display")&&"none"===b.css(e,"float")&&(b.support.inlineBlockNeedsLayout&&"inline"!==un(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",b.support.shrinkWrapBlocks||f.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(a=t[i],Vn.exec(a)){if(delete t[i],u=u||"toggle"===a,a===(m?"hide":"show"))continue;g.push(i)}if(o=g.length){s=b._data(e,"fxshow")||b._data(e,"fxshow",{}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?b(e).show():f.done(function(){b(e).hide()}),f.done(function(){var t;b._removeData(e,"fxshow");for(t in h)b.style(e,t,h[t])});for(i=0;o>i;i++)r=g[i],l=f.createTween(r,m?s[r]:0),h[r]=s[r]||b.style(e,r),r in s||(s[r]=l.start,m&&(l.end=l.start,l.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}b.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=b.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[b.cssProps[e.prop]]||b.cssHooks[e.prop])?b.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.each(["toggle","show","hide"],function(e,t){var n=b.fn[t];b.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),b.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=b.isEmptyObject(e),o=b.speed(t,n,r),a=function(){var t=er(this,b.extend({},e),o);a.finish=function(){t.stop(!0)},(i||b._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=b.timers,a=b._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&b.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=b._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=b.timers,a=r?r.length:0;for(n.finish=!0,b.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}b.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){b.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),b.speed=function(e,t,n){var r=e&&"object"==typeof e?b.extend({},e):{complete:n||!n&&t||b.isFunction(e)&&e,duration:e,easing:n&&t||t&&!b.isFunction(t)&&t};return r.duration=b.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in b.fx.speeds?b.fx.speeds[r.duration]:b.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){b.isFunction(r.old)&&r.old.call(this),r.queue&&b.dequeue(this,r.queue)},r},b.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},b.timers=[],b.fx=rr.prototype.init,b.fx.tick=function(){var e,n=b.timers,r=0;for(Xn=b.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||b.fx.stop(),Xn=t},b.fx.timer=function(e){e()&&b.timers.push(e)&&b.fx.start()},b.fx.interval=13,b.fx.start=function(){Un||(Un=setInterval(b.fx.tick,b.fx.interval))},b.fx.stop=function(){clearInterval(Un),Un=null},b.fx.speeds={slow:600,fast:200,_default:400},b.fx.step={},b.expr&&b.expr.filters&&(b.expr.filters.animated=function(e){return b.grep(b.timers,function(t){return e===t.elem}).length}),b.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){b.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,b.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},b.offset={setOffset:function(e,t,n){var r=b.css(e,"position");"static"===r&&(e.style.position="relative");var i=b(e),o=i.offset(),a=b.css(e,"top"),s=b.css(e,"left"),u=("absolute"===r||"fixed"===r)&&b.inArray("auto",[a,s])>-1,l={},c={},p,f;u?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),b.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(l.top=t.top-o.top+p),null!=t.left&&(l.left=t.left-o.left+f),"using"in t?t.using.call(e,l):i.css(l)}},b.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===b.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),b.nodeName(e[0],"html")||(n=e.offset()),n.top+=b.css(e[0],"borderTopWidth",!0),n.left+=b.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-b.css(r,"marginTop",!0),left:t.left-n.left-b.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||o.documentElement;while(e&&!b.nodeName(e,"html")&&"static"===b.css(e,"position"))e=e.offsetParent;return e||o.documentElement})}}),b.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);b.fn[e]=function(i){return b.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?b(a).scrollLeft():o,r?o:b(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return b.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}b.each({Height:"height",Width:"width"},function(e,n){b.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){b.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return b.access(this,function(n,r,i){var o;return b.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?b.css(n,r,s):b.style(n,r,i,s)},n,a?i:t,a,null)}})}),e.jQuery=e.$=b,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return b})})(window);
|
1157
|
+
var validation_ruleCache = null;
|
1158
|
+
var validation_ruleFunc = function() {
|
1159
|
+
return (function() {
|
1160
|
+
var ValidationRule;
|
1161
|
+
|
1162
|
+
ValidationRule = (function() {
|
1163
|
+
function ValidationRule(type, context) {
|
1164
|
+
this.type = type;
|
1165
|
+
this.context = context != null ? context : null;
|
1166
|
+
}
|
1167
|
+
|
1168
|
+
ValidationRule.fromString = function(ruleString) {
|
1169
|
+
var context, ruleParts;
|
1170
|
+
|
1171
|
+
ruleParts = ruleString.split('=');
|
1172
|
+
context = ruleParts[1] != null ? ruleParts[1] : null;
|
1173
|
+
return new this(ruleParts[0], context);
|
1174
|
+
};
|
1175
|
+
|
1176
|
+
return ValidationRule;
|
1177
|
+
|
1178
|
+
})();
|
1179
|
+
|
1180
|
+
return ValidationRule;
|
1181
|
+
|
1182
|
+
}).call(this);
|
1183
|
+
|
947
1184
|
};
|
948
|
-
modules.
|
949
|
-
if (
|
950
|
-
|
1185
|
+
modules.hoarder__validator__rules__validation_rule = function() {
|
1186
|
+
if (validation_ruleCache === null) {
|
1187
|
+
validation_ruleCache = validation_ruleFunc();
|
951
1188
|
}
|
952
|
-
return
|
1189
|
+
return validation_ruleCache;
|
1190
|
+
};
|
1191
|
+
window.modules = modules;
|
1192
|
+
})();
|
1193
|
+
|
1194
|
+
(function() {
|
1195
|
+
var modules = window.modules || [];
|
1196
|
+
var bonzoCache = null;
|
1197
|
+
var bonzoFunc = function() {
|
1198
|
+
/*!
|
1199
|
+
* Bonzo: DOM Utility (c) Dustin Diaz 2012
|
1200
|
+
* https://github.com/ded/bonzo
|
1201
|
+
* License MIT
|
1202
|
+
*/
|
1203
|
+
(function (name, context, definition) {
|
1204
|
+
if (typeof module != 'undefined' && module.exports) module.exports = definition()
|
1205
|
+
else if (typeof define == 'function' && define.amd) define(definition)
|
1206
|
+
else context[name] = definition()
|
1207
|
+
})('bonzo', this, function() {
|
1208
|
+
var win = window
|
1209
|
+
, doc = win.document
|
1210
|
+
, html = doc.documentElement
|
1211
|
+
, parentNode = 'parentNode'
|
1212
|
+
, specialAttributes = /^(checked|value|selected|disabled)$/i
|
1213
|
+
// tags that we have trouble inserting *into*
|
1214
|
+
, specialTags = /^(select|fieldset|table|tbody|tfoot|td|tr|colgroup)$/i
|
1215
|
+
, simpleScriptTagRe = /\s*<script +src=['"]([^'"]+)['"]>/
|
1216
|
+
, table = ['<table>', '</table>', 1]
|
1217
|
+
, td = ['<table><tbody><tr>', '</tr></tbody></table>', 3]
|
1218
|
+
, option = ['<select>', '</select>', 1]
|
1219
|
+
, noscope = ['_', '', 0, 1]
|
1220
|
+
, tagMap = { // tags that we have trouble *inserting*
|
1221
|
+
thead: table, tbody: table, tfoot: table, colgroup: table, caption: table
|
1222
|
+
, tr: ['<table><tbody>', '</tbody></table>', 2]
|
1223
|
+
, th: td , td: td
|
1224
|
+
, col: ['<table><colgroup>', '</colgroup></table>', 2]
|
1225
|
+
, fieldset: ['<form>', '</form>', 1]
|
1226
|
+
, legend: ['<form><fieldset>', '</fieldset></form>', 2]
|
1227
|
+
, option: option, optgroup: option
|
1228
|
+
, script: noscope, style: noscope, link: noscope, param: noscope, base: noscope
|
1229
|
+
}
|
1230
|
+
, stateAttributes = /^(checked|selected|disabled)$/
|
1231
|
+
, ie = /msie/i.test(navigator.userAgent)
|
1232
|
+
, hasClass, addClass, removeClass
|
1233
|
+
, uidMap = {}
|
1234
|
+
, uuids = 0
|
1235
|
+
, digit = /^-?[\d\.]+$/
|
1236
|
+
, dattr = /^data-(.+)$/
|
1237
|
+
, px = 'px'
|
1238
|
+
, setAttribute = 'setAttribute'
|
1239
|
+
, getAttribute = 'getAttribute'
|
1240
|
+
, byTag = 'getElementsByTagName'
|
1241
|
+
, features = function() {
|
1242
|
+
var e = doc.createElement('p')
|
1243
|
+
e.innerHTML = '<a href="#x">x</a><table style="float:left;"></table>'
|
1244
|
+
return {
|
1245
|
+
hrefExtended: e[byTag]('a')[0][getAttribute]('href') != '#x' // IE < 8
|
1246
|
+
, autoTbody: e[byTag]('tbody').length !== 0 // IE < 8
|
1247
|
+
, computedStyle: doc.defaultView && doc.defaultView.getComputedStyle
|
1248
|
+
, cssFloat: e[byTag]('table')[0].style.styleFloat ? 'styleFloat' : 'cssFloat'
|
1249
|
+
, transform: function () {
|
1250
|
+
var props = ['transform', 'webkitTransform', 'MozTransform', 'OTransform', 'msTransform'], i
|
1251
|
+
for (i = 0; i < props.length; i++) {
|
1252
|
+
if (props[i] in e.style) return props[i]
|
1253
|
+
}
|
1254
|
+
}()
|
1255
|
+
, classList: 'classList' in e
|
1256
|
+
, opasity: function () {
|
1257
|
+
return typeof doc.createElement('a').style.opacity !== 'undefined'
|
1258
|
+
}()
|
1259
|
+
}
|
1260
|
+
}()
|
1261
|
+
, trimReplace = /(^\s*|\s*$)/g
|
1262
|
+
, whitespaceRegex = /\s+/
|
1263
|
+
, toString = String.prototype.toString
|
1264
|
+
, unitless = { lineHeight: 1, zoom: 1, zIndex: 1, opacity: 1, boxFlex: 1, WebkitBoxFlex: 1, MozBoxFlex: 1 }
|
1265
|
+
, query = doc.querySelectorAll && function (selector) { return doc.querySelectorAll(selector) }
|
1266
|
+
, trim = String.prototype.trim ?
|
1267
|
+
function (s) {
|
1268
|
+
return s.trim()
|
1269
|
+
} :
|
1270
|
+
function (s) {
|
1271
|
+
return s.replace(trimReplace, '')
|
1272
|
+
}
|
1273
|
+
|
1274
|
+
, getStyle = features.computedStyle
|
1275
|
+
? function (el, property) {
|
1276
|
+
var value = null
|
1277
|
+
, computed = doc.defaultView.getComputedStyle(el, '')
|
1278
|
+
computed && (value = computed[property])
|
1279
|
+
return el.style[property] || value
|
1280
|
+
}
|
1281
|
+
: !(ie && html.currentStyle)
|
1282
|
+
? function (el, property) {
|
1283
|
+
return el.style[property]
|
1284
|
+
}
|
1285
|
+
:
|
1286
|
+
/**
|
1287
|
+
* @param {Element} el
|
1288
|
+
* @param {string} property
|
1289
|
+
* @return {string|number}
|
1290
|
+
*/
|
1291
|
+
function (el, property) {
|
1292
|
+
var val, value
|
1293
|
+
if (property == 'opacity' && !features.opasity) {
|
1294
|
+
val = 100
|
1295
|
+
try {
|
1296
|
+
val = el['filters']['DXImageTransform.Microsoft.Alpha'].opacity
|
1297
|
+
} catch (e1) {
|
1298
|
+
try {
|
1299
|
+
val = el['filters']('alpha').opacity
|
1300
|
+
} catch (e2) {}
|
1301
|
+
}
|
1302
|
+
return val / 100
|
1303
|
+
}
|
1304
|
+
value = el.currentStyle ? el.currentStyle[property] : null
|
1305
|
+
return el.style[property] || value
|
1306
|
+
}
|
1307
|
+
|
1308
|
+
function isNode(node) {
|
1309
|
+
return node && node.nodeName && (node.nodeType == 1 || node.nodeType == 11)
|
1310
|
+
}
|
1311
|
+
|
1312
|
+
|
1313
|
+
function normalize(node, host, clone) {
|
1314
|
+
var i, l, ret
|
1315
|
+
if (typeof node == 'string') return bonzo.create(node)
|
1316
|
+
if (isNode(node)) node = [ node ]
|
1317
|
+
if (clone) {
|
1318
|
+
ret = [] // don't change original array
|
1319
|
+
for (i = 0, l = node.length; i < l; i++) ret[i] = cloneNode(host, node[i])
|
1320
|
+
return ret
|
1321
|
+
}
|
1322
|
+
return node
|
1323
|
+
}
|
1324
|
+
|
1325
|
+
/**
|
1326
|
+
* @param {string} c a class name to test
|
1327
|
+
* @return {boolean}
|
1328
|
+
*/
|
1329
|
+
function classReg(c) {
|
1330
|
+
return new RegExp('(^|\\s+)' + c + '(\\s+|$)')
|
1331
|
+
}
|
1332
|
+
|
1333
|
+
|
1334
|
+
/**
|
1335
|
+
* @param {Bonzo|Array} ar
|
1336
|
+
* @param {function(Object, number, (Bonzo|Array))} fn
|
1337
|
+
* @param {Object=} opt_scope
|
1338
|
+
* @param {boolean=} opt_rev
|
1339
|
+
* @return {Bonzo|Array}
|
1340
|
+
*/
|
1341
|
+
function each(ar, fn, opt_scope, opt_rev) {
|
1342
|
+
var ind, i = 0, l = ar.length
|
1343
|
+
for (; i < l; i++) {
|
1344
|
+
ind = opt_rev ? ar.length - i - 1 : i
|
1345
|
+
fn.call(opt_scope || ar[ind], ar[ind], ind, ar)
|
1346
|
+
}
|
1347
|
+
return ar
|
1348
|
+
}
|
1349
|
+
|
1350
|
+
|
1351
|
+
/**
|
1352
|
+
* @param {Bonzo|Array} ar
|
1353
|
+
* @param {function(Object, number, (Bonzo|Array))} fn
|
1354
|
+
* @param {Object=} opt_scope
|
1355
|
+
* @return {Bonzo|Array}
|
1356
|
+
*/
|
1357
|
+
function deepEach(ar, fn, opt_scope) {
|
1358
|
+
for (var i = 0, l = ar.length; i < l; i++) {
|
1359
|
+
if (isNode(ar[i])) {
|
1360
|
+
deepEach(ar[i].childNodes, fn, opt_scope)
|
1361
|
+
fn.call(opt_scope || ar[i], ar[i], i, ar)
|
1362
|
+
}
|
1363
|
+
}
|
1364
|
+
return ar
|
1365
|
+
}
|
1366
|
+
|
1367
|
+
|
1368
|
+
/**
|
1369
|
+
* @param {string} s
|
1370
|
+
* @return {string}
|
1371
|
+
*/
|
1372
|
+
function camelize(s) {
|
1373
|
+
return s.replace(/-(.)/g, function (m, m1) {
|
1374
|
+
return m1.toUpperCase()
|
1375
|
+
})
|
1376
|
+
}
|
1377
|
+
|
1378
|
+
|
1379
|
+
/**
|
1380
|
+
* @param {string} s
|
1381
|
+
* @return {string}
|
1382
|
+
*/
|
1383
|
+
function decamelize(s) {
|
1384
|
+
return s ? s.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() : s
|
1385
|
+
}
|
1386
|
+
|
1387
|
+
|
1388
|
+
/**
|
1389
|
+
* @param {Element} el
|
1390
|
+
* @return {*}
|
1391
|
+
*/
|
1392
|
+
function data(el) {
|
1393
|
+
el[getAttribute]('data-node-uid') || el[setAttribute]('data-node-uid', ++uuids)
|
1394
|
+
var uid = el[getAttribute]('data-node-uid')
|
1395
|
+
return uidMap[uid] || (uidMap[uid] = {})
|
1396
|
+
}
|
1397
|
+
|
1398
|
+
|
1399
|
+
/**
|
1400
|
+
* removes the data associated with an element
|
1401
|
+
* @param {Element} el
|
1402
|
+
*/
|
1403
|
+
function clearData(el) {
|
1404
|
+
var uid = el[getAttribute]('data-node-uid')
|
1405
|
+
if (uid) delete uidMap[uid]
|
1406
|
+
}
|
1407
|
+
|
1408
|
+
|
1409
|
+
function dataValue(d) {
|
1410
|
+
var f
|
1411
|
+
try {
|
1412
|
+
return (d === null || d === undefined) ? undefined :
|
1413
|
+
d === 'true' ? true :
|
1414
|
+
d === 'false' ? false :
|
1415
|
+
d === 'null' ? null :
|
1416
|
+
(f = parseFloat(d)) == d ? f : d;
|
1417
|
+
} catch(e) {}
|
1418
|
+
return undefined
|
1419
|
+
}
|
1420
|
+
|
1421
|
+
|
1422
|
+
/**
|
1423
|
+
* @param {Bonzo|Array} ar
|
1424
|
+
* @param {function(Object, number, (Bonzo|Array))} fn
|
1425
|
+
* @param {Object=} opt_scope
|
1426
|
+
* @return {boolean} whether `some`thing was found
|
1427
|
+
*/
|
1428
|
+
function some(ar, fn, opt_scope) {
|
1429
|
+
for (var i = 0, j = ar.length; i < j; ++i) if (fn.call(opt_scope || null, ar[i], i, ar)) return true
|
1430
|
+
return false
|
1431
|
+
}
|
1432
|
+
|
1433
|
+
|
1434
|
+
/**
|
1435
|
+
* this could be a giant enum of CSS properties
|
1436
|
+
* but in favor of file size sans-closure deadcode optimizations
|
1437
|
+
* we're just asking for any ol string
|
1438
|
+
* then it gets transformed into the appropriate style property for JS access
|
1439
|
+
* @param {string} p
|
1440
|
+
* @return {string}
|
1441
|
+
*/
|
1442
|
+
function styleProperty(p) {
|
1443
|
+
(p == 'transform' && (p = features.transform)) ||
|
1444
|
+
(/^transform-?[Oo]rigin$/.test(p) && (p = features.transform + 'Origin')) ||
|
1445
|
+
(p == 'float' && (p = features.cssFloat))
|
1446
|
+
return p ? camelize(p) : null
|
1447
|
+
}
|
1448
|
+
|
1449
|
+
// this insert method is intense
|
1450
|
+
function insert(target, host, fn, rev) {
|
1451
|
+
var i = 0, self = host || this, r = []
|
1452
|
+
// target nodes could be a css selector if it's a string and a selector engine is present
|
1453
|
+
// otherwise, just use target
|
1454
|
+
, nodes = query && typeof target == 'string' && target.charAt(0) != '<' ? query(target) : target
|
1455
|
+
// normalize each node in case it's still a string and we need to create nodes on the fly
|
1456
|
+
each(normalize(nodes), function (t, j) {
|
1457
|
+
each(self, function (el) {
|
1458
|
+
fn(t, r[i++] = j > 0 ? cloneNode(self, el) : el)
|
1459
|
+
}, null, rev)
|
1460
|
+
}, this, rev)
|
1461
|
+
self.length = i
|
1462
|
+
each(r, function (e) {
|
1463
|
+
self[--i] = e
|
1464
|
+
}, null, !rev)
|
1465
|
+
return self
|
1466
|
+
}
|
1467
|
+
|
1468
|
+
|
1469
|
+
/**
|
1470
|
+
* sets an element to an explicit x/y position on the page
|
1471
|
+
* @param {Element} el
|
1472
|
+
* @param {?number} x
|
1473
|
+
* @param {?number} y
|
1474
|
+
*/
|
1475
|
+
function xy(el, x, y) {
|
1476
|
+
var $el = bonzo(el)
|
1477
|
+
, style = $el.css('position')
|
1478
|
+
, offset = $el.offset()
|
1479
|
+
, rel = 'relative'
|
1480
|
+
, isRel = style == rel
|
1481
|
+
, delta = [parseInt($el.css('left'), 10), parseInt($el.css('top'), 10)]
|
1482
|
+
|
1483
|
+
if (style == 'static') {
|
1484
|
+
$el.css('position', rel)
|
1485
|
+
style = rel
|
1486
|
+
}
|
1487
|
+
|
1488
|
+
isNaN(delta[0]) && (delta[0] = isRel ? 0 : el.offsetLeft)
|
1489
|
+
isNaN(delta[1]) && (delta[1] = isRel ? 0 : el.offsetTop)
|
1490
|
+
|
1491
|
+
x != null && (el.style.left = x - offset.left + delta[0] + px)
|
1492
|
+
y != null && (el.style.top = y - offset.top + delta[1] + px)
|
1493
|
+
|
1494
|
+
}
|
1495
|
+
|
1496
|
+
// classList support for class management
|
1497
|
+
// altho to be fair, the api sucks because it won't accept multiple classes at once
|
1498
|
+
if (features.classList) {
|
1499
|
+
hasClass = function (el, c) {
|
1500
|
+
return el.classList.contains(c)
|
1501
|
+
}
|
1502
|
+
addClass = function (el, c) {
|
1503
|
+
el.classList.add(c)
|
1504
|
+
}
|
1505
|
+
removeClass = function (el, c) {
|
1506
|
+
el.classList.remove(c)
|
1507
|
+
}
|
1508
|
+
}
|
1509
|
+
else {
|
1510
|
+
hasClass = function (el, c) {
|
1511
|
+
return classReg(c).test(el.className)
|
1512
|
+
}
|
1513
|
+
addClass = function (el, c) {
|
1514
|
+
el.className = trim(el.className + ' ' + c)
|
1515
|
+
}
|
1516
|
+
removeClass = function (el, c) {
|
1517
|
+
el.className = trim(el.className.replace(classReg(c), ' '))
|
1518
|
+
}
|
1519
|
+
}
|
1520
|
+
|
1521
|
+
|
1522
|
+
/**
|
1523
|
+
* this allows method calling for setting values
|
1524
|
+
*
|
1525
|
+
* @example
|
1526
|
+
* bonzo(elements).css('color', function (el) {
|
1527
|
+
* return el.getAttribute('data-original-color')
|
1528
|
+
* })
|
1529
|
+
*
|
1530
|
+
* @param {Element} el
|
1531
|
+
* @param {function (Element)|string}
|
1532
|
+
* @return {string}
|
1533
|
+
*/
|
1534
|
+
function setter(el, v) {
|
1535
|
+
return typeof v == 'function' ? v(el) : v
|
1536
|
+
}
|
1537
|
+
|
1538
|
+
function scroll(x, y, type) {
|
1539
|
+
var el = this[0]
|
1540
|
+
if (!el) return this
|
1541
|
+
if (x == null && y == null) {
|
1542
|
+
return (isBody(el) ? getWindowScroll() : { x: el.scrollLeft, y: el.scrollTop })[type]
|
1543
|
+
}
|
1544
|
+
if (isBody(el)) {
|
1545
|
+
win.scrollTo(x, y)
|
1546
|
+
} else {
|
1547
|
+
x != null && (el.scrollLeft = x)
|
1548
|
+
y != null && (el.scrollTop = y)
|
1549
|
+
}
|
1550
|
+
return this
|
1551
|
+
}
|
1552
|
+
|
1553
|
+
/**
|
1554
|
+
* @constructor
|
1555
|
+
* @param {Array.<Element>|Element|Node|string} elements
|
1556
|
+
*/
|
1557
|
+
function Bonzo(elements) {
|
1558
|
+
this.length = 0
|
1559
|
+
if (elements) {
|
1560
|
+
elements = typeof elements !== 'string' &&
|
1561
|
+
!elements.nodeType &&
|
1562
|
+
typeof elements.length !== 'undefined' ?
|
1563
|
+
elements :
|
1564
|
+
[elements]
|
1565
|
+
this.length = elements.length
|
1566
|
+
for (var i = 0; i < elements.length; i++) this[i] = elements[i]
|
1567
|
+
}
|
1568
|
+
}
|
1569
|
+
|
1570
|
+
Bonzo.prototype = {
|
1571
|
+
|
1572
|
+
/**
|
1573
|
+
* @param {number} index
|
1574
|
+
* @return {Element|Node}
|
1575
|
+
*/
|
1576
|
+
get: function (index) {
|
1577
|
+
return this[index] || null
|
1578
|
+
}
|
1579
|
+
|
1580
|
+
// itetators
|
1581
|
+
/**
|
1582
|
+
* @param {function(Element|Node)} fn
|
1583
|
+
* @param {Object=} opt_scope
|
1584
|
+
* @return {Bonzo}
|
1585
|
+
*/
|
1586
|
+
, each: function (fn, opt_scope) {
|
1587
|
+
return each(this, fn, opt_scope)
|
1588
|
+
}
|
1589
|
+
|
1590
|
+
/**
|
1591
|
+
* @param {Function} fn
|
1592
|
+
* @param {Object=} opt_scope
|
1593
|
+
* @return {Bonzo}
|
1594
|
+
*/
|
1595
|
+
, deepEach: function (fn, opt_scope) {
|
1596
|
+
return deepEach(this, fn, opt_scope)
|
1597
|
+
}
|
1598
|
+
|
1599
|
+
|
1600
|
+
/**
|
1601
|
+
* @param {Function} fn
|
1602
|
+
* @param {Function=} opt_reject
|
1603
|
+
* @return {Array}
|
1604
|
+
*/
|
1605
|
+
, map: function (fn, opt_reject) {
|
1606
|
+
var m = [], n, i
|
1607
|
+
for (i = 0; i < this.length; i++) {
|
1608
|
+
n = fn.call(this, this[i], i)
|
1609
|
+
opt_reject ? (opt_reject(n) && m.push(n)) : m.push(n)
|
1610
|
+
}
|
1611
|
+
return m
|
1612
|
+
}
|
1613
|
+
|
1614
|
+
// text and html inserters!
|
1615
|
+
|
1616
|
+
/**
|
1617
|
+
* @param {string} h the HTML to insert
|
1618
|
+
* @param {boolean=} opt_text whether to set or get text content
|
1619
|
+
* @return {Bonzo|string}
|
1620
|
+
*/
|
1621
|
+
, html: function (h, opt_text) {
|
1622
|
+
var method = opt_text
|
1623
|
+
? html.textContent === undefined ? 'innerText' : 'textContent'
|
1624
|
+
: 'innerHTML'
|
1625
|
+
, that = this
|
1626
|
+
, append = function (el, i) {
|
1627
|
+
each(normalize(h, that, i), function (node) {
|
1628
|
+
el.appendChild(node)
|
1629
|
+
})
|
1630
|
+
}
|
1631
|
+
, updateElement = function (el, i) {
|
1632
|
+
try {
|
1633
|
+
if (opt_text || (typeof h == 'string' && !specialTags.test(el.tagName))) {
|
1634
|
+
return el[method] = h
|
1635
|
+
}
|
1636
|
+
} catch (e) {}
|
1637
|
+
append(el, i)
|
1638
|
+
}
|
1639
|
+
return typeof h != 'undefined'
|
1640
|
+
? this.empty().each(updateElement)
|
1641
|
+
: this[0] ? this[0][method] : ''
|
1642
|
+
}
|
1643
|
+
|
1644
|
+
/**
|
1645
|
+
* @param {string=} opt_text the text to set, otherwise this is a getter
|
1646
|
+
* @return {Bonzo|string}
|
1647
|
+
*/
|
1648
|
+
, text: function (opt_text) {
|
1649
|
+
return this.html(opt_text, true)
|
1650
|
+
}
|
1651
|
+
|
1652
|
+
// more related insertion methods
|
1653
|
+
|
1654
|
+
/**
|
1655
|
+
* @param {Bonzo|string|Element|Array} node
|
1656
|
+
* @return {Bonzo}
|
1657
|
+
*/
|
1658
|
+
, append: function (node) {
|
1659
|
+
var that = this
|
1660
|
+
return this.each(function (el, i) {
|
1661
|
+
each(normalize(node, that, i), function (i) {
|
1662
|
+
el.appendChild(i)
|
1663
|
+
})
|
1664
|
+
})
|
1665
|
+
}
|
1666
|
+
|
1667
|
+
|
1668
|
+
/**
|
1669
|
+
* @param {Bonzo|string|Element|Array} node
|
1670
|
+
* @return {Bonzo}
|
1671
|
+
*/
|
1672
|
+
, prepend: function (node) {
|
1673
|
+
var that = this
|
1674
|
+
return this.each(function (el, i) {
|
1675
|
+
var first = el.firstChild
|
1676
|
+
each(normalize(node, that, i), function (i) {
|
1677
|
+
el.insertBefore(i, first)
|
1678
|
+
})
|
1679
|
+
})
|
1680
|
+
}
|
1681
|
+
|
1682
|
+
|
1683
|
+
/**
|
1684
|
+
* @param {Bonzo|string|Element|Array} target the location for which you'll insert your new content
|
1685
|
+
* @param {Object=} opt_host an optional host scope (primarily used when integrated with Ender)
|
1686
|
+
* @return {Bonzo}
|
1687
|
+
*/
|
1688
|
+
, appendTo: function (target, opt_host) {
|
1689
|
+
return insert.call(this, target, opt_host, function (t, el) {
|
1690
|
+
t.appendChild(el)
|
1691
|
+
})
|
1692
|
+
}
|
1693
|
+
|
1694
|
+
|
1695
|
+
/**
|
1696
|
+
* @param {Bonzo|string|Element|Array} target the location for which you'll insert your new content
|
1697
|
+
* @param {Object=} opt_host an optional host scope (primarily used when integrated with Ender)
|
1698
|
+
* @return {Bonzo}
|
1699
|
+
*/
|
1700
|
+
, prependTo: function (target, opt_host) {
|
1701
|
+
return insert.call(this, target, opt_host, function (t, el) {
|
1702
|
+
t.insertBefore(el, t.firstChild)
|
1703
|
+
}, 1)
|
1704
|
+
}
|
1705
|
+
|
1706
|
+
|
1707
|
+
/**
|
1708
|
+
* @param {Bonzo|string|Element|Array} node
|
1709
|
+
* @return {Bonzo}
|
1710
|
+
*/
|
1711
|
+
, before: function (node) {
|
1712
|
+
var that = this
|
1713
|
+
return this.each(function (el, i) {
|
1714
|
+
each(normalize(node, that, i), function (i) {
|
1715
|
+
el[parentNode].insertBefore(i, el)
|
1716
|
+
})
|
1717
|
+
})
|
1718
|
+
}
|
1719
|
+
|
1720
|
+
|
1721
|
+
/**
|
1722
|
+
* @param {Bonzo|string|Element|Array} node
|
1723
|
+
* @return {Bonzo}
|
1724
|
+
*/
|
1725
|
+
, after: function (node) {
|
1726
|
+
var that = this
|
1727
|
+
return this.each(function (el, i) {
|
1728
|
+
each(normalize(node, that, i), function (i) {
|
1729
|
+
el[parentNode].insertBefore(i, el.nextSibling)
|
1730
|
+
}, null, 1)
|
1731
|
+
})
|
1732
|
+
}
|
1733
|
+
|
1734
|
+
|
1735
|
+
/**
|
1736
|
+
* @param {Bonzo|string|Element|Array} target the location for which you'll insert your new content
|
1737
|
+
* @param {Object=} opt_host an optional host scope (primarily used when integrated with Ender)
|
1738
|
+
* @return {Bonzo}
|
1739
|
+
*/
|
1740
|
+
, insertBefore: function (target, opt_host) {
|
1741
|
+
return insert.call(this, target, opt_host, function (t, el) {
|
1742
|
+
t[parentNode].insertBefore(el, t)
|
1743
|
+
})
|
1744
|
+
}
|
1745
|
+
|
1746
|
+
|
1747
|
+
/**
|
1748
|
+
* @param {Bonzo|string|Element|Array} target the location for which you'll insert your new content
|
1749
|
+
* @param {Object=} opt_host an optional host scope (primarily used when integrated with Ender)
|
1750
|
+
* @return {Bonzo}
|
1751
|
+
*/
|
1752
|
+
, insertAfter: function (target, opt_host) {
|
1753
|
+
return insert.call(this, target, opt_host, function (t, el) {
|
1754
|
+
var sibling = t.nextSibling
|
1755
|
+
sibling ?
|
1756
|
+
t[parentNode].insertBefore(el, sibling) :
|
1757
|
+
t[parentNode].appendChild(el)
|
1758
|
+
}, 1)
|
1759
|
+
}
|
1760
|
+
|
1761
|
+
|
1762
|
+
/**
|
1763
|
+
* @param {Bonzo|string|Element|Array} node
|
1764
|
+
* @return {Bonzo}
|
1765
|
+
*/
|
1766
|
+
, replaceWith: function (node) {
|
1767
|
+
bonzo(normalize(node)).insertAfter(this)
|
1768
|
+
return this.remove()
|
1769
|
+
}
|
1770
|
+
|
1771
|
+
/**
|
1772
|
+
* @param {Object=} opt_host an optional host scope (primarily used when integrated with Ender)
|
1773
|
+
* @return {Bonzo}
|
1774
|
+
*/
|
1775
|
+
, clone: function (opt_host) {
|
1776
|
+
var ret = [] // don't change original array
|
1777
|
+
, l, i
|
1778
|
+
for (i = 0, l = this.length; i < l; i++) ret[i] = cloneNode(opt_host || this, this[i])
|
1779
|
+
return bonzo(ret)
|
1780
|
+
}
|
1781
|
+
|
1782
|
+
// class management
|
1783
|
+
|
1784
|
+
/**
|
1785
|
+
* @param {string} c
|
1786
|
+
* @return {Bonzo}
|
1787
|
+
*/
|
1788
|
+
, addClass: function (c) {
|
1789
|
+
c = toString.call(c).split(whitespaceRegex)
|
1790
|
+
return this.each(function (el) {
|
1791
|
+
// we `each` here so you can do $el.addClass('foo bar')
|
1792
|
+
each(c, function (c) {
|
1793
|
+
if (c && !hasClass(el, setter(el, c)))
|
1794
|
+
addClass(el, setter(el, c))
|
1795
|
+
})
|
1796
|
+
})
|
1797
|
+
}
|
1798
|
+
|
1799
|
+
|
1800
|
+
/**
|
1801
|
+
* @param {string} c
|
1802
|
+
* @return {Bonzo}
|
1803
|
+
*/
|
1804
|
+
, removeClass: function (c) {
|
1805
|
+
c = toString.call(c).split(whitespaceRegex)
|
1806
|
+
return this.each(function (el) {
|
1807
|
+
each(c, function (c) {
|
1808
|
+
if (c && hasClass(el, setter(el, c)))
|
1809
|
+
removeClass(el, setter(el, c))
|
1810
|
+
})
|
1811
|
+
})
|
1812
|
+
}
|
1813
|
+
|
1814
|
+
|
1815
|
+
/**
|
1816
|
+
* @param {string} c
|
1817
|
+
* @return {boolean}
|
1818
|
+
*/
|
1819
|
+
, hasClass: function (c) {
|
1820
|
+
c = toString.call(c).split(whitespaceRegex)
|
1821
|
+
return some(this, function (el) {
|
1822
|
+
return some(c, function (c) {
|
1823
|
+
return c && hasClass(el, c)
|
1824
|
+
})
|
1825
|
+
})
|
1826
|
+
}
|
1827
|
+
|
1828
|
+
|
1829
|
+
/**
|
1830
|
+
* @param {string} c classname to toggle
|
1831
|
+
* @param {boolean=} opt_condition whether to add or remove the class straight away
|
1832
|
+
* @return {Bonzo}
|
1833
|
+
*/
|
1834
|
+
, toggleClass: function (c, opt_condition) {
|
1835
|
+
c = toString.call(c).split(whitespaceRegex)
|
1836
|
+
return this.each(function (el) {
|
1837
|
+
each(c, function (c) {
|
1838
|
+
if (c) {
|
1839
|
+
typeof opt_condition !== 'undefined' ?
|
1840
|
+
opt_condition ? !hasClass(el, c) && addClass(el, c) : removeClass(el, c) :
|
1841
|
+
hasClass(el, c) ? removeClass(el, c) : addClass(el, c)
|
1842
|
+
}
|
1843
|
+
})
|
1844
|
+
})
|
1845
|
+
}
|
1846
|
+
|
1847
|
+
// display togglers
|
1848
|
+
|
1849
|
+
/**
|
1850
|
+
* @param {string=} opt_type useful to set back to anything other than an empty string
|
1851
|
+
* @return {Bonzo}
|
1852
|
+
*/
|
1853
|
+
, show: function (opt_type) {
|
1854
|
+
opt_type = typeof opt_type == 'string' ? opt_type : ''
|
1855
|
+
return this.each(function (el) {
|
1856
|
+
el.style.display = opt_type
|
1857
|
+
})
|
1858
|
+
}
|
1859
|
+
|
1860
|
+
|
1861
|
+
/**
|
1862
|
+
* @return {Bonzo}
|
1863
|
+
*/
|
1864
|
+
, hide: function () {
|
1865
|
+
return this.each(function (el) {
|
1866
|
+
el.style.display = 'none'
|
1867
|
+
})
|
1868
|
+
}
|
1869
|
+
|
1870
|
+
|
1871
|
+
/**
|
1872
|
+
* @param {Function=} opt_callback
|
1873
|
+
* @param {string=} opt_type
|
1874
|
+
* @return {Bonzo}
|
1875
|
+
*/
|
1876
|
+
, toggle: function (opt_callback, opt_type) {
|
1877
|
+
opt_type = typeof opt_type == 'string' ? opt_type : '';
|
1878
|
+
typeof opt_callback != 'function' && (opt_callback = null)
|
1879
|
+
return this.each(function (el) {
|
1880
|
+
el.style.display = (el.offsetWidth || el.offsetHeight) ? 'none' : opt_type;
|
1881
|
+
opt_callback && opt_callback.call(el)
|
1882
|
+
})
|
1883
|
+
}
|
1884
|
+
|
1885
|
+
|
1886
|
+
// DOM Walkers & getters
|
1887
|
+
|
1888
|
+
/**
|
1889
|
+
* @return {Element|Node}
|
1890
|
+
*/
|
1891
|
+
, first: function () {
|
1892
|
+
return bonzo(this.length ? this[0] : [])
|
1893
|
+
}
|
1894
|
+
|
1895
|
+
|
1896
|
+
/**
|
1897
|
+
* @return {Element|Node}
|
1898
|
+
*/
|
1899
|
+
, last: function () {
|
1900
|
+
return bonzo(this.length ? this[this.length - 1] : [])
|
1901
|
+
}
|
1902
|
+
|
1903
|
+
|
1904
|
+
/**
|
1905
|
+
* @return {Element|Node}
|
1906
|
+
*/
|
1907
|
+
, next: function () {
|
1908
|
+
return this.related('nextSibling')
|
1909
|
+
}
|
1910
|
+
|
1911
|
+
|
1912
|
+
/**
|
1913
|
+
* @return {Element|Node}
|
1914
|
+
*/
|
1915
|
+
, previous: function () {
|
1916
|
+
return this.related('previousSibling')
|
1917
|
+
}
|
1918
|
+
|
1919
|
+
|
1920
|
+
/**
|
1921
|
+
* @return {Element|Node}
|
1922
|
+
*/
|
1923
|
+
, parent: function() {
|
1924
|
+
return this.related(parentNode)
|
1925
|
+
}
|
1926
|
+
|
1927
|
+
|
1928
|
+
/**
|
1929
|
+
* @private
|
1930
|
+
* @param {string} method the directional DOM method
|
1931
|
+
* @return {Element|Node}
|
1932
|
+
*/
|
1933
|
+
, related: function (method) {
|
1934
|
+
return bonzo(this.map(
|
1935
|
+
function (el) {
|
1936
|
+
el = el[method]
|
1937
|
+
while (el && el.nodeType !== 1) {
|
1938
|
+
el = el[method]
|
1939
|
+
}
|
1940
|
+
return el || 0
|
1941
|
+
},
|
1942
|
+
function (el) {
|
1943
|
+
return el
|
1944
|
+
}
|
1945
|
+
))
|
1946
|
+
}
|
1947
|
+
|
1948
|
+
|
1949
|
+
/**
|
1950
|
+
* @return {Bonzo}
|
1951
|
+
*/
|
1952
|
+
, focus: function () {
|
1953
|
+
this.length && this[0].focus()
|
1954
|
+
return this
|
1955
|
+
}
|
1956
|
+
|
1957
|
+
|
1958
|
+
/**
|
1959
|
+
* @return {Bonzo}
|
1960
|
+
*/
|
1961
|
+
, blur: function () {
|
1962
|
+
this.length && this[0].blur()
|
1963
|
+
return this
|
1964
|
+
}
|
1965
|
+
|
1966
|
+
// style getter setter & related methods
|
1967
|
+
|
1968
|
+
/**
|
1969
|
+
* @param {Object|string} o
|
1970
|
+
* @param {string=} opt_v
|
1971
|
+
* @return {Bonzo|string}
|
1972
|
+
*/
|
1973
|
+
, css: function (o, opt_v) {
|
1974
|
+
var p, iter = o
|
1975
|
+
// is this a request for just getting a style?
|
1976
|
+
if (opt_v === undefined && typeof o == 'string') {
|
1977
|
+
// repurpose 'v'
|
1978
|
+
opt_v = this[0]
|
1979
|
+
if (!opt_v) return null
|
1980
|
+
if (opt_v === doc || opt_v === win) {
|
1981
|
+
p = (opt_v === doc) ? bonzo.doc() : bonzo.viewport()
|
1982
|
+
return o == 'width' ? p.width : o == 'height' ? p.height : ''
|
1983
|
+
}
|
1984
|
+
return (o = styleProperty(o)) ? getStyle(opt_v, o) : null
|
1985
|
+
}
|
1986
|
+
|
1987
|
+
if (typeof o == 'string') {
|
1988
|
+
iter = {}
|
1989
|
+
iter[o] = opt_v
|
1990
|
+
}
|
1991
|
+
|
1992
|
+
if (ie && iter.opacity) {
|
1993
|
+
// oh this 'ol gamut
|
1994
|
+
iter.filter = 'alpha(opacity=' + (iter.opacity * 100) + ')'
|
1995
|
+
// give it layout
|
1996
|
+
iter.zoom = o.zoom || 1;
|
1997
|
+
delete iter.opacity;
|
1998
|
+
}
|
1999
|
+
|
2000
|
+
function fn(el, p, v) {
|
2001
|
+
for (var k in iter) {
|
2002
|
+
if (iter.hasOwnProperty(k)) {
|
2003
|
+
v = iter[k];
|
2004
|
+
// change "5" to "5px" - unless you're line-height, which is allowed
|
2005
|
+
(p = styleProperty(k)) && digit.test(v) && !(p in unitless) && (v += px)
|
2006
|
+
try { el.style[p] = setter(el, v) } catch(e) {}
|
2007
|
+
}
|
2008
|
+
}
|
2009
|
+
}
|
2010
|
+
return this.each(fn)
|
2011
|
+
}
|
2012
|
+
|
2013
|
+
|
2014
|
+
/**
|
2015
|
+
* @param {number=} opt_x
|
2016
|
+
* @param {number=} opt_y
|
2017
|
+
* @return {Bonzo|number}
|
2018
|
+
*/
|
2019
|
+
, offset: function (opt_x, opt_y) {
|
2020
|
+
if (opt_x && typeof opt_x == 'object' && (typeof opt_x.top == 'number' || typeof opt_x.left == 'number')) {
|
2021
|
+
return this.each(function (el) {
|
2022
|
+
xy(el, opt_x.left, opt_x.top)
|
2023
|
+
})
|
2024
|
+
} else if (typeof opt_x == 'number' || typeof opt_y == 'number') {
|
2025
|
+
return this.each(function (el) {
|
2026
|
+
xy(el, opt_x, opt_y)
|
2027
|
+
})
|
2028
|
+
}
|
2029
|
+
if (!this[0]) return {
|
2030
|
+
top: 0
|
2031
|
+
, left: 0
|
2032
|
+
, height: 0
|
2033
|
+
, width: 0
|
2034
|
+
}
|
2035
|
+
var el = this[0]
|
2036
|
+
, de = el.ownerDocument.documentElement
|
2037
|
+
, bcr = el.getBoundingClientRect()
|
2038
|
+
, scroll = getWindowScroll()
|
2039
|
+
, width = el.offsetWidth
|
2040
|
+
, height = el.offsetHeight
|
2041
|
+
, top = bcr.top + scroll.y - Math.max(0, de && de.clientTop, doc.body.clientTop)
|
2042
|
+
, left = bcr.left + scroll.x - Math.max(0, de && de.clientLeft, doc.body.clientLeft)
|
2043
|
+
|
2044
|
+
return {
|
2045
|
+
top: top
|
2046
|
+
, left: left
|
2047
|
+
, height: height
|
2048
|
+
, width: width
|
2049
|
+
}
|
2050
|
+
}
|
2051
|
+
|
2052
|
+
|
2053
|
+
/**
|
2054
|
+
* @return {number}
|
2055
|
+
*/
|
2056
|
+
, dim: function () {
|
2057
|
+
if (!this.length) return { height: 0, width: 0 }
|
2058
|
+
var el = this[0]
|
2059
|
+
, de = el.nodeType == 9 && el.documentElement // document
|
2060
|
+
, orig = !de && !!el.style && !el.offsetWidth && !el.offsetHeight ?
|
2061
|
+
// el isn't visible, can't be measured properly, so fix that
|
2062
|
+
function (t) {
|
2063
|
+
var s = {
|
2064
|
+
position: el.style.position || ''
|
2065
|
+
, visibility: el.style.visibility || ''
|
2066
|
+
, display: el.style.display || ''
|
2067
|
+
}
|
2068
|
+
t.first().css({
|
2069
|
+
position: 'absolute'
|
2070
|
+
, visibility: 'hidden'
|
2071
|
+
, display: 'block'
|
2072
|
+
})
|
2073
|
+
return s
|
2074
|
+
}(this) : null
|
2075
|
+
, width = de
|
2076
|
+
? Math.max(el.body.scrollWidth, el.body.offsetWidth, de.scrollWidth, de.offsetWidth, de.clientWidth)
|
2077
|
+
: el.offsetWidth
|
2078
|
+
, height = de
|
2079
|
+
? Math.max(el.body.scrollHeight, el.body.offsetHeight, de.scrollHeight, de.offsetHeight, de.clientHeight)
|
2080
|
+
: el.offsetHeight
|
2081
|
+
|
2082
|
+
orig && this.first().css(orig)
|
2083
|
+
return {
|
2084
|
+
height: height
|
2085
|
+
, width: width
|
2086
|
+
}
|
2087
|
+
}
|
2088
|
+
|
2089
|
+
// attributes are hard. go shopping
|
2090
|
+
|
2091
|
+
/**
|
2092
|
+
* @param {string} k an attribute to get or set
|
2093
|
+
* @param {string=} opt_v the value to set
|
2094
|
+
* @return {Bonzo|string}
|
2095
|
+
*/
|
2096
|
+
, attr: function (k, opt_v) {
|
2097
|
+
var el = this[0]
|
2098
|
+
, n
|
2099
|
+
|
2100
|
+
if (typeof k != 'string' && !(k instanceof String)) {
|
2101
|
+
for (n in k) {
|
2102
|
+
k.hasOwnProperty(n) && this.attr(n, k[n])
|
2103
|
+
}
|
2104
|
+
return this
|
2105
|
+
}
|
2106
|
+
|
2107
|
+
return typeof opt_v == 'undefined' ?
|
2108
|
+
!el ? null : specialAttributes.test(k) ?
|
2109
|
+
stateAttributes.test(k) && typeof el[k] == 'string' ?
|
2110
|
+
true : el[k] : (k == 'href' || k =='src') && features.hrefExtended ?
|
2111
|
+
el[getAttribute](k, 2) : el[getAttribute](k) :
|
2112
|
+
this.each(function (el) {
|
2113
|
+
specialAttributes.test(k) ? (el[k] = setter(el, opt_v)) : el[setAttribute](k, setter(el, opt_v))
|
2114
|
+
})
|
2115
|
+
}
|
2116
|
+
|
2117
|
+
|
2118
|
+
/**
|
2119
|
+
* @param {string} k
|
2120
|
+
* @return {Bonzo}
|
2121
|
+
*/
|
2122
|
+
, removeAttr: function (k) {
|
2123
|
+
return this.each(function (el) {
|
2124
|
+
stateAttributes.test(k) ? (el[k] = false) : el.removeAttribute(k)
|
2125
|
+
})
|
2126
|
+
}
|
2127
|
+
|
2128
|
+
|
2129
|
+
/**
|
2130
|
+
* @param {string=} opt_s
|
2131
|
+
* @return {Bonzo|string}
|
2132
|
+
*/
|
2133
|
+
, val: function (s) {
|
2134
|
+
return (typeof s == 'string') ?
|
2135
|
+
this.attr('value', s) :
|
2136
|
+
this.length ? this[0].value : null
|
2137
|
+
}
|
2138
|
+
|
2139
|
+
// use with care and knowledge. this data() method uses data attributes on the DOM nodes
|
2140
|
+
// to do this differently costs a lot more code. c'est la vie
|
2141
|
+
/**
|
2142
|
+
* @param {string|Object=} opt_k the key for which to get or set data
|
2143
|
+
* @param {Object=} opt_v
|
2144
|
+
* @return {Bonzo|Object}
|
2145
|
+
*/
|
2146
|
+
, data: function (opt_k, opt_v) {
|
2147
|
+
var el = this[0], o, m
|
2148
|
+
if (typeof opt_v === 'undefined') {
|
2149
|
+
if (!el) return null
|
2150
|
+
o = data(el)
|
2151
|
+
if (typeof opt_k === 'undefined') {
|
2152
|
+
each(el.attributes, function (a) {
|
2153
|
+
(m = ('' + a.name).match(dattr)) && (o[camelize(m[1])] = dataValue(a.value))
|
2154
|
+
})
|
2155
|
+
return o
|
2156
|
+
} else {
|
2157
|
+
if (typeof o[opt_k] === 'undefined')
|
2158
|
+
o[opt_k] = dataValue(this.attr('data-' + decamelize(opt_k)))
|
2159
|
+
return o[opt_k]
|
2160
|
+
}
|
2161
|
+
} else {
|
2162
|
+
return this.each(function (el) { data(el)[opt_k] = opt_v })
|
2163
|
+
}
|
2164
|
+
}
|
2165
|
+
|
2166
|
+
// DOM detachment & related
|
2167
|
+
|
2168
|
+
/**
|
2169
|
+
* @return {Bonzo}
|
2170
|
+
*/
|
2171
|
+
, remove: function () {
|
2172
|
+
this.deepEach(clearData)
|
2173
|
+
return this.detach()
|
2174
|
+
}
|
2175
|
+
|
2176
|
+
|
2177
|
+
/**
|
2178
|
+
* @return {Bonzo}
|
2179
|
+
*/
|
2180
|
+
, empty: function () {
|
2181
|
+
return this.each(function (el) {
|
2182
|
+
deepEach(el.childNodes, clearData)
|
2183
|
+
|
2184
|
+
while (el.firstChild) {
|
2185
|
+
el.removeChild(el.firstChild)
|
2186
|
+
}
|
2187
|
+
})
|
2188
|
+
}
|
2189
|
+
|
2190
|
+
|
2191
|
+
/**
|
2192
|
+
* @return {Bonzo}
|
2193
|
+
*/
|
2194
|
+
, detach: function () {
|
2195
|
+
return this.each(function (el) {
|
2196
|
+
el[parentNode] && el[parentNode].removeChild(el)
|
2197
|
+
})
|
2198
|
+
}
|
2199
|
+
|
2200
|
+
// who uses a mouse anyway? oh right.
|
2201
|
+
|
2202
|
+
/**
|
2203
|
+
* @param {number} y
|
2204
|
+
*/
|
2205
|
+
, scrollTop: function (y) {
|
2206
|
+
return scroll.call(this, null, y, 'y')
|
2207
|
+
}
|
2208
|
+
|
2209
|
+
|
2210
|
+
/**
|
2211
|
+
* @param {number} x
|
2212
|
+
*/
|
2213
|
+
, scrollLeft: function (x) {
|
2214
|
+
return scroll.call(this, x, null, 'x')
|
2215
|
+
}
|
2216
|
+
|
2217
|
+
}
|
2218
|
+
|
2219
|
+
|
2220
|
+
function cloneNode(host, el) {
|
2221
|
+
var c = el.cloneNode(true)
|
2222
|
+
, cloneElems
|
2223
|
+
, elElems
|
2224
|
+
, i
|
2225
|
+
|
2226
|
+
// check for existence of an event cloner
|
2227
|
+
// preferably https://github.com/fat/bean
|
2228
|
+
// otherwise Bonzo won't do this for you
|
2229
|
+
if (host.$ && typeof host.cloneEvents == 'function') {
|
2230
|
+
host.$(c).cloneEvents(el)
|
2231
|
+
|
2232
|
+
// clone events from every child node
|
2233
|
+
cloneElems = host.$(c).find('*')
|
2234
|
+
elElems = host.$(el).find('*')
|
2235
|
+
|
2236
|
+
for (i = 0; i < elElems.length; i++)
|
2237
|
+
host.$(cloneElems[i]).cloneEvents(elElems[i])
|
2238
|
+
}
|
2239
|
+
return c
|
2240
|
+
}
|
2241
|
+
|
2242
|
+
function isBody(element) {
|
2243
|
+
return element === win || (/^(?:body|html)$/i).test(element.tagName)
|
2244
|
+
}
|
2245
|
+
|
2246
|
+
function getWindowScroll() {
|
2247
|
+
return { x: win.pageXOffset || html.scrollLeft, y: win.pageYOffset || html.scrollTop }
|
2248
|
+
}
|
2249
|
+
|
2250
|
+
function createScriptFromHtml(html) {
|
2251
|
+
var scriptEl = document.createElement('script')
|
2252
|
+
, matches = html.match(simpleScriptTagRe)
|
2253
|
+
scriptEl.src = matches[1]
|
2254
|
+
return scriptEl
|
2255
|
+
}
|
2256
|
+
|
2257
|
+
/**
|
2258
|
+
* @param {Array.<Element>|Element|Node|string} els
|
2259
|
+
* @return {Bonzo}
|
2260
|
+
*/
|
2261
|
+
function bonzo(els) {
|
2262
|
+
return new Bonzo(els)
|
2263
|
+
}
|
2264
|
+
|
2265
|
+
bonzo.setQueryEngine = function (q) {
|
2266
|
+
query = q;
|
2267
|
+
delete bonzo.setQueryEngine
|
2268
|
+
}
|
2269
|
+
|
2270
|
+
bonzo.aug = function (o, target) {
|
2271
|
+
// for those standalone bonzo users. this love is for you.
|
2272
|
+
for (var k in o) {
|
2273
|
+
o.hasOwnProperty(k) && ((target || Bonzo.prototype)[k] = o[k])
|
2274
|
+
}
|
2275
|
+
}
|
2276
|
+
|
2277
|
+
bonzo.create = function (node) {
|
2278
|
+
// hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
|
2279
|
+
return typeof node == 'string' && node !== '' ?
|
2280
|
+
function () {
|
2281
|
+
if (simpleScriptTagRe.test(node)) return [createScriptFromHtml(node)]
|
2282
|
+
var tag = node.match(/^\s*<([^\s>]+)/)
|
2283
|
+
, el = doc.createElement('div')
|
2284
|
+
, els = []
|
2285
|
+
, p = tag ? tagMap[tag[1].toLowerCase()] : null
|
2286
|
+
, dep = p ? p[2] + 1 : 1
|
2287
|
+
, ns = p && p[3]
|
2288
|
+
, pn = parentNode
|
2289
|
+
, tb = features.autoTbody && p && p[0] == '<table>' && !(/<tbody/i).test(node)
|
2290
|
+
|
2291
|
+
el.innerHTML = p ? (p[0] + node + p[1]) : node
|
2292
|
+
while (dep--) el = el.firstChild
|
2293
|
+
// for IE NoScope, we may insert cruft at the begining just to get it to work
|
2294
|
+
if (ns && el && el.nodeType !== 1) el = el.nextSibling
|
2295
|
+
do {
|
2296
|
+
// tbody special case for IE<8, creates tbody on any empty table
|
2297
|
+
// we don't want it if we're just after a <thead>, <caption>, etc.
|
2298
|
+
if ((!tag || el.nodeType == 1) && (!tb || (el.tagName && el.tagName != 'TBODY'))) {
|
2299
|
+
els.push(el)
|
2300
|
+
}
|
2301
|
+
} while (el = el.nextSibling)
|
2302
|
+
// IE < 9 gives us a parentNode which messes up insert() check for cloning
|
2303
|
+
// `dep` > 1 can also cause problems with the insert() check (must do this last)
|
2304
|
+
each(els, function(el) { el[pn] && el[pn].removeChild(el) })
|
2305
|
+
return els
|
2306
|
+
}() : isNode(node) ? [node.cloneNode(true)] : []
|
2307
|
+
}
|
2308
|
+
|
2309
|
+
bonzo.doc = function () {
|
2310
|
+
var vp = bonzo.viewport()
|
2311
|
+
return {
|
2312
|
+
width: Math.max(doc.body.scrollWidth, html.scrollWidth, vp.width)
|
2313
|
+
, height: Math.max(doc.body.scrollHeight, html.scrollHeight, vp.height)
|
2314
|
+
}
|
2315
|
+
}
|
2316
|
+
|
2317
|
+
bonzo.firstChild = function (el) {
|
2318
|
+
for (var c = el.childNodes, i = 0, j = (c && c.length) || 0, e; i < j; i++) {
|
2319
|
+
if (c[i].nodeType === 1) e = c[j = i]
|
2320
|
+
}
|
2321
|
+
return e
|
2322
|
+
}
|
2323
|
+
|
2324
|
+
bonzo.viewport = function () {
|
2325
|
+
return {
|
2326
|
+
width: ie ? html.clientWidth : self.innerWidth
|
2327
|
+
, height: ie ? html.clientHeight : self.innerHeight
|
2328
|
+
}
|
2329
|
+
}
|
2330
|
+
|
2331
|
+
bonzo.isAncestor = 'compareDocumentPosition' in html ?
|
2332
|
+
function (container, element) {
|
2333
|
+
return (container.compareDocumentPosition(element) & 16) == 16
|
2334
|
+
} : 'contains' in html ?
|
2335
|
+
function (container, element) {
|
2336
|
+
return container !== element && container.contains(element);
|
2337
|
+
} :
|
2338
|
+
function (container, element) {
|
2339
|
+
while (element = element[parentNode]) {
|
2340
|
+
if (element === container) {
|
2341
|
+
return true
|
2342
|
+
}
|
2343
|
+
}
|
2344
|
+
return false
|
2345
|
+
}
|
2346
|
+
|
2347
|
+
return bonzo
|
2348
|
+
}); // the only line we care about using a semi-colon. placed here for concatenation tools
|
2349
|
+
|
2350
|
+
};
|
2351
|
+
modules.lib__bonzo = function() {
|
2352
|
+
if (bonzoCache === null) {
|
2353
|
+
bonzoCache = bonzoFunc();
|
2354
|
+
}
|
2355
|
+
return bonzoCache;
|
2356
|
+
};
|
2357
|
+
window.modules = modules;
|
2358
|
+
})();
|
2359
|
+
|
2360
|
+
(function() {
|
2361
|
+
var modules = window.modules || [];
|
2362
|
+
var qweryCache = null;
|
2363
|
+
var qweryFunc = function() {
|
2364
|
+
/*!
|
2365
|
+
* @preserve Qwery - A Blazing Fast query selector engine
|
2366
|
+
* https://github.com/ded/qwery
|
2367
|
+
* copyright Dustin Diaz 2012
|
2368
|
+
* MIT License
|
2369
|
+
*/
|
2370
|
+
|
2371
|
+
(function (name, context, definition) {
|
2372
|
+
if (typeof module != 'undefined' && module.exports) module.exports = definition()
|
2373
|
+
else if (typeof define == 'function' && define.amd) define(definition)
|
2374
|
+
else context[name] = definition()
|
2375
|
+
})('qwery', this, function () {
|
2376
|
+
var doc = document
|
2377
|
+
, html = doc.documentElement
|
2378
|
+
, byClass = 'getElementsByClassName'
|
2379
|
+
, byTag = 'getElementsByTagName'
|
2380
|
+
, qSA = 'querySelectorAll'
|
2381
|
+
, useNativeQSA = 'useNativeQSA'
|
2382
|
+
, tagName = 'tagName'
|
2383
|
+
, nodeType = 'nodeType'
|
2384
|
+
, select // main select() method, assign later
|
2385
|
+
|
2386
|
+
, id = /#([\w\-]+)/
|
2387
|
+
, clas = /\.[\w\-]+/g
|
2388
|
+
, idOnly = /^#([\w\-]+)$/
|
2389
|
+
, classOnly = /^\.([\w\-]+)$/
|
2390
|
+
, tagOnly = /^([\w\-]+)$/
|
2391
|
+
, tagAndOrClass = /^([\w]+)?\.([\w\-]+)$/
|
2392
|
+
, splittable = /(^|,)\s*[>~+]/
|
2393
|
+
, normalizr = /^\s+|\s*([,\s\+\~>]|$)\s*/g
|
2394
|
+
, splitters = /[\s\>\+\~]/
|
2395
|
+
, splittersMore = /(?![\s\w\-\/\?\&\=\:\.\(\)\!,@#%<>\{\}\$\*\^'"]*\]|[\s\w\+\-]*\))/
|
2396
|
+
, specialChars = /([.*+?\^=!:${}()|\[\]\/\\])/g
|
2397
|
+
, simple = /^(\*|[a-z0-9]+)?(?:([\.\#]+[\w\-\.#]+)?)/
|
2398
|
+
, attr = /\[([\w\-]+)(?:([\|\^\$\*\~]?\=)['"]?([ \w\-\/\?\&\=\:\.\(\)\!,@#%<>\{\}\$\*\^]+)["']?)?\]/
|
2399
|
+
, pseudo = /:([\w\-]+)(\(['"]?([^()]+)['"]?\))?/
|
2400
|
+
, easy = new RegExp(idOnly.source + '|' + tagOnly.source + '|' + classOnly.source)
|
2401
|
+
, dividers = new RegExp('(' + splitters.source + ')' + splittersMore.source, 'g')
|
2402
|
+
, tokenizr = new RegExp(splitters.source + splittersMore.source)
|
2403
|
+
, chunker = new RegExp(simple.source + '(' + attr.source + ')?' + '(' + pseudo.source + ')?')
|
2404
|
+
|
2405
|
+
var walker = {
|
2406
|
+
' ': function (node) {
|
2407
|
+
return node && node !== html && node.parentNode
|
2408
|
+
}
|
2409
|
+
, '>': function (node, contestant) {
|
2410
|
+
return node && node.parentNode == contestant.parentNode && node.parentNode
|
2411
|
+
}
|
2412
|
+
, '~': function (node) {
|
2413
|
+
return node && node.previousSibling
|
2414
|
+
}
|
2415
|
+
, '+': function (node, contestant, p1, p2) {
|
2416
|
+
if (!node) return false
|
2417
|
+
return (p1 = previous(node)) && (p2 = previous(contestant)) && p1 == p2 && p1
|
2418
|
+
}
|
2419
|
+
}
|
2420
|
+
|
2421
|
+
function cache() {
|
2422
|
+
this.c = {}
|
2423
|
+
}
|
2424
|
+
cache.prototype = {
|
2425
|
+
g: function (k) {
|
2426
|
+
return this.c[k] || undefined
|
2427
|
+
}
|
2428
|
+
, s: function (k, v, r) {
|
2429
|
+
v = r ? new RegExp(v) : v
|
2430
|
+
return (this.c[k] = v)
|
2431
|
+
}
|
2432
|
+
}
|
2433
|
+
|
2434
|
+
var classCache = new cache()
|
2435
|
+
, cleanCache = new cache()
|
2436
|
+
, attrCache = new cache()
|
2437
|
+
, tokenCache = new cache()
|
2438
|
+
|
2439
|
+
function classRegex(c) {
|
2440
|
+
return classCache.g(c) || classCache.s(c, '(^|\\s+)' + c + '(\\s+|$)', 1)
|
2441
|
+
}
|
2442
|
+
|
2443
|
+
// not quite as fast as inline loops in older browsers so don't use liberally
|
2444
|
+
function each(a, fn) {
|
2445
|
+
var i = 0, l = a.length
|
2446
|
+
for (; i < l; i++) fn(a[i])
|
2447
|
+
}
|
2448
|
+
|
2449
|
+
function flatten(ar) {
|
2450
|
+
for (var r = [], i = 0, l = ar.length; i < l; ++i) arrayLike(ar[i]) ? (r = r.concat(ar[i])) : (r[r.length] = ar[i])
|
2451
|
+
return r
|
2452
|
+
}
|
2453
|
+
|
2454
|
+
function arrayify(ar) {
|
2455
|
+
var i = 0, l = ar.length, r = []
|
2456
|
+
for (; i < l; i++) r[i] = ar[i]
|
2457
|
+
return r
|
2458
|
+
}
|
2459
|
+
|
2460
|
+
function previous(n) {
|
2461
|
+
while (n = n.previousSibling) if (n[nodeType] == 1) break;
|
2462
|
+
return n
|
2463
|
+
}
|
2464
|
+
|
2465
|
+
function q(query) {
|
2466
|
+
return query.match(chunker)
|
2467
|
+
}
|
2468
|
+
|
2469
|
+
// called using `this` as element and arguments from regex group results.
|
2470
|
+
// given => div.hello[title="world"]:foo('bar')
|
2471
|
+
// div.hello[title="world"]:foo('bar'), div, .hello, [title="world"], title, =, world, :foo('bar'), foo, ('bar'), bar]
|
2472
|
+
function interpret(whole, tag, idsAndClasses, wholeAttribute, attribute, qualifier, value, wholePseudo, pseudo, wholePseudoVal, pseudoVal) {
|
2473
|
+
var i, m, k, o, classes
|
2474
|
+
if (this[nodeType] !== 1) return false
|
2475
|
+
if (tag && tag !== '*' && this[tagName] && this[tagName].toLowerCase() !== tag) return false
|
2476
|
+
if (idsAndClasses && (m = idsAndClasses.match(id)) && m[1] !== this.id) return false
|
2477
|
+
if (idsAndClasses && (classes = idsAndClasses.match(clas))) {
|
2478
|
+
for (i = classes.length; i--;) if (!classRegex(classes[i].slice(1)).test(this.className)) return false
|
2479
|
+
}
|
2480
|
+
if (pseudo && qwery.pseudos[pseudo] && !qwery.pseudos[pseudo](this, pseudoVal)) return false
|
2481
|
+
if (wholeAttribute && !value) { // select is just for existance of attrib
|
2482
|
+
o = this.attributes
|
2483
|
+
for (k in o) {
|
2484
|
+
if (Object.prototype.hasOwnProperty.call(o, k) && (o[k].name || k) == attribute) {
|
2485
|
+
return this
|
2486
|
+
}
|
2487
|
+
}
|
2488
|
+
}
|
2489
|
+
if (wholeAttribute && !checkAttr(qualifier, getAttr(this, attribute) || '', value)) {
|
2490
|
+
// select is for attrib equality
|
2491
|
+
return false
|
2492
|
+
}
|
2493
|
+
return this
|
2494
|
+
}
|
2495
|
+
|
2496
|
+
function clean(s) {
|
2497
|
+
return cleanCache.g(s) || cleanCache.s(s, s.replace(specialChars, '\\$1'))
|
2498
|
+
}
|
2499
|
+
|
2500
|
+
function checkAttr(qualify, actual, val) {
|
2501
|
+
switch (qualify) {
|
2502
|
+
case '=':
|
2503
|
+
return actual == val
|
2504
|
+
case '^=':
|
2505
|
+
return actual.match(attrCache.g('^=' + val) || attrCache.s('^=' + val, '^' + clean(val), 1))
|
2506
|
+
case '$=':
|
2507
|
+
return actual.match(attrCache.g('$=' + val) || attrCache.s('$=' + val, clean(val) + '$', 1))
|
2508
|
+
case '*=':
|
2509
|
+
return actual.match(attrCache.g(val) || attrCache.s(val, clean(val), 1))
|
2510
|
+
case '~=':
|
2511
|
+
return actual.match(attrCache.g('~=' + val) || attrCache.s('~=' + val, '(?:^|\\s+)' + clean(val) + '(?:\\s+|$)', 1))
|
2512
|
+
case '|=':
|
2513
|
+
return actual.match(attrCache.g('|=' + val) || attrCache.s('|=' + val, '^' + clean(val) + '(-|$)', 1))
|
2514
|
+
}
|
2515
|
+
return 0
|
2516
|
+
}
|
2517
|
+
|
2518
|
+
// given a selector, first check for simple cases then collect all base candidate matches and filter
|
2519
|
+
function _qwery(selector, _root) {
|
2520
|
+
var r = [], ret = [], i, l, m, token, tag, els, intr, item, root = _root
|
2521
|
+
, tokens = tokenCache.g(selector) || tokenCache.s(selector, selector.split(tokenizr))
|
2522
|
+
, dividedTokens = selector.match(dividers)
|
2523
|
+
|
2524
|
+
if (!tokens.length) return r
|
2525
|
+
|
2526
|
+
token = (tokens = tokens.slice(0)).pop() // copy cached tokens, take the last one
|
2527
|
+
if (tokens.length && (m = tokens[tokens.length - 1].match(idOnly))) root = byId(_root, m[1])
|
2528
|
+
if (!root) return r
|
2529
|
+
|
2530
|
+
intr = q(token)
|
2531
|
+
// collect base candidates to filter
|
2532
|
+
els = root !== _root && root[nodeType] !== 9 && dividedTokens && /^[+~]$/.test(dividedTokens[dividedTokens.length - 1]) ?
|
2533
|
+
function (r) {
|
2534
|
+
while (root = root.nextSibling) {
|
2535
|
+
root[nodeType] == 1 && (intr[1] ? intr[1] == root[tagName].toLowerCase() : 1) && (r[r.length] = root)
|
2536
|
+
}
|
2537
|
+
return r
|
2538
|
+
}([]) :
|
2539
|
+
root[byTag](intr[1] || '*')
|
2540
|
+
// filter elements according to the right-most part of the selector
|
2541
|
+
for (i = 0, l = els.length; i < l; i++) {
|
2542
|
+
if (item = interpret.apply(els[i], intr)) r[r.length] = item
|
2543
|
+
}
|
2544
|
+
if (!tokens.length) return r
|
2545
|
+
|
2546
|
+
// filter further according to the rest of the selector (the left side)
|
2547
|
+
each(r, function (e) { if (ancestorMatch(e, tokens, dividedTokens)) ret[ret.length] = e })
|
2548
|
+
return ret
|
2549
|
+
}
|
2550
|
+
|
2551
|
+
// compare element to a selector
|
2552
|
+
function is(el, selector, root) {
|
2553
|
+
if (isNode(selector)) return el == selector
|
2554
|
+
if (arrayLike(selector)) return !!~flatten(selector).indexOf(el) // if selector is an array, is el a member?
|
2555
|
+
|
2556
|
+
var selectors = selector.split(','), tokens, dividedTokens
|
2557
|
+
while (selector = selectors.pop()) {
|
2558
|
+
tokens = tokenCache.g(selector) || tokenCache.s(selector, selector.split(tokenizr))
|
2559
|
+
dividedTokens = selector.match(dividers)
|
2560
|
+
tokens = tokens.slice(0) // copy array
|
2561
|
+
if (interpret.apply(el, q(tokens.pop())) && (!tokens.length || ancestorMatch(el, tokens, dividedTokens, root))) {
|
2562
|
+
return true
|
2563
|
+
}
|
2564
|
+
}
|
2565
|
+
return false
|
2566
|
+
}
|
2567
|
+
|
2568
|
+
// given elements matching the right-most part of a selector, filter out any that don't match the rest
|
2569
|
+
function ancestorMatch(el, tokens, dividedTokens, root) {
|
2570
|
+
var cand
|
2571
|
+
// recursively work backwards through the tokens and up the dom, covering all options
|
2572
|
+
function crawl(e, i, p) {
|
2573
|
+
while (p = walker[dividedTokens[i]](p, e)) {
|
2574
|
+
if (isNode(p) && (interpret.apply(p, q(tokens[i])))) {
|
2575
|
+
if (i) {
|
2576
|
+
if (cand = crawl(p, i - 1, p)) return cand
|
2577
|
+
} else return p
|
2578
|
+
}
|
2579
|
+
}
|
2580
|
+
}
|
2581
|
+
return (cand = crawl(el, tokens.length - 1, el)) && (!root || isAncestor(cand, root))
|
2582
|
+
}
|
2583
|
+
|
2584
|
+
function isNode(el, t) {
|
2585
|
+
return el && typeof el === 'object' && (t = el[nodeType]) && (t == 1 || t == 9)
|
2586
|
+
}
|
2587
|
+
|
2588
|
+
function uniq(ar) {
|
2589
|
+
var a = [], i, j;
|
2590
|
+
o:
|
2591
|
+
for (i = 0; i < ar.length; ++i) {
|
2592
|
+
for (j = 0; j < a.length; ++j) if (a[j] == ar[i]) continue o
|
2593
|
+
a[a.length] = ar[i]
|
2594
|
+
}
|
2595
|
+
return a
|
2596
|
+
}
|
2597
|
+
|
2598
|
+
function arrayLike(o) {
|
2599
|
+
return (typeof o === 'object' && isFinite(o.length))
|
2600
|
+
}
|
2601
|
+
|
2602
|
+
function normalizeRoot(root) {
|
2603
|
+
if (!root) return doc
|
2604
|
+
if (typeof root == 'string') return qwery(root)[0]
|
2605
|
+
if (!root[nodeType] && arrayLike(root)) return root[0]
|
2606
|
+
return root
|
2607
|
+
}
|
2608
|
+
|
2609
|
+
function byId(root, id, el) {
|
2610
|
+
// if doc, query on it, else query the parent doc or if a detached fragment rewrite the query and run on the fragment
|
2611
|
+
return root[nodeType] === 9 ? root.getElementById(id) :
|
2612
|
+
root.ownerDocument &&
|
2613
|
+
(((el = root.ownerDocument.getElementById(id)) && isAncestor(el, root) && el) ||
|
2614
|
+
(!isAncestor(root, root.ownerDocument) && select('[id="' + id + '"]', root)[0]))
|
2615
|
+
}
|
2616
|
+
|
2617
|
+
function qwery(selector, _root) {
|
2618
|
+
var m, el, root = normalizeRoot(_root)
|
2619
|
+
|
2620
|
+
// easy, fast cases that we can dispatch with simple DOM calls
|
2621
|
+
if (!root || !selector) return []
|
2622
|
+
if (selector === window || isNode(selector)) {
|
2623
|
+
return !_root || (selector !== window && isNode(root) && isAncestor(selector, root)) ? [selector] : []
|
2624
|
+
}
|
2625
|
+
if (selector && arrayLike(selector)) return flatten(selector)
|
2626
|
+
if (m = selector.match(easy)) {
|
2627
|
+
if (m[1]) return (el = byId(root, m[1])) ? [el] : []
|
2628
|
+
if (m[2]) return arrayify(root[byTag](m[2]))
|
2629
|
+
if (hasByClass && m[3]) return arrayify(root[byClass](m[3]))
|
2630
|
+
}
|
2631
|
+
|
2632
|
+
return select(selector, root)
|
2633
|
+
}
|
2634
|
+
|
2635
|
+
// where the root is not document and a relationship selector is first we have to
|
2636
|
+
// do some awkward adjustments to get it to work, even with qSA
|
2637
|
+
function collectSelector(root, collector) {
|
2638
|
+
return function (s) {
|
2639
|
+
var oid, nid
|
2640
|
+
if (splittable.test(s)) {
|
2641
|
+
if (root[nodeType] !== 9) {
|
2642
|
+
// make sure the el has an id, rewrite the query, set root to doc and run it
|
2643
|
+
if (!(nid = oid = root.getAttribute('id'))) root.setAttribute('id', nid = '__qwerymeupscotty')
|
2644
|
+
s = '[id="' + nid + '"]' + s // avoid byId and allow us to match context element
|
2645
|
+
collector(root.parentNode || root, s, true)
|
2646
|
+
oid || root.removeAttribute('id')
|
2647
|
+
}
|
2648
|
+
return;
|
2649
|
+
}
|
2650
|
+
s.length && collector(root, s, false)
|
2651
|
+
}
|
2652
|
+
}
|
2653
|
+
|
2654
|
+
var isAncestor = 'compareDocumentPosition' in html ?
|
2655
|
+
function (element, container) {
|
2656
|
+
return (container.compareDocumentPosition(element) & 16) == 16
|
2657
|
+
} : 'contains' in html ?
|
2658
|
+
function (element, container) {
|
2659
|
+
container = container[nodeType] === 9 || container == window ? html : container
|
2660
|
+
return container !== element && container.contains(element)
|
2661
|
+
} :
|
2662
|
+
function (element, container) {
|
2663
|
+
while (element = element.parentNode) if (element === container) return 1
|
2664
|
+
return 0
|
2665
|
+
}
|
2666
|
+
, getAttr = function () {
|
2667
|
+
// detect buggy IE src/href getAttribute() call
|
2668
|
+
var e = doc.createElement('p')
|
2669
|
+
return ((e.innerHTML = '<a href="#x">x</a>') && e.firstChild.getAttribute('href') != '#x') ?
|
2670
|
+
function (e, a) {
|
2671
|
+
return a === 'class' ? e.className : (a === 'href' || a === 'src') ?
|
2672
|
+
e.getAttribute(a, 2) : e.getAttribute(a)
|
2673
|
+
} :
|
2674
|
+
function (e, a) { return e.getAttribute(a) }
|
2675
|
+
}()
|
2676
|
+
, hasByClass = !!doc[byClass]
|
2677
|
+
// has native qSA support
|
2678
|
+
, hasQSA = doc.querySelector && doc[qSA]
|
2679
|
+
// use native qSA
|
2680
|
+
, selectQSA = function (selector, root) {
|
2681
|
+
var result = [], ss, e
|
2682
|
+
try {
|
2683
|
+
if (root[nodeType] === 9 || !splittable.test(selector)) {
|
2684
|
+
// most work is done right here, defer to qSA
|
2685
|
+
return arrayify(root[qSA](selector))
|
2686
|
+
}
|
2687
|
+
// special case where we need the services of `collectSelector()`
|
2688
|
+
each(ss = selector.split(','), collectSelector(root, function (ctx, s) {
|
2689
|
+
e = ctx[qSA](s)
|
2690
|
+
if (e.length == 1) result[result.length] = e.item(0)
|
2691
|
+
else if (e.length) result = result.concat(arrayify(e))
|
2692
|
+
}))
|
2693
|
+
return ss.length > 1 && result.length > 1 ? uniq(result) : result
|
2694
|
+
} catch (ex) { }
|
2695
|
+
return selectNonNative(selector, root)
|
2696
|
+
}
|
2697
|
+
// no native selector support
|
2698
|
+
, selectNonNative = function (selector, root) {
|
2699
|
+
var result = [], items, m, i, l, r, ss
|
2700
|
+
selector = selector.replace(normalizr, '$1')
|
2701
|
+
if (m = selector.match(tagAndOrClass)) {
|
2702
|
+
r = classRegex(m[2])
|
2703
|
+
items = root[byTag](m[1] || '*')
|
2704
|
+
for (i = 0, l = items.length; i < l; i++) {
|
2705
|
+
if (r.test(items[i].className)) result[result.length] = items[i]
|
2706
|
+
}
|
2707
|
+
return result
|
2708
|
+
}
|
2709
|
+
// more complex selector, get `_qwery()` to do the work for us
|
2710
|
+
each(ss = selector.split(','), collectSelector(root, function (ctx, s, rewrite) {
|
2711
|
+
r = _qwery(s, ctx)
|
2712
|
+
for (i = 0, l = r.length; i < l; i++) {
|
2713
|
+
if (ctx[nodeType] === 9 || rewrite || isAncestor(r[i], root)) result[result.length] = r[i]
|
2714
|
+
}
|
2715
|
+
}))
|
2716
|
+
return ss.length > 1 && result.length > 1 ? uniq(result) : result
|
2717
|
+
}
|
2718
|
+
, configure = function (options) {
|
2719
|
+
// configNativeQSA: use fully-internal selector or native qSA where present
|
2720
|
+
if (typeof options[useNativeQSA] !== 'undefined')
|
2721
|
+
select = !options[useNativeQSA] ? selectNonNative : hasQSA ? selectQSA : selectNonNative
|
2722
|
+
}
|
2723
|
+
|
2724
|
+
configure({ useNativeQSA: true })
|
2725
|
+
|
2726
|
+
qwery.configure = configure
|
2727
|
+
qwery.uniq = uniq
|
2728
|
+
qwery.is = is
|
2729
|
+
qwery.pseudos = {}
|
2730
|
+
|
2731
|
+
return qwery
|
2732
|
+
});
|
2733
|
+
|
2734
|
+
};
|
2735
|
+
modules.lib__qwery = function() {
|
2736
|
+
if (qweryCache === null) {
|
2737
|
+
qweryCache = qweryFunc();
|
2738
|
+
}
|
2739
|
+
return qweryCache;
|
2740
|
+
};
|
2741
|
+
window.modules = modules;
|
2742
|
+
})();
|
2743
|
+
|
2744
|
+
(function() {
|
2745
|
+
var modules = window.modules || [];
|
2746
|
+
var reqwestCache = null;
|
2747
|
+
var reqwestFunc = function() {
|
2748
|
+
/*!
|
2749
|
+
* Reqwest! A general purpose XHR connection manager
|
2750
|
+
* (c) Dustin Diaz 2013
|
2751
|
+
* https://github.com/ded/reqwest
|
2752
|
+
* license MIT
|
2753
|
+
*/
|
2754
|
+
!function (name, context, definition) {
|
2755
|
+
if (typeof module != 'undefined' && module.exports) module.exports = definition()
|
2756
|
+
else if (typeof define == 'function' && define.amd) define(definition)
|
2757
|
+
else context[name] = definition()
|
2758
|
+
}('reqwest', this, function () {
|
2759
|
+
|
2760
|
+
var win = window
|
2761
|
+
, doc = document
|
2762
|
+
, twoHundo = /^20\d$/
|
2763
|
+
, byTag = 'getElementsByTagName'
|
2764
|
+
, readyState = 'readyState'
|
2765
|
+
, contentType = 'Content-Type'
|
2766
|
+
, requestedWith = 'X-Requested-With'
|
2767
|
+
, head = doc[byTag]('head')[0]
|
2768
|
+
, uniqid = 0
|
2769
|
+
, callbackPrefix = 'reqwest_' + (+new Date())
|
2770
|
+
, lastValue // data stored by the most recent JSONP callback
|
2771
|
+
, xmlHttpRequest = 'XMLHttpRequest'
|
2772
|
+
, noop = function () {}
|
2773
|
+
|
2774
|
+
, isArray = typeof Array.isArray == 'function'
|
2775
|
+
? Array.isArray
|
2776
|
+
: function (a) {
|
2777
|
+
return a instanceof Array
|
2778
|
+
}
|
2779
|
+
|
2780
|
+
, defaultHeaders = {
|
2781
|
+
contentType: 'application/x-www-form-urlencoded'
|
2782
|
+
, requestedWith: xmlHttpRequest
|
2783
|
+
, accept: {
|
2784
|
+
'*': 'text/javascript, text/html, application/xml, text/xml, */*'
|
2785
|
+
, xml: 'application/xml, text/xml'
|
2786
|
+
, html: 'text/html'
|
2787
|
+
, text: 'text/plain'
|
2788
|
+
, json: 'application/json, text/javascript'
|
2789
|
+
, js: 'application/javascript, text/javascript'
|
2790
|
+
}
|
2791
|
+
}
|
2792
|
+
|
2793
|
+
, xhr = win[xmlHttpRequest]
|
2794
|
+
? function () {
|
2795
|
+
return new XMLHttpRequest()
|
2796
|
+
}
|
2797
|
+
: function () {
|
2798
|
+
return new ActiveXObject('Microsoft.XMLHTTP')
|
2799
|
+
}
|
2800
|
+
, globalSetupOptions = {
|
2801
|
+
dataFilter: function (data) {
|
2802
|
+
return data
|
2803
|
+
}
|
2804
|
+
}
|
2805
|
+
|
2806
|
+
function handleReadyState(r, success, error) {
|
2807
|
+
return function () {
|
2808
|
+
// use _aborted to mitigate against IE err c00c023f
|
2809
|
+
// (can't read props on aborted request objects)
|
2810
|
+
if (r._aborted) return error(r.request)
|
2811
|
+
if (r.request && r.request[readyState] == 4) {
|
2812
|
+
r.request.onreadystatechange = noop
|
2813
|
+
if (twoHundo.test(r.request.status))
|
2814
|
+
success(r.request)
|
2815
|
+
else
|
2816
|
+
error(r.request)
|
2817
|
+
}
|
2818
|
+
}
|
2819
|
+
}
|
2820
|
+
|
2821
|
+
function setHeaders(http, o) {
|
2822
|
+
var headers = o.headers || {}
|
2823
|
+
, h
|
2824
|
+
|
2825
|
+
headers.Accept = headers.Accept
|
2826
|
+
|| defaultHeaders.accept[o.type]
|
2827
|
+
|| defaultHeaders.accept['*']
|
2828
|
+
|
2829
|
+
// breaks cross-origin requests with legacy browsers
|
2830
|
+
if (!o.crossOrigin && !headers[requestedWith]) headers[requestedWith] = defaultHeaders.requestedWith
|
2831
|
+
if (!headers[contentType]) headers[contentType] = o.contentType || defaultHeaders.contentType
|
2832
|
+
for (h in headers)
|
2833
|
+
headers.hasOwnProperty(h) && http.setRequestHeader(h, headers[h])
|
2834
|
+
}
|
2835
|
+
|
2836
|
+
function setCredentials(http, o) {
|
2837
|
+
if (typeof o.withCredentials !== 'undefined' && typeof http.withCredentials !== 'undefined') {
|
2838
|
+
http.withCredentials = !!o.withCredentials
|
2839
|
+
}
|
2840
|
+
}
|
2841
|
+
|
2842
|
+
function generalCallback(data) {
|
2843
|
+
lastValue = data
|
2844
|
+
}
|
2845
|
+
|
2846
|
+
function urlappend (url, s) {
|
2847
|
+
return url + (/\?/.test(url) ? '&' : '?') + s
|
2848
|
+
}
|
2849
|
+
|
2850
|
+
function handleJsonp(o, fn, err, url) {
|
2851
|
+
var reqId = uniqid++
|
2852
|
+
, cbkey = o.jsonpCallback || 'callback' // the 'callback' key
|
2853
|
+
, cbval = o.jsonpCallbackName || reqwest.getcallbackPrefix(reqId)
|
2854
|
+
// , cbval = o.jsonpCallbackName || ('reqwest_' + reqId) // the 'callback' value
|
2855
|
+
, cbreg = new RegExp('((^|\\?|&)' + cbkey + ')=([^&]+)')
|
2856
|
+
, match = url.match(cbreg)
|
2857
|
+
, script = doc.createElement('script')
|
2858
|
+
, loaded = 0
|
2859
|
+
, isIE10 = navigator.userAgent.indexOf('MSIE 10.0') !== -1
|
2860
|
+
|
2861
|
+
if (match) {
|
2862
|
+
if (match[3] === '?') {
|
2863
|
+
url = url.replace(cbreg, '$1=' + cbval) // wildcard callback func name
|
2864
|
+
} else {
|
2865
|
+
cbval = match[3] // provided callback func name
|
2866
|
+
}
|
2867
|
+
} else {
|
2868
|
+
url = urlappend(url, cbkey + '=' + cbval) // no callback details, add 'em
|
2869
|
+
}
|
2870
|
+
|
2871
|
+
win[cbval] = generalCallback
|
2872
|
+
|
2873
|
+
script.type = 'text/javascript'
|
2874
|
+
script.src = url
|
2875
|
+
script.async = true
|
2876
|
+
if (typeof script.onreadystatechange !== 'undefined' && !isIE10) {
|
2877
|
+
// need this for IE due to out-of-order onreadystatechange(), binding script
|
2878
|
+
// execution to an event listener gives us control over when the script
|
2879
|
+
// is executed. See http://jaubourg.net/2010/07/loading-script-as-onclick-handler-of.html
|
2880
|
+
//
|
2881
|
+
// if this hack is used in IE10 jsonp callback are never called
|
2882
|
+
script.event = 'onclick'
|
2883
|
+
script.htmlFor = script.id = '_reqwest_' + reqId
|
2884
|
+
}
|
2885
|
+
|
2886
|
+
script.onload = script.onreadystatechange = function () {
|
2887
|
+
if ((script[readyState] && script[readyState] !== 'complete' && script[readyState] !== 'loaded') || loaded) {
|
2888
|
+
return false
|
2889
|
+
}
|
2890
|
+
script.onload = script.onreadystatechange = null
|
2891
|
+
script.onclick && script.onclick()
|
2892
|
+
// Call the user callback with the last value stored and clean up values and scripts.
|
2893
|
+
fn(lastValue)
|
2894
|
+
lastValue = undefined
|
2895
|
+
head.removeChild(script)
|
2896
|
+
loaded = 1
|
2897
|
+
}
|
2898
|
+
|
2899
|
+
// Add the script to the DOM head
|
2900
|
+
head.appendChild(script)
|
2901
|
+
|
2902
|
+
// Enable JSONP timeout
|
2903
|
+
return {
|
2904
|
+
abort: function () {
|
2905
|
+
script.onload = script.onreadystatechange = null
|
2906
|
+
err({}, 'Request is aborted: timeout', {})
|
2907
|
+
lastValue = undefined
|
2908
|
+
head.removeChild(script)
|
2909
|
+
loaded = 1
|
2910
|
+
}
|
2911
|
+
}
|
2912
|
+
}
|
2913
|
+
|
2914
|
+
function getRequest(fn, err) {
|
2915
|
+
var o = this.o
|
2916
|
+
, method = (o.method || 'GET').toUpperCase()
|
2917
|
+
, url = typeof o === 'string' ? o : o.url
|
2918
|
+
// convert non-string objects to query-string form unless o.processData is false
|
2919
|
+
, data = (o.processData !== false && o.data && typeof o.data !== 'string')
|
2920
|
+
? reqwest.toQueryString(o.data)
|
2921
|
+
: (o.data || null)
|
2922
|
+
, http
|
2923
|
+
|
2924
|
+
// if we're working on a GET request and we have data then we should append
|
2925
|
+
// query string to end of URL and not post data
|
2926
|
+
if ((o.type == 'jsonp' || method == 'GET') && data) {
|
2927
|
+
url = urlappend(url, data)
|
2928
|
+
data = null
|
2929
|
+
}
|
2930
|
+
|
2931
|
+
if (o.type == 'jsonp') return handleJsonp(o, fn, err, url)
|
2932
|
+
|
2933
|
+
http = xhr()
|
2934
|
+
http.open(method, url, o.async === false ? false : true)
|
2935
|
+
setHeaders(http, o)
|
2936
|
+
setCredentials(http, o)
|
2937
|
+
http.onreadystatechange = handleReadyState(this, fn, err)
|
2938
|
+
o.before && o.before(http)
|
2939
|
+
http.send(data)
|
2940
|
+
return http
|
2941
|
+
}
|
2942
|
+
|
2943
|
+
function Reqwest(o, fn) {
|
2944
|
+
this.o = o
|
2945
|
+
this.fn = fn
|
2946
|
+
|
2947
|
+
init.apply(this, arguments)
|
2948
|
+
}
|
2949
|
+
|
2950
|
+
function setType(url) {
|
2951
|
+
var m = url.match(/\.(json|jsonp|html|xml)(\?|$)/)
|
2952
|
+
return m ? m[1] : 'js'
|
2953
|
+
}
|
2954
|
+
|
2955
|
+
function init(o, fn) {
|
2956
|
+
|
2957
|
+
this.url = typeof o == 'string' ? o : o.url
|
2958
|
+
this.timeout = null
|
2959
|
+
|
2960
|
+
// whether request has been fulfilled for purpose
|
2961
|
+
// of tracking the Promises
|
2962
|
+
this._fulfilled = false
|
2963
|
+
// success handlers
|
2964
|
+
this._fulfillmentHandlers = []
|
2965
|
+
// error handlers
|
2966
|
+
this._errorHandlers = []
|
2967
|
+
// complete (both success and fail) handlers
|
2968
|
+
this._completeHandlers = []
|
2969
|
+
this._erred = false
|
2970
|
+
this._responseArgs = {}
|
2971
|
+
|
2972
|
+
var self = this
|
2973
|
+
, type = o.type || setType(this.url)
|
2974
|
+
|
2975
|
+
fn = fn || function () {}
|
2976
|
+
|
2977
|
+
if (o.timeout) {
|
2978
|
+
this.timeout = setTimeout(function () {
|
2979
|
+
self.abort()
|
2980
|
+
}, o.timeout)
|
2981
|
+
}
|
2982
|
+
|
2983
|
+
if (o.success) {
|
2984
|
+
this._fulfillmentHandlers.push(function () {
|
2985
|
+
o.success.apply(o, arguments)
|
2986
|
+
})
|
2987
|
+
}
|
2988
|
+
|
2989
|
+
if (o.error) {
|
2990
|
+
this._errorHandlers.push(function () {
|
2991
|
+
o.error.apply(o, arguments)
|
2992
|
+
})
|
2993
|
+
}
|
2994
|
+
|
2995
|
+
if (o.complete) {
|
2996
|
+
this._completeHandlers.push(function () {
|
2997
|
+
o.complete.apply(o, arguments)
|
2998
|
+
})
|
2999
|
+
}
|
3000
|
+
|
3001
|
+
function complete (resp) {
|
3002
|
+
o.timeout && clearTimeout(self.timeout)
|
3003
|
+
self.timeout = null
|
3004
|
+
while (self._completeHandlers.length > 0) {
|
3005
|
+
self._completeHandlers.shift()(resp)
|
3006
|
+
}
|
3007
|
+
}
|
3008
|
+
|
3009
|
+
function success (resp) {
|
3010
|
+
// use global data filter on response text
|
3011
|
+
var filteredResponse = globalSetupOptions.dataFilter(resp.responseText, type)
|
3012
|
+
, r = filteredResponse
|
3013
|
+
try {
|
3014
|
+
resp.responseText = r
|
3015
|
+
} catch (e) {
|
3016
|
+
// can't assign this in IE<=8, just ignore
|
3017
|
+
}
|
3018
|
+
if (r) {
|
3019
|
+
switch (type) {
|
3020
|
+
case 'json':
|
3021
|
+
try {
|
3022
|
+
resp = win.JSON ? win.JSON.parse(r) : eval('(' + r + ')')
|
3023
|
+
} catch (err) {
|
3024
|
+
return error(resp, 'Could not parse JSON in response', err)
|
3025
|
+
}
|
3026
|
+
break
|
3027
|
+
case 'js':
|
3028
|
+
resp = eval(r)
|
3029
|
+
break
|
3030
|
+
case 'html':
|
3031
|
+
resp = r
|
3032
|
+
break
|
3033
|
+
case 'xml':
|
3034
|
+
resp = resp.responseXML
|
3035
|
+
&& resp.responseXML.parseError // IE trololo
|
3036
|
+
&& resp.responseXML.parseError.errorCode
|
3037
|
+
&& resp.responseXML.parseError.reason
|
3038
|
+
? null
|
3039
|
+
: resp.responseXML
|
3040
|
+
break
|
3041
|
+
}
|
3042
|
+
}
|
3043
|
+
|
3044
|
+
self._responseArgs.resp = resp
|
3045
|
+
self._fulfilled = true
|
3046
|
+
fn(resp)
|
3047
|
+
while (self._fulfillmentHandlers.length > 0) {
|
3048
|
+
self._fulfillmentHandlers.shift()(resp)
|
3049
|
+
}
|
3050
|
+
|
3051
|
+
complete(resp)
|
3052
|
+
}
|
3053
|
+
|
3054
|
+
function error(resp, msg, t) {
|
3055
|
+
self._responseArgs.resp = resp
|
3056
|
+
self._responseArgs.msg = msg
|
3057
|
+
self._responseArgs.t = t
|
3058
|
+
self._erred = true
|
3059
|
+
while (self._errorHandlers.length > 0) {
|
3060
|
+
self._errorHandlers.shift()(resp, msg, t)
|
3061
|
+
}
|
3062
|
+
complete(resp)
|
3063
|
+
}
|
3064
|
+
|
3065
|
+
this.request = getRequest.call(this, success, error)
|
3066
|
+
}
|
3067
|
+
|
3068
|
+
Reqwest.prototype = {
|
3069
|
+
abort: function () {
|
3070
|
+
this._aborted = true
|
3071
|
+
this.request.abort()
|
3072
|
+
}
|
3073
|
+
|
3074
|
+
, retry: function () {
|
3075
|
+
init.call(this, this.o, this.fn)
|
3076
|
+
}
|
3077
|
+
|
3078
|
+
/**
|
3079
|
+
* Small deviation from the Promises A CommonJs specification
|
3080
|
+
* http://wiki.commonjs.org/wiki/Promises/A
|
3081
|
+
*/
|
3082
|
+
|
3083
|
+
/**
|
3084
|
+
* `then` will execute upon successful requests
|
3085
|
+
*/
|
3086
|
+
, then: function (success, fail) {
|
3087
|
+
success = success || function () {}
|
3088
|
+
fail = fail || function () {}
|
3089
|
+
if (this._fulfilled) {
|
3090
|
+
success(this._responseArgs.resp)
|
3091
|
+
} else if (this._erred) {
|
3092
|
+
fail(this._responseArgs.resp, this._responseArgs.msg, this._responseArgs.t)
|
3093
|
+
} else {
|
3094
|
+
this._fulfillmentHandlers.push(success)
|
3095
|
+
this._errorHandlers.push(fail)
|
3096
|
+
}
|
3097
|
+
return this
|
3098
|
+
}
|
3099
|
+
|
3100
|
+
/**
|
3101
|
+
* `always` will execute whether the request succeeds or fails
|
3102
|
+
*/
|
3103
|
+
, always: function (fn) {
|
3104
|
+
if (this._fulfilled || this._erred) {
|
3105
|
+
fn(this._responseArgs.resp)
|
3106
|
+
} else {
|
3107
|
+
this._completeHandlers.push(fn)
|
3108
|
+
}
|
3109
|
+
return this
|
3110
|
+
}
|
3111
|
+
|
3112
|
+
/**
|
3113
|
+
* `fail` will execute when the request fails
|
3114
|
+
*/
|
3115
|
+
, fail: function (fn) {
|
3116
|
+
if (this._erred) {
|
3117
|
+
fn(this._responseArgs.resp, this._responseArgs.msg, this._responseArgs.t)
|
3118
|
+
} else {
|
3119
|
+
this._errorHandlers.push(fn)
|
3120
|
+
}
|
3121
|
+
return this
|
3122
|
+
}
|
3123
|
+
}
|
3124
|
+
|
3125
|
+
function reqwest(o, fn) {
|
3126
|
+
return new Reqwest(o, fn)
|
3127
|
+
}
|
3128
|
+
|
3129
|
+
// normalize newline variants according to spec -> CRLF
|
3130
|
+
function normalize(s) {
|
3131
|
+
return s ? s.replace(/\r?\n/g, '\r\n') : ''
|
3132
|
+
}
|
3133
|
+
|
3134
|
+
function serial(el, cb) {
|
3135
|
+
var n = el.name
|
3136
|
+
, t = el.tagName.toLowerCase()
|
3137
|
+
, optCb = function (o) {
|
3138
|
+
// IE gives value="" even where there is no value attribute
|
3139
|
+
// 'specified' ref: http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-862529273
|
3140
|
+
if (o && !o.disabled)
|
3141
|
+
cb(n, normalize(o.attributes.value && o.attributes.value.specified ? o.value : o.text))
|
3142
|
+
}
|
3143
|
+
, ch, ra, val, i
|
3144
|
+
|
3145
|
+
// don't serialize elements that are disabled or without a name
|
3146
|
+
if (el.disabled || !n) return
|
3147
|
+
|
3148
|
+
switch (t) {
|
3149
|
+
case 'input':
|
3150
|
+
if (!/reset|button|image|file/i.test(el.type)) {
|
3151
|
+
ch = /checkbox/i.test(el.type)
|
3152
|
+
ra = /radio/i.test(el.type)
|
3153
|
+
val = el.value
|
3154
|
+
// WebKit gives us "" instead of "on" if a checkbox has no value, so correct it here
|
3155
|
+
;(!(ch || ra) || el.checked) && cb(n, normalize(ch && val === '' ? 'on' : val))
|
3156
|
+
}
|
3157
|
+
break
|
3158
|
+
case 'textarea':
|
3159
|
+
cb(n, normalize(el.value))
|
3160
|
+
break
|
3161
|
+
case 'select':
|
3162
|
+
if (el.type.toLowerCase() === 'select-one') {
|
3163
|
+
optCb(el.selectedIndex >= 0 ? el.options[el.selectedIndex] : null)
|
3164
|
+
} else {
|
3165
|
+
for (i = 0; el.length && i < el.length; i++) {
|
3166
|
+
el.options[i].selected && optCb(el.options[i])
|
3167
|
+
}
|
3168
|
+
}
|
3169
|
+
break
|
3170
|
+
}
|
3171
|
+
}
|
3172
|
+
|
3173
|
+
// collect up all form elements found from the passed argument elements all
|
3174
|
+
// the way down to child elements; pass a '<form>' or form fields.
|
3175
|
+
// called with 'this'=callback to use for serial() on each element
|
3176
|
+
function eachFormElement() {
|
3177
|
+
var cb = this
|
3178
|
+
, e, i
|
3179
|
+
, serializeSubtags = function (e, tags) {
|
3180
|
+
var i, j, fa
|
3181
|
+
for (i = 0; i < tags.length; i++) {
|
3182
|
+
fa = e[byTag](tags[i])
|
3183
|
+
for (j = 0; j < fa.length; j++) serial(fa[j], cb)
|
3184
|
+
}
|
3185
|
+
}
|
3186
|
+
|
3187
|
+
for (i = 0; i < arguments.length; i++) {
|
3188
|
+
e = arguments[i]
|
3189
|
+
if (/input|select|textarea/i.test(e.tagName)) serial(e, cb)
|
3190
|
+
serializeSubtags(e, [ 'input', 'select', 'textarea' ])
|
3191
|
+
}
|
3192
|
+
}
|
3193
|
+
|
3194
|
+
// standard query string style serialization
|
3195
|
+
function serializeQueryString() {
|
3196
|
+
return reqwest.toQueryString(reqwest.serializeArray.apply(null, arguments))
|
3197
|
+
}
|
3198
|
+
|
3199
|
+
// { 'name': 'value', ... } style serialization
|
3200
|
+
function serializeHash() {
|
3201
|
+
var hash = {}
|
3202
|
+
eachFormElement.apply(function (name, value) {
|
3203
|
+
if (name in hash) {
|
3204
|
+
hash[name] && !isArray(hash[name]) && (hash[name] = [hash[name]])
|
3205
|
+
hash[name].push(value)
|
3206
|
+
} else hash[name] = value
|
3207
|
+
}, arguments)
|
3208
|
+
return hash
|
3209
|
+
}
|
3210
|
+
|
3211
|
+
// [ { name: 'name', value: 'value' }, ... ] style serialization
|
3212
|
+
reqwest.serializeArray = function () {
|
3213
|
+
var arr = []
|
3214
|
+
eachFormElement.apply(function (name, value) {
|
3215
|
+
arr.push({name: name, value: value})
|
3216
|
+
}, arguments)
|
3217
|
+
return arr
|
3218
|
+
}
|
3219
|
+
|
3220
|
+
reqwest.serialize = function () {
|
3221
|
+
if (arguments.length === 0) return ''
|
3222
|
+
var opt, fn
|
3223
|
+
, args = Array.prototype.slice.call(arguments, 0)
|
3224
|
+
|
3225
|
+
opt = args.pop()
|
3226
|
+
opt && opt.nodeType && args.push(opt) && (opt = null)
|
3227
|
+
opt && (opt = opt.type)
|
3228
|
+
|
3229
|
+
if (opt == 'map') fn = serializeHash
|
3230
|
+
else if (opt == 'array') fn = reqwest.serializeArray
|
3231
|
+
else fn = serializeQueryString
|
3232
|
+
|
3233
|
+
return fn.apply(null, args)
|
3234
|
+
}
|
3235
|
+
|
3236
|
+
reqwest.toQueryString = function (o, trad) {
|
3237
|
+
var prefix, i
|
3238
|
+
, traditional = trad || false
|
3239
|
+
, s = []
|
3240
|
+
, enc = encodeURIComponent
|
3241
|
+
, add = function (key, value) {
|
3242
|
+
// If value is a function, invoke it and return its value
|
3243
|
+
value = ('function' === typeof value) ? value() : (value == null ? '' : value)
|
3244
|
+
s[s.length] = enc(key) + '=' + enc(value)
|
3245
|
+
}
|
3246
|
+
// If an array was passed in, assume that it is an array of form elements.
|
3247
|
+
if (isArray(o)) {
|
3248
|
+
for (i = 0; o && i < o.length; i++) add(o[i].name, o[i].value)
|
3249
|
+
} else {
|
3250
|
+
// If traditional, encode the "old" way (the way 1.3.2 or older
|
3251
|
+
// did it), otherwise encode params recursively.
|
3252
|
+
for (prefix in o) {
|
3253
|
+
buildParams(prefix, o[prefix], traditional, add)
|
3254
|
+
}
|
3255
|
+
}
|
3256
|
+
|
3257
|
+
// spaces should be + according to spec
|
3258
|
+
return s.join('&').replace(/%20/g, '+')
|
3259
|
+
}
|
3260
|
+
|
3261
|
+
function buildParams(prefix, obj, traditional, add) {
|
3262
|
+
var name, i, v
|
3263
|
+
, rbracket = /\[\]$/
|
3264
|
+
|
3265
|
+
if (isArray(obj)) {
|
3266
|
+
// Serialize array item.
|
3267
|
+
for (i = 0; obj && i < obj.length; i++) {
|
3268
|
+
v = obj[i]
|
3269
|
+
if (traditional || rbracket.test(prefix)) {
|
3270
|
+
// Treat each array item as a scalar.
|
3271
|
+
add(prefix, v)
|
3272
|
+
} else {
|
3273
|
+
buildParams(prefix + '[' + (typeof v === 'object' ? i : '') + ']', v, traditional, add)
|
3274
|
+
}
|
3275
|
+
}
|
3276
|
+
} else if (obj && obj.toString() === '[object Object]') {
|
3277
|
+
// Serialize object item.
|
3278
|
+
for (name in obj) {
|
3279
|
+
buildParams(prefix + '[' + name + ']', obj[name], traditional, add)
|
3280
|
+
}
|
3281
|
+
|
3282
|
+
} else {
|
3283
|
+
// Serialize scalar item.
|
3284
|
+
add(prefix, obj)
|
3285
|
+
}
|
3286
|
+
}
|
3287
|
+
|
3288
|
+
reqwest.getcallbackPrefix = function () {
|
3289
|
+
return callbackPrefix
|
3290
|
+
}
|
3291
|
+
|
3292
|
+
// jQuery and Zepto compatibility, differences can be remapped here so you can call
|
3293
|
+
// .ajax.compat(options, callback)
|
3294
|
+
reqwest.compat = function (o, fn) {
|
3295
|
+
if (o) {
|
3296
|
+
o.type && (o.method = o.type) && delete o.type
|
3297
|
+
o.dataType && (o.type = o.dataType)
|
3298
|
+
o.jsonpCallback && (o.jsonpCallbackName = o.jsonpCallback) && delete o.jsonpCallback
|
3299
|
+
o.jsonp && (o.jsonpCallback = o.jsonp)
|
3300
|
+
}
|
3301
|
+
return new Reqwest(o, fn)
|
3302
|
+
}
|
3303
|
+
|
3304
|
+
reqwest.ajaxSetup = function (options) {
|
3305
|
+
options = options || {}
|
3306
|
+
for (var k in options) {
|
3307
|
+
globalSetupOptions[k] = options[k]
|
3308
|
+
}
|
3309
|
+
}
|
3310
|
+
|
3311
|
+
return reqwest
|
3312
|
+
});
|
3313
|
+
|
3314
|
+
};
|
3315
|
+
modules.lib__reqwest = function() {
|
3316
|
+
if (reqwestCache === null) {
|
3317
|
+
reqwestCache = reqwestFunc();
|
3318
|
+
}
|
3319
|
+
return reqwestCache;
|
3320
|
+
};
|
3321
|
+
window.modules = modules;
|
3322
|
+
})();
|
3323
|
+
|
3324
|
+
(function() {
|
3325
|
+
var modules = window.modules || [];
|
3326
|
+
var event_listenersCache = null;
|
3327
|
+
var event_listenersFunc = function() {
|
3328
|
+
// this only brings addEventListener into IE8
|
3329
|
+
|
3330
|
+
(function() {
|
3331
|
+
if (!Event.prototype.preventDefault) {
|
3332
|
+
Event.prototype.preventDefault=function() {
|
3333
|
+
this.returnValue=false;
|
3334
|
+
};
|
3335
|
+
}
|
3336
|
+
if (!Event.prototype.stopPropagation) {
|
3337
|
+
Event.prototype.stopPropagation=function() {
|
3338
|
+
this.cancelBubble=true;
|
3339
|
+
};
|
3340
|
+
}
|
3341
|
+
if (!Element.prototype.addEventListener) {
|
3342
|
+
var eventListeners=[];
|
3343
|
+
|
3344
|
+
var addEventListener=function(type,listener /*, useCapture (will be ignored) */) {
|
3345
|
+
var self=this;
|
3346
|
+
var wrapper=function(e) {
|
3347
|
+
e.target=e.srcElement;
|
3348
|
+
e.currentTarget=self;
|
3349
|
+
if (listener.handleEvent) {
|
3350
|
+
listener.handleEvent(e);
|
3351
|
+
} else {
|
3352
|
+
listener.call(self,e);
|
3353
|
+
}
|
3354
|
+
};
|
3355
|
+
if (type=="DOMContentLoaded") {
|
3356
|
+
var wrapper2=function(e) {
|
3357
|
+
if (document.readyState=="complete") {
|
3358
|
+
wrapper(e);
|
3359
|
+
}
|
3360
|
+
};
|
3361
|
+
document.attachEvent("onreadystatechange",wrapper2);
|
3362
|
+
eventListeners.push({object:this,type:type,listener:listener,wrapper:wrapper2});
|
3363
|
+
|
3364
|
+
if (document.readyState=="complete") {
|
3365
|
+
var e=new Event();
|
3366
|
+
e.srcElement=window;
|
3367
|
+
wrapper2(e);
|
3368
|
+
}
|
3369
|
+
} else {
|
3370
|
+
this.attachEvent("on"+type,wrapper);
|
3371
|
+
eventListeners.push({object:this,type:type,listener:listener,wrapper:wrapper});
|
3372
|
+
}
|
3373
|
+
};
|
3374
|
+
var removeEventListener=function(type,listener /*, useCapture (will be ignored) */) {
|
3375
|
+
var counter=0;
|
3376
|
+
while (counter<eventListeners.length) {
|
3377
|
+
var eventListener=eventListeners[counter];
|
3378
|
+
if (eventListener.object==this && eventListener.type==type && eventListener.listener==listener) {
|
3379
|
+
if (type=="DOMContentLoaded") {
|
3380
|
+
this.detachEvent("onreadystatechange",eventListener.wrapper);
|
3381
|
+
} else {
|
3382
|
+
this.detachEvent("on"+type,eventListener.wrapper);
|
3383
|
+
}
|
3384
|
+
break;
|
3385
|
+
}
|
3386
|
+
++counter;
|
3387
|
+
}
|
3388
|
+
};
|
3389
|
+
Element.prototype.addEventListener=addEventListener;
|
3390
|
+
Element.prototype.removeEventListener=removeEventListener;
|
3391
|
+
if (HTMLDocument) {
|
3392
|
+
HTMLDocument.prototype.addEventListener=addEventListener;
|
3393
|
+
HTMLDocument.prototype.removeEventListener=removeEventListener;
|
3394
|
+
}
|
3395
|
+
if (Window) {
|
3396
|
+
Window.prototype.addEventListener=addEventListener;
|
3397
|
+
Window.prototype.removeEventListener=removeEventListener;
|
3398
|
+
}
|
3399
|
+
}
|
3400
|
+
})();
|
3401
|
+
};
|
3402
|
+
modules.patches__event_listeners = function() {
|
3403
|
+
if (event_listenersCache === null) {
|
3404
|
+
event_listenersCache = event_listenersFunc();
|
3405
|
+
}
|
3406
|
+
return event_listenersCache;
|
953
3407
|
};
|
954
3408
|
window.modules = modules;
|
955
3409
|
})();
|
@@ -1179,19 +3633,3 @@ return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,a
|
|
1179
3633
|
};
|
1180
3634
|
window.modules = modules;
|
1181
3635
|
})();
|
1182
|
-
|
1183
|
-
(function() {
|
1184
|
-
var modules = window.modules || [];
|
1185
|
-
window.require = function(path) {
|
1186
|
-
var transformedPath = path.replace(/\//g, '__');
|
1187
|
-
if (transformedPath.indexOf('__') === -1) {
|
1188
|
-
transformedPath = '__' + transformedPath;
|
1189
|
-
}
|
1190
|
-
var factory = modules[transformedPath];
|
1191
|
-
if (factory === null) {
|
1192
|
-
return null;
|
1193
|
-
} else {
|
1194
|
-
return modules[transformedPath]();
|
1195
|
-
}
|
1196
|
-
};
|
1197
|
-
})();
|