hoarder-js 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
-
})();
|