html5forms-rails 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. data/CHANGELOG.md +5 -0
  2. data/Gemfile +11 -0
  3. data/README.md +208 -0
  4. data/Rakefile +49 -0
  5. data/VERSION +1 -0
  6. data/demos/html5-form-demo.html +79 -0
  7. data/html5forms-rails.gemspec +142 -0
  8. data/lib/html5forms.rb +6 -0
  9. data/vendor/assets/images/colorpicker/blank.gif +0 -0
  10. data/vendor/assets/images/colorpicker/colorpicker_background.png +0 -0
  11. data/vendor/assets/images/colorpicker/colorpicker_hex.png +0 -0
  12. data/vendor/assets/images/colorpicker/colorpicker_hsb_b.png +0 -0
  13. data/vendor/assets/images/colorpicker/colorpicker_hsb_h.png +0 -0
  14. data/vendor/assets/images/colorpicker/colorpicker_hsb_s.png +0 -0
  15. data/vendor/assets/images/colorpicker/colorpicker_indic.gif +0 -0
  16. data/vendor/assets/images/colorpicker/colorpicker_overlay.png +0 -0
  17. data/vendor/assets/images/colorpicker/colorpicker_rgb_b.png +0 -0
  18. data/vendor/assets/images/colorpicker/colorpicker_rgb_g.png +0 -0
  19. data/vendor/assets/images/colorpicker/colorpicker_rgb_r.png +0 -0
  20. data/vendor/assets/images/colorpicker/colorpicker_select.gif +0 -0
  21. data/vendor/assets/images/colorpicker/colorpicker_submit.png +0 -0
  22. data/vendor/assets/images/colorpicker/custom_background.png +0 -0
  23. data/vendor/assets/images/colorpicker/custom_hex.png +0 -0
  24. data/vendor/assets/images/colorpicker/custom_hsb_b.png +0 -0
  25. data/vendor/assets/images/colorpicker/custom_hsb_h.png +0 -0
  26. data/vendor/assets/images/colorpicker/custom_hsb_s.png +0 -0
  27. data/vendor/assets/images/colorpicker/custom_indic.gif +0 -0
  28. data/vendor/assets/images/colorpicker/custom_rgb_b.png +0 -0
  29. data/vendor/assets/images/colorpicker/custom_rgb_g.png +0 -0
  30. data/vendor/assets/images/colorpicker/custom_rgb_r.png +0 -0
  31. data/vendor/assets/images/colorpicker/custom_submit.png +0 -0
  32. data/vendor/assets/images/colorpicker/select.png +0 -0
  33. data/vendor/assets/images/colorpicker/select2.png +0 -0
  34. data/vendor/assets/images/colorpicker/slider.png +0 -0
  35. data/vendor/assets/images/h5f/form_validation.png +0 -0
  36. data/vendor/assets/images/html5form-shim/asterisk.png +0 -0
  37. data/vendor/assets/images/html5form-shim/down.png +0 -0
  38. data/vendor/assets/images/html5form-shim/fail.png +0 -0
  39. data/vendor/assets/images/html5form-shim/ok.png +0 -0
  40. data/vendor/assets/images/html5forms/jscolor/arrow.gif +0 -0
  41. data/vendor/assets/images/html5forms/jscolor/cross.gif +0 -0
  42. data/vendor/assets/images/html5forms/jscolor/hs.png +0 -0
  43. data/vendor/assets/images/html5forms/jscolor/hv.png +0 -0
  44. data/vendor/assets/images/html5forms/slider/slider-1.png +0 -0
  45. data/vendor/assets/images/html5forms/slider/slider-disabled-1.png +0 -0
  46. data/vendor/assets/images/html5forms/slider/slider-disabled.png +0 -0
  47. data/vendor/assets/images/html5forms/slider/slider.png +0 -0
  48. data/vendor/assets/javascripts/colorpicker.js +484 -0
  49. data/vendor/assets/javascripts/colorpicker.min.js +9 -0
  50. data/vendor/assets/javascripts/h5f.js +328 -0
  51. data/vendor/assets/javascripts/h5f.min.js +4 -0
  52. data/vendor/assets/javascripts/html5forms/EventHelpers.min.js +15 -0
  53. data/vendor/assets/javascripts/html5forms/autocomplete.min.js +1 -0
  54. data/vendor/assets/javascripts/html5forms/cssQuery-p.min.js +6 -0
  55. data/vendor/assets/javascripts/html5forms/dev/EventHelpers.js +486 -0
  56. data/vendor/assets/javascripts/html5forms/dev/autocomplete.js +387 -0
  57. data/vendor/assets/javascripts/html5forms/dev/cssQuery-p.js +6 -0
  58. data/vendor/assets/javascripts/html5forms/dev/html5.js +121 -0
  59. data/vendor/assets/javascripts/html5forms/dev/html5Forms.js +892 -0
  60. data/vendor/assets/javascripts/html5forms/dev/html5Widgets.js +1417 -0
  61. data/vendor/assets/javascripts/html5forms/dev/jscolor.js +840 -0
  62. data/vendor/assets/javascripts/html5forms/dev/slider.js +797 -0
  63. data/vendor/assets/javascripts/html5forms/dev/timer.js +137 -0
  64. data/vendor/assets/javascripts/html5forms/dev/visibleIf.js +1100 -0
  65. data/vendor/assets/javascripts/html5forms/html5.min.js +2 -0
  66. data/vendor/assets/javascripts/html5forms/html5Forms.min.js +1 -0
  67. data/vendor/assets/javascripts/html5forms/html5Widgets.min.js +20 -0
  68. data/vendor/assets/javascripts/html5forms/jscolor.min.js +10 -0
  69. data/vendor/assets/javascripts/html5forms/slider.min.js +25 -0
  70. data/vendor/assets/javascripts/html5forms/timer.min.js +1 -0
  71. data/vendor/assets/javascripts/html5forms/visibleIf.min.js +19 -0
  72. data/vendor/assets/javascripts/html5forms.fallback.js +115 -0
  73. data/vendor/assets/javascripts/html5forms.fallback.min.js +11 -0
  74. data/vendor/assets/javascripts/jquery.html5form-shim.js +402 -0
  75. data/vendor/assets/javascripts/jquery.html5form.min.js +4 -0
  76. data/vendor/assets/javascripts/jquery.placehold.min.js +7 -0
  77. data/vendor/assets/javascripts/ui.spinner.js +649 -0
  78. data/vendor/assets/javascripts/ui.spinner.min.js +7 -0
  79. data/vendor/assets/javascripts/webforms2/webforms2-msie.js +1 -0
  80. data/vendor/assets/javascripts/webforms2/webforms2-p.js +14 -0
  81. data/vendor/assets/javascripts/webforms2/webforms2.js +14 -0
  82. data/vendor/assets/javascripts/webforms2/webforms2_src.js +3195 -0
  83. data/vendor/assets/stylesheets/colorpicker.css +161 -0
  84. data/vendor/assets/stylesheets/h5f.css +86 -0
  85. data/vendor/assets/stylesheets/html5form-shim.css +109 -0
  86. data/vendor/assets/stylesheets/html5forms/number.css +35 -0
  87. data/vendor/assets/stylesheets/html5forms/slider.css +169 -0
  88. data/vendor/assets/stylesheets/html5forms/slider_ie.css +41 -0
  89. data/vendor/assets/stylesheets/html5forms/visibleIf.css +23 -0
  90. data/vendor/assets/stylesheets/html5forms.layout.css +116 -0
  91. data/vendor/assets/stylesheets/ui.spinner.css +3 -0
  92. data/vendor/assets/stylesheets/webforms2.css +42 -0
  93. metadata +221 -0
@@ -0,0 +1,328 @@
1
+ /*! H5F - v1.0.0 - 2012-07-18
2
+ * https://github.com/ryanseddon/H5F/
3
+ * Copyright (c) 2012 Ryan Seddon; Licensed MIT */
4
+
5
+ var H5F = H5F || {};
6
+
7
+ (function(d){
8
+
9
+ var field = d.createElement("input"),
10
+ emailPatt = /^[a-zA-Z0-9.!#$%&'*+-\/=?\^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/,
11
+ urlPatt = /[a-z][\-\.+a-z]*:\/\//i,
12
+ nodes = /^(input|select|textarea)$/i,
13
+ isSubmit, usrPatt, curEvt, args, custMsg = "",
14
+ // Methods
15
+ setup, validation, validity, checkField, checkValidity, setCustomValidity, support, pattern, placeholder, range, required, valueMissing, listen, unlisten, preventActions, getTarget, addClass, removeClass, isHostMethod;
16
+
17
+ setup = function(form,settings) {
18
+ var isCollection = !form.nodeType || false;
19
+
20
+ var opts = {
21
+ validClass : "valid",
22
+ invalidClass : "error",
23
+ requiredClass : "required",
24
+ placeholderClass : "placeholder"
25
+ };
26
+
27
+ if(typeof settings === "object") {
28
+ for (var i in opts) {
29
+ if(typeof settings[i] === "undefined") { settings[i] = opts[i]; }
30
+ }
31
+ }
32
+
33
+ args = settings || opts;
34
+
35
+ if(isCollection) {
36
+ for(var k=0,len=form.length;k<len;k++) {
37
+ validation(form[k]);
38
+ }
39
+ } else {
40
+ validation(form);
41
+ }
42
+ };
43
+
44
+ validation = function(form) {
45
+ var f = form.elements,
46
+ flen = f.length,
47
+ isRequired, noValidate = !!(form.attributes["novalidate"]);
48
+
49
+ listen(form,"invalid",checkField,true);
50
+ listen(form,"blur",checkField,true);
51
+ listen(form,"input",checkField,true);
52
+ listen(form,"keyup",checkField,true);
53
+ listen(form,"focus",checkField,true);
54
+
55
+ listen(form,"submit",function(e){
56
+ isSubmit = true;
57
+ if(!noValidate && !form.checkValidity()) {
58
+ preventActions(e);
59
+ }
60
+ },false);
61
+
62
+ if(!support()) {
63
+ form.checkValidity = function() { return checkValidity(form); };
64
+
65
+ while(flen--) {
66
+ isRequired = !!(f[flen].attributes["required"]);
67
+ // Firefox includes fieldsets inside elements nodelist so we filter it out.
68
+ if(f[flen].nodeName.toLowerCase() !== "fieldset") {
69
+ validity(f[flen]); // Add validity object to field
70
+ }
71
+ }
72
+ }
73
+ };
74
+ validity = function(el) {
75
+ var elem = el,
76
+ missing = valueMissing(elem),
77
+ attrs = {
78
+ type: elem.getAttribute("type"),
79
+ pattern: elem.getAttribute("pattern"),
80
+ placeholder: elem.getAttribute("placeholder")
81
+ },
82
+ isType = /^(email|url)$/i,
83
+ evt = /^(input|keyup)$/i,
84
+ fType = ((isType.test(attrs.type)) ? attrs.type : ((attrs.pattern) ? attrs.pattern : false)),
85
+ patt = pattern(elem,fType),
86
+ step = range(elem,"step"),
87
+ min = range(elem,"min"),
88
+ max = range(elem,"max"),
89
+ customError = (custMsg !== "");
90
+
91
+ elem.checkValidity = function() { return checkValidity.call(this,elem); };
92
+ elem.setCustomValidity = function(msg) { setCustomValidity.call(elem,msg); };
93
+ elem.validationMessage = custMsg;
94
+
95
+ elem.validity = {
96
+ valueMissing: missing,
97
+ patternMismatch: patt,
98
+ rangeUnderflow: min,
99
+ rangeOverflow: max,
100
+ stepMismatch: step,
101
+ customError: customError,
102
+ valid: (!missing && !patt && !step && !min && !max && !customError)
103
+ };
104
+
105
+ if(attrs.placeholder && !evt.test(curEvt)) { placeholder(elem); }
106
+ };
107
+ checkField = function (e) {
108
+ var el = getTarget(e) || e, // checkValidity method passes element not event
109
+ events = /^(input|keyup|focusin|focus)$/i,
110
+ ignoredTypes = /^(submit|image|button|reset)$/i,
111
+ checkForm = true;
112
+
113
+ if(nodes.test(el.nodeName) && !(ignoredTypes.test(el.type) || ignoredTypes.test(el.nodeName))) {
114
+ curEvt = e.type;
115
+ if(!support()) { validity(el); }
116
+
117
+ if(el.validity.valid && el.value !== "" || el.value !== el.getAttribute("placeholder") && el.validity.valid) {
118
+ removeClass(el,[args.invalidClass,args.requiredClass]);
119
+ addClass(el,args.validClass);
120
+ } else if(!events.test(curEvt)) {
121
+ if(el.validity.valueMissing) {
122
+ removeClass(el,[args.invalidClass,args.validClass]);
123
+ addClass(el,args.requiredClass);
124
+ } else if(!el.validity.valid) {
125
+ removeClass(el,[args.validClass,args.requiredClass]);
126
+ addClass(el,args.invalidClass);
127
+ }
128
+ } else if(el.validity.valueMissing) {
129
+ removeClass(el,[args.requiredClass,args.invalidClass,args.validClass]);
130
+ }
131
+ if(curEvt === "input" && checkForm) {
132
+ // If input is triggered remove the keyup event
133
+ unlisten(el.form,"keyup",checkField,true);
134
+ checkForm = false;
135
+ }
136
+ }
137
+ };
138
+ checkValidity = function (el) {
139
+ var f, ff, isRequired, hasPattern, invalid = false;
140
+
141
+ if(el.nodeName.toLowerCase() === "form") {
142
+ f = el.elements;
143
+
144
+ for(var i = 0,len = f.length;i < len;i++) {
145
+ ff = f[i];
146
+
147
+ isRequired = !!(ff.attributes["required"]);
148
+ hasPattern = !!(ff.attributes["pattern"]);
149
+
150
+ if(ff.nodeName.toLowerCase() !== "fieldset" && (isRequired || hasPattern && isRequired)) {
151
+ checkField(ff);
152
+ if(!ff.validity.valid && !invalid) {
153
+ if(isSubmit) { // If it's not a submit event the field shouldn't be focused
154
+ ff.focus();
155
+ }
156
+ invalid = true;
157
+ }
158
+ }
159
+ }
160
+ return !invalid;
161
+ } else {
162
+ checkField(el);
163
+ return el.validity.valid;
164
+ }
165
+ };
166
+ setCustomValidity = function (msg) {
167
+ var el = this;
168
+ custMsg = msg;
169
+
170
+ el.validationMessage = custMsg;
171
+ };
172
+
173
+ support = function() {
174
+ return (isHostMethod(field,"validity") && isHostMethod(field,"checkValidity"));
175
+ };
176
+
177
+ // Create helper methods to emulate attributes in older browsers
178
+ pattern = function(el, type) {
179
+ if(type === "email") {
180
+ return !emailPatt.test(el.value);
181
+ } else if(type === "url") {
182
+ return !urlPatt.test(el.value);
183
+ } else if(!type) {
184
+ return false;
185
+ } else {
186
+ var placeholder = el.getAttribute("placeholder"),
187
+ val = el.value;
188
+
189
+ usrPatt = new RegExp('^(?:' + type + ')$');
190
+
191
+ if(val === placeholder) {
192
+ return true;
193
+ } else if(val === "") {
194
+ return false;
195
+ } else {
196
+ return !usrPatt.test(el.value);
197
+ }
198
+ }
199
+ };
200
+ placeholder = function(el) {
201
+ var attrs = { placeholder: el.getAttribute("placeholder") },
202
+ focus = /^(focus|focusin|submit)$/i,
203
+ node = /^(input|textarea)$/i,
204
+ ignoredType = /^password$/i,
205
+ isNative = !!("placeholder" in field);
206
+
207
+ if(!isNative && node.test(el.nodeName) && !ignoredType.test(el.type)) {
208
+ if(el.value === "" && !focus.test(curEvt)) {
209
+ el.value = attrs.placeholder;
210
+ listen(el.form,'submit', function () {
211
+ curEvt = 'submit';
212
+ placeholder(el);
213
+ }, true);
214
+ addClass(el,args.placeholderClass);
215
+ } else if(el.value === attrs.placeholder && focus.test(curEvt)) {
216
+ el.value = "";
217
+ removeClass(el,args.placeholderClass);
218
+ }
219
+ }
220
+ };
221
+ range = function(el,type) {
222
+ // Emulate min, max and step
223
+ var min = parseInt(el.getAttribute("min"),10) || 0,
224
+ max = parseInt(el.getAttribute("max"),10) || false,
225
+ step = parseInt(el.getAttribute("step"),10) || 1,
226
+ val = parseInt(el.value,10),
227
+ mismatch = (val-min)%step;
228
+
229
+ if(!valueMissing(el) && !isNaN(val)) {
230
+ if(type === "step") {
231
+ return (el.getAttribute("step")) ? (mismatch !== 0) : false;
232
+ } else if(type === "min") {
233
+ return (el.getAttribute("min")) ? (val < min) : false;
234
+ } else if(type === "max") {
235
+ return (el.getAttribute("max")) ? (val > max) : false;
236
+ }
237
+ } else if(el.getAttribute("type") === "number") {
238
+ return true;
239
+ } else {
240
+ return false;
241
+ }
242
+ };
243
+ required = function(el) {
244
+ var required = !!(el.attributes["required"]);
245
+
246
+ return (required) ? valueMissing(el) : false;
247
+ };
248
+ valueMissing = function(el) {
249
+ var placeholder = el.getAttribute("placeholder"),
250
+ isRequired = !!(el.attributes["required"]);
251
+ return !!(isRequired && (el.value === "" || el.value === placeholder));
252
+ };
253
+
254
+ /* Util methods */
255
+ listen = function (node,type,fn,capture) {
256
+ if(isHostMethod(window,"addEventListener")) {
257
+ /* FF & Other Browsers */
258
+ node.addEventListener( type, fn, capture );
259
+ } else if(isHostMethod(window,"attachEvent") && typeof window.event !== "undefined") {
260
+ /* Internet Explorer way */
261
+ if(type === "blur") {
262
+ type = "focusout";
263
+ } else if(type === "focus") {
264
+ type = "focusin";
265
+ }
266
+ node.attachEvent( "on" + type, fn );
267
+ }
268
+ };
269
+ unlisten = function (node,type,fn,capture) {
270
+ if(isHostMethod(window,"removeEventListener")) {
271
+ /* FF & Other Browsers */
272
+ node.removeEventListener( type, fn, capture );
273
+ } else if(isHostMethod(window,"detachEvent") && typeof window.event !== "undefined") {
274
+ /* Internet Explorer way */
275
+ node.detachEvent( "on" + type, fn );
276
+ }
277
+ };
278
+ preventActions = function (evt) {
279
+ evt = evt || window.event;
280
+
281
+ if(evt.stopPropagation && evt.preventDefault) {
282
+ evt.stopPropagation();
283
+ evt.preventDefault();
284
+ } else {
285
+ evt.cancelBubble = true;
286
+ evt.returnValue = false;
287
+ }
288
+ };
289
+ getTarget = function (evt) {
290
+ evt = evt || window.event;
291
+ return evt.target || evt.srcElement;
292
+ };
293
+ addClass = function (e,c) {
294
+ var re;
295
+ if (!e.className) {
296
+ e.className = c;
297
+ }
298
+ else {
299
+ re = new RegExp('(^|\\s)' + c + '(\\s|$)');
300
+ if (!re.test(e.className)) { e.className += ' ' + c; }
301
+ }
302
+ };
303
+ removeClass = function (e,c) {
304
+ var re, m, arr = (typeof c === "object") ? c.length : 1, len = arr;
305
+ if (e.className) {
306
+ if (e.className === c) {
307
+ e.className = '';
308
+ }
309
+ else {
310
+ while(arr--) {
311
+ re = new RegExp('(^|\\s)' + ((len > 1) ? c[arr] : c) + '(\\s|$)');
312
+ m = e.className.match(re);
313
+ if (m && m.length === 3) { e.className = e.className.replace(re, (m[1] && m[2])?' ':''); }
314
+ }
315
+ }
316
+ }
317
+ };
318
+ isHostMethod = function(o, m) {
319
+ var t = typeof o[m], reFeaturedMethod = new RegExp('^function|object$', 'i');
320
+ return !!((reFeaturedMethod.test(t) && o[m]) || t === 'unknown');
321
+ };
322
+
323
+ // Since all methods are only used internally no need to expose globally
324
+ window["H5F"] = {
325
+ setup: setup
326
+ };
327
+
328
+ }(document));
@@ -0,0 +1,4 @@
1
+ /*! H5F - v1.0.0 - 2012-07-18
2
+ * https://github.com/ryanseddon/H5F/
3
+ * Copyright (c) 2012 Ryan Seddon; Licensed MIT */
4
+ var H5F=H5F||{};(function(a){var b=a.createElement("input"),c=/^[a-zA-Z0-9.!#$%&'*+-\/=?\^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/,d=/[a-z][\-\.+a-z]*:\/\//i,e=/^(input|select|textarea)$/i,f,g,h,i,j="",k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;k=function(a,b){var c=!a.nodeType||!1,d={validClass:"valid",invalidClass:"error",requiredClass:"required",placeholderClass:"placeholder"};if(typeof b=="object")for(var e in d)typeof b[e]=="undefined"&&(b[e]=d[e]);i=b||d;if(c)for(var f=0,g=a.length;f<g;f++)l(a[f]);else l(a)},l=function(a){var b=a.elements,c=b.length,d,e=!!a.attributes.novalidate;w(a,"invalid",n,!0),w(a,"blur",n,!0),w(a,"input",n,!0),w(a,"keyup",n,!0),w(a,"focus",n,!0),w(a,"submit",function(b){f=!0,!e&&!a.checkValidity()&&y(b)},!1);if(!q()){a.checkValidity=function(){return o(a)};while(c--)d=!!b[c].attributes.required,b[c].nodeName.toLowerCase()!=="fieldset"&&m(b[c])}},m=function(a){var b=a,c=v(b),d={type:b.getAttribute("type"),pattern:b.getAttribute("pattern"),placeholder:b.getAttribute("placeholder")},e=/^(email|url)$/i,f=/^(input|keyup)$/i,g=e.test(d.type)?d.type:d.pattern?d.pattern:!1,i=r(b,g),k=t(b,"step"),l=t(b,"min"),m=t(b,"max"),n=j!=="";b.checkValidity=function(){return o.call(this,b)},b.setCustomValidity=function(a){p.call(b,a)},b.validationMessage=j,b.validity={valueMissing:c,patternMismatch:i,rangeUnderflow:l,rangeOverflow:m,stepMismatch:k,customError:n,valid:!c&&!i&&!k&&!l&&!m&&!n},d.placeholder&&!f.test(h)&&s(b)},n=function(a){var b=z(a)||a,c=/^(input|keyup|focusin|focus)$/i,d=/^(submit|image|button|reset)$/i,f=!0;e.test(b.nodeName)&&!d.test(b.type)&&!d.test(b.nodeName)&&(h=a.type,q()||m(b),b.validity.valid&&b.value!==""||b.value!==b.getAttribute("placeholder")&&b.validity.valid?(B(b,[i.invalidClass,i.requiredClass]),A(b,i.validClass)):c.test(h)?b.validity.valueMissing&&B(b,[i.requiredClass,i.invalidClass,i.validClass]):b.validity.valueMissing?(B(b,[i.invalidClass,i.validClass]),A(b,i.requiredClass)):b.validity.valid||(B(b,[i.validClass,i.requiredClass]),A(b,i.invalidClass)),h==="input"&&f&&(x(b.form,"keyup",n,!0),f=!1))},o=function(a){var b,c,d,e,g=!1;if(a.nodeName.toLowerCase()==="form"){b=a.elements;for(var h=0,i=b.length;h<i;h++)c=b[h],d=!!c.attributes.required,e=!!c.attributes.pattern,c.nodeName.toLowerCase()!=="fieldset"&&(d||e&&d)&&(n(c),!c.validity.valid&&!g&&(f&&c.focus(),g=!0));return!g}return n(a),a.validity.valid},p=function(a){var b=this;j=a,b.validationMessage=j},q=function(){return C(b,"validity")&&C(b,"checkValidity")},r=function(a,b){if(b==="email")return!c.test(a.value);if(b==="url")return!d.test(a.value);if(!b)return!1;var e=a.getAttribute("placeholder"),f=a.value;return g=new RegExp("^(?:"+b+")$"),f===e?!0:f===""?!1:!g.test(a.value)},s=function(a){var c={placeholder:a.getAttribute("placeholder")},d=/^(focus|focusin|submit)$/i,e=/^(input|textarea)$/i,f=/^password$/i,g="placeholder"in b;!g&&e.test(a.nodeName)&&!f.test(a.type)&&(a.value===""&&!d.test(h)?(a.value=c.placeholder,w(a.form,"submit",function(){h="submit",s(a)},!0),A(a,i.placeholderClass)):a.value===c.placeholder&&d.test(h)&&(a.value="",B(a,i.placeholderClass)))},t=function(a,b){var c=parseInt(a.getAttribute("min"),10)||0,d=parseInt(a.getAttribute("max"),10)||!1,e=parseInt(a.getAttribute("step"),10)||1,f=parseInt(a.value,10),g=(f-c)%e;if(!!v(a)||!!isNaN(f))return a.getAttribute("type")==="number"?!0:!1;if(b==="step")return a.getAttribute("step")?g!==0:!1;if(b==="min")return a.getAttribute("min")?f<c:!1;if(b==="max")return a.getAttribute("max")?f>d:!1},u=function(a){var b=!!a.attributes.required;return b?v(a):!1},v=function(a){var b=a.getAttribute("placeholder"),c=!!a.attributes.required;return!(!c||a.value!==""&&a.value!==b)},w=function(a,b,c,d){C(window,"addEventListener")?a.addEventListener(b,c,d):C(window,"attachEvent")&&typeof window.event!="undefined"&&(b==="blur"?b="focusout":b==="focus"&&(b="focusin"),a.attachEvent("on"+b,c))},x=function(a,b,c,d){C(window,"removeEventListener")?a.removeEventListener(b,c,d):C(window,"detachEvent")&&typeof window.event!="undefined"&&a.detachEvent("on"+b,c)},y=function(a){a=a||window.event,a.stopPropagation&&a.preventDefault?(a.stopPropagation(),a.preventDefault()):(a.cancelBubble=!0,a.returnValue=!1)},z=function(a){return a=a||window.event,a.target||a.srcElement},A=function(a,b){var c;a.className?(c=new RegExp("(^|\\s)"+b+"(\\s|$)"),c.test(a.className)||(a.className+=" "+b)):a.className=b},B=function(a,b){var c,d,e=typeof b=="object"?b.length:1,f=e;if(a.className)if(a.className===b)a.className="";else while(e--)c=new RegExp("(^|\\s)"+(f>1?b[e]:b)+"(\\s|$)"),d=a.className.match(c),d&&d.length===3&&(a.className=a.className.replace(c,d[1]&&d[2]?" ":""))},C=function(a,b){var c=typeof a[b],d=new RegExp("^function|object$","i");return!!(d.test(c)&&a[b]||c==="unknown")},window.H5F={setup:k}})(document);
@@ -0,0 +1,15 @@
1
+ /*******************************************************************************
2
+ * This notice must be untouched at all times.
3
+ *
4
+ * This javascript library contains helper routines to assist with event
5
+ * handling consinstently among browsers
6
+ *
7
+ * EventHelpers.js v.1.4 available at http://www.useragentman.com/
8
+ *
9
+ * released under the MIT License:
10
+ * http://www.opensource.org/licenses/mit-license.php
11
+ *
12
+ * Chagelog: 1.4: fix fireEvent to work correctly for IE9.
13
+ *
14
+ *******************************************************************************/
15
+ var EventHelpers=new function(){var me=this;var safariTimer;var isSafari=/WebKit/i.test(navigator.userAgent);var globalEvent;me.init=function(){if(me.hasPageLoadHappened(arguments)){return}if(document.createEvent){globalEvent=document.createEvent("HTMLEvents")}else if(document.createEventObject){globalEvent=document.createEventObject()}me.docIsLoaded=true}me.addEvent=function(obj,evType,fn){if(obj.addEventListener){obj.addEventListener(evType,fn,false)}else if(obj.attachEvent){obj['e'+evType+fn]=fn;obj[evType+fn]=function(){obj["e"+evType+fn](self.event)}obj.attachEvent("on"+evType,obj[evType+fn])}}me.removeEvent=function(obj,evType,fn){if(obj.removeEventListener){obj.removeEventListener(evType,fn,false)}else if(obj.detachEvent){try{obj.detachEvent("on"+evType,obj[evType+fn]);obj[evType+fn]=null;obj["e"+evType+fn]=null}catch(ex){}}}function removeEventAttribute(obj,beginName){var attributes=obj.attributes;for(var i=0;i<attributes.length;i++){var attribute=attributes[i]var name=attribute.name if(name.indexOf(beginName)==0){attribute.specified=false}}}me.addScrollWheelEvent=function(obj,fn){if(obj.addEventListener){obj.addEventListener('DOMMouseScroll',fn,true)}if(obj.attachEvent){obj.attachEvent("onmousewheel",fn)}}me.removeScrollWheelEvent=function(obj,fn){if(obj.removeEventListener){obj.removeEventListener('DOMMouseScroll',fn,true)}if(obj.detachEvent){obj.detatchEvent("onmousewheel",fn)}}me.getMouseCoords=function(e){if(!e){return}if(e.clientX!=null){return{x:e.clientX,y:e.clientY}}else if(e.pageX!=null){return{x:e.pageX,y:e.pageY}}else if(window.event!=null&&window.event.clientX!=null&&document.body!=null&&document.body.scrollLeft!=null){return{x:window.event.clientX+document.body.scrollLeft,y:window.event.clientY+document.body.scrollTop}}else{return null}}me.getMouseX=function(e){if(!e){return}if(e.pageX!=null){return e.pageX}else if(window.event!=null&&window.event.clientX!=null&&document.body!=null&&document.body.scrollLeft!=null)return window.event.clientX+document.body.scrollLeft;else if(e.clientX!=null)return e.clientX;else return null}me.getMouseY=function(e){if(e.pageY!=null)return e.pageY;else if(window.event!=null&&window.event.clientY!=null&&document.body!=null&&document.body.scrollTop!=null)return window.event.clientY+document.body.scrollTop;else if(e.clientY!=null){return e.clientY}}me.getScrollWheelDelta=function(e){var delta=0;if(!e)e=window.event;if(e.wheelDelta){delta=e.wheelDelta/120;if(window.opera){delta=-delta}}else if(e.detail){delta=-e.detail/3}return delta}me.addMouseEvent=function(func){if(document.captureEvents){document.captureEvents(Event.MOUSEMOVE)}document.onmousemove=func;window.onmousemove=func;window.onmouseover=func}me.getEventTarget=function(e){if(e.toElement){return e.toElement}else if(e.currentTarget){return e.currentTarget}else if(e.srcElement){return e.srcElement}else{return null}}me.getKey=function(e){if(e.keyCode){return e.keyCode}else if(e.event&&e.event.keyCode){return window.event.keyCode}else if(e.which){return e.which}}me.addPageLoadEvent=function(funcName){var func=eval(funcName);if(isSafari){pageLoadEventArray.push(func);if(!safariTimer){safariTimer=setInterval(function(){if(/loaded|complete/.test(document.readyState)){clearInterval(safariTimer);me.runPageLoadEvents();return}set=true},10)}}else if(document.addEventListener){var x=document.addEventListener("DOMContentLoaded",func,null)}else{me.addEvent(window,'load',func)}}var pageLoadEventArray=new Array();me.runPageLoadEvents=function(e){if(isSafari||e.srcElement.readyState=="complete"){for(var i=0;i<pageLoadEventArray.length;i++){pageLoadEventArray[i]()}}}me.hasPageLoadHappened=function(funcArgs){if(funcArgs.callee.done)return true;funcArgs.callee.done=true}me.preventDefault=function(e){if(e.preventDefault){e.preventDefault()}try{e.returnValue=false}catch(ex){}}me.cancelBubble=function(e){if(e.stopPropagation){e.stopPropagation()}try{e.cancelBubble=true}catch(ex){}}me.fireEvent=function(element,event,options){if(!element){return}if(element.dispatchEvent){globalEvent.initEvent(event,true,true);return!element.dispatchEvent(globalEvent)}else if(document.createEventObject){return element.fireEvent('on'+event,globalEvent)}else{return false}}me.isSupported=function(eventName,nodeName){var el=document.createElement(nodeName);eventName='on'+eventName;var isSupported=(eventName in el);if(!isSupported){el.setAttribute(eventName,'return;');isSupported=typeof el[eventName]=='function'}el=null;return isSupported}function init(){}init()}EventHelpers.addPageLoadEvent('EventHelpers.init');
@@ -0,0 +1 @@
1
+ var autocomplete=new function(){var me=this;var inputNodes;var listContainerNode;var bodyNode;var minLength;var req;var currentLookupString="";var currentFocusedInputNode=null;var numberCurrentValues;var lastLookupString="",lastLookupValues;me.values=null;me.x=-1;me.y=-1;me.init=function(){if(EventHelpers.hasPageLoadHappened(arguments))return;bodyNode=document.getElementsByTagName('body')[0];minLength=config.getIntegerValue('autocomplete.values.minLength',0);createListContainerNode();setInitialEvents()}function createListContainerNode(){listContainerNode=document.createElement('div');listContainerNode.style.display='none';listContainerNode.style.position='absolute';listContainerNode.id='autocomplete-selection'bodyNode.appendChild(listContainerNode)}function setInitialEvents(){inputNodes=CSSHelpers.getElementsByClassName(document,'autocomplete_input');for(var i=0;i<inputNodes.length;i++){EventHelpers.addEvent(inputNodes[i],'keyup',keyUpEvent);EventHelpers.addEvent(inputNodes[i],'keypress',keyPressEvent);formNode=DOMHelpers.getAncestorByTagName(inputNodes[i],'form');turnOffNativeAutocomplete(formNode)}EventHelpers.addEvent(bodyNode,'click',hideAutocompleteBox);EventHelpers.addEvent(document,'click',hideAutocompleteBox)}function keyUpEvent(e){var key=EventHelpers.getKey(e);currentFocusedInputNode=EventHelpers.getEventTarget(e);switch(key){case CharCode.DOWN:moveFocusOnListEvent(e);break;case CharCode.ESC:break;case CharCode.ENTER:EventHelpers.preventDefault(e);break;default:getListEvent(e)}}function keyPressEvent(e){var key=EventHelpers.getKey(e);switch(key){case CharCode.DOWN:moveFocusOnListEvent(e);EventHelpers.preventDefault(e);break;case CharCode.ENTER:EventHelpers.preventDefault(e);break}}function moveFocusOnListEvent(e){activeInputNode=EventHelpers.getEventTarget(e);activeInputNode.blur();var listNode=getListNode();var listItemNodes=getListItemNodes();var firstListItemNode;if(listItemNodes.length>0){firstListItemNode=listItemNodes[0]}else{firstListItemNode=listItemNodes}jslog.debug('firstListItemNode: '+firstListItemNode.nodeName)if(firstListItemNode){switch(firstListItemNode.nodeName){case"OPTION":firstListItemNode.selected='selected';replaceValue(firstListItemNode);listNode.focus();break}}}function getListEvent(e){activeInputNode=EventHelpers.getEventTarget(e);currentLookupString=activeInputNode.value;if(currentLookupString.length<minLength){listContainerNode.innerHTML="";return}me.x=CSSHelpers.getAbsoluteLeft(activeInputNode);me.y=CSSHelpers.getAbsoluteTop(activeInputNode)+CSSHelpers.getHeight(activeInputNode);var id=activeInputNode.name.replace(/ /g,'_');var URL=config.getScriptedValue('autocomplete.urls.'+id,{inputID:id,inputValue:currentLookupString});listContainerNode.innerHTML=config.getValue('autocomplete.templates.pleaseWait');showAutocompleteBox();if(lastLookupString!=""&&currentLookupString.toLowerCase().indexOf(lastLookupString.toLowerCase())==0){showDropDown(lastLookupValues)}else{if(req){req.abort()}req=XMLHelpers.getXMLHttpRequest(URL,getListRequest)}}function getListRequest(){if(!req){return}if(req.readyState==ReadyState.COMPLETED){if(req.status==HttpCode.OK){var values=req.responseText.split('\n');showDropDown(values);lastLookupString=currentLookupString;lastLookupValues=values}}}function showDropDown(values){removeAutocompleteBoxEvents();me.setValues(values);jslog.debug(numberCurrentValues)if(numberCurrentValues==0){hideAutocompleteBox()}else{jslog.debug('not zeri')setAutocompleteBoxEvents();showAutocompleteBox()}}me.setValues=function(values){me.values=values;var lastElement=me.values.pop();if(lastElement.trim()!=""){me.values.push(lastElement)}if(me.values.length==0){listContainerNode.innerHTML=""}else{var valuesHTMLSb=new StringBuffer();numberCurrentValues=0;for(var i=0;i<me.values.length;i++){var value=me.values[i].trim();if(value!=""&&value.toLowerCase().indexOf(currentLookupString.toLowerCase())==0){numberCurrentValues++;valuesHTMLSb.append(config.getScriptedValue('autocomplete.templates.listItem',{listItem:me.values[i]}))}}listContainerNode.innerHTML=config.getScriptedValue('autocomplete.templates.list',{listItemsHTML:valuesHTMLSb.toString()})}}function selectKeyEvent(e){var key=EventHelpers.getKey(e);switch(key){case CharCode.ESC:case CharCode.ENTER:hideAutocompleteBox(e);currentFocusedInputNode.focus();break;case CharCode.TAB:focusOnInputField(e);break;case CharCode.BACKSPACE:currentFocusedInputNode.value="";hideAutocompleteBox(e);currentFocusedInputNode.focus();EventHelpers.preventDefault(e);break}}function focusOnInputField(e){currentFocusedInputNode.focus();if(BrowserDetect.browser=="Explorer"){EventHelpers.preventDefault(e)}}function showAutocompleteBox(){CSSHelpers.moveTo(listContainerNode,me.x,me.y)listContainerNode.style.display='block'}function hideAutocompleteBox(e){listContainerNode.style.display='none';removeAutocompleteBoxEvents();listContainerNode.innerHTML=''}function getListItemNodes(){var valueNodes=cssQuery(config.getValue('autocomplete.selectors.listItem'),listContainerNode);return valueNodes}function getListNode(){var listNodes=cssQuery(config.getValue('autocomplete.selectors.list'),listContainerNode);if(listNodes&&listNodes.length>0){return listNodes[0]}else{return null}}function setAutocompleteBoxEvents(){var valueNodes=getListItemNodes();var listNode=getListNode();if(listNode){EventHelpers.addEvent(listNode,'change',replaceValueEvent);EventHelpers.addEvent(listNode,'blur',hideAutocompleteBox);EventHelpers.addEvent(listNode,'keyup',selectKeyEvent);EventHelpers.addEvent(listNode,'keydown',selectKeyEvent);EventHelpers.addEvent(listNode,'blur',focusOnInputField)}if(valueNodes){for(var i=0;i<valueNodes.length;i++){EventHelpers.addEvent(valueNodes[i],'click',replaceValueEvent)}}}function removeAutocompleteBoxEvents(){var valueNodes=getListItemNodes();var listNode=getListNode();if(listNode){EventHelpers.removeEvent(listNode,'change',replaceValueEvent);EventHelpers.removeEvent(listNode,'blur',hideAutocompleteBox)}if(valueNodes){for(var i=0;i<valueNodes.length;i++){EventHelpers.removeEvent(valueNodes[i],'click',replaceValueEvent)}}}function replaceValueEvent(e){var valueNode=EventHelpers.getEventTarget(e);replaceValue(valueNode)}function replaceValue(valueNode){var value=valueNode.value;jslog.debug(valueNode.value);if(!value){value=valueNode.innerHTML}activeInputNode.value=value}function turnOffNativeAutocomplete(formNode){formNode.setAttribute('autocomplete','off')}}EventHelpers.addPageLoadEvent('autocomplete.init');
@@ -0,0 +1,6 @@
1
+ /*
2
+ cssQuery, version 2.0.2 (2005-08-19)
3
+ Copyright: 2004-2005, Dean Edwards (http://dean.edwards.name/)
4
+ License: http://creativecommons.org/licenses/LGPL/2.1/
5
+ */
6
+ eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('7 x=6(){7 1D="2.0.2";7 C=/\\s*,\\s*/;7 x=6(s,A){33{7 m=[];7 u=1z.32.2c&&!A;7 b=(A)?(A.31==22)?A:[A]:[1g];7 1E=18(s).1l(C),i;9(i=0;i<1E.y;i++){s=1y(1E[i]);8(U&&s.Z(0,3).2b("")==" *#"){s=s.Z(2);A=24([],b,s[1])}1A A=b;7 j=0,t,f,a,c="";H(j<s.y){t=s[j++];f=s[j++];c+=t+f;a="";8(s[j]=="("){H(s[j++]!=")")a+=s[j];a=a.Z(0,-1);c+="("+a+")"}A=(u&&V[c])?V[c]:21(A,t,f,a);8(u)V[c]=A}m=m.30(A)}2a x.2d;5 m}2Z(e){x.2d=e;5[]}};x.1Z=6(){5"6 x() {\\n [1D "+1D+"]\\n}"};7 V={};x.2c=L;x.2Y=6(s){8(s){s=1y(s).2b("");2a V[s]}1A V={}};7 29={};7 19=L;x.15=6(n,s){8(19)1i("s="+1U(s));29[n]=12 s()};x.2X=6(c){5 c?1i(c):o};7 D={};7 h={};7 q={P:/\\[([\\w-]+(\\|[\\w-]+)?)\\s*(\\W?=)?\\s*([^\\]]*)\\]/};7 T=[];D[" "]=6(r,f,t,n){7 e,i,j;9(i=0;i<f.y;i++){7 s=X(f[i],t,n);9(j=0;(e=s[j]);j++){8(M(e)&&14(e,n))r.z(e)}}};D["#"]=6(r,f,i){7 e,j;9(j=0;(e=f[j]);j++)8(e.B==i)r.z(e)};D["."]=6(r,f,c){c=12 1t("(^|\\\\s)"+c+"(\\\\s|$)");7 e,i;9(i=0;(e=f[i]);i++)8(c.l(e.1V))r.z(e)};D[":"]=6(r,f,p,a){7 t=h[p],e,i;8(t)9(i=0;(e=f[i]);i++)8(t(e,a))r.z(e)};h["2W"]=6(e){7 d=Q(e);8(d.1C)9(7 i=0;i<d.1C.y;i++){8(d.1C[i]==e)5 K}};h["2V"]=6(e){};7 M=6(e){5(e&&e.1c==1&&e.1f!="!")?e:23};7 16=6(e){H(e&&(e=e.2U)&&!M(e))28;5 e};7 G=6(e){H(e&&(e=e.2T)&&!M(e))28;5 e};7 1r=6(e){5 M(e.27)||G(e.27)};7 1P=6(e){5 M(e.26)||16(e.26)};7 1o=6(e){7 c=[];e=1r(e);H(e){c.z(e);e=G(e)}5 c};7 U=K;7 1h=6(e){7 d=Q(e);5(2S d.25=="2R")?/\\.1J$/i.l(d.2Q):2P(d.25=="2O 2N")};7 Q=6(e){5 e.2M||e.1g};7 X=6(e,t){5(t=="*"&&e.1B)?e.1B:e.X(t)};7 17=6(e,t,n){8(t=="*")5 M(e);8(!14(e,n))5 L;8(!1h(e))t=t.2L();5 e.1f==t};7 14=6(e,n){5!n||(n=="*")||(e.2K==n)};7 1e=6(e){5 e.1G};6 24(r,f,B){7 m,i,j;9(i=0;i<f.y;i++){8(m=f[i].1B.2J(B)){8(m.B==B)r.z(m);1A 8(m.y!=23){9(j=0;j<m.y;j++){8(m[j].B==B)r.z(m[j])}}}}5 r};8(![].z)22.2I.z=6(){9(7 i=0;i<1z.y;i++){o[o.y]=1z[i]}5 o.y};7 N=/\\|/;6 21(A,t,f,a){8(N.l(f)){f=f.1l(N);a=f[0];f=f[1]}7 r=[];8(D[t]){D[t](r,A,f,a)}5 r};7 S=/^[^\\s>+~]/;7 20=/[\\s#.:>+~()@]|[^\\s#.:>+~()@]+/g;6 1y(s){8(S.l(s))s=" "+s;5 s.P(20)||[]};7 W=/\\s*([\\s>+~(),]|^|$)\\s*/g;7 I=/([\\s>+~,]|[^(]\\+|^)([#.:@])/g;7 18=6(s){5 s.O(W,"$1").O(I,"$1*$2")};7 1u={1Z:6(){5"\'"},P:/^(\'[^\']*\')|("[^"]*")$/,l:6(s){5 o.P.l(s)},1S:6(s){5 o.l(s)?s:o+s+o},1Y:6(s){5 o.l(s)?s.Z(1,-1):s}};7 1s=6(t){5 1u.1Y(t)};7 E=/([\\/()[\\]?{}|*+-])/g;6 R(s){5 s.O(E,"\\\\$1")};x.15("1j-2H",6(){D[">"]=6(r,f,t,n){7 e,i,j;9(i=0;i<f.y;i++){7 s=1o(f[i]);9(j=0;(e=s[j]);j++)8(17(e,t,n))r.z(e)}};D["+"]=6(r,f,t,n){9(7 i=0;i<f.y;i++){7 e=G(f[i]);8(e&&17(e,t,n))r.z(e)}};D["@"]=6(r,f,a){7 t=T[a].l;7 e,i;9(i=0;(e=f[i]);i++)8(t(e))r.z(e)};h["2G-10"]=6(e){5!16(e)};h["1x"]=6(e,c){c=12 1t("^"+c,"i");H(e&&!e.13("1x"))e=e.1n;5 e&&c.l(e.13("1x"))};q.1X=/\\\\:/g;q.1w="@";q.J={};q.O=6(m,a,n,c,v){7 k=o.1w+m;8(!T[k]){a=o.1W(a,c||"",v||"");T[k]=a;T.z(a)}5 T[k].B};q.1Q=6(s){s=s.O(o.1X,"|");7 m;H(m=s.P(o.P)){7 r=o.O(m[0],m[1],m[2],m[3],m[4]);s=s.O(o.P,r)}5 s};q.1W=6(p,t,v){7 a={};a.B=o.1w+T.y;a.2F=p;t=o.J[t];t=t?t(o.13(p),1s(v)):L;a.l=12 2E("e","5 "+t);5 a};q.13=6(n){1d(n.2D()){F"B":5"e.B";F"2C":5"e.1V";F"9":5"e.2B";F"1T":8(U){5"1U((e.2A.P(/1T=\\\\1v?([^\\\\s\\\\1v]*)\\\\1v?/)||[])[1]||\'\')"}}5"e.13(\'"+n.O(N,":")+"\')"};q.J[""]=6(a){5 a};q.J["="]=6(a,v){5 a+"=="+1u.1S(v)};q.J["~="]=6(a,v){5"/(^| )"+R(v)+"( |$)/.l("+a+")"};q.J["|="]=6(a,v){5"/^"+R(v)+"(-|$)/.l("+a+")"};7 1R=18;18=6(s){5 1R(q.1Q(s))}});x.15("1j-2z",6(){D["~"]=6(r,f,t,n){7 e,i;9(i=0;(e=f[i]);i++){H(e=G(e)){8(17(e,t,n))r.z(e)}}};h["2y"]=6(e,t){t=12 1t(R(1s(t)));5 t.l(1e(e))};h["2x"]=6(e){5 e==Q(e).1H};h["2w"]=6(e){7 n,i;9(i=0;(n=e.1F[i]);i++){8(M(n)||n.1c==3)5 L}5 K};h["1N-10"]=6(e){5!G(e)};h["2v-10"]=6(e){e=e.1n;5 1r(e)==1P(e)};h["2u"]=6(e,s){7 n=x(s,Q(e));9(7 i=0;i<n.y;i++){8(n[i]==e)5 L}5 K};h["1O-10"]=6(e,a){5 1p(e,a,16)};h["1O-1N-10"]=6(e,a){5 1p(e,a,G)};h["2t"]=6(e){5 e.B==2s.2r.Z(1)};h["1M"]=6(e){5 e.1M};h["2q"]=6(e){5 e.1q===L};h["1q"]=6(e){5 e.1q};h["1L"]=6(e){5 e.1L};q.J["^="]=6(a,v){5"/^"+R(v)+"/.l("+a+")"};q.J["$="]=6(a,v){5"/"+R(v)+"$/.l("+a+")"};q.J["*="]=6(a,v){5"/"+R(v)+"/.l("+a+")"};6 1p(e,a,t){1d(a){F"n":5 K;F"2p":a="2n";1a;F"2o":a="2n+1"}7 1m=1o(e.1n);6 1k(i){7 i=(t==G)?1m.y-i:i-1;5 1m[i]==e};8(!Y(a))5 1k(a);a=a.1l("n");7 m=1K(a[0]);7 s=1K(a[1]);8((Y(m)||m==1)&&s==0)5 K;8(m==0&&!Y(s))5 1k(s);8(Y(s))s=0;7 c=1;H(e=t(e))c++;8(Y(m)||m==1)5(t==G)?(c<=s):(s>=c);5(c%m)==s}});x.15("1j-2m",6(){U=1i("L;/*@2l@8(@\\2k)U=K@2j@*/");8(!U){X=6(e,t,n){5 n?e.2i("*",t):e.X(t)};14=6(e,n){5!n||(n=="*")||(e.2h==n)};1h=1g.1I?6(e){5/1J/i.l(Q(e).1I)}:6(e){5 Q(e).1H.1f!="2g"};1e=6(e){5 e.2f||e.1G||1b(e)};6 1b(e){7 t="",n,i;9(i=0;(n=e.1F[i]);i++){1d(n.1c){F 11:F 1:t+=1b(n);1a;F 3:t+=n.2e;1a}}5 t}}});19=K;5 x}();',62,190,'|||||return|function|var|if|for||||||||pseudoClasses||||test|||this||AttributeSelector|||||||cssQuery|length|push|fr|id||selectors||case|nextElementSibling|while||tests|true|false|thisElement||replace|match|getDocument|regEscape||attributeSelectors|isMSIE|cache||getElementsByTagName|isNaN|slice|child||new|getAttribute|compareNamespace|addModule|previousElementSibling|compareTagName|parseSelector|loaded|break|_0|nodeType|switch|getTextContent|tagName|document|isXML|eval|css|_1|split|ch|parentNode|childElements|nthChild|disabled|firstElementChild|getText|RegExp|Quote|x22|PREFIX|lang|_2|arguments|else|all|links|version|se|childNodes|innerText|documentElement|contentType|xml|parseInt|indeterminate|checked|last|nth|lastElementChild|parse|_3|add|href|String|className|create|NS_IE|remove|toString|ST|select|Array|null|_4|mimeType|lastChild|firstChild|continue|modules|delete|join|caching|error|nodeValue|textContent|HTML|prefix|getElementsByTagNameNS|end|x5fwin32|cc_on|standard||odd|even|enabled|hash|location|target|not|only|empty|root|contains|level3|outerHTML|htmlFor|class|toLowerCase|Function|name|first|level2|prototype|item|scopeName|toUpperCase|ownerDocument|Document|XML|Boolean|URL|unknown|typeof|nextSibling|previousSibling|visited|link|valueOf|clearCache|catch|concat|constructor|callee|try'.split('|'),0,{}))