Version Notes
fixed canonical url
updated validation file
Download this release
Release Info
Developer | Magento Core Team |
Extension | Fooman_Speedster |
Version | 1.1.0 |
Comparing to | |
See all releases |
Code changes from version 1.0.4 to 1.1.0
- app/code/community/Fooman/Speedster/Block/Page/Html/Head.php +7 -2
- app/code/community/Fooman/Speedster/etc/config.xml +1 -1
- js/prototype/validation-4min.js +773 -742
- lib/minify/HISTORY.txt +12 -0
- lib/minify/lib/HTTP/ConditionalGet.php +49 -14
- lib/minify/lib/HTTP/Encoder.php +31 -17
- lib/minify/lib/JSMin.php +188 -205
- lib/minify/lib/JSMinPlus.php +1872 -0
- lib/minify/lib/Minify.php +42 -39
- lib/minify/lib/Minify/CSS/Compressor.php +6 -1
- lib/minify/lib/Minify/CSS/UriRewriter.php +11 -13
- lib/minify/lib/Minify/Cache/File.php +10 -0
- lib/minify/lib/Minify/Controller/Base.php +2 -2
- lib/minify/lib/Minify/Controller/Files.php +8 -1
- lib/minify/lib/Minify/Controller/Groups.php +9 -1
- lib/minify/lib/Minify/Controller/MinApp.php +9 -1
- lib/minify/lib/Minify/Controller/Page.php +3 -6
- lib/minify/lib/Minify/ImportProcessor.php +2 -2
- lib/minify/lib/Minify/Packer.php +3 -3
- lib/minify/lib/Minify/Source.php +22 -12
- lib/minify/m.php +1 -0
- package.xml +7 -6
- var/minifycache/minify_1b6ee19a4c3855472c3e3dd57413cb65 +385 -0
- var/minifycache/minify_1b6ee19a4c3855472c3e3dd57413cb65.gz +0 -0
- var/minifycache/minify_676fb2e38e9cb2203204bcf556430103 +1030 -0
- var/minifycache/minify_676fb2e38e9cb2203204bcf556430103.gz +0 -0
- var/minifycache/minify_900559c432c691b50ba33f48b4909a4f +672 -0
- var/minifycache/minify_900559c432c691b50ba33f48b4909a4f.gz +0 -0
- var/minifycache/minify_95afbee78c0f49b564250d655add1ca9 +655 -0
- var/minifycache/minify_95afbee78c0f49b564250d655add1ca9.gz +0 -0
- var/minifycache/minify_9c58e36f7d68249efd03de258c77c943 +646 -0
app/code/community/Fooman/Speedster/Block/Page/Html/Head.php
CHANGED
@@ -44,8 +44,8 @@ class Fooman_Speedster_Block_Page_Html_Head extends Mage_Page_Block_Html_Head
|
|
44 |
$html = '';
|
45 |
//$html = "<!--".BP."-->\n";
|
46 |
$script = '<script type="text/javascript" src="%s" %s></script>';
|
47 |
-
$stylesheet = '<link type="text/css" rel="stylesheet" href="%s" %s
|
48 |
-
$alternate = '<link rel="alternate" type="%s" href="%s" %s
|
49 |
|
50 |
foreach ($this->_data['items'] as $item) {
|
51 |
if (!is_null($item['cond']) && !$this->getData($item['cond'])) {
|
@@ -78,6 +78,11 @@ class Fooman_Speedster_Block_Page_Html_Head extends Mage_Page_Block_Html_Head
|
|
78 |
case 'rss':
|
79 |
$lines[$if]['other'][] = sprintf($alternate, 'application/rss+xml'/*'text/xml' for IE?*/, $item['name'], $item['params']);
|
80 |
break;
|
|
|
|
|
|
|
|
|
|
|
81 |
}
|
82 |
}
|
83 |
|
44 |
$html = '';
|
45 |
//$html = "<!--".BP."-->\n";
|
46 |
$script = '<script type="text/javascript" src="%s" %s></script>';
|
47 |
+
$stylesheet = '<link type="text/css" rel="stylesheet" href="%s" %s />';
|
48 |
+
$alternate = '<link rel="alternate" type="%s" href="%s" %s />';
|
49 |
|
50 |
foreach ($this->_data['items'] as $item) {
|
51 |
if (!is_null($item['cond']) && !$this->getData($item['cond'])) {
|
78 |
case 'rss':
|
79 |
$lines[$if]['other'][] = sprintf($alternate, 'application/rss+xml'/*'text/xml' for IE?*/, $item['name'], $item['params']);
|
80 |
break;
|
81 |
+
|
82 |
+
case 'link_rel':
|
83 |
+
$lines[$if]['other'][] = sprintf('<link%s href="%s" />', $item['params'], $item['name']);
|
84 |
+
break;
|
85 |
+
|
86 |
}
|
87 |
}
|
88 |
|
app/code/community/Fooman/Speedster/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Fooman_Speedster>
|
5 |
-
<version>1.0.
|
6 |
<depends>
|
7 |
<Mage_Page />
|
8 |
<Mage_Adminhtml />
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Fooman_Speedster>
|
5 |
+
<version>1.0.5</version>
|
6 |
<depends>
|
7 |
<Mage_Page />
|
8 |
<Mage_Adminhtml />
|
js/prototype/validation-4min.js
CHANGED
@@ -1,742 +1,773 @@
|
|
1 |
-
/*
|
2 |
-
* Really easy field validation with Prototype
|
3 |
-
* http://tetlaw.id.au/view/javascript/really-easy-field-validation
|
4 |
-
* Andrew Tetlaw
|
5 |
-
* Version 1.5.4.1 (2007-01-05)
|
6 |
-
*
|
7 |
-
* Copyright (c) 2007 Andrew Tetlaw
|
8 |
-
* Permission is hereby granted, free of charge, to any person
|
9 |
-
* obtaining a copy of this software and associated documentation
|
10 |
-
* files (the "Software"), to deal in the Software without
|
11 |
-
* restriction, including without limitation the rights to use, copy,
|
12 |
-
* modify, merge, publish, distribute, sublicense, and/or sell copies
|
13 |
-
* of the Software, and to permit persons to whom the Software is
|
14 |
-
* furnished to do so, subject to the following conditions:
|
15 |
-
*
|
16 |
-
* The above copyright notice and this permission notice shall be
|
17 |
-
* included in all copies or substantial portions of the Software.
|
18 |
-
*
|
19 |
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
20 |
-
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
21 |
-
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
22 |
-
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
23 |
-
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
24 |
-
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
25 |
-
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
26 |
-
* SOFTWARE.
|
27 |
-
*
|
28 |
-
*/
|
29 |
-
var Validator = Class.create();
|
30 |
-
|
31 |
-
Validator.prototype = {
|
32 |
-
initialize : function(className, error, test, options) {
|
33 |
-
if(typeof test == 'function'){
|
34 |
-
this.options = $H(options);
|
35 |
-
this._test = test;
|
36 |
-
} else {
|
37 |
-
this.options = $H(test);
|
38 |
-
this._test = function(){return true};
|
39 |
-
}
|
40 |
-
this.error = error || 'Validation failed.';
|
41 |
-
this.className = className;
|
42 |
-
},
|
43 |
-
test : function(v, elm) {
|
44 |
-
return (this._test(v,elm) && this.options.all(function(p){
|
45 |
-
return Validator.methods[p.key] ? Validator.methods[p.key](v,elm,p.value) : true;
|
46 |
-
}));
|
47 |
-
}
|
48 |
-
}
|
49 |
-
Validator.methods = {
|
50 |
-
pattern : function(v,elm,opt) {return Validation.get('IsEmpty').test(v) || opt.test(v)},
|
51 |
-
minLength : function(v,elm,opt) {return v.length >= opt},
|
52 |
-
maxLength : function(v,elm,opt) {return v.length <= opt},
|
53 |
-
min : function(v,elm,opt) {return v >= parseFloat(opt)},
|
54 |
-
max : function(v,elm,opt) {return v <= parseFloat(opt)},
|
55 |
-
notOneOf : function(v,elm,opt) {return $A(opt).all(function(value) {
|
56 |
-
return v != value;
|
57 |
-
})},
|
58 |
-
oneOf : function(v,elm,opt) {return $A(opt).any(function(value) {
|
59 |
-
return v == value;
|
60 |
-
})},
|
61 |
-
is : function(v,elm,opt) {return v == opt},
|
62 |
-
isNot : function(v,elm,opt) {return v != opt},
|
63 |
-
equalToField : function(v,elm,opt) {return v == $F(opt)},
|
64 |
-
notEqualToField : function(v,elm,opt) {return v != $F(opt)},
|
65 |
-
include : function(v,elm,opt) {return $A(opt).all(function(value) {
|
66 |
-
return Validation.get(value).test(v,elm);
|
67 |
-
})}
|
68 |
-
}
|
69 |
-
|
70 |
-
var Validation = Class.create();
|
71 |
-
Validation.defaultOptions = {
|
72 |
-
onSubmit : true,
|
73 |
-
stopOnFirst : false,
|
74 |
-
immediate : false,
|
75 |
-
focusOnError : true,
|
76 |
-
useTitles : false,
|
77 |
-
addClassNameToContainer: false,
|
78 |
-
containerClassName: '.input-box',
|
79 |
-
onFormValidate : function(result, form) {},
|
80 |
-
onElementValidate : function(result, elm) {}
|
81 |
-
};
|
82 |
-
|
83 |
-
Validation.prototype = {
|
84 |
-
initialize : function(form, options){
|
85 |
-
this.form = $(form);
|
86 |
-
if (!this.form) {
|
87 |
-
return;
|
88 |
-
}
|
89 |
-
this.options = Object.extend({
|
90 |
-
onSubmit : Validation.defaultOptions.onSubmit,
|
91 |
-
stopOnFirst : Validation.defaultOptions.stopOnFirst,
|
92 |
-
immediate : Validation.defaultOptions.immediate,
|
93 |
-
focusOnError : Validation.defaultOptions.focusOnError,
|
94 |
-
useTitles : Validation.defaultOptions.useTitles,
|
95 |
-
onFormValidate : Validation.defaultOptions.onFormValidate,
|
96 |
-
onElementValidate : Validation.defaultOptions.onElementValidate
|
97 |
-
}, options || {});
|
98 |
-
if(this.options.onSubmit) Event.observe(this.form,'submit',this.onSubmit.bind(this),false);
|
99 |
-
if(this.options.immediate) {
|
100 |
-
Form.getElements(this.form).each(function(input) { // Thanks Mike!
|
101 |
-
if (input.tagName.toLowerCase() == 'select') {
|
102 |
-
Event.observe(input, 'blur', this.onChange.bindAsEventListener(this));
|
103 |
-
}
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
Validation.
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
}
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
}
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
elm
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
}
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
}
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
}
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
}
|
389 |
-
|
390 |
-
Validation.
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
}
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
['validate-
|
413 |
-
return
|
414 |
-
}],
|
415 |
-
['
|
416 |
-
return Validation.get('IsEmpty').test(v)
|
417 |
-
}],
|
418 |
-
['validate-
|
419 |
-
return Validation.get('IsEmpty').test(v) ||
|
420 |
-
}],
|
421 |
-
['validate-
|
422 |
-
return Validation.get('IsEmpty').test(v) ||
|
423 |
-
}],
|
424 |
-
['validate-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
}],
|
433 |
-
['validate-
|
434 |
-
return Validation.get('IsEmpty').test(v) || /^[
|
435 |
-
|
436 |
-
['validate-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
return (
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
return Validation.get('IsEmpty').test(v) ||
|
497 |
-
}],
|
498 |
-
['validate-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
return (
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
if
|
575 |
-
return
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
if (Validation.get(
|
609 |
-
|
610 |
-
}
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
if (
|
627 |
-
|
628 |
-
}
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
if (
|
638 |
-
|
639 |
-
}
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
var
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
}
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
}
|
724 |
-
|
725 |
-
return
|
726 |
-
}
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* Really easy field validation with Prototype
|
3 |
+
* http://tetlaw.id.au/view/javascript/really-easy-field-validation
|
4 |
+
* Andrew Tetlaw
|
5 |
+
* Version 1.5.4.1 (2007-01-05)
|
6 |
+
*
|
7 |
+
* Copyright (c) 2007 Andrew Tetlaw
|
8 |
+
* Permission is hereby granted, free of charge, to any person
|
9 |
+
* obtaining a copy of this software and associated documentation
|
10 |
+
* files (the "Software"), to deal in the Software without
|
11 |
+
* restriction, including without limitation the rights to use, copy,
|
12 |
+
* modify, merge, publish, distribute, sublicense, and/or sell copies
|
13 |
+
* of the Software, and to permit persons to whom the Software is
|
14 |
+
* furnished to do so, subject to the following conditions:
|
15 |
+
*
|
16 |
+
* The above copyright notice and this permission notice shall be
|
17 |
+
* included in all copies or substantial portions of the Software.
|
18 |
+
*
|
19 |
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
20 |
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
21 |
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
22 |
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
23 |
+
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
24 |
+
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
25 |
+
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
26 |
+
* SOFTWARE.
|
27 |
+
*
|
28 |
+
*/
|
29 |
+
var Validator = Class.create();
|
30 |
+
|
31 |
+
Validator.prototype = {
|
32 |
+
initialize : function(className, error, test, options) {
|
33 |
+
if(typeof test == 'function'){
|
34 |
+
this.options = $H(options);
|
35 |
+
this._test = test;
|
36 |
+
} else {
|
37 |
+
this.options = $H(test);
|
38 |
+
this._test = function(){return true};
|
39 |
+
}
|
40 |
+
this.error = error || 'Validation failed.';
|
41 |
+
this.className = className;
|
42 |
+
},
|
43 |
+
test : function(v, elm) {
|
44 |
+
return (this._test(v,elm) && this.options.all(function(p){
|
45 |
+
return Validator.methods[p.key] ? Validator.methods[p.key](v,elm,p.value) : true;
|
46 |
+
}));
|
47 |
+
}
|
48 |
+
}
|
49 |
+
Validator.methods = {
|
50 |
+
pattern : function(v,elm,opt) {return Validation.get('IsEmpty').test(v) || opt.test(v)},
|
51 |
+
minLength : function(v,elm,opt) {return v.length >= opt},
|
52 |
+
maxLength : function(v,elm,opt) {return v.length <= opt},
|
53 |
+
min : function(v,elm,opt) {return v >= parseFloat(opt)},
|
54 |
+
max : function(v,elm,opt) {return v <= parseFloat(opt)},
|
55 |
+
notOneOf : function(v,elm,opt) {return $A(opt).all(function(value) {
|
56 |
+
return v != value;
|
57 |
+
})},
|
58 |
+
oneOf : function(v,elm,opt) {return $A(opt).any(function(value) {
|
59 |
+
return v == value;
|
60 |
+
})},
|
61 |
+
is : function(v,elm,opt) {return v == opt},
|
62 |
+
isNot : function(v,elm,opt) {return v != opt},
|
63 |
+
equalToField : function(v,elm,opt) {return v == $F(opt)},
|
64 |
+
notEqualToField : function(v,elm,opt) {return v != $F(opt)},
|
65 |
+
include : function(v,elm,opt) {return $A(opt).all(function(value) {
|
66 |
+
return Validation.get(value).test(v,elm);
|
67 |
+
})}
|
68 |
+
}
|
69 |
+
|
70 |
+
var Validation = Class.create();
|
71 |
+
Validation.defaultOptions = {
|
72 |
+
onSubmit : true,
|
73 |
+
stopOnFirst : false,
|
74 |
+
immediate : false,
|
75 |
+
focusOnError : true,
|
76 |
+
useTitles : false,
|
77 |
+
addClassNameToContainer: false,
|
78 |
+
containerClassName: '.input-box',
|
79 |
+
onFormValidate : function(result, form) {},
|
80 |
+
onElementValidate : function(result, elm) {}
|
81 |
+
};
|
82 |
+
|
83 |
+
Validation.prototype = {
|
84 |
+
initialize : function(form, options){
|
85 |
+
this.form = $(form);
|
86 |
+
if (!this.form) {
|
87 |
+
return;
|
88 |
+
}
|
89 |
+
this.options = Object.extend({
|
90 |
+
onSubmit : Validation.defaultOptions.onSubmit,
|
91 |
+
stopOnFirst : Validation.defaultOptions.stopOnFirst,
|
92 |
+
immediate : Validation.defaultOptions.immediate,
|
93 |
+
focusOnError : Validation.defaultOptions.focusOnError,
|
94 |
+
useTitles : Validation.defaultOptions.useTitles,
|
95 |
+
onFormValidate : Validation.defaultOptions.onFormValidate,
|
96 |
+
onElementValidate : Validation.defaultOptions.onElementValidate
|
97 |
+
}, options || {});
|
98 |
+
if(this.options.onSubmit) Event.observe(this.form,'submit',this.onSubmit.bind(this),false);
|
99 |
+
if(this.options.immediate) {
|
100 |
+
Form.getElements(this.form).each(function(input) { // Thanks Mike!
|
101 |
+
if (input.tagName.toLowerCase() == 'select') {
|
102 |
+
Event.observe(input, 'blur', this.onChange.bindAsEventListener(this));
|
103 |
+
}
|
104 |
+
if (input.type.toLowerCase() == 'radio' || input.type.toLowerCase() == 'checkbox') {
|
105 |
+
Event.observe(input, 'click', this.onChange.bindAsEventListener(this));
|
106 |
+
} else {
|
107 |
+
Event.observe(input, 'change', this.onChange.bindAsEventListener(this));
|
108 |
+
}
|
109 |
+
}, this);
|
110 |
+
}
|
111 |
+
},
|
112 |
+
onChange : function (ev) {
|
113 |
+
Validation.isOnChange = true;
|
114 |
+
Validation.validate(Event.element(ev),{
|
115 |
+
useTitle : this.options.useTitles,
|
116 |
+
onElementValidate : this.options.onElementValidate
|
117 |
+
});
|
118 |
+
Validation.isOnChange = false;
|
119 |
+
},
|
120 |
+
onSubmit : function(ev){
|
121 |
+
if(!this.validate()) Event.stop(ev);
|
122 |
+
},
|
123 |
+
validate : function() {
|
124 |
+
var result = false;
|
125 |
+
var useTitles = this.options.useTitles;
|
126 |
+
var callback = this.options.onElementValidate;
|
127 |
+
try {
|
128 |
+
if(this.options.stopOnFirst) {
|
129 |
+
result = Form.getElements(this.form).all(function(elm) {
|
130 |
+
if (elm.hasClassName('local-validation') && !this.isElementInForm(elm, this.form)) {
|
131 |
+
return true;
|
132 |
+
}
|
133 |
+
return Validation.validate(elm,{useTitle : useTitles, onElementValidate : callback});
|
134 |
+
}, this);
|
135 |
+
} else {
|
136 |
+
result = Form.getElements(this.form).collect(function(elm) {
|
137 |
+
if (elm.hasClassName('local-validation') && !this.isElementInForm(elm, this.form)) {
|
138 |
+
return true;
|
139 |
+
}
|
140 |
+
return Validation.validate(elm,{useTitle : useTitles, onElementValidate : callback});
|
141 |
+
}, this).all();
|
142 |
+
}
|
143 |
+
} catch (e) {
|
144 |
+
|
145 |
+
}
|
146 |
+
if(!result && this.options.focusOnError) {
|
147 |
+
try{
|
148 |
+
Form.getElements(this.form).findAll(function(elm){return $(elm).hasClassName('validation-failed')}).first().focus()
|
149 |
+
}
|
150 |
+
catch(e){
|
151 |
+
|
152 |
+
}
|
153 |
+
}
|
154 |
+
this.options.onFormValidate(result, this.form);
|
155 |
+
return result;
|
156 |
+
},
|
157 |
+
reset : function() {
|
158 |
+
Form.getElements(this.form).each(Validation.reset);
|
159 |
+
},
|
160 |
+
isElementInForm : function(elm, form) {
|
161 |
+
var domForm = elm.up('form');
|
162 |
+
if (domForm == form) {
|
163 |
+
return true;
|
164 |
+
}
|
165 |
+
return false;
|
166 |
+
}
|
167 |
+
}
|
168 |
+
|
169 |
+
Object.extend(Validation, {
|
170 |
+
validate : function(elm, options){
|
171 |
+
options = Object.extend({
|
172 |
+
useTitle : false,
|
173 |
+
onElementValidate : function(result, elm) {}
|
174 |
+
}, options || {});
|
175 |
+
elm = $(elm);
|
176 |
+
|
177 |
+
var cn = $w(elm.className);
|
178 |
+
return result = cn.all(function(value) {
|
179 |
+
var test = Validation.test(value,elm,options.useTitle);
|
180 |
+
options.onElementValidate(test, elm);
|
181 |
+
return test;
|
182 |
+
});
|
183 |
+
},
|
184 |
+
insertAdvice : function(elm, advice){
|
185 |
+
var container = $(elm).up('.field-row');
|
186 |
+
if(container){
|
187 |
+
Element.insert(container, {after: advice});
|
188 |
+
} else if (elm.up('td.value')) {
|
189 |
+
elm.up('td.value').insert({bottom: advice});
|
190 |
+
} else if (elm.advaiceContainer && $(elm.advaiceContainer)) {
|
191 |
+
$(elm.advaiceContainer).update(advice);
|
192 |
+
}
|
193 |
+
else {
|
194 |
+
switch (elm.type.toLowerCase()) {
|
195 |
+
case 'checkbox':
|
196 |
+
case 'radio':
|
197 |
+
var p = elm.parentNode;
|
198 |
+
if(p) {
|
199 |
+
Element.insert(p, {'bottom': advice});
|
200 |
+
} else {
|
201 |
+
Element.insert(elm, {'after': advice});
|
202 |
+
}
|
203 |
+
break;
|
204 |
+
default:
|
205 |
+
Element.insert(elm, {'after': advice});
|
206 |
+
}
|
207 |
+
}
|
208 |
+
},
|
209 |
+
showAdvice : function(elm, advice, adviceName){
|
210 |
+
if(!elm.advices){
|
211 |
+
elm.advices = new Hash();
|
212 |
+
}
|
213 |
+
else{
|
214 |
+
elm.advices.each(function(pair){
|
215 |
+
this.hideAdvice(elm, pair.value);
|
216 |
+
}.bind(this));
|
217 |
+
}
|
218 |
+
elm.advices.set(adviceName, advice);
|
219 |
+
if(typeof Effect == 'undefined') {
|
220 |
+
advice.style.display = 'block';
|
221 |
+
} else {
|
222 |
+
if(!advice._adviceAbsolutize) {
|
223 |
+
new Effect.Appear(advice, {duration : 1 });
|
224 |
+
} else {
|
225 |
+
Position.absolutize(advice);
|
226 |
+
advice.show();
|
227 |
+
advice.setStyle({
|
228 |
+
'top':advice._adviceTop,
|
229 |
+
'left': advice._adviceLeft,
|
230 |
+
'width': advice._adviceWidth,
|
231 |
+
'z-index': 1000
|
232 |
+
});
|
233 |
+
advice.addClassName('advice-absolute');
|
234 |
+
}
|
235 |
+
}
|
236 |
+
},
|
237 |
+
hideAdvice : function(elm, advice){
|
238 |
+
if(advice != null) advice.hide();
|
239 |
+
},
|
240 |
+
updateCallback : function(elm, status) {
|
241 |
+
if (typeof elm.callbackFunction != 'undefined') {
|
242 |
+
eval(elm.callbackFunction+'(\''+elm.id+'\',\''+status+'\')');
|
243 |
+
}
|
244 |
+
},
|
245 |
+
ajaxError : function(elm, errorMsg) {
|
246 |
+
var name = 'validate-ajax';
|
247 |
+
var advice = Validation.getAdvice(name, elm);
|
248 |
+
if (advice == null) {
|
249 |
+
advice = this.createAdvice(name, elm, false, errorMsg);
|
250 |
+
}
|
251 |
+
this.showAdvice(elm, advice, 'validate-ajax');
|
252 |
+
this.updateCallback(elm, 'failed');
|
253 |
+
|
254 |
+
elm.addClassName('validation-failed');
|
255 |
+
elm.addClassName('validate-ajax');
|
256 |
+
if (Validation.defaultOptions.addClassNameToContainer && Validation.defaultOptions.containerClassName != '') {
|
257 |
+
var container = elm.up(Validation.defaultOptions.containerClassName);
|
258 |
+
if (container && this.allowContainerClassName(elm)) {
|
259 |
+
container.removeClassName('validation-passed');
|
260 |
+
container.addClassName('validation-error');
|
261 |
+
}
|
262 |
+
}
|
263 |
+
},
|
264 |
+
allowContainerClassName: function (elm) {
|
265 |
+
if (elm.type == 'radio' || elm.type == 'checkbox') {
|
266 |
+
return elm.hasClassName('change-container-classname');
|
267 |
+
}
|
268 |
+
|
269 |
+
return true;
|
270 |
+
},
|
271 |
+
test : function(name, elm, useTitle) {
|
272 |
+
var v = Validation.get(name);
|
273 |
+
var prop = '__advice'+name.camelize();
|
274 |
+
try {
|
275 |
+
if(Validation.isVisible(elm) && !v.test($F(elm), elm)) {
|
276 |
+
//if(!elm[prop]) {
|
277 |
+
var advice = Validation.getAdvice(name, elm);
|
278 |
+
if (advice == null) {
|
279 |
+
advice = this.createAdvice(name, elm, useTitle);
|
280 |
+
}
|
281 |
+
this.showAdvice(elm, advice, name);
|
282 |
+
this.updateCallback(elm, 'failed');
|
283 |
+
//}
|
284 |
+
elm[prop] = 1;
|
285 |
+
if (!elm.advaiceContainer) {
|
286 |
+
elm.removeClassName('validation-passed');
|
287 |
+
elm.addClassName('validation-failed');
|
288 |
+
}
|
289 |
+
|
290 |
+
if (Validation.defaultOptions.addClassNameToContainer && Validation.defaultOptions.containerClassName != '') {
|
291 |
+
var container = elm.up(Validation.defaultOptions.containerClassName);
|
292 |
+
if (container && this.allowContainerClassName(elm)) {
|
293 |
+
container.removeClassName('validation-passed');
|
294 |
+
container.addClassName('validation-error');
|
295 |
+
}
|
296 |
+
}
|
297 |
+
return false;
|
298 |
+
} else {
|
299 |
+
var advice = Validation.getAdvice(name, elm);
|
300 |
+
this.hideAdvice(elm, advice);
|
301 |
+
this.updateCallback(elm, 'passed');
|
302 |
+
elm[prop] = '';
|
303 |
+
elm.removeClassName('validation-failed');
|
304 |
+
elm.addClassName('validation-passed');
|
305 |
+
if (Validation.defaultOptions.addClassNameToContainer && Validation.defaultOptions.containerClassName != '') {
|
306 |
+
var container = elm.up(Validation.defaultOptions.containerClassName);
|
307 |
+
if (container && !container.down('.validation-failed') && this.allowContainerClassName(elm)) {
|
308 |
+
if (!Validation.get('IsEmpty').test(elm.value) || !this.isVisible(elm)) {
|
309 |
+
container.addClassName('validation-passed');
|
310 |
+
} else {
|
311 |
+
container.removeClassName('validation-passed');
|
312 |
+
}
|
313 |
+
container.removeClassName('validation-error');
|
314 |
+
}
|
315 |
+
}
|
316 |
+
return true;
|
317 |
+
}
|
318 |
+
} catch(e) {
|
319 |
+
throw(e)
|
320 |
+
}
|
321 |
+
},
|
322 |
+
isVisible : function(elm) {
|
323 |
+
while(elm.tagName != 'BODY') {
|
324 |
+
if(!$(elm).visible()) return false;
|
325 |
+
elm = elm.parentNode;
|
326 |
+
}
|
327 |
+
return true;
|
328 |
+
},
|
329 |
+
getAdvice : function(name, elm) {
|
330 |
+
return $('advice-' + name + '-' + Validation.getElmID(elm)) || $('advice-' + Validation.getElmID(elm));
|
331 |
+
},
|
332 |
+
createAdvice : function(name, elm, useTitle, customError) {
|
333 |
+
var v = Validation.get(name);
|
334 |
+
var errorMsg = useTitle ? ((elm && elm.title) ? elm.title : v.error) : v.error;
|
335 |
+
if (customError) {
|
336 |
+
errorMsg = customError;
|
337 |
+
}
|
338 |
+
try {
|
339 |
+
if (Translator){
|
340 |
+
errorMsg = Translator.translate(errorMsg);
|
341 |
+
}
|
342 |
+
}
|
343 |
+
catch(e){}
|
344 |
+
|
345 |
+
advice = '<div class="validation-advice" id="advice-' + name + '-' + Validation.getElmID(elm) +'" style="display:none">' + errorMsg + '</div>'
|
346 |
+
|
347 |
+
|
348 |
+
Validation.insertAdvice(elm, advice);
|
349 |
+
advice = Validation.getAdvice(name, elm);
|
350 |
+
if($(elm).hasClassName('absolute-advice')) {
|
351 |
+
var dimensions = $(elm).getDimensions();
|
352 |
+
var originalPosition = Position.cumulativeOffset(elm);
|
353 |
+
|
354 |
+
advice._adviceTop = (originalPosition[1] + dimensions.height) + 'px';
|
355 |
+
advice._adviceLeft = (originalPosition[0]) + 'px';
|
356 |
+
advice._adviceWidth = (dimensions.width) + 'px';
|
357 |
+
advice._adviceAbsolutize = true;
|
358 |
+
}
|
359 |
+
return advice;
|
360 |
+
},
|
361 |
+
getElmID : function(elm) {
|
362 |
+
return elm.id ? elm.id : elm.name;
|
363 |
+
},
|
364 |
+
reset : function(elm) {
|
365 |
+
elm = $(elm);
|
366 |
+
var cn = $w(elm.className);
|
367 |
+
cn.each(function(value) {
|
368 |
+
var prop = '__advice'+value.camelize();
|
369 |
+
if(elm[prop]) {
|
370 |
+
var advice = Validation.getAdvice(value, elm);
|
371 |
+
if (advice) {
|
372 |
+
advice.hide();
|
373 |
+
}
|
374 |
+
elm[prop] = '';
|
375 |
+
}
|
376 |
+
elm.removeClassName('validation-failed');
|
377 |
+
elm.removeClassName('validation-passed');
|
378 |
+
if (Validation.defaultOptions.addClassNameToContainer && Validation.defaultOptions.containerClassName != '') {
|
379 |
+
var container = elm.up(Validation.defaultOptions.containerClassName);
|
380 |
+
if (container) {
|
381 |
+
container.removeClassName('validation-passed');
|
382 |
+
container.removeClassName('validation-error');
|
383 |
+
}
|
384 |
+
}
|
385 |
+
});
|
386 |
+
},
|
387 |
+
add : function(className, error, test, options) {
|
388 |
+
var nv = {};
|
389 |
+
nv[className] = new Validator(className, error, test, options);
|
390 |
+
Object.extend(Validation.methods, nv);
|
391 |
+
},
|
392 |
+
addAllThese : function(validators) {
|
393 |
+
var nv = {};
|
394 |
+
$A(validators).each(function(value) {
|
395 |
+
nv[value[0]] = new Validator(value[0], value[1], value[2], (value.length > 3 ? value[3] : {}));
|
396 |
+
});
|
397 |
+
Object.extend(Validation.methods, nv);
|
398 |
+
},
|
399 |
+
get : function(name) {
|
400 |
+
return Validation.methods[name] ? Validation.methods[name] : Validation.methods['_LikeNoIDIEverSaw_'];
|
401 |
+
},
|
402 |
+
methods : {
|
403 |
+
'_LikeNoIDIEverSaw_' : new Validator('_LikeNoIDIEverSaw_','',{})
|
404 |
+
}
|
405 |
+
});
|
406 |
+
|
407 |
+
Validation.add('IsEmpty', '', function(v) {
|
408 |
+
return (v == '' || (v == null) || (v.length == 0) || /^\s+$/.test(v)); // || /^\s+$/.test(v));
|
409 |
+
});
|
410 |
+
|
411 |
+
Validation.addAllThese([
|
412 |
+
['validate-select', 'Please select an option.', function(v) {
|
413 |
+
return ((v != "none") && (v != null) && (v.length != 0));
|
414 |
+
}],
|
415 |
+
['required-entry', 'This is a required field.', function(v) {
|
416 |
+
return !Validation.get('IsEmpty').test(v);
|
417 |
+
}],
|
418 |
+
['validate-number', 'Please enter a valid number in this field.', function(v) {
|
419 |
+
return Validation.get('IsEmpty').test(v) || (!isNaN(parseNumber(v)) && !/^\s+$/.test(parseNumber(v)));
|
420 |
+
}],
|
421 |
+
['validate-digits', 'Please use numbers only in this field. please avoid spaces or other characters such as dots or commas.', function(v) {
|
422 |
+
return Validation.get('IsEmpty').test(v) || !/[^\d]/.test(v);
|
423 |
+
}],
|
424 |
+
['validate-alpha', 'Please use letters only (a-z or A-Z) in this field.', function (v) {
|
425 |
+
return Validation.get('IsEmpty').test(v) || /^[a-zA-Z]+$/.test(v)
|
426 |
+
}],
|
427 |
+
['validate-code', 'Please use only letters (a-z), numbers (0-9) or underscore(_) in this field, first character should be a letter.', function (v) {
|
428 |
+
return Validation.get('IsEmpty').test(v) || /^[a-z]+[a-z0-9_]+$/.test(v)
|
429 |
+
}],
|
430 |
+
['validate-alphanum', 'Please use only letters (a-z or A-Z) or numbers (0-9) only in this field. No spaces or other characters are allowed.', function(v) {
|
431 |
+
return Validation.get('IsEmpty').test(v) || /^[a-zA-Z0-9]+$/.test(v) /*!/\W/.test(v)*/
|
432 |
+
}],
|
433 |
+
['validate-street', 'Please use only letters (a-z or A-Z) or numbers (0-9) or spaces and # only in this field.', function(v) {
|
434 |
+
return Validation.get('IsEmpty').test(v) || /^[ \w]{3,}([A-Za-z]\.)?([ \w]*\#\d+)?(\r\n| )[ \w]{3,}/.test(v)
|
435 |
+
}],
|
436 |
+
['validate-phoneStrict', 'Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.', function(v) {
|
437 |
+
return Validation.get('IsEmpty').test(v) || /^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/.test(v);
|
438 |
+
}],
|
439 |
+
['validate-phoneLax', 'Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.', function(v) {
|
440 |
+
return Validation.get('IsEmpty').test(v) || /^((\d[-. ]?)?((\(\d{3}\))|\d{3}))?[-. ]?\d{3}[-. ]?\d{4}$/.test(v);
|
441 |
+
}],
|
442 |
+
['validate-fax', 'Please enter a valid fax number. For example (123) 456-7890 or 123-456-7890.', function(v) {
|
443 |
+
return Validation.get('IsEmpty').test(v) || /^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/.test(v);
|
444 |
+
}],
|
445 |
+
['validate-date', 'Please enter a valid date.', function(v) {
|
446 |
+
var test = new Date(v);
|
447 |
+
return Validation.get('IsEmpty').test(v) || !isNaN(test);
|
448 |
+
}],
|
449 |
+
['validate-email', 'Please enter a valid email address. For example johndoe@domain.com.', function (v) {
|
450 |
+
//return Validation.get('IsEmpty').test(v) || /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(v)
|
451 |
+
//return Validation.get('IsEmpty').test(v) || /^[\!\#$%\*/?|\^\{\}`~&\'\+\-=_a-z0-9][\!\#$%\*/?|\^\{\}`~&\'\+\-=_a-z0-9\.]{1,30}[\!\#$%\*/?|\^\{\}`~&\'\+\-=_a-z0-9]@([a-z0-9_-]{1,30}\.){1,5}[a-z]{2,4}$/i.test(v)
|
452 |
+
return Validation.get('IsEmpty').test(v) || /^[a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]+(\.[a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})/i.test(v)
|
453 |
+
}],
|
454 |
+
['validate-emailSender', 'Please use only visible characters and spaces.', function (v) {
|
455 |
+
return Validation.get('IsEmpty').test(v) || /^[\S ]+$/.test(v)
|
456 |
+
}],
|
457 |
+
['validate-password', 'Please enter 6 or more characters. Leading or trailing spaces will be ignored.', function(v) {
|
458 |
+
var pass=v.strip(); /*strip leading and trailing spaces*/
|
459 |
+
return !(pass.length>0 && pass.length < 6);
|
460 |
+
}],
|
461 |
+
['validate-admin-password', 'Please enter 7 or more characters. Password should contain both numeric and alphabetic characters.', function(v) {
|
462 |
+
var pass=v.strip();
|
463 |
+
if (0 == pass.length) {
|
464 |
+
return true;
|
465 |
+
}
|
466 |
+
if (!(/[a-z]/i.test(v)) || !(/[0-9]/.test(v))) {
|
467 |
+
return false;
|
468 |
+
}
|
469 |
+
return !(pass.length < 7);
|
470 |
+
}],
|
471 |
+
['validate-cpassword', 'Please make sure your passwords match.', function(v) {
|
472 |
+
var conf = $('confirmation') ? $('confirmation') : $$('.validate-cpassword')[0];
|
473 |
+
var pass = false;
|
474 |
+
if ($('password')) {
|
475 |
+
pass = $('password');
|
476 |
+
}
|
477 |
+
var passwordElements = $$('.validate-password');
|
478 |
+
for (var i = 0; i < passwordElements.size(); i++) {
|
479 |
+
var passwordElement = passwordElements[i];
|
480 |
+
if (passwordElement.up('form').id == conf.up('form').id) {
|
481 |
+
pass = passwordElement;
|
482 |
+
}
|
483 |
+
}
|
484 |
+
if ($$('.validate-admin-password').size()) {
|
485 |
+
pass = $$('.validate-admin-password')[0];
|
486 |
+
}
|
487 |
+
return (pass.value == conf.value);
|
488 |
+
}],
|
489 |
+
['validate-url', 'Please enter a valid URL. http:// is required', function (v) {
|
490 |
+
return Validation.get('IsEmpty').test(v) || /^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(v)
|
491 |
+
}],
|
492 |
+
['validate-clean-url', 'Please enter a valid URL. For example http://www.example.com or www.example.com', function (v) {
|
493 |
+
return Validation.get('IsEmpty').test(v) || /^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i.test(v) || /^(www)((\.[A-Z0-9][A-Z0-9_-]*)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i.test(v)
|
494 |
+
}],
|
495 |
+
['validate-identifier', 'Please enter a valid URL Key. For example "example-page", "example-page.html" or "anotherlevel/example-page"', function (v) {
|
496 |
+
return Validation.get('IsEmpty').test(v) || /^[A-Z0-9][A-Z0-9_\/-]+(\.[A-Z0-9_-]+)*$/i.test(v)
|
497 |
+
}],
|
498 |
+
['validate-xml-identifier', 'Please enter a valid XML-identifier. For example something_1, block5, id-4', function (v) {
|
499 |
+
return Validation.get('IsEmpty').test(v) || /^[A-Z][A-Z0-9_\/-]*$/i.test(v)
|
500 |
+
}],
|
501 |
+
['validate-ssn', 'Please enter a valid social security number. For example 123-45-6789.', function(v) {
|
502 |
+
return Validation.get('IsEmpty').test(v) || /^\d{3}-?\d{2}-?\d{4}$/.test(v);
|
503 |
+
}],
|
504 |
+
['validate-zip', 'Please enter a valid zip code. For example 90602 or 90602-1234.', function(v) {
|
505 |
+
return Validation.get('IsEmpty').test(v) || /(^\d{5}$)|(^\d{5}-\d{4}$)/.test(v);
|
506 |
+
}],
|
507 |
+
['validate-zip-international', 'Please enter a valid zip code.', function(v) {
|
508 |
+
//return Validation.get('IsEmpty').test(v) || /(^[A-z0-9]{2,10}([\s]{0,1}|[\-]{0,1})[A-z0-9]{2,10}$)/.test(v);
|
509 |
+
return true;
|
510 |
+
}],
|
511 |
+
['validate-date-au', 'Please use this date format: dd/mm/yyyy. For example 17/03/2006 for the 17th of March, 2006.', function(v) {
|
512 |
+
if(Validation.get('IsEmpty').test(v)) return true;
|
513 |
+
var regex = /^(\d{2})\/(\d{2})\/(\d{4})$/;
|
514 |
+
if(!regex.test(v)) return false;
|
515 |
+
var d = new Date(v.replace(regex, '$2/$1/$3'));
|
516 |
+
return ( parseInt(RegExp.$2, 10) == (1+d.getMonth()) ) &&
|
517 |
+
(parseInt(RegExp.$1, 10) == d.getDate()) &&
|
518 |
+
(parseInt(RegExp.$3, 10) == d.getFullYear() );
|
519 |
+
}],
|
520 |
+
['validate-currency-dollar', 'Please enter a valid $ amount. For example $100.00.', function(v) {
|
521 |
+
// [$]1[##][,###]+[.##]
|
522 |
+
// [$]1###+[.##]
|
523 |
+
// [$]0.##
|
524 |
+
// [$].##
|
525 |
+
return Validation.get('IsEmpty').test(v) || /^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(v)
|
526 |
+
}],
|
527 |
+
['validate-one-required', 'Please select one of the above options.', function (v,elm) {
|
528 |
+
var p = elm.parentNode;
|
529 |
+
var options = p.getElementsByTagName('INPUT');
|
530 |
+
return $A(options).any(function(elm) {
|
531 |
+
return $F(elm);
|
532 |
+
});
|
533 |
+
}],
|
534 |
+
['validate-one-required-by-name', 'Please select one of the options.', function (v,elm) {
|
535 |
+
var inputs = $$('input[name="' + elm.name.replace(/([\\"])/g, '\\$1') + '"]');
|
536 |
+
|
537 |
+
var error = 1;
|
538 |
+
for(var i=0;i<inputs.length;i++) {
|
539 |
+
if((inputs[i].type == 'checkbox' || inputs[i].type == 'radio') && inputs[i].checked == true) {
|
540 |
+
error = 0;
|
541 |
+
}
|
542 |
+
|
543 |
+
if(Validation.isOnChange && (inputs[i].type == 'checkbox' || inputs[i].type == 'radio')) {
|
544 |
+
Validation.reset(inputs[i]);
|
545 |
+
}
|
546 |
+
}
|
547 |
+
|
548 |
+
if( error == 0 ) {
|
549 |
+
return true;
|
550 |
+
} else {
|
551 |
+
return false;
|
552 |
+
}
|
553 |
+
}],
|
554 |
+
['validate-not-negative-number', 'Please enter a valid number in this field.', function(v) {
|
555 |
+
v = parseNumber(v);
|
556 |
+
return (!isNaN(v) && v>=0);
|
557 |
+
}],
|
558 |
+
['validate-state', 'Please select State/Province.', function(v) {
|
559 |
+
return (v!=0 || v == '');
|
560 |
+
}],
|
561 |
+
|
562 |
+
['validate-new-password', 'Please enter 6 or more characters. Leading or trailing spaces will be ignored.', function(v) {
|
563 |
+
if (!Validation.get('validate-password').test(v)) return false;
|
564 |
+
if (Validation.get('IsEmpty').test(v) && v != '') return false;
|
565 |
+
return true;
|
566 |
+
}],
|
567 |
+
['validate-greater-than-zero', 'Please enter a number greater than 0 in this field.', function(v) {
|
568 |
+
if(v.length)
|
569 |
+
return parseFloat(v) > 0;
|
570 |
+
else
|
571 |
+
return true;
|
572 |
+
}],
|
573 |
+
['validate-zero-or-greater', 'Please enter a number 0 or greater in this field.', function(v) {
|
574 |
+
if(v.length)
|
575 |
+
return parseFloat(v) >= 0;
|
576 |
+
else
|
577 |
+
return true;
|
578 |
+
}],
|
579 |
+
['validate-cc-number', 'Please enter a valid credit card number.', function(v, elm) {
|
580 |
+
// remove non-numerics
|
581 |
+
var ccTypeContainer = $(elm.id.substr(0,elm.id.indexOf('_cc_number')) + '_cc_type');
|
582 |
+
if (ccTypeContainer && typeof Validation.creditCartTypes.get(ccTypeContainer.value) != 'undefined'
|
583 |
+
&& Validation.creditCartTypes.get(ccTypeContainer.value)[2] == false) {
|
584 |
+
if (!Validation.get('IsEmpty').test(v) && Validation.get('validate-digits').test(v)) {
|
585 |
+
return true;
|
586 |
+
} else {
|
587 |
+
return false;
|
588 |
+
}
|
589 |
+
}
|
590 |
+
return validateCreditCard(v);
|
591 |
+
}],
|
592 |
+
['validate-cc-type', 'Credit card number doesn\'t match credit card type', function(v, elm) {
|
593 |
+
// remove credit card number delimiters such as "-" and space
|
594 |
+
elm.value = removeDelimiters(elm.value);
|
595 |
+
v = removeDelimiters(v);
|
596 |
+
|
597 |
+
var ccTypeContainer = $(elm.id.substr(0,elm.id.indexOf('_cc_number')) + '_cc_type');
|
598 |
+
if (!ccTypeContainer) {
|
599 |
+
return true;
|
600 |
+
}
|
601 |
+
var ccType = ccTypeContainer.value;
|
602 |
+
|
603 |
+
if (typeof Validation.creditCartTypes.get(ccType) == 'undefined') {
|
604 |
+
return false;
|
605 |
+
}
|
606 |
+
|
607 |
+
// Other card type or switch or solo card
|
608 |
+
if (Validation.creditCartTypes.get(ccType)[0]==false) {
|
609 |
+
return true;
|
610 |
+
}
|
611 |
+
|
612 |
+
// Matched credit card type
|
613 |
+
var ccMatchedType = '';
|
614 |
+
|
615 |
+
Validation.creditCartTypes.each(function (pair) {
|
616 |
+
if (pair.value[0] && v.match(pair.value[0])) {
|
617 |
+
ccMatchedType = pair.key;
|
618 |
+
throw $break;
|
619 |
+
}
|
620 |
+
});
|
621 |
+
|
622 |
+
if(ccMatchedType != ccType) {
|
623 |
+
return false;
|
624 |
+
}
|
625 |
+
|
626 |
+
if (ccTypeContainer.hasClassName('validation-failed') && Validation.isOnChange) {
|
627 |
+
Validation.validate(ccTypeContainer);
|
628 |
+
}
|
629 |
+
|
630 |
+
return true;
|
631 |
+
}],
|
632 |
+
['validate-cc-type-select', 'Card type doesn\'t match credit card number', function(v, elm) {
|
633 |
+
var ccNumberContainer = $(elm.id.substr(0,elm.id.indexOf('_cc_type')) + '_cc_number');
|
634 |
+
if (Validation.isOnChange && Validation.get('IsEmpty').test(ccNumberContainer.value)) {
|
635 |
+
return true;
|
636 |
+
}
|
637 |
+
if (Validation.get('validate-cc-type').test(ccNumberContainer.value, ccNumberContainer)) {
|
638 |
+
Validation.validate(ccNumberContainer);
|
639 |
+
}
|
640 |
+
return Validation.get('validate-cc-type').test(ccNumberContainer.value, ccNumberContainer);
|
641 |
+
}],
|
642 |
+
['validate-cc-exp', 'Incorrect credit card expiration date', function(v, elm) {
|
643 |
+
var ccExpMonth = v;
|
644 |
+
var ccExpYear = $(elm.id.substr(0,elm.id.indexOf('_expiration')) + '_expiration_yr').value;
|
645 |
+
var currentTime = new Date();
|
646 |
+
var currentMonth = currentTime.getMonth() + 1;
|
647 |
+
var currentYear = currentTime.getFullYear();
|
648 |
+
if (ccExpMonth < currentMonth && ccExpYear == currentYear) {
|
649 |
+
return false;
|
650 |
+
}
|
651 |
+
return true;
|
652 |
+
}],
|
653 |
+
['validate-cc-cvn', 'Please enter a valid credit card verification number.', function(v, elm) {
|
654 |
+
var ccTypeContainer = $(elm.id.substr(0,elm.id.indexOf('_cc_cid')) + '_cc_type');
|
655 |
+
if (!ccTypeContainer) {
|
656 |
+
return true;
|
657 |
+
}
|
658 |
+
var ccType = ccTypeContainer.value;
|
659 |
+
|
660 |
+
if (typeof Validation.creditCartTypes.get(ccType) == 'undefined') {
|
661 |
+
return false;
|
662 |
+
}
|
663 |
+
|
664 |
+
var re = Validation.creditCartTypes.get(ccType)[1];
|
665 |
+
|
666 |
+
if (v.match(re)) {
|
667 |
+
return true;
|
668 |
+
}
|
669 |
+
|
670 |
+
return false;
|
671 |
+
}],
|
672 |
+
['validate-ajax', '', function(v, elm) { return true; }],
|
673 |
+
['validate-data', 'Please use only letters (a-z or A-Z), numbers (0-9) or underscore(_) in this field, first character should be a letter.', function (v) {
|
674 |
+
if(v != '' && v) {
|
675 |
+
return /^[A-Za-z]+[A-Za-z0-9_]+$/.test(v);
|
676 |
+
}
|
677 |
+
return true;
|
678 |
+
}],
|
679 |
+
['validate-css-length', 'Please input a valid CSS-length. For example 100px or 77pt or 20em or .5ex or 50%', function (v) {
|
680 |
+
if (v != '' && v) {
|
681 |
+
return /^[0-9\.]+(px|pt|em|ex|%)?$/.test(v) && (!(/\..*\./.test(v))) && !(/\.$/.test(v));
|
682 |
+
}
|
683 |
+
return true;
|
684 |
+
}],
|
685 |
+
['validate-length', 'Maximum length exceeded.', function (v, elm) {
|
686 |
+
var re = new RegExp(/^maximum-length-[0-9]+$/);
|
687 |
+
var result = true;
|
688 |
+
$w(elm.className).each(function(name, index) {
|
689 |
+
if (name.match(re) && result) {
|
690 |
+
var length = name.split('-')[2];
|
691 |
+
result = (v.length <= length);
|
692 |
+
}
|
693 |
+
});
|
694 |
+
return result;
|
695 |
+
}],
|
696 |
+
['validate-percents', 'Please enter a number lower than 100', {max:100}]
|
697 |
+
|
698 |
+
]);
|
699 |
+
|
700 |
+
// Credit Card Validation Javascript
|
701 |
+
// copyright 12th May 2003, by Stephen Chapman, Felgall Pty Ltd
|
702 |
+
|
703 |
+
// You have permission to copy and use this javascript provided that
|
704 |
+
// the content of the script is not changed in any way.
|
705 |
+
|
706 |
+
function validateCreditCard(s) {
|
707 |
+
// remove non-numerics
|
708 |
+
var v = "0123456789";
|
709 |
+
var w = "";
|
710 |
+
for (i=0; i < s.length; i++) {
|
711 |
+
x = s.charAt(i);
|
712 |
+
if (v.indexOf(x,0) != -1)
|
713 |
+
w += x;
|
714 |
+
}
|
715 |
+
// validate number
|
716 |
+
j = w.length / 2;
|
717 |
+
k = Math.floor(j);
|
718 |
+
m = Math.ceil(j) - k;
|
719 |
+
c = 0;
|
720 |
+
for (i=0; i<k; i++) {
|
721 |
+
a = w.charAt(i*2+m) * 2;
|
722 |
+
c += a > 9 ? Math.floor(a/10 + a%10) : a;
|
723 |
+
}
|
724 |
+
for (i=0; i<k+m; i++) c += w.charAt(i*2+1-m) * 1;
|
725 |
+
return (c%10 == 0);
|
726 |
+
}
|
727 |
+
|
728 |
+
function removeDelimiters (v) {
|
729 |
+
v = v.replace(/\s/g, '');
|
730 |
+
v = v.replace(/\-/g, '');
|
731 |
+
return v;
|
732 |
+
}
|
733 |
+
|
734 |
+
function parseNumber(v)
|
735 |
+
{
|
736 |
+
if (typeof v != 'string') {
|
737 |
+
return parseFloat(v);
|
738 |
+
}
|
739 |
+
|
740 |
+
var isDot = v.indexOf('.');
|
741 |
+
var isComa = v.indexOf(',');
|
742 |
+
|
743 |
+
if (isDot != -1 && isComa != -1) {
|
744 |
+
if (isComa > isDot) {
|
745 |
+
v = v.replace('.', '').replace(',', '.');
|
746 |
+
}
|
747 |
+
else {
|
748 |
+
v = v.replace(',', '');
|
749 |
+
}
|
750 |
+
}
|
751 |
+
else if (isComa != -1) {
|
752 |
+
v = v.replace(',', '.');
|
753 |
+
}
|
754 |
+
|
755 |
+
return parseFloat(v);
|
756 |
+
}
|
757 |
+
|
758 |
+
/**
|
759 |
+
* Hash with credit card types wich can be simply extended in payment modules
|
760 |
+
* 0 - regexp for card number
|
761 |
+
* 1 - regexp for cvn
|
762 |
+
* 2 - check or not credit card number trough Luhn algorithm by
|
763 |
+
* function validateCreditCard wich you can find above in this file
|
764 |
+
*/
|
765 |
+
Validation.creditCartTypes = $H({
|
766 |
+
'VI': [new RegExp('^4[0-9]{12}([0-9]{3})?$'), new RegExp('^[0-9]{3}$'), true],
|
767 |
+
'MC': [new RegExp('^5[1-5][0-9]{14}$'), new RegExp('^[0-9]{3}$'), true],
|
768 |
+
'AE': [new RegExp('^3[47][0-9]{13}$'), new RegExp('^[0-9]{4}$'), true],
|
769 |
+
'DI': [new RegExp('^6011[0-9]{12}$'), new RegExp('^[0-9]{3}$'), true],
|
770 |
+
'SS': [new RegExp('^((6759[0-9]{12})|(49[013][1356][0-9]{13})|(633[34][0-9]{12})|(633110[0-9]{10})|(564182[0-9]{10}))([0-9]{2,3})?$'), new RegExp('^([0-9]{3}|[0-9]{4})?$'), true],
|
771 |
+
'OT': [false, new RegExp('^([0-9]{3}|[0-9]{4})?$'), false]
|
772 |
+
});
|
773 |
+
|
lib/minify/HISTORY.txt
CHANGED
@@ -1,5 +1,17 @@
|
|
1 |
Minify Release History
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
Version 2.1.2
|
4 |
* Javascript fixes
|
5 |
* Debug mode no longer confused by "*/*" in strings/RegExps (jQuery)
|
1 |
Minify Release History
|
2 |
|
3 |
+
Version 2.1.3
|
4 |
+
* HTTP fixes
|
5 |
+
* ETag generation now valid (different when gzipped)
|
6 |
+
* Vary header always sent when Accept-Encoding is sniffed
|
7 |
+
* Cache-Control no longer has "must-revalidate" due to webkit bug
|
8 |
+
See: http://mrclay.org/index.php/2009/02/24/safari-4-beta-cache-controlmust-revalidate-bug/
|
9 |
+
* Dropped deflate encoding. Browser and proxy support could be buggy.
|
10 |
+
See: http://stackoverflow.com/questions/883841/
|
11 |
+
* File cache now works w/o setting $min_cachePath
|
12 |
+
* Allow setting contentType in Minify_Source objects
|
13 |
+
* No more 5.3 deprecation warnings: split() removed
|
14 |
+
|
15 |
Version 2.1.2
|
16 |
* Javascript fixes
|
17 |
* Debug mode no longer confused by "*/*" in strings/RegExps (jQuery)
|
lib/minify/lib/HTTP/ConditionalGet.php
CHANGED
@@ -82,8 +82,11 @@ class HTTP_ConditionalGet {
|
|
82 |
* 'lastModifiedTime': (int) if given, both ETag AND Last-Modified headers
|
83 |
* will be sent with content. This is recommended.
|
84 |
*
|
85 |
-
* '
|
86 |
-
*
|
|
|
|
|
|
|
87 |
*
|
88 |
* 'contentHash': (string) if given, only the ETag header can be sent with
|
89 |
* content (only HTTP1.1 clients can conditionally GET). The given string
|
@@ -91,6 +94,10 @@ class HTTP_ConditionalGet {
|
|
91 |
* resource changes (recommend md5()). This is not needed/used if
|
92 |
* lastModifiedTime is given.
|
93 |
*
|
|
|
|
|
|
|
|
|
94 |
* 'invalidate': (bool) if true, the client cache will be considered invalid
|
95 |
* without testing. Effectively this disables conditional GET.
|
96 |
* (default false)
|
@@ -120,19 +127,30 @@ class HTTP_ConditionalGet {
|
|
120 |
$_SERVER['REQUEST_TIME'] + $spec['maxAge']
|
121 |
);
|
122 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
123 |
if (isset($spec['lastModifiedTime'])) {
|
124 |
$this->_setLastModified($spec['lastModifiedTime']);
|
125 |
if (isset($spec['eTag'])) { // Use it
|
126 |
$this->_setEtag($spec['eTag'], $scope);
|
127 |
} else { // base both headers on time
|
128 |
-
$this->_setEtag($spec['lastModifiedTime'], $scope);
|
129 |
}
|
130 |
} elseif (isset($spec['eTag'])) { // Use it
|
131 |
$this->_setEtag($spec['eTag'], $scope);
|
132 |
} elseif (isset($spec['contentHash'])) { // Use the hash as the ETag
|
133 |
-
$this->_setEtag($spec['contentHash'], $scope);
|
134 |
}
|
135 |
-
$this->_headers['Cache-Control'] = "max-age={$maxAge}, {$scope}
|
136 |
// invalidate cache if disabled, otherwise check
|
137 |
$this->cacheIsValid = (isset($spec['invalidate']) && $spec['invalidate'])
|
138 |
? false
|
@@ -148,7 +166,7 @@ class HTTP_ConditionalGet {
|
|
148 |
* Otherwise something like:
|
149 |
* <code>
|
150 |
* array(
|
151 |
-
* 'Cache-Control' => 'max-age=0, public
|
152 |
* ,'ETag' => '"foobar"'
|
153 |
* )
|
154 |
* </code>
|
@@ -248,12 +266,11 @@ class HTTP_ConditionalGet {
|
|
248 |
protected $_headers = array();
|
249 |
protected $_lmTime = null;
|
250 |
protected $_etag = null;
|
|
|
251 |
|
252 |
protected function _setEtag($hash, $scope)
|
253 |
{
|
254 |
-
$this->_etag = '"' . $hash
|
255 |
-
. substr($scope, 0, 3)
|
256 |
-
. '"';
|
257 |
$this->_headers['ETag'] = $this->_etag;
|
258 |
}
|
259 |
|
@@ -286,17 +303,29 @@ class HTTP_ConditionalGet {
|
|
286 |
if (!isset($_SERVER['HTTP_IF_NONE_MATCH'])) {
|
287 |
return false;
|
288 |
}
|
289 |
-
$
|
290 |
? stripslashes($_SERVER['HTTP_IF_NONE_MATCH'])
|
291 |
: $_SERVER['HTTP_IF_NONE_MATCH'];
|
292 |
-
$
|
293 |
-
|
294 |
-
|
|
|
|
|
|
|
|
|
|
|
295 |
return true;
|
296 |
}
|
297 |
}
|
298 |
return false;
|
299 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
300 |
|
301 |
protected function resourceNotModified()
|
302 |
{
|
@@ -308,6 +337,12 @@ class HTTP_ConditionalGet {
|
|
308 |
// IE has tacked on extra data to this header, strip it
|
309 |
$ifModifiedSince = substr($ifModifiedSince, 0, $semicolon);
|
310 |
}
|
311 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
312 |
}
|
313 |
}
|
82 |
* 'lastModifiedTime': (int) if given, both ETag AND Last-Modified headers
|
83 |
* will be sent with content. This is recommended.
|
84 |
*
|
85 |
+
* 'encoding': (string) if set, the header "Vary: Accept-Encoding" will
|
86 |
+
* always be sent and a truncated version of the encoding will be appended
|
87 |
+
* to the ETag. E.g. "pub123456;gz". This will also trigger a more lenient
|
88 |
+
* checking of the client's If-None-Match header, as the encoding portion of
|
89 |
+
* the ETag will be stripped before comparison.
|
90 |
*
|
91 |
* 'contentHash': (string) if given, only the ETag header can be sent with
|
92 |
* content (only HTTP1.1 clients can conditionally GET). The given string
|
94 |
* resource changes (recommend md5()). This is not needed/used if
|
95 |
* lastModifiedTime is given.
|
96 |
*
|
97 |
+
* 'eTag': (string) if given, this will be used as the ETag header rather
|
98 |
+
* than values based on lastModifiedTime or contentHash. Also the encoding
|
99 |
+
* string will not be appended to the given value as described above.
|
100 |
+
*
|
101 |
* 'invalidate': (bool) if true, the client cache will be considered invalid
|
102 |
* without testing. Effectively this disables conditional GET.
|
103 |
* (default false)
|
127 |
$_SERVER['REQUEST_TIME'] + $spec['maxAge']
|
128 |
);
|
129 |
}
|
130 |
+
$etagAppend = '';
|
131 |
+
if (isset($spec['encoding'])) {
|
132 |
+
$this->_stripEtag = true;
|
133 |
+
$this->_headers['Vary'] = 'Accept-Encoding';
|
134 |
+
if ('' !== $spec['encoding']) {
|
135 |
+
if (0 === strpos($spec['encoding'], 'x-')) {
|
136 |
+
$spec['encoding'] = substr($spec['encoding'], 2);
|
137 |
+
}
|
138 |
+
$etagAppend = ';' . substr($spec['encoding'], 0, 2);
|
139 |
+
}
|
140 |
+
}
|
141 |
if (isset($spec['lastModifiedTime'])) {
|
142 |
$this->_setLastModified($spec['lastModifiedTime']);
|
143 |
if (isset($spec['eTag'])) { // Use it
|
144 |
$this->_setEtag($spec['eTag'], $scope);
|
145 |
} else { // base both headers on time
|
146 |
+
$this->_setEtag($spec['lastModifiedTime'] . $etagAppend, $scope);
|
147 |
}
|
148 |
} elseif (isset($spec['eTag'])) { // Use it
|
149 |
$this->_setEtag($spec['eTag'], $scope);
|
150 |
} elseif (isset($spec['contentHash'])) { // Use the hash as the ETag
|
151 |
+
$this->_setEtag($spec['contentHash'] . $etagAppend, $scope);
|
152 |
}
|
153 |
+
$this->_headers['Cache-Control'] = "max-age={$maxAge}, {$scope}";
|
154 |
// invalidate cache if disabled, otherwise check
|
155 |
$this->cacheIsValid = (isset($spec['invalidate']) && $spec['invalidate'])
|
156 |
? false
|
166 |
* Otherwise something like:
|
167 |
* <code>
|
168 |
* array(
|
169 |
+
* 'Cache-Control' => 'max-age=0, public'
|
170 |
* ,'ETag' => '"foobar"'
|
171 |
* )
|
172 |
* </code>
|
266 |
protected $_headers = array();
|
267 |
protected $_lmTime = null;
|
268 |
protected $_etag = null;
|
269 |
+
protected $_stripEtag = false;
|
270 |
|
271 |
protected function _setEtag($hash, $scope)
|
272 |
{
|
273 |
+
$this->_etag = '"' . substr($scope, 0, 3) . $hash . '"';
|
|
|
|
|
274 |
$this->_headers['ETag'] = $this->_etag;
|
275 |
}
|
276 |
|
303 |
if (!isset($_SERVER['HTTP_IF_NONE_MATCH'])) {
|
304 |
return false;
|
305 |
}
|
306 |
+
$clientEtagList = get_magic_quotes_gpc()
|
307 |
? stripslashes($_SERVER['HTTP_IF_NONE_MATCH'])
|
308 |
: $_SERVER['HTTP_IF_NONE_MATCH'];
|
309 |
+
$clientEtags = explode(',', $clientEtagList);
|
310 |
+
|
311 |
+
$compareTo = $this->normalizeEtag($this->_etag);
|
312 |
+
foreach ($clientEtags as $clientEtag) {
|
313 |
+
if ($this->normalizeEtag($clientEtag) === $compareTo) {
|
314 |
+
// respond with the client's matched ETag, even if it's not what
|
315 |
+
// we would've sent by default
|
316 |
+
$this->_headers['ETag'] = trim($clientEtag);
|
317 |
return true;
|
318 |
}
|
319 |
}
|
320 |
return false;
|
321 |
}
|
322 |
+
|
323 |
+
protected function normalizeEtag($etag) {
|
324 |
+
$etag = trim($etag);
|
325 |
+
return $this->_stripEtag
|
326 |
+
? preg_replace('/;\\w\\w"$/', '"', $etag)
|
327 |
+
: $etag;
|
328 |
+
}
|
329 |
|
330 |
protected function resourceNotModified()
|
331 |
{
|
337 |
// IE has tacked on extra data to this header, strip it
|
338 |
$ifModifiedSince = substr($ifModifiedSince, 0, $semicolon);
|
339 |
}
|
340 |
+
if ($ifModifiedSince == self::gmtDate($this->_lmTime)) {
|
341 |
+
// Apache 2.2's behavior. If there was no ETag match, send the
|
342 |
+
// non-encoded version of the ETag value.
|
343 |
+
$this->_headers['ETag'] = $this->normalizeEtag($this->_etag);
|
344 |
+
return true;
|
345 |
+
}
|
346 |
+
return false;
|
347 |
}
|
348 |
}
|
lib/minify/lib/HTTP/Encoder.php
CHANGED
@@ -8,6 +8,9 @@
|
|
8 |
/**
|
9 |
* Encode and send gzipped/deflated content
|
10 |
*
|
|
|
|
|
|
|
11 |
* <code>
|
12 |
* // Send a CSS file, compressed if possible
|
13 |
* $he = new HTTP_Encoder(array(
|
@@ -175,16 +178,19 @@ class HTTP_Encoder {
|
|
175 |
* this will return ('', ''), the "identity" encoding.
|
176 |
*
|
177 |
* A syntax-aware scan is done of the Accept-Encoding, so the method must
|
178 |
-
* be non 0. The methods are favored in order of
|
179 |
-
* compress.
|
|
|
180 |
*
|
181 |
-
* @param bool $allowCompress allow the older compress encoding
|
|
|
|
|
182 |
*
|
183 |
* @return array two values, 1st is the actual encoding method, 2nd is the
|
184 |
* alias of that method to use in the Content-Encoding header (some browsers
|
185 |
* call gzip "x-gzip" etc.)
|
186 |
*/
|
187 |
-
public static function getAcceptedEncoding($allowCompress = true)
|
188 |
{
|
189 |
// @link http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
|
190 |
|
@@ -194,23 +200,31 @@ class HTTP_Encoder {
|
|
194 |
return array('', '');
|
195 |
}
|
196 |
$ae = $_SERVER['HTTP_ACCEPT_ENCODING'];
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|| 0 === strpos($ae, 'deflate,') // opera 9.5b
|
203 |
-
// slow parsing
|
204 |
-
|| preg_match(
|
205 |
-
'@(?:^|,)\\s*deflate\\s*(?:$|,|;\\s*q=(?:0\\.|1))@', $ae)) {
|
206 |
-
return array('deflate', 'deflate');
|
207 |
}
|
|
|
208 |
if (preg_match(
|
209 |
'@(?:^|,)\\s*((?:x-)?gzip)\\s*(?:$|,|;\\s*q=(?:0\\.|1))@'
|
210 |
,$ae
|
211 |
,$m)) {
|
212 |
return array('gzip', $m[1]);
|
213 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
214 |
if ($allowCompress && preg_match(
|
215 |
'@(?:^|,)\\s*((?:x-)?compress)\\s*(?:$|,|;\\s*q=(?:0\\.|1))@'
|
216 |
,$ae
|
@@ -229,8 +243,8 @@ class HTTP_Encoder {
|
|
229 |
* Then the appropriate gz_* function is called to compress the content. If
|
230 |
* this fails, false is returned.
|
231 |
*
|
232 |
-
*
|
233 |
-
* and
|
234 |
*
|
235 |
* @param int $compressionLevel given to zlib functions. If not given, the
|
236 |
* class default will be used.
|
@@ -239,6 +253,7 @@ class HTTP_Encoder {
|
|
239 |
*/
|
240 |
public function encode($compressionLevel = null)
|
241 |
{
|
|
|
242 |
if (null === $compressionLevel) {
|
243 |
$compressionLevel = self::$compressionLevel;
|
244 |
}
|
@@ -260,7 +275,6 @@ class HTTP_Encoder {
|
|
260 |
}
|
261 |
$this->_headers['Content-Length'] = strlen($encoded);
|
262 |
$this->_headers['Content-Encoding'] = $this->_encodeMethod[1];
|
263 |
-
$this->_headers['Vary'] = 'Accept-Encoding';
|
264 |
$this->_content = $encoded;
|
265 |
return true;
|
266 |
}
|
8 |
/**
|
9 |
* Encode and send gzipped/deflated content
|
10 |
*
|
11 |
+
* The "Vary: Accept-Encoding" header is sent. If the client allows encoding,
|
12 |
+
* Content-Encoding and Content-Length are added.
|
13 |
+
*
|
14 |
* <code>
|
15 |
* // Send a CSS file, compressed if possible
|
16 |
* $he = new HTTP_Encoder(array(
|
178 |
* this will return ('', ''), the "identity" encoding.
|
179 |
*
|
180 |
* A syntax-aware scan is done of the Accept-Encoding, so the method must
|
181 |
+
* be non 0. The methods are favored in order of gzip, deflate, then
|
182 |
+
* compress. Deflate is always smallest and generally faster, but is
|
183 |
+
* rarely sent by servers, so client support could be buggier.
|
184 |
*
|
185 |
+
* @param bool $allowCompress allow the older compress encoding
|
186 |
+
*
|
187 |
+
* @param bool $allowDeflate allow the more recent deflate encoding
|
188 |
*
|
189 |
* @return array two values, 1st is the actual encoding method, 2nd is the
|
190 |
* alias of that method to use in the Content-Encoding header (some browsers
|
191 |
* call gzip "x-gzip" etc.)
|
192 |
*/
|
193 |
+
public static function getAcceptedEncoding($allowCompress = true, $allowDeflate = true)
|
194 |
{
|
195 |
// @link http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
|
196 |
|
200 |
return array('', '');
|
201 |
}
|
202 |
$ae = $_SERVER['HTTP_ACCEPT_ENCODING'];
|
203 |
+
// gzip checks (quick)
|
204 |
+
if (0 === strpos($ae, 'gzip,') // most browsers
|
205 |
+
|| 0 === strpos($ae, 'deflate, gzip,') // opera
|
206 |
+
) {
|
207 |
+
return array('gzip', 'gzip');
|
|
|
|
|
|
|
|
|
|
|
208 |
}
|
209 |
+
// gzip checks (slow)
|
210 |
if (preg_match(
|
211 |
'@(?:^|,)\\s*((?:x-)?gzip)\\s*(?:$|,|;\\s*q=(?:0\\.|1))@'
|
212 |
,$ae
|
213 |
,$m)) {
|
214 |
return array('gzip', $m[1]);
|
215 |
}
|
216 |
+
if ($allowDeflate) {
|
217 |
+
// deflate checks
|
218 |
+
$aeRev = strrev($ae);
|
219 |
+
if (0 === strpos($aeRev, 'etalfed ,') // ie, webkit
|
220 |
+
|| 0 === strpos($aeRev, 'etalfed,') // gecko
|
221 |
+
|| 0 === strpos($ae, 'deflate,') // opera
|
222 |
+
// slow parsing
|
223 |
+
|| preg_match(
|
224 |
+
'@(?:^|,)\\s*deflate\\s*(?:$|,|;\\s*q=(?:0\\.|1))@', $ae)) {
|
225 |
+
return array('deflate', 'deflate');
|
226 |
+
}
|
227 |
+
}
|
228 |
if ($allowCompress && preg_match(
|
229 |
'@(?:^|,)\\s*((?:x-)?compress)\\s*(?:$|,|;\\s*q=(?:0\\.|1))@'
|
230 |
,$ae
|
243 |
* Then the appropriate gz_* function is called to compress the content. If
|
244 |
* this fails, false is returned.
|
245 |
*
|
246 |
+
* The header "Vary: Accept-Encoding" is added. If encoding is successful,
|
247 |
+
* the Content-Length header is updated, and Content-Encoding is also added.
|
248 |
*
|
249 |
* @param int $compressionLevel given to zlib functions. If not given, the
|
250 |
* class default will be used.
|
253 |
*/
|
254 |
public function encode($compressionLevel = null)
|
255 |
{
|
256 |
+
$this->_headers['Vary'] = 'Accept-Encoding';
|
257 |
if (null === $compressionLevel) {
|
258 |
$compressionLevel = self::$compressionLevel;
|
259 |
}
|
275 |
}
|
276 |
$this->_headers['Content-Length'] = strlen($encoded);
|
277 |
$this->_headers['Content-Encoding'] = $this->_encodeMethod[1];
|
|
|
278 |
$this->_content = $encoded;
|
279 |
return true;
|
280 |
}
|
lib/minify/lib/JSMin.php
CHANGED
@@ -11,11 +11,6 @@
|
|
11 |
* comments that begin with "/*!" (for documentation purposes). In the latter case
|
12 |
* newlines are inserted around the comment to enhance readability.
|
13 |
*
|
14 |
-
* Known issue: regular expressions containing quote characters must be proceeded
|
15 |
-
* by one of the following characters: (,=:[!&|?
|
16 |
-
* E.g. JSMin will fail on the following: return /'/;
|
17 |
-
* The simple workaround is to wrap the expression in parenthesis: return (/'/);
|
18 |
-
*
|
19 |
* PHP 5 or higher is required.
|
20 |
*
|
21 |
* Permission is hereby granted to use this version of the library under the
|
@@ -56,17 +51,20 @@
|
|
56 |
*/
|
57 |
|
58 |
class JSMin {
|
59 |
-
const ORD_LF
|
60 |
-
const ORD_SPACE
|
61 |
-
|
62 |
-
|
|
|
|
|
|
|
63 |
protected $b = '';
|
64 |
protected $input = '';
|
65 |
protected $inputIndex = 0;
|
66 |
protected $inputLength = 0;
|
67 |
protected $lookAhead = null;
|
68 |
protected $output = '';
|
69 |
-
|
70 |
/**
|
71 |
* Minify Javascript
|
72 |
*
|
@@ -78,81 +76,141 @@ class JSMin {
|
|
78 |
$jsmin = new JSMin($js);
|
79 |
return $jsmin->min();
|
80 |
}
|
81 |
-
|
82 |
-
|
|
|
|
|
|
|
83 |
{
|
84 |
$this->input = str_replace("\r\n", "\n", $input);
|
85 |
$this->inputLength = strlen($this->input);
|
86 |
}
|
87 |
-
|
88 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
{
|
90 |
-
switch ($
|
91 |
-
case
|
92 |
$this->output .= $this->a;
|
93 |
// fallthrough
|
94 |
-
case
|
95 |
$this->a = $this->b;
|
96 |
-
if ($this->a === "'" || $this->a === '"') {
|
97 |
-
for
|
|
|
98 |
$this->output .= $this->a;
|
99 |
$this->a = $this->get();
|
100 |
-
if ($this->a === $this->b) {
|
101 |
break;
|
102 |
}
|
103 |
if (ord($this->a) <= self::ORD_LF) {
|
104 |
-
throw new
|
|
|
105 |
}
|
|
|
106 |
if ($this->a === '\\') {
|
107 |
$this->output .= $this->a;
|
108 |
$this->a = $this->get();
|
|
|
109 |
}
|
110 |
}
|
111 |
}
|
112 |
// fallthrough
|
113 |
-
case
|
114 |
$this->b = $this->next();
|
115 |
-
if ($this->b === '/') {
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
case '?':
|
133 |
-
$this->output .= $this->a.$this->b;
|
134 |
-
for (;;) {
|
135 |
-
$this->a = $this->get();
|
136 |
-
if ($this->a === '/') {
|
137 |
-
break; // for (;;)
|
138 |
-
} elseif ($this->a === '\\') {
|
139 |
-
$this->output .= $this->a;
|
140 |
-
$this->a = $this->get();
|
141 |
-
} elseif (ord($this->a) <= self::ORD_LF) {
|
142 |
-
throw new JSMinException('Unterminated regular expression literal.');
|
143 |
-
}
|
144 |
-
$this->output .= $this->a;
|
145 |
-
}
|
146 |
-
$this->b = $this->next();
|
147 |
-
break; // switch ($this->a)
|
148 |
-
// end case ?
|
149 |
}
|
|
|
150 |
}
|
151 |
-
|
152 |
-
// end case 3
|
153 |
}
|
154 |
}
|
155 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
protected function get()
|
157 |
{
|
158 |
$c = $this->lookAhead;
|
@@ -162,170 +220,95 @@ class JSMin {
|
|
162 |
$c = $this->input[$this->inputIndex];
|
163 |
$this->inputIndex += 1;
|
164 |
} else {
|
165 |
-
|
166 |
}
|
167 |
}
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
|
|
|
|
173 |
}
|
174 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
protected function isAlphaNum($c)
|
176 |
{
|
177 |
-
return (ord($c) > 126
|
178 |
-
|| $c === '\\'
|
179 |
-
|| preg_match('/^[\w\$]$/', $c) === 1);
|
180 |
}
|
181 |
-
|
182 |
-
protected function
|
183 |
{
|
184 |
-
$
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
}
|
195 |
-
break;
|
196 |
-
case "\n":
|
197 |
-
switch ($this->b) {
|
198 |
-
case '{':
|
199 |
-
case '[':
|
200 |
-
case '(':
|
201 |
-
case '+':
|
202 |
-
case '-':
|
203 |
-
$this->action(1);
|
204 |
-
break;
|
205 |
-
case ' ':
|
206 |
-
$this->action(3);
|
207 |
-
break;
|
208 |
-
default:
|
209 |
-
if ($this->isAlphaNum($this->b)) {
|
210 |
-
$this->action(1);
|
211 |
-
} else {
|
212 |
-
$this->action(2);
|
213 |
-
}
|
214 |
-
}
|
215 |
-
break;
|
216 |
-
default:
|
217 |
-
switch ($this->b) {
|
218 |
-
case ' ':
|
219 |
-
if ($this->isAlphaNum($this->a)) {
|
220 |
-
$this->action(1);
|
221 |
-
break; // switch ($this->b)
|
222 |
-
}
|
223 |
-
$this->action(3);
|
224 |
-
break; // switch ($this->b)
|
225 |
-
case "\n":
|
226 |
-
switch ($this->a) {
|
227 |
-
case '}':
|
228 |
-
case ']':
|
229 |
-
case ')':
|
230 |
-
case '+':
|
231 |
-
case '-':
|
232 |
-
case '"':
|
233 |
-
case "'":
|
234 |
-
$this->action(1);
|
235 |
-
break; // switch ($this->a)
|
236 |
-
default:
|
237 |
-
if ($this->isAlphaNum($this->a)) {
|
238 |
-
$this->action(1);
|
239 |
-
} else {
|
240 |
-
$this->action(3);
|
241 |
-
}
|
242 |
-
}
|
243 |
-
break; // switch ($this->b)
|
244 |
-
default:
|
245 |
-
$this->action(1);
|
246 |
-
break; // switch ($this->b)
|
247 |
-
}
|
248 |
-
// end default
|
249 |
}
|
250 |
}
|
251 |
-
return $this->output;
|
252 |
}
|
253 |
-
|
254 |
-
protected function
|
255 |
{
|
256 |
-
$
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
for (;;) {
|
263 |
-
$get = $this->get();
|
264 |
-
$commentContents .= $get;
|
265 |
-
if (ord($get) <= self::ORD_LF) {
|
266 |
-
return preg_match('/^\\/@(?:cc_on|if|elif|else|end)\\b/', $commentContents)
|
267 |
-
? "/{$commentContents}"
|
268 |
-
: $get;
|
269 |
-
}
|
270 |
-
}
|
271 |
-
case '*':
|
272 |
-
// "/* */" comment
|
273 |
$this->get();
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
// YUI Compressor style
|
282 |
-
return "\n/*" . substr($commentContents, 1) . "*/\n";
|
283 |
-
}
|
284 |
-
return preg_match('/^@(?:cc_on|if|elif|else|end)\\b/', $commentContents)
|
285 |
-
? "/*{$commentContents}*/" // IE conditional compilation
|
286 |
-
: ' ';
|
287 |
-
}
|
288 |
-
break;
|
289 |
-
case null:
|
290 |
-
throw new JSMinException('Unterminated comment.');
|
291 |
-
}
|
292 |
-
$commentContents .= $get;
|
293 |
}
|
294 |
-
|
295 |
-
|
|
|
|
|
296 |
}
|
|
|
297 |
}
|
298 |
-
return $get;
|
299 |
-
}
|
300 |
-
|
301 |
-
protected function peek()
|
302 |
-
{
|
303 |
-
$this->lookAhead = $this->get();
|
304 |
-
return $this->lookAhead;
|
305 |
}
|
306 |
-
|
307 |
-
|
|
|
|
|
|
|
|
|
308 |
{
|
309 |
-
$
|
310 |
-
$
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
$isSpace = (substr($tmp, 1) === $word) && ! $this->isAlphaNum($tmp[0]);
|
318 |
-
}
|
319 |
-
if ($isSpace) {
|
320 |
-
break;
|
321 |
-
}
|
322 |
}
|
323 |
-
return ($length < 2)
|
324 |
-
? true
|
325 |
-
: $isSpace;
|
326 |
}
|
327 |
}
|
328 |
|
329 |
-
class
|
330 |
-
|
331 |
-
}
|
11 |
* comments that begin with "/*!" (for documentation purposes). In the latter case
|
12 |
* newlines are inserted around the comment to enhance readability.
|
13 |
*
|
|
|
|
|
|
|
|
|
|
|
14 |
* PHP 5 or higher is required.
|
15 |
*
|
16 |
* Permission is hereby granted to use this version of the library under the
|
51 |
*/
|
52 |
|
53 |
class JSMin {
|
54 |
+
const ORD_LF = 10;
|
55 |
+
const ORD_SPACE = 32;
|
56 |
+
const ACTION_KEEP_A = 1;
|
57 |
+
const ACTION_DELETE_A = 2;
|
58 |
+
const ACTION_DELETE_A_B = 3;
|
59 |
+
|
60 |
+
protected $a = "\n";
|
61 |
protected $b = '';
|
62 |
protected $input = '';
|
63 |
protected $inputIndex = 0;
|
64 |
protected $inputLength = 0;
|
65 |
protected $lookAhead = null;
|
66 |
protected $output = '';
|
67 |
+
|
68 |
/**
|
69 |
* Minify Javascript
|
70 |
*
|
76 |
$jsmin = new JSMin($js);
|
77 |
return $jsmin->min();
|
78 |
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Setup process
|
82 |
+
*/
|
83 |
+
public function __construct($input)
|
84 |
{
|
85 |
$this->input = str_replace("\r\n", "\n", $input);
|
86 |
$this->inputLength = strlen($this->input);
|
87 |
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Perform minification, return result
|
91 |
+
*/
|
92 |
+
public function min()
|
93 |
+
{
|
94 |
+
if ($this->output !== '') { // min already run
|
95 |
+
return $this->output;
|
96 |
+
}
|
97 |
+
$this->action(self::ACTION_DELETE_A_B);
|
98 |
+
|
99 |
+
while ($this->a !== null) {
|
100 |
+
// determine next command
|
101 |
+
$command = self::ACTION_KEEP_A; // default
|
102 |
+
if ($this->a === ' ') {
|
103 |
+
if (! $this->isAlphaNum($this->b)) {
|
104 |
+
$command = self::ACTION_DELETE_A;
|
105 |
+
}
|
106 |
+
} elseif ($this->a === "\n") {
|
107 |
+
if ($this->b === ' ') {
|
108 |
+
$command = self::ACTION_DELETE_A_B;
|
109 |
+
} elseif (false === strpos('{[(+-', $this->b)
|
110 |
+
&& ! $this->isAlphaNum($this->b)) {
|
111 |
+
$command = self::ACTION_DELETE_A;
|
112 |
+
}
|
113 |
+
} elseif (! $this->isAlphaNum($this->a)) {
|
114 |
+
if ($this->b === ' '
|
115 |
+
|| ($this->b === "\n"
|
116 |
+
&& (false === strpos('}])+-"\'', $this->a)))) {
|
117 |
+
$command = self::ACTION_DELETE_A_B;
|
118 |
+
}
|
119 |
+
}
|
120 |
+
$this->action($command);
|
121 |
+
}
|
122 |
+
$this->output = trim($this->output);
|
123 |
+
return $this->output;
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* ACTION_KEEP_A = Output A. Copy B to A. Get the next B.
|
128 |
+
* ACTION_DELETE_A = Copy B to A. Get the next B.
|
129 |
+
* ACTION_DELETE_A_B = Get the next B.
|
130 |
+
*/
|
131 |
+
protected function action($command)
|
132 |
{
|
133 |
+
switch ($command) {
|
134 |
+
case self::ACTION_KEEP_A:
|
135 |
$this->output .= $this->a;
|
136 |
// fallthrough
|
137 |
+
case self::ACTION_DELETE_A:
|
138 |
$this->a = $this->b;
|
139 |
+
if ($this->a === "'" || $this->a === '"') { // string literal
|
140 |
+
$str = $this->a; // in case needed for exception
|
141 |
+
while (true) {
|
142 |
$this->output .= $this->a;
|
143 |
$this->a = $this->get();
|
144 |
+
if ($this->a === $this->b) { // end quote
|
145 |
break;
|
146 |
}
|
147 |
if (ord($this->a) <= self::ORD_LF) {
|
148 |
+
throw new JSMin_UnterminatedStringException(
|
149 |
+
'Unterminated String: ' . var_export($str, true));
|
150 |
}
|
151 |
+
$str .= $this->a;
|
152 |
if ($this->a === '\\') {
|
153 |
$this->output .= $this->a;
|
154 |
$this->a = $this->get();
|
155 |
+
$str .= $this->a;
|
156 |
}
|
157 |
}
|
158 |
}
|
159 |
// fallthrough
|
160 |
+
case self::ACTION_DELETE_A_B:
|
161 |
$this->b = $this->next();
|
162 |
+
if ($this->b === '/' && $this->isRegexpLiteral()) { // RegExp literal
|
163 |
+
$this->output .= $this->a . $this->b;
|
164 |
+
$pattern = '/'; // in case needed for exception
|
165 |
+
while (true) {
|
166 |
+
$this->a = $this->get();
|
167 |
+
$pattern .= $this->a;
|
168 |
+
if ($this->a === '/') { // end pattern
|
169 |
+
break; // while (true)
|
170 |
+
} elseif ($this->a === '\\') {
|
171 |
+
$this->output .= $this->a;
|
172 |
+
$this->a = $this->get();
|
173 |
+
$pattern .= $this->a;
|
174 |
+
} elseif (ord($this->a) <= self::ORD_LF) {
|
175 |
+
throw new JSMin_UnterminatedRegExpException(
|
176 |
+
'Unterminated RegExp: '. var_export($pattern, true));
|
177 |
+
}
|
178 |
+
$this->output .= $this->a;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
179 |
}
|
180 |
+
$this->b = $this->next();
|
181 |
}
|
182 |
+
// end case ACTION_DELETE_A_B
|
|
|
183 |
}
|
184 |
}
|
185 |
+
|
186 |
+
protected function isRegexpLiteral()
|
187 |
+
{
|
188 |
+
if (false !== strpos("\n{;(,=:[!&|?", $this->a)) { // we aren't dividing
|
189 |
+
return true;
|
190 |
+
}
|
191 |
+
if (' ' === $this->a) {
|
192 |
+
$length = strlen($this->output);
|
193 |
+
if ($length < 2) { // weird edge case
|
194 |
+
return true;
|
195 |
+
}
|
196 |
+
// you can't divide a keyword
|
197 |
+
if (preg_match('/(?:case|else|in|return|typeof)$/', $this->output, $m)) {
|
198 |
+
if ($this->output === $m[0]) { // odd but could happen
|
199 |
+
return true;
|
200 |
+
}
|
201 |
+
// make sure it's a keyword, not end of an identifier
|
202 |
+
$charBeforeKeyword = substr($this->output, $length - strlen($m[0]) - 1, 1);
|
203 |
+
if (! $this->isAlphaNum($charBeforeKeyword)) {
|
204 |
+
return true;
|
205 |
+
}
|
206 |
+
}
|
207 |
+
}
|
208 |
+
return false;
|
209 |
+
}
|
210 |
+
|
211 |
+
/**
|
212 |
+
* Get next char. Convert ctrl char to space.
|
213 |
+
*/
|
214 |
protected function get()
|
215 |
{
|
216 |
$c = $this->lookAhead;
|
220 |
$c = $this->input[$this->inputIndex];
|
221 |
$this->inputIndex += 1;
|
222 |
} else {
|
223 |
+
return null;
|
224 |
}
|
225 |
}
|
226 |
+
if ($c === "\r" || $c === "\n") {
|
227 |
+
return "\n";
|
228 |
+
}
|
229 |
+
if (ord($c) < self::ORD_SPACE) { // control char
|
230 |
+
return ' ';
|
231 |
+
}
|
232 |
+
return $c;
|
233 |
}
|
234 |
+
|
235 |
+
/**
|
236 |
+
* Get next char. If is ctrl character, translate to a space or newline.
|
237 |
+
*/
|
238 |
+
protected function peek()
|
239 |
+
{
|
240 |
+
$this->lookAhead = $this->get();
|
241 |
+
return $this->lookAhead;
|
242 |
+
}
|
243 |
+
|
244 |
+
/**
|
245 |
+
* Is $c a letter, digit, underscore, dollar sign, escape, or non-ASCII?
|
246 |
+
*/
|
247 |
protected function isAlphaNum($c)
|
248 |
{
|
249 |
+
return (preg_match('/^[0-9a-zA-Z_\\$\\\\]$/', $c) || ord($c) > 126);
|
|
|
|
|
250 |
}
|
251 |
+
|
252 |
+
protected function singleLineComment()
|
253 |
{
|
254 |
+
$comment = '';
|
255 |
+
while (true) {
|
256 |
+
$get = $this->get();
|
257 |
+
$comment .= $get;
|
258 |
+
if (ord($get) <= self::ORD_LF) { // EOL reached
|
259 |
+
// if IE conditional comment
|
260 |
+
if (preg_match('/^\\/@(?:cc_on|if|elif|else|end)\\b/', $comment)) {
|
261 |
+
return "/{$comment}";
|
262 |
+
}
|
263 |
+
return $get;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
264 |
}
|
265 |
}
|
|
|
266 |
}
|
267 |
+
|
268 |
+
protected function multipleLineComment()
|
269 |
{
|
270 |
+
$this->get();
|
271 |
+
$comment = '';
|
272 |
+
while (true) {
|
273 |
+
$get = $this->get();
|
274 |
+
if ($get === '*') {
|
275 |
+
if ($this->peek() === '/') { // end of comment reached
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
276 |
$this->get();
|
277 |
+
// if comment preserved by YUI Compressor
|
278 |
+
if (0 === strpos($comment, '!')) {
|
279 |
+
return "\n/*" . substr($comment, 1) . "*/\n";
|
280 |
+
}
|
281 |
+
// if IE conditional comment
|
282 |
+
if (preg_match('/^@(?:cc_on|if|elif|else|end)\\b/', $comment)) {
|
283 |
+
return "/*{$comment}*/";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
284 |
}
|
285 |
+
return ' ';
|
286 |
+
}
|
287 |
+
} elseif ($get === null) {
|
288 |
+
throw new JSMin_UnterminatedCommentException('Unterminated Comment: ' . var_export('/*' . $comment, true));
|
289 |
}
|
290 |
+
$comment .= $get;
|
291 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
292 |
}
|
293 |
+
|
294 |
+
/**
|
295 |
+
* Get the next character, skipping over comments.
|
296 |
+
* Some comments may be preserved.
|
297 |
+
*/
|
298 |
+
protected function next()
|
299 |
{
|
300 |
+
$get = $this->get();
|
301 |
+
if ($get !== '/') {
|
302 |
+
return $get;
|
303 |
+
}
|
304 |
+
switch ($this->peek()) {
|
305 |
+
case '/': return $this->singleLineComment();
|
306 |
+
case '*': return $this->multipleLineComment();
|
307 |
+
default: return $get;
|
|
|
|
|
|
|
|
|
|
|
308 |
}
|
|
|
|
|
|
|
309 |
}
|
310 |
}
|
311 |
|
312 |
+
class JSMin_UnterminatedStringException extends Exception {}
|
313 |
+
class JSMin_UnterminatedCommentException extends Exception {}
|
314 |
+
class JSMin_UnterminatedRegExpException extends Exception {}
|
lib/minify/lib/JSMinPlus.php
ADDED
@@ -0,0 +1,1872 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* JSMinPlus version 1.1
|
5 |
+
*
|
6 |
+
* Minifies a javascript file using a javascript parser
|
7 |
+
*
|
8 |
+
* This implements a PHP port of Brendan Eich's Narcissus open source javascript engine (in javascript)
|
9 |
+
* References: http://en.wikipedia.org/wiki/Narcissus_(JavaScript_engine)
|
10 |
+
* Narcissus sourcecode: http://mxr.mozilla.org/mozilla/source/js/narcissus/
|
11 |
+
* JSMinPlus weblog: http://crisp.tweakblogs.net/blog/cat/716
|
12 |
+
*
|
13 |
+
* Tino Zijdel <crisp@tweakers.net>
|
14 |
+
*
|
15 |
+
* Usage: $minified = JSMinPlus::minify($script [, $filename])
|
16 |
+
*
|
17 |
+
* Versionlog (see also changelog.txt):
|
18 |
+
* 12-04-2009 - some small bugfixes and performance improvements
|
19 |
+
* 09-04-2009 - initial open sourced version 1.0
|
20 |
+
*
|
21 |
+
* Latest version of this script: http://files.tweakers.net/jsminplus/jsminplus.zip
|
22 |
+
*
|
23 |
+
*/
|
24 |
+
|
25 |
+
/* ***** BEGIN LICENSE BLOCK *****
|
26 |
+
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
27 |
+
*
|
28 |
+
* The contents of this file are subject to the Mozilla Public License Version
|
29 |
+
* 1.1 (the "License"); you may not use this file except in compliance with
|
30 |
+
* the License. You may obtain a copy of the License at
|
31 |
+
* http://www.mozilla.org/MPL/
|
32 |
+
*
|
33 |
+
* Software distributed under the License is distributed on an "AS IS" basis,
|
34 |
+
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
35 |
+
* for the specific language governing rights and limitations under the
|
36 |
+
* License.
|
37 |
+
*
|
38 |
+
* The Original Code is the Narcissus JavaScript engine.
|
39 |
+
*
|
40 |
+
* The Initial Developer of the Original Code is
|
41 |
+
* Brendan Eich <brendan@mozilla.org>.
|
42 |
+
* Portions created by the Initial Developer are Copyright (C) 2004
|
43 |
+
* the Initial Developer. All Rights Reserved.
|
44 |
+
*
|
45 |
+
* Contributor(s): Tino Zijdel <crisp@tweakers.net>
|
46 |
+
* PHP port, modifications and minifier routine are (C) 2009
|
47 |
+
*
|
48 |
+
* Alternatively, the contents of this file may be used under the terms of
|
49 |
+
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
50 |
+
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
51 |
+
* in which case the provisions of the GPL or the LGPL are applicable instead
|
52 |
+
* of those above. If you wish to allow use of your version of this file only
|
53 |
+
* under the terms of either the GPL or the LGPL, and not to allow others to
|
54 |
+
* use your version of this file under the terms of the MPL, indicate your
|
55 |
+
* decision by deleting the provisions above and replace them with the notice
|
56 |
+
* and other provisions required by the GPL or the LGPL. If you do not delete
|
57 |
+
* the provisions above, a recipient may use your version of this file under
|
58 |
+
* the terms of any one of the MPL, the GPL or the LGPL.
|
59 |
+
*
|
60 |
+
* ***** END LICENSE BLOCK ***** */
|
61 |
+
|
62 |
+
define('TOKEN_END', 1);
|
63 |
+
define('TOKEN_NUMBER', 2);
|
64 |
+
define('TOKEN_IDENTIFIER', 3);
|
65 |
+
define('TOKEN_STRING', 4);
|
66 |
+
define('TOKEN_REGEXP', 5);
|
67 |
+
define('TOKEN_NEWLINE', 6);
|
68 |
+
define('TOKEN_CONDCOMMENT_MULTILINE', 7);
|
69 |
+
|
70 |
+
define('JS_SCRIPT', 100);
|
71 |
+
define('JS_BLOCK', 101);
|
72 |
+
define('JS_LABEL', 102);
|
73 |
+
define('JS_FOR_IN', 103);
|
74 |
+
define('JS_CALL', 104);
|
75 |
+
define('JS_NEW_WITH_ARGS', 105);
|
76 |
+
define('JS_INDEX', 106);
|
77 |
+
define('JS_ARRAY_INIT', 107);
|
78 |
+
define('JS_OBJECT_INIT', 108);
|
79 |
+
define('JS_PROPERTY_INIT', 109);
|
80 |
+
define('JS_GETTER', 110);
|
81 |
+
define('JS_SETTER', 111);
|
82 |
+
define('JS_GROUP', 112);
|
83 |
+
define('JS_LIST', 113);
|
84 |
+
|
85 |
+
define('DECLARED_FORM', 0);
|
86 |
+
define('EXPRESSED_FORM', 1);
|
87 |
+
define('STATEMENT_FORM', 2);
|
88 |
+
|
89 |
+
class JSMinPlus
|
90 |
+
{
|
91 |
+
private $parser;
|
92 |
+
private $reserved = array(
|
93 |
+
'break', 'case', 'catch', 'continue', 'default', 'delete', 'do',
|
94 |
+
'else', 'finally', 'for', 'function', 'if', 'in', 'instanceof',
|
95 |
+
'new', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'var',
|
96 |
+
'void', 'while', 'with',
|
97 |
+
// Words reserved for future use
|
98 |
+
'abstract', 'boolean', 'byte', 'char', 'class', 'const', 'debugger',
|
99 |
+
'double', 'enum', 'export', 'extends', 'final', 'float', 'goto',
|
100 |
+
'implements', 'import', 'int', 'interface', 'long', 'native',
|
101 |
+
'package', 'private', 'protected', 'public', 'short', 'static',
|
102 |
+
'super', 'synchronized', 'throws', 'transient', 'volatile',
|
103 |
+
// These are not reserved, but should be taken into account
|
104 |
+
// in isValidIdentifier (See jslint source code)
|
105 |
+
'arguments', 'eval', 'true', 'false', 'Infinity', 'NaN', 'null', 'undefined'
|
106 |
+
);
|
107 |
+
|
108 |
+
private function __construct()
|
109 |
+
{
|
110 |
+
$this->parser = new JSParser();
|
111 |
+
}
|
112 |
+
|
113 |
+
public static function minify($js, $filename='')
|
114 |
+
{
|
115 |
+
static $instance;
|
116 |
+
|
117 |
+
// this is a singleton
|
118 |
+
if(!$instance)
|
119 |
+
$instance = new JSMinPlus();
|
120 |
+
|
121 |
+
return $instance->min($js, $filename);
|
122 |
+
}
|
123 |
+
|
124 |
+
private function min($js, $filename)
|
125 |
+
{
|
126 |
+
try
|
127 |
+
{
|
128 |
+
$n = $this->parser->parse($js, $filename, 1);
|
129 |
+
return $this->parseTree($n);
|
130 |
+
}
|
131 |
+
catch(Exception $e)
|
132 |
+
{
|
133 |
+
echo $e->getMessage() . "\n";
|
134 |
+
}
|
135 |
+
|
136 |
+
return false;
|
137 |
+
}
|
138 |
+
|
139 |
+
private function parseTree($n, $noBlockGrouping = false)
|
140 |
+
{
|
141 |
+
$s = '';
|
142 |
+
|
143 |
+
switch ($n->type)
|
144 |
+
{
|
145 |
+
case KEYWORD_FUNCTION:
|
146 |
+
$s .= 'function' . ($n->name ? ' ' . $n->name : '') . '(';
|
147 |
+
$params = $n->params;
|
148 |
+
for ($i = 0, $j = count($params); $i < $j; $i++)
|
149 |
+
$s .= ($i ? ',' : '') . $params[$i];
|
150 |
+
$s .= '){' . $this->parseTree($n->body, true) . '}';
|
151 |
+
break;
|
152 |
+
|
153 |
+
case JS_SCRIPT:
|
154 |
+
// we do nothing with funDecls or varDecls
|
155 |
+
$noBlockGrouping = true;
|
156 |
+
// fall through
|
157 |
+
case JS_BLOCK:
|
158 |
+
$childs = $n->treeNodes;
|
159 |
+
for ($c = 0, $i = 0, $j = count($childs); $i < $j; $i++)
|
160 |
+
{
|
161 |
+
$t = $this->parseTree($childs[$i]);
|
162 |
+
if (strlen($t))
|
163 |
+
{
|
164 |
+
if ($c)
|
165 |
+
{
|
166 |
+
if ($childs[$i]->type == KEYWORD_FUNCTION && $childs[$i]->functionForm == DECLARED_FORM)
|
167 |
+
$s .= "\n"; // put declared functions on a new line
|
168 |
+
else
|
169 |
+
$s .= ';';
|
170 |
+
}
|
171 |
+
|
172 |
+
$s .= $t;
|
173 |
+
|
174 |
+
$c++;
|
175 |
+
}
|
176 |
+
}
|
177 |
+
|
178 |
+
if ($c > 1 && !$noBlockGrouping)
|
179 |
+
{
|
180 |
+
$s = '{' . $s . '}';
|
181 |
+
}
|
182 |
+
break;
|
183 |
+
|
184 |
+
case KEYWORD_IF:
|
185 |
+
$s = 'if(' . $this->parseTree($n->condition) . ')';
|
186 |
+
$thenPart = $this->parseTree($n->thenPart);
|
187 |
+
$elsePart = $n->elsePart ? $this->parseTree($n->elsePart) : null;
|
188 |
+
|
189 |
+
// quite a rancid hack to see if we should enclose the thenpart in brackets
|
190 |
+
if ($thenPart[0] != '{')
|
191 |
+
{
|
192 |
+
if (strpos($thenPart, 'if(') !== false)
|
193 |
+
$thenPart = '{' . $thenPart . '}';
|
194 |
+
elseif ($elsePart)
|
195 |
+
$thenPart .= ';';
|
196 |
+
}
|
197 |
+
|
198 |
+
$s .= $thenPart;
|
199 |
+
|
200 |
+
if ($elsePart)
|
201 |
+
{
|
202 |
+
$s .= 'else';
|
203 |
+
|
204 |
+
if ($elsePart[0] != '{')
|
205 |
+
$s .= ' ';
|
206 |
+
|
207 |
+
$s .= $elsePart;
|
208 |
+
}
|
209 |
+
break;
|
210 |
+
|
211 |
+
case KEYWORD_SWITCH:
|
212 |
+
$s = 'switch(' . $this->parseTree($n->discriminant) . '){';
|
213 |
+
$cases = $n->cases;
|
214 |
+
for ($i = 0, $j = count($cases); $i < $j; $i++)
|
215 |
+
{
|
216 |
+
$case = $cases[$i];
|
217 |
+
if ($case->type == KEYWORD_CASE)
|
218 |
+
$s .= 'case' . ($case->caseLabel->type != TOKEN_STRING ? ' ' : '') . $this->parseTree($case->caseLabel) . ':';
|
219 |
+
else
|
220 |
+
$s .= 'default:';
|
221 |
+
|
222 |
+
$statement = $this->parseTree($case->statements);
|
223 |
+
if ($statement)
|
224 |
+
$s .= $statement . ';';
|
225 |
+
}
|
226 |
+
$s = rtrim($s, ';') . '}';
|
227 |
+
break;
|
228 |
+
|
229 |
+
case KEYWORD_FOR:
|
230 |
+
$s = 'for(' . ($n->setup ? $this->parseTree($n->setup) : '')
|
231 |
+
. ';' . ($n->condition ? $this->parseTree($n->condition) : '')
|
232 |
+
. ';' . ($n->update ? $this->parseTree($n->update) : '') . ')'
|
233 |
+
. $this->parseTree($n->body);
|
234 |
+
break;
|
235 |
+
|
236 |
+
case KEYWORD_WHILE:
|
237 |
+
$s = 'while(' . $this->parseTree($n->condition) . ')' . $this->parseTree($n->body);
|
238 |
+
break;
|
239 |
+
|
240 |
+
case JS_FOR_IN:
|
241 |
+
$s = 'for(' . ($n->varDecl ? $this->parseTree($n->varDecl) : $this->parseTree($n->iterator)) . ' in ' . $this->parseTree($n->object) . ')' . $this->parseTree($n->body);
|
242 |
+
break;
|
243 |
+
|
244 |
+
case KEYWORD_DO:
|
245 |
+
$s = 'do{' . $this->parseTree($n->body, true) . '}while(' . $this->parseTree($n->condition) . ')';
|
246 |
+
break;
|
247 |
+
|
248 |
+
case KEYWORD_BREAK:
|
249 |
+
case KEYWORD_CONTINUE:
|
250 |
+
$s = $n->value . ($n->label ? ' ' . $n->label : '');
|
251 |
+
break;
|
252 |
+
|
253 |
+
case KEYWORD_TRY:
|
254 |
+
$s = 'try{' . $this->parseTree($n->tryBlock, true) . '}';
|
255 |
+
$catchClauses = $n->catchClauses;
|
256 |
+
for ($i = 0, $j = count($catchClauses); $i < $j; $i++)
|
257 |
+
{
|
258 |
+
$t = $catchClauses[$i];
|
259 |
+
$s .= 'catch(' . $t->varName . ($t->guard ? ' if ' . $this->parseTree($t->guard) : '') . '){' . $this->parseTree($t->block, true) . '}';
|
260 |
+
}
|
261 |
+
if ($n->finallyBlock)
|
262 |
+
$s .= 'finally{' . $this->parseTree($n->finallyBlock, true) . '}';
|
263 |
+
break;
|
264 |
+
|
265 |
+
case KEYWORD_THROW:
|
266 |
+
$s = 'throw ' . $this->parseTree($n->exception);
|
267 |
+
break;
|
268 |
+
|
269 |
+
case KEYWORD_RETURN:
|
270 |
+
$s = 'return' . ($n->value ? ' ' . $this->parseTree($n->value) : '');
|
271 |
+
break;
|
272 |
+
|
273 |
+
case KEYWORD_WITH:
|
274 |
+
$s = 'with(' . $this->parseTree($n->object) . ')' . $this->parseTree($n->body);
|
275 |
+
break;
|
276 |
+
|
277 |
+
case KEYWORD_VAR:
|
278 |
+
case KEYWORD_CONST:
|
279 |
+
$s = $n->value . ' ';
|
280 |
+
$childs = $n->treeNodes;
|
281 |
+
for ($i = 0, $j = count($childs); $i < $j; $i++)
|
282 |
+
{
|
283 |
+
$t = $childs[$i];
|
284 |
+
$s .= ($i ? ',' : '') . $t->name;
|
285 |
+
$u = $t->initializer;
|
286 |
+
if ($u)
|
287 |
+
$s .= '=' . $this->parseTree($u);
|
288 |
+
}
|
289 |
+
break;
|
290 |
+
|
291 |
+
case KEYWORD_DEBUGGER:
|
292 |
+
throw new Exception('NOT IMPLEMENTED: DEBUGGER');
|
293 |
+
break;
|
294 |
+
|
295 |
+
case TOKEN_CONDCOMMENT_MULTILINE:
|
296 |
+
$s = $n->value . ' ';
|
297 |
+
$childs = $n->treeNodes;
|
298 |
+
for ($i = 0, $j = count($childs); $i < $j; $i++)
|
299 |
+
$s .= $this->parseTree($childs[$i]);
|
300 |
+
break;
|
301 |
+
|
302 |
+
case OP_SEMICOLON:
|
303 |
+
if ($expression = $n->expression)
|
304 |
+
$s = $this->parseTree($expression);
|
305 |
+
break;
|
306 |
+
|
307 |
+
case JS_LABEL:
|
308 |
+
$s = $n->label . ':' . $this->parseTree($n->statement);
|
309 |
+
break;
|
310 |
+
|
311 |
+
case OP_COMMA:
|
312 |
+
$childs = $n->treeNodes;
|
313 |
+
for ($i = 0, $j = count($childs); $i < $j; $i++)
|
314 |
+
$s .= ($i ? ',' : '') . $this->parseTree($childs[$i]);
|
315 |
+
break;
|
316 |
+
|
317 |
+
case OP_ASSIGN:
|
318 |
+
$s = $this->parseTree($n->treeNodes[0]) . $n->value . $this->parseTree($n->treeNodes[1]);
|
319 |
+
break;
|
320 |
+
|
321 |
+
case OP_HOOK:
|
322 |
+
$s = $this->parseTree($n->treeNodes[0]) . '?' . $this->parseTree($n->treeNodes[1]) . ':' . $this->parseTree($n->treeNodes[2]);
|
323 |
+
break;
|
324 |
+
|
325 |
+
case OP_OR: case OP_AND:
|
326 |
+
case OP_BITWISE_OR: case OP_BITWISE_XOR: case OP_BITWISE_AND:
|
327 |
+
case OP_EQ: case OP_NE: case OP_STRICT_EQ: case OP_STRICT_NE:
|
328 |
+
case OP_LT: case OP_LE: case OP_GE: case OP_GT:
|
329 |
+
case OP_LSH: case OP_RSH: case OP_URSH:
|
330 |
+
case OP_MUL: case OP_DIV: case OP_MOD:
|
331 |
+
$s = $this->parseTree($n->treeNodes[0]) . $n->type . $this->parseTree($n->treeNodes[1]);
|
332 |
+
break;
|
333 |
+
|
334 |
+
case OP_PLUS:
|
335 |
+
case OP_MINUS:
|
336 |
+
$s = $this->parseTree($n->treeNodes[0]) . $n->type;
|
337 |
+
$nextTokenType = $n->treeNodes[1]->type;
|
338 |
+
if ( $nextTokenType == OP_PLUS || $nextTokenType == OP_MINUS ||
|
339 |
+
$nextTokenType == OP_INCREMENT || $nextTokenType == OP_DECREMENT ||
|
340 |
+
$nextTokenType == OP_UNARY_PLUS || $nextTokenType == OP_UNARY_MINUS
|
341 |
+
)
|
342 |
+
$s .= ' ';
|
343 |
+
$s .= $this->parseTree($n->treeNodes[1]);
|
344 |
+
break;
|
345 |
+
|
346 |
+
case KEYWORD_IN:
|
347 |
+
$s = $this->parseTree($n->treeNodes[0]) . ' in ' . $this->parseTree($n->treeNodes[1]);
|
348 |
+
break;
|
349 |
+
|
350 |
+
case KEYWORD_INSTANCEOF:
|
351 |
+
$s = $this->parseTree($n->treeNodes[0]) . ' instanceof ' . $this->parseTree($n->treeNodes[1]);
|
352 |
+
break;
|
353 |
+
|
354 |
+
case KEYWORD_DELETE:
|
355 |
+
$s = 'delete ' . $this->parseTree($n->treeNodes[0]);
|
356 |
+
break;
|
357 |
+
|
358 |
+
case KEYWORD_VOID:
|
359 |
+
$s = 'void(' . $this->parseTree($n->treeNodes[0]) . ')';
|
360 |
+
break;
|
361 |
+
|
362 |
+
case KEYWORD_TYPEOF:
|
363 |
+
$s = 'typeof ' . $this->parseTree($n->treeNodes[0]);
|
364 |
+
break;
|
365 |
+
|
366 |
+
case OP_NOT:
|
367 |
+
case OP_BITWISE_NOT:
|
368 |
+
case OP_UNARY_PLUS:
|
369 |
+
case OP_UNARY_MINUS:
|
370 |
+
$s = $n->value . $this->parseTree($n->treeNodes[0]);
|
371 |
+
break;
|
372 |
+
|
373 |
+
case OP_INCREMENT:
|
374 |
+
case OP_DECREMENT:
|
375 |
+
if ($n->postfix)
|
376 |
+
$s = $this->parseTree($n->treeNodes[0]) . $n->value;
|
377 |
+
else
|
378 |
+
$s = $n->value . $this->parseTree($n->treeNodes[0]);
|
379 |
+
break;
|
380 |
+
|
381 |
+
case OP_DOT:
|
382 |
+
$s = $this->parseTree($n->treeNodes[0]) . '.' . $this->parseTree($n->treeNodes[1]);
|
383 |
+
break;
|
384 |
+
|
385 |
+
case JS_INDEX:
|
386 |
+
$s = $this->parseTree($n->treeNodes[0]);
|
387 |
+
// See if we can replace named index with a dot saving 3 bytes
|
388 |
+
if ( $n->treeNodes[0]->type == TOKEN_IDENTIFIER &&
|
389 |
+
$n->treeNodes[1]->type == TOKEN_STRING &&
|
390 |
+
$this->isValidIdentifier(substr($n->treeNodes[1]->value, 1, -1))
|
391 |
+
)
|
392 |
+
$s .= '.' . substr($n->treeNodes[1]->value, 1, -1);
|
393 |
+
else
|
394 |
+
$s .= '[' . $this->parseTree($n->treeNodes[1]) . ']';
|
395 |
+
break;
|
396 |
+
|
397 |
+
case JS_LIST:
|
398 |
+
$childs = $n->treeNodes;
|
399 |
+
for ($i = 0, $j = count($childs); $i < $j; $i++)
|
400 |
+
$s .= ($i ? ',' : '') . $this->parseTree($childs[$i]);
|
401 |
+
break;
|
402 |
+
|
403 |
+
case JS_CALL:
|
404 |
+
$s = $this->parseTree($n->treeNodes[0]) . '(' . $this->parseTree($n->treeNodes[1]) . ')';
|
405 |
+
break;
|
406 |
+
|
407 |
+
case KEYWORD_NEW:
|
408 |
+
case JS_NEW_WITH_ARGS:
|
409 |
+
$s = 'new ' . $this->parseTree($n->treeNodes[0]) . '(' . ($n->type == JS_NEW_WITH_ARGS ? $this->parseTree($n->treeNodes[1]) : '') . ')';
|
410 |
+
break;
|
411 |
+
|
412 |
+
case JS_ARRAY_INIT:
|
413 |
+
$s = '[';
|
414 |
+
$childs = $n->treeNodes;
|
415 |
+
for ($i = 0, $j = count($childs); $i < $j; $i++)
|
416 |
+
{
|
417 |
+
$s .= ($i ? ',' : '') . $this->parseTree($childs[$i]);
|
418 |
+
}
|
419 |
+
$s .= ']';
|
420 |
+
break;
|
421 |
+
|
422 |
+
case JS_OBJECT_INIT:
|
423 |
+
$s = '{';
|
424 |
+
$childs = $n->treeNodes;
|
425 |
+
for ($i = 0, $j = count($childs); $i < $j; $i++)
|
426 |
+
{
|
427 |
+
$t = $childs[$i];
|
428 |
+
if ($i)
|
429 |
+
$s .= ',';
|
430 |
+
if ($t->type == JS_PROPERTY_INIT)
|
431 |
+
{
|
432 |
+
// Ditch the quotes when the index is a valid identifier
|
433 |
+
if ( $t->treeNodes[0]->type == TOKEN_STRING &&
|
434 |
+
$this->isValidIdentifier(substr($t->treeNodes[0]->value, 1, -1))
|
435 |
+
)
|
436 |
+
$s .= substr($t->treeNodes[0]->value, 1, -1);
|
437 |
+
else
|
438 |
+
$s .= $t->treeNodes[0]->value;
|
439 |
+
|
440 |
+
$s .= ':' . $this->parseTree($t->treeNodes[1]);
|
441 |
+
}
|
442 |
+
else
|
443 |
+
{
|
444 |
+
$s .= $t->type == JS_GETTER ? 'get' : 'set';
|
445 |
+
$s .= ' ' . $t->name . '(';
|
446 |
+
$params = $t->params;
|
447 |
+
for ($i = 0, $j = count($params); $i < $j; $i++)
|
448 |
+
$s .= ($i ? ',' : '') . $params[$i];
|
449 |
+
$s .= '){' . $this->parseTree($t->body, true) . '}';
|
450 |
+
}
|
451 |
+
}
|
452 |
+
$s .= '}';
|
453 |
+
break;
|
454 |
+
|
455 |
+
case KEYWORD_NULL: case KEYWORD_THIS: case KEYWORD_TRUE: case KEYWORD_FALSE:
|
456 |
+
case TOKEN_IDENTIFIER: case TOKEN_NUMBER: case TOKEN_STRING: case TOKEN_REGEXP:
|
457 |
+
$s = $n->value;
|
458 |
+
break;
|
459 |
+
|
460 |
+
case JS_GROUP:
|
461 |
+
$s = '(' . $this->parseTree($n->treeNodes[0]) . ')';
|
462 |
+
break;
|
463 |
+
|
464 |
+
default:
|
465 |
+
throw new Exception('UNKNOWN TOKEN TYPE: ' . $n->type);
|
466 |
+
}
|
467 |
+
|
468 |
+
return $s;
|
469 |
+
}
|
470 |
+
|
471 |
+
private function isValidIdentifier($string)
|
472 |
+
{
|
473 |
+
return preg_match('/^[a-zA-Z_][a-zA-Z0-9_]*$/', $string) && !in_array($string, $this->reserved);
|
474 |
+
}
|
475 |
+
}
|
476 |
+
|
477 |
+
class JSParser
|
478 |
+
{
|
479 |
+
private $t;
|
480 |
+
|
481 |
+
private $opPrecedence = array(
|
482 |
+
';' => 0,
|
483 |
+
',' => 1,
|
484 |
+
'=' => 2, '?' => 2, ':' => 2,
|
485 |
+
// The above all have to have the same precedence, see bug 330975.
|
486 |
+
'||' => 4,
|
487 |
+
'&&' => 5,
|
488 |
+
'|' => 6,
|
489 |
+
'^' => 7,
|
490 |
+
'&' => 8,
|
491 |
+
'==' => 9, '!=' => 9, '===' => 9, '!==' => 9,
|
492 |
+
'<' => 10, '<=' => 10, '>=' => 10, '>' => 10, 'in' => 10, 'instanceof' => 10,
|
493 |
+
'<<' => 11, '>>' => 11, '>>>' => 11,
|
494 |
+
'+' => 12, '-' => 12,
|
495 |
+
'*' => 13, '/' => 13, '%' => 13,
|
496 |
+
'delete' => 14, 'void' => 14, 'typeof' => 14,
|
497 |
+
'!' => 14, '~' => 14, 'U+' => 14, 'U-' => 14,
|
498 |
+
'++' => 15, '--' => 15,
|
499 |
+
'new' => 16,
|
500 |
+
'.' => 17,
|
501 |
+
JS_NEW_WITH_ARGS => 0, JS_INDEX => 0, JS_CALL => 0,
|
502 |
+
JS_ARRAY_INIT => 0, JS_OBJECT_INIT => 0, JS_GROUP => 0
|
503 |
+
);
|
504 |
+
|
505 |
+
private $opArity = array(
|
506 |
+
',' => -2,
|
507 |
+
'=' => 2,
|
508 |
+
'?' => 3,
|
509 |
+
'||' => 2,
|
510 |
+
'&&' => 2,
|
511 |
+
'|' => 2,
|
512 |
+
'^' => 2,
|
513 |
+
'&' => 2,
|
514 |
+
'==' => 2, '!=' => 2, '===' => 2, '!==' => 2,
|
515 |
+
'<' => 2, '<=' => 2, '>=' => 2, '>' => 2, 'in' => 2, 'instanceof' => 2,
|
516 |
+
'<<' => 2, '>>' => 2, '>>>' => 2,
|
517 |
+
'+' => 2, '-' => 2,
|
518 |
+
'*' => 2, '/' => 2, '%' => 2,
|
519 |
+
'delete' => 1, 'void' => 1, 'typeof' => 1,
|
520 |
+
'!' => 1, '~' => 1, 'U+' => 1, 'U-' => 1,
|
521 |
+
'++' => 1, '--' => 1,
|
522 |
+
'new' => 1,
|
523 |
+
'.' => 2,
|
524 |
+
JS_NEW_WITH_ARGS => 2, JS_INDEX => 2, JS_CALL => 2,
|
525 |
+
JS_ARRAY_INIT => 1, JS_OBJECT_INIT => 1, JS_GROUP => 1,
|
526 |
+
TOKEN_CONDCOMMENT_MULTILINE => 1
|
527 |
+
);
|
528 |
+
|
529 |
+
public function __construct()
|
530 |
+
{
|
531 |
+
$this->t = new JSTokenizer();
|
532 |
+
}
|
533 |
+
|
534 |
+
public function parse($s, $f, $l)
|
535 |
+
{
|
536 |
+
// initialize tokenizer
|
537 |
+
$this->t->init($s, $f, $l);
|
538 |
+
|
539 |
+
$x = new JSCompilerContext(false);
|
540 |
+
$n = $this->Script($x);
|
541 |
+
if (!$this->t->isDone())
|
542 |
+
throw $this->t->newSyntaxError('Syntax error');
|
543 |
+
|
544 |
+
return $n;
|
545 |
+
}
|
546 |
+
|
547 |
+
private function Script($x)
|
548 |
+
{
|
549 |
+
$n = $this->Statements($x);
|
550 |
+
$n->type = JS_SCRIPT;
|
551 |
+
$n->funDecls = $x->funDecls;
|
552 |
+
$n->varDecls = $x->varDecls;
|
553 |
+
|
554 |
+
return $n;
|
555 |
+
}
|
556 |
+
|
557 |
+
private function Statements($x)
|
558 |
+
{
|
559 |
+
$n = new JSNode($this->t, JS_BLOCK);
|
560 |
+
array_push($x->stmtStack, $n);
|
561 |
+
|
562 |
+
while (!$this->t->isDone() && $this->t->peek() != OP_RIGHT_CURLY)
|
563 |
+
$n->addNode($this->Statement($x));
|
564 |
+
|
565 |
+
array_pop($x->stmtStack);
|
566 |
+
|
567 |
+
return $n;
|
568 |
+
}
|
569 |
+
|
570 |
+
private function Block($x)
|
571 |
+
{
|
572 |
+
$this->t->mustMatch(OP_LEFT_CURLY);
|
573 |
+
$n = $this->Statements($x);
|
574 |
+
$this->t->mustMatch(OP_RIGHT_CURLY);
|
575 |
+
|
576 |
+
return $n;
|
577 |
+
}
|
578 |
+
|
579 |
+
private function Statement($x)
|
580 |
+
{
|
581 |
+
$tt = $this->t->get();
|
582 |
+
$n2 = null;
|
583 |
+
|
584 |
+
// Cases for statements ending in a right curly return early, avoiding the
|
585 |
+
// common semicolon insertion magic after this switch.
|
586 |
+
switch ($tt)
|
587 |
+
{
|
588 |
+
case KEYWORD_FUNCTION:
|
589 |
+
return $this->FunctionDefinition(
|
590 |
+
$x,
|
591 |
+
true,
|
592 |
+
count($x->stmtStack) > 1 ? STATEMENT_FORM : DECLARED_FORM
|
593 |
+
);
|
594 |
+
break;
|
595 |
+
|
596 |
+
case OP_LEFT_CURLY:
|
597 |
+
$n = $this->Statements($x);
|
598 |
+
$this->t->mustMatch(OP_RIGHT_CURLY);
|
599 |
+
return $n;
|
600 |
+
|
601 |
+
case KEYWORD_IF:
|
602 |
+
$n = new JSNode($this->t);
|
603 |
+
$n->condition = $this->ParenExpression($x);
|
604 |
+
array_push($x->stmtStack, $n);
|
605 |
+
$n->thenPart = $this->Statement($x);
|
606 |
+
$n->elsePart = $this->t->match(KEYWORD_ELSE) ? $this->Statement($x) : null;
|
607 |
+
array_pop($x->stmtStack);
|
608 |
+
return $n;
|
609 |
+
|
610 |
+
case KEYWORD_SWITCH:
|
611 |
+
$n = new JSNode($this->t);
|
612 |
+
$this->t->mustMatch(OP_LEFT_PAREN);
|
613 |
+
$n->discriminant = $this->Expression($x);
|
614 |
+
$this->t->mustMatch(OP_RIGHT_PAREN);
|
615 |
+
$n->cases = array();
|
616 |
+
$n->defaultIndex = -1;
|
617 |
+
|
618 |
+
array_push($x->stmtStack, $n);
|
619 |
+
|
620 |
+
$this->t->mustMatch(OP_LEFT_CURLY);
|
621 |
+
|
622 |
+
while (($tt = $this->t->get()) != OP_RIGHT_CURLY)
|
623 |
+
{
|
624 |
+
switch ($tt)
|
625 |
+
{
|
626 |
+
case KEYWORD_DEFAULT:
|
627 |
+
if ($n->defaultIndex >= 0)
|
628 |
+
throw $this->t->newSyntaxError('More than one switch default');
|
629 |
+
// FALL THROUGH
|
630 |
+
case KEYWORD_CASE:
|
631 |
+
$n2 = new JSNode($this->t);
|
632 |
+
if ($tt == KEYWORD_DEFAULT)
|
633 |
+
$n->defaultIndex = count($n->cases);
|
634 |
+
else
|
635 |
+
$n2->caseLabel = $this->Expression($x, OP_COLON);
|
636 |
+
break;
|
637 |
+
default:
|
638 |
+
throw $this->t->newSyntaxError('Invalid switch case');
|
639 |
+
}
|
640 |
+
|
641 |
+
$this->t->mustMatch(OP_COLON);
|
642 |
+
$n2->statements = new JSNode($this->t, JS_BLOCK);
|
643 |
+
while (($tt = $this->t->peek()) != KEYWORD_CASE && $tt != KEYWORD_DEFAULT && $tt != OP_RIGHT_CURLY)
|
644 |
+
$n2->statements->addNode($this->Statement($x));
|
645 |
+
|
646 |
+
array_push($n->cases, $n2);
|
647 |
+
}
|
648 |
+
|
649 |
+
array_pop($x->stmtStack);
|
650 |
+
return $n;
|
651 |
+
|
652 |
+
case KEYWORD_FOR:
|
653 |
+
$n = new JSNode($this->t);
|
654 |
+
$n->isLoop = true;
|
655 |
+
$this->t->mustMatch(OP_LEFT_PAREN);
|
656 |
+
|
657 |
+
if (($tt = $this->t->peek()) != OP_SEMICOLON)
|
658 |
+
{
|
659 |
+
$x->inForLoopInit = true;
|
660 |
+
if ($tt == KEYWORD_VAR || $tt == KEYWORD_CONST)
|
661 |
+
{
|
662 |
+
$this->t->get();
|
663 |
+
$n2 = $this->Variables($x);
|
664 |
+
}
|
665 |
+
else
|
666 |
+
{
|
667 |
+
$n2 = $this->Expression($x);
|
668 |
+
}
|
669 |
+
$x->inForLoopInit = false;
|
670 |
+
}
|
671 |
+
|
672 |
+
if ($n2 && $this->t->match(KEYWORD_IN))
|
673 |
+
{
|
674 |
+
$n->type = JS_FOR_IN;
|
675 |
+
if ($n2->type == KEYWORD_VAR)
|
676 |
+
{
|
677 |
+
if (count($n2->treeNodes) != 1)
|
678 |
+
{
|
679 |
+
throw $this->t->SyntaxError(
|
680 |
+
'Invalid for..in left-hand side',
|
681 |
+
$this->t->filename,
|
682 |
+
$n2->lineno
|
683 |
+
);
|
684 |
+
}
|
685 |
+
|
686 |
+
// NB: n2[0].type == IDENTIFIER and n2[0].value == n2[0].name.
|
687 |
+
$n->iterator = $n2->treeNodes[0];
|
688 |
+
$n->varDecl = $n2;
|
689 |
+
}
|
690 |
+
else
|
691 |
+
{
|
692 |
+
$n->iterator = $n2;
|
693 |
+
$n->varDecl = null;
|
694 |
+
}
|
695 |
+
|
696 |
+
$n->object = $this->Expression($x);
|
697 |
+
}
|
698 |
+
else
|
699 |
+
{
|
700 |
+
$n->setup = $n2 ? $n2 : null;
|
701 |
+
$this->t->mustMatch(OP_SEMICOLON);
|
702 |
+
$n->condition = $this->t->peek() == OP_SEMICOLON ? null : $this->Expression($x);
|
703 |
+
$this->t->mustMatch(OP_SEMICOLON);
|
704 |
+
$n->update = $this->t->peek() == OP_RIGHT_PAREN ? null : $this->Expression($x);
|
705 |
+
}
|
706 |
+
|
707 |
+
$this->t->mustMatch(OP_RIGHT_PAREN);
|
708 |
+
$n->body = $this->nest($x, $n);
|
709 |
+
return $n;
|
710 |
+
|
711 |
+
case KEYWORD_WHILE:
|
712 |
+
$n = new JSNode($this->t);
|
713 |
+
$n->isLoop = true;
|
714 |
+
$n->condition = $this->ParenExpression($x);
|
715 |
+
$n->body = $this->nest($x, $n);
|
716 |
+
return $n;
|
717 |
+
|
718 |
+
case KEYWORD_DO:
|
719 |
+
$n = new JSNode($this->t);
|
720 |
+
$n->isLoop = true;
|
721 |
+
$n->body = $this->nest($x, $n, KEYWORD_WHILE);
|
722 |
+
$n->condition = $this->ParenExpression($x);
|
723 |
+
if (!$x->ecmaStrictMode)
|
724 |
+
{
|
725 |
+
// <script language="JavaScript"> (without version hints) may need
|
726 |
+
// automatic semicolon insertion without a newline after do-while.
|
727 |
+
// See http://bugzilla.mozilla.org/show_bug.cgi?id=238945.
|
728 |
+
$this->t->match(OP_SEMICOLON);
|
729 |
+
return $n;
|
730 |
+
}
|
731 |
+
break;
|
732 |
+
|
733 |
+
case KEYWORD_BREAK:
|
734 |
+
case KEYWORD_CONTINUE:
|
735 |
+
$n = new JSNode($this->t);
|
736 |
+
|
737 |
+
if ($this->t->peekOnSameLine() == TOKEN_IDENTIFIER)
|
738 |
+
{
|
739 |
+
$this->t->get();
|
740 |
+
$n->label = $this->t->currentToken()->value;
|
741 |
+
}
|
742 |
+
|
743 |
+
$ss = $x->stmtStack;
|
744 |
+
$i = count($ss);
|
745 |
+
$label = $n->label;
|
746 |
+
if ($label)
|
747 |
+
{
|
748 |
+
do
|
749 |
+
{
|
750 |
+
if (--$i < 0)
|
751 |
+
throw $this->t->newSyntaxError('Label not found');
|
752 |
+
}
|
753 |
+
while ($ss[$i]->label != $label);
|
754 |
+
}
|
755 |
+
else
|
756 |
+
{
|
757 |
+
do
|
758 |
+
{
|
759 |
+
if (--$i < 0)
|
760 |
+
throw $this->t->newSyntaxError('Invalid ' . $tt);
|
761 |
+
}
|
762 |
+
while (!$ss[$i]->isLoop && ($tt != KEYWORD_BREAK || $ss[$i]->type != KEYWORD_SWITCH));
|
763 |
+
}
|
764 |
+
|
765 |
+
$n->target = $ss[$i];
|
766 |
+
break;
|
767 |
+
|
768 |
+
case KEYWORD_TRY:
|
769 |
+
$n = new JSNode($this->t);
|
770 |
+
$n->tryBlock = $this->Block($x);
|
771 |
+
$n->catchClauses = array();
|
772 |
+
|
773 |
+
while ($this->t->match(KEYWORD_CATCH))
|
774 |
+
{
|
775 |
+
$n2 = new JSNode($this->t);
|
776 |
+
$this->t->mustMatch(OP_LEFT_PAREN);
|
777 |
+
$n2->varName = $this->t->mustMatch(TOKEN_IDENTIFIER)->value;
|
778 |
+
|
779 |
+
if ($this->t->match(KEYWORD_IF))
|
780 |
+
{
|
781 |
+
if ($x->ecmaStrictMode)
|
782 |
+
throw $this->t->newSyntaxError('Illegal catch guard');
|
783 |
+
|
784 |
+
if (count($n->catchClauses) && !end($n->catchClauses)->guard)
|
785 |
+
throw $this->t->newSyntaxError('Guarded catch after unguarded');
|
786 |
+
|
787 |
+
$n2->guard = $this->Expression($x);
|
788 |
+
}
|
789 |
+
else
|
790 |
+
{
|
791 |
+
$n2->guard = null;
|
792 |
+
}
|
793 |
+
|
794 |
+
$this->t->mustMatch(OP_RIGHT_PAREN);
|
795 |
+
$n2->block = $this->Block($x);
|
796 |
+
array_push($n->catchClauses, $n2);
|
797 |
+
}
|
798 |
+
|
799 |
+
if ($this->t->match(KEYWORD_FINALLY))
|
800 |
+
$n->finallyBlock = $this->Block($x);
|
801 |
+
|
802 |
+
if (!count($n->catchClauses) && !$n->finallyBlock)
|
803 |
+
throw $this->t->newSyntaxError('Invalid try statement');
|
804 |
+
return $n;
|
805 |
+
|
806 |
+
case KEYWORD_CATCH:
|
807 |
+
case KEYWORD_FINALLY:
|
808 |
+
throw $this->t->newSyntaxError($tt + ' without preceding try');
|
809 |
+
|
810 |
+
case KEYWORD_THROW:
|
811 |
+
$n = new JSNode($this->t);
|
812 |
+
$n->exception = $this->Expression($x);
|
813 |
+
break;
|
814 |
+
|
815 |
+
case KEYWORD_RETURN:
|
816 |
+
if (!$x->inFunction)
|
817 |
+
throw $this->t->newSyntaxError('Invalid return');
|
818 |
+
|
819 |
+
$n = new JSNode($this->t);
|
820 |
+
$tt = $this->t->peekOnSameLine();
|
821 |
+
if ($tt != TOKEN_END && $tt != TOKEN_NEWLINE && $tt != OP_SEMICOLON && $tt != OP_RIGHT_CURLY)
|
822 |
+
$n->value = $this->Expression($x);
|
823 |
+
else
|
824 |
+
$n->value = null;
|
825 |
+
break;
|
826 |
+
|
827 |
+
case KEYWORD_WITH:
|
828 |
+
$n = new JSNode($this->t);
|
829 |
+
$n->object = $this->ParenExpression($x);
|
830 |
+
$n->body = $this->nest($x, $n);
|
831 |
+
return $n;
|
832 |
+
|
833 |
+
case KEYWORD_VAR:
|
834 |
+
case KEYWORD_CONST:
|
835 |
+
$n = $this->Variables($x);
|
836 |
+
break;
|
837 |
+
|
838 |
+
case TOKEN_CONDCOMMENT_MULTILINE:
|
839 |
+
$n = new JSNode($this->t);
|
840 |
+
return $n;
|
841 |
+
|
842 |
+
case KEYWORD_DEBUGGER:
|
843 |
+
$n = new JSNode($this->t);
|
844 |
+
break;
|
845 |
+
|
846 |
+
case TOKEN_NEWLINE:
|
847 |
+
case OP_SEMICOLON:
|
848 |
+
$n = new JSNode($this->t, OP_SEMICOLON);
|
849 |
+
$n->expression = null;
|
850 |
+
return $n;
|
851 |
+
|
852 |
+
default:
|
853 |
+
if ($tt == TOKEN_IDENTIFIER)
|
854 |
+
{
|
855 |
+
$this->t->scanOperand = false;
|
856 |
+
$tt = $this->t->peek();
|
857 |
+
$this->t->scanOperand = true;
|
858 |
+
if ($tt == OP_COLON)
|
859 |
+
{
|
860 |
+
$label = $this->t->currentToken()->value;
|
861 |
+
$ss = $x->stmtStack;
|
862 |
+
for ($i = count($ss) - 1; $i >= 0; --$i)
|
863 |
+
{
|
864 |
+
if ($ss[$i]->label == $label)
|
865 |
+
throw $this->t->newSyntaxError('Duplicate label');
|
866 |
+
}
|
867 |
+
|
868 |
+
$this->t->get();
|
869 |
+
$n = new JSNode($this->t, JS_LABEL);
|
870 |
+
$n->label = $label;
|
871 |
+
$n->statement = $this->nest($x, $n);
|
872 |
+
|
873 |
+
return $n;
|
874 |
+
}
|
875 |
+
}
|
876 |
+
|
877 |
+
$n = new JSNode($this->t, OP_SEMICOLON);
|
878 |
+
$this->t->unget();
|
879 |
+
$n->expression = $this->Expression($x);
|
880 |
+
$n->end = $n->expression->end;
|
881 |
+
break;
|
882 |
+
}
|
883 |
+
|
884 |
+
if ($this->t->lineno == $this->t->currentToken()->lineno)
|
885 |
+
{
|
886 |
+
$tt = $this->t->peekOnSameLine();
|
887 |
+
if ($tt != TOKEN_END && $tt != TOKEN_NEWLINE && $tt != OP_SEMICOLON && $tt != OP_RIGHT_CURLY)
|
888 |
+
throw $this->t->newSyntaxError('Missing ; before statement');
|
889 |
+
}
|
890 |
+
|
891 |
+
$this->t->match(OP_SEMICOLON);
|
892 |
+
|
893 |
+
return $n;
|
894 |
+
}
|
895 |
+
|
896 |
+
private function FunctionDefinition($x, $requireName, $functionForm)
|
897 |
+
{
|
898 |
+
$f = new JSNode($this->t);
|
899 |
+
|
900 |
+
if ($f->type != KEYWORD_FUNCTION)
|
901 |
+
$f->type = ($f->value == 'get') ? JS_GETTER : JS_SETTER;
|
902 |
+
|
903 |
+
if ($this->t->match(TOKEN_IDENTIFIER))
|
904 |
+
$f->name = $this->t->currentToken()->value;
|
905 |
+
elseif ($requireName)
|
906 |
+
throw $this->t->newSyntaxError('Missing function identifier');
|
907 |
+
|
908 |
+
$this->t->mustMatch(OP_LEFT_PAREN);
|
909 |
+
$f->params = array();
|
910 |
+
|
911 |
+
while (($tt = $this->t->get()) != OP_RIGHT_PAREN)
|
912 |
+
{
|
913 |
+
if ($tt != TOKEN_IDENTIFIER)
|
914 |
+
throw $this->t->newSyntaxError('Missing formal parameter');
|
915 |
+
|
916 |
+
array_push($f->params, $this->t->currentToken()->value);
|
917 |
+
|
918 |
+
if ($this->t->peek() != OP_RIGHT_PAREN)
|
919 |
+
$this->t->mustMatch(OP_COMMA);
|
920 |
+
}
|
921 |
+
|
922 |
+
$this->t->mustMatch(OP_LEFT_CURLY);
|
923 |
+
|
924 |
+
$x2 = new JSCompilerContext(true);
|
925 |
+
$f->body = $this->Script($x2);
|
926 |
+
|
927 |
+
$this->t->mustMatch(OP_RIGHT_CURLY);
|
928 |
+
$f->end = $this->t->currentToken()->end;
|
929 |
+
|
930 |
+
$f->functionForm = $functionForm;
|
931 |
+
if ($functionForm == DECLARED_FORM)
|
932 |
+
array_push($x->funDecls, $f);
|
933 |
+
|
934 |
+
return $f;
|
935 |
+
}
|
936 |
+
|
937 |
+
private function Variables($x)
|
938 |
+
{
|
939 |
+
$n = new JSNode($this->t);
|
940 |
+
|
941 |
+
do
|
942 |
+
{
|
943 |
+
$this->t->mustMatch(TOKEN_IDENTIFIER);
|
944 |
+
|
945 |
+
$n2 = new JSNode($this->t);
|
946 |
+
$n2->name = $n2->value;
|
947 |
+
|
948 |
+
if ($this->t->match(OP_ASSIGN))
|
949 |
+
{
|
950 |
+
if ($this->t->currentToken()->assignOp)
|
951 |
+
throw $this->t->newSyntaxError('Invalid variable initialization');
|
952 |
+
|
953 |
+
$n2->initializer = $this->Expression($x, OP_COMMA);
|
954 |
+
}
|
955 |
+
|
956 |
+
$n2->readOnly = $n->type == KEYWORD_CONST;
|
957 |
+
|
958 |
+
$n->addNode($n2);
|
959 |
+
array_push($x->varDecls, $n2);
|
960 |
+
}
|
961 |
+
while ($this->t->match(OP_COMMA));
|
962 |
+
|
963 |
+
return $n;
|
964 |
+
}
|
965 |
+
|
966 |
+
private function Expression($x, $stop=false)
|
967 |
+
{
|
968 |
+
$operators = array();
|
969 |
+
$operands = array();
|
970 |
+
$n = false;
|
971 |
+
|
972 |
+
$bl = $x->bracketLevel;
|
973 |
+
$cl = $x->curlyLevel;
|
974 |
+
$pl = $x->parenLevel;
|
975 |
+
$hl = $x->hookLevel;
|
976 |
+
|
977 |
+
while (($tt = $this->t->get()) != TOKEN_END)
|
978 |
+
{
|
979 |
+
if ($tt == $stop &&
|
980 |
+
$x->bracketLevel == $bl &&
|
981 |
+
$x->curlyLevel == $cl &&
|
982 |
+
$x->parenLevel == $pl &&
|
983 |
+
$x->hookLevel == $hl
|
984 |
+
)
|
985 |
+
{
|
986 |
+
// Stop only if tt matches the optional stop parameter, and that
|
987 |
+
// token is not quoted by some kind of bracket.
|
988 |
+
break;
|
989 |
+
}
|
990 |
+
|
991 |
+
switch ($tt)
|
992 |
+
{
|
993 |
+
case OP_SEMICOLON:
|
994 |
+
// NB: cannot be empty, Statement handled that.
|
995 |
+
break 2;
|
996 |
+
|
997 |
+
case OP_ASSIGN:
|
998 |
+
case OP_HOOK:
|
999 |
+
case OP_COLON:
|
1000 |
+
if ($this->t->scanOperand)
|
1001 |
+
break 2;
|
1002 |
+
|
1003 |
+
// Use >, not >=, for right-associative ASSIGN and HOOK/COLON.
|
1004 |
+
while ( !empty($operators) &&
|
1005 |
+
( $this->opPrecedence[end($operators)->type] > $this->opPrecedence[$tt] ||
|
1006 |
+
($tt == OP_COLON && end($operators)->type == OP_ASSIGN)
|
1007 |
+
)
|
1008 |
+
)
|
1009 |
+
$this->reduce($operators, $operands);
|
1010 |
+
|
1011 |
+
if ($tt == OP_COLON)
|
1012 |
+
{
|
1013 |
+
$n = end($operators);
|
1014 |
+
if ($n->type != OP_HOOK)
|
1015 |
+
throw $this->t->newSyntaxError('Invalid label');
|
1016 |
+
|
1017 |
+
--$x->hookLevel;
|
1018 |
+
}
|
1019 |
+
else
|
1020 |
+
{
|
1021 |
+
array_push($operators, new JSNode($this->t));
|
1022 |
+
if ($tt == OP_ASSIGN)
|
1023 |
+
end($operands)->assignOp = $this->t->currentToken()->assignOp;
|
1024 |
+
else
|
1025 |
+
++$x->hookLevel;
|
1026 |
+
}
|
1027 |
+
|
1028 |
+
$this->t->scanOperand = true;
|
1029 |
+
break;
|
1030 |
+
|
1031 |
+
case KEYWORD_IN:
|
1032 |
+
// An in operator should not be parsed if we're parsing the head of
|
1033 |
+
// a for (...) loop, unless it is in the then part of a conditional
|
1034 |
+
// expression, or parenthesized somehow.
|
1035 |
+
if ($x->inForLoopInit && !$x->hookLevel &&
|
1036 |
+
!$x->bracketLevel && !$x->curlyLevel &&
|
1037 |
+
!$x->parenLevel
|
1038 |
+
)
|
1039 |
+
{
|
1040 |
+
break 2;
|
1041 |
+
}
|
1042 |
+
// FALL THROUGH
|
1043 |
+
case OP_COMMA:
|
1044 |
+
// Treat comma as left-associative so reduce can fold left-heavy
|
1045 |
+
// COMMA trees into a single array.
|
1046 |
+
// FALL THROUGH
|
1047 |
+
case OP_OR:
|
1048 |
+
case OP_AND:
|
1049 |
+
case OP_BITWISE_OR:
|
1050 |
+
case OP_BITWISE_XOR:
|
1051 |
+
case OP_BITWISE_AND:
|
1052 |
+
case OP_EQ: case OP_NE: case OP_STRICT_EQ: case OP_STRICT_NE:
|
1053 |
+
case OP_LT: case OP_LE: case OP_GE: case OP_GT:
|
1054 |
+
case KEYWORD_INSTANCEOF:
|
1055 |
+
case OP_LSH: case OP_RSH: case OP_URSH:
|
1056 |
+
case OP_PLUS: case OP_MINUS:
|
1057 |
+
case OP_MUL: case OP_DIV: case OP_MOD:
|
1058 |
+
case OP_DOT:
|
1059 |
+
if ($this->t->scanOperand)
|
1060 |
+
break 2;
|
1061 |
+
|
1062 |
+
while ( !empty($operators) &&
|
1063 |
+
$this->opPrecedence[end($operators)->type] >= $this->opPrecedence[$tt]
|
1064 |
+
)
|
1065 |
+
$this->reduce($operators, $operands);
|
1066 |
+
|
1067 |
+
if ($tt == OP_DOT)
|
1068 |
+
{
|
1069 |
+
$this->t->mustMatch(TOKEN_IDENTIFIER);
|
1070 |
+
array_push($operands, new JSNode($this->t, OP_DOT, array_pop($operands), new JSNode($this->t)));
|
1071 |
+
}
|
1072 |
+
else
|
1073 |
+
{
|
1074 |
+
array_push($operators, new JSNode($this->t));
|
1075 |
+
$this->t->scanOperand = true;
|
1076 |
+
}
|
1077 |
+
break;
|
1078 |
+
|
1079 |
+
case KEYWORD_DELETE: case KEYWORD_VOID: case KEYWORD_TYPEOF:
|
1080 |
+
case OP_NOT: case OP_BITWISE_NOT: case OP_UNARY_PLUS: case OP_UNARY_MINUS:
|
1081 |
+
case KEYWORD_NEW:
|
1082 |
+
if (!$this->t->scanOperand)
|
1083 |
+
break 2;
|
1084 |
+
|
1085 |
+
array_push($operators, new JSNode($this->t));
|
1086 |
+
break;
|
1087 |
+
|
1088 |
+
case OP_INCREMENT: case OP_DECREMENT:
|
1089 |
+
if ($this->t->scanOperand)
|
1090 |
+
{
|
1091 |
+
array_push($operators, new JSNode($this->t)); // prefix increment or decrement
|
1092 |
+
}
|
1093 |
+
else
|
1094 |
+
{
|
1095 |
+
// Don't cross a line boundary for postfix {in,de}crement.
|
1096 |
+
$t = $this->t->tokens[($this->t->tokenIndex + $this->t->lookahead - 1) & 3];
|
1097 |
+
if ($t && $t->lineno != $this->t->lineno)
|
1098 |
+
break 2;
|
1099 |
+
|
1100 |
+
if (!empty($operators))
|
1101 |
+
{
|
1102 |
+
// Use >, not >=, so postfix has higher precedence than prefix.
|
1103 |
+
while ($this->opPrecedence[end($operators)->type] > $this->opPrecedence[$tt])
|
1104 |
+
$this->reduce($operators, $operands);
|
1105 |
+
}
|
1106 |
+
|
1107 |
+
$n = new JSNode($this->t, $tt, array_pop($operands));
|
1108 |
+
$n->postfix = true;
|
1109 |
+
array_push($operands, $n);
|
1110 |
+
}
|
1111 |
+
break;
|
1112 |
+
|
1113 |
+
case KEYWORD_FUNCTION:
|
1114 |
+
if (!$this->t->scanOperand)
|
1115 |
+
break 2;
|
1116 |
+
|
1117 |
+
array_push($operands, $this->FunctionDefinition($x, false, EXPRESSED_FORM));
|
1118 |
+
$this->t->scanOperand = false;
|
1119 |
+
break;
|
1120 |
+
|
1121 |
+
case KEYWORD_NULL: case KEYWORD_THIS: case KEYWORD_TRUE: case KEYWORD_FALSE:
|
1122 |
+
case TOKEN_IDENTIFIER: case TOKEN_NUMBER: case TOKEN_STRING: case TOKEN_REGEXP:
|
1123 |
+
if (!$this->t->scanOperand)
|
1124 |
+
break 2;
|
1125 |
+
|
1126 |
+
array_push($operands, new JSNode($this->t));
|
1127 |
+
$this->t->scanOperand = false;
|
1128 |
+
break;
|
1129 |
+
|
1130 |
+
case TOKEN_CONDCOMMENT_MULTILINE:
|
1131 |
+
if ($this->t->scanOperand)
|
1132 |
+
array_push($operators, new JSNode($this->t));
|
1133 |
+
else
|
1134 |
+
array_push($operands, new JSNode($this->t));
|
1135 |
+
break;
|
1136 |
+
|
1137 |
+
case OP_LEFT_BRACKET:
|
1138 |
+
if ($this->t->scanOperand)
|
1139 |
+
{
|
1140 |
+
// Array initialiser. Parse using recursive descent, as the
|
1141 |
+
// sub-grammar here is not an operator grammar.
|
1142 |
+
$n = new JSNode($this->t, JS_ARRAY_INIT);
|
1143 |
+
while (($tt = $this->t->peek()) != OP_RIGHT_BRACKET)
|
1144 |
+
{
|
1145 |
+
if ($tt == OP_COMMA)
|
1146 |
+
{
|
1147 |
+
$this->t->get();
|
1148 |
+
$n->addNode(null);
|
1149 |
+
continue;
|
1150 |
+
}
|
1151 |
+
|
1152 |
+
$n->addNode($this->Expression($x, OP_COMMA));
|
1153 |
+
if (!$this->t->match(OP_COMMA))
|
1154 |
+
break;
|
1155 |
+
}
|
1156 |
+
|
1157 |
+
$this->t->mustMatch(OP_RIGHT_BRACKET);
|
1158 |
+
array_push($operands, $n);
|
1159 |
+
$this->t->scanOperand = false;
|
1160 |
+
}
|
1161 |
+
else
|
1162 |
+
{
|
1163 |
+
// Property indexing operator.
|
1164 |
+
array_push($operators, new JSNode($this->t, JS_INDEX));
|
1165 |
+
$this->t->scanOperand = true;
|
1166 |
+
++$x->bracketLevel;
|
1167 |
+
}
|
1168 |
+
break;
|
1169 |
+
|
1170 |
+
case OP_RIGHT_BRACKET:
|
1171 |
+
if ($this->t->scanOperand || $x->bracketLevel == $bl)
|
1172 |
+
break 2;
|
1173 |
+
|
1174 |
+
while ($this->reduce($operators, $operands)->type != JS_INDEX)
|
1175 |
+
continue;
|
1176 |
+
|
1177 |
+
--$x->bracketLevel;
|
1178 |
+
break;
|
1179 |
+
|
1180 |
+
case OP_LEFT_CURLY:
|
1181 |
+
if (!$this->t->scanOperand)
|
1182 |
+
break 2;
|
1183 |
+
|
1184 |
+
// Object initialiser. As for array initialisers (see above),
|
1185 |
+
// parse using recursive descent.
|
1186 |
+
++$x->curlyLevel;
|
1187 |
+
$n = new JSNode($this->t, JS_OBJECT_INIT);
|
1188 |
+
while (!$this->t->match(OP_RIGHT_CURLY))
|
1189 |
+
{
|
1190 |
+
do
|
1191 |
+
{
|
1192 |
+
$tt = $this->t->get();
|
1193 |
+
$tv = $this->t->currentToken()->value;
|
1194 |
+
if (($tv == 'get' || $tv == 'set') && $this->t->peek() == TOKEN_IDENTIFIER)
|
1195 |
+
{
|
1196 |
+
if ($x->ecmaStrictMode)
|
1197 |
+
throw $this->t->newSyntaxError('Illegal property accessor');
|
1198 |
+
|
1199 |
+
$n->addNode($this->FunctionDefinition($x, true, EXPRESSED_FORM));
|
1200 |
+
}
|
1201 |
+
else
|
1202 |
+
{
|
1203 |
+
switch ($tt)
|
1204 |
+
{
|
1205 |
+
case TOKEN_IDENTIFIER:
|
1206 |
+
case TOKEN_NUMBER:
|
1207 |
+
case TOKEN_STRING:
|
1208 |
+
$id = new JSNode($this->t);
|
1209 |
+
break;
|
1210 |
+
|
1211 |
+
case OP_RIGHT_CURLY:
|
1212 |
+
if ($x->ecmaStrictMode)
|
1213 |
+
throw $this->t->newSyntaxError('Illegal trailing ,');
|
1214 |
+
break 3;
|
1215 |
+
|
1216 |
+
default:
|
1217 |
+
throw $this->t->newSyntaxError('Invalid property name');
|
1218 |
+
}
|
1219 |
+
|
1220 |
+
$this->t->mustMatch(OP_COLON);
|
1221 |
+
$n->addNode(new JSNode($this->t, JS_PROPERTY_INIT, $id, $this->Expression($x, OP_COMMA)));
|
1222 |
+
}
|
1223 |
+
}
|
1224 |
+
while ($this->t->match(OP_COMMA));
|
1225 |
+
|
1226 |
+
$this->t->mustMatch(OP_RIGHT_CURLY);
|
1227 |
+
break;
|
1228 |
+
}
|
1229 |
+
|
1230 |
+
array_push($operands, $n);
|
1231 |
+
$this->t->scanOperand = false;
|
1232 |
+
--$x->curlyLevel;
|
1233 |
+
break;
|
1234 |
+
|
1235 |
+
case OP_RIGHT_CURLY:
|
1236 |
+
if (!$this->t->scanOperand && $x->curlyLevel != $cl)
|
1237 |
+
throw new Exception('PANIC: right curly botch');
|
1238 |
+
break 2;
|
1239 |
+
|
1240 |
+
case OP_LEFT_PAREN:
|
1241 |
+
if ($this->t->scanOperand)
|
1242 |
+
{
|
1243 |
+
array_push($operators, new JSNode($this->t, JS_GROUP));
|
1244 |
+
}
|
1245 |
+
else
|
1246 |
+
{
|
1247 |
+
while ( !empty($operators) &&
|
1248 |
+
$this->opPrecedence[end($operators)->type] > $this->opPrecedence[KEYWORD_NEW]
|
1249 |
+
)
|
1250 |
+
$this->reduce($operators, $operands);
|
1251 |
+
|
1252 |
+
// Handle () now, to regularize the n-ary case for n > 0.
|
1253 |
+
// We must set scanOperand in case there are arguments and
|
1254 |
+
// the first one is a regexp or unary+/-.
|
1255 |
+
$n = end($operators);
|
1256 |
+
$this->t->scanOperand = true;
|
1257 |
+
if ($this->t->match(OP_RIGHT_PAREN))
|
1258 |
+
{
|
1259 |
+
if ($n && $n->type == KEYWORD_NEW)
|
1260 |
+
{
|
1261 |
+
array_pop($operators);
|
1262 |
+
$n->addNode(array_pop($operands));
|
1263 |
+
}
|
1264 |
+
else
|
1265 |
+
{
|
1266 |
+
$n = new JSNode($this->t, JS_CALL, array_pop($operands), new JSNode($this->t, JS_LIST));
|
1267 |
+
}
|
1268 |
+
|
1269 |
+
array_push($operands, $n);
|
1270 |
+
$this->t->scanOperand = false;
|
1271 |
+
break;
|
1272 |
+
}
|
1273 |
+
|
1274 |
+
if ($n && $n->type == KEYWORD_NEW)
|
1275 |
+
$n->type = JS_NEW_WITH_ARGS;
|
1276 |
+
else
|
1277 |
+
array_push($operators, new JSNode($this->t, JS_CALL));
|
1278 |
+
}
|
1279 |
+
|
1280 |
+
++$x->parenLevel;
|
1281 |
+
break;
|
1282 |
+
|
1283 |
+
case OP_RIGHT_PAREN:
|
1284 |
+
if ($this->t->scanOperand || $x->parenLevel == $pl)
|
1285 |
+
break 2;
|
1286 |
+
|
1287 |
+
while (($tt = $this->reduce($operators, $operands)->type) != JS_GROUP &&
|
1288 |
+
$tt != JS_CALL && $tt != JS_NEW_WITH_ARGS
|
1289 |
+
)
|
1290 |
+
{
|
1291 |
+
continue;
|
1292 |
+
}
|
1293 |
+
|
1294 |
+
if ($tt != JS_GROUP)
|
1295 |
+
{
|
1296 |
+
$n = end($operands);
|
1297 |
+
if ($n->treeNodes[1]->type != OP_COMMA)
|
1298 |
+
$n->treeNodes[1] = new JSNode($this->t, JS_LIST, $n->treeNodes[1]);
|
1299 |
+
else
|
1300 |
+
$n->treeNodes[1]->type = JS_LIST;
|
1301 |
+
}
|
1302 |
+
|
1303 |
+
--$x->parenLevel;
|
1304 |
+
break;
|
1305 |
+
|
1306 |
+
// Automatic semicolon insertion means we may scan across a newline
|
1307 |
+
// and into the beginning of another statement. If so, break out of
|
1308 |
+
// the while loop and let the t.scanOperand logic handle errors.
|
1309 |
+
default:
|
1310 |
+
break 2;
|
1311 |
+
}
|
1312 |
+
}
|
1313 |
+
|
1314 |
+
if ($x->hookLevel != $hl)
|
1315 |
+
throw $this->t->newSyntaxError('Missing : after ?');
|
1316 |
+
|
1317 |
+
if ($x->parenLevel != $pl)
|
1318 |
+
throw $this->t->newSyntaxError('Missing ) in parenthetical');
|
1319 |
+
|
1320 |
+
if ($x->bracketLevel != $bl)
|
1321 |
+
throw $this->t->newSyntaxError('Missing ] in index expression');
|
1322 |
+
|
1323 |
+
if ($this->t->scanOperand)
|
1324 |
+
throw $this->t->newSyntaxError('Missing operand');
|
1325 |
+
|
1326 |
+
// Resume default mode, scanning for operands, not operators.
|
1327 |
+
$this->t->scanOperand = true;
|
1328 |
+
$this->t->unget();
|
1329 |
+
|
1330 |
+
while (count($operators))
|
1331 |
+
$this->reduce($operators, $operands);
|
1332 |
+
|
1333 |
+
return array_pop($operands);
|
1334 |
+
}
|
1335 |
+
|
1336 |
+
private function ParenExpression($x)
|
1337 |
+
{
|
1338 |
+
$this->t->mustMatch(OP_LEFT_PAREN);
|
1339 |
+
$n = $this->Expression($x);
|
1340 |
+
$this->t->mustMatch(OP_RIGHT_PAREN);
|
1341 |
+
|
1342 |
+
return $n;
|
1343 |
+
}
|
1344 |
+
|
1345 |
+
// Statement stack and nested statement handler.
|
1346 |
+
private function nest($x, $node, $end = false)
|
1347 |
+
{
|
1348 |
+
array_push($x->stmtStack, $node);
|
1349 |
+
$n = $this->statement($x);
|
1350 |
+
array_pop($x->stmtStack);
|
1351 |
+
|
1352 |
+
if ($end)
|
1353 |
+
$this->t->mustMatch($end);
|
1354 |
+
|
1355 |
+
return $n;
|
1356 |
+
}
|
1357 |
+
|
1358 |
+
private function reduce(&$operators, &$operands)
|
1359 |
+
{
|
1360 |
+
$n = array_pop($operators);
|
1361 |
+
$op = $n->type;
|
1362 |
+
$arity = $this->opArity[$op];
|
1363 |
+
$c = count($operands);
|
1364 |
+
if ($arity == -2)
|
1365 |
+
{
|
1366 |
+
// Flatten left-associative trees
|
1367 |
+
if ($c >= 2)
|
1368 |
+
{
|
1369 |
+
$left = $operands[$c - 2];
|
1370 |
+
if ($left->type == $op)
|
1371 |
+
{
|
1372 |
+
$right = array_pop($operands);
|
1373 |
+
$left->addNode($right);
|
1374 |
+
return $left;
|
1375 |
+
}
|
1376 |
+
}
|
1377 |
+
$arity = 2;
|
1378 |
+
}
|
1379 |
+
|
1380 |
+
// Always use push to add operands to n, to update start and end
|
1381 |
+
$a = array_splice($operands, $c - $arity);
|
1382 |
+
for ($i = 0; $i < $arity; $i++)
|
1383 |
+
$n->addNode($a[$i]);
|
1384 |
+
|
1385 |
+
// Include closing bracket or postfix operator in [start,end]
|
1386 |
+
$te = $this->t->currentToken()->end;
|
1387 |
+
if ($n->end < $te)
|
1388 |
+
$n->end = $te;
|
1389 |
+
|
1390 |
+
array_push($operands, $n);
|
1391 |
+
|
1392 |
+
return $n;
|
1393 |
+
}
|
1394 |
+
}
|
1395 |
+
|
1396 |
+
class JSCompilerContext
|
1397 |
+
{
|
1398 |
+
public $inFunction = false;
|
1399 |
+
public $inForLoopInit = false;
|
1400 |
+
public $ecmaStrictMode = false;
|
1401 |
+
public $bracketLevel = 0;
|
1402 |
+
public $curlyLevel = 0;
|
1403 |
+
public $parenLevel = 0;
|
1404 |
+
public $hookLevel = 0;
|
1405 |
+
|
1406 |
+
public $stmtStack = array();
|
1407 |
+
public $funDecls = array();
|
1408 |
+
public $varDecls = array();
|
1409 |
+
|
1410 |
+
public function __construct($inFunction)
|
1411 |
+
{
|
1412 |
+
$this->inFunction = $inFunction;
|
1413 |
+
}
|
1414 |
+
}
|
1415 |
+
|
1416 |
+
class JSNode
|
1417 |
+
{
|
1418 |
+
private $type;
|
1419 |
+
private $value;
|
1420 |
+
private $lineno;
|
1421 |
+
private $start;
|
1422 |
+
private $end;
|
1423 |
+
|
1424 |
+
public $treeNodes = array();
|
1425 |
+
public $funDecls = array();
|
1426 |
+
public $varDecls = array();
|
1427 |
+
|
1428 |
+
public function __construct($t, $type=0)
|
1429 |
+
{
|
1430 |
+
if ($token = $t->currentToken())
|
1431 |
+
{
|
1432 |
+
$this->type = $type ? $type : $token->type;
|
1433 |
+
$this->value = $token->value;
|
1434 |
+
$this->lineno = $token->lineno;
|
1435 |
+
$this->start = $token->start;
|
1436 |
+
$this->end = $token->end;
|
1437 |
+
}
|
1438 |
+
else
|
1439 |
+
{
|
1440 |
+
$this->type = $type;
|
1441 |
+
$this->lineno = $t->lineno;
|
1442 |
+
}
|
1443 |
+
|
1444 |
+
if (($numargs = func_num_args()) > 2)
|
1445 |
+
{
|
1446 |
+
$args = func_get_args();;
|
1447 |
+
for ($i = 2; $i < $numargs; $i++)
|
1448 |
+
$this->addNode($args[$i]);
|
1449 |
+
}
|
1450 |
+
}
|
1451 |
+
|
1452 |
+
// we don't want to bloat our object with all kind of specific properties, so we use overloading
|
1453 |
+
public function __set($name, $value)
|
1454 |
+
{
|
1455 |
+
$this->$name = $value;
|
1456 |
+
}
|
1457 |
+
|
1458 |
+
public function __get($name)
|
1459 |
+
{
|
1460 |
+
if (isset($this->$name))
|
1461 |
+
return $this->$name;
|
1462 |
+
|
1463 |
+
return null;
|
1464 |
+
}
|
1465 |
+
|
1466 |
+
public function addNode($node)
|
1467 |
+
{
|
1468 |
+
$this->treeNodes[] = $node;
|
1469 |
+
}
|
1470 |
+
}
|
1471 |
+
|
1472 |
+
class JSTokenizer
|
1473 |
+
{
|
1474 |
+
private $cursor = 0;
|
1475 |
+
private $source;
|
1476 |
+
|
1477 |
+
public $tokens = array();
|
1478 |
+
public $tokenIndex = 0;
|
1479 |
+
public $lookahead = 0;
|
1480 |
+
public $scanNewlines = false;
|
1481 |
+
public $scanOperand = true;
|
1482 |
+
|
1483 |
+
public $filename;
|
1484 |
+
public $lineno;
|
1485 |
+
|
1486 |
+
private $keywords = array(
|
1487 |
+
'break',
|
1488 |
+
'case', 'catch', 'const', 'continue',
|
1489 |
+
'debugger', 'default', 'delete', 'do',
|
1490 |
+
'else', 'enum',
|
1491 |
+
'false', 'finally', 'for', 'function',
|
1492 |
+
'if', 'in', 'instanceof',
|
1493 |
+
'new', 'null',
|
1494 |
+
'return',
|
1495 |
+
'switch',
|
1496 |
+
'this', 'throw', 'true', 'try', 'typeof',
|
1497 |
+
'var', 'void',
|
1498 |
+
'while', 'with'
|
1499 |
+
);
|
1500 |
+
|
1501 |
+
private $opTypeNames = array(
|
1502 |
+
';' => 'SEMICOLON',
|
1503 |
+
',' => 'COMMA',
|
1504 |
+
'?' => 'HOOK',
|
1505 |
+
':' => 'COLON',
|
1506 |
+
'||' => 'OR',
|
1507 |
+
'&&' => 'AND',
|
1508 |
+
'|' => 'BITWISE_OR',
|
1509 |
+
'^' => 'BITWISE_XOR',
|
1510 |
+
'&' => 'BITWISE_AND',
|
1511 |
+
'===' => 'STRICT_EQ',
|
1512 |
+
'==' => 'EQ',
|
1513 |
+
'=' => 'ASSIGN',
|
1514 |
+
'!==' => 'STRICT_NE',
|
1515 |
+
'!=' => 'NE',
|
1516 |
+
'<<' => 'LSH',
|
1517 |
+
'<=' => 'LE',
|
1518 |
+
'<' => 'LT',
|
1519 |
+
'>>>' => 'URSH',
|
1520 |
+
'>>' => 'RSH',
|
1521 |
+
'>=' => 'GE',
|
1522 |
+
'>' => 'GT',
|
1523 |
+
'++' => 'INCREMENT',
|
1524 |
+
'--' => 'DECREMENT',
|
1525 |
+
'+' => 'PLUS',
|
1526 |
+
'-' => 'MINUS',
|
1527 |
+
'*' => 'MUL',
|
1528 |
+
'/' => 'DIV',
|
1529 |
+
'%' => 'MOD',
|
1530 |
+
'!' => 'NOT',
|
1531 |
+
'~' => 'BITWISE_NOT',
|
1532 |
+
'.' => 'DOT',
|
1533 |
+
'[' => 'LEFT_BRACKET',
|
1534 |
+
']' => 'RIGHT_BRACKET',
|
1535 |
+
'{' => 'LEFT_CURLY',
|
1536 |
+
'}' => 'RIGHT_CURLY',
|
1537 |
+
'(' => 'LEFT_PAREN',
|
1538 |
+
')' => 'RIGHT_PAREN',
|
1539 |
+
'@*/' => 'CONDCOMMENT_END'
|
1540 |
+
);
|
1541 |
+
|
1542 |
+
private $assignOps = array('|', '^', '&', '<<', '>>', '>>>', '+', '-', '*', '/', '%');
|
1543 |
+
private $opRegExp;
|
1544 |
+
|
1545 |
+
public function __construct()
|
1546 |
+
{
|
1547 |
+
$this->opRegExp = '#^(' . implode('|', array_map('preg_quote', array_keys($this->opTypeNames))) . ')#';
|
1548 |
+
|
1549 |
+
// this is quite a hidden yet convenient place to create the defines for operators and keywords
|
1550 |
+
foreach ($this->opTypeNames as $operand => $name)
|
1551 |
+
define('OP_' . $name, $operand);
|
1552 |
+
|
1553 |
+
define('OP_UNARY_PLUS', 'U+');
|
1554 |
+
define('OP_UNARY_MINUS', 'U-');
|
1555 |
+
|
1556 |
+
foreach ($this->keywords as $keyword)
|
1557 |
+
define('KEYWORD_' . strtoupper($keyword), $keyword);
|
1558 |
+
}
|
1559 |
+
|
1560 |
+
public function init($source, $filename = '', $lineno = 1)
|
1561 |
+
{
|
1562 |
+
$this->source = $source;
|
1563 |
+
$this->filename = $filename ? $filename : '[inline]';
|
1564 |
+
$this->lineno = $lineno;
|
1565 |
+
|
1566 |
+
$this->cursor = 0;
|
1567 |
+
$this->tokens = array();
|
1568 |
+
$this->tokenIndex = 0;
|
1569 |
+
$this->lookahead = 0;
|
1570 |
+
$this->scanNewlines = false;
|
1571 |
+
$this->scanOperand = true;
|
1572 |
+
}
|
1573 |
+
|
1574 |
+
public function getInput($chunksize)
|
1575 |
+
{
|
1576 |
+
if ($chunksize)
|
1577 |
+
return substr($this->source, $this->cursor, $chunksize);
|
1578 |
+
|
1579 |
+
return substr($this->source, $this->cursor);
|
1580 |
+
}
|
1581 |
+
|
1582 |
+
public function isDone()
|
1583 |
+
{
|
1584 |
+
return $this->peek() == TOKEN_END;
|
1585 |
+
}
|
1586 |
+
|
1587 |
+
public function match($tt)
|
1588 |
+
{
|
1589 |
+
return $this->get() == $tt || $this->unget();
|
1590 |
+
}
|
1591 |
+
|
1592 |
+
public function mustMatch($tt)
|
1593 |
+
{
|
1594 |
+
if (!$this->match($tt))
|
1595 |
+
throw $this->newSyntaxError('Unexpected token; token ' . $tt . ' expected');
|
1596 |
+
|
1597 |
+
return $this->currentToken();
|
1598 |
+
}
|
1599 |
+
|
1600 |
+
public function peek()
|
1601 |
+
{
|
1602 |
+
if ($this->lookahead)
|
1603 |
+
{
|
1604 |
+
$next = $this->tokens[($this->tokenIndex + $this->lookahead) & 3];
|
1605 |
+
if ($this->scanNewlines && $next->lineno != $this->lineno)
|
1606 |
+
$tt = TOKEN_NEWLINE;
|
1607 |
+
else
|
1608 |
+
$tt = $next->type;
|
1609 |
+
}
|
1610 |
+
else
|
1611 |
+
{
|
1612 |
+
$tt = $this->get();
|
1613 |
+
$this->unget();
|
1614 |
+
}
|
1615 |
+
|
1616 |
+
return $tt;
|
1617 |
+
}
|
1618 |
+
|
1619 |
+
public function peekOnSameLine()
|
1620 |
+
{
|
1621 |
+
$this->scanNewlines = true;
|
1622 |
+
$tt = $this->peek();
|
1623 |
+
$this->scanNewlines = false;
|
1624 |
+
|
1625 |
+
return $tt;
|
1626 |
+
}
|
1627 |
+
|
1628 |
+
public function currentToken()
|
1629 |
+
{
|
1630 |
+
if (!empty($this->tokens))
|
1631 |
+
return $this->tokens[$this->tokenIndex];
|
1632 |
+
}
|
1633 |
+
|
1634 |
+
public function get($chunksize = 1000)
|
1635 |
+
{
|
1636 |
+
while($this->lookahead)
|
1637 |
+
{
|
1638 |
+
$this->lookahead--;
|
1639 |
+
$this->tokenIndex = ($this->tokenIndex + 1) & 3;
|
1640 |
+
$token = $this->tokens[$this->tokenIndex];
|
1641 |
+
if ($token->type != TOKEN_NEWLINE || $this->scanNewlines)
|
1642 |
+
return $token->type;
|
1643 |
+
}
|
1644 |
+
|
1645 |
+
$conditional_comment = false;
|
1646 |
+
|
1647 |
+
// strip whitespace and comments
|
1648 |
+
while(true)
|
1649 |
+
{
|
1650 |
+
$input = $this->getInput($chunksize);
|
1651 |
+
|
1652 |
+
// whitespace handling; gobble up \r as well (effectively we don't have support for MAC newlines!)
|
1653 |
+
$re = $this->scanNewlines ? '/^[ \r\t]+/' : '/^\s+/';
|
1654 |
+
if (preg_match($re, $input, $match))
|
1655 |
+
{
|
1656 |
+
$spaces = $match[0];
|
1657 |
+
$spacelen = strlen($spaces);
|
1658 |
+
$this->cursor += $spacelen;
|
1659 |
+
if (!$this->scanNewlines)
|
1660 |
+
$this->lineno += substr_count($spaces, "\n");
|
1661 |
+
|
1662 |
+
if ($spacelen == $chunksize)
|
1663 |
+
continue; // complete chunk contained whitespace
|
1664 |
+
|
1665 |
+
$input = $this->getInput($chunksize);
|
1666 |
+
if ($input == '' || $input[0] != '/')
|
1667 |
+
break;
|
1668 |
+
}
|
1669 |
+
|
1670 |
+
// Comments
|
1671 |
+
if (!preg_match('/^\/(?:\*(@(?:cc_on|if|elif|else|end))?(?:.|\n)*?\*\/|\/.*)/', $input, $match))
|
1672 |
+
{
|
1673 |
+
if (!$chunksize)
|
1674 |
+
break;
|
1675 |
+
|
1676 |
+
// retry with a full chunk fetch; this also prevents breakage of long regular expressions (which will never match a comment)
|
1677 |
+
$chunksize = null;
|
1678 |
+
continue;
|
1679 |
+
}
|
1680 |
+
|
1681 |
+
// check if this is a conditional (JScript) comment
|
1682 |
+
if (!empty($match[1]))
|
1683 |
+
{
|
1684 |
+
//$match[0] = '/*' . $match[1];
|
1685 |
+
$conditional_comment = true;
|
1686 |
+
break;
|
1687 |
+
}
|
1688 |
+
else
|
1689 |
+
{
|
1690 |
+
$this->cursor += strlen($match[0]);
|
1691 |
+
$this->lineno += substr_count($match[0], "\n");
|
1692 |
+
}
|
1693 |
+
}
|
1694 |
+
|
1695 |
+
if ($input == '')
|
1696 |
+
{
|
1697 |
+
$tt = TOKEN_END;
|
1698 |
+
$match = array('');
|
1699 |
+
}
|
1700 |
+
elseif ($conditional_comment)
|
1701 |
+
{
|
1702 |
+
$tt = TOKEN_CONDCOMMENT_MULTILINE;
|
1703 |
+
}
|
1704 |
+
else
|
1705 |
+
{
|
1706 |
+
switch ($input[0])
|
1707 |
+
{
|
1708 |
+
case '0': case '1': case '2': case '3': case '4':
|
1709 |
+
case '5': case '6': case '7': case '8': case '9':
|
1710 |
+
if (preg_match('/^\d+\.\d*(?:[eE][-+]?\d+)?|^\d+(?:\.\d*)?[eE][-+]?\d+/', $input, $match))
|
1711 |
+
{
|
1712 |
+
$tt = TOKEN_NUMBER;
|
1713 |
+
}
|
1714 |
+
elseif (preg_match('/^0[xX][\da-fA-F]+|^0[0-7]*|^\d+/', $input, $match))
|
1715 |
+
{
|
1716 |
+
// this should always match because of \d+
|
1717 |
+
$tt = TOKEN_NUMBER;
|
1718 |
+
}
|
1719 |
+
break;
|
1720 |
+
|
1721 |
+
case '"':
|
1722 |
+
case "'":
|
1723 |
+
if (preg_match('/^"(?:\\\\(?:.|\r?\n)|[^\\\\"\r\n])*"|^\'(?:\\\\(?:.|\r?\n)|[^\\\\\'\r\n])*\'/', $input, $match))
|
1724 |
+
{
|
1725 |
+
$tt = TOKEN_STRING;
|
1726 |
+
}
|
1727 |
+
else
|
1728 |
+
{
|
1729 |
+
if ($chunksize)
|
1730 |
+
return $this->get(null); // retry with a full chunk fetch
|
1731 |
+
|
1732 |
+
throw $this->newSyntaxError('Unterminated string literal');
|
1733 |
+
}
|
1734 |
+
break;
|
1735 |
+
|
1736 |
+
case '/':
|
1737 |
+
if ($this->scanOperand && preg_match('/^\/((?:\\\\.|\[(?:\\\\.|[^\]])*\]|[^\/])+)\/([gimy]*)/', $input, $match))
|
1738 |
+
{
|
1739 |
+
$tt = TOKEN_REGEXP;
|
1740 |
+
break;
|
1741 |
+
}
|
1742 |
+
// fall through
|
1743 |
+
|
1744 |
+
case '|':
|
1745 |
+
case '^':
|
1746 |
+
case '&':
|
1747 |
+
case '<':
|
1748 |
+
case '>':
|
1749 |
+
case '+':
|
1750 |
+
case '-':
|
1751 |
+
case '*':
|
1752 |
+
case '%':
|
1753 |
+
case '=':
|
1754 |
+
case '!':
|
1755 |
+
// should always match
|
1756 |
+
preg_match($this->opRegExp, $input, $match);
|
1757 |
+
$op = $match[0];
|
1758 |
+
if (in_array($op, $this->assignOps) && $input[strlen($op)] == '=')
|
1759 |
+
{
|
1760 |
+
$tt = OP_ASSIGN;
|
1761 |
+
$match[0] .= '=';
|
1762 |
+
}
|
1763 |
+
else
|
1764 |
+
{
|
1765 |
+
$tt = $op;
|
1766 |
+
if ($this->scanOperand)
|
1767 |
+
{
|
1768 |
+
if ($op == OP_PLUS)
|
1769 |
+
$tt = OP_UNARY_PLUS;
|
1770 |
+
elseif ($op == OP_MINUS)
|
1771 |
+
$tt = OP_UNARY_MINUS;
|
1772 |
+
}
|
1773 |
+
$op = null;
|
1774 |
+
}
|
1775 |
+
break;
|
1776 |
+
|
1777 |
+
case '.':
|
1778 |
+
if (preg_match('/^\.\d+(?:[eE][-+]?\d+)?/', $input, $match))
|
1779 |
+
{
|
1780 |
+
$tt = TOKEN_NUMBER;
|
1781 |
+
break;
|
1782 |
+
}
|
1783 |
+
// fall through
|
1784 |
+
|
1785 |
+
case ';':
|
1786 |
+
case ',':
|
1787 |
+
case '?':
|
1788 |
+
case ':':
|
1789 |
+
case '~':
|
1790 |
+
case '[':
|
1791 |
+
case ']':
|
1792 |
+
case '{':
|
1793 |
+
case '}':
|
1794 |
+
case '(':
|
1795 |
+
case ')':
|
1796 |
+
// these are all single
|
1797 |
+
$match = array($input[0]);
|
1798 |
+
$tt = $input[0];
|
1799 |
+
break;
|
1800 |
+
|
1801 |
+
case '@':
|
1802 |
+
throw $this->newSyntaxError('Illegal token');
|
1803 |
+
break;
|
1804 |
+
|
1805 |
+
case "\n":
|
1806 |
+
if ($this->scanNewlines)
|
1807 |
+
{
|
1808 |
+
$match = array("\n");
|
1809 |
+
$tt = TOKEN_NEWLINE;
|
1810 |
+
}
|
1811 |
+
else
|
1812 |
+
throw $this->newSyntaxError('Illegal token');
|
1813 |
+
break;
|
1814 |
+
|
1815 |
+
default:
|
1816 |
+
// FIXME: add support for unicode and unicode escape sequence \uHHHH
|
1817 |
+
if (preg_match('/^[$\w]+/', $input, $match))
|
1818 |
+
{
|
1819 |
+
$tt = in_array($match[0], $this->keywords) ? $match[0] : TOKEN_IDENTIFIER;
|
1820 |
+
}
|
1821 |
+
else
|
1822 |
+
throw $this->newSyntaxError('Illegal token');
|
1823 |
+
}
|
1824 |
+
}
|
1825 |
+
|
1826 |
+
$this->tokenIndex = ($this->tokenIndex + 1) & 3;
|
1827 |
+
|
1828 |
+
if (!isset($this->tokens[$this->tokenIndex]))
|
1829 |
+
$this->tokens[$this->tokenIndex] = new JSToken();
|
1830 |
+
|
1831 |
+
$token = $this->tokens[$this->tokenIndex];
|
1832 |
+
$token->type = $tt;
|
1833 |
+
|
1834 |
+
if ($tt == OP_ASSIGN)
|
1835 |
+
$token->assignOp = $op;
|
1836 |
+
|
1837 |
+
$token->start = $this->cursor;
|
1838 |
+
|
1839 |
+
$token->value = $match[0];
|
1840 |
+
$this->cursor += strlen($match[0]);
|
1841 |
+
|
1842 |
+
$token->end = $this->cursor;
|
1843 |
+
$token->lineno = $this->lineno;
|
1844 |
+
|
1845 |
+
return $tt;
|
1846 |
+
}
|
1847 |
+
|
1848 |
+
public function unget()
|
1849 |
+
{
|
1850 |
+
if (++$this->lookahead == 4)
|
1851 |
+
throw $this->newSyntaxError('PANIC: too much lookahead!');
|
1852 |
+
|
1853 |
+
$this->tokenIndex = ($this->tokenIndex - 1) & 3;
|
1854 |
+
}
|
1855 |
+
|
1856 |
+
public function newSyntaxError($m)
|
1857 |
+
{
|
1858 |
+
return new Exception('Parse error: ' . $m . ' in file \'' . $this->filename . '\' on line ' . $this->lineno);
|
1859 |
+
}
|
1860 |
+
}
|
1861 |
+
|
1862 |
+
class JSToken
|
1863 |
+
{
|
1864 |
+
public $type;
|
1865 |
+
public $value;
|
1866 |
+
public $start;
|
1867 |
+
public $end;
|
1868 |
+
public $lineno;
|
1869 |
+
public $assignOp;
|
1870 |
+
}
|
1871 |
+
|
1872 |
+
?>
|
lib/minify/lib/Minify.php
CHANGED
@@ -28,7 +28,8 @@ require_once 'Minify/Source.php';
|
|
28 |
* @link http://code.google.com/p/minify/
|
29 |
*/
|
30 |
class Minify {
|
31 |
-
|
|
|
32 |
const TYPE_CSS = 'text/css';
|
33 |
const TYPE_HTML = 'text/html';
|
34 |
// there is some debate over the ideal JS Content-Type, but this is the
|
@@ -94,16 +95,17 @@ class Minify {
|
|
94 |
* 'quiet' : set to true to have serve() return an array rather than sending
|
95 |
* any headers/output (default false)
|
96 |
*
|
97 |
-
* 'encodeOutput' : to disable content encoding,
|
|
|
98 |
*
|
99 |
* 'encodeMethod' : generally you should let this be determined by
|
100 |
* HTTP_Encoder (leave null), but you can force a particular encoding
|
101 |
-
* to be returned, by setting this to 'gzip'
|
102 |
*
|
103 |
* 'encodeLevel' : level of encoding compression (0 to 9, default 9)
|
104 |
*
|
105 |
* 'contentTypeCharset' : appended to the Content-Type header sent. Set to a falsey
|
106 |
-
* value to remove. (default '
|
107 |
*
|
108 |
* 'maxAge' : set this to the number of seconds the client should use its cache
|
109 |
* before revalidating with the server. This sets Cache-Control: max-age and the
|
@@ -155,7 +157,8 @@ class Minify {
|
|
155 |
* with keys "success" (bool), "statusCode" (int), "content" (string), and
|
156 |
* "headers" (array).
|
157 |
*/
|
158 |
-
public static function serve($controller, $options = array())
|
|
|
159 |
if (is_string($controller)) {
|
160 |
// make $controller into object
|
161 |
$class = 'Minify_Controller_' . $controller;
|
@@ -197,11 +200,29 @@ class Minify {
|
|
197 |
self::$_options['maxAge'] = 0;
|
198 |
}
|
199 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
// check client cache
|
201 |
require_once 'HTTP/ConditionalGet.php';
|
202 |
$cgOptions = array(
|
203 |
'lastModifiedTime' => self::$_options['lastModifiedTime']
|
204 |
,'isPublic' => self::$_options['isPublic']
|
|
|
205 |
);
|
206 |
if (self::$_options['maxAge'] > 0) {
|
207 |
$cgOptions['maxAge'] = self::$_options['maxAge'];
|
@@ -226,23 +247,6 @@ class Minify {
|
|
226 |
unset($cg);
|
227 |
}
|
228 |
|
229 |
-
// determine encoding
|
230 |
-
if (self::$_options['encodeOutput']) {
|
231 |
-
if (self::$_options['encodeMethod'] !== null) {
|
232 |
-
// controller specifically requested this
|
233 |
-
$contentEncoding = self::$_options['encodeMethod'];
|
234 |
-
} else {
|
235 |
-
// sniff request header
|
236 |
-
require_once 'HTTP/Encoder.php';
|
237 |
-
// depending on what the client accepts, $contentEncoding may be
|
238 |
-
// 'x-gzip' while our internal encodeMethod is 'gzip'. Calling
|
239 |
-
// getAcceptedEncoding() with false leaves out compress as an option.
|
240 |
-
list(self::$_options['encodeMethod'], $contentEncoding) = HTTP_Encoder::getAcceptedEncoding(false);
|
241 |
-
}
|
242 |
-
} else {
|
243 |
-
self::$_options['encodeMethod'] = ''; // identity (no encoding)
|
244 |
-
}
|
245 |
-
|
246 |
if (self::$_options['contentType'] === self::TYPE_CSS
|
247 |
&& self::$_options['rewriteCssUris']) {
|
248 |
reset($controller->sources);
|
@@ -263,12 +267,9 @@ class Minify {
|
|
263 |
// output the content, as they do not require ever loading the file into
|
264 |
// memory.
|
265 |
$cacheId = 'minify_' . self::_getCacheId();
|
266 |
-
$
|
267 |
-
?
|
268 |
-
|
269 |
-
: '.zg')
|
270 |
-
: '';
|
271 |
-
$fullCacheId = $cacheId . $encodingExtension;
|
272 |
// check cache for valid entry
|
273 |
$cacheIsReady = self::$_cache->isValid($fullCacheId, self::$_options['lastModifiedTime']);
|
274 |
if ($cacheIsReady) {
|
@@ -277,9 +278,8 @@ class Minify {
|
|
277 |
// generate & cache content
|
278 |
$content = self::_combineMinify();
|
279 |
self::$_cache->store($cacheId, $content);
|
280 |
-
if (function_exists('
|
281 |
-
self::$_cache->store($cacheId . '.
|
282 |
-
self::$_cache->store($cacheId . '.zg', gzencode($content, self::$_options['encodeLevel']));
|
283 |
}
|
284 |
}
|
285 |
} else {
|
@@ -289,9 +289,7 @@ class Minify {
|
|
289 |
}
|
290 |
if (! $cacheIsReady && self::$_options['encodeMethod']) {
|
291 |
// still need to encode
|
292 |
-
$content = (
|
293 |
-
? gzdeflate($content, self::$_options['encodeLevel'])
|
294 |
-
: gzencode($content, self::$_options['encodeLevel']);
|
295 |
}
|
296 |
|
297 |
// add headers
|
@@ -303,6 +301,8 @@ class Minify {
|
|
303 |
: self::$_options['contentType'];
|
304 |
if (self::$_options['encodeMethod'] !== '') {
|
305 |
$headers['Content-Encoding'] = $contentEncoding;
|
|
|
|
|
306 |
$headers['Vary'] = 'Accept-Encoding';
|
307 |
}
|
308 |
|
@@ -368,11 +368,11 @@ class Minify {
|
|
368 |
if (isset($_SERVER['SERVER_SOFTWARE'])
|
369 |
&& 0 === strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/')
|
370 |
) {
|
371 |
-
$_SERVER['DOCUMENT_ROOT'] = substr(
|
372 |
$_SERVER['PATH_TRANSLATED']
|
373 |
,0
|
374 |
,strlen($_SERVER['PATH_TRANSLATED']) - strlen($_SERVER['SCRIPT_NAME'])
|
375 |
-
);
|
376 |
if ($unsetPathInfo) {
|
377 |
unset($_SERVER['PATH_INFO']);
|
378 |
}
|
@@ -419,7 +419,8 @@ class Minify {
|
|
419 |
*
|
420 |
* @return string
|
421 |
*/
|
422 |
-
protected static function _combineMinify()
|
|
|
423 |
$type = self::$_options['contentType']; // ease readability
|
424 |
|
425 |
// when combining scripts, make sure all statements separated and
|
@@ -492,7 +493,8 @@ class Minify {
|
|
492 |
*
|
493 |
* @return string
|
494 |
*/
|
495 |
-
protected static function _getCacheId()
|
|
|
496 |
return md5(serialize(array(
|
497 |
Minify_Source::getDigest(self::$_controller->sources)
|
498 |
,self::$_options['minifiers']
|
@@ -506,7 +508,8 @@ class Minify {
|
|
506 |
* Bubble CSS @imports to the top or prepend a warning if an
|
507 |
* @import is detected not at the top.
|
508 |
*/
|
509 |
-
protected static function _handleCssImports($css)
|
|
|
510 |
if (self::$_options['bubbleCssImports']) {
|
511 |
// bubble CSS imports
|
512 |
preg_match_all('/@import.*?;/', $css, $imports);
|
28 |
* @link http://code.google.com/p/minify/
|
29 |
*/
|
30 |
class Minify {
|
31 |
+
|
32 |
+
const VERSION = '2.1.3';
|
33 |
const TYPE_CSS = 'text/css';
|
34 |
const TYPE_HTML = 'text/html';
|
35 |
// there is some debate over the ideal JS Content-Type, but this is the
|
95 |
* 'quiet' : set to true to have serve() return an array rather than sending
|
96 |
* any headers/output (default false)
|
97 |
*
|
98 |
+
* 'encodeOutput' : set to false to disable content encoding, and not send
|
99 |
+
* the Vary header (default true)
|
100 |
*
|
101 |
* 'encodeMethod' : generally you should let this be determined by
|
102 |
* HTTP_Encoder (leave null), but you can force a particular encoding
|
103 |
+
* to be returned, by setting this to 'gzip' or '' (no encoding)
|
104 |
*
|
105 |
* 'encodeLevel' : level of encoding compression (0 to 9, default 9)
|
106 |
*
|
107 |
* 'contentTypeCharset' : appended to the Content-Type header sent. Set to a falsey
|
108 |
+
* value to remove. (default 'utf-8')
|
109 |
*
|
110 |
* 'maxAge' : set this to the number of seconds the client should use its cache
|
111 |
* before revalidating with the server. This sets Cache-Control: max-age and the
|
157 |
* with keys "success" (bool), "statusCode" (int), "content" (string), and
|
158 |
* "headers" (array).
|
159 |
*/
|
160 |
+
public static function serve($controller, $options = array())
|
161 |
+
{
|
162 |
if (is_string($controller)) {
|
163 |
// make $controller into object
|
164 |
$class = 'Minify_Controller_' . $controller;
|
200 |
self::$_options['maxAge'] = 0;
|
201 |
}
|
202 |
|
203 |
+
// determine encoding
|
204 |
+
if (self::$_options['encodeOutput']) {
|
205 |
+
if (self::$_options['encodeMethod'] !== null) {
|
206 |
+
// controller specifically requested this
|
207 |
+
$contentEncoding = self::$_options['encodeMethod'];
|
208 |
+
} else {
|
209 |
+
// sniff request header
|
210 |
+
require_once 'HTTP/Encoder.php';
|
211 |
+
// depending on what the client accepts, $contentEncoding may be
|
212 |
+
// 'x-gzip' while our internal encodeMethod is 'gzip'. Calling
|
213 |
+
// getAcceptedEncoding(false, false) leaves out compress and deflate as options.
|
214 |
+
list(self::$_options['encodeMethod'], $contentEncoding) = HTTP_Encoder::getAcceptedEncoding(false, false);
|
215 |
+
}
|
216 |
+
} else {
|
217 |
+
self::$_options['encodeMethod'] = ''; // identity (no encoding)
|
218 |
+
}
|
219 |
+
|
220 |
// check client cache
|
221 |
require_once 'HTTP/ConditionalGet.php';
|
222 |
$cgOptions = array(
|
223 |
'lastModifiedTime' => self::$_options['lastModifiedTime']
|
224 |
,'isPublic' => self::$_options['isPublic']
|
225 |
+
,'encoding' => self::$_options['encodeMethod']
|
226 |
);
|
227 |
if (self::$_options['maxAge'] > 0) {
|
228 |
$cgOptions['maxAge'] = self::$_options['maxAge'];
|
247 |
unset($cg);
|
248 |
}
|
249 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
250 |
if (self::$_options['contentType'] === self::TYPE_CSS
|
251 |
&& self::$_options['rewriteCssUris']) {
|
252 |
reset($controller->sources);
|
267 |
// output the content, as they do not require ever loading the file into
|
268 |
// memory.
|
269 |
$cacheId = 'minify_' . self::_getCacheId();
|
270 |
+
$fullCacheId = (self::$_options['encodeMethod'])
|
271 |
+
? $cacheId . '.gz'
|
272 |
+
: $cacheId;
|
|
|
|
|
|
|
273 |
// check cache for valid entry
|
274 |
$cacheIsReady = self::$_cache->isValid($fullCacheId, self::$_options['lastModifiedTime']);
|
275 |
if ($cacheIsReady) {
|
278 |
// generate & cache content
|
279 |
$content = self::_combineMinify();
|
280 |
self::$_cache->store($cacheId, $content);
|
281 |
+
if (function_exists('gzencode')) {
|
282 |
+
self::$_cache->store($cacheId . '.gz', gzencode($content, self::$_options['encodeLevel']));
|
|
|
283 |
}
|
284 |
}
|
285 |
} else {
|
289 |
}
|
290 |
if (! $cacheIsReady && self::$_options['encodeMethod']) {
|
291 |
// still need to encode
|
292 |
+
$content = gzencode($content, self::$_options['encodeLevel']);
|
|
|
|
|
293 |
}
|
294 |
|
295 |
// add headers
|
301 |
: self::$_options['contentType'];
|
302 |
if (self::$_options['encodeMethod'] !== '') {
|
303 |
$headers['Content-Encoding'] = $contentEncoding;
|
304 |
+
}
|
305 |
+
if (self::$_options['encodeOutput']) {
|
306 |
$headers['Vary'] = 'Accept-Encoding';
|
307 |
}
|
308 |
|
368 |
if (isset($_SERVER['SERVER_SOFTWARE'])
|
369 |
&& 0 === strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/')
|
370 |
) {
|
371 |
+
$_SERVER['DOCUMENT_ROOT'] = rtrim(substr(
|
372 |
$_SERVER['PATH_TRANSLATED']
|
373 |
,0
|
374 |
,strlen($_SERVER['PATH_TRANSLATED']) - strlen($_SERVER['SCRIPT_NAME'])
|
375 |
+
), '\\');
|
376 |
if ($unsetPathInfo) {
|
377 |
unset($_SERVER['PATH_INFO']);
|
378 |
}
|
419 |
*
|
420 |
* @return string
|
421 |
*/
|
422 |
+
protected static function _combineMinify()
|
423 |
+
{
|
424 |
$type = self::$_options['contentType']; // ease readability
|
425 |
|
426 |
// when combining scripts, make sure all statements separated and
|
493 |
*
|
494 |
* @return string
|
495 |
*/
|
496 |
+
protected static function _getCacheId()
|
497 |
+
{
|
498 |
return md5(serialize(array(
|
499 |
Minify_Source::getDigest(self::$_controller->sources)
|
500 |
,self::$_options['minifiers']
|
508 |
* Bubble CSS @imports to the top or prepend a warning if an
|
509 |
* @import is detected not at the top.
|
510 |
*/
|
511 |
+
protected static function _handleCssImports($css)
|
512 |
+
{
|
513 |
if (self::$_options['bubbleCssImports']) {
|
514 |
// bubble CSS imports
|
515 |
preg_match_all('/@import.*?;/', $css, $imports);
|
lib/minify/lib/Minify/CSS/Compressor.php
CHANGED
@@ -176,6 +176,7 @@ class Minify_CSS_Compressor {
|
|
176 |
*/
|
177 |
protected function _commentCB($m)
|
178 |
{
|
|
|
179 |
$m = $m[1];
|
180 |
// $m is the comment content w/o the surrounding tokens,
|
181 |
// but the return value will replace the entire comment.
|
@@ -219,7 +220,11 @@ class Minify_CSS_Compressor {
|
|
219 |
$this->_inHack = false;
|
220 |
return '/**/';
|
221 |
}
|
222 |
-
|
|
|
|
|
|
|
|
|
223 |
}
|
224 |
|
225 |
/**
|
176 |
*/
|
177 |
protected function _commentCB($m)
|
178 |
{
|
179 |
+
$hasSurroundingWs = (trim($m[0]) !== $m[1]);
|
180 |
$m = $m[1];
|
181 |
// $m is the comment content w/o the surrounding tokens,
|
182 |
// but the return value will replace the entire comment.
|
220 |
$this->_inHack = false;
|
221 |
return '/**/';
|
222 |
}
|
223 |
+
// Issue 107: if there's any surrounding whitespace, it may be important, so
|
224 |
+
// replace the comment with a single space
|
225 |
+
return $hasSurroundingWs // remove all other comments
|
226 |
+
? ' '
|
227 |
+
: '';
|
228 |
}
|
229 |
|
230 |
/**
|
lib/minify/lib/Minify/CSS/UriRewriter.php
CHANGED
@@ -236,12 +236,14 @@ class Minify_CSS_UriRewriter {
|
|
236 |
self::$debugText .= "docroot stripped : {$path}\n";
|
237 |
|
238 |
// fix to root-relative URI
|
239 |
-
|
|
|
|
|
240 |
// remove /./ and /../ where possible
|
241 |
$uri = str_replace('/./', '/', $uri);
|
242 |
// inspired by patch from Oleg Cherniy
|
243 |
do {
|
244 |
-
$uri = preg_replace('@/[^/]+/\\.\\./@', '/', $uri,
|
245 |
} while ($changed);
|
246 |
|
247 |
self::$debugText .= "traversals removed : {$uri}\n\n";
|
@@ -249,24 +251,20 @@ class Minify_CSS_UriRewriter {
|
|
249 |
return $uri;
|
250 |
}
|
251 |
|
252 |
-
|
253 |
-
|
254 |
/**
|
255 |
-
* Get realpath with any trailing slash removed
|
|
|
256 |
*
|
257 |
* @param string $path
|
258 |
*
|
259 |
-
* @return mixed
|
260 |
*/
|
261 |
protected static function _realpath($path)
|
262 |
{
|
263 |
-
$
|
264 |
-
if (
|
265 |
-
|
266 |
}
|
267 |
-
|
268 |
-
return ($last === '/' || $last === '\\')
|
269 |
-
? substr($path, 0, strlen($path) - 1)
|
270 |
-
: $path;
|
271 |
}
|
272 |
}
|
236 |
self::$debugText .= "docroot stripped : {$path}\n";
|
237 |
|
238 |
// fix to root-relative URI
|
239 |
+
|
240 |
+
$uri = strtr($path, '/\\', '//');
|
241 |
+
|
242 |
// remove /./ and /../ where possible
|
243 |
$uri = str_replace('/./', '/', $uri);
|
244 |
// inspired by patch from Oleg Cherniy
|
245 |
do {
|
246 |
+
$uri = preg_replace('@/[^/]+/\\.\\./@', '/', $uri, 1, $changed);
|
247 |
} while ($changed);
|
248 |
|
249 |
self::$debugText .= "traversals removed : {$uri}\n\n";
|
251 |
return $uri;
|
252 |
}
|
253 |
|
|
|
|
|
254 |
/**
|
255 |
+
* Get realpath with any trailing slash removed. If realpath() fails,
|
256 |
+
* just remove the trailing slash.
|
257 |
*
|
258 |
* @param string $path
|
259 |
*
|
260 |
+
* @return mixed path with no trailing slash
|
261 |
*/
|
262 |
protected static function _realpath($path)
|
263 |
{
|
264 |
+
$realPath = realpath($path);
|
265 |
+
if ($realPath !== false) {
|
266 |
+
$path = $realPath;
|
267 |
}
|
268 |
+
return rtrim($path, '/\\');
|
|
|
|
|
|
|
269 |
}
|
270 |
}
|
lib/minify/lib/Minify/Cache/File.php
CHANGED
@@ -110,6 +110,16 @@ class Minify_Cache_File {
|
|
110 |
}
|
111 |
}
|
112 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
private $_path = null;
|
114 |
private $_locking = null;
|
115 |
}
|
110 |
}
|
111 |
}
|
112 |
|
113 |
+
/**
|
114 |
+
* Fetch the cache path used
|
115 |
+
*
|
116 |
+
* @return string
|
117 |
+
*/
|
118 |
+
public function getPath()
|
119 |
+
{
|
120 |
+
return $this->_path;
|
121 |
+
}
|
122 |
+
|
123 |
private $_path = null;
|
124 |
private $_locking = null;
|
125 |
}
|
lib/minify/lib/Minify/Controller/Base.php
CHANGED
@@ -45,7 +45,7 @@ abstract class Minify_Controller_Base {
|
|
45 |
,'encodeMethod' => null // determine later
|
46 |
,'encodeLevel' => 9
|
47 |
,'minifierOptions' => array() // no minifier options
|
48 |
-
,'contentTypeCharset' => '
|
49 |
,'maxAge' => 1800 // 30 minutes
|
50 |
,'rewriteCssUris' => true
|
51 |
,'bubbleCssImports' => false
|
@@ -71,7 +71,7 @@ abstract class Minify_Controller_Base {
|
|
71 |
* @return array minifier callbacks for common types
|
72 |
*/
|
73 |
public function getDefaultMinifers() {
|
74 |
-
$ret[Minify::TYPE_JS] = array('
|
75 |
$ret[Minify::TYPE_CSS] = array('Minify_CSS', 'minify');
|
76 |
$ret[Minify::TYPE_HTML] = array('Minify_HTML', 'minify');
|
77 |
return $ret;
|
45 |
,'encodeMethod' => null // determine later
|
46 |
,'encodeLevel' => 9
|
47 |
,'minifierOptions' => array() // no minifier options
|
48 |
+
,'contentTypeCharset' => 'utf-8'
|
49 |
,'maxAge' => 1800 // 30 minutes
|
50 |
,'rewriteCssUris' => true
|
51 |
,'bubbleCssImports' => false
|
71 |
* @return array minifier callbacks for common types
|
72 |
*/
|
73 |
public function getDefaultMinifers() {
|
74 |
+
$ret[Minify::TYPE_JS] = array('JSMin', 'minify');
|
75 |
$ret[Minify::TYPE_CSS] = array('Minify_CSS', 'minify');
|
76 |
$ret[Minify::TYPE_HTML] = array('Minify_HTML', 'minify');
|
77 |
return $ret;
|
lib/minify/lib/Minify/Controller/Files.php
CHANGED
@@ -40,7 +40,14 @@ class Minify_Controller_Files extends Minify_Controller_Base {
|
|
40 |
*/
|
41 |
public function setupSources($options) {
|
42 |
// strip controller options
|
43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
unset($options['files']);
|
45 |
|
46 |
$sources = array();
|
40 |
*/
|
41 |
public function setupSources($options) {
|
42 |
// strip controller options
|
43 |
+
|
44 |
+
$files = $options['files'];
|
45 |
+
// if $files is a single object, casting will break it
|
46 |
+
if (is_object($files)) {
|
47 |
+
$files = array($files);
|
48 |
+
} elseif (! is_array($files)) {
|
49 |
+
$files = (array)$files;
|
50 |
+
}
|
51 |
unset($options['files']);
|
52 |
|
53 |
$sources = array();
|
lib/minify/lib/Minify/Controller/Groups.php
CHANGED
@@ -59,7 +59,15 @@ class Minify_Controller_Groups extends Minify_Controller_Base {
|
|
59 |
return $options;
|
60 |
}
|
61 |
$sources = array();
|
62 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
if ($file instanceof Minify_Source) {
|
64 |
$sources[] = $file;
|
65 |
continue;
|
59 |
return $options;
|
60 |
}
|
61 |
$sources = array();
|
62 |
+
|
63 |
+
$files = $groups[$pi];
|
64 |
+
// if $files is a single object, casting will break it
|
65 |
+
if (is_object($files)) {
|
66 |
+
$files = array($files);
|
67 |
+
} elseif (! is_array($files)) {
|
68 |
+
$files = (array)$files;
|
69 |
+
}
|
70 |
+
foreach ($files as $file) {
|
71 |
if ($file instanceof Minify_Source) {
|
72 |
$sources[] = $file;
|
73 |
continue;
|
lib/minify/lib/Minify/Controller/MinApp.php
CHANGED
@@ -40,7 +40,15 @@ class Minify_Controller_MinApp extends Minify_Controller_Base {
|
|
40 |
$this->log("A group configuration for \"{$_GET['g']}\" was not set");
|
41 |
return $options;
|
42 |
}
|
43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
if ($file instanceof Minify_Source) {
|
45 |
$sources[] = $file;
|
46 |
continue;
|
40 |
$this->log("A group configuration for \"{$_GET['g']}\" was not set");
|
41 |
return $options;
|
42 |
}
|
43 |
+
|
44 |
+
$files = $cOptions['groups'][$_GET['g']];
|
45 |
+
// if $files is a single object, casting will break it
|
46 |
+
if (is_object($files)) {
|
47 |
+
$files = array($files);
|
48 |
+
} elseif (! is_array($files)) {
|
49 |
+
$files = (array)$files;
|
50 |
+
}
|
51 |
+
foreach ($files as $file) {
|
52 |
if ($file instanceof Minify_Source) {
|
53 |
$sources[] = $file;
|
54 |
continue;
|
lib/minify/lib/Minify/Controller/Page.php
CHANGED
@@ -52,16 +52,13 @@ class Minify_Controller_Page extends Minify_Controller_Base {
|
|
52 |
// this will be the 2nd argument passed to Minify_HTML::minify()
|
53 |
$sourceSpec['minifyOptions'] = array(
|
54 |
'cssMinifier' => array('Minify_CSS', 'minify')
|
55 |
-
,'jsMinifier' => array('
|
56 |
);
|
57 |
$this->_loadCssJsMinifiers = true;
|
58 |
unset($options['minifyAll']);
|
59 |
}
|
60 |
$this->sources[] = new Minify_Source($sourceSpec);
|
61 |
|
62 |
-
// may not be needed
|
63 |
-
//$options['minifier'] = array('Minify_HTML', 'minify');
|
64 |
-
|
65 |
$options['contentType'] = Minify::TYPE_HTML;
|
66 |
return $options;
|
67 |
}
|
@@ -76,8 +73,8 @@ class Minify_Controller_Page extends Minify_Controller_Base {
|
|
76 |
if ($this->_loadCssJsMinifiers) {
|
77 |
// Minify will not call for these so we must manually load
|
78 |
// them when Minify/HTML.php is called for.
|
79 |
-
|
80 |
-
|
81 |
}
|
82 |
parent::loadMinifier($minifierCallback); // load Minify/HTML.php
|
83 |
}
|
52 |
// this will be the 2nd argument passed to Minify_HTML::minify()
|
53 |
$sourceSpec['minifyOptions'] = array(
|
54 |
'cssMinifier' => array('Minify_CSS', 'minify')
|
55 |
+
,'jsMinifier' => array('JSMin', 'minify')
|
56 |
);
|
57 |
$this->_loadCssJsMinifiers = true;
|
58 |
unset($options['minifyAll']);
|
59 |
}
|
60 |
$this->sources[] = new Minify_Source($sourceSpec);
|
61 |
|
|
|
|
|
|
|
62 |
$options['contentType'] = Minify::TYPE_HTML;
|
63 |
return $options;
|
64 |
}
|
73 |
if ($this->_loadCssJsMinifiers) {
|
74 |
// Minify will not call for these so we must manually load
|
75 |
// them when Minify/HTML.php is called for.
|
76 |
+
require_once 'Minify/CSS.php';
|
77 |
+
require_once 'JSMin.php';
|
78 |
}
|
79 |
parent::loadMinifier($minifierCallback); // load Minify/HTML.php
|
80 |
}
|
lib/minify/lib/Minify/ImportProcessor.php
CHANGED
@@ -143,12 +143,12 @@ class Minify_ImportProcessor {
|
|
143 |
// strip doc root
|
144 |
$path = substr($path, strlen(realpath($_SERVER['DOCUMENT_ROOT'])));
|
145 |
// fix to absolute URL
|
146 |
-
$url = strtr($path,
|
147 |
// remove /./ and /../ where possible
|
148 |
$url = str_replace('/./', '/', $url);
|
149 |
// inspired by patch from Oleg Cherniy
|
150 |
do {
|
151 |
-
$url = preg_replace('@/[^/]+/\\.\\./@', '/', $url,
|
152 |
} while ($changed);
|
153 |
}
|
154 |
}
|
143 |
// strip doc root
|
144 |
$path = substr($path, strlen(realpath($_SERVER['DOCUMENT_ROOT'])));
|
145 |
// fix to absolute URL
|
146 |
+
$url = strtr($path, '/\\', '//');
|
147 |
// remove /./ and /../ where possible
|
148 |
$url = str_replace('/./', '/', $url);
|
149 |
// inspired by patch from Oleg Cherniy
|
150 |
do {
|
151 |
+
$url = preg_replace('@/[^/]+/\\.\\./@', '/', $url, 1, $changed);
|
152 |
} while ($changed);
|
153 |
}
|
154 |
}
|
lib/minify/lib/Minify/Packer.php
CHANGED
@@ -7,9 +7,9 @@
|
|
7 |
* include_path).
|
8 |
* @link http://joliclic.free.fr/php/javascript-packer/en/
|
9 |
*
|
10 |
-
* Be aware that, as long as HTTP encoding is used, scripts minified
|
11 |
-
*
|
12 |
-
*
|
13 |
*
|
14 |
* @package Minify
|
15 |
*/
|
7 |
* include_path).
|
8 |
* @link http://joliclic.free.fr/php/javascript-packer/en/
|
9 |
*
|
10 |
+
* Be aware that, as long as HTTP encoding is used, scripts minified with JSMin
|
11 |
+
* will provide better client-side performance, as they need not be unpacked in
|
12 |
+
* client-side code.
|
13 |
*
|
14 |
* @package Minify
|
15 |
*/
|
lib/minify/lib/Minify/Source.php
CHANGED
@@ -35,6 +35,11 @@ class Minify_Source {
|
|
35 |
*/
|
36 |
public $filepath = null;
|
37 |
|
|
|
|
|
|
|
|
|
|
|
38 |
/**
|
39 |
* Create a Minify_Source
|
40 |
*
|
@@ -54,6 +59,17 @@ class Minify_Source {
|
|
54 |
if (0 === strpos($spec['filepath'], '//')) {
|
55 |
$spec['filepath'] = $_SERVER['DOCUMENT_ROOT'] . substr($spec['filepath'], 1);
|
56 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
$this->filepath = $spec['filepath'];
|
58 |
$this->_id = $spec['filepath'];
|
59 |
$this->lastModified = filemtime($spec['filepath'])
|
@@ -70,6 +86,9 @@ class Minify_Source {
|
|
70 |
? $spec['lastModified']
|
71 |
: time();
|
72 |
}
|
|
|
|
|
|
|
73 |
if (isset($spec['minifier'])) {
|
74 |
$this->minifier = $spec['minifier'];
|
75 |
}
|
@@ -143,7 +162,7 @@ class Minify_Source {
|
|
143 |
}
|
144 |
|
145 |
/**
|
146 |
-
*
|
147 |
*
|
148 |
* This is called if the user doesn't pass in a 'contentType' options
|
149 |
*
|
@@ -153,18 +172,9 @@ class Minify_Source {
|
|
153 |
*/
|
154 |
public static function getContentType($sources)
|
155 |
{
|
156 |
-
$exts = array(
|
157 |
-
'css' => Minify::TYPE_CSS
|
158 |
-
,'js' => Minify::TYPE_JS
|
159 |
-
,'html' => Minify::TYPE_HTML
|
160 |
-
);
|
161 |
foreach ($sources as $source) {
|
162 |
-
if (
|
163 |
-
|
164 |
-
$ext = array_pop($segments);
|
165 |
-
if (isset($exts[$ext])) {
|
166 |
-
return $exts[$ext];
|
167 |
-
}
|
168 |
}
|
169 |
}
|
170 |
return 'text/plain';
|
35 |
*/
|
36 |
public $filepath = null;
|
37 |
|
38 |
+
/**
|
39 |
+
* @var string HTTP Content Type (Minify requires one of the constants Minify::TYPE_*)
|
40 |
+
*/
|
41 |
+
public $contentType = null;
|
42 |
+
|
43 |
/**
|
44 |
* Create a Minify_Source
|
45 |
*
|
59 |
if (0 === strpos($spec['filepath'], '//')) {
|
60 |
$spec['filepath'] = $_SERVER['DOCUMENT_ROOT'] . substr($spec['filepath'], 1);
|
61 |
}
|
62 |
+
$segments = explode('.', $spec['filepath']);
|
63 |
+
$ext = strtolower(array_pop($segments));
|
64 |
+
switch ($ext) {
|
65 |
+
case 'js' : $this->contentType = 'application/x-javascript';
|
66 |
+
break;
|
67 |
+
case 'css' : $this->contentType = 'text/css';
|
68 |
+
break;
|
69 |
+
case 'htm' : // fallthrough
|
70 |
+
case 'html' : $this->contentType = 'text/html';
|
71 |
+
break;
|
72 |
+
}
|
73 |
$this->filepath = $spec['filepath'];
|
74 |
$this->_id = $spec['filepath'];
|
75 |
$this->lastModified = filemtime($spec['filepath'])
|
86 |
? $spec['lastModified']
|
87 |
: time();
|
88 |
}
|
89 |
+
if (isset($spec['contentType'])) {
|
90 |
+
$this->contentType = $spec['contentType'];
|
91 |
+
}
|
92 |
if (isset($spec['minifier'])) {
|
93 |
$this->minifier = $spec['minifier'];
|
94 |
}
|
162 |
}
|
163 |
|
164 |
/**
|
165 |
+
* Get content type from a group of sources
|
166 |
*
|
167 |
* This is called if the user doesn't pass in a 'contentType' options
|
168 |
*
|
172 |
*/
|
173 |
public static function getContentType($sources)
|
174 |
{
|
|
|
|
|
|
|
|
|
|
|
175 |
foreach ($sources as $source) {
|
176 |
+
if ($source->contentType !== null) {
|
177 |
+
return $source->contentType;
|
|
|
|
|
|
|
|
|
178 |
}
|
179 |
}
|
180 |
return 'text/plain';
|
lib/minify/m.php
CHANGED
@@ -76,6 +76,7 @@ if (isset($_GET['f'])) {
|
|
76 |
if (preg_match($filenamePattern, $filename)
|
77 |
&& file_exists(BP . $filename)) {
|
78 |
//Minify can't handle the regex for the email addresses - change to file with less demanding regex for email validation
|
|
|
79 |
$filename = str_replace("validation.js", "validation-4min.js", $filename);
|
80 |
$servefiles[]=BP . $filename;
|
81 |
}
|
76 |
if (preg_match($filenamePattern, $filename)
|
77 |
&& file_exists(BP . $filename)) {
|
78 |
//Minify can't handle the regex for the email addresses - change to file with less demanding regex for email validation
|
79 |
+
//fixed in Magento 1.4 (keep this workaround in place until support for versions below 1.4 is removed)
|
80 |
$filename = str_replace("validation.js", "validation-4min.js", $filename);
|
81 |
$servefiles[]=BP . $filename;
|
82 |
}
|
package.xml
CHANGED
@@ -1,20 +1,21 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Fooman_Speedster</name>
|
4 |
-
<version>1.0
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0 / BSD see files</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Speed up your store by combining, compressing and caching JS and CSS.</summary>
|
10 |
-
<description><p>FOOMAN Speedster 1.
|
11 |
<p>Speed up your store by combining, compressing and caching JS and CSS.</p>
|
12 |
<p>Please read the installation instructions and latest changes <a href="http://www.magentocommerce.com/extension/457/fooman-speedster">here.</a></p></description>
|
13 |
-
<notes>fixed
|
|
|
14 |
<authors><author><name>Kristof Ringleff</name><user>auto-converted</user><email>kristof@fooman.co.nz</email></author></authors>
|
15 |
-
<date>
|
16 |
-
<time>
|
17 |
-
<contents><target name="mage"><dir name="app"><dir name="etc"><dir name="modules"><file name="Fooman_Speedster.xml" hash="94d303cd2552119381411068d2e7809b"/></dir></dir></dir><dir name="js"><dir name="prototype"><file name="validation-4min.js" hash="
|
18 |
<compatible/>
|
19 |
<dependencies/>
|
20 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Fooman_Speedster</name>
|
4 |
+
<version>1.1.0</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0 / BSD see files</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Speed up your store by combining, compressing and caching JS and CSS.</summary>
|
10 |
+
<description><p>FOOMAN Speedster 1.1</p>
|
11 |
<p>Speed up your store by combining, compressing and caching JS and CSS.</p>
|
12 |
<p>Please read the installation instructions and latest changes <a href="http://www.magentocommerce.com/extension/457/fooman-speedster">here.</a></p></description>
|
13 |
+
<notes>fixed canonical url
|
14 |
+
updated validation file</notes>
|
15 |
<authors><author><name>Kristof Ringleff</name><user>auto-converted</user><email>kristof@fooman.co.nz</email></author></authors>
|
16 |
+
<date>2010-04-01</date>
|
17 |
+
<time>14:10:06</time>
|
18 |
+
<contents><target name="mage"><dir name="app"><dir name="etc"><dir name="modules"><file name="Fooman_Speedster.xml" hash="94d303cd2552119381411068d2e7809b"/></dir></dir></dir><dir name="js"><dir name="prototype"><file name="validation-4min.js" hash="f8865bb7a07f1a22dc5a08ed362daa83"/></dir></dir><dir name="lib"><dir name="minify"><file name=".htaccess" hash="4d6b8833e4ccae2d2393dfeba369b894"/></dir></dir><dir name="var"><dir name="minifycache"><file name="cache.txt" hash="5709c1d6a6f85fb7b7ea2eef23086b46"/><file name="minify_1b6ee19a4c3855472c3e3dd57413cb65" hash="6a5733db3132a5d49183fc5f124709df"/><file name="minify_1b6ee19a4c3855472c3e3dd57413cb65.gz" hash="fa1b71ed6bf3e1e546a9f1cd440e7f1e"/><file name="minify_9c58e36f7d68249efd03de258c77c943" hash="6e6f08dfd0403115a2aef5743673daff"/><file name="minify_9c58e36f7d68249efd03de258c77c943.gz" hash="a1ebda590e3cce3a56edda99110bc587"/><file name="minify_95afbee78c0f49b564250d655add1ca9" hash="a36015a93d7f6e5c86841fa58de1b5b6"/><file name="minify_95afbee78c0f49b564250d655add1ca9.gz" hash="f4f1e77134b49ff6f7fea41698041925"/><file name="minify_676fb2e38e9cb2203204bcf556430103" hash="bd60df770b2ba3c91871385e19551f1e"/><file name="minify_676fb2e38e9cb2203204bcf556430103.gz" hash="aac811ba6a666e5d4b4ec696f8955c1f"/><file name="minify_900559c432c691b50ba33f48b4909a4f" hash="849466c766e24345e767622c11a64ba5"/><file name="minify_900559c432c691b50ba33f48b4909a4f.gz" hash="725c160ffe2cb85c567ff7785e35c964"/><file name="minify_bcb6d8461d369d3fefce349c1958be75" hash="9ad2f5e606ba9812ee49ca9abd499f7a"/><file name="minify_bcb6d8461d369d3fefce349c1958be75.gz" hash="30e43e9caeb64f61614e1c14d0788548"/><file name="minify_c8063ab3f62bf2c69f8ccbb72f282ebf" hash="88fa754fb2010559e65bca81c7b59032"/><file name="minify_c8063ab3f62bf2c69f8ccbb72f282ebf.gz" hash="1c346c10e08724d917ebe5caf93417f6"/><file name="minify_db8fc92a79f3619bba917ee2a7d54930" hash="d5010324aea35d2271875005dfe87c79"/><file name="minify_db8fc92a79f3619bba917ee2a7d54930.gz" hash="e281dbe66d412a9e2e004ea954cecd1e"/><file name="minify_f98a277d2fb39a774858112e07fed300" hash="3f9b3674fdb30d3b341048da7ba4947d"/><file name="minify_f98a277d2fb39a774858112e07fed300.gz" hash="b9527b7a805a1e1a1af6903cfc4d0bd2"/></dir></dir></target><target name="magecommunity"><dir name="Fooman"><dir name="Speedster"><dir name="Block"><dir name="Adminhtml"><dir name="Page"><file name="Head.php" hash="d850197d05af7b972eda1ef6bf3da2ed"/></dir></dir><dir name="Page"><dir name="Html"><file name="Head.php" hash="11c60b924b64c8c5a1d73ebe0189c94f"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="ab637511f511e55d290ae4d3f5c7d87e"/></dir></dir></dir></target><target name="magelib"><dir name="minify"><dir name="lib"><dir name="HTTP"><file name="ConditionalGet.php" hash="f9760a41a6688eca78c27e4afd760a02"/><file name="Encoder.php" hash="71d0651830bbf9153191f1749bf54e62"/></dir><dir name="Minify"><dir name="Cache"><file name="APC.php" hash="2766ccf5e1e4d6e38d3ec128dbc4bc6f"/><file name="File.php" hash="26d02518b2035f1b1ae49da001baa26a"/><file name="Memcache.php" hash="fa208d979196d0479e3aacec853502c8"/></dir><dir name="Controller"><file name="Base.php" hash="766127568874bfa7e2a9985bb028321c"/><file name="Files.php" hash="18a48dde08afee8620d3a79b36addb9d"/><file name="Groups.php" hash="12c1e6818e7a7115e38eeb9492970019"/><file name="MinApp.php" hash="88a6eb77b74178d0e29a099e0e6ccc63"/><file name="Page.php" hash="02bc8325362e435d4af75a6ec138c2d4"/><file name="Version1.php" hash="4369c8793be1d5cf061a99651b16da26"/></dir><dir name="CSS"><file name="Compressor.php" hash="b514fdc1f7c010031631994c77a18bf6"/><file name="UriRewriter.php" hash="5ab5dfdb489e28a39a4e9d6ad70117d6"/></dir><file name="Build.php" hash="6e329c2acc80b72cfde52be6918940bb"/><file name="BuildSpeedster.php" hash="b93d3e802e2bf7b31eecf9537d3e92f9"/><file name="CommentPreserver.php" hash="86bab05265083b57935503bdd735ce74"/><file name="CSS.php" hash="cdeb49c0f35a6cef166c6cfee7f1dd95"/><file name="HTML.php" hash="e774a70491041048fef690d4b162e0ce"/><file name="ImportProcessor.php" hash="5ce5f2c30830af408d82d4d1511e0c8a"/><file name="Javascript.php" hash="1baa1a43818fcecb89c2a08b40a544da"/><file name="Lines.php" hash="80b2932320c98d1e84aa7f48fceb35e8"/><file name="Logger.php" hash="b2844a8c35e028b9ee725be05adbcf7e"/><file name="Packer.php" hash="25e6f213205f060853db918c2d67ef06"/><file name="Source.php" hash="f7055f963f00e5ae9f5b0005d5e4a5ec"/><file name="YUICompressor.php" hash="13840856d6340e70e7289035827b8b7d"/></dir><dir name="Solar"><file name="Dir.php" hash="6c88f363f6830ac4dc3917eac3c9d78c"/></dir><file name="FirePHP.php" hash="f619b5a77fee4b21e4397e98d858fbf4"/><file name="JSMin.php" hash="5716028656e1d402c98a43ee18648dd3"/><file name="JSMinPlus.php" hash="9d982f55fe9526105eaf9c0fc661263e"/><file name="Minify.php" hash="091d6a6c852610303b405bcfa363b21f"/></dir><file name="HISTORY.txt" hash="72bf6c9ceb63bab5fc35aff334a79bd2"/><file name="LICENSE.txt" hash="911d374696c0a5e9e6e848e7f20d0ee1"/><file name="m.php" hash="111d3b974d094a156425044a764ce721"/><file name="README.txt" hash="6e961a626ae6814c72fab53bcad4a4a7"/></dir></target></contents>
|
19 |
<compatible/>
|
20 |
<dependencies/>
|
21 |
</package>
|
var/minifycache/minify_1b6ee19a4c3855472c3e3dd57413cb65
ADDED
@@ -0,0 +1,385 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var varienTabs=new Class.create();varienTabs.prototype={initialize:function(containerId,destElementId,activeTabId,shadowTabs){this.containerId=containerId;this.destElementId=destElementId;this.activeTab=null;this.tabOnClick=this.tabMouseClick.bindAsEventListener(this);this.tabs=$$('#'+this.containerId+' li a.tab-item-link');this.hideAllTabsContent();for(var tab=0;tab<this.tabs.length;tab++){Event.observe(this.tabs[tab],'click',this.tabOnClick);if($(this.destElementId)){var tabContentElement=$(this.getTabContentElementId(this.tabs[tab]));if(tabContentElement&&tabContentElement.parentNode.id!=this.destElementId){$(this.destElementId).appendChild(tabContentElement);tabContentElement.container=this;tabContentElement.statusBar=this.tabs[tab];tabContentElement.tabObject=this.tabs[tab];this.tabs[tab].contentMoved=true;this.tabs[tab].container=this;this.tabs[tab].show=function(){this.container.showTabContent(this);}
|
2 |
+
if(varienGlobalEvents){varienGlobalEvents.fireEvent('moveTab',{tab:this.tabs[tab]});}}}
|
3 |
+
if(this.tabs[tab].id&&shadowTabs&&shadowTabs[this.tabs[tab].id]){this.tabs[tab].shadowTabs=shadowTabs[this.tabs[tab].id];}}
|
4 |
+
this.displayFirst=activeTabId;Event.observe(window,'load',this.moveTabContentInDest.bind(this));},setSkipDisplayFirstTab:function(){this.displayFirst=null;},moveTabContentInDest:function(){for(var tab=0;tab<this.tabs.length;tab++){if($(this.destElementId)&&!this.tabs[tab].contentMoved){var tabContentElement=$(this.getTabContentElementId(this.tabs[tab]));if(tabContentElement&&tabContentElement.parentNode.id!=this.destElementId){$(this.destElementId).appendChild(tabContentElement);tabContentElement.container=this;tabContentElement.statusBar=this.tabs[tab];tabContentElement.tabObject=this.tabs[tab];this.tabs[tab].container=this;this.tabs[tab].show=function(){this.container.showTabContent(this);}
|
5 |
+
if(varienGlobalEvents){varienGlobalEvents.fireEvent('moveTab',{tab:this.tabs[tab]});}}}}
|
6 |
+
if(this.displayFirst){this.showTabContent($(this.displayFirst));this.displayFirst=null;}},getTabContentElementId:function(tab){if(tab){return tab.id+'_content';}
|
7 |
+
return false;},tabMouseClick:function(event){var tab=Event.findElement(event,'a');if((tab.href.indexOf('#')!=tab.href.length-1)&&!(Element.hasClassName(tab,'ajax'))){location.href=tab.href;}
|
8 |
+
else{this.showTabContent(tab);}
|
9 |
+
Event.stop(event);},hideAllTabsContent:function(){for(var tab in this.tabs){this.hideTabContent(this.tabs[tab]);}},showTabContentImmediately:function(tab){this.hideAllTabsContent();var tabContentElement=$(this.getTabContentElementId(tab));if(tabContentElement){Element.show(tabContentElement);Element.addClassName(tab,'active');if(tab.shadowTabs&&tab.shadowTabs.length){for(var k in tab.shadowTabs){this.loadShadowTab($(tab.shadowTabs[k]));}}
|
10 |
+
if(!Element.hasClassName(tab,'ajax only')){Element.removeClassName(tab,'notloaded');}
|
11 |
+
this.activeTab=tab;}
|
12 |
+
if(varienGlobalEvents){varienGlobalEvents.fireEvent('showTab',{tab:tab});}},showTabContent:function(tab){var tabContentElement=$(this.getTabContentElementId(tab));if(tabContentElement){if(this.activeTab!=tab){if(varienGlobalEvents){if(varienGlobalEvents.fireEvent('tabChangeBefore',$(this.getTabContentElementId(this.activeTab))).indexOf('cannotchange')!=-1){return;};}}
|
13 |
+
var isAjax=Element.hasClassName(tab,'ajax');var isEmpty=tabContentElement.innerHTML==''&&tab.href.indexOf('#')!=tab.href.length-1;var isNotLoaded=Element.hasClassName(tab,'notloaded');if(isAjax&&(isEmpty||isNotLoaded))
|
14 |
+
{new Ajax.Request(tab.href,{parameters:{form_key:FORM_KEY},evalScripts:true,onSuccess:function(transport){try{if(transport.responseText.isJSON()){var response=transport.responseText.evalJSON()
|
15 |
+
if(response.error){alert(response.message);}
|
16 |
+
if(response.ajaxExpired&&response.ajaxRedirect){setLocation(response.ajaxRedirect);}}else{$(tabContentElement.id).update(transport.responseText);this.showTabContentImmediately(tab)}}
|
17 |
+
catch(e){$(tabContentElement.id).update(transport.responseText);this.showTabContentImmediately(tab)}}.bind(this)});}
|
18 |
+
else{this.showTabContentImmediately(tab);}}},loadShadowTab:function(tab){var tabContentElement=$(this.getTabContentElementId(tab));if(tabContentElement&&Element.hasClassName(tab,'ajax')&&Element.hasClassName(tab,'notloaded')){new Ajax.Request(tab.href,{parameters:{form_key:FORM_KEY},evalScripts:true,onSuccess:function(transport){try{if(transport.responseText.isJSON()){var response=transport.responseText.evalJSON()
|
19 |
+
if(response.error){alert(response.message);}
|
20 |
+
if(response.ajaxExpired&&response.ajaxRedirect){setLocation(response.ajaxRedirect);}}else{$(tabContentElement.id).update(transport.responseText);if(!Element.hasClassName(tab,'ajax only')){Element.removeClassName(tab,'notloaded');}}}
|
21 |
+
catch(e){$(tabContentElement.id).update(transport.responseText);if(!Element.hasClassName(tab,'ajax only')){Element.removeClassName(tab,'notloaded');}}}.bind(this)});}},hideTabContent:function(tab){var tabContentElement=$(this.getTabContentElementId(tab));if($(this.destElementId)&&tabContentElement){Element.hide(tabContentElement);Element.removeClassName(tab,'active');}
|
22 |
+
if(varienGlobalEvents){varienGlobalEvents.fireEvent('hideTab',{tab:tab});}}};var varienForm=new Class.create();varienForm.prototype={initialize:function(formId,validationUrl){this.formId=formId;this.validationUrl=validationUrl;this.submitUrl=false;if($(this.formId)){this.validator=new Validation(this.formId,{onElementValidate:this.checkErrors.bind(this)});}
|
23 |
+
this.errorSections=$H({});},checkErrors:function(result,elm){if(!result)
|
24 |
+
elm.setHasError(true,this);else
|
25 |
+
elm.setHasError(false,this);},submit:function(url){if(typeof varienGlobalEvents!=undefined){varienGlobalEvents.fireEvent('formSubmit',this.formId);}
|
26 |
+
this.errorSections=$H({});this.canShowError=true;this.submitUrl=url;if(this.validator&&this.validator.validate()){if(this.validationUrl){this._validate();}
|
27 |
+
else{this._submit();}
|
28 |
+
return true;}
|
29 |
+
return false;},_validate:function(){new Ajax.Request(this.validationUrl,{method:'post',parameters:$(this.formId).serialize(),onComplete:this._processValidationResult.bind(this),onFailure:this._processFailure.bind(this)});},_processValidationResult:function(transport){var response=transport.responseText.evalJSON();if(response.error){if($('messages')){$('messages').innerHTML=response.message;}}
|
30 |
+
else{this._submit();}},_processFailure:function(transport){location.href=BASE_URL;},_submit:function(){if(this.submitUrl){$(this.formId).action=this.submitUrl;}
|
31 |
+
$(this.formId).submit();}}
|
32 |
+
Validation.isVisible=function(elm){while(elm&&elm.tagName!='BODY'){if(elm.disabled)return false;if((Element.hasClassName(elm,'template')&&Element.hasClassName(elm,'no-display'))||Element.hasClassName(elm,'ignore-validate')){return false;}
|
33 |
+
elm=elm.parentNode;}
|
34 |
+
return true;}
|
35 |
+
var varienElementMethods={setHasChanges:function(element,event){if($(element)&&$(element).hasClassName('no-changes'))return;var elm=element;while(elm&&elm.tagName!='BODY'){if(elm.statusBar)
|
36 |
+
Element.addClassName($(elm.statusBar),'changed')
|
37 |
+
elm=elm.parentNode;}},setHasError:function(element,flag,form){var elm=element;while(elm&&elm.tagName!='BODY'){if(elm.statusBar){if(form.errorSections.keys().indexOf(elm.statusBar.id)<0)
|
38 |
+
form.errorSections.set(elm.statusBar.id,flag);if(flag){Element.addClassName($(elm.statusBar),'error');if(form.canShowError&&$(elm.statusBar).show){form.canShowError=false;$(elm.statusBar).show();}
|
39 |
+
form.errorSections.set(elm.statusBar.id,flag);}
|
40 |
+
else if(!form.errorSections.get(elm.statusBar.id)){Element.removeClassName($(elm.statusBar),'error')}}
|
41 |
+
elm=elm.parentNode;}
|
42 |
+
this.canShowElement=false;}}
|
43 |
+
Element.addMethods(varienElementMethods);varienWindowOnloadCache={};function varienWindowOnload(useCache){var dataElements=$$('input','select','textarea');for(var i=0;i<dataElements.length;i++){if(dataElements[i]&&dataElements[i].id){if((!useCache)||(!varienWindowOnloadCache[dataElements[i].id])){Event.observe(dataElements[i],'change',dataElements[i].setHasChanges.bind(dataElements[i]));if(useCache){varienWindowOnloadCache[dataElements[i].id]=true;}}}}}
|
44 |
+
Event.observe(window,'load',varienWindowOnload);RegionUpdater=Class.create();RegionUpdater.prototype={initialize:function(countryEl,regionTextEl,regionSelectEl,regions,disableAction,clearRegionValueOnDisable)
|
45 |
+
{this.countryEl=$(countryEl);this.regionTextEl=$(regionTextEl);this.regionSelectEl=$(regionSelectEl);this.regions=regions;this.disableAction=(typeof disableAction=='undefined')?'hide':disableAction;this.clearRegionValueOnDisable=(typeof clearRegionValueOnDisable=='undefined')?false:clearRegionValueOnDisable;if(this.regionSelectEl.options.length<=1){this.update();}
|
46 |
+
else{this.lastCountryId=this.countryEl.value;}
|
47 |
+
this.countryEl.changeUpdater=this.update.bind(this);Event.observe(this.countryEl,'change',this.update.bind(this));},update:function()
|
48 |
+
{if(this.regions[this.countryEl.value]){if(this.lastCountryId!=this.countryEl.value){var i,option,region,def;if(this.regionTextEl){def=this.regionTextEl.value.toLowerCase();this.regionTextEl.value='';}
|
49 |
+
if(!def){def=this.regionSelectEl.getAttribute('defaultValue');}
|
50 |
+
this.regionSelectEl.options.length=1;for(regionId in this.regions[this.countryEl.value]){region=this.regions[this.countryEl.value][regionId];option=document.createElement('OPTION');option.value=regionId;option.text=region.name;if(this.regionSelectEl.options.add){this.regionSelectEl.options.add(option);}else{this.regionSelectEl.appendChild(option);}
|
51 |
+
if(regionId==def||region.name.toLowerCase()==def||region.code.toLowerCase()==def){this.regionSelectEl.value=regionId;}}}
|
52 |
+
if(this.disableAction=='hide'){if(this.regionTextEl){this.regionTextEl.style.display='none';this.regionTextEl.style.disabled=true;}
|
53 |
+
this.regionSelectEl.style.display='';this.regionSelectEl.disabled=false;}else if(this.disableAction=='disable'){if(this.regionTextEl){this.regionTextEl.disabled=true;}
|
54 |
+
this.regionSelectEl.disabled=false;}
|
55 |
+
this.setMarkDisplay(this.regionSelectEl,true);this.lastCountryId=this.countryEl.value;}else{if(this.disableAction=='hide'){if(this.regionTextEl){this.regionTextEl.style.display='';this.regionTextEl.style.disabled=false;}
|
56 |
+
this.regionSelectEl.style.display='none';this.regionSelectEl.disabled=true;}else if(this.disableAction=='disable'){if(this.regionTextEl){this.regionTextEl.disabled=false;}
|
57 |
+
this.regionSelectEl.disabled=true;if(this.clearRegionValueOnDisable){this.regionSelectEl.value='';}}else if(this.disableAction=='nullify'){this.regionSelectEl.options.length=1;this.regionSelectEl.value='';this.regionSelectEl.selectedIndex=0;this.lastCountryId='';}
|
58 |
+
this.setMarkDisplay(this.regionSelectEl,false);}
|
59 |
+
varienGlobalEvents.fireEvent("address_country_changed",this.countryEl);},setMarkDisplay:function(elem,display){if(elem.parentNode.parentNode){var marks=Element.select(elem.parentNode.parentNode,'.required');if(marks[0]){display?marks[0].show():marks[0].hide();}}}}
|
60 |
+
regionUpdater=RegionUpdater;Event.pointerX=function(event){try{return event.pageX||(event.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft));}
|
61 |
+
catch(e){}}
|
62 |
+
Event.pointerY=function(event){try{return event.pageY||(event.clientY+(document.documentElement.scrollTop||document.body.scrollTop));}
|
63 |
+
catch(e){}}
|
64 |
+
SelectUpdater=Class.create();SelectUpdater.prototype={initialize:function(firstSelect,secondSelect,selectFirstMessage,noValuesMessage,values,selected)
|
65 |
+
{this.first=$(firstSelect);this.second=$(secondSelect);this.message=selectFirstMessage;this.values=values;this.noMessage=noValuesMessage;this.selected=selected;this.update();Event.observe(this.first,'change',this.update.bind(this));},update:function()
|
66 |
+
{this.second.length=0;this.second.value='';if(this.first.value&&this.values[this.first.value]){for(optionValue in this.values[this.first.value]){optionTitle=this.values[this.first.value][optionValue];this.addOption(this.second,optionValue,optionTitle);}
|
67 |
+
this.second.disabled=false;}else if(this.first.value&&!this.values[this.first.value]){this.addOption(this.second,'',this.noMessage);}else{this.addOption(this.second,'',this.message);this.second.disabled=true;}},addOption:function(select,value,text)
|
68 |
+
{option=document.createElement('OPTION');option.value=value;option.text=text;if(this.selected&&option.value==this.selected){option.selected=true;this.selected=false;}
|
69 |
+
if(select.options.add){select.options.add(option);}else{select.appendChild(option);}}}
|
70 |
+
FormElementDependenceController=Class.create();FormElementDependenceController.prototype={initialize:function(elementsMap)
|
71 |
+
{for(var idTo in elementsMap){for(var idFrom in elementsMap[idTo]){Event.observe($(idFrom),'change',this.trackChange.bindAsEventListener(this,idTo,elementsMap[idTo]));this.trackChange(null,idTo,elementsMap[idTo]);}}},trackChange:function(e,idTo,valuesFrom)
|
72 |
+
{var shouldShowUp=true;for(var idFrom in valuesFrom){if($(idFrom).value!=valuesFrom[idFrom]){shouldShowUp=false;}}
|
73 |
+
if(shouldShowUp){$(idTo).up(1).select('input','select').each(function(item){if(!item.type||item.type!='hidden'){item.disabled=false;}});$(idTo).up(1).show();}else{$(idTo).up(1).select('input','select').each(function(item){if(!item.type||item.type!='hidden'){item.disabled=true;}});$(idTo).up(1).hide();}}};var varienAccordion=new Class.create();varienAccordion.prototype={initialize:function(containerId,activeOnlyOne){this.containerId=containerId;this.activeOnlyOne=activeOnlyOne||false;this.container=$(this.containerId);this.items=$$('#'+this.containerId+' dt');this.loader=new varienLoader(true);var links=$$('#'+this.containerId+' dt a');for(var i in links){if(links[i].href){Event.observe(links[i],'click',this.clickItem.bind(this));this.items[i].dd=this.items[i].next('dd');this.items[i].link=links[i];}}
|
74 |
+
this.initFromCookie();},initFromCookie:function(){var activeItemId,visibility;if(this.activeOnlyOne&&(activeItemId=Cookie.read(this.cookiePrefix()+'active-item'))!==null){this.hideAllItems();this.showItem(this.getItemById(activeItemId));}else if(!this.activeOnlyOne){this.items.each(function(item){if((visibility=Cookie.read(this.cookiePrefix()+item.id))!==null){if(visibility==0){this.hideItem(item);}else{this.showItem(item);}}}.bind(this));}},cookiePrefix:function(){return'accordion-'+this.containerId+'-';},getItemById:function(itemId){var result=null;this.items.each(function(item){if(item.id==itemId){result=item;throw $break;}});return result;},clickItem:function(event){var item=Event.findElement(event,'dt');if(this.activeOnlyOne){this.hideAllItems();this.showItem(item);Cookie.write(this.cookiePrefix()+'active-item',item.id,30*24*60*60);}
|
75 |
+
else{if(this.isItemVisible(item)){this.hideItem(item);Cookie.write(this.cookiePrefix()+item.id,0,30*24*60*60);}
|
76 |
+
else{this.showItem(item);Cookie.write(this.cookiePrefix()+item.id,1,30*24*60*60);}}
|
77 |
+
Event.stop(event);},showItem:function(item){if(item&&item.link){if(item.link.href){this.loadContent(item);}
|
78 |
+
Element.addClassName(item,'open');Element.addClassName(item.dd,'open');}},hideItem:function(item){Element.removeClassName(item,'open');Element.removeClassName(item.dd,'open');},isItemVisible:function(item){return Element.hasClassName(item,'open');},loadContent:function(item){if(item.link.href.indexOf('#')==item.link.href.length-1){return;}
|
79 |
+
if(Element.hasClassName(item.link,'ajax')){this.loadingItem=item;this.loader.load(item.link.href,{updaterId:this.loadingItem.dd.id},this.setItemContent.bind(this));return;}
|
80 |
+
location.href=item.link.href;},setItemContent:function(content){if(content.isJSON){return;}
|
81 |
+
this.loadingItem.dd.innerHTML=content;},hideAllItems:function(){for(var i in this.items){if(this.items[i].id){Element.removeClassName(this.items[i],'open');Element.removeClassName(this.items[i].dd,'open');}}}};function setLocation(url){window.location.href=url;}
|
82 |
+
function confirmSetLocation(message,url){if(confirm(message)){setLocation(url);}
|
83 |
+
return false;}
|
84 |
+
function deleteConfirm(message,url){confirmSetLocation(message,url);}
|
85 |
+
function setElementDisable(element,disable){if($(element)){$(element).disabled=disable;}}
|
86 |
+
function toggleParentVis(obj){obj=$(obj).parentNode;if(obj.style.display=='none'){obj.style.display='';}else{obj.style.display='none';}}
|
87 |
+
function toggleFieldsetVis(obj){id=obj;obj=$(obj);if(obj.style.display=='none'){obj.style.display='';}else{obj.style.display='none';}
|
88 |
+
obj=obj.parentNode.childElements();for(var i=0;i<obj.length;i++){if(obj[i].id!=undefined&&obj[i].id==id&&obj[(i-1)].classNames()=='entry-edit-head')
|
89 |
+
{if(obj[i-1].style.display=='none'){obj[i-1].style.display='';}else{obj[i-1].style.display='none';}}}}
|
90 |
+
function toggleVis(obj){obj=$(obj);if(obj.style.display=='none'){obj.style.display='';}else{obj.style.display='none';}}
|
91 |
+
function imagePreview(element){if($(element)){var win=window.open('','preview','width=400,height=400,resizable=1,scrollbars=1');win.document.open();win.document.write('<body style="padding:0;margin:0"><img src="'+$(element).src+'" id="image_preview"/></body>');win.document.close();Event.observe(win,'load',function(){var img=win.document.getElementById('image_preview');win.resizeTo(img.width+40,img.height+80)});}}
|
92 |
+
function toggleValueElements(checkbox,container){if(container&&checkbox){var elems=Element.select(container,['select','input','textarea','button','img']);elems.each(function(elem){if(elem!=checkbox){elem.disabled=checkbox.checked;if(checkbox.checked){elem.addClassName('disabled');}else{elem.removeClassName('disabled');}
|
93 |
+
if(elem.tagName=='IMG'){checkbox.checked?elem.hide():elem.show();}};})}}
|
94 |
+
function submitAndReloadArea(area,url){if($(area)){var fields=$(area).select('input','select','textarea');var data=Form.serializeElements(fields,true);url=url+(url.match(new RegExp('\\?'))?'&isAjax=true':'?isAjax=true');new Ajax.Request(url,{parameters:$H(data),loaderArea:area,onSuccess:function(transport){try{if(transport.responseText.isJSON()){var response=transport.responseText.evalJSON()
|
95 |
+
if(response.error){alert(response.message);}
|
96 |
+
if(response.ajaxExpired&&response.ajaxRedirect){setLocation(response.ajaxRedirect);}}else{$(area).update(transport.responseText);}}
|
97 |
+
catch(e){$(area).update(transport.responseText);}}});}}
|
98 |
+
function syncOnchangeValue(baseElem,distElem){var compare={baseElem:baseElem,distElem:distElem}
|
99 |
+
Event.observe(baseElem,'change',function(){if($(this.baseElem)&&$(this.distElem)){$(this.distElem).value=$(this.baseElem).value;}}.bind(compare));}
|
100 |
+
function updateElementAtCursor(el,value,win){if(win==undefined){win=window.self;}
|
101 |
+
if(document.selection){el.focus();sel=win.document.selection.createRange();sel.text=value;}else if(el.selectionStart||el.selectionStart=='0'){var startPos=el.selectionStart;var endPos=el.selectionEnd;el.value=el.value.substring(0,startPos)+value+el.value.substring(endPos,el.value.length);}else{el.value+=value;}}
|
102 |
+
function firebugEnabled(){if(window.console&&window.console.firebug){return true;}
|
103 |
+
return false;}
|
104 |
+
function disableElements(search){$$('.'+search).each(function(elem){elem.disabled=true;elem.addClassName('disabled');});}
|
105 |
+
function enableElements(search){$$('.'+search).each(function(elem){elem.disabled=false;elem.removeClassName('disabled');});}
|
106 |
+
if(!navigator.appVersion.match('MSIE 6.')){var header,header_offset,header_copy;Event.observe(window,'load',function(){createTopButtonToolbarToggle();});function createTopButtonToolbarToggle()
|
107 |
+
{var headers=$$('.content-header');for(var i=0;i<headers.length;i++){if(!headers[i].hasClassName('skip-header')){header=headers[i];}}
|
108 |
+
if(!header){return;}
|
109 |
+
header_offset=Element.cumulativeOffset(header)[1];var buttons=$$('.content-buttons')[0];if(buttons){Element.insert(buttons,{before:'<div class="content-buttons-placeholder"></div>'});buttons.placeholder=buttons.previous('.content-buttons-placeholder');buttons.remove();buttons.placeholder.appendChild(buttons);header_offset=Element.cumulativeOffset(buttons)[1];}
|
110 |
+
header_copy=document.createElement('div');header_copy.appendChild(header.cloneNode(true));document.body.insertBefore(header_copy,document.body.lastChild)
|
111 |
+
$(header_copy).addClassName('content-header-floating');if($(header_copy).down('.content-buttons-placeholder')){$(header_copy).down('.content-buttons-placeholder').remove();}}
|
112 |
+
function updateTopButtonToolbarToggle()
|
113 |
+
{if(header_copy){header_copy.remove();}
|
114 |
+
createTopButtonToolbarToggle();floatingTopButtonToolbarToggle();}
|
115 |
+
function floatingTopButtonToolbarToggle(){if(!header||!header_copy||!header_copy.parentNode){return;}
|
116 |
+
var s;if(self.pageYOffset){s=self.pageYOffset;}else if(document.documentElement&&document.documentElement.scrollTop){s=document.documentElement.scrollTop;}else if(document.body){s=document.body.scrollTop;}
|
117 |
+
var buttons=$$('.content-buttons')[0];if(s>header_offset){if(buttons){if(!buttons.oldParent){buttons.oldParent=buttons.parentNode;buttons.oldBefore=buttons.previous();}
|
118 |
+
if(buttons.oldParent==buttons.parentNode){var dimensions=buttons.placeholder.getDimensions()
|
119 |
+
buttons.placeholder.style.width=dimensions.width+'px';buttons.placeholder.style.height=dimensions.height+'px';buttons.hide();buttons.remove();$(header_copy).down('div').appendChild(buttons);buttons.show();}}
|
120 |
+
header_copy.style.display='block';}else{if(buttons&&buttons.oldParent&&buttons.oldParent!=buttons.parentNode){buttons.remove();buttons.oldParent.insertBefore(buttons,buttons.oldBefore);}
|
121 |
+
header.style.visibility='visible';header_copy.style.display='none';}}
|
122 |
+
Event.observe(window,'scroll',floatingTopButtonToolbarToggle);Event.observe(window,'resize',floatingTopButtonToolbarToggle);}
|
123 |
+
var Cookie={all:function(){var pairs=document.cookie.split(';');var cookies={};pairs.each(function(item,index){var pair=item.strip().split('=');cookies[unescape(pair[0])]=unescape(pair[1]);});return cookies;},read:function(cookieName){var cookies=this.all();if(cookies[cookieName]){return cookies[cookieName];}
|
124 |
+
return null;},write:function(cookieName,cookieValue,cookieLifeTime){var expires='';if(cookieLifeTime){var date=new Date();date.setTime(date.getTime()+(cookieLifeTime*1000));expires='; expires='+date.toGMTString();}
|
125 |
+
var urlPath='/'+BASE_URL.split('/').slice(3).join('/');document.cookie=escape(cookieName)+"="+escape(cookieValue)+expires+"; path="+urlPath;},clear:function(cookieName){this.write(cookieName,'',-1);}};var Fieldset={cookiePrefix:'fh-',applyCollapse:function(containerId){if($(containerId+'-state')){collapsed=$(containerId+'-state').value==1?0:1;}else{collapsed=$(containerId+'-head').collapsed;}
|
126 |
+
if(collapsed==1||collapsed===undefined){$(containerId+'-head').removeClassName('open');$(containerId).hide();}else{$(containerId+'-head').addClassName('open');$(containerId).show();}},toggleCollapse:function(containerId,saveThroughAjax){if($(containerId+'-state')){collapsed=$(containerId+'-state').value==1?0:1;}else{collapsed=$(containerId+'-head').collapsed;}
|
127 |
+
if(collapsed==1||collapsed===undefined){if($(containerId+'-state')){$(containerId+'-state').value=1;}
|
128 |
+
$(containerId+'-head').collapsed=0;}else{if($(containerId+'-state')){$(containerId+'-state').value=0;}
|
129 |
+
$(containerId+'-head').collapsed=1;}
|
130 |
+
this.applyCollapse(containerId);if(typeof saveThroughAjax!="undefined"){this.saveState(saveThroughAjax,{container:containerId,value:$(containerId+'-state').value});}},addToPrefix:function(value){this.cookiePrefix+=value+'-';},saveState:function(url,parameters){new Ajax.Request(url,{method:'get',parameters:Object.toQueryString(parameters),loaderArea:false});}};var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(input){var output="";var chr1,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;input=Base64._utf8_encode(input);while(i<input.length){chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}else if(isNaN(chr3)){enc4=64;}
|
131 |
+
output=output+
|
132 |
+
this._keyStr.charAt(enc1)+this._keyStr.charAt(enc2)+
|
133 |
+
this._keyStr.charAt(enc3)+this._keyStr.charAt(enc4);}
|
134 |
+
return output;},decode:function(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i<input.length){enc1=this._keyStr.indexOf(input.charAt(i++));enc2=this._keyStr.indexOf(input.charAt(i++));enc3=this._keyStr.indexOf(input.charAt(i++));enc4=this._keyStr.indexOf(input.charAt(i++));chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2);}
|
135 |
+
if(enc4!=64){output=output+String.fromCharCode(chr3);}}
|
136 |
+
output=Base64._utf8_decode(output);return output;},mageEncode:function(input){return this.encode(input).replace(/\+/g,'-').replace(/\//g,'_').replace(/=/g,',');},mageDecode:function(output){output=output.replace(/\-/g,'+').replace(/_/g,'/').replace(/,/g,'=');return this.decode(output);},idEncode:function(input){return this.encode(input).replace(/\+/g,':').replace(/\//g,'_').replace(/=/g,'-');},idDecode:function(output){output=output.replace(/\-/g,'=').replace(/_/g,'/').replace(/\:/g,'\+');return this.decode(output);},_utf8_encode:function(string){string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n<string.length;n++){var c=string.charCodeAt(n);if(c<128){utftext+=String.fromCharCode(c);}
|
137 |
+
else if((c>127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128);}
|
138 |
+
else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128);}}
|
139 |
+
return utftext;},_utf8_decode:function(utftext){var string="";var i=0;var c=c1=c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){string+=String.fromCharCode(c);i++;}
|
140 |
+
else if((c>191)&&(c<224)){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode(((c&31)<<6)|(c2&63));i+=2;}
|
141 |
+
else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));i+=3;}}
|
142 |
+
return string;}};;function MultiSelector(list_target,field_name,max,new_element_html,delete_text,new_file_input){this.list_target=list_target;this.field_name=field_name;this.count=0;this.id=0;if(max){this.max=max;}else{this.max=-1;};this.new_element_html=new_element_html;this.delete_text=delete_text;this.new_file_input=new_file_input;this.addElement=function(element){if(element.tagName=='INPUT'&&element.type=='file'){this.id++;element.name=this.field_name+'[]';element.multi_selector=this;element.onchange=function(){var new_element=document.createElement('input');new_element.type='file';this.parentNode.insertBefore(new_element,this);this.multi_selector.addElement(new_element);this.multi_selector.addListRow(this);this.style.position='absolute';this.style.left='-1000px';};if(this.max!=-1&&this.count>=this.max){element.disabled=true;};this.count++;this.current_element=element;}else{alert('Error: not a file input element');};};this.addListRow=function(element){var new_row_input=document.createElement('input');new_row_input.type='text';new_row_input.name='general[position_new][]';new_row_input.size='3';new_row_input.value='0';var new_row_button=document.createElement('input');new_row_button.type='checkbox';new_row_button.value='Delete';var new_row_span=document.createElement('span');new_row_span.innerHTML=this.delete_text;table=this.list_target;noOfRows=table.rows.length;noOfCols=table.rows[noOfRows-2].cells.length;var x=table.insertRow(noOfRows-1);for(var j=0;j<noOfCols;j++){newCell=x.insertCell(j);newCell.align="center";newCell.valign="middle";if(j==3){newCell.appendChild(new_row_input);}
|
143 |
+
else if(j==4){newCell.appendChild(new_row_button);}
|
144 |
+
else{newCell.innerHTML=this.new_file_input.replace(/%id%/g,this.id).replace(/%j%/g,j);}}
|
145 |
+
new_row_button.onclick=function(){this.parentNode.element.parentNode.removeChild(this.parentNode.element);this.parentNode.parentNode.removeChild(this.parentNode);this.parentNode.element.multi_selector.count--;this.parentNode.element.multi_selector.current_element.disabled=false;return false;};};this.insRowLast=function(table){noOfRows=table.rows.length;noOfCols=table.rows[noOfRows-1].cells.length;var x=table.insertRow(noOfRows);for(var j=0;j<noOfCols;j++){newCell=x.insertCell(j);newCell.innerHTML="NEW CELL"+j;}};this.deleteRow=function(table,row){table.deleteRow(row);};this.deleteRow=function(table){noOfRows=table.rows.length;table.deleteRow(noOfRows-1);};};;var Product={};Product.Gallery=Class.create();Product.Gallery.prototype={images:[],file2id:{'no_selection':0},idIncrement:1,containerId:'',container:null,uploader:null,imageTypes:{},initialize:function(containerId,uploader,imageTypes){this.containerId=containerId,this.container=$(this.containerId);this.uploader=uploader;this.imageTypes=imageTypes;if(this.uploader){this.uploader.onFilesComplete=this.handleUploadComplete.bind(this);}
|
146 |
+
this.images=this.getElement('save').value.evalJSON();this.imagesValues=this.getElement('save_image').value.evalJSON();this.template=new Template('<tr id="__id__" class="preview">'+this.getElement('template').innerHTML+'</tr>',new RegExp('(^|.|\\r|\\n)(__([a-zA-Z0-9_]+)__)',''));this.fixParentTable();this.updateImages();varienGlobalEvents.attachEventHandler('moveTab',this.onImageTabMove.bind(this));},onImageTabMove:function(event){var imagesTab=false;this.container.ancestors().each(function(parentItem){if(parentItem.tabObject){imagesTab=parentItem.tabObject;throw $break;}}.bind(this));if(imagesTab&&event.tab&&event.tab.name&&imagesTab.name==event.tab.name){this.container.select('input[type="radio"]').each(function(radio){radio.observe('change',this.onChangeRadio);}.bind(this));this.updateImages();}},fixParentTable:function(){this.container.ancestors().each(function(parentItem){if(parentItem.tagName.toLowerCase()=='td'){parentItem.style.width='100%';}
|
147 |
+
if(parentItem.tagName.toLowerCase()=='table'){parentItem.style.width='100%';throw $break;}});},getElement:function(name){return $(this.containerId+'_'+name);},showUploader:function(){this.getElement('add_images_button').hide();this.getElement('uploader').show();},handleUploadComplete:function(files){files.each(function(item){if(!item.response.isJSON()){try{console.log(item.response);}catch(e2){alert(item.response);}
|
148 |
+
return;}
|
149 |
+
var response=item.response.evalJSON();if(response.error){return;}
|
150 |
+
var newImage={};newImage.url=response.url;newImage.file=response.file;newImage.label='';newImage.position=this.getNextPosition();newImage.disabled=0;newImage.removed=0;this.images.push(newImage);this.uploader.removeFile(item.id);}.bind(this));this.container.setHasChanges();this.updateImages();},updateImages:function(){this.getElement('save').value=this.images.toJSON();$H(this.imageTypes).each(function(pair){this.getFileElement('no_selection','cell-'+pair.key+' input').checked=true;}.bind(this));this.images.each(function(row){if(!$(this.prepareId(row.file))){this.createImageRow(row);}
|
151 |
+
this.updateVisualisation(row.file);}.bind(this));this.updateUseDefault(false);},onChangeRadio:function(evt){var element=Event.element(evt);element.setHasChanges();},createImageRow:function(image){var vars=Object.clone(image);vars.id=this.prepareId(image.file);var html=this.template.evaluate(vars);Element.insert(this.getElement('list'),{bottom:html});$(vars.id).select('input[type="radio"]').each(function(radio){radio.observe('change',this.onChangeRadio);}.bind(this));},prepareId:function(file){if(typeof this.file2id[file]=='undefined'){this.file2id[file]=this.idIncrement++;}
|
152 |
+
return this.containerId+'-image-'+this.file2id[file];},getNextPosition:function(){var maxPosition=0;this.images.each(function(item){if(parseInt(item.position)>maxPosition){maxPosition=parseInt(item.position);}});return maxPosition+1;},updateImage:function(file){var index=this.getIndexByFile(file);this.images[index].label=this.getFileElement(file,'cell-label input').value;this.images[index].position=this.getFileElement(file,'cell-position input').value;this.images[index].removed=(this.getFileElement(file,'cell-remove input').checked?1:0);this.images[index].disabled=(this.getFileElement(file,'cell-disable input').checked?1:0);this.getElement('save').value=this.images.toJSON();this.updateState(file);this.container.setHasChanges();},loadImage:function(file){var image=this.getImageByFile(file);this.getFileElement(file,'cell-image img').src=image.url;this.getFileElement(file,'cell-image img').show();this.getFileElement(file,'cell-image .place-holder').hide();},setProductImages:function(file){$H(this.imageTypes).each(function(pair){if(this.getFileElement(file,'cell-'+pair.key+' input').checked){this.imagesValues[pair.key]=(file=='no_selection'?null:file);}}.bind(this));this.getElement('save_image').value=$H(this.imagesValues).toJSON();},updateVisualisation:function(file){var image=this.getImageByFile(file);this.getFileElement(file,'cell-label input').value=image.label;this.getFileElement(file,'cell-position input').value=image.position;this.getFileElement(file,'cell-remove input').checked=(image.removed==1);this.getFileElement(file,'cell-disable input').checked=(image.disabled==1);$H(this.imageTypes).each(function(pair){if(this.imagesValues[pair.key]==file){this.getFileElement(file,'cell-'+pair.key+' input').checked=true;}}.bind(this));this.updateState(file);},updateState:function(file){if(this.getFileElement(file,'cell-disable input').checked){this.getFileElement(file,'cell-position input').disabled=true;}else{this.getFileElement(file,'cell-position input').disabled=false;}},getFileElement:function(file,element){var selector='#'+this.prepareId(file)+' .'+element;var elems=$$(selector);if(!elems[0]){try{console.log(selector);}catch(e2){alert(selector);}}
|
153 |
+
return $$('#'+this.prepareId(file)+' .'+element)[0];},getImageByFile:function(file){if(this.getIndexByFile(file)===null){return false;}
|
154 |
+
return this.images[this.getIndexByFile(file)];},getIndexByFile:function(file){var index;this.images.each(function(item,i){if(item.file==file){index=i;}});return index;},updateUseDefault:function(){if(this.getElement('default')){this.getElement('default').select('input').each(function(input){$(this.containerId).select('.cell-'+input.value+' input').each(function(radio){radio.disabled=input.checked;});}.bind(this));}
|
155 |
+
if(arguments.length==0){this.container.setHasChanges();}},handleUploadProgress:function(file){},handleUploadError:function(fileId){}};Product.AttributesBridge={tabsObject:false,bindTabs2Attributes:{},bind:function(tabId,attributesObject){this.bindTabs2Attributes[tabId]=attributesObject;},getAttributes:function(tabId){return this.bindTabs2Attributes[tabId];},setTabsObject:function(tabs){this.tabsObject=tabs;},getTabsObject:function(){return this.tabsObject;},addAttributeRow:function(data){$H(data).each(function(item){if(this.getTabsObject().activeTab.name!=item.key){this.getTabsObject().showTabContent($(item.key));}
|
156 |
+
this.getAttributes(item.key).addRow(item.value);}.bind(this));}};Product.Attributes=Class.create();Product.Attributes.prototype={config:{},containerId:null,initialize:function(containerId){this.containerId=containerId;},setConfig:function(config){this.config=config;Product.AttributesBridge.bind(this.getConfig().tab_id,this);},getConfig:function(){return this.config;},create:function(){var win=window.open(this.getConfig().url,'new_attribute','width=900,height=600,resizable=1,scrollbars=1');win.focus();},addRow:function(html){var attributesContainer=$$('#group_fields'+this.getConfig().group_id+' .form-list tbody')[0];Element.insert(attributesContainer,{bottom:html});var childs=attributesContainer.childElements();var element=childs[childs.size()-1].select('input','select','textarea')[0];if(element){window.scrollTo(0,Position.cumulativeOffset(element)[1]
|
157 |
+
+element.offsetHeight);}}};Product.Configurable=Class.create();Product.Configurable.prototype={initialize:function(attributes,links,idPrefix,grid,readonly){this.templatesSyntax=new RegExp('(^|.|\\r|\\n)(\'{{\\s*(\\w+)\\s*}}\')',"");this.attributes=attributes;this.idPrefix=idPrefix;this.links=$H(links);this.newProducts=[];this.readonly=readonly;this.addAttributeTemplate=new Template($(idPrefix+'attribute_template').innerHTML.replace(/__id__/g,"'{{html_id}}'").replace(/ template no-display/g,''),this.templatesSyntax);this.addValueTemplate=new Template($(idPrefix+'value_template').innerHTML.replace(/__id__/g,"'{{html_id}}'").replace(/ template no-display/g,''),this.templatesSyntax);this.pricingValueTemplate=new Template($(idPrefix+'simple_pricing').innerHTML,this.templatesSyntax);this.pricingValueViewTemplate=new Template($(idPrefix+'simple_pricing_view').innerHTML,this.templatesSyntax);this.container=$(idPrefix+'attributes');this.onLabelUpdate=this.updateLabel.bindAsEventListener(this);this.onValuePriceUpdate=this.updateValuePrice.bindAsEventListener(this);this.onValueTypeUpdate=this.updateValueType.bindAsEventListener(this);this.onValueDefaultUpdate=this.updateValueUseDefault.bindAsEventListener(this);this.createAttributes();this.grid=grid;this.grid.rowClickCallback=this.rowClick.bind(this);this.grid.initRowCallback=this.rowInit.bind(this);this.grid.checkboxCheckCallback=this.registerProduct.bind(this);this.grid.rows.each(function(row){this.rowInit(this.grid,row);}.bind(this));},createAttributes:function(){this.attributes.each(function(attribute,index){var li=$(document.createElement('LI'));li.className='attribute';li.id=this.idPrefix+'_attribute_'+index;attribute.html_id=li.id;if(attribute&&attribute.label&&attribute.label.blank()){attribute.label=' '}
|
158 |
+
var label_readonly='';var use_default_checked='';if(attribute.use_default=='1'){use_default_checked=' checked="checked"';label_readonly=' redonly="redonly"';}
|
159 |
+
var template=this.addAttributeTemplate.evaluate(attribute);template=template.replace(new RegExp(' readonly="label"','g'),label_readonly);template=template.replace(new RegExp(' checked="use_default"','g'),use_default_checked);li.update(template);li.attributeObject=attribute;this.container.appendChild(li);li.attributeValues=li.down('.attribute-values');if(attribute.values){attribute.values.each(function(value){this.createValueRow(li,value);}.bind(this));}
|
160 |
+
Event.observe(li.down('.attribute-label'),'change',this.onLabelUpdate);Event.observe(li.down('.attribute-label'),'keyup',this.onLabelUpdate);Event.observe(li.down('.attribute-use-default-label'),'change',this.onLabelUpdate);}.bind(this));if(!this.readonly){Sortable.create(this.container,{handle:'attribute-name-container',onUpdate:this.updatePositions.bind(this)});}
|
161 |
+
this.updateSaveInput();},updateLabel:function(event){var li=Event.findElement(event,'LI');var labelEl=li.down('.attribute-label');var defEl=li.down('.attribute-use-default-label');li.attributeObject.label=labelEl.value;if(defEl.checked){labelEl.readOnly=true;li.attributeObject.use_default=1;}else{labelEl.readOnly=false;li.attributeObject.use_default=0;}
|
162 |
+
this.updateSaveInput();},updatePositions:function(param){this.container.childElements().each(function(row,index){row.attributeObject.position=index;});this.updateSaveInput();},addNewProduct:function(productId,attributes){if(this.checkAttributes(attributes)){this.links.set(productId,this.cloneAttributes(attributes));}else{this.newProducts.push(productId);}
|
163 |
+
this.updateGrid();this.updateValues();this.grid.reload(null);},createEmptyProduct:function(){this.createPopup(this.createEmptyUrl)},createNewProduct:function(){this.createPopup(this.createNormalUrl);},createPopup:function(url){if(this.win&&!this.win.closed){this.win.close();}
|
164 |
+
this.win=window.open(url,'','width=1000,height=700,resizable=1,scrollbars=1');this.win.focus();},registerProduct:function(grid,element,checked){if(checked){if(element.linkAttributes){this.links.set(element.value,element.linkAttributes);}}else{this.links.unset(element.value);}
|
165 |
+
this.updateGrid();this.grid.rows.each(function(row){this.revalidateRow(this.grid,row);}.bind(this));this.updateValues();},updateProduct:function(productId,attributes){var isAssociated=false;if(typeof this.links.get(productId)!='undefined'){isAssociated=true;this.links.unset(productId);}
|
166 |
+
if(isAssociated&&this.checkAttributes(attributes)){this.links.set(productId,this.cloneAttributes(attributes));}else if(isAssociated){this.newProducts.push(productId);}
|
167 |
+
this.updateGrid();this.updateValues();this.grid.reload(null);},cloneAttributes:function(attributes){var newObj=[];for(var i=0,length=attributes.length;i<length;i++){newObj[i]=Object.clone(attributes[i]);}
|
168 |
+
return newObj;},rowClick:function(grid,event){var trElement=Event.findElement(event,'tr');var isInput=Event.element(event).tagName.toUpperCase()=='INPUT';if($(Event.findElement(event,'td')).down('a')){return;}
|
169 |
+
if(trElement){var checkbox=$(trElement).down('input');if(checkbox&&!checkbox.disabled){var checked=isInput?checkbox.checked:!checkbox.checked;grid.setCheckboxChecked(checkbox,checked);}}},rowInit:function(grid,row){var checkbox=$(row).down('.checkbox');var input=$(row).down('.value-json');if(checkbox&&input){checkbox.linkAttributes=input.value.evalJSON();if(!checkbox.checked){if(!this.checkAttributes(checkbox.linkAttributes)){$(row).addClassName('invalid');checkbox.disable();}else{$(row).removeClassName('invalid');checkbox.enable();}}}},revalidateRow:function(grid,row){var checkbox=$(row).down('.checkbox');if(checkbox){if(!checkbox.checked){if(!this.checkAttributes(checkbox.linkAttributes)){$(row).addClassName('invalid');checkbox.disable();}else{$(row).removeClassName('invalid');checkbox.enable();}}}},checkAttributes:function(attributes){var result=true;this.links.each(function(pair){var fail=false;for(var i=0;i<pair.value.length&&!fail;i++){for(var j=0;j<attributes.length&&!fail;j++){if(pair.value[i].attribute_id==attributes[j].attribute_id&&pair.value[i].value_index!=attributes[j].value_index){fail=true;}}}
|
170 |
+
if(!fail){result=false;}});return result;},updateGrid:function(){this.grid.reloadParams={'products[]':this.links.keys().size()?this.links.keys():[0],'new_products[]':this.newProducts};},updateValues:function(){var uniqueAttributeValues=$H({});this.links.each(function(pair){for(var i=0,length=pair.value.length;i<length;i++){var attribute=pair.value[i];if(uniqueAttributeValues.keys().indexOf(attribute.attribute_id)==-1){uniqueAttributeValues.set(attribute.attribute_id,$H({}));}
|
171 |
+
uniqueAttributeValues.get(attribute.attribute_id).set(attribute.value_index,attribute);}});this.container.childElements().each(function(row){var attribute=row.attributeObject;for(var i=0,length=attribute.values.length;i<length;i++){if(uniqueAttributeValues.keys().indexOf(attribute.attribute_id)==-1||uniqueAttributeValues.get(attribute.attribute_id).keys().indexOf(attribute.values[i].value_index)==-1){row.attributeValues.childElements().each(function(elem){if(elem.valueObject.value_index==attribute.values[i].value_index){elem.remove();}});attribute.values[i]=undefined;}else{uniqueAttributeValues.get(attribute.attribute_id).unset(attribute.values[i].value_index);}}
|
172 |
+
attribute.values=attribute.values.compact();if(uniqueAttributeValues.get(attribute.attribute_id)){uniqueAttributeValues.get(attribute.attribute_id).each(function(pair){attribute.values.push(pair.value);this.createValueRow(row,pair.value);}.bind(this));}}.bind(this));this.updateSaveInput();this.updateSimpleForm();},createValueRow:function(container,value){var templateVariables=$H({});if(!this.valueAutoIndex){this.valueAutoIndex=1;}
|
173 |
+
templateVariables.set('html_id',container.id+'_'
|
174 |
+
+this.valueAutoIndex);templateVariables.update(value);var pricingValue=parseFloat(templateVariables.get('pricing_value'));if(!isNaN(pricingValue)){templateVariables.set('pricing_value',pricingValue);}else{templateVariables.unset('pricing_value');}
|
175 |
+
this.valueAutoIndex++;var li=$(document.createElement('LI'));li.className='attribute-value';li.id=templateVariables.get('html_id');li.update(this.addValueTemplate.evaluate(templateVariables));li.valueObject=value;if(typeof li.valueObject.is_percent=='undefined'){li.valueObject.is_percent=0;}
|
176 |
+
if(typeof li.valueObject.pricing_value=='undefined'){li.valueObject.pricing_value='';}
|
177 |
+
container.attributeValues.appendChild(li);var priceField=li.down('.attribute-price');var priceTypeField=li.down('.attribute-price-type');if(parseInt(value.is_percent)){priceTypeField.options[1].selected=!(priceTypeField.options[0].selected=false);}else{priceTypeField.options[1].selected=!(priceTypeField.options[0].selected=true);}
|
178 |
+
Event.observe(priceField,'keyup',this.onValuePriceUpdate);Event.observe(priceField,'change',this.onValuePriceUpdate);Event.observe(priceTypeField,'change',this.onValueTypeUpdate);var useDefaultEl=li.down('.attribute-use-default-value');if(useDefaultEl){if(li.valueObject.use_default_value){useDefaultEl.checked=true;this.updateUseDefaultRow(useDefaultEl,li);}
|
179 |
+
Event.observe(useDefaultEl,'change',this.onValueDefaultUpdate);}},updateValuePrice:function(event){var li=Event.findElement(event,'LI');li.valueObject.pricing_value=(Event.element(event).value.blank()?null:Event.element(event).value);this.updateSimpleForm();this.updateSaveInput();},updateValueType:function(event){var li=Event.findElement(event,'LI');li.valueObject.is_percent=(Event.element(event).value.blank()?null:Event.element(event).value);this.updateSimpleForm();this.updateSaveInput();},updateValueUseDefault:function(event){var li=Event.findElement(event,'LI');var useDefaultEl=Event.element(event);li.valueObject.use_default_value=useDefaultEl.checked;this.updateUseDefaultRow(useDefaultEl,li);},updateUseDefaultRow:function(useDefaultEl,li){var priceField=li.down('.attribute-price');var priceTypeField=li.down('.attribute-price-type');if(useDefaultEl.checked){priceField.disabled=true;priceTypeField.disabled=true;}else{priceField.disabled=false;priceTypeField.disabled=false;}
|
180 |
+
this.updateSimpleForm();this.updateSaveInput();},updateSaveInput:function(){$(this.idPrefix+'save_attributes').value=this.attributes.toJSON();$(this.idPrefix+'save_links').value=this.links.toJSON();},initializeAdvicesForSimpleForm:function(){if($(this.idPrefix+'simple_form').advicesInited){return;}
|
181 |
+
$(this.idPrefix+'simple_form').select('td.value').each(function(td){var adviceContainer=$(Builder.node('div'));td.appendChild(adviceContainer);td.select('input','select').each(function(element){element.advaiceContainer=adviceContainer;});});$(this.idPrefix+'simple_form').advicesInited=true;},quickCreateNewProduct:function(){this.initializeAdvicesForSimpleForm();$(this.idPrefix+'simple_form').removeClassName('ignore-validate');var validationResult=$(this.idPrefix+'simple_form').select('input','select','textarea').collect(function(elm){return Validation.validate(elm,{useTitle:false,onElementValidate:function(){}});}).all();$(this.idPrefix+'simple_form').addClassName('ignore-validate');if(!validationResult){return;}
|
182 |
+
var params=Form.serializeElements($(this.idPrefix+'simple_form').select('input','select','textarea'),true);params.form_key=FORM_KEY;$('messages').update();new Ajax.Request(this.createQuickUrl,{parameters:params,method:'post',area:$(this.idPrefix+'simple_form'),onComplete:this.quickCreateNewProductComplete.bind(this)});},quickCreateNewProductComplete:function(transport){var result=transport.responseText.evalJSON();if(result.error){if(result.error.fields){$(this.idPrefix+'simple_form').removeClassName('ignore-validate');$H(result.error.fields).each(function(pair){$('simple_product_'+pair.key).value=pair.value;$('simple_product_'+pair.key+'_autogenerate').checked=false;toggleValueElements($('simple_product_'+pair.key+'_autogenerate'),$('simple_product_'+pair.key+'_autogenerate').parentNode);Validation.ajaxError($('simple_product_'+pair.key),result.error.message);});$(this.idPrefix+'simple_form').addClassName('ignore-validate');}else{if(result.error.message){alert(result.error.message);}else{alert(result.error);}}
|
183 |
+
return;}else if(result.messages){$('messages').update(result.messages);}
|
184 |
+
result.attributes.each(function(attribute){var attr=this.getAttributeById(attribute.attribute_id);if(!this.getValueByIndex(attr,attribute.value_index)&&result.pricing&&result.pricing[attr.attribute_code]){attribute.is_percent=result.pricing[attr.attribute_code].is_percent;attribute.pricing_value=(result.pricing[attr.attribute_code].value==null?'':result.pricing[attr.attribute_code].value);}}.bind(this));this.attributes.each(function(attribute){if($('simple_product_'+attribute.attribute_code)){$('simple_product_'+attribute.attribute_code).value='';}}.bind(this));this.links.set(result.product_id,result.attributes);this.updateGrid();this.updateValues();this.grid.reload();},checkCreationUniqueAttributes:function(){var attributes=[];this.attributes.each(function(attribute){attributes.push({attribute_id:attribute.attribute_id,value_index:$('simple_product_'+attribute.attribute_code).value});}.bind(this));return this.checkAttributes(attributes);},getAttributeByCode:function(attributeCode){var attribute=null;this.attributes.each(function(item){if(item.attribute_code==attributeCode){attribute=item;throw $break;}});return attribute;},getAttributeById:function(attributeId){var attribute=null;this.attributes.each(function(item){if(item.attribute_id==attributeId){attribute=item;throw $break;}});return attribute;},getValueByIndex:function(attribute,valueIndex){var result=null;attribute.values.each(function(value){if(value.value_index==valueIndex){result=value;throw $break;}});return result;},showPricing:function(select,attributeCode){var attribute=this.getAttributeByCode(attributeCode);if(!attribute){return;}
|
185 |
+
select=$(select);if(select.value&&!$('simple_product_'+attributeCode+'_pricing_container')){Element.insert(select,{after:'<div class="left"></div> <div id="simple_product_'+attributeCode+'_pricing_container" class="left"></div>'});var newContainer=select.next('div');select.parentNode.removeChild(select);newContainer.appendChild(select);$(this.idPrefix+'simple_form').down('.form-list').style.width='100%';}
|
186 |
+
var container=$('simple_product_'+attributeCode+'_pricing_container');if(select.value){var value=this.getValueByIndex(attribute,select.value);if(!value){if(!container.down('.attribute-price')){if(value==null){value={};}
|
187 |
+
container.update(this.pricingValueTemplate.evaluate(value));var priceValueField=container.down('.attribute-price');var priceTypeField=container.down('.attribute-price-type');priceValueField.attributeCode=attributeCode;priceValueField.priceField=priceValueField;priceValueField.typeField=priceTypeField;priceTypeField.attributeCode=attributeCode;priceTypeField.priceField=priceValueField;priceTypeField.typeField=priceTypeField;Event.observe(priceValueField,'change',this.updateSimplePricing.bindAsEventListener(this));Event.observe(priceValueField,'keyup',this.updateSimplePricing.bindAsEventListener(this));Event.observe(priceTypeField,'change',this.updateSimplePricing.bindAsEventListener(this));$('simple_product_'+attributeCode+'_pricing_value').value=null;$('simple_product_'+attributeCode+'_pricing_type').value=null;}}else if(!isNaN(parseFloat(value.pricing_value))){container.update(this.pricingValueViewTemplate.evaluate({'value':(parseFloat(value.pricing_value)>0?'+':'')
|
188 |
+
+parseFloat(value.pricing_value)
|
189 |
+
+(parseInt(value.is_percent)>0?'%':'')}));$('simple_product_'+attributeCode+'_pricing_value').value=value.pricing_value;$('simple_product_'+attributeCode+'_pricing_type').value=value.is_percent;}else{container.update('');$('simple_product_'+attributeCode+'_pricing_value').value=null;$('simple_product_'+attributeCode+'_pricing_type').value=null;}}else if(container){container.update('');$('simple_product_'+attributeCode+'_pricing_value').value=null;$('simple_product_'+attributeCode+'_pricing_type').value=null;}},updateSimplePricing:function(evt){var element=Event.element(evt);if(!element.priceField.value.blank()){$('simple_product_'+element.attributeCode+'_pricing_value').value=element.priceField.value;$('simple_product_'+element.attributeCode+'_pricing_type').value=element.typeField.value;}else{$('simple_product_'+element.attributeCode+'_pricing_value').value=null;$('simple_product_'+element.attributeCode+'_pricing_type').value=null;}},updateSimpleForm:function(){this.attributes.each(function(attribute){if($('simple_product_'+attribute.attribute_code)){this.showPricing($('simple_product_'+attribute.attribute_code),attribute.attribute_code);}}.bind(this));},showNoticeMessage:function(){$('assign_product_warrning').show();}}
|
190 |
+
var onInitDisableFieldsList=[];function toogleFieldEditMode(toogleIdentifier,fieldContainer){if($(toogleIdentifier).checked){enableFieldEditMode(fieldContainer);}else{disableFieldEditMode(fieldContainer);}}
|
191 |
+
function disableFieldEditMode(fieldContainer){$(fieldContainer).disabled=true;if($(fieldContainer+'_hidden')){$(fieldContainer+'_hidden').disabled=true;}}
|
192 |
+
function enableFieldEditMode(fieldContainer){$(fieldContainer).disabled=false;if($(fieldContainer+'_hidden')){$(fieldContainer+'_hidden').disabled=false;}}
|
193 |
+
function initDisableFields(fieldContainer){onInitDisableFieldsList.push(fieldContainer);}
|
194 |
+
function onCompleteDisableInited(){onInitDisableFieldsList.each(function(item){disableFieldEditMode(item);});}
|
195 |
+
Event.observe(window,'load',onCompleteDisableInited);;Calendar=function(firstDayOfWeek,dateStr,onSelected,onClose){this.activeDiv=null;this.currentDateEl=null;this.getDateStatus=null;this.getDateToolTip=null;this.getDateText=null;this.timeout=null;this.onSelected=onSelected||null;this.onClose=onClose||null;this.dragging=false;this.hidden=false;this.minYear=1970;this.maxYear=2050;this.dateFormat=Calendar._TT["DEF_DATE_FORMAT"];this.ttDateFormat=Calendar._TT["TT_DATE_FORMAT"];this.isPopup=true;this.weekNumbers=true;this.firstDayOfWeek=typeof firstDayOfWeek=="number"?firstDayOfWeek:Calendar._FD;this.showsOtherMonths=false;this.dateStr=dateStr;this.ar_days=null;this.showsTime=false;this.time24=true;this.yearStep=2;this.hiliteToday=true;this.multiple=null;this.table=null;this.element=null;this.tbody=null;this.firstdayname=null;this.monthsCombo=null;this.yearsCombo=null;this.hilitedMonth=null;this.activeMonth=null;this.hilitedYear=null;this.activeYear=null;this.dateClicked=false;if(typeof Calendar._SDN=="undefined"){if(typeof Calendar._SDN_len=="undefined")
|
196 |
+
Calendar._SDN_len=3;var ar=new Array();for(var i=8;i>0;){ar[--i]=Calendar._DN[i].substr(0,Calendar._SDN_len);}
|
197 |
+
Calendar._SDN=ar;if(typeof Calendar._SMN_len=="undefined")
|
198 |
+
Calendar._SMN_len=3;ar=new Array();for(var i=12;i>0;){ar[--i]=Calendar._MN[i].substr(0,Calendar._SMN_len);}
|
199 |
+
Calendar._SMN=ar;}};Calendar._C=null;Calendar.is_ie=(/msie/i.test(navigator.userAgent)&&!/opera/i.test(navigator.userAgent));Calendar.is_ie5=(Calendar.is_ie&&/msie 5\.0/i.test(navigator.userAgent));Calendar.is_opera=/opera/i.test(navigator.userAgent);Calendar.is_khtml=/Konqueror|Safari|KHTML/i.test(navigator.userAgent);Calendar.is_gecko=navigator.userAgent.match(/gecko/i);Calendar.getStyle=function(element,style){if(element.currentStyle){var y=element.currentStyle[style];}else if(window.getComputedStyle){var y=document.defaultView.getComputedStyle(element,null).getPropertyValue(style);}
|
200 |
+
return y;};Calendar.getAbsolutePos=function(element){var res=new Object();res.x=0;res.y=0;do{res.x+=element.offsetLeft||0;res.y+=element.offsetTop||0;element=element.offsetParent;if(element){if(element.tagName.toUpperCase()=='BODY')break;var p=Calendar.getStyle(element,'position');if(p!=='static')break;}}while(element);return res;if(element!==null){res.x=element.offsetLeft;res.y=element.offsetTop;var offsetParent=element.offsetParent;var parentNode=element.parentNode;while(offsetParent!==null){res.x+=offsetParent.offsetLeft;res.y+=offsetParent.offsetTop;if(offsetParent!=document.body&&offsetParent!=document.documentElement){res.x-=offsetParent.scrollLeft;res.y-=offsetParent.scrollTop;}
|
201 |
+
if(Calendar.is_gecko){while(offsetParent!=parentNode&&parentNode!==null){res.x-=parentNode.scrollLeft;res.y-=parentNode.scrollTop;parentNode=parentNode.parentNode;}}
|
202 |
+
parentNode=offsetParent.parentNode;offsetParent=offsetParent.offsetParent;}}
|
203 |
+
return res;};Calendar.isRelated=function(el,evt){var related=evt.relatedTarget;if(!related){var type=evt.type;if(type=="mouseover"){related=evt.fromElement;}else if(type=="mouseout"){related=evt.toElement;}}
|
204 |
+
while(related){if(related==el){return true;}
|
205 |
+
related=related.parentNode;}
|
206 |
+
return false;};Calendar.removeClass=function(el,className){if(!(el&&el.className)){return;}
|
207 |
+
var cls=el.className.split(" ");var ar=new Array();for(var i=cls.length;i>0;){if(cls[--i]!=className){ar[ar.length]=cls[i];}}
|
208 |
+
el.className=ar.join(" ");};Calendar.addClass=function(el,className){Calendar.removeClass(el,className);el.className+=" "+className;};Calendar.getElement=function(ev){var f=Calendar.is_ie?window.event.srcElement:ev.currentTarget;while(f.nodeType!=1||/^div$/i.test(f.tagName))
|
209 |
+
f=f.parentNode;return f;};Calendar.getTargetElement=function(ev){var f=Calendar.is_ie?window.event.srcElement:ev.target;while(f.nodeType!=1)
|
210 |
+
f=f.parentNode;return f;};Calendar.stopEvent=function(ev){ev||(ev=window.event);if(Calendar.is_ie){ev.cancelBubble=true;ev.returnValue=false;}else{ev.preventDefault();ev.stopPropagation();}
|
211 |
+
return false;};Calendar.addEvent=function(el,evname,func){if(el.attachEvent){el.attachEvent("on"+evname,func);}else if(el.addEventListener){el.addEventListener(evname,func,true);}else{el["on"+evname]=func;}};Calendar.removeEvent=function(el,evname,func){if(el.detachEvent){el.detachEvent("on"+evname,func);}else if(el.removeEventListener){el.removeEventListener(evname,func,true);}else{el["on"+evname]=null;}};Calendar.createElement=function(type,parent){var el=null;if(document.createElementNS){el=document.createElementNS("http://www.w3.org/1999/xhtml",type);}else{el=document.createElement(type);}
|
212 |
+
if(typeof parent!="undefined"){parent.appendChild(el);}
|
213 |
+
return el;};Calendar._add_evs=function(el){with(Calendar){addEvent(el,"mouseover",dayMouseOver);addEvent(el,"mousedown",dayMouseDown);addEvent(el,"mouseout",dayMouseOut);if(is_ie){addEvent(el,"dblclick",dayMouseDblClick);el.setAttribute("unselectable",true);}}};Calendar.findMonth=function(el){if(typeof el.month!="undefined"){return el;}else if(typeof el.parentNode.month!="undefined"){return el.parentNode;}
|
214 |
+
return null;};Calendar.findYear=function(el){if(typeof el.year!="undefined"){return el;}else if(typeof el.parentNode.year!="undefined"){return el.parentNode;}
|
215 |
+
return null;};Calendar.showMonthsCombo=function(){var cal=Calendar._C;if(!cal){return false;}
|
216 |
+
var cal=cal;var cd=cal.activeDiv;var mc=cal.monthsCombo;if(cal.hilitedMonth){Calendar.removeClass(cal.hilitedMonth,"hilite");}
|
217 |
+
if(cal.activeMonth){Calendar.removeClass(cal.activeMonth,"active");}
|
218 |
+
var mon=cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()];Calendar.addClass(mon,"active");cal.activeMonth=mon;var s=mc.style;s.display="block";if(cd.navtype<0)
|
219 |
+
s.left=cd.offsetLeft+"px";else{var mcw=mc.offsetWidth;if(typeof mcw=="undefined")
|
220 |
+
mcw=50;s.left=(cd.offsetLeft+cd.offsetWidth-mcw)+"px";}
|
221 |
+
s.top=(cd.offsetTop+cd.offsetHeight)+"px";};Calendar.showYearsCombo=function(fwd){var cal=Calendar._C;if(!cal){return false;}
|
222 |
+
var cal=cal;var cd=cal.activeDiv;var yc=cal.yearsCombo;if(cal.hilitedYear){Calendar.removeClass(cal.hilitedYear,"hilite");}
|
223 |
+
if(cal.activeYear){Calendar.removeClass(cal.activeYear,"active");}
|
224 |
+
cal.activeYear=null;var Y=cal.date.getFullYear()+(fwd?1:-1);var yr=yc.firstChild;var show=false;for(var i=12;i>0;--i){if(Y>=cal.minYear&&Y<=cal.maxYear){yr.innerHTML=Y;yr.year=Y;yr.style.display="block";show=true;}else{yr.style.display="none";}
|
225 |
+
yr=yr.nextSibling;Y+=fwd?cal.yearStep:-cal.yearStep;}
|
226 |
+
if(show){var s=yc.style;s.display="block";if(cd.navtype<0)
|
227 |
+
s.left=cd.offsetLeft+"px";else{var ycw=yc.offsetWidth;if(typeof ycw=="undefined")
|
228 |
+
ycw=50;s.left=(cd.offsetLeft+cd.offsetWidth-ycw)+"px";}
|
229 |
+
s.top=(cd.offsetTop+cd.offsetHeight)+"px";}};Calendar.tableMouseUp=function(ev){var cal=Calendar._C;if(!cal){return false;}
|
230 |
+
if(cal.timeout){clearTimeout(cal.timeout);}
|
231 |
+
var el=cal.activeDiv;if(!el){return false;}
|
232 |
+
var target=Calendar.getTargetElement(ev);ev||(ev=window.event);Calendar.removeClass(el,"active");if(target==el||target.parentNode==el){Calendar.cellClick(el,ev);}
|
233 |
+
var mon=Calendar.findMonth(target);var date=null;if(mon){date=new CalendarDateObject(cal.date);if(mon.month!=date.getMonth()){date.setMonth(mon.month);cal.setDate(date);cal.dateClicked=false;cal.callHandler();}}else{var year=Calendar.findYear(target);if(year){date=new CalendarDateObject(cal.date);if(year.year!=date.getFullYear()){date.setFullYear(year.year);cal.setDate(date);cal.dateClicked=false;cal.callHandler();}}}
|
234 |
+
with(Calendar){removeEvent(document,"mouseup",tableMouseUp);removeEvent(document,"mouseover",tableMouseOver);removeEvent(document,"mousemove",tableMouseOver);cal._hideCombos();_C=null;return stopEvent(ev);}};Calendar.tableMouseOver=function(ev){var cal=Calendar._C;if(!cal){return;}
|
235 |
+
var el=cal.activeDiv;var target=Calendar.getTargetElement(ev);if(target==el||target.parentNode==el){Calendar.addClass(el,"hilite active");Calendar.addClass(el.parentNode,"rowhilite");}else{if(typeof el.navtype=="undefined"||(el.navtype!=50&&(el.navtype==0||Math.abs(el.navtype)>2)))
|
236 |
+
Calendar.removeClass(el,"active");Calendar.removeClass(el,"hilite");Calendar.removeClass(el.parentNode,"rowhilite");}
|
237 |
+
ev||(ev=window.event);if(el.navtype==50&&target!=el){var pos=Calendar.getAbsolutePos(el);var w=el.offsetWidth;var x=ev.clientX;var dx;var decrease=true;if(x>pos.x+w){dx=x-pos.x-w;decrease=false;}else
|
238 |
+
dx=pos.x-x;if(dx<0)dx=0;var range=el._range;var current=el._current;var count=Math.floor(dx/10)%range.length;for(var i=range.length;--i>=0;)
|
239 |
+
if(range[i]==current)
|
240 |
+
break;while(count-->0)
|
241 |
+
if(decrease){if(--i<0)
|
242 |
+
i=range.length-1;}else if(++i>=range.length)
|
243 |
+
i=0;var newval=range[i];el.innerHTML=newval;cal.onUpdateTime();}
|
244 |
+
var mon=Calendar.findMonth(target);if(mon){if(mon.month!=cal.date.getMonth()){if(cal.hilitedMonth){Calendar.removeClass(cal.hilitedMonth,"hilite");}
|
245 |
+
Calendar.addClass(mon,"hilite");cal.hilitedMonth=mon;}else if(cal.hilitedMonth){Calendar.removeClass(cal.hilitedMonth,"hilite");}}else{if(cal.hilitedMonth){Calendar.removeClass(cal.hilitedMonth,"hilite");}
|
246 |
+
var year=Calendar.findYear(target);if(year){if(year.year!=cal.date.getFullYear()){if(cal.hilitedYear){Calendar.removeClass(cal.hilitedYear,"hilite");}
|
247 |
+
Calendar.addClass(year,"hilite");cal.hilitedYear=year;}else if(cal.hilitedYear){Calendar.removeClass(cal.hilitedYear,"hilite");}}else if(cal.hilitedYear){Calendar.removeClass(cal.hilitedYear,"hilite");}}
|
248 |
+
return Calendar.stopEvent(ev);};Calendar.tableMouseDown=function(ev){if(Calendar.getTargetElement(ev)==Calendar.getElement(ev)){return Calendar.stopEvent(ev);}};Calendar.calDragIt=function(ev){var cal=Calendar._C;if(!(cal&&cal.dragging)){return false;}
|
249 |
+
var posX;var posY;if(Calendar.is_ie){posY=window.event.clientY+document.body.scrollTop;posX=window.event.clientX+document.body.scrollLeft;}else{posX=ev.pageX;posY=ev.pageY;}
|
250 |
+
cal.hideShowCovered();var st=cal.element.style;st.left=(posX-cal.xOffs)+"px";st.top=(posY-cal.yOffs)+"px";return Calendar.stopEvent(ev);};Calendar.calDragEnd=function(ev){var cal=Calendar._C;if(!cal){return false;}
|
251 |
+
cal.dragging=false;with(Calendar){removeEvent(document,"mousemove",calDragIt);removeEvent(document,"mouseup",calDragEnd);tableMouseUp(ev);}
|
252 |
+
cal.hideShowCovered();};Calendar.dayMouseDown=function(ev){var el=Calendar.getElement(ev);if(el.disabled){return false;}
|
253 |
+
var cal=el.calendar;cal.activeDiv=el;Calendar._C=cal;if(el.navtype!=300)with(Calendar){if(el.navtype==50){el._current=el.innerHTML;addEvent(document,"mousemove",tableMouseOver);}else
|
254 |
+
addEvent(document,Calendar.is_ie5?"mousemove":"mouseover",tableMouseOver);addClass(el,"hilite active");addEvent(document,"mouseup",tableMouseUp);}else if(cal.isPopup){cal._dragStart(ev);}
|
255 |
+
if(el.navtype==-1||el.navtype==1){if(cal.timeout)clearTimeout(cal.timeout);cal.timeout=setTimeout("Calendar.showMonthsCombo()",250);}else if(el.navtype==-2||el.navtype==2){if(cal.timeout)clearTimeout(cal.timeout);cal.timeout=setTimeout((el.navtype>0)?"Calendar.showYearsCombo(true)":"Calendar.showYearsCombo(false)",250);}else{cal.timeout=null;}
|
256 |
+
return Calendar.stopEvent(ev);};Calendar.dayMouseDblClick=function(ev){Calendar.cellClick(Calendar.getElement(ev),ev||window.event);if(Calendar.is_ie){document.selection.empty();}};Calendar.dayMouseOver=function(ev){var el=Calendar.getElement(ev);if(Calendar.isRelated(el,ev)||Calendar._C||el.disabled){return false;}
|
257 |
+
if(el.ttip){if(el.ttip.substr(0,1)=="_"){el.ttip=el.caldate.print(el.calendar.ttDateFormat)+el.ttip.substr(1);}
|
258 |
+
el.calendar.tooltips.innerHTML=el.ttip;}
|
259 |
+
if(el.navtype!=300){Calendar.addClass(el,"hilite");if(el.caldate){Calendar.addClass(el.parentNode,"rowhilite");}}
|
260 |
+
return Calendar.stopEvent(ev);};Calendar.dayMouseOut=function(ev){with(Calendar){var el=getElement(ev);if(isRelated(el,ev)||_C||el.disabled)
|
261 |
+
return false;removeClass(el,"hilite");if(el.caldate)
|
262 |
+
removeClass(el.parentNode,"rowhilite");if(el.calendar)
|
263 |
+
el.calendar.tooltips.innerHTML=_TT["SEL_DATE"];return stopEvent(ev);}};Calendar.cellClick=function(el,ev){var cal=el.calendar;var closing=false;var newdate=false;var date=null;if(typeof el.navtype=="undefined"){if(cal.currentDateEl){Calendar.removeClass(cal.currentDateEl,"selected");Calendar.addClass(el,"selected");closing=(cal.currentDateEl==el);if(!closing){cal.currentDateEl=el;}}
|
264 |
+
cal.date.setDateOnly(el.caldate);date=cal.date;var other_month=!(cal.dateClicked=!el.otherMonth);if(!other_month&&!cal.currentDateEl)
|
265 |
+
cal._toggleMultipleDate(new CalendarDateObject(date));else
|
266 |
+
newdate=!el.disabled;if(other_month)
|
267 |
+
cal._init(cal.firstDayOfWeek,date);}else{if(el.navtype==200){Calendar.removeClass(el,"hilite");cal.callCloseHandler();return;}
|
268 |
+
date=new CalendarDateObject(cal.date);if(el.navtype==0)
|
269 |
+
date.setDateOnly(new CalendarDateObject());cal.dateClicked=false;var year=date.getFullYear();var mon=date.getMonth();function setMonth(m){var day=date.getDate();var max=date.getMonthDays(m);if(day>max){date.setDate(max);}
|
270 |
+
date.setMonth(m);};switch(el.navtype){case 400:Calendar.removeClass(el,"hilite");var text=Calendar._TT["ABOUT"];if(typeof text!="undefined"){text+=cal.showsTime?Calendar._TT["ABOUT_TIME"]:"";}else{text="Help and about box text is not translated into this language.\n"+"If you know this language and you feel generous please update\n"+"the corresponding file in \"lang\" subdir to match calendar-en.js\n"+"and send it back to <mihai_bazon@yahoo.com> to get it into the distribution ;-)\n\n"+"Thank you!\n"+"http://dynarch.com/mishoo/calendar.epl\n";}
|
271 |
+
alert(text);return;case-2:if(year>cal.minYear){date.setFullYear(year-1);}
|
272 |
+
break;case-1:if(mon>0){setMonth(mon-1);}else if(year-->cal.minYear){date.setFullYear(year);setMonth(11);}
|
273 |
+
break;case 1:if(mon<11){setMonth(mon+1);}else if(year<cal.maxYear){date.setFullYear(year+1);setMonth(0);}
|
274 |
+
break;case 2:if(year<cal.maxYear){date.setFullYear(year+1);}
|
275 |
+
break;case 100:cal.setFirstDayOfWeek(el.fdow);return;case 50:var range=el._range;var current=el.innerHTML;for(var i=range.length;--i>=0;)
|
276 |
+
if(range[i]==current)
|
277 |
+
break;if(ev&&ev.shiftKey){if(--i<0)
|
278 |
+
i=range.length-1;}else if(++i>=range.length)
|
279 |
+
i=0;var newval=range[i];el.innerHTML=newval;cal.onUpdateTime();return;case 0:if((typeof cal.getDateStatus=="function")&&cal.getDateStatus(date,date.getFullYear(),date.getMonth(),date.getDate())){return false;}
|
280 |
+
break;}
|
281 |
+
if(!date.equalsTo(cal.date)){cal.setDate(date);newdate=true;}else if(el.navtype==0)
|
282 |
+
newdate=closing=true;}
|
283 |
+
if(newdate){ev&&cal.callHandler();}
|
284 |
+
if(closing){Calendar.removeClass(el,"hilite");ev&&cal.callCloseHandler();}};Calendar.prototype.create=function(_par){var parent=null;if(!_par){parent=document.getElementsByTagName("body")[0];this.isPopup=true;}else{parent=_par;this.isPopup=false;}
|
285 |
+
this.date=this.dateStr?new CalendarDateObject(this.dateStr):new CalendarDateObject();var table=Calendar.createElement("table");this.table=table;table.cellSpacing=0;table.cellPadding=0;table.calendar=this;Calendar.addEvent(table,"mousedown",Calendar.tableMouseDown);var div=Calendar.createElement("div");this.element=div;div.className="calendar";if(this.isPopup){div.style.position="absolute";div.style.display="none";}
|
286 |
+
div.appendChild(table);var thead=Calendar.createElement("thead",table);var cell=null;var row=null;var cal=this;var hh=function(text,cs,navtype){cell=Calendar.createElement("td",row);cell.colSpan=cs;cell.className="button";if(navtype!=0&&Math.abs(navtype)<=2)
|
287 |
+
cell.className+=" nav";Calendar._add_evs(cell);cell.calendar=cal;cell.navtype=navtype;cell.innerHTML="<div unselectable='on'>"+text+"</div>";return cell;};row=Calendar.createElement("tr",thead);var title_length=6;(this.isPopup)&&--title_length;(this.weekNumbers)&&++title_length;hh("?",1,400).ttip=Calendar._TT["INFO"];this.title=hh("",title_length,300);this.title.className="title";if(this.isPopup){this.title.ttip=Calendar._TT["DRAG_TO_MOVE"];this.title.style.cursor="move";hh("×",1,200).ttip=Calendar._TT["CLOSE"];}
|
288 |
+
row=Calendar.createElement("tr",thead);row.className="headrow";this._nav_py=hh("«",1,-2);this._nav_py.ttip=Calendar._TT["PREV_YEAR"];this._nav_pm=hh("‹",1,-1);this._nav_pm.ttip=Calendar._TT["PREV_MONTH"];this._nav_now=hh(Calendar._TT["TODAY"],this.weekNumbers?4:3,0);this._nav_now.ttip=Calendar._TT["GO_TODAY"];this._nav_nm=hh("›",1,1);this._nav_nm.ttip=Calendar._TT["NEXT_MONTH"];this._nav_ny=hh("»",1,2);this._nav_ny.ttip=Calendar._TT["NEXT_YEAR"];row=Calendar.createElement("tr",thead);row.className="daynames";if(this.weekNumbers){cell=Calendar.createElement("td",row);cell.className="name wn";cell.innerHTML=Calendar._TT["WK"];}
|
289 |
+
for(var i=7;i>0;--i){cell=Calendar.createElement("td",row);if(!i){cell.navtype=100;cell.calendar=this;Calendar._add_evs(cell);}}
|
290 |
+
this.firstdayname=(this.weekNumbers)?row.firstChild.nextSibling:row.firstChild;this._displayWeekdays();var tbody=Calendar.createElement("tbody",table);this.tbody=tbody;for(i=6;i>0;--i){row=Calendar.createElement("tr",tbody);if(this.weekNumbers){cell=Calendar.createElement("td",row);}
|
291 |
+
for(var j=7;j>0;--j){cell=Calendar.createElement("td",row);cell.calendar=this;Calendar._add_evs(cell);}}
|
292 |
+
if(this.showsTime){row=Calendar.createElement("tr",tbody);row.className="time";cell=Calendar.createElement("td",row);cell.className="time";cell.colSpan=2;cell.innerHTML=Calendar._TT["TIME"]||" ";cell=Calendar.createElement("td",row);cell.className="time";cell.colSpan=this.weekNumbers?4:3;(function(){function makeTimePart(className,init,range_start,range_end){var part=Calendar.createElement("span",cell);part.className=className;part.innerHTML=init;part.calendar=cal;part.ttip=Calendar._TT["TIME_PART"];part.navtype=50;part._range=[];if(typeof range_start!="number")
|
293 |
+
part._range=range_start;else{for(var i=range_start;i<=range_end;++i){var txt;if(i<10&&range_end>=10)txt='0'+i;else txt=''+i;part._range[part._range.length]=txt;}}
|
294 |
+
Calendar._add_evs(part);return part;};var hrs=cal.date.getHours();var mins=cal.date.getMinutes();var t12=!cal.time24;var pm=(hrs>12);if(t12&&pm)hrs-=12;var H=makeTimePart("hour",hrs,t12?1:0,t12?12:23);var span=Calendar.createElement("span",cell);span.innerHTML=":";span.className="colon";var M=makeTimePart("minute",mins,0,59);var AP=null;cell=Calendar.createElement("td",row);cell.className="time";cell.colSpan=2;if(t12)
|
295 |
+
AP=makeTimePart("ampm",pm?"pm":"am",["am","pm"]);else
|
296 |
+
cell.innerHTML=" ";cal.onSetTime=function(){var pm,hrs=this.date.getHours(),mins=this.date.getMinutes();if(t12){pm=(hrs>=12);if(pm)hrs-=12;if(hrs==0)hrs=12;AP.innerHTML=pm?"pm":"am";}
|
297 |
+
H.innerHTML=(hrs<10)?("0"+hrs):hrs;M.innerHTML=(mins<10)?("0"+mins):mins;};cal.onUpdateTime=function(){var date=this.date;var h=parseInt(H.innerHTML,10);if(t12){if(/pm/i.test(AP.innerHTML)&&h<12)
|
298 |
+
h+=12;else if(/am/i.test(AP.innerHTML)&&h==12)
|
299 |
+
h=0;}
|
300 |
+
var d=date.getDate();var m=date.getMonth();var y=date.getFullYear();date.setHours(h);date.setMinutes(parseInt(M.innerHTML,10));date.setFullYear(y);date.setMonth(m);date.setDate(d);this.dateClicked=false;this.callHandler();};})();}else{this.onSetTime=this.onUpdateTime=function(){};}
|
301 |
+
var tfoot=Calendar.createElement("tfoot",table);row=Calendar.createElement("tr",tfoot);row.className="footrow";cell=hh(Calendar._TT["SEL_DATE"],this.weekNumbers?8:7,300);cell.className="ttip";if(this.isPopup){cell.ttip=Calendar._TT["DRAG_TO_MOVE"];cell.style.cursor="move";}
|
302 |
+
this.tooltips=cell;div=Calendar.createElement("div",this.element);this.monthsCombo=div;div.className="combo";for(i=0;i<Calendar._MN.length;++i){var mn=Calendar.createElement("div");mn.className=Calendar.is_ie?"label-IEfix":"label";mn.month=i;mn.innerHTML=Calendar._SMN[i];div.appendChild(mn);}
|
303 |
+
div=Calendar.createElement("div",this.element);this.yearsCombo=div;div.className="combo";for(i=12;i>0;--i){var yr=Calendar.createElement("div");yr.className=Calendar.is_ie?"label-IEfix":"label";div.appendChild(yr);}
|
304 |
+
this._init(this.firstDayOfWeek,this.date);parent.appendChild(this.element);};Calendar._keyEvent=function(ev){var cal=window._dynarch_popupCalendar;if(!cal||cal.multiple)
|
305 |
+
return false;(Calendar.is_ie)&&(ev=window.event);var act=(Calendar.is_ie||ev.type=="keypress"),K=ev.keyCode;if(ev.ctrlKey){switch(K){case 37:act&&Calendar.cellClick(cal._nav_pm);break;case 38:act&&Calendar.cellClick(cal._nav_py);break;case 39:act&&Calendar.cellClick(cal._nav_nm);break;case 40:act&&Calendar.cellClick(cal._nav_ny);break;default:return false;}}else switch(K){case 32:Calendar.cellClick(cal._nav_now);break;case 27:act&&cal.callCloseHandler();break;case 37:case 38:case 39:case 40:if(act){var prev,x,y,ne,el,step;prev=K==37||K==38;step=(K==37||K==39)?1:7;function setVars(){el=cal.currentDateEl;var p=el.pos;x=p&15;y=p>>4;ne=cal.ar_days[y][x];};setVars();function prevMonth(){var date=new CalendarDateObject(cal.date);date.setDate(date.getDate()-step);cal.setDate(date);};function nextMonth(){var date=new CalendarDateObject(cal.date);date.setDate(date.getDate()+step);cal.setDate(date);};while(1){switch(K){case 37:if(--x>=0)
|
306 |
+
ne=cal.ar_days[y][x];else{x=6;K=38;continue;}
|
307 |
+
break;case 38:if(--y>=0)
|
308 |
+
ne=cal.ar_days[y][x];else{prevMonth();setVars();}
|
309 |
+
break;case 39:if(++x<7)
|
310 |
+
ne=cal.ar_days[y][x];else{x=0;K=40;continue;}
|
311 |
+
break;case 40:if(++y<cal.ar_days.length)
|
312 |
+
ne=cal.ar_days[y][x];else{nextMonth();setVars();}
|
313 |
+
break;}
|
314 |
+
break;}
|
315 |
+
if(ne){if(!ne.disabled)
|
316 |
+
Calendar.cellClick(ne);else if(prev)
|
317 |
+
prevMonth();else
|
318 |
+
nextMonth();}}
|
319 |
+
break;case 13:if(act)
|
320 |
+
Calendar.cellClick(cal.currentDateEl,ev);break;default:return false;}
|
321 |
+
return Calendar.stopEvent(ev);};Calendar.prototype._init=function(firstDayOfWeek,date){var today=new CalendarDateObject(),TY=today.getFullYear(),TM=today.getMonth(),TD=today.getDate();this.table.style.visibility="hidden";var year=date.getFullYear();if(year<this.minYear){year=this.minYear;date.setFullYear(year);}else if(year>this.maxYear){year=this.maxYear;date.setFullYear(year);}
|
322 |
+
this.firstDayOfWeek=firstDayOfWeek;this.date=new CalendarDateObject(date);var month=date.getMonth();var mday=date.getDate();var no_days=date.getMonthDays();date.setDate(1);var day1=(date.getDay()-this.firstDayOfWeek)%7;if(day1<0)
|
323 |
+
day1+=7;date.setDate(-day1);date.setDate(date.getDate()+1);var row=this.tbody.firstChild;var MN=Calendar._SMN[month];var ar_days=this.ar_days=new Array();var weekend=Calendar._TT["WEEKEND"];var dates=this.multiple?(this.datesCells={}):null;for(var i=0;i<6;++i,row=row.nextSibling){var cell=row.firstChild;if(this.weekNumbers){cell.className="day wn";cell.innerHTML=date.getWeekNumber();cell=cell.nextSibling;}
|
324 |
+
row.className="daysrow";var hasdays=false,iday,dpos=ar_days[i]=[];for(var j=0;j<7;++j,cell=cell.nextSibling,date.setDate(iday+1)){iday=date.getDate();var wday=date.getDay();cell.className="day";cell.pos=i<<4|j;dpos[j]=cell;var current_month=(date.getMonth()==month);if(!current_month){if(this.showsOtherMonths){cell.className+=" othermonth";cell.otherMonth=true;}else{cell.className="emptycell";cell.innerHTML=" ";cell.disabled=true;continue;}}else{cell.otherMonth=false;hasdays=true;}
|
325 |
+
cell.disabled=false;cell.innerHTML=this.getDateText?this.getDateText(date,iday):iday;if(dates)
|
326 |
+
dates[date.print("%Y%m%d")]=cell;if(this.getDateStatus){var status=this.getDateStatus(date,year,month,iday);if(this.getDateToolTip){var toolTip=this.getDateToolTip(date,year,month,iday);if(toolTip)
|
327 |
+
cell.title=toolTip;}
|
328 |
+
if(status===true){cell.className+=" disabled";cell.disabled=true;}else{if(/disabled/i.test(status))
|
329 |
+
cell.disabled=true;cell.className+=" "+status;}}
|
330 |
+
if(!cell.disabled){cell.caldate=new CalendarDateObject(date);cell.ttip="_";if(!this.multiple&¤t_month&&iday==mday&&this.hiliteToday){cell.className+=" selected";this.currentDateEl=cell;}
|
331 |
+
if(date.getFullYear()==TY&&date.getMonth()==TM&&iday==TD){cell.className+=" today";cell.ttip+=Calendar._TT["PART_TODAY"];}
|
332 |
+
if(weekend.indexOf(wday.toString())!=-1)
|
333 |
+
cell.className+=cell.otherMonth?" oweekend":" weekend";}}
|
334 |
+
if(!(hasdays||this.showsOtherMonths))
|
335 |
+
row.className="emptyrow";}
|
336 |
+
this.title.innerHTML=Calendar._MN[month]+", "+year;this.onSetTime();this.table.style.visibility="visible";this._initMultipleDates();};Calendar.prototype._initMultipleDates=function(){if(this.multiple){for(var i in this.multiple){var cell=this.datesCells[i];var d=this.multiple[i];if(!d)
|
337 |
+
continue;if(cell)
|
338 |
+
cell.className+=" selected";}}};Calendar.prototype._toggleMultipleDate=function(date){if(this.multiple){var ds=date.print("%Y%m%d");var cell=this.datesCells[ds];if(cell){var d=this.multiple[ds];if(!d){Calendar.addClass(cell,"selected");this.multiple[ds]=date;}else{Calendar.removeClass(cell,"selected");delete this.multiple[ds];}}}};Calendar.prototype.setDateToolTipHandler=function(unaryFunction){this.getDateToolTip=unaryFunction;};Calendar.prototype.setDate=function(date){if(!date.equalsTo(this.date)){this._init(this.firstDayOfWeek,date);}};Calendar.prototype.refresh=function(){this._init(this.firstDayOfWeek,this.date);};Calendar.prototype.setFirstDayOfWeek=function(firstDayOfWeek){this._init(firstDayOfWeek,this.date);this._displayWeekdays();};Calendar.prototype.setDateStatusHandler=Calendar.prototype.setDisabledHandler=function(unaryFunction){this.getDateStatus=unaryFunction;};Calendar.prototype.setRange=function(a,z){this.minYear=a;this.maxYear=z;};Calendar.prototype.callHandler=function(){if(this.onSelected){this.onSelected(this,this.date.print(this.dateFormat));}};Calendar.prototype.callCloseHandler=function(){if(this.onClose){this.onClose(this);}
|
339 |
+
this.hideShowCovered();};Calendar.prototype.destroy=function(){var el=this.element.parentNode;el.removeChild(this.element);Calendar._C=null;window._dynarch_popupCalendar=null;};Calendar.prototype.reparent=function(new_parent){var el=this.element;el.parentNode.removeChild(el);new_parent.appendChild(el);};Calendar._checkCalendar=function(ev){var calendar=window._dynarch_popupCalendar;if(!calendar){return false;}
|
340 |
+
var el=Calendar.is_ie?Calendar.getElement(ev):Calendar.getTargetElement(ev);for(;el!=null&&el!=calendar.element;el=el.parentNode);if(el==null){window._dynarch_popupCalendar.callCloseHandler();return Calendar.stopEvent(ev);}};Calendar.prototype.show=function(){var rows=this.table.getElementsByTagName("tr");for(var i=rows.length;i>0;){var row=rows[--i];Calendar.removeClass(row,"rowhilite");var cells=row.getElementsByTagName("td");for(var j=cells.length;j>0;){var cell=cells[--j];Calendar.removeClass(cell,"hilite");Calendar.removeClass(cell,"active");}}
|
341 |
+
this.element.style.display="block";this.hidden=false;if(this.isPopup){window._dynarch_popupCalendar=this;Calendar.addEvent(document,"keydown",Calendar._keyEvent);Calendar.addEvent(document,"keypress",Calendar._keyEvent);Calendar.addEvent(document,"mousedown",Calendar._checkCalendar);}
|
342 |
+
this.hideShowCovered();};Calendar.prototype.hide=function(){if(this.isPopup){Calendar.removeEvent(document,"keydown",Calendar._keyEvent);Calendar.removeEvent(document,"keypress",Calendar._keyEvent);Calendar.removeEvent(document,"mousedown",Calendar._checkCalendar);}
|
343 |
+
this.element.style.display="none";this.hidden=true;this.hideShowCovered();};Calendar.prototype.showAt=function(x,y){var s=this.element.style;s.left=x+"px";s.top=y+"px";this.show();};Calendar.prototype.showAtElement=function(el,opts){var self=this;var p=Calendar.getAbsolutePos(el);if(!opts||typeof opts!="string"){this.showAt(p.x,p.y+el.offsetHeight);return true;}
|
344 |
+
function fixPosition(box){if(box.x<0)
|
345 |
+
box.x=0;if(box.y<0)
|
346 |
+
box.y=0;var cp=document.createElement("div");var s=cp.style;s.position="absolute";s.right=s.bottom=s.width=s.height="0px";document.body.appendChild(cp);var br=Calendar.getAbsolutePos(cp);document.body.removeChild(cp);if(Calendar.is_ie){br.y+=document.body.scrollTop;br.x+=document.body.scrollLeft;}else{br.y+=window.scrollY;br.x+=window.scrollX;}
|
347 |
+
var tmp=box.x+box.width-br.x;if(tmp>0)box.x-=tmp;tmp=box.y+box.height-br.y;if(tmp>0)box.y-=tmp;};this.element.style.display="block";Calendar.continuation_for_the_fucking_khtml_browser=function(){var w=self.element.offsetWidth;var h=self.element.offsetHeight;self.element.style.display="none";var valign=opts.substr(0,1);var halign="l";if(opts.length>1){halign=opts.substr(1,1);}
|
348 |
+
switch(valign){case"T":p.y-=h;break;case"B":p.y+=el.offsetHeight;break;case"C":p.y+=(el.offsetHeight-h)/2;break;case"t":p.y+=el.offsetHeight-h;break;case"b":break;}
|
349 |
+
switch(halign){case"L":p.x-=w;break;case"R":p.x+=el.offsetWidth;break;case"C":p.x+=(el.offsetWidth-w)/2;break;case"l":p.x+=el.offsetWidth-w;break;case"r":break;}
|
350 |
+
p.width=w;p.height=h+40;self.monthsCombo.style.display="none";fixPosition(p);self.showAt(p.x,p.y);};if(Calendar.is_khtml)
|
351 |
+
setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()",10);else
|
352 |
+
Calendar.continuation_for_the_fucking_khtml_browser();};Calendar.prototype.setDateFormat=function(str){this.dateFormat=str;};Calendar.prototype.setTtDateFormat=function(str){this.ttDateFormat=str;};Calendar.prototype.parseDate=function(str,fmt){if(!fmt)
|
353 |
+
fmt=this.dateFormat;this.setDate(Date.parseDate(str,fmt));};Calendar.prototype.hideShowCovered=function(){if(!Calendar.is_ie&&!Calendar.is_opera)
|
354 |
+
return;function getVisib(obj){var value=obj.style.visibility;if(!value){if(document.defaultView&&typeof(document.defaultView.getComputedStyle)=="function"){if(!Calendar.is_khtml)
|
355 |
+
value=document.defaultView.getComputedStyle(obj,"").getPropertyValue("visibility");else
|
356 |
+
value='';}else if(obj.currentStyle){value=obj.currentStyle.visibility;}else
|
357 |
+
value='';}
|
358 |
+
return value;};var tags=new Array("applet","iframe","select");var el=this.element;var p=Calendar.getAbsolutePos(el);var EX1=p.x;var EX2=el.offsetWidth+EX1;var EY1=p.y;var EY2=el.offsetHeight+EY1;for(var k=tags.length;k>0;){var ar=document.getElementsByTagName(tags[--k]);var cc=null;for(var i=ar.length;i>0;){cc=ar[--i];p=Calendar.getAbsolutePos(cc);var CX1=p.x;var CX2=cc.offsetWidth+CX1;var CY1=p.y;var CY2=cc.offsetHeight+CY1;if(this.hidden||(CX1>EX2)||(CX2<EX1)||(CY1>EY2)||(CY2<EY1)){if(!cc.__msh_save_visibility){cc.__msh_save_visibility=getVisib(cc);}
|
359 |
+
cc.style.visibility=cc.__msh_save_visibility;}else{if(!cc.__msh_save_visibility){cc.__msh_save_visibility=getVisib(cc);}
|
360 |
+
cc.style.visibility="hidden";}}}};Calendar.prototype._displayWeekdays=function(){var fdow=this.firstDayOfWeek;var cell=this.firstdayname;var weekend=Calendar._TT["WEEKEND"];for(var i=0;i<7;++i){cell.className="day name";var realday=(i+fdow)%7;if(i){cell.ttip=Calendar._TT["DAY_FIRST"].replace("%s",Calendar._DN[realday]);cell.navtype=100;cell.calendar=this;cell.fdow=realday;Calendar._add_evs(cell);}
|
361 |
+
if(weekend.indexOf(realday.toString())!=-1){Calendar.addClass(cell,"weekend");}
|
362 |
+
cell.innerHTML=Calendar._SDN[(i+fdow)%7];cell=cell.nextSibling;}};Calendar.prototype._hideCombos=function(){this.monthsCombo.style.display="none";this.yearsCombo.style.display="none";};Calendar.prototype._dragStart=function(ev){if(this.dragging){return;}
|
363 |
+
this.dragging=true;var posX;var posY;if(Calendar.is_ie){posY=window.event.clientY+document.body.scrollTop;posX=window.event.clientX+document.body.scrollLeft;}else{posY=ev.clientY+window.scrollY;posX=ev.clientX+window.scrollX;}
|
364 |
+
var st=this.element.style;this.xOffs=posX-parseInt(st.left);this.yOffs=posY-parseInt(st.top);with(Calendar){addEvent(document,"mousemove",calDragIt);addEvent(document,"mouseup",calDragEnd);}};Date._MD=new Array(31,28,31,30,31,30,31,31,30,31,30,31);Date.SECOND=1000;Date.MINUTE=60*Date.SECOND;Date.HOUR=60*Date.MINUTE;Date.DAY=24*Date.HOUR;Date.WEEK=7*Date.DAY;Date.parseDate=function(str,fmt){var today=new CalendarDateObject();var y=0;var m=-1;var d=0;var a=str;var i;for(i=0;i<Calendar._MN.length;i++){a=a.replace(Calendar._MN[i],enUS.m.wide[i]);}
|
365 |
+
for(i=0;i<Calendar._SMN.length;i++){a=a.replace(Calendar._SMN[i],enUS.m.abbr[i]);}
|
366 |
+
a=a.replace(Calendar._am,'am');a=a.replace(Calendar._am.toLowerCase(),'am');a=a.replace(Calendar._pm,'pm');a=a.replace(Calendar._pm.toLowerCase(),'pm');a=a.split(/\W+/);var b=fmt.match(/%./g);var i=0,j=0;var hr=0;var min=0;for(i=0;i<a.length;++i){if(!a[i])
|
367 |
+
continue;switch(b[i]){case"%d":case"%e":d=parseInt(a[i],10);break;case"%m":m=parseInt(a[i],10)-1;break;case"%Y":case"%y":y=parseInt(a[i],10);(y<100)&&(y+=(y>29)?1900:2000);break;case"%b":for(j=0;j<12;++j){if(enUS.m.abbr[j].substr(0,a[i].length).toLowerCase()==a[i].toLowerCase()){m=j;break;}}
|
368 |
+
break;case"%B":for(j=0;j<12;++j){if(enUS.m.wide[j].substr(0,a[i].length).toLowerCase()==a[i].toLowerCase()){m=j;break;}}
|
369 |
+
break;case"%H":case"%I":case"%k":case"%l":hr=parseInt(a[i],10);break;case"%P":case"%p":if(/pm/i.test(a[i])&&hr<12)
|
370 |
+
hr+=12;else if(/am/i.test(a[i])&&hr>=12)
|
371 |
+
hr-=12;break;case"%M":min=parseInt(a[i],10);break;}}
|
372 |
+
if(isNaN(y))y=today.getFullYear();if(isNaN(m))m=today.getMonth();if(isNaN(d))d=today.getDate();if(isNaN(hr))hr=today.getHours();if(isNaN(min))min=today.getMinutes();if(y!=0&&m!=-1&&d!=0)
|
373 |
+
return new CalendarDateObject(y,m,d,hr,min,0);y=0;m=-1;d=0;for(i=0;i<a.length;++i){if(a[i].search(/[a-zA-Z]+/)!=-1){var t=-1;for(j=0;j<12;++j){if(Calendar._MN[j].substr(0,a[i].length).toLowerCase()==a[i].toLowerCase()){t=j;break;}}
|
374 |
+
if(t!=-1){if(m!=-1){d=m+1;}
|
375 |
+
m=t;}}else if(parseInt(a[i],10)<=12&&m==-1){m=a[i]-1;}else if(parseInt(a[i],10)>31&&y==0){y=parseInt(a[i],10);(y<100)&&(y+=(y>29)?1900:2000);}else if(d==0){d=a[i];}}
|
376 |
+
if(y==0)
|
377 |
+
y=today.getFullYear();if(m!=-1&&d!=0)
|
378 |
+
return new CalendarDateObject(y,m,d,hr,min,0);return today;};Date.prototype.getMonthDays=function(month){var year=this.getFullYear();if(typeof month=="undefined"){month=this.getMonth();}
|
379 |
+
if(((0==(year%4))&&((0!=(year%100))||(0==(year%400))))&&month==1){return 29;}else{return Date._MD[month];}};Date.prototype.getDayOfYear=function(){var now=new CalendarDateObject(this.getFullYear(),this.getMonth(),this.getDate(),0,0,0);var then=new CalendarDateObject(this.getFullYear(),0,0,0,0,0);var time=now-then;return Math.floor(time/Date.DAY);};Date.prototype.getWeekNumber=function(){var d=new CalendarDateObject(this.getFullYear(),this.getMonth(),this.getDate(),0,0,0);var DoW=d.getDay();d.setDate(d.getDate()-(DoW+6)%7+3);var ms=d.valueOf();d.setMonth(0);d.setDate(4);return Math.round((ms-d.valueOf())/(7*864e5))+1;};Date.prototype.equalsTo=function(date){return((this.getFullYear()==date.getFullYear())&&(this.getMonth()==date.getMonth())&&(this.getDate()==date.getDate())&&(this.getHours()==date.getHours())&&(this.getMinutes()==date.getMinutes()));};Date.prototype.setDateOnly=function(date){var tmp=new CalendarDateObject(date);this.setDate(1);this.setFullYear(tmp.getFullYear());this.setMonth(tmp.getMonth());this.setDate(tmp.getDate());};Date.prototype.print=function(str){var m=this.getMonth();var d=this.getDate();var y=this.getFullYear();var wn=this.getWeekNumber();var w=this.getDay();var s={};var hr=this.getHours();var pm=(hr>=12);var ir=(pm)?(hr-12):hr;var dy=this.getDayOfYear();if(ir==0)
|
380 |
+
ir=12;var min=this.getMinutes();var sec=this.getSeconds();s["%a"]=Calendar._SDN[w];s["%A"]=Calendar._DN[w];s["%b"]=Calendar._SMN[m];s["%B"]=Calendar._MN[m];s["%C"]=1+Math.floor(y/100);s["%d"]=(d<10)?("0"+d):d;s["%e"]=d;s["%H"]=(hr<10)?("0"+hr):hr;s["%I"]=(ir<10)?("0"+ir):ir;s["%j"]=(dy<100)?((dy<10)?("00"+dy):("0"+dy)):dy;s["%k"]=hr;s["%l"]=ir;s["%m"]=(m<9)?("0"+(1+m)):(1+m);s["%M"]=(min<10)?("0"+min):min;s["%n"]="\n";s["%p"]=pm?Calendar._pm.toUpperCase():Calendar._am.toUpperCase();s["%P"]=pm?Calendar._pm.toLowerCase():Calendar._am.toLowerCase();s["%s"]=Math.floor(this.getTime()/1000);s["%S"]=(sec<10)?("0"+sec):sec;s["%t"]="\t";s["%U"]=s["%W"]=s["%V"]=(wn<10)?("0"+wn):wn;s["%u"]=w+1;s["%w"]=w;s["%y"]=(''+y).substr(2,2);s["%Y"]=y;s["%%"]="%";var re=/%./g;if(!Calendar.is_ie5&&!Calendar.is_khtml)
|
381 |
+
return str.replace(re,function(par){return s[par]||par;});var a=str.match(re);for(var i=0;i<a.length;i++){var tmp=s[a[i]];if(tmp){re=new RegExp(a[i],'g');str=str.replace(re,tmp);}}
|
382 |
+
return str;};Date.prototype.__msh_oldSetFullYear=Date.prototype.setFullYear;Date.prototype.setFullYear=function(y){var d=new CalendarDateObject(this);d.__msh_oldSetFullYear(y);if(d.getMonth()!=this.getMonth())
|
383 |
+
this.setDate(28);this.__msh_oldSetFullYear(y);};CalendarDateObject.prototype=new Date();CalendarDateObject.prototype.constructor=CalendarDateObject;CalendarDateObject.prototype.parent=Date.prototype;function CalendarDateObject(){var dateObj;if(arguments.length>1){dateObj=eval("new this.parent.constructor("+Array.prototype.slice.call(arguments).join(",")+");");}else if(arguments.length>0){dateObj=new this.parent.constructor(arguments[0]);}else{dateObj=new this.parent.constructor();if(typeof(CalendarDateObject._LOCAL_TIMZEONE_OFFSET_SECONDS)!="undefined"){dateObj.setTime(dateObj.getTime()+(CalendarDateObject._LOCAL_TIMZEONE_OFFSET_SECONDS-dateObj.getTimezoneOffset())*1000);}}
|
384 |
+
return dateObj;}
|
385 |
+
window._dynarch_popupCalendar=null;;Calendar.setup=function(params){function param_default(pname,def){if(typeof params[pname]=="undefined"){params[pname]=def;}};param_default("inputField",null);param_default("displayArea",null);param_default("button",null);param_default("eventName","click");param_default("ifFormat","%Y/%m/%d");param_default("daFormat","%Y/%m/%d");param_default("singleClick",true);param_default("disableFunc",null);param_default("dateStatusFunc",params["disableFunc"]);param_default("dateText",null);param_default("firstDay",null);param_default("align","Br");param_default("range",[1900,2999]);param_default("weekNumbers",true);param_default("flat",null);param_default("flatCallback",null);param_default("onSelect",null);param_default("onClose",null);param_default("onUpdate",null);param_default("date",null);param_default("showsTime",false);param_default("timeFormat","24");param_default("electric",true);param_default("step",2);param_default("position",null);param_default("cache",false);param_default("showOthers",false);param_default("multiple",null);var tmp=["inputField","displayArea","button"];for(var i in tmp){if(typeof params[tmp[i]]=="string"){params[tmp[i]]=document.getElementById(params[tmp[i]]);}}if(!(params.flat||params.multiple||params.inputField||params.displayArea||params.button)){alert("Calendar.setup:\n Nothing to setup (no fields found). Please check your code");return false;}function onSelect(cal){var p=cal.params;var update=(cal.dateClicked||p.electric);if(update&&p.inputField){p.inputField.value=cal.date.print(p.ifFormat);if(typeof p.inputField.onchange=="function")p.inputField.onchange();}if(update&&p.displayArea)p.displayArea.innerHTML=cal.date.print(p.daFormat);if(update&&typeof p.onUpdate=="function")p.onUpdate(cal);if(update&&p.flat){if(typeof p.flatCallback=="function")p.flatCallback(cal);}if(update&&p.singleClick&&cal.dateClicked)cal.callCloseHandler();};if(params.flat!=null){if(typeof params.flat=="string")params.flat=document.getElementById(params.flat);if(!params.flat){alert("Calendar.setup:\n Flat specified but can't find parent.");return false;}var cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect);cal.showsOtherMonths=params.showOthers;cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.params=params;cal.weekNumbers=params.weekNumbers;cal.setRange(params.range[0],params.range[1]);cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;if(params.ifFormat){cal.setDateFormat(params.ifFormat);}if(params.inputField&&typeof params.inputField.value=="string"){cal.parseDate(params.inputField.value);}cal.create(params.flat);cal.show();return false;}var triggerEl=params.button||params.displayArea||params.inputField;triggerEl["on"+params.eventName]=function(){var dateEl=params.inputField||params.displayArea;var dateFmt=params.inputField?params.ifFormat:params.daFormat;var mustCreate=false;var cal=window.calendar;if(dateEl)params.date=Date.parseDate(dateEl.value||dateEl.innerHTML,dateFmt);if(!(cal&¶ms.cache)){window.calendar=cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect,params.onClose||function(cal){cal.hide();});cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.weekNumbers=params.weekNumbers;mustCreate=true;}else{if(params.date)cal.setDate(params.date);cal.hide();}if(params.multiple){cal.multiple={};for(var i=params.multiple.length;--i>=0;){var d=params.multiple[i];var ds=d.print("%Y%m%d");cal.multiple[ds]=d;}}cal.showsOtherMonths=params.showOthers;cal.yearStep=params.step;cal.setRange(params.range[0],params.range[1]);cal.params=params;cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;cal.setDateFormat(dateFmt);if(mustCreate)cal.create();cal.refresh();if(!params.position)cal.showAtElement(params.button||params.displayArea||params.inputField,params.align);else cal.showAt(params.position[0],params.position[1]);return false;};return cal;};
|
var/minifycache/minify_1b6ee19a4c3855472c3e3dd57413cb65.gz
ADDED
Binary file
|
var/minifycache/minify_676fb2e38e9cb2203204bcf556430103
ADDED
@@ -0,0 +1,1030 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var Prototype={Version:'1.6.0.3',Browser:{IE:!!(window.attachEvent&&navigator.userAgent.indexOf('Opera')===-1),Opera:navigator.userAgent.indexOf('Opera')>-1,WebKit:navigator.userAgent.indexOf('AppleWebKit/')>-1,Gecko:navigator.userAgent.indexOf('Gecko')>-1&&navigator.userAgent.indexOf('KHTML')===-1,MobileSafari:!!navigator.userAgent.match(/Apple.*Mobile.*Safari/)},BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:!!window.HTMLElement,SpecificElementExtensions:document.createElement('div')['__proto__']&&document.createElement('div')['__proto__']!==document.createElement('form')['__proto__']},ScriptFragment:'<script[^>]*>([\\S\\s]*?)<\/script>',JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(x){return x}};if(Prototype.Browser.MobileSafari)
|
2 |
+
Prototype.BrowserFeatures.SpecificElementExtensions=false;var Class={create:function(){var parent=null,properties=$A(arguments);if(Object.isFunction(properties[0]))
|
3 |
+
parent=properties.shift();function klass(){this.initialize.apply(this,arguments);}
|
4 |
+
Object.extend(klass,Class.Methods);klass.superclass=parent;klass.subclasses=[];if(parent){var subclass=function(){};subclass.prototype=parent.prototype;klass.prototype=new subclass;parent.subclasses.push(klass);}
|
5 |
+
for(var i=0;i<properties.length;i++)
|
6 |
+
klass.addMethods(properties[i]);if(!klass.prototype.initialize)
|
7 |
+
klass.prototype.initialize=Prototype.emptyFunction;klass.prototype.constructor=klass;return klass;}};Class.Methods={addMethods:function(source){var ancestor=this.superclass&&this.superclass.prototype;var properties=Object.keys(source);if(!Object.keys({toString:true}).length)
|
8 |
+
properties.push("toString","valueOf");for(var i=0,length=properties.length;i<length;i++){var property=properties[i],value=source[property];if(ancestor&&Object.isFunction(value)&&value.argumentNames().first()=="$super"){var method=value;value=(function(m){return function(){return ancestor[m].apply(this,arguments)};})(property).wrap(method);value.valueOf=method.valueOf.bind(method);value.toString=method.toString.bind(method);}
|
9 |
+
this.prototype[property]=value;}
|
10 |
+
return this;}};var Abstract={};Object.extend=function(destination,source){for(var property in source)
|
11 |
+
destination[property]=source[property];return destination;};Object.extend(Object,{inspect:function(object){try{if(Object.isUndefined(object))return'undefined';if(object===null)return'null';return object.inspect?object.inspect():String(object);}catch(e){if(e instanceof RangeError)return'...';throw e;}},toJSON:function(object){var type=typeof object;switch(type){case'undefined':case'function':case'unknown':return;case'boolean':return object.toString();}
|
12 |
+
if(object===null)return'null';if(object.toJSON)return object.toJSON();if(Object.isElement(object))return;var results=[];for(var property in object){var value=Object.toJSON(object[property]);if(!Object.isUndefined(value))
|
13 |
+
results.push(property.toJSON()+': '+value);}
|
14 |
+
return'{'+results.join(', ')+'}';},toQueryString:function(object){return $H(object).toQueryString();},toHTML:function(object){return object&&object.toHTML?object.toHTML():String.interpret(object);},keys:function(object){var keys=[];for(var property in object)
|
15 |
+
keys.push(property);return keys;},values:function(object){var values=[];for(var property in object)
|
16 |
+
values.push(object[property]);return values;},clone:function(object){return Object.extend({},object);},isElement:function(object){return!!(object&&object.nodeType==1);},isArray:function(object){return object!=null&&typeof object=="object"&&'splice'in object&&'join'in object;},isHash:function(object){return object instanceof Hash;},isFunction:function(object){return typeof object=="function";},isString:function(object){return typeof object=="string";},isNumber:function(object){return typeof object=="number";},isUndefined:function(object){return typeof object=="undefined";}});Object.extend(Function.prototype,{argumentNames:function(){var names=this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1].replace(/\s+/g,'').split(',');return names.length==1&&!names[0]?[]:names;},bind:function(){if(arguments.length<2&&Object.isUndefined(arguments[0]))return this;var __method=this,args=$A(arguments),object=args.shift();return function(){return __method.apply(object,args.concat($A(arguments)));}},bindAsEventListener:function(){var __method=this,args=$A(arguments),object=args.shift();return function(event){return __method.apply(object,[event||window.event].concat(args));}},curry:function(){if(!arguments.length)return this;var __method=this,args=$A(arguments);return function(){return __method.apply(this,args.concat($A(arguments)));}},delay:function(){var __method=this,args=$A(arguments),timeout=args.shift()*1000;return window.setTimeout(function(){return __method.apply(__method,args);},timeout);},defer:function(){var args=[0.01].concat($A(arguments));return this.delay.apply(this,args);},wrap:function(wrapper){var __method=this;return function(){return wrapper.apply(this,[__method.bind(this)].concat($A(arguments)));}},methodize:function(){if(this._methodized)return this._methodized;var __method=this;return this._methodized=function(){return __method.apply(null,[this].concat($A(arguments)));};}});Date.prototype.toJSON=function(){return'"'+this.getUTCFullYear()+'-'+
|
17 |
+
(this.getUTCMonth()+1).toPaddedString(2)+'-'+
|
18 |
+
this.getUTCDate().toPaddedString(2)+'T'+
|
19 |
+
this.getUTCHours().toPaddedString(2)+':'+
|
20 |
+
this.getUTCMinutes().toPaddedString(2)+':'+
|
21 |
+
this.getUTCSeconds().toPaddedString(2)+'Z"';};var Try={these:function(){var returnValue;for(var i=0,length=arguments.length;i<length;i++){var lambda=arguments[i];try{returnValue=lambda();break;}catch(e){}}
|
22 |
+
return returnValue;}};RegExp.prototype.match=RegExp.prototype.test;RegExp.escape=function(str){return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g,'\\$1');};var PeriodicalExecuter=Class.create({initialize:function(callback,frequency){this.callback=callback;this.frequency=frequency;this.currentlyExecuting=false;this.registerCallback();},registerCallback:function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000);},execute:function(){this.callback(this);},stop:function(){if(!this.timer)return;clearInterval(this.timer);this.timer=null;},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.execute();}finally{this.currentlyExecuting=false;}}}});Object.extend(String,{interpret:function(value){return value==null?'':String(value);},specialChar:{'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','\\':'\\\\'}});Object.extend(String.prototype,{gsub:function(pattern,replacement){var result='',source=this,match;replacement=arguments.callee.prepareReplacement(replacement);while(source.length>0){if(match=source.match(pattern)){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length);}else{result+=source,source='';}}
|
23 |
+
return result;},sub:function(pattern,replacement,count){replacement=this.gsub.prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0)return match[0];return replacement(match);});},scan:function(pattern,iterator){this.gsub(pattern,iterator);return String(this);},truncate:function(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?'...':truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this);},strip:function(){return this.replace(/^\s+/,'').replace(/\s+$/,'');},stripTags:function(){return this.replace(/<\/?[^>]+>/gi,'');},stripScripts:function(){return this.replace(new RegExp(Prototype.ScriptFragment,'img'),'');},extractScripts:function(){var matchAll=new RegExp(Prototype.ScriptFragment,'img');var matchOne=new RegExp(Prototype.ScriptFragment,'im');return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||['',''])[1];});},evalScripts:function(){return this.extractScripts().map(function(script){return eval(script)});},escapeHTML:function(){var self=arguments.callee;self.text.data=this;return self.div.innerHTML;},unescapeHTML:function(){var div=new Element('div');div.innerHTML=this.stripTags();return div.childNodes[0]?(div.childNodes.length>1?$A(div.childNodes).inject('',function(memo,node){return memo+node.nodeValue}):div.childNodes[0].nodeValue):'';},toQueryParams:function(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match)return{};return match[1].split(separator||'&').inject({},function(hash,pair){if((pair=pair.split('='))[0]){var key=decodeURIComponent(pair.shift());var value=pair.length>1?pair.join('='):pair[0];if(value!=undefined)value=decodeURIComponent(value);if(key in hash){if(!Object.isArray(hash[key]))hash[key]=[hash[key]];hash[key].push(value);}
|
24 |
+
else hash[key]=value;}
|
25 |
+
return hash;});},toArray:function(){return this.split('');},succ:function(){return this.slice(0,this.length-1)+
|
26 |
+
String.fromCharCode(this.charCodeAt(this.length-1)+1);},times:function(count){return count<1?'':new Array(count+1).join(this);},camelize:function(){var parts=this.split('-'),len=parts.length;if(len==1)return parts[0];var camelized=this.charAt(0)=='-'?parts[0].charAt(0).toUpperCase()+parts[0].substring(1):parts[0];for(var i=1;i<len;i++)
|
27 |
+
camelized+=parts[i].charAt(0).toUpperCase()+parts[i].substring(1);return camelized;},capitalize:function(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase();},underscore:function(){return this.gsub(/::/,'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();},dasherize:function(){return this.gsub(/_/,'-');},inspect:function(useDoubleQuotes){var escapedString=this.gsub(/[\x00-\x1f\\]/,function(match){var character=String.specialChar[match[0]];return character?character:'\\u00'+match[0].charCodeAt().toPaddedString(2,16);});if(useDoubleQuotes)return'"'+escapedString.replace(/"/g,'\\"')+'"';return"'"+escapedString.replace(/'/g,'\\\'')+"'";},toJSON:function(){return this.inspect(true);},unfilterJSON:function(filter){return this.sub(filter||Prototype.JSONFilter,'#{1}');},isJSON:function(){var str=this;if(str.blank())return false;str=this.replace(/\\./g,'@').replace(/"[^"\\\n\r]*"/g,'');return(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);},evalJSON:function(sanitize){var json=this.unfilterJSON();try{if(!sanitize||json.isJSON())return eval('('+json+')');}catch(e){}
|
28 |
+
throw new SyntaxError('Badly formed JSON string: '+this.inspect());},include:function(pattern){return this.indexOf(pattern)>-1;},startsWith:function(pattern){return this.indexOf(pattern)===0;},endsWith:function(pattern){var d=this.length-pattern.length;return d>=0&&this.lastIndexOf(pattern)===d;},empty:function(){return this=='';},blank:function(){return /^\s*$/.test(this);},interpolate:function(object,pattern){return new Template(this,pattern).evaluate(object);}});if(Prototype.Browser.WebKit||Prototype.Browser.IE)Object.extend(String.prototype,{escapeHTML:function(){return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');},unescapeHTML:function(){return this.stripTags().replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');}});String.prototype.gsub.prepareReplacement=function(replacement){if(Object.isFunction(replacement))return replacement;var template=new Template(replacement);return function(match){return template.evaluate(match)};};String.prototype.parseQuery=String.prototype.toQueryParams;Object.extend(String.prototype.escapeHTML,{div:document.createElement('div'),text:document.createTextNode('')});String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.text);var Template=Class.create({initialize:function(template,pattern){this.template=template.toString();this.pattern=pattern||Template.Pattern;},evaluate:function(object){if(Object.isFunction(object.toTemplateReplacements))
|
29 |
+
object=object.toTemplateReplacements();return this.template.gsub(this.pattern,function(match){if(object==null)return'';var before=match[1]||'';if(before=='\\')return match[2];var ctx=object,expr=match[3];var pattern=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;match=pattern.exec(expr);if(match==null)return before;while(match!=null){var comp=match[1].startsWith('[')?match[2].gsub('\\\\]',']'):match[1];ctx=ctx[comp];if(null==ctx||''==match[3])break;expr=expr.substring('['==match[3]?match[1].length:match[0].length);match=pattern.exec(expr);}
|
30 |
+
return before+String.interpret(ctx);});}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable={each:function(iterator,context){var index=0;try{this._each(function(value){iterator.call(context,value,index++);});}catch(e){if(e!=$break)throw e;}
|
31 |
+
return this;},eachSlice:function(number,iterator,context){var index=-number,slices=[],array=this.toArray();if(number<1)return array;while((index+=number)<array.length)
|
32 |
+
slices.push(array.slice(index,index+number));return slices.collect(iterator,context);},all:function(iterator,context){iterator=iterator||Prototype.K;var result=true;this.each(function(value,index){result=result&&!!iterator.call(context,value,index);if(!result)throw $break;});return result;},any:function(iterator,context){iterator=iterator||Prototype.K;var result=false;this.each(function(value,index){if(result=!!iterator.call(context,value,index))
|
33 |
+
throw $break;});return result;},collect:function(iterator,context){iterator=iterator||Prototype.K;var results=[];this.each(function(value,index){results.push(iterator.call(context,value,index));});return results;},detect:function(iterator,context){var result;this.each(function(value,index){if(iterator.call(context,value,index)){result=value;throw $break;}});return result;},findAll:function(iterator,context){var results=[];this.each(function(value,index){if(iterator.call(context,value,index))
|
34 |
+
results.push(value);});return results;},grep:function(filter,iterator,context){iterator=iterator||Prototype.K;var results=[];if(Object.isString(filter))
|
35 |
+
filter=new RegExp(filter);this.each(function(value,index){if(filter.match(value))
|
36 |
+
results.push(iterator.call(context,value,index));});return results;},include:function(object){if(Object.isFunction(this.indexOf))
|
37 |
+
if(this.indexOf(object)!=-1)return true;var found=false;this.each(function(value){if(value==object){found=true;throw $break;}});return found;},inGroupsOf:function(number,fillWith){fillWith=Object.isUndefined(fillWith)?null:fillWith;return this.eachSlice(number,function(slice){while(slice.length<number)slice.push(fillWith);return slice;});},inject:function(memo,iterator,context){this.each(function(value,index){memo=iterator.call(context,memo,value,index);});return memo;},invoke:function(method){var args=$A(arguments).slice(1);return this.map(function(value){return value[method].apply(value,args);});},max:function(iterator,context){iterator=iterator||Prototype.K;var result;this.each(function(value,index){value=iterator.call(context,value,index);if(result==null||value>=result)
|
38 |
+
result=value;});return result;},min:function(iterator,context){iterator=iterator||Prototype.K;var result;this.each(function(value,index){value=iterator.call(context,value,index);if(result==null||value<result)
|
39 |
+
result=value;});return result;},partition:function(iterator,context){iterator=iterator||Prototype.K;var trues=[],falses=[];this.each(function(value,index){(iterator.call(context,value,index)?trues:falses).push(value);});return[trues,falses];},pluck:function(property){var results=[];this.each(function(value){results.push(value[property]);});return results;},reject:function(iterator,context){var results=[];this.each(function(value,index){if(!iterator.call(context,value,index))
|
40 |
+
results.push(value);});return results;},sortBy:function(iterator,context){return this.map(function(value,index){return{value:value,criteria:iterator.call(context,value,index)};}).sort(function(left,right){var a=left.criteria,b=right.criteria;return a<b?-1:a>b?1:0;}).pluck('value');},toArray:function(){return this.map();},zip:function(){var iterator=Prototype.K,args=$A(arguments);if(Object.isFunction(args.last()))
|
41 |
+
iterator=args.pop();var collections=[this].concat(args).map($A);return this.map(function(value,index){return iterator(collections.pluck(index));});},size:function(){return this.toArray().length;},inspect:function(){return'#<Enumerable:'+this.toArray().inspect()+'>';}};Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,filter:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray,every:Enumerable.all,some:Enumerable.any});function $A(iterable){if(!iterable)return[];if(iterable.toArray)return iterable.toArray();var length=iterable.length||0,results=new Array(length);while(length--)results[length]=iterable[length];return results;}
|
42 |
+
if(Prototype.Browser.WebKit){$A=function(iterable){if(!iterable)return[];if(!(typeof iterable==='function'&&typeof iterable.length==='number'&&typeof iterable.item==='function')&&iterable.toArray)
|
43 |
+
return iterable.toArray();var length=iterable.length||0,results=new Array(length);while(length--)results[length]=iterable[length];return results;};}
|
44 |
+
Array.from=$A;Object.extend(Array.prototype,Enumerable);if(!Array.prototype._reverse)Array.prototype._reverse=Array.prototype.reverse;Object.extend(Array.prototype,{_each:function(iterator){for(var i=0,length=this.length;i<length;i++)
|
45 |
+
iterator(this[i]);},clear:function(){this.length=0;return this;},first:function(){return this[0];},last:function(){return this[this.length-1];},compact:function(){return this.select(function(value){return value!=null;});},flatten:function(){return this.inject([],function(array,value){return array.concat(Object.isArray(value)?value.flatten():[value]);});},without:function(){var values=$A(arguments);return this.select(function(value){return!values.include(value);});},reverse:function(inline){return(inline!==false?this:this.toArray())._reverse();},reduce:function(){return this.length>1?this:this[0];},uniq:function(sorted){return this.inject([],function(array,value,index){if(0==index||(sorted?array.last()!=value:!array.include(value)))
|
46 |
+
array.push(value);return array;});},intersect:function(array){return this.uniq().findAll(function(item){return array.detect(function(value){return item===value});});},clone:function(){return[].concat(this);},size:function(){return this.length;},inspect:function(){return'['+this.map(Object.inspect).join(', ')+']';},toJSON:function(){var results=[];this.each(function(object){var value=Object.toJSON(object);if(!Object.isUndefined(value))results.push(value);});return'['+results.join(', ')+']';}});if(Object.isFunction(Array.prototype.forEach))
|
47 |
+
Array.prototype._each=Array.prototype.forEach;if(!Array.prototype.indexOf)Array.prototype.indexOf=function(item,i){i||(i=0);var length=this.length;if(i<0)i=length+i;for(;i<length;i++)
|
48 |
+
if(this[i]===item)return i;return-1;};if(!Array.prototype.lastIndexOf)Array.prototype.lastIndexOf=function(item,i){i=isNaN(i)?this.length:(i<0?this.length+i:i)+1;var n=this.slice(0,i).reverse().indexOf(item);return(n<0)?n:i-n-1;};Array.prototype.toArray=Array.prototype.clone;function $w(string){if(!Object.isString(string))return[];string=string.strip();return string?string.split(/\s+/):[];}
|
49 |
+
if(Prototype.Browser.Opera){Array.prototype.concat=function(){var array=[];for(var i=0,length=this.length;i<length;i++)array.push(this[i]);for(var i=0,length=arguments.length;i<length;i++){if(Object.isArray(arguments[i])){for(var j=0,arrayLength=arguments[i].length;j<arrayLength;j++)
|
50 |
+
array.push(arguments[i][j]);}else{array.push(arguments[i]);}}
|
51 |
+
return array;};}
|
52 |
+
Object.extend(Number.prototype,{toColorPart:function(){return this.toPaddedString(2,16);},succ:function(){return this+1;},times:function(iterator,context){$R(0,this,true).each(iterator,context);return this;},toPaddedString:function(length,radix){var string=this.toString(radix||10);return'0'.times(length-string.length)+string;},toJSON:function(){return isFinite(this)?this.toString():'null';}});$w('abs round ceil floor').each(function(method){Number.prototype[method]=Math[method].methodize();});function $H(object){return new Hash(object);};var Hash=Class.create(Enumerable,(function(){function toQueryPair(key,value){if(Object.isUndefined(value))return key;return key+'='+encodeURIComponent(String.interpret(value));}
|
53 |
+
return{initialize:function(object){this._object=Object.isHash(object)?object.toObject():Object.clone(object);},_each:function(iterator){for(var key in this._object){var value=this._object[key],pair=[key,value];pair.key=key;pair.value=value;iterator(pair);}},set:function(key,value){return this._object[key]=value;},get:function(key){if(this._object[key]!==Object.prototype[key])
|
54 |
+
return this._object[key];},unset:function(key){var value=this._object[key];delete this._object[key];return value;},toObject:function(){return Object.clone(this._object);},keys:function(){return this.pluck('key');},values:function(){return this.pluck('value');},index:function(value){var match=this.detect(function(pair){return pair.value===value;});return match&&match.key;},merge:function(object){return this.clone().update(object);},update:function(object){return new Hash(object).inject(this,function(result,pair){result.set(pair.key,pair.value);return result;});},toQueryString:function(){return this.inject([],function(results,pair){var key=encodeURIComponent(pair.key),values=pair.value;if(values&&typeof values=='object'){if(Object.isArray(values))
|
55 |
+
return results.concat(values.map(toQueryPair.curry(key)));}else results.push(toQueryPair(key,values));return results;}).join('&');},inspect:function(){return'#<Hash:{'+this.map(function(pair){return pair.map(Object.inspect).join(': ');}).join(', ')+'}>';},toJSON:function(){return Object.toJSON(this.toObject());},clone:function(){return new Hash(this);}}})());Hash.prototype.toTemplateReplacements=Hash.prototype.toObject;Hash.from=$H;var ObjectRange=Class.create(Enumerable,{initialize:function(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive;},_each:function(iterator){var value=this.start;while(this.include(value)){iterator(value);value=value.succ();}},include:function(value){if(value<this.start)
|
56 |
+
return false;if(this.exclusive)
|
57 |
+
return value<this.end;return value<=this.end;}});var $R=function(start,end,exclusive){return new ObjectRange(start,end,exclusive);};var Ajax={getTransport:function(){return Try.these(function(){return new XMLHttpRequest()},function(){return new ActiveXObject('Msxml2.XMLHTTP')},function(){return new ActiveXObject('Microsoft.XMLHTTP')})||false;},activeRequestCount:0};Ajax.Responders={responders:[],_each:function(iterator){this.responders._each(iterator);},register:function(responder){if(!this.include(responder))
|
58 |
+
this.responders.push(responder);},unregister:function(responder){this.responders=this.responders.without(responder);},dispatch:function(callback,request,transport,json){this.each(function(responder){if(Object.isFunction(responder[callback])){try{responder[callback].apply(responder,[request,transport,json]);}catch(e){}}});}};Object.extend(Ajax.Responders,Enumerable);Ajax.Responders.register({onCreate:function(){Ajax.activeRequestCount++},onComplete:function(){Ajax.activeRequestCount--}});Ajax.Base=Class.create({initialize:function(options){this.options={method:'post',asynchronous:true,contentType:'application/x-www-form-urlencoded',encoding:'UTF-8',parameters:'',evalJSON:true,evalJS:true};Object.extend(this.options,options||{});this.options.method=this.options.method.toLowerCase();if(Object.isString(this.options.parameters))
|
59 |
+
this.options.parameters=this.options.parameters.toQueryParams();else if(Object.isHash(this.options.parameters))
|
60 |
+
this.options.parameters=this.options.parameters.toObject();}});Ajax.Request=Class.create(Ajax.Base,{_complete:false,initialize:function($super,url,options){$super(options);this.transport=Ajax.getTransport();this.request(url);},request:function(url){this.url=url;this.method=this.options.method;var params=Object.clone(this.options.parameters);if(!['get','post'].include(this.method)){params['_method']=this.method;this.method='post';}
|
61 |
+
this.parameters=params;if(params=Object.toQueryString(params)){if(this.method=='get')
|
62 |
+
this.url+=(this.url.include('?')?'&':'?')+params;else if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
|
63 |
+
params+='&_=';}
|
64 |
+
try{var response=new Ajax.Response(this);if(this.options.onCreate)this.options.onCreate(response);Ajax.Responders.dispatch('onCreate',this,response);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous)this.respondToReadyState.bind(this).defer(1);this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();this.body=this.method=='post'?(this.options.postBody||params):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType)
|
65 |
+
this.onStateChange();}
|
66 |
+
catch(e){this.dispatchException(e);}},onStateChange:function(){var readyState=this.transport.readyState;if(readyState>1&&!((readyState==4)&&this._complete))
|
67 |
+
this.respondToReadyState(this.transport.readyState);},setRequestHeaders:function(){var headers={'X-Requested-With':'XMLHttpRequest','X-Prototype-Version':Prototype.Version,'Accept':'text/javascript, text/html, application/xml, text/xml, */*'};if(this.method=='post'){headers['Content-type']=this.options.contentType+
|
68 |
+
(this.options.encoding?'; charset='+this.options.encoding:'');if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005)
|
69 |
+
headers['Connection']='close';}
|
70 |
+
if(typeof this.options.requestHeaders=='object'){var extras=this.options.requestHeaders;if(Object.isFunction(extras.push))
|
71 |
+
for(var i=0,length=extras.length;i<length;i+=2)
|
72 |
+
headers[extras[i]]=extras[i+1];else
|
73 |
+
$H(extras).each(function(pair){headers[pair.key]=pair.value});}
|
74 |
+
for(var name in headers)
|
75 |
+
this.transport.setRequestHeader(name,headers[name]);},success:function(){var status=this.getStatus();return!status||(status>=200&&status<300);},getStatus:function(){try{return this.transport.status||0;}catch(e){return 0}},respondToReadyState:function(readyState){var state=Ajax.Request.Events[readyState],response=new Ajax.Response(this);if(state=='Complete'){try{this._complete=true;(this.options['on'+response.status]||this.options['on'+(this.success()?'Success':'Failure')]||Prototype.emptyFunction)(response,response.headerJSON);}catch(e){this.dispatchException(e);}
|
76 |
+
var contentType=response.getHeader('Content-type');if(this.options.evalJS=='force'||(this.options.evalJS&&this.isSameOrigin()&&contentType&&contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
|
77 |
+
this.evalResponse();}
|
78 |
+
try{(this.options['on'+state]||Prototype.emptyFunction)(response,response.headerJSON);Ajax.Responders.dispatch('on'+state,this,response,response.headerJSON);}catch(e){this.dispatchException(e);}
|
79 |
+
if(state=='Complete'){this.transport.onreadystatechange=Prototype.emptyFunction;}},isSameOrigin:function(){var m=this.url.match(/^\s*https?:\/\/[^\/]*/);return!m||(m[0]=='#{protocol}//#{domain}#{port}'.interpolate({protocol:location.protocol,domain:document.domain,port:location.port?':'+location.port:''}));},getHeader:function(name){try{return this.transport.getResponseHeader(name)||null;}catch(e){return null}},evalResponse:function(){try{return eval((this.transport.responseText||'').unfilterJSON());}catch(e){this.dispatchException(e);}},dispatchException:function(exception){(this.options.onException||Prototype.emptyFunction)(this,exception);Ajax.Responders.dispatch('onException',this,exception);}});Ajax.Request.Events=['Uninitialized','Loading','Loaded','Interactive','Complete'];Ajax.Response=Class.create({initialize:function(request){this.request=request;var transport=this.transport=request.transport,readyState=this.readyState=transport.readyState;if((readyState>2&&!Prototype.Browser.IE)||readyState==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(transport.responseText);this.headerJSON=this._getHeaderJSON();}
|
80 |
+
if(readyState==4){var xml=transport.responseXML;this.responseXML=Object.isUndefined(xml)?null:xml;this.responseJSON=this._getResponseJSON();}},status:0,statusText:'',getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||'';}catch(e){return''}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders();}catch(e){return null}},getResponseHeader:function(name){return this.transport.getResponseHeader(name);},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders();},_getHeaderJSON:function(){var json=this.getHeader('X-JSON');if(!json)return null;json=decodeURIComponent(escape(json));try{return json.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin());}catch(e){this.request.dispatchException(e);}},_getResponseJSON:function(){var options=this.request.options;if(!options.evalJSON||(options.evalJSON!='force'&&!(this.getHeader('Content-type')||'').include('application/json'))||this.responseText.blank())
|
81 |
+
return null;try{return this.responseText.evalJSON(options.sanitizeJSON||!this.request.isSameOrigin());}catch(e){this.request.dispatchException(e);}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,container,url,options){this.container={success:(container.success||container),failure:(container.failure||(container.success?null:container))};options=Object.clone(options);var onComplete=options.onComplete;options.onComplete=(function(response,json){this.updateContent(response.responseText);if(Object.isFunction(onComplete))onComplete(response,json);}).bind(this);$super(url,options);},updateContent:function(responseText){var receiver=this.container[this.success()?'success':'failure'],options=this.options;if(!options.evalScripts)responseText=responseText.stripScripts();if(receiver=$(receiver)){if(options.insertion){if(Object.isString(options.insertion)){var insertion={};insertion[options.insertion]=responseText;receiver.insert(insertion);}
|
82 |
+
else options.insertion(receiver,responseText);}
|
83 |
+
else receiver.update(responseText);}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,container,url,options){$super(options);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=container;this.url=url;this.start();},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent();},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments);},updateComplete:function(response){if(this.options.decay){this.decay=(response.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=response.responseText;}
|
84 |
+
this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency);},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options);}});function $(element){if(arguments.length>1){for(var i=0,elements=[],length=arguments.length;i<length;i++)
|
85 |
+
elements.push($(arguments[i]));return elements;}
|
86 |
+
if(Object.isString(element))
|
87 |
+
element=document.getElementById(element);return Element.extend(element);}
|
88 |
+
if(Prototype.BrowserFeatures.XPath){document._getElementsByXPath=function(expression,parentElement){var results=[];var query=document.evaluate(expression,$(parentElement)||document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);for(var i=0,length=query.snapshotLength;i<length;i++)
|
89 |
+
results.push(Element.extend(query.snapshotItem(i)));return results;};}
|
90 |
+
if(!window.Node)var Node={};if(!Node.ELEMENT_NODE){Object.extend(Node,{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12});}
|
91 |
+
(function(){var element=this.Element;this.Element=function(tagName,attributes){attributes=attributes||{};tagName=tagName.toLowerCase();var cache=Element.cache;if(Prototype.Browser.IE&&attributes.name){tagName='<'+tagName+' name="'+attributes.name+'">';delete attributes.name;return Element.writeAttribute(document.createElement(tagName),attributes);}
|
92 |
+
if(!cache[tagName])cache[tagName]=Element.extend(document.createElement(tagName));return Element.writeAttribute(cache[tagName].cloneNode(false),attributes);};Object.extend(this.Element,element||{});if(element)this.Element.prototype=element.prototype;}).call(window);Element.cache={};Element.Methods={visible:function(element){return $(element).style.display!='none';},toggle:function(element){element=$(element);Element[Element.visible(element)?'hide':'show'](element);return element;},hide:function(element){element=$(element);element.style.display='none';return element;},show:function(element){element=$(element);element.style.display='';return element;},remove:function(element){element=$(element);element.parentNode.removeChild(element);return element;},update:function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content))return element.update().insert(content);content=Object.toHTML(content);element.innerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;},replace:function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();else if(!Object.isElement(content)){content=Object.toHTML(content);var range=element.ownerDocument.createRange();range.selectNode(element);content.evalScripts.bind(content).defer();content=range.createContextualFragment(content.stripScripts());}
|
93 |
+
element.parentNode.replaceChild(content,element);return element;},insert:function(element,insertions){element=$(element);if(Object.isString(insertions)||Object.isNumber(insertions)||Object.isElement(insertions)||(insertions&&(insertions.toElement||insertions.toHTML)))
|
94 |
+
insertions={bottom:insertions};var content,insert,tagName,childNodes;for(var position in insertions){content=insertions[position];position=position.toLowerCase();insert=Element._insertionTranslations[position];if(content&&content.toElement)content=content.toElement();if(Object.isElement(content)){insert(element,content);continue;}
|
95 |
+
content=Object.toHTML(content);tagName=((position=='before'||position=='after')?element.parentNode:element).tagName.toUpperCase();childNodes=Element._getContentFromAnonymousElement(tagName,content.stripScripts());if(position=='top'||position=='after')childNodes.reverse();childNodes.each(insert.curry(element));content.evalScripts.bind(content).defer();}
|
96 |
+
return element;},wrap:function(element,wrapper,attributes){element=$(element);if(Object.isElement(wrapper))
|
97 |
+
$(wrapper).writeAttribute(attributes||{});else if(Object.isString(wrapper))wrapper=new Element(wrapper,attributes);else wrapper=new Element('div',wrapper);if(element.parentNode)
|
98 |
+
element.parentNode.replaceChild(wrapper,element);wrapper.appendChild(element);return wrapper;},inspect:function(element){element=$(element);var result='<'+element.tagName.toLowerCase();$H({'id':'id','className':'class'}).each(function(pair){var property=pair.first(),attribute=pair.last();var value=(element[property]||'').toString();if(value)result+=' '+attribute+'='+value.inspect(true);});return result+'>';},recursivelyCollect:function(element,property){element=$(element);var elements=[];while(element=element[property])
|
99 |
+
if(element.nodeType==1)
|
100 |
+
elements.push(Element.extend(element));return elements;},ancestors:function(element){return $(element).recursivelyCollect('parentNode');},descendants:function(element){return $(element).select("*");},firstDescendant:function(element){element=$(element).firstChild;while(element&&element.nodeType!=1)element=element.nextSibling;return $(element);},immediateDescendants:function(element){if(!(element=$(element).firstChild))return[];while(element&&element.nodeType!=1)element=element.nextSibling;if(element)return[element].concat($(element).nextSiblings());return[];},previousSiblings:function(element){return $(element).recursivelyCollect('previousSibling');},nextSiblings:function(element){return $(element).recursivelyCollect('nextSibling');},siblings:function(element){element=$(element);return element.previousSiblings().reverse().concat(element.nextSiblings());},match:function(element,selector){if(Object.isString(selector))
|
101 |
+
selector=new Selector(selector);return selector.match($(element));},up:function(element,expression,index){element=$(element);if(arguments.length==1)return $(element.parentNode);var ancestors=element.ancestors();return Object.isNumber(expression)?ancestors[expression]:Selector.findElement(ancestors,expression,index);},down:function(element,expression,index){element=$(element);if(arguments.length==1)return element.firstDescendant();return Object.isNumber(expression)?element.descendants()[expression]:Element.select(element,expression)[index||0];},previous:function(element,expression,index){element=$(element);if(arguments.length==1)return $(Selector.handlers.previousElementSibling(element));var previousSiblings=element.previousSiblings();return Object.isNumber(expression)?previousSiblings[expression]:Selector.findElement(previousSiblings,expression,index);},next:function(element,expression,index){element=$(element);if(arguments.length==1)return $(Selector.handlers.nextElementSibling(element));var nextSiblings=element.nextSiblings();return Object.isNumber(expression)?nextSiblings[expression]:Selector.findElement(nextSiblings,expression,index);},select:function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element,args);},adjacent:function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element.parentNode,args).without(element);},identify:function(element){element=$(element);var id=element.readAttribute('id'),self=arguments.callee;if(id)return id;do{id='anonymous_element_'+self.counter++}while($(id));element.writeAttribute('id',id);return id;},readAttribute:function(element,name){element=$(element);if(Prototype.Browser.IE){var t=Element._attributeTranslations.read;if(t.values[name])return t.values[name](element,name);if(t.names[name])name=t.names[name];if(name.include(':')){return(!element.attributes||!element.attributes[name])?null:element.attributes[name].value;}}
|
102 |
+
return element.getAttribute(name);},writeAttribute:function(element,name,value){element=$(element);var attributes={},t=Element._attributeTranslations.write;if(typeof name=='object')attributes=name;else attributes[name]=Object.isUndefined(value)?true:value;for(var attr in attributes){name=t.names[attr]||attr;value=attributes[attr];if(t.values[attr])name=t.values[attr](element,value);if(value===false||value===null)
|
103 |
+
element.removeAttribute(name);else if(value===true)
|
104 |
+
element.setAttribute(name,name);else element.setAttribute(name,value);}
|
105 |
+
return element;},getHeight:function(element){return $(element).getDimensions().height;},getWidth:function(element){return $(element).getDimensions().width;},classNames:function(element){return new Element.ClassNames(element);},hasClassName:function(element,className){if(!(element=$(element)))return;var elementClassName=element.className;return(elementClassName.length>0&&(elementClassName==className||new RegExp("(^|\\s)"+className+"(\\s|$)").test(elementClassName)));},addClassName:function(element,className){if(!(element=$(element)))return;if(!element.hasClassName(className))
|
106 |
+
element.className+=(element.className?' ':'')+className;return element;},removeClassName:function(element,className){if(!(element=$(element)))return;element.className=element.className.replace(new RegExp("(^|\\s+)"+className+"(\\s+|$)"),' ').strip();return element;},toggleClassName:function(element,className){if(!(element=$(element)))return;return element[element.hasClassName(className)?'removeClassName':'addClassName'](className);},cleanWhitespace:function(element){element=$(element);var node=element.firstChild;while(node){var nextNode=node.nextSibling;if(node.nodeType==3&&!/\S/.test(node.nodeValue))
|
107 |
+
element.removeChild(node);node=nextNode;}
|
108 |
+
return element;},empty:function(element){return $(element).innerHTML.blank();},descendantOf:function(element,ancestor){element=$(element),ancestor=$(ancestor);if(element.compareDocumentPosition)
|
109 |
+
return(element.compareDocumentPosition(ancestor)&8)===8;if(ancestor.contains)
|
110 |
+
return ancestor.contains(element)&&ancestor!==element;while(element=element.parentNode)
|
111 |
+
if(element==ancestor)return true;return false;},scrollTo:function(element){element=$(element);var pos=element.cumulativeOffset();window.scrollTo(pos[0],pos[1]);return element;},getStyle:function(element,style){element=$(element);style=style=='float'?'cssFloat':style.camelize();var value=element.style[style];if(!value||value=='auto'){var css=document.defaultView.getComputedStyle(element,null);value=css?css[style]:null;}
|
112 |
+
if(style=='opacity')return value?parseFloat(value):1.0;return value=='auto'?null:value;},getOpacity:function(element){return $(element).getStyle('opacity');},setStyle:function(element,styles){element=$(element);var elementStyle=element.style,match;if(Object.isString(styles)){element.style.cssText+=';'+styles;return styles.include('opacity')?element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]):element;}
|
113 |
+
for(var property in styles)
|
114 |
+
if(property=='opacity')element.setOpacity(styles[property]);else
|
115 |
+
elementStyle[(property=='float'||property=='cssFloat')?(Object.isUndefined(elementStyle.styleFloat)?'cssFloat':'styleFloat'):property]=styles[property];return element;},setOpacity:function(element,value){element=$(element);element.style.opacity=(value==1||value==='')?'':(value<0.00001)?0:value;return element;},getDimensions:function(element){element=$(element);var display=element.getStyle('display');if(display!='none'&&display!=null)
|
116 |
+
return{width:element.offsetWidth,height:element.offsetHeight};var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='block';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight};},makePositioned:function(element){element=$(element);var pos=Element.getStyle(element,'position');if(pos=='static'||!pos){element._madePositioned=true;element.style.position='relative';if(Prototype.Browser.Opera){element.style.top=0;element.style.left=0;}}
|
117 |
+
return element;},undoPositioned:function(element){element=$(element);if(element._madePositioned){element._madePositioned=undefined;element.style.position=element.style.top=element.style.left=element.style.bottom=element.style.right='';}
|
118 |
+
return element;},makeClipping:function(element){element=$(element);if(element._overflow)return element;element._overflow=Element.getStyle(element,'overflow')||'auto';if(element._overflow!=='hidden')
|
119 |
+
element.style.overflow='hidden';return element;},undoClipping:function(element){element=$(element);if(!element._overflow)return element;element.style.overflow=element._overflow=='auto'?'':element._overflow;element._overflow=null;return element;},cumulativeOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);return Element._returnOffset(valueL,valueT);},positionedOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){if(element.tagName.toUpperCase()=='BODY')break;var p=Element.getStyle(element,'position');if(p!=='static')break;}}while(element);return Element._returnOffset(valueL,valueT);},absolutize:function(element){element=$(element);if(element.getStyle('position')=='absolute')return element;var offsets=element.positionedOffset();var top=offsets[1];var left=offsets[0];var width=element.clientWidth;var height=element.clientHeight;element._originalLeft=left-parseFloat(element.style.left||0);element._originalTop=top-parseFloat(element.style.top||0);element._originalWidth=element.style.width;element._originalHeight=element.style.height;element.style.position='absolute';element.style.top=top+'px';element.style.left=left+'px';element.style.width=width+'px';element.style.height=height+'px';return element;},relativize:function(element){element=$(element);if(element.getStyle('position')=='relative')return element;element.style.position='relative';var top=parseFloat(element.style.top||0)-(element._originalTop||0);var left=parseFloat(element.style.left||0)-(element._originalLeft||0);element.style.top=top+'px';element.style.left=left+'px';element.style.height=element._originalHeight;element.style.width=element._originalWidth;return element;},cumulativeScrollOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode;}while(element);return Element._returnOffset(valueL,valueT);},getOffsetParent:function(element){if(element.offsetParent)return $(element.offsetParent);if(element==document.body)return $(element);if(element.tagName.toUpperCase()=='HTML')
|
120 |
+
return $(document.body);while((element=element.parentNode)&&element!=document.body)
|
121 |
+
if(Element.getStyle(element,'position')!='static')
|
122 |
+
return $(element);return $(document.body);},viewportOffset:function(forElement){var valueT=0,valueL=0;var element=forElement;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body&&Element.getStyle(element,'position')=='absolute')break;}while(element=element.offsetParent);element=forElement;do{if(!Prototype.Browser.Opera||(element.tagName&&(element.tagName.toUpperCase()=='BODY'))){valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0;}}while(element=element.parentNode);return Element._returnOffset(valueL,valueT);},clonePosition:function(element,source){var options=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},arguments[2]||{});source=$(source);var p=source.viewportOffset();element=$(element);var delta=[0,0];var parent=null;if(Element.getStyle(element,'position')=='absolute'){parent=element.getOffsetParent();delta=parent.viewportOffset();}
|
123 |
+
if(parent==document.body){delta[0]-=document.body.offsetLeft;delta[1]-=document.body.offsetTop;}
|
124 |
+
if(options.setLeft)element.style.left=(p[0]-delta[0]+options.offsetLeft)+'px';if(options.setTop)element.style.top=(p[1]-delta[1]+options.offsetTop)+'px';if(options.setWidth)element.style.width=source.offsetWidth+'px';if(options.setHeight)element.style.height=source.offsetHeight+'px';return element;}};Element.Methods.identify.counter=1;Object.extend(Element.Methods,{getElementsBySelector:Element.Methods.select,childElements:Element.Methods.immediateDescendants});Element._attributeTranslations={write:{names:{className:'class',htmlFor:'for'},values:{}}};if(Prototype.Browser.Opera){Element.Methods.getStyle=Element.Methods.getStyle.wrap(function(proceed,element,style){switch(style){case'left':case'top':case'right':case'bottom':if(proceed(element,'position')==='static')return null;case'height':case'width':if(!Element.visible(element))return null;var dim=parseInt(proceed(element,style),10);if(dim!==element['offset'+style.capitalize()])
|
125 |
+
return dim+'px';var properties;if(style==='height'){properties=['border-top-width','padding-top','padding-bottom','border-bottom-width'];}
|
126 |
+
else{properties=['border-left-width','padding-left','padding-right','border-right-width'];}
|
127 |
+
return properties.inject(dim,function(memo,property){var val=proceed(element,property);return val===null?memo:memo-parseInt(val,10);})+'px';default:return proceed(element,style);}});Element.Methods.readAttribute=Element.Methods.readAttribute.wrap(function(proceed,element,attribute){if(attribute==='title')return element.title;return proceed(element,attribute);});}
|
128 |
+
else if(Prototype.Browser.IE){Element.Methods.getOffsetParent=Element.Methods.getOffsetParent.wrap(function(proceed,element){element=$(element);try{element.offsetParent}
|
129 |
+
catch(e){return $(document.body)}
|
130 |
+
var position=element.getStyle('position');if(position!=='static')return proceed(element);element.setStyle({position:'relative'});var value=proceed(element);element.setStyle({position:position});return value;});$w('positionedOffset viewportOffset').each(function(method){Element.Methods[method]=Element.Methods[method].wrap(function(proceed,element){element=$(element);try{element.offsetParent}
|
131 |
+
catch(e){return Element._returnOffset(0,0)}
|
132 |
+
var position=element.getStyle('position');if(position!=='static')return proceed(element);var offsetParent=element.getOffsetParent();if(offsetParent&&offsetParent.getStyle('position')==='fixed')
|
133 |
+
offsetParent.setStyle({zoom:1});element.setStyle({position:'relative'});var value=proceed(element);element.setStyle({position:position});return value;});});Element.Methods.cumulativeOffset=Element.Methods.cumulativeOffset.wrap(function(proceed,element){try{element.offsetParent}
|
134 |
+
catch(e){return Element._returnOffset(0,0)}
|
135 |
+
return proceed(element);});Element.Methods.getStyle=function(element,style){element=$(element);style=(style=='float'||style=='cssFloat')?'styleFloat':style.camelize();var value=element.style[style];if(!value&&element.currentStyle)value=element.currentStyle[style];if(style=='opacity'){if(value=(element.getStyle('filter')||'').match(/alpha\(opacity=(.*)\)/))
|
136 |
+
if(value[1])return parseFloat(value[1])/100;return 1.0;}
|
137 |
+
if(value=='auto'){if((style=='width'||style=='height')&&(element.getStyle('display')!='none'))
|
138 |
+
return element['offset'+style.capitalize()]+'px';return null;}
|
139 |
+
return value;};Element.Methods.setOpacity=function(element,value){function stripAlpha(filter){return filter.replace(/alpha\([^\)]*\)/gi,'');}
|
140 |
+
element=$(element);var currentStyle=element.currentStyle;if((currentStyle&&!currentStyle.hasLayout)||(!currentStyle&&element.style.zoom=='normal'))
|
141 |
+
element.style.zoom=1;var filter=element.getStyle('filter'),style=element.style;if(value==1||value===''){(filter=stripAlpha(filter))?style.filter=filter:style.removeAttribute('filter');return element;}else if(value<0.00001)value=0;style.filter=stripAlpha(filter)+'alpha(opacity='+(value*100)+')';return element;};Element._attributeTranslations={read:{names:{'class':'className','for':'htmlFor'},values:{_getAttr:function(element,attribute){return element.getAttribute(attribute,2);},_getAttrNode:function(element,attribute){var node=element.getAttributeNode(attribute);return node?node.value:"";},_getEv:function(element,attribute){attribute=element.getAttribute(attribute);return attribute?attribute.toString().slice(23,-2):null;},_flag:function(element,attribute){return $(element).hasAttribute(attribute)?attribute:null;},style:function(element){return element.style.cssText.toLowerCase();},title:function(element){return element.title;}}}};Element._attributeTranslations.write={names:Object.extend({cellpadding:'cellPadding',cellspacing:'cellSpacing'},Element._attributeTranslations.read.names),values:{checked:function(element,value){element.checked=!!value;},style:function(element,value){element.style.cssText=value?value:'';}}};Element._attributeTranslations.has={};$w('colSpan rowSpan vAlign dateTime accessKey tabIndex '+'encType maxLength readOnly longDesc frameBorder').each(function(attr){Element._attributeTranslations.write.names[attr.toLowerCase()]=attr;Element._attributeTranslations.has[attr.toLowerCase()]=attr;});(function(v){Object.extend(v,{href:v._getAttr,src:v._getAttr,type:v._getAttr,action:v._getAttrNode,disabled:v._flag,checked:v._flag,readonly:v._flag,multiple:v._flag,onload:v._getEv,onunload:v._getEv,onclick:v._getEv,ondblclick:v._getEv,onmousedown:v._getEv,onmouseup:v._getEv,onmouseover:v._getEv,onmousemove:v._getEv,onmouseout:v._getEv,onfocus:v._getEv,onblur:v._getEv,onkeypress:v._getEv,onkeydown:v._getEv,onkeyup:v._getEv,onsubmit:v._getEv,onreset:v._getEv,onselect:v._getEv,onchange:v._getEv});})(Element._attributeTranslations.read.values);}
|
142 |
+
else if(Prototype.Browser.Gecko&&/rv:1\.8\.0/.test(navigator.userAgent)){Element.Methods.setOpacity=function(element,value){element=$(element);element.style.opacity=(value==1)?0.999999:(value==='')?'':(value<0.00001)?0:value;return element;};}
|
143 |
+
else if(Prototype.Browser.WebKit){Element.Methods.setOpacity=function(element,value){element=$(element);element.style.opacity=(value==1||value==='')?'':(value<0.00001)?0:value;if(value==1)
|
144 |
+
if(element.tagName.toUpperCase()=='IMG'&&element.width){element.width++;element.width--;}else try{var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){}
|
145 |
+
return element;};Element.Methods.cumulativeOffset=function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body)
|
146 |
+
if(Element.getStyle(element,'position')=='absolute')break;element=element.offsetParent;}while(element);return Element._returnOffset(valueL,valueT);};}
|
147 |
+
if(Prototype.Browser.IE||Prototype.Browser.Opera){Element.Methods.update=function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content))return element.update().insert(content);content=Object.toHTML(content);var tagName=element.tagName.toUpperCase();if(tagName in Element._insertionTranslations.tags){$A(element.childNodes).each(function(node){element.removeChild(node)});Element._getContentFromAnonymousElement(tagName,content.stripScripts()).each(function(node){element.appendChild(node)});}
|
148 |
+
else element.innerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;};}
|
149 |
+
if('outerHTML'in document.createElement('div')){Element.Methods.replace=function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content)){element.parentNode.replaceChild(content,element);return element;}
|
150 |
+
content=Object.toHTML(content);var parent=element.parentNode,tagName=parent.tagName.toUpperCase();if(Element._insertionTranslations.tags[tagName]){var nextSibling=element.next();var fragments=Element._getContentFromAnonymousElement(tagName,content.stripScripts());parent.removeChild(element);if(nextSibling)
|
151 |
+
fragments.each(function(node){parent.insertBefore(node,nextSibling)});else
|
152 |
+
fragments.each(function(node){parent.appendChild(node)});}
|
153 |
+
else element.outerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;};}
|
154 |
+
Element._returnOffset=function(l,t){var result=[l,t];result.left=l;result.top=t;return result;};Element._getContentFromAnonymousElement=function(tagName,html){var div=new Element('div'),t=Element._insertionTranslations.tags[tagName];if(t){div.innerHTML=t[0]+html+t[1];t[2].times(function(){div=div.firstChild});}else div.innerHTML=html;return $A(div.childNodes);};Element._insertionTranslations={before:function(element,node){element.parentNode.insertBefore(node,element);},top:function(element,node){element.insertBefore(node,element.firstChild);},bottom:function(element,node){element.appendChild(node);},after:function(element,node){element.parentNode.insertBefore(node,element.nextSibling);},tags:{TABLE:['<table>','</table>',1],TBODY:['<table><tbody>','</tbody></table>',2],TR:['<table><tbody><tr>','</tr></tbody></table>',3],TD:['<table><tbody><tr><td>','</td></tr></tbody></table>',4],SELECT:['<select>','</select>',1]}};(function(){Object.extend(this.tags,{THEAD:this.tags.TBODY,TFOOT:this.tags.TBODY,TH:this.tags.TD});}).call(Element._insertionTranslations);Element.Methods.Simulated={hasAttribute:function(element,attribute){attribute=Element._attributeTranslations.has[attribute]||attribute;var node=$(element).getAttributeNode(attribute);return!!(node&&node.specified);}};Element.Methods.ByTag={};Object.extend(Element,Element.Methods);if(!Prototype.BrowserFeatures.ElementExtensions&&document.createElement('div')['__proto__']){window.HTMLElement={};window.HTMLElement.prototype=document.createElement('div')['__proto__'];Prototype.BrowserFeatures.ElementExtensions=true;}
|
155 |
+
Element.extend=(function(){if(Prototype.BrowserFeatures.SpecificElementExtensions)
|
156 |
+
return Prototype.K;var Methods={},ByTag=Element.Methods.ByTag;var extend=Object.extend(function(element){if(!element||element._extendedByPrototype||element.nodeType!=1||element==window)return element;var methods=Object.clone(Methods),tagName=element.tagName.toUpperCase(),property,value;if(ByTag[tagName])Object.extend(methods,ByTag[tagName]);for(property in methods){value=methods[property];if(Object.isFunction(value)&&!(property in element))
|
157 |
+
element[property]=value.methodize();}
|
158 |
+
element._extendedByPrototype=Prototype.emptyFunction;return element;},{refresh:function(){if(!Prototype.BrowserFeatures.ElementExtensions){Object.extend(Methods,Element.Methods);Object.extend(Methods,Element.Methods.Simulated);}}});extend.refresh();return extend;})();Element.hasAttribute=function(element,attribute){if(element.hasAttribute)return element.hasAttribute(attribute);return Element.Methods.Simulated.hasAttribute(element,attribute);};Element.addMethods=function(methods){var F=Prototype.BrowserFeatures,T=Element.Methods.ByTag;if(!methods){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(Element.Methods.ByTag,{"FORM":Object.clone(Form.Methods),"INPUT":Object.clone(Form.Element.Methods),"SELECT":Object.clone(Form.Element.Methods),"TEXTAREA":Object.clone(Form.Element.Methods)});}
|
159 |
+
if(arguments.length==2){var tagName=methods;methods=arguments[1];}
|
160 |
+
if(!tagName)Object.extend(Element.Methods,methods||{});else{if(Object.isArray(tagName))tagName.each(extend);else extend(tagName);}
|
161 |
+
function extend(tagName){tagName=tagName.toUpperCase();if(!Element.Methods.ByTag[tagName])
|
162 |
+
Element.Methods.ByTag[tagName]={};Object.extend(Element.Methods.ByTag[tagName],methods);}
|
163 |
+
function copy(methods,destination,onlyIfAbsent){onlyIfAbsent=onlyIfAbsent||false;for(var property in methods){var value=methods[property];if(!Object.isFunction(value))continue;if(!onlyIfAbsent||!(property in destination))
|
164 |
+
destination[property]=value.methodize();}}
|
165 |
+
function findDOMClass(tagName){var klass;var trans={"OPTGROUP":"OptGroup","TEXTAREA":"TextArea","P":"Paragraph","FIELDSET":"FieldSet","UL":"UList","OL":"OList","DL":"DList","DIR":"Directory","H1":"Heading","H2":"Heading","H3":"Heading","H4":"Heading","H5":"Heading","H6":"Heading","Q":"Quote","INS":"Mod","DEL":"Mod","A":"Anchor","IMG":"Image","CAPTION":"TableCaption","COL":"TableCol","COLGROUP":"TableCol","THEAD":"TableSection","TFOOT":"TableSection","TBODY":"TableSection","TR":"TableRow","TH":"TableCell","TD":"TableCell","FRAMESET":"FrameSet","IFRAME":"IFrame"};if(trans[tagName])klass='HTML'+trans[tagName]+'Element';if(window[klass])return window[klass];klass='HTML'+tagName+'Element';if(window[klass])return window[klass];klass='HTML'+tagName.capitalize()+'Element';if(window[klass])return window[klass];window[klass]={};window[klass].prototype=document.createElement(tagName)['__proto__'];return window[klass];}
|
166 |
+
if(F.ElementExtensions){copy(Element.Methods,HTMLElement.prototype);copy(Element.Methods.Simulated,HTMLElement.prototype,true);}
|
167 |
+
if(F.SpecificElementExtensions){for(var tag in Element.Methods.ByTag){var klass=findDOMClass(tag);if(Object.isUndefined(klass))continue;copy(T[tag],klass.prototype);}}
|
168 |
+
Object.extend(Element,Element.Methods);delete Element.ByTag;if(Element.extend.refresh)Element.extend.refresh();Element.cache={};};document.viewport={getDimensions:function(){var dimensions={},B=Prototype.Browser;$w('width height').each(function(d){var D=d.capitalize();if(B.WebKit&&!document.evaluate){dimensions[d]=self['inner'+D];}else if(B.Opera&&parseFloat(window.opera.version())<9.5){dimensions[d]=document.body['client'+D]}else{dimensions[d]=document.documentElement['client'+D];}});return dimensions;},getWidth:function(){return this.getDimensions().width;},getHeight:function(){return this.getDimensions().height;},getScrollOffsets:function(){return Element._returnOffset(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop);}};var Selector=Class.create({initialize:function(expression){this.expression=expression.strip();if(this.shouldUseSelectorsAPI()){this.mode='selectorsAPI';}else if(this.shouldUseXPath()){this.mode='xpath';this.compileXPathMatcher();}else{this.mode="normal";this.compileMatcher();}},shouldUseXPath:function(){if(!Prototype.BrowserFeatures.XPath)return false;var e=this.expression;if(Prototype.Browser.WebKit&&(e.include("-of-type")||e.include(":empty")))
|
169 |
+
return false;if((/(\[[\w-]*?:|:checked)/).test(e))
|
170 |
+
return false;return true;},shouldUseSelectorsAPI:function(){if(!Prototype.BrowserFeatures.SelectorsAPI)return false;if(!Selector._div)Selector._div=new Element('div');try{Selector._div.querySelector(this.expression);}catch(e){return false;}
|
171 |
+
return true;},compileMatcher:function(){var e=this.expression,ps=Selector.patterns,h=Selector.handlers,c=Selector.criteria,le,p,m;if(Selector._cache[e]){this.matcher=Selector._cache[e];return;}
|
172 |
+
this.matcher=["this.matcher = function(root) {","var r = root, h = Selector.handlers, c = false, n;"];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in ps){p=ps[i];if(m=e.match(p)){this.matcher.push(Object.isFunction(c[i])?c[i](m):new Template(c[i]).evaluate(m));e=e.replace(m[0],'');break;}}}
|
173 |
+
this.matcher.push("return h.unique(n);\n}");eval(this.matcher.join('\n'));Selector._cache[this.expression]=this.matcher;},compileXPathMatcher:function(){var e=this.expression,ps=Selector.patterns,x=Selector.xpath,le,m;if(Selector._cache[e]){this.xpath=Selector._cache[e];return;}
|
174 |
+
this.matcher=['.//*'];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in ps){if(m=e.match(ps[i])){this.matcher.push(Object.isFunction(x[i])?x[i](m):new Template(x[i]).evaluate(m));e=e.replace(m[0],'');break;}}}
|
175 |
+
this.xpath=this.matcher.join('');Selector._cache[this.expression]=this.xpath;},findElements:function(root){root=root||document;var e=this.expression,results;switch(this.mode){case'selectorsAPI':if(root!==document){var oldId=root.id,id=$(root).identify();e="#"+id+" "+e;}
|
176 |
+
results=$A(root.querySelectorAll(e)).map(Element.extend);root.id=oldId;return results;case'xpath':return document._getElementsByXPath(this.xpath,root);default:return this.matcher(root);}},match:function(element){this.tokens=[];var e=this.expression,ps=Selector.patterns,as=Selector.assertions;var le,p,m;while(e&&le!==e&&(/\S/).test(e)){le=e;for(var i in ps){p=ps[i];if(m=e.match(p)){if(as[i]){this.tokens.push([i,Object.clone(m)]);e=e.replace(m[0],'');}else{return this.findElements(document).include(element);}}}}
|
177 |
+
var match=true,name,matches;for(var i=0,token;token=this.tokens[i];i++){name=token[0],matches=token[1];if(!Selector.assertions[name](element,matches)){match=false;break;}}
|
178 |
+
return match;},toString:function(){return this.expression;},inspect:function(){return"#<Selector:"+this.expression.inspect()+">";}});Object.extend(Selector,{_cache:{},xpath:{descendant:"//*",child:"/*",adjacent:"/following-sibling::*[1]",laterSibling:'/following-sibling::*',tagName:function(m){if(m[1]=='*')return'';return"[local-name()='"+m[1].toLowerCase()+"' or local-name()='"+m[1].toUpperCase()+"']";},className:"[contains(concat(' ', @class, ' '), ' #{1} ')]",id:"[@id='#{1}']",attrPresence:function(m){m[1]=m[1].toLowerCase();return new Template("[@#{1}]").evaluate(m);},attr:function(m){m[1]=m[1].toLowerCase();m[3]=m[5]||m[6];return new Template(Selector.xpath.operators[m[2]]).evaluate(m);},pseudo:function(m){var h=Selector.xpath.pseudos[m[1]];if(!h)return'';if(Object.isFunction(h))return h(m);return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);},operators:{'=':"[@#{1}='#{3}']",'!=':"[@#{1}!='#{3}']",'^=':"[starts-with(@#{1}, '#{3}')]",'$=':"[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",'*=':"[contains(@#{1}, '#{3}')]",'~=':"[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",'|=':"[contains(concat('-', @#{1}, '-'), '-#{3}-')]"},pseudos:{'first-child':'[not(preceding-sibling::*)]','last-child':'[not(following-sibling::*)]','only-child':'[not(preceding-sibling::* or following-sibling::*)]','empty':"[count(*) = 0 and (count(text()) = 0)]",'checked':"[@checked]",'disabled':"[(@disabled) and (@type!='hidden')]",'enabled':"[not(@disabled) and (@type!='hidden')]",'not':function(m){var e=m[6],p=Selector.patterns,x=Selector.xpath,le,v;var exclusion=[];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in p){if(m=e.match(p[i])){v=Object.isFunction(x[i])?x[i](m):new Template(x[i]).evaluate(m);exclusion.push("("+v.substring(1,v.length-1)+")");e=e.replace(m[0],'');break;}}}
|
179 |
+
return"[not("+exclusion.join(" and ")+")]";},'nth-child':function(m){return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ",m);},'nth-last-child':function(m){return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ",m);},'nth-of-type':function(m){return Selector.xpath.pseudos.nth("position() ",m);},'nth-last-of-type':function(m){return Selector.xpath.pseudos.nth("(last() + 1 - position()) ",m);},'first-of-type':function(m){m[6]="1";return Selector.xpath.pseudos['nth-of-type'](m);},'last-of-type':function(m){m[6]="1";return Selector.xpath.pseudos['nth-last-of-type'](m);},'only-of-type':function(m){var p=Selector.xpath.pseudos;return p['first-of-type'](m)+p['last-of-type'](m);},nth:function(fragment,m){var mm,formula=m[6],predicate;if(formula=='even')formula='2n+0';if(formula=='odd')formula='2n+1';if(mm=formula.match(/^(\d+)$/))
|
180 |
+
return'['+fragment+"= "+mm[1]+']';if(mm=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(mm[1]=="-")mm[1]=-1;var a=mm[1]?Number(mm[1]):1;var b=mm[2]?Number(mm[2]):0;predicate="[((#{fragment} - #{b}) mod #{a} = 0) and "+"((#{fragment} - #{b}) div #{a} >= 0)]";return new Template(predicate).evaluate({fragment:fragment,a:a,b:b});}}}},criteria:{tagName:'n = h.tagName(n, r, "#{1}", c); c = false;',className:'n = h.className(n, r, "#{1}", c); c = false;',id:'n = h.id(n, r, "#{1}", c); c = false;',attrPresence:'n = h.attrPresence(n, r, "#{1}", c); c = false;',attr:function(m){m[3]=(m[5]||m[6]);return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m);},pseudo:function(m){if(m[6])m[6]=m[6].replace(/"/g,'\\"');return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);},descendant:'c = "descendant";',child:'c = "child";',adjacent:'c = "adjacent";',laterSibling:'c = "laterSibling";'},patterns:{laterSibling:/^\s*~\s*/,child:/^\s*>\s*/,adjacent:/^\s*\+\s*/,descendant:/^\s/,tagName:/^\s*(\*|[\w\-]+)(\b|$)?/,id:/^#([\w\-\*]+)(\b|$)/,className:/^\.([\w\-\*]+)(\b|$)/,pseudo:/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/,attrPresence:/^\[((?:[\w]+:)?[\w]+)\]/,attr:/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/},assertions:{tagName:function(element,matches){return matches[1].toUpperCase()==element.tagName.toUpperCase();},className:function(element,matches){return Element.hasClassName(element,matches[1]);},id:function(element,matches){return element.id===matches[1];},attrPresence:function(element,matches){return Element.hasAttribute(element,matches[1]);},attr:function(element,matches){var nodeValue=Element.readAttribute(element,matches[1]);return nodeValue&&Selector.operators[matches[2]](nodeValue,matches[5]||matches[6]);}},handlers:{concat:function(a,b){for(var i=0,node;node=b[i];i++)
|
181 |
+
a.push(node);return a;},mark:function(nodes){var _true=Prototype.emptyFunction;for(var i=0,node;node=nodes[i];i++)
|
182 |
+
node._countedByPrototype=_true;return nodes;},unmark:function(nodes){for(var i=0,node;node=nodes[i];i++)
|
183 |
+
node._countedByPrototype=undefined;return nodes;},index:function(parentNode,reverse,ofType){parentNode._countedByPrototype=Prototype.emptyFunction;if(reverse){for(var nodes=parentNode.childNodes,i=nodes.length-1,j=1;i>=0;i--){var node=nodes[i];if(node.nodeType==1&&(!ofType||node._countedByPrototype))node.nodeIndex=j++;}}else{for(var i=0,j=1,nodes=parentNode.childNodes;node=nodes[i];i++)
|
184 |
+
if(node.nodeType==1&&(!ofType||node._countedByPrototype))node.nodeIndex=j++;}},unique:function(nodes){if(nodes.length==0)return nodes;var results=[],n;for(var i=0,l=nodes.length;i<l;i++)
|
185 |
+
if(!(n=nodes[i])._countedByPrototype){n._countedByPrototype=Prototype.emptyFunction;results.push(Element.extend(n));}
|
186 |
+
return Selector.handlers.unmark(results);},descendant:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++)
|
187 |
+
h.concat(results,node.getElementsByTagName('*'));return results;},child:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++){for(var j=0,child;child=node.childNodes[j];j++)
|
188 |
+
if(child.nodeType==1&&child.tagName!='!')results.push(child);}
|
189 |
+
return results;},adjacent:function(nodes){for(var i=0,results=[],node;node=nodes[i];i++){var next=this.nextElementSibling(node);if(next)results.push(next);}
|
190 |
+
return results;},laterSibling:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++)
|
191 |
+
h.concat(results,Element.nextSiblings(node));return results;},nextElementSibling:function(node){while(node=node.nextSibling)
|
192 |
+
if(node.nodeType==1)return node;return null;},previousElementSibling:function(node){while(node=node.previousSibling)
|
193 |
+
if(node.nodeType==1)return node;return null;},tagName:function(nodes,root,tagName,combinator){var uTagName=tagName.toUpperCase();var results=[],h=Selector.handlers;if(nodes){if(combinator){if(combinator=="descendant"){for(var i=0,node;node=nodes[i];i++)
|
194 |
+
h.concat(results,node.getElementsByTagName(tagName));return results;}else nodes=this[combinator](nodes);if(tagName=="*")return nodes;}
|
195 |
+
for(var i=0,node;node=nodes[i];i++)
|
196 |
+
if(node.tagName.toUpperCase()===uTagName)results.push(node);return results;}else return root.getElementsByTagName(tagName);},id:function(nodes,root,id,combinator){var targetNode=$(id),h=Selector.handlers;if(!targetNode)return[];if(!nodes&&root==document)return[targetNode];if(nodes){if(combinator){if(combinator=='child'){for(var i=0,node;node=nodes[i];i++)
|
197 |
+
if(targetNode.parentNode==node)return[targetNode];}else if(combinator=='descendant'){for(var i=0,node;node=nodes[i];i++)
|
198 |
+
if(Element.descendantOf(targetNode,node))return[targetNode];}else if(combinator=='adjacent'){for(var i=0,node;node=nodes[i];i++)
|
199 |
+
if(Selector.handlers.previousElementSibling(targetNode)==node)
|
200 |
+
return[targetNode];}else nodes=h[combinator](nodes);}
|
201 |
+
for(var i=0,node;node=nodes[i];i++)
|
202 |
+
if(node==targetNode)return[targetNode];return[];}
|
203 |
+
return(targetNode&&Element.descendantOf(targetNode,root))?[targetNode]:[];},className:function(nodes,root,className,combinator){if(nodes&&combinator)nodes=this[combinator](nodes);return Selector.handlers.byClassName(nodes,root,className);},byClassName:function(nodes,root,className){if(!nodes)nodes=Selector.handlers.descendant([root]);var needle=' '+className+' ';for(var i=0,results=[],node,nodeClassName;node=nodes[i];i++){nodeClassName=node.className;if(nodeClassName.length==0)continue;if(nodeClassName==className||(' '+nodeClassName+' ').include(needle))
|
204 |
+
results.push(node);}
|
205 |
+
return results;},attrPresence:function(nodes,root,attr,combinator){if(!nodes)nodes=root.getElementsByTagName("*");if(nodes&&combinator)nodes=this[combinator](nodes);var results=[];for(var i=0,node;node=nodes[i];i++)
|
206 |
+
if(Element.hasAttribute(node,attr))results.push(node);return results;},attr:function(nodes,root,attr,value,operator,combinator){if(!nodes)nodes=root.getElementsByTagName("*");if(nodes&&combinator)nodes=this[combinator](nodes);var handler=Selector.operators[operator],results=[];for(var i=0,node;node=nodes[i];i++){var nodeValue=Element.readAttribute(node,attr);if(nodeValue===null)continue;if(handler(nodeValue,value))results.push(node);}
|
207 |
+
return results;},pseudo:function(nodes,name,value,root,combinator){if(nodes&&combinator)nodes=this[combinator](nodes);if(!nodes)nodes=root.getElementsByTagName("*");return Selector.pseudos[name](nodes,value,root);}},pseudos:{'first-child':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(Selector.handlers.previousElementSibling(node))continue;results.push(node);}
|
208 |
+
return results;},'last-child':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(Selector.handlers.nextElementSibling(node))continue;results.push(node);}
|
209 |
+
return results;},'only-child':function(nodes,value,root){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++)
|
210 |
+
if(!h.previousElementSibling(node)&&!h.nextElementSibling(node))
|
211 |
+
results.push(node);return results;},'nth-child':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root);},'nth-last-child':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,true);},'nth-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,false,true);},'nth-last-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,true,true);},'first-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,"1",root,false,true);},'last-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,"1",root,true,true);},'only-of-type':function(nodes,formula,root){var p=Selector.pseudos;return p['last-of-type'](p['first-of-type'](nodes,formula,root),formula,root);},getIndices:function(a,b,total){if(a==0)return b>0?[b]:[];return $R(1,total).inject([],function(memo,i){if(0==(i-b)%a&&(i-b)/a>=0)memo.push(i);return memo;});},nth:function(nodes,formula,root,reverse,ofType){if(nodes.length==0)return[];if(formula=='even')formula='2n+0';if(formula=='odd')formula='2n+1';var h=Selector.handlers,results=[],indexed=[],m;h.mark(nodes);for(var i=0,node;node=nodes[i];i++){if(!node.parentNode._countedByPrototype){h.index(node.parentNode,reverse,ofType);indexed.push(node.parentNode);}}
|
212 |
+
if(formula.match(/^\d+$/)){formula=Number(formula);for(var i=0,node;node=nodes[i];i++)
|
213 |
+
if(node.nodeIndex==formula)results.push(node);}else if(m=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(m[1]=="-")m[1]=-1;var a=m[1]?Number(m[1]):1;var b=m[2]?Number(m[2]):0;var indices=Selector.pseudos.getIndices(a,b,nodes.length);for(var i=0,node,l=indices.length;node=nodes[i];i++){for(var j=0;j<l;j++)
|
214 |
+
if(node.nodeIndex==indices[j])results.push(node);}}
|
215 |
+
h.unmark(nodes);h.unmark(indexed);return results;},'empty':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(node.tagName=='!'||node.firstChild)continue;results.push(node);}
|
216 |
+
return results;},'not':function(nodes,selector,root){var h=Selector.handlers,selectorType,m;var exclusions=new Selector(selector).findElements(root);h.mark(exclusions);for(var i=0,results=[],node;node=nodes[i];i++)
|
217 |
+
if(!node._countedByPrototype)results.push(node);h.unmark(exclusions);return results;},'enabled':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++)
|
218 |
+
if(!node.disabled&&(!node.type||node.type!=='hidden'))
|
219 |
+
results.push(node);return results;},'disabled':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++)
|
220 |
+
if(node.disabled)results.push(node);return results;},'checked':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++)
|
221 |
+
if(node.checked)results.push(node);return results;}},operators:{'=':function(nv,v){return nv==v;},'!=':function(nv,v){return nv!=v;},'^=':function(nv,v){return nv==v||nv&&nv.startsWith(v);},'$=':function(nv,v){return nv==v||nv&&nv.endsWith(v);},'*=':function(nv,v){return nv==v||nv&&nv.include(v);},'$=':function(nv,v){return nv.endsWith(v);},'*=':function(nv,v){return nv.include(v);},'~=':function(nv,v){return(' '+nv+' ').include(' '+v+' ');},'|=':function(nv,v){return('-'+(nv||"").toUpperCase()+'-').include('-'+(v||"").toUpperCase()+'-');}},split:function(expression){var expressions=[];expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/,function(m){expressions.push(m[1].strip());});return expressions;},matchElements:function(elements,expression){var matches=$$(expression),h=Selector.handlers;h.mark(matches);for(var i=0,results=[],element;element=elements[i];i++)
|
222 |
+
if(element._countedByPrototype)results.push(element);h.unmark(matches);return results;},findElement:function(elements,expression,index){if(Object.isNumber(expression)){index=expression;expression=false;}
|
223 |
+
return Selector.matchElements(elements,expression||'*')[index||0];},findChildElements:function(element,expressions){expressions=Selector.split(expressions.join(','));var results=[],h=Selector.handlers;for(var i=0,l=expressions.length,selector;i<l;i++){selector=new Selector(expressions[i].strip());h.concat(results,selector.findElements(element));}
|
224 |
+
return(l>1)?h.unique(results):results;}});if(Prototype.Browser.IE){Object.extend(Selector.handlers,{concat:function(a,b){for(var i=0,node;node=b[i];i++)
|
225 |
+
if(node.tagName!=="!")a.push(node);return a;},unmark:function(nodes){for(var i=0,node;node=nodes[i];i++)
|
226 |
+
node.removeAttribute('_countedByPrototype');return nodes;}});}
|
227 |
+
function $$(){return Selector.findChildElements(document,$A(arguments));}
|
228 |
+
var Form={reset:function(form){$(form).reset();return form;},serializeElements:function(elements,options){if(typeof options!='object')options={hash:!!options};else if(Object.isUndefined(options.hash))options.hash=true;var key,value,submitted=false,submit=options.submit;var data=elements.inject({},function(result,element){if(!element.disabled&&element.name){key=element.name;value=$(element).getValue();if(value!=null&&element.type!='file'&&(element.type!='submit'||(!submitted&&submit!==false&&(!submit||key==submit)&&(submitted=true)))){if(key in result){if(!Object.isArray(result[key]))result[key]=[result[key]];result[key].push(value);}
|
229 |
+
else result[key]=value;}}
|
230 |
+
return result;});return options.hash?data:Object.toQueryString(data);}};Form.Methods={serialize:function(form,options){return Form.serializeElements(Form.getElements(form),options);},getElements:function(form){return $A($(form).getElementsByTagName('*')).inject([],function(elements,child){if(Form.Element.Serializers[child.tagName.toLowerCase()])
|
231 |
+
elements.push(Element.extend(child));return elements;});},getInputs:function(form,typeName,name){form=$(form);var inputs=form.getElementsByTagName('input');if(!typeName&&!name)return $A(inputs).map(Element.extend);for(var i=0,matchingInputs=[],length=inputs.length;i<length;i++){var input=inputs[i];if((typeName&&input.type!=typeName)||(name&&input.name!=name))
|
232 |
+
continue;matchingInputs.push(Element.extend(input));}
|
233 |
+
return matchingInputs;},disable:function(form){form=$(form);Form.getElements(form).invoke('disable');return form;},enable:function(form){form=$(form);Form.getElements(form).invoke('enable');return form;},findFirstElement:function(form){var elements=$(form).getElements().findAll(function(element){return'hidden'!=element.type&&!element.disabled;});var firstByIndex=elements.findAll(function(element){return element.hasAttribute('tabIndex')&&element.tabIndex>=0;}).sortBy(function(element){return element.tabIndex}).first();return firstByIndex?firstByIndex:elements.find(function(element){return['input','select','textarea'].include(element.tagName.toLowerCase());});},focusFirstElement:function(form){form=$(form);form.findFirstElement().activate();return form;},request:function(form,options){form=$(form),options=Object.clone(options||{});var params=options.parameters,action=form.readAttribute('action')||'';if(action.blank())action=window.location.href;options.parameters=form.serialize(true);if(params){if(Object.isString(params))params=params.toQueryParams();Object.extend(options.parameters,params);}
|
234 |
+
if(form.hasAttribute('method')&&!options.method)
|
235 |
+
options.method=form.method;return new Ajax.Request(action,options);}};Form.Element={focus:function(element){$(element).focus();return element;},select:function(element){$(element).select();return element;}};Form.Element.Methods={serialize:function(element){element=$(element);if(!element.disabled&&element.name){var value=element.getValue();if(value!=undefined){var pair={};pair[element.name]=value;return Object.toQueryString(pair);}}
|
236 |
+
return'';},getValue:function(element){element=$(element);var method=element.tagName.toLowerCase();return Form.Element.Serializers[method](element);},setValue:function(element,value){element=$(element);var method=element.tagName.toLowerCase();Form.Element.Serializers[method](element,value);return element;},clear:function(element){$(element).value='';return element;},present:function(element){return $(element).value!='';},activate:function(element){element=$(element);try{element.focus();if(element.select&&(element.tagName.toLowerCase()!='input'||!['button','reset','submit'].include(element.type)))
|
237 |
+
element.select();}catch(e){}
|
238 |
+
return element;},disable:function(element){element=$(element);element.disabled=true;return element;},enable:function(element){element=$(element);element.disabled=false;return element;}};var Field=Form.Element;var $F=Form.Element.Methods.getValue;Form.Element.Serializers={input:function(element,value){switch(element.type.toLowerCase()){case'checkbox':case'radio':return Form.Element.Serializers.inputSelector(element,value);default:return Form.Element.Serializers.textarea(element,value);}},inputSelector:function(element,value){if(Object.isUndefined(value))return element.checked?element.value:null;else element.checked=!!value;},textarea:function(element,value){if(Object.isUndefined(value))return element.value;else element.value=value;},select:function(element,value){if(Object.isUndefined(value))
|
239 |
+
return this[element.type=='select-one'?'selectOne':'selectMany'](element);else{var opt,currentValue,single=!Object.isArray(value);for(var i=0,length=element.length;i<length;i++){opt=element.options[i];currentValue=this.optionValue(opt);if(single){if(currentValue==value){opt.selected=true;return;}}
|
240 |
+
else opt.selected=value.include(currentValue);}}},selectOne:function(element){var index=element.selectedIndex;return index>=0?this.optionValue(element.options[index]):null;},selectMany:function(element){var values,length=element.length;if(!length)return null;for(var i=0,values=[];i<length;i++){var opt=element.options[i];if(opt.selected)values.push(this.optionValue(opt));}
|
241 |
+
return values;},optionValue:function(opt){return Element.extend(opt).hasAttribute('value')?opt.value:opt.text;}};Abstract.TimedObserver=Class.create(PeriodicalExecuter,{initialize:function($super,element,frequency,callback){$super(callback,frequency);this.element=$(element);this.lastValue=this.getValue();},execute:function(){var value=this.getValue();if(Object.isString(this.lastValue)&&Object.isString(value)?this.lastValue!=value:String(this.lastValue)!=String(value)){this.callback(this.element,value);this.lastValue=value;}}});Form.Element.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.Element.getValue(this.element);}});Form.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.serialize(this.element);}});Abstract.EventObserver=Class.create({initialize:function(element,callback){this.element=$(element);this.callback=callback;this.lastValue=this.getValue();if(this.element.tagName.toLowerCase()=='form')
|
242 |
+
this.registerFormCallbacks();else
|
243 |
+
this.registerCallback(this.element);},onElementEvent:function(){var value=this.getValue();if(this.lastValue!=value){this.callback(this.element,value);this.lastValue=value;}},registerFormCallbacks:function(){Form.getElements(this.element).each(this.registerCallback,this);},registerCallback:function(element){if(element.type){switch(element.type.toLowerCase()){case'checkbox':case'radio':Event.observe(element,'click',this.onElementEvent.bind(this));break;default:Event.observe(element,'change',this.onElementEvent.bind(this));break;}}}});Form.Element.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.Element.getValue(this.element);}});Form.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.serialize(this.element);}});if(!window.Event)var Event={};Object.extend(Event,{KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,KEY_INSERT:45,cache:{},relatedTarget:function(event){var element;switch(event.type){case'mouseover':element=event.fromElement;break;case'mouseout':element=event.toElement;break;default:return null;}
|
244 |
+
return Element.extend(element);}});Event.Methods=(function(){var isButton;if(Prototype.Browser.IE){var buttonMap={0:1,1:4,2:2};isButton=function(event,code){return event.button==buttonMap[code];};}else if(Prototype.Browser.WebKit){isButton=function(event,code){switch(code){case 0:return event.which==1&&!event.metaKey;case 1:return event.which==1&&event.metaKey;default:return false;}};}else{isButton=function(event,code){return event.which?(event.which===code+1):(event.button===code);};}
|
245 |
+
return{isLeftClick:function(event){return isButton(event,0)},isMiddleClick:function(event){return isButton(event,1)},isRightClick:function(event){return isButton(event,2)},element:function(event){event=Event.extend(event);var node=event.target,type=event.type,currentTarget=event.currentTarget;if(currentTarget&¤tTarget.tagName){if(type==='load'||type==='error'||(type==='click'&¤tTarget.tagName.toLowerCase()==='input'&¤tTarget.type==='radio'))
|
246 |
+
node=currentTarget;}
|
247 |
+
if(node){if(node.nodeType==Node.TEXT_NODE)node=node.parentNode;return Element.extend(node);}else return false;},findElement:function(event,expression){var element=Event.element(event);if(!expression)return element;var elements=[element].concat(element.ancestors());return Selector.findElement(elements,expression,0);},pointer:function(event){var docElement=document.documentElement,body=document.body||{scrollLeft:0,scrollTop:0};return{x:event.pageX||(event.clientX+
|
248 |
+
(docElement.scrollLeft||body.scrollLeft)-
|
249 |
+
(docElement.clientLeft||0)),y:event.pageY||(event.clientY+
|
250 |
+
(docElement.scrollTop||body.scrollTop)-
|
251 |
+
(docElement.clientTop||0))};},pointerX:function(event){return Event.pointer(event).x},pointerY:function(event){return Event.pointer(event).y},stop:function(event){Event.extend(event);event.preventDefault();event.stopPropagation();event.stopped=true;}};})();Event.extend=(function(){var methods=Object.keys(Event.Methods).inject({},function(m,name){m[name]=Event.Methods[name].methodize();return m;});if(Prototype.Browser.IE){Object.extend(methods,{stopPropagation:function(){this.cancelBubble=true},preventDefault:function(){this.returnValue=false},inspect:function(){return"[object Event]"}});return function(event){if(!event)return false;if(event._extendedByPrototype)return event;event._extendedByPrototype=Prototype.emptyFunction;var pointer=Event.pointer(event);Object.extend(event,{target:event.srcElement,relatedTarget:Event.relatedTarget(event),pageX:pointer.x,pageY:pointer.y});return Object.extend(event,methods);};}else{Event.prototype=Event.prototype||document.createEvent("HTMLEvents")['__proto__'];Object.extend(Event.prototype,methods);return Prototype.K;}})();Object.extend(Event,(function(){var cache=Event.cache;function getEventID(element){try{if(element._prototypeEventID)return element._prototypeEventID[0];arguments.callee.id=arguments.callee.id||1;return element._prototypeEventID=[++arguments.callee.id];}catch(error){return false;}}
|
252 |
+
function getDOMEventName(eventName){if(eventName&&eventName.include(':'))return"dataavailable";return eventName;}
|
253 |
+
function getCacheForID(id){return cache[id]=cache[id]||{};}
|
254 |
+
function getWrappersForEventName(id,eventName){var c=getCacheForID(id);return c[eventName]=c[eventName]||[];}
|
255 |
+
function createWrapper(element,eventName,handler){var id=getEventID(element);var c=getWrappersForEventName(id,eventName);if(c.pluck("handler").include(handler))return false;var wrapper=function(event){if(!Event||!Event.extend||(event.eventName&&event.eventName!=eventName))
|
256 |
+
return false;Event.extend(event);handler.call(element,event);};wrapper.handler=handler;c.push(wrapper);return wrapper;}
|
257 |
+
function findWrapper(id,eventName,handler){var c=getWrappersForEventName(id,eventName);return c.find(function(wrapper){return wrapper.handler==handler});}
|
258 |
+
function destroyWrapper(id,eventName,handler){var c=getCacheForID(id);if(!c[eventName])return false;c[eventName]=c[eventName].without(findWrapper(id,eventName,handler));}
|
259 |
+
function destroyCache(){for(var id in cache)
|
260 |
+
for(var eventName in cache[id])
|
261 |
+
cache[id][eventName]=null;}
|
262 |
+
if(window.attachEvent){window.attachEvent("onunload",destroyCache);}
|
263 |
+
if(Prototype.Browser.WebKit){window.addEventListener('unload',Prototype.emptyFunction,false);}
|
264 |
+
return{observe:function(element,eventName,handler){element=$(element);var name=getDOMEventName(eventName);var wrapper=createWrapper(element,eventName,handler);if(!wrapper)return element;if(element.addEventListener){element.addEventListener(name,wrapper,false);}else{element.attachEvent("on"+name,wrapper);}
|
265 |
+
return element;},stopObserving:function(element,eventName,handler){element=$(element);var id=getEventID(element),name=getDOMEventName(eventName);if(!handler&&eventName){getWrappersForEventName(id,eventName).each(function(wrapper){element.stopObserving(eventName,wrapper.handler);});return element;}else if(!eventName){Object.keys(getCacheForID(id)).each(function(eventName){element.stopObserving(eventName);});return element;}
|
266 |
+
var wrapper=findWrapper(id,eventName,handler);if(!wrapper)return element;if(element.removeEventListener){element.removeEventListener(name,wrapper,false);}else{element.detachEvent("on"+name,wrapper);}
|
267 |
+
destroyWrapper(id,eventName,handler);return element;},fire:function(element,eventName,memo){element=$(element);if(element==document&&document.createEvent&&!element.dispatchEvent)
|
268 |
+
element=document.documentElement;var event;if(document.createEvent){event=document.createEvent("HTMLEvents");event.initEvent("dataavailable",true,true);}else{event=document.createEventObject();event.eventType="ondataavailable";}
|
269 |
+
event.eventName=eventName;event.memo=memo||{};if(document.createEvent){element.dispatchEvent(event);}else{element.fireEvent(event.eventType,event);}
|
270 |
+
return Event.extend(event);}};})());Object.extend(Event,Event.Methods);Element.addMethods({fire:Event.fire,observe:Event.observe,stopObserving:Event.stopObserving});Object.extend(document,{fire:Element.Methods.fire.methodize(),observe:Element.Methods.observe.methodize(),stopObserving:Element.Methods.stopObserving.methodize(),loaded:false});(function(){var timer;function fireContentLoadedEvent(){if(document.loaded)return;if(timer)window.clearInterval(timer);document.fire("dom:loaded");document.loaded=true;}
|
271 |
+
if(document.addEventListener){if(Prototype.Browser.WebKit){timer=window.setInterval(function(){if(/loaded|complete/.test(document.readyState))
|
272 |
+
fireContentLoadedEvent();},0);Event.observe(window,"load",fireContentLoadedEvent);}else{document.addEventListener("DOMContentLoaded",fireContentLoadedEvent,false);}}else{document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");$("__onDOMContentLoaded").onreadystatechange=function(){if(this.readyState=="complete"){this.onreadystatechange=null;fireContentLoadedEvent();}};}})();Hash.toQueryString=Object.toQueryString;var Toggle={display:Element.toggle};Element.Methods.childOf=Element.Methods.descendantOf;var Insertion={Before:function(element,content){return Element.insert(element,{before:content});},Top:function(element,content){return Element.insert(element,{top:content});},Bottom:function(element,content){return Element.insert(element,{bottom:content});},After:function(element,content){return Element.insert(element,{after:content});}};var $continue=new Error('"throw $continue" is deprecated, use "return" instead');var Position={includeScrollOffsets:false,prepare:function(){this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;},within:function(element,x,y){if(this.includeScrollOffsets)
|
273 |
+
return this.withinIncludingScrolloffsets(element,x,y);this.xcomp=x;this.ycomp=y;this.offset=Element.cumulativeOffset(element);return(y>=this.offset[1]&&y<this.offset[1]+element.offsetHeight&&x>=this.offset[0]&&x<this.offset[0]+element.offsetWidth);},withinIncludingScrolloffsets:function(element,x,y){var offsetcache=Element.cumulativeScrollOffset(element);this.xcomp=x+offsetcache[0]-this.deltaX;this.ycomp=y+offsetcache[1]-this.deltaY;this.offset=Element.cumulativeOffset(element);return(this.ycomp>=this.offset[1]&&this.ycomp<this.offset[1]+element.offsetHeight&&this.xcomp>=this.offset[0]&&this.xcomp<this.offset[0]+element.offsetWidth);},overlap:function(mode,element){if(!mode)return 0;if(mode=='vertical')
|
274 |
+
return((this.offset[1]+element.offsetHeight)-this.ycomp)/element.offsetHeight;if(mode=='horizontal')
|
275 |
+
return((this.offset[0]+element.offsetWidth)-this.xcomp)/element.offsetWidth;},cumulativeOffset:Element.Methods.cumulativeOffset,positionedOffset:Element.Methods.positionedOffset,absolutize:function(element){Position.prepare();return Element.absolutize(element);},relativize:function(element){Position.prepare();return Element.relativize(element);},realOffset:Element.Methods.cumulativeScrollOffset,offsetParent:Element.Methods.getOffsetParent,page:Element.Methods.viewportOffset,clone:function(source,target,options){options=options||{};return Element.clonePosition(target,source,options);}};if(!document.getElementsByClassName)document.getElementsByClassName=function(instanceMethods){function iter(name){return name.blank()?null:"[contains(concat(' ', @class, ' '), ' "+name+" ')]";}
|
276 |
+
instanceMethods.getElementsByClassName=Prototype.BrowserFeatures.XPath?function(element,className){className=className.toString().strip();var cond=/\s/.test(className)?$w(className).map(iter).join(''):iter(className);return cond?document._getElementsByXPath('.//*'+cond,element):[];}:function(element,className){className=className.toString().strip();var elements=[],classNames=(/\s/.test(className)?$w(className):null);if(!classNames&&!className)return elements;var nodes=$(element).getElementsByTagName('*');className=' '+className+' ';for(var i=0,child,cn;child=nodes[i];i++){if(child.className&&(cn=' '+child.className+' ')&&(cn.include(className)||(classNames&&classNames.all(function(name){return!name.toString().blank()&&cn.include(' '+name+' ');}))))
|
277 |
+
elements.push(Element.extend(child));}
|
278 |
+
return elements;};return function(className,parentElement){return $(parentElement||document.body).getElementsByClassName(className);};}(Element.Methods);Element.ClassNames=Class.create();Element.ClassNames.prototype={initialize:function(element){this.element=$(element);},_each:function(iterator){this.element.className.split(/\s+/).select(function(name){return name.length>0;})._each(iterator);},set:function(className){this.element.className=className;},add:function(classNameToAdd){if(this.include(classNameToAdd))return;this.set($A(this).concat(classNameToAdd).join(' '));},remove:function(classNameToRemove){if(!this.include(classNameToRemove))return;this.set($A(this).without(classNameToRemove).join(' '));},toString:function(){return $A(this).join(' ');}};Object.extend(Element.ClassNames.prototype,Enumerable);Element.addMethods();;var Window=Class.create();Window.keepMultiModalWindow=false;Window.hasEffectLib=(typeof Effect!='undefined');Window.resizeEffectDuration=0.4;Window.prototype={initialize:function(){var id;var optionIndex=0;if(arguments.length>0){if(typeof arguments[0]=="string"){id=arguments[0];optionIndex=1;}
|
279 |
+
else
|
280 |
+
id=arguments[0]?arguments[0].id:null;}
|
281 |
+
if(!id)
|
282 |
+
id="window_"+new Date().getTime();if($(id))
|
283 |
+
alert("Window "+id+" is already registered in the DOM! Make sure you use setDestroyOnClose() or destroyOnClose: true in the constructor");this.options=Object.extend({className:"dialog",blurClassName:null,minWidth:100,minHeight:20,resizable:true,closable:true,minimizable:true,maximizable:true,draggable:true,userData:null,showEffect:(Window.hasEffectLib?Effect.Appear:Element.show),hideEffect:(Window.hasEffectLib?Effect.Fade:Element.hide),showEffectOptions:{},hideEffectOptions:{},effectOptions:null,parent:document.body,title:" ",url:null,onload:Prototype.emptyFunction,width:200,height:300,opacity:1,recenterAuto:true,wiredDrag:false,closeOnEsc:true,closeCallback:null,destroyOnClose:false,gridX:1,gridY:1},arguments[optionIndex]||{});if(this.options.blurClassName)
|
284 |
+
this.options.focusClassName=this.options.className;if(typeof this.options.top=="undefined"&&typeof this.options.bottom=="undefined")
|
285 |
+
this.options.top=this._round(Math.random()*500,this.options.gridY);if(typeof this.options.left=="undefined"&&typeof this.options.right=="undefined")
|
286 |
+
this.options.left=this._round(Math.random()*500,this.options.gridX);if(this.options.effectOptions){Object.extend(this.options.hideEffectOptions,this.options.effectOptions);Object.extend(this.options.showEffectOptions,this.options.effectOptions);if(this.options.showEffect==Element.Appear)
|
287 |
+
this.options.showEffectOptions.to=this.options.opacity;}
|
288 |
+
if(Window.hasEffectLib){if(this.options.showEffect==Effect.Appear)
|
289 |
+
this.options.showEffectOptions.to=this.options.opacity;if(this.options.hideEffect==Effect.Fade)
|
290 |
+
this.options.hideEffectOptions.from=this.options.opacity;}
|
291 |
+
if(this.options.hideEffect==Element.hide)
|
292 |
+
this.options.hideEffect=function(){Element.hide(this.element);if(this.options.destroyOnClose)this.destroy();}.bind(this)
|
293 |
+
if(this.options.parent!=document.body)
|
294 |
+
this.options.parent=$(this.options.parent);this.element=this._createWindow(id);this.element.win=this;this.eventMouseDown=this._initDrag.bindAsEventListener(this);this.eventMouseUp=this._endDrag.bindAsEventListener(this);this.eventMouseMove=this._updateDrag.bindAsEventListener(this);this.eventOnLoad=this._getWindowBorderSize.bindAsEventListener(this);this.eventMouseDownContent=this.toFront.bindAsEventListener(this);this.eventResize=this._recenter.bindAsEventListener(this);this.eventKeyUp=this._keyUp.bindAsEventListener(this);this.topbar=$(this.element.id+"_top");this.bottombar=$(this.element.id+"_bottom");this.content=$(this.element.id+"_content");Event.observe(this.topbar,"mousedown",this.eventMouseDown);Event.observe(this.bottombar,"mousedown",this.eventMouseDown);Event.observe(this.content,"mousedown",this.eventMouseDownContent);Event.observe(window,"load",this.eventOnLoad);Event.observe(window,"resize",this.eventResize);Event.observe(window,"scroll",this.eventResize);Event.observe(document,"keyup",this.eventKeyUp);Event.observe(this.options.parent,"scroll",this.eventResize);if(this.options.draggable){var that=this;[this.topbar,this.topbar.up().previous(),this.topbar.up().next()].each(function(element){element.observe("mousedown",that.eventMouseDown);element.addClassName("top_draggable");});[this.bottombar.up(),this.bottombar.up().previous(),this.bottombar.up().next()].each(function(element){element.observe("mousedown",that.eventMouseDown);element.addClassName("bottom_draggable");});}
|
295 |
+
if(this.options.resizable){this.sizer=$(this.element.id+"_sizer");Event.observe(this.sizer,"mousedown",this.eventMouseDown);}
|
296 |
+
this.useLeft=null;this.useTop=null;if(typeof this.options.left!="undefined"){this.element.setStyle({left:parseFloat(this.options.left)+'px'});this.useLeft=true;}
|
297 |
+
else{this.element.setStyle({right:parseFloat(this.options.right)+'px'});this.useLeft=false;}
|
298 |
+
if(typeof this.options.top!="undefined"){this.element.setStyle({top:parseFloat(this.options.top)+'px'});this.useTop=true;}
|
299 |
+
else{this.element.setStyle({bottom:parseFloat(this.options.bottom)+'px'});this.useTop=false;}
|
300 |
+
this.storedLocation=null;this.setOpacity(this.options.opacity);if(this.options.zIndex)
|
301 |
+
this.setZIndex(this.options.zIndex)
|
302 |
+
if(this.options.destroyOnClose)
|
303 |
+
this.setDestroyOnClose(true);this._getWindowBorderSize();this.width=this.options.width;this.height=this.options.height;this.visible=false;this.constraint=false;this.constraintPad={top:0,left:0,bottom:0,right:0};if(this.width&&this.height)
|
304 |
+
this.setSize(this.options.width,this.options.height);this.setTitle(this.options.title)
|
305 |
+
Windows.register(this);},destroy:function(){this._notify("onDestroy");Event.stopObserving(this.topbar,"mousedown",this.eventMouseDown);Event.stopObserving(this.bottombar,"mousedown",this.eventMouseDown);Event.stopObserving(this.content,"mousedown",this.eventMouseDownContent);Event.stopObserving(window,"load",this.eventOnLoad);Event.stopObserving(window,"resize",this.eventResize);Event.stopObserving(window,"scroll",this.eventResize);Event.stopObserving(this.content,"load",this.options.onload);Event.stopObserving(document,"keyup",this.eventKeyUp);if(this._oldParent){var content=this.getContent();var originalContent=null;for(var i=0;i<content.childNodes.length;i++){originalContent=content.childNodes[i];if(originalContent.nodeType==1)
|
306 |
+
break;originalContent=null;}
|
307 |
+
if(originalContent)
|
308 |
+
this._oldParent.appendChild(originalContent);this._oldParent=null;}
|
309 |
+
if(this.sizer)
|
310 |
+
Event.stopObserving(this.sizer,"mousedown",this.eventMouseDown);if(this.options.url)
|
311 |
+
this.content.src=null
|
312 |
+
if(this.iefix)
|
313 |
+
Element.remove(this.iefix);Element.remove(this.element);Windows.unregister(this);},setCloseCallback:function(callback){this.options.closeCallback=callback;},getContent:function(){return this.content;},setContent:function(id,autoresize,autoposition){var element=$(id);if(null==element)throw"Unable to find element '"+id+"' in DOM";this._oldParent=element.parentNode;var d=null;var p=null;if(autoresize)
|
314 |
+
d=Element.getDimensions(element);if(autoposition)
|
315 |
+
p=Position.cumulativeOffset(element);var content=this.getContent();this.setHTMLContent("");content=this.getContent();content.appendChild(element);element.show();if(autoresize)
|
316 |
+
this.setSize(d.width,d.height);if(autoposition)
|
317 |
+
this.setLocation(p[1]-this.heightN,p[0]-this.widthW);},setHTMLContent:function(html){if(this.options.url){this.content.src=null;this.options.url=null;var content="<div id=\""+this.getId()+"_content\" class=\""+this.options.className+"_content\"> </div>";$(this.getId()+"_table_content").innerHTML=content;this.content=$(this.element.id+"_content");}
|
318 |
+
this.getContent().innerHTML=html;},setAjaxContent:function(url,options,showCentered,showModal){this.showFunction=showCentered?"showCenter":"show";this.showModal=showModal||false;options=options||{};this.setHTMLContent("");this.onComplete=options.onComplete;if(!this._onCompleteHandler)
|
319 |
+
this._onCompleteHandler=this._setAjaxContent.bind(this);options.onComplete=this._onCompleteHandler;new Ajax.Request(url,options);options.onComplete=this.onComplete;},_setAjaxContent:function(originalRequest){Element.update(this.getContent(),originalRequest.responseText);if(this.onComplete)
|
320 |
+
this.onComplete(originalRequest);this.onComplete=null;this[this.showFunction](this.showModal)},setURL:function(url){if(this.options.url)
|
321 |
+
this.content.src=null;this.options.url=url;var content="<iframe frameborder='0' name='"+this.getId()+"_content' id='"+this.getId()+"_content' src='"+url+"' width='"+this.width+"' height='"+this.height+"'> </iframe>";$(this.getId()+"_table_content").innerHTML=content;this.content=$(this.element.id+"_content");},getURL:function(){return this.options.url?this.options.url:null;},refresh:function(){if(this.options.url)
|
322 |
+
$(this.element.getAttribute('id')+'_content').src=this.options.url;},setCookie:function(name,expires,path,domain,secure){name=name||this.element.id;this.cookie=[name,expires,path,domain,secure];var value=WindowUtilities.getCookie(name)
|
323 |
+
if(value){var values=value.split(',');var x=values[0].split(':');var y=values[1].split(':');var w=parseFloat(values[2]),h=parseFloat(values[3]);var mini=values[4];var maxi=values[5];this.setSize(w,h);if(mini=="true")
|
324 |
+
this.doMinimize=true;else if(maxi=="true")
|
325 |
+
this.doMaximize=true;this.useLeft=x[0]=="l";this.useTop=y[0]=="t";this.element.setStyle(this.useLeft?{left:x[1]}:{right:x[1]});this.element.setStyle(this.useTop?{top:y[1]}:{bottom:y[1]});}},getId:function(){return this.element.id;},setDestroyOnClose:function(){this.options.destroyOnClose=true;},setConstraint:function(bool,padding){this.constraint=bool;this.constraintPad=Object.extend(this.constraintPad,padding||{});if(this.useTop&&this.useLeft)
|
326 |
+
this.setLocation(parseFloat(this.element.style.top),parseFloat(this.element.style.left));},_initDrag:function(event){if(Event.element(event)==this.sizer&&this.isMinimized())
|
327 |
+
return;if(Event.element(event)!=this.sizer&&this.isMaximized())
|
328 |
+
return;if(Prototype.Browser.IE&&this.heightN==0)
|
329 |
+
this._getWindowBorderSize();this.pointer=[this._round(Event.pointerX(event),this.options.gridX),this._round(Event.pointerY(event),this.options.gridY)];if(this.options.wiredDrag)
|
330 |
+
this.currentDrag=this._createWiredElement();else
|
331 |
+
this.currentDrag=this.element;if(Event.element(event)==this.sizer){this.doResize=true;this.widthOrg=this.width;this.heightOrg=this.height;this.bottomOrg=parseFloat(this.element.getStyle('bottom'));this.rightOrg=parseFloat(this.element.getStyle('right'));this._notify("onStartResize");}
|
332 |
+
else{this.doResize=false;var closeButton=$(this.getId()+'_close');if(closeButton&&Position.within(closeButton,this.pointer[0],this.pointer[1])){this.currentDrag=null;return;}
|
333 |
+
this.toFront();if(!this.options.draggable)
|
334 |
+
return;this._notify("onStartMove");}
|
335 |
+
Event.observe(document,"mouseup",this.eventMouseUp,false);Event.observe(document,"mousemove",this.eventMouseMove,false);WindowUtilities.disableScreen('__invisible__','__invisible__',this.overlayOpacity);document.body.ondrag=function(){return false;};document.body.onselectstart=function(){return false;};this.currentDrag.show();Event.stop(event);},_round:function(val,round){return round==1?val:val=Math.floor(val/round)*round;},_updateDrag:function(event){var pointer=[this._round(Event.pointerX(event),this.options.gridX),this._round(Event.pointerY(event),this.options.gridY)];var dx=pointer[0]-this.pointer[0];var dy=pointer[1]-this.pointer[1];if(this.doResize){var w=this.widthOrg+dx;var h=this.heightOrg+dy;dx=this.width-this.widthOrg
|
336 |
+
dy=this.height-this.heightOrg
|
337 |
+
if(this.useLeft)
|
338 |
+
w=this._updateWidthConstraint(w)
|
339 |
+
else
|
340 |
+
this.currentDrag.setStyle({right:(this.rightOrg-dx)+'px'});if(this.useTop)
|
341 |
+
h=this._updateHeightConstraint(h)
|
342 |
+
else
|
343 |
+
this.currentDrag.setStyle({bottom:(this.bottomOrg-dy)+'px'});this.setSize(w,h);this._notify("onResize");}
|
344 |
+
else{this.pointer=pointer;if(this.useLeft){var left=parseFloat(this.currentDrag.getStyle('left'))+dx;var newLeft=this._updateLeftConstraint(left);this.pointer[0]+=newLeft-left;this.currentDrag.setStyle({left:newLeft+'px'});}
|
345 |
+
else
|
346 |
+
this.currentDrag.setStyle({right:parseFloat(this.currentDrag.getStyle('right'))-dx+'px'});if(this.useTop){var top=parseFloat(this.currentDrag.getStyle('top'))+dy;var newTop=this._updateTopConstraint(top);this.pointer[1]+=newTop-top;this.currentDrag.setStyle({top:newTop+'px'});}
|
347 |
+
else
|
348 |
+
this.currentDrag.setStyle({bottom:parseFloat(this.currentDrag.getStyle('bottom'))-dy+'px'});this._notify("onMove");}
|
349 |
+
if(this.iefix)
|
350 |
+
this._fixIEOverlapping();this._removeStoreLocation();Event.stop(event);},_endDrag:function(event){WindowUtilities.enableScreen('__invisible__');if(this.doResize)
|
351 |
+
this._notify("onEndResize");else
|
352 |
+
this._notify("onEndMove");Event.stopObserving(document,"mouseup",this.eventMouseUp,false);Event.stopObserving(document,"mousemove",this.eventMouseMove,false);Event.stop(event);this._hideWiredElement();this._saveCookie()
|
353 |
+
document.body.ondrag=null;document.body.onselectstart=null;},_updateLeftConstraint:function(left){if(this.constraint&&this.useLeft&&this.useTop){var width=this.options.parent==document.body?WindowUtilities.getPageSize().windowWidth:this.options.parent.getDimensions().width;if(left<this.constraintPad.left)
|
354 |
+
left=this.constraintPad.left;if(left+this.width+this.widthE+this.widthW>width-this.constraintPad.right)
|
355 |
+
left=width-this.constraintPad.right-this.width-this.widthE-this.widthW;}
|
356 |
+
return left;},_updateTopConstraint:function(top){if(this.constraint&&this.useLeft&&this.useTop){var height=this.options.parent==document.body?WindowUtilities.getPageSize().windowHeight:this.options.parent.getDimensions().height;var h=this.height+this.heightN+this.heightS;if(top<this.constraintPad.top)
|
357 |
+
top=this.constraintPad.top;if(top+h>height-this.constraintPad.bottom)
|
358 |
+
top=height-this.constraintPad.bottom-h;}
|
359 |
+
return top;},_updateWidthConstraint:function(w){if(this.constraint&&this.useLeft&&this.useTop){var width=this.options.parent==document.body?WindowUtilities.getPageSize().windowWidth:this.options.parent.getDimensions().width;var left=parseFloat(this.element.getStyle("left"));if(left+w+this.widthE+this.widthW>width-this.constraintPad.right)
|
360 |
+
w=width-this.constraintPad.right-left-this.widthE-this.widthW;}
|
361 |
+
return w;},_updateHeightConstraint:function(h){if(this.constraint&&this.useLeft&&this.useTop){var height=this.options.parent==document.body?WindowUtilities.getPageSize().windowHeight:this.options.parent.getDimensions().height;var top=parseFloat(this.element.getStyle("top"));if(top+h+this.heightN+this.heightS>height-this.constraintPad.bottom)
|
362 |
+
h=height-this.constraintPad.bottom-top-this.heightN-this.heightS;}
|
363 |
+
return h;},_createWindow:function(id){var className=this.options.className;var win=document.createElement("div");win.setAttribute('id',id);win.className="dialog";var content;if(this.options.url)
|
364 |
+
content="<iframe frameborder=\"0\" name=\""+id+"_content\" id=\""+id+"_content\" src=\""+this.options.url+"\"> </iframe>";else
|
365 |
+
content="<div id=\""+id+"_content\" class=\""+className+"_content\"> </div>";var closeDiv=this.options.closable?"<div class='"+className+"_close' id='"+id+"_close' onclick='Windows.close(\""+id+"\", event)'> </div>":"";var minDiv=this.options.minimizable?"<div class='"+className+"_minimize' id='"+id+"_minimize' onclick='Windows.minimize(\""+id+"\", event)'> </div>":"";var maxDiv=this.options.maximizable?"<div class='"+className+"_maximize' id='"+id+"_maximize' onclick='Windows.maximize(\""+id+"\", event)'> </div>":"";var seAttributes=this.options.resizable?"class='"+className+"_sizer' id='"+id+"_sizer'":"class='"+className+"_se'";var blank="../themes/default/blank.gif";win.innerHTML=closeDiv+minDiv+maxDiv+"\
|
366 |
+
<a href='#' id='"+id+"_focus_anchor'><!-- --></a>\
|
367 |
+
<table id='"+id+"_row1' class=\"top table_window\">\
|
368 |
+
<tr>\
|
369 |
+
<td class='"+className+"_nw'></td>\
|
370 |
+
<td class='"+className+"_n'><div id='"+id+"_top' class='"+className+"_title title_window'>"+this.options.title+"</div></td>\
|
371 |
+
<td class='"+className+"_ne'></td>\
|
372 |
+
</tr>\
|
373 |
+
</table>\
|
374 |
+
<table id='"+id+"_row2' class=\"mid table_window\">\
|
375 |
+
<tr>\
|
376 |
+
<td class='"+className+"_w'></td>\
|
377 |
+
<td id='"+id+"_table_content' class='"+className+"_content' valign='top'>"+content+"</td>\
|
378 |
+
<td class='"+className+"_e'></td>\
|
379 |
+
</tr>\
|
380 |
+
</table>\
|
381 |
+
<table id='"+id+"_row3' class=\"bot table_window\">\
|
382 |
+
<tr>\
|
383 |
+
<td class='"+className+"_sw'></td>\
|
384 |
+
<td class='"+className+"_s'><div id='"+id+"_bottom' class='status_bar'><span style='float:left; width:1px; height:1px'></span></div></td>\
|
385 |
+
<td "+seAttributes+"></td>\
|
386 |
+
</tr>\
|
387 |
+
</table>\
|
388 |
+
";Element.hide(win);this.options.parent.insertBefore(win,this.options.parent.firstChild);Event.observe($(id+"_content"),"load",this.options.onload);return win;},changeClassName:function(newClassName){var className=this.options.className;var id=this.getId();$A(["_close","_minimize","_maximize","_sizer","_content"]).each(function(value){this._toggleClassName($(id+value),className+value,newClassName+value)}.bind(this));this._toggleClassName($(id+"_top"),className+"_title",newClassName+"_title");$$("#"+id+" td").each(function(td){td.className=td.className.sub(className,newClassName);});this.options.className=newClassName;},_toggleClassName:function(element,oldClassName,newClassName){if(element){element.removeClassName(oldClassName);element.addClassName(newClassName);}},setLocation:function(top,left){top=this._updateTopConstraint(top);left=this._updateLeftConstraint(left);var e=this.currentDrag||this.element;e.setStyle({top:top+'px'});e.setStyle({left:left+'px'});this.useLeft=true;this.useTop=true;},getLocation:function(){var location={};if(this.useTop)
|
389 |
+
location=Object.extend(location,{top:this.element.getStyle("top")});else
|
390 |
+
location=Object.extend(location,{bottom:this.element.getStyle("bottom")});if(this.useLeft)
|
391 |
+
location=Object.extend(location,{left:this.element.getStyle("left")});else
|
392 |
+
location=Object.extend(location,{right:this.element.getStyle("right")});return location;},getSize:function(){return{width:this.width,height:this.height};},setSize:function(width,height,useEffect){width=parseFloat(width);height=parseFloat(height);if(!this.minimized&&width<this.options.minWidth)
|
393 |
+
width=this.options.minWidth;if(!this.minimized&&height<this.options.minHeight)
|
394 |
+
height=this.options.minHeight;if(this.options.maxHeight&&height>this.options.maxHeight)
|
395 |
+
height=this.options.maxHeight;if(this.options.maxWidth&&width>this.options.maxWidth)
|
396 |
+
width=this.options.maxWidth;if(this.useTop&&this.useLeft&&Window.hasEffectLib&&Effect.ResizeWindow&&useEffect){new Effect.ResizeWindow(this,null,null,width,height,{duration:Window.resizeEffectDuration});}else{this.width=width;this.height=height;var e=this.currentDrag?this.currentDrag:this.element;e.setStyle({width:width+this.widthW+this.widthE+"px"})
|
397 |
+
e.setStyle({height:height+this.heightN+this.heightS+"px"})
|
398 |
+
if(!this.currentDrag||this.currentDrag==this.element){var content=$(this.element.id+'_content');content.setStyle({height:height+'px'});content.setStyle({width:width+'px'});}}},updateHeight:function(){this.setSize(this.width,this.content.scrollHeight,true);},updateWidth:function(){this.setSize(this.content.scrollWidth,this.height,true);},toFront:function(){if(this.element.style.zIndex<Windows.maxZIndex)
|
399 |
+
this.setZIndex(Windows.maxZIndex+1);if(this.iefix)
|
400 |
+
this._fixIEOverlapping();},getBounds:function(insideOnly){if(!this.width||!this.height||!this.visible)
|
401 |
+
this.computeBounds();var w=this.width;var h=this.height;if(!insideOnly){w+=this.widthW+this.widthE;h+=this.heightN+this.heightS;}
|
402 |
+
var bounds=Object.extend(this.getLocation(),{width:w+"px",height:h+"px"});return bounds;},computeBounds:function(){if(!this.width||!this.height){var size=WindowUtilities._computeSize(this.content.innerHTML,this.content.id,this.width,this.height,0,this.options.className)
|
403 |
+
if(this.height)
|
404 |
+
this.width=size+5
|
405 |
+
else
|
406 |
+
this.height=size+5}
|
407 |
+
this.setSize(this.width,this.height);if(this.centered)
|
408 |
+
this._center(this.centerTop,this.centerLeft);},show:function(modal){this.visible=true;if(modal){if(typeof this.overlayOpacity=="undefined"){var that=this;setTimeout(function(){that.show(modal)},10);return;}
|
409 |
+
Windows.addModalWindow(this);this.modal=true;this.setZIndex(Windows.maxZIndex+1);Windows.unsetOverflow(this);}
|
410 |
+
else
|
411 |
+
if(!this.element.style.zIndex)
|
412 |
+
this.setZIndex(Windows.maxZIndex+1);if(this.oldStyle)
|
413 |
+
this.getContent().setStyle({overflow:this.oldStyle});this.computeBounds();this._notify("onBeforeShow");if(this.options.showEffect!=Element.show&&this.options.showEffectOptions)
|
414 |
+
this.options.showEffect(this.element,this.options.showEffectOptions);else
|
415 |
+
this.options.showEffect(this.element);this._checkIEOverlapping();WindowUtilities.focusedWindow=this
|
416 |
+
this._notify("onShow");$(this.element.id+'_focus_anchor').focus();},showCenter:function(modal,top,left){this.centered=true;this.centerTop=top;this.centerLeft=left;this.show(modal);},isVisible:function(){return this.visible;},_center:function(top,left){var windowScroll=WindowUtilities.getWindowScroll(this.options.parent);var pageSize=WindowUtilities.getPageSize(this.options.parent);if(typeof top=="undefined")
|
417 |
+
top=(pageSize.windowHeight-(this.height+this.heightN+this.heightS))/2;top+=windowScroll.top
|
418 |
+
if(typeof left=="undefined")
|
419 |
+
left=(pageSize.windowWidth-(this.width+this.widthW+this.widthE))/2;left+=windowScroll.left
|
420 |
+
this.setLocation(top,left);this.toFront();},_recenter:function(event){if(this.centered){var pageSize=WindowUtilities.getPageSize(this.options.parent);var windowScroll=WindowUtilities.getWindowScroll(this.options.parent);if(this.pageSize&&this.pageSize.windowWidth==pageSize.windowWidth&&this.pageSize.windowHeight==pageSize.windowHeight&&this.windowScroll.left==windowScroll.left&&this.windowScroll.top==windowScroll.top)
|
421 |
+
return;this.pageSize=pageSize;this.windowScroll=windowScroll;if($('overlay_modal'))
|
422 |
+
$('overlay_modal').setStyle({height:(pageSize.pageHeight+'px')});if(this.options.recenterAuto)
|
423 |
+
this._center(this.centerTop,this.centerLeft);}},hide:function(){this.visible=false;if(this.modal){Windows.removeModalWindow(this);Windows.resetOverflow();}
|
424 |
+
this.oldStyle=this.getContent().getStyle('overflow')||"auto"
|
425 |
+
this.getContent().setStyle({overflow:"hidden"});this.options.hideEffect(this.element,this.options.hideEffectOptions);if(this.iefix)
|
426 |
+
this.iefix.hide();if(!this.doNotNotifyHide)
|
427 |
+
this._notify("onHide");},close:function(){if(this.visible){if(this.options.closeCallback&&!this.options.closeCallback(this))
|
428 |
+
return;if(this.options.destroyOnClose){var destroyFunc=this.destroy.bind(this);if(this.options.hideEffectOptions.afterFinish){var func=this.options.hideEffectOptions.afterFinish;this.options.hideEffectOptions.afterFinish=function(){func();destroyFunc()}}
|
429 |
+
else
|
430 |
+
this.options.hideEffectOptions.afterFinish=function(){destroyFunc()}}
|
431 |
+
Windows.updateFocusedWindow();this.doNotNotifyHide=true;this.hide();this.doNotNotifyHide=false;this._notify("onClose");}},minimize:function(){if(this.resizing)
|
432 |
+
return;var r2=$(this.getId()+"_row2");if(!this.minimized){this.minimized=true;var dh=r2.getDimensions().height;this.r2Height=dh;var h=this.element.getHeight()-dh;if(this.useLeft&&this.useTop&&Window.hasEffectLib&&Effect.ResizeWindow){new Effect.ResizeWindow(this,null,null,null,this.height-dh,{duration:Window.resizeEffectDuration});}else{this.height-=dh;this.element.setStyle({height:h+"px"});r2.hide();}
|
433 |
+
if(!this.useTop){var bottom=parseFloat(this.element.getStyle('bottom'));this.element.setStyle({bottom:(bottom+dh)+'px'});}}
|
434 |
+
else{this.minimized=false;var dh=this.r2Height;this.r2Height=null;if(this.useLeft&&this.useTop&&Window.hasEffectLib&&Effect.ResizeWindow){new Effect.ResizeWindow(this,null,null,null,this.height+dh,{duration:Window.resizeEffectDuration});}
|
435 |
+
else{var h=this.element.getHeight()+dh;this.height+=dh;this.element.setStyle({height:h+"px"})
|
436 |
+
r2.show();}
|
437 |
+
if(!this.useTop){var bottom=parseFloat(this.element.getStyle('bottom'));this.element.setStyle({bottom:(bottom-dh)+'px'});}
|
438 |
+
this.toFront();}
|
439 |
+
this._notify("onMinimize");this._saveCookie()},maximize:function(){if(this.isMinimized()||this.resizing)
|
440 |
+
return;if(Prototype.Browser.IE&&this.heightN==0)
|
441 |
+
this._getWindowBorderSize();if(this.storedLocation!=null){this._restoreLocation();if(this.iefix)
|
442 |
+
this.iefix.hide();}
|
443 |
+
else{this._storeLocation();Windows.unsetOverflow(this);var windowScroll=WindowUtilities.getWindowScroll(this.options.parent);var pageSize=WindowUtilities.getPageSize(this.options.parent);var left=windowScroll.left;var top=windowScroll.top;if(this.options.parent!=document.body){windowScroll={top:0,left:0,bottom:0,right:0};var dim=this.options.parent.getDimensions();pageSize.windowWidth=dim.width;pageSize.windowHeight=dim.height;top=0;left=0;}
|
444 |
+
if(this.constraint){pageSize.windowWidth-=Math.max(0,this.constraintPad.left)+Math.max(0,this.constraintPad.right);pageSize.windowHeight-=Math.max(0,this.constraintPad.top)+Math.max(0,this.constraintPad.bottom);left+=Math.max(0,this.constraintPad.left);top+=Math.max(0,this.constraintPad.top);}
|
445 |
+
var width=pageSize.windowWidth-this.widthW-this.widthE;var height=pageSize.windowHeight-this.heightN-this.heightS;if(this.useLeft&&this.useTop&&Window.hasEffectLib&&Effect.ResizeWindow){new Effect.ResizeWindow(this,top,left,width,height,{duration:Window.resizeEffectDuration});}
|
446 |
+
else{this.setSize(width,height);this.element.setStyle(this.useLeft?{left:left}:{right:left});this.element.setStyle(this.useTop?{top:top}:{bottom:top});}
|
447 |
+
this.toFront();if(this.iefix)
|
448 |
+
this._fixIEOverlapping();}
|
449 |
+
this._notify("onMaximize");this._saveCookie()},isMinimized:function(){return this.minimized;},isMaximized:function(){return(this.storedLocation!=null);},setOpacity:function(opacity){if(Element.setOpacity)
|
450 |
+
Element.setOpacity(this.element,opacity);},setZIndex:function(zindex){this.element.setStyle({zIndex:zindex});Windows.updateZindex(zindex,this);},setTitle:function(newTitle){if(!newTitle||newTitle=="")
|
451 |
+
newTitle=" ";Element.update(this.element.id+'_top',newTitle);},getTitle:function(){return $(this.element.id+'_top').innerHTML;},setStatusBar:function(element){var statusBar=$(this.getId()+"_bottom");if(typeof(element)=="object"){if(this.bottombar.firstChild)
|
452 |
+
this.bottombar.replaceChild(element,this.bottombar.firstChild);else
|
453 |
+
this.bottombar.appendChild(element);}
|
454 |
+
else
|
455 |
+
this.bottombar.innerHTML=element;},_checkIEOverlapping:function(){if(!this.iefix&&(navigator.appVersion.indexOf('MSIE')>0)&&(navigator.userAgent.indexOf('Opera')<0)&&(this.element.getStyle('position')=='absolute')){new Insertion.After(this.element.id,'<iframe id="'+this.element.id+'_iefix" '+'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" '+'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');this.iefix=$(this.element.id+'_iefix');}
|
456 |
+
if(this.iefix)
|
457 |
+
setTimeout(this._fixIEOverlapping.bind(this),50);},_fixIEOverlapping:function(){Position.clone(this.element,this.iefix);this.iefix.style.zIndex=this.element.style.zIndex-1;this.iefix.show();},_keyUp:function(event){if(27==event.keyCode&&this.options.closeOnEsc){this.close();}},_getWindowBorderSize:function(event){var div=this._createHiddenDiv(this.options.className+"_n")
|
458 |
+
this.heightN=Element.getDimensions(div).height;div.parentNode.removeChild(div)
|
459 |
+
var div=this._createHiddenDiv(this.options.className+"_s")
|
460 |
+
this.heightS=Element.getDimensions(div).height;div.parentNode.removeChild(div)
|
461 |
+
var div=this._createHiddenDiv(this.options.className+"_e")
|
462 |
+
this.widthE=Element.getDimensions(div).width;div.parentNode.removeChild(div)
|
463 |
+
var div=this._createHiddenDiv(this.options.className+"_w")
|
464 |
+
this.widthW=Element.getDimensions(div).width;div.parentNode.removeChild(div);var div=document.createElement("div");div.className="overlay_"+this.options.className;document.body.appendChild(div);var that=this;setTimeout(function(){that.overlayOpacity=($(div).getStyle("opacity"));div.parentNode.removeChild(div);},10);if(Prototype.Browser.IE){this.heightS=$(this.getId()+"_row3").getDimensions().height;this.heightN=$(this.getId()+"_row1").getDimensions().height;}
|
465 |
+
if(Prototype.Browser.WebKit&&Prototype.Browser.WebKitVersion<420)
|
466 |
+
this.setSize(this.width,this.height);if(this.doMaximize)
|
467 |
+
this.maximize();if(this.doMinimize)
|
468 |
+
this.minimize();},_createHiddenDiv:function(className){var objBody=document.body;var win=document.createElement("div");win.setAttribute('id',this.element.id+"_tmp");win.className=className;win.style.display='none';win.innerHTML='';objBody.insertBefore(win,objBody.firstChild);return win;},_storeLocation:function(){if(this.storedLocation==null){this.storedLocation={useTop:this.useTop,useLeft:this.useLeft,top:this.element.getStyle('top'),bottom:this.element.getStyle('bottom'),left:this.element.getStyle('left'),right:this.element.getStyle('right'),width:this.width,height:this.height};}},_restoreLocation:function(){if(this.storedLocation!=null){this.useLeft=this.storedLocation.useLeft;this.useTop=this.storedLocation.useTop;if(this.useLeft&&this.useTop&&Window.hasEffectLib&&Effect.ResizeWindow)
|
469 |
+
new Effect.ResizeWindow(this,this.storedLocation.top,this.storedLocation.left,this.storedLocation.width,this.storedLocation.height,{duration:Window.resizeEffectDuration});else{this.element.setStyle(this.useLeft?{left:this.storedLocation.left}:{right:this.storedLocation.right});this.element.setStyle(this.useTop?{top:this.storedLocation.top}:{bottom:this.storedLocation.bottom});this.setSize(this.storedLocation.width,this.storedLocation.height);}
|
470 |
+
Windows.resetOverflow();this._removeStoreLocation();}},_removeStoreLocation:function(){this.storedLocation=null;},_saveCookie:function(){if(this.cookie){var value="";if(this.useLeft)
|
471 |
+
value+="l:"+(this.storedLocation?this.storedLocation.left:this.element.getStyle('left'))
|
472 |
+
else
|
473 |
+
value+="r:"+(this.storedLocation?this.storedLocation.right:this.element.getStyle('right'))
|
474 |
+
if(this.useTop)
|
475 |
+
value+=",t:"+(this.storedLocation?this.storedLocation.top:this.element.getStyle('top'))
|
476 |
+
else
|
477 |
+
value+=",b:"+(this.storedLocation?this.storedLocation.bottom:this.element.getStyle('bottom'))
|
478 |
+
value+=","+(this.storedLocation?this.storedLocation.width:this.width);value+=","+(this.storedLocation?this.storedLocation.height:this.height);value+=","+this.isMinimized();value+=","+this.isMaximized();WindowUtilities.setCookie(value,this.cookie)}},_createWiredElement:function(){if(!this.wiredElement){if(Prototype.Browser.IE)
|
479 |
+
this._getWindowBorderSize();var div=document.createElement("div");div.className="wired_frame "+this.options.className+"_wired_frame";div.style.position='absolute';this.options.parent.insertBefore(div,this.options.parent.firstChild);this.wiredElement=$(div);}
|
480 |
+
if(this.useLeft)
|
481 |
+
this.wiredElement.setStyle({left:this.element.getStyle('left')});else
|
482 |
+
this.wiredElement.setStyle({right:this.element.getStyle('right')});if(this.useTop)
|
483 |
+
this.wiredElement.setStyle({top:this.element.getStyle('top')});else
|
484 |
+
this.wiredElement.setStyle({bottom:this.element.getStyle('bottom')});var dim=this.element.getDimensions();this.wiredElement.setStyle({width:dim.width+"px",height:dim.height+"px"});this.wiredElement.setStyle({zIndex:Windows.maxZIndex+30});return this.wiredElement;},_hideWiredElement:function(){if(!this.wiredElement||!this.currentDrag)
|
485 |
+
return;if(this.currentDrag==this.element)
|
486 |
+
this.currentDrag=null;else{if(this.useLeft)
|
487 |
+
this.element.setStyle({left:this.currentDrag.getStyle('left')});else
|
488 |
+
this.element.setStyle({right:this.currentDrag.getStyle('right')});if(this.useTop)
|
489 |
+
this.element.setStyle({top:this.currentDrag.getStyle('top')});else
|
490 |
+
this.element.setStyle({bottom:this.currentDrag.getStyle('bottom')});this.currentDrag.hide();this.currentDrag=null;if(this.doResize)
|
491 |
+
this.setSize(this.width,this.height);}},_notify:function(eventName){if(this.options[eventName])
|
492 |
+
this.options[eventName](this);else
|
493 |
+
Windows.notify(eventName,this);}};var Windows={windows:[],modalWindows:[],observers:[],focusedWindow:null,maxZIndex:0,overlayShowEffectOptions:{duration:0.5},overlayHideEffectOptions:{duration:0.5},addObserver:function(observer){this.removeObserver(observer);this.observers.push(observer);},removeObserver:function(observer){this.observers=this.observers.reject(function(o){return o==observer});},notify:function(eventName,win){this.observers.each(function(o){if(o[eventName])o[eventName](eventName,win);});},getWindow:function(id){return this.windows.detect(function(d){return d.getId()==id});},getFocusedWindow:function(){return this.focusedWindow;},updateFocusedWindow:function(){this.focusedWindow=this.windows.length>=2?this.windows[this.windows.length-2]:null;},register:function(win){this.windows.push(win);},addModalWindow:function(win){if(this.modalWindows.length==0){WindowUtilities.disableScreen(win.options.className,'overlay_modal',win.overlayOpacity,win.getId(),win.options.parent);}
|
494 |
+
else{if(Window.keepMultiModalWindow){$('overlay_modal').style.zIndex=Windows.maxZIndex+1;Windows.maxZIndex+=1;WindowUtilities._hideSelect(this.modalWindows.last().getId());}
|
495 |
+
else
|
496 |
+
this.modalWindows.last().element.hide();WindowUtilities._showSelect(win.getId());}
|
497 |
+
this.modalWindows.push(win);},removeModalWindow:function(win){this.modalWindows.pop();if(this.modalWindows.length==0)
|
498 |
+
WindowUtilities.enableScreen();else{if(Window.keepMultiModalWindow){this.modalWindows.last().toFront();WindowUtilities._showSelect(this.modalWindows.last().getId());}
|
499 |
+
else
|
500 |
+
this.modalWindows.last().element.show();}},register:function(win){this.windows.push(win);},unregister:function(win){this.windows=this.windows.reject(function(d){return d==win});},closeAll:function(){this.windows.each(function(w){Windows.close(w.getId())});},closeAllModalWindows:function(){WindowUtilities.enableScreen();this.modalWindows.each(function(win){if(win)win.close()});},minimize:function(id,event){var win=this.getWindow(id)
|
501 |
+
if(win&&win.visible)
|
502 |
+
win.minimize();Event.stop(event);},maximize:function(id,event){var win=this.getWindow(id)
|
503 |
+
if(win&&win.visible)
|
504 |
+
win.maximize();Event.stop(event);},close:function(id,event){var win=this.getWindow(id);if(win)
|
505 |
+
win.close();if(event)
|
506 |
+
Event.stop(event);},blur:function(id){var win=this.getWindow(id);if(!win)
|
507 |
+
return;if(win.options.blurClassName)
|
508 |
+
win.changeClassName(win.options.blurClassName);if(this.focusedWindow==win)
|
509 |
+
this.focusedWindow=null;win._notify("onBlur");},focus:function(id){var win=this.getWindow(id);if(!win)
|
510 |
+
return;if(this.focusedWindow)
|
511 |
+
this.blur(this.focusedWindow.getId())
|
512 |
+
if(win.options.focusClassName)
|
513 |
+
win.changeClassName(win.options.focusClassName);this.focusedWindow=win;win._notify("onFocus");},unsetOverflow:function(except){this.windows.each(function(d){d.oldOverflow=d.getContent().getStyle("overflow")||"auto";d.getContent().setStyle({overflow:"hidden"})});if(except&&except.oldOverflow)
|
514 |
+
except.getContent().setStyle({overflow:except.oldOverflow});},resetOverflow:function(){this.windows.each(function(d){if(d.oldOverflow)d.getContent().setStyle({overflow:d.oldOverflow})});},updateZindex:function(zindex,win){if(zindex>this.maxZIndex){this.maxZIndex=zindex;if(this.focusedWindow)
|
515 |
+
this.blur(this.focusedWindow.getId())}
|
516 |
+
this.focusedWindow=win;if(this.focusedWindow)
|
517 |
+
this.focus(this.focusedWindow.getId())}};var Dialog={dialogId:null,onCompleteFunc:null,callFunc:null,parameters:null,confirm:function(content,parameters){if(content&&typeof content!="string"){Dialog._runAjaxRequest(content,parameters,Dialog.confirm);return}
|
518 |
+
content=content||"";parameters=parameters||{};var okLabel=parameters.okLabel?parameters.okLabel:"Ok";var cancelLabel=parameters.cancelLabel?parameters.cancelLabel:"Cancel";parameters=Object.extend(parameters,parameters.windowParameters||{});parameters.windowParameters=parameters.windowParameters||{};parameters.className=parameters.className||"alert";var okButtonClass="class ='"+(parameters.buttonClass?parameters.buttonClass+" ":"")+" ok_button'"
|
519 |
+
var cancelButtonClass="class ='"+(parameters.buttonClass?parameters.buttonClass+" ":"")+" cancel_button'"
|
520 |
+
var content="\
|
521 |
+
<div class='"+parameters.className+"_message'>"+content+"</div>\
|
522 |
+
<div class='"+parameters.className+"_buttons'>\
|
523 |
+
<input type='button' value='"+okLabel+"' onclick='Dialog.okCallback()' "+okButtonClass+"/>\
|
524 |
+
<input type='button' value='"+cancelLabel+"' onclick='Dialog.cancelCallback()' "+cancelButtonClass+"/>\
|
525 |
+
</div>\
|
526 |
+
";return this._openDialog(content,parameters)},alert:function(content,parameters){if(content&&typeof content!="string"){Dialog._runAjaxRequest(content,parameters,Dialog.alert);return}
|
527 |
+
content=content||"";parameters=parameters||{};var okLabel=parameters.okLabel?parameters.okLabel:"Ok";parameters=Object.extend(parameters,parameters.windowParameters||{});parameters.windowParameters=parameters.windowParameters||{};parameters.className=parameters.className||"alert";var okButtonClass="class ='"+(parameters.buttonClass?parameters.buttonClass+" ":"")+" ok_button'"
|
528 |
+
var content="\
|
529 |
+
<div class='"+parameters.className+"_message'>"+content+"</div>\
|
530 |
+
<div class='"+parameters.className+"_buttons'>\
|
531 |
+
<input type='button' value='"+okLabel+"' onclick='Dialog.okCallback()' "+okButtonClass+"/>\
|
532 |
+
</div>";return this._openDialog(content,parameters)},info:function(content,parameters){if(content&&typeof content!="string"){Dialog._runAjaxRequest(content,parameters,Dialog.info);return}
|
533 |
+
content=content||"";parameters=parameters||{};parameters=Object.extend(parameters,parameters.windowParameters||{});parameters.windowParameters=parameters.windowParameters||{};parameters.className=parameters.className||"alert";var content="<div id='modal_dialog_message' class='"+parameters.className+"_message'>"+content+"</div>";if(parameters.showProgress)
|
534 |
+
content+="<div id='modal_dialog_progress' class='"+parameters.className+"_progress'> </div>";parameters.ok=null;parameters.cancel=null;return this._openDialog(content,parameters)},setInfoMessage:function(message){$('modal_dialog_message').update(message);},closeInfo:function(){Windows.close(this.dialogId);},_openDialog:function(content,parameters){var className=parameters.className;if(!parameters.height&&!parameters.width){parameters.width=WindowUtilities.getPageSize(parameters.options.parent||document.body).pageWidth/2;}
|
535 |
+
if(parameters.id)
|
536 |
+
this.dialogId=parameters.id;else{var t=new Date();this.dialogId='modal_dialog_'+t.getTime();parameters.id=this.dialogId;}
|
537 |
+
if(!parameters.height||!parameters.width){var size=WindowUtilities._computeSize(content,this.dialogId,parameters.width,parameters.height,5,className)
|
538 |
+
if(parameters.height)
|
539 |
+
parameters.width=size+5
|
540 |
+
else
|
541 |
+
parameters.height=size+5}
|
542 |
+
parameters.effectOptions=parameters.effectOptions;parameters.resizable=parameters.resizable||false;parameters.minimizable=parameters.minimizable||false;parameters.maximizable=parameters.maximizable||false;parameters.draggable=parameters.draggable||false;parameters.closable=parameters.closable||false;var win=new Window(parameters);win.getContent().innerHTML=content;win.showCenter(true,parameters.top,parameters.left);win.setDestroyOnClose();win.cancelCallback=parameters.onCancel||parameters.cancel;win.okCallback=parameters.onOk||parameters.ok;return win;},_getAjaxContent:function(originalRequest){Dialog.callFunc(originalRequest.responseText,Dialog.parameters)},_runAjaxRequest:function(message,parameters,callFunc){if(message.options==null)
|
543 |
+
message.options={}
|
544 |
+
Dialog.onCompleteFunc=message.options.onComplete;Dialog.parameters=parameters;Dialog.callFunc=callFunc;message.options.onComplete=Dialog._getAjaxContent;new Ajax.Request(message.url,message.options);},okCallback:function(){var win=Windows.focusedWindow;if(!win.okCallback||win.okCallback(win)){$$("#"+win.getId()+" input").each(function(element){element.onclick=null;})
|
545 |
+
win.close();}},cancelCallback:function(){var win=Windows.focusedWindow;$$("#"+win.getId()+" input").each(function(element){element.onclick=null})
|
546 |
+
win.close();if(win.cancelCallback)
|
547 |
+
win.cancelCallback(win);}}
|
548 |
+
if(Prototype.Browser.WebKit){var array=navigator.userAgent.match(new RegExp(/AppleWebKit\/([\d\.\+]*)/));Prototype.Browser.WebKitVersion=parseFloat(array[1]);}
|
549 |
+
var WindowUtilities={getWindowScroll:function(parent){var T,L,W,H;parent=parent||document.body;if(parent!=document.body){T=parent.scrollTop;L=parent.scrollLeft;W=parent.scrollWidth;H=parent.scrollHeight;}
|
550 |
+
else{var w=window;with(w.document){if(w.document.documentElement&&documentElement.scrollTop){T=documentElement.scrollTop;L=documentElement.scrollLeft;}else if(w.document.body){T=body.scrollTop;L=body.scrollLeft;}
|
551 |
+
if(w.innerWidth){W=w.innerWidth;H=w.innerHeight;}else if(w.document.documentElement&&documentElement.clientWidth){W=documentElement.clientWidth;H=documentElement.clientHeight;}else{W=body.offsetWidth;H=body.offsetHeight}}}
|
552 |
+
return{top:T,left:L,width:W,height:H};},getPageSize:function(parent){parent=parent||document.body;var windowWidth,windowHeight;var pageHeight,pageWidth;if(parent!=document.body){windowWidth=parent.getWidth();windowHeight=parent.getHeight();pageWidth=parent.scrollWidth;pageHeight=parent.scrollHeight;}
|
553 |
+
else{var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=document.body.scrollWidth;yScroll=window.innerHeight+window.scrollMaxY;}else if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;}
|
554 |
+
if(self.innerHeight){windowWidth=self.innerWidth;windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;}
|
555 |
+
if(yScroll<windowHeight){pageHeight=windowHeight;}else{pageHeight=yScroll;}
|
556 |
+
if(xScroll<windowWidth){pageWidth=windowWidth;}else{pageWidth=xScroll;}}
|
557 |
+
return{pageWidth:pageWidth,pageHeight:pageHeight,windowWidth:windowWidth,windowHeight:windowHeight};},disableScreen:function(className,overlayId,overlayOpacity,contentId,parent){WindowUtilities.initLightbox(overlayId,className,function(){this._disableScreen(className,overlayId,overlayOpacity,contentId)}.bind(this),parent||document.body);},_disableScreen:function(className,overlayId,overlayOpacity,contentId){var objOverlay=$(overlayId);var pageSize=WindowUtilities.getPageSize(objOverlay.parentNode);if(contentId&&Prototype.Browser.IE){WindowUtilities._hideSelect();WindowUtilities._showSelect(contentId);}
|
558 |
+
objOverlay.style.height=(pageSize.pageHeight+'px');objOverlay.style.display='none';if(overlayId=="overlay_modal"&&Window.hasEffectLib&&Windows.overlayShowEffectOptions){objOverlay.overlayOpacity=overlayOpacity;new Effect.Appear(objOverlay,Object.extend({from:0,to:overlayOpacity},Windows.overlayShowEffectOptions));}
|
559 |
+
else
|
560 |
+
objOverlay.style.display="block";},enableScreen:function(id){id=id||'overlay_modal';var objOverlay=$(id);if(objOverlay){if(id=="overlay_modal"&&Window.hasEffectLib&&Windows.overlayHideEffectOptions)
|
561 |
+
new Effect.Fade(objOverlay,Object.extend({from:objOverlay.overlayOpacity,to:0},Windows.overlayHideEffectOptions));else{objOverlay.style.display='none';objOverlay.parentNode.removeChild(objOverlay);}
|
562 |
+
if(id!="__invisible__")
|
563 |
+
WindowUtilities._showSelect();}},_hideSelect:function(id){if(Prototype.Browser.IE){id=id==null?"":"#"+id+" ";$$(id+'select').each(function(element){if(!WindowUtilities.isDefined(element.oldVisibility)){element.oldVisibility=element.style.visibility?element.style.visibility:"visible";element.style.visibility="hidden";}});}},_showSelect:function(id){if(Prototype.Browser.IE){id=id==null?"":"#"+id+" ";$$(id+'select').each(function(element){if(WindowUtilities.isDefined(element.oldVisibility)){try{element.style.visibility=element.oldVisibility;}catch(e){element.style.visibility="visible";}
|
564 |
+
element.oldVisibility=null;}
|
565 |
+
else{if(element.style.visibility)
|
566 |
+
element.style.visibility="visible";}});}},isDefined:function(object){return typeof(object)!="undefined"&&object!=null;},initLightbox:function(id,className,doneHandler,parent){if($(id)){Element.setStyle(id,{zIndex:Windows.maxZIndex+1});Windows.maxZIndex++;doneHandler();}
|
567 |
+
else{var objOverlay=document.createElement("div");objOverlay.setAttribute('id',id);objOverlay.className="overlay_"+className
|
568 |
+
objOverlay.style.display='none';objOverlay.style.position='absolute';objOverlay.style.top='0';objOverlay.style.left='0';objOverlay.style.zIndex=Windows.maxZIndex+1;Windows.maxZIndex++;objOverlay.style.width='100%';parent.insertBefore(objOverlay,parent.firstChild);if(Prototype.Browser.WebKit&&id=="overlay_modal"){setTimeout(function(){doneHandler()},10);}
|
569 |
+
else
|
570 |
+
doneHandler();}},setCookie:function(value,parameters){document.cookie=parameters[0]+"="+escape(value)+
|
571 |
+
((parameters[1])?"; expires="+parameters[1].toGMTString():"")+
|
572 |
+
((parameters[2])?"; path="+parameters[2]:"")+
|
573 |
+
((parameters[3])?"; domain="+parameters[3]:"")+
|
574 |
+
((parameters[4])?"; secure":"");},getCookie:function(name){var dc=document.cookie;var prefix=name+"=";var begin=dc.indexOf("; "+prefix);if(begin==-1){begin=dc.indexOf(prefix);if(begin!=0)return null;}else{begin+=2;}
|
575 |
+
var end=document.cookie.indexOf(";",begin);if(end==-1){end=dc.length;}
|
576 |
+
return unescape(dc.substring(begin+prefix.length,end));},_computeSize:function(content,id,width,height,margin,className){var objBody=document.body;var tmpObj=document.createElement("div");tmpObj.setAttribute('id',id);tmpObj.className=className+"_content";if(height)
|
577 |
+
tmpObj.style.height=height+"px"
|
578 |
+
else
|
579 |
+
tmpObj.style.width=width+"px"
|
580 |
+
tmpObj.style.position='absolute';tmpObj.style.top='0';tmpObj.style.left='0';tmpObj.style.display='none';tmpObj.innerHTML=content;objBody.insertBefore(tmpObj,objBody.firstChild);var size;if(height)
|
581 |
+
size=$(tmpObj).getDimensions().width+margin;else
|
582 |
+
size=$(tmpObj).getDimensions().height+margin;objBody.removeChild(tmpObj);return size;}};var Builder={NODEMAP:{AREA:'map',CAPTION:'table',COL:'table',COLGROUP:'table',LEGEND:'fieldset',OPTGROUP:'select',OPTION:'select',PARAM:'object',TBODY:'table',TD:'table',TFOOT:'table',TH:'table',THEAD:'table',TR:'table'},node:function(elementName){elementName=elementName.toUpperCase();var parentTag=this.NODEMAP[elementName]||'div';var parentElement=document.createElement(parentTag);try{parentElement.innerHTML="<"+elementName+"></"+elementName+">";}catch(e){}
|
583 |
+
var element=parentElement.firstChild||null;if(element&&(element.tagName.toUpperCase()!=elementName))
|
584 |
+
element=element.getElementsByTagName(elementName)[0];if(!element)element=document.createElement(elementName);if(!element)return;if(arguments[1])
|
585 |
+
if(this._isStringOrNumber(arguments[1])||(arguments[1]instanceof Array)||arguments[1].tagName){this._children(element,arguments[1]);}else{var attrs=this._attributes(arguments[1]);if(attrs.length){try{parentElement.innerHTML="<"+elementName+" "+
|
586 |
+
attrs+"></"+elementName+">";}catch(e){}
|
587 |
+
element=parentElement.firstChild||null;if(!element){element=document.createElement(elementName);for(attr in arguments[1])
|
588 |
+
element[attr=='class'?'className':attr]=arguments[1][attr];}
|
589 |
+
if(element.tagName.toUpperCase()!=elementName)
|
590 |
+
element=parentElement.getElementsByTagName(elementName)[0];}}
|
591 |
+
if(arguments[2])
|
592 |
+
this._children(element,arguments[2]);return $(element);},_text:function(text){return document.createTextNode(text);},ATTR_MAP:{'className':'class','htmlFor':'for'},_attributes:function(attributes){var attrs=[];for(attribute in attributes)
|
593 |
+
attrs.push((attribute in this.ATTR_MAP?this.ATTR_MAP[attribute]:attribute)+'="'+attributes[attribute].toString().escapeHTML().gsub(/"/,'"')+'"');return attrs.join(" ");},_children:function(element,children){if(children.tagName){element.appendChild(children);return;}
|
594 |
+
if(typeof children=='object'){children.flatten().each(function(e){if(typeof e=='object')
|
595 |
+
element.appendChild(e);else
|
596 |
+
if(Builder._isStringOrNumber(e))
|
597 |
+
element.appendChild(Builder._text(e));});}else
|
598 |
+
if(Builder._isStringOrNumber(children))
|
599 |
+
element.appendChild(Builder._text(children));},_isStringOrNumber:function(param){return(typeof param=='string'||typeof param=='number');},build:function(html){var element=this.node('div');$(element).update(html.strip());return element.down();},dump:function(scope){if(typeof scope!='object'&&typeof scope!='function')scope=window;var tags=("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY "+"BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET "+"FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+"KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+"PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+"TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);tags.each(function(tag){scope[tag]=function(){return Builder.node.apply(Builder,[tag].concat($A(arguments)));};});}};;String.prototype.parseColor=function(){var color='#';if(this.slice(0,4)=='rgb('){var cols=this.slice(4,this.length-1).split(',');var i=0;do{color+=parseInt(cols[i]).toColorPart()}while(++i<3);}else{if(this.slice(0,1)=='#'){if(this.length==4)for(var i=1;i<4;i++)color+=(this.charAt(i)+this.charAt(i)).toLowerCase();if(this.length==7)color=this.toLowerCase();}}
|
600 |
+
return(color.length==7?color:(arguments[0]||this));};Element.collectTextNodes=function(element){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:(node.hasChildNodes()?Element.collectTextNodes(node):''));}).flatten().join('');};Element.collectTextNodesIgnoreClass=function(element,className){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:((node.hasChildNodes()&&!Element.hasClassName(node,className))?Element.collectTextNodesIgnoreClass(node,className):''));}).flatten().join('');};Element.setContentZoom=function(element,percent){element=$(element);element.setStyle({fontSize:(percent/100)+'em'});if(Prototype.Browser.WebKit)window.scrollBy(0,0);return element;};Element.getInlineOpacity=function(element){return $(element).style.opacity||'';};Element.forceRerendering=function(element){try{element=$(element);var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){}};var Effect={_elementDoesNotExistError:{name:'ElementDoesNotExistError',message:'The specified DOM element does not exist, but is required for this effect to operate'},Transitions:{linear:Prototype.K,sinoidal:function(pos){return(-Math.cos(pos*Math.PI)/2)+.5;},reverse:function(pos){return 1-pos;},flicker:function(pos){var pos=((-Math.cos(pos*Math.PI)/4)+.75)+Math.random()/4;return pos>1?1:pos;},wobble:function(pos){return(-Math.cos(pos*Math.PI*(9*pos))/2)+.5;},pulse:function(pos,pulses){return(-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2)+.5;},spring:function(pos){return 1-(Math.cos(pos*4.5*Math.PI)*Math.exp(-pos*6));},none:function(pos){return 0;},full:function(pos){return 1;}},DefaultOptions:{duration:1.0,fps:100,sync:false,from:0.0,to:1.0,delay:0.0,queue:'parallel'},tagifyText:function(element){var tagifyStyle='position:relative';if(Prototype.Browser.IE)tagifyStyle+=';zoom:1';element=$(element);$A(element.childNodes).each(function(child){if(child.nodeType==3){child.nodeValue.toArray().each(function(character){element.insertBefore(new Element('span',{style:tagifyStyle}).update(character==' '?String.fromCharCode(160):character),child);});Element.remove(child);}});},multiple:function(element,effect){var elements;if(((typeof element=='object')||Object.isFunction(element))&&(element.length))
|
601 |
+
elements=element;else
|
602 |
+
elements=$(element).childNodes;var options=Object.extend({speed:0.1,delay:0.0},arguments[2]||{});var masterDelay=options.delay;$A(elements).each(function(element,index){new effect(element,Object.extend(options,{delay:index*options.speed+masterDelay}));});},PAIRS:{'slide':['SlideDown','SlideUp'],'blind':['BlindDown','BlindUp'],'appear':['Appear','Fade']},toggle:function(element,effect){element=$(element);effect=(effect||'appear').toLowerCase();var options=Object.extend({queue:{position:'end',scope:(element.id||'global'),limit:1}},arguments[2]||{});Effect[element.visible()?Effect.PAIRS[effect][1]:Effect.PAIRS[effect][0]](element,options);}};Effect.DefaultOptions.transition=Effect.Transitions.sinoidal;Effect.ScopedQueue=Class.create(Enumerable,{initialize:function(){this.effects=[];this.interval=null;},_each:function(iterator){this.effects._each(iterator);},add:function(effect){var timestamp=new Date().getTime();var position=Object.isString(effect.options.queue)?effect.options.queue:effect.options.queue.position;switch(position){case'front':this.effects.findAll(function(e){return e.state=='idle'}).each(function(e){e.startOn+=effect.finishOn;e.finishOn+=effect.finishOn;});break;case'with-last':timestamp=this.effects.pluck('startOn').max()||timestamp;break;case'end':timestamp=this.effects.pluck('finishOn').max()||timestamp;break;}
|
603 |
+
effect.startOn+=timestamp;effect.finishOn+=timestamp;if(!effect.options.queue.limit||(this.effects.length<effect.options.queue.limit))
|
604 |
+
this.effects.push(effect);if(!this.interval)
|
605 |
+
this.interval=setInterval(this.loop.bind(this),15);},remove:function(effect){this.effects=this.effects.reject(function(e){return e==effect});if(this.effects.length==0){clearInterval(this.interval);this.interval=null;}},loop:function(){var timePos=new Date().getTime();for(var i=0,len=this.effects.length;i<len;i++)
|
606 |
+
this.effects[i]&&this.effects[i].loop(timePos);}});Effect.Queues={instances:$H(),get:function(queueName){if(!Object.isString(queueName))return queueName;return this.instances.get(queueName)||this.instances.set(queueName,new Effect.ScopedQueue());}};Effect.Queue=Effect.Queues.get('global');Effect.Base=Class.create({position:null,start:function(options){function codeForEvent(options,eventName){return((options[eventName+'Internal']?'this.options.'+eventName+'Internal(this);':'')+
|
607 |
+
(options[eventName]?'this.options.'+eventName+'(this);':''));}
|
608 |
+
if(options&&options.transition===false)options.transition=Effect.Transitions.linear;this.options=Object.extend(Object.extend({},Effect.DefaultOptions),options||{});this.currentFrame=0;this.state='idle';this.startOn=this.options.delay*1000;this.finishOn=this.startOn+(this.options.duration*1000);this.fromToDelta=this.options.to-this.options.from;this.totalTime=this.finishOn-this.startOn;this.totalFrames=this.options.fps*this.options.duration;this.render=(function(){function dispatch(effect,eventName){if(effect.options[eventName+'Internal'])
|
609 |
+
effect.options[eventName+'Internal'](effect);if(effect.options[eventName])
|
610 |
+
effect.options[eventName](effect);}
|
611 |
+
return function(pos){if(this.state==="idle"){this.state="running";dispatch(this,'beforeSetup');if(this.setup)this.setup();dispatch(this,'afterSetup');}
|
612 |
+
if(this.state==="running"){pos=(this.options.transition(pos)*this.fromToDelta)+this.options.from;this.position=pos;dispatch(this,'beforeUpdate');if(this.update)this.update(pos);dispatch(this,'afterUpdate');}};})();this.event('beforeStart');if(!this.options.sync)
|
613 |
+
Effect.Queues.get(Object.isString(this.options.queue)?'global':this.options.queue.scope).add(this);},loop:function(timePos){if(timePos>=this.startOn){if(timePos>=this.finishOn){this.render(1.0);this.cancel();this.event('beforeFinish');if(this.finish)this.finish();this.event('afterFinish');return;}
|
614 |
+
var pos=(timePos-this.startOn)/this.totalTime,frame=(pos*this.totalFrames).round();if(frame>this.currentFrame){this.render(pos);this.currentFrame=frame;}}},cancel:function(){if(!this.options.sync)
|
615 |
+
Effect.Queues.get(Object.isString(this.options.queue)?'global':this.options.queue.scope).remove(this);this.state='finished';},event:function(eventName){if(this.options[eventName+'Internal'])this.options[eventName+'Internal'](this);if(this.options[eventName])this.options[eventName](this);},inspect:function(){var data=$H();for(property in this)
|
616 |
+
if(!Object.isFunction(this[property]))data.set(property,this[property]);return'#<Effect:'+data.inspect()+',options:'+$H(this.options).inspect()+'>';}});Effect.Parallel=Class.create(Effect.Base,{initialize:function(effects){this.effects=effects||[];this.start(arguments[1]);},update:function(position){this.effects.invoke('render',position);},finish:function(position){this.effects.each(function(effect){effect.render(1.0);effect.cancel();effect.event('beforeFinish');if(effect.finish)effect.finish(position);effect.event('afterFinish');});}});Effect.Tween=Class.create(Effect.Base,{initialize:function(object,from,to){object=Object.isString(object)?$(object):object;var args=$A(arguments),method=args.last(),options=args.length==5?args[3]:null;this.method=Object.isFunction(method)?method.bind(object):Object.isFunction(object[method])?object[method].bind(object):function(value){object[method]=value};this.start(Object.extend({from:from,to:to},options||{}));},update:function(position){this.method(position);}});Effect.Event=Class.create(Effect.Base,{initialize:function(){this.start(Object.extend({duration:0},arguments[0]||{}));},update:Prototype.emptyFunction});Effect.Opacity=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout))
|
617 |
+
this.element.setStyle({zoom:1});var options=Object.extend({from:this.element.getOpacity()||0.0,to:1.0},arguments[1]||{});this.start(options);},update:function(position){this.element.setOpacity(position);}});Effect.Move=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({x:0,y:0,mode:'relative'},arguments[1]||{});this.start(options);},setup:function(){this.element.makePositioned();this.originalLeft=parseFloat(this.element.getStyle('left')||'0');this.originalTop=parseFloat(this.element.getStyle('top')||'0');if(this.options.mode=='absolute'){this.options.x=this.options.x-this.originalLeft;this.options.y=this.options.y-this.originalTop;}},update:function(position){this.element.setStyle({left:(this.options.x*position+this.originalLeft).round()+'px',top:(this.options.y*position+this.originalTop).round()+'px'});}});Effect.MoveBy=function(element,toTop,toLeft){return new Effect.Move(element,Object.extend({x:toLeft,y:toTop},arguments[3]||{}));};Effect.Scale=Class.create(Effect.Base,{initialize:function(element,percent){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:'box',scaleFrom:100.0,scaleTo:percent},arguments[2]||{});this.start(options);},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle('position');this.originalStyle={};['top','left','width','height','fontSize'].each(function(k){this.originalStyle[k]=this.element.style[k];}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var fontSize=this.element.getStyle('font-size')||'100%';['em','px','%','pt'].each(function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType;}}.bind(this));this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;this.dims=null;if(this.options.scaleMode=='box')
|
618 |
+
this.dims=[this.element.offsetHeight,this.element.offsetWidth];if(/^content/.test(this.options.scaleMode))
|
619 |
+
this.dims=[this.element.scrollHeight,this.element.scrollWidth];if(!this.dims)
|
620 |
+
this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];},update:function(position){var currentScale=(this.options.scaleFrom/100.0)+(this.factor*position);if(this.options.scaleContent&&this.fontSize)
|
621 |
+
this.element.setStyle({fontSize:this.fontSize*currentScale+this.fontSizeType});this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale);},finish:function(position){if(this.restoreAfterFinish)this.element.setStyle(this.originalStyle);},setDimensions:function(height,width){var d={};if(this.options.scaleX)d.width=width.round()+'px';if(this.options.scaleY)d.height=height.round()+'px';if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;var leftd=(width-this.dims[1])/2;if(this.elementPositioning=='absolute'){if(this.options.scaleY)d.top=this.originalTop-topd+'px';if(this.options.scaleX)d.left=this.originalLeft-leftd+'px';}else{if(this.options.scaleY)d.top=-topd+'px';if(this.options.scaleX)d.left=-leftd+'px';}}
|
622 |
+
this.element.setStyle(d);}});Effect.Highlight=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({startcolor:'#ffff99'},arguments[1]||{});this.start(options);},setup:function(){if(this.element.getStyle('display')=='none'){this.cancel();return;}
|
623 |
+
this.oldStyle={};if(!this.options.keepBackgroundImage){this.oldStyle.backgroundImage=this.element.getStyle('background-image');this.element.setStyle({backgroundImage:'none'});}
|
624 |
+
if(!this.options.endcolor)
|
625 |
+
this.options.endcolor=this.element.getStyle('background-color').parseColor('#ffffff');if(!this.options.restorecolor)
|
626 |
+
this.options.restorecolor=this.element.getStyle('background-color');this._base=$R(0,2).map(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16)}.bind(this));this._delta=$R(0,2).map(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]}.bind(this));},update:function(position){this.element.setStyle({backgroundColor:$R(0,2).inject('#',function(m,v,i){return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart());}.bind(this))});},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}));}});Effect.ScrollTo=function(element){var options=arguments[1]||{},scrollOffsets=document.viewport.getScrollOffsets(),elementOffsets=$(element).cumulativeOffset();if(options.offset)elementOffsets[1]+=options.offset;return new Effect.Tween(null,scrollOffsets.top,elementOffsets[1],options,function(p){scrollTo(scrollOffsets.left,p.round());});};Effect.Fade=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();var options=Object.extend({from:element.getOpacity()||1.0,to:0.0,afterFinishInternal:function(effect){if(effect.options.to!=0)return;effect.element.hide().setStyle({opacity:oldOpacity});}},arguments[1]||{});return new Effect.Opacity(element,options);};Effect.Appear=function(element){element=$(element);var options=Object.extend({from:(element.getStyle('display')=='none'?0.0:element.getOpacity()||0.0),to:1.0,afterFinishInternal:function(effect){effect.element.forceRerendering();},beforeSetup:function(effect){effect.element.setOpacity(effect.options.from).show();}},arguments[1]||{});return new Effect.Opacity(element,options);};Effect.Puff=function(element){element=$(element);var oldStyle={opacity:element.getInlineOpacity(),position:element.getStyle('position'),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};return new Effect.Parallel([new Effect.Scale(element,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:1.0,beforeSetupInternal:function(effect){Position.absolutize(effect.effects[0].element);},afterFinishInternal:function(effect){effect.effects[0].element.hide().setStyle(oldStyle);}},arguments[1]||{}));};Effect.BlindUp=function(element){element=$(element);element.makeClipping();return new Effect.Scale(element,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(effect){effect.element.hide().undoClipping();}},arguments[1]||{}));};Effect.BlindDown=function(element){element=$(element);var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makeClipping().setStyle({height:'0px'}).show();},afterFinishInternal:function(effect){effect.element.undoClipping();}},arguments[1]||{}));};Effect.SwitchOff=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();return new Effect.Appear(element,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(effect){new Effect.Scale(effect.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({opacity:oldOpacity});}});}},arguments[1]||{}));};Effect.DropOut=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left'),opacity:element.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(element,{x:0,y:100,sync:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:0.5,beforeSetup:function(effect){effect.effects[0].element.makePositioned();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);}},arguments[1]||{}));};Effect.Shake=function(element){element=$(element);var options=Object.extend({distance:20,duration:0.5},arguments[1]||{});var distance=parseFloat(options.distance);var split=parseFloat(options.duration)/10.0;var oldStyle={top:element.getStyle('top'),left:element.getStyle('left')};return new Effect.Move(element,{x:distance,y:0,duration:split,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance,y:0,duration:split,afterFinishInternal:function(effect){effect.element.undoPositioned().setStyle(oldStyle);}});}});}});}});}});}});};Effect.SlideDown=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping().setStyle({height:'0px'}).show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));};Effect.SlideUp=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:'box',scaleFrom:100,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping().show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));};Effect.Squish=function(element){return new Effect.Scale(element,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping();}});};Effect.Grow=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var initialMoveX,initialMoveY;var moveX,moveY;switch(options.direction){case'top-left':initialMoveX=initialMoveY=moveX=moveY=0;break;case'top-right':initialMoveX=dims.width;initialMoveY=moveY=0;moveX=-dims.width;break;case'bottom-left':initialMoveX=moveX=0;initialMoveY=dims.height;moveY=-dims.height;break;case'bottom-right':initialMoveX=dims.width;initialMoveY=dims.height;moveX=-dims.width;moveY=-dims.height;break;case'center':initialMoveX=dims.width/2;initialMoveY=dims.height/2;moveX=-dims.width/2;moveY=-dims.height/2;break;}
|
627 |
+
return new Effect.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetup:function(effect){effect.element.hide().makeClipping().makePositioned();},afterFinishInternal:function(effect){new Effect.Parallel([new Effect.Opacity(effect.element,{sync:true,to:1.0,from:0.0,transition:options.opacityTransition}),new Effect.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new Effect.Scale(effect.element,100,{scaleMode:{originalHeight:dims.height,originalWidth:dims.width},sync:true,scaleFrom:window.opera?1:0,transition:options.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(effect){effect.effects[0].element.setStyle({height:'0px'}).show();},afterFinishInternal:function(effect){effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);}},options));}});};Effect.Shrink=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var moveX,moveY;switch(options.direction){case'top-left':moveX=moveY=0;break;case'top-right':moveX=dims.width;moveY=0;break;case'bottom-left':moveX=0;moveY=dims.height;break;case'bottom-right':moveX=dims.width;moveY=dims.height;break;case'center':moveX=dims.width/2;moveY=dims.height/2;break;}
|
628 |
+
return new Effect.Parallel([new Effect.Opacity(element,{sync:true,to:0.0,from:1.0,transition:options.opacityTransition}),new Effect.Scale(element,window.opera?1:0,{sync:true,transition:options.scaleTransition,restoreAfterFinish:true}),new Effect.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],Object.extend({beforeStartInternal:function(effect){effect.effects[0].element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle);}},options));};Effect.Pulsate=function(element){element=$(element);var options=arguments[1]||{},oldOpacity=element.getInlineOpacity(),transition=options.transition||Effect.Transitions.linear,reverser=function(pos){return 1-transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2)+.5);};return new Effect.Opacity(element,Object.extend(Object.extend({duration:2.0,from:0,afterFinishInternal:function(effect){effect.element.setStyle({opacity:oldOpacity});}},options),{transition:reverser}));};Effect.Fold=function(element){element=$(element);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};element.makeClipping();return new Effect.Scale(element,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(effect){new Effect.Scale(element,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(effect){effect.element.hide().undoClipping().setStyle(oldStyle);}});}},arguments[1]||{}));};Effect.Morph=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({style:{}},arguments[1]||{});if(!Object.isString(options.style))this.style=$H(options.style);else{if(options.style.include(':'))
|
629 |
+
this.style=options.style.parseStyle();else{this.element.addClassName(options.style);this.style=$H(this.element.getStyles());this.element.removeClassName(options.style);var css=this.element.getStyles();this.style=this.style.reject(function(style){return style.value==css[style.key];});options.afterFinishInternal=function(effect){effect.element.addClassName(effect.options.style);effect.transforms.each(function(transform){effect.element.style[transform.style]='';});};}}
|
630 |
+
this.start(options);},setup:function(){function parseColor(color){if(!color||['rgba(0, 0, 0, 0)','transparent'].include(color))color='#ffffff';color=color.parseColor();return $R(0,2).map(function(i){return parseInt(color.slice(i*2+1,i*2+3),16);});}
|
631 |
+
this.transforms=this.style.map(function(pair){var property=pair[0],value=pair[1],unit=null;if(value.parseColor('#zzzzzz')!='#zzzzzz'){value=value.parseColor();unit='color';}else if(property=='opacity'){value=parseFloat(value);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout))
|
632 |
+
this.element.setStyle({zoom:1});}else if(Element.CSS_LENGTH.test(value)){var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]);unit=(components.length==3)?components[2]:null;}
|
633 |
+
var originalValue=this.element.getStyle(property);return{style:property.camelize(),originalValue:unit=='color'?parseColor(originalValue):parseFloat(originalValue||0),targetValue:unit=='color'?parseColor(value):value,unit:unit};}.bind(this)).reject(function(transform){return((transform.originalValue==transform.targetValue)||(transform.unit!='color'&&(isNaN(transform.originalValue)||isNaN(transform.targetValue))));});},update:function(position){var style={},transform,i=this.transforms.length;while(i--)
|
634 |
+
style[(transform=this.transforms[i]).style]=transform.unit=='color'?'#'+
|
635 |
+
(Math.round(transform.originalValue[0]+
|
636 |
+
(transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart()+
|
637 |
+
(Math.round(transform.originalValue[1]+
|
638 |
+
(transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart()+
|
639 |
+
(Math.round(transform.originalValue[2]+
|
640 |
+
(transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart():(transform.originalValue+
|
641 |
+
(transform.targetValue-transform.originalValue)*position).toFixed(3)+
|
642 |
+
(transform.unit===null?'':transform.unit);this.element.setStyle(style,true);}});Effect.Transform=Class.create({initialize:function(tracks){this.tracks=[];this.options=arguments[1]||{};this.addTracks(tracks);},addTracks:function(tracks){tracks.each(function(track){track=$H(track);var data=track.values().first();this.tracks.push($H({ids:track.keys().first(),effect:Effect.Morph,options:{style:data}}));}.bind(this));return this;},play:function(){return new Effect.Parallel(this.tracks.map(function(track){var ids=track.get('ids'),effect=track.get('effect'),options=track.get('options');var elements=[$(ids)||$$(ids)].flatten();return elements.map(function(e){return new effect(e,Object.extend({sync:true},options))});}).flatten(),this.options);}});Element.CSS_PROPERTIES=$w('backgroundColor backgroundPosition borderBottomColor borderBottomStyle '+'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth '+'borderRightColor borderRightStyle borderRightWidth borderSpacing '+'borderTopColor borderTopStyle borderTopWidth bottom clip color '+'fontSize fontWeight height left letterSpacing lineHeight '+'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+'maxWidth minHeight minWidth opacity outlineColor outlineOffset '+'outlineWidth paddingBottom paddingLeft paddingRight paddingTop '+'right textIndent top width wordSpacing zIndex');Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;String.__parseStyleElement=document.createElement('div');String.prototype.parseStyle=function(){var style,styleRules=$H();if(Prototype.Browser.WebKit)
|
643 |
+
style=new Element('div',{style:this}).style;else{String.__parseStyleElement.innerHTML='<div style="'+this+'"></div>';style=String.__parseStyleElement.childNodes[0].style;}
|
644 |
+
Element.CSS_PROPERTIES.each(function(property){if(style[property])styleRules.set(property,style[property]);});if(Prototype.Browser.IE&&this.include('opacity'))
|
645 |
+
styleRules.set('opacity',this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);return styleRules;};if(document.defaultView&&document.defaultView.getComputedStyle){Element.getStyles=function(element){var css=document.defaultView.getComputedStyle($(element),null);return Element.CSS_PROPERTIES.inject({},function(styles,property){styles[property]=css[property];return styles;});};}else{Element.getStyles=function(element){element=$(element);var css=element.currentStyle,styles;styles=Element.CSS_PROPERTIES.inject({},function(results,property){results[property]=css[property];return results;});if(!styles.opacity)styles.opacity=element.getOpacity();return styles;};}
|
646 |
+
Effect.Methods={morph:function(element,style){element=$(element);new Effect.Morph(element,Object.extend({style:style},arguments[2]||{}));return element;},visualEffect:function(element,effect,options){element=$(element);var s=effect.dasherize().camelize(),klass=s.charAt(0).toUpperCase()+s.substring(1);new Effect[klass](element,options);return element;},highlight:function(element,options){element=$(element);new Effect.Highlight(element,options);return element;}};$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+'pulsate shake puff squish switchOff dropOut').each(function(effect){Effect.Methods[effect]=function(element,options){element=$(element);Effect[effect.charAt(0).toUpperCase()+effect.substring(1)](element,options);return element;};});$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each(function(f){Effect.Methods[f]=Element[f];});Element.addMethods(Effect.Methods);;if(Object.isUndefined(Effect))
|
647 |
+
throw("dragdrop.js requires including script.aculo.us' effects.js library");var Droppables={drops:[],remove:function(element){this.drops=this.drops.reject(function(d){return d.element==$(element)});},add:function(element){element=$(element);var options=Object.extend({greedy:true,hoverclass:null,tree:false},arguments[1]||{});if(options.containment){options._containers=[];var containment=options.containment;if(Object.isArray(containment)){containment.each(function(c){options._containers.push($(c))});}else{options._containers.push($(containment));}}
|
648 |
+
if(options.accept)options.accept=[options.accept].flatten();Element.makePositioned(element);options.element=element;this.drops.push(options);},findDeepestChild:function(drops){deepest=drops[0];for(i=1;i<drops.length;++i)
|
649 |
+
if(Element.isParent(drops[i].element,deepest.element))
|
650 |
+
deepest=drops[i];return deepest;},isContained:function(element,drop){var containmentNode;if(drop.tree){containmentNode=element.treeNode;}else{containmentNode=element.parentNode;}
|
651 |
+
return drop._containers.detect(function(c){return containmentNode==c});},isAffected:function(point,element,drop){return((drop.element!=element)&&((!drop._containers)||this.isContained(element,drop))&&((!drop.accept)||(Element.classNames(element).detect(function(v){return drop.accept.include(v)})))&&Position.within(drop.element,point[0],point[1]));},deactivate:function(drop){if(drop.hoverclass)
|
652 |
+
Element.removeClassName(drop.element,drop.hoverclass);this.last_active=null;},activate:function(drop){if(drop.hoverclass)
|
653 |
+
Element.addClassName(drop.element,drop.hoverclass);this.last_active=drop;},show:function(point,element){if(!this.drops.length)return;var drop,affected=[];this.drops.each(function(drop){if(Droppables.isAffected(point,element,drop))
|
654 |
+
affected.push(drop);});if(affected.length>0)
|
655 |
+
drop=Droppables.findDeepestChild(affected);if(this.last_active&&this.last_active!=drop)this.deactivate(this.last_active);if(drop){Position.within(drop.element,point[0],point[1]);if(drop.onHover)
|
656 |
+
drop.onHover(element,drop.element,Position.overlap(drop.overlap,drop.element));if(drop!=this.last_active)Droppables.activate(drop);}},fire:function(event,element){if(!this.last_active)return;Position.prepare();if(this.isAffected([Event.pointerX(event),Event.pointerY(event)],element,this.last_active))
|
657 |
+
if(this.last_active.onDrop){this.last_active.onDrop(element,this.last_active.element,event);return true;}},reset:function(){if(this.last_active)
|
658 |
+
this.deactivate(this.last_active);}};var Draggables={drags:[],observers:[],register:function(draggable){if(this.drags.length==0){this.eventMouseUp=this.endDrag.bindAsEventListener(this);this.eventMouseMove=this.updateDrag.bindAsEventListener(this);this.eventKeypress=this.keyPress.bindAsEventListener(this);Event.observe(document,"mouseup",this.eventMouseUp);Event.observe(draggable.element,"mousemove",this.eventMouseMove);Event.observe(document,"keypress",this.eventKeypress);}
|
659 |
+
this.drags.push(draggable);},unregister:function(draggable){this.drags=this.drags.reject(function(d){return d==draggable});if(this.drags.length==0){Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(draggable.element,"mousemove",this.eventMouseMove);Event.stopObserving(document,"keypress",this.eventKeypress);}},activate:function(draggable){if(draggable.options.delay){this._timeout=setTimeout(function(){Draggables._timeout=null;window.focus();Draggables.activeDraggable=draggable;}.bind(this),draggable.options.delay);}else{window.focus();this.activeDraggable=draggable;}},deactivate:function(){this.activeDraggable=null;},updateDrag:function(event){if(!this.activeDraggable)return;var pointer=[Event.pointerX(event),Event.pointerY(event)];if(this._lastPointer&&(this._lastPointer.inspect()==pointer.inspect()))return;this._lastPointer=pointer;this.activeDraggable.updateDrag(event,pointer);},endDrag:function(event){if(this._timeout){clearTimeout(this._timeout);this._timeout=null;}
|
660 |
+
if(!this.activeDraggable)return;this._lastPointer=null;this.activeDraggable.endDrag(event);this.activeDraggable=null;},keyPress:function(event){if(this.activeDraggable)
|
661 |
+
this.activeDraggable.keyPress(event);},addObserver:function(observer){this.observers.push(observer);this._cacheObserverCallbacks();},removeObserver:function(element){this.observers=this.observers.reject(function(o){return o.element==element});this._cacheObserverCallbacks();},notify:function(eventName,draggable,event){if(this[eventName+'Count']>0)
|
662 |
+
this.observers.each(function(o){if(o[eventName])o[eventName](eventName,draggable,event);});if(draggable.options[eventName])draggable.options[eventName](draggable,event);},_cacheObserverCallbacks:function(){['onStart','onEnd','onDrag'].each(function(eventName){Draggables[eventName+'Count']=Draggables.observers.select(function(o){return o[eventName];}).length;});}};var Draggable=Class.create({initialize:function(element){var defaults={handle:false,reverteffect:function(element,top_offset,left_offset){var dur=Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;new Effect.Move(element,{x:-left_offset,y:-top_offset,duration:dur,queue:{scope:'_draggable',position:'end'}});},endeffect:function(element){var toOpacity=Object.isNumber(element._opacity)?element._opacity:1.0;new Effect.Opacity(element,{duration:0.2,from:0.7,to:toOpacity,queue:{scope:'_draggable',position:'end'},afterFinish:function(){Draggable._dragging[element]=false}});},zindex:1000,revert:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,snap:false,delay:0};if(!arguments[1]||Object.isUndefined(arguments[1].endeffect))
|
663 |
+
Object.extend(defaults,{starteffect:function(element){element._opacity=Element.getOpacity(element);Draggable._dragging[element]=true;new Effect.Opacity(element,{duration:0.2,from:element._opacity,to:0.7});}});var options=Object.extend(defaults,arguments[1]||{});this.element=$(element);if(options.handle&&Object.isString(options.handle))
|
664 |
+
this.handle=this.element.down('.'+options.handle,0);if(!this.handle)this.handle=$(options.handle);if(!this.handle)this.handle=this.element;if(options.scroll&&!options.scroll.scrollTo&&!options.scroll.outerHTML){options.scroll=$(options.scroll);this._isScrollChild=Element.childOf(this.element,options.scroll);}
|
665 |
+
Element.makePositioned(this.element);this.options=options;this.dragging=false;this.eventMouseDown=this.initDrag.bindAsEventListener(this);Event.observe(this.handle,"mousedown",this.eventMouseDown);Draggables.register(this);},destroy:function(){Event.stopObserving(this.handle,"mousedown",this.eventMouseDown);Draggables.unregister(this);},currentDelta:function(){return([parseInt(Element.getStyle(this.element,'left')||'0'),parseInt(Element.getStyle(this.element,'top')||'0')]);},initDrag:function(event){if(!Object.isUndefined(Draggable._dragging[this.element])&&Draggable._dragging[this.element])return;if(Event.isLeftClick(event)){var src=Event.element(event);if((tag_name=src.tagName.toUpperCase())&&(tag_name=='INPUT'||tag_name=='SELECT'||tag_name=='OPTION'||tag_name=='BUTTON'||tag_name=='TEXTAREA'))return;var pointer=[Event.pointerX(event),Event.pointerY(event)];var pos=Position.cumulativeOffset(this.element);this.offset=[0,1].map(function(i){return(pointer[i]-pos[i])});Draggables.activate(this);Event.stop(event);}},startDrag:function(event){this.dragging=true;if(!this.delta)
|
666 |
+
this.delta=this.currentDelta();if(this.options.zindex){this.originalZ=parseInt(Element.getStyle(this.element,'z-index')||0);this.element.style.zIndex=this.options.zindex;}
|
667 |
+
if(this.options.ghosting){this._clone=this.element.cloneNode(true);this._originallyAbsolute=(this.element.getStyle('position')=='absolute');if(!this._originallyAbsolute)
|
668 |
+
Position.absolutize(this.element);this.element.parentNode.insertBefore(this._clone,this.element);}
|
669 |
+
if(this.options.scroll){if(this.options.scroll==window){var where=this._getWindowScroll(this.options.scroll);this.originalScrollLeft=where.left;this.originalScrollTop=where.top;}else{this.originalScrollLeft=this.options.scroll.scrollLeft;this.originalScrollTop=this.options.scroll.scrollTop;}}
|
670 |
+
Draggables.notify('onStart',this,event);if(this.options.starteffect)this.options.starteffect(this.element);},updateDrag:function(event,pointer){if(!this.dragging)this.startDrag(event);if(!this.options.quiet){Position.prepare();Droppables.show(pointer,this.element);}
|
671 |
+
Draggables.notify('onDrag',this,event);this.draw(pointer);if(this.options.change)this.options.change(this);if(this.options.scroll){this.stopScrolling();var p;if(this.options.scroll==window){with(this._getWindowScroll(this.options.scroll)){p=[left,top,left+width,top+height];}}else{p=Position.page(this.options.scroll);p[0]+=this.options.scroll.scrollLeft+Position.deltaX;p[1]+=this.options.scroll.scrollTop+Position.deltaY;p.push(p[0]+this.options.scroll.offsetWidth);p.push(p[1]+this.options.scroll.offsetHeight);}
|
672 |
+
var speed=[0,0];if(pointer[0]<(p[0]+this.options.scrollSensitivity))speed[0]=pointer[0]-(p[0]+this.options.scrollSensitivity);if(pointer[1]<(p[1]+this.options.scrollSensitivity))speed[1]=pointer[1]-(p[1]+this.options.scrollSensitivity);if(pointer[0]>(p[2]-this.options.scrollSensitivity))speed[0]=pointer[0]-(p[2]-this.options.scrollSensitivity);if(pointer[1]>(p[3]-this.options.scrollSensitivity))speed[1]=pointer[1]-(p[3]-this.options.scrollSensitivity);this.startScrolling(speed);}
|
673 |
+
if(Prototype.Browser.WebKit)window.scrollBy(0,0);Event.stop(event);},finishDrag:function(event,success){this.dragging=false;if(this.options.quiet){Position.prepare();var pointer=[Event.pointerX(event),Event.pointerY(event)];Droppables.show(pointer,this.element);}
|
674 |
+
if(this.options.ghosting){if(!this._originallyAbsolute)
|
675 |
+
Position.relativize(this.element);delete this._originallyAbsolute;Element.remove(this._clone);this._clone=null;}
|
676 |
+
var dropped=false;if(success){dropped=Droppables.fire(event,this.element);if(!dropped)dropped=false;}
|
677 |
+
if(dropped&&this.options.onDropped)this.options.onDropped(this.element);Draggables.notify('onEnd',this,event);var revert=this.options.revert;if(revert&&Object.isFunction(revert))revert=revert(this.element);var d=this.currentDelta();if(revert&&this.options.reverteffect){if(dropped==0||revert!='failure')
|
678 |
+
this.options.reverteffect(this.element,d[1]-this.delta[1],d[0]-this.delta[0]);}else{this.delta=d;}
|
679 |
+
if(this.options.zindex)
|
680 |
+
this.element.style.zIndex=this.originalZ;if(this.options.endeffect)
|
681 |
+
this.options.endeffect(this.element);Draggables.deactivate(this);Droppables.reset();},keyPress:function(event){if(event.keyCode!=Event.KEY_ESC)return;this.finishDrag(event,false);Event.stop(event);},endDrag:function(event){if(!this.dragging)return;this.stopScrolling();this.finishDrag(event,true);Event.stop(event);},draw:function(point){var pos=Position.cumulativeOffset(this.element);if(this.options.ghosting){var r=Position.realOffset(this.element);pos[0]+=r[0]-Position.deltaX;pos[1]+=r[1]-Position.deltaY;}
|
682 |
+
var d=this.currentDelta();pos[0]-=d[0];pos[1]-=d[1];if(this.options.scroll&&(this.options.scroll!=window&&this._isScrollChild)){pos[0]-=this.options.scroll.scrollLeft-this.originalScrollLeft;pos[1]-=this.options.scroll.scrollTop-this.originalScrollTop;}
|
683 |
+
var p=[0,1].map(function(i){return(point[i]-pos[i]-this.offset[i])}.bind(this));if(this.options.snap){if(Object.isFunction(this.options.snap)){p=this.options.snap(p[0],p[1],this);}else{if(Object.isArray(this.options.snap)){p=p.map(function(v,i){return(v/this.options.snap[i]).round()*this.options.snap[i]}.bind(this));}else{p=p.map(function(v){return(v/this.options.snap).round()*this.options.snap}.bind(this));}}}
|
684 |
+
var style=this.element.style;if((!this.options.constraint)||(this.options.constraint=='horizontal'))
|
685 |
+
style.left=p[0]+"px";if((!this.options.constraint)||(this.options.constraint=='vertical'))
|
686 |
+
style.top=p[1]+"px";if(style.visibility=="hidden")style.visibility="";},stopScrolling:function(){if(this.scrollInterval){clearInterval(this.scrollInterval);this.scrollInterval=null;Draggables._lastScrollPointer=null;}},startScrolling:function(speed){if(!(speed[0]||speed[1]))return;this.scrollSpeed=[speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];this.lastScrolled=new Date();this.scrollInterval=setInterval(this.scroll.bind(this),10);},scroll:function(){var current=new Date();var delta=current-this.lastScrolled;this.lastScrolled=current;if(this.options.scroll==window){with(this._getWindowScroll(this.options.scroll)){if(this.scrollSpeed[0]||this.scrollSpeed[1]){var d=delta/1000;this.options.scroll.scrollTo(left+d*this.scrollSpeed[0],top+d*this.scrollSpeed[1]);}}}else{this.options.scroll.scrollLeft+=this.scrollSpeed[0]*delta/1000;this.options.scroll.scrollTop+=this.scrollSpeed[1]*delta/1000;}
|
687 |
+
Position.prepare();Droppables.show(Draggables._lastPointer,this.element);Draggables.notify('onDrag',this);if(this._isScrollChild){Draggables._lastScrollPointer=Draggables._lastScrollPointer||$A(Draggables._lastPointer);Draggables._lastScrollPointer[0]+=this.scrollSpeed[0]*delta/1000;Draggables._lastScrollPointer[1]+=this.scrollSpeed[1]*delta/1000;if(Draggables._lastScrollPointer[0]<0)
|
688 |
+
Draggables._lastScrollPointer[0]=0;if(Draggables._lastScrollPointer[1]<0)
|
689 |
+
Draggables._lastScrollPointer[1]=0;this.draw(Draggables._lastScrollPointer);}
|
690 |
+
if(this.options.change)this.options.change(this);},_getWindowScroll:function(w){var T,L,W,H;with(w.document){if(w.document.documentElement&&documentElement.scrollTop){T=documentElement.scrollTop;L=documentElement.scrollLeft;}else if(w.document.body){T=body.scrollTop;L=body.scrollLeft;}
|
691 |
+
if(w.innerWidth){W=w.innerWidth;H=w.innerHeight;}else if(w.document.documentElement&&documentElement.clientWidth){W=documentElement.clientWidth;H=documentElement.clientHeight;}else{W=body.offsetWidth;H=body.offsetHeight;}}
|
692 |
+
return{top:T,left:L,width:W,height:H};}});Draggable._dragging={};var SortableObserver=Class.create({initialize:function(element,observer){this.element=$(element);this.observer=observer;this.lastValue=Sortable.serialize(this.element);},onStart:function(){this.lastValue=Sortable.serialize(this.element);},onEnd:function(){Sortable.unmark();if(this.lastValue!=Sortable.serialize(this.element))
|
693 |
+
this.observer(this.element)}});var Sortable={SERIALIZE_RULE:/^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,sortables:{},_findRootElement:function(element){while(element.tagName.toUpperCase()!="BODY"){if(element.id&&Sortable.sortables[element.id])return element;element=element.parentNode;}},options:function(element){element=Sortable._findRootElement($(element));if(!element)return;return Sortable.sortables[element.id];},destroy:function(element){element=$(element);var s=Sortable.sortables[element.id];if(s){Draggables.removeObserver(s.element);s.droppables.each(function(d){Droppables.remove(d)});s.draggables.invoke('destroy');delete Sortable.sortables[s.element.id];}},create:function(element){element=$(element);var options=Object.extend({element:element,tag:'li',dropOnEmpty:false,tree:false,treeTag:'ul',overlap:'vertical',constraint:'vertical',containment:element,handle:false,only:false,delay:0,hoverclass:null,ghosting:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,format:this.SERIALIZE_RULE,elements:false,handles:false,onChange:Prototype.emptyFunction,onUpdate:Prototype.emptyFunction},arguments[1]||{});this.destroy(element);var options_for_draggable={revert:true,quiet:options.quiet,scroll:options.scroll,scrollSpeed:options.scrollSpeed,scrollSensitivity:options.scrollSensitivity,delay:options.delay,ghosting:options.ghosting,constraint:options.constraint,handle:options.handle};if(options.starteffect)
|
694 |
+
options_for_draggable.starteffect=options.starteffect;if(options.reverteffect)
|
695 |
+
options_for_draggable.reverteffect=options.reverteffect;else
|
696 |
+
if(options.ghosting)options_for_draggable.reverteffect=function(element){element.style.top=0;element.style.left=0;};if(options.endeffect)
|
697 |
+
options_for_draggable.endeffect=options.endeffect;if(options.zindex)
|
698 |
+
options_for_draggable.zindex=options.zindex;var options_for_droppable={overlap:options.overlap,containment:options.containment,tree:options.tree,hoverclass:options.hoverclass,onHover:Sortable.onHover};var options_for_tree={onHover:Sortable.onEmptyHover,overlap:options.overlap,containment:options.containment,hoverclass:options.hoverclass};Element.cleanWhitespace(element);options.draggables=[];options.droppables=[];if(options.dropOnEmpty||options.tree){Droppables.add(element,options_for_tree);options.droppables.push(element);}
|
699 |
+
(options.elements||this.findElements(element,options)||[]).each(function(e,i){var handle=options.handles?$(options.handles[i]):(options.handle?$(e).select('.'+options.handle)[0]:e);options.draggables.push(new Draggable(e,Object.extend(options_for_draggable,{handle:handle})));Droppables.add(e,options_for_droppable);if(options.tree)e.treeNode=element;options.droppables.push(e);});if(options.tree){(Sortable.findTreeElements(element,options)||[]).each(function(e){Droppables.add(e,options_for_tree);e.treeNode=element;options.droppables.push(e);});}
|
700 |
+
this.sortables[element.id]=options;Draggables.addObserver(new SortableObserver(element,options.onUpdate));},findElements:function(element,options){return Element.findChildren(element,options.only,options.tree?true:false,options.tag);},findTreeElements:function(element,options){return Element.findChildren(element,options.only,options.tree?true:false,options.treeTag);},onHover:function(element,dropon,overlap){if(Element.isParent(dropon,element))return;if(overlap>.33&&overlap<.66&&Sortable.options(dropon).tree){return;}else if(overlap>0.5){Sortable.mark(dropon,'before');if(dropon.previousSibling!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden";dropon.parentNode.insertBefore(element,dropon);if(dropon.parentNode!=oldParentNode)
|
701 |
+
Sortable.options(oldParentNode).onChange(element);Sortable.options(dropon.parentNode).onChange(element);}}else{Sortable.mark(dropon,'after');var nextElement=dropon.nextSibling||null;if(nextElement!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden";dropon.parentNode.insertBefore(element,nextElement);if(dropon.parentNode!=oldParentNode)
|
702 |
+
Sortable.options(oldParentNode).onChange(element);Sortable.options(dropon.parentNode).onChange(element);}}},onEmptyHover:function(element,dropon,overlap){var oldParentNode=element.parentNode;var droponOptions=Sortable.options(dropon);if(!Element.isParent(dropon,element)){var index;var children=Sortable.findElements(dropon,{tag:droponOptions.tag,only:droponOptions.only});var child=null;if(children){var offset=Element.offsetSize(dropon,droponOptions.overlap)*(1.0-overlap);for(index=0;index<children.length;index+=1){if(offset-Element.offsetSize(children[index],droponOptions.overlap)>=0){offset-=Element.offsetSize(children[index],droponOptions.overlap);}else if(offset-(Element.offsetSize(children[index],droponOptions.overlap)/2)>=0){child=index+1<children.length?children[index+1]:null;break;}else{child=children[index];break;}}}
|
703 |
+
dropon.insertBefore(element,child);Sortable.options(oldParentNode).onChange(element);droponOptions.onChange(element);}},unmark:function(){if(Sortable._marker)Sortable._marker.hide();},mark:function(dropon,position){var sortable=Sortable.options(dropon.parentNode);if(sortable&&!sortable.ghosting)return;if(!Sortable._marker){Sortable._marker=($('dropmarker')||Element.extend(document.createElement('DIV'))).hide().addClassName('dropmarker').setStyle({position:'absolute'});document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);}
|
704 |
+
var offsets=Position.cumulativeOffset(dropon);Sortable._marker.setStyle({left:offsets[0]+'px',top:offsets[1]+'px'});if(position=='after')
|
705 |
+
if(sortable.overlap=='horizontal')
|
706 |
+
Sortable._marker.setStyle({left:(offsets[0]+dropon.clientWidth)+'px'});else
|
707 |
+
Sortable._marker.setStyle({top:(offsets[1]+dropon.clientHeight)+'px'});Sortable._marker.show();},_tree:function(element,options,parent){var children=Sortable.findElements(element,options)||[];for(var i=0;i<children.length;++i){var match=children[i].id.match(options.format);if(!match)continue;var child={id:encodeURIComponent(match?match[1]:null),element:element,parent:parent,children:[],position:parent.children.length,container:$(children[i]).down(options.treeTag)};if(child.container)
|
708 |
+
this._tree(child.container,options,child);parent.children.push(child);}
|
709 |
+
return parent;},tree:function(element){element=$(element);var sortableOptions=this.options(element);var options=Object.extend({tag:sortableOptions.tag,treeTag:sortableOptions.treeTag,only:sortableOptions.only,name:element.id,format:sortableOptions.format},arguments[1]||{});var root={id:null,parent:null,children:[],container:element,position:0};return Sortable._tree(element,options,root);},_constructIndex:function(node){var index='';do{if(node.id)index='['+node.position+']'+index;}while((node=node.parent)!=null);return index;},sequence:function(element){element=$(element);var options=Object.extend(this.options(element),arguments[1]||{});return $(this.findElements(element,options)||[]).map(function(item){return item.id.match(options.format)?item.id.match(options.format)[1]:'';});},setSequence:function(element,new_sequence){element=$(element);var options=Object.extend(this.options(element),arguments[2]||{});var nodeMap={};this.findElements(element,options).each(function(n){if(n.id.match(options.format))
|
710 |
+
nodeMap[n.id.match(options.format)[1]]=[n,n.parentNode];n.parentNode.removeChild(n);});new_sequence.each(function(ident){var n=nodeMap[ident];if(n){n[1].appendChild(n[0]);delete nodeMap[ident];}});},serialize:function(element){element=$(element);var options=Object.extend(Sortable.options(element),arguments[1]||{});var name=encodeURIComponent((arguments[1]&&arguments[1].name)?arguments[1].name:element.id);if(options.tree){return Sortable.tree(element,arguments[1]).children.map(function(item){return[name+Sortable._constructIndex(item)+"[id]="+
|
711 |
+
encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));}).flatten().join('&');}else{return Sortable.sequence(element,arguments[1]).map(function(item){return name+"[]="+encodeURIComponent(item);}).join('&');}}};Element.isParent=function(child,element){if(!child.parentNode||child==element)return false;if(child.parentNode==element)return true;return Element.isParent(child.parentNode,element);};Element.findChildren=function(element,only,recursive,tagName){if(!element.hasChildNodes())return null;tagName=tagName.toUpperCase();if(only)only=[only].flatten();var elements=[];$A(element.childNodes).each(function(e){if(e.tagName&&e.tagName.toUpperCase()==tagName&&(!only||(Element.classNames(e).detect(function(v){return only.include(v)}))))
|
712 |
+
elements.push(e);if(recursive){var grandchildren=Element.findChildren(e,only,recursive,tagName);if(grandchildren)elements.push(grandchildren);}});return(elements.length>0?elements.flatten():[]);};Element.offsetSize=function(element,type){return element['offset'+((type=='vertical'||type=='height')?'Height':'Width')];};;if(typeof Effect=='undefined')
|
713 |
+
throw("controls.js requires including script.aculo.us' effects.js library");var Autocompleter={};Autocompleter.Base=Class.create({baseInitialize:function(element,update,options){element=$(element);this.element=element;this.update=$(update);this.hasFocus=false;this.changed=false;this.active=false;this.index=0;this.entryCount=0;this.oldElementValue=this.element.value;if(this.setOptions)
|
714 |
+
this.setOptions(options);else
|
715 |
+
this.options=options||{};this.options.paramName=this.options.paramName||this.element.name;this.options.tokens=this.options.tokens||[];this.options.frequency=this.options.frequency||0.4;this.options.minChars=this.options.minChars||1;this.options.onShow=this.options.onShow||function(element,update){if(!update.style.position||update.style.position=='absolute'){update.style.position='absolute';Position.clone(element,update,{setHeight:false,offsetTop:element.offsetHeight});}
|
716 |
+
Effect.Appear(update,{duration:0.15});};this.options.onHide=this.options.onHide||function(element,update){new Effect.Fade(update,{duration:0.15})};if(typeof(this.options.tokens)=='string')
|
717 |
+
this.options.tokens=new Array(this.options.tokens);if(!this.options.tokens.include('\n'))
|
718 |
+
this.options.tokens.push('\n');this.observer=null;this.element.setAttribute('autocomplete','off');Element.hide(this.update);Event.observe(this.element,'blur',this.onBlur.bindAsEventListener(this));Event.observe(this.element,'keydown',this.onKeyPress.bindAsEventListener(this));},show:function(){if(Element.getStyle(this.update,'display')=='none')this.options.onShow(this.element,this.update);if(!this.iefix&&(Prototype.Browser.IE)&&(Element.getStyle(this.update,'position')=='absolute')){new Insertion.After(this.update,'<iframe id="'+this.update.id+'_iefix" '+'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" '+'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');this.iefix=$(this.update.id+'_iefix');}
|
719 |
+
if(this.iefix)setTimeout(this.fixIEOverlapping.bind(this),50);},fixIEOverlapping:function(){Position.clone(this.update,this.iefix,{setTop:(!this.update.style.height)});this.iefix.style.zIndex=1;this.update.style.zIndex=2;Element.show(this.iefix);},hide:function(){this.stopIndicator();if(Element.getStyle(this.update,'display')!='none')this.options.onHide(this.element,this.update);if(this.iefix)Element.hide(this.iefix);},startIndicator:function(){if(this.options.indicator)Element.show(this.options.indicator);},stopIndicator:function(){if(this.options.indicator)Element.hide(this.options.indicator);},onKeyPress:function(event){if(this.active)
|
720 |
+
switch(event.keyCode){case Event.KEY_TAB:case Event.KEY_RETURN:this.selectEntry();Event.stop(event);case Event.KEY_ESC:this.hide();this.active=false;Event.stop(event);return;case Event.KEY_LEFT:case Event.KEY_RIGHT:return;case Event.KEY_UP:this.markPrevious();this.render();Event.stop(event);return;case Event.KEY_DOWN:this.markNext();this.render();Event.stop(event);return;}
|
721 |
+
else
|
722 |
+
if(event.keyCode==Event.KEY_TAB||event.keyCode==Event.KEY_RETURN||(Prototype.Browser.WebKit>0&&event.keyCode==0))return;this.changed=true;this.hasFocus=true;if(this.observer)clearTimeout(this.observer);this.observer=setTimeout(this.onObserverEvent.bind(this),this.options.frequency*1000);},activate:function(){this.changed=false;this.hasFocus=true;this.getUpdatedChoices();},onHover:function(event){var element=Event.findElement(event,'LI');if(this.index!=element.autocompleteIndex)
|
723 |
+
{this.index=element.autocompleteIndex;this.render();}
|
724 |
+
Event.stop(event);},onClick:function(event){var element=Event.findElement(event,'LI');this.index=element.autocompleteIndex;this.selectEntry();this.hide();},onBlur:function(event){setTimeout(this.hide.bind(this),250);this.hasFocus=false;this.active=false;},render:function(){if(this.entryCount>0){for(var i=0;i<this.entryCount;i++)
|
725 |
+
this.index==i?Element.addClassName(this.getEntry(i),"selected"):Element.removeClassName(this.getEntry(i),"selected");if(this.hasFocus){this.show();this.active=true;}}else{this.active=false;this.hide();}},markPrevious:function(){if(this.index>0)this.index--;else this.index=this.entryCount-1;},markNext:function(){if(this.index<this.entryCount-1)this.index++;else this.index=0;this.getEntry(this.index).scrollIntoView(false);},getEntry:function(index){return this.update.firstChild.childNodes[index];},getCurrentEntry:function(){return this.getEntry(this.index);},selectEntry:function(){this.active=false;this.updateElement(this.getCurrentEntry());},updateElement:function(selectedElement){if(this.options.updateElement){this.options.updateElement(selectedElement);return;}
|
726 |
+
var value='';if(this.options.select){var nodes=$(selectedElement).select('.'+this.options.select)||[];if(nodes.length>0)value=Element.collectTextNodes(nodes[0],this.options.select);}else
|
727 |
+
value=Element.collectTextNodesIgnoreClass(selectedElement,'informal');var bounds=this.getTokenBounds();if(bounds[0]!=-1){var newValue=this.element.value.substr(0,bounds[0]);var whitespace=this.element.value.substr(bounds[0]).match(/^\s+/);if(whitespace)
|
728 |
+
newValue+=whitespace[0];this.element.value=newValue+value+this.element.value.substr(bounds[1]);}else{this.element.value=value;}
|
729 |
+
this.oldElementValue=this.element.value;this.element.focus();if(this.options.afterUpdateElement)
|
730 |
+
this.options.afterUpdateElement(this.element,selectedElement);},updateChoices:function(choices){if(!this.changed&&this.hasFocus){this.update.innerHTML=choices;Element.cleanWhitespace(this.update);Element.cleanWhitespace(this.update.down());if(this.update.firstChild&&this.update.down().childNodes){this.entryCount=this.update.down().childNodes.length;for(var i=0;i<this.entryCount;i++){var entry=this.getEntry(i);entry.autocompleteIndex=i;this.addObservers(entry);}}else{this.entryCount=0;}
|
731 |
+
this.stopIndicator();this.index=0;if(this.entryCount==1&&this.options.autoSelect){this.selectEntry();this.hide();}else{this.render();}}},addObservers:function(element){Event.observe(element,"mouseover",this.onHover.bindAsEventListener(this));Event.observe(element,"click",this.onClick.bindAsEventListener(this));},onObserverEvent:function(){this.changed=false;this.tokenBounds=null;if(this.getToken().length>=this.options.minChars){this.getUpdatedChoices();}else{this.active=false;this.hide();}
|
732 |
+
this.oldElementValue=this.element.value;},getToken:function(){var bounds=this.getTokenBounds();return this.element.value.substring(bounds[0],bounds[1]).strip();},getTokenBounds:function(){if(null!=this.tokenBounds)return this.tokenBounds;var value=this.element.value;if(value.strip().empty())return[-1,0];var diff=arguments.callee.getFirstDifferencePos(value,this.oldElementValue);var offset=(diff==this.oldElementValue.length?1:0);var prevTokenPos=-1,nextTokenPos=value.length;var tp;for(var index=0,l=this.options.tokens.length;index<l;++index){tp=value.lastIndexOf(this.options.tokens[index],diff+offset-1);if(tp>prevTokenPos)prevTokenPos=tp;tp=value.indexOf(this.options.tokens[index],diff+offset);if(-1!=tp&&tp<nextTokenPos)nextTokenPos=tp;}
|
733 |
+
return(this.tokenBounds=[prevTokenPos+1,nextTokenPos]);}});Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos=function(newS,oldS){var boundary=Math.min(newS.length,oldS.length);for(var index=0;index<boundary;++index)
|
734 |
+
if(newS[index]!=oldS[index])
|
735 |
+
return index;return boundary;};Ajax.Autocompleter=Class.create(Autocompleter.Base,{initialize:function(element,update,url,options){this.baseInitialize(element,update,options);this.options.asynchronous=true;this.options.onComplete=this.onComplete.bind(this);this.options.defaultParams=this.options.parameters||null;this.url=url;},getUpdatedChoices:function(){this.startIndicator();var entry=encodeURIComponent(this.options.paramName)+'='+
|
736 |
+
encodeURIComponent(this.getToken());this.options.parameters=this.options.callback?this.options.callback(this.element,entry):entry;if(this.options.defaultParams)
|
737 |
+
this.options.parameters+='&'+this.options.defaultParams;new Ajax.Request(this.url,this.options);},onComplete:function(request){this.updateChoices(request.responseText);}});Autocompleter.Local=Class.create(Autocompleter.Base,{initialize:function(element,update,array,options){this.baseInitialize(element,update,options);this.options.array=array;},getUpdatedChoices:function(){this.updateChoices(this.options.selector(this));},setOptions:function(options){this.options=Object.extend({choices:10,partialSearch:true,partialChars:2,ignoreCase:true,fullSearch:false,selector:function(instance){var ret=[];var partial=[];var entry=instance.getToken();var count=0;for(var i=0;i<instance.options.array.length&&ret.length<instance.options.choices;i++){var elem=instance.options.array[i];var foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase()):elem.indexOf(entry);while(foundPos!=-1){if(foundPos==0&&elem.length!=entry.length){ret.push("<li><strong>"+elem.substr(0,entry.length)+"</strong>"+
|
738 |
+
elem.substr(entry.length)+"</li>");break;}else if(entry.length>=instance.options.partialChars&&instance.options.partialSearch&&foundPos!=-1){if(instance.options.fullSearch||/\s/.test(elem.substr(foundPos-1,1))){partial.push("<li>"+elem.substr(0,foundPos)+"<strong>"+
|
739 |
+
elem.substr(foundPos,entry.length)+"</strong>"+elem.substr(foundPos+entry.length)+"</li>");break;}}
|
740 |
+
foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase(),foundPos+1):elem.indexOf(entry,foundPos+1);}}
|
741 |
+
if(partial.length)
|
742 |
+
ret=ret.concat(partial.slice(0,instance.options.choices-ret.length));return"<ul>"+ret.join('')+"</ul>";}},options||{});}});Field.scrollFreeActivate=function(field){setTimeout(function(){Field.activate(field);},1);};Ajax.InPlaceEditor=Class.create({initialize:function(element,url,options){this.url=url;this.element=element=$(element);this.prepareOptions();this._controls={};arguments.callee.dealWithDeprecatedOptions(options);Object.extend(this.options,options||{});if(!this.options.formId&&this.element.id){this.options.formId=this.element.id+'-inplaceeditor';if($(this.options.formId))
|
743 |
+
this.options.formId='';}
|
744 |
+
if(this.options.externalControl)
|
745 |
+
this.options.externalControl=$(this.options.externalControl);if(!this.options.externalControl)
|
746 |
+
this.options.externalControlOnly=false;this._originalBackground=this.element.getStyle('background-color')||'transparent';this.element.title=this.options.clickToEditText;this._boundCancelHandler=this.handleFormCancellation.bind(this);this._boundComplete=(this.options.onComplete||Prototype.emptyFunction).bind(this);this._boundFailureHandler=this.handleAJAXFailure.bind(this);this._boundSubmitHandler=this.handleFormSubmission.bind(this);this._boundWrapperHandler=this.wrapUp.bind(this);this.registerListeners();},checkForEscapeOrReturn:function(e){if(!this._editing||e.ctrlKey||e.altKey||e.shiftKey)return;if(Event.KEY_ESC==e.keyCode)
|
747 |
+
this.handleFormCancellation(e);else if(Event.KEY_RETURN==e.keyCode)
|
748 |
+
this.handleFormSubmission(e);},createControl:function(mode,handler,extraClasses){var control=this.options[mode+'Control'];var text=this.options[mode+'Text'];if('button'==control){var btn=document.createElement('input');btn.type='submit';btn.value=text;btn.className='editor_'+mode+'_button';if('cancel'==mode)
|
749 |
+
btn.onclick=this._boundCancelHandler;this._form.appendChild(btn);this._controls[mode]=btn;}else if('link'==control){var link=document.createElement('a');link.href='#';link.appendChild(document.createTextNode(text));link.onclick='cancel'==mode?this._boundCancelHandler:this._boundSubmitHandler;link.className='editor_'+mode+'_link';if(extraClasses)
|
750 |
+
link.className+=' '+extraClasses;this._form.appendChild(link);this._controls[mode]=link;}},createEditField:function(){var text=(this.options.loadTextURL?this.options.loadingText:this.getText());var fld;if(1>=this.options.rows&&!/\r|\n/.test(this.getText())){fld=document.createElement('input');fld.type='text';var size=this.options.size||this.options.cols||0;if(0<size)fld.size=size;}else{fld=document.createElement('textarea');fld.rows=(1>=this.options.rows?this.options.autoRows:this.options.rows);fld.cols=this.options.cols||40;}
|
751 |
+
fld.name=this.options.paramName;fld.value=text;fld.className='editor_field';if(this.options.submitOnBlur)
|
752 |
+
fld.onblur=this._boundSubmitHandler;this._controls.editor=fld;if(this.options.loadTextURL)
|
753 |
+
this.loadExternalText();this._form.appendChild(this._controls.editor);},createForm:function(){var ipe=this;function addText(mode,condition){var text=ipe.options['text'+mode+'Controls'];if(!text||condition===false)return;ipe._form.appendChild(document.createTextNode(text));};this._form=$(document.createElement('form'));this._form.id=this.options.formId;this._form.addClassName(this.options.formClassName);this._form.onsubmit=this._boundSubmitHandler;this.createEditField();if('textarea'==this._controls.editor.tagName.toLowerCase())
|
754 |
+
this._form.appendChild(document.createElement('br'));if(this.options.onFormCustomization)
|
755 |
+
this.options.onFormCustomization(this,this._form);addText('Before',this.options.okControl||this.options.cancelControl);this.createControl('ok',this._boundSubmitHandler);addText('Between',this.options.okControl&&this.options.cancelControl);this.createControl('cancel',this._boundCancelHandler,'editor_cancel');addText('After',this.options.okControl||this.options.cancelControl);},destroy:function(){if(this._oldInnerHTML)
|
756 |
+
this.element.innerHTML=this._oldInnerHTML;this.leaveEditMode();this.unregisterListeners();},enterEditMode:function(e){if(this._saving||this._editing)return;this._editing=true;this.triggerCallback('onEnterEditMode');if(this.options.externalControl)
|
757 |
+
this.options.externalControl.hide();this.element.hide();this.createForm();this.element.parentNode.insertBefore(this._form,this.element);if(!this.options.loadTextURL)
|
758 |
+
this.postProcessEditField();if(e)Event.stop(e);},enterHover:function(e){if(this.options.hoverClassName)
|
759 |
+
this.element.addClassName(this.options.hoverClassName);if(this._saving)return;this.triggerCallback('onEnterHover');},getText:function(){return this.element.innerHTML.unescapeHTML();},handleAJAXFailure:function(transport){this.triggerCallback('onFailure',transport);if(this._oldInnerHTML){this.element.innerHTML=this._oldInnerHTML;this._oldInnerHTML=null;}},handleFormCancellation:function(e){this.wrapUp();if(e)Event.stop(e);},handleFormSubmission:function(e){var form=this._form;var value=$F(this._controls.editor);this.prepareSubmission();var params=this.options.callback(form,value)||'';if(Object.isString(params))
|
760 |
+
params=params.toQueryParams();params.editorId=this.element.id;if(this.options.htmlResponse){var options=Object.extend({evalScripts:true},this.options.ajaxOptions);Object.extend(options,{parameters:params,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler});new Ajax.Updater({success:this.element},this.url,options);}else{var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:params,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler});new Ajax.Request(this.url,options);}
|
761 |
+
if(e)Event.stop(e);},leaveEditMode:function(){this.element.removeClassName(this.options.savingClassName);this.removeForm();this.leaveHover();this.element.style.backgroundColor=this._originalBackground;this.element.show();if(this.options.externalControl)
|
762 |
+
this.options.externalControl.show();this._saving=false;this._editing=false;this._oldInnerHTML=null;this.triggerCallback('onLeaveEditMode');},leaveHover:function(e){if(this.options.hoverClassName)
|
763 |
+
this.element.removeClassName(this.options.hoverClassName);if(this._saving)return;this.triggerCallback('onLeaveHover');},loadExternalText:function(){this._form.addClassName(this.options.loadingClassName);this._controls.editor.disabled=true;var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:'editorId='+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){this._form.removeClassName(this.options.loadingClassName);var text=transport.responseText;if(this.options.stripLoadedTextTags)
|
764 |
+
text=text.stripTags();this._controls.editor.value=text;this._controls.editor.disabled=false;this.postProcessEditField();}.bind(this),onFailure:this._boundFailureHandler});new Ajax.Request(this.options.loadTextURL,options);},postProcessEditField:function(){var fpc=this.options.fieldPostCreation;if(fpc)
|
765 |
+
$(this._controls.editor)['focus'==fpc?'focus':'activate']();},prepareOptions:function(){this.options=Object.clone(Ajax.InPlaceEditor.DefaultOptions);Object.extend(this.options,Ajax.InPlaceEditor.DefaultCallbacks);[this._extraDefaultOptions].flatten().compact().each(function(defs){Object.extend(this.options,defs);}.bind(this));},prepareSubmission:function(){this._saving=true;this.removeForm();this.leaveHover();this.showSaving();},registerListeners:function(){this._listeners={};var listener;$H(Ajax.InPlaceEditor.Listeners).each(function(pair){listener=this[pair.value].bind(this);this._listeners[pair.key]=listener;if(!this.options.externalControlOnly)
|
766 |
+
this.element.observe(pair.key,listener);if(this.options.externalControl)
|
767 |
+
this.options.externalControl.observe(pair.key,listener);}.bind(this));},removeForm:function(){if(!this._form)return;this._form.remove();this._form=null;this._controls={};},showSaving:function(){this._oldInnerHTML=this.element.innerHTML;this.element.innerHTML=this.options.savingText;this.element.addClassName(this.options.savingClassName);this.element.style.backgroundColor=this._originalBackground;this.element.show();},triggerCallback:function(cbName,arg){if('function'==typeof this.options[cbName]){this.options[cbName](this,arg);}},unregisterListeners:function(){$H(this._listeners).each(function(pair){if(!this.options.externalControlOnly)
|
768 |
+
this.element.stopObserving(pair.key,pair.value);if(this.options.externalControl)
|
769 |
+
this.options.externalControl.stopObserving(pair.key,pair.value);}.bind(this));},wrapUp:function(transport){this.leaveEditMode();this._boundComplete(transport,this.element);}});Object.extend(Ajax.InPlaceEditor.prototype,{dispose:Ajax.InPlaceEditor.prototype.destroy});Ajax.InPlaceCollectionEditor=Class.create(Ajax.InPlaceEditor,{initialize:function($super,element,url,options){this._extraDefaultOptions=Ajax.InPlaceCollectionEditor.DefaultOptions;$super(element,url,options);},createEditField:function(){var list=document.createElement('select');list.name=this.options.paramName;list.size=1;this._controls.editor=list;this._collection=this.options.collection||[];if(this.options.loadCollectionURL)
|
770 |
+
this.loadCollection();else
|
771 |
+
this.checkForExternalText();this._form.appendChild(this._controls.editor);},loadCollection:function(){this._form.addClassName(this.options.loadingClassName);this.showLoadingText(this.options.loadingCollectionText);var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:'editorId='+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){var js=transport.responseText.strip();if(!/^\[.*\]$/.test(js))
|
772 |
+
throw('Server returned an invalid collection representation.');this._collection=eval(js);this.checkForExternalText();}.bind(this),onFailure:this.onFailure});new Ajax.Request(this.options.loadCollectionURL,options);},showLoadingText:function(text){this._controls.editor.disabled=true;var tempOption=this._controls.editor.firstChild;if(!tempOption){tempOption=document.createElement('option');tempOption.value='';this._controls.editor.appendChild(tempOption);tempOption.selected=true;}
|
773 |
+
tempOption.update((text||'').stripScripts().stripTags());},checkForExternalText:function(){this._text=this.getText();if(this.options.loadTextURL)
|
774 |
+
this.loadExternalText();else
|
775 |
+
this.buildOptionList();},loadExternalText:function(){this.showLoadingText(this.options.loadingText);var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:'editorId='+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){this._text=transport.responseText.strip();this.buildOptionList();}.bind(this),onFailure:this.onFailure});new Ajax.Request(this.options.loadTextURL,options);},buildOptionList:function(){this._form.removeClassName(this.options.loadingClassName);this._collection=this._collection.map(function(entry){return 2===entry.length?entry:[entry,entry].flatten();});var marker=('value'in this.options)?this.options.value:this._text;var textFound=this._collection.any(function(entry){return entry[0]==marker;}.bind(this));this._controls.editor.update('');var option;this._collection.each(function(entry,index){option=document.createElement('option');option.value=entry[0];option.selected=textFound?entry[0]==marker:0==index;option.appendChild(document.createTextNode(entry[1]));this._controls.editor.appendChild(option);}.bind(this));this._controls.editor.disabled=false;Field.scrollFreeActivate(this._controls.editor);}});Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions=function(options){if(!options)return;function fallback(name,expr){if(name in options||expr===undefined)return;options[name]=expr;};fallback('cancelControl',(options.cancelLink?'link':(options.cancelButton?'button':options.cancelLink==options.cancelButton==false?false:undefined)));fallback('okControl',(options.okLink?'link':(options.okButton?'button':options.okLink==options.okButton==false?false:undefined)));fallback('highlightColor',options.highlightcolor);fallback('highlightEndColor',options.highlightendcolor);};Object.extend(Ajax.InPlaceEditor,{DefaultOptions:{ajaxOptions:{},autoRows:3,cancelControl:'link',cancelText:'cancel',clickToEditText:'Click to edit',externalControl:null,externalControlOnly:false,fieldPostCreation:'activate',formClassName:'inplaceeditor-form',formId:null,highlightColor:'#ffff99',highlightEndColor:'#ffffff',hoverClassName:'',htmlResponse:true,loadingClassName:'inplaceeditor-loading',loadingText:'Loading...',okControl:'button',okText:'ok',paramName:'value',rows:1,savingClassName:'inplaceeditor-saving',savingText:'Saving...',size:0,stripLoadedTextTags:false,submitOnBlur:false,textAfterControls:'',textBeforeControls:'',textBetweenControls:''},DefaultCallbacks:{callback:function(form){return Form.serialize(form);},onComplete:function(transport,element){new Effect.Highlight(element,{startcolor:this.options.highlightColor,keepBackgroundImage:true});},onEnterEditMode:null,onEnterHover:function(ipe){ipe.element.style.backgroundColor=ipe.options.highlightColor;if(ipe._effect)
|
776 |
+
ipe._effect.cancel();},onFailure:function(transport,ipe){alert('Error communication with the server: '+transport.responseText.stripTags());},onFormCustomization:null,onLeaveEditMode:null,onLeaveHover:function(ipe){ipe._effect=new Effect.Highlight(ipe.element,{startcolor:ipe.options.highlightColor,endcolor:ipe.options.highlightEndColor,restorecolor:ipe._originalBackground,keepBackgroundImage:true});}},Listeners:{click:'enterEditMode',keydown:'checkForEscapeOrReturn',mouseover:'enterHover',mouseout:'leaveHover'}});Ajax.InPlaceCollectionEditor.DefaultOptions={loadingCollectionText:'Loading options...'};Form.Element.DelayedObserver=Class.create({initialize:function(element,delay,callback){this.delay=delay||0.5;this.element=$(element);this.callback=callback;this.timer=null;this.lastValue=$F(this.element);Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));},delayedListener:function(event){if(this.lastValue==$F(this.element))return;if(this.timer)clearTimeout(this.timer);this.timer=setTimeout(this.onTimerEvent.bind(this),this.delay*1000);this.lastValue=$F(this.element);},onTimerEvent:function(){this.timer=null;this.callback(this.element,$F(this.element));}});;if(!Control)var Control={};Control.Slider=Class.create({initialize:function(handle,track,options){var slider=this;if(Object.isArray(handle)){this.handles=handle.collect(function(e){return $(e)});}else{this.handles=[$(handle)];}
|
777 |
+
this.track=$(track);this.options=options||{};this.axis=this.options.axis||'horizontal';this.increment=this.options.increment||1;this.step=parseInt(this.options.step||'1');this.range=this.options.range||$R(0,1);this.value=0;this.values=this.handles.map(function(){return 0});this.spans=this.options.spans?this.options.spans.map(function(s){return $(s)}):false;this.options.startSpan=$(this.options.startSpan||null);this.options.endSpan=$(this.options.endSpan||null);this.restricted=this.options.restricted||false;this.maximum=this.options.maximum||this.range.end;this.minimum=this.options.minimum||this.range.start;this.alignX=parseInt(this.options.alignX||'0');this.alignY=parseInt(this.options.alignY||'0');this.trackLength=this.maximumOffset()-this.minimumOffset();this.handleLength=this.isVertical()?(this.handles[0].offsetHeight!=0?this.handles[0].offsetHeight:this.handles[0].style.height.replace(/px$/,"")):(this.handles[0].offsetWidth!=0?this.handles[0].offsetWidth:this.handles[0].style.width.replace(/px$/,""));this.active=false;this.dragging=false;this.disabled=false;if(this.options.disabled)this.setDisabled();this.allowedValues=this.options.values?this.options.values.sortBy(Prototype.K):false;if(this.allowedValues){this.minimum=this.allowedValues.min();this.maximum=this.allowedValues.max();}
|
778 |
+
this.eventMouseDown=this.startDrag.bindAsEventListener(this);this.eventMouseUp=this.endDrag.bindAsEventListener(this);this.eventMouseMove=this.update.bindAsEventListener(this);this.handles.each(function(h,i){i=slider.handles.length-1-i;slider.setValue(parseFloat((Object.isArray(slider.options.sliderValue)?slider.options.sliderValue[i]:slider.options.sliderValue)||slider.range.start),i);h.makePositioned().observe("mousedown",slider.eventMouseDown);});this.track.observe("mousedown",this.eventMouseDown);document.observe("mouseup",this.eventMouseUp);$(this.track.parentNode.parentNode).observe("mousemove",this.eventMouseMove);this.initialized=true;},dispose:function(){var slider=this;Event.stopObserving(this.track,"mousedown",this.eventMouseDown);Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(this.track.parentNode.parentNode,"mousemove",this.eventMouseMove);this.handles.each(function(h){Event.stopObserving(h,"mousedown",slider.eventMouseDown);});},setDisabled:function(){this.disabled=true;this.track.parentNode.className=this.track.parentNode.className+' disabled';},setEnabled:function(){this.disabled=false;},getNearestValue:function(value){if(this.allowedValues){if(value>=this.allowedValues.max())return(this.allowedValues.max());if(value<=this.allowedValues.min())return(this.allowedValues.min());var offset=Math.abs(this.allowedValues[0]-value);var newValue=this.allowedValues[0];this.allowedValues.each(function(v){var currentOffset=Math.abs(v-value);if(currentOffset<=offset){newValue=v;offset=currentOffset;}});return newValue;}
|
779 |
+
if(value>this.range.end)return this.range.end;if(value<this.range.start)return this.range.start;return value;},setValue:function(sliderValue,handleIdx){if(!this.active){this.activeHandleIdx=handleIdx||0;this.activeHandle=this.handles[this.activeHandleIdx];this.updateStyles();}
|
780 |
+
handleIdx=handleIdx||this.activeHandleIdx||0;if(this.initialized&&this.restricted){if((handleIdx>0)&&(sliderValue<this.values[handleIdx-1]))
|
781 |
+
sliderValue=this.values[handleIdx-1];if((handleIdx<(this.handles.length-1))&&(sliderValue>this.values[handleIdx+1]))
|
782 |
+
sliderValue=this.values[handleIdx+1];}
|
783 |
+
sliderValue=this.getNearestValue(sliderValue);this.values[handleIdx]=sliderValue;this.value=this.values[0];this.handles[handleIdx].style[this.isVertical()?'top':'left']=this.translateToPx(sliderValue);this.drawSpans();if(!this.dragging||!this.event)this.updateFinished();},setValueBy:function(delta,handleIdx){this.setValue(this.values[handleIdx||this.activeHandleIdx||0]+delta,handleIdx||this.activeHandleIdx||0);},translateToPx:function(value){return Math.round(((this.trackLength-this.handleLength)/(this.range.end-this.range.start))*(value-this.range.start))+"px";},translateToValue:function(offset){return((offset/(this.trackLength-this.handleLength)*(this.range.end-this.range.start))+this.range.start);},getRange:function(range){var v=this.values.sortBy(Prototype.K);range=range||0;return $R(v[range],v[range+1]);},minimumOffset:function(){return(this.isVertical()?this.alignY:this.alignX);},maximumOffset:function(){return(this.isVertical()?(this.track.offsetHeight!=0?this.track.offsetHeight:this.track.style.height.replace(/px$/,""))-this.alignY:(this.track.offsetWidth!=0?this.track.offsetWidth:this.track.style.width.replace(/px$/,""))-this.alignX);},isVertical:function(){return(this.axis=='vertical');},drawSpans:function(){var slider=this;if(this.spans)
|
784 |
+
$R(0,this.spans.length-1).each(function(r){slider.setSpan(slider.spans[r],slider.getRange(r))});if(this.options.startSpan)
|
785 |
+
this.setSpan(this.options.startSpan,$R(0,this.values.length>1?this.getRange(0).min():this.value));if(this.options.endSpan)
|
786 |
+
this.setSpan(this.options.endSpan,$R(this.values.length>1?this.getRange(this.spans.length-1).max():this.value,this.maximum));},setSpan:function(span,range){if(this.isVertical()){span.style.top=this.translateToPx(range.start);span.style.height=this.translateToPx(range.end-range.start+this.range.start);}else{span.style.left=this.translateToPx(range.start);span.style.width=this.translateToPx(range.end-range.start+this.range.start);}},updateStyles:function(){this.handles.each(function(h){Element.removeClassName(h,'selected')});Element.addClassName(this.activeHandle,'selected');},startDrag:function(event){if(Event.isLeftClick(event)){if(!this.disabled){this.active=true;var handle=Event.element(event);var pointer=[Event.pointerX(event),Event.pointerY(event)];var track=handle;if(track==this.track){var offsets=Position.cumulativeOffset(this.track);this.event=event;this.setValue(this.translateToValue((this.isVertical()?pointer[1]-offsets[1]:pointer[0]-offsets[0])-(this.handleLength/2)));var offsets=Position.cumulativeOffset(this.activeHandle);this.offsetX=(pointer[0]-offsets[0]);this.offsetY=(pointer[1]-offsets[1]);}else{while((this.handles.indexOf(handle)==-1)&&handle.parentNode)
|
787 |
+
handle=handle.parentNode;if(this.handles.indexOf(handle)!=-1){this.activeHandle=handle;this.activeHandleIdx=this.handles.indexOf(this.activeHandle);this.updateStyles();var offsets=Position.cumulativeOffset(this.activeHandle);this.offsetX=(pointer[0]-offsets[0]);this.offsetY=(pointer[1]-offsets[1]);}}}
|
788 |
+
Event.stop(event);}},update:function(event){if(this.active){if(!this.dragging)this.dragging=true;this.draw(event);if(Prototype.Browser.WebKit)window.scrollBy(0,0);Event.stop(event);}},draw:function(event){var pointer=[Event.pointerX(event),Event.pointerY(event)];var offsets=Position.cumulativeOffset(this.track);pointer[0]-=this.offsetX+offsets[0];pointer[1]-=this.offsetY+offsets[1];this.event=event;this.setValue(this.translateToValue(this.isVertical()?pointer[1]:pointer[0]));if(this.initialized&&this.options.onSlide)
|
789 |
+
this.options.onSlide(this.values.length>1?this.values:this.value,this);},endDrag:function(event){if(this.active&&this.dragging){this.finishDrag(event,true);Event.stop(event);}
|
790 |
+
this.active=false;this.dragging=false;},finishDrag:function(event,success){this.active=false;this.dragging=false;this.updateFinished();},updateFinished:function(){if(this.initialized&&this.options.onChange)
|
791 |
+
this.options.onChange(this.values.length>1?this.values:this.value,this);this.event=null;}});;var Validator=Class.create();Validator.prototype={initialize:function(className,error,test,options){if(typeof test=='function'){this.options=$H(options);this._test=test;}else{this.options=$H(test);this._test=function(){return true};}
|
792 |
+
this.error=error||'Validation failed.';this.className=className;},test:function(v,elm){return(this._test(v,elm)&&this.options.all(function(p){return Validator.methods[p.key]?Validator.methods[p.key](v,elm,p.value):true;}));}}
|
793 |
+
Validator.methods={pattern:function(v,elm,opt){return Validation.get('IsEmpty').test(v)||opt.test(v)},minLength:function(v,elm,opt){return v.length>=opt},maxLength:function(v,elm,opt){return v.length<=opt},min:function(v,elm,opt){return v>=parseFloat(opt)},max:function(v,elm,opt){return v<=parseFloat(opt)},notOneOf:function(v,elm,opt){return $A(opt).all(function(value){return v!=value;})},oneOf:function(v,elm,opt){return $A(opt).any(function(value){return v==value;})},is:function(v,elm,opt){return v==opt},isNot:function(v,elm,opt){return v!=opt},equalToField:function(v,elm,opt){return v==$F(opt)},notEqualToField:function(v,elm,opt){return v!=$F(opt)},include:function(v,elm,opt){return $A(opt).all(function(value){return Validation.get(value).test(v,elm);})}}
|
794 |
+
var Validation=Class.create();Validation.defaultOptions={onSubmit:true,stopOnFirst:false,immediate:false,focusOnError:true,useTitles:false,addClassNameToContainer:false,containerClassName:'.input-box',onFormValidate:function(result,form){},onElementValidate:function(result,elm){}};Validation.prototype={initialize:function(form,options){this.form=$(form);if(!this.form){return;}
|
795 |
+
this.options=Object.extend({onSubmit:Validation.defaultOptions.onSubmit,stopOnFirst:Validation.defaultOptions.stopOnFirst,immediate:Validation.defaultOptions.immediate,focusOnError:Validation.defaultOptions.focusOnError,useTitles:Validation.defaultOptions.useTitles,onFormValidate:Validation.defaultOptions.onFormValidate,onElementValidate:Validation.defaultOptions.onElementValidate},options||{});if(this.options.onSubmit)Event.observe(this.form,'submit',this.onSubmit.bind(this),false);if(this.options.immediate){Form.getElements(this.form).each(function(input){if(input.tagName.toLowerCase()=='select'){Event.observe(input,'blur',this.onChange.bindAsEventListener(this));}
|
796 |
+
if(input.type.toLowerCase()=='radio'||input.type.toLowerCase()=='checkbox'){Event.observe(input,'click',this.onChange.bindAsEventListener(this));}else{Event.observe(input,'change',this.onChange.bindAsEventListener(this));}},this);}},onChange:function(ev){Validation.isOnChange=true;Validation.validate(Event.element(ev),{useTitle:this.options.useTitles,onElementValidate:this.options.onElementValidate});Validation.isOnChange=false;},onSubmit:function(ev){if(!this.validate())Event.stop(ev);},validate:function(){var result=false;var useTitles=this.options.useTitles;var callback=this.options.onElementValidate;try{if(this.options.stopOnFirst){result=Form.getElements(this.form).all(function(elm){if(elm.hasClassName('local-validation')&&!this.isElementInForm(elm,this.form)){return true;}
|
797 |
+
return Validation.validate(elm,{useTitle:useTitles,onElementValidate:callback});},this);}else{result=Form.getElements(this.form).collect(function(elm){if(elm.hasClassName('local-validation')&&!this.isElementInForm(elm,this.form)){return true;}
|
798 |
+
return Validation.validate(elm,{useTitle:useTitles,onElementValidate:callback});},this).all();}}catch(e){}
|
799 |
+
if(!result&&this.options.focusOnError){try{Form.getElements(this.form).findAll(function(elm){return $(elm).hasClassName('validation-failed')}).first().focus()}
|
800 |
+
catch(e){}}
|
801 |
+
this.options.onFormValidate(result,this.form);return result;},reset:function(){Form.getElements(this.form).each(Validation.reset);},isElementInForm:function(elm,form){var domForm=elm.up('form');if(domForm==form){return true;}
|
802 |
+
return false;}}
|
803 |
+
Object.extend(Validation,{validate:function(elm,options){options=Object.extend({useTitle:false,onElementValidate:function(result,elm){}},options||{});elm=$(elm);var cn=$w(elm.className);return result=cn.all(function(value){var test=Validation.test(value,elm,options.useTitle);options.onElementValidate(test,elm);return test;});},insertAdvice:function(elm,advice){var container=$(elm).up('.field-row');if(container){Element.insert(container,{after:advice});}else if(elm.up('td.value')){elm.up('td.value').insert({bottom:advice});}else if(elm.advaiceContainer&&$(elm.advaiceContainer)){$(elm.advaiceContainer).update(advice);}
|
804 |
+
else{switch(elm.type.toLowerCase()){case'checkbox':case'radio':var p=elm.parentNode;if(p){Element.insert(p,{'bottom':advice});}else{Element.insert(elm,{'after':advice});}
|
805 |
+
break;default:Element.insert(elm,{'after':advice});}}},showAdvice:function(elm,advice,adviceName){if(!elm.advices){elm.advices=new Hash();}
|
806 |
+
else{elm.advices.each(function(pair){this.hideAdvice(elm,pair.value);}.bind(this));}
|
807 |
+
elm.advices.set(adviceName,advice);if(typeof Effect=='undefined'){advice.style.display='block';}else{if(!advice._adviceAbsolutize){new Effect.Appear(advice,{duration:1});}else{Position.absolutize(advice);advice.show();advice.setStyle({'top':advice._adviceTop,'left':advice._adviceLeft,'width':advice._adviceWidth,'z-index':1000});advice.addClassName('advice-absolute');}}},hideAdvice:function(elm,advice){if(advice!=null)advice.hide();},updateCallback:function(elm,status){if(typeof elm.callbackFunction!='undefined'){eval(elm.callbackFunction+'(\''+elm.id+'\',\''+status+'\')');}},ajaxError:function(elm,errorMsg){var name='validate-ajax';var advice=Validation.getAdvice(name,elm);if(advice==null){advice=this.createAdvice(name,elm,false,errorMsg);}
|
808 |
+
this.showAdvice(elm,advice,'validate-ajax');this.updateCallback(elm,'failed');elm.addClassName('validation-failed');elm.addClassName('validate-ajax');if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=''){var container=elm.up(Validation.defaultOptions.containerClassName);if(container&&this.allowContainerClassName(elm)){container.removeClassName('validation-passed');container.addClassName('validation-error');}}},allowContainerClassName:function(elm){if(elm.type=='radio'||elm.type=='checkbox'){return elm.hasClassName('change-container-classname');}
|
809 |
+
return true;},test:function(name,elm,useTitle){var v=Validation.get(name);var prop='__advice'+name.camelize();try{if(Validation.isVisible(elm)&&!v.test($F(elm),elm)){var advice=Validation.getAdvice(name,elm);if(advice==null){advice=this.createAdvice(name,elm,useTitle);}
|
810 |
+
this.showAdvice(elm,advice,name);this.updateCallback(elm,'failed');elm[prop]=1;if(!elm.advaiceContainer){elm.removeClassName('validation-passed');elm.addClassName('validation-failed');}
|
811 |
+
if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=''){var container=elm.up(Validation.defaultOptions.containerClassName);if(container&&this.allowContainerClassName(elm)){container.removeClassName('validation-passed');container.addClassName('validation-error');}}
|
812 |
+
return false;}else{var advice=Validation.getAdvice(name,elm);this.hideAdvice(elm,advice);this.updateCallback(elm,'passed');elm[prop]='';elm.removeClassName('validation-failed');elm.addClassName('validation-passed');if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=''){var container=elm.up(Validation.defaultOptions.containerClassName);if(container&&!container.down('.validation-failed')&&this.allowContainerClassName(elm)){if(!Validation.get('IsEmpty').test(elm.value)||!this.isVisible(elm)){container.addClassName('validation-passed');}else{container.removeClassName('validation-passed');}
|
813 |
+
container.removeClassName('validation-error');}}
|
814 |
+
return true;}}catch(e){throw(e)}},isVisible:function(elm){while(elm.tagName!='BODY'){if(!$(elm).visible())return false;elm=elm.parentNode;}
|
815 |
+
return true;},getAdvice:function(name,elm){return $('advice-'+name+'-'+Validation.getElmID(elm))||$('advice-'+Validation.getElmID(elm));},createAdvice:function(name,elm,useTitle,customError){var v=Validation.get(name);var errorMsg=useTitle?((elm&&elm.title)?elm.title:v.error):v.error;if(customError){errorMsg=customError;}
|
816 |
+
try{if(Translator){errorMsg=Translator.translate(errorMsg);}}
|
817 |
+
catch(e){}
|
818 |
+
advice='<div class="validation-advice" id="advice-'+name+'-'+Validation.getElmID(elm)+'" style="display:none">'+errorMsg+'</div>'
|
819 |
+
Validation.insertAdvice(elm,advice);advice=Validation.getAdvice(name,elm);if($(elm).hasClassName('absolute-advice')){var dimensions=$(elm).getDimensions();var originalPosition=Position.cumulativeOffset(elm);advice._adviceTop=(originalPosition[1]+dimensions.height)+'px';advice._adviceLeft=(originalPosition[0])+'px';advice._adviceWidth=(dimensions.width)+'px';advice._adviceAbsolutize=true;}
|
820 |
+
return advice;},getElmID:function(elm){return elm.id?elm.id:elm.name;},reset:function(elm){elm=$(elm);var cn=$w(elm.className);cn.each(function(value){var prop='__advice'+value.camelize();if(elm[prop]){var advice=Validation.getAdvice(value,elm);if(advice){advice.hide();}
|
821 |
+
elm[prop]='';}
|
822 |
+
elm.removeClassName('validation-failed');elm.removeClassName('validation-passed');if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=''){var container=elm.up(Validation.defaultOptions.containerClassName);if(container){container.removeClassName('validation-passed');container.removeClassName('validation-error');}}});},add:function(className,error,test,options){var nv={};nv[className]=new Validator(className,error,test,options);Object.extend(Validation.methods,nv);},addAllThese:function(validators){var nv={};$A(validators).each(function(value){nv[value[0]]=new Validator(value[0],value[1],value[2],(value.length>3?value[3]:{}));});Object.extend(Validation.methods,nv);},get:function(name){return Validation.methods[name]?Validation.methods[name]:Validation.methods['_LikeNoIDIEverSaw_'];},methods:{'_LikeNoIDIEverSaw_':new Validator('_LikeNoIDIEverSaw_','',{})}});Validation.add('IsEmpty','',function(v){return(v==''||(v==null)||(v.length==0)||/^\s+$/.test(v));});Validation.addAllThese([['validate-select','Please select an option.',function(v){return((v!="none")&&(v!=null)&&(v.length!=0));}],['required-entry','This is a required field.',function(v){return!Validation.get('IsEmpty').test(v);}],['validate-number','Please enter a valid number in this field.',function(v){return Validation.get('IsEmpty').test(v)||(!isNaN(parseNumber(v))&&!/^\s+$/.test(parseNumber(v)));}],['validate-digits','Please use numbers only in this field. please avoid spaces or other characters such as dots or commas.',function(v){return Validation.get('IsEmpty').test(v)||!/[^\d]/.test(v);}],['validate-alpha','Please use letters only (a-z or A-Z) in this field.',function(v){return Validation.get('IsEmpty').test(v)||/^[a-zA-Z]+$/.test(v)}],['validate-code','Please use only letters (a-z), numbers (0-9) or underscore(_) in this field, first character should be a letter.',function(v){return Validation.get('IsEmpty').test(v)||/^[a-z]+[a-z0-9_]+$/.test(v)}],['validate-alphanum','Please use only letters (a-z or A-Z) or numbers (0-9) only in this field. No spaces or other characters are allowed.',function(v){return Validation.get('IsEmpty').test(v)||/^[a-zA-Z0-9]+$/.test(v)
|
823 |
+
/*/\W/.test(v)*/
|
824 |
+
}],['validate-street','Please use only letters (a-z or A-Z) or numbers (0-9) or spaces and # only in this field.',function(v){return Validation.get('IsEmpty').test(v)||/^[ \w]{3,}([A-Za-z]\.)?([ \w]*\#\d+)?(\r\n| )[ \w]{3,}/.test(v)}],['validate-phoneStrict','Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.',function(v){return Validation.get('IsEmpty').test(v)||/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/.test(v);}],['validate-phoneLax','Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.',function(v){return Validation.get('IsEmpty').test(v)||/^((\d[-. ]?)?((\(\d{3}\))|\d{3}))?[-. ]?\d{3}[-. ]?\d{4}$/.test(v);}],['validate-fax','Please enter a valid fax number. For example (123) 456-7890 or 123-456-7890.',function(v){return Validation.get('IsEmpty').test(v)||/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/.test(v);}],['validate-date','Please enter a valid date.',function(v){var test=new Date(v);return Validation.get('IsEmpty').test(v)||!isNaN(test);}],['validate-email','Please enter a valid email address. For example johndoe@domain.com.',function(v){return Validation.get('IsEmpty').test(v)||/^[a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]+(\.[a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})/i.test(v)}],['validate-emailSender','Please use only visible characters and spaces.',function(v){return Validation.get('IsEmpty').test(v)||/^[\S ]+$/.test(v)}],['validate-password','Please enter 6 or more characters. Leading or trailing spaces will be ignored.',function(v){var pass=v.strip();return!(pass.length>0&&pass.length<6);}],['validate-admin-password','Please enter 7 or more characters. Password should contain both numeric and alphabetic characters.',function(v){var pass=v.strip();if(0==pass.length){return true;}
|
825 |
+
if(!(/[a-z]/i.test(v))||!(/[0-9]/.test(v))){return false;}
|
826 |
+
return!(pass.length<7);}],['validate-cpassword','Please make sure your passwords match.',function(v){var conf=$('confirmation')?$('confirmation'):$$('.validate-cpassword')[0];var pass=false;if($('password')){pass=$('password');}
|
827 |
+
var passwordElements=$$('.validate-password');for(var i=0;i<passwordElements.size();i++){var passwordElement=passwordElements[i];if(passwordElement.up('form').id==conf.up('form').id){pass=passwordElement;}}
|
828 |
+
if($$('.validate-admin-password').size()){pass=$$('.validate-admin-password')[0];}
|
829 |
+
return(pass.value==conf.value);}],['validate-url','Please enter a valid URL. http:// is required',function(v){return Validation.get('IsEmpty').test(v)||/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(v)}],['validate-clean-url','Please enter a valid URL. For example http://www.example.com or www.example.com',function(v){return Validation.get('IsEmpty').test(v)||/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i.test(v)||/^(www)((\.[A-Z0-9][A-Z0-9_-]*)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i.test(v)}],['validate-identifier','Please enter a valid URL Key. For example "example-page", "example-page.html" or "anotherlevel/example-page"',function(v){return Validation.get('IsEmpty').test(v)||/^[A-Z0-9][A-Z0-9_\/-]+(\.[A-Z0-9_-]+)*$/i.test(v)}],['validate-xml-identifier','Please enter a valid XML-identifier. For example something_1, block5, id-4',function(v){return Validation.get('IsEmpty').test(v)||/^[A-Z][A-Z0-9_\/-]*$/i.test(v)}],['validate-ssn','Please enter a valid social security number. For example 123-45-6789.',function(v){return Validation.get('IsEmpty').test(v)||/^\d{3}-?\d{2}-?\d{4}$/.test(v);}],['validate-zip','Please enter a valid zip code. For example 90602 or 90602-1234.',function(v){return Validation.get('IsEmpty').test(v)||/(^\d{5}$)|(^\d{5}-\d{4}$)/.test(v);}],['validate-zip-international','Please enter a valid zip code.',function(v){return true;}],['validate-date-au','Please use this date format: dd/mm/yyyy. For example 17/03/2006 for the 17th of March, 2006.',function(v){if(Validation.get('IsEmpty').test(v))return true;var regex=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!regex.test(v))return false;var d=new Date(v.replace(regex,'$2/$1/$3'));return(parseInt(RegExp.$2,10)==(1+d.getMonth()))&&(parseInt(RegExp.$1,10)==d.getDate())&&(parseInt(RegExp.$3,10)==d.getFullYear());}],['validate-currency-dollar','Please enter a valid $ amount. For example $100.00.',function(v){return Validation.get('IsEmpty').test(v)||/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(v)}],['validate-one-required','Please select one of the above options.',function(v,elm){var p=elm.parentNode;var options=p.getElementsByTagName('INPUT');return $A(options).any(function(elm){return $F(elm);});}],['validate-one-required-by-name','Please select one of the options.',function(v,elm){var inputs=$$('input[name="'+elm.name.replace(/([\\"])/g,'\\$1')+'"]');var error=1;for(var i=0;i<inputs.length;i++){if((inputs[i].type=='checkbox'||inputs[i].type=='radio')&&inputs[i].checked==true){error=0;}
|
830 |
+
if(Validation.isOnChange&&(inputs[i].type=='checkbox'||inputs[i].type=='radio')){Validation.reset(inputs[i]);}}
|
831 |
+
if(error==0){return true;}else{return false;}}],['validate-not-negative-number','Please enter a valid number in this field.',function(v){v=parseNumber(v);return(!isNaN(v)&&v>=0);}],['validate-state','Please select State/Province.',function(v){return(v!=0||v=='');}],['validate-new-password','Please enter 6 or more characters. Leading or trailing spaces will be ignored.',function(v){if(!Validation.get('validate-password').test(v))return false;if(Validation.get('IsEmpty').test(v)&&v!='')return false;return true;}],['validate-greater-than-zero','Please enter a number greater than 0 in this field.',function(v){if(v.length)
|
832 |
+
return parseFloat(v)>0;else
|
833 |
+
return true;}],['validate-zero-or-greater','Please enter a number 0 or greater in this field.',function(v){if(v.length)
|
834 |
+
return parseFloat(v)>=0;else
|
835 |
+
return true;}],['validate-cc-number','Please enter a valid credit card number.',function(v,elm){var ccTypeContainer=$(elm.id.substr(0,elm.id.indexOf('_cc_number'))+'_cc_type');if(ccTypeContainer&&typeof Validation.creditCartTypes.get(ccTypeContainer.value)!='undefined'&&Validation.creditCartTypes.get(ccTypeContainer.value)[2]==false){if(!Validation.get('IsEmpty').test(v)&&Validation.get('validate-digits').test(v)){return true;}else{return false;}}
|
836 |
+
return validateCreditCard(v);}],['validate-cc-type','Credit card number doesn\'t match credit card type',function(v,elm){elm.value=removeDelimiters(elm.value);v=removeDelimiters(v);var ccTypeContainer=$(elm.id.substr(0,elm.id.indexOf('_cc_number'))+'_cc_type');if(!ccTypeContainer){return true;}
|
837 |
+
var ccType=ccTypeContainer.value;if(typeof Validation.creditCartTypes.get(ccType)=='undefined'){return false;}
|
838 |
+
if(Validation.creditCartTypes.get(ccType)[0]==false){return true;}
|
839 |
+
var ccMatchedType='';Validation.creditCartTypes.each(function(pair){if(pair.value[0]&&v.match(pair.value[0])){ccMatchedType=pair.key;throw $break;}});if(ccMatchedType!=ccType){return false;}
|
840 |
+
if(ccTypeContainer.hasClassName('validation-failed')&&Validation.isOnChange){Validation.validate(ccTypeContainer);}
|
841 |
+
return true;}],['validate-cc-type-select','Card type doesn\'t match credit card number',function(v,elm){var ccNumberContainer=$(elm.id.substr(0,elm.id.indexOf('_cc_type'))+'_cc_number');if(Validation.isOnChange&&Validation.get('IsEmpty').test(ccNumberContainer.value)){return true;}
|
842 |
+
if(Validation.get('validate-cc-type').test(ccNumberContainer.value,ccNumberContainer)){Validation.validate(ccNumberContainer);}
|
843 |
+
return Validation.get('validate-cc-type').test(ccNumberContainer.value,ccNumberContainer);}],['validate-cc-exp','Incorrect credit card expiration date',function(v,elm){var ccExpMonth=v;var ccExpYear=$(elm.id.substr(0,elm.id.indexOf('_expiration'))+'_expiration_yr').value;var currentTime=new Date();var currentMonth=currentTime.getMonth()+1;var currentYear=currentTime.getFullYear();if(ccExpMonth<currentMonth&&ccExpYear==currentYear){return false;}
|
844 |
+
return true;}],['validate-cc-cvn','Please enter a valid credit card verification number.',function(v,elm){var ccTypeContainer=$(elm.id.substr(0,elm.id.indexOf('_cc_cid'))+'_cc_type');if(!ccTypeContainer){return true;}
|
845 |
+
var ccType=ccTypeContainer.value;if(typeof Validation.creditCartTypes.get(ccType)=='undefined'){return false;}
|
846 |
+
var re=Validation.creditCartTypes.get(ccType)[1];if(v.match(re)){return true;}
|
847 |
+
return false;}],['validate-ajax','',function(v,elm){return true;}],['validate-data','Please use only letters (a-z or A-Z), numbers (0-9) or underscore(_) in this field, first character should be a letter.',function(v){if(v!=''&&v){return /^[A-Za-z]+[A-Za-z0-9_]+$/.test(v);}
|
848 |
+
return true;}],['validate-css-length','Please input a valid CSS-length. For example 100px or 77pt or 20em or .5ex or 50%',function(v){if(v!=''&&v){return /^[0-9\.]+(px|pt|em|ex|%)?$/.test(v)&&(!(/\..*\./.test(v)))&&!(/\.$/.test(v));}
|
849 |
+
return true;}],['validate-length','Maximum length exceeded.',function(v,elm){var re=new RegExp(/^maximum-length-[0-9]+$/);var result=true;$w(elm.className).each(function(name,index){if(name.match(re)&&result){var length=name.split('-')[2];result=(v.length<=length);}});return result;}],['validate-percents','Please enter a number lower than 100',{max:100}]]);function validateCreditCard(s){var v="0123456789";var w="";for(i=0;i<s.length;i++){x=s.charAt(i);if(v.indexOf(x,0)!=-1)
|
850 |
+
w+=x;}
|
851 |
+
j=w.length/2;k=Math.floor(j);m=Math.ceil(j)-k;c=0;for(i=0;i<k;i++){a=w.charAt(i*2+m)*2;c+=a>9?Math.floor(a/10+a%10):a;}
|
852 |
+
for(i=0;i<k+m;i++)c+=w.charAt(i*2+1-m)*1;return(c%10==0);}
|
853 |
+
function removeDelimiters(v){v=v.replace(/\s/g,'');v=v.replace(/\-/g,'');return v;}
|
854 |
+
function parseNumber(v)
|
855 |
+
{if(typeof v!='string'){return parseFloat(v);}
|
856 |
+
var isDot=v.indexOf('.');var isComa=v.indexOf(',');if(isDot!=-1&&isComa!=-1){if(isComa>isDot){v=v.replace('.','').replace(',','.');}
|
857 |
+
else{v=v.replace(',','');}}
|
858 |
+
else if(isComa!=-1){v=v.replace(',','.');}
|
859 |
+
return parseFloat(v);}
|
860 |
+
Validation.creditCartTypes=$H({'VI':[new RegExp('^4[0-9]{12}([0-9]{3})?$'),new RegExp('^[0-9]{3}$'),true],'MC':[new RegExp('^5[1-5][0-9]{14}$'),new RegExp('^[0-9]{3}$'),true],'AE':[new RegExp('^3[47][0-9]{13}$'),new RegExp('^[0-9]{4}$'),true],'DI':[new RegExp('^6011[0-9]{12}$'),new RegExp('^[0-9]{3}$'),true],'SS':[new RegExp('^((6759[0-9]{12})|(49[013][1356][0-9]{13})|(633[34][0-9]{12})|(633110[0-9]{10})|(564182[0-9]{10}))([0-9]{2,3})?$'),new RegExp('^([0-9]{3}|[0-9]{4})?$'),true],'OT':[false,new RegExp('^([0-9]{3}|[0-9]{4})?$'),false]});;function popWin(url,win,para){var win=window.open(url,win,para);win.focus();}
|
861 |
+
function setLocation(url){window.location.href=url;}
|
862 |
+
function setPLocation(url,setFocus){if(setFocus){window.opener.focus();}
|
863 |
+
window.opener.location.href=url;}
|
864 |
+
function setLanguageCode(code,fromCode){var href=window.location.href;var after='',dash;if(dash=href.match(/\#(.*)$/)){href=href.replace(/\#(.*)$/,'');after=dash[0];}
|
865 |
+
if(href.match(/[?]/)){var re=/([?&]store=)[a-z0-9_]*/;if(href.match(re)){href=href.replace(re,'$1'+code);}else{href+='&store='+code;}
|
866 |
+
var re=/([?&]from_store=)[a-z0-9_]*/;if(href.match(re)){href=href.replace(re,'');}}else{href+='?store='+code;}
|
867 |
+
if(typeof(fromCode)!='undefined'){href+='&from_store='+fromCode;}
|
868 |
+
href+=after;setLocation(href);}
|
869 |
+
function decorateGeneric(elements,decorateParams)
|
870 |
+
{var allSupportedParams=['odd','even','first','last'];var _decorateParams={};var total=elements.length;if(total){if(typeof(decorateParams)=='undefined'){decorateParams=allSupportedParams;}
|
871 |
+
if(!decorateParams.length){return;}
|
872 |
+
for(var k in allSupportedParams){_decorateParams[allSupportedParams[k]]=false;}
|
873 |
+
for(var k in decorateParams){_decorateParams[decorateParams[k]]=true;}
|
874 |
+
if(_decorateParams.first){Element.addClassName(elements[0],'first');}
|
875 |
+
if(_decorateParams.last){Element.addClassName(elements[total-1],'last');}
|
876 |
+
for(var i=0;i<total;i++){if((i+1)%2==0){if(_decorateParams.even){Element.addClassName(elements[i],'even');}}
|
877 |
+
else{if(_decorateParams.odd){Element.addClassName(elements[i],'odd');}}}}}
|
878 |
+
function decorateTable(table,options){var table=$(table);if(table){var _options={'tbody':false,'tbody tr':['odd','even','first','last'],'thead tr':['first','last'],'tfoot tr':['first','last'],'tr td':['last']};if(typeof(options)!='undefined'){for(var k in options){_options[k]=options[k];}}
|
879 |
+
if(_options['tbody']){decorateGeneric(table.select('tbody'),_options['tbody']);}
|
880 |
+
if(_options['tbody tr']){decorateGeneric(table.select('tbody tr'),_options['tbody tr']);}
|
881 |
+
if(_options['thead tr']){decorateGeneric(table.select('thead tr'),_options['thead tr']);}
|
882 |
+
if(_options['tfoot tr']){decorateGeneric(table.select('tfoot tr'),_options['tfoot tr']);}
|
883 |
+
if(_options['tr td']){var allRows=table.select('tr');if(allRows.length){for(var i=0;i<allRows.length;i++){decorateGeneric(allRows[i].getElementsByTagName('TD'),_options['tr td']);}}}}}
|
884 |
+
function decorateList(list,nonRecursive){if($(list)){if(typeof(nonRecursive)=='undefined'){var items=$(list).select('li')}
|
885 |
+
else{var items=$(list).childElements();}
|
886 |
+
decorateGeneric(items,['odd','even','last']);}}
|
887 |
+
function decorateDataList(list){list=$(list);if(list){decorateGeneric(list.select('dt'),['odd','even','last']);decorateGeneric(list.select('dd'),['odd','even','last']);}}
|
888 |
+
function parseSidUrl(baseUrl,urlExt){sidPos=baseUrl.indexOf('/?SID=');sid='';urlExt=(urlExt!=undefined)?urlExt:'';if(sidPos>-1){sid='?'+baseUrl.substring(sidPos+2);baseUrl=baseUrl.substring(0,sidPos+1);}
|
889 |
+
return baseUrl+urlExt+sid;}
|
890 |
+
function formatCurrency(price,format,showPlus){precision=isNaN(format.precision=Math.abs(format.precision))?2:format.precision;requiredPrecision=isNaN(format.requiredPrecision=Math.abs(format.requiredPrecision))?2:format.requiredPrecision;precision=requiredPrecision;integerRequired=isNaN(format.integerRequired=Math.abs(format.integerRequired))?1:format.integerRequired;decimalSymbol=format.decimalSymbol==undefined?",":format.decimalSymbol;groupSymbol=format.groupSymbol==undefined?".":format.groupSymbol;groupLength=format.groupLength==undefined?3:format.groupLength;if(showPlus==undefined||showPlus==true){s=price<0?"-":(showPlus?"+":"");}else if(showPlus==false){s='';}
|
891 |
+
i=parseInt(price=Math.abs(+price||0).toFixed(precision))+"";pad=(i.length<integerRequired)?(integerRequired-i.length):0;while(pad){i='0'+i;pad--;}
|
892 |
+
j=(j=i.length)>groupLength?j%groupLength:0;re=new RegExp("(\\d{"+groupLength+"})(?=\\d)","g");r=(j?i.substr(0,j)+groupSymbol:"")+i.substr(j).replace(re,"$1"+groupSymbol)+(precision?decimalSymbol+Math.abs(price-i).toFixed(precision).replace(/-/,0).slice(2):"")
|
893 |
+
if(format.pattern.indexOf('{sign}')==-1){pattern=s+format.pattern;}else{pattern=format.pattern.replace('{sign}',s);}
|
894 |
+
return pattern.replace('%s',r).replace(/^\s\s*/,'').replace(/\s\s*$/,'');};function expandDetails(el,childClass){if(Element.hasClassName(el,'show-details')){$$(childClass).each(function(item){item.hide()});Element.removeClassName(el,'show-details');}
|
895 |
+
else{$$(childClass).each(function(item){item.show()});Element.addClassName(el,'show-details');}}
|
896 |
+
var isIE=navigator.appVersion.match(/MSIE/)=="MSIE";if(!window.Varien)
|
897 |
+
var Varien=new Object();Varien.showLoading=function(){Element.show('loading-process');}
|
898 |
+
Varien.hideLoading=function(){Element.hide('loading-process');}
|
899 |
+
Varien.GlobalHandlers={onCreate:function(){Varien.showLoading();},onComplete:function(){if(Ajax.activeRequestCount==0){Varien.hideLoading();}}};Ajax.Responders.register(Varien.GlobalHandlers);Varien.searchForm=Class.create();Varien.searchForm.prototype={initialize:function(form,field,emptyText){this.form=$(form);this.field=$(field);this.emptyText=emptyText;Event.observe(this.form,'submit',this.submit.bind(this));Event.observe(this.field,'focus',this.focus.bind(this));Event.observe(this.field,'blur',this.blur.bind(this));this.blur();},submit:function(event){if(this.field.value==this.emptyText||this.field.value==''){Event.stop(event);return false;}
|
900 |
+
return true;},focus:function(event){if(this.field.value==this.emptyText){this.field.value='';}},blur:function(event){if(this.field.value==''){this.field.value=this.emptyText;}},initAutocomplete:function(url,destinationElement){new Ajax.Autocompleter(this.field,destinationElement,url,{paramName:this.field.name,method:'get',minChars:2,updateElement:this._selectAutocompleteItem.bind(this),onShow:function(element,update){if(!update.style.position||update.style.position=='absolute'){update.style.position='absolute';Position.clone(element,update,{setHeight:false,offsetTop:element.offsetHeight});}
|
901 |
+
Effect.Appear(update,{duration:0});}});},_selectAutocompleteItem:function(element){if(element.title){this.field.value=element.title;}
|
902 |
+
this.form.submit();}}
|
903 |
+
Varien.Tabs=Class.create();Varien.Tabs.prototype={initialize:function(selector){var self=this;$$(selector+' a').each(this.initTab.bind(this));},initTab:function(el){el.href='javascript:void(0)';if($(el.parentNode).hasClassName('active')){this.showContent(el);}
|
904 |
+
el.observe('click',this.showContent.bind(this,el));},showContent:function(a){var li=$(a.parentNode),ul=$(li.parentNode);ul.getElementsBySelector('li','ol').each(function(el){var contents=$(el.id+'_contents');if(el==li){el.addClassName('active');contents.show();}else{el.removeClassName('active');contents.hide();}});}}
|
905 |
+
Varien.DOB=Class.create();Varien.DOB.prototype={initialize:function(selector,required,format){var el=$$(selector)[0];this.day=Element.select($(el),'.dob-day input')[0];this.month=Element.select($(el),'.dob-month input')[0];this.year=Element.select($(el),'.dob-year input')[0];this.dob=Element.select($(el),'.dob-full input')[0];this.advice=Element.select($(el),'.validation-advice')[0];this.required=required;this.format=format;this.day.validate=this.validate.bind(this);this.month.validate=this.validate.bind(this);this.year.validate=this.validate.bind(this);this.advice.hide();},validate:function(){var error=false;if(this.day.value==''&&this.month.value==''&&this.year.value==''){if(this.required){error='This date is a required value.';}else{this.dob.value='';}}else if(this.day.value==''||this.month.value==''||this.year.value==''){error='Please enter a valid full date.';}else{var date=new Date();if(this.day.value<1||this.day.value>31){error='Please enter a valid day (1-31).';}else if(this.month.value<1||this.month.value>12){error='Please enter a valid month (1-12).';}else if(this.year.value<1900||this.year.value>date.getFullYear()){error='Please enter a valid year (1900-'+date.getFullYear()+').';}else{this.dob.value=this.format.replace(/(%m|%b)/i,this.month.value).replace(/(%d|%e)/i,this.day.value).replace(/%y/i,this.year.value);var testDOB=this.month.value+'/'+this.day.value+'/'+this.year.value;var test=new Date(testDOB);if(isNaN(test)){error='Please enter a valid date.';}}}
|
906 |
+
if(error!==false){try{this.advice.innerHTML=Translator.translate(error);}
|
907 |
+
catch(e){this.advice.innerHTML=error;}
|
908 |
+
this.advice.show();return false;}
|
909 |
+
this.advice.hide();return true;}}
|
910 |
+
Validation.addAllThese([['validate-custom',' ',function(v,elm){return elm.validate();}]]);function truncateOptions(){$$('.truncated').each(function(element){Event.observe(element,'mouseover',function(){if(element.down('div.truncated_full_value')){element.down('div.truncated_full_value').addClassName('show')}});Event.observe(element,'mouseout',function(){if(element.down('div.truncated_full_value')){element.down('div.truncated_full_value').removeClassName('show')}});});}
|
911 |
+
Event.observe(window,'load',function(){truncateOptions();});Element.addMethods({getInnerText:function(element)
|
912 |
+
{element=$(element);if(element.innerText&&!Prototype.Browser.Opera){return element.innerText}
|
913 |
+
return element.innerHTML.stripScripts().unescapeHTML().replace(/[\n\r\s]+/g,' ');}});if(!("console"in window)||!("firebug"in console))
|
914 |
+
{var names=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];window.console={};for(var i=0;i<names.length;++i)
|
915 |
+
window.console[names[i]]=function(){}};var Translate=Class.create();Translate.prototype={initialize:function(data){this.data=$H(data);},translate:function(){var args=arguments;var text=arguments[0];if(this.data.get(text)){return this.data.get(text);}
|
916 |
+
return text;},add:function(){if(arguments.length>1){this.data.set(arguments[0],arguments[1]);}else if(typeof arguments[0]=='object'){$H(arguments[0]).each(function(pair){this.data.set(pair.key,pair.value);}.bind(this));}}};function encode_base64(what)
|
917 |
+
{var base64_encodetable="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var result="";var len=what.length;var x,y;var ptr=0;while(len-->0)
|
918 |
+
{x=what.charCodeAt(ptr++);result+=base64_encodetable.charAt((x>>2)&63);if(len--<=0)
|
919 |
+
{result+=base64_encodetable.charAt((x<<4)&63);result+="==";break;}
|
920 |
+
y=what.charCodeAt(ptr++);result+=base64_encodetable.charAt(((x<<4)|((y>>4)&15))&63);if(len--<=0)
|
921 |
+
{result+=base64_encodetable.charAt((y<<2)&63);result+="=";break;}
|
922 |
+
x=what.charCodeAt(ptr++);result+=base64_encodetable.charAt(((y<<2)|((x>>6)&3))&63);result+=base64_encodetable.charAt(x&63);}
|
923 |
+
return result;}
|
924 |
+
function decode_base64(what)
|
925 |
+
{var base64_decodetable=new Array(255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,62,255,255,255,63,52,53,54,55,56,57,58,59,60,61,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255,255,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,255,255,255,255,255);var result="";var len=what.length;var x,y;var ptr=0;while(!isNaN(x=what.charCodeAt(ptr++)))
|
926 |
+
{if(x==13||x==10)
|
927 |
+
continue;if((x>127)||((x=base64_decodetable[x])==255))
|
928 |
+
return false;if((isNaN(y=what.charCodeAt(ptr++)))||((y=base64_decodetable[y])==255))
|
929 |
+
return false;result+=String.fromCharCode((x<<2)|(y>>4));if((x=what.charCodeAt(ptr++))==61)
|
930 |
+
{if((what.charCodeAt(ptr++)!=61)||(!isNaN(what.charCodeAt(ptr))))
|
931 |
+
return false;}
|
932 |
+
else
|
933 |
+
{if((x>127)||((x=base64_decodetable[x])==255))
|
934 |
+
return false;result+=String.fromCharCode((y<<4)|(x>>2));if((y=what.charCodeAt(ptr++))==61)
|
935 |
+
{if(!isNaN(what.charCodeAt(ptr)))
|
936 |
+
return false;}
|
937 |
+
else
|
938 |
+
{if((y>127)||((y=base64_decodetable[y])==255))
|
939 |
+
return false;result+=String.fromCharCode((x<<6)|y);}}}
|
940 |
+
return result;}
|
941 |
+
function wrap76(what)
|
942 |
+
{var result="";var i;for(i=0;i<what.length;i+=76)
|
943 |
+
{result+=what.substring(i,i+76)+String.fromCharCode(13)+String.fromCharCode(10);}
|
944 |
+
return result;};varienEvents=Class.create();varienEvents.prototype={initialize:function(){this.arrEvents={};this.eventPrefix='';},attachEventHandler:function(eventName,handler){if((typeof handler=='undefined')||(handler==null)){return;}
|
945 |
+
eventName=eventName+this.eventPrefix;if(this.arrEvents[eventName]==null){this.arrEvents[eventName]=[];}
|
946 |
+
var asynchVar=arguments.length>2?arguments[2]:false;var handlerObj={method:handler,asynch:asynchVar};this.arrEvents[eventName].push(handlerObj);},removeEventHandler:function(eventName,handler){eventName=eventName+this.eventPrefix;if(this.arrEvents[eventName]!=null){this.arrEvents[eventName]=this.arrEvents[eventName].reject(function(obj){return obj.method==handler;});}},clearEventHandlers:function(eventName){eventName=eventName+this.eventPrefix;this.arrEvents[eventName]=null;},clearAllEventHandlers:function(){this.arrEvents={};},fireEvent:function(eventName){var evtName=eventName+this.eventPrefix;var results=[];var result;if(this.arrEvents[evtName]!=null){var len=this.arrEvents[evtName].length;for(var i=0;i<len;i++){try{if(arguments.length>1){if(this.arrEvents[evtName][i].asynch){var eventArgs=arguments[1];var method=this.arrEvents[evtName][i].method.bind(this);setTimeout(function(){method(eventArgs)}.bind(this),10);}
|
947 |
+
else{result=this.arrEvents[evtName][i].method(arguments[1]);}}
|
948 |
+
else{if(this.arrEvents[evtName][i].asynch){var eventHandler=this.arrEvents[evtName][i].method;setTimeout(eventHandler,1);}
|
949 |
+
else if(this.arrEvents&&this.arrEvents[evtName]&&this.arrEvents[evtName][i]&&this.arrEvents[evtName][i].method){result=this.arrEvents[evtName][i].method();}}
|
950 |
+
results.push(result);}
|
951 |
+
catch(e){if(this.id){alert("error: error in "+this.id+".fireEvent():\n\nevent name: "+eventName+"\n\nerror message: "+e.message);}
|
952 |
+
else{alert("error: error in [unknown object].fireEvent():\n\nevent name: "+eventName+"\n\nerror message: "+e.message);}}}}
|
953 |
+
return results;}};varienGlobalEvents=new varienEvents();;var SessionError=Class.create();SessionError.prototype={initialize:function(errorText){this.errorText=errorText;},toString:function()
|
954 |
+
{return'Session Error:'+this.errorText;}};Ajax.Request.addMethods({initialize:function($super,url,options){$super(options);this.transport=Ajax.getTransport();if(!url.match(new RegExp('[?&]isAjax=true',''))){url=url.match(new RegExp('\\?',"g"))?url+'&isAjax=true':url+'?isAjax=true';}
|
955 |
+
if(!this.options.parameters){this.options.parameters={form_key:FORM_KEY};}
|
956 |
+
if(!this.options.parameters.form_key){this.options.parameters.form_key=FORM_KEY;}
|
957 |
+
this.request(url);},respondToReadyState:function(readyState){var state=Ajax.Request.Events[readyState],response=new Ajax.Response(this);if(state=='Complete'){try{this._complete=true;if(response.responseText.isJSON()){var jsonObject=response.responseText.evalJSON();if(jsonObject.ajaxExpired&&jsonObject.ajaxRedirect){window.location.replace(jsonObject.ajaxRedirect);throw new SessionError('session expired');}}
|
958 |
+
(this.options['on'+response.status]||this.options['on'+(this.success()?'Success':'Failure')]||Prototype.emptyFunction)(response,response.headerJSON);}catch(e){this.dispatchException(e);if(e instanceof SessionError){return;}}
|
959 |
+
var contentType=response.getHeader('Content-type');if(this.options.evalJS=='force'||(this.options.evalJS&&this.isSameOrigin()&&contentType&&contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse();}}
|
960 |
+
try{(this.options['on'+state]||Prototype.emptyFunction)(response,response.headerJSON);Ajax.Responders.dispatch('on'+state,this,response,response.headerJSON);}catch(e){this.dispatchException(e);}
|
961 |
+
if(state=='Complete'){this.transport.onreadystatechange=Prototype.emptyFunction;}}});Ajax.Updater.respondToReadyState=Ajax.Request.respondToReadyState;var varienLoader=new Class.create();varienLoader.prototype={initialize:function(caching){this.callback=false;this.cache=$H();this.caching=caching||false;this.url=false;},getCache:function(url){if(this.cache.get(url)){return this.cache.get(url)}
|
962 |
+
return false;},load:function(url,params,callback){this.url=url;this.callback=callback;if(this.caching){var transport=this.getCache(url);if(transport){this.processResult(transport);return;}}
|
963 |
+
if(typeof(params.updaterId)!='undefined'){new varienUpdater(params.updaterId,url,{evalScripts:true,onComplete:this.processResult.bind(this),onFailure:this._processFailure.bind(this)});}
|
964 |
+
else{new Ajax.Request(url,{method:'post',parameters:params||{},onComplete:this.processResult.bind(this),onFailure:this._processFailure.bind(this)});}},_processFailure:function(transport){location.href=BASE_URL;},processResult:function(transport){if(this.caching){this.cache.set(this.url,transport);}
|
965 |
+
if(this.callback){this.callback(transport.responseText);}}}
|
966 |
+
if(!window.varienLoaderHandler)
|
967 |
+
var varienLoaderHandler=new Object();varienLoaderHandler.handler={onCreate:function(request){if(request.options.loaderArea===false){return;}
|
968 |
+
request.options.loaderArea=$$('#html-body .wrapper')[0];if(request&&request.options.loaderArea){Element.clonePosition($('loading-mask'),$(request.options.loaderArea),{offsetLeft:-2})
|
969 |
+
toggleSelectsUnderBlock($('loading-mask'),false);Element.show('loading-mask');setLoaderPosition();if(request.options.loaderArea=='html-body'){}}
|
970 |
+
else{}},onComplete:function(transport){if(Ajax.activeRequestCount==0){toggleSelectsUnderBlock($('loading-mask'),true);Element.hide('loading-mask');}}};function setLoaderPosition(){var elem=$('loading_mask_loader');if(elem&&Prototype.Browser.IE){var middle=parseInt(document.body.clientHeight/2)+document.body.scrollTop;elem.style.position='absolute';elem.style.top=middle;}}
|
971 |
+
function toggleSelectsUnderBlock(block,flag){if(Prototype.Browser.IE){var selects=document.getElementsByTagName("select");for(var i=0;i<selects.length;i++){if(flag){if(selects[i].needShowOnSuccess){selects[i].needShowOnSuccess=false;selects[i].style.visibility='';}}
|
972 |
+
else{if(Element.visible(selects[i])){selects[i].style.visibility='hidden';selects[i].needShowOnSuccess=true;}}}}}
|
973 |
+
Ajax.Responders.register(varienLoaderHandler.handler);var varienUpdater=Class.create(Ajax.Updater,{updateContent:function($super,responseText){if(responseText.isJSON()){var responseJSON=responseText.evalJSON();if(responseJSON.ajaxExpired&&responseJSON.ajaxRedirect){window.location.replace(responseJSON.ajaxRedirect);}}else{$super(responseText);}}});;var varienGrid=new Class.create();varienGrid.prototype={initialize:function(containerId,url,pageVar,sortVar,dirVar,filterVar){this.containerId=containerId;this.url=url;this.pageVar=pageVar||false;this.sortVar=sortVar||false;this.dirVar=dirVar||false;this.filterVar=filterVar||false;this.tableSufix='_table';this.useAjax=false;this.rowClickCallback=false;this.checkboxCheckCallback=false;this.preInitCallback=false;this.initCallback=false;this.initRowCallback=false;this.doFilterCallback=false;this.reloadParams=false;this.trOnMouseOver=this.rowMouseOver.bindAsEventListener(this);this.trOnMouseOut=this.rowMouseOut.bindAsEventListener(this);this.trOnClick=this.rowMouseClick.bindAsEventListener(this);this.trOnDblClick=this.rowMouseDblClick.bindAsEventListener(this);this.trOnKeyPress=this.keyPress.bindAsEventListener(this);this.thLinkOnClick=this.doSort.bindAsEventListener(this);this.initGrid();},initGrid:function(){if(this.preInitCallback){this.preInitCallback(this);}
|
974 |
+
if($(this.containerId+this.tableSufix)){this.rows=$$('#'+this.containerId+this.tableSufix+' tbody tr');for(var row=0;row<this.rows.length;row++){if(row%2==0){Element.addClassName(this.rows[row],'even');}
|
975 |
+
Event.observe(this.rows[row],'mouseover',this.trOnMouseOver);Event.observe(this.rows[row],'mouseout',this.trOnMouseOut);Event.observe(this.rows[row],'click',this.trOnClick);Event.observe(this.rows[row],'dblclick',this.trOnDblClick);}}
|
976 |
+
if(this.sortVar&&this.dirVar){var columns=$$('#'+this.containerId+this.tableSufix+' thead a');for(var col=0;col<columns.length;col++){Event.observe(columns[col],'click',this.thLinkOnClick);}}
|
977 |
+
this.bindFilterFields();this.bindFieldsChange();if(this.initCallback){try{this.initCallback(this);}
|
978 |
+
catch(e){if(console){console.log(e);}}}},initGridAjax:function(){this.initGrid();this.initGridRows();},initGridRows:function(){if(this.initRowCallback){for(var row=0;row<this.rows.length;row++){try{this.initRowCallback(this,this.rows[row]);}catch(e){if(console){console.log(e);}}}}},getContainerId:function(){return this.containerId;},rowMouseOver:function(event){var element=Event.findElement(event,'tr');if(!element.title)return;Element.addClassName(element,'on-mouse');if(!Element.hasClassName('pointer')&&(this.rowClickCallback!==openGridRow||element.title)){if(element.title){Element.addClassName(element,'pointer');}}},rowMouseOut:function(event){var element=Event.findElement(event,'tr');Element.removeClassName(element,'on-mouse');},rowMouseClick:function(event){if(this.rowClickCallback){try{this.rowClickCallback(this,event);}
|
979 |
+
catch(e){}}
|
980 |
+
varienGlobalEvents.fireEvent('gridRowClick',event);},rowMouseDblClick:function(event){varienGlobalEvents.fireEvent('gridRowDblClick',event);},keyPress:function(event){},doSort:function(event){var element=Event.findElement(event,'a');if(element.name&&element.title){this.addVarToUrl(this.sortVar,element.name);this.addVarToUrl(this.dirVar,element.title);this.reload(this.url);}
|
981 |
+
Event.stop(event);return false;},loadByElement:function(element){if(element&&element.name){this.reload(this.addVarToUrl(element.name,element.value));}},reload:function(url){if(!this.reloadParams){this.reloadParams={form_key:FORM_KEY};}
|
982 |
+
else{this.reloadParams.form_key=FORM_KEY;}
|
983 |
+
url=url||this.url;if(this.useAjax){new Ajax.Request(url+(url.match(new RegExp('\\?'))?'&ajax=true':'?ajax=true'),{loaderArea:this.containerId,parameters:this.reloadParams||{},evalScripts:true,onFailure:this._processFailure.bind(this),onComplete:this.initGridAjax.bind(this),onSuccess:function(transport){try{if(transport.responseText.isJSON()){var response=transport.responseText.evalJSON()
|
984 |
+
if(response.error){alert(response.message);}
|
985 |
+
if(response.ajaxExpired&&response.ajaxRedirect){setLocation(response.ajaxRedirect);}}else{$(this.containerId).update(transport.responseText);}}
|
986 |
+
catch(e){$(this.containerId).update(transport.responseText);}}.bind(this)});return;}
|
987 |
+
else{if(this.reloadParams){$H(this.reloadParams).each(function(pair){url=this.addVarToUrl(pair.key,pair.value);}.bind(this));}
|
988 |
+
location.href=url;}},_processFailure:function(transport){location.href=BASE_URL;},addVarToUrl:function(varName,varValue){var re=new RegExp('\/('+varName+'\/.*?\/)');var parts=this.url.split(new RegExp('\\?'));this.url=parts[0].replace(re,'/');this.url+=varName+'/'+varValue+'/';if(parts.size()>1){this.url+='?'+parts[1];}
|
989 |
+
return this.url;},doExport:function(){if($(this.containerId+'_export')){location.href=$(this.containerId+'_export').value;}},bindFilterFields:function(){var filters=$$('#'+this.containerId+' .filter input','#'+this.containerId+' .filter select');for(var i=0;i<filters.length;i++){Event.observe(filters[i],'keypress',this.filterKeyPress.bind(this));}},bindFieldsChange:function(){if(!$(this.containerId)){return;}
|
990 |
+
var dataElements=$(this.containerId+this.tableSufix).down('tbody').select('input','select');for(var i=0;i<dataElements.length;i++){Event.observe(dataElements[i],'change',dataElements[i].setHasChanges.bind(dataElements[i]));}},filterKeyPress:function(event){if(event.keyCode==Event.KEY_RETURN){this.doFilter();}},doFilter:function(){var filters=$$('#'+this.containerId+' .filter input','#'+this.containerId+' .filter select');var elements=[];for(var i in filters){if(filters[i].value&&filters[i].value.length)elements.push(filters[i]);}
|
991 |
+
if(!this.doFilterCallback||(this.doFilterCallback&&this.doFilterCallback())){this.reload(this.addVarToUrl(this.filterVar,encode_base64(Form.serializeElements(elements))));}},resetFilter:function(){this.reload(this.addVarToUrl(this.filterVar,''));},checkCheckboxes:function(element){elements=Element.select($(this.containerId),'input[name="'+element.name+'"]');for(var i=0;i<elements.length;i++){this.setCheckboxChecked(elements[i],element.checked);}},setCheckboxChecked:function(element,checked){element.checked=checked;element.setHasChanges({});if(this.checkboxCheckCallback){this.checkboxCheckCallback(this,element,checked);}},inputPage:function(event,maxNum){var element=Event.element(event);var keyCode=event.keyCode||event.which;if(keyCode==Event.KEY_RETURN){this.setPage(element.value);}},setPage:function(pageNumber){this.reload(this.addVarToUrl(this.pageVar,pageNumber));}};function openGridRow(grid,event){var element=Event.findElement(event,'tr');if(['a','input','select','option'].indexOf(Event.element(event).tagName.toLowerCase())!=-1){return;}
|
992 |
+
if(element.title){setLocation(element.title);}}
|
993 |
+
var varienGridMassaction=Class.create();varienGridMassaction.prototype={checkedValues:$H({}),checkedString:'',oldCallbacks:{},errorText:'',items:{},gridIds:[],currentItem:false,fieldTemplate:new Template('<input type="hidden" name="#{name}" value="#{value}" />'),initialize:function(containerId,grid,checkedValues,formFieldNameInternal,formFieldName){this.setOldCallback('row_click',grid.rowClickCallback);this.setOldCallback('init',grid.initCallback);this.setOldCallback('init_row',grid.initRowCallback);this.setOldCallback('pre_init',grid.preInitCallback);this.useAjax=false;this.grid=grid;this.containerId=containerId;this.initMassactionElements();this.checkedString=checkedValues;this.formFieldName=formFieldName;this.formFieldNameInternal=formFieldNameInternal;this.grid.initCallback=this.onGridInit.bind(this);this.grid.preInitCallback=this.onGridPreInit.bind(this);this.grid.initRowCallback=this.onGridRowInit.bind(this);this.grid.rowClickCallback=this.onGridRowClick.bind(this);this.initCheckboxes();this.checkCheckboxes();},setUseAjax:function(flag){this.useAjax=flag;},initMassactionElements:function(){this.container=$(this.containerId);this.form=$(this.containerId+'-form');this.count=$(this.containerId+'-count');this.validator=new Validation(this.form);this.formHiddens=$(this.containerId+'-form-hiddens');this.formAdditional=$(this.containerId+'-form-additional');this.select=$(this.containerId+'-select');this.select.observe('change',this.onSelectChange.bindAsEventListener(this));},setGridIds:function(gridIds){this.gridIds=gridIds;this.updateCount();},getGridIds:function(){return this.gridIds;},setItems:function(items){this.items=items;this.updateCount();},getItems:function(){return this.items;},getItem:function(itemId){if(this.items[itemId]){return this.items[itemId];}
|
994 |
+
return false;},getOldCallback:function(callbackName){return this.oldCallbacks[callbackName]?this.oldCallbacks[callbackName]:Prototype.emptyFunction;},setOldCallback:function(callbackName,callback){this.oldCallbacks[callbackName]=callback;},onGridPreInit:function(grid){this.initMassactionElements();this.getOldCallback('pre_init')(grid);},onGridInit:function(grid){this.initCheckboxes();this.checkCheckboxes();this.updateCount();this.getOldCallback('init')(grid);},onGridRowInit:function(grid,row){this.getOldCallback('init_row')(grid,row);},onGridRowClick:function(grid,evt){var tdElement=Event.findElement(evt,'td');var trElement=Event.findElement(evt,'tr');if(!$(tdElement).down('input')){if($(tdElement).down('a')||$(tdElement).down('select')){return;}
|
995 |
+
if(trElement.title){setLocation(trElement.title);}
|
996 |
+
else{var checkbox=Element.select(trElement,'input');var isInput=Event.element(evt).tagName=='input';var checked=isInput?checkbox[0].checked:!checkbox[0].checked;if(checked){this.checkedString=varienStringArray.add(checkbox[0].value,this.checkedString);}else{this.checkedString=varienStringArray.remove(checkbox[0].value,this.checkedString);}
|
997 |
+
this.grid.setCheckboxChecked(checkbox[0],checked);this.updateCount();}
|
998 |
+
return;}
|
999 |
+
if(Event.element(evt).isMassactionCheckbox){this.setCheckbox(Event.element(evt));}else if(checkbox=this.findCheckbox(evt)){checkbox.checked=!checkbox.checked;this.setCheckbox(checkbox);}},onSelectChange:function(evt){var item=this.getSelectedItem();if(item){this.formAdditional.update($(this.containerId+'-item-'+item.id+'-block').innerHTML);}else{this.formAdditional.update('');}
|
1000 |
+
this.validator.reset();},findCheckbox:function(evt){if(['a','input','select'].indexOf(Event.element(evt).tagName.toLowerCase())!==-1){return false;}
|
1001 |
+
checkbox=false;Event.findElement(evt,'tr').select('.massaction-checkbox').each(function(element){if(element.isMassactionCheckbox){checkbox=element;}}.bind(this));return checkbox;},initCheckboxes:function(){this.getCheckboxes().each(function(checkbox){checkbox.isMassactionCheckbox=true;}.bind(this));},checkCheckboxes:function(){this.getCheckboxes().each(function(checkbox){checkbox.checked=varienStringArray.has(checkbox.value,this.checkedString);}.bind(this));},selectAll:function(){this.setCheckedValues(this.getGridIds());this.checkCheckboxes();this.updateCount();return false;},unselectAll:function(){this.setCheckedValues('');this.checkCheckboxes();this.updateCount();return false;},selectVisible:function(){this.setCheckedValues(this.getCheckboxesValuesAsString());this.checkCheckboxes();this.updateCount();return false;},unselectVisible:function(){this.getCheckboxesValues().each(function(key){this.checkedString=varienStringArray.remove(key,this.checkedString);}.bind(this));this.checkCheckboxes();this.updateCount();return false;},setCheckedValues:function(values){this.checkedString=values;},getCheckedValues:function(){return this.checkedString;},getCheckboxes:function(){var result=[];this.grid.rows.each(function(row){var checkboxes=row.select('.massaction-checkbox');checkboxes.each(function(checkbox){result.push(checkbox);});});return result;},getCheckboxesValues:function(){var result=[];this.getCheckboxes().each(function(checkbox){result.push(checkbox.value);}.bind(this));return result;},getCheckboxesValuesAsString:function()
|
1002 |
+
{return this.getCheckboxesValues().join(',');},setCheckbox:function(checkbox){if(checkbox.checked){this.checkedString=varienStringArray.add(checkbox.value,this.checkedString);}else{this.checkedString=varienStringArray.remove(checkbox.value,this.checkedString);}
|
1003 |
+
this.updateCount();},updateCount:function(){this.count.update(varienStringArray.count(this.checkedString));if(!this.grid.reloadParams){this.grid.reloadParams={};}
|
1004 |
+
this.grid.reloadParams[this.formFieldNameInternal]=this.checkedString;},getSelectedItem:function(){if(this.getItem(this.select.value)){return this.getItem(this.select.value);}else{return false;}},apply:function(){if(varienStringArray.count(this.checkedString)==0){alert(this.errorText);return;}
|
1005 |
+
var item=this.getSelectedItem();if(!item){this.validator.validate();return;}
|
1006 |
+
this.currentItem=item;var fieldName=(item.field?item.field:this.formFieldName);var fieldsHtml='';if(this.currentItem.confirm&&!window.confirm(this.currentItem.confirm)){return;}
|
1007 |
+
this.formHiddens.update('');new Insertion.Bottom(this.formHiddens,this.fieldTemplate.evaluate({name:fieldName,value:this.checkedString}));new Insertion.Bottom(this.formHiddens,this.fieldTemplate.evaluate({name:'massaction_prepare_key',value:fieldName}));if(!this.validator.validate()){return;}
|
1008 |
+
if(this.useAjax&&item.url){new Ajax.Request(item.url,{'method':'post','parameters':this.form.serialize(true),'onComplete':this.onMassactionComplete.bind(this)});}else if(item.url){this.form.action=item.url;this.form.submit();}},onMassactionComplete:function(transport){if(this.currentItem.complete){try{var listener=this.getListener(this.currentItem.complete)||Prototype.emptyFunction;listener(grid,this,transport);}catch(e){}}},getListener:function(strValue){return eval(strValue);}};var varienGridAction={execute:function(select){if(!select.value||!select.value.isJSON()){return;}
|
1009 |
+
var config=select.value.evalJSON();if(config.confirm&&!window.confirm(config.confirm)){select.options[0].selected=true;return;}
|
1010 |
+
if(config.popup){var win=window.open(config.href,'action_window','width=500,height=600,resizable=1,scrollbars=1');win.focus();select.options[0].selected=true;}else{setLocation(config.href);}}};var varienStringArray={remove:function(str,haystack)
|
1011 |
+
{haystack=','+haystack+',';haystack=haystack.replace(new RegExp(','+str+',','g'),',');return this.trimComma(haystack);},add:function(str,haystack)
|
1012 |
+
{haystack=','+haystack+',';if(haystack.search(new RegExp(','+str+',','g'),haystack)===-1){haystack+=str+',';}
|
1013 |
+
return this.trimComma(haystack);},has:function(str,haystack)
|
1014 |
+
{haystack=','+haystack+',';if(haystack.search(new RegExp(','+str+',','g'),haystack)===-1){return false;}
|
1015 |
+
return true;},count:function(haystack)
|
1016 |
+
{if(typeof haystack!='string'){return 0;}
|
1017 |
+
if(match=haystack.match(new RegExp(',','g'))){return match.length+1;}else if(haystack.length!=0){return 1;}
|
1018 |
+
return 0;},each:function(haystack,fnc)
|
1019 |
+
{var haystack=haystack.split(',');for(var i=0;i<haystack.length;i++){fnc(haystack[i]);}},trimComma:function(string)
|
1020 |
+
{string=string.replace(new RegExp('^(,+)','i'),'');string=string.replace(new RegExp('(,+)$','i'),'');return string;}};var serializerController=Class.create();serializerController.prototype={oldCallbacks:{},initialize:function(hiddenDataHolder,predefinedData,inputsToManage,grid,reloadParamName){this.tabIndex=1000;this.inputsToManage=inputsToManage;this.multidimensionalMode=inputsToManage.length>0;this.gridData=this.getGridDataHash(predefinedData);this.hiddenDataHolder=$(hiddenDataHolder);this.hiddenDataHolder.value=this.serializeObject();this.grid=grid;this.setOldCallback('row_click',this.grid.rowClickCallback);this.setOldCallback('init_row',this.grid.initRowCallback);this.setOldCallback('checkbox_check',this.grid.checkboxCheckCallback);this.reloadParamName=reloadParamName;this.grid.reloadParams={};this.grid.reloadParams[this.reloadParamName+'[]']=this.getDataForReloadParam();this.grid.rowClickCallback=this.rowClick.bind(this);this.grid.initRowCallback=this.rowInit.bind(this);this.grid.checkboxCheckCallback=this.registerData.bind(this);this.grid.rows.each(this.eachRow.bind(this));},setOldCallback:function(callbackName,callback){this.oldCallbacks[callbackName]=callback;},getOldCallback:function(callbackName){return this.oldCallbacks[callbackName]?this.oldCallbacks[callbackName]:Prototype.emptyFunction;},registerData:function(grid,element,checked){if(this.multidimensionalMode){if(checked){if(element.inputElements){this.gridData.set(element.value,{});for(var i=0;i<element.inputElements.length;i++){element.inputElements[i].disabled=false;this.gridData.get(element.value)[element.inputElements[i].name]=element.inputElements[i].value;}}}
|
1021 |
+
else{if(element.inputElements){for(var i=0;i<element.inputElements.length;i++){element.inputElements[i].disabled=true;}}
|
1022 |
+
this.gridData.unset(element.value);}}
|
1023 |
+
else{if(checked){this.gridData.set(element.value,element.value);}
|
1024 |
+
else{this.gridData.unset(element.value);}}
|
1025 |
+
this.hiddenDataHolder.value=this.serializeObject();this.grid.reloadParams={};this.grid.reloadParams[this.reloadParamName+'[]']=this.getDataForReloadParam();this.getOldCallback('checkbox_check')(grid,element,checked);},eachRow:function(row){this.rowInit(this.grid,row);},rowClick:function(grid,event){var trElement=Event.findElement(event,'tr');var isInput=Event.element(event).tagName=='INPUT';if(trElement){var checkbox=Element.select(trElement,'input');if(checkbox[0]){var checked=isInput?checkbox[0].checked:!checkbox[0].checked;this.grid.setCheckboxChecked(checkbox[0],checked);}}
|
1026 |
+
this.getOldCallback('row_click')(grid,event);},inputChange:function(event){var element=Event.element(event);if(element&&element.checkboxElement&&element.checkboxElement.checked){this.gridData.get(element.checkboxElement.value)[element.name]=element.value;this.hiddenDataHolder.value=this.serializeObject();}},rowInit:function(grid,row){if(this.multidimensionalMode){var checkbox=$(row).select('.checkbox')[0];var selectors=this.inputsToManage.map(function(name){return'input[name="'+name+'"]'});var inputs=$(row).select.apply($(row),selectors);if(checkbox&&inputs.length>0){checkbox.inputElements=inputs;for(var i=0;i<inputs.length;i++){inputs[i].checkboxElement=checkbox;if(this.gridData.get(checkbox.value)&&this.gridData.get(checkbox.value)[inputs[i].name]){inputs[i].value=this.gridData.get(checkbox.value)[inputs[i].name];}
|
1027 |
+
inputs[i].disabled=!checkbox.checked;inputs[i].tabIndex=this.tabIndex++;Event.observe(inputs[i],'keyup',this.inputChange.bind(this));Event.observe(inputs[i],'change',this.inputChange.bind(this));}}}
|
1028 |
+
this.getOldCallback('init_row')(grid,row);},getGridDataHash:function(_object){return $H(this.multidimensionalMode?_object:this.convertArrayToObject(_object))},getDataForReloadParam:function(){return this.multidimensionalMode?this.gridData.keys():this.gridData.values();},serializeObject:function(){if(this.multidimensionalMode){var clone=this.gridData.clone();clone.each(function(pair){clone.set(pair.key,encode_base64(Object.toQueryString(pair.value)));});return clone.toQueryString();}
|
1029 |
+
else{return this.gridData.values().join('&');}},convertArrayToObject:function(_array){var _object={};for(var i=0,l=_array.length;i<l;i++){_object[_array[i]]=_array[i];}
|
1030 |
+
return _object;}};
|
var/minifycache/minify_676fb2e38e9cb2203204bcf556430103.gz
ADDED
Binary file
|
var/minifycache/minify_900559c432c691b50ba33f48b4909a4f
ADDED
@@ -0,0 +1,672 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var Prototype={Version:'1.6.0.3',Browser:{IE:!!(window.attachEvent&&navigator.userAgent.indexOf('Opera')===-1),Opera:navigator.userAgent.indexOf('Opera')>-1,WebKit:navigator.userAgent.indexOf('AppleWebKit/')>-1,Gecko:navigator.userAgent.indexOf('Gecko')>-1&&navigator.userAgent.indexOf('KHTML')===-1,MobileSafari:!!navigator.userAgent.match(/Apple.*Mobile.*Safari/)},BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:!!window.HTMLElement,SpecificElementExtensions:document.createElement('div')['__proto__']&&document.createElement('div')['__proto__']!==document.createElement('form')['__proto__']},ScriptFragment:'<script[^>]*>([\\S\\s]*?)<\/script>',JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(x){return x}};if(Prototype.Browser.MobileSafari)
|
2 |
+
Prototype.BrowserFeatures.SpecificElementExtensions=false;var Class={create:function(){var parent=null,properties=$A(arguments);if(Object.isFunction(properties[0]))
|
3 |
+
parent=properties.shift();function klass(){this.initialize.apply(this,arguments);}
|
4 |
+
Object.extend(klass,Class.Methods);klass.superclass=parent;klass.subclasses=[];if(parent){var subclass=function(){};subclass.prototype=parent.prototype;klass.prototype=new subclass;parent.subclasses.push(klass);}
|
5 |
+
for(var i=0;i<properties.length;i++)
|
6 |
+
klass.addMethods(properties[i]);if(!klass.prototype.initialize)
|
7 |
+
klass.prototype.initialize=Prototype.emptyFunction;klass.prototype.constructor=klass;return klass;}};Class.Methods={addMethods:function(source){var ancestor=this.superclass&&this.superclass.prototype;var properties=Object.keys(source);if(!Object.keys({toString:true}).length)
|
8 |
+
properties.push("toString","valueOf");for(var i=0,length=properties.length;i<length;i++){var property=properties[i],value=source[property];if(ancestor&&Object.isFunction(value)&&value.argumentNames().first()=="$super"){var method=value;value=(function(m){return function(){return ancestor[m].apply(this,arguments)};})(property).wrap(method);value.valueOf=method.valueOf.bind(method);value.toString=method.toString.bind(method);}
|
9 |
+
this.prototype[property]=value;}
|
10 |
+
return this;}};var Abstract={};Object.extend=function(destination,source){for(var property in source)
|
11 |
+
destination[property]=source[property];return destination;};Object.extend(Object,{inspect:function(object){try{if(Object.isUndefined(object))return'undefined';if(object===null)return'null';return object.inspect?object.inspect():String(object);}catch(e){if(e instanceof RangeError)return'...';throw e;}},toJSON:function(object){var type=typeof object;switch(type){case'undefined':case'function':case'unknown':return;case'boolean':return object.toString();}
|
12 |
+
if(object===null)return'null';if(object.toJSON)return object.toJSON();if(Object.isElement(object))return;var results=[];for(var property in object){var value=Object.toJSON(object[property]);if(!Object.isUndefined(value))
|
13 |
+
results.push(property.toJSON()+': '+value);}
|
14 |
+
return'{'+results.join(', ')+'}';},toQueryString:function(object){return $H(object).toQueryString();},toHTML:function(object){return object&&object.toHTML?object.toHTML():String.interpret(object);},keys:function(object){var keys=[];for(var property in object)
|
15 |
+
keys.push(property);return keys;},values:function(object){var values=[];for(var property in object)
|
16 |
+
values.push(object[property]);return values;},clone:function(object){return Object.extend({},object);},isElement:function(object){return!!(object&&object.nodeType==1);},isArray:function(object){return object!=null&&typeof object=="object"&&'splice'in object&&'join'in object;},isHash:function(object){return object instanceof Hash;},isFunction:function(object){return typeof object=="function";},isString:function(object){return typeof object=="string";},isNumber:function(object){return typeof object=="number";},isUndefined:function(object){return typeof object=="undefined";}});Object.extend(Function.prototype,{argumentNames:function(){var names=this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1].replace(/\s+/g,'').split(',');return names.length==1&&!names[0]?[]:names;},bind:function(){if(arguments.length<2&&Object.isUndefined(arguments[0]))return this;var __method=this,args=$A(arguments),object=args.shift();return function(){return __method.apply(object,args.concat($A(arguments)));}},bindAsEventListener:function(){var __method=this,args=$A(arguments),object=args.shift();return function(event){return __method.apply(object,[event||window.event].concat(args));}},curry:function(){if(!arguments.length)return this;var __method=this,args=$A(arguments);return function(){return __method.apply(this,args.concat($A(arguments)));}},delay:function(){var __method=this,args=$A(arguments),timeout=args.shift()*1000;return window.setTimeout(function(){return __method.apply(__method,args);},timeout);},defer:function(){var args=[0.01].concat($A(arguments));return this.delay.apply(this,args);},wrap:function(wrapper){var __method=this;return function(){return wrapper.apply(this,[__method.bind(this)].concat($A(arguments)));}},methodize:function(){if(this._methodized)return this._methodized;var __method=this;return this._methodized=function(){return __method.apply(null,[this].concat($A(arguments)));};}});Date.prototype.toJSON=function(){return'"'+this.getUTCFullYear()+'-'+
|
17 |
+
(this.getUTCMonth()+1).toPaddedString(2)+'-'+
|
18 |
+
this.getUTCDate().toPaddedString(2)+'T'+
|
19 |
+
this.getUTCHours().toPaddedString(2)+':'+
|
20 |
+
this.getUTCMinutes().toPaddedString(2)+':'+
|
21 |
+
this.getUTCSeconds().toPaddedString(2)+'Z"';};var Try={these:function(){var returnValue;for(var i=0,length=arguments.length;i<length;i++){var lambda=arguments[i];try{returnValue=lambda();break;}catch(e){}}
|
22 |
+
return returnValue;}};RegExp.prototype.match=RegExp.prototype.test;RegExp.escape=function(str){return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g,'\\$1');};var PeriodicalExecuter=Class.create({initialize:function(callback,frequency){this.callback=callback;this.frequency=frequency;this.currentlyExecuting=false;this.registerCallback();},registerCallback:function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000);},execute:function(){this.callback(this);},stop:function(){if(!this.timer)return;clearInterval(this.timer);this.timer=null;},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.execute();}finally{this.currentlyExecuting=false;}}}});Object.extend(String,{interpret:function(value){return value==null?'':String(value);},specialChar:{'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','\\':'\\\\'}});Object.extend(String.prototype,{gsub:function(pattern,replacement){var result='',source=this,match;replacement=arguments.callee.prepareReplacement(replacement);while(source.length>0){if(match=source.match(pattern)){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length);}else{result+=source,source='';}}
|
23 |
+
return result;},sub:function(pattern,replacement,count){replacement=this.gsub.prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0)return match[0];return replacement(match);});},scan:function(pattern,iterator){this.gsub(pattern,iterator);return String(this);},truncate:function(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?'...':truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this);},strip:function(){return this.replace(/^\s+/,'').replace(/\s+$/,'');},stripTags:function(){return this.replace(/<\/?[^>]+>/gi,'');},stripScripts:function(){return this.replace(new RegExp(Prototype.ScriptFragment,'img'),'');},extractScripts:function(){var matchAll=new RegExp(Prototype.ScriptFragment,'img');var matchOne=new RegExp(Prototype.ScriptFragment,'im');return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||['',''])[1];});},evalScripts:function(){return this.extractScripts().map(function(script){return eval(script)});},escapeHTML:function(){var self=arguments.callee;self.text.data=this;return self.div.innerHTML;},unescapeHTML:function(){var div=new Element('div');div.innerHTML=this.stripTags();return div.childNodes[0]?(div.childNodes.length>1?$A(div.childNodes).inject('',function(memo,node){return memo+node.nodeValue}):div.childNodes[0].nodeValue):'';},toQueryParams:function(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match)return{};return match[1].split(separator||'&').inject({},function(hash,pair){if((pair=pair.split('='))[0]){var key=decodeURIComponent(pair.shift());var value=pair.length>1?pair.join('='):pair[0];if(value!=undefined)value=decodeURIComponent(value);if(key in hash){if(!Object.isArray(hash[key]))hash[key]=[hash[key]];hash[key].push(value);}
|
24 |
+
else hash[key]=value;}
|
25 |
+
return hash;});},toArray:function(){return this.split('');},succ:function(){return this.slice(0,this.length-1)+
|
26 |
+
String.fromCharCode(this.charCodeAt(this.length-1)+1);},times:function(count){return count<1?'':new Array(count+1).join(this);},camelize:function(){var parts=this.split('-'),len=parts.length;if(len==1)return parts[0];var camelized=this.charAt(0)=='-'?parts[0].charAt(0).toUpperCase()+parts[0].substring(1):parts[0];for(var i=1;i<len;i++)
|
27 |
+
camelized+=parts[i].charAt(0).toUpperCase()+parts[i].substring(1);return camelized;},capitalize:function(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase();},underscore:function(){return this.gsub(/::/,'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();},dasherize:function(){return this.gsub(/_/,'-');},inspect:function(useDoubleQuotes){var escapedString=this.gsub(/[\x00-\x1f\\]/,function(match){var character=String.specialChar[match[0]];return character?character:'\\u00'+match[0].charCodeAt().toPaddedString(2,16);});if(useDoubleQuotes)return'"'+escapedString.replace(/"/g,'\\"')+'"';return"'"+escapedString.replace(/'/g,'\\\'')+"'";},toJSON:function(){return this.inspect(true);},unfilterJSON:function(filter){return this.sub(filter||Prototype.JSONFilter,'#{1}');},isJSON:function(){var str=this;if(str.blank())return false;str=this.replace(/\\./g,'@').replace(/"[^"\\\n\r]*"/g,'');return(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);},evalJSON:function(sanitize){var json=this.unfilterJSON();try{if(!sanitize||json.isJSON())return eval('('+json+')');}catch(e){}
|
28 |
+
throw new SyntaxError('Badly formed JSON string: '+this.inspect());},include:function(pattern){return this.indexOf(pattern)>-1;},startsWith:function(pattern){return this.indexOf(pattern)===0;},endsWith:function(pattern){var d=this.length-pattern.length;return d>=0&&this.lastIndexOf(pattern)===d;},empty:function(){return this=='';},blank:function(){return /^\s*$/.test(this);},interpolate:function(object,pattern){return new Template(this,pattern).evaluate(object);}});if(Prototype.Browser.WebKit||Prototype.Browser.IE)Object.extend(String.prototype,{escapeHTML:function(){return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');},unescapeHTML:function(){return this.stripTags().replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');}});String.prototype.gsub.prepareReplacement=function(replacement){if(Object.isFunction(replacement))return replacement;var template=new Template(replacement);return function(match){return template.evaluate(match)};};String.prototype.parseQuery=String.prototype.toQueryParams;Object.extend(String.prototype.escapeHTML,{div:document.createElement('div'),text:document.createTextNode('')});String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.text);var Template=Class.create({initialize:function(template,pattern){this.template=template.toString();this.pattern=pattern||Template.Pattern;},evaluate:function(object){if(Object.isFunction(object.toTemplateReplacements))
|
29 |
+
object=object.toTemplateReplacements();return this.template.gsub(this.pattern,function(match){if(object==null)return'';var before=match[1]||'';if(before=='\\')return match[2];var ctx=object,expr=match[3];var pattern=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;match=pattern.exec(expr);if(match==null)return before;while(match!=null){var comp=match[1].startsWith('[')?match[2].gsub('\\\\]',']'):match[1];ctx=ctx[comp];if(null==ctx||''==match[3])break;expr=expr.substring('['==match[3]?match[1].length:match[0].length);match=pattern.exec(expr);}
|
30 |
+
return before+String.interpret(ctx);});}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable={each:function(iterator,context){var index=0;try{this._each(function(value){iterator.call(context,value,index++);});}catch(e){if(e!=$break)throw e;}
|
31 |
+
return this;},eachSlice:function(number,iterator,context){var index=-number,slices=[],array=this.toArray();if(number<1)return array;while((index+=number)<array.length)
|
32 |
+
slices.push(array.slice(index,index+number));return slices.collect(iterator,context);},all:function(iterator,context){iterator=iterator||Prototype.K;var result=true;this.each(function(value,index){result=result&&!!iterator.call(context,value,index);if(!result)throw $break;});return result;},any:function(iterator,context){iterator=iterator||Prototype.K;var result=false;this.each(function(value,index){if(result=!!iterator.call(context,value,index))
|
33 |
+
throw $break;});return result;},collect:function(iterator,context){iterator=iterator||Prototype.K;var results=[];this.each(function(value,index){results.push(iterator.call(context,value,index));});return results;},detect:function(iterator,context){var result;this.each(function(value,index){if(iterator.call(context,value,index)){result=value;throw $break;}});return result;},findAll:function(iterator,context){var results=[];this.each(function(value,index){if(iterator.call(context,value,index))
|
34 |
+
results.push(value);});return results;},grep:function(filter,iterator,context){iterator=iterator||Prototype.K;var results=[];if(Object.isString(filter))
|
35 |
+
filter=new RegExp(filter);this.each(function(value,index){if(filter.match(value))
|
36 |
+
results.push(iterator.call(context,value,index));});return results;},include:function(object){if(Object.isFunction(this.indexOf))
|
37 |
+
if(this.indexOf(object)!=-1)return true;var found=false;this.each(function(value){if(value==object){found=true;throw $break;}});return found;},inGroupsOf:function(number,fillWith){fillWith=Object.isUndefined(fillWith)?null:fillWith;return this.eachSlice(number,function(slice){while(slice.length<number)slice.push(fillWith);return slice;});},inject:function(memo,iterator,context){this.each(function(value,index){memo=iterator.call(context,memo,value,index);});return memo;},invoke:function(method){var args=$A(arguments).slice(1);return this.map(function(value){return value[method].apply(value,args);});},max:function(iterator,context){iterator=iterator||Prototype.K;var result;this.each(function(value,index){value=iterator.call(context,value,index);if(result==null||value>=result)
|
38 |
+
result=value;});return result;},min:function(iterator,context){iterator=iterator||Prototype.K;var result;this.each(function(value,index){value=iterator.call(context,value,index);if(result==null||value<result)
|
39 |
+
result=value;});return result;},partition:function(iterator,context){iterator=iterator||Prototype.K;var trues=[],falses=[];this.each(function(value,index){(iterator.call(context,value,index)?trues:falses).push(value);});return[trues,falses];},pluck:function(property){var results=[];this.each(function(value){results.push(value[property]);});return results;},reject:function(iterator,context){var results=[];this.each(function(value,index){if(!iterator.call(context,value,index))
|
40 |
+
results.push(value);});return results;},sortBy:function(iterator,context){return this.map(function(value,index){return{value:value,criteria:iterator.call(context,value,index)};}).sort(function(left,right){var a=left.criteria,b=right.criteria;return a<b?-1:a>b?1:0;}).pluck('value');},toArray:function(){return this.map();},zip:function(){var iterator=Prototype.K,args=$A(arguments);if(Object.isFunction(args.last()))
|
41 |
+
iterator=args.pop();var collections=[this].concat(args).map($A);return this.map(function(value,index){return iterator(collections.pluck(index));});},size:function(){return this.toArray().length;},inspect:function(){return'#<Enumerable:'+this.toArray().inspect()+'>';}};Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,filter:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray,every:Enumerable.all,some:Enumerable.any});function $A(iterable){if(!iterable)return[];if(iterable.toArray)return iterable.toArray();var length=iterable.length||0,results=new Array(length);while(length--)results[length]=iterable[length];return results;}
|
42 |
+
if(Prototype.Browser.WebKit){$A=function(iterable){if(!iterable)return[];if(!(typeof iterable==='function'&&typeof iterable.length==='number'&&typeof iterable.item==='function')&&iterable.toArray)
|
43 |
+
return iterable.toArray();var length=iterable.length||0,results=new Array(length);while(length--)results[length]=iterable[length];return results;};}
|
44 |
+
Array.from=$A;Object.extend(Array.prototype,Enumerable);if(!Array.prototype._reverse)Array.prototype._reverse=Array.prototype.reverse;Object.extend(Array.prototype,{_each:function(iterator){for(var i=0,length=this.length;i<length;i++)
|
45 |
+
iterator(this[i]);},clear:function(){this.length=0;return this;},first:function(){return this[0];},last:function(){return this[this.length-1];},compact:function(){return this.select(function(value){return value!=null;});},flatten:function(){return this.inject([],function(array,value){return array.concat(Object.isArray(value)?value.flatten():[value]);});},without:function(){var values=$A(arguments);return this.select(function(value){return!values.include(value);});},reverse:function(inline){return(inline!==false?this:this.toArray())._reverse();},reduce:function(){return this.length>1?this:this[0];},uniq:function(sorted){return this.inject([],function(array,value,index){if(0==index||(sorted?array.last()!=value:!array.include(value)))
|
46 |
+
array.push(value);return array;});},intersect:function(array){return this.uniq().findAll(function(item){return array.detect(function(value){return item===value});});},clone:function(){return[].concat(this);},size:function(){return this.length;},inspect:function(){return'['+this.map(Object.inspect).join(', ')+']';},toJSON:function(){var results=[];this.each(function(object){var value=Object.toJSON(object);if(!Object.isUndefined(value))results.push(value);});return'['+results.join(', ')+']';}});if(Object.isFunction(Array.prototype.forEach))
|
47 |
+
Array.prototype._each=Array.prototype.forEach;if(!Array.prototype.indexOf)Array.prototype.indexOf=function(item,i){i||(i=0);var length=this.length;if(i<0)i=length+i;for(;i<length;i++)
|
48 |
+
if(this[i]===item)return i;return-1;};if(!Array.prototype.lastIndexOf)Array.prototype.lastIndexOf=function(item,i){i=isNaN(i)?this.length:(i<0?this.length+i:i)+1;var n=this.slice(0,i).reverse().indexOf(item);return(n<0)?n:i-n-1;};Array.prototype.toArray=Array.prototype.clone;function $w(string){if(!Object.isString(string))return[];string=string.strip();return string?string.split(/\s+/):[];}
|
49 |
+
if(Prototype.Browser.Opera){Array.prototype.concat=function(){var array=[];for(var i=0,length=this.length;i<length;i++)array.push(this[i]);for(var i=0,length=arguments.length;i<length;i++){if(Object.isArray(arguments[i])){for(var j=0,arrayLength=arguments[i].length;j<arrayLength;j++)
|
50 |
+
array.push(arguments[i][j]);}else{array.push(arguments[i]);}}
|
51 |
+
return array;};}
|
52 |
+
Object.extend(Number.prototype,{toColorPart:function(){return this.toPaddedString(2,16);},succ:function(){return this+1;},times:function(iterator,context){$R(0,this,true).each(iterator,context);return this;},toPaddedString:function(length,radix){var string=this.toString(radix||10);return'0'.times(length-string.length)+string;},toJSON:function(){return isFinite(this)?this.toString():'null';}});$w('abs round ceil floor').each(function(method){Number.prototype[method]=Math[method].methodize();});function $H(object){return new Hash(object);};var Hash=Class.create(Enumerable,(function(){function toQueryPair(key,value){if(Object.isUndefined(value))return key;return key+'='+encodeURIComponent(String.interpret(value));}
|
53 |
+
return{initialize:function(object){this._object=Object.isHash(object)?object.toObject():Object.clone(object);},_each:function(iterator){for(var key in this._object){var value=this._object[key],pair=[key,value];pair.key=key;pair.value=value;iterator(pair);}},set:function(key,value){return this._object[key]=value;},get:function(key){if(this._object[key]!==Object.prototype[key])
|
54 |
+
return this._object[key];},unset:function(key){var value=this._object[key];delete this._object[key];return value;},toObject:function(){return Object.clone(this._object);},keys:function(){return this.pluck('key');},values:function(){return this.pluck('value');},index:function(value){var match=this.detect(function(pair){return pair.value===value;});return match&&match.key;},merge:function(object){return this.clone().update(object);},update:function(object){return new Hash(object).inject(this,function(result,pair){result.set(pair.key,pair.value);return result;});},toQueryString:function(){return this.inject([],function(results,pair){var key=encodeURIComponent(pair.key),values=pair.value;if(values&&typeof values=='object'){if(Object.isArray(values))
|
55 |
+
return results.concat(values.map(toQueryPair.curry(key)));}else results.push(toQueryPair(key,values));return results;}).join('&');},inspect:function(){return'#<Hash:{'+this.map(function(pair){return pair.map(Object.inspect).join(': ');}).join(', ')+'}>';},toJSON:function(){return Object.toJSON(this.toObject());},clone:function(){return new Hash(this);}}})());Hash.prototype.toTemplateReplacements=Hash.prototype.toObject;Hash.from=$H;var ObjectRange=Class.create(Enumerable,{initialize:function(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive;},_each:function(iterator){var value=this.start;while(this.include(value)){iterator(value);value=value.succ();}},include:function(value){if(value<this.start)
|
56 |
+
return false;if(this.exclusive)
|
57 |
+
return value<this.end;return value<=this.end;}});var $R=function(start,end,exclusive){return new ObjectRange(start,end,exclusive);};var Ajax={getTransport:function(){return Try.these(function(){return new XMLHttpRequest()},function(){return new ActiveXObject('Msxml2.XMLHTTP')},function(){return new ActiveXObject('Microsoft.XMLHTTP')})||false;},activeRequestCount:0};Ajax.Responders={responders:[],_each:function(iterator){this.responders._each(iterator);},register:function(responder){if(!this.include(responder))
|
58 |
+
this.responders.push(responder);},unregister:function(responder){this.responders=this.responders.without(responder);},dispatch:function(callback,request,transport,json){this.each(function(responder){if(Object.isFunction(responder[callback])){try{responder[callback].apply(responder,[request,transport,json]);}catch(e){}}});}};Object.extend(Ajax.Responders,Enumerable);Ajax.Responders.register({onCreate:function(){Ajax.activeRequestCount++},onComplete:function(){Ajax.activeRequestCount--}});Ajax.Base=Class.create({initialize:function(options){this.options={method:'post',asynchronous:true,contentType:'application/x-www-form-urlencoded',encoding:'UTF-8',parameters:'',evalJSON:true,evalJS:true};Object.extend(this.options,options||{});this.options.method=this.options.method.toLowerCase();if(Object.isString(this.options.parameters))
|
59 |
+
this.options.parameters=this.options.parameters.toQueryParams();else if(Object.isHash(this.options.parameters))
|
60 |
+
this.options.parameters=this.options.parameters.toObject();}});Ajax.Request=Class.create(Ajax.Base,{_complete:false,initialize:function($super,url,options){$super(options);this.transport=Ajax.getTransport();this.request(url);},request:function(url){this.url=url;this.method=this.options.method;var params=Object.clone(this.options.parameters);if(!['get','post'].include(this.method)){params['_method']=this.method;this.method='post';}
|
61 |
+
this.parameters=params;if(params=Object.toQueryString(params)){if(this.method=='get')
|
62 |
+
this.url+=(this.url.include('?')?'&':'?')+params;else if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
|
63 |
+
params+='&_=';}
|
64 |
+
try{var response=new Ajax.Response(this);if(this.options.onCreate)this.options.onCreate(response);Ajax.Responders.dispatch('onCreate',this,response);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous)this.respondToReadyState.bind(this).defer(1);this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();this.body=this.method=='post'?(this.options.postBody||params):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType)
|
65 |
+
this.onStateChange();}
|
66 |
+
catch(e){this.dispatchException(e);}},onStateChange:function(){var readyState=this.transport.readyState;if(readyState>1&&!((readyState==4)&&this._complete))
|
67 |
+
this.respondToReadyState(this.transport.readyState);},setRequestHeaders:function(){var headers={'X-Requested-With':'XMLHttpRequest','X-Prototype-Version':Prototype.Version,'Accept':'text/javascript, text/html, application/xml, text/xml, */*'};if(this.method=='post'){headers['Content-type']=this.options.contentType+
|
68 |
+
(this.options.encoding?'; charset='+this.options.encoding:'');if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005)
|
69 |
+
headers['Connection']='close';}
|
70 |
+
if(typeof this.options.requestHeaders=='object'){var extras=this.options.requestHeaders;if(Object.isFunction(extras.push))
|
71 |
+
for(var i=0,length=extras.length;i<length;i+=2)
|
72 |
+
headers[extras[i]]=extras[i+1];else
|
73 |
+
$H(extras).each(function(pair){headers[pair.key]=pair.value});}
|
74 |
+
for(var name in headers)
|
75 |
+
this.transport.setRequestHeader(name,headers[name]);},success:function(){var status=this.getStatus();return!status||(status>=200&&status<300);},getStatus:function(){try{return this.transport.status||0;}catch(e){return 0}},respondToReadyState:function(readyState){var state=Ajax.Request.Events[readyState],response=new Ajax.Response(this);if(state=='Complete'){try{this._complete=true;(this.options['on'+response.status]||this.options['on'+(this.success()?'Success':'Failure')]||Prototype.emptyFunction)(response,response.headerJSON);}catch(e){this.dispatchException(e);}
|
76 |
+
var contentType=response.getHeader('Content-type');if(this.options.evalJS=='force'||(this.options.evalJS&&this.isSameOrigin()&&contentType&&contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
|
77 |
+
this.evalResponse();}
|
78 |
+
try{(this.options['on'+state]||Prototype.emptyFunction)(response,response.headerJSON);Ajax.Responders.dispatch('on'+state,this,response,response.headerJSON);}catch(e){this.dispatchException(e);}
|
79 |
+
if(state=='Complete'){this.transport.onreadystatechange=Prototype.emptyFunction;}},isSameOrigin:function(){var m=this.url.match(/^\s*https?:\/\/[^\/]*/);return!m||(m[0]=='#{protocol}//#{domain}#{port}'.interpolate({protocol:location.protocol,domain:document.domain,port:location.port?':'+location.port:''}));},getHeader:function(name){try{return this.transport.getResponseHeader(name)||null;}catch(e){return null}},evalResponse:function(){try{return eval((this.transport.responseText||'').unfilterJSON());}catch(e){this.dispatchException(e);}},dispatchException:function(exception){(this.options.onException||Prototype.emptyFunction)(this,exception);Ajax.Responders.dispatch('onException',this,exception);}});Ajax.Request.Events=['Uninitialized','Loading','Loaded','Interactive','Complete'];Ajax.Response=Class.create({initialize:function(request){this.request=request;var transport=this.transport=request.transport,readyState=this.readyState=transport.readyState;if((readyState>2&&!Prototype.Browser.IE)||readyState==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(transport.responseText);this.headerJSON=this._getHeaderJSON();}
|
80 |
+
if(readyState==4){var xml=transport.responseXML;this.responseXML=Object.isUndefined(xml)?null:xml;this.responseJSON=this._getResponseJSON();}},status:0,statusText:'',getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||'';}catch(e){return''}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders();}catch(e){return null}},getResponseHeader:function(name){return this.transport.getResponseHeader(name);},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders();},_getHeaderJSON:function(){var json=this.getHeader('X-JSON');if(!json)return null;json=decodeURIComponent(escape(json));try{return json.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin());}catch(e){this.request.dispatchException(e);}},_getResponseJSON:function(){var options=this.request.options;if(!options.evalJSON||(options.evalJSON!='force'&&!(this.getHeader('Content-type')||'').include('application/json'))||this.responseText.blank())
|
81 |
+
return null;try{return this.responseText.evalJSON(options.sanitizeJSON||!this.request.isSameOrigin());}catch(e){this.request.dispatchException(e);}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,container,url,options){this.container={success:(container.success||container),failure:(container.failure||(container.success?null:container))};options=Object.clone(options);var onComplete=options.onComplete;options.onComplete=(function(response,json){this.updateContent(response.responseText);if(Object.isFunction(onComplete))onComplete(response,json);}).bind(this);$super(url,options);},updateContent:function(responseText){var receiver=this.container[this.success()?'success':'failure'],options=this.options;if(!options.evalScripts)responseText=responseText.stripScripts();if(receiver=$(receiver)){if(options.insertion){if(Object.isString(options.insertion)){var insertion={};insertion[options.insertion]=responseText;receiver.insert(insertion);}
|
82 |
+
else options.insertion(receiver,responseText);}
|
83 |
+
else receiver.update(responseText);}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,container,url,options){$super(options);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=container;this.url=url;this.start();},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent();},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments);},updateComplete:function(response){if(this.options.decay){this.decay=(response.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=response.responseText;}
|
84 |
+
this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency);},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options);}});function $(element){if(arguments.length>1){for(var i=0,elements=[],length=arguments.length;i<length;i++)
|
85 |
+
elements.push($(arguments[i]));return elements;}
|
86 |
+
if(Object.isString(element))
|
87 |
+
element=document.getElementById(element);return Element.extend(element);}
|
88 |
+
if(Prototype.BrowserFeatures.XPath){document._getElementsByXPath=function(expression,parentElement){var results=[];var query=document.evaluate(expression,$(parentElement)||document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);for(var i=0,length=query.snapshotLength;i<length;i++)
|
89 |
+
results.push(Element.extend(query.snapshotItem(i)));return results;};}
|
90 |
+
if(!window.Node)var Node={};if(!Node.ELEMENT_NODE){Object.extend(Node,{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12});}
|
91 |
+
(function(){var element=this.Element;this.Element=function(tagName,attributes){attributes=attributes||{};tagName=tagName.toLowerCase();var cache=Element.cache;if(Prototype.Browser.IE&&attributes.name){tagName='<'+tagName+' name="'+attributes.name+'">';delete attributes.name;return Element.writeAttribute(document.createElement(tagName),attributes);}
|
92 |
+
if(!cache[tagName])cache[tagName]=Element.extend(document.createElement(tagName));return Element.writeAttribute(cache[tagName].cloneNode(false),attributes);};Object.extend(this.Element,element||{});if(element)this.Element.prototype=element.prototype;}).call(window);Element.cache={};Element.Methods={visible:function(element){return $(element).style.display!='none';},toggle:function(element){element=$(element);Element[Element.visible(element)?'hide':'show'](element);return element;},hide:function(element){element=$(element);element.style.display='none';return element;},show:function(element){element=$(element);element.style.display='';return element;},remove:function(element){element=$(element);element.parentNode.removeChild(element);return element;},update:function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content))return element.update().insert(content);content=Object.toHTML(content);element.innerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;},replace:function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();else if(!Object.isElement(content)){content=Object.toHTML(content);var range=element.ownerDocument.createRange();range.selectNode(element);content.evalScripts.bind(content).defer();content=range.createContextualFragment(content.stripScripts());}
|
93 |
+
element.parentNode.replaceChild(content,element);return element;},insert:function(element,insertions){element=$(element);if(Object.isString(insertions)||Object.isNumber(insertions)||Object.isElement(insertions)||(insertions&&(insertions.toElement||insertions.toHTML)))
|
94 |
+
insertions={bottom:insertions};var content,insert,tagName,childNodes;for(var position in insertions){content=insertions[position];position=position.toLowerCase();insert=Element._insertionTranslations[position];if(content&&content.toElement)content=content.toElement();if(Object.isElement(content)){insert(element,content);continue;}
|
95 |
+
content=Object.toHTML(content);tagName=((position=='before'||position=='after')?element.parentNode:element).tagName.toUpperCase();childNodes=Element._getContentFromAnonymousElement(tagName,content.stripScripts());if(position=='top'||position=='after')childNodes.reverse();childNodes.each(insert.curry(element));content.evalScripts.bind(content).defer();}
|
96 |
+
return element;},wrap:function(element,wrapper,attributes){element=$(element);if(Object.isElement(wrapper))
|
97 |
+
$(wrapper).writeAttribute(attributes||{});else if(Object.isString(wrapper))wrapper=new Element(wrapper,attributes);else wrapper=new Element('div',wrapper);if(element.parentNode)
|
98 |
+
element.parentNode.replaceChild(wrapper,element);wrapper.appendChild(element);return wrapper;},inspect:function(element){element=$(element);var result='<'+element.tagName.toLowerCase();$H({'id':'id','className':'class'}).each(function(pair){var property=pair.first(),attribute=pair.last();var value=(element[property]||'').toString();if(value)result+=' '+attribute+'='+value.inspect(true);});return result+'>';},recursivelyCollect:function(element,property){element=$(element);var elements=[];while(element=element[property])
|
99 |
+
if(element.nodeType==1)
|
100 |
+
elements.push(Element.extend(element));return elements;},ancestors:function(element){return $(element).recursivelyCollect('parentNode');},descendants:function(element){return $(element).select("*");},firstDescendant:function(element){element=$(element).firstChild;while(element&&element.nodeType!=1)element=element.nextSibling;return $(element);},immediateDescendants:function(element){if(!(element=$(element).firstChild))return[];while(element&&element.nodeType!=1)element=element.nextSibling;if(element)return[element].concat($(element).nextSiblings());return[];},previousSiblings:function(element){return $(element).recursivelyCollect('previousSibling');},nextSiblings:function(element){return $(element).recursivelyCollect('nextSibling');},siblings:function(element){element=$(element);return element.previousSiblings().reverse().concat(element.nextSiblings());},match:function(element,selector){if(Object.isString(selector))
|
101 |
+
selector=new Selector(selector);return selector.match($(element));},up:function(element,expression,index){element=$(element);if(arguments.length==1)return $(element.parentNode);var ancestors=element.ancestors();return Object.isNumber(expression)?ancestors[expression]:Selector.findElement(ancestors,expression,index);},down:function(element,expression,index){element=$(element);if(arguments.length==1)return element.firstDescendant();return Object.isNumber(expression)?element.descendants()[expression]:Element.select(element,expression)[index||0];},previous:function(element,expression,index){element=$(element);if(arguments.length==1)return $(Selector.handlers.previousElementSibling(element));var previousSiblings=element.previousSiblings();return Object.isNumber(expression)?previousSiblings[expression]:Selector.findElement(previousSiblings,expression,index);},next:function(element,expression,index){element=$(element);if(arguments.length==1)return $(Selector.handlers.nextElementSibling(element));var nextSiblings=element.nextSiblings();return Object.isNumber(expression)?nextSiblings[expression]:Selector.findElement(nextSiblings,expression,index);},select:function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element,args);},adjacent:function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element.parentNode,args).without(element);},identify:function(element){element=$(element);var id=element.readAttribute('id'),self=arguments.callee;if(id)return id;do{id='anonymous_element_'+self.counter++}while($(id));element.writeAttribute('id',id);return id;},readAttribute:function(element,name){element=$(element);if(Prototype.Browser.IE){var t=Element._attributeTranslations.read;if(t.values[name])return t.values[name](element,name);if(t.names[name])name=t.names[name];if(name.include(':')){return(!element.attributes||!element.attributes[name])?null:element.attributes[name].value;}}
|
102 |
+
return element.getAttribute(name);},writeAttribute:function(element,name,value){element=$(element);var attributes={},t=Element._attributeTranslations.write;if(typeof name=='object')attributes=name;else attributes[name]=Object.isUndefined(value)?true:value;for(var attr in attributes){name=t.names[attr]||attr;value=attributes[attr];if(t.values[attr])name=t.values[attr](element,value);if(value===false||value===null)
|
103 |
+
element.removeAttribute(name);else if(value===true)
|
104 |
+
element.setAttribute(name,name);else element.setAttribute(name,value);}
|
105 |
+
return element;},getHeight:function(element){return $(element).getDimensions().height;},getWidth:function(element){return $(element).getDimensions().width;},classNames:function(element){return new Element.ClassNames(element);},hasClassName:function(element,className){if(!(element=$(element)))return;var elementClassName=element.className;return(elementClassName.length>0&&(elementClassName==className||new RegExp("(^|\\s)"+className+"(\\s|$)").test(elementClassName)));},addClassName:function(element,className){if(!(element=$(element)))return;if(!element.hasClassName(className))
|
106 |
+
element.className+=(element.className?' ':'')+className;return element;},removeClassName:function(element,className){if(!(element=$(element)))return;element.className=element.className.replace(new RegExp("(^|\\s+)"+className+"(\\s+|$)"),' ').strip();return element;},toggleClassName:function(element,className){if(!(element=$(element)))return;return element[element.hasClassName(className)?'removeClassName':'addClassName'](className);},cleanWhitespace:function(element){element=$(element);var node=element.firstChild;while(node){var nextNode=node.nextSibling;if(node.nodeType==3&&!/\S/.test(node.nodeValue))
|
107 |
+
element.removeChild(node);node=nextNode;}
|
108 |
+
return element;},empty:function(element){return $(element).innerHTML.blank();},descendantOf:function(element,ancestor){element=$(element),ancestor=$(ancestor);if(element.compareDocumentPosition)
|
109 |
+
return(element.compareDocumentPosition(ancestor)&8)===8;if(ancestor.contains)
|
110 |
+
return ancestor.contains(element)&&ancestor!==element;while(element=element.parentNode)
|
111 |
+
if(element==ancestor)return true;return false;},scrollTo:function(element){element=$(element);var pos=element.cumulativeOffset();window.scrollTo(pos[0],pos[1]);return element;},getStyle:function(element,style){element=$(element);style=style=='float'?'cssFloat':style.camelize();var value=element.style[style];if(!value||value=='auto'){var css=document.defaultView.getComputedStyle(element,null);value=css?css[style]:null;}
|
112 |
+
if(style=='opacity')return value?parseFloat(value):1.0;return value=='auto'?null:value;},getOpacity:function(element){return $(element).getStyle('opacity');},setStyle:function(element,styles){element=$(element);var elementStyle=element.style,match;if(Object.isString(styles)){element.style.cssText+=';'+styles;return styles.include('opacity')?element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]):element;}
|
113 |
+
for(var property in styles)
|
114 |
+
if(property=='opacity')element.setOpacity(styles[property]);else
|
115 |
+
elementStyle[(property=='float'||property=='cssFloat')?(Object.isUndefined(elementStyle.styleFloat)?'cssFloat':'styleFloat'):property]=styles[property];return element;},setOpacity:function(element,value){element=$(element);element.style.opacity=(value==1||value==='')?'':(value<0.00001)?0:value;return element;},getDimensions:function(element){element=$(element);var display=element.getStyle('display');if(display!='none'&&display!=null)
|
116 |
+
return{width:element.offsetWidth,height:element.offsetHeight};var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='block';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight};},makePositioned:function(element){element=$(element);var pos=Element.getStyle(element,'position');if(pos=='static'||!pos){element._madePositioned=true;element.style.position='relative';if(Prototype.Browser.Opera){element.style.top=0;element.style.left=0;}}
|
117 |
+
return element;},undoPositioned:function(element){element=$(element);if(element._madePositioned){element._madePositioned=undefined;element.style.position=element.style.top=element.style.left=element.style.bottom=element.style.right='';}
|
118 |
+
return element;},makeClipping:function(element){element=$(element);if(element._overflow)return element;element._overflow=Element.getStyle(element,'overflow')||'auto';if(element._overflow!=='hidden')
|
119 |
+
element.style.overflow='hidden';return element;},undoClipping:function(element){element=$(element);if(!element._overflow)return element;element.style.overflow=element._overflow=='auto'?'':element._overflow;element._overflow=null;return element;},cumulativeOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);return Element._returnOffset(valueL,valueT);},positionedOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){if(element.tagName.toUpperCase()=='BODY')break;var p=Element.getStyle(element,'position');if(p!=='static')break;}}while(element);return Element._returnOffset(valueL,valueT);},absolutize:function(element){element=$(element);if(element.getStyle('position')=='absolute')return element;var offsets=element.positionedOffset();var top=offsets[1];var left=offsets[0];var width=element.clientWidth;var height=element.clientHeight;element._originalLeft=left-parseFloat(element.style.left||0);element._originalTop=top-parseFloat(element.style.top||0);element._originalWidth=element.style.width;element._originalHeight=element.style.height;element.style.position='absolute';element.style.top=top+'px';element.style.left=left+'px';element.style.width=width+'px';element.style.height=height+'px';return element;},relativize:function(element){element=$(element);if(element.getStyle('position')=='relative')return element;element.style.position='relative';var top=parseFloat(element.style.top||0)-(element._originalTop||0);var left=parseFloat(element.style.left||0)-(element._originalLeft||0);element.style.top=top+'px';element.style.left=left+'px';element.style.height=element._originalHeight;element.style.width=element._originalWidth;return element;},cumulativeScrollOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode;}while(element);return Element._returnOffset(valueL,valueT);},getOffsetParent:function(element){if(element.offsetParent)return $(element.offsetParent);if(element==document.body)return $(element);while((element=element.parentNode)&&element!=document.body)
|
120 |
+
if(Element.getStyle(element,'position')!='static')
|
121 |
+
return $(element);return $(document.body);},viewportOffset:function(forElement){var valueT=0,valueL=0;var element=forElement;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body&&Element.getStyle(element,'position')=='absolute')break;}while(element=element.offsetParent);element=forElement;do{if(!Prototype.Browser.Opera||(element.tagName&&(element.tagName.toUpperCase()=='BODY'))){valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0;}}while(element=element.parentNode);return Element._returnOffset(valueL,valueT);},clonePosition:function(element,source){var options=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},arguments[2]||{});source=$(source);var p=source.viewportOffset();element=$(element);var delta=[0,0];var parent=null;if(Element.getStyle(element,'position')=='absolute'){parent=element.getOffsetParent();delta=parent.viewportOffset();}
|
122 |
+
if(parent==document.body){delta[0]-=document.body.offsetLeft;delta[1]-=document.body.offsetTop;}
|
123 |
+
if(options.setLeft)element.style.left=(p[0]-delta[0]+options.offsetLeft)+'px';if(options.setTop)element.style.top=(p[1]-delta[1]+options.offsetTop)+'px';if(options.setWidth)element.style.width=source.offsetWidth+'px';if(options.setHeight)element.style.height=source.offsetHeight+'px';return element;}};Element.Methods.identify.counter=1;Object.extend(Element.Methods,{getElementsBySelector:Element.Methods.select,childElements:Element.Methods.immediateDescendants});Element._attributeTranslations={write:{names:{className:'class',htmlFor:'for'},values:{}}};if(Prototype.Browser.Opera){Element.Methods.getStyle=Element.Methods.getStyle.wrap(function(proceed,element,style){switch(style){case'left':case'top':case'right':case'bottom':if(proceed(element,'position')==='static')return null;case'height':case'width':if(!Element.visible(element))return null;var dim=parseInt(proceed(element,style),10);if(dim!==element['offset'+style.capitalize()])
|
124 |
+
return dim+'px';var properties;if(style==='height'){properties=['border-top-width','padding-top','padding-bottom','border-bottom-width'];}
|
125 |
+
else{properties=['border-left-width','padding-left','padding-right','border-right-width'];}
|
126 |
+
return properties.inject(dim,function(memo,property){var val=proceed(element,property);return val===null?memo:memo-parseInt(val,10);})+'px';default:return proceed(element,style);}});Element.Methods.readAttribute=Element.Methods.readAttribute.wrap(function(proceed,element,attribute){if(attribute==='title')return element.title;return proceed(element,attribute);});}
|
127 |
+
else if(Prototype.Browser.IE){Element.Methods.getOffsetParent=Element.Methods.getOffsetParent.wrap(function(proceed,element){element=$(element);try{element.offsetParent}
|
128 |
+
catch(e){return $(document.body)}
|
129 |
+
var position=element.getStyle('position');if(position!=='static')return proceed(element);element.setStyle({position:'relative'});var value=proceed(element);element.setStyle({position:position});return value;});$w('positionedOffset viewportOffset').each(function(method){Element.Methods[method]=Element.Methods[method].wrap(function(proceed,element){element=$(element);try{element.offsetParent}
|
130 |
+
catch(e){return Element._returnOffset(0,0)}
|
131 |
+
var position=element.getStyle('position');if(position!=='static')return proceed(element);var offsetParent=element.getOffsetParent();if(offsetParent&&offsetParent.getStyle('position')==='fixed')
|
132 |
+
offsetParent.setStyle({zoom:1});element.setStyle({position:'relative'});var value=proceed(element);element.setStyle({position:position});return value;});});Element.Methods.cumulativeOffset=Element.Methods.cumulativeOffset.wrap(function(proceed,element){try{element.offsetParent}
|
133 |
+
catch(e){return Element._returnOffset(0,0)}
|
134 |
+
return proceed(element);});Element.Methods.getStyle=function(element,style){element=$(element);style=(style=='float'||style=='cssFloat')?'styleFloat':style.camelize();var value=element.style[style];if(!value&&element.currentStyle)value=element.currentStyle[style];if(style=='opacity'){if(value=(element.getStyle('filter')||'').match(/alpha\(opacity=(.*)\)/))
|
135 |
+
if(value[1])return parseFloat(value[1])/100;return 1.0;}
|
136 |
+
if(value=='auto'){if((style=='width'||style=='height')&&(element.getStyle('display')!='none'))
|
137 |
+
return element['offset'+style.capitalize()]+'px';return null;}
|
138 |
+
return value;};Element.Methods.setOpacity=function(element,value){function stripAlpha(filter){return filter.replace(/alpha\([^\)]*\)/gi,'');}
|
139 |
+
element=$(element);var currentStyle=element.currentStyle;if((currentStyle&&!currentStyle.hasLayout)||(!currentStyle&&element.style.zoom=='normal'))
|
140 |
+
element.style.zoom=1;var filter=element.getStyle('filter'),style=element.style;if(value==1||value===''){(filter=stripAlpha(filter))?style.filter=filter:style.removeAttribute('filter');return element;}else if(value<0.00001)value=0;style.filter=stripAlpha(filter)+'alpha(opacity='+(value*100)+')';return element;};Element._attributeTranslations={read:{names:{'class':'className','for':'htmlFor'},values:{_getAttr:function(element,attribute){return element.getAttribute(attribute,2);},_getAttrNode:function(element,attribute){var node=element.getAttributeNode(attribute);return node?node.value:"";},_getEv:function(element,attribute){attribute=element.getAttribute(attribute);return attribute?attribute.toString().slice(23,-2):null;},_flag:function(element,attribute){return $(element).hasAttribute(attribute)?attribute:null;},style:function(element){return element.style.cssText.toLowerCase();},title:function(element){return element.title;}}}};Element._attributeTranslations.write={names:Object.extend({cellpadding:'cellPadding',cellspacing:'cellSpacing'},Element._attributeTranslations.read.names),values:{checked:function(element,value){element.checked=!!value;},style:function(element,value){element.style.cssText=value?value:'';}}};Element._attributeTranslations.has={};$w('colSpan rowSpan vAlign dateTime accessKey tabIndex '+'encType maxLength readOnly longDesc frameBorder').each(function(attr){Element._attributeTranslations.write.names[attr.toLowerCase()]=attr;Element._attributeTranslations.has[attr.toLowerCase()]=attr;});(function(v){Object.extend(v,{href:v._getAttr,src:v._getAttr,type:v._getAttr,action:v._getAttrNode,disabled:v._flag,checked:v._flag,readonly:v._flag,multiple:v._flag,onload:v._getEv,onunload:v._getEv,onclick:v._getEv,ondblclick:v._getEv,onmousedown:v._getEv,onmouseup:v._getEv,onmouseover:v._getEv,onmousemove:v._getEv,onmouseout:v._getEv,onfocus:v._getEv,onblur:v._getEv,onkeypress:v._getEv,onkeydown:v._getEv,onkeyup:v._getEv,onsubmit:v._getEv,onreset:v._getEv,onselect:v._getEv,onchange:v._getEv});})(Element._attributeTranslations.read.values);}
|
141 |
+
else if(Prototype.Browser.Gecko&&/rv:1\.8\.0/.test(navigator.userAgent)){Element.Methods.setOpacity=function(element,value){element=$(element);element.style.opacity=(value==1)?0.999999:(value==='')?'':(value<0.00001)?0:value;return element;};}
|
142 |
+
else if(Prototype.Browser.WebKit){Element.Methods.setOpacity=function(element,value){element=$(element);element.style.opacity=(value==1||value==='')?'':(value<0.00001)?0:value;if(value==1)
|
143 |
+
if(element.tagName.toUpperCase()=='IMG'&&element.width){element.width++;element.width--;}else try{var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){}
|
144 |
+
return element;};Element.Methods.cumulativeOffset=function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body)
|
145 |
+
if(Element.getStyle(element,'position')=='absolute')break;element=element.offsetParent;}while(element);return Element._returnOffset(valueL,valueT);};}
|
146 |
+
if(Prototype.Browser.IE||Prototype.Browser.Opera){Element.Methods.update=function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content))return element.update().insert(content);content=Object.toHTML(content);var tagName=element.tagName.toUpperCase();if(tagName in Element._insertionTranslations.tags){$A(element.childNodes).each(function(node){element.removeChild(node)});Element._getContentFromAnonymousElement(tagName,content.stripScripts()).each(function(node){element.appendChild(node)});}
|
147 |
+
else element.innerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;};}
|
148 |
+
if('outerHTML'in document.createElement('div')){Element.Methods.replace=function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content)){element.parentNode.replaceChild(content,element);return element;}
|
149 |
+
content=Object.toHTML(content);var parent=element.parentNode,tagName=parent.tagName.toUpperCase();if(Element._insertionTranslations.tags[tagName]){var nextSibling=element.next();var fragments=Element._getContentFromAnonymousElement(tagName,content.stripScripts());parent.removeChild(element);if(nextSibling)
|
150 |
+
fragments.each(function(node){parent.insertBefore(node,nextSibling)});else
|
151 |
+
fragments.each(function(node){parent.appendChild(node)});}
|
152 |
+
else element.outerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;};}
|
153 |
+
Element._returnOffset=function(l,t){var result=[l,t];result.left=l;result.top=t;return result;};Element._getContentFromAnonymousElement=function(tagName,html){var div=new Element('div'),t=Element._insertionTranslations.tags[tagName];if(t){div.innerHTML=t[0]+html+t[1];t[2].times(function(){div=div.firstChild});}else div.innerHTML=html;return $A(div.childNodes);};Element._insertionTranslations={before:function(element,node){element.parentNode.insertBefore(node,element);},top:function(element,node){element.insertBefore(node,element.firstChild);},bottom:function(element,node){element.appendChild(node);},after:function(element,node){element.parentNode.insertBefore(node,element.nextSibling);},tags:{TABLE:['<table>','</table>',1],TBODY:['<table><tbody>','</tbody></table>',2],TR:['<table><tbody><tr>','</tr></tbody></table>',3],TD:['<table><tbody><tr><td>','</td></tr></tbody></table>',4],SELECT:['<select>','</select>',1]}};(function(){Object.extend(this.tags,{THEAD:this.tags.TBODY,TFOOT:this.tags.TBODY,TH:this.tags.TD});}).call(Element._insertionTranslations);Element.Methods.Simulated={hasAttribute:function(element,attribute){attribute=Element._attributeTranslations.has[attribute]||attribute;var node=$(element).getAttributeNode(attribute);return!!(node&&node.specified);}};Element.Methods.ByTag={};Object.extend(Element,Element.Methods);if(!Prototype.BrowserFeatures.ElementExtensions&&document.createElement('div')['__proto__']){window.HTMLElement={};window.HTMLElement.prototype=document.createElement('div')['__proto__'];Prototype.BrowserFeatures.ElementExtensions=true;}
|
154 |
+
Element.extend=(function(){if(Prototype.BrowserFeatures.SpecificElementExtensions)
|
155 |
+
return Prototype.K;var Methods={},ByTag=Element.Methods.ByTag;var extend=Object.extend(function(element){if(!element||element._extendedByPrototype||element.nodeType!=1||element==window)return element;var methods=Object.clone(Methods),tagName=element.tagName.toUpperCase(),property,value;if(ByTag[tagName])Object.extend(methods,ByTag[tagName]);for(property in methods){value=methods[property];if(Object.isFunction(value)&&!(property in element))
|
156 |
+
element[property]=value.methodize();}
|
157 |
+
element._extendedByPrototype=Prototype.emptyFunction;return element;},{refresh:function(){if(!Prototype.BrowserFeatures.ElementExtensions){Object.extend(Methods,Element.Methods);Object.extend(Methods,Element.Methods.Simulated);}}});extend.refresh();return extend;})();Element.hasAttribute=function(element,attribute){if(element.hasAttribute)return element.hasAttribute(attribute);return Element.Methods.Simulated.hasAttribute(element,attribute);};Element.addMethods=function(methods){var F=Prototype.BrowserFeatures,T=Element.Methods.ByTag;if(!methods){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(Element.Methods.ByTag,{"FORM":Object.clone(Form.Methods),"INPUT":Object.clone(Form.Element.Methods),"SELECT":Object.clone(Form.Element.Methods),"TEXTAREA":Object.clone(Form.Element.Methods)});}
|
158 |
+
if(arguments.length==2){var tagName=methods;methods=arguments[1];}
|
159 |
+
if(!tagName)Object.extend(Element.Methods,methods||{});else{if(Object.isArray(tagName))tagName.each(extend);else extend(tagName);}
|
160 |
+
function extend(tagName){tagName=tagName.toUpperCase();if(!Element.Methods.ByTag[tagName])
|
161 |
+
Element.Methods.ByTag[tagName]={};Object.extend(Element.Methods.ByTag[tagName],methods);}
|
162 |
+
function copy(methods,destination,onlyIfAbsent){onlyIfAbsent=onlyIfAbsent||false;for(var property in methods){var value=methods[property];if(!Object.isFunction(value))continue;if(!onlyIfAbsent||!(property in destination))
|
163 |
+
destination[property]=value.methodize();}}
|
164 |
+
function findDOMClass(tagName){var klass;var trans={"OPTGROUP":"OptGroup","TEXTAREA":"TextArea","P":"Paragraph","FIELDSET":"FieldSet","UL":"UList","OL":"OList","DL":"DList","DIR":"Directory","H1":"Heading","H2":"Heading","H3":"Heading","H4":"Heading","H5":"Heading","H6":"Heading","Q":"Quote","INS":"Mod","DEL":"Mod","A":"Anchor","IMG":"Image","CAPTION":"TableCaption","COL":"TableCol","COLGROUP":"TableCol","THEAD":"TableSection","TFOOT":"TableSection","TBODY":"TableSection","TR":"TableRow","TH":"TableCell","TD":"TableCell","FRAMESET":"FrameSet","IFRAME":"IFrame"};if(trans[tagName])klass='HTML'+trans[tagName]+'Element';if(window[klass])return window[klass];klass='HTML'+tagName+'Element';if(window[klass])return window[klass];klass='HTML'+tagName.capitalize()+'Element';if(window[klass])return window[klass];window[klass]={};window[klass].prototype=document.createElement(tagName)['__proto__'];return window[klass];}
|
165 |
+
if(F.ElementExtensions){copy(Element.Methods,HTMLElement.prototype);copy(Element.Methods.Simulated,HTMLElement.prototype,true);}
|
166 |
+
if(F.SpecificElementExtensions){for(var tag in Element.Methods.ByTag){var klass=findDOMClass(tag);if(Object.isUndefined(klass))continue;copy(T[tag],klass.prototype);}}
|
167 |
+
Object.extend(Element,Element.Methods);delete Element.ByTag;if(Element.extend.refresh)Element.extend.refresh();Element.cache={};};document.viewport={getDimensions:function(){var dimensions={},B=Prototype.Browser;$w('width height').each(function(d){var D=d.capitalize();if(B.WebKit&&!document.evaluate){dimensions[d]=self['inner'+D];}else if(B.Opera&&parseFloat(window.opera.version())<9.5){dimensions[d]=document.body['client'+D]}else{dimensions[d]=document.documentElement['client'+D];}});return dimensions;},getWidth:function(){return this.getDimensions().width;},getHeight:function(){return this.getDimensions().height;},getScrollOffsets:function(){return Element._returnOffset(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop);}};var Selector=Class.create({initialize:function(expression){this.expression=expression.strip();if(this.shouldUseSelectorsAPI()){this.mode='selectorsAPI';}else if(this.shouldUseXPath()){this.mode='xpath';this.compileXPathMatcher();}else{this.mode="normal";this.compileMatcher();}},shouldUseXPath:function(){if(!Prototype.BrowserFeatures.XPath)return false;var e=this.expression;if(Prototype.Browser.WebKit&&(e.include("-of-type")||e.include(":empty")))
|
168 |
+
return false;if((/(\[[\w-]*?:|:checked)/).test(e))
|
169 |
+
return false;return true;},shouldUseSelectorsAPI:function(){if(!Prototype.BrowserFeatures.SelectorsAPI)return false;if(!Selector._div)Selector._div=new Element('div');try{Selector._div.querySelector(this.expression);}catch(e){return false;}
|
170 |
+
return true;},compileMatcher:function(){var e=this.expression,ps=Selector.patterns,h=Selector.handlers,c=Selector.criteria,le,p,m;if(Selector._cache[e]){this.matcher=Selector._cache[e];return;}
|
171 |
+
this.matcher=["this.matcher = function(root) {","var r = root, h = Selector.handlers, c = false, n;"];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in ps){p=ps[i];if(m=e.match(p)){this.matcher.push(Object.isFunction(c[i])?c[i](m):new Template(c[i]).evaluate(m));e=e.replace(m[0],'');break;}}}
|
172 |
+
this.matcher.push("return h.unique(n);\n}");eval(this.matcher.join('\n'));Selector._cache[this.expression]=this.matcher;},compileXPathMatcher:function(){var e=this.expression,ps=Selector.patterns,x=Selector.xpath,le,m;if(Selector._cache[e]){this.xpath=Selector._cache[e];return;}
|
173 |
+
this.matcher=['.//*'];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in ps){if(m=e.match(ps[i])){this.matcher.push(Object.isFunction(x[i])?x[i](m):new Template(x[i]).evaluate(m));e=e.replace(m[0],'');break;}}}
|
174 |
+
this.xpath=this.matcher.join('');Selector._cache[this.expression]=this.xpath;},findElements:function(root){root=root||document;var e=this.expression,results;switch(this.mode){case'selectorsAPI':if(root!==document){var oldId=root.id,id=$(root).identify();e="#"+id+" "+e;}
|
175 |
+
results=$A(root.querySelectorAll(e)).map(Element.extend);root.id=oldId;return results;case'xpath':return document._getElementsByXPath(this.xpath,root);default:return this.matcher(root);}},match:function(element){this.tokens=[];var e=this.expression,ps=Selector.patterns,as=Selector.assertions;var le,p,m;while(e&&le!==e&&(/\S/).test(e)){le=e;for(var i in ps){p=ps[i];if(m=e.match(p)){if(as[i]){this.tokens.push([i,Object.clone(m)]);e=e.replace(m[0],'');}else{return this.findElements(document).include(element);}}}}
|
176 |
+
var match=true,name,matches;for(var i=0,token;token=this.tokens[i];i++){name=token[0],matches=token[1];if(!Selector.assertions[name](element,matches)){match=false;break;}}
|
177 |
+
return match;},toString:function(){return this.expression;},inspect:function(){return"#<Selector:"+this.expression.inspect()+">";}});Object.extend(Selector,{_cache:{},xpath:{descendant:"//*",child:"/*",adjacent:"/following-sibling::*[1]",laterSibling:'/following-sibling::*',tagName:function(m){if(m[1]=='*')return'';return"[local-name()='"+m[1].toLowerCase()+"' or local-name()='"+m[1].toUpperCase()+"']";},className:"[contains(concat(' ', @class, ' '), ' #{1} ')]",id:"[@id='#{1}']",attrPresence:function(m){m[1]=m[1].toLowerCase();return new Template("[@#{1}]").evaluate(m);},attr:function(m){m[1]=m[1].toLowerCase();m[3]=m[5]||m[6];return new Template(Selector.xpath.operators[m[2]]).evaluate(m);},pseudo:function(m){var h=Selector.xpath.pseudos[m[1]];if(!h)return'';if(Object.isFunction(h))return h(m);return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);},operators:{'=':"[@#{1}='#{3}']",'!=':"[@#{1}!='#{3}']",'^=':"[starts-with(@#{1}, '#{3}')]",'$=':"[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",'*=':"[contains(@#{1}, '#{3}')]",'~=':"[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",'|=':"[contains(concat('-', @#{1}, '-'), '-#{3}-')]"},pseudos:{'first-child':'[not(preceding-sibling::*)]','last-child':'[not(following-sibling::*)]','only-child':'[not(preceding-sibling::* or following-sibling::*)]','empty':"[count(*) = 0 and (count(text()) = 0)]",'checked':"[@checked]",'disabled':"[(@disabled) and (@type!='hidden')]",'enabled':"[not(@disabled) and (@type!='hidden')]",'not':function(m){var e=m[6],p=Selector.patterns,x=Selector.xpath,le,v;var exclusion=[];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in p){if(m=e.match(p[i])){v=Object.isFunction(x[i])?x[i](m):new Template(x[i]).evaluate(m);exclusion.push("("+v.substring(1,v.length-1)+")");e=e.replace(m[0],'');break;}}}
|
178 |
+
return"[not("+exclusion.join(" and ")+")]";},'nth-child':function(m){return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ",m);},'nth-last-child':function(m){return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ",m);},'nth-of-type':function(m){return Selector.xpath.pseudos.nth("position() ",m);},'nth-last-of-type':function(m){return Selector.xpath.pseudos.nth("(last() + 1 - position()) ",m);},'first-of-type':function(m){m[6]="1";return Selector.xpath.pseudos['nth-of-type'](m);},'last-of-type':function(m){m[6]="1";return Selector.xpath.pseudos['nth-last-of-type'](m);},'only-of-type':function(m){var p=Selector.xpath.pseudos;return p['first-of-type'](m)+p['last-of-type'](m);},nth:function(fragment,m){var mm,formula=m[6],predicate;if(formula=='even')formula='2n+0';if(formula=='odd')formula='2n+1';if(mm=formula.match(/^(\d+)$/))
|
179 |
+
return'['+fragment+"= "+mm[1]+']';if(mm=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(mm[1]=="-")mm[1]=-1;var a=mm[1]?Number(mm[1]):1;var b=mm[2]?Number(mm[2]):0;predicate="[((#{fragment} - #{b}) mod #{a} = 0) and "+"((#{fragment} - #{b}) div #{a} >= 0)]";return new Template(predicate).evaluate({fragment:fragment,a:a,b:b});}}}},criteria:{tagName:'n = h.tagName(n, r, "#{1}", c); c = false;',className:'n = h.className(n, r, "#{1}", c); c = false;',id:'n = h.id(n, r, "#{1}", c); c = false;',attrPresence:'n = h.attrPresence(n, r, "#{1}", c); c = false;',attr:function(m){m[3]=(m[5]||m[6]);return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m);},pseudo:function(m){if(m[6])m[6]=m[6].replace(/"/g,'\\"');return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);},descendant:'c = "descendant";',child:'c = "child";',adjacent:'c = "adjacent";',laterSibling:'c = "laterSibling";'},patterns:{laterSibling:/^\s*~\s*/,child:/^\s*>\s*/,adjacent:/^\s*\+\s*/,descendant:/^\s/,tagName:/^\s*(\*|[\w\-]+)(\b|$)?/,id:/^#([\w\-\*]+)(\b|$)/,className:/^\.([\w\-\*]+)(\b|$)/,pseudo:/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/,attrPresence:/^\[((?:[\w]+:)?[\w]+)\]/,attr:/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/},assertions:{tagName:function(element,matches){return matches[1].toUpperCase()==element.tagName.toUpperCase();},className:function(element,matches){return Element.hasClassName(element,matches[1]);},id:function(element,matches){return element.id===matches[1];},attrPresence:function(element,matches){return Element.hasAttribute(element,matches[1]);},attr:function(element,matches){var nodeValue=Element.readAttribute(element,matches[1]);return nodeValue&&Selector.operators[matches[2]](nodeValue,matches[5]||matches[6]);}},handlers:{concat:function(a,b){for(var i=0,node;node=b[i];i++)
|
180 |
+
a.push(node);return a;},mark:function(nodes){var _true=Prototype.emptyFunction;for(var i=0,node;node=nodes[i];i++)
|
181 |
+
node._countedByPrototype=_true;return nodes;},unmark:function(nodes){for(var i=0,node;node=nodes[i];i++)
|
182 |
+
node._countedByPrototype=undefined;return nodes;},index:function(parentNode,reverse,ofType){parentNode._countedByPrototype=Prototype.emptyFunction;if(reverse){for(var nodes=parentNode.childNodes,i=nodes.length-1,j=1;i>=0;i--){var node=nodes[i];if(node.nodeType==1&&(!ofType||node._countedByPrototype))node.nodeIndex=j++;}}else{for(var i=0,j=1,nodes=parentNode.childNodes;node=nodes[i];i++)
|
183 |
+
if(node.nodeType==1&&(!ofType||node._countedByPrototype))node.nodeIndex=j++;}},unique:function(nodes){if(nodes.length==0)return nodes;var results=[],n;for(var i=0,l=nodes.length;i<l;i++)
|
184 |
+
if(!(n=nodes[i])._countedByPrototype){n._countedByPrototype=Prototype.emptyFunction;results.push(Element.extend(n));}
|
185 |
+
return Selector.handlers.unmark(results);},descendant:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++)
|
186 |
+
h.concat(results,node.getElementsByTagName('*'));return results;},child:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++){for(var j=0,child;child=node.childNodes[j];j++)
|
187 |
+
if(child.nodeType==1&&child.tagName!='!')results.push(child);}
|
188 |
+
return results;},adjacent:function(nodes){for(var i=0,results=[],node;node=nodes[i];i++){var next=this.nextElementSibling(node);if(next)results.push(next);}
|
189 |
+
return results;},laterSibling:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++)
|
190 |
+
h.concat(results,Element.nextSiblings(node));return results;},nextElementSibling:function(node){while(node=node.nextSibling)
|
191 |
+
if(node.nodeType==1)return node;return null;},previousElementSibling:function(node){while(node=node.previousSibling)
|
192 |
+
if(node.nodeType==1)return node;return null;},tagName:function(nodes,root,tagName,combinator){var uTagName=tagName.toUpperCase();var results=[],h=Selector.handlers;if(nodes){if(combinator){if(combinator=="descendant"){for(var i=0,node;node=nodes[i];i++)
|
193 |
+
h.concat(results,node.getElementsByTagName(tagName));return results;}else nodes=this[combinator](nodes);if(tagName=="*")return nodes;}
|
194 |
+
for(var i=0,node;node=nodes[i];i++)
|
195 |
+
if(node.tagName.toUpperCase()===uTagName)results.push(node);return results;}else return root.getElementsByTagName(tagName);},id:function(nodes,root,id,combinator){var targetNode=$(id),h=Selector.handlers;if(!targetNode)return[];if(!nodes&&root==document)return[targetNode];if(nodes){if(combinator){if(combinator=='child'){for(var i=0,node;node=nodes[i];i++)
|
196 |
+
if(targetNode.parentNode==node)return[targetNode];}else if(combinator=='descendant'){for(var i=0,node;node=nodes[i];i++)
|
197 |
+
if(Element.descendantOf(targetNode,node))return[targetNode];}else if(combinator=='adjacent'){for(var i=0,node;node=nodes[i];i++)
|
198 |
+
if(Selector.handlers.previousElementSibling(targetNode)==node)
|
199 |
+
return[targetNode];}else nodes=h[combinator](nodes);}
|
200 |
+
for(var i=0,node;node=nodes[i];i++)
|
201 |
+
if(node==targetNode)return[targetNode];return[];}
|
202 |
+
return(targetNode&&Element.descendantOf(targetNode,root))?[targetNode]:[];},className:function(nodes,root,className,combinator){if(nodes&&combinator)nodes=this[combinator](nodes);return Selector.handlers.byClassName(nodes,root,className);},byClassName:function(nodes,root,className){if(!nodes)nodes=Selector.handlers.descendant([root]);var needle=' '+className+' ';for(var i=0,results=[],node,nodeClassName;node=nodes[i];i++){nodeClassName=node.className;if(nodeClassName.length==0)continue;if(nodeClassName==className||(' '+nodeClassName+' ').include(needle))
|
203 |
+
results.push(node);}
|
204 |
+
return results;},attrPresence:function(nodes,root,attr,combinator){if(!nodes)nodes=root.getElementsByTagName("*");if(nodes&&combinator)nodes=this[combinator](nodes);var results=[];for(var i=0,node;node=nodes[i];i++)
|
205 |
+
if(Element.hasAttribute(node,attr))results.push(node);return results;},attr:function(nodes,root,attr,value,operator,combinator){if(!nodes)nodes=root.getElementsByTagName("*");if(nodes&&combinator)nodes=this[combinator](nodes);var handler=Selector.operators[operator],results=[];for(var i=0,node;node=nodes[i];i++){var nodeValue=Element.readAttribute(node,attr);if(nodeValue===null)continue;if(handler(nodeValue,value))results.push(node);}
|
206 |
+
return results;},pseudo:function(nodes,name,value,root,combinator){if(nodes&&combinator)nodes=this[combinator](nodes);if(!nodes)nodes=root.getElementsByTagName("*");return Selector.pseudos[name](nodes,value,root);}},pseudos:{'first-child':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(Selector.handlers.previousElementSibling(node))continue;results.push(node);}
|
207 |
+
return results;},'last-child':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(Selector.handlers.nextElementSibling(node))continue;results.push(node);}
|
208 |
+
return results;},'only-child':function(nodes,value,root){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++)
|
209 |
+
if(!h.previousElementSibling(node)&&!h.nextElementSibling(node))
|
210 |
+
results.push(node);return results;},'nth-child':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root);},'nth-last-child':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,true);},'nth-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,false,true);},'nth-last-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,true,true);},'first-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,"1",root,false,true);},'last-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,"1",root,true,true);},'only-of-type':function(nodes,formula,root){var p=Selector.pseudos;return p['last-of-type'](p['first-of-type'](nodes,formula,root),formula,root);},getIndices:function(a,b,total){if(a==0)return b>0?[b]:[];return $R(1,total).inject([],function(memo,i){if(0==(i-b)%a&&(i-b)/a>=0)memo.push(i);return memo;});},nth:function(nodes,formula,root,reverse,ofType){if(nodes.length==0)return[];if(formula=='even')formula='2n+0';if(formula=='odd')formula='2n+1';var h=Selector.handlers,results=[],indexed=[],m;h.mark(nodes);for(var i=0,node;node=nodes[i];i++){if(!node.parentNode._countedByPrototype){h.index(node.parentNode,reverse,ofType);indexed.push(node.parentNode);}}
|
211 |
+
if(formula.match(/^\d+$/)){formula=Number(formula);for(var i=0,node;node=nodes[i];i++)
|
212 |
+
if(node.nodeIndex==formula)results.push(node);}else if(m=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(m[1]=="-")m[1]=-1;var a=m[1]?Number(m[1]):1;var b=m[2]?Number(m[2]):0;var indices=Selector.pseudos.getIndices(a,b,nodes.length);for(var i=0,node,l=indices.length;node=nodes[i];i++){for(var j=0;j<l;j++)
|
213 |
+
if(node.nodeIndex==indices[j])results.push(node);}}
|
214 |
+
h.unmark(nodes);h.unmark(indexed);return results;},'empty':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(node.tagName=='!'||node.firstChild)continue;results.push(node);}
|
215 |
+
return results;},'not':function(nodes,selector,root){var h=Selector.handlers,selectorType,m;var exclusions=new Selector(selector).findElements(root);h.mark(exclusions);for(var i=0,results=[],node;node=nodes[i];i++)
|
216 |
+
if(!node._countedByPrototype)results.push(node);h.unmark(exclusions);return results;},'enabled':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++)
|
217 |
+
if(!node.disabled&&(!node.type||node.type!=='hidden'))
|
218 |
+
results.push(node);return results;},'disabled':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++)
|
219 |
+
if(node.disabled)results.push(node);return results;},'checked':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++)
|
220 |
+
if(node.checked)results.push(node);return results;}},operators:{'=':function(nv,v){return nv==v;},'!=':function(nv,v){return nv!=v;},'^=':function(nv,v){return nv==v||nv&&nv.startsWith(v);},'$=':function(nv,v){return nv==v||nv&&nv.endsWith(v);},'*=':function(nv,v){return nv==v||nv&&nv.include(v);},'$=':function(nv,v){return nv.endsWith(v);},'*=':function(nv,v){return nv.include(v);},'~=':function(nv,v){return(' '+nv+' ').include(' '+v+' ');},'|=':function(nv,v){return('-'+(nv||"").toUpperCase()+'-').include('-'+(v||"").toUpperCase()+'-');}},split:function(expression){var expressions=[];expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/,function(m){expressions.push(m[1].strip());});return expressions;},matchElements:function(elements,expression){var matches=$$(expression),h=Selector.handlers;h.mark(matches);for(var i=0,results=[],element;element=elements[i];i++)
|
221 |
+
if(element._countedByPrototype)results.push(element);h.unmark(matches);return results;},findElement:function(elements,expression,index){if(Object.isNumber(expression)){index=expression;expression=false;}
|
222 |
+
return Selector.matchElements(elements,expression||'*')[index||0];},findChildElements:function(element,expressions){expressions=Selector.split(expressions.join(','));var results=[],h=Selector.handlers;for(var i=0,l=expressions.length,selector;i<l;i++){selector=new Selector(expressions[i].strip());h.concat(results,selector.findElements(element));}
|
223 |
+
return(l>1)?h.unique(results):results;}});if(Prototype.Browser.IE){Object.extend(Selector.handlers,{concat:function(a,b){for(var i=0,node;node=b[i];i++)
|
224 |
+
if(node.tagName!=="!")a.push(node);return a;},unmark:function(nodes){for(var i=0,node;node=nodes[i];i++)
|
225 |
+
node.removeAttribute('_countedByPrototype');return nodes;}});}
|
226 |
+
function $$(){return Selector.findChildElements(document,$A(arguments));}
|
227 |
+
var Form={reset:function(form){$(form).reset();return form;},serializeElements:function(elements,options){if(typeof options!='object')options={hash:!!options};else if(Object.isUndefined(options.hash))options.hash=true;var key,value,submitted=false,submit=options.submit;var data=elements.inject({},function(result,element){if(!element.disabled&&element.name){key=element.name;value=$(element).getValue();if(value!=null&&element.type!='file'&&(element.type!='submit'||(!submitted&&submit!==false&&(!submit||key==submit)&&(submitted=true)))){if(key in result){if(!Object.isArray(result[key]))result[key]=[result[key]];result[key].push(value);}
|
228 |
+
else result[key]=value;}}
|
229 |
+
return result;});return options.hash?data:Object.toQueryString(data);}};Form.Methods={serialize:function(form,options){return Form.serializeElements(Form.getElements(form),options);},getElements:function(form){return $A($(form).getElementsByTagName('*')).inject([],function(elements,child){if(Form.Element.Serializers[child.tagName.toLowerCase()])
|
230 |
+
elements.push(Element.extend(child));return elements;});},getInputs:function(form,typeName,name){form=$(form);var inputs=form.getElementsByTagName('input');if(!typeName&&!name)return $A(inputs).map(Element.extend);for(var i=0,matchingInputs=[],length=inputs.length;i<length;i++){var input=inputs[i];if((typeName&&input.type!=typeName)||(name&&input.name!=name))
|
231 |
+
continue;matchingInputs.push(Element.extend(input));}
|
232 |
+
return matchingInputs;},disable:function(form){form=$(form);Form.getElements(form).invoke('disable');return form;},enable:function(form){form=$(form);Form.getElements(form).invoke('enable');return form;},findFirstElement:function(form){var elements=$(form).getElements().findAll(function(element){return'hidden'!=element.type&&!element.disabled;});var firstByIndex=elements.findAll(function(element){return element.hasAttribute('tabIndex')&&element.tabIndex>=0;}).sortBy(function(element){return element.tabIndex}).first();return firstByIndex?firstByIndex:elements.find(function(element){return['input','select','textarea'].include(element.tagName.toLowerCase());});},focusFirstElement:function(form){form=$(form);form.findFirstElement().activate();return form;},request:function(form,options){form=$(form),options=Object.clone(options||{});var params=options.parameters,action=form.readAttribute('action')||'';if(action.blank())action=window.location.href;options.parameters=form.serialize(true);if(params){if(Object.isString(params))params=params.toQueryParams();Object.extend(options.parameters,params);}
|
233 |
+
if(form.hasAttribute('method')&&!options.method)
|
234 |
+
options.method=form.method;return new Ajax.Request(action,options);}};Form.Element={focus:function(element){$(element).focus();return element;},select:function(element){$(element).select();return element;}};Form.Element.Methods={serialize:function(element){element=$(element);if(!element.disabled&&element.name){var value=element.getValue();if(value!=undefined){var pair={};pair[element.name]=value;return Object.toQueryString(pair);}}
|
235 |
+
return'';},getValue:function(element){element=$(element);var method=element.tagName.toLowerCase();return Form.Element.Serializers[method](element);},setValue:function(element,value){element=$(element);var method=element.tagName.toLowerCase();Form.Element.Serializers[method](element,value);return element;},clear:function(element){$(element).value='';return element;},present:function(element){return $(element).value!='';},activate:function(element){element=$(element);try{element.focus();if(element.select&&(element.tagName.toLowerCase()!='input'||!['button','reset','submit'].include(element.type)))
|
236 |
+
element.select();}catch(e){}
|
237 |
+
return element;},disable:function(element){element=$(element);element.disabled=true;return element;},enable:function(element){element=$(element);element.disabled=false;return element;}};var Field=Form.Element;var $F=Form.Element.Methods.getValue;Form.Element.Serializers={input:function(element,value){switch(element.type.toLowerCase()){case'checkbox':case'radio':return Form.Element.Serializers.inputSelector(element,value);default:return Form.Element.Serializers.textarea(element,value);}},inputSelector:function(element,value){if(Object.isUndefined(value))return element.checked?element.value:null;else element.checked=!!value;},textarea:function(element,value){if(Object.isUndefined(value))return element.value;else element.value=value;},select:function(element,value){if(Object.isUndefined(value))
|
238 |
+
return this[element.type=='select-one'?'selectOne':'selectMany'](element);else{var opt,currentValue,single=!Object.isArray(value);for(var i=0,length=element.length;i<length;i++){opt=element.options[i];currentValue=this.optionValue(opt);if(single){if(currentValue==value){opt.selected=true;return;}}
|
239 |
+
else opt.selected=value.include(currentValue);}}},selectOne:function(element){var index=element.selectedIndex;return index>=0?this.optionValue(element.options[index]):null;},selectMany:function(element){var values,length=element.length;if(!length)return null;for(var i=0,values=[];i<length;i++){var opt=element.options[i];if(opt.selected)values.push(this.optionValue(opt));}
|
240 |
+
return values;},optionValue:function(opt){return Element.extend(opt).hasAttribute('value')?opt.value:opt.text;}};Abstract.TimedObserver=Class.create(PeriodicalExecuter,{initialize:function($super,element,frequency,callback){$super(callback,frequency);this.element=$(element);this.lastValue=this.getValue();},execute:function(){var value=this.getValue();if(Object.isString(this.lastValue)&&Object.isString(value)?this.lastValue!=value:String(this.lastValue)!=String(value)){this.callback(this.element,value);this.lastValue=value;}}});Form.Element.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.Element.getValue(this.element);}});Form.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.serialize(this.element);}});Abstract.EventObserver=Class.create({initialize:function(element,callback){this.element=$(element);this.callback=callback;this.lastValue=this.getValue();if(this.element.tagName.toLowerCase()=='form')
|
241 |
+
this.registerFormCallbacks();else
|
242 |
+
this.registerCallback(this.element);},onElementEvent:function(){var value=this.getValue();if(this.lastValue!=value){this.callback(this.element,value);this.lastValue=value;}},registerFormCallbacks:function(){Form.getElements(this.element).each(this.registerCallback,this);},registerCallback:function(element){if(element.type){switch(element.type.toLowerCase()){case'checkbox':case'radio':Event.observe(element,'click',this.onElementEvent.bind(this));break;default:Event.observe(element,'change',this.onElementEvent.bind(this));break;}}}});Form.Element.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.Element.getValue(this.element);}});Form.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.serialize(this.element);}});if(!window.Event)var Event={};Object.extend(Event,{KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,KEY_INSERT:45,cache:{},relatedTarget:function(event){var element;switch(event.type){case'mouseover':element=event.fromElement;break;case'mouseout':element=event.toElement;break;default:return null;}
|
243 |
+
return Element.extend(element);}});Event.Methods=(function(){var isButton;if(Prototype.Browser.IE){var buttonMap={0:1,1:4,2:2};isButton=function(event,code){return event.button==buttonMap[code];};}else if(Prototype.Browser.WebKit){isButton=function(event,code){switch(code){case 0:return event.which==1&&!event.metaKey;case 1:return event.which==1&&event.metaKey;default:return false;}};}else{isButton=function(event,code){return event.which?(event.which===code+1):(event.button===code);};}
|
244 |
+
return{isLeftClick:function(event){return isButton(event,0)},isMiddleClick:function(event){return isButton(event,1)},isRightClick:function(event){return isButton(event,2)},element:function(event){event=Event.extend(event);var node=event.target,type=event.type,currentTarget=event.currentTarget;if(currentTarget&¤tTarget.tagName){if(type==='load'||type==='error'||(type==='click'&¤tTarget.tagName.toLowerCase()==='input'&¤tTarget.type==='radio'))
|
245 |
+
node=currentTarget;}
|
246 |
+
if(node){if(node.nodeType==Node.TEXT_NODE)node=node.parentNode;return Element.extend(node);}else return false;},findElement:function(event,expression){var element=Event.element(event);if(!expression)return element;var elements=[element].concat(element.ancestors());return Selector.findElement(elements,expression,0);},pointer:function(event){var docElement=document.documentElement,body=document.body||{scrollLeft:0,scrollTop:0};return{x:event.pageX||(event.clientX+
|
247 |
+
(docElement.scrollLeft||body.scrollLeft)-
|
248 |
+
(docElement.clientLeft||0)),y:event.pageY||(event.clientY+
|
249 |
+
(docElement.scrollTop||body.scrollTop)-
|
250 |
+
(docElement.clientTop||0))};},pointerX:function(event){return Event.pointer(event).x},pointerY:function(event){return Event.pointer(event).y},stop:function(event){Event.extend(event);event.preventDefault();event.stopPropagation();event.stopped=true;}};})();Event.extend=(function(){var methods=Object.keys(Event.Methods).inject({},function(m,name){m[name]=Event.Methods[name].methodize();return m;});if(Prototype.Browser.IE){Object.extend(methods,{stopPropagation:function(){this.cancelBubble=true},preventDefault:function(){this.returnValue=false},inspect:function(){return"[object Event]"}});return function(event){if(!event)return false;if(event._extendedByPrototype)return event;event._extendedByPrototype=Prototype.emptyFunction;var pointer=Event.pointer(event);Object.extend(event,{target:event.srcElement,relatedTarget:Event.relatedTarget(event),pageX:pointer.x,pageY:pointer.y});return Object.extend(event,methods);};}else{Event.prototype=Event.prototype||document.createEvent("HTMLEvents")['__proto__'];Object.extend(Event.prototype,methods);return Prototype.K;}})();Object.extend(Event,(function(){var cache=Event.cache;function getEventID(element){try{if(element._prototypeEventID)return element._prototypeEventID[0];arguments.callee.id=arguments.callee.id||1;return element._prototypeEventID=[++arguments.callee.id];}catch(error){return false;}}
|
251 |
+
function getDOMEventName(eventName){if(eventName&&eventName.include(':'))return"dataavailable";return eventName;}
|
252 |
+
function getCacheForID(id){return cache[id]=cache[id]||{};}
|
253 |
+
function getWrappersForEventName(id,eventName){var c=getCacheForID(id);return c[eventName]=c[eventName]||[];}
|
254 |
+
function createWrapper(element,eventName,handler){var id=getEventID(element);var c=getWrappersForEventName(id,eventName);if(c.pluck("handler").include(handler))return false;var wrapper=function(event){if(!Event||!Event.extend||(event.eventName&&event.eventName!=eventName))
|
255 |
+
return false;Event.extend(event);handler.call(element,event);};wrapper.handler=handler;c.push(wrapper);return wrapper;}
|
256 |
+
function findWrapper(id,eventName,handler){var c=getWrappersForEventName(id,eventName);return c.find(function(wrapper){return wrapper.handler==handler});}
|
257 |
+
function destroyWrapper(id,eventName,handler){var c=getCacheForID(id);if(!c[eventName])return false;c[eventName]=c[eventName].without(findWrapper(id,eventName,handler));}
|
258 |
+
function destroyCache(){for(var id in cache)
|
259 |
+
for(var eventName in cache[id])
|
260 |
+
cache[id][eventName]=null;}
|
261 |
+
if(window.attachEvent){window.attachEvent("onunload",destroyCache);}
|
262 |
+
if(Prototype.Browser.WebKit){window.addEventListener('unload',Prototype.emptyFunction,false);}
|
263 |
+
return{observe:function(element,eventName,handler){element=$(element);var name=getDOMEventName(eventName);var wrapper=createWrapper(element,eventName,handler);if(!wrapper)return element;if(element.addEventListener){element.addEventListener(name,wrapper,false);}else{element.attachEvent("on"+name,wrapper);}
|
264 |
+
return element;},stopObserving:function(element,eventName,handler){element=$(element);var id=getEventID(element),name=getDOMEventName(eventName);if(!handler&&eventName){getWrappersForEventName(id,eventName).each(function(wrapper){element.stopObserving(eventName,wrapper.handler);});return element;}else if(!eventName){Object.keys(getCacheForID(id)).each(function(eventName){element.stopObserving(eventName);});return element;}
|
265 |
+
var wrapper=findWrapper(id,eventName,handler);if(!wrapper)return element;if(element.removeEventListener){element.removeEventListener(name,wrapper,false);}else{element.detachEvent("on"+name,wrapper);}
|
266 |
+
destroyWrapper(id,eventName,handler);return element;},fire:function(element,eventName,memo){element=$(element);if(element==document&&document.createEvent&&!element.dispatchEvent)
|
267 |
+
element=document.documentElement;var event;if(document.createEvent){event=document.createEvent("HTMLEvents");event.initEvent("dataavailable",true,true);}else{event=document.createEventObject();event.eventType="ondataavailable";}
|
268 |
+
event.eventName=eventName;event.memo=memo||{};if(document.createEvent){element.dispatchEvent(event);}else{element.fireEvent(event.eventType,event);}
|
269 |
+
return Event.extend(event);}};})());Object.extend(Event,Event.Methods);Element.addMethods({fire:Event.fire,observe:Event.observe,stopObserving:Event.stopObserving});Object.extend(document,{fire:Element.Methods.fire.methodize(),observe:Element.Methods.observe.methodize(),stopObserving:Element.Methods.stopObserving.methodize(),loaded:false});(function(){var timer;function fireContentLoadedEvent(){if(document.loaded)return;if(timer)window.clearInterval(timer);document.fire("dom:loaded");document.loaded=true;}
|
270 |
+
if(document.addEventListener){if(Prototype.Browser.WebKit){timer=window.setInterval(function(){if(/loaded|complete/.test(document.readyState))
|
271 |
+
fireContentLoadedEvent();},0);Event.observe(window,"load",fireContentLoadedEvent);}else{document.addEventListener("DOMContentLoaded",fireContentLoadedEvent,false);}}else{document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");$("__onDOMContentLoaded").onreadystatechange=function(){if(this.readyState=="complete"){this.onreadystatechange=null;fireContentLoadedEvent();}};}})();Hash.toQueryString=Object.toQueryString;var Toggle={display:Element.toggle};Element.Methods.childOf=Element.Methods.descendantOf;var Insertion={Before:function(element,content){return Element.insert(element,{before:content});},Top:function(element,content){return Element.insert(element,{top:content});},Bottom:function(element,content){return Element.insert(element,{bottom:content});},After:function(element,content){return Element.insert(element,{after:content});}};var $continue=new Error('"throw $continue" is deprecated, use "return" instead');var Position={includeScrollOffsets:false,prepare:function(){this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;},within:function(element,x,y){if(this.includeScrollOffsets)
|
272 |
+
return this.withinIncludingScrolloffsets(element,x,y);this.xcomp=x;this.ycomp=y;this.offset=Element.cumulativeOffset(element);return(y>=this.offset[1]&&y<this.offset[1]+element.offsetHeight&&x>=this.offset[0]&&x<this.offset[0]+element.offsetWidth);},withinIncludingScrolloffsets:function(element,x,y){var offsetcache=Element.cumulativeScrollOffset(element);this.xcomp=x+offsetcache[0]-this.deltaX;this.ycomp=y+offsetcache[1]-this.deltaY;this.offset=Element.cumulativeOffset(element);return(this.ycomp>=this.offset[1]&&this.ycomp<this.offset[1]+element.offsetHeight&&this.xcomp>=this.offset[0]&&this.xcomp<this.offset[0]+element.offsetWidth);},overlap:function(mode,element){if(!mode)return 0;if(mode=='vertical')
|
273 |
+
return((this.offset[1]+element.offsetHeight)-this.ycomp)/element.offsetHeight;if(mode=='horizontal')
|
274 |
+
return((this.offset[0]+element.offsetWidth)-this.xcomp)/element.offsetWidth;},cumulativeOffset:Element.Methods.cumulativeOffset,positionedOffset:Element.Methods.positionedOffset,absolutize:function(element){Position.prepare();return Element.absolutize(element);},relativize:function(element){Position.prepare();return Element.relativize(element);},realOffset:Element.Methods.cumulativeScrollOffset,offsetParent:Element.Methods.getOffsetParent,page:Element.Methods.viewportOffset,clone:function(source,target,options){options=options||{};return Element.clonePosition(target,source,options);}};if(!document.getElementsByClassName)document.getElementsByClassName=function(instanceMethods){function iter(name){return name.blank()?null:"[contains(concat(' ', @class, ' '), ' "+name+" ')]";}
|
275 |
+
instanceMethods.getElementsByClassName=Prototype.BrowserFeatures.XPath?function(element,className){className=className.toString().strip();var cond=/\s/.test(className)?$w(className).map(iter).join(''):iter(className);return cond?document._getElementsByXPath('.//*'+cond,element):[];}:function(element,className){className=className.toString().strip();var elements=[],classNames=(/\s/.test(className)?$w(className):null);if(!classNames&&!className)return elements;var nodes=$(element).getElementsByTagName('*');className=' '+className+' ';for(var i=0,child,cn;child=nodes[i];i++){if(child.className&&(cn=' '+child.className+' ')&&(cn.include(className)||(classNames&&classNames.all(function(name){return!name.toString().blank()&&cn.include(' '+name+' ');}))))
|
276 |
+
elements.push(Element.extend(child));}
|
277 |
+
return elements;};return function(className,parentElement){return $(parentElement||document.body).getElementsByClassName(className);};}(Element.Methods);Element.ClassNames=Class.create();Element.ClassNames.prototype={initialize:function(element){this.element=$(element);},_each:function(iterator){this.element.className.split(/\s+/).select(function(name){return name.length>0;})._each(iterator);},set:function(className){this.element.className=className;},add:function(classNameToAdd){if(this.include(classNameToAdd))return;this.set($A(this).concat(classNameToAdd).join(' '));},remove:function(classNameToRemove){if(!this.include(classNameToRemove))return;this.set($A(this).without(classNameToRemove).join(' '));},toString:function(){return $A(this).join(' ');}};Object.extend(Element.ClassNames.prototype,Enumerable);Element.addMethods();;var Validator=Class.create();Validator.prototype={initialize:function(className,error,test,options){if(typeof test=='function'){this.options=$H(options);this._test=test;}else{this.options=$H(test);this._test=function(){return true};}
|
278 |
+
this.error=error||'Validation failed.';this.className=className;},test:function(v,elm){return(this._test(v,elm)&&this.options.all(function(p){return Validator.methods[p.key]?Validator.methods[p.key](v,elm,p.value):true;}));}}
|
279 |
+
Validator.methods={pattern:function(v,elm,opt){return Validation.get('IsEmpty').test(v)||opt.test(v)},minLength:function(v,elm,opt){return v.length>=opt},maxLength:function(v,elm,opt){return v.length<=opt},min:function(v,elm,opt){return v>=parseFloat(opt)},max:function(v,elm,opt){return v<=parseFloat(opt)},notOneOf:function(v,elm,opt){return $A(opt).all(function(value){return v!=value;})},oneOf:function(v,elm,opt){return $A(opt).any(function(value){return v==value;})},is:function(v,elm,opt){return v==opt},isNot:function(v,elm,opt){return v!=opt},equalToField:function(v,elm,opt){return v==$F(opt)},notEqualToField:function(v,elm,opt){return v!=$F(opt)},include:function(v,elm,opt){return $A(opt).all(function(value){return Validation.get(value).test(v,elm);})}}
|
280 |
+
var Validation=Class.create();Validation.defaultOptions={onSubmit:true,stopOnFirst:false,immediate:false,focusOnError:true,useTitles:false,addClassNameToContainer:false,containerClassName:'.input-box',onFormValidate:function(result,form){},onElementValidate:function(result,elm){}};Validation.prototype={initialize:function(form,options){this.form=$(form);if(!this.form){return;}
|
281 |
+
this.options=Object.extend({onSubmit:Validation.defaultOptions.onSubmit,stopOnFirst:Validation.defaultOptions.stopOnFirst,immediate:Validation.defaultOptions.immediate,focusOnError:Validation.defaultOptions.focusOnError,useTitles:Validation.defaultOptions.useTitles,onFormValidate:Validation.defaultOptions.onFormValidate,onElementValidate:Validation.defaultOptions.onElementValidate},options||{});if(this.options.onSubmit)Event.observe(this.form,'submit',this.onSubmit.bind(this),false);if(this.options.immediate){Form.getElements(this.form).each(function(input){if(input.tagName.toLowerCase()=='select'){Event.observe(input,'blur',this.onChange.bindAsEventListener(this));}
|
282 |
+
if(input.type.toLowerCase()=='radio'||input.type.toLowerCase()=='checkbox'){Event.observe(input,'click',this.onChange.bindAsEventListener(this));}else{Event.observe(input,'change',this.onChange.bindAsEventListener(this));}},this);}},onChange:function(ev){Validation.isOnChange=true;Validation.validate(Event.element(ev),{useTitle:this.options.useTitles,onElementValidate:this.options.onElementValidate});Validation.isOnChange=false;},onSubmit:function(ev){if(!this.validate())Event.stop(ev);},validate:function(){var result=false;var useTitles=this.options.useTitles;var callback=this.options.onElementValidate;try{if(this.options.stopOnFirst){result=Form.getElements(this.form).all(function(elm){if(elm.hasClassName('local-validation')&&!this.isElementInForm(elm,this.form)){return true;}
|
283 |
+
return Validation.validate(elm,{useTitle:useTitles,onElementValidate:callback});},this);}else{result=Form.getElements(this.form).collect(function(elm){if(elm.hasClassName('local-validation')&&!this.isElementInForm(elm,this.form)){return true;}
|
284 |
+
return Validation.validate(elm,{useTitle:useTitles,onElementValidate:callback});},this).all();}}catch(e){}
|
285 |
+
if(!result&&this.options.focusOnError){try{Form.getElements(this.form).findAll(function(elm){return $(elm).hasClassName('validation-failed')}).first().focus()}
|
286 |
+
catch(e){}}
|
287 |
+
this.options.onFormValidate(result,this.form);return result;},reset:function(){Form.getElements(this.form).each(Validation.reset);},isElementInForm:function(elm,form){var domForm=elm.up('form');if(domForm==form){return true;}
|
288 |
+
return false;}}
|
289 |
+
Object.extend(Validation,{validate:function(elm,options){options=Object.extend({useTitle:false,onElementValidate:function(result,elm){}},options||{});elm=$(elm);var cn=$w(elm.className);return result=cn.all(function(value){var test=Validation.test(value,elm,options.useTitle);options.onElementValidate(test,elm);return test;});},insertAdvice:function(elm,advice){var container=$(elm).up('.field-row');if(container){Element.insert(container,{after:advice});}else if(elm.up('td.value')){elm.up('td.value').insert({bottom:advice});}else if(elm.advaiceContainer&&$(elm.advaiceContainer)){$(elm.advaiceContainer).update(advice);}
|
290 |
+
else{switch(elm.type.toLowerCase()){case'checkbox':case'radio':var p=elm.parentNode;if(p){Element.insert(p,{'bottom':advice});}else{Element.insert(elm,{'after':advice});}
|
291 |
+
break;default:Element.insert(elm,{'after':advice});}}},showAdvice:function(elm,advice,adviceName){if(!elm.advices){elm.advices=new Hash();}
|
292 |
+
else{elm.advices.each(function(pair){this.hideAdvice(elm,pair.value);}.bind(this));}
|
293 |
+
elm.advices.set(adviceName,advice);if(typeof Effect=='undefined'){advice.style.display='block';}else{if(!advice._adviceAbsolutize){new Effect.Appear(advice,{duration:1});}else{Position.absolutize(advice);advice.show();advice.setStyle({'top':advice._adviceTop,'left':advice._adviceLeft,'width':advice._adviceWidth,'z-index':1000});advice.addClassName('advice-absolute');}}},hideAdvice:function(elm,advice){if(advice!=null)advice.hide();},updateCallback:function(elm,status){if(typeof elm.callbackFunction!='undefined'){eval(elm.callbackFunction+'(\''+elm.id+'\',\''+status+'\')');}},ajaxError:function(elm,errorMsg){var name='validate-ajax';var advice=Validation.getAdvice(name,elm);if(advice==null){advice=this.createAdvice(name,elm,false,errorMsg);}
|
294 |
+
this.showAdvice(elm,advice,'validate-ajax');this.updateCallback(elm,'failed');elm.addClassName('validation-failed');elm.addClassName('validate-ajax');if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=''){var container=elm.up(Validation.defaultOptions.containerClassName);if(container&&this.allowContainerClassName(elm)){container.removeClassName('validation-passed');container.addClassName('validation-error');}}},allowContainerClassName:function(elm){if(elm.type=='radio'||elm.type=='checkbox'){return elm.hasClassName('change-container-classname');}
|
295 |
+
return true;},test:function(name,elm,useTitle){var v=Validation.get(name);var prop='__advice'+name.camelize();try{if(Validation.isVisible(elm)&&!v.test($F(elm),elm)){var advice=Validation.getAdvice(name,elm);if(advice==null){advice=this.createAdvice(name,elm,useTitle);}
|
296 |
+
this.showAdvice(elm,advice,name);this.updateCallback(elm,'failed');elm[prop]=1;if(!elm.advaiceContainer){elm.removeClassName('validation-passed');elm.addClassName('validation-failed');}
|
297 |
+
if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=''){var container=elm.up(Validation.defaultOptions.containerClassName);if(container&&this.allowContainerClassName(elm)){container.removeClassName('validation-passed');container.addClassName('validation-error');}}
|
298 |
+
return false;}else{var advice=Validation.getAdvice(name,elm);this.hideAdvice(elm,advice);this.updateCallback(elm,'passed');elm[prop]='';elm.removeClassName('validation-failed');elm.addClassName('validation-passed');if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=''){var container=elm.up(Validation.defaultOptions.containerClassName);if(container&&!container.down('.validation-failed')&&this.allowContainerClassName(elm)){if(!Validation.get('IsEmpty').test(elm.value)||!this.isVisible(elm)){container.addClassName('validation-passed');}else{container.removeClassName('validation-passed');}
|
299 |
+
container.removeClassName('validation-error');}}
|
300 |
+
return true;}}catch(e){throw(e)}},isVisible:function(elm){while(elm.tagName!='BODY'){if(!$(elm).visible())return false;elm=elm.parentNode;}
|
301 |
+
return true;},getAdvice:function(name,elm){return $('advice-'+name+'-'+Validation.getElmID(elm))||$('advice-'+Validation.getElmID(elm));},createAdvice:function(name,elm,useTitle,customError){var v=Validation.get(name);var errorMsg=useTitle?((elm&&elm.title)?elm.title:v.error):v.error;if(customError){errorMsg=customError;}
|
302 |
+
try{if(Translator){errorMsg=Translator.translate(errorMsg);}}
|
303 |
+
catch(e){}
|
304 |
+
advice='<div class="validation-advice" id="advice-'+name+'-'+Validation.getElmID(elm)+'" style="display:none">'+errorMsg+'</div>'
|
305 |
+
Validation.insertAdvice(elm,advice);advice=Validation.getAdvice(name,elm);if($(elm).hasClassName('absolute-advice')){var dimensions=$(elm).getDimensions();var originalPosition=Position.cumulativeOffset(elm);advice._adviceTop=(originalPosition[1]+dimensions.height)+'px';advice._adviceLeft=(originalPosition[0])+'px';advice._adviceWidth=(dimensions.width)+'px';advice._adviceAbsolutize=true;}
|
306 |
+
return advice;},getElmID:function(elm){return elm.id?elm.id:elm.name;},reset:function(elm){elm=$(elm);var cn=$w(elm.className);cn.each(function(value){var prop='__advice'+value.camelize();if(elm[prop]){var advice=Validation.getAdvice(value,elm);if(advice){advice.hide();}
|
307 |
+
elm[prop]='';}
|
308 |
+
elm.removeClassName('validation-failed');elm.removeClassName('validation-passed');if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=''){var container=elm.up(Validation.defaultOptions.containerClassName);if(container){container.removeClassName('validation-passed');container.removeClassName('validation-error');}}});},add:function(className,error,test,options){var nv={};nv[className]=new Validator(className,error,test,options);Object.extend(Validation.methods,nv);},addAllThese:function(validators){var nv={};$A(validators).each(function(value){nv[value[0]]=new Validator(value[0],value[1],value[2],(value.length>3?value[3]:{}));});Object.extend(Validation.methods,nv);},get:function(name){return Validation.methods[name]?Validation.methods[name]:Validation.methods['_LikeNoIDIEverSaw_'];},methods:{'_LikeNoIDIEverSaw_':new Validator('_LikeNoIDIEverSaw_','',{})}});Validation.add('IsEmpty','',function(v){return(v==''||(v==null)||(v.length==0)||/^\s+$/.test(v));});Validation.addAllThese([['validate-select','Please select an option.',function(v){return((v!="none")&&(v!=null)&&(v.length!=0));}],['required-entry','This is a required field.',function(v){return!Validation.get('IsEmpty').test(v);}],['validate-number','Please enter a valid number in this field.',function(v){return Validation.get('IsEmpty').test(v)||(!isNaN(parseNumber(v))&&!/^\s+$/.test(parseNumber(v)));}],['validate-digits','Please use numbers only in this field. please avoid spaces or other characters such as dots or commas.',function(v){return Validation.get('IsEmpty').test(v)||!/[^\d]/.test(v);}],['validate-alpha','Please use letters only (a-z or A-Z) in this field.',function(v){return Validation.get('IsEmpty').test(v)||/^[a-zA-Z]+$/.test(v)}],['validate-code','Please use only letters (a-z), numbers (0-9) or underscore(_) in this field, first character should be a letter.',function(v){return Validation.get('IsEmpty').test(v)||/^[a-z]+[a-z0-9_]+$/.test(v)}],['validate-alphanum','Please use only letters (a-z or A-Z) or numbers (0-9) only in this field. No spaces or other characters are allowed.',function(v){return Validation.get('IsEmpty').test(v)||/^[a-zA-Z0-9]+$/.test(v)
|
309 |
+
/*/\W/.test(v)*/
|
310 |
+
}],['validate-street','Please use only letters (a-z or A-Z) or numbers (0-9) or spaces and # only in this field.',function(v){return Validation.get('IsEmpty').test(v)||/^[ \w]{3,}([A-Za-z]\.)?([ \w]*\#\d+)?(\r\n| )[ \w]{3,}/.test(v)}],['validate-phoneStrict','Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.',function(v){return Validation.get('IsEmpty').test(v)||/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/.test(v);}],['validate-phoneLax','Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.',function(v){return Validation.get('IsEmpty').test(v)||/^((\d[-. ]?)?((\(\d{3}\))|\d{3}))?[-. ]?\d{3}[-. ]?\d{4}$/.test(v);}],['validate-fax','Please enter a valid fax number. For example (123) 456-7890 or 123-456-7890.',function(v){return Validation.get('IsEmpty').test(v)||/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/.test(v);}],['validate-date','Please enter a valid date.',function(v){var test=new Date(v);return Validation.get('IsEmpty').test(v)||!isNaN(test);}],['validate-email','Please enter a valid email address. For example johndoe@domain.com.',function(v){return Validation.get('IsEmpty').test(v)||/^[a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]+(\.[a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})/i.test(v)}],['validate-emailSender','Please use only visible characters and spaces.',function(v){return Validation.get('IsEmpty').test(v)||/^[\S ]+$/.test(v)}],['validate-password','Please enter 6 or more characters. Leading or trailing spaces will be ignored.',function(v){var pass=v.strip();return!(pass.length>0&&pass.length<6);}],['validate-admin-password','Please enter 7 or more characters. Password should contain both numeric and alphabetic characters.',function(v){var pass=v.strip();if(0==pass.length){return true;}
|
311 |
+
if(!(/[a-z]/i.test(v))||!(/[0-9]/.test(v))){return false;}
|
312 |
+
return!(pass.length<7);}],['validate-cpassword','Please make sure your passwords match.',function(v){var conf=$('confirmation')?$('confirmation'):$$('.validate-cpassword')[0];var pass=false;if($('password')){pass=$('password');}
|
313 |
+
var passwordElements=$$('.validate-password');for(var i=0;i<passwordElements.size();i++){var passwordElement=passwordElements[i];if(passwordElement.up('form').id==conf.up('form').id){pass=passwordElement;}}
|
314 |
+
if($$('.validate-admin-password').size()){pass=$$('.validate-admin-password')[0];}
|
315 |
+
return(pass.value==conf.value);}],['validate-url','Please enter a valid URL. http:// is required',function(v){return Validation.get('IsEmpty').test(v)||/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(v)}],['validate-clean-url','Please enter a valid URL. For example http://www.example.com or www.example.com',function(v){return Validation.get('IsEmpty').test(v)||/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i.test(v)||/^(www)((\.[A-Z0-9][A-Z0-9_-]*)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i.test(v)}],['validate-identifier','Please enter a valid URL Key. For example "example-page", "example-page.html" or "anotherlevel/example-page"',function(v){return Validation.get('IsEmpty').test(v)||/^[A-Z0-9][A-Z0-9_\/-]+(\.[A-Z0-9_-]+)*$/i.test(v)}],['validate-xml-identifier','Please enter a valid XML-identifier. For example something_1, block5, id-4',function(v){return Validation.get('IsEmpty').test(v)||/^[A-Z][A-Z0-9_\/-]*$/i.test(v)}],['validate-ssn','Please enter a valid social security number. For example 123-45-6789.',function(v){return Validation.get('IsEmpty').test(v)||/^\d{3}-?\d{2}-?\d{4}$/.test(v);}],['validate-zip','Please enter a valid zip code. For example 90602 or 90602-1234.',function(v){return Validation.get('IsEmpty').test(v)||/(^\d{5}$)|(^\d{5}-\d{4}$)/.test(v);}],['validate-zip-international','Please enter a valid zip code.',function(v){return true;}],['validate-date-au','Please use this date format: dd/mm/yyyy. For example 17/03/2006 for the 17th of March, 2006.',function(v){if(Validation.get('IsEmpty').test(v))return true;var regex=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!regex.test(v))return false;var d=new Date(v.replace(regex,'$2/$1/$3'));return(parseInt(RegExp.$2,10)==(1+d.getMonth()))&&(parseInt(RegExp.$1,10)==d.getDate())&&(parseInt(RegExp.$3,10)==d.getFullYear());}],['validate-currency-dollar','Please enter a valid $ amount. For example $100.00.',function(v){return Validation.get('IsEmpty').test(v)||/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(v)}],['validate-one-required','Please select one of the above options.',function(v,elm){var p=elm.parentNode;var options=p.getElementsByTagName('INPUT');return $A(options).any(function(elm){return $F(elm);});}],['validate-one-required-by-name','Please select one of the options.',function(v,elm){var inputs=$$('input[name="'+elm.name.replace(/([\\"])/g,'\\$1')+'"]');var error=1;for(var i=0;i<inputs.length;i++){if((inputs[i].type=='checkbox'||inputs[i].type=='radio')&&inputs[i].checked==true){error=0;}
|
316 |
+
if(Validation.isOnChange&&(inputs[i].type=='checkbox'||inputs[i].type=='radio')){Validation.reset(inputs[i]);}}
|
317 |
+
if(error==0){return true;}else{return false;}}],['validate-not-negative-number','Please enter a valid number in this field.',function(v){v=parseNumber(v);return(!isNaN(v)&&v>=0);}],['validate-state','Please select State/Province.',function(v){return(v!=0||v=='');}],['validate-new-password','Please enter 6 or more characters. Leading or trailing spaces will be ignored.',function(v){if(!Validation.get('validate-password').test(v))return false;if(Validation.get('IsEmpty').test(v)&&v!='')return false;return true;}],['validate-greater-than-zero','Please enter a number greater than 0 in this field.',function(v){if(v.length)
|
318 |
+
return parseFloat(v)>0;else
|
319 |
+
return true;}],['validate-zero-or-greater','Please enter a number 0 or greater in this field.',function(v){if(v.length)
|
320 |
+
return parseFloat(v)>=0;else
|
321 |
+
return true;}],['validate-cc-number','Please enter a valid credit card number.',function(v,elm){var ccTypeContainer=$(elm.id.substr(0,elm.id.indexOf('_cc_number'))+'_cc_type');if(ccTypeContainer&&typeof Validation.creditCartTypes.get(ccTypeContainer.value)!='undefined'&&Validation.creditCartTypes.get(ccTypeContainer.value)[2]==false){if(!Validation.get('IsEmpty').test(v)&&Validation.get('validate-digits').test(v)){return true;}else{return false;}}
|
322 |
+
return validateCreditCard(v);}],['validate-cc-type','Credit card number doesn\'t match credit card type',function(v,elm){elm.value=removeDelimiters(elm.value);v=removeDelimiters(v);var ccTypeContainer=$(elm.id.substr(0,elm.id.indexOf('_cc_number'))+'_cc_type');if(!ccTypeContainer){return true;}
|
323 |
+
var ccType=ccTypeContainer.value;if(typeof Validation.creditCartTypes.get(ccType)=='undefined'){return false;}
|
324 |
+
if(Validation.creditCartTypes.get(ccType)[0]==false){return true;}
|
325 |
+
var ccMatchedType='';Validation.creditCartTypes.each(function(pair){if(pair.value[0]&&v.match(pair.value[0])){ccMatchedType=pair.key;throw $break;}});if(ccMatchedType!=ccType){return false;}
|
326 |
+
if(ccTypeContainer.hasClassName('validation-failed')&&Validation.isOnChange){Validation.validate(ccTypeContainer);}
|
327 |
+
return true;}],['validate-cc-type-select','Card type doesn\'t match credit card number',function(v,elm){var ccNumberContainer=$(elm.id.substr(0,elm.id.indexOf('_cc_type'))+'_cc_number');if(Validation.isOnChange&&Validation.get('IsEmpty').test(ccNumberContainer.value)){return true;}
|
328 |
+
if(Validation.get('validate-cc-type').test(ccNumberContainer.value,ccNumberContainer)){Validation.validate(ccNumberContainer);}
|
329 |
+
return Validation.get('validate-cc-type').test(ccNumberContainer.value,ccNumberContainer);}],['validate-cc-exp','Incorrect credit card expiration date',function(v,elm){var ccExpMonth=v;var ccExpYear=$(elm.id.substr(0,elm.id.indexOf('_expiration'))+'_expiration_yr').value;var currentTime=new Date();var currentMonth=currentTime.getMonth()+1;var currentYear=currentTime.getFullYear();if(ccExpMonth<currentMonth&&ccExpYear==currentYear){return false;}
|
330 |
+
return true;}],['validate-cc-cvn','Please enter a valid credit card verification number.',function(v,elm){var ccTypeContainer=$(elm.id.substr(0,elm.id.indexOf('_cc_cid'))+'_cc_type');if(!ccTypeContainer){return true;}
|
331 |
+
var ccType=ccTypeContainer.value;if(typeof Validation.creditCartTypes.get(ccType)=='undefined'){return false;}
|
332 |
+
var re=Validation.creditCartTypes.get(ccType)[1];if(v.match(re)){return true;}
|
333 |
+
return false;}],['validate-ajax','',function(v,elm){return true;}],['validate-data','Please use only letters (a-z or A-Z), numbers (0-9) or underscore(_) in this field, first character should be a letter.',function(v){if(v!=''&&v){return /^[A-Za-z]+[A-Za-z0-9_]+$/.test(v);}
|
334 |
+
return true;}],['validate-css-length','Please input a valid CSS-length. For example 100px or 77pt or 20em or .5ex or 50%',function(v){if(v!=''&&v){return /^[0-9\.]+(px|pt|em|ex|%)?$/.test(v)&&(!(/\..*\./.test(v)))&&!(/\.$/.test(v));}
|
335 |
+
return true;}],['validate-length','Maximum length exceeded.',function(v,elm){var re=new RegExp(/^maximum-length-[0-9]+$/);var result=true;$w(elm.className).each(function(name,index){if(name.match(re)&&result){var length=name.split('-')[2];result=(v.length<=length);}});return result;}],['validate-percents','Please enter a number lower than 100',{max:100}]]);function validateCreditCard(s){var v="0123456789";var w="";for(i=0;i<s.length;i++){x=s.charAt(i);if(v.indexOf(x,0)!=-1)
|
336 |
+
w+=x;}
|
337 |
+
j=w.length/2;k=Math.floor(j);m=Math.ceil(j)-k;c=0;for(i=0;i<k;i++){a=w.charAt(i*2+m)*2;c+=a>9?Math.floor(a/10+a%10):a;}
|
338 |
+
for(i=0;i<k+m;i++)c+=w.charAt(i*2+1-m)*1;return(c%10==0);}
|
339 |
+
function removeDelimiters(v){v=v.replace(/\s/g,'');v=v.replace(/\-/g,'');return v;}
|
340 |
+
function parseNumber(v)
|
341 |
+
{if(typeof v!='string'){return parseFloat(v);}
|
342 |
+
var isDot=v.indexOf('.');var isComa=v.indexOf(',');if(isDot!=-1&&isComa!=-1){if(isComa>isDot){v=v.replace('.','').replace(',','.');}
|
343 |
+
else{v=v.replace(',','');}}
|
344 |
+
else if(isComa!=-1){v=v.replace(',','.');}
|
345 |
+
return parseFloat(v);}
|
346 |
+
Validation.creditCartTypes=$H({'VI':[new RegExp('^4[0-9]{12}([0-9]{3})?$'),new RegExp('^[0-9]{3}$'),true],'MC':[new RegExp('^5[1-5][0-9]{14}$'),new RegExp('^[0-9]{3}$'),true],'AE':[new RegExp('^3[47][0-9]{13}$'),new RegExp('^[0-9]{4}$'),true],'DI':[new RegExp('^6011[0-9]{12}$'),new RegExp('^[0-9]{3}$'),true],'SS':[new RegExp('^((6759[0-9]{12})|(49[013][1356][0-9]{13})|(633[34][0-9]{12})|(633110[0-9]{10})|(564182[0-9]{10}))([0-9]{2,3})?$'),new RegExp('^([0-9]{3}|[0-9]{4})?$'),true],'OT':[false,new RegExp('^([0-9]{3}|[0-9]{4})?$'),false]});;var Builder={NODEMAP:{AREA:'map',CAPTION:'table',COL:'table',COLGROUP:'table',LEGEND:'fieldset',OPTGROUP:'select',OPTION:'select',PARAM:'object',TBODY:'table',TD:'table',TFOOT:'table',TH:'table',THEAD:'table',TR:'table'},node:function(elementName){elementName=elementName.toUpperCase();var parentTag=this.NODEMAP[elementName]||'div';var parentElement=document.createElement(parentTag);try{parentElement.innerHTML="<"+elementName+"></"+elementName+">";}catch(e){}
|
347 |
+
var element=parentElement.firstChild||null;if(element&&(element.tagName.toUpperCase()!=elementName))
|
348 |
+
element=element.getElementsByTagName(elementName)[0];if(!element)element=document.createElement(elementName);if(!element)return;if(arguments[1])
|
349 |
+
if(this._isStringOrNumber(arguments[1])||(arguments[1]instanceof Array)||arguments[1].tagName){this._children(element,arguments[1]);}else{var attrs=this._attributes(arguments[1]);if(attrs.length){try{parentElement.innerHTML="<"+elementName+" "+
|
350 |
+
attrs+"></"+elementName+">";}catch(e){}
|
351 |
+
element=parentElement.firstChild||null;if(!element){element=document.createElement(elementName);for(attr in arguments[1])
|
352 |
+
element[attr=='class'?'className':attr]=arguments[1][attr];}
|
353 |
+
if(element.tagName.toUpperCase()!=elementName)
|
354 |
+
element=parentElement.getElementsByTagName(elementName)[0];}}
|
355 |
+
if(arguments[2])
|
356 |
+
this._children(element,arguments[2]);return element;},_text:function(text){return document.createTextNode(text);},ATTR_MAP:{'className':'class','htmlFor':'for'},_attributes:function(attributes){var attrs=[];for(attribute in attributes)
|
357 |
+
attrs.push((attribute in this.ATTR_MAP?this.ATTR_MAP[attribute]:attribute)+'="'+attributes[attribute].toString().escapeHTML().gsub(/"/,'"')+'"');return attrs.join(" ");},_children:function(element,children){if(children.tagName){element.appendChild(children);return;}
|
358 |
+
if(typeof children=='object'){children.flatten().each(function(e){if(typeof e=='object')
|
359 |
+
element.appendChild(e)
|
360 |
+
else
|
361 |
+
if(Builder._isStringOrNumber(e))
|
362 |
+
element.appendChild(Builder._text(e));});}else
|
363 |
+
if(Builder._isStringOrNumber(children))
|
364 |
+
element.appendChild(Builder._text(children));},_isStringOrNumber:function(param){return(typeof param=='string'||typeof param=='number');},build:function(html){var element=this.node('div');$(element).update(html.strip());return element.down();},dump:function(scope){if(typeof scope!='object'&&typeof scope!='function')scope=window;var tags=("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY "+"BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET "+"FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+"KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+"PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+"TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);tags.each(function(tag){scope[tag]=function(){return Builder.node.apply(Builder,[tag].concat($A(arguments)));}});}};String.prototype.parseColor=function(){var color='#';if(this.slice(0,4)=='rgb('){var cols=this.slice(4,this.length-1).split(',');var i=0;do{color+=parseInt(cols[i]).toColorPart()}while(++i<3);}else{if(this.slice(0,1)=='#'){if(this.length==4)for(var i=1;i<4;i++)color+=(this.charAt(i)+this.charAt(i)).toLowerCase();if(this.length==7)color=this.toLowerCase();}}
|
365 |
+
return(color.length==7?color:(arguments[0]||this));}
|
366 |
+
Element.collectTextNodes=function(element){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:(node.hasChildNodes()?Element.collectTextNodes(node):''));}).flatten().join('');}
|
367 |
+
Element.collectTextNodesIgnoreClass=function(element,className){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:((node.hasChildNodes()&&!Element.hasClassName(node,className))?Element.collectTextNodesIgnoreClass(node,className):''));}).flatten().join('');}
|
368 |
+
Element.setContentZoom=function(element,percent){element=$(element);element.setStyle({fontSize:(percent/100)+'em'});if(Prototype.Browser.WebKit)window.scrollBy(0,0);return element;}
|
369 |
+
Element.getInlineOpacity=function(element){return $(element).style.opacity||'';}
|
370 |
+
Element.forceRerendering=function(element){try{element=$(element);var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){}};Array.prototype.call=function(){var args=arguments;this.each(function(f){f.apply(this,args)});}
|
371 |
+
var Effect={_elementDoesNotExistError:{name:'ElementDoesNotExistError',message:'The specified DOM element does not exist, but is required for this effect to operate'},tagifyText:function(element){if(typeof Builder=='undefined')
|
372 |
+
throw("Effect.tagifyText requires including script.aculo.us' builder.js library");var tagifyStyle='position:relative';if(Prototype.Browser.IE)tagifyStyle+=';zoom:1';element=$(element);$A(element.childNodes).each(function(child){if(child.nodeType==3){child.nodeValue.toArray().each(function(character){element.insertBefore(Builder.node('span',{style:tagifyStyle},character==' '?String.fromCharCode(160):character),child);});Element.remove(child);}});},multiple:function(element,effect){var elements;if(((typeof element=='object')||(typeof element=='function'))&&(element.length))
|
373 |
+
elements=element;else
|
374 |
+
elements=$(element).childNodes;var options=Object.extend({speed:0.1,delay:0.0},arguments[2]||{});var masterDelay=options.delay;$A(elements).each(function(element,index){new effect(element,Object.extend(options,{delay:index*options.speed+masterDelay}));});},PAIRS:{'slide':['SlideDown','SlideUp'],'blind':['BlindDown','BlindUp'],'appear':['Appear','Fade']},toggle:function(element,effect){element=$(element);effect=(effect||'appear').toLowerCase();var options=Object.extend({queue:{position:'end',scope:(element.id||'global'),limit:1}},arguments[2]||{});Effect[element.visible()?Effect.PAIRS[effect][1]:Effect.PAIRS[effect][0]](element,options);}};var Effect2=Effect;Effect.Transitions={linear:Prototype.K,sinoidal:function(pos){return(-Math.cos(pos*Math.PI)/2)+0.5;},reverse:function(pos){return 1-pos;},flicker:function(pos){var pos=((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4;return(pos>1?1:pos);},wobble:function(pos){return(-Math.cos(pos*Math.PI*(9*pos))/2)+0.5;},pulse:function(pos,pulses){pulses=pulses||5;return(Math.round((pos%(1/pulses))*pulses)==0?((pos*pulses*2)-Math.floor(pos*pulses*2)):1-((pos*pulses*2)-Math.floor(pos*pulses*2)));},none:function(pos){return 0;},full:function(pos){return 1;}};Effect.ScopedQueue=Class.create();Object.extend(Object.extend(Effect.ScopedQueue.prototype,Enumerable),{initialize:function(){this.effects=[];this.interval=null;},_each:function(iterator){this.effects._each(iterator);},add:function(effect){var timestamp=new Date().getTime();var position=(typeof effect.options.queue=='string')?effect.options.queue:effect.options.queue.position;switch(position){case'front':this.effects.findAll(function(e){return e.state=='idle'}).each(function(e){e.startOn+=effect.finishOn;e.finishOn+=effect.finishOn;});break;case'with-last':timestamp=this.effects.pluck('startOn').max()||timestamp;break;case'end':timestamp=this.effects.pluck('finishOn').max()||timestamp;break;}
|
375 |
+
effect.startOn+=timestamp;effect.finishOn+=timestamp;if(!effect.options.queue.limit||(this.effects.length<effect.options.queue.limit))
|
376 |
+
this.effects.push(effect);if(!this.interval)
|
377 |
+
this.interval=setInterval(this.loop.bind(this),15);},remove:function(effect){this.effects=this.effects.reject(function(e){return e==effect});if(this.effects.length==0){clearInterval(this.interval);this.interval=null;}},loop:function(){var timePos=new Date().getTime();for(var i=0,len=this.effects.length;i<len;i++)
|
378 |
+
this.effects[i]&&this.effects[i].loop(timePos);}});Effect.Queues={instances:$H(),get:function(queueName){if(typeof queueName!='string')return queueName;if(!this.instances[queueName])
|
379 |
+
this.instances[queueName]=new Effect.ScopedQueue();return this.instances[queueName];}}
|
380 |
+
Effect.Queue=Effect.Queues.get('global');Effect.DefaultOptions={transition:Effect.Transitions.sinoidal,duration:1.0,fps:100,sync:false,from:0.0,to:1.0,delay:0.0,queue:'parallel'}
|
381 |
+
Effect.Base=function(){};Effect.Base.prototype={position:null,start:function(options){function codeForEvent(options,eventName){return((options[eventName+'Internal']?'this.options.'+eventName+'Internal(this);':'')+
|
382 |
+
(options[eventName]?'this.options.'+eventName+'(this);':''));}
|
383 |
+
if(options.transition===false)options.transition=Effect.Transitions.linear;this.options=Object.extend(Object.extend({},Effect.DefaultOptions),options||{});this.currentFrame=0;this.state='idle';this.startOn=this.options.delay*1000;this.finishOn=this.startOn+(this.options.duration*1000);this.fromToDelta=this.options.to-this.options.from;this.totalTime=this.finishOn-this.startOn;this.totalFrames=this.options.fps*this.options.duration;eval('this.render = function(pos){ '+'if(this.state=="idle"){this.state="running";'+
|
384 |
+
codeForEvent(options,'beforeSetup')+
|
385 |
+
(this.setup?'this.setup();':'')+
|
386 |
+
codeForEvent(options,'afterSetup')+'};if(this.state=="running"){'+'pos=this.options.transition(pos)*'+this.fromToDelta+'+'+this.options.from+';'+'this.position=pos;'+
|
387 |
+
codeForEvent(options,'beforeUpdate')+
|
388 |
+
(this.update?'this.update(pos);':'')+
|
389 |
+
codeForEvent(options,'afterUpdate')+'}}');this.event('beforeStart');if(!this.options.sync)
|
390 |
+
Effect.Queues.get(typeof this.options.queue=='string'?'global':this.options.queue.scope).add(this);},loop:function(timePos){if(timePos>=this.startOn){if(timePos>=this.finishOn){this.render(1.0);this.cancel();this.event('beforeFinish');if(this.finish)this.finish();this.event('afterFinish');return;}
|
391 |
+
var pos=(timePos-this.startOn)/this.totalTime,frame=Math.round(pos*this.totalFrames);if(frame>this.currentFrame){this.render(pos);this.currentFrame=frame;}}},cancel:function(){if(!this.options.sync)
|
392 |
+
Effect.Queues.get(typeof this.options.queue=='string'?'global':this.options.queue.scope).remove(this);this.state='finished';},event:function(eventName){if(this.options[eventName+'Internal'])this.options[eventName+'Internal'](this);if(this.options[eventName])this.options[eventName](this);},inspect:function(){var data=$H();for(property in this)
|
393 |
+
if(typeof this[property]!='function')data[property]=this[property];return'#<Effect:'+data.inspect()+',options:'+$H(this.options).inspect()+'>';}}
|
394 |
+
Effect.Parallel=Class.create();Object.extend(Object.extend(Effect.Parallel.prototype,Effect.Base.prototype),{initialize:function(effects){this.effects=effects||[];this.start(arguments[1]);},update:function(position){this.effects.invoke('render',position);},finish:function(position){this.effects.each(function(effect){effect.render(1.0);effect.cancel();effect.event('beforeFinish');if(effect.finish)effect.finish(position);effect.event('afterFinish');});}});Effect.Event=Class.create();Object.extend(Object.extend(Effect.Event.prototype,Effect.Base.prototype),{initialize:function(){var options=Object.extend({duration:0},arguments[0]||{});this.start(options);},update:Prototype.emptyFunction});Effect.Opacity=Class.create();Object.extend(Object.extend(Effect.Opacity.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout))
|
395 |
+
this.element.setStyle({zoom:1});var options=Object.extend({from:this.element.getOpacity()||0.0,to:1.0},arguments[1]||{});this.start(options);},update:function(position){this.element.setOpacity(position);}});Effect.Move=Class.create();Object.extend(Object.extend(Effect.Move.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({x:0,y:0,mode:'relative'},arguments[1]||{});this.start(options);},setup:function(){this.element.makePositioned();this.originalLeft=parseFloat(this.element.getStyle('left')||'0');this.originalTop=parseFloat(this.element.getStyle('top')||'0');if(this.options.mode=='absolute'){this.options.x=this.options.x-this.originalLeft;this.options.y=this.options.y-this.originalTop;}},update:function(position){this.element.setStyle({left:Math.round(this.options.x*position+this.originalLeft)+'px',top:Math.round(this.options.y*position+this.originalTop)+'px'});}});Effect.MoveBy=function(element,toTop,toLeft){return new Effect.Move(element,Object.extend({x:toLeft,y:toTop},arguments[3]||{}));};Effect.Scale=Class.create();Object.extend(Object.extend(Effect.Scale.prototype,Effect.Base.prototype),{initialize:function(element,percent){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:'box',scaleFrom:100.0,scaleTo:percent},arguments[2]||{});this.start(options);},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle('position');this.originalStyle={};['top','left','width','height','fontSize'].each(function(k){this.originalStyle[k]=this.element.style[k];}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var fontSize=this.element.getStyle('font-size')||'100%';['em','px','%','pt'].each(function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType;}}.bind(this));this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;this.dims=null;if(this.options.scaleMode=='box')
|
396 |
+
this.dims=[this.element.offsetHeight,this.element.offsetWidth];if(/^content/.test(this.options.scaleMode))
|
397 |
+
this.dims=[this.element.scrollHeight,this.element.scrollWidth];if(!this.dims)
|
398 |
+
this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];},update:function(position){var currentScale=(this.options.scaleFrom/100.0)+(this.factor*position);if(this.options.scaleContent&&this.fontSize)
|
399 |
+
this.element.setStyle({fontSize:this.fontSize*currentScale+this.fontSizeType});this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale);},finish:function(position){if(this.restoreAfterFinish)this.element.setStyle(this.originalStyle);},setDimensions:function(height,width){var d={};if(this.options.scaleX)d.width=Math.round(width)+'px';if(this.options.scaleY)d.height=Math.round(height)+'px';if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;var leftd=(width-this.dims[1])/2;if(this.elementPositioning=='absolute'){if(this.options.scaleY)d.top=this.originalTop-topd+'px';if(this.options.scaleX)d.left=this.originalLeft-leftd+'px';}else{if(this.options.scaleY)d.top=-topd+'px';if(this.options.scaleX)d.left=-leftd+'px';}}
|
400 |
+
this.element.setStyle(d);}});Effect.Highlight=Class.create();Object.extend(Object.extend(Effect.Highlight.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({startcolor:'#ffff99'},arguments[1]||{});this.start(options);},setup:function(){if(this.element.getStyle('display')=='none'){this.cancel();return;}
|
401 |
+
this.oldStyle={};if(!this.options.keepBackgroundImage){this.oldStyle.backgroundImage=this.element.getStyle('background-image');this.element.setStyle({backgroundImage:'none'});}
|
402 |
+
if(!this.options.endcolor)
|
403 |
+
this.options.endcolor=this.element.getStyle('background-color').parseColor('#ffffff');if(!this.options.restorecolor)
|
404 |
+
this.options.restorecolor=this.element.getStyle('background-color');this._base=$R(0,2).map(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16)}.bind(this));this._delta=$R(0,2).map(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]}.bind(this));},update:function(position){this.element.setStyle({backgroundColor:$R(0,2).inject('#',function(m,v,i){return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart());}.bind(this))});},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}));}});Effect.ScrollTo=Class.create();Object.extend(Object.extend(Effect.ScrollTo.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);this.start(arguments[1]||{});},setup:function(){Position.prepare();var offsets=Position.cumulativeOffset(this.element);if(this.options.offset)offsets[1]+=this.options.offset;var max=window.innerHeight?window.height-window.innerHeight:document.body.scrollHeight-
|
405 |
+
(document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight);this.scrollStart=Position.deltaY;this.delta=(offsets[1]>max?max:offsets[1])-this.scrollStart;},update:function(position){Position.prepare();window.scrollTo(Position.deltaX,this.scrollStart+(position*this.delta));}});Effect.Fade=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();var options=Object.extend({from:element.getOpacity()||1.0,to:0.0,afterFinishInternal:function(effect){if(effect.options.to!=0)return;effect.element.hide().setStyle({opacity:oldOpacity});}},arguments[1]||{});return new Effect.Opacity(element,options);}
|
406 |
+
Effect.Appear=function(element){element=$(element);var options=Object.extend({from:(element.getStyle('display')=='none'?0.0:element.getOpacity()||0.0),to:1.0,afterFinishInternal:function(effect){effect.element.forceRerendering();},beforeSetup:function(effect){effect.element.setOpacity(effect.options.from).show();}},arguments[1]||{});return new Effect.Opacity(element,options);}
|
407 |
+
Effect.Puff=function(element){element=$(element);var oldStyle={opacity:element.getInlineOpacity(),position:element.getStyle('position'),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};return new Effect.Parallel([new Effect.Scale(element,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:1.0,beforeSetupInternal:function(effect){Position.absolutize(effect.effects[0].element)},afterFinishInternal:function(effect){effect.effects[0].element.hide().setStyle(oldStyle);}},arguments[1]||{}));}
|
408 |
+
Effect.BlindUp=function(element){element=$(element);element.makeClipping();return new Effect.Scale(element,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(effect){effect.element.hide().undoClipping();}},arguments[1]||{}));}
|
409 |
+
Effect.BlindDown=function(element){element=$(element);var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makeClipping().setStyle({height:'0px'}).show();},afterFinishInternal:function(effect){effect.element.undoClipping();}},arguments[1]||{}));}
|
410 |
+
Effect.SwitchOff=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();return new Effect.Appear(element,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(effect){new Effect.Scale(effect.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({opacity:oldOpacity});}})}},arguments[1]||{}));}
|
411 |
+
Effect.DropOut=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left'),opacity:element.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(element,{x:0,y:100,sync:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:0.5,beforeSetup:function(effect){effect.effects[0].element.makePositioned();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);}},arguments[1]||{}));}
|
412 |
+
Effect.Shake=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left')};return new Effect.Move(element,{x:20,y:0,duration:0.05,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-20,y:0,duration:0.05,afterFinishInternal:function(effect){effect.element.undoPositioned().setStyle(oldStyle);}})}})}})}})}})}});}
|
413 |
+
Effect.SlideDown=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping().setStyle({height:'0px'}).show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));}
|
414 |
+
Effect.SlideUp=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');return new Effect.Scale(element,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:'box',scaleFrom:100,restoreAfterFinish:true,beforeStartInternal:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping().show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({bottom:oldInnerBottom});effect.element.down().undoPositioned();}},arguments[1]||{}));}
|
415 |
+
Effect.Squish=function(element){return new Effect.Scale(element,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping();}});}
|
416 |
+
Effect.Grow=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var initialMoveX,initialMoveY;var moveX,moveY;switch(options.direction){case'top-left':initialMoveX=initialMoveY=moveX=moveY=0;break;case'top-right':initialMoveX=dims.width;initialMoveY=moveY=0;moveX=-dims.width;break;case'bottom-left':initialMoveX=moveX=0;initialMoveY=dims.height;moveY=-dims.height;break;case'bottom-right':initialMoveX=dims.width;initialMoveY=dims.height;moveX=-dims.width;moveY=-dims.height;break;case'center':initialMoveX=dims.width/2;initialMoveY=dims.height/2;moveX=-dims.width/2;moveY=-dims.height/2;break;}
|
417 |
+
return new Effect.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetup:function(effect){effect.element.hide().makeClipping().makePositioned();},afterFinishInternal:function(effect){new Effect.Parallel([new Effect.Opacity(effect.element,{sync:true,to:1.0,from:0.0,transition:options.opacityTransition}),new Effect.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new Effect.Scale(effect.element,100,{scaleMode:{originalHeight:dims.height,originalWidth:dims.width},sync:true,scaleFrom:window.opera?1:0,transition:options.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(effect){effect.effects[0].element.setStyle({height:'0px'}).show();},afterFinishInternal:function(effect){effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);}},options))}});}
|
418 |
+
Effect.Shrink=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var moveX,moveY;switch(options.direction){case'top-left':moveX=moveY=0;break;case'top-right':moveX=dims.width;moveY=0;break;case'bottom-left':moveX=0;moveY=dims.height;break;case'bottom-right':moveX=dims.width;moveY=dims.height;break;case'center':moveX=dims.width/2;moveY=dims.height/2;break;}
|
419 |
+
return new Effect.Parallel([new Effect.Opacity(element,{sync:true,to:0.0,from:1.0,transition:options.opacityTransition}),new Effect.Scale(element,window.opera?1:0,{sync:true,transition:options.scaleTransition,restoreAfterFinish:true}),new Effect.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],Object.extend({beforeStartInternal:function(effect){effect.effects[0].element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle);}},options));}
|
420 |
+
Effect.Pulsate=function(element){element=$(element);var options=arguments[1]||{};var oldOpacity=element.getInlineOpacity();var transition=options.transition||Effect.Transitions.sinoidal;var reverser=function(pos){return transition(1-Effect.Transitions.pulse(pos,options.pulses))};reverser.bind(transition);return new Effect.Opacity(element,Object.extend(Object.extend({duration:2.0,from:0,afterFinishInternal:function(effect){effect.element.setStyle({opacity:oldOpacity});}},options),{transition:reverser}));}
|
421 |
+
Effect.Fold=function(element){element=$(element);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};element.makeClipping();return new Effect.Scale(element,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(effect){new Effect.Scale(element,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(effect){effect.element.hide().undoClipping().setStyle(oldStyle);}});}},arguments[1]||{}));};Effect.Morph=Class.create();Object.extend(Object.extend(Effect.Morph.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({style:{}},arguments[1]||{});if(typeof options.style=='string'){if(options.style.indexOf(':')==-1){var cssText='',selector='.'+options.style;$A(document.styleSheets).reverse().each(function(styleSheet){if(styleSheet.cssRules)cssRules=styleSheet.cssRules;else if(styleSheet.rules)cssRules=styleSheet.rules;$A(cssRules).reverse().each(function(rule){if(selector==rule.selectorText){cssText=rule.style.cssText;throw $break;}});if(cssText)throw $break;});this.style=cssText.parseStyle();options.afterFinishInternal=function(effect){effect.element.addClassName(effect.options.style);effect.transforms.each(function(transform){if(transform.style!='opacity')
|
422 |
+
effect.element.style[transform.style]='';});}}else this.style=options.style.parseStyle();}else this.style=$H(options.style)
|
423 |
+
this.start(options);},setup:function(){function parseColor(color){if(!color||['rgba(0, 0, 0, 0)','transparent'].include(color))color='#ffffff';color=color.parseColor();return $R(0,2).map(function(i){return parseInt(color.slice(i*2+1,i*2+3),16)});}
|
424 |
+
this.transforms=this.style.map(function(pair){var property=pair[0],value=pair[1],unit=null;if(value.parseColor('#zzzzzz')!='#zzzzzz'){value=value.parseColor();unit='color';}else if(property=='opacity'){value=parseFloat(value);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout))
|
425 |
+
this.element.setStyle({zoom:1});}else if(Element.CSS_LENGTH.test(value)){var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]);unit=(components.length==3)?components[2]:null;}
|
426 |
+
var originalValue=this.element.getStyle(property);return{style:property.camelize(),originalValue:unit=='color'?parseColor(originalValue):parseFloat(originalValue||0),targetValue:unit=='color'?parseColor(value):value,unit:unit};}.bind(this)).reject(function(transform){return((transform.originalValue==transform.targetValue)||(transform.unit!='color'&&(isNaN(transform.originalValue)||isNaN(transform.targetValue))))});},update:function(position){var style={},transform,i=this.transforms.length;while(i--)
|
427 |
+
style[(transform=this.transforms[i]).style]=transform.unit=='color'?'#'+
|
428 |
+
(Math.round(transform.originalValue[0]+
|
429 |
+
(transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart()+
|
430 |
+
(Math.round(transform.originalValue[1]+
|
431 |
+
(transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart()+
|
432 |
+
(Math.round(transform.originalValue[2]+
|
433 |
+
(transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart():transform.originalValue+Math.round(((transform.targetValue-transform.originalValue)*position)*1000)/1000+transform.unit;this.element.setStyle(style,true);}});Effect.Transform=Class.create();Object.extend(Effect.Transform.prototype,{initialize:function(tracks){this.tracks=[];this.options=arguments[1]||{};this.addTracks(tracks);},addTracks:function(tracks){tracks.each(function(track){var data=$H(track).values().first();this.tracks.push($H({ids:$H(track).keys().first(),effect:Effect.Morph,options:{style:data}}));}.bind(this));return this;},play:function(){return new Effect.Parallel(this.tracks.map(function(track){var elements=[$(track.ids)||$$(track.ids)].flatten();return elements.map(function(e){return new track.effect(e,Object.extend({sync:true},track.options))});}).flatten(),this.options);}});Element.CSS_PROPERTIES=$w('backgroundColor backgroundPosition borderBottomColor borderBottomStyle '+'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth '+'borderRightColor borderRightStyle borderRightWidth borderSpacing '+'borderTopColor borderTopStyle borderTopWidth bottom clip color '+'fontSize fontWeight height left letterSpacing lineHeight '+'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+'maxWidth minHeight minWidth opacity outlineColor outlineOffset '+'outlineWidth paddingBottom paddingLeft paddingRight paddingTop '+'right textIndent top width wordSpacing zIndex');Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;String.prototype.parseStyle=function(){var element=document.createElement('div');element.innerHTML='<div style="'+this+'"></div>';var style=element.childNodes[0].style,styleRules=$H();Element.CSS_PROPERTIES.each(function(property){if(style[property])styleRules[property]=style[property];});if(Prototype.Browser.IE&&this.indexOf('opacity')>-1){styleRules.opacity=this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1];}
|
434 |
+
return styleRules;};Element.morph=function(element,style){new Effect.Morph(element,Object.extend({style:style},arguments[2]||{}));return element;};['getInlineOpacity','forceRerendering','setContentZoom','collectTextNodes','collectTextNodesIgnoreClass','morph'].each(function(f){Element.Methods[f]=Element[f];});Element.Methods.visualEffect=function(element,effect,options){s=effect.dasherize().camelize();effect_class=s.charAt(0).toUpperCase()+s.substring(1);new Effect[effect_class](element,options);return $(element);};Element.addMethods();;if(typeof Effect=='undefined')
|
435 |
+
throw("dragdrop.js requires including script.aculo.us' effects.js library");var Droppables={drops:[],remove:function(element){this.drops=this.drops.reject(function(d){return d.element==$(element)});},add:function(element){element=$(element);var options=Object.extend({greedy:true,hoverclass:null,tree:false},arguments[1]||{});if(options.containment){options._containers=[];var containment=options.containment;if((typeof containment=='object')&&(containment.constructor==Array)){containment.each(function(c){options._containers.push($(c))});}else{options._containers.push($(containment));}}
|
436 |
+
if(options.accept)options.accept=[options.accept].flatten();Element.makePositioned(element);options.element=element;this.drops.push(options);},findDeepestChild:function(drops){deepest=drops[0];for(i=1;i<drops.length;++i)
|
437 |
+
if(Element.isParent(drops[i].element,deepest.element))
|
438 |
+
deepest=drops[i];return deepest;},isContained:function(element,drop){var containmentNode;if(drop.tree){containmentNode=element.treeNode;}else{containmentNode=element.parentNode;}
|
439 |
+
return drop._containers.detect(function(c){return containmentNode==c});},isAffected:function(point,element,drop){return((drop.element!=element)&&((!drop._containers)||this.isContained(element,drop))&&((!drop.accept)||(Element.classNames(element).detect(function(v){return drop.accept.include(v)})))&&Position.within(drop.element,point[0],point[1]));},deactivate:function(drop){if(drop.hoverclass)
|
440 |
+
Element.removeClassName(drop.element,drop.hoverclass);this.last_active=null;},activate:function(drop){if(drop.hoverclass)
|
441 |
+
Element.addClassName(drop.element,drop.hoverclass);this.last_active=drop;},show:function(point,element){if(!this.drops.length)return;var affected=[];if(this.last_active)this.deactivate(this.last_active);this.drops.each(function(drop){if(Droppables.isAffected(point,element,drop))
|
442 |
+
affected.push(drop);});if(affected.length>0){drop=Droppables.findDeepestChild(affected);Position.within(drop.element,point[0],point[1]);if(drop.onHover)
|
443 |
+
drop.onHover(element,drop.element,Position.overlap(drop.overlap,drop.element));Droppables.activate(drop);}},fire:function(event,element){if(!this.last_active)return;Position.prepare();if(this.isAffected([Event.pointerX(event),Event.pointerY(event)],element,this.last_active))
|
444 |
+
if(this.last_active.onDrop){this.last_active.onDrop(element,this.last_active.element,event);return true;}},reset:function(){if(this.last_active)
|
445 |
+
this.deactivate(this.last_active);}}
|
446 |
+
var Draggables={drags:[],observers:[],register:function(draggable){if(this.drags.length==0){this.eventMouseUp=this.endDrag.bindAsEventListener(this);this.eventMouseMove=this.updateDrag.bindAsEventListener(this);this.eventKeypress=this.keyPress.bindAsEventListener(this);Event.observe(document,"mouseup",this.eventMouseUp);Event.observe(draggable.element,"mousemove",this.eventMouseMove);Event.observe(document,"keypress",this.eventKeypress);}
|
447 |
+
this.drags.push(draggable);},unregister:function(draggable){this.drags=this.drags.reject(function(d){return d==draggable});if(this.drags.length==0){Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(draggable.element,"mousemove",this.eventMouseMove);Event.stopObserving(document,"keypress",this.eventKeypress);}},activate:function(draggable){if(draggable.options.delay){this._timeout=setTimeout(function(){Draggables._timeout=null;window.focus();Draggables.activeDraggable=draggable;}.bind(this),draggable.options.delay);}else{window.focus();this.activeDraggable=draggable;}},deactivate:function(){this.activeDraggable=null;},updateDrag:function(event){if(!this.activeDraggable)return;var pointer=[Event.pointerX(event),Event.pointerY(event)];if(this._lastPointer&&(this._lastPointer.inspect()==pointer.inspect()))return;this._lastPointer=pointer;this.activeDraggable.updateDrag(event,pointer);},endDrag:function(event){if(this._timeout){clearTimeout(this._timeout);this._timeout=null;}
|
448 |
+
if(!this.activeDraggable)return;this._lastPointer=null;this.activeDraggable.endDrag(event);this.activeDraggable=null;},keyPress:function(event){if(this.activeDraggable)
|
449 |
+
this.activeDraggable.keyPress(event);},addObserver:function(observer){this.observers.push(observer);this._cacheObserverCallbacks();},removeObserver:function(element){this.observers=this.observers.reject(function(o){return o.element==element});this._cacheObserverCallbacks();},notify:function(eventName,draggable,event){if(this[eventName+'Count']>0)
|
450 |
+
this.observers.each(function(o){if(o[eventName])o[eventName](eventName,draggable,event);});if(draggable.options[eventName])draggable.options[eventName](draggable,event);},_cacheObserverCallbacks:function(){['onStart','onEnd','onDrag'].each(function(eventName){Draggables[eventName+'Count']=Draggables.observers.select(function(o){return o[eventName];}).length;});}}
|
451 |
+
var Draggable=Class.create();Draggable._dragging={};Draggable.prototype={initialize:function(element){var defaults={handle:false,reverteffect:function(element,top_offset,left_offset){var dur=Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;new Effect.Move(element,{x:-left_offset,y:-top_offset,duration:dur,queue:{scope:'_draggable',position:'end'}});},endeffect:function(element){var toOpacity=typeof element._opacity=='number'?element._opacity:1.0;new Effect.Opacity(element,{duration:0.2,from:0.7,to:toOpacity,queue:{scope:'_draggable',position:'end'},afterFinish:function(){Draggable._dragging[element]=false}});},zindex:1000,revert:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,snap:false,delay:0};if(!arguments[1]||typeof arguments[1].endeffect=='undefined')
|
452 |
+
Object.extend(defaults,{starteffect:function(element){element._opacity=Element.getOpacity(element);Draggable._dragging[element]=true;new Effect.Opacity(element,{duration:0.2,from:element._opacity,to:0.7});}});var options=Object.extend(defaults,arguments[1]||{});this.element=$(element);if(options.handle&&(typeof options.handle=='string'))
|
453 |
+
this.handle=this.element.down('.'+options.handle,0);if(!this.handle)this.handle=$(options.handle);if(!this.handle)this.handle=this.element;if(options.scroll&&!options.scroll.scrollTo&&!options.scroll.outerHTML){options.scroll=$(options.scroll);this._isScrollChild=Element.childOf(this.element,options.scroll);}
|
454 |
+
Element.makePositioned(this.element);this.delta=this.currentDelta();this.options=options;this.dragging=false;this.eventMouseDown=this.initDrag.bindAsEventListener(this);Event.observe(this.handle,"mousedown",this.eventMouseDown);Draggables.register(this);},destroy:function(){Event.stopObserving(this.handle,"mousedown",this.eventMouseDown);Draggables.unregister(this);},currentDelta:function(){return([parseInt(Element.getStyle(this.element,'left')||'0'),parseInt(Element.getStyle(this.element,'top')||'0')]);},initDrag:function(event){if(typeof Draggable._dragging[this.element]!='undefined'&&Draggable._dragging[this.element])return;if(Event.isLeftClick(event)){var src=Event.element(event);if((tag_name=src.tagName.toUpperCase())&&(tag_name=='INPUT'||tag_name=='SELECT'||tag_name=='OPTION'||tag_name=='BUTTON'||tag_name=='TEXTAREA'))return;var pointer=[Event.pointerX(event),Event.pointerY(event)];var pos=Position.cumulativeOffset(this.element);this.offset=[0,1].map(function(i){return(pointer[i]-pos[i])});Draggables.activate(this);Event.stop(event);}},startDrag:function(event){this.dragging=true;if(this.options.zindex){this.originalZ=parseInt(Element.getStyle(this.element,'z-index')||0);this.element.style.zIndex=this.options.zindex;}
|
455 |
+
if(this.options.ghosting){this._clone=this.element.cloneNode(true);Position.absolutize(this.element);this.element.parentNode.insertBefore(this._clone,this.element);}
|
456 |
+
if(this.options.scroll){if(this.options.scroll==window){var where=this._getWindowScroll(this.options.scroll);this.originalScrollLeft=where.left;this.originalScrollTop=where.top;}else{this.originalScrollLeft=this.options.scroll.scrollLeft;this.originalScrollTop=this.options.scroll.scrollTop;}}
|
457 |
+
Draggables.notify('onStart',this,event);if(this.options.starteffect)this.options.starteffect(this.element);},updateDrag:function(event,pointer){if(!this.dragging)this.startDrag(event);if(!this.options.quiet){Position.prepare();Droppables.show(pointer,this.element);}
|
458 |
+
Draggables.notify('onDrag',this,event);this.draw(pointer);if(this.options.change)this.options.change(this);if(this.options.scroll){this.stopScrolling();var p;if(this.options.scroll==window){with(this._getWindowScroll(this.options.scroll)){p=[left,top,left+width,top+height];}}else{p=Position.page(this.options.scroll);p[0]+=this.options.scroll.scrollLeft+Position.deltaX;p[1]+=this.options.scroll.scrollTop+Position.deltaY;p.push(p[0]+this.options.scroll.offsetWidth);p.push(p[1]+this.options.scroll.offsetHeight);}
|
459 |
+
var speed=[0,0];if(pointer[0]<(p[0]+this.options.scrollSensitivity))speed[0]=pointer[0]-(p[0]+this.options.scrollSensitivity);if(pointer[1]<(p[1]+this.options.scrollSensitivity))speed[1]=pointer[1]-(p[1]+this.options.scrollSensitivity);if(pointer[0]>(p[2]-this.options.scrollSensitivity))speed[0]=pointer[0]-(p[2]-this.options.scrollSensitivity);if(pointer[1]>(p[3]-this.options.scrollSensitivity))speed[1]=pointer[1]-(p[3]-this.options.scrollSensitivity);this.startScrolling(speed);}
|
460 |
+
if(Prototype.Browser.WebKit)window.scrollBy(0,0);Event.stop(event);},finishDrag:function(event,success){this.dragging=false;if(this.options.quiet){Position.prepare();var pointer=[Event.pointerX(event),Event.pointerY(event)];Droppables.show(pointer,this.element);}
|
461 |
+
if(this.options.ghosting){Position.relativize(this.element);Element.remove(this._clone);this._clone=null;}
|
462 |
+
var dropped=false;if(success){dropped=Droppables.fire(event,this.element);if(!dropped)dropped=false;}
|
463 |
+
if(dropped&&this.options.onDropped)this.options.onDropped(this.element);Draggables.notify('onEnd',this,event);var revert=this.options.revert;if(revert&&typeof revert=='function')revert=revert(this.element);var d=this.currentDelta();if(revert&&this.options.reverteffect){if(dropped==0||revert!='failure')
|
464 |
+
this.options.reverteffect(this.element,d[1]-this.delta[1],d[0]-this.delta[0]);}else{this.delta=d;}
|
465 |
+
if(this.options.zindex)
|
466 |
+
this.element.style.zIndex=this.originalZ;if(this.options.endeffect)
|
467 |
+
this.options.endeffect(this.element);Draggables.deactivate(this);Droppables.reset();},keyPress:function(event){if(event.keyCode!=Event.KEY_ESC)return;this.finishDrag(event,false);Event.stop(event);},endDrag:function(event){if(!this.dragging)return;this.stopScrolling();this.finishDrag(event,true);Event.stop(event);},draw:function(point){var pos=Position.cumulativeOffset(this.element);if(this.options.ghosting){var r=Position.realOffset(this.element);pos[0]+=r[0]-Position.deltaX;pos[1]+=r[1]-Position.deltaY;}
|
468 |
+
var d=this.currentDelta();pos[0]-=d[0];pos[1]-=d[1];if(this.options.scroll&&(this.options.scroll!=window&&this._isScrollChild)){pos[0]-=this.options.scroll.scrollLeft-this.originalScrollLeft;pos[1]-=this.options.scroll.scrollTop-this.originalScrollTop;}
|
469 |
+
var p=[0,1].map(function(i){return(point[i]-pos[i]-this.offset[i])}.bind(this));if(this.options.snap){if(typeof this.options.snap=='function'){p=this.options.snap(p[0],p[1],this);}else{if(this.options.snap instanceof Array){p=p.map(function(v,i){return Math.round(v/this.options.snap[i])*this.options.snap[i]}.bind(this))}else{p=p.map(function(v){return Math.round(v/this.options.snap)*this.options.snap}.bind(this))}}}
|
470 |
+
var style=this.element.style;if((!this.options.constraint)||(this.options.constraint=='horizontal'))
|
471 |
+
style.left=p[0]+"px";if((!this.options.constraint)||(this.options.constraint=='vertical'))
|
472 |
+
style.top=p[1]+"px";if(style.visibility=="hidden")style.visibility="";},stopScrolling:function(){if(this.scrollInterval){clearInterval(this.scrollInterval);this.scrollInterval=null;Draggables._lastScrollPointer=null;}},startScrolling:function(speed){if(!(speed[0]||speed[1]))return;this.scrollSpeed=[speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];this.lastScrolled=new Date();this.scrollInterval=setInterval(this.scroll.bind(this),10);},scroll:function(){var current=new Date();var delta=current-this.lastScrolled;this.lastScrolled=current;if(this.options.scroll==window){with(this._getWindowScroll(this.options.scroll)){if(this.scrollSpeed[0]||this.scrollSpeed[1]){var d=delta/1000;this.options.scroll.scrollTo(left+d*this.scrollSpeed[0],top+d*this.scrollSpeed[1]);}}}else{this.options.scroll.scrollLeft+=this.scrollSpeed[0]*delta/1000;this.options.scroll.scrollTop+=this.scrollSpeed[1]*delta/1000;}
|
473 |
+
Position.prepare();Droppables.show(Draggables._lastPointer,this.element);Draggables.notify('onDrag',this);if(this._isScrollChild){Draggables._lastScrollPointer=Draggables._lastScrollPointer||$A(Draggables._lastPointer);Draggables._lastScrollPointer[0]+=this.scrollSpeed[0]*delta/1000;Draggables._lastScrollPointer[1]+=this.scrollSpeed[1]*delta/1000;if(Draggables._lastScrollPointer[0]<0)
|
474 |
+
Draggables._lastScrollPointer[0]=0;if(Draggables._lastScrollPointer[1]<0)
|
475 |
+
Draggables._lastScrollPointer[1]=0;this.draw(Draggables._lastScrollPointer);}
|
476 |
+
if(this.options.change)this.options.change(this);},_getWindowScroll:function(w){var T,L,W,H;with(w.document){if(w.document.documentElement&&documentElement.scrollTop){T=documentElement.scrollTop;L=documentElement.scrollLeft;}else if(w.document.body){T=body.scrollTop;L=body.scrollLeft;}
|
477 |
+
if(w.innerWidth){W=w.innerWidth;H=w.innerHeight;}else if(w.document.documentElement&&documentElement.clientWidth){W=documentElement.clientWidth;H=documentElement.clientHeight;}else{W=body.offsetWidth;H=body.offsetHeight}}
|
478 |
+
return{top:T,left:L,width:W,height:H};}}
|
479 |
+
var SortableObserver=Class.create();SortableObserver.prototype={initialize:function(element,observer){this.element=$(element);this.observer=observer;this.lastValue=Sortable.serialize(this.element);},onStart:function(){this.lastValue=Sortable.serialize(this.element);},onEnd:function(){Sortable.unmark();if(this.lastValue!=Sortable.serialize(this.element))
|
480 |
+
this.observer(this.element)}}
|
481 |
+
var Sortable={SERIALIZE_RULE:/^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,sortables:{},_findRootElement:function(element){while(element.tagName.toUpperCase()!="BODY"){if(element.id&&Sortable.sortables[element.id])return element;element=element.parentNode;}},options:function(element){element=Sortable._findRootElement($(element));if(!element)return;return Sortable.sortables[element.id];},destroy:function(element){var s=Sortable.options(element);if(s){Draggables.removeObserver(s.element);s.droppables.each(function(d){Droppables.remove(d)});s.draggables.invoke('destroy');delete Sortable.sortables[s.element.id];}},create:function(element){element=$(element);var options=Object.extend({element:element,tag:'li',dropOnEmpty:false,tree:false,treeTag:'ul',overlap:'vertical',constraint:'vertical',containment:element,handle:false,only:false,delay:0,hoverclass:null,ghosting:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,format:this.SERIALIZE_RULE,elements:false,handles:false,onChange:Prototype.emptyFunction,onUpdate:Prototype.emptyFunction},arguments[1]||{});this.destroy(element);var options_for_draggable={revert:true,quiet:options.quiet,scroll:options.scroll,scrollSpeed:options.scrollSpeed,scrollSensitivity:options.scrollSensitivity,delay:options.delay,ghosting:options.ghosting,constraint:options.constraint,handle:options.handle};if(options.starteffect)
|
482 |
+
options_for_draggable.starteffect=options.starteffect;if(options.reverteffect)
|
483 |
+
options_for_draggable.reverteffect=options.reverteffect;else
|
484 |
+
if(options.ghosting)options_for_draggable.reverteffect=function(element){element.style.top=0;element.style.left=0;};if(options.endeffect)
|
485 |
+
options_for_draggable.endeffect=options.endeffect;if(options.zindex)
|
486 |
+
options_for_draggable.zindex=options.zindex;var options_for_droppable={overlap:options.overlap,containment:options.containment,tree:options.tree,hoverclass:options.hoverclass,onHover:Sortable.onHover}
|
487 |
+
var options_for_tree={onHover:Sortable.onEmptyHover,overlap:options.overlap,containment:options.containment,hoverclass:options.hoverclass}
|
488 |
+
Element.cleanWhitespace(element);options.draggables=[];options.droppables=[];if(options.dropOnEmpty||options.tree){Droppables.add(element,options_for_tree);options.droppables.push(element);}
|
489 |
+
(options.elements||this.findElements(element,options)||[]).each(function(e,i){var handle=options.handles?$(options.handles[i]):(options.handle?$(e).getElementsByClassName(options.handle)[0]:e);options.draggables.push(new Draggable(e,Object.extend(options_for_draggable,{handle:handle})));Droppables.add(e,options_for_droppable);if(options.tree)e.treeNode=element;options.droppables.push(e);});if(options.tree){(Sortable.findTreeElements(element,options)||[]).each(function(e){Droppables.add(e,options_for_tree);e.treeNode=element;options.droppables.push(e);});}
|
490 |
+
this.sortables[element.id]=options;Draggables.addObserver(new SortableObserver(element,options.onUpdate));},findElements:function(element,options){return Element.findChildren(element,options.only,options.tree?true:false,options.tag);},findTreeElements:function(element,options){return Element.findChildren(element,options.only,options.tree?true:false,options.treeTag);},onHover:function(element,dropon,overlap){if(Element.isParent(dropon,element))return;if(overlap>.33&&overlap<.66&&Sortable.options(dropon).tree){return;}else if(overlap>0.5){Sortable.mark(dropon,'before');if(dropon.previousSibling!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden";dropon.parentNode.insertBefore(element,dropon);if(dropon.parentNode!=oldParentNode)
|
491 |
+
Sortable.options(oldParentNode).onChange(element);Sortable.options(dropon.parentNode).onChange(element);}}else{Sortable.mark(dropon,'after');var nextElement=dropon.nextSibling||null;if(nextElement!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden";dropon.parentNode.insertBefore(element,nextElement);if(dropon.parentNode!=oldParentNode)
|
492 |
+
Sortable.options(oldParentNode).onChange(element);Sortable.options(dropon.parentNode).onChange(element);}}},onEmptyHover:function(element,dropon,overlap){var oldParentNode=element.parentNode;var droponOptions=Sortable.options(dropon);if(!Element.isParent(dropon,element)){var index;var children=Sortable.findElements(dropon,{tag:droponOptions.tag,only:droponOptions.only});var child=null;if(children){var offset=Element.offsetSize(dropon,droponOptions.overlap)*(1.0-overlap);for(index=0;index<children.length;index+=1){if(offset-Element.offsetSize(children[index],droponOptions.overlap)>=0){offset-=Element.offsetSize(children[index],droponOptions.overlap);}else if(offset-(Element.offsetSize(children[index],droponOptions.overlap)/2)>=0){child=index+1<children.length?children[index+1]:null;break;}else{child=children[index];break;}}}
|
493 |
+
dropon.insertBefore(element,child);Sortable.options(oldParentNode).onChange(element);droponOptions.onChange(element);}},unmark:function(){if(Sortable._marker)Sortable._marker.hide();},mark:function(dropon,position){var sortable=Sortable.options(dropon.parentNode);if(sortable&&!sortable.ghosting)return;if(!Sortable._marker){Sortable._marker=($('dropmarker')||Element.extend(document.createElement('DIV'))).hide().addClassName('dropmarker').setStyle({position:'absolute'});document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);}
|
494 |
+
var offsets=Position.cumulativeOffset(dropon);Sortable._marker.setStyle({left:offsets[0]+'px',top:offsets[1]+'px'});if(position=='after')
|
495 |
+
if(sortable.overlap=='horizontal')
|
496 |
+
Sortable._marker.setStyle({left:(offsets[0]+dropon.clientWidth)+'px'});else
|
497 |
+
Sortable._marker.setStyle({top:(offsets[1]+dropon.clientHeight)+'px'});Sortable._marker.show();},_tree:function(element,options,parent){var children=Sortable.findElements(element,options)||[];for(var i=0;i<children.length;++i){var match=children[i].id.match(options.format);if(!match)continue;var child={id:encodeURIComponent(match?match[1]:null),element:element,parent:parent,children:[],position:parent.children.length,container:$(children[i]).down(options.treeTag)}
|
498 |
+
if(child.container)
|
499 |
+
this._tree(child.container,options,child)
|
500 |
+
parent.children.push(child);}
|
501 |
+
return parent;},tree:function(element){element=$(element);var sortableOptions=this.options(element);var options=Object.extend({tag:sortableOptions.tag,treeTag:sortableOptions.treeTag,only:sortableOptions.only,name:element.id,format:sortableOptions.format},arguments[1]||{});var root={id:null,parent:null,children:[],container:element,position:0}
|
502 |
+
return Sortable._tree(element,options,root);},_constructIndex:function(node){var index='';do{if(node.id)index='['+node.position+']'+index;}while((node=node.parent)!=null);return index;},sequence:function(element){element=$(element);var options=Object.extend(this.options(element),arguments[1]||{});return $(this.findElements(element,options)||[]).map(function(item){return item.id.match(options.format)?item.id.match(options.format)[1]:'';});},setSequence:function(element,new_sequence){element=$(element);var options=Object.extend(this.options(element),arguments[2]||{});var nodeMap={};this.findElements(element,options).each(function(n){if(n.id.match(options.format))
|
503 |
+
nodeMap[n.id.match(options.format)[1]]=[n,n.parentNode];n.parentNode.removeChild(n);});new_sequence.each(function(ident){var n=nodeMap[ident];if(n){n[1].appendChild(n[0]);delete nodeMap[ident];}});},serialize:function(element){element=$(element);var options=Object.extend(Sortable.options(element),arguments[1]||{});var name=encodeURIComponent((arguments[1]&&arguments[1].name)?arguments[1].name:element.id);if(options.tree){return Sortable.tree(element,arguments[1]).children.map(function(item){return[name+Sortable._constructIndex(item)+"[id]="+
|
504 |
+
encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));}).flatten().join('&');}else{return Sortable.sequence(element,arguments[1]).map(function(item){return name+"[]="+encodeURIComponent(item);}).join('&');}}}
|
505 |
+
Element.isParent=function(child,element){if(!child.parentNode||child==element)return false;if(child.parentNode==element)return true;return Element.isParent(child.parentNode,element);}
|
506 |
+
Element.findChildren=function(element,only,recursive,tagName){if(!element.hasChildNodes())return null;tagName=tagName.toUpperCase();if(only)only=[only].flatten();var elements=[];$A(element.childNodes).each(function(e){if(e.tagName&&e.tagName.toUpperCase()==tagName&&(!only||(Element.classNames(e).detect(function(v){return only.include(v)}))))
|
507 |
+
elements.push(e);if(recursive){var grandchildren=Element.findChildren(e,only,recursive,tagName);if(grandchildren)elements.push(grandchildren);}});return(elements.length>0?elements.flatten():[]);}
|
508 |
+
Element.offsetSize=function(element,type){return element['offset'+((type=='vertical'||type=='height')?'Height':'Width')];};if(typeof Effect=='undefined')
|
509 |
+
throw("controls.js requires including script.aculo.us' effects.js library");var Autocompleter={}
|
510 |
+
Autocompleter.Base=function(){};Autocompleter.Base.prototype={baseInitialize:function(element,update,options){element=$(element)
|
511 |
+
this.element=element;this.update=$(update);this.hasFocus=false;this.changed=false;this.active=false;this.index=0;this.entryCount=0;if(this.setOptions)
|
512 |
+
this.setOptions(options);else
|
513 |
+
this.options=options||{};this.options.paramName=this.options.paramName||this.element.name;this.options.tokens=this.options.tokens||[];this.options.frequency=this.options.frequency||0.4;this.options.minChars=this.options.minChars||1;this.options.onShow=this.options.onShow||function(element,update){if(!update.style.position||update.style.position=='absolute'){update.style.position='absolute';Position.clone(element,update,{setHeight:false,offsetTop:element.offsetHeight});}
|
514 |
+
Effect.Appear(update,{duration:0.15});};this.options.onHide=this.options.onHide||function(element,update){new Effect.Fade(update,{duration:0.15})};if(typeof(this.options.tokens)=='string')
|
515 |
+
this.options.tokens=new Array(this.options.tokens);this.observer=null;this.element.setAttribute('autocomplete','off');Element.hide(this.update);Event.observe(this.element,'blur',this.onBlur.bindAsEventListener(this));Event.observe(this.element,'keypress',this.onKeyPress.bindAsEventListener(this));Event.observe(window,'beforeunload',function(){element.setAttribute('autocomplete','on');});},show:function(){if(Element.getStyle(this.update,'display')=='none')this.options.onShow(this.element,this.update);if(!this.iefix&&(Prototype.Browser.IE)&&(Element.getStyle(this.update,'position')=='absolute')){new Insertion.After(this.update,'<iframe id="'+this.update.id+'_iefix" '+'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" '+'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');this.iefix=$(this.update.id+'_iefix');}
|
516 |
+
if(this.iefix)setTimeout(this.fixIEOverlapping.bind(this),50);},fixIEOverlapping:function(){Position.clone(this.update,this.iefix,{setTop:(!this.update.style.height)});this.iefix.style.zIndex=1;this.update.style.zIndex=2;Element.show(this.iefix);},hide:function(){this.stopIndicator();if(Element.getStyle(this.update,'display')!='none')this.options.onHide(this.element,this.update);if(this.iefix)Element.hide(this.iefix);},startIndicator:function(){if(this.options.indicator)Element.show(this.options.indicator);},stopIndicator:function(){if(this.options.indicator)Element.hide(this.options.indicator);},onKeyPress:function(event){if(this.active)
|
517 |
+
switch(event.keyCode){case Event.KEY_TAB:case Event.KEY_RETURN:this.selectEntry();Event.stop(event);case Event.KEY_ESC:this.hide();this.active=false;Event.stop(event);return;case Event.KEY_LEFT:case Event.KEY_RIGHT:return;case Event.KEY_UP:this.markPrevious();this.render();if(Prototype.Browser.WebKit)Event.stop(event);return;case Event.KEY_DOWN:this.markNext();this.render();if(Prototype.Browser.WebKit)Event.stop(event);return;}
|
518 |
+
else
|
519 |
+
if(event.keyCode==Event.KEY_TAB||event.keyCode==Event.KEY_RETURN||(Prototype.Browser.WebKit>0&&event.keyCode==0))return;this.changed=true;this.hasFocus=true;if(this.observer)clearTimeout(this.observer);this.observer=setTimeout(this.onObserverEvent.bind(this),this.options.frequency*1000);},activate:function(){this.changed=false;this.hasFocus=true;this.getUpdatedChoices();},onHover:function(event){var element=Event.findElement(event,'LI');if(this.index!=element.autocompleteIndex)
|
520 |
+
{this.index=element.autocompleteIndex;this.render();}
|
521 |
+
Event.stop(event);},onClick:function(event){var element=Event.findElement(event,'LI');this.index=element.autocompleteIndex;this.selectEntry();this.hide();},onBlur:function(event){setTimeout(this.hide.bind(this),250);this.hasFocus=false;this.active=false;},render:function(){if(this.entryCount>0){for(var i=0;i<this.entryCount;i++)
|
522 |
+
this.index==i?Element.addClassName(this.getEntry(i),"selected"):Element.removeClassName(this.getEntry(i),"selected");if(this.hasFocus){this.show();this.active=true;}}else{this.active=false;this.hide();}},markPrevious:function(){if(this.index>0)this.index--
|
523 |
+
else this.index=this.entryCount-1;this.getEntry(this.index).scrollIntoView(true);},markNext:function(){if(this.index<this.entryCount-1)this.index++
|
524 |
+
else this.index=0;this.getEntry(this.index).scrollIntoView(false);},getEntry:function(index){return this.update.firstChild.childNodes[index];},getCurrentEntry:function(){return this.getEntry(this.index);},selectEntry:function(){this.active=false;this.updateElement(this.getCurrentEntry());},updateElement:function(selectedElement){if(this.options.updateElement){this.options.updateElement(selectedElement);return;}
|
525 |
+
var value='';if(this.options.select){var nodes=document.getElementsByClassName(this.options.select,selectedElement)||[];if(nodes.length>0)value=Element.collectTextNodes(nodes[0],this.options.select);}else
|
526 |
+
value=Element.collectTextNodesIgnoreClass(selectedElement,'informal');var lastTokenPos=this.findLastToken();if(lastTokenPos!=-1){var newValue=this.element.value.substr(0,lastTokenPos+1);var whitespace=this.element.value.substr(lastTokenPos+1).match(/^\s+/);if(whitespace)
|
527 |
+
newValue+=whitespace[0];this.element.value=newValue+value;}else{this.element.value=value;}
|
528 |
+
this.element.focus();if(this.options.afterUpdateElement)
|
529 |
+
this.options.afterUpdateElement(this.element,selectedElement);},updateChoices:function(choices){if(!this.changed&&this.hasFocus){this.update.innerHTML=choices;Element.cleanWhitespace(this.update);Element.cleanWhitespace(this.update.down());if(this.update.firstChild&&this.update.down().childNodes){this.entryCount=this.update.down().childNodes.length;for(var i=0;i<this.entryCount;i++){var entry=this.getEntry(i);entry.autocompleteIndex=i;this.addObservers(entry);}}else{this.entryCount=0;}
|
530 |
+
this.stopIndicator();this.index=0;if(this.entryCount==1&&this.options.autoSelect){this.selectEntry();this.hide();}else{this.render();}}},addObservers:function(element){Event.observe(element,"mouseover",this.onHover.bindAsEventListener(this));Event.observe(element,"click",this.onClick.bindAsEventListener(this));},onObserverEvent:function(){this.changed=false;if(this.getToken().length>=this.options.minChars){this.getUpdatedChoices();}else{this.active=false;this.hide();}},getToken:function(){var tokenPos=this.findLastToken();if(tokenPos!=-1)
|
531 |
+
var ret=this.element.value.substr(tokenPos+1).replace(/^\s+/,'').replace(/\s+$/,'');else
|
532 |
+
var ret=this.element.value;return /\n/.test(ret)?'':ret;},findLastToken:function(){var lastTokenPos=-1;for(var i=0;i<this.options.tokens.length;i++){var thisTokenPos=this.element.value.lastIndexOf(this.options.tokens[i]);if(thisTokenPos>lastTokenPos)
|
533 |
+
lastTokenPos=thisTokenPos;}
|
534 |
+
return lastTokenPos;}}
|
535 |
+
Ajax.Autocompleter=Class.create();Object.extend(Object.extend(Ajax.Autocompleter.prototype,Autocompleter.Base.prototype),{initialize:function(element,update,url,options){this.baseInitialize(element,update,options);this.options.asynchronous=true;this.options.onComplete=this.onComplete.bind(this);this.options.defaultParams=this.options.parameters||null;this.url=url;},getUpdatedChoices:function(){this.startIndicator();var entry=encodeURIComponent(this.options.paramName)+'='+
|
536 |
+
encodeURIComponent(this.getToken());this.options.parameters=this.options.callback?this.options.callback(this.element,entry):entry;if(this.options.defaultParams)
|
537 |
+
this.options.parameters+='&'+this.options.defaultParams;new Ajax.Request(this.url,this.options);},onComplete:function(request){this.updateChoices(request.responseText);}});Autocompleter.Local=Class.create();Autocompleter.Local.prototype=Object.extend(new Autocompleter.Base(),{initialize:function(element,update,array,options){this.baseInitialize(element,update,options);this.options.array=array;},getUpdatedChoices:function(){this.updateChoices(this.options.selector(this));},setOptions:function(options){this.options=Object.extend({choices:10,partialSearch:true,partialChars:2,ignoreCase:true,fullSearch:false,selector:function(instance){var ret=[];var partial=[];var entry=instance.getToken();var count=0;for(var i=0;i<instance.options.array.length&&ret.length<instance.options.choices;i++){var elem=instance.options.array[i];var foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase()):elem.indexOf(entry);while(foundPos!=-1){if(foundPos==0&&elem.length!=entry.length){ret.push("<li><strong>"+elem.substr(0,entry.length)+"</strong>"+
|
538 |
+
elem.substr(entry.length)+"</li>");break;}else if(entry.length>=instance.options.partialChars&&instance.options.partialSearch&&foundPos!=-1){if(instance.options.fullSearch||/\s/.test(elem.substr(foundPos-1,1))){partial.push("<li>"+elem.substr(0,foundPos)+"<strong>"+
|
539 |
+
elem.substr(foundPos,entry.length)+"</strong>"+elem.substr(foundPos+entry.length)+"</li>");break;}}
|
540 |
+
foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase(),foundPos+1):elem.indexOf(entry,foundPos+1);}}
|
541 |
+
if(partial.length)
|
542 |
+
ret=ret.concat(partial.slice(0,instance.options.choices-ret.length))
|
543 |
+
return"<ul>"+ret.join('')+"</ul>";}},options||{});}});Field.scrollFreeActivate=function(field){setTimeout(function(){Field.activate(field);},1);}
|
544 |
+
Ajax.InPlaceEditor=Class.create();Ajax.InPlaceEditor.defaultHighlightColor="#FFFF99";Ajax.InPlaceEditor.prototype={initialize:function(element,url,options){this.url=url;this.element=$(element);this.options=Object.extend({paramName:"value",okButton:true,okLink:false,okText:"ok",cancelButton:false,cancelLink:true,cancelText:"cancel",textBeforeControls:'',textBetweenControls:'',textAfterControls:'',savingText:"Saving...",clickToEditText:"Click to edit",okText:"ok",rows:1,onComplete:function(transport,element){new Effect.Highlight(element,{startcolor:this.options.highlightcolor});},onFailure:function(transport){alert("Error communicating with the server: "+transport.responseText.stripTags());},callback:function(form){return Form.serialize(form);},handleLineBreaks:true,loadingText:'Loading...',savingClassName:'inplaceeditor-saving',loadingClassName:'inplaceeditor-loading',formClassName:'inplaceeditor-form',highlightcolor:Ajax.InPlaceEditor.defaultHighlightColor,highlightendcolor:"#FFFFFF",externalControl:null,submitOnBlur:false,ajaxOptions:{},evalScripts:false},options||{});if(!this.options.formId&&this.element.id){this.options.formId=this.element.id+"-inplaceeditor";if($(this.options.formId)){this.options.formId=null;}}
|
545 |
+
if(this.options.externalControl){this.options.externalControl=$(this.options.externalControl);}
|
546 |
+
this.originalBackground=Element.getStyle(this.element,'background-color');if(!this.originalBackground){this.originalBackground="transparent";}
|
547 |
+
this.element.title=this.options.clickToEditText;this.onclickListener=this.enterEditMode.bindAsEventListener(this);this.mouseoverListener=this.enterHover.bindAsEventListener(this);this.mouseoutListener=this.leaveHover.bindAsEventListener(this);Event.observe(this.element,'click',this.onclickListener);Event.observe(this.element,'mouseover',this.mouseoverListener);Event.observe(this.element,'mouseout',this.mouseoutListener);if(this.options.externalControl){Event.observe(this.options.externalControl,'click',this.onclickListener);Event.observe(this.options.externalControl,'mouseover',this.mouseoverListener);Event.observe(this.options.externalControl,'mouseout',this.mouseoutListener);}},enterEditMode:function(evt){if(this.saving)return;if(this.editing)return;this.editing=true;this.onEnterEditMode();if(this.options.externalControl){Element.hide(this.options.externalControl);}
|
548 |
+
Element.hide(this.element);this.createForm();this.element.parentNode.insertBefore(this.form,this.element);if(!this.options.loadTextURL)Field.scrollFreeActivate(this.editField);if(evt){Event.stop(evt);}
|
549 |
+
return false;},createForm:function(){this.form=document.createElement("form");this.form.id=this.options.formId;Element.addClassName(this.form,this.options.formClassName)
|
550 |
+
this.form.onsubmit=this.onSubmit.bind(this);this.createEditField();if(this.options.textarea){var br=document.createElement("br");this.form.appendChild(br);}
|
551 |
+
if(this.options.textBeforeControls)
|
552 |
+
this.form.appendChild(document.createTextNode(this.options.textBeforeControls));if(this.options.okButton){var okButton=document.createElement("input");okButton.type="submit";okButton.value=this.options.okText;okButton.className='editor_ok_button';this.form.appendChild(okButton);}
|
553 |
+
if(this.options.okLink){var okLink=document.createElement("a");okLink.href="#";okLink.appendChild(document.createTextNode(this.options.okText));okLink.onclick=this.onSubmit.bind(this);okLink.className='editor_ok_link';this.form.appendChild(okLink);}
|
554 |
+
if(this.options.textBetweenControls&&(this.options.okLink||this.options.okButton)&&(this.options.cancelLink||this.options.cancelButton))
|
555 |
+
this.form.appendChild(document.createTextNode(this.options.textBetweenControls));if(this.options.cancelButton){var cancelButton=document.createElement("input");cancelButton.type="submit";cancelButton.value=this.options.cancelText;cancelButton.onclick=this.onclickCancel.bind(this);cancelButton.className='editor_cancel_button';this.form.appendChild(cancelButton);}
|
556 |
+
if(this.options.cancelLink){var cancelLink=document.createElement("a");cancelLink.href="#";cancelLink.appendChild(document.createTextNode(this.options.cancelText));cancelLink.onclick=this.onclickCancel.bind(this);cancelLink.className='editor_cancel editor_cancel_link';this.form.appendChild(cancelLink);}
|
557 |
+
if(this.options.textAfterControls)
|
558 |
+
this.form.appendChild(document.createTextNode(this.options.textAfterControls));},hasHTMLLineBreaks:function(string){if(!this.options.handleLineBreaks)return false;return string.match(/<br/i)||string.match(/<p>/i);},convertHTMLLineBreaks:function(string){return string.replace(/<br>/gi,"\n").replace(/<br\/>/gi,"\n").replace(/<\/p>/gi,"\n").replace(/<p>/gi,"");},createEditField:function(){var text;if(this.options.loadTextURL){text=this.options.loadingText;}else{text=this.getText();}
|
559 |
+
var obj=this;if(this.options.rows==1&&!this.hasHTMLLineBreaks(text)){this.options.textarea=false;var textField=document.createElement("input");textField.obj=this;textField.type="text";textField.name=this.options.paramName;textField.value=text;textField.style.backgroundColor=this.options.highlightcolor;textField.className='editor_field';var size=this.options.size||this.options.cols||0;if(size!=0)textField.size=size;if(this.options.submitOnBlur)
|
560 |
+
textField.onblur=this.onSubmit.bind(this);this.editField=textField;}else{this.options.textarea=true;var textArea=document.createElement("textarea");textArea.obj=this;textArea.name=this.options.paramName;textArea.value=this.convertHTMLLineBreaks(text);textArea.rows=this.options.rows;textArea.cols=this.options.cols||40;textArea.className='editor_field';if(this.options.submitOnBlur)
|
561 |
+
textArea.onblur=this.onSubmit.bind(this);this.editField=textArea;}
|
562 |
+
if(this.options.loadTextURL){this.loadExternalText();}
|
563 |
+
this.form.appendChild(this.editField);},getText:function(){return this.element.innerHTML;},loadExternalText:function(){Element.addClassName(this.form,this.options.loadingClassName);this.editField.disabled=true;new Ajax.Request(this.options.loadTextURL,Object.extend({asynchronous:true,onComplete:this.onLoadedExternalText.bind(this)},this.options.ajaxOptions));},onLoadedExternalText:function(transport){Element.removeClassName(this.form,this.options.loadingClassName);this.editField.disabled=false;this.editField.value=transport.responseText.stripTags();Field.scrollFreeActivate(this.editField);},onclickCancel:function(){this.onComplete();this.leaveEditMode();return false;},onFailure:function(transport){this.options.onFailure(transport);if(this.oldInnerHTML){this.element.innerHTML=this.oldInnerHTML;this.oldInnerHTML=null;}
|
564 |
+
return false;},onSubmit:function(){var form=this.form;var value=this.editField.value;this.onLoading();if(this.options.evalScripts){new Ajax.Request(this.url,Object.extend({parameters:this.options.callback(form,value),onComplete:this.onComplete.bind(this),onFailure:this.onFailure.bind(this),asynchronous:true,evalScripts:true},this.options.ajaxOptions));}else{new Ajax.Updater({success:this.element,failure:null},this.url,Object.extend({parameters:this.options.callback(form,value),onComplete:this.onComplete.bind(this),onFailure:this.onFailure.bind(this)},this.options.ajaxOptions));}
|
565 |
+
if(arguments.length>1){Event.stop(arguments[0]);}
|
566 |
+
return false;},onLoading:function(){this.saving=true;this.removeForm();this.leaveHover();this.showSaving();},showSaving:function(){this.oldInnerHTML=this.element.innerHTML;this.element.innerHTML=this.options.savingText;Element.addClassName(this.element,this.options.savingClassName);this.element.style.backgroundColor=this.originalBackground;Element.show(this.element);},removeForm:function(){if(this.form){if(this.form.parentNode)Element.remove(this.form);this.form=null;}},enterHover:function(){if(this.saving)return;this.element.style.backgroundColor=this.options.highlightcolor;if(this.effect){this.effect.cancel();}
|
567 |
+
Element.addClassName(this.element,this.options.hoverClassName)},leaveHover:function(){if(this.options.backgroundColor){this.element.style.backgroundColor=this.oldBackground;}
|
568 |
+
Element.removeClassName(this.element,this.options.hoverClassName)
|
569 |
+
if(this.saving)return;this.effect=new Effect.Highlight(this.element,{startcolor:this.options.highlightcolor,endcolor:this.options.highlightendcolor,restorecolor:this.originalBackground});},leaveEditMode:function(){Element.removeClassName(this.element,this.options.savingClassName);this.removeForm();this.leaveHover();this.element.style.backgroundColor=this.originalBackground;Element.show(this.element);if(this.options.externalControl){Element.show(this.options.externalControl);}
|
570 |
+
this.editing=false;this.saving=false;this.oldInnerHTML=null;this.onLeaveEditMode();},onComplete:function(transport){this.leaveEditMode();this.options.onComplete.bind(this)(transport,this.element);},onEnterEditMode:function(){},onLeaveEditMode:function(){},dispose:function(){if(this.oldInnerHTML){this.element.innerHTML=this.oldInnerHTML;}
|
571 |
+
this.leaveEditMode();Event.stopObserving(this.element,'click',this.onclickListener);Event.stopObserving(this.element,'mouseover',this.mouseoverListener);Event.stopObserving(this.element,'mouseout',this.mouseoutListener);if(this.options.externalControl){Event.stopObserving(this.options.externalControl,'click',this.onclickListener);Event.stopObserving(this.options.externalControl,'mouseover',this.mouseoverListener);Event.stopObserving(this.options.externalControl,'mouseout',this.mouseoutListener);}}};Ajax.InPlaceCollectionEditor=Class.create();Object.extend(Ajax.InPlaceCollectionEditor.prototype,Ajax.InPlaceEditor.prototype);Object.extend(Ajax.InPlaceCollectionEditor.prototype,{createEditField:function(){if(!this.cached_selectTag){var selectTag=document.createElement("select");var collection=this.options.collection||[];var optionTag;collection.each(function(e,i){optionTag=document.createElement("option");optionTag.value=(e instanceof Array)?e[0]:e;if((typeof this.options.value=='undefined')&&((e instanceof Array)?this.element.innerHTML==e[1]:e==optionTag.value))optionTag.selected=true;if(this.options.value==optionTag.value)optionTag.selected=true;optionTag.appendChild(document.createTextNode((e instanceof Array)?e[1]:e));selectTag.appendChild(optionTag);}.bind(this));this.cached_selectTag=selectTag;}
|
572 |
+
this.editField=this.cached_selectTag;if(this.options.loadTextURL)this.loadExternalText();this.form.appendChild(this.editField);this.options.callback=function(form,value){return"value="+encodeURIComponent(value);}}});Form.Element.DelayedObserver=Class.create();Form.Element.DelayedObserver.prototype={initialize:function(element,delay,callback){this.delay=delay||0.5;this.element=$(element);this.callback=callback;this.timer=null;this.lastValue=$F(this.element);Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));},delayedListener:function(event){if(this.lastValue==$F(this.element))return;if(this.timer)clearTimeout(this.timer);this.timer=setTimeout(this.onTimerEvent.bind(this),this.delay*1000);this.lastValue=$F(this.element);},onTimerEvent:function(){this.timer=null;this.callback(this.element,$F(this.element));}};;if(!Control)var Control={};Control.Slider=Class.create();Control.Slider.prototype={initialize:function(handle,track,options){var slider=this;if(handle instanceof Array){this.handles=handle.collect(function(e){return $(e)});}else{this.handles=[$(handle)];}
|
573 |
+
this.track=$(track);this.options=options||{};this.axis=this.options.axis||'horizontal';this.increment=this.options.increment||1;this.step=parseInt(this.options.step||'1');this.range=this.options.range||$R(0,1);this.value=0;this.values=this.handles.map(function(){return 0});this.spans=this.options.spans?this.options.spans.map(function(s){return $(s)}):false;this.options.startSpan=$(this.options.startSpan||null);this.options.endSpan=$(this.options.endSpan||null);this.restricted=this.options.restricted||false;this.maximum=this.options.maximum||this.range.end;this.minimum=this.options.minimum||this.range.start;this.alignX=parseInt(this.options.alignX||'0');this.alignY=parseInt(this.options.alignY||'0');this.trackLength=this.maximumOffset()-this.minimumOffset();this.handleLength=this.isVertical()?(this.handles[0].offsetHeight!=0?this.handles[0].offsetHeight:this.handles[0].style.height.replace(/px$/,"")):(this.handles[0].offsetWidth!=0?this.handles[0].offsetWidth:this.handles[0].style.width.replace(/px$/,""));this.active=false;this.dragging=false;this.disabled=false;if(this.options.disabled)this.setDisabled();this.allowedValues=this.options.values?this.options.values.sortBy(Prototype.K):false;if(this.allowedValues){this.minimum=this.allowedValues.min();this.maximum=this.allowedValues.max();}
|
574 |
+
this.eventMouseDown=this.startDrag.bindAsEventListener(this);this.eventMouseUp=this.endDrag.bindAsEventListener(this);this.eventMouseMove=this.update.bindAsEventListener(this);this.handles.each(function(h,i){i=slider.handles.length-1-i;slider.setValue(parseFloat((slider.options.sliderValue instanceof Array?slider.options.sliderValue[i]:slider.options.sliderValue)||slider.range.start),i);Element.makePositioned(h);Event.observe(h,"mousedown",slider.eventMouseDown);});Event.observe(this.track,"mousedown",this.eventMouseDown);Event.observe(document,"mouseup",this.eventMouseUp);Event.observe(this.track.parentNode.parentNode,"mousemove",this.eventMouseMove);this.initialized=true;},dispose:function(){var slider=this;Event.stopObserving(this.track,"mousedown",this.eventMouseDown);Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(this.track.parentNode.parentNode,"mousemove",this.eventMouseMove);this.handles.each(function(h){Event.stopObserving(h,"mousedown",slider.eventMouseDown);});},setDisabled:function(){this.disabled=true;},setEnabled:function(){this.disabled=false;},getNearestValue:function(value){if(this.allowedValues){if(value>=this.allowedValues.max())return(this.allowedValues.max());if(value<=this.allowedValues.min())return(this.allowedValues.min());var offset=Math.abs(this.allowedValues[0]-value);var newValue=this.allowedValues[0];this.allowedValues.each(function(v){var currentOffset=Math.abs(v-value);if(currentOffset<=offset){newValue=v;offset=currentOffset;}});return newValue;}
|
575 |
+
if(value>this.range.end)return this.range.end;if(value<this.range.start)return this.range.start;return value;},setValue:function(sliderValue,handleIdx){if(!this.active){this.activeHandleIdx=handleIdx||0;this.activeHandle=this.handles[this.activeHandleIdx];this.updateStyles();}
|
576 |
+
handleIdx=handleIdx||this.activeHandleIdx||0;if(this.initialized&&this.restricted){if((handleIdx>0)&&(sliderValue<this.values[handleIdx-1]))
|
577 |
+
sliderValue=this.values[handleIdx-1];if((handleIdx<(this.handles.length-1))&&(sliderValue>this.values[handleIdx+1]))
|
578 |
+
sliderValue=this.values[handleIdx+1];}
|
579 |
+
sliderValue=this.getNearestValue(sliderValue);this.values[handleIdx]=sliderValue;this.value=this.values[0];this.handles[handleIdx].style[this.isVertical()?'top':'left']=this.translateToPx(sliderValue);this.drawSpans();if(!this.dragging||!this.event)this.updateFinished();},setValueBy:function(delta,handleIdx){this.setValue(this.values[handleIdx||this.activeHandleIdx||0]+delta,handleIdx||this.activeHandleIdx||0);},translateToPx:function(value){return Math.round(((this.trackLength-this.handleLength)/(this.range.end-this.range.start))*(value-this.range.start))+"px";},translateToValue:function(offset){return((offset/(this.trackLength-this.handleLength)*(this.range.end-this.range.start))+this.range.start);},getRange:function(range){var v=this.values.sortBy(Prototype.K);range=range||0;return $R(v[range],v[range+1]);},minimumOffset:function(){return(this.isVertical()?this.alignY:this.alignX);},maximumOffset:function(){return(this.isVertical()?(this.track.offsetHeight!=0?this.track.offsetHeight:this.track.style.height.replace(/px$/,""))-this.alignY:(this.track.offsetWidth!=0?this.track.offsetWidth:this.track.style.width.replace(/px$/,""))-this.alignY);},isVertical:function(){return(this.axis=='vertical');},drawSpans:function(){var slider=this;if(this.spans)
|
580 |
+
$R(0,this.spans.length-1).each(function(r){slider.setSpan(slider.spans[r],slider.getRange(r))});if(this.options.startSpan)
|
581 |
+
this.setSpan(this.options.startSpan,$R(0,this.values.length>1?this.getRange(0).min():this.value));if(this.options.endSpan)
|
582 |
+
this.setSpan(this.options.endSpan,$R(this.values.length>1?this.getRange(this.spans.length-1).max():this.value,this.maximum));},setSpan:function(span,range){if(this.isVertical()){span.style.top=this.translateToPx(range.start);span.style.height=this.translateToPx(range.end-range.start+this.range.start);}else{span.style.left=this.translateToPx(range.start);span.style.width=this.translateToPx(range.end-range.start+this.range.start);}},updateStyles:function(){this.handles.each(function(h){Element.removeClassName(h,'selected')});Element.addClassName(this.activeHandle,'selected');},startDrag:function(event){if(Event.isLeftClick(event)){if(!this.disabled){this.active=true;var handle=Event.element(event);var pointer=[Event.pointerX(event),Event.pointerY(event)];var track=handle;if(track==this.track){var offsets=Position.cumulativeOffset(this.track);this.event=event;this.setValue(this.translateToValue((this.isVertical()?pointer[1]-offsets[1]:pointer[0]-offsets[0])-(this.handleLength/2)));var offsets=Position.cumulativeOffset(this.activeHandle);this.offsetX=(pointer[0]-offsets[0]);this.offsetY=(pointer[1]-offsets[1]);}else{while((this.handles.indexOf(handle)==-1)&&handle.parentNode)
|
583 |
+
handle=handle.parentNode;if(this.handles.indexOf(handle)!=-1){this.activeHandle=handle;this.activeHandleIdx=this.handles.indexOf(this.activeHandle);this.updateStyles();var offsets=Position.cumulativeOffset(this.activeHandle);this.offsetX=(pointer[0]-offsets[0]);this.offsetY=(pointer[1]-offsets[1]);}}}
|
584 |
+
Event.stop(event);}},update:function(event){if(this.active){if(!this.dragging)this.dragging=true;this.draw(event);if(Prototype.Browser.WebKit)window.scrollBy(0,0);Event.stop(event);}},draw:function(event){var pointer=[Event.pointerX(event),Event.pointerY(event)];var offsets=Position.cumulativeOffset(this.track);pointer[0]-=this.offsetX+offsets[0];pointer[1]-=this.offsetY+offsets[1];this.event=event;this.setValue(this.translateToValue(this.isVertical()?pointer[1]:pointer[0]));if(this.initialized&&this.options.onSlide)
|
585 |
+
this.options.onSlide(this.values.length>1?this.values:this.value,this);},endDrag:function(event){if(this.active&&this.dragging){this.finishDrag(event,true);Event.stop(event);}
|
586 |
+
this.active=false;this.dragging=false;},finishDrag:function(event,success){this.active=false;this.dragging=false;this.updateFinished();},updateFinished:function(){if(this.initialized&&this.options.onChange)
|
587 |
+
this.options.onChange(this.values.length>1?this.values:this.value,this);this.event=null;}};function popWin(url,win,para){var win=window.open(url,win,para);win.focus();}
|
588 |
+
function setLocation(url){window.location.href=url;}
|
589 |
+
function setPLocation(url,setFocus){if(setFocus){window.opener.focus();}
|
590 |
+
window.opener.location.href=url;}
|
591 |
+
function setLanguageCode(code,fromCode){var href=window.location.href;var after='',dash;if(dash=href.match(/\#(.*)$/)){href=href.replace(/\#(.*)$/,'');after=dash[0];}
|
592 |
+
if(href.match(/[?]/)){var re=/([?&]store=)[a-z0-9_]*/;if(href.match(re)){href=href.replace(re,'$1'+code);}else{href+='&store='+code;}
|
593 |
+
var re=/([?&]from_store=)[a-z0-9_]*/;if(href.match(re)){href=href.replace(re,'');}}else{href+='?store='+code;}
|
594 |
+
if(typeof(fromCode)!='undefined'){href+='&from_store='+fromCode;}
|
595 |
+
href+=after;setLocation(href);}
|
596 |
+
function decorateGeneric(elements,decorateParams)
|
597 |
+
{var allSupportedParams=['odd','even','first','last'];var _decorateParams={};var total=elements.length;if(total){if(typeof(decorateParams)=='undefined'){decorateParams=allSupportedParams;}
|
598 |
+
if(!decorateParams.length){return;}
|
599 |
+
for(var k in allSupportedParams){_decorateParams[allSupportedParams[k]]=false;}
|
600 |
+
for(var k in decorateParams){_decorateParams[decorateParams[k]]=true;}
|
601 |
+
if(_decorateParams.first){Element.addClassName(elements[0],'first');}
|
602 |
+
if(_decorateParams.last){Element.addClassName(elements[total-1],'last');}
|
603 |
+
for(var i=0;i<total;i++){if((i+1)%2==0){if(_decorateParams.even){Element.addClassName(elements[i],'even');}}
|
604 |
+
else{if(_decorateParams.odd){Element.addClassName(elements[i],'odd');}}}}}
|
605 |
+
function decorateTable(table,options){var table=$(table);if(table){var _options={'tbody':false,'tbody tr':['odd','even','first','last'],'thead tr':['first','last'],'tfoot tr':['first','last'],'tr td':['last']};if(typeof(options)!='undefined'){for(var k in options){_options[k]=options[k];}}
|
606 |
+
if(_options['tbody']){decorateGeneric(table.select('tbody'),_options['tbody']);}
|
607 |
+
if(_options['tbody tr']){decorateGeneric(table.select('tbody tr'),_options['tbody tr']);}
|
608 |
+
if(_options['thead tr']){decorateGeneric(table.select('thead tr'),_options['thead tr']);}
|
609 |
+
if(_options['tfoot tr']){decorateGeneric(table.select('tfoot tr'),_options['tfoot tr']);}
|
610 |
+
if(_options['tr td']){var allRows=table.select('tr');if(allRows.length){for(var i=0;i<allRows.length;i++){decorateGeneric(allRows[i].getElementsByTagName('TD'),_options['tr td']);}}}}}
|
611 |
+
function decorateList(list,nonRecursive){if($(list)){if(typeof(nonRecursive)=='undefined'){var items=$(list).select('li')}
|
612 |
+
else{var items=$(list).childElements();}
|
613 |
+
decorateGeneric(items,['odd','even','last']);}}
|
614 |
+
function decorateDataList(list){list=$(list);if(list){decorateGeneric(list.select('dt'),['odd','even','last']);decorateGeneric(list.select('dd'),['odd','even','last']);}}
|
615 |
+
function formatCurrency(price,format,showPlus){precision=isNaN(format.precision=Math.abs(format.precision))?2:format.precision;requiredPrecision=isNaN(format.requiredPrecision=Math.abs(format.requiredPrecision))?2:format.requiredPrecision;precision=requiredPrecision;integerRequired=isNaN(format.integerRequired=Math.abs(format.integerRequired))?1:format.integerRequired;decimalSymbol=format.decimalSymbol==undefined?",":format.decimalSymbol;groupSymbol=format.groupSymbol==undefined?".":format.groupSymbol;groupLength=format.groupLength==undefined?3:format.groupLength;if(showPlus==undefined||showPlus==true){s=price<0?"-":(showPlus?"+":"");}else if(showPlus==false){s='';}
|
616 |
+
i=parseInt(price=Math.abs(+price||0).toFixed(precision))+"";pad=(i.length<integerRequired)?(integerRequired-i.length):0;while(pad){i='0'+i;pad--;}
|
617 |
+
j=(j=i.length)>groupLength?j%groupLength:0;re=new RegExp("(\\d{"+groupLength+"})(?=\\d)","g");r=(j?i.substr(0,j)+groupSymbol:"")+i.substr(j).replace(re,"$1"+groupSymbol)+(precision?decimalSymbol+Math.abs(price-i).toFixed(precision).replace(/-/,0).slice(2):"")
|
618 |
+
if(format.pattern.indexOf('{sign}')==-1){pattern=s+format.pattern;}else{pattern=format.pattern.replace('{sign}',s);}
|
619 |
+
return pattern.replace('%s',r).replace(/^\s\s*/,'').replace(/\s\s*$/,'');};function expandDetails(el,childClass){if(Element.hasClassName(el,'show-details')){$$(childClass).each(function(item){item.hide()});Element.removeClassName(el,'show-details');}
|
620 |
+
else{$$(childClass).each(function(item){item.show()});Element.addClassName(el,'show-details');}}
|
621 |
+
var isIE=navigator.appVersion.match(/MSIE/)=="MSIE";if(!window.Varien)
|
622 |
+
var Varien=new Object();Varien.showLoading=function(){Element.show('loading-process');}
|
623 |
+
Varien.hideLoading=function(){Element.hide('loading-process');}
|
624 |
+
Varien.GlobalHandlers={onCreate:function(){Varien.showLoading();},onComplete:function(){if(Ajax.activeRequestCount==0){Varien.hideLoading();}}};Ajax.Responders.register(Varien.GlobalHandlers);Varien.searchForm=Class.create();Varien.searchForm.prototype={initialize:function(form,field,emptyText){this.form=$(form);this.field=$(field);this.emptyText=emptyText;Event.observe(this.form,'submit',this.submit.bind(this));Event.observe(this.field,'focus',this.focus.bind(this));Event.observe(this.field,'blur',this.blur.bind(this));this.blur();},submit:function(event){if(this.field.value==this.emptyText||this.field.value==''){Event.stop(event);return false;}
|
625 |
+
return true;},focus:function(event){if(this.field.value==this.emptyText){this.field.value='';}},blur:function(event){if(this.field.value==''){this.field.value=this.emptyText;}},initAutocomplete:function(url,destinationElement){new Ajax.Autocompleter(this.field,destinationElement,url,{paramName:this.field.name,minChars:2,updateElement:this._selectAutocompleteItem.bind(this),onShow:function(element,update){if(!update.style.position||update.style.position=='absolute'){update.style.position='absolute';Position.clone(element,update,{setHeight:false,offsetTop:element.offsetHeight});}
|
626 |
+
Effect.Appear(update,{duration:0});}});},_selectAutocompleteItem:function(element){if(element.title){this.field.value=element.title;}
|
627 |
+
this.form.submit();}}
|
628 |
+
Varien.Tabs=Class.create();Varien.Tabs.prototype={initialize:function(selector){var self=this;$$(selector+' a').each(this.initTab.bind(this));},initTab:function(el){el.href='javascript:void(0)';if($(el.parentNode).hasClassName('active')){this.showContent(el);}
|
629 |
+
el.observe('click',this.showContent.bind(this,el));},showContent:function(a){var li=$(a.parentNode),ul=$(li.parentNode);ul.getElementsBySelector('li','ol').each(function(el){var contents=$(el.id+'_contents');if(el==li){el.addClassName('active');contents.show();}else{el.removeClassName('active');contents.hide();}});}}
|
630 |
+
Varien.DOB=Class.create();Varien.DOB.prototype={initialize:function(selector,required,format){var el=$$(selector)[0];this.day=Element.select($(el),'.dob-day input')[0];this.month=Element.select($(el),'.dob-month input')[0];this.year=Element.select($(el),'.dob-year input')[0];this.dob=Element.select($(el),'.dob-full input')[0];this.advice=Element.select($(el),'.validation-advice')[0];this.required=required;this.format=format;this.day.validate=this.validate.bind(this);this.month.validate=this.validate.bind(this);this.year.validate=this.validate.bind(this);this.advice.hide();},validate:function(){var error=false;if(this.day.value==''&&this.month.value==''&&this.year.value==''){if(this.required){error='This date is a required value.';}else{this.dob.value='';}}else if(this.day.value==''||this.month.value==''||this.year.value==''){error='Please enter a valid full date.';}else{var date=new Date();if(this.day.value<1||this.day.value>31){error='Please enter a valid day (1-31).';}else if(this.month.value<1||this.month.value>12){error='Please enter a valid month (1-12).';}else if(this.year.value<1900||this.year.value>date.getFullYear()){error='Please enter a valid year (1900-'+date.getFullYear()+').';}else{this.dob.value=this.format.replace(/(%m|%b)/i,this.month.value).replace(/(%d|%e)/i,this.day.value).replace(/%y/i,this.year.value);var testDOB=this.month.value+'/'+this.day.value+'/'+this.year.value;var test=new Date(testDOB);if(isNaN(test)){error='Please enter a valid date.';}}}
|
631 |
+
if(error!==false){try{this.advice.innerHTML=Translator.translate(error);}
|
632 |
+
catch(e){this.advice.innerHTML=error;}
|
633 |
+
this.advice.show();return false;}
|
634 |
+
this.advice.hide();return true;}}
|
635 |
+
Validation.addAllThese([['validate-custom',' ',function(v,elm){return elm.validate();}]]);function truncateOptions(){$$('.truncated').each(function(element){Event.observe(element,'mouseover',function(){if(element.down('div.truncated_full_value')){element.down('div.truncated_full_value').addClassName('show')}});Event.observe(element,'mouseout',function(){if(element.down('div.truncated_full_value')){element.down('div.truncated_full_value').removeClassName('show')}});});}
|
636 |
+
Event.observe(window,'load',function(){truncateOptions();});;VarienForm=Class.create();VarienForm.prototype={initialize:function(formId,firstFieldFocus){this.form=$(formId);if(!this.form){return;}
|
637 |
+
this.cache=$A();this.currLoader=false;this.currDataIndex=false;this.validator=new Validation(this.form);this.elementFocus=this.elementOnFocus.bindAsEventListener(this);this.elementBlur=this.elementOnBlur.bindAsEventListener(this);this.childLoader=this.onChangeChildLoad.bindAsEventListener(this);this.highlightClass='highlight';this.extraChildParams='';this.firstFieldFocus=firstFieldFocus||false;this.bindElements();if(this.firstFieldFocus){try{Form.Element.focus(Form.findFirstElement(this.form))}
|
638 |
+
catch(e){}}},submit:function(url){if(this.validator&&this.validator.validate()){this.form.submit();}
|
639 |
+
return false;},bindElements:function(){var elements=Form.getElements(this.form);for(var row in elements){if(elements[row].id){Event.observe(elements[row],'focus',this.elementFocus);Event.observe(elements[row],'blur',this.elementBlur);}}},elementOnFocus:function(event){var element=Event.findElement(event,'fieldset');if(element){Element.addClassName(element,this.highlightClass);}},elementOnBlur:function(event){var element=Event.findElement(event,'fieldset');if(element){Element.removeClassName(element,this.highlightClass);}},setElementsRelation:function(parent,child,dataUrl,first){if(parent=$(parent)){if(!this.cache[parent.id]){this.cache[parent.id]=$A();this.cache[parent.id]['child']=child;this.cache[parent.id]['dataUrl']=dataUrl;this.cache[parent.id]['data']=$A();this.cache[parent.id]['first']=first||false;}
|
640 |
+
Event.observe(parent,'change',this.childLoader);}},onChangeChildLoad:function(event){element=Event.element(event);this.elementChildLoad(element);},elementChildLoad:function(element,callback){this.callback=callback||false;if(element.value){this.currLoader=element.id;this.currDataIndex=element.value;if(this.cache[element.id]['data'][element.value]){this.setDataToChild(this.cache[element.id]['data'][element.value]);}
|
641 |
+
else{new Ajax.Request(this.cache[this.currLoader]['dataUrl'],{method:'post',parameters:{"parent":element.value},onComplete:this.reloadChildren.bind(this)});}}},reloadChildren:function(transport){var data=eval('('+transport.responseText+')');this.cache[this.currLoader]['data'][this.currDataIndex]=data;this.setDataToChild(data);},setDataToChild:function(data){if(data.length){var child=$(this.cache[this.currLoader]['child']);if(child){var html='<select name="'+child.name+'" id="'+child.id+'" class="'+child.className+'" title="'+child.title+'" '+this.extraChildParams+'>';if(this.cache[this.currLoader]['first']){html+='<option value="">'+this.cache[this.currLoader]['first']+'</option>';}
|
642 |
+
for(var i in data){if(data[i].value){html+='<option value="'+data[i].value+'"';if(child.value&&(child.value==data[i].value||child.value==data[i].label)){html+=' selected';}
|
643 |
+
html+='>'+data[i].label+'</option>';}}
|
644 |
+
html+='</select>';Element.insert(child,{before:html});Element.remove(child);}}
|
645 |
+
else{var child=$(this.cache[this.currLoader]['child']);if(child){var html='<input type="text" name="'+child.name+'" id="'+child.id+'" class="'+child.className+'" title="'+child.title+'" '+this.extraChildParams+'>';Element.insert(child,{before:html});Element.remove(child);}}
|
646 |
+
this.bindElements();if(this.callback){this.callback();}}}
|
647 |
+
RegionUpdater=Class.create();RegionUpdater.prototype={initialize:function(countryEl,regionTextEl,regionSelectEl,regions,disableAction)
|
648 |
+
{this.countryEl=$(countryEl);this.regionTextEl=$(regionTextEl);this.regionSelectEl=$(regionSelectEl);this.regions=regions;this.disableAction=(typeof disableAction=='undefined')?'hide':disableAction;if(this.regionSelectEl.options.length<=1){this.update();}
|
649 |
+
Event.observe(this.countryEl,'change',this.update.bind(this));},update:function()
|
650 |
+
{if(this.regions[this.countryEl.value]){var i,option,region,def;if(this.regionTextEl){def=this.regionTextEl.value.toLowerCase();this.regionTextEl.value='';}
|
651 |
+
if(!def){def=this.regionSelectEl.getAttribute('defaultValue');}
|
652 |
+
this.regionSelectEl.options.length=1;for(regionId in this.regions[this.countryEl.value]){region=this.regions[this.countryEl.value][regionId];option=document.createElement('OPTION');option.value=regionId;option.text=region.name;if(this.regionSelectEl.options.add){this.regionSelectEl.options.add(option);}else{this.regionSelectEl.appendChild(option);}
|
653 |
+
if(regionId==def||region.name.toLowerCase()==def||region.code.toLowerCase()==def){this.regionSelectEl.value=regionId;}}
|
654 |
+
if(this.disableAction=='hide'){if(this.regionTextEl){this.regionTextEl.style.display='none';}
|
655 |
+
this.regionSelectEl.style.display='';}else if(this.disableAction=='disable'){if(this.regionTextEl){this.regionTextEl.disabled=true;}
|
656 |
+
this.regionSelectEl.disabled=false;}
|
657 |
+
this.setMarkDisplay(this.regionSelectEl,true);}else{if(this.disableAction=='hide'){if(this.regionTextEl){this.regionTextEl.style.display='';}
|
658 |
+
this.regionSelectEl.style.display='none';Validation.reset(this.regionSelectEl);}else if(this.disableAction=='disable'){if(this.regionTextEl){this.regionTextEl.disabled=false;}
|
659 |
+
this.regionSelectEl.disabled=true;}else if(this.disableAction=='nullify'){this.regionSelectEl.options.length=1;this.regionSelectEl.value='';this.regionSelectEl.selectedIndex=0;this.lastCountryId='';}
|
660 |
+
this.setMarkDisplay(this.regionSelectEl,false);}},setMarkDisplay:function(elem,display){elem=$(elem);var labelElement=elem.up(1).down('label > span.required')||elem.up(2).down('label > span.required')||elem.up(1).down('label.required > em')||elem.up(2).down('label.required > em');if(labelElement){display?labelElement.show():labelElement.hide();}}};function toggleMenu(el,over)
|
661 |
+
{if(over){Element.addClassName(el,'over');}
|
662 |
+
else{Element.removeClassName(el,'over');}};var Translate=Class.create();Translate.prototype={initialize:function(data){this.data=$H(data);},translate:function(){var args=arguments;var text=arguments[0];if(this.data.get(text)){return this.data.get(text);}
|
663 |
+
return text;},add:function(){if(arguments.length>1){this.data.set(arguments[0],arguments[1]);}else if(typeof arguments[0]=='object'){$H(arguments[0]).each(function(pair){this.data.set(pair.key,pair.value);}.bind(this));}}};if(!window.Mage)var Mage={};Mage.Cookies={};Mage.Cookies.set=function(name,value){var argv=arguments;var argc=arguments.length;var expires=(argc>2)?argv[2]:null;var path=(argc>3)?argv[3]:'/';var domain=(argc>4)?argv[4]:null;var secure=(argc>5)?argv[5]:false;document.cookie=name+"="+escape(value)+
|
664 |
+
((expires==null)?"":("; expires="+expires.toGMTString()))+
|
665 |
+
((path==null)?"":("; path="+path))+
|
666 |
+
((domain==null)?"":("; domain="+domain))+
|
667 |
+
((secure==true)?"; secure":"");};Mage.Cookies.get=function(name){var arg=name+"=";var alen=arg.length;var clen=document.cookie.length;var i=0;var j=0;while(i<clen){j=i+alen;if(document.cookie.substring(i,j)==arg)
|
668 |
+
return Mage.Cookies.getCookieVal(j);i=document.cookie.indexOf(" ",i)+1;if(i==0)
|
669 |
+
break;}
|
670 |
+
return null;};Mage.Cookies.clear=function(name){if(Mage.Cookies.get(name)){document.cookie=name+"="+"; expires=Thu, 01-Jan-70 00:00:01 GMT";}};Mage.Cookies.getCookieVal=function(offset){var endstr=document.cookie.indexOf(";",offset);if(endstr==-1){endstr=document.cookie.length;}
|
671 |
+
return unescape(document.cookie.substring(offset,endstr));};;function taxToggle(details,switcher,expandedClassName)
|
672 |
+
{if($(details).style.display=='none'){$(details).show();$(switcher).addClassName(expandedClassName);}else{$(details).hide();$(switcher).removeClassName(expandedClassName);}}
|
var/minifycache/minify_900559c432c691b50ba33f48b4909a4f.gz
ADDED
Binary file
|
var/minifycache/minify_95afbee78c0f49b564250d655add1ca9
ADDED
@@ -0,0 +1,655 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var Prototype={Version:'1.6.0.3',Browser:{IE:!!(window.attachEvent&&navigator.userAgent.indexOf('Opera')===-1),Opera:navigator.userAgent.indexOf('Opera')>-1,WebKit:navigator.userAgent.indexOf('AppleWebKit/')>-1,Gecko:navigator.userAgent.indexOf('Gecko')>-1&&navigator.userAgent.indexOf('KHTML')===-1,MobileSafari:!!navigator.userAgent.match(/Apple.*Mobile.*Safari/)},BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:!!window.HTMLElement,SpecificElementExtensions:document.createElement('div')['__proto__']&&document.createElement('div')['__proto__']!==document.createElement('form')['__proto__']},ScriptFragment:'<script[^>]*>([\\S\\s]*?)<\/script>',JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(x){return x}};if(Prototype.Browser.MobileSafari)
|
2 |
+
Prototype.BrowserFeatures.SpecificElementExtensions=false;var Class={create:function(){var parent=null,properties=$A(arguments);if(Object.isFunction(properties[0]))
|
3 |
+
parent=properties.shift();function klass(){this.initialize.apply(this,arguments);}
|
4 |
+
Object.extend(klass,Class.Methods);klass.superclass=parent;klass.subclasses=[];if(parent){var subclass=function(){};subclass.prototype=parent.prototype;klass.prototype=new subclass;parent.subclasses.push(klass);}
|
5 |
+
for(var i=0;i<properties.length;i++)
|
6 |
+
klass.addMethods(properties[i]);if(!klass.prototype.initialize)
|
7 |
+
klass.prototype.initialize=Prototype.emptyFunction;klass.prototype.constructor=klass;return klass;}};Class.Methods={addMethods:function(source){var ancestor=this.superclass&&this.superclass.prototype;var properties=Object.keys(source);if(!Object.keys({toString:true}).length)
|
8 |
+
properties.push("toString","valueOf");for(var i=0,length=properties.length;i<length;i++){var property=properties[i],value=source[property];if(ancestor&&Object.isFunction(value)&&value.argumentNames().first()=="$super"){var method=value;value=(function(m){return function(){return ancestor[m].apply(this,arguments)};})(property).wrap(method);value.valueOf=method.valueOf.bind(method);value.toString=method.toString.bind(method);}
|
9 |
+
this.prototype[property]=value;}
|
10 |
+
return this;}};var Abstract={};Object.extend=function(destination,source){for(var property in source)
|
11 |
+
destination[property]=source[property];return destination;};Object.extend(Object,{inspect:function(object){try{if(Object.isUndefined(object))return'undefined';if(object===null)return'null';return object.inspect?object.inspect():String(object);}catch(e){if(e instanceof RangeError)return'...';throw e;}},toJSON:function(object){var type=typeof object;switch(type){case'undefined':case'function':case'unknown':return;case'boolean':return object.toString();}
|
12 |
+
if(object===null)return'null';if(object.toJSON)return object.toJSON();if(Object.isElement(object))return;var results=[];for(var property in object){var value=Object.toJSON(object[property]);if(!Object.isUndefined(value))
|
13 |
+
results.push(property.toJSON()+': '+value);}
|
14 |
+
return'{'+results.join(', ')+'}';},toQueryString:function(object){return $H(object).toQueryString();},toHTML:function(object){return object&&object.toHTML?object.toHTML():String.interpret(object);},keys:function(object){var keys=[];for(var property in object)
|
15 |
+
keys.push(property);return keys;},values:function(object){var values=[];for(var property in object)
|
16 |
+
values.push(object[property]);return values;},clone:function(object){return Object.extend({},object);},isElement:function(object){return!!(object&&object.nodeType==1);},isArray:function(object){return object!=null&&typeof object=="object"&&'splice'in object&&'join'in object;},isHash:function(object){return object instanceof Hash;},isFunction:function(object){return typeof object=="function";},isString:function(object){return typeof object=="string";},isNumber:function(object){return typeof object=="number";},isUndefined:function(object){return typeof object=="undefined";}});Object.extend(Function.prototype,{argumentNames:function(){var names=this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1].replace(/\s+/g,'').split(',');return names.length==1&&!names[0]?[]:names;},bind:function(){if(arguments.length<2&&Object.isUndefined(arguments[0]))return this;var __method=this,args=$A(arguments),object=args.shift();return function(){return __method.apply(object,args.concat($A(arguments)));}},bindAsEventListener:function(){var __method=this,args=$A(arguments),object=args.shift();return function(event){return __method.apply(object,[event||window.event].concat(args));}},curry:function(){if(!arguments.length)return this;var __method=this,args=$A(arguments);return function(){return __method.apply(this,args.concat($A(arguments)));}},delay:function(){var __method=this,args=$A(arguments),timeout=args.shift()*1000;return window.setTimeout(function(){return __method.apply(__method,args);},timeout);},defer:function(){var args=[0.01].concat($A(arguments));return this.delay.apply(this,args);},wrap:function(wrapper){var __method=this;return function(){return wrapper.apply(this,[__method.bind(this)].concat($A(arguments)));}},methodize:function(){if(this._methodized)return this._methodized;var __method=this;return this._methodized=function(){return __method.apply(null,[this].concat($A(arguments)));};}});Date.prototype.toJSON=function(){return'"'+this.getUTCFullYear()+'-'+
|
17 |
+
(this.getUTCMonth()+1).toPaddedString(2)+'-'+
|
18 |
+
this.getUTCDate().toPaddedString(2)+'T'+
|
19 |
+
this.getUTCHours().toPaddedString(2)+':'+
|
20 |
+
this.getUTCMinutes().toPaddedString(2)+':'+
|
21 |
+
this.getUTCSeconds().toPaddedString(2)+'Z"';};var Try={these:function(){var returnValue;for(var i=0,length=arguments.length;i<length;i++){var lambda=arguments[i];try{returnValue=lambda();break;}catch(e){}}
|
22 |
+
return returnValue;}};RegExp.prototype.match=RegExp.prototype.test;RegExp.escape=function(str){return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g,'\\$1');};var PeriodicalExecuter=Class.create({initialize:function(callback,frequency){this.callback=callback;this.frequency=frequency;this.currentlyExecuting=false;this.registerCallback();},registerCallback:function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000);},execute:function(){this.callback(this);},stop:function(){if(!this.timer)return;clearInterval(this.timer);this.timer=null;},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.execute();}finally{this.currentlyExecuting=false;}}}});Object.extend(String,{interpret:function(value){return value==null?'':String(value);},specialChar:{'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','\\':'\\\\'}});Object.extend(String.prototype,{gsub:function(pattern,replacement){var result='',source=this,match;replacement=arguments.callee.prepareReplacement(replacement);while(source.length>0){if(match=source.match(pattern)){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length);}else{result+=source,source='';}}
|
23 |
+
return result;},sub:function(pattern,replacement,count){replacement=this.gsub.prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0)return match[0];return replacement(match);});},scan:function(pattern,iterator){this.gsub(pattern,iterator);return String(this);},truncate:function(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?'...':truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this);},strip:function(){return this.replace(/^\s+/,'').replace(/\s+$/,'');},stripTags:function(){return this.replace(/<\/?[^>]+>/gi,'');},stripScripts:function(){return this.replace(new RegExp(Prototype.ScriptFragment,'img'),'');},extractScripts:function(){var matchAll=new RegExp(Prototype.ScriptFragment,'img');var matchOne=new RegExp(Prototype.ScriptFragment,'im');return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||['',''])[1];});},evalScripts:function(){return this.extractScripts().map(function(script){return eval(script)});},escapeHTML:function(){var self=arguments.callee;self.text.data=this;return self.div.innerHTML;},unescapeHTML:function(){var div=new Element('div');div.innerHTML=this.stripTags();return div.childNodes[0]?(div.childNodes.length>1?$A(div.childNodes).inject('',function(memo,node){return memo+node.nodeValue}):div.childNodes[0].nodeValue):'';},toQueryParams:function(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match)return{};return match[1].split(separator||'&').inject({},function(hash,pair){if((pair=pair.split('='))[0]){var key=decodeURIComponent(pair.shift());var value=pair.length>1?pair.join('='):pair[0];if(value!=undefined)value=decodeURIComponent(value);if(key in hash){if(!Object.isArray(hash[key]))hash[key]=[hash[key]];hash[key].push(value);}
|
24 |
+
else hash[key]=value;}
|
25 |
+
return hash;});},toArray:function(){return this.split('');},succ:function(){return this.slice(0,this.length-1)+
|
26 |
+
String.fromCharCode(this.charCodeAt(this.length-1)+1);},times:function(count){return count<1?'':new Array(count+1).join(this);},camelize:function(){var parts=this.split('-'),len=parts.length;if(len==1)return parts[0];var camelized=this.charAt(0)=='-'?parts[0].charAt(0).toUpperCase()+parts[0].substring(1):parts[0];for(var i=1;i<len;i++)
|
27 |
+
camelized+=parts[i].charAt(0).toUpperCase()+parts[i].substring(1);return camelized;},capitalize:function(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase();},underscore:function(){return this.gsub(/::/,'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();},dasherize:function(){return this.gsub(/_/,'-');},inspect:function(useDoubleQuotes){var escapedString=this.gsub(/[\x00-\x1f\\]/,function(match){var character=String.specialChar[match[0]];return character?character:'\\u00'+match[0].charCodeAt().toPaddedString(2,16);});if(useDoubleQuotes)return'"'+escapedString.replace(/"/g,'\\"')+'"';return"'"+escapedString.replace(/'/g,'\\\'')+"'";},toJSON:function(){return this.inspect(true);},unfilterJSON:function(filter){return this.sub(filter||Prototype.JSONFilter,'#{1}');},isJSON:function(){var str=this;if(str.blank())return false;str=this.replace(/\\./g,'@').replace(/"[^"\\\n\r]*"/g,'');return(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);},evalJSON:function(sanitize){var json=this.unfilterJSON();try{if(!sanitize||json.isJSON())return eval('('+json+')');}catch(e){}
|
28 |
+
throw new SyntaxError('Badly formed JSON string: '+this.inspect());},include:function(pattern){return this.indexOf(pattern)>-1;},startsWith:function(pattern){return this.indexOf(pattern)===0;},endsWith:function(pattern){var d=this.length-pattern.length;return d>=0&&this.lastIndexOf(pattern)===d;},empty:function(){return this=='';},blank:function(){return /^\s*$/.test(this);},interpolate:function(object,pattern){return new Template(this,pattern).evaluate(object);}});if(Prototype.Browser.WebKit||Prototype.Browser.IE)Object.extend(String.prototype,{escapeHTML:function(){return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');},unescapeHTML:function(){return this.stripTags().replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');}});String.prototype.gsub.prepareReplacement=function(replacement){if(Object.isFunction(replacement))return replacement;var template=new Template(replacement);return function(match){return template.evaluate(match)};};String.prototype.parseQuery=String.prototype.toQueryParams;Object.extend(String.prototype.escapeHTML,{div:document.createElement('div'),text:document.createTextNode('')});String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.text);var Template=Class.create({initialize:function(template,pattern){this.template=template.toString();this.pattern=pattern||Template.Pattern;},evaluate:function(object){if(Object.isFunction(object.toTemplateReplacements))
|
29 |
+
object=object.toTemplateReplacements();return this.template.gsub(this.pattern,function(match){if(object==null)return'';var before=match[1]||'';if(before=='\\')return match[2];var ctx=object,expr=match[3];var pattern=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;match=pattern.exec(expr);if(match==null)return before;while(match!=null){var comp=match[1].startsWith('[')?match[2].gsub('\\\\]',']'):match[1];ctx=ctx[comp];if(null==ctx||''==match[3])break;expr=expr.substring('['==match[3]?match[1].length:match[0].length);match=pattern.exec(expr);}
|
30 |
+
return before+String.interpret(ctx);});}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable={each:function(iterator,context){var index=0;try{this._each(function(value){iterator.call(context,value,index++);});}catch(e){if(e!=$break)throw e;}
|
31 |
+
return this;},eachSlice:function(number,iterator,context){var index=-number,slices=[],array=this.toArray();if(number<1)return array;while((index+=number)<array.length)
|
32 |
+
slices.push(array.slice(index,index+number));return slices.collect(iterator,context);},all:function(iterator,context){iterator=iterator||Prototype.K;var result=true;this.each(function(value,index){result=result&&!!iterator.call(context,value,index);if(!result)throw $break;});return result;},any:function(iterator,context){iterator=iterator||Prototype.K;var result=false;this.each(function(value,index){if(result=!!iterator.call(context,value,index))
|
33 |
+
throw $break;});return result;},collect:function(iterator,context){iterator=iterator||Prototype.K;var results=[];this.each(function(value,index){results.push(iterator.call(context,value,index));});return results;},detect:function(iterator,context){var result;this.each(function(value,index){if(iterator.call(context,value,index)){result=value;throw $break;}});return result;},findAll:function(iterator,context){var results=[];this.each(function(value,index){if(iterator.call(context,value,index))
|
34 |
+
results.push(value);});return results;},grep:function(filter,iterator,context){iterator=iterator||Prototype.K;var results=[];if(Object.isString(filter))
|
35 |
+
filter=new RegExp(filter);this.each(function(value,index){if(filter.match(value))
|
36 |
+
results.push(iterator.call(context,value,index));});return results;},include:function(object){if(Object.isFunction(this.indexOf))
|
37 |
+
if(this.indexOf(object)!=-1)return true;var found=false;this.each(function(value){if(value==object){found=true;throw $break;}});return found;},inGroupsOf:function(number,fillWith){fillWith=Object.isUndefined(fillWith)?null:fillWith;return this.eachSlice(number,function(slice){while(slice.length<number)slice.push(fillWith);return slice;});},inject:function(memo,iterator,context){this.each(function(value,index){memo=iterator.call(context,memo,value,index);});return memo;},invoke:function(method){var args=$A(arguments).slice(1);return this.map(function(value){return value[method].apply(value,args);});},max:function(iterator,context){iterator=iterator||Prototype.K;var result;this.each(function(value,index){value=iterator.call(context,value,index);if(result==null||value>=result)
|
38 |
+
result=value;});return result;},min:function(iterator,context){iterator=iterator||Prototype.K;var result;this.each(function(value,index){value=iterator.call(context,value,index);if(result==null||value<result)
|
39 |
+
result=value;});return result;},partition:function(iterator,context){iterator=iterator||Prototype.K;var trues=[],falses=[];this.each(function(value,index){(iterator.call(context,value,index)?trues:falses).push(value);});return[trues,falses];},pluck:function(property){var results=[];this.each(function(value){results.push(value[property]);});return results;},reject:function(iterator,context){var results=[];this.each(function(value,index){if(!iterator.call(context,value,index))
|
40 |
+
results.push(value);});return results;},sortBy:function(iterator,context){return this.map(function(value,index){return{value:value,criteria:iterator.call(context,value,index)};}).sort(function(left,right){var a=left.criteria,b=right.criteria;return a<b?-1:a>b?1:0;}).pluck('value');},toArray:function(){return this.map();},zip:function(){var iterator=Prototype.K,args=$A(arguments);if(Object.isFunction(args.last()))
|
41 |
+
iterator=args.pop();var collections=[this].concat(args).map($A);return this.map(function(value,index){return iterator(collections.pluck(index));});},size:function(){return this.toArray().length;},inspect:function(){return'#<Enumerable:'+this.toArray().inspect()+'>';}};Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,filter:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray,every:Enumerable.all,some:Enumerable.any});function $A(iterable){if(!iterable)return[];if(iterable.toArray)return iterable.toArray();var length=iterable.length||0,results=new Array(length);while(length--)results[length]=iterable[length];return results;}
|
42 |
+
if(Prototype.Browser.WebKit){$A=function(iterable){if(!iterable)return[];if(!(typeof iterable==='function'&&typeof iterable.length==='number'&&typeof iterable.item==='function')&&iterable.toArray)
|
43 |
+
return iterable.toArray();var length=iterable.length||0,results=new Array(length);while(length--)results[length]=iterable[length];return results;};}
|
44 |
+
Array.from=$A;Object.extend(Array.prototype,Enumerable);if(!Array.prototype._reverse)Array.prototype._reverse=Array.prototype.reverse;Object.extend(Array.prototype,{_each:function(iterator){for(var i=0,length=this.length;i<length;i++)
|
45 |
+
iterator(this[i]);},clear:function(){this.length=0;return this;},first:function(){return this[0];},last:function(){return this[this.length-1];},compact:function(){return this.select(function(value){return value!=null;});},flatten:function(){return this.inject([],function(array,value){return array.concat(Object.isArray(value)?value.flatten():[value]);});},without:function(){var values=$A(arguments);return this.select(function(value){return!values.include(value);});},reverse:function(inline){return(inline!==false?this:this.toArray())._reverse();},reduce:function(){return this.length>1?this:this[0];},uniq:function(sorted){return this.inject([],function(array,value,index){if(0==index||(sorted?array.last()!=value:!array.include(value)))
|
46 |
+
array.push(value);return array;});},intersect:function(array){return this.uniq().findAll(function(item){return array.detect(function(value){return item===value});});},clone:function(){return[].concat(this);},size:function(){return this.length;},inspect:function(){return'['+this.map(Object.inspect).join(', ')+']';},toJSON:function(){var results=[];this.each(function(object){var value=Object.toJSON(object);if(!Object.isUndefined(value))results.push(value);});return'['+results.join(', ')+']';}});if(Object.isFunction(Array.prototype.forEach))
|
47 |
+
Array.prototype._each=Array.prototype.forEach;if(!Array.prototype.indexOf)Array.prototype.indexOf=function(item,i){i||(i=0);var length=this.length;if(i<0)i=length+i;for(;i<length;i++)
|
48 |
+
if(this[i]===item)return i;return-1;};if(!Array.prototype.lastIndexOf)Array.prototype.lastIndexOf=function(item,i){i=isNaN(i)?this.length:(i<0?this.length+i:i)+1;var n=this.slice(0,i).reverse().indexOf(item);return(n<0)?n:i-n-1;};Array.prototype.toArray=Array.prototype.clone;function $w(string){if(!Object.isString(string))return[];string=string.strip();return string?string.split(/\s+/):[];}
|
49 |
+
if(Prototype.Browser.Opera){Array.prototype.concat=function(){var array=[];for(var i=0,length=this.length;i<length;i++)array.push(this[i]);for(var i=0,length=arguments.length;i<length;i++){if(Object.isArray(arguments[i])){for(var j=0,arrayLength=arguments[i].length;j<arrayLength;j++)
|
50 |
+
array.push(arguments[i][j]);}else{array.push(arguments[i]);}}
|
51 |
+
return array;};}
|
52 |
+
Object.extend(Number.prototype,{toColorPart:function(){return this.toPaddedString(2,16);},succ:function(){return this+1;},times:function(iterator,context){$R(0,this,true).each(iterator,context);return this;},toPaddedString:function(length,radix){var string=this.toString(radix||10);return'0'.times(length-string.length)+string;},toJSON:function(){return isFinite(this)?this.toString():'null';}});$w('abs round ceil floor').each(function(method){Number.prototype[method]=Math[method].methodize();});function $H(object){return new Hash(object);};var Hash=Class.create(Enumerable,(function(){function toQueryPair(key,value){if(Object.isUndefined(value))return key;return key+'='+encodeURIComponent(String.interpret(value));}
|
53 |
+
return{initialize:function(object){this._object=Object.isHash(object)?object.toObject():Object.clone(object);},_each:function(iterator){for(var key in this._object){var value=this._object[key],pair=[key,value];pair.key=key;pair.value=value;iterator(pair);}},set:function(key,value){return this._object[key]=value;},get:function(key){if(this._object[key]!==Object.prototype[key])
|
54 |
+
return this._object[key];},unset:function(key){var value=this._object[key];delete this._object[key];return value;},toObject:function(){return Object.clone(this._object);},keys:function(){return this.pluck('key');},values:function(){return this.pluck('value');},index:function(value){var match=this.detect(function(pair){return pair.value===value;});return match&&match.key;},merge:function(object){return this.clone().update(object);},update:function(object){return new Hash(object).inject(this,function(result,pair){result.set(pair.key,pair.value);return result;});},toQueryString:function(){return this.inject([],function(results,pair){var key=encodeURIComponent(pair.key),values=pair.value;if(values&&typeof values=='object'){if(Object.isArray(values))
|
55 |
+
return results.concat(values.map(toQueryPair.curry(key)));}else results.push(toQueryPair(key,values));return results;}).join('&');},inspect:function(){return'#<Hash:{'+this.map(function(pair){return pair.map(Object.inspect).join(': ');}).join(', ')+'}>';},toJSON:function(){return Object.toJSON(this.toObject());},clone:function(){return new Hash(this);}}})());Hash.prototype.toTemplateReplacements=Hash.prototype.toObject;Hash.from=$H;var ObjectRange=Class.create(Enumerable,{initialize:function(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive;},_each:function(iterator){var value=this.start;while(this.include(value)){iterator(value);value=value.succ();}},include:function(value){if(value<this.start)
|
56 |
+
return false;if(this.exclusive)
|
57 |
+
return value<this.end;return value<=this.end;}});var $R=function(start,end,exclusive){return new ObjectRange(start,end,exclusive);};var Ajax={getTransport:function(){return Try.these(function(){return new XMLHttpRequest()},function(){return new ActiveXObject('Msxml2.XMLHTTP')},function(){return new ActiveXObject('Microsoft.XMLHTTP')})||false;},activeRequestCount:0};Ajax.Responders={responders:[],_each:function(iterator){this.responders._each(iterator);},register:function(responder){if(!this.include(responder))
|
58 |
+
this.responders.push(responder);},unregister:function(responder){this.responders=this.responders.without(responder);},dispatch:function(callback,request,transport,json){this.each(function(responder){if(Object.isFunction(responder[callback])){try{responder[callback].apply(responder,[request,transport,json]);}catch(e){}}});}};Object.extend(Ajax.Responders,Enumerable);Ajax.Responders.register({onCreate:function(){Ajax.activeRequestCount++},onComplete:function(){Ajax.activeRequestCount--}});Ajax.Base=Class.create({initialize:function(options){this.options={method:'post',asynchronous:true,contentType:'application/x-www-form-urlencoded',encoding:'UTF-8',parameters:'',evalJSON:true,evalJS:true};Object.extend(this.options,options||{});this.options.method=this.options.method.toLowerCase();if(Object.isString(this.options.parameters))
|
59 |
+
this.options.parameters=this.options.parameters.toQueryParams();else if(Object.isHash(this.options.parameters))
|
60 |
+
this.options.parameters=this.options.parameters.toObject();}});Ajax.Request=Class.create(Ajax.Base,{_complete:false,initialize:function($super,url,options){$super(options);this.transport=Ajax.getTransport();this.request(url);},request:function(url){this.url=url;this.method=this.options.method;var params=Object.clone(this.options.parameters);if(!['get','post'].include(this.method)){params['_method']=this.method;this.method='post';}
|
61 |
+
this.parameters=params;if(params=Object.toQueryString(params)){if(this.method=='get')
|
62 |
+
this.url+=(this.url.include('?')?'&':'?')+params;else if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
|
63 |
+
params+='&_=';}
|
64 |
+
try{var response=new Ajax.Response(this);if(this.options.onCreate)this.options.onCreate(response);Ajax.Responders.dispatch('onCreate',this,response);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous)this.respondToReadyState.bind(this).defer(1);this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();this.body=this.method=='post'?(this.options.postBody||params):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType)
|
65 |
+
this.onStateChange();}
|
66 |
+
catch(e){this.dispatchException(e);}},onStateChange:function(){var readyState=this.transport.readyState;if(readyState>1&&!((readyState==4)&&this._complete))
|
67 |
+
this.respondToReadyState(this.transport.readyState);},setRequestHeaders:function(){var headers={'X-Requested-With':'XMLHttpRequest','X-Prototype-Version':Prototype.Version,'Accept':'text/javascript, text/html, application/xml, text/xml, */*'};if(this.method=='post'){headers['Content-type']=this.options.contentType+
|
68 |
+
(this.options.encoding?'; charset='+this.options.encoding:'');if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005)
|
69 |
+
headers['Connection']='close';}
|
70 |
+
if(typeof this.options.requestHeaders=='object'){var extras=this.options.requestHeaders;if(Object.isFunction(extras.push))
|
71 |
+
for(var i=0,length=extras.length;i<length;i+=2)
|
72 |
+
headers[extras[i]]=extras[i+1];else
|
73 |
+
$H(extras).each(function(pair){headers[pair.key]=pair.value});}
|
74 |
+
for(var name in headers)
|
75 |
+
this.transport.setRequestHeader(name,headers[name]);},success:function(){var status=this.getStatus();return!status||(status>=200&&status<300);},getStatus:function(){try{return this.transport.status||0;}catch(e){return 0}},respondToReadyState:function(readyState){var state=Ajax.Request.Events[readyState],response=new Ajax.Response(this);if(state=='Complete'){try{this._complete=true;(this.options['on'+response.status]||this.options['on'+(this.success()?'Success':'Failure')]||Prototype.emptyFunction)(response,response.headerJSON);}catch(e){this.dispatchException(e);}
|
76 |
+
var contentType=response.getHeader('Content-type');if(this.options.evalJS=='force'||(this.options.evalJS&&this.isSameOrigin()&&contentType&&contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
|
77 |
+
this.evalResponse();}
|
78 |
+
try{(this.options['on'+state]||Prototype.emptyFunction)(response,response.headerJSON);Ajax.Responders.dispatch('on'+state,this,response,response.headerJSON);}catch(e){this.dispatchException(e);}
|
79 |
+
if(state=='Complete'){this.transport.onreadystatechange=Prototype.emptyFunction;}},isSameOrigin:function(){var m=this.url.match(/^\s*https?:\/\/[^\/]*/);return!m||(m[0]=='#{protocol}//#{domain}#{port}'.interpolate({protocol:location.protocol,domain:document.domain,port:location.port?':'+location.port:''}));},getHeader:function(name){try{return this.transport.getResponseHeader(name)||null;}catch(e){return null}},evalResponse:function(){try{return eval((this.transport.responseText||'').unfilterJSON());}catch(e){this.dispatchException(e);}},dispatchException:function(exception){(this.options.onException||Prototype.emptyFunction)(this,exception);Ajax.Responders.dispatch('onException',this,exception);}});Ajax.Request.Events=['Uninitialized','Loading','Loaded','Interactive','Complete'];Ajax.Response=Class.create({initialize:function(request){this.request=request;var transport=this.transport=request.transport,readyState=this.readyState=transport.readyState;if((readyState>2&&!Prototype.Browser.IE)||readyState==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(transport.responseText);this.headerJSON=this._getHeaderJSON();}
|
80 |
+
if(readyState==4){var xml=transport.responseXML;this.responseXML=Object.isUndefined(xml)?null:xml;this.responseJSON=this._getResponseJSON();}},status:0,statusText:'',getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||'';}catch(e){return''}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders();}catch(e){return null}},getResponseHeader:function(name){return this.transport.getResponseHeader(name);},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders();},_getHeaderJSON:function(){var json=this.getHeader('X-JSON');if(!json)return null;json=decodeURIComponent(escape(json));try{return json.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin());}catch(e){this.request.dispatchException(e);}},_getResponseJSON:function(){var options=this.request.options;if(!options.evalJSON||(options.evalJSON!='force'&&!(this.getHeader('Content-type')||'').include('application/json'))||this.responseText.blank())
|
81 |
+
return null;try{return this.responseText.evalJSON(options.sanitizeJSON||!this.request.isSameOrigin());}catch(e){this.request.dispatchException(e);}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,container,url,options){this.container={success:(container.success||container),failure:(container.failure||(container.success?null:container))};options=Object.clone(options);var onComplete=options.onComplete;options.onComplete=(function(response,json){this.updateContent(response.responseText);if(Object.isFunction(onComplete))onComplete(response,json);}).bind(this);$super(url,options);},updateContent:function(responseText){var receiver=this.container[this.success()?'success':'failure'],options=this.options;if(!options.evalScripts)responseText=responseText.stripScripts();if(receiver=$(receiver)){if(options.insertion){if(Object.isString(options.insertion)){var insertion={};insertion[options.insertion]=responseText;receiver.insert(insertion);}
|
82 |
+
else options.insertion(receiver,responseText);}
|
83 |
+
else receiver.update(responseText);}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,container,url,options){$super(options);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=container;this.url=url;this.start();},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent();},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments);},updateComplete:function(response){if(this.options.decay){this.decay=(response.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=response.responseText;}
|
84 |
+
this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency);},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options);}});function $(element){if(arguments.length>1){for(var i=0,elements=[],length=arguments.length;i<length;i++)
|
85 |
+
elements.push($(arguments[i]));return elements;}
|
86 |
+
if(Object.isString(element))
|
87 |
+
element=document.getElementById(element);return Element.extend(element);}
|
88 |
+
if(Prototype.BrowserFeatures.XPath){document._getElementsByXPath=function(expression,parentElement){var results=[];var query=document.evaluate(expression,$(parentElement)||document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);for(var i=0,length=query.snapshotLength;i<length;i++)
|
89 |
+
results.push(Element.extend(query.snapshotItem(i)));return results;};}
|
90 |
+
if(!window.Node)var Node={};if(!Node.ELEMENT_NODE){Object.extend(Node,{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12});}
|
91 |
+
(function(){var element=this.Element;this.Element=function(tagName,attributes){attributes=attributes||{};tagName=tagName.toLowerCase();var cache=Element.cache;if(Prototype.Browser.IE&&attributes.name){tagName='<'+tagName+' name="'+attributes.name+'">';delete attributes.name;return Element.writeAttribute(document.createElement(tagName),attributes);}
|
92 |
+
if(!cache[tagName])cache[tagName]=Element.extend(document.createElement(tagName));return Element.writeAttribute(cache[tagName].cloneNode(false),attributes);};Object.extend(this.Element,element||{});if(element)this.Element.prototype=element.prototype;}).call(window);Element.cache={};Element.Methods={visible:function(element){return $(element).style.display!='none';},toggle:function(element){element=$(element);Element[Element.visible(element)?'hide':'show'](element);return element;},hide:function(element){element=$(element);element.style.display='none';return element;},show:function(element){element=$(element);element.style.display='';return element;},remove:function(element){element=$(element);element.parentNode.removeChild(element);return element;},update:function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content))return element.update().insert(content);content=Object.toHTML(content);element.innerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;},replace:function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();else if(!Object.isElement(content)){content=Object.toHTML(content);var range=element.ownerDocument.createRange();range.selectNode(element);content.evalScripts.bind(content).defer();content=range.createContextualFragment(content.stripScripts());}
|
93 |
+
element.parentNode.replaceChild(content,element);return element;},insert:function(element,insertions){element=$(element);if(Object.isString(insertions)||Object.isNumber(insertions)||Object.isElement(insertions)||(insertions&&(insertions.toElement||insertions.toHTML)))
|
94 |
+
insertions={bottom:insertions};var content,insert,tagName,childNodes;for(var position in insertions){content=insertions[position];position=position.toLowerCase();insert=Element._insertionTranslations[position];if(content&&content.toElement)content=content.toElement();if(Object.isElement(content)){insert(element,content);continue;}
|
95 |
+
content=Object.toHTML(content);tagName=((position=='before'||position=='after')?element.parentNode:element).tagName.toUpperCase();childNodes=Element._getContentFromAnonymousElement(tagName,content.stripScripts());if(position=='top'||position=='after')childNodes.reverse();childNodes.each(insert.curry(element));content.evalScripts.bind(content).defer();}
|
96 |
+
return element;},wrap:function(element,wrapper,attributes){element=$(element);if(Object.isElement(wrapper))
|
97 |
+
$(wrapper).writeAttribute(attributes||{});else if(Object.isString(wrapper))wrapper=new Element(wrapper,attributes);else wrapper=new Element('div',wrapper);if(element.parentNode)
|
98 |
+
element.parentNode.replaceChild(wrapper,element);wrapper.appendChild(element);return wrapper;},inspect:function(element){element=$(element);var result='<'+element.tagName.toLowerCase();$H({'id':'id','className':'class'}).each(function(pair){var property=pair.first(),attribute=pair.last();var value=(element[property]||'').toString();if(value)result+=' '+attribute+'='+value.inspect(true);});return result+'>';},recursivelyCollect:function(element,property){element=$(element);var elements=[];while(element=element[property])
|
99 |
+
if(element.nodeType==1)
|
100 |
+
elements.push(Element.extend(element));return elements;},ancestors:function(element){return $(element).recursivelyCollect('parentNode');},descendants:function(element){return $(element).select("*");},firstDescendant:function(element){element=$(element).firstChild;while(element&&element.nodeType!=1)element=element.nextSibling;return $(element);},immediateDescendants:function(element){if(!(element=$(element).firstChild))return[];while(element&&element.nodeType!=1)element=element.nextSibling;if(element)return[element].concat($(element).nextSiblings());return[];},previousSiblings:function(element){return $(element).recursivelyCollect('previousSibling');},nextSiblings:function(element){return $(element).recursivelyCollect('nextSibling');},siblings:function(element){element=$(element);return element.previousSiblings().reverse().concat(element.nextSiblings());},match:function(element,selector){if(Object.isString(selector))
|
101 |
+
selector=new Selector(selector);return selector.match($(element));},up:function(element,expression,index){element=$(element);if(arguments.length==1)return $(element.parentNode);var ancestors=element.ancestors();return Object.isNumber(expression)?ancestors[expression]:Selector.findElement(ancestors,expression,index);},down:function(element,expression,index){element=$(element);if(arguments.length==1)return element.firstDescendant();return Object.isNumber(expression)?element.descendants()[expression]:Element.select(element,expression)[index||0];},previous:function(element,expression,index){element=$(element);if(arguments.length==1)return $(Selector.handlers.previousElementSibling(element));var previousSiblings=element.previousSiblings();return Object.isNumber(expression)?previousSiblings[expression]:Selector.findElement(previousSiblings,expression,index);},next:function(element,expression,index){element=$(element);if(arguments.length==1)return $(Selector.handlers.nextElementSibling(element));var nextSiblings=element.nextSiblings();return Object.isNumber(expression)?nextSiblings[expression]:Selector.findElement(nextSiblings,expression,index);},select:function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element,args);},adjacent:function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element.parentNode,args).without(element);},identify:function(element){element=$(element);var id=element.readAttribute('id'),self=arguments.callee;if(id)return id;do{id='anonymous_element_'+self.counter++}while($(id));element.writeAttribute('id',id);return id;},readAttribute:function(element,name){element=$(element);if(Prototype.Browser.IE){var t=Element._attributeTranslations.read;if(t.values[name])return t.values[name](element,name);if(t.names[name])name=t.names[name];if(name.include(':')){return(!element.attributes||!element.attributes[name])?null:element.attributes[name].value;}}
|
102 |
+
return element.getAttribute(name);},writeAttribute:function(element,name,value){element=$(element);var attributes={},t=Element._attributeTranslations.write;if(typeof name=='object')attributes=name;else attributes[name]=Object.isUndefined(value)?true:value;for(var attr in attributes){name=t.names[attr]||attr;value=attributes[attr];if(t.values[attr])name=t.values[attr](element,value);if(value===false||value===null)
|
103 |
+
element.removeAttribute(name);else if(value===true)
|
104 |
+
element.setAttribute(name,name);else element.setAttribute(name,value);}
|
105 |
+
return element;},getHeight:function(element){return $(element).getDimensions().height;},getWidth:function(element){return $(element).getDimensions().width;},classNames:function(element){return new Element.ClassNames(element);},hasClassName:function(element,className){if(!(element=$(element)))return;var elementClassName=element.className;return(elementClassName.length>0&&(elementClassName==className||new RegExp("(^|\\s)"+className+"(\\s|$)").test(elementClassName)));},addClassName:function(element,className){if(!(element=$(element)))return;if(!element.hasClassName(className))
|
106 |
+
element.className+=(element.className?' ':'')+className;return element;},removeClassName:function(element,className){if(!(element=$(element)))return;element.className=element.className.replace(new RegExp("(^|\\s+)"+className+"(\\s+|$)"),' ').strip();return element;},toggleClassName:function(element,className){if(!(element=$(element)))return;return element[element.hasClassName(className)?'removeClassName':'addClassName'](className);},cleanWhitespace:function(element){element=$(element);var node=element.firstChild;while(node){var nextNode=node.nextSibling;if(node.nodeType==3&&!/\S/.test(node.nodeValue))
|
107 |
+
element.removeChild(node);node=nextNode;}
|
108 |
+
return element;},empty:function(element){return $(element).innerHTML.blank();},descendantOf:function(element,ancestor){element=$(element),ancestor=$(ancestor);if(element.compareDocumentPosition)
|
109 |
+
return(element.compareDocumentPosition(ancestor)&8)===8;if(ancestor.contains)
|
110 |
+
return ancestor.contains(element)&&ancestor!==element;while(element=element.parentNode)
|
111 |
+
if(element==ancestor)return true;return false;},scrollTo:function(element){element=$(element);var pos=element.cumulativeOffset();window.scrollTo(pos[0],pos[1]);return element;},getStyle:function(element,style){element=$(element);style=style=='float'?'cssFloat':style.camelize();var value=element.style[style];if(!value||value=='auto'){var css=document.defaultView.getComputedStyle(element,null);value=css?css[style]:null;}
|
112 |
+
if(style=='opacity')return value?parseFloat(value):1.0;return value=='auto'?null:value;},getOpacity:function(element){return $(element).getStyle('opacity');},setStyle:function(element,styles){element=$(element);var elementStyle=element.style,match;if(Object.isString(styles)){element.style.cssText+=';'+styles;return styles.include('opacity')?element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]):element;}
|
113 |
+
for(var property in styles)
|
114 |
+
if(property=='opacity')element.setOpacity(styles[property]);else
|
115 |
+
elementStyle[(property=='float'||property=='cssFloat')?(Object.isUndefined(elementStyle.styleFloat)?'cssFloat':'styleFloat'):property]=styles[property];return element;},setOpacity:function(element,value){element=$(element);element.style.opacity=(value==1||value==='')?'':(value<0.00001)?0:value;return element;},getDimensions:function(element){element=$(element);var display=element.getStyle('display');if(display!='none'&&display!=null)
|
116 |
+
return{width:element.offsetWidth,height:element.offsetHeight};var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='block';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight};},makePositioned:function(element){element=$(element);var pos=Element.getStyle(element,'position');if(pos=='static'||!pos){element._madePositioned=true;element.style.position='relative';if(Prototype.Browser.Opera){element.style.top=0;element.style.left=0;}}
|
117 |
+
return element;},undoPositioned:function(element){element=$(element);if(element._madePositioned){element._madePositioned=undefined;element.style.position=element.style.top=element.style.left=element.style.bottom=element.style.right='';}
|
118 |
+
return element;},makeClipping:function(element){element=$(element);if(element._overflow)return element;element._overflow=Element.getStyle(element,'overflow')||'auto';if(element._overflow!=='hidden')
|
119 |
+
element.style.overflow='hidden';return element;},undoClipping:function(element){element=$(element);if(!element._overflow)return element;element.style.overflow=element._overflow=='auto'?'':element._overflow;element._overflow=null;return element;},cumulativeOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);return Element._returnOffset(valueL,valueT);},positionedOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){if(element.tagName.toUpperCase()=='BODY')break;var p=Element.getStyle(element,'position');if(p!=='static')break;}}while(element);return Element._returnOffset(valueL,valueT);},absolutize:function(element){element=$(element);if(element.getStyle('position')=='absolute')return element;var offsets=element.positionedOffset();var top=offsets[1];var left=offsets[0];var width=element.clientWidth;var height=element.clientHeight;element._originalLeft=left-parseFloat(element.style.left||0);element._originalTop=top-parseFloat(element.style.top||0);element._originalWidth=element.style.width;element._originalHeight=element.style.height;element.style.position='absolute';element.style.top=top+'px';element.style.left=left+'px';element.style.width=width+'px';element.style.height=height+'px';return element;},relativize:function(element){element=$(element);if(element.getStyle('position')=='relative')return element;element.style.position='relative';var top=parseFloat(element.style.top||0)-(element._originalTop||0);var left=parseFloat(element.style.left||0)-(element._originalLeft||0);element.style.top=top+'px';element.style.left=left+'px';element.style.height=element._originalHeight;element.style.width=element._originalWidth;return element;},cumulativeScrollOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode;}while(element);return Element._returnOffset(valueL,valueT);},getOffsetParent:function(element){if(element.offsetParent)return $(element.offsetParent);if(element==document.body)return $(element);if(element.tagName.toUpperCase()=='HTML')
|
120 |
+
return $(document.body);while((element=element.parentNode)&&element!=document.body)
|
121 |
+
if(Element.getStyle(element,'position')!='static')
|
122 |
+
return $(element);return $(document.body);},viewportOffset:function(forElement){var valueT=0,valueL=0;var element=forElement;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body&&Element.getStyle(element,'position')=='absolute')break;}while(element=element.offsetParent);element=forElement;do{if(!Prototype.Browser.Opera||(element.tagName&&(element.tagName.toUpperCase()=='BODY'))){valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0;}}while(element=element.parentNode);return Element._returnOffset(valueL,valueT);},clonePosition:function(element,source){var options=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},arguments[2]||{});source=$(source);var p=source.viewportOffset();element=$(element);var delta=[0,0];var parent=null;if(Element.getStyle(element,'position')=='absolute'){parent=element.getOffsetParent();delta=parent.viewportOffset();}
|
123 |
+
if(parent==document.body){delta[0]-=document.body.offsetLeft;delta[1]-=document.body.offsetTop;}
|
124 |
+
if(options.setLeft)element.style.left=(p[0]-delta[0]+options.offsetLeft)+'px';if(options.setTop)element.style.top=(p[1]-delta[1]+options.offsetTop)+'px';if(options.setWidth)element.style.width=source.offsetWidth+'px';if(options.setHeight)element.style.height=source.offsetHeight+'px';return element;}};Element.Methods.identify.counter=1;Object.extend(Element.Methods,{getElementsBySelector:Element.Methods.select,childElements:Element.Methods.immediateDescendants});Element._attributeTranslations={write:{names:{className:'class',htmlFor:'for'},values:{}}};if(Prototype.Browser.Opera){Element.Methods.getStyle=Element.Methods.getStyle.wrap(function(proceed,element,style){switch(style){case'left':case'top':case'right':case'bottom':if(proceed(element,'position')==='static')return null;case'height':case'width':if(!Element.visible(element))return null;var dim=parseInt(proceed(element,style),10);if(dim!==element['offset'+style.capitalize()])
|
125 |
+
return dim+'px';var properties;if(style==='height'){properties=['border-top-width','padding-top','padding-bottom','border-bottom-width'];}
|
126 |
+
else{properties=['border-left-width','padding-left','padding-right','border-right-width'];}
|
127 |
+
return properties.inject(dim,function(memo,property){var val=proceed(element,property);return val===null?memo:memo-parseInt(val,10);})+'px';default:return proceed(element,style);}});Element.Methods.readAttribute=Element.Methods.readAttribute.wrap(function(proceed,element,attribute){if(attribute==='title')return element.title;return proceed(element,attribute);});}
|
128 |
+
else if(Prototype.Browser.IE){Element.Methods.getOffsetParent=Element.Methods.getOffsetParent.wrap(function(proceed,element){element=$(element);try{element.offsetParent}
|
129 |
+
catch(e){return $(document.body)}
|
130 |
+
var position=element.getStyle('position');if(position!=='static')return proceed(element);element.setStyle({position:'relative'});var value=proceed(element);element.setStyle({position:position});return value;});$w('positionedOffset viewportOffset').each(function(method){Element.Methods[method]=Element.Methods[method].wrap(function(proceed,element){element=$(element);try{element.offsetParent}
|
131 |
+
catch(e){return Element._returnOffset(0,0)}
|
132 |
+
var position=element.getStyle('position');if(position!=='static')return proceed(element);var offsetParent=element.getOffsetParent();if(offsetParent&&offsetParent.getStyle('position')==='fixed')
|
133 |
+
offsetParent.setStyle({zoom:1});element.setStyle({position:'relative'});var value=proceed(element);element.setStyle({position:position});return value;});});Element.Methods.cumulativeOffset=Element.Methods.cumulativeOffset.wrap(function(proceed,element){try{element.offsetParent}
|
134 |
+
catch(e){return Element._returnOffset(0,0)}
|
135 |
+
return proceed(element);});Element.Methods.getStyle=function(element,style){element=$(element);style=(style=='float'||style=='cssFloat')?'styleFloat':style.camelize();var value=element.style[style];if(!value&&element.currentStyle)value=element.currentStyle[style];if(style=='opacity'){if(value=(element.getStyle('filter')||'').match(/alpha\(opacity=(.*)\)/))
|
136 |
+
if(value[1])return parseFloat(value[1])/100;return 1.0;}
|
137 |
+
if(value=='auto'){if((style=='width'||style=='height')&&(element.getStyle('display')!='none'))
|
138 |
+
return element['offset'+style.capitalize()]+'px';return null;}
|
139 |
+
return value;};Element.Methods.setOpacity=function(element,value){function stripAlpha(filter){return filter.replace(/alpha\([^\)]*\)/gi,'');}
|
140 |
+
element=$(element);var currentStyle=element.currentStyle;if((currentStyle&&!currentStyle.hasLayout)||(!currentStyle&&element.style.zoom=='normal'))
|
141 |
+
element.style.zoom=1;var filter=element.getStyle('filter'),style=element.style;if(value==1||value===''){(filter=stripAlpha(filter))?style.filter=filter:style.removeAttribute('filter');return element;}else if(value<0.00001)value=0;style.filter=stripAlpha(filter)+'alpha(opacity='+(value*100)+')';return element;};Element._attributeTranslations={read:{names:{'class':'className','for':'htmlFor'},values:{_getAttr:function(element,attribute){return element.getAttribute(attribute,2);},_getAttrNode:function(element,attribute){var node=element.getAttributeNode(attribute);return node?node.value:"";},_getEv:function(element,attribute){attribute=element.getAttribute(attribute);return attribute?attribute.toString().slice(23,-2):null;},_flag:function(element,attribute){return $(element).hasAttribute(attribute)?attribute:null;},style:function(element){return element.style.cssText.toLowerCase();},title:function(element){return element.title;}}}};Element._attributeTranslations.write={names:Object.extend({cellpadding:'cellPadding',cellspacing:'cellSpacing'},Element._attributeTranslations.read.names),values:{checked:function(element,value){element.checked=!!value;},style:function(element,value){element.style.cssText=value?value:'';}}};Element._attributeTranslations.has={};$w('colSpan rowSpan vAlign dateTime accessKey tabIndex '+'encType maxLength readOnly longDesc frameBorder').each(function(attr){Element._attributeTranslations.write.names[attr.toLowerCase()]=attr;Element._attributeTranslations.has[attr.toLowerCase()]=attr;});(function(v){Object.extend(v,{href:v._getAttr,src:v._getAttr,type:v._getAttr,action:v._getAttrNode,disabled:v._flag,checked:v._flag,readonly:v._flag,multiple:v._flag,onload:v._getEv,onunload:v._getEv,onclick:v._getEv,ondblclick:v._getEv,onmousedown:v._getEv,onmouseup:v._getEv,onmouseover:v._getEv,onmousemove:v._getEv,onmouseout:v._getEv,onfocus:v._getEv,onblur:v._getEv,onkeypress:v._getEv,onkeydown:v._getEv,onkeyup:v._getEv,onsubmit:v._getEv,onreset:v._getEv,onselect:v._getEv,onchange:v._getEv});})(Element._attributeTranslations.read.values);}
|
142 |
+
else if(Prototype.Browser.Gecko&&/rv:1\.8\.0/.test(navigator.userAgent)){Element.Methods.setOpacity=function(element,value){element=$(element);element.style.opacity=(value==1)?0.999999:(value==='')?'':(value<0.00001)?0:value;return element;};}
|
143 |
+
else if(Prototype.Browser.WebKit){Element.Methods.setOpacity=function(element,value){element=$(element);element.style.opacity=(value==1||value==='')?'':(value<0.00001)?0:value;if(value==1)
|
144 |
+
if(element.tagName.toUpperCase()=='IMG'&&element.width){element.width++;element.width--;}else try{var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){}
|
145 |
+
return element;};Element.Methods.cumulativeOffset=function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body)
|
146 |
+
if(Element.getStyle(element,'position')=='absolute')break;element=element.offsetParent;}while(element);return Element._returnOffset(valueL,valueT);};}
|
147 |
+
if(Prototype.Browser.IE||Prototype.Browser.Opera){Element.Methods.update=function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content))return element.update().insert(content);content=Object.toHTML(content);var tagName=element.tagName.toUpperCase();if(tagName in Element._insertionTranslations.tags){$A(element.childNodes).each(function(node){element.removeChild(node)});Element._getContentFromAnonymousElement(tagName,content.stripScripts()).each(function(node){element.appendChild(node)});}
|
148 |
+
else element.innerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;};}
|
149 |
+
if('outerHTML'in document.createElement('div')){Element.Methods.replace=function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content)){element.parentNode.replaceChild(content,element);return element;}
|
150 |
+
content=Object.toHTML(content);var parent=element.parentNode,tagName=parent.tagName.toUpperCase();if(Element._insertionTranslations.tags[tagName]){var nextSibling=element.next();var fragments=Element._getContentFromAnonymousElement(tagName,content.stripScripts());parent.removeChild(element);if(nextSibling)
|
151 |
+
fragments.each(function(node){parent.insertBefore(node,nextSibling)});else
|
152 |
+
fragments.each(function(node){parent.appendChild(node)});}
|
153 |
+
else element.outerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;};}
|
154 |
+
Element._returnOffset=function(l,t){var result=[l,t];result.left=l;result.top=t;return result;};Element._getContentFromAnonymousElement=function(tagName,html){var div=new Element('div'),t=Element._insertionTranslations.tags[tagName];if(t){div.innerHTML=t[0]+html+t[1];t[2].times(function(){div=div.firstChild});}else div.innerHTML=html;return $A(div.childNodes);};Element._insertionTranslations={before:function(element,node){element.parentNode.insertBefore(node,element);},top:function(element,node){element.insertBefore(node,element.firstChild);},bottom:function(element,node){element.appendChild(node);},after:function(element,node){element.parentNode.insertBefore(node,element.nextSibling);},tags:{TABLE:['<table>','</table>',1],TBODY:['<table><tbody>','</tbody></table>',2],TR:['<table><tbody><tr>','</tr></tbody></table>',3],TD:['<table><tbody><tr><td>','</td></tr></tbody></table>',4],SELECT:['<select>','</select>',1]}};(function(){Object.extend(this.tags,{THEAD:this.tags.TBODY,TFOOT:this.tags.TBODY,TH:this.tags.TD});}).call(Element._insertionTranslations);Element.Methods.Simulated={hasAttribute:function(element,attribute){attribute=Element._attributeTranslations.has[attribute]||attribute;var node=$(element).getAttributeNode(attribute);return!!(node&&node.specified);}};Element.Methods.ByTag={};Object.extend(Element,Element.Methods);if(!Prototype.BrowserFeatures.ElementExtensions&&document.createElement('div')['__proto__']){window.HTMLElement={};window.HTMLElement.prototype=document.createElement('div')['__proto__'];Prototype.BrowserFeatures.ElementExtensions=true;}
|
155 |
+
Element.extend=(function(){if(Prototype.BrowserFeatures.SpecificElementExtensions)
|
156 |
+
return Prototype.K;var Methods={},ByTag=Element.Methods.ByTag;var extend=Object.extend(function(element){if(!element||element._extendedByPrototype||element.nodeType!=1||element==window)return element;var methods=Object.clone(Methods),tagName=element.tagName.toUpperCase(),property,value;if(ByTag[tagName])Object.extend(methods,ByTag[tagName]);for(property in methods){value=methods[property];if(Object.isFunction(value)&&!(property in element))
|
157 |
+
element[property]=value.methodize();}
|
158 |
+
element._extendedByPrototype=Prototype.emptyFunction;return element;},{refresh:function(){if(!Prototype.BrowserFeatures.ElementExtensions){Object.extend(Methods,Element.Methods);Object.extend(Methods,Element.Methods.Simulated);}}});extend.refresh();return extend;})();Element.hasAttribute=function(element,attribute){if(element.hasAttribute)return element.hasAttribute(attribute);return Element.Methods.Simulated.hasAttribute(element,attribute);};Element.addMethods=function(methods){var F=Prototype.BrowserFeatures,T=Element.Methods.ByTag;if(!methods){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(Element.Methods.ByTag,{"FORM":Object.clone(Form.Methods),"INPUT":Object.clone(Form.Element.Methods),"SELECT":Object.clone(Form.Element.Methods),"TEXTAREA":Object.clone(Form.Element.Methods)});}
|
159 |
+
if(arguments.length==2){var tagName=methods;methods=arguments[1];}
|
160 |
+
if(!tagName)Object.extend(Element.Methods,methods||{});else{if(Object.isArray(tagName))tagName.each(extend);else extend(tagName);}
|
161 |
+
function extend(tagName){tagName=tagName.toUpperCase();if(!Element.Methods.ByTag[tagName])
|
162 |
+
Element.Methods.ByTag[tagName]={};Object.extend(Element.Methods.ByTag[tagName],methods);}
|
163 |
+
function copy(methods,destination,onlyIfAbsent){onlyIfAbsent=onlyIfAbsent||false;for(var property in methods){var value=methods[property];if(!Object.isFunction(value))continue;if(!onlyIfAbsent||!(property in destination))
|
164 |
+
destination[property]=value.methodize();}}
|
165 |
+
function findDOMClass(tagName){var klass;var trans={"OPTGROUP":"OptGroup","TEXTAREA":"TextArea","P":"Paragraph","FIELDSET":"FieldSet","UL":"UList","OL":"OList","DL":"DList","DIR":"Directory","H1":"Heading","H2":"Heading","H3":"Heading","H4":"Heading","H5":"Heading","H6":"Heading","Q":"Quote","INS":"Mod","DEL":"Mod","A":"Anchor","IMG":"Image","CAPTION":"TableCaption","COL":"TableCol","COLGROUP":"TableCol","THEAD":"TableSection","TFOOT":"TableSection","TBODY":"TableSection","TR":"TableRow","TH":"TableCell","TD":"TableCell","FRAMESET":"FrameSet","IFRAME":"IFrame"};if(trans[tagName])klass='HTML'+trans[tagName]+'Element';if(window[klass])return window[klass];klass='HTML'+tagName+'Element';if(window[klass])return window[klass];klass='HTML'+tagName.capitalize()+'Element';if(window[klass])return window[klass];window[klass]={};window[klass].prototype=document.createElement(tagName)['__proto__'];return window[klass];}
|
166 |
+
if(F.ElementExtensions){copy(Element.Methods,HTMLElement.prototype);copy(Element.Methods.Simulated,HTMLElement.prototype,true);}
|
167 |
+
if(F.SpecificElementExtensions){for(var tag in Element.Methods.ByTag){var klass=findDOMClass(tag);if(Object.isUndefined(klass))continue;copy(T[tag],klass.prototype);}}
|
168 |
+
Object.extend(Element,Element.Methods);delete Element.ByTag;if(Element.extend.refresh)Element.extend.refresh();Element.cache={};};document.viewport={getDimensions:function(){var dimensions={},B=Prototype.Browser;$w('width height').each(function(d){var D=d.capitalize();if(B.WebKit&&!document.evaluate){dimensions[d]=self['inner'+D];}else if(B.Opera&&parseFloat(window.opera.version())<9.5){dimensions[d]=document.body['client'+D]}else{dimensions[d]=document.documentElement['client'+D];}});return dimensions;},getWidth:function(){return this.getDimensions().width;},getHeight:function(){return this.getDimensions().height;},getScrollOffsets:function(){return Element._returnOffset(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop);}};var Selector=Class.create({initialize:function(expression){this.expression=expression.strip();if(this.shouldUseSelectorsAPI()){this.mode='selectorsAPI';}else if(this.shouldUseXPath()){this.mode='xpath';this.compileXPathMatcher();}else{this.mode="normal";this.compileMatcher();}},shouldUseXPath:function(){if(!Prototype.BrowserFeatures.XPath)return false;var e=this.expression;if(Prototype.Browser.WebKit&&(e.include("-of-type")||e.include(":empty")))
|
169 |
+
return false;if((/(\[[\w-]*?:|:checked)/).test(e))
|
170 |
+
return false;return true;},shouldUseSelectorsAPI:function(){if(!Prototype.BrowserFeatures.SelectorsAPI)return false;if(!Selector._div)Selector._div=new Element('div');try{Selector._div.querySelector(this.expression);}catch(e){return false;}
|
171 |
+
return true;},compileMatcher:function(){var e=this.expression,ps=Selector.patterns,h=Selector.handlers,c=Selector.criteria,le,p,m;if(Selector._cache[e]){this.matcher=Selector._cache[e];return;}
|
172 |
+
this.matcher=["this.matcher = function(root) {","var r = root, h = Selector.handlers, c = false, n;"];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in ps){p=ps[i];if(m=e.match(p)){this.matcher.push(Object.isFunction(c[i])?c[i](m):new Template(c[i]).evaluate(m));e=e.replace(m[0],'');break;}}}
|
173 |
+
this.matcher.push("return h.unique(n);\n}");eval(this.matcher.join('\n'));Selector._cache[this.expression]=this.matcher;},compileXPathMatcher:function(){var e=this.expression,ps=Selector.patterns,x=Selector.xpath,le,m;if(Selector._cache[e]){this.xpath=Selector._cache[e];return;}
|
174 |
+
this.matcher=['.//*'];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in ps){if(m=e.match(ps[i])){this.matcher.push(Object.isFunction(x[i])?x[i](m):new Template(x[i]).evaluate(m));e=e.replace(m[0],'');break;}}}
|
175 |
+
this.xpath=this.matcher.join('');Selector._cache[this.expression]=this.xpath;},findElements:function(root){root=root||document;var e=this.expression,results;switch(this.mode){case'selectorsAPI':if(root!==document){var oldId=root.id,id=$(root).identify();e="#"+id+" "+e;}
|
176 |
+
results=$A(root.querySelectorAll(e)).map(Element.extend);root.id=oldId;return results;case'xpath':return document._getElementsByXPath(this.xpath,root);default:return this.matcher(root);}},match:function(element){this.tokens=[];var e=this.expression,ps=Selector.patterns,as=Selector.assertions;var le,p,m;while(e&&le!==e&&(/\S/).test(e)){le=e;for(var i in ps){p=ps[i];if(m=e.match(p)){if(as[i]){this.tokens.push([i,Object.clone(m)]);e=e.replace(m[0],'');}else{return this.findElements(document).include(element);}}}}
|
177 |
+
var match=true,name,matches;for(var i=0,token;token=this.tokens[i];i++){name=token[0],matches=token[1];if(!Selector.assertions[name](element,matches)){match=false;break;}}
|
178 |
+
return match;},toString:function(){return this.expression;},inspect:function(){return"#<Selector:"+this.expression.inspect()+">";}});Object.extend(Selector,{_cache:{},xpath:{descendant:"//*",child:"/*",adjacent:"/following-sibling::*[1]",laterSibling:'/following-sibling::*',tagName:function(m){if(m[1]=='*')return'';return"[local-name()='"+m[1].toLowerCase()+"' or local-name()='"+m[1].toUpperCase()+"']";},className:"[contains(concat(' ', @class, ' '), ' #{1} ')]",id:"[@id='#{1}']",attrPresence:function(m){m[1]=m[1].toLowerCase();return new Template("[@#{1}]").evaluate(m);},attr:function(m){m[1]=m[1].toLowerCase();m[3]=m[5]||m[6];return new Template(Selector.xpath.operators[m[2]]).evaluate(m);},pseudo:function(m){var h=Selector.xpath.pseudos[m[1]];if(!h)return'';if(Object.isFunction(h))return h(m);return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);},operators:{'=':"[@#{1}='#{3}']",'!=':"[@#{1}!='#{3}']",'^=':"[starts-with(@#{1}, '#{3}')]",'$=':"[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",'*=':"[contains(@#{1}, '#{3}')]",'~=':"[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",'|=':"[contains(concat('-', @#{1}, '-'), '-#{3}-')]"},pseudos:{'first-child':'[not(preceding-sibling::*)]','last-child':'[not(following-sibling::*)]','only-child':'[not(preceding-sibling::* or following-sibling::*)]','empty':"[count(*) = 0 and (count(text()) = 0)]",'checked':"[@checked]",'disabled':"[(@disabled) and (@type!='hidden')]",'enabled':"[not(@disabled) and (@type!='hidden')]",'not':function(m){var e=m[6],p=Selector.patterns,x=Selector.xpath,le,v;var exclusion=[];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in p){if(m=e.match(p[i])){v=Object.isFunction(x[i])?x[i](m):new Template(x[i]).evaluate(m);exclusion.push("("+v.substring(1,v.length-1)+")");e=e.replace(m[0],'');break;}}}
|
179 |
+
return"[not("+exclusion.join(" and ")+")]";},'nth-child':function(m){return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ",m);},'nth-last-child':function(m){return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ",m);},'nth-of-type':function(m){return Selector.xpath.pseudos.nth("position() ",m);},'nth-last-of-type':function(m){return Selector.xpath.pseudos.nth("(last() + 1 - position()) ",m);},'first-of-type':function(m){m[6]="1";return Selector.xpath.pseudos['nth-of-type'](m);},'last-of-type':function(m){m[6]="1";return Selector.xpath.pseudos['nth-last-of-type'](m);},'only-of-type':function(m){var p=Selector.xpath.pseudos;return p['first-of-type'](m)+p['last-of-type'](m);},nth:function(fragment,m){var mm,formula=m[6],predicate;if(formula=='even')formula='2n+0';if(formula=='odd')formula='2n+1';if(mm=formula.match(/^(\d+)$/))
|
180 |
+
return'['+fragment+"= "+mm[1]+']';if(mm=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(mm[1]=="-")mm[1]=-1;var a=mm[1]?Number(mm[1]):1;var b=mm[2]?Number(mm[2]):0;predicate="[((#{fragment} - #{b}) mod #{a} = 0) and "+"((#{fragment} - #{b}) div #{a} >= 0)]";return new Template(predicate).evaluate({fragment:fragment,a:a,b:b});}}}},criteria:{tagName:'n = h.tagName(n, r, "#{1}", c); c = false;',className:'n = h.className(n, r, "#{1}", c); c = false;',id:'n = h.id(n, r, "#{1}", c); c = false;',attrPresence:'n = h.attrPresence(n, r, "#{1}", c); c = false;',attr:function(m){m[3]=(m[5]||m[6]);return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m);},pseudo:function(m){if(m[6])m[6]=m[6].replace(/"/g,'\\"');return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);},descendant:'c = "descendant";',child:'c = "child";',adjacent:'c = "adjacent";',laterSibling:'c = "laterSibling";'},patterns:{laterSibling:/^\s*~\s*/,child:/^\s*>\s*/,adjacent:/^\s*\+\s*/,descendant:/^\s/,tagName:/^\s*(\*|[\w\-]+)(\b|$)?/,id:/^#([\w\-\*]+)(\b|$)/,className:/^\.([\w\-\*]+)(\b|$)/,pseudo:/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/,attrPresence:/^\[((?:[\w]+:)?[\w]+)\]/,attr:/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/},assertions:{tagName:function(element,matches){return matches[1].toUpperCase()==element.tagName.toUpperCase();},className:function(element,matches){return Element.hasClassName(element,matches[1]);},id:function(element,matches){return element.id===matches[1];},attrPresence:function(element,matches){return Element.hasAttribute(element,matches[1]);},attr:function(element,matches){var nodeValue=Element.readAttribute(element,matches[1]);return nodeValue&&Selector.operators[matches[2]](nodeValue,matches[5]||matches[6]);}},handlers:{concat:function(a,b){for(var i=0,node;node=b[i];i++)
|
181 |
+
a.push(node);return a;},mark:function(nodes){var _true=Prototype.emptyFunction;for(var i=0,node;node=nodes[i];i++)
|
182 |
+
node._countedByPrototype=_true;return nodes;},unmark:function(nodes){for(var i=0,node;node=nodes[i];i++)
|
183 |
+
node._countedByPrototype=undefined;return nodes;},index:function(parentNode,reverse,ofType){parentNode._countedByPrototype=Prototype.emptyFunction;if(reverse){for(var nodes=parentNode.childNodes,i=nodes.length-1,j=1;i>=0;i--){var node=nodes[i];if(node.nodeType==1&&(!ofType||node._countedByPrototype))node.nodeIndex=j++;}}else{for(var i=0,j=1,nodes=parentNode.childNodes;node=nodes[i];i++)
|
184 |
+
if(node.nodeType==1&&(!ofType||node._countedByPrototype))node.nodeIndex=j++;}},unique:function(nodes){if(nodes.length==0)return nodes;var results=[],n;for(var i=0,l=nodes.length;i<l;i++)
|
185 |
+
if(!(n=nodes[i])._countedByPrototype){n._countedByPrototype=Prototype.emptyFunction;results.push(Element.extend(n));}
|
186 |
+
return Selector.handlers.unmark(results);},descendant:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++)
|
187 |
+
h.concat(results,node.getElementsByTagName('*'));return results;},child:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++){for(var j=0,child;child=node.childNodes[j];j++)
|
188 |
+
if(child.nodeType==1&&child.tagName!='!')results.push(child);}
|
189 |
+
return results;},adjacent:function(nodes){for(var i=0,results=[],node;node=nodes[i];i++){var next=this.nextElementSibling(node);if(next)results.push(next);}
|
190 |
+
return results;},laterSibling:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++)
|
191 |
+
h.concat(results,Element.nextSiblings(node));return results;},nextElementSibling:function(node){while(node=node.nextSibling)
|
192 |
+
if(node.nodeType==1)return node;return null;},previousElementSibling:function(node){while(node=node.previousSibling)
|
193 |
+
if(node.nodeType==1)return node;return null;},tagName:function(nodes,root,tagName,combinator){var uTagName=tagName.toUpperCase();var results=[],h=Selector.handlers;if(nodes){if(combinator){if(combinator=="descendant"){for(var i=0,node;node=nodes[i];i++)
|
194 |
+
h.concat(results,node.getElementsByTagName(tagName));return results;}else nodes=this[combinator](nodes);if(tagName=="*")return nodes;}
|
195 |
+
for(var i=0,node;node=nodes[i];i++)
|
196 |
+
if(node.tagName.toUpperCase()===uTagName)results.push(node);return results;}else return root.getElementsByTagName(tagName);},id:function(nodes,root,id,combinator){var targetNode=$(id),h=Selector.handlers;if(!targetNode)return[];if(!nodes&&root==document)return[targetNode];if(nodes){if(combinator){if(combinator=='child'){for(var i=0,node;node=nodes[i];i++)
|
197 |
+
if(targetNode.parentNode==node)return[targetNode];}else if(combinator=='descendant'){for(var i=0,node;node=nodes[i];i++)
|
198 |
+
if(Element.descendantOf(targetNode,node))return[targetNode];}else if(combinator=='adjacent'){for(var i=0,node;node=nodes[i];i++)
|
199 |
+
if(Selector.handlers.previousElementSibling(targetNode)==node)
|
200 |
+
return[targetNode];}else nodes=h[combinator](nodes);}
|
201 |
+
for(var i=0,node;node=nodes[i];i++)
|
202 |
+
if(node==targetNode)return[targetNode];return[];}
|
203 |
+
return(targetNode&&Element.descendantOf(targetNode,root))?[targetNode]:[];},className:function(nodes,root,className,combinator){if(nodes&&combinator)nodes=this[combinator](nodes);return Selector.handlers.byClassName(nodes,root,className);},byClassName:function(nodes,root,className){if(!nodes)nodes=Selector.handlers.descendant([root]);var needle=' '+className+' ';for(var i=0,results=[],node,nodeClassName;node=nodes[i];i++){nodeClassName=node.className;if(nodeClassName.length==0)continue;if(nodeClassName==className||(' '+nodeClassName+' ').include(needle))
|
204 |
+
results.push(node);}
|
205 |
+
return results;},attrPresence:function(nodes,root,attr,combinator){if(!nodes)nodes=root.getElementsByTagName("*");if(nodes&&combinator)nodes=this[combinator](nodes);var results=[];for(var i=0,node;node=nodes[i];i++)
|
206 |
+
if(Element.hasAttribute(node,attr))results.push(node);return results;},attr:function(nodes,root,attr,value,operator,combinator){if(!nodes)nodes=root.getElementsByTagName("*");if(nodes&&combinator)nodes=this[combinator](nodes);var handler=Selector.operators[operator],results=[];for(var i=0,node;node=nodes[i];i++){var nodeValue=Element.readAttribute(node,attr);if(nodeValue===null)continue;if(handler(nodeValue,value))results.push(node);}
|
207 |
+
return results;},pseudo:function(nodes,name,value,root,combinator){if(nodes&&combinator)nodes=this[combinator](nodes);if(!nodes)nodes=root.getElementsByTagName("*");return Selector.pseudos[name](nodes,value,root);}},pseudos:{'first-child':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(Selector.handlers.previousElementSibling(node))continue;results.push(node);}
|
208 |
+
return results;},'last-child':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(Selector.handlers.nextElementSibling(node))continue;results.push(node);}
|
209 |
+
return results;},'only-child':function(nodes,value,root){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++)
|
210 |
+
if(!h.previousElementSibling(node)&&!h.nextElementSibling(node))
|
211 |
+
results.push(node);return results;},'nth-child':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root);},'nth-last-child':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,true);},'nth-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,false,true);},'nth-last-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,true,true);},'first-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,"1",root,false,true);},'last-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,"1",root,true,true);},'only-of-type':function(nodes,formula,root){var p=Selector.pseudos;return p['last-of-type'](p['first-of-type'](nodes,formula,root),formula,root);},getIndices:function(a,b,total){if(a==0)return b>0?[b]:[];return $R(1,total).inject([],function(memo,i){if(0==(i-b)%a&&(i-b)/a>=0)memo.push(i);return memo;});},nth:function(nodes,formula,root,reverse,ofType){if(nodes.length==0)return[];if(formula=='even')formula='2n+0';if(formula=='odd')formula='2n+1';var h=Selector.handlers,results=[],indexed=[],m;h.mark(nodes);for(var i=0,node;node=nodes[i];i++){if(!node.parentNode._countedByPrototype){h.index(node.parentNode,reverse,ofType);indexed.push(node.parentNode);}}
|
212 |
+
if(formula.match(/^\d+$/)){formula=Number(formula);for(var i=0,node;node=nodes[i];i++)
|
213 |
+
if(node.nodeIndex==formula)results.push(node);}else if(m=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(m[1]=="-")m[1]=-1;var a=m[1]?Number(m[1]):1;var b=m[2]?Number(m[2]):0;var indices=Selector.pseudos.getIndices(a,b,nodes.length);for(var i=0,node,l=indices.length;node=nodes[i];i++){for(var j=0;j<l;j++)
|
214 |
+
if(node.nodeIndex==indices[j])results.push(node);}}
|
215 |
+
h.unmark(nodes);h.unmark(indexed);return results;},'empty':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(node.tagName=='!'||node.firstChild)continue;results.push(node);}
|
216 |
+
return results;},'not':function(nodes,selector,root){var h=Selector.handlers,selectorType,m;var exclusions=new Selector(selector).findElements(root);h.mark(exclusions);for(var i=0,results=[],node;node=nodes[i];i++)
|
217 |
+
if(!node._countedByPrototype)results.push(node);h.unmark(exclusions);return results;},'enabled':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++)
|
218 |
+
if(!node.disabled&&(!node.type||node.type!=='hidden'))
|
219 |
+
results.push(node);return results;},'disabled':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++)
|
220 |
+
if(node.disabled)results.push(node);return results;},'checked':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++)
|
221 |
+
if(node.checked)results.push(node);return results;}},operators:{'=':function(nv,v){return nv==v;},'!=':function(nv,v){return nv!=v;},'^=':function(nv,v){return nv==v||nv&&nv.startsWith(v);},'$=':function(nv,v){return nv==v||nv&&nv.endsWith(v);},'*=':function(nv,v){return nv==v||nv&&nv.include(v);},'$=':function(nv,v){return nv.endsWith(v);},'*=':function(nv,v){return nv.include(v);},'~=':function(nv,v){return(' '+nv+' ').include(' '+v+' ');},'|=':function(nv,v){return('-'+(nv||"").toUpperCase()+'-').include('-'+(v||"").toUpperCase()+'-');}},split:function(expression){var expressions=[];expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/,function(m){expressions.push(m[1].strip());});return expressions;},matchElements:function(elements,expression){var matches=$$(expression),h=Selector.handlers;h.mark(matches);for(var i=0,results=[],element;element=elements[i];i++)
|
222 |
+
if(element._countedByPrototype)results.push(element);h.unmark(matches);return results;},findElement:function(elements,expression,index){if(Object.isNumber(expression)){index=expression;expression=false;}
|
223 |
+
return Selector.matchElements(elements,expression||'*')[index||0];},findChildElements:function(element,expressions){expressions=Selector.split(expressions.join(','));var results=[],h=Selector.handlers;for(var i=0,l=expressions.length,selector;i<l;i++){selector=new Selector(expressions[i].strip());h.concat(results,selector.findElements(element));}
|
224 |
+
return(l>1)?h.unique(results):results;}});if(Prototype.Browser.IE){Object.extend(Selector.handlers,{concat:function(a,b){for(var i=0,node;node=b[i];i++)
|
225 |
+
if(node.tagName!=="!")a.push(node);return a;},unmark:function(nodes){for(var i=0,node;node=nodes[i];i++)
|
226 |
+
node.removeAttribute('_countedByPrototype');return nodes;}});}
|
227 |
+
function $$(){return Selector.findChildElements(document,$A(arguments));}
|
228 |
+
var Form={reset:function(form){$(form).reset();return form;},serializeElements:function(elements,options){if(typeof options!='object')options={hash:!!options};else if(Object.isUndefined(options.hash))options.hash=true;var key,value,submitted=false,submit=options.submit;var data=elements.inject({},function(result,element){if(!element.disabled&&element.name){key=element.name;value=$(element).getValue();if(value!=null&&element.type!='file'&&(element.type!='submit'||(!submitted&&submit!==false&&(!submit||key==submit)&&(submitted=true)))){if(key in result){if(!Object.isArray(result[key]))result[key]=[result[key]];result[key].push(value);}
|
229 |
+
else result[key]=value;}}
|
230 |
+
return result;});return options.hash?data:Object.toQueryString(data);}};Form.Methods={serialize:function(form,options){return Form.serializeElements(Form.getElements(form),options);},getElements:function(form){return $A($(form).getElementsByTagName('*')).inject([],function(elements,child){if(Form.Element.Serializers[child.tagName.toLowerCase()])
|
231 |
+
elements.push(Element.extend(child));return elements;});},getInputs:function(form,typeName,name){form=$(form);var inputs=form.getElementsByTagName('input');if(!typeName&&!name)return $A(inputs).map(Element.extend);for(var i=0,matchingInputs=[],length=inputs.length;i<length;i++){var input=inputs[i];if((typeName&&input.type!=typeName)||(name&&input.name!=name))
|
232 |
+
continue;matchingInputs.push(Element.extend(input));}
|
233 |
+
return matchingInputs;},disable:function(form){form=$(form);Form.getElements(form).invoke('disable');return form;},enable:function(form){form=$(form);Form.getElements(form).invoke('enable');return form;},findFirstElement:function(form){var elements=$(form).getElements().findAll(function(element){return'hidden'!=element.type&&!element.disabled;});var firstByIndex=elements.findAll(function(element){return element.hasAttribute('tabIndex')&&element.tabIndex>=0;}).sortBy(function(element){return element.tabIndex}).first();return firstByIndex?firstByIndex:elements.find(function(element){return['input','select','textarea'].include(element.tagName.toLowerCase());});},focusFirstElement:function(form){form=$(form);form.findFirstElement().activate();return form;},request:function(form,options){form=$(form),options=Object.clone(options||{});var params=options.parameters,action=form.readAttribute('action')||'';if(action.blank())action=window.location.href;options.parameters=form.serialize(true);if(params){if(Object.isString(params))params=params.toQueryParams();Object.extend(options.parameters,params);}
|
234 |
+
if(form.hasAttribute('method')&&!options.method)
|
235 |
+
options.method=form.method;return new Ajax.Request(action,options);}};Form.Element={focus:function(element){$(element).focus();return element;},select:function(element){$(element).select();return element;}};Form.Element.Methods={serialize:function(element){element=$(element);if(!element.disabled&&element.name){var value=element.getValue();if(value!=undefined){var pair={};pair[element.name]=value;return Object.toQueryString(pair);}}
|
236 |
+
return'';},getValue:function(element){element=$(element);var method=element.tagName.toLowerCase();return Form.Element.Serializers[method](element);},setValue:function(element,value){element=$(element);var method=element.tagName.toLowerCase();Form.Element.Serializers[method](element,value);return element;},clear:function(element){$(element).value='';return element;},present:function(element){return $(element).value!='';},activate:function(element){element=$(element);try{element.focus();if(element.select&&(element.tagName.toLowerCase()!='input'||!['button','reset','submit'].include(element.type)))
|
237 |
+
element.select();}catch(e){}
|
238 |
+
return element;},disable:function(element){element=$(element);element.disabled=true;return element;},enable:function(element){element=$(element);element.disabled=false;return element;}};var Field=Form.Element;var $F=Form.Element.Methods.getValue;Form.Element.Serializers={input:function(element,value){switch(element.type.toLowerCase()){case'checkbox':case'radio':return Form.Element.Serializers.inputSelector(element,value);default:return Form.Element.Serializers.textarea(element,value);}},inputSelector:function(element,value){if(Object.isUndefined(value))return element.checked?element.value:null;else element.checked=!!value;},textarea:function(element,value){if(Object.isUndefined(value))return element.value;else element.value=value;},select:function(element,value){if(Object.isUndefined(value))
|
239 |
+
return this[element.type=='select-one'?'selectOne':'selectMany'](element);else{var opt,currentValue,single=!Object.isArray(value);for(var i=0,length=element.length;i<length;i++){opt=element.options[i];currentValue=this.optionValue(opt);if(single){if(currentValue==value){opt.selected=true;return;}}
|
240 |
+
else opt.selected=value.include(currentValue);}}},selectOne:function(element){var index=element.selectedIndex;return index>=0?this.optionValue(element.options[index]):null;},selectMany:function(element){var values,length=element.length;if(!length)return null;for(var i=0,values=[];i<length;i++){var opt=element.options[i];if(opt.selected)values.push(this.optionValue(opt));}
|
241 |
+
return values;},optionValue:function(opt){return Element.extend(opt).hasAttribute('value')?opt.value:opt.text;}};Abstract.TimedObserver=Class.create(PeriodicalExecuter,{initialize:function($super,element,frequency,callback){$super(callback,frequency);this.element=$(element);this.lastValue=this.getValue();},execute:function(){var value=this.getValue();if(Object.isString(this.lastValue)&&Object.isString(value)?this.lastValue!=value:String(this.lastValue)!=String(value)){this.callback(this.element,value);this.lastValue=value;}}});Form.Element.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.Element.getValue(this.element);}});Form.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.serialize(this.element);}});Abstract.EventObserver=Class.create({initialize:function(element,callback){this.element=$(element);this.callback=callback;this.lastValue=this.getValue();if(this.element.tagName.toLowerCase()=='form')
|
242 |
+
this.registerFormCallbacks();else
|
243 |
+
this.registerCallback(this.element);},onElementEvent:function(){var value=this.getValue();if(this.lastValue!=value){this.callback(this.element,value);this.lastValue=value;}},registerFormCallbacks:function(){Form.getElements(this.element).each(this.registerCallback,this);},registerCallback:function(element){if(element.type){switch(element.type.toLowerCase()){case'checkbox':case'radio':Event.observe(element,'click',this.onElementEvent.bind(this));break;default:Event.observe(element,'change',this.onElementEvent.bind(this));break;}}}});Form.Element.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.Element.getValue(this.element);}});Form.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.serialize(this.element);}});if(!window.Event)var Event={};Object.extend(Event,{KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,KEY_INSERT:45,cache:{},relatedTarget:function(event){var element;switch(event.type){case'mouseover':element=event.fromElement;break;case'mouseout':element=event.toElement;break;default:return null;}
|
244 |
+
return Element.extend(element);}});Event.Methods=(function(){var isButton;if(Prototype.Browser.IE){var buttonMap={0:1,1:4,2:2};isButton=function(event,code){return event.button==buttonMap[code];};}else if(Prototype.Browser.WebKit){isButton=function(event,code){switch(code){case 0:return event.which==1&&!event.metaKey;case 1:return event.which==1&&event.metaKey;default:return false;}};}else{isButton=function(event,code){return event.which?(event.which===code+1):(event.button===code);};}
|
245 |
+
return{isLeftClick:function(event){return isButton(event,0)},isMiddleClick:function(event){return isButton(event,1)},isRightClick:function(event){return isButton(event,2)},element:function(event){event=Event.extend(event);var node=event.target,type=event.type,currentTarget=event.currentTarget;if(currentTarget&¤tTarget.tagName){if(type==='load'||type==='error'||(type==='click'&¤tTarget.tagName.toLowerCase()==='input'&¤tTarget.type==='radio'))
|
246 |
+
node=currentTarget;}
|
247 |
+
if(node){if(node.nodeType==Node.TEXT_NODE)node=node.parentNode;return Element.extend(node);}else return false;},findElement:function(event,expression){var element=Event.element(event);if(!expression)return element;var elements=[element].concat(element.ancestors());return Selector.findElement(elements,expression,0);},pointer:function(event){var docElement=document.documentElement,body=document.body||{scrollLeft:0,scrollTop:0};return{x:event.pageX||(event.clientX+
|
248 |
+
(docElement.scrollLeft||body.scrollLeft)-
|
249 |
+
(docElement.clientLeft||0)),y:event.pageY||(event.clientY+
|
250 |
+
(docElement.scrollTop||body.scrollTop)-
|
251 |
+
(docElement.clientTop||0))};},pointerX:function(event){return Event.pointer(event).x},pointerY:function(event){return Event.pointer(event).y},stop:function(event){Event.extend(event);event.preventDefault();event.stopPropagation();event.stopped=true;}};})();Event.extend=(function(){var methods=Object.keys(Event.Methods).inject({},function(m,name){m[name]=Event.Methods[name].methodize();return m;});if(Prototype.Browser.IE){Object.extend(methods,{stopPropagation:function(){this.cancelBubble=true},preventDefault:function(){this.returnValue=false},inspect:function(){return"[object Event]"}});return function(event){if(!event)return false;if(event._extendedByPrototype)return event;event._extendedByPrototype=Prototype.emptyFunction;var pointer=Event.pointer(event);Object.extend(event,{target:event.srcElement,relatedTarget:Event.relatedTarget(event),pageX:pointer.x,pageY:pointer.y});return Object.extend(event,methods);};}else{Event.prototype=Event.prototype||document.createEvent("HTMLEvents")['__proto__'];Object.extend(Event.prototype,methods);return Prototype.K;}})();Object.extend(Event,(function(){var cache=Event.cache;function getEventID(element){try{if(element._prototypeEventID)return element._prototypeEventID[0];arguments.callee.id=arguments.callee.id||1;return element._prototypeEventID=[++arguments.callee.id];}catch(error){return false;}}
|
252 |
+
function getDOMEventName(eventName){if(eventName&&eventName.include(':'))return"dataavailable";return eventName;}
|
253 |
+
function getCacheForID(id){return cache[id]=cache[id]||{};}
|
254 |
+
function getWrappersForEventName(id,eventName){var c=getCacheForID(id);return c[eventName]=c[eventName]||[];}
|
255 |
+
function createWrapper(element,eventName,handler){var id=getEventID(element);var c=getWrappersForEventName(id,eventName);if(c.pluck("handler").include(handler))return false;var wrapper=function(event){if(!Event||!Event.extend||(event.eventName&&event.eventName!=eventName))
|
256 |
+
return false;Event.extend(event);handler.call(element,event);};wrapper.handler=handler;c.push(wrapper);return wrapper;}
|
257 |
+
function findWrapper(id,eventName,handler){var c=getWrappersForEventName(id,eventName);return c.find(function(wrapper){return wrapper.handler==handler});}
|
258 |
+
function destroyWrapper(id,eventName,handler){var c=getCacheForID(id);if(!c[eventName])return false;c[eventName]=c[eventName].without(findWrapper(id,eventName,handler));}
|
259 |
+
function destroyCache(){for(var id in cache)
|
260 |
+
for(var eventName in cache[id])
|
261 |
+
cache[id][eventName]=null;}
|
262 |
+
if(window.attachEvent){window.attachEvent("onunload",destroyCache);}
|
263 |
+
if(Prototype.Browser.WebKit){window.addEventListener('unload',Prototype.emptyFunction,false);}
|
264 |
+
return{observe:function(element,eventName,handler){element=$(element);var name=getDOMEventName(eventName);var wrapper=createWrapper(element,eventName,handler);if(!wrapper)return element;if(element.addEventListener){element.addEventListener(name,wrapper,false);}else{element.attachEvent("on"+name,wrapper);}
|
265 |
+
return element;},stopObserving:function(element,eventName,handler){element=$(element);var id=getEventID(element),name=getDOMEventName(eventName);if(!handler&&eventName){getWrappersForEventName(id,eventName).each(function(wrapper){element.stopObserving(eventName,wrapper.handler);});return element;}else if(!eventName){Object.keys(getCacheForID(id)).each(function(eventName){element.stopObserving(eventName);});return element;}
|
266 |
+
var wrapper=findWrapper(id,eventName,handler);if(!wrapper)return element;if(element.removeEventListener){element.removeEventListener(name,wrapper,false);}else{element.detachEvent("on"+name,wrapper);}
|
267 |
+
destroyWrapper(id,eventName,handler);return element;},fire:function(element,eventName,memo){element=$(element);if(element==document&&document.createEvent&&!element.dispatchEvent)
|
268 |
+
element=document.documentElement;var event;if(document.createEvent){event=document.createEvent("HTMLEvents");event.initEvent("dataavailable",true,true);}else{event=document.createEventObject();event.eventType="ondataavailable";}
|
269 |
+
event.eventName=eventName;event.memo=memo||{};if(document.createEvent){element.dispatchEvent(event);}else{element.fireEvent(event.eventType,event);}
|
270 |
+
return Event.extend(event);}};})());Object.extend(Event,Event.Methods);Element.addMethods({fire:Event.fire,observe:Event.observe,stopObserving:Event.stopObserving});Object.extend(document,{fire:Element.Methods.fire.methodize(),observe:Element.Methods.observe.methodize(),stopObserving:Element.Methods.stopObserving.methodize(),loaded:false});(function(){var timer;function fireContentLoadedEvent(){if(document.loaded)return;if(timer)window.clearInterval(timer);document.fire("dom:loaded");document.loaded=true;}
|
271 |
+
if(document.addEventListener){if(Prototype.Browser.WebKit){timer=window.setInterval(function(){if(/loaded|complete/.test(document.readyState))
|
272 |
+
fireContentLoadedEvent();},0);Event.observe(window,"load",fireContentLoadedEvent);}else{document.addEventListener("DOMContentLoaded",fireContentLoadedEvent,false);}}else{document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");$("__onDOMContentLoaded").onreadystatechange=function(){if(this.readyState=="complete"){this.onreadystatechange=null;fireContentLoadedEvent();}};}})();Hash.toQueryString=Object.toQueryString;var Toggle={display:Element.toggle};Element.Methods.childOf=Element.Methods.descendantOf;var Insertion={Before:function(element,content){return Element.insert(element,{before:content});},Top:function(element,content){return Element.insert(element,{top:content});},Bottom:function(element,content){return Element.insert(element,{bottom:content});},After:function(element,content){return Element.insert(element,{after:content});}};var $continue=new Error('"throw $continue" is deprecated, use "return" instead');var Position={includeScrollOffsets:false,prepare:function(){this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;},within:function(element,x,y){if(this.includeScrollOffsets)
|
273 |
+
return this.withinIncludingScrolloffsets(element,x,y);this.xcomp=x;this.ycomp=y;this.offset=Element.cumulativeOffset(element);return(y>=this.offset[1]&&y<this.offset[1]+element.offsetHeight&&x>=this.offset[0]&&x<this.offset[0]+element.offsetWidth);},withinIncludingScrolloffsets:function(element,x,y){var offsetcache=Element.cumulativeScrollOffset(element);this.xcomp=x+offsetcache[0]-this.deltaX;this.ycomp=y+offsetcache[1]-this.deltaY;this.offset=Element.cumulativeOffset(element);return(this.ycomp>=this.offset[1]&&this.ycomp<this.offset[1]+element.offsetHeight&&this.xcomp>=this.offset[0]&&this.xcomp<this.offset[0]+element.offsetWidth);},overlap:function(mode,element){if(!mode)return 0;if(mode=='vertical')
|
274 |
+
return((this.offset[1]+element.offsetHeight)-this.ycomp)/element.offsetHeight;if(mode=='horizontal')
|
275 |
+
return((this.offset[0]+element.offsetWidth)-this.xcomp)/element.offsetWidth;},cumulativeOffset:Element.Methods.cumulativeOffset,positionedOffset:Element.Methods.positionedOffset,absolutize:function(element){Position.prepare();return Element.absolutize(element);},relativize:function(element){Position.prepare();return Element.relativize(element);},realOffset:Element.Methods.cumulativeScrollOffset,offsetParent:Element.Methods.getOffsetParent,page:Element.Methods.viewportOffset,clone:function(source,target,options){options=options||{};return Element.clonePosition(target,source,options);}};if(!document.getElementsByClassName)document.getElementsByClassName=function(instanceMethods){function iter(name){return name.blank()?null:"[contains(concat(' ', @class, ' '), ' "+name+" ')]";}
|
276 |
+
instanceMethods.getElementsByClassName=Prototype.BrowserFeatures.XPath?function(element,className){className=className.toString().strip();var cond=/\s/.test(className)?$w(className).map(iter).join(''):iter(className);return cond?document._getElementsByXPath('.//*'+cond,element):[];}:function(element,className){className=className.toString().strip();var elements=[],classNames=(/\s/.test(className)?$w(className):null);if(!classNames&&!className)return elements;var nodes=$(element).getElementsByTagName('*');className=' '+className+' ';for(var i=0,child,cn;child=nodes[i];i++){if(child.className&&(cn=' '+child.className+' ')&&(cn.include(className)||(classNames&&classNames.all(function(name){return!name.toString().blank()&&cn.include(' '+name+' ');}))))
|
277 |
+
elements.push(Element.extend(child));}
|
278 |
+
return elements;};return function(className,parentElement){return $(parentElement||document.body).getElementsByClassName(className);};}(Element.Methods);Element.ClassNames=Class.create();Element.ClassNames.prototype={initialize:function(element){this.element=$(element);},_each:function(iterator){this.element.className.split(/\s+/).select(function(name){return name.length>0;})._each(iterator);},set:function(className){this.element.className=className;},add:function(classNameToAdd){if(this.include(classNameToAdd))return;this.set($A(this).concat(classNameToAdd).join(' '));},remove:function(classNameToRemove){if(!this.include(classNameToRemove))return;this.set($A(this).without(classNameToRemove).join(' '));},toString:function(){return $A(this).join(' ');}};Object.extend(Element.ClassNames.prototype,Enumerable);Element.addMethods();;var Validator=Class.create();Validator.prototype={initialize:function(className,error,test,options){if(typeof test=='function'){this.options=$H(options);this._test=test;}else{this.options=$H(test);this._test=function(){return true};}
|
279 |
+
this.error=error||'Validation failed.';this.className=className;},test:function(v,elm){return(this._test(v,elm)&&this.options.all(function(p){return Validator.methods[p.key]?Validator.methods[p.key](v,elm,p.value):true;}));}}
|
280 |
+
Validator.methods={pattern:function(v,elm,opt){return Validation.get('IsEmpty').test(v)||opt.test(v)},minLength:function(v,elm,opt){return v.length>=opt},maxLength:function(v,elm,opt){return v.length<=opt},min:function(v,elm,opt){return v>=parseFloat(opt)},max:function(v,elm,opt){return v<=parseFloat(opt)},notOneOf:function(v,elm,opt){return $A(opt).all(function(value){return v!=value;})},oneOf:function(v,elm,opt){return $A(opt).any(function(value){return v==value;})},is:function(v,elm,opt){return v==opt},isNot:function(v,elm,opt){return v!=opt},equalToField:function(v,elm,opt){return v==$F(opt)},notEqualToField:function(v,elm,opt){return v!=$F(opt)},include:function(v,elm,opt){return $A(opt).all(function(value){return Validation.get(value).test(v,elm);})}}
|
281 |
+
var Validation=Class.create();Validation.defaultOptions={onSubmit:true,stopOnFirst:false,immediate:false,focusOnError:true,useTitles:false,addClassNameToContainer:false,containerClassName:'.input-box',onFormValidate:function(result,form){},onElementValidate:function(result,elm){}};Validation.prototype={initialize:function(form,options){this.form=$(form);if(!this.form){return;}
|
282 |
+
this.options=Object.extend({onSubmit:Validation.defaultOptions.onSubmit,stopOnFirst:Validation.defaultOptions.stopOnFirst,immediate:Validation.defaultOptions.immediate,focusOnError:Validation.defaultOptions.focusOnError,useTitles:Validation.defaultOptions.useTitles,onFormValidate:Validation.defaultOptions.onFormValidate,onElementValidate:Validation.defaultOptions.onElementValidate},options||{});if(this.options.onSubmit)Event.observe(this.form,'submit',this.onSubmit.bind(this),false);if(this.options.immediate){Form.getElements(this.form).each(function(input){if(input.tagName.toLowerCase()=='select'){Event.observe(input,'blur',this.onChange.bindAsEventListener(this));}
|
283 |
+
if(input.type.toLowerCase()=='radio'||input.type.toLowerCase()=='checkbox'){Event.observe(input,'click',this.onChange.bindAsEventListener(this));}else{Event.observe(input,'change',this.onChange.bindAsEventListener(this));}},this);}},onChange:function(ev){Validation.isOnChange=true;Validation.validate(Event.element(ev),{useTitle:this.options.useTitles,onElementValidate:this.options.onElementValidate});Validation.isOnChange=false;},onSubmit:function(ev){if(!this.validate())Event.stop(ev);},validate:function(){var result=false;var useTitles=this.options.useTitles;var callback=this.options.onElementValidate;try{if(this.options.stopOnFirst){result=Form.getElements(this.form).all(function(elm){if(elm.hasClassName('local-validation')&&!this.isElementInForm(elm,this.form)){return true;}
|
284 |
+
return Validation.validate(elm,{useTitle:useTitles,onElementValidate:callback});},this);}else{result=Form.getElements(this.form).collect(function(elm){if(elm.hasClassName('local-validation')&&!this.isElementInForm(elm,this.form)){return true;}
|
285 |
+
return Validation.validate(elm,{useTitle:useTitles,onElementValidate:callback});},this).all();}}catch(e){}
|
286 |
+
if(!result&&this.options.focusOnError){try{Form.getElements(this.form).findAll(function(elm){return $(elm).hasClassName('validation-failed')}).first().focus()}
|
287 |
+
catch(e){}}
|
288 |
+
this.options.onFormValidate(result,this.form);return result;},reset:function(){Form.getElements(this.form).each(Validation.reset);},isElementInForm:function(elm,form){var domForm=elm.up('form');if(domForm==form){return true;}
|
289 |
+
return false;}}
|
290 |
+
Object.extend(Validation,{validate:function(elm,options){options=Object.extend({useTitle:false,onElementValidate:function(result,elm){}},options||{});elm=$(elm);var cn=$w(elm.className);return result=cn.all(function(value){var test=Validation.test(value,elm,options.useTitle);options.onElementValidate(test,elm);return test;});},insertAdvice:function(elm,advice){var container=$(elm).up('.field-row');if(container){Element.insert(container,{after:advice});}else if(elm.up('td.value')){elm.up('td.value').insert({bottom:advice});}else if(elm.advaiceContainer&&$(elm.advaiceContainer)){$(elm.advaiceContainer).update(advice);}
|
291 |
+
else{switch(elm.type.toLowerCase()){case'checkbox':case'radio':var p=elm.parentNode;if(p){Element.insert(p,{'bottom':advice});}else{Element.insert(elm,{'after':advice});}
|
292 |
+
break;default:Element.insert(elm,{'after':advice});}}},showAdvice:function(elm,advice,adviceName){if(!elm.advices){elm.advices=new Hash();}
|
293 |
+
else{elm.advices.each(function(pair){this.hideAdvice(elm,pair.value);}.bind(this));}
|
294 |
+
elm.advices.set(adviceName,advice);if(typeof Effect=='undefined'){advice.style.display='block';}else{if(!advice._adviceAbsolutize){new Effect.Appear(advice,{duration:1});}else{Position.absolutize(advice);advice.show();advice.setStyle({'top':advice._adviceTop,'left':advice._adviceLeft,'width':advice._adviceWidth,'z-index':1000});advice.addClassName('advice-absolute');}}},hideAdvice:function(elm,advice){if(advice!=null)advice.hide();},updateCallback:function(elm,status){if(typeof elm.callbackFunction!='undefined'){eval(elm.callbackFunction+'(\''+elm.id+'\',\''+status+'\')');}},ajaxError:function(elm,errorMsg){var name='validate-ajax';var advice=Validation.getAdvice(name,elm);if(advice==null){advice=this.createAdvice(name,elm,false,errorMsg);}
|
295 |
+
this.showAdvice(elm,advice,'validate-ajax');this.updateCallback(elm,'failed');elm.addClassName('validation-failed');elm.addClassName('validate-ajax');if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=''){var container=elm.up(Validation.defaultOptions.containerClassName);if(container&&this.allowContainerClassName(elm)){container.removeClassName('validation-passed');container.addClassName('validation-error');}}},allowContainerClassName:function(elm){if(elm.type=='radio'||elm.type=='checkbox'){return elm.hasClassName('change-container-classname');}
|
296 |
+
return true;},test:function(name,elm,useTitle){var v=Validation.get(name);var prop='__advice'+name.camelize();try{if(Validation.isVisible(elm)&&!v.test($F(elm),elm)){var advice=Validation.getAdvice(name,elm);if(advice==null){advice=this.createAdvice(name,elm,useTitle);}
|
297 |
+
this.showAdvice(elm,advice,name);this.updateCallback(elm,'failed');elm[prop]=1;if(!elm.advaiceContainer){elm.removeClassName('validation-passed');elm.addClassName('validation-failed');}
|
298 |
+
if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=''){var container=elm.up(Validation.defaultOptions.containerClassName);if(container&&this.allowContainerClassName(elm)){container.removeClassName('validation-passed');container.addClassName('validation-error');}}
|
299 |
+
return false;}else{var advice=Validation.getAdvice(name,elm);this.hideAdvice(elm,advice);this.updateCallback(elm,'passed');elm[prop]='';elm.removeClassName('validation-failed');elm.addClassName('validation-passed');if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=''){var container=elm.up(Validation.defaultOptions.containerClassName);if(container&&!container.down('.validation-failed')&&this.allowContainerClassName(elm)){if(!Validation.get('IsEmpty').test(elm.value)||!this.isVisible(elm)){container.addClassName('validation-passed');}else{container.removeClassName('validation-passed');}
|
300 |
+
container.removeClassName('validation-error');}}
|
301 |
+
return true;}}catch(e){throw(e)}},isVisible:function(elm){while(elm.tagName!='BODY'){if(!$(elm).visible())return false;elm=elm.parentNode;}
|
302 |
+
return true;},getAdvice:function(name,elm){return $('advice-'+name+'-'+Validation.getElmID(elm))||$('advice-'+Validation.getElmID(elm));},createAdvice:function(name,elm,useTitle,customError){var v=Validation.get(name);var errorMsg=useTitle?((elm&&elm.title)?elm.title:v.error):v.error;if(customError){errorMsg=customError;}
|
303 |
+
try{if(Translator){errorMsg=Translator.translate(errorMsg);}}
|
304 |
+
catch(e){}
|
305 |
+
advice='<div class="validation-advice" id="advice-'+name+'-'+Validation.getElmID(elm)+'" style="display:none">'+errorMsg+'</div>'
|
306 |
+
Validation.insertAdvice(elm,advice);advice=Validation.getAdvice(name,elm);if($(elm).hasClassName('absolute-advice')){var dimensions=$(elm).getDimensions();var originalPosition=Position.cumulativeOffset(elm);advice._adviceTop=(originalPosition[1]+dimensions.height)+'px';advice._adviceLeft=(originalPosition[0])+'px';advice._adviceWidth=(dimensions.width)+'px';advice._adviceAbsolutize=true;}
|
307 |
+
return advice;},getElmID:function(elm){return elm.id?elm.id:elm.name;},reset:function(elm){elm=$(elm);var cn=$w(elm.className);cn.each(function(value){var prop='__advice'+value.camelize();if(elm[prop]){var advice=Validation.getAdvice(value,elm);if(advice){advice.hide();}
|
308 |
+
elm[prop]='';}
|
309 |
+
elm.removeClassName('validation-failed');elm.removeClassName('validation-passed');if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=''){var container=elm.up(Validation.defaultOptions.containerClassName);if(container){container.removeClassName('validation-passed');container.removeClassName('validation-error');}}});},add:function(className,error,test,options){var nv={};nv[className]=new Validator(className,error,test,options);Object.extend(Validation.methods,nv);},addAllThese:function(validators){var nv={};$A(validators).each(function(value){nv[value[0]]=new Validator(value[0],value[1],value[2],(value.length>3?value[3]:{}));});Object.extend(Validation.methods,nv);},get:function(name){return Validation.methods[name]?Validation.methods[name]:Validation.methods['_LikeNoIDIEverSaw_'];},methods:{'_LikeNoIDIEverSaw_':new Validator('_LikeNoIDIEverSaw_','',{})}});Validation.add('IsEmpty','',function(v){return(v==''||(v==null)||(v.length==0)||/^\s+$/.test(v));});Validation.addAllThese([['validate-select','Please select an option.',function(v){return((v!="none")&&(v!=null)&&(v.length!=0));}],['required-entry','This is a required field.',function(v){return!Validation.get('IsEmpty').test(v);}],['validate-number','Please enter a valid number in this field.',function(v){return Validation.get('IsEmpty').test(v)||(!isNaN(parseNumber(v))&&!/^\s+$/.test(parseNumber(v)));}],['validate-digits','Please use numbers only in this field. please avoid spaces or other characters such as dots or commas.',function(v){return Validation.get('IsEmpty').test(v)||!/[^\d]/.test(v);}],['validate-alpha','Please use letters only (a-z or A-Z) in this field.',function(v){return Validation.get('IsEmpty').test(v)||/^[a-zA-Z]+$/.test(v)}],['validate-code','Please use only letters (a-z), numbers (0-9) or underscore(_) in this field, first character should be a letter.',function(v){return Validation.get('IsEmpty').test(v)||/^[a-z]+[a-z0-9_]+$/.test(v)}],['validate-alphanum','Please use only letters (a-z or A-Z) or numbers (0-9) only in this field. No spaces or other characters are allowed.',function(v){return Validation.get('IsEmpty').test(v)||/^[a-zA-Z0-9]+$/.test(v)
|
310 |
+
/*/\W/.test(v)*/
|
311 |
+
}],['validate-street','Please use only letters (a-z or A-Z) or numbers (0-9) or spaces and # only in this field.',function(v){return Validation.get('IsEmpty').test(v)||/^[ \w]{3,}([A-Za-z]\.)?([ \w]*\#\d+)?(\r\n| )[ \w]{3,}/.test(v)}],['validate-phoneStrict','Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.',function(v){return Validation.get('IsEmpty').test(v)||/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/.test(v);}],['validate-phoneLax','Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.',function(v){return Validation.get('IsEmpty').test(v)||/^((\d[-. ]?)?((\(\d{3}\))|\d{3}))?[-. ]?\d{3}[-. ]?\d{4}$/.test(v);}],['validate-fax','Please enter a valid fax number. For example (123) 456-7890 or 123-456-7890.',function(v){return Validation.get('IsEmpty').test(v)||/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/.test(v);}],['validate-date','Please enter a valid date.',function(v){var test=new Date(v);return Validation.get('IsEmpty').test(v)||!isNaN(test);}],['validate-email','Please enter a valid email address. For example johndoe@domain.com.',function(v){return Validation.get('IsEmpty').test(v)||/^[a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]+(\.[a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})/i.test(v)}],['validate-emailSender','Please use only visible characters and spaces.',function(v){return Validation.get('IsEmpty').test(v)||/^[\S ]+$/.test(v)}],['validate-password','Please enter 6 or more characters. Leading or trailing spaces will be ignored.',function(v){var pass=v.strip();return!(pass.length>0&&pass.length<6);}],['validate-admin-password','Please enter 7 or more characters. Password should contain both numeric and alphabetic characters.',function(v){var pass=v.strip();if(0==pass.length){return true;}
|
312 |
+
if(!(/[a-z]/i.test(v))||!(/[0-9]/.test(v))){return false;}
|
313 |
+
return!(pass.length<7);}],['validate-cpassword','Please make sure your passwords match.',function(v){var conf=$('confirmation')?$('confirmation'):$$('.validate-cpassword')[0];var pass=false;if($('password')){pass=$('password');}
|
314 |
+
var passwordElements=$$('.validate-password');for(var i=0;i<passwordElements.size();i++){var passwordElement=passwordElements[i];if(passwordElement.up('form').id==conf.up('form').id){pass=passwordElement;}}
|
315 |
+
if($$('.validate-admin-password').size()){pass=$$('.validate-admin-password')[0];}
|
316 |
+
return(pass.value==conf.value);}],['validate-url','Please enter a valid URL. http:// is required',function(v){return Validation.get('IsEmpty').test(v)||/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(v)}],['validate-clean-url','Please enter a valid URL. For example http://www.example.com or www.example.com',function(v){return Validation.get('IsEmpty').test(v)||/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i.test(v)||/^(www)((\.[A-Z0-9][A-Z0-9_-]*)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i.test(v)}],['validate-identifier','Please enter a valid URL Key. For example "example-page", "example-page.html" or "anotherlevel/example-page"',function(v){return Validation.get('IsEmpty').test(v)||/^[A-Z0-9][A-Z0-9_\/-]+(\.[A-Z0-9_-]+)*$/i.test(v)}],['validate-xml-identifier','Please enter a valid XML-identifier. For example something_1, block5, id-4',function(v){return Validation.get('IsEmpty').test(v)||/^[A-Z][A-Z0-9_\/-]*$/i.test(v)}],['validate-ssn','Please enter a valid social security number. For example 123-45-6789.',function(v){return Validation.get('IsEmpty').test(v)||/^\d{3}-?\d{2}-?\d{4}$/.test(v);}],['validate-zip','Please enter a valid zip code. For example 90602 or 90602-1234.',function(v){return Validation.get('IsEmpty').test(v)||/(^\d{5}$)|(^\d{5}-\d{4}$)/.test(v);}],['validate-zip-international','Please enter a valid zip code.',function(v){return true;}],['validate-date-au','Please use this date format: dd/mm/yyyy. For example 17/03/2006 for the 17th of March, 2006.',function(v){if(Validation.get('IsEmpty').test(v))return true;var regex=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!regex.test(v))return false;var d=new Date(v.replace(regex,'$2/$1/$3'));return(parseInt(RegExp.$2,10)==(1+d.getMonth()))&&(parseInt(RegExp.$1,10)==d.getDate())&&(parseInt(RegExp.$3,10)==d.getFullYear());}],['validate-currency-dollar','Please enter a valid $ amount. For example $100.00.',function(v){return Validation.get('IsEmpty').test(v)||/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(v)}],['validate-one-required','Please select one of the above options.',function(v,elm){var p=elm.parentNode;var options=p.getElementsByTagName('INPUT');return $A(options).any(function(elm){return $F(elm);});}],['validate-one-required-by-name','Please select one of the options.',function(v,elm){var inputs=$$('input[name="'+elm.name.replace(/([\\"])/g,'\\$1')+'"]');var error=1;for(var i=0;i<inputs.length;i++){if((inputs[i].type=='checkbox'||inputs[i].type=='radio')&&inputs[i].checked==true){error=0;}
|
317 |
+
if(Validation.isOnChange&&(inputs[i].type=='checkbox'||inputs[i].type=='radio')){Validation.reset(inputs[i]);}}
|
318 |
+
if(error==0){return true;}else{return false;}}],['validate-not-negative-number','Please enter a valid number in this field.',function(v){v=parseNumber(v);return(!isNaN(v)&&v>=0);}],['validate-state','Please select State/Province.',function(v){return(v!=0||v=='');}],['validate-new-password','Please enter 6 or more characters. Leading or trailing spaces will be ignored.',function(v){if(!Validation.get('validate-password').test(v))return false;if(Validation.get('IsEmpty').test(v)&&v!='')return false;return true;}],['validate-greater-than-zero','Please enter a number greater than 0 in this field.',function(v){if(v.length)
|
319 |
+
return parseFloat(v)>0;else
|
320 |
+
return true;}],['validate-zero-or-greater','Please enter a number 0 or greater in this field.',function(v){if(v.length)
|
321 |
+
return parseFloat(v)>=0;else
|
322 |
+
return true;}],['validate-cc-number','Please enter a valid credit card number.',function(v,elm){var ccTypeContainer=$(elm.id.substr(0,elm.id.indexOf('_cc_number'))+'_cc_type');if(ccTypeContainer&&typeof Validation.creditCartTypes.get(ccTypeContainer.value)!='undefined'&&Validation.creditCartTypes.get(ccTypeContainer.value)[2]==false){if(!Validation.get('IsEmpty').test(v)&&Validation.get('validate-digits').test(v)){return true;}else{return false;}}
|
323 |
+
return validateCreditCard(v);}],['validate-cc-type','Credit card number doesn\'t match credit card type',function(v,elm){elm.value=removeDelimiters(elm.value);v=removeDelimiters(v);var ccTypeContainer=$(elm.id.substr(0,elm.id.indexOf('_cc_number'))+'_cc_type');if(!ccTypeContainer){return true;}
|
324 |
+
var ccType=ccTypeContainer.value;if(typeof Validation.creditCartTypes.get(ccType)=='undefined'){return false;}
|
325 |
+
if(Validation.creditCartTypes.get(ccType)[0]==false){return true;}
|
326 |
+
var ccMatchedType='';Validation.creditCartTypes.each(function(pair){if(pair.value[0]&&v.match(pair.value[0])){ccMatchedType=pair.key;throw $break;}});if(ccMatchedType!=ccType){return false;}
|
327 |
+
if(ccTypeContainer.hasClassName('validation-failed')&&Validation.isOnChange){Validation.validate(ccTypeContainer);}
|
328 |
+
return true;}],['validate-cc-type-select','Card type doesn\'t match credit card number',function(v,elm){var ccNumberContainer=$(elm.id.substr(0,elm.id.indexOf('_cc_type'))+'_cc_number');if(Validation.isOnChange&&Validation.get('IsEmpty').test(ccNumberContainer.value)){return true;}
|
329 |
+
if(Validation.get('validate-cc-type').test(ccNumberContainer.value,ccNumberContainer)){Validation.validate(ccNumberContainer);}
|
330 |
+
return Validation.get('validate-cc-type').test(ccNumberContainer.value,ccNumberContainer);}],['validate-cc-exp','Incorrect credit card expiration date',function(v,elm){var ccExpMonth=v;var ccExpYear=$(elm.id.substr(0,elm.id.indexOf('_expiration'))+'_expiration_yr').value;var currentTime=new Date();var currentMonth=currentTime.getMonth()+1;var currentYear=currentTime.getFullYear();if(ccExpMonth<currentMonth&&ccExpYear==currentYear){return false;}
|
331 |
+
return true;}],['validate-cc-cvn','Please enter a valid credit card verification number.',function(v,elm){var ccTypeContainer=$(elm.id.substr(0,elm.id.indexOf('_cc_cid'))+'_cc_type');if(!ccTypeContainer){return true;}
|
332 |
+
var ccType=ccTypeContainer.value;if(typeof Validation.creditCartTypes.get(ccType)=='undefined'){return false;}
|
333 |
+
var re=Validation.creditCartTypes.get(ccType)[1];if(v.match(re)){return true;}
|
334 |
+
return false;}],['validate-ajax','',function(v,elm){return true;}],['validate-data','Please use only letters (a-z or A-Z), numbers (0-9) or underscore(_) in this field, first character should be a letter.',function(v){if(v!=''&&v){return /^[A-Za-z]+[A-Za-z0-9_]+$/.test(v);}
|
335 |
+
return true;}],['validate-css-length','Please input a valid CSS-length. For example 100px or 77pt or 20em or .5ex or 50%',function(v){if(v!=''&&v){return /^[0-9\.]+(px|pt|em|ex|%)?$/.test(v)&&(!(/\..*\./.test(v)))&&!(/\.$/.test(v));}
|
336 |
+
return true;}],['validate-length','Maximum length exceeded.',function(v,elm){var re=new RegExp(/^maximum-length-[0-9]+$/);var result=true;$w(elm.className).each(function(name,index){if(name.match(re)&&result){var length=name.split('-')[2];result=(v.length<=length);}});return result;}],['validate-percents','Please enter a number lower than 100',{max:100}]]);function validateCreditCard(s){var v="0123456789";var w="";for(i=0;i<s.length;i++){x=s.charAt(i);if(v.indexOf(x,0)!=-1)
|
337 |
+
w+=x;}
|
338 |
+
j=w.length/2;k=Math.floor(j);m=Math.ceil(j)-k;c=0;for(i=0;i<k;i++){a=w.charAt(i*2+m)*2;c+=a>9?Math.floor(a/10+a%10):a;}
|
339 |
+
for(i=0;i<k+m;i++)c+=w.charAt(i*2+1-m)*1;return(c%10==0);}
|
340 |
+
function removeDelimiters(v){v=v.replace(/\s/g,'');v=v.replace(/\-/g,'');return v;}
|
341 |
+
function parseNumber(v)
|
342 |
+
{if(typeof v!='string'){return parseFloat(v);}
|
343 |
+
var isDot=v.indexOf('.');var isComa=v.indexOf(',');if(isDot!=-1&&isComa!=-1){if(isComa>isDot){v=v.replace('.','').replace(',','.');}
|
344 |
+
else{v=v.replace(',','');}}
|
345 |
+
else if(isComa!=-1){v=v.replace(',','.');}
|
346 |
+
return parseFloat(v);}
|
347 |
+
Validation.creditCartTypes=$H({'VI':[new RegExp('^4[0-9]{12}([0-9]{3})?$'),new RegExp('^[0-9]{3}$'),true],'MC':[new RegExp('^5[1-5][0-9]{14}$'),new RegExp('^[0-9]{3}$'),true],'AE':[new RegExp('^3[47][0-9]{13}$'),new RegExp('^[0-9]{4}$'),true],'DI':[new RegExp('^6011[0-9]{12}$'),new RegExp('^[0-9]{3}$'),true],'SS':[new RegExp('^((6759[0-9]{12})|(49[013][1356][0-9]{13})|(633[34][0-9]{12})|(633110[0-9]{10})|(564182[0-9]{10}))([0-9]{2,3})?$'),new RegExp('^([0-9]{3}|[0-9]{4})?$'),true],'OT':[false,new RegExp('^([0-9]{3}|[0-9]{4})?$'),false]});;var Builder={NODEMAP:{AREA:'map',CAPTION:'table',COL:'table',COLGROUP:'table',LEGEND:'fieldset',OPTGROUP:'select',OPTION:'select',PARAM:'object',TBODY:'table',TD:'table',TFOOT:'table',TH:'table',THEAD:'table',TR:'table'},node:function(elementName){elementName=elementName.toUpperCase();var parentTag=this.NODEMAP[elementName]||'div';var parentElement=document.createElement(parentTag);try{parentElement.innerHTML="<"+elementName+"></"+elementName+">";}catch(e){}
|
348 |
+
var element=parentElement.firstChild||null;if(element&&(element.tagName.toUpperCase()!=elementName))
|
349 |
+
element=element.getElementsByTagName(elementName)[0];if(!element)element=document.createElement(elementName);if(!element)return;if(arguments[1])
|
350 |
+
if(this._isStringOrNumber(arguments[1])||(arguments[1]instanceof Array)||arguments[1].tagName){this._children(element,arguments[1]);}else{var attrs=this._attributes(arguments[1]);if(attrs.length){try{parentElement.innerHTML="<"+elementName+" "+
|
351 |
+
attrs+"></"+elementName+">";}catch(e){}
|
352 |
+
element=parentElement.firstChild||null;if(!element){element=document.createElement(elementName);for(attr in arguments[1])
|
353 |
+
element[attr=='class'?'className':attr]=arguments[1][attr];}
|
354 |
+
if(element.tagName.toUpperCase()!=elementName)
|
355 |
+
element=parentElement.getElementsByTagName(elementName)[0];}}
|
356 |
+
if(arguments[2])
|
357 |
+
this._children(element,arguments[2]);return $(element);},_text:function(text){return document.createTextNode(text);},ATTR_MAP:{'className':'class','htmlFor':'for'},_attributes:function(attributes){var attrs=[];for(attribute in attributes)
|
358 |
+
attrs.push((attribute in this.ATTR_MAP?this.ATTR_MAP[attribute]:attribute)+'="'+attributes[attribute].toString().escapeHTML().gsub(/"/,'"')+'"');return attrs.join(" ");},_children:function(element,children){if(children.tagName){element.appendChild(children);return;}
|
359 |
+
if(typeof children=='object'){children.flatten().each(function(e){if(typeof e=='object')
|
360 |
+
element.appendChild(e);else
|
361 |
+
if(Builder._isStringOrNumber(e))
|
362 |
+
element.appendChild(Builder._text(e));});}else
|
363 |
+
if(Builder._isStringOrNumber(children))
|
364 |
+
element.appendChild(Builder._text(children));},_isStringOrNumber:function(param){return(typeof param=='string'||typeof param=='number');},build:function(html){var element=this.node('div');$(element).update(html.strip());return element.down();},dump:function(scope){if(typeof scope!='object'&&typeof scope!='function')scope=window;var tags=("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY "+"BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET "+"FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+"KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+"PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+"TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);tags.each(function(tag){scope[tag]=function(){return Builder.node.apply(Builder,[tag].concat($A(arguments)));};});}};;String.prototype.parseColor=function(){var color='#';if(this.slice(0,4)=='rgb('){var cols=this.slice(4,this.length-1).split(',');var i=0;do{color+=parseInt(cols[i]).toColorPart()}while(++i<3);}else{if(this.slice(0,1)=='#'){if(this.length==4)for(var i=1;i<4;i++)color+=(this.charAt(i)+this.charAt(i)).toLowerCase();if(this.length==7)color=this.toLowerCase();}}
|
365 |
+
return(color.length==7?color:(arguments[0]||this));};Element.collectTextNodes=function(element){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:(node.hasChildNodes()?Element.collectTextNodes(node):''));}).flatten().join('');};Element.collectTextNodesIgnoreClass=function(element,className){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:((node.hasChildNodes()&&!Element.hasClassName(node,className))?Element.collectTextNodesIgnoreClass(node,className):''));}).flatten().join('');};Element.setContentZoom=function(element,percent){element=$(element);element.setStyle({fontSize:(percent/100)+'em'});if(Prototype.Browser.WebKit)window.scrollBy(0,0);return element;};Element.getInlineOpacity=function(element){return $(element).style.opacity||'';};Element.forceRerendering=function(element){try{element=$(element);var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){}};var Effect={_elementDoesNotExistError:{name:'ElementDoesNotExistError',message:'The specified DOM element does not exist, but is required for this effect to operate'},Transitions:{linear:Prototype.K,sinoidal:function(pos){return(-Math.cos(pos*Math.PI)/2)+.5;},reverse:function(pos){return 1-pos;},flicker:function(pos){var pos=((-Math.cos(pos*Math.PI)/4)+.75)+Math.random()/4;return pos>1?1:pos;},wobble:function(pos){return(-Math.cos(pos*Math.PI*(9*pos))/2)+.5;},pulse:function(pos,pulses){return(-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2)+.5;},spring:function(pos){return 1-(Math.cos(pos*4.5*Math.PI)*Math.exp(-pos*6));},none:function(pos){return 0;},full:function(pos){return 1;}},DefaultOptions:{duration:1.0,fps:100,sync:false,from:0.0,to:1.0,delay:0.0,queue:'parallel'},tagifyText:function(element){var tagifyStyle='position:relative';if(Prototype.Browser.IE)tagifyStyle+=';zoom:1';element=$(element);$A(element.childNodes).each(function(child){if(child.nodeType==3){child.nodeValue.toArray().each(function(character){element.insertBefore(new Element('span',{style:tagifyStyle}).update(character==' '?String.fromCharCode(160):character),child);});Element.remove(child);}});},multiple:function(element,effect){var elements;if(((typeof element=='object')||Object.isFunction(element))&&(element.length))
|
366 |
+
elements=element;else
|
367 |
+
elements=$(element).childNodes;var options=Object.extend({speed:0.1,delay:0.0},arguments[2]||{});var masterDelay=options.delay;$A(elements).each(function(element,index){new effect(element,Object.extend(options,{delay:index*options.speed+masterDelay}));});},PAIRS:{'slide':['SlideDown','SlideUp'],'blind':['BlindDown','BlindUp'],'appear':['Appear','Fade']},toggle:function(element,effect){element=$(element);effect=(effect||'appear').toLowerCase();var options=Object.extend({queue:{position:'end',scope:(element.id||'global'),limit:1}},arguments[2]||{});Effect[element.visible()?Effect.PAIRS[effect][1]:Effect.PAIRS[effect][0]](element,options);}};Effect.DefaultOptions.transition=Effect.Transitions.sinoidal;Effect.ScopedQueue=Class.create(Enumerable,{initialize:function(){this.effects=[];this.interval=null;},_each:function(iterator){this.effects._each(iterator);},add:function(effect){var timestamp=new Date().getTime();var position=Object.isString(effect.options.queue)?effect.options.queue:effect.options.queue.position;switch(position){case'front':this.effects.findAll(function(e){return e.state=='idle'}).each(function(e){e.startOn+=effect.finishOn;e.finishOn+=effect.finishOn;});break;case'with-last':timestamp=this.effects.pluck('startOn').max()||timestamp;break;case'end':timestamp=this.effects.pluck('finishOn').max()||timestamp;break;}
|
368 |
+
effect.startOn+=timestamp;effect.finishOn+=timestamp;if(!effect.options.queue.limit||(this.effects.length<effect.options.queue.limit))
|
369 |
+
this.effects.push(effect);if(!this.interval)
|
370 |
+
this.interval=setInterval(this.loop.bind(this),15);},remove:function(effect){this.effects=this.effects.reject(function(e){return e==effect});if(this.effects.length==0){clearInterval(this.interval);this.interval=null;}},loop:function(){var timePos=new Date().getTime();for(var i=0,len=this.effects.length;i<len;i++)
|
371 |
+
this.effects[i]&&this.effects[i].loop(timePos);}});Effect.Queues={instances:$H(),get:function(queueName){if(!Object.isString(queueName))return queueName;return this.instances.get(queueName)||this.instances.set(queueName,new Effect.ScopedQueue());}};Effect.Queue=Effect.Queues.get('global');Effect.Base=Class.create({position:null,start:function(options){function codeForEvent(options,eventName){return((options[eventName+'Internal']?'this.options.'+eventName+'Internal(this);':'')+
|
372 |
+
(options[eventName]?'this.options.'+eventName+'(this);':''));}
|
373 |
+
if(options&&options.transition===false)options.transition=Effect.Transitions.linear;this.options=Object.extend(Object.extend({},Effect.DefaultOptions),options||{});this.currentFrame=0;this.state='idle';this.startOn=this.options.delay*1000;this.finishOn=this.startOn+(this.options.duration*1000);this.fromToDelta=this.options.to-this.options.from;this.totalTime=this.finishOn-this.startOn;this.totalFrames=this.options.fps*this.options.duration;this.render=(function(){function dispatch(effect,eventName){if(effect.options[eventName+'Internal'])
|
374 |
+
effect.options[eventName+'Internal'](effect);if(effect.options[eventName])
|
375 |
+
effect.options[eventName](effect);}
|
376 |
+
return function(pos){if(this.state==="idle"){this.state="running";dispatch(this,'beforeSetup');if(this.setup)this.setup();dispatch(this,'afterSetup');}
|
377 |
+
if(this.state==="running"){pos=(this.options.transition(pos)*this.fromToDelta)+this.options.from;this.position=pos;dispatch(this,'beforeUpdate');if(this.update)this.update(pos);dispatch(this,'afterUpdate');}};})();this.event('beforeStart');if(!this.options.sync)
|
378 |
+
Effect.Queues.get(Object.isString(this.options.queue)?'global':this.options.queue.scope).add(this);},loop:function(timePos){if(timePos>=this.startOn){if(timePos>=this.finishOn){this.render(1.0);this.cancel();this.event('beforeFinish');if(this.finish)this.finish();this.event('afterFinish');return;}
|
379 |
+
var pos=(timePos-this.startOn)/this.totalTime,frame=(pos*this.totalFrames).round();if(frame>this.currentFrame){this.render(pos);this.currentFrame=frame;}}},cancel:function(){if(!this.options.sync)
|
380 |
+
Effect.Queues.get(Object.isString(this.options.queue)?'global':this.options.queue.scope).remove(this);this.state='finished';},event:function(eventName){if(this.options[eventName+'Internal'])this.options[eventName+'Internal'](this);if(this.options[eventName])this.options[eventName](this);},inspect:function(){var data=$H();for(property in this)
|
381 |
+
if(!Object.isFunction(this[property]))data.set(property,this[property]);return'#<Effect:'+data.inspect()+',options:'+$H(this.options).inspect()+'>';}});Effect.Parallel=Class.create(Effect.Base,{initialize:function(effects){this.effects=effects||[];this.start(arguments[1]);},update:function(position){this.effects.invoke('render',position);},finish:function(position){this.effects.each(function(effect){effect.render(1.0);effect.cancel();effect.event('beforeFinish');if(effect.finish)effect.finish(position);effect.event('afterFinish');});}});Effect.Tween=Class.create(Effect.Base,{initialize:function(object,from,to){object=Object.isString(object)?$(object):object;var args=$A(arguments),method=args.last(),options=args.length==5?args[3]:null;this.method=Object.isFunction(method)?method.bind(object):Object.isFunction(object[method])?object[method].bind(object):function(value){object[method]=value};this.start(Object.extend({from:from,to:to},options||{}));},update:function(position){this.method(position);}});Effect.Event=Class.create(Effect.Base,{initialize:function(){this.start(Object.extend({duration:0},arguments[0]||{}));},update:Prototype.emptyFunction});Effect.Opacity=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout))
|
382 |
+
this.element.setStyle({zoom:1});var options=Object.extend({from:this.element.getOpacity()||0.0,to:1.0},arguments[1]||{});this.start(options);},update:function(position){this.element.setOpacity(position);}});Effect.Move=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({x:0,y:0,mode:'relative'},arguments[1]||{});this.start(options);},setup:function(){this.element.makePositioned();this.originalLeft=parseFloat(this.element.getStyle('left')||'0');this.originalTop=parseFloat(this.element.getStyle('top')||'0');if(this.options.mode=='absolute'){this.options.x=this.options.x-this.originalLeft;this.options.y=this.options.y-this.originalTop;}},update:function(position){this.element.setStyle({left:(this.options.x*position+this.originalLeft).round()+'px',top:(this.options.y*position+this.originalTop).round()+'px'});}});Effect.MoveBy=function(element,toTop,toLeft){return new Effect.Move(element,Object.extend({x:toLeft,y:toTop},arguments[3]||{}));};Effect.Scale=Class.create(Effect.Base,{initialize:function(element,percent){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:'box',scaleFrom:100.0,scaleTo:percent},arguments[2]||{});this.start(options);},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle('position');this.originalStyle={};['top','left','width','height','fontSize'].each(function(k){this.originalStyle[k]=this.element.style[k];}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var fontSize=this.element.getStyle('font-size')||'100%';['em','px','%','pt'].each(function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType;}}.bind(this));this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;this.dims=null;if(this.options.scaleMode=='box')
|
383 |
+
this.dims=[this.element.offsetHeight,this.element.offsetWidth];if(/^content/.test(this.options.scaleMode))
|
384 |
+
this.dims=[this.element.scrollHeight,this.element.scrollWidth];if(!this.dims)
|
385 |
+
this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];},update:function(position){var currentScale=(this.options.scaleFrom/100.0)+(this.factor*position);if(this.options.scaleContent&&this.fontSize)
|
386 |
+
this.element.setStyle({fontSize:this.fontSize*currentScale+this.fontSizeType});this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale);},finish:function(position){if(this.restoreAfterFinish)this.element.setStyle(this.originalStyle);},setDimensions:function(height,width){var d={};if(this.options.scaleX)d.width=width.round()+'px';if(this.options.scaleY)d.height=height.round()+'px';if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;var leftd=(width-this.dims[1])/2;if(this.elementPositioning=='absolute'){if(this.options.scaleY)d.top=this.originalTop-topd+'px';if(this.options.scaleX)d.left=this.originalLeft-leftd+'px';}else{if(this.options.scaleY)d.top=-topd+'px';if(this.options.scaleX)d.left=-leftd+'px';}}
|
387 |
+
this.element.setStyle(d);}});Effect.Highlight=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({startcolor:'#ffff99'},arguments[1]||{});this.start(options);},setup:function(){if(this.element.getStyle('display')=='none'){this.cancel();return;}
|
388 |
+
this.oldStyle={};if(!this.options.keepBackgroundImage){this.oldStyle.backgroundImage=this.element.getStyle('background-image');this.element.setStyle({backgroundImage:'none'});}
|
389 |
+
if(!this.options.endcolor)
|
390 |
+
this.options.endcolor=this.element.getStyle('background-color').parseColor('#ffffff');if(!this.options.restorecolor)
|
391 |
+
this.options.restorecolor=this.element.getStyle('background-color');this._base=$R(0,2).map(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16)}.bind(this));this._delta=$R(0,2).map(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]}.bind(this));},update:function(position){this.element.setStyle({backgroundColor:$R(0,2).inject('#',function(m,v,i){return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart());}.bind(this))});},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}));}});Effect.ScrollTo=function(element){var options=arguments[1]||{},scrollOffsets=document.viewport.getScrollOffsets(),elementOffsets=$(element).cumulativeOffset();if(options.offset)elementOffsets[1]+=options.offset;return new Effect.Tween(null,scrollOffsets.top,elementOffsets[1],options,function(p){scrollTo(scrollOffsets.left,p.round());});};Effect.Fade=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();var options=Object.extend({from:element.getOpacity()||1.0,to:0.0,afterFinishInternal:function(effect){if(effect.options.to!=0)return;effect.element.hide().setStyle({opacity:oldOpacity});}},arguments[1]||{});return new Effect.Opacity(element,options);};Effect.Appear=function(element){element=$(element);var options=Object.extend({from:(element.getStyle('display')=='none'?0.0:element.getOpacity()||0.0),to:1.0,afterFinishInternal:function(effect){effect.element.forceRerendering();},beforeSetup:function(effect){effect.element.setOpacity(effect.options.from).show();}},arguments[1]||{});return new Effect.Opacity(element,options);};Effect.Puff=function(element){element=$(element);var oldStyle={opacity:element.getInlineOpacity(),position:element.getStyle('position'),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};return new Effect.Parallel([new Effect.Scale(element,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:1.0,beforeSetupInternal:function(effect){Position.absolutize(effect.effects[0].element);},afterFinishInternal:function(effect){effect.effects[0].element.hide().setStyle(oldStyle);}},arguments[1]||{}));};Effect.BlindUp=function(element){element=$(element);element.makeClipping();return new Effect.Scale(element,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(effect){effect.element.hide().undoClipping();}},arguments[1]||{}));};Effect.BlindDown=function(element){element=$(element);var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makeClipping().setStyle({height:'0px'}).show();},afterFinishInternal:function(effect){effect.element.undoClipping();}},arguments[1]||{}));};Effect.SwitchOff=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();return new Effect.Appear(element,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(effect){new Effect.Scale(effect.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({opacity:oldOpacity});}});}},arguments[1]||{}));};Effect.DropOut=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left'),opacity:element.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(element,{x:0,y:100,sync:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:0.5,beforeSetup:function(effect){effect.effects[0].element.makePositioned();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);}},arguments[1]||{}));};Effect.Shake=function(element){element=$(element);var options=Object.extend({distance:20,duration:0.5},arguments[1]||{});var distance=parseFloat(options.distance);var split=parseFloat(options.duration)/10.0;var oldStyle={top:element.getStyle('top'),left:element.getStyle('left')};return new Effect.Move(element,{x:distance,y:0,duration:split,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance,y:0,duration:split,afterFinishInternal:function(effect){effect.element.undoPositioned().setStyle(oldStyle);}});}});}});}});}});}});};Effect.SlideDown=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping().setStyle({height:'0px'}).show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));};Effect.SlideUp=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:'box',scaleFrom:100,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping().show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));};Effect.Squish=function(element){return new Effect.Scale(element,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping();}});};Effect.Grow=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var initialMoveX,initialMoveY;var moveX,moveY;switch(options.direction){case'top-left':initialMoveX=initialMoveY=moveX=moveY=0;break;case'top-right':initialMoveX=dims.width;initialMoveY=moveY=0;moveX=-dims.width;break;case'bottom-left':initialMoveX=moveX=0;initialMoveY=dims.height;moveY=-dims.height;break;case'bottom-right':initialMoveX=dims.width;initialMoveY=dims.height;moveX=-dims.width;moveY=-dims.height;break;case'center':initialMoveX=dims.width/2;initialMoveY=dims.height/2;moveX=-dims.width/2;moveY=-dims.height/2;break;}
|
392 |
+
return new Effect.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetup:function(effect){effect.element.hide().makeClipping().makePositioned();},afterFinishInternal:function(effect){new Effect.Parallel([new Effect.Opacity(effect.element,{sync:true,to:1.0,from:0.0,transition:options.opacityTransition}),new Effect.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new Effect.Scale(effect.element,100,{scaleMode:{originalHeight:dims.height,originalWidth:dims.width},sync:true,scaleFrom:window.opera?1:0,transition:options.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(effect){effect.effects[0].element.setStyle({height:'0px'}).show();},afterFinishInternal:function(effect){effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);}},options));}});};Effect.Shrink=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var moveX,moveY;switch(options.direction){case'top-left':moveX=moveY=0;break;case'top-right':moveX=dims.width;moveY=0;break;case'bottom-left':moveX=0;moveY=dims.height;break;case'bottom-right':moveX=dims.width;moveY=dims.height;break;case'center':moveX=dims.width/2;moveY=dims.height/2;break;}
|
393 |
+
return new Effect.Parallel([new Effect.Opacity(element,{sync:true,to:0.0,from:1.0,transition:options.opacityTransition}),new Effect.Scale(element,window.opera?1:0,{sync:true,transition:options.scaleTransition,restoreAfterFinish:true}),new Effect.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],Object.extend({beforeStartInternal:function(effect){effect.effects[0].element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle);}},options));};Effect.Pulsate=function(element){element=$(element);var options=arguments[1]||{},oldOpacity=element.getInlineOpacity(),transition=options.transition||Effect.Transitions.linear,reverser=function(pos){return 1-transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2)+.5);};return new Effect.Opacity(element,Object.extend(Object.extend({duration:2.0,from:0,afterFinishInternal:function(effect){effect.element.setStyle({opacity:oldOpacity});}},options),{transition:reverser}));};Effect.Fold=function(element){element=$(element);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};element.makeClipping();return new Effect.Scale(element,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(effect){new Effect.Scale(element,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(effect){effect.element.hide().undoClipping().setStyle(oldStyle);}});}},arguments[1]||{}));};Effect.Morph=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({style:{}},arguments[1]||{});if(!Object.isString(options.style))this.style=$H(options.style);else{if(options.style.include(':'))
|
394 |
+
this.style=options.style.parseStyle();else{this.element.addClassName(options.style);this.style=$H(this.element.getStyles());this.element.removeClassName(options.style);var css=this.element.getStyles();this.style=this.style.reject(function(style){return style.value==css[style.key];});options.afterFinishInternal=function(effect){effect.element.addClassName(effect.options.style);effect.transforms.each(function(transform){effect.element.style[transform.style]='';});};}}
|
395 |
+
this.start(options);},setup:function(){function parseColor(color){if(!color||['rgba(0, 0, 0, 0)','transparent'].include(color))color='#ffffff';color=color.parseColor();return $R(0,2).map(function(i){return parseInt(color.slice(i*2+1,i*2+3),16);});}
|
396 |
+
this.transforms=this.style.map(function(pair){var property=pair[0],value=pair[1],unit=null;if(value.parseColor('#zzzzzz')!='#zzzzzz'){value=value.parseColor();unit='color';}else if(property=='opacity'){value=parseFloat(value);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout))
|
397 |
+
this.element.setStyle({zoom:1});}else if(Element.CSS_LENGTH.test(value)){var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]);unit=(components.length==3)?components[2]:null;}
|
398 |
+
var originalValue=this.element.getStyle(property);return{style:property.camelize(),originalValue:unit=='color'?parseColor(originalValue):parseFloat(originalValue||0),targetValue:unit=='color'?parseColor(value):value,unit:unit};}.bind(this)).reject(function(transform){return((transform.originalValue==transform.targetValue)||(transform.unit!='color'&&(isNaN(transform.originalValue)||isNaN(transform.targetValue))));});},update:function(position){var style={},transform,i=this.transforms.length;while(i--)
|
399 |
+
style[(transform=this.transforms[i]).style]=transform.unit=='color'?'#'+
|
400 |
+
(Math.round(transform.originalValue[0]+
|
401 |
+
(transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart()+
|
402 |
+
(Math.round(transform.originalValue[1]+
|
403 |
+
(transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart()+
|
404 |
+
(Math.round(transform.originalValue[2]+
|
405 |
+
(transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart():(transform.originalValue+
|
406 |
+
(transform.targetValue-transform.originalValue)*position).toFixed(3)+
|
407 |
+
(transform.unit===null?'':transform.unit);this.element.setStyle(style,true);}});Effect.Transform=Class.create({initialize:function(tracks){this.tracks=[];this.options=arguments[1]||{};this.addTracks(tracks);},addTracks:function(tracks){tracks.each(function(track){track=$H(track);var data=track.values().first();this.tracks.push($H({ids:track.keys().first(),effect:Effect.Morph,options:{style:data}}));}.bind(this));return this;},play:function(){return new Effect.Parallel(this.tracks.map(function(track){var ids=track.get('ids'),effect=track.get('effect'),options=track.get('options');var elements=[$(ids)||$$(ids)].flatten();return elements.map(function(e){return new effect(e,Object.extend({sync:true},options))});}).flatten(),this.options);}});Element.CSS_PROPERTIES=$w('backgroundColor backgroundPosition borderBottomColor borderBottomStyle '+'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth '+'borderRightColor borderRightStyle borderRightWidth borderSpacing '+'borderTopColor borderTopStyle borderTopWidth bottom clip color '+'fontSize fontWeight height left letterSpacing lineHeight '+'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+'maxWidth minHeight minWidth opacity outlineColor outlineOffset '+'outlineWidth paddingBottom paddingLeft paddingRight paddingTop '+'right textIndent top width wordSpacing zIndex');Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;String.__parseStyleElement=document.createElement('div');String.prototype.parseStyle=function(){var style,styleRules=$H();if(Prototype.Browser.WebKit)
|
408 |
+
style=new Element('div',{style:this}).style;else{String.__parseStyleElement.innerHTML='<div style="'+this+'"></div>';style=String.__parseStyleElement.childNodes[0].style;}
|
409 |
+
Element.CSS_PROPERTIES.each(function(property){if(style[property])styleRules.set(property,style[property]);});if(Prototype.Browser.IE&&this.include('opacity'))
|
410 |
+
styleRules.set('opacity',this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);return styleRules;};if(document.defaultView&&document.defaultView.getComputedStyle){Element.getStyles=function(element){var css=document.defaultView.getComputedStyle($(element),null);return Element.CSS_PROPERTIES.inject({},function(styles,property){styles[property]=css[property];return styles;});};}else{Element.getStyles=function(element){element=$(element);var css=element.currentStyle,styles;styles=Element.CSS_PROPERTIES.inject({},function(results,property){results[property]=css[property];return results;});if(!styles.opacity)styles.opacity=element.getOpacity();return styles;};}
|
411 |
+
Effect.Methods={morph:function(element,style){element=$(element);new Effect.Morph(element,Object.extend({style:style},arguments[2]||{}));return element;},visualEffect:function(element,effect,options){element=$(element);var s=effect.dasherize().camelize(),klass=s.charAt(0).toUpperCase()+s.substring(1);new Effect[klass](element,options);return element;},highlight:function(element,options){element=$(element);new Effect.Highlight(element,options);return element;}};$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+'pulsate shake puff squish switchOff dropOut').each(function(effect){Effect.Methods[effect]=function(element,options){element=$(element);Effect[effect.charAt(0).toUpperCase()+effect.substring(1)](element,options);return element;};});$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each(function(f){Effect.Methods[f]=Element[f];});Element.addMethods(Effect.Methods);;if(Object.isUndefined(Effect))
|
412 |
+
throw("dragdrop.js requires including script.aculo.us' effects.js library");var Droppables={drops:[],remove:function(element){this.drops=this.drops.reject(function(d){return d.element==$(element)});},add:function(element){element=$(element);var options=Object.extend({greedy:true,hoverclass:null,tree:false},arguments[1]||{});if(options.containment){options._containers=[];var containment=options.containment;if(Object.isArray(containment)){containment.each(function(c){options._containers.push($(c))});}else{options._containers.push($(containment));}}
|
413 |
+
if(options.accept)options.accept=[options.accept].flatten();Element.makePositioned(element);options.element=element;this.drops.push(options);},findDeepestChild:function(drops){deepest=drops[0];for(i=1;i<drops.length;++i)
|
414 |
+
if(Element.isParent(drops[i].element,deepest.element))
|
415 |
+
deepest=drops[i];return deepest;},isContained:function(element,drop){var containmentNode;if(drop.tree){containmentNode=element.treeNode;}else{containmentNode=element.parentNode;}
|
416 |
+
return drop._containers.detect(function(c){return containmentNode==c});},isAffected:function(point,element,drop){return((drop.element!=element)&&((!drop._containers)||this.isContained(element,drop))&&((!drop.accept)||(Element.classNames(element).detect(function(v){return drop.accept.include(v)})))&&Position.within(drop.element,point[0],point[1]));},deactivate:function(drop){if(drop.hoverclass)
|
417 |
+
Element.removeClassName(drop.element,drop.hoverclass);this.last_active=null;},activate:function(drop){if(drop.hoverclass)
|
418 |
+
Element.addClassName(drop.element,drop.hoverclass);this.last_active=drop;},show:function(point,element){if(!this.drops.length)return;var drop,affected=[];this.drops.each(function(drop){if(Droppables.isAffected(point,element,drop))
|
419 |
+
affected.push(drop);});if(affected.length>0)
|
420 |
+
drop=Droppables.findDeepestChild(affected);if(this.last_active&&this.last_active!=drop)this.deactivate(this.last_active);if(drop){Position.within(drop.element,point[0],point[1]);if(drop.onHover)
|
421 |
+
drop.onHover(element,drop.element,Position.overlap(drop.overlap,drop.element));if(drop!=this.last_active)Droppables.activate(drop);}},fire:function(event,element){if(!this.last_active)return;Position.prepare();if(this.isAffected([Event.pointerX(event),Event.pointerY(event)],element,this.last_active))
|
422 |
+
if(this.last_active.onDrop){this.last_active.onDrop(element,this.last_active.element,event);return true;}},reset:function(){if(this.last_active)
|
423 |
+
this.deactivate(this.last_active);}};var Draggables={drags:[],observers:[],register:function(draggable){if(this.drags.length==0){this.eventMouseUp=this.endDrag.bindAsEventListener(this);this.eventMouseMove=this.updateDrag.bindAsEventListener(this);this.eventKeypress=this.keyPress.bindAsEventListener(this);Event.observe(document,"mouseup",this.eventMouseUp);Event.observe(draggable.element,"mousemove",this.eventMouseMove);Event.observe(document,"keypress",this.eventKeypress);}
|
424 |
+
this.drags.push(draggable);},unregister:function(draggable){this.drags=this.drags.reject(function(d){return d==draggable});if(this.drags.length==0){Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(draggable.element,"mousemove",this.eventMouseMove);Event.stopObserving(document,"keypress",this.eventKeypress);}},activate:function(draggable){if(draggable.options.delay){this._timeout=setTimeout(function(){Draggables._timeout=null;window.focus();Draggables.activeDraggable=draggable;}.bind(this),draggable.options.delay);}else{window.focus();this.activeDraggable=draggable;}},deactivate:function(){this.activeDraggable=null;},updateDrag:function(event){if(!this.activeDraggable)return;var pointer=[Event.pointerX(event),Event.pointerY(event)];if(this._lastPointer&&(this._lastPointer.inspect()==pointer.inspect()))return;this._lastPointer=pointer;this.activeDraggable.updateDrag(event,pointer);},endDrag:function(event){if(this._timeout){clearTimeout(this._timeout);this._timeout=null;}
|
425 |
+
if(!this.activeDraggable)return;this._lastPointer=null;this.activeDraggable.endDrag(event);this.activeDraggable=null;},keyPress:function(event){if(this.activeDraggable)
|
426 |
+
this.activeDraggable.keyPress(event);},addObserver:function(observer){this.observers.push(observer);this._cacheObserverCallbacks();},removeObserver:function(element){this.observers=this.observers.reject(function(o){return o.element==element});this._cacheObserverCallbacks();},notify:function(eventName,draggable,event){if(this[eventName+'Count']>0)
|
427 |
+
this.observers.each(function(o){if(o[eventName])o[eventName](eventName,draggable,event);});if(draggable.options[eventName])draggable.options[eventName](draggable,event);},_cacheObserverCallbacks:function(){['onStart','onEnd','onDrag'].each(function(eventName){Draggables[eventName+'Count']=Draggables.observers.select(function(o){return o[eventName];}).length;});}};var Draggable=Class.create({initialize:function(element){var defaults={handle:false,reverteffect:function(element,top_offset,left_offset){var dur=Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;new Effect.Move(element,{x:-left_offset,y:-top_offset,duration:dur,queue:{scope:'_draggable',position:'end'}});},endeffect:function(element){var toOpacity=Object.isNumber(element._opacity)?element._opacity:1.0;new Effect.Opacity(element,{duration:0.2,from:0.7,to:toOpacity,queue:{scope:'_draggable',position:'end'},afterFinish:function(){Draggable._dragging[element]=false}});},zindex:1000,revert:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,snap:false,delay:0};if(!arguments[1]||Object.isUndefined(arguments[1].endeffect))
|
428 |
+
Object.extend(defaults,{starteffect:function(element){element._opacity=Element.getOpacity(element);Draggable._dragging[element]=true;new Effect.Opacity(element,{duration:0.2,from:element._opacity,to:0.7});}});var options=Object.extend(defaults,arguments[1]||{});this.element=$(element);if(options.handle&&Object.isString(options.handle))
|
429 |
+
this.handle=this.element.down('.'+options.handle,0);if(!this.handle)this.handle=$(options.handle);if(!this.handle)this.handle=this.element;if(options.scroll&&!options.scroll.scrollTo&&!options.scroll.outerHTML){options.scroll=$(options.scroll);this._isScrollChild=Element.childOf(this.element,options.scroll);}
|
430 |
+
Element.makePositioned(this.element);this.options=options;this.dragging=false;this.eventMouseDown=this.initDrag.bindAsEventListener(this);Event.observe(this.handle,"mousedown",this.eventMouseDown);Draggables.register(this);},destroy:function(){Event.stopObserving(this.handle,"mousedown",this.eventMouseDown);Draggables.unregister(this);},currentDelta:function(){return([parseInt(Element.getStyle(this.element,'left')||'0'),parseInt(Element.getStyle(this.element,'top')||'0')]);},initDrag:function(event){if(!Object.isUndefined(Draggable._dragging[this.element])&&Draggable._dragging[this.element])return;if(Event.isLeftClick(event)){var src=Event.element(event);if((tag_name=src.tagName.toUpperCase())&&(tag_name=='INPUT'||tag_name=='SELECT'||tag_name=='OPTION'||tag_name=='BUTTON'||tag_name=='TEXTAREA'))return;var pointer=[Event.pointerX(event),Event.pointerY(event)];var pos=Position.cumulativeOffset(this.element);this.offset=[0,1].map(function(i){return(pointer[i]-pos[i])});Draggables.activate(this);Event.stop(event);}},startDrag:function(event){this.dragging=true;if(!this.delta)
|
431 |
+
this.delta=this.currentDelta();if(this.options.zindex){this.originalZ=parseInt(Element.getStyle(this.element,'z-index')||0);this.element.style.zIndex=this.options.zindex;}
|
432 |
+
if(this.options.ghosting){this._clone=this.element.cloneNode(true);this._originallyAbsolute=(this.element.getStyle('position')=='absolute');if(!this._originallyAbsolute)
|
433 |
+
Position.absolutize(this.element);this.element.parentNode.insertBefore(this._clone,this.element);}
|
434 |
+
if(this.options.scroll){if(this.options.scroll==window){var where=this._getWindowScroll(this.options.scroll);this.originalScrollLeft=where.left;this.originalScrollTop=where.top;}else{this.originalScrollLeft=this.options.scroll.scrollLeft;this.originalScrollTop=this.options.scroll.scrollTop;}}
|
435 |
+
Draggables.notify('onStart',this,event);if(this.options.starteffect)this.options.starteffect(this.element);},updateDrag:function(event,pointer){if(!this.dragging)this.startDrag(event);if(!this.options.quiet){Position.prepare();Droppables.show(pointer,this.element);}
|
436 |
+
Draggables.notify('onDrag',this,event);this.draw(pointer);if(this.options.change)this.options.change(this);if(this.options.scroll){this.stopScrolling();var p;if(this.options.scroll==window){with(this._getWindowScroll(this.options.scroll)){p=[left,top,left+width,top+height];}}else{p=Position.page(this.options.scroll);p[0]+=this.options.scroll.scrollLeft+Position.deltaX;p[1]+=this.options.scroll.scrollTop+Position.deltaY;p.push(p[0]+this.options.scroll.offsetWidth);p.push(p[1]+this.options.scroll.offsetHeight);}
|
437 |
+
var speed=[0,0];if(pointer[0]<(p[0]+this.options.scrollSensitivity))speed[0]=pointer[0]-(p[0]+this.options.scrollSensitivity);if(pointer[1]<(p[1]+this.options.scrollSensitivity))speed[1]=pointer[1]-(p[1]+this.options.scrollSensitivity);if(pointer[0]>(p[2]-this.options.scrollSensitivity))speed[0]=pointer[0]-(p[2]-this.options.scrollSensitivity);if(pointer[1]>(p[3]-this.options.scrollSensitivity))speed[1]=pointer[1]-(p[3]-this.options.scrollSensitivity);this.startScrolling(speed);}
|
438 |
+
if(Prototype.Browser.WebKit)window.scrollBy(0,0);Event.stop(event);},finishDrag:function(event,success){this.dragging=false;if(this.options.quiet){Position.prepare();var pointer=[Event.pointerX(event),Event.pointerY(event)];Droppables.show(pointer,this.element);}
|
439 |
+
if(this.options.ghosting){if(!this._originallyAbsolute)
|
440 |
+
Position.relativize(this.element);delete this._originallyAbsolute;Element.remove(this._clone);this._clone=null;}
|
441 |
+
var dropped=false;if(success){dropped=Droppables.fire(event,this.element);if(!dropped)dropped=false;}
|
442 |
+
if(dropped&&this.options.onDropped)this.options.onDropped(this.element);Draggables.notify('onEnd',this,event);var revert=this.options.revert;if(revert&&Object.isFunction(revert))revert=revert(this.element);var d=this.currentDelta();if(revert&&this.options.reverteffect){if(dropped==0||revert!='failure')
|
443 |
+
this.options.reverteffect(this.element,d[1]-this.delta[1],d[0]-this.delta[0]);}else{this.delta=d;}
|
444 |
+
if(this.options.zindex)
|
445 |
+
this.element.style.zIndex=this.originalZ;if(this.options.endeffect)
|
446 |
+
this.options.endeffect(this.element);Draggables.deactivate(this);Droppables.reset();},keyPress:function(event){if(event.keyCode!=Event.KEY_ESC)return;this.finishDrag(event,false);Event.stop(event);},endDrag:function(event){if(!this.dragging)return;this.stopScrolling();this.finishDrag(event,true);Event.stop(event);},draw:function(point){var pos=Position.cumulativeOffset(this.element);if(this.options.ghosting){var r=Position.realOffset(this.element);pos[0]+=r[0]-Position.deltaX;pos[1]+=r[1]-Position.deltaY;}
|
447 |
+
var d=this.currentDelta();pos[0]-=d[0];pos[1]-=d[1];if(this.options.scroll&&(this.options.scroll!=window&&this._isScrollChild)){pos[0]-=this.options.scroll.scrollLeft-this.originalScrollLeft;pos[1]-=this.options.scroll.scrollTop-this.originalScrollTop;}
|
448 |
+
var p=[0,1].map(function(i){return(point[i]-pos[i]-this.offset[i])}.bind(this));if(this.options.snap){if(Object.isFunction(this.options.snap)){p=this.options.snap(p[0],p[1],this);}else{if(Object.isArray(this.options.snap)){p=p.map(function(v,i){return(v/this.options.snap[i]).round()*this.options.snap[i]}.bind(this));}else{p=p.map(function(v){return(v/this.options.snap).round()*this.options.snap}.bind(this));}}}
|
449 |
+
var style=this.element.style;if((!this.options.constraint)||(this.options.constraint=='horizontal'))
|
450 |
+
style.left=p[0]+"px";if((!this.options.constraint)||(this.options.constraint=='vertical'))
|
451 |
+
style.top=p[1]+"px";if(style.visibility=="hidden")style.visibility="";},stopScrolling:function(){if(this.scrollInterval){clearInterval(this.scrollInterval);this.scrollInterval=null;Draggables._lastScrollPointer=null;}},startScrolling:function(speed){if(!(speed[0]||speed[1]))return;this.scrollSpeed=[speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];this.lastScrolled=new Date();this.scrollInterval=setInterval(this.scroll.bind(this),10);},scroll:function(){var current=new Date();var delta=current-this.lastScrolled;this.lastScrolled=current;if(this.options.scroll==window){with(this._getWindowScroll(this.options.scroll)){if(this.scrollSpeed[0]||this.scrollSpeed[1]){var d=delta/1000;this.options.scroll.scrollTo(left+d*this.scrollSpeed[0],top+d*this.scrollSpeed[1]);}}}else{this.options.scroll.scrollLeft+=this.scrollSpeed[0]*delta/1000;this.options.scroll.scrollTop+=this.scrollSpeed[1]*delta/1000;}
|
452 |
+
Position.prepare();Droppables.show(Draggables._lastPointer,this.element);Draggables.notify('onDrag',this);if(this._isScrollChild){Draggables._lastScrollPointer=Draggables._lastScrollPointer||$A(Draggables._lastPointer);Draggables._lastScrollPointer[0]+=this.scrollSpeed[0]*delta/1000;Draggables._lastScrollPointer[1]+=this.scrollSpeed[1]*delta/1000;if(Draggables._lastScrollPointer[0]<0)
|
453 |
+
Draggables._lastScrollPointer[0]=0;if(Draggables._lastScrollPointer[1]<0)
|
454 |
+
Draggables._lastScrollPointer[1]=0;this.draw(Draggables._lastScrollPointer);}
|
455 |
+
if(this.options.change)this.options.change(this);},_getWindowScroll:function(w){var T,L,W,H;with(w.document){if(w.document.documentElement&&documentElement.scrollTop){T=documentElement.scrollTop;L=documentElement.scrollLeft;}else if(w.document.body){T=body.scrollTop;L=body.scrollLeft;}
|
456 |
+
if(w.innerWidth){W=w.innerWidth;H=w.innerHeight;}else if(w.document.documentElement&&documentElement.clientWidth){W=documentElement.clientWidth;H=documentElement.clientHeight;}else{W=body.offsetWidth;H=body.offsetHeight;}}
|
457 |
+
return{top:T,left:L,width:W,height:H};}});Draggable._dragging={};var SortableObserver=Class.create({initialize:function(element,observer){this.element=$(element);this.observer=observer;this.lastValue=Sortable.serialize(this.element);},onStart:function(){this.lastValue=Sortable.serialize(this.element);},onEnd:function(){Sortable.unmark();if(this.lastValue!=Sortable.serialize(this.element))
|
458 |
+
this.observer(this.element)}});var Sortable={SERIALIZE_RULE:/^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,sortables:{},_findRootElement:function(element){while(element.tagName.toUpperCase()!="BODY"){if(element.id&&Sortable.sortables[element.id])return element;element=element.parentNode;}},options:function(element){element=Sortable._findRootElement($(element));if(!element)return;return Sortable.sortables[element.id];},destroy:function(element){element=$(element);var s=Sortable.sortables[element.id];if(s){Draggables.removeObserver(s.element);s.droppables.each(function(d){Droppables.remove(d)});s.draggables.invoke('destroy');delete Sortable.sortables[s.element.id];}},create:function(element){element=$(element);var options=Object.extend({element:element,tag:'li',dropOnEmpty:false,tree:false,treeTag:'ul',overlap:'vertical',constraint:'vertical',containment:element,handle:false,only:false,delay:0,hoverclass:null,ghosting:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,format:this.SERIALIZE_RULE,elements:false,handles:false,onChange:Prototype.emptyFunction,onUpdate:Prototype.emptyFunction},arguments[1]||{});this.destroy(element);var options_for_draggable={revert:true,quiet:options.quiet,scroll:options.scroll,scrollSpeed:options.scrollSpeed,scrollSensitivity:options.scrollSensitivity,delay:options.delay,ghosting:options.ghosting,constraint:options.constraint,handle:options.handle};if(options.starteffect)
|
459 |
+
options_for_draggable.starteffect=options.starteffect;if(options.reverteffect)
|
460 |
+
options_for_draggable.reverteffect=options.reverteffect;else
|
461 |
+
if(options.ghosting)options_for_draggable.reverteffect=function(element){element.style.top=0;element.style.left=0;};if(options.endeffect)
|
462 |
+
options_for_draggable.endeffect=options.endeffect;if(options.zindex)
|
463 |
+
options_for_draggable.zindex=options.zindex;var options_for_droppable={overlap:options.overlap,containment:options.containment,tree:options.tree,hoverclass:options.hoverclass,onHover:Sortable.onHover};var options_for_tree={onHover:Sortable.onEmptyHover,overlap:options.overlap,containment:options.containment,hoverclass:options.hoverclass};Element.cleanWhitespace(element);options.draggables=[];options.droppables=[];if(options.dropOnEmpty||options.tree){Droppables.add(element,options_for_tree);options.droppables.push(element);}
|
464 |
+
(options.elements||this.findElements(element,options)||[]).each(function(e,i){var handle=options.handles?$(options.handles[i]):(options.handle?$(e).select('.'+options.handle)[0]:e);options.draggables.push(new Draggable(e,Object.extend(options_for_draggable,{handle:handle})));Droppables.add(e,options_for_droppable);if(options.tree)e.treeNode=element;options.droppables.push(e);});if(options.tree){(Sortable.findTreeElements(element,options)||[]).each(function(e){Droppables.add(e,options_for_tree);e.treeNode=element;options.droppables.push(e);});}
|
465 |
+
this.sortables[element.id]=options;Draggables.addObserver(new SortableObserver(element,options.onUpdate));},findElements:function(element,options){return Element.findChildren(element,options.only,options.tree?true:false,options.tag);},findTreeElements:function(element,options){return Element.findChildren(element,options.only,options.tree?true:false,options.treeTag);},onHover:function(element,dropon,overlap){if(Element.isParent(dropon,element))return;if(overlap>.33&&overlap<.66&&Sortable.options(dropon).tree){return;}else if(overlap>0.5){Sortable.mark(dropon,'before');if(dropon.previousSibling!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden";dropon.parentNode.insertBefore(element,dropon);if(dropon.parentNode!=oldParentNode)
|
466 |
+
Sortable.options(oldParentNode).onChange(element);Sortable.options(dropon.parentNode).onChange(element);}}else{Sortable.mark(dropon,'after');var nextElement=dropon.nextSibling||null;if(nextElement!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden";dropon.parentNode.insertBefore(element,nextElement);if(dropon.parentNode!=oldParentNode)
|
467 |
+
Sortable.options(oldParentNode).onChange(element);Sortable.options(dropon.parentNode).onChange(element);}}},onEmptyHover:function(element,dropon,overlap){var oldParentNode=element.parentNode;var droponOptions=Sortable.options(dropon);if(!Element.isParent(dropon,element)){var index;var children=Sortable.findElements(dropon,{tag:droponOptions.tag,only:droponOptions.only});var child=null;if(children){var offset=Element.offsetSize(dropon,droponOptions.overlap)*(1.0-overlap);for(index=0;index<children.length;index+=1){if(offset-Element.offsetSize(children[index],droponOptions.overlap)>=0){offset-=Element.offsetSize(children[index],droponOptions.overlap);}else if(offset-(Element.offsetSize(children[index],droponOptions.overlap)/2)>=0){child=index+1<children.length?children[index+1]:null;break;}else{child=children[index];break;}}}
|
468 |
+
dropon.insertBefore(element,child);Sortable.options(oldParentNode).onChange(element);droponOptions.onChange(element);}},unmark:function(){if(Sortable._marker)Sortable._marker.hide();},mark:function(dropon,position){var sortable=Sortable.options(dropon.parentNode);if(sortable&&!sortable.ghosting)return;if(!Sortable._marker){Sortable._marker=($('dropmarker')||Element.extend(document.createElement('DIV'))).hide().addClassName('dropmarker').setStyle({position:'absolute'});document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);}
|
469 |
+
var offsets=Position.cumulativeOffset(dropon);Sortable._marker.setStyle({left:offsets[0]+'px',top:offsets[1]+'px'});if(position=='after')
|
470 |
+
if(sortable.overlap=='horizontal')
|
471 |
+
Sortable._marker.setStyle({left:(offsets[0]+dropon.clientWidth)+'px'});else
|
472 |
+
Sortable._marker.setStyle({top:(offsets[1]+dropon.clientHeight)+'px'});Sortable._marker.show();},_tree:function(element,options,parent){var children=Sortable.findElements(element,options)||[];for(var i=0;i<children.length;++i){var match=children[i].id.match(options.format);if(!match)continue;var child={id:encodeURIComponent(match?match[1]:null),element:element,parent:parent,children:[],position:parent.children.length,container:$(children[i]).down(options.treeTag)};if(child.container)
|
473 |
+
this._tree(child.container,options,child);parent.children.push(child);}
|
474 |
+
return parent;},tree:function(element){element=$(element);var sortableOptions=this.options(element);var options=Object.extend({tag:sortableOptions.tag,treeTag:sortableOptions.treeTag,only:sortableOptions.only,name:element.id,format:sortableOptions.format},arguments[1]||{});var root={id:null,parent:null,children:[],container:element,position:0};return Sortable._tree(element,options,root);},_constructIndex:function(node){var index='';do{if(node.id)index='['+node.position+']'+index;}while((node=node.parent)!=null);return index;},sequence:function(element){element=$(element);var options=Object.extend(this.options(element),arguments[1]||{});return $(this.findElements(element,options)||[]).map(function(item){return item.id.match(options.format)?item.id.match(options.format)[1]:'';});},setSequence:function(element,new_sequence){element=$(element);var options=Object.extend(this.options(element),arguments[2]||{});var nodeMap={};this.findElements(element,options).each(function(n){if(n.id.match(options.format))
|
475 |
+
nodeMap[n.id.match(options.format)[1]]=[n,n.parentNode];n.parentNode.removeChild(n);});new_sequence.each(function(ident){var n=nodeMap[ident];if(n){n[1].appendChild(n[0]);delete nodeMap[ident];}});},serialize:function(element){element=$(element);var options=Object.extend(Sortable.options(element),arguments[1]||{});var name=encodeURIComponent((arguments[1]&&arguments[1].name)?arguments[1].name:element.id);if(options.tree){return Sortable.tree(element,arguments[1]).children.map(function(item){return[name+Sortable._constructIndex(item)+"[id]="+
|
476 |
+
encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));}).flatten().join('&');}else{return Sortable.sequence(element,arguments[1]).map(function(item){return name+"[]="+encodeURIComponent(item);}).join('&');}}};Element.isParent=function(child,element){if(!child.parentNode||child==element)return false;if(child.parentNode==element)return true;return Element.isParent(child.parentNode,element);};Element.findChildren=function(element,only,recursive,tagName){if(!element.hasChildNodes())return null;tagName=tagName.toUpperCase();if(only)only=[only].flatten();var elements=[];$A(element.childNodes).each(function(e){if(e.tagName&&e.tagName.toUpperCase()==tagName&&(!only||(Element.classNames(e).detect(function(v){return only.include(v)}))))
|
477 |
+
elements.push(e);if(recursive){var grandchildren=Element.findChildren(e,only,recursive,tagName);if(grandchildren)elements.push(grandchildren);}});return(elements.length>0?elements.flatten():[]);};Element.offsetSize=function(element,type){return element['offset'+((type=='vertical'||type=='height')?'Height':'Width')];};;if(typeof Effect=='undefined')
|
478 |
+
throw("controls.js requires including script.aculo.us' effects.js library");var Autocompleter={};Autocompleter.Base=Class.create({baseInitialize:function(element,update,options){element=$(element);this.element=element;this.update=$(update);this.hasFocus=false;this.changed=false;this.active=false;this.index=0;this.entryCount=0;this.oldElementValue=this.element.value;if(this.setOptions)
|
479 |
+
this.setOptions(options);else
|
480 |
+
this.options=options||{};this.options.paramName=this.options.paramName||this.element.name;this.options.tokens=this.options.tokens||[];this.options.frequency=this.options.frequency||0.4;this.options.minChars=this.options.minChars||1;this.options.onShow=this.options.onShow||function(element,update){if(!update.style.position||update.style.position=='absolute'){update.style.position='absolute';Position.clone(element,update,{setHeight:false,offsetTop:element.offsetHeight});}
|
481 |
+
Effect.Appear(update,{duration:0.15});};this.options.onHide=this.options.onHide||function(element,update){new Effect.Fade(update,{duration:0.15})};if(typeof(this.options.tokens)=='string')
|
482 |
+
this.options.tokens=new Array(this.options.tokens);if(!this.options.tokens.include('\n'))
|
483 |
+
this.options.tokens.push('\n');this.observer=null;this.element.setAttribute('autocomplete','off');Element.hide(this.update);Event.observe(this.element,'blur',this.onBlur.bindAsEventListener(this));Event.observe(this.element,'keydown',this.onKeyPress.bindAsEventListener(this));},show:function(){if(Element.getStyle(this.update,'display')=='none')this.options.onShow(this.element,this.update);if(!this.iefix&&(Prototype.Browser.IE)&&(Element.getStyle(this.update,'position')=='absolute')){new Insertion.After(this.update,'<iframe id="'+this.update.id+'_iefix" '+'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" '+'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');this.iefix=$(this.update.id+'_iefix');}
|
484 |
+
if(this.iefix)setTimeout(this.fixIEOverlapping.bind(this),50);},fixIEOverlapping:function(){Position.clone(this.update,this.iefix,{setTop:(!this.update.style.height)});this.iefix.style.zIndex=1;this.update.style.zIndex=2;Element.show(this.iefix);},hide:function(){this.stopIndicator();if(Element.getStyle(this.update,'display')!='none')this.options.onHide(this.element,this.update);if(this.iefix)Element.hide(this.iefix);},startIndicator:function(){if(this.options.indicator)Element.show(this.options.indicator);},stopIndicator:function(){if(this.options.indicator)Element.hide(this.options.indicator);},onKeyPress:function(event){if(this.active)
|
485 |
+
switch(event.keyCode){case Event.KEY_TAB:case Event.KEY_RETURN:this.selectEntry();Event.stop(event);case Event.KEY_ESC:this.hide();this.active=false;Event.stop(event);return;case Event.KEY_LEFT:case Event.KEY_RIGHT:return;case Event.KEY_UP:this.markPrevious();this.render();Event.stop(event);return;case Event.KEY_DOWN:this.markNext();this.render();Event.stop(event);return;}
|
486 |
+
else
|
487 |
+
if(event.keyCode==Event.KEY_TAB||event.keyCode==Event.KEY_RETURN||(Prototype.Browser.WebKit>0&&event.keyCode==0))return;this.changed=true;this.hasFocus=true;if(this.observer)clearTimeout(this.observer);this.observer=setTimeout(this.onObserverEvent.bind(this),this.options.frequency*1000);},activate:function(){this.changed=false;this.hasFocus=true;this.getUpdatedChoices();},onHover:function(event){var element=Event.findElement(event,'LI');if(this.index!=element.autocompleteIndex)
|
488 |
+
{this.index=element.autocompleteIndex;this.render();}
|
489 |
+
Event.stop(event);},onClick:function(event){var element=Event.findElement(event,'LI');this.index=element.autocompleteIndex;this.selectEntry();this.hide();},onBlur:function(event){setTimeout(this.hide.bind(this),250);this.hasFocus=false;this.active=false;},render:function(){if(this.entryCount>0){for(var i=0;i<this.entryCount;i++)
|
490 |
+
this.index==i?Element.addClassName(this.getEntry(i),"selected"):Element.removeClassName(this.getEntry(i),"selected");if(this.hasFocus){this.show();this.active=true;}}else{this.active=false;this.hide();}},markPrevious:function(){if(this.index>0)this.index--;else this.index=this.entryCount-1;},markNext:function(){if(this.index<this.entryCount-1)this.index++;else this.index=0;this.getEntry(this.index).scrollIntoView(false);},getEntry:function(index){return this.update.firstChild.childNodes[index];},getCurrentEntry:function(){return this.getEntry(this.index);},selectEntry:function(){this.active=false;this.updateElement(this.getCurrentEntry());},updateElement:function(selectedElement){if(this.options.updateElement){this.options.updateElement(selectedElement);return;}
|
491 |
+
var value='';if(this.options.select){var nodes=$(selectedElement).select('.'+this.options.select)||[];if(nodes.length>0)value=Element.collectTextNodes(nodes[0],this.options.select);}else
|
492 |
+
value=Element.collectTextNodesIgnoreClass(selectedElement,'informal');var bounds=this.getTokenBounds();if(bounds[0]!=-1){var newValue=this.element.value.substr(0,bounds[0]);var whitespace=this.element.value.substr(bounds[0]).match(/^\s+/);if(whitespace)
|
493 |
+
newValue+=whitespace[0];this.element.value=newValue+value+this.element.value.substr(bounds[1]);}else{this.element.value=value;}
|
494 |
+
this.oldElementValue=this.element.value;this.element.focus();if(this.options.afterUpdateElement)
|
495 |
+
this.options.afterUpdateElement(this.element,selectedElement);},updateChoices:function(choices){if(!this.changed&&this.hasFocus){this.update.innerHTML=choices;Element.cleanWhitespace(this.update);Element.cleanWhitespace(this.update.down());if(this.update.firstChild&&this.update.down().childNodes){this.entryCount=this.update.down().childNodes.length;for(var i=0;i<this.entryCount;i++){var entry=this.getEntry(i);entry.autocompleteIndex=i;this.addObservers(entry);}}else{this.entryCount=0;}
|
496 |
+
this.stopIndicator();this.index=0;if(this.entryCount==1&&this.options.autoSelect){this.selectEntry();this.hide();}else{this.render();}}},addObservers:function(element){Event.observe(element,"mouseover",this.onHover.bindAsEventListener(this));Event.observe(element,"click",this.onClick.bindAsEventListener(this));},onObserverEvent:function(){this.changed=false;this.tokenBounds=null;if(this.getToken().length>=this.options.minChars){this.getUpdatedChoices();}else{this.active=false;this.hide();}
|
497 |
+
this.oldElementValue=this.element.value;},getToken:function(){var bounds=this.getTokenBounds();return this.element.value.substring(bounds[0],bounds[1]).strip();},getTokenBounds:function(){if(null!=this.tokenBounds)return this.tokenBounds;var value=this.element.value;if(value.strip().empty())return[-1,0];var diff=arguments.callee.getFirstDifferencePos(value,this.oldElementValue);var offset=(diff==this.oldElementValue.length?1:0);var prevTokenPos=-1,nextTokenPos=value.length;var tp;for(var index=0,l=this.options.tokens.length;index<l;++index){tp=value.lastIndexOf(this.options.tokens[index],diff+offset-1);if(tp>prevTokenPos)prevTokenPos=tp;tp=value.indexOf(this.options.tokens[index],diff+offset);if(-1!=tp&&tp<nextTokenPos)nextTokenPos=tp;}
|
498 |
+
return(this.tokenBounds=[prevTokenPos+1,nextTokenPos]);}});Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos=function(newS,oldS){var boundary=Math.min(newS.length,oldS.length);for(var index=0;index<boundary;++index)
|
499 |
+
if(newS[index]!=oldS[index])
|
500 |
+
return index;return boundary;};Ajax.Autocompleter=Class.create(Autocompleter.Base,{initialize:function(element,update,url,options){this.baseInitialize(element,update,options);this.options.asynchronous=true;this.options.onComplete=this.onComplete.bind(this);this.options.defaultParams=this.options.parameters||null;this.url=url;},getUpdatedChoices:function(){this.startIndicator();var entry=encodeURIComponent(this.options.paramName)+'='+
|
501 |
+
encodeURIComponent(this.getToken());this.options.parameters=this.options.callback?this.options.callback(this.element,entry):entry;if(this.options.defaultParams)
|
502 |
+
this.options.parameters+='&'+this.options.defaultParams;new Ajax.Request(this.url,this.options);},onComplete:function(request){this.updateChoices(request.responseText);}});Autocompleter.Local=Class.create(Autocompleter.Base,{initialize:function(element,update,array,options){this.baseInitialize(element,update,options);this.options.array=array;},getUpdatedChoices:function(){this.updateChoices(this.options.selector(this));},setOptions:function(options){this.options=Object.extend({choices:10,partialSearch:true,partialChars:2,ignoreCase:true,fullSearch:false,selector:function(instance){var ret=[];var partial=[];var entry=instance.getToken();var count=0;for(var i=0;i<instance.options.array.length&&ret.length<instance.options.choices;i++){var elem=instance.options.array[i];var foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase()):elem.indexOf(entry);while(foundPos!=-1){if(foundPos==0&&elem.length!=entry.length){ret.push("<li><strong>"+elem.substr(0,entry.length)+"</strong>"+
|
503 |
+
elem.substr(entry.length)+"</li>");break;}else if(entry.length>=instance.options.partialChars&&instance.options.partialSearch&&foundPos!=-1){if(instance.options.fullSearch||/\s/.test(elem.substr(foundPos-1,1))){partial.push("<li>"+elem.substr(0,foundPos)+"<strong>"+
|
504 |
+
elem.substr(foundPos,entry.length)+"</strong>"+elem.substr(foundPos+entry.length)+"</li>");break;}}
|
505 |
+
foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase(),foundPos+1):elem.indexOf(entry,foundPos+1);}}
|
506 |
+
if(partial.length)
|
507 |
+
ret=ret.concat(partial.slice(0,instance.options.choices-ret.length));return"<ul>"+ret.join('')+"</ul>";}},options||{});}});Field.scrollFreeActivate=function(field){setTimeout(function(){Field.activate(field);},1);};Ajax.InPlaceEditor=Class.create({initialize:function(element,url,options){this.url=url;this.element=element=$(element);this.prepareOptions();this._controls={};arguments.callee.dealWithDeprecatedOptions(options);Object.extend(this.options,options||{});if(!this.options.formId&&this.element.id){this.options.formId=this.element.id+'-inplaceeditor';if($(this.options.formId))
|
508 |
+
this.options.formId='';}
|
509 |
+
if(this.options.externalControl)
|
510 |
+
this.options.externalControl=$(this.options.externalControl);if(!this.options.externalControl)
|
511 |
+
this.options.externalControlOnly=false;this._originalBackground=this.element.getStyle('background-color')||'transparent';this.element.title=this.options.clickToEditText;this._boundCancelHandler=this.handleFormCancellation.bind(this);this._boundComplete=(this.options.onComplete||Prototype.emptyFunction).bind(this);this._boundFailureHandler=this.handleAJAXFailure.bind(this);this._boundSubmitHandler=this.handleFormSubmission.bind(this);this._boundWrapperHandler=this.wrapUp.bind(this);this.registerListeners();},checkForEscapeOrReturn:function(e){if(!this._editing||e.ctrlKey||e.altKey||e.shiftKey)return;if(Event.KEY_ESC==e.keyCode)
|
512 |
+
this.handleFormCancellation(e);else if(Event.KEY_RETURN==e.keyCode)
|
513 |
+
this.handleFormSubmission(e);},createControl:function(mode,handler,extraClasses){var control=this.options[mode+'Control'];var text=this.options[mode+'Text'];if('button'==control){var btn=document.createElement('input');btn.type='submit';btn.value=text;btn.className='editor_'+mode+'_button';if('cancel'==mode)
|
514 |
+
btn.onclick=this._boundCancelHandler;this._form.appendChild(btn);this._controls[mode]=btn;}else if('link'==control){var link=document.createElement('a');link.href='#';link.appendChild(document.createTextNode(text));link.onclick='cancel'==mode?this._boundCancelHandler:this._boundSubmitHandler;link.className='editor_'+mode+'_link';if(extraClasses)
|
515 |
+
link.className+=' '+extraClasses;this._form.appendChild(link);this._controls[mode]=link;}},createEditField:function(){var text=(this.options.loadTextURL?this.options.loadingText:this.getText());var fld;if(1>=this.options.rows&&!/\r|\n/.test(this.getText())){fld=document.createElement('input');fld.type='text';var size=this.options.size||this.options.cols||0;if(0<size)fld.size=size;}else{fld=document.createElement('textarea');fld.rows=(1>=this.options.rows?this.options.autoRows:this.options.rows);fld.cols=this.options.cols||40;}
|
516 |
+
fld.name=this.options.paramName;fld.value=text;fld.className='editor_field';if(this.options.submitOnBlur)
|
517 |
+
fld.onblur=this._boundSubmitHandler;this._controls.editor=fld;if(this.options.loadTextURL)
|
518 |
+
this.loadExternalText();this._form.appendChild(this._controls.editor);},createForm:function(){var ipe=this;function addText(mode,condition){var text=ipe.options['text'+mode+'Controls'];if(!text||condition===false)return;ipe._form.appendChild(document.createTextNode(text));};this._form=$(document.createElement('form'));this._form.id=this.options.formId;this._form.addClassName(this.options.formClassName);this._form.onsubmit=this._boundSubmitHandler;this.createEditField();if('textarea'==this._controls.editor.tagName.toLowerCase())
|
519 |
+
this._form.appendChild(document.createElement('br'));if(this.options.onFormCustomization)
|
520 |
+
this.options.onFormCustomization(this,this._form);addText('Before',this.options.okControl||this.options.cancelControl);this.createControl('ok',this._boundSubmitHandler);addText('Between',this.options.okControl&&this.options.cancelControl);this.createControl('cancel',this._boundCancelHandler,'editor_cancel');addText('After',this.options.okControl||this.options.cancelControl);},destroy:function(){if(this._oldInnerHTML)
|
521 |
+
this.element.innerHTML=this._oldInnerHTML;this.leaveEditMode();this.unregisterListeners();},enterEditMode:function(e){if(this._saving||this._editing)return;this._editing=true;this.triggerCallback('onEnterEditMode');if(this.options.externalControl)
|
522 |
+
this.options.externalControl.hide();this.element.hide();this.createForm();this.element.parentNode.insertBefore(this._form,this.element);if(!this.options.loadTextURL)
|
523 |
+
this.postProcessEditField();if(e)Event.stop(e);},enterHover:function(e){if(this.options.hoverClassName)
|
524 |
+
this.element.addClassName(this.options.hoverClassName);if(this._saving)return;this.triggerCallback('onEnterHover');},getText:function(){return this.element.innerHTML.unescapeHTML();},handleAJAXFailure:function(transport){this.triggerCallback('onFailure',transport);if(this._oldInnerHTML){this.element.innerHTML=this._oldInnerHTML;this._oldInnerHTML=null;}},handleFormCancellation:function(e){this.wrapUp();if(e)Event.stop(e);},handleFormSubmission:function(e){var form=this._form;var value=$F(this._controls.editor);this.prepareSubmission();var params=this.options.callback(form,value)||'';if(Object.isString(params))
|
525 |
+
params=params.toQueryParams();params.editorId=this.element.id;if(this.options.htmlResponse){var options=Object.extend({evalScripts:true},this.options.ajaxOptions);Object.extend(options,{parameters:params,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler});new Ajax.Updater({success:this.element},this.url,options);}else{var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:params,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler});new Ajax.Request(this.url,options);}
|
526 |
+
if(e)Event.stop(e);},leaveEditMode:function(){this.element.removeClassName(this.options.savingClassName);this.removeForm();this.leaveHover();this.element.style.backgroundColor=this._originalBackground;this.element.show();if(this.options.externalControl)
|
527 |
+
this.options.externalControl.show();this._saving=false;this._editing=false;this._oldInnerHTML=null;this.triggerCallback('onLeaveEditMode');},leaveHover:function(e){if(this.options.hoverClassName)
|
528 |
+
this.element.removeClassName(this.options.hoverClassName);if(this._saving)return;this.triggerCallback('onLeaveHover');},loadExternalText:function(){this._form.addClassName(this.options.loadingClassName);this._controls.editor.disabled=true;var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:'editorId='+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){this._form.removeClassName(this.options.loadingClassName);var text=transport.responseText;if(this.options.stripLoadedTextTags)
|
529 |
+
text=text.stripTags();this._controls.editor.value=text;this._controls.editor.disabled=false;this.postProcessEditField();}.bind(this),onFailure:this._boundFailureHandler});new Ajax.Request(this.options.loadTextURL,options);},postProcessEditField:function(){var fpc=this.options.fieldPostCreation;if(fpc)
|
530 |
+
$(this._controls.editor)['focus'==fpc?'focus':'activate']();},prepareOptions:function(){this.options=Object.clone(Ajax.InPlaceEditor.DefaultOptions);Object.extend(this.options,Ajax.InPlaceEditor.DefaultCallbacks);[this._extraDefaultOptions].flatten().compact().each(function(defs){Object.extend(this.options,defs);}.bind(this));},prepareSubmission:function(){this._saving=true;this.removeForm();this.leaveHover();this.showSaving();},registerListeners:function(){this._listeners={};var listener;$H(Ajax.InPlaceEditor.Listeners).each(function(pair){listener=this[pair.value].bind(this);this._listeners[pair.key]=listener;if(!this.options.externalControlOnly)
|
531 |
+
this.element.observe(pair.key,listener);if(this.options.externalControl)
|
532 |
+
this.options.externalControl.observe(pair.key,listener);}.bind(this));},removeForm:function(){if(!this._form)return;this._form.remove();this._form=null;this._controls={};},showSaving:function(){this._oldInnerHTML=this.element.innerHTML;this.element.innerHTML=this.options.savingText;this.element.addClassName(this.options.savingClassName);this.element.style.backgroundColor=this._originalBackground;this.element.show();},triggerCallback:function(cbName,arg){if('function'==typeof this.options[cbName]){this.options[cbName](this,arg);}},unregisterListeners:function(){$H(this._listeners).each(function(pair){if(!this.options.externalControlOnly)
|
533 |
+
this.element.stopObserving(pair.key,pair.value);if(this.options.externalControl)
|
534 |
+
this.options.externalControl.stopObserving(pair.key,pair.value);}.bind(this));},wrapUp:function(transport){this.leaveEditMode();this._boundComplete(transport,this.element);}});Object.extend(Ajax.InPlaceEditor.prototype,{dispose:Ajax.InPlaceEditor.prototype.destroy});Ajax.InPlaceCollectionEditor=Class.create(Ajax.InPlaceEditor,{initialize:function($super,element,url,options){this._extraDefaultOptions=Ajax.InPlaceCollectionEditor.DefaultOptions;$super(element,url,options);},createEditField:function(){var list=document.createElement('select');list.name=this.options.paramName;list.size=1;this._controls.editor=list;this._collection=this.options.collection||[];if(this.options.loadCollectionURL)
|
535 |
+
this.loadCollection();else
|
536 |
+
this.checkForExternalText();this._form.appendChild(this._controls.editor);},loadCollection:function(){this._form.addClassName(this.options.loadingClassName);this.showLoadingText(this.options.loadingCollectionText);var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:'editorId='+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){var js=transport.responseText.strip();if(!/^\[.*\]$/.test(js))
|
537 |
+
throw('Server returned an invalid collection representation.');this._collection=eval(js);this.checkForExternalText();}.bind(this),onFailure:this.onFailure});new Ajax.Request(this.options.loadCollectionURL,options);},showLoadingText:function(text){this._controls.editor.disabled=true;var tempOption=this._controls.editor.firstChild;if(!tempOption){tempOption=document.createElement('option');tempOption.value='';this._controls.editor.appendChild(tempOption);tempOption.selected=true;}
|
538 |
+
tempOption.update((text||'').stripScripts().stripTags());},checkForExternalText:function(){this._text=this.getText();if(this.options.loadTextURL)
|
539 |
+
this.loadExternalText();else
|
540 |
+
this.buildOptionList();},loadExternalText:function(){this.showLoadingText(this.options.loadingText);var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:'editorId='+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){this._text=transport.responseText.strip();this.buildOptionList();}.bind(this),onFailure:this.onFailure});new Ajax.Request(this.options.loadTextURL,options);},buildOptionList:function(){this._form.removeClassName(this.options.loadingClassName);this._collection=this._collection.map(function(entry){return 2===entry.length?entry:[entry,entry].flatten();});var marker=('value'in this.options)?this.options.value:this._text;var textFound=this._collection.any(function(entry){return entry[0]==marker;}.bind(this));this._controls.editor.update('');var option;this._collection.each(function(entry,index){option=document.createElement('option');option.value=entry[0];option.selected=textFound?entry[0]==marker:0==index;option.appendChild(document.createTextNode(entry[1]));this._controls.editor.appendChild(option);}.bind(this));this._controls.editor.disabled=false;Field.scrollFreeActivate(this._controls.editor);}});Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions=function(options){if(!options)return;function fallback(name,expr){if(name in options||expr===undefined)return;options[name]=expr;};fallback('cancelControl',(options.cancelLink?'link':(options.cancelButton?'button':options.cancelLink==options.cancelButton==false?false:undefined)));fallback('okControl',(options.okLink?'link':(options.okButton?'button':options.okLink==options.okButton==false?false:undefined)));fallback('highlightColor',options.highlightcolor);fallback('highlightEndColor',options.highlightendcolor);};Object.extend(Ajax.InPlaceEditor,{DefaultOptions:{ajaxOptions:{},autoRows:3,cancelControl:'link',cancelText:'cancel',clickToEditText:'Click to edit',externalControl:null,externalControlOnly:false,fieldPostCreation:'activate',formClassName:'inplaceeditor-form',formId:null,highlightColor:'#ffff99',highlightEndColor:'#ffffff',hoverClassName:'',htmlResponse:true,loadingClassName:'inplaceeditor-loading',loadingText:'Loading...',okControl:'button',okText:'ok',paramName:'value',rows:1,savingClassName:'inplaceeditor-saving',savingText:'Saving...',size:0,stripLoadedTextTags:false,submitOnBlur:false,textAfterControls:'',textBeforeControls:'',textBetweenControls:''},DefaultCallbacks:{callback:function(form){return Form.serialize(form);},onComplete:function(transport,element){new Effect.Highlight(element,{startcolor:this.options.highlightColor,keepBackgroundImage:true});},onEnterEditMode:null,onEnterHover:function(ipe){ipe.element.style.backgroundColor=ipe.options.highlightColor;if(ipe._effect)
|
541 |
+
ipe._effect.cancel();},onFailure:function(transport,ipe){alert('Error communication with the server: '+transport.responseText.stripTags());},onFormCustomization:null,onLeaveEditMode:null,onLeaveHover:function(ipe){ipe._effect=new Effect.Highlight(ipe.element,{startcolor:ipe.options.highlightColor,endcolor:ipe.options.highlightEndColor,restorecolor:ipe._originalBackground,keepBackgroundImage:true});}},Listeners:{click:'enterEditMode',keydown:'checkForEscapeOrReturn',mouseover:'enterHover',mouseout:'leaveHover'}});Ajax.InPlaceCollectionEditor.DefaultOptions={loadingCollectionText:'Loading options...'};Form.Element.DelayedObserver=Class.create({initialize:function(element,delay,callback){this.delay=delay||0.5;this.element=$(element);this.callback=callback;this.timer=null;this.lastValue=$F(this.element);Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));},delayedListener:function(event){if(this.lastValue==$F(this.element))return;if(this.timer)clearTimeout(this.timer);this.timer=setTimeout(this.onTimerEvent.bind(this),this.delay*1000);this.lastValue=$F(this.element);},onTimerEvent:function(){this.timer=null;this.callback(this.element,$F(this.element));}});;if(!Control)var Control={};Control.Slider=Class.create({initialize:function(handle,track,options){var slider=this;if(Object.isArray(handle)){this.handles=handle.collect(function(e){return $(e)});}else{this.handles=[$(handle)];}
|
542 |
+
this.track=$(track);this.options=options||{};this.axis=this.options.axis||'horizontal';this.increment=this.options.increment||1;this.step=parseInt(this.options.step||'1');this.range=this.options.range||$R(0,1);this.value=0;this.values=this.handles.map(function(){return 0});this.spans=this.options.spans?this.options.spans.map(function(s){return $(s)}):false;this.options.startSpan=$(this.options.startSpan||null);this.options.endSpan=$(this.options.endSpan||null);this.restricted=this.options.restricted||false;this.maximum=this.options.maximum||this.range.end;this.minimum=this.options.minimum||this.range.start;this.alignX=parseInt(this.options.alignX||'0');this.alignY=parseInt(this.options.alignY||'0');this.trackLength=this.maximumOffset()-this.minimumOffset();this.handleLength=this.isVertical()?(this.handles[0].offsetHeight!=0?this.handles[0].offsetHeight:this.handles[0].style.height.replace(/px$/,"")):(this.handles[0].offsetWidth!=0?this.handles[0].offsetWidth:this.handles[0].style.width.replace(/px$/,""));this.active=false;this.dragging=false;this.disabled=false;if(this.options.disabled)this.setDisabled();this.allowedValues=this.options.values?this.options.values.sortBy(Prototype.K):false;if(this.allowedValues){this.minimum=this.allowedValues.min();this.maximum=this.allowedValues.max();}
|
543 |
+
this.eventMouseDown=this.startDrag.bindAsEventListener(this);this.eventMouseUp=this.endDrag.bindAsEventListener(this);this.eventMouseMove=this.update.bindAsEventListener(this);this.handles.each(function(h,i){i=slider.handles.length-1-i;slider.setValue(parseFloat((Object.isArray(slider.options.sliderValue)?slider.options.sliderValue[i]:slider.options.sliderValue)||slider.range.start),i);h.makePositioned().observe("mousedown",slider.eventMouseDown);});this.track.observe("mousedown",this.eventMouseDown);document.observe("mouseup",this.eventMouseUp);$(this.track.parentNode.parentNode).observe("mousemove",this.eventMouseMove);this.initialized=true;},dispose:function(){var slider=this;Event.stopObserving(this.track,"mousedown",this.eventMouseDown);Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(this.track.parentNode.parentNode,"mousemove",this.eventMouseMove);this.handles.each(function(h){Event.stopObserving(h,"mousedown",slider.eventMouseDown);});},setDisabled:function(){this.disabled=true;this.track.parentNode.className=this.track.parentNode.className+' disabled';},setEnabled:function(){this.disabled=false;},getNearestValue:function(value){if(this.allowedValues){if(value>=this.allowedValues.max())return(this.allowedValues.max());if(value<=this.allowedValues.min())return(this.allowedValues.min());var offset=Math.abs(this.allowedValues[0]-value);var newValue=this.allowedValues[0];this.allowedValues.each(function(v){var currentOffset=Math.abs(v-value);if(currentOffset<=offset){newValue=v;offset=currentOffset;}});return newValue;}
|
544 |
+
if(value>this.range.end)return this.range.end;if(value<this.range.start)return this.range.start;return value;},setValue:function(sliderValue,handleIdx){if(!this.active){this.activeHandleIdx=handleIdx||0;this.activeHandle=this.handles[this.activeHandleIdx];this.updateStyles();}
|
545 |
+
handleIdx=handleIdx||this.activeHandleIdx||0;if(this.initialized&&this.restricted){if((handleIdx>0)&&(sliderValue<this.values[handleIdx-1]))
|
546 |
+
sliderValue=this.values[handleIdx-1];if((handleIdx<(this.handles.length-1))&&(sliderValue>this.values[handleIdx+1]))
|
547 |
+
sliderValue=this.values[handleIdx+1];}
|
548 |
+
sliderValue=this.getNearestValue(sliderValue);this.values[handleIdx]=sliderValue;this.value=this.values[0];this.handles[handleIdx].style[this.isVertical()?'top':'left']=this.translateToPx(sliderValue);this.drawSpans();if(!this.dragging||!this.event)this.updateFinished();},setValueBy:function(delta,handleIdx){this.setValue(this.values[handleIdx||this.activeHandleIdx||0]+delta,handleIdx||this.activeHandleIdx||0);},translateToPx:function(value){return Math.round(((this.trackLength-this.handleLength)/(this.range.end-this.range.start))*(value-this.range.start))+"px";},translateToValue:function(offset){return((offset/(this.trackLength-this.handleLength)*(this.range.end-this.range.start))+this.range.start);},getRange:function(range){var v=this.values.sortBy(Prototype.K);range=range||0;return $R(v[range],v[range+1]);},minimumOffset:function(){return(this.isVertical()?this.alignY:this.alignX);},maximumOffset:function(){return(this.isVertical()?(this.track.offsetHeight!=0?this.track.offsetHeight:this.track.style.height.replace(/px$/,""))-this.alignY:(this.track.offsetWidth!=0?this.track.offsetWidth:this.track.style.width.replace(/px$/,""))-this.alignX);},isVertical:function(){return(this.axis=='vertical');},drawSpans:function(){var slider=this;if(this.spans)
|
549 |
+
$R(0,this.spans.length-1).each(function(r){slider.setSpan(slider.spans[r],slider.getRange(r))});if(this.options.startSpan)
|
550 |
+
this.setSpan(this.options.startSpan,$R(0,this.values.length>1?this.getRange(0).min():this.value));if(this.options.endSpan)
|
551 |
+
this.setSpan(this.options.endSpan,$R(this.values.length>1?this.getRange(this.spans.length-1).max():this.value,this.maximum));},setSpan:function(span,range){if(this.isVertical()){span.style.top=this.translateToPx(range.start);span.style.height=this.translateToPx(range.end-range.start+this.range.start);}else{span.style.left=this.translateToPx(range.start);span.style.width=this.translateToPx(range.end-range.start+this.range.start);}},updateStyles:function(){this.handles.each(function(h){Element.removeClassName(h,'selected')});Element.addClassName(this.activeHandle,'selected');},startDrag:function(event){if(Event.isLeftClick(event)){if(!this.disabled){this.active=true;var handle=Event.element(event);var pointer=[Event.pointerX(event),Event.pointerY(event)];var track=handle;if(track==this.track){var offsets=Position.cumulativeOffset(this.track);this.event=event;this.setValue(this.translateToValue((this.isVertical()?pointer[1]-offsets[1]:pointer[0]-offsets[0])-(this.handleLength/2)));var offsets=Position.cumulativeOffset(this.activeHandle);this.offsetX=(pointer[0]-offsets[0]);this.offsetY=(pointer[1]-offsets[1]);}else{while((this.handles.indexOf(handle)==-1)&&handle.parentNode)
|
552 |
+
handle=handle.parentNode;if(this.handles.indexOf(handle)!=-1){this.activeHandle=handle;this.activeHandleIdx=this.handles.indexOf(this.activeHandle);this.updateStyles();var offsets=Position.cumulativeOffset(this.activeHandle);this.offsetX=(pointer[0]-offsets[0]);this.offsetY=(pointer[1]-offsets[1]);}}}
|
553 |
+
Event.stop(event);}},update:function(event){if(this.active){if(!this.dragging)this.dragging=true;this.draw(event);if(Prototype.Browser.WebKit)window.scrollBy(0,0);Event.stop(event);}},draw:function(event){var pointer=[Event.pointerX(event),Event.pointerY(event)];var offsets=Position.cumulativeOffset(this.track);pointer[0]-=this.offsetX+offsets[0];pointer[1]-=this.offsetY+offsets[1];this.event=event;this.setValue(this.translateToValue(this.isVertical()?pointer[1]:pointer[0]));if(this.initialized&&this.options.onSlide)
|
554 |
+
this.options.onSlide(this.values.length>1?this.values:this.value,this);},endDrag:function(event){if(this.active&&this.dragging){this.finishDrag(event,true);Event.stop(event);}
|
555 |
+
this.active=false;this.dragging=false;},finishDrag:function(event,success){this.active=false;this.dragging=false;this.updateFinished();},updateFinished:function(){if(this.initialized&&this.options.onChange)
|
556 |
+
this.options.onChange(this.values.length>1?this.values:this.value,this);this.event=null;}});;function popWin(url,win,para){var win=window.open(url,win,para);win.focus();}
|
557 |
+
function setLocation(url){window.location.href=url;}
|
558 |
+
function setPLocation(url,setFocus){if(setFocus){window.opener.focus();}
|
559 |
+
window.opener.location.href=url;}
|
560 |
+
function setLanguageCode(code,fromCode){var href=window.location.href;var after='',dash;if(dash=href.match(/\#(.*)$/)){href=href.replace(/\#(.*)$/,'');after=dash[0];}
|
561 |
+
if(href.match(/[?]/)){var re=/([?&]store=)[a-z0-9_]*/;if(href.match(re)){href=href.replace(re,'$1'+code);}else{href+='&store='+code;}
|
562 |
+
var re=/([?&]from_store=)[a-z0-9_]*/;if(href.match(re)){href=href.replace(re,'');}}else{href+='?store='+code;}
|
563 |
+
if(typeof(fromCode)!='undefined'){href+='&from_store='+fromCode;}
|
564 |
+
href+=after;setLocation(href);}
|
565 |
+
function decorateGeneric(elements,decorateParams)
|
566 |
+
{var allSupportedParams=['odd','even','first','last'];var _decorateParams={};var total=elements.length;if(total){if(typeof(decorateParams)=='undefined'){decorateParams=allSupportedParams;}
|
567 |
+
if(!decorateParams.length){return;}
|
568 |
+
for(var k in allSupportedParams){_decorateParams[allSupportedParams[k]]=false;}
|
569 |
+
for(var k in decorateParams){_decorateParams[decorateParams[k]]=true;}
|
570 |
+
if(_decorateParams.first){Element.addClassName(elements[0],'first');}
|
571 |
+
if(_decorateParams.last){Element.addClassName(elements[total-1],'last');}
|
572 |
+
for(var i=0;i<total;i++){if((i+1)%2==0){if(_decorateParams.even){Element.addClassName(elements[i],'even');}}
|
573 |
+
else{if(_decorateParams.odd){Element.addClassName(elements[i],'odd');}}}}}
|
574 |
+
function decorateTable(table,options){var table=$(table);if(table){var _options={'tbody':false,'tbody tr':['odd','even','first','last'],'thead tr':['first','last'],'tfoot tr':['first','last'],'tr td':['last']};if(typeof(options)!='undefined'){for(var k in options){_options[k]=options[k];}}
|
575 |
+
if(_options['tbody']){decorateGeneric(table.select('tbody'),_options['tbody']);}
|
576 |
+
if(_options['tbody tr']){decorateGeneric(table.select('tbody tr'),_options['tbody tr']);}
|
577 |
+
if(_options['thead tr']){decorateGeneric(table.select('thead tr'),_options['thead tr']);}
|
578 |
+
if(_options['tfoot tr']){decorateGeneric(table.select('tfoot tr'),_options['tfoot tr']);}
|
579 |
+
if(_options['tr td']){var allRows=table.select('tr');if(allRows.length){for(var i=0;i<allRows.length;i++){decorateGeneric(allRows[i].getElementsByTagName('TD'),_options['tr td']);}}}}}
|
580 |
+
function decorateList(list,nonRecursive){if($(list)){if(typeof(nonRecursive)=='undefined'){var items=$(list).select('li')}
|
581 |
+
else{var items=$(list).childElements();}
|
582 |
+
decorateGeneric(items,['odd','even','last']);}}
|
583 |
+
function decorateDataList(list){list=$(list);if(list){decorateGeneric(list.select('dt'),['odd','even','last']);decorateGeneric(list.select('dd'),['odd','even','last']);}}
|
584 |
+
function parseSidUrl(baseUrl,urlExt){sidPos=baseUrl.indexOf('/?SID=');sid='';urlExt=(urlExt!=undefined)?urlExt:'';if(sidPos>-1){sid='?'+baseUrl.substring(sidPos+2);baseUrl=baseUrl.substring(0,sidPos+1);}
|
585 |
+
return baseUrl+urlExt+sid;}
|
586 |
+
function formatCurrency(price,format,showPlus){precision=isNaN(format.precision=Math.abs(format.precision))?2:format.precision;requiredPrecision=isNaN(format.requiredPrecision=Math.abs(format.requiredPrecision))?2:format.requiredPrecision;precision=requiredPrecision;integerRequired=isNaN(format.integerRequired=Math.abs(format.integerRequired))?1:format.integerRequired;decimalSymbol=format.decimalSymbol==undefined?",":format.decimalSymbol;groupSymbol=format.groupSymbol==undefined?".":format.groupSymbol;groupLength=format.groupLength==undefined?3:format.groupLength;if(showPlus==undefined||showPlus==true){s=price<0?"-":(showPlus?"+":"");}else if(showPlus==false){s='';}
|
587 |
+
i=parseInt(price=Math.abs(+price||0).toFixed(precision))+"";pad=(i.length<integerRequired)?(integerRequired-i.length):0;while(pad){i='0'+i;pad--;}
|
588 |
+
j=(j=i.length)>groupLength?j%groupLength:0;re=new RegExp("(\\d{"+groupLength+"})(?=\\d)","g");r=(j?i.substr(0,j)+groupSymbol:"")+i.substr(j).replace(re,"$1"+groupSymbol)+(precision?decimalSymbol+Math.abs(price-i).toFixed(precision).replace(/-/,0).slice(2):"")
|
589 |
+
if(format.pattern.indexOf('{sign}')==-1){pattern=s+format.pattern;}else{pattern=format.pattern.replace('{sign}',s);}
|
590 |
+
return pattern.replace('%s',r).replace(/^\s\s*/,'').replace(/\s\s*$/,'');};function expandDetails(el,childClass){if(Element.hasClassName(el,'show-details')){$$(childClass).each(function(item){item.hide()});Element.removeClassName(el,'show-details');}
|
591 |
+
else{$$(childClass).each(function(item){item.show()});Element.addClassName(el,'show-details');}}
|
592 |
+
var isIE=navigator.appVersion.match(/MSIE/)=="MSIE";if(!window.Varien)
|
593 |
+
var Varien=new Object();Varien.showLoading=function(){Element.show('loading-process');}
|
594 |
+
Varien.hideLoading=function(){Element.hide('loading-process');}
|
595 |
+
Varien.GlobalHandlers={onCreate:function(){Varien.showLoading();},onComplete:function(){if(Ajax.activeRequestCount==0){Varien.hideLoading();}}};Ajax.Responders.register(Varien.GlobalHandlers);Varien.searchForm=Class.create();Varien.searchForm.prototype={initialize:function(form,field,emptyText){this.form=$(form);this.field=$(field);this.emptyText=emptyText;Event.observe(this.form,'submit',this.submit.bind(this));Event.observe(this.field,'focus',this.focus.bind(this));Event.observe(this.field,'blur',this.blur.bind(this));this.blur();},submit:function(event){if(this.field.value==this.emptyText||this.field.value==''){Event.stop(event);return false;}
|
596 |
+
return true;},focus:function(event){if(this.field.value==this.emptyText){this.field.value='';}},blur:function(event){if(this.field.value==''){this.field.value=this.emptyText;}},initAutocomplete:function(url,destinationElement){new Ajax.Autocompleter(this.field,destinationElement,url,{paramName:this.field.name,method:'get',minChars:2,updateElement:this._selectAutocompleteItem.bind(this),onShow:function(element,update){if(!update.style.position||update.style.position=='absolute'){update.style.position='absolute';Position.clone(element,update,{setHeight:false,offsetTop:element.offsetHeight});}
|
597 |
+
Effect.Appear(update,{duration:0});}});},_selectAutocompleteItem:function(element){if(element.title){this.field.value=element.title;}
|
598 |
+
this.form.submit();}}
|
599 |
+
Varien.Tabs=Class.create();Varien.Tabs.prototype={initialize:function(selector){var self=this;$$(selector+' a').each(this.initTab.bind(this));},initTab:function(el){el.href='javascript:void(0)';if($(el.parentNode).hasClassName('active')){this.showContent(el);}
|
600 |
+
el.observe('click',this.showContent.bind(this,el));},showContent:function(a){var li=$(a.parentNode),ul=$(li.parentNode);ul.getElementsBySelector('li','ol').each(function(el){var contents=$(el.id+'_contents');if(el==li){el.addClassName('active');contents.show();}else{el.removeClassName('active');contents.hide();}});}}
|
601 |
+
Varien.DOB=Class.create();Varien.DOB.prototype={initialize:function(selector,required,format){var el=$$(selector)[0];this.day=Element.select($(el),'.dob-day input')[0];this.month=Element.select($(el),'.dob-month input')[0];this.year=Element.select($(el),'.dob-year input')[0];this.dob=Element.select($(el),'.dob-full input')[0];this.advice=Element.select($(el),'.validation-advice')[0];this.required=required;this.format=format;this.day.validate=this.validate.bind(this);this.month.validate=this.validate.bind(this);this.year.validate=this.validate.bind(this);this.advice.hide();},validate:function(){var error=false;if(this.day.value==''&&this.month.value==''&&this.year.value==''){if(this.required){error='This date is a required value.';}else{this.dob.value='';}}else if(this.day.value==''||this.month.value==''||this.year.value==''){error='Please enter a valid full date.';}else{var date=new Date();if(this.day.value<1||this.day.value>31){error='Please enter a valid day (1-31).';}else if(this.month.value<1||this.month.value>12){error='Please enter a valid month (1-12).';}else if(this.year.value<1900||this.year.value>date.getFullYear()){error='Please enter a valid year (1900-'+date.getFullYear()+').';}else{this.dob.value=this.format.replace(/(%m|%b)/i,this.month.value).replace(/(%d|%e)/i,this.day.value).replace(/%y/i,this.year.value);var testDOB=this.month.value+'/'+this.day.value+'/'+this.year.value;var test=new Date(testDOB);if(isNaN(test)){error='Please enter a valid date.';}}}
|
602 |
+
if(error!==false){try{this.advice.innerHTML=Translator.translate(error);}
|
603 |
+
catch(e){this.advice.innerHTML=error;}
|
604 |
+
this.advice.show();return false;}
|
605 |
+
this.advice.hide();return true;}}
|
606 |
+
Validation.addAllThese([['validate-custom',' ',function(v,elm){return elm.validate();}]]);function truncateOptions(){$$('.truncated').each(function(element){Event.observe(element,'mouseover',function(){if(element.down('div.truncated_full_value')){element.down('div.truncated_full_value').addClassName('show')}});Event.observe(element,'mouseout',function(){if(element.down('div.truncated_full_value')){element.down('div.truncated_full_value').removeClassName('show')}});});}
|
607 |
+
Event.observe(window,'load',function(){truncateOptions();});Element.addMethods({getInnerText:function(element)
|
608 |
+
{element=$(element);if(element.innerText&&!Prototype.Browser.Opera){return element.innerText}
|
609 |
+
return element.innerHTML.stripScripts().unescapeHTML().replace(/[\n\r\s]+/g,' ');}});if(!("console"in window)||!("firebug"in console))
|
610 |
+
{var names=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];window.console={};for(var i=0;i<names.length;++i)
|
611 |
+
window.console[names[i]]=function(){}};VarienForm=Class.create();VarienForm.prototype={initialize:function(formId,firstFieldFocus){this.form=$(formId);if(!this.form){return;}
|
612 |
+
this.cache=$A();this.currLoader=false;this.currDataIndex=false;this.validator=new Validation(this.form);this.elementFocus=this.elementOnFocus.bindAsEventListener(this);this.elementBlur=this.elementOnBlur.bindAsEventListener(this);this.childLoader=this.onChangeChildLoad.bindAsEventListener(this);this.highlightClass='highlight';this.extraChildParams='';this.firstFieldFocus=firstFieldFocus||false;this.bindElements();if(this.firstFieldFocus){try{Form.Element.focus(Form.findFirstElement(this.form))}
|
613 |
+
catch(e){}}},submit:function(url){if(this.validator&&this.validator.validate()){this.form.submit();}
|
614 |
+
return false;},bindElements:function(){var elements=Form.getElements(this.form);for(var row in elements){if(elements[row].id){Event.observe(elements[row],'focus',this.elementFocus);Event.observe(elements[row],'blur',this.elementBlur);}}},elementOnFocus:function(event){var element=Event.findElement(event,'fieldset');if(element){Element.addClassName(element,this.highlightClass);}},elementOnBlur:function(event){var element=Event.findElement(event,'fieldset');if(element){Element.removeClassName(element,this.highlightClass);}},setElementsRelation:function(parent,child,dataUrl,first){if(parent=$(parent)){if(!this.cache[parent.id]){this.cache[parent.id]=$A();this.cache[parent.id]['child']=child;this.cache[parent.id]['dataUrl']=dataUrl;this.cache[parent.id]['data']=$A();this.cache[parent.id]['first']=first||false;}
|
615 |
+
Event.observe(parent,'change',this.childLoader);}},onChangeChildLoad:function(event){element=Event.element(event);this.elementChildLoad(element);},elementChildLoad:function(element,callback){this.callback=callback||false;if(element.value){this.currLoader=element.id;this.currDataIndex=element.value;if(this.cache[element.id]['data'][element.value]){this.setDataToChild(this.cache[element.id]['data'][element.value]);}
|
616 |
+
else{new Ajax.Request(this.cache[this.currLoader]['dataUrl'],{method:'post',parameters:{"parent":element.value},onComplete:this.reloadChildren.bind(this)});}}},reloadChildren:function(transport){var data=eval('('+transport.responseText+')');this.cache[this.currLoader]['data'][this.currDataIndex]=data;this.setDataToChild(data);},setDataToChild:function(data){if(data.length){var child=$(this.cache[this.currLoader]['child']);if(child){var html='<select name="'+child.name+'" id="'+child.id+'" class="'+child.className+'" title="'+child.title+'" '+this.extraChildParams+'>';if(this.cache[this.currLoader]['first']){html+='<option value="">'+this.cache[this.currLoader]['first']+'</option>';}
|
617 |
+
for(var i in data){if(data[i].value){html+='<option value="'+data[i].value+'"';if(child.value&&(child.value==data[i].value||child.value==data[i].label)){html+=' selected';}
|
618 |
+
html+='>'+data[i].label+'</option>';}}
|
619 |
+
html+='</select>';Element.insert(child,{before:html});Element.remove(child);}}
|
620 |
+
else{var child=$(this.cache[this.currLoader]['child']);if(child){var html='<input type="text" name="'+child.name+'" id="'+child.id+'" class="'+child.className+'" title="'+child.title+'" '+this.extraChildParams+'>';Element.insert(child,{before:html});Element.remove(child);}}
|
621 |
+
this.bindElements();if(this.callback){this.callback();}}}
|
622 |
+
RegionUpdater=Class.create();RegionUpdater.prototype={initialize:function(countryEl,regionTextEl,regionSelectEl,regions,disableAction,zipEl)
|
623 |
+
{this.countryEl=$(countryEl);this.regionTextEl=$(regionTextEl);this.regionSelectEl=$(regionSelectEl);this.zipEl=$(zipEl);this.regions=regions;this.disableAction=(typeof disableAction=='undefined')?'hide':disableAction;this.zipOptions=(typeof zipOptions=='undefined')?false:zipOptions;if(this.regionSelectEl.options.length<=1){this.update();}
|
624 |
+
Event.observe(this.countryEl,'change',this.update.bind(this));},update:function()
|
625 |
+
{if(this.regions[this.countryEl.value]){var i,option,region,def;if(this.regionTextEl){def=this.regionTextEl.value.toLowerCase();this.regionTextEl.value='';}
|
626 |
+
if(!def){def=this.regionSelectEl.getAttribute('defaultValue');}
|
627 |
+
this.regionSelectEl.options.length=1;for(regionId in this.regions[this.countryEl.value]){region=this.regions[this.countryEl.value][regionId];option=document.createElement('OPTION');option.value=regionId;option.text=region.name;if(this.regionSelectEl.options.add){this.regionSelectEl.options.add(option);}else{this.regionSelectEl.appendChild(option);}
|
628 |
+
if(regionId==def||region.name.toLowerCase()==def||region.code.toLowerCase()==def){this.regionSelectEl.value=regionId;}}
|
629 |
+
if(this.disableAction=='hide'){if(this.regionTextEl){this.regionTextEl.style.display='none';}
|
630 |
+
this.regionSelectEl.style.display='';}else if(this.disableAction=='disable'){if(this.regionTextEl){this.regionTextEl.disabled=true;}
|
631 |
+
this.regionSelectEl.disabled=false;}
|
632 |
+
this.setMarkDisplay(this.regionSelectEl,true);}else{if(this.disableAction=='hide'){if(this.regionTextEl){this.regionTextEl.style.display='';}
|
633 |
+
this.regionSelectEl.style.display='none';Validation.reset(this.regionSelectEl);}else if(this.disableAction=='disable'){if(this.regionTextEl){this.regionTextEl.disabled=false;}
|
634 |
+
this.regionSelectEl.disabled=true;}else if(this.disableAction=='nullify'){this.regionSelectEl.options.length=1;this.regionSelectEl.value='';this.regionSelectEl.selectedIndex=0;this.lastCountryId='';}
|
635 |
+
this.setMarkDisplay(this.regionSelectEl,false);}
|
636 |
+
var zipUpdater=new ZipUpdater(this.countryEl.value,this.zipEl);zipUpdater.update();},setMarkDisplay:function(elem,display){elem=$(elem);var labelElement=elem.up(0).down('label > span.required')||elem.up(1).down('label > span.required')||elem.up(0).down('label.required > em')||elem.up(1).down('label.required > em');if(labelElement){inputElement=labelElement.up().next('input');if(display){labelElement.show();if(inputElement){inputElement.addClassName('required-entry');}}else{labelElement.hide();if(inputElement){inputElement.removeClassName('required-entry');}}}}}
|
637 |
+
ZipUpdater=Class.create();ZipUpdater.prototype={initialize:function(country,zipElement)
|
638 |
+
{this.country=country;this.zipElement=$(zipElement);},update:function()
|
639 |
+
{if(typeof optionalZipCountries=='undefined'){return false;}
|
640 |
+
if(this.zipElement!=undefined){this._setPostcodeOptional();}else{Event.observe(window,"load",this._setPostcodeOptional.bind(this));}},_setPostcodeOptional:function()
|
641 |
+
{this.zipElement=$(this.zipElement);if(this.zipElement==undefined){return false;}
|
642 |
+
var label=$$('label[for="'+this.zipElement.id+'"]')[0];if(label!=undefined){var wildCard=label.down('em')||label.down('span.required');}
|
643 |
+
if(optionalZipCountries.indexOf(this.country)!=-1){while(this.zipElement.hasClassName('required-entry')){this.zipElement.removeClassName('required-entry');}
|
644 |
+
if(wildCard!=undefined){wildCard.hide();}}else{this.zipElement.addClassName('required-entry');if(wildCard!=undefined){wildCard.show();}}}};function toggleMenu(el,over)
|
645 |
+
{if(over){Element.addClassName(el,'over');}
|
646 |
+
else{Element.removeClassName(el,'over');}};var Translate=Class.create();Translate.prototype={initialize:function(data){this.data=$H(data);},translate:function(){var args=arguments;var text=arguments[0];if(this.data.get(text)){return this.data.get(text);}
|
647 |
+
return text;},add:function(){if(arguments.length>1){this.data.set(arguments[0],arguments[1]);}else if(typeof arguments[0]=='object'){$H(arguments[0]).each(function(pair){this.data.set(pair.key,pair.value);}.bind(this));}}};if(!window.Mage)var Mage={};Mage.Cookies={};Mage.Cookies.expires=null;Mage.Cookies.path='/';Mage.Cookies.domain=null;Mage.Cookies.secure=false;Mage.Cookies.set=function(name,value){var argv=arguments;var argc=arguments.length;var expires=(argc>2)?argv[2]:Mage.Cookies.expires;var path=(argc>3)?argv[3]:Mage.Cookies.path;var domain=(argc>4)?argv[4]:Mage.Cookies.domain;var secure=(argc>5)?argv[5]:Mage.Cookies.secure;document.cookie=name+"="+escape(value)+
|
648 |
+
((expires==null)?"":("; expires="+expires.toGMTString()))+
|
649 |
+
((path==null)?"":("; path="+path))+
|
650 |
+
((domain==null)?"":("; domain="+domain))+
|
651 |
+
((secure==true)?"; secure":"");};Mage.Cookies.get=function(name){var arg=name+"=";var alen=arg.length;var clen=document.cookie.length;var i=0;var j=0;while(i<clen){j=i+alen;if(document.cookie.substring(i,j)==arg)
|
652 |
+
return Mage.Cookies.getCookieVal(j);i=document.cookie.indexOf(" ",i)+1;if(i==0)
|
653 |
+
break;}
|
654 |
+
return null;};Mage.Cookies.clear=function(name){if(Mage.Cookies.get(name)){document.cookie=name+"="+"; expires=Thu, 01-Jan-70 00:00:01 GMT";}};Mage.Cookies.getCookieVal=function(offset){var endstr=document.cookie.indexOf(";",offset);if(endstr==-1){endstr=document.cookie.length;}
|
655 |
+
return unescape(document.cookie.substring(offset,endstr));};
|
var/minifycache/minify_95afbee78c0f49b564250d655add1ca9.gz
ADDED
Binary file
|
var/minifycache/minify_9c58e36f7d68249efd03de258c77c943
ADDED
@@ -0,0 +1,1097 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.widget{display:inline}.widget .widget-title{clear:both;padding:15px
|
2 |
+
0 0;margin:0
|
3 |
+
0 7px}.widget .widget-title
|
4 |
+
h2{font-size:15px;font-weight:bold;color:#e25203}.widget .mini-products-images-list .product-image{display:block;width:76px;height:76px;border:1px
|
5 |
+
solid #a9a9a9;margin:0
|
6 |
+
auto}.widget .mini-products-images-list
|
7 |
+
li.item{float:left;width:77px;height:77px}.widget-new-products{display:block}.col-main .widget-new-products{margin:7px
|
8 |
+
0}.widget-new-products .products-grid .product-image,
|
9 |
+
.widget-new-products .products-list .product-image{width:85px;height:85px}.widget-new-products .products-list .product-shop{margin-left:100px}.sidebar .widget-new-products
|
10 |
+
.block{font-size:11px;line-height:1.25}.sidebar .widget-new-products .block-title
|
11 |
+
strong{background:url(/FM0015_Speedster/skin/frontend/base/default/images/widgets/i_widget-new.gif) 0 1px no-repeat;padding-left:21px;color:#dc5033}.widget-viewed{display:block}.col-main .widget-viewed{margin:7px
|
12 |
+
0}.widget-viewed .products-grid .product-image,
|
13 |
+
.widget-viewed .products-list .product-image{width:85px;height:85px}.widget-viewed .products-list .product-shop{margin-left:100px}.sidebar .widget-viewed
|
14 |
+
.block{font-size:11px;line-height:1.25}.sidebar .widget-viewed .block-title
|
15 |
+
strong{background:url(/FM0015_Speedster/skin/frontend/base/default/images/widgets/i_block-list.gif) 0 0 no-repeat;padding-left:21px}.widget-compared{display:block}.col-main .widget-compared{margin:7px
|
16 |
+
0}.widget-compared .products-grid .product-image,
|
17 |
+
.widget-compared .products-list .product-image{width:85px;height:85px}.widget-compared .products-list .product-shop{margin-left:100px}.sidebar .widget-compared
|
18 |
+
.block{font-size:11px;line-height:1.25}.sidebar .widget-compared .block-title
|
19 |
+
strong{background:url(/FM0015_Speedster/skin/frontend/base/default/images/widgets/i_block-list.gif) 0 0 no-repeat;padding-left:21px}.widget-static-block{}.sidebar .widget-static-block{display:block;margin:0
|
20 |
+
0 15px}.top-container .widget
|
21 |
+
a{padding:0
|
22 |
+
0 0 7px}.bottom-container .widget
|
23 |
+
a{padding:0
|
24 |
+
3px}.widget-product-link-inline{display:inline}.col-main .widget-product-link{display:block;text-align:right;margin:7px
|
25 |
+
0}.col-main .widget-product-link
|
26 |
+
a{background:url(/FM0015_Speedster/skin/frontend/base/default/images/widgets/i_widget-link.gif) 100% 4px no-repeat;padding-right:15px}.sidebar .widget-product-link{display:block;margin:0
|
27 |
+
0 15px;padding:0
|
28 |
+
10px}.sidebar .widget-product-link
|
29 |
+
a{background:url(/FM0015_Speedster/skin/frontend/base/default/images/widgets/i_widget-link.gif) 100% 4px no-repeat;padding:0
|
30 |
+
15px 0 0}.widget-category-link-inline{display:inline}.col-main .widget-category-link{display:block;text-align:right;margin:7px
|
31 |
+
0}.col-main .widget-category-link
|
32 |
+
a{background:url(/FM0015_Speedster/skin/frontend/base/default/images/widgets/i_widget-link.gif) 100% 4px no-repeat;padding-right:15px}.sidebar .widget-category-link{display:block;margin:0
|
33 |
+
0 15px;padding:0
|
34 |
+
10px}.sidebar .widget-category-link
|
35 |
+
a{background:url(/FM0015_Speedster/skin/frontend/base/default/images/widgets/i_widget-link.gif) 100% 4px no-repeat;padding:0
|
36 |
+
15px 0 0}.widget-cms-link-inline{display:inline}.col-main .widget-cms-link{display:block;text-align:right;margin:7px
|
37 |
+
0}.col-main .widget-cms-link
|
38 |
+
a{background:url(/FM0015_Speedster/skin/frontend/base/default/images/widgets/i_widget-link.gif) 100% 4px no-repeat;padding-right:15px}.sidebar .widget-cms-link{display:block;margin:0
|
39 |
+
0 15px;padding:0
|
40 |
+
10px}.sidebar .widget-cms-link
|
41 |
+
a{background:url(/FM0015_Speedster/skin/frontend/base/default/images/widgets/i_widget-link.gif) 100% 4px no-repeat;padding:0
|
42 |
+
15px 0 0}*{margin:0;padding:0}body{background:#496778 url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_body.gif) 50% 0 repeat-y;font:12px/1.55 Arial,Helvetica,sans-serif;color:#2f2f2f;text-align:center}img{border:0;vertical-align:top}a{color:#1e7ec8;text-decoration:underline}a:hover{text-decoration:none}:focus{outline:0}h1,h2,h3,h4,h5,h6{margin:0
|
43 |
+
0 5px;line-height:1.35;color:#0a263c}h1{font-size:20px;font-weight:normal}h2{font-size:18px;font-weight:normal}h3{font-size:16px;font-weight:bold}h4{font-size:14px;font-weight:bold}h5{font-size:12px;font-weight:bold}h6{font-size:11px;font-weight:bold}form{display:inline}fieldset{border:0}legend{display:none}table{border:0;border-spacing:0;empty-cells:show;font-size:100%}caption,th,td{vertical-align:top;text-align:left;font-weight:normal}p{margin:0
|
44 |
+
0 10px}strong{font-weight:bold}address{font-style:normal;line-height:1.35}cite{font-style:normal}q,blockquote{quotes:none}q:before,q:after{content:''}small,big{font-size:1em}ul,ol{list-style:none}.hidden{display:block !important;border:0
|
45 |
+
!important;margin:0
|
46 |
+
!important;padding:0
|
47 |
+
!important;font-size:0 !important;line-height:0 !important;width:0 !important;height:0 !important;overflow:hidden !important}.nobr{white-space:nowrap !important}.wrap{white-space:normal !important}.a-left{text-align:left !important}.a-center{text-align:center !important}.a-right{text-align:right !important}.v-top{vertical-align:top}.v-middle{vertical-align:middle}.f-left,.left{float:left !important}.f-right,.right{float:right !important}.f-none{float:none !important}.f-fix{float:left;width:100%}.no-display{display:none}.no-margin{margin:0
|
48 |
+
!important}.no-padding{padding:0
|
49 |
+
!important}.no-bg{background:none !important}.wrapper{min-width:954px}.page{}.page-print{background:#fff;padding:25px
|
50 |
+
30px;text-align:left}.page-empty{background:#fff;padding:20px;text-align:left}.page-popup{background:#fff;padding:25px
|
51 |
+
30px;text-align:left}.main-container{background:#fbfaf6 url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_main1.gif) 50% 0 no-repeat}.main{width:900px;margin:0
|
52 |
+
auto;min-height:400px;padding:25px
|
53 |
+
25px 80px;background:#fffffe url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_main2.gif) 0 0 no-repeat;text-align:left}.col-left{float:left;width:195px;padding:0
|
54 |
+
0 1px}.col-main{float:left;width:685px;padding:0
|
55 |
+
0 1px}.col-right{float:right;width:195px;padding:0
|
56 |
+
0 1px}.col1-layout .col-main{float:none;width:auto}.col2-left-layout .col-main{float:right}.col2-right-layout .col-main{}.col3-layout .col-main{width:475px;margin-left:17px}.col3-layout .col-wrapper{float:left;width:687px}.col3-layout .col-wrapper .col-main{float:right}.col2-set .col-1{float:left;width:48.5%}.col2-set .col-2{float:right;width:48.5%}.col2-set .col-narrow{width:32%}.col2-set .col-wide{width:65%}.col3-set .col-1{float:left;width:32%}.col3-set .col-2{float:left;width:32%;margin-left:2%}.col3-set .col-3{float:right;width:32%}.col4-set .col-1{float:left;width:23.5%}.col4-set .col-2{float:left;width:23.5%;margin:0
|
57 |
+
2%}.col4-set .col-3{float:left;width:23.5%}.col4-set .col-4{float:right;width:23.5%}input,select,textarea,button{font:12px/15px Arial,Helvetica,sans-serif;vertical-align:middle;color:#2f2f2f}input.input-text,select,textarea{background:#fff;border:1px
|
58 |
+
solid #b6b6b6}input.input-text,textarea{padding:2px}select{padding:1px}select
|
59 |
+
option{padding-right:10px}select.multiselect
|
60 |
+
option{border-bottom:1px solid #b6b6b6;padding:2px
|
61 |
+
5px}select.multiselect option:last-child{border-bottom:0}textarea{overflow:auto}input.radio{margin-right:3px}input.checkbox{margin-right:3px}input.qty{width:2.5em !important}button.button::-moz-focus-inner{padding:0;border:0}button.button{-webkit-border-fit:lines}button.button{overflow:visible;width:auto;border:0;padding:0;margin:0;background:transparent;cursor:pointer}button.button
|
62 |
+
span{display:block;height:19px;border:1px
|
63 |
+
solid #de5400;background:#f18200;padding:0
|
64 |
+
8px;font:bold 12px/19px Arial, Helvetica, sans-serif;text-align:center;white-space:nowrap;color:#fff}button.button span
|
65 |
+
span{border:0;padding:0}button.disabled
|
66 |
+
span{border-color:#bbb !important;background:#bbb !important}button.btn-checkout
|
67 |
+
span{height:40px;border:0;background:url(/FM0015_Speedster/skin/frontend/default/default/images/btn_checkout.gif) 0 0 no-repeat;padding:0
|
68 |
+
0 0 9px;font:bold 15px/40px Arial, Helvetica, sans-serif;color:#fff}button.btn-checkout span
|
69 |
+
span{background-position:100% 0;padding:0
|
70 |
+
25px 0 16px}button.btn-checkout.no-checkout
|
71 |
+
span{background-position:0 100%;color:#b8baba}button.btn-checkout.no-checkout span
|
72 |
+
span{background-position:100% 100%}p.control input.checkbox,
|
73 |
+
p.control
|
74 |
+
input.radio{margin-right:6px}input.input-text:focus,select:focus,textarea:focus{background-color:#edf7fd}.form-list
|
75 |
+
li{margin:0
|
76 |
+
0 8px}.form-list
|
77 |
+
label{float:left;color:#666;font-weight:bold;position:relative;z-index:0}.form-list
|
78 |
+
label.required{}.form-list label.required
|
79 |
+
em{float:right;font-style:normal;color:#eb340a;position:absolute;top:0;right:-8px}.form-list li.control
|
80 |
+
label{float:none}.form-list li.control input.radio,
|
81 |
+
.form-list li.control
|
82 |
+
input.checkbox{margin-right:6px}.form-list li.control .input-box{clear:none;display:inline;width:auto}.form-list .input-box{display:block;clear:both;width:260px}.form-list
|
83 |
+
.field{float:left;width:275px}.form-list input.input-text{width:254px}.form-list
|
84 |
+
textarea{width:254px;height:10em}.form-list
|
85 |
+
select{width:260px}.form-list li.wide .input-box{width:535px}.form-list li.wide input.input-text{width:529px}.form-list li.wide
|
86 |
+
textarea{width:529px}.form-list li.wide
|
87 |
+
select{width:535px}.form-list li.additional-row{border-top:1px solid #ccc;margin-top:10px;padding-top:7px}.form-list li.additional-row .btn-remove{float:right;margin:5px
|
88 |
+
0 0}.form-list .input-range input.input-text{width:74px}.form-list .customer-name-prefix .input-box,
|
89 |
+
.form-list .customer-name-suffix .input-box,
|
90 |
+
.form-list .customer-name-prefix-suffix .input-box,
|
91 |
+
.form-list .customer-name-prefix-middlename .input-box,
|
92 |
+
.form-list .customer-name-middlename-suffix .input-box,
|
93 |
+
.form-list .customer-name-prefix-middlename-suffix .input-box{width:auto}.form-list .name-prefix{width:65px}.form-list .name-prefix
|
94 |
+
select{width:55px}.form-list .name-prefix input.input-text{width:49px}.form-list .name-suffix{width:65px}.form-list .name-suffix
|
95 |
+
select{width:55px}.form-list .name-suffix input.input-text{width:49px}.form-list .name-middlename{width:70px}.form-list .name-middlename input.input-text{width:49px}.form-list .customer-name-prefix-middlename-suffix .name-firstname,
|
96 |
+
.form-list .customer-name-prefix-middlename .name-firstname{width:140px}.form-list .customer-name-prefix-middlename-suffix .name-firstname input.input-text,
|
97 |
+
.form-list .customer-name-prefix-middlename .name-firstname input.input-text{width:124px}.form-list .customer-name-prefix-middlename-suffix .name-lastname{width:205px}.form-list .customer-name-prefix-middlename-suffix .name-lastname input.input-text{width:189px}.form-list .customer-name-prefix-suffix .name-firstname{width:210px}.form-list .customer-name-prefix-suffix .name-lastname{width:205px}.form-list .customer-name-prefix-suffix .name-firstname input.input-text,
|
98 |
+
.form-list .customer-name-prefix-suffix .name-lastname input.input-text{width:189px}.form-list .customer-name-prefix-suffix .name-firstname{width:210px}.form-list .customer-name-prefix-suffix .name-lastname{width:205px}.form-list .customer-name-prefix-suffix .name-firstname input.input-text,
|
99 |
+
.form-list .customer-name-prefix-suffix .name-lastname input.input-text{width:189px}.form-list .customer-name-prefix .name-firstname,
|
100 |
+
.form-list .customer-name-middlename .name-firstname{width:210px}.form-list .customer-name-suffix .name-lastname,
|
101 |
+
.form-list .customer-name-middlename .name-firstname,
|
102 |
+
.form-list .customer-name-middlename-suffix .name-firstname,
|
103 |
+
.form-list .customer-name-middlename-suffix .name-lastname{width:205px}.form-list .customer-name-prefix .name-firstname input.input-text,
|
104 |
+
.form-list .customer-name-suffix .name-lastname input.input-text,
|
105 |
+
.form-list .customer-name-middlename .name-firstname input.input-text,
|
106 |
+
.form-list .customer-name-middlename-suffix .name-firstname input.input-text,
|
107 |
+
.form-list .customer-name-middlename-suffix .name-lastname input.input-text{width:189px}.form-list .customer-dob .dob-month,
|
108 |
+
.form-list .customer-dob .dob-day,
|
109 |
+
.form-list .customer-dob .dob-year{float:left;width:85px}.form-list .customer-dob input.input-text{display:block;width:74px}.form-list .customer-dob
|
110 |
+
label{font-size:10px;font-weight:normal;color:#888}.form-list .customer-dob .dob-day,
|
111 |
+
.form-list .customer-dob .dob-month{width:60px}.form-list .customer-dob .dob-day input.input-text,
|
112 |
+
.form-list .customer-dob .dob-month input.input-text{width:46px}.form-list .customer-dob .dob-year{width:140px}.form-list .customer-dob .dob-year input.input-text{width:134px}.buttons-set{clear:both;margin:4em
|
113 |
+
0 0;padding:8px
|
114 |
+
0 0;border-top:1px solid #e4e4e4;text-align:right}.buttons-set
|
115 |
+
p.required{margin:0
|
116 |
+
0 10px}.buttons-set .back-link{float:left;margin:0}.buttons-set
|
117 |
+
button.button{float:right;margin-left:5px}.buttons-set-order{margin:10px
|
118 |
+
0 0}.buttons-set-order .please-wait{padding:12px
|
119 |
+
7px 0 0}.fieldset{border:1px
|
120 |
+
solid #bbafa0;background:#fbfaf6;padding:22px
|
121 |
+
25px 12px 33px;margin:28px
|
122 |
+
0}.fieldset
|
123 |
+
.legend{float:left;font-weight:bold;font-size:13px;border:1px
|
124 |
+
solid #f19900;background:#f9f3e3;color:#e76200;margin:-33px 0 0 -10px;padding:0
|
125 |
+
8px;position:relative}.validation-advice{clear:both;min-height:13px;margin:3px
|
126 |
+
0 0;padding-left:17px;font-size:11px;font-weight:bold;line-height:13px;background:url(/FM0015_Speedster/skin/frontend/default/default/images/validation_advice_bg.gif) 2px 0 no-repeat;color:#eb340a}.validation-failed{border:1px
|
127 |
+
dashed #eb340a !important;background:#faebe7 !important}.validation-passed{}p.required{font-size:11px;text-align:right;color:#EB340A}.v-fix{float:left}.v-fix .validation-advice{display:block;width:12em;margin-right:-12em;position:relative}.success{color:#3d6611;font-weight:bold}.error{color:#df280a;font-weight:bold}.notice{color:#e26703}.messages,
|
128 |
+
.messages
|
129 |
+
ul{list-style:none !important;margin:0
|
130 |
+
!important;padding:0
|
131 |
+
!important}.messages{width:100%;overflow:hidden}.messages
|
132 |
+
li{margin:0
|
133 |
+
0 10px !important}.messages li
|
134 |
+
li{margin:0
|
135 |
+
0 3px !important}.error-msg,.success-msg,.note-msg,.notice-msg{border-style:solid !important;border-width:1px !important;background-position:10px 9px !important;background-repeat:no-repeat !important;min-height:24px !important;padding:8px
|
136 |
+
8px 8px 32px !important;font-size:11px !important;font-weight:bold !important}.error-msg{border-color:#f16048;background-color:#faebe7;background-image:url(/FM0015_Speedster/skin/frontend/default/default/images/i_msg-error.gif);color:#df280a}.success-msg{border-color:#446423;background-color:#eff5ea;background-image:url(/FM0015_Speedster/skin/frontend/default/default/images/i_msg-success.gif);color:#3d6611}.note-msg,.notice-msg{border-color:#fcd344;background-color:#fafaec;background-image:url(/FM0015_Speedster/skin/frontend/default/default/images/i_msg-note.gif);color:#3d6611}.breadcrumbs{font-size:11px;line-height:1.25;margin:0
|
137 |
+
0 13px}.breadcrumbs
|
138 |
+
li{display:inline}.breadcrumbs li
|
139 |
+
strong{font-weight:bold}.page-title{width:100%;overflow:hidden;border-bottom:1px solid #ccc;margin:0
|
140 |
+
0 25px}.page-title h1,
|
141 |
+
.page-title
|
142 |
+
h2{margin:0;font-size:20px;color:#0a263c}.page-title
|
143 |
+
.separator{margin:0
|
144 |
+
3px}.page-title .link-rss{float:right;margin:7px
|
145 |
+
0 0}.title-buttons{text-align:right}.title-buttons h1,
|
146 |
+
.title-buttons h2,
|
147 |
+
.title-buttons h3,
|
148 |
+
.title-buttons h4,
|
149 |
+
.title-buttons h5,
|
150 |
+
.title-buttons
|
151 |
+
h6{float:left}.subtitle{clear:both;padding:15px
|
152 |
+
0 0;font-size:15px;font-weight:bold;margin:0
|
153 |
+
0 6px;color:#e25203}.pager{font-size:11px;background:#fff url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_toolbar.gif) 0 100% repeat-x;padding:4px
|
154 |
+
8px;border-top:1px solid #e2e2e2;text-align:center}.pager
|
155 |
+
.amount{float:left;margin:0}.pager
|
156 |
+
.limiter{float:right}.pager .limiter
|
157 |
+
label{vertical-align:middle}.pager .limiter
|
158 |
+
select{padding:0;margin:0
|
159 |
+
0 1px;vertical-align:middle}.pager
|
160 |
+
.pages{margin:0
|
161 |
+
140px}.pager .pages
|
162 |
+
ol{display:inline}.pager .pages
|
163 |
+
li{display:inline;margin:0
|
164 |
+
2px}.pager .pages
|
165 |
+
.current{}.sorter{font-size:11px;background:#fff url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_toolbar.gif) 0 100% repeat-x;padding:3px
|
166 |
+
8px;border-top:1px solid #e2e2e2}.sorter .view-mode{float:left;margin:0}.sorter .sort-by{float:right;padding-right:36px}.sorter .sort-by
|
167 |
+
label{vertical-align:middle}.sorter .sort-by
|
168 |
+
select{padding:0;margin:0
|
169 |
+
0 1px;vertical-align:middle}.sorter .link-feed{}.toolbar{}.toolbar
|
170 |
+
.pager{padding:3px
|
171 |
+
8px;border-bottom:1px solid #fff}.toolbar
|
172 |
+
.sorter{border-bottom:1px solid #fff}.toolbar-bottom{}.data-table{width:100%;border:1px
|
173 |
+
solid #bebcb7}.data-table
|
174 |
+
.odd{background:#f8f7f5}.data-table
|
175 |
+
.even{background:#eeeded}.data-table td.last,
|
176 |
+
.data-table
|
177 |
+
th.last{border-right:0}.data-table tr.last th,
|
178 |
+
.data-table tr.last
|
179 |
+
td{border-bottom:0 !important}.data-table
|
180 |
+
th{padding:3px
|
181 |
+
8px;font-weight:bold}.data-table
|
182 |
+
td{padding:3px
|
183 |
+
8px}.data-table thead
|
184 |
+
th{font-weight:bold;border-right:1px solid #c2d3e0;padding:2px
|
185 |
+
8px;color:#0a263c;white-space:nowrap;vertical-align:middle}.data-table thead
|
186 |
+
th.wrap{white-space:normal}.data-table thead th a,
|
187 |
+
.data-table thead th a:hover{color:#fff}.data-table thead
|
188 |
+
th{background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_th.gif) repeat-x 0 100% #d9e5ee}.data-table thead th .tax-flag{font-size:11px;white-space:nowrap}.data-table
|
189 |
+
tfoot{border-bottom:1px solid #d9dde3}.data-table tfoot
|
190 |
+
tr.first{background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_tfoot.gif) 0 0 repeat-x}.data-table tfoot
|
191 |
+
tr{background-color:#dee5e8 !important}.data-table tfoot
|
192 |
+
td{padding-top:1px;padding-bottom:1px;border-bottom:0;border-right:1px solid #d9dde3}.data-table tfoot
|
193 |
+
strong{font-size:16px}.data-table tbody th,
|
194 |
+
.data-table tbody
|
195 |
+
td{border-bottom:1px solid #d9dde3;border-right:1px solid #d9dde3}.data-table tbody.odd
|
196 |
+
tr{background:#f8f7f5 !important}.data-table tbody.even
|
197 |
+
tr{background:#f6f6f6 !important}.data-table tbody.odd tr td,
|
198 |
+
.data-table tbody.even tr
|
199 |
+
td{border-bottom:0}.data-table tbody.odd tr.border td,
|
200 |
+
.data-table tbody.even tr.border
|
201 |
+
td{border-bottom:1px solid #d9dde3}.data-table tbody td .option-label{font-weight:bold;font-style:italic}.data-table tbody td .option-value{padding-left:10px}tr.tax-total{cursor:pointer}tr.tax-total
|
202 |
+
td{}tr.tax-total .tax-collapse{float:right;text-align:right;padding-left:20px;background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_collapse.gif) 0 5px no-repeat;cursor:pointer}tr.show-details .tax-collapse{background-position:0 -52px}tr.show-details
|
203 |
+
td{}tr.tax-details
|
204 |
+
td{font-size:11px;background-color:#dae1e4;color:#626465}tr.tax-details-first
|
205 |
+
td{border-top:1px solid #d2d8db}.cart-tax-info{display:block}.cart-tax-info,
|
206 |
+
.cart-tax-info .cart-price{padding-right:20px}.cart-tax-total{display:block;padding-right:20px;background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_collapse.gif) 100% 5px no-repeat;cursor:pointer}.cart-tax-info .price,
|
207 |
+
.cart-tax-total
|
208 |
+
.price{display:inline !important;font-weight:normal !important}.cart-tax-total-expanded{background-position:100% -52px}.std
|
209 |
+
.subtitle{padding:0}.std
|
210 |
+
ol.ol{list-style:decimal outside;padding-left:1.5em}.std
|
211 |
+
ul.disc{margin:0
|
212 |
+
0 10px}.std
|
213 |
+
ul.disc{list-style:disc outside;padding-left:18px}.std dl
|
214 |
+
dt{font-weight:bold}.std dl
|
215 |
+
dd{margin:0
|
216 |
+
0 10px}.links
|
217 |
+
li{display:inline}.links
|
218 |
+
li.first{padding-left:0 !important}.links
|
219 |
+
li.last{background:none !important;padding-right:0 !important}.link-cart{color:#dc6809 !important;font-weight:bold}.link-wishlist{color:#dc6809 !important;font-weight:bold}.link-reorder{font-weight:bold;color:#dc6809 !important}.link-compare{font-weight:bold}.link-print{font-weight:bold;color:#dc6809}.link-rss{background:url(/FM0015_Speedster/skin/frontend/default/default/images/i_rss.gif) 0 2px no-repeat;padding-left:18px;line-height:14px;white-space:nowrap}.btn-remove{display:block;width:11px;height:11px;font-size:0;line-height:0;background:url(/FM0015_Speedster/skin/frontend/default/default/images/btn_remove.gif) 0 0 no-repeat;text-indent:-999em;overflow:hidden}.btn-remove2{display:block;width:16px;height:16px;font-size:0;line-height:0;background:url(/FM0015_Speedster/skin/frontend/default/default/images/btn_trash.gif) 0 0 no-repeat;text-indent:-999em;overflow:hidden}.separator{margin:0
|
220 |
+
3px}.divider{clear:both;display:block;font-size:0;line-height:0;height:1px;margin:10px
|
221 |
+
0;background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_divider1.gif) 0 50% repeat-x;text-indent:-999em;overflow:hidden}.noscript{border:1px
|
222 |
+
solid #ddd;border-width:0 0 1px;background:#ffff90;font-size:12px;line-height:1.25;text-align:center;color:#2f2f2f}.noscript .noscript-inner{width:950px;margin:0
|
223 |
+
auto;padding:12px
|
224 |
+
0 12px;background:url(/FM0015_Speedster/skin/frontend/default/default/images/i_notice.gif) 20px 50% no-repeat}.noscript
|
225 |
+
p{margin:0}.demo-notice{margin:0;padding:6px
|
226 |
+
10px;background:#d75f07;font-size:12px;line-height:1.15;text-align:center;color:#fff}.logo{float:left}.header-container{border-top:5px solid #0d2131;border-bottom:1px solid #415966;background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_header.jpg) 50% 0 repeat}.header{width:930px;margin:0
|
227 |
+
auto;padding:10px;text-align:right;position:relative;z-index:10}.header
|
228 |
+
.logo{float:left;margin:3px
|
229 |
+
0 10px 12px;text-decoration:none !important}.header .logo
|
230 |
+
strong{position:absolute;top:-999em;left:-999em;width:0;height:0;font-size:0;line-height:0;text-indent:-999em;overflow:hidden}.header
|
231 |
+
h1.logo{margin:0}.header .quick-access{float:right;width:600px;padding:28px
|
232 |
+
10px 0 0}.header .welcome-msg{margin:0;color:#fff;text-align:right}.header .form-search{position:absolute;top:0;right:29px;width:315px;height:30px;background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_form-search.gif) 0 0 no-repeat;padding:1px
|
233 |
+
0 0 16px}.header .form-search
|
234 |
+
label{float:left;width:24px;height:21px;text-align:left;text-indent:-999em;overflow:hidden}.header .form-search input.input-text{float:left;border-color:#5c7989;width:209px;margin-right:4px}.header .form-search
|
235 |
+
button.button{float:left}.header .form-search button.button
|
236 |
+
span{border:0;height:21px;background:url(/FM0015_Speedster/skin/frontend/default/default/images/btn_search.gif) 0 0 no-repeat;padding:0
|
237 |
+
0 0 3px;font:bold 11px/21px Tahoma, Verdana, Arial, sans-serif}.header .form-search button.button span
|
238 |
+
span{background-position:100% 0;padding:0
|
239 |
+
6px 0 3px}.header .form-search .search-autocomplete{z-index:999;left:40px !important;top:22px !important}.header .form-search .search-autocomplete
|
240 |
+
ul{border:1px
|
241 |
+
solid #5c7989;background-color:#f9f5f0}.header .form-search .search-autocomplete
|
242 |
+
li{text-align:left;border-bottom:1px solid #f4eee7;padding:2px
|
243 |
+
8px 1px 8px;cursor:pointer}.header .form-search .search-autocomplete li
|
244 |
+
.amount{float:right;font-weight:bold}.header .form-search .search-autocomplete
|
245 |
+
li.odd{background-color:#fffefb}.header .form-search .search-autocomplete
|
246 |
+
li.selected{background-color:#f7e8dd}.header .form-language{clear:both;padding:5px
|
247 |
+
0 0;text-align:right}.header .form-language
|
248 |
+
label{font-weight:bold;padding-right:5px;color:#a7c6dd;vertical-align:middle}.header .form-language
|
249 |
+
select{padding:0}.header .form-language select.flags
|
250 |
+
option{background-position:4px 50%;background-repeat:no-repeat;padding-left:25px}.header
|
251 |
+
.links{float:right;margin:0
|
252 |
+
0 6px}.header .links
|
253 |
+
li{float:left;font-size:11px;background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_pipe1.gif) 100% 60% no-repeat;padding:0
|
254 |
+
8px 0 7px}.header .links
|
255 |
+
a{color:#ebbc58}.header-container .top-container{clear:both;padding:5px
|
256 |
+
10px 0 12px;text-align:right}.header-container .top-container
|
257 |
+
a{font-size:11px;color:#ebbc58}.nav-container{background:#0a263d url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_nav0.jpg) 50% 0 repeat-y}#nav{width:918px;margin:0
|
258 |
+
auto;padding:0
|
259 |
+
16px;font-size:13px}#nav
|
260 |
+
li{position:relative;text-align:left}#nav
|
261 |
+
li.over{z-index:999}#nav a,
|
262 |
+
#nav a:hover{display:block;line-height:1.3em;text-decoration:none}#nav
|
263 |
+
span{display:block;cursor:pointer;white-space:nowrap}#nav li ul
|
264 |
+
span{white-space:normal}#nav
|
265 |
+
li{float:left}#nav li.active
|
266 |
+
a{color:#d96708}#nav
|
267 |
+
a{float:left;padding:5px
|
268 |
+
12px 6px 8px;color:#a7c6dd;font-weight:bold}#nav li.over a,
|
269 |
+
#nav a:hover{color:#d96708}#nav ul li,
|
270 |
+
#nav ul
|
271 |
+
li.active{float:none;margin:0;padding-bottom:1px;background:#ecf3f6 url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_nav1.gif) 0 100% repeat-x}#nav ul
|
272 |
+
li.last{background:#ecf3f6;padding-bottom:0}#nav ul a,
|
273 |
+
#nav ul a:hover{float:none;padding:0;background:none}#nav ul li
|
274 |
+
a{font-weight:normal !important}#nav
|
275 |
+
ul{position:absolute;width:15em;top:27px;left:-10000px;border:1px
|
276 |
+
solid #899ba5}#nav li.over>ul{left:0}#nav li.over > ul li.over>ul{left:100px}#nav li.over ul
|
277 |
+
ul{left:-10000px}#nav ul li
|
278 |
+
a{background:#ecf3f6}#nav ul li a:hover{background:#d5e4eb}#nav ul li a,
|
279 |
+
#nav ul li a:hover{color:#2f2f2f !important}#nav ul span, #nav ul li.last li
|
280 |
+
span{padding:3px
|
281 |
+
15px 4px 15px}#nav ul
|
282 |
+
ul{top:5px}.block{border:1px
|
283 |
+
solid #c4c1bc;margin:0
|
284 |
+
0 15px}.block .block-title{background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_block-title.gif) 0 0 repeat-x;border-bottom:1px solid #ddd;padding:2px
|
285 |
+
9px}.block .block-title
|
286 |
+
strong{display:block;font:bold 12px/16px Arial, Helvetica, sans-serif;min-height:16px;padding:1px
|
287 |
+
0 1px;text-transform:uppercase;color:#e26703}.block .block-title strong
|
288 |
+
span{}.block .block-title
|
289 |
+
a{text-decoration:none !important}.block .block-subtitle{margin:0;padding:5px
|
290 |
+
9px;font-size:1em;font-weight:bold;color:#0a263c}.block .block-content{background:#f8f7f5}.block .block-content
|
291 |
+
li.item{padding:7px
|
292 |
+
9px}.block .btn-remove{float:right;margin:1px
|
293 |
+
0 2px 5px}.block
|
294 |
+
.actions{background:#dee5e8 url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_block-actions.gif) 0 0 repeat-x;padding:6px
|
295 |
+
9px;text-align:right}.block .actions
|
296 |
+
a{float:left}.block .actions
|
297 |
+
button.button{float:right}.block
|
298 |
+
.empty{margin:0;padding:5px
|
299 |
+
9px}.block
|
300 |
+
li.odd{background-color:#f4f3f3}.block
|
301 |
+
li.even{background-color:#fafafa}.block-cart,.block-wishlist,.block-subscribe,.block-compare,.block-reorder,.block-poll,.block-viewed,.block-compared,.block-related,.block-tags,.block-login{font-size:11px;line-height:1.25}.block-cart .block-title strong,
|
302 |
+
.block-wishlist .block-title strong,
|
303 |
+
.block-subscribe .block-title strong,
|
304 |
+
.block-compare .block-title strong,
|
305 |
+
.block-reorder .block-title strong,
|
306 |
+
.block-poll .block-title strong,
|
307 |
+
.block-viewed .block-title strong,
|
308 |
+
.block-compared .block-title strong,
|
309 |
+
.block-related .block-title strong,
|
310 |
+
.block-tags .block-title strong,
|
311 |
+
.block-login .block-title
|
312 |
+
strong{background-position:0 0;background-repeat:no-repeat;padding-left:21px}.mini-products-list .product-image{float:left;width:50px;border:1px
|
313 |
+
solid #a9a9a9}.mini-products-list .product-details{margin-left:60px}.block-account{border-color:#bbb}.block-account .block-title{background:#fc9d36 url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_block-title-account.gif) 0 100% repeat-x;border:0;padding:3px
|
314 |
+
10px}.block-account .block-title
|
315 |
+
strong{font-size:13px;color:#fff}.block-account .block-content{background:#fbfaf6;padding:7px
|
316 |
+
10px 7px}.block-account .block-content li
|
317 |
+
a{display:block;border-bottom:1px solid #ddd;padding:3px
|
318 |
+
0;color:#5f5d5c;text-decoration:none !important}.block-account .block-content li a:hover{color:#ea7900}.block-account .block-content li.last
|
319 |
+
a{border-bottom:0}.block-account .block-content
|
320 |
+
li.current{border-bottom:1px solid #ddd;padding:3px
|
321 |
+
0;color:#ea7900}.block-account .block-content
|
322 |
+
li.current.last{border-bottom:0}.block-currency{border:0;background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_block-currency.gif) 0 0 no-repeat;padding:7px
|
323 |
+
12px 10px;height:51px}.block-currency .block-title{background:none;border:0;padding:0;margin:0
|
324 |
+
0 5px}.block-currency .block-title
|
325 |
+
strong{font:bold 13px/21px Arial, Helvetica, sans-serif;background:url(/FM0015_Speedster/skin/frontend/default/default/images/i_block-currency.gif) 0 50% no-repeat;padding:0
|
326 |
+
0 0 21px;text-transform:none;color:#fff}.block-currency .block-content{background:none;padding:0}.block-currency .block-content
|
327 |
+
select{width:100%;padding:0}.block-layered-nav{border:0}.block-layered-nav .block-title{border:0;padding:0;height:24px;background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_block-layered-title.gif) 0 0 no-repeat;text-indent:-999em;overflow:hidden}.block-layered-nav .block-subtitle{line-height:1.35;background:#d5e8ff url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_block-layered1.gif) 0 50% repeat;padding:3px
|
328 |
+
9px;border:1px
|
329 |
+
solid #b9ccdd;border-width:1px 0;text-transform:uppercase;color:#1f5070}.block-layered-nav .block-content{border:1px
|
330 |
+
solid #a0b3c3;background:#e7f1f4}.block-layered-nav
|
331 |
+
dt{background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_block-layered-dt.gif) 9px 11px no-repeat;padding:7px
|
332 |
+
10px 0 28px;font-weight:bold;text-transform:uppercase}.block-layered-nav
|
333 |
+
dd{padding:0
|
334 |
+
12px 12px;background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_block-layered-dd.gif) 0 100% repeat-x}.block-layered-nav
|
335 |
+
dd.last{background:none}.block-layered-nav .currently
|
336 |
+
li{background:#fff url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_block-layered-li.gif) 0 100% repeat-x;padding:4px
|
337 |
+
6px 4px 10px}.block-layered-nav .currently
|
338 |
+
.label{font-weight:bold;padding-left:18px;background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_block-layered-label.gif) 0 3px no-repeat;text-transform:uppercase}.block-layered-nav .currently .btn-remove{margin:3px
|
339 |
+
0 0}.block-layered-nav
|
340 |
+
.actions{font-size:11px;padding:4px
|
341 |
+
9px;background:#cad6e4;border:1px
|
342 |
+
solid #dee5e8;border-width:1px 0;text-align:right}.block-layered-nav .actions
|
343 |
+
a{float:none}.block-cart .block-title{}.block-cart .block-title
|
344 |
+
strong{background-image:url(/FM0015_Speedster/skin/frontend/default/default/images/i_block-cart.gif)}.block-cart
|
345 |
+
.summary{background:#fff;padding:2px
|
346 |
+
8px 8px;margin:-1px 0 0;position:relative;z-index:1}.block-cart
|
347 |
+
.amount{margin:0}.block-cart .amount
|
348 |
+
a{font-weight:bold}.block-cart
|
349 |
+
.subtotal{margin:5px
|
350 |
+
0 0;padding:2px
|
351 |
+
0;background:#fbebd9;text-align:center}.block-cart .subtotal
|
352 |
+
.price{font-weight:bold}.block-cart
|
353 |
+
.actions{border-bottom:1px solid #c2c2c2}.block-wishlist .block-title
|
354 |
+
strong{background-image:url(/FM0015_Speedster/skin/frontend/default/default/images/i_block-wishlist.gif)}.block-wishlist
|
355 |
+
.actions{text-align:right}.block-wishlist .actions
|
356 |
+
a{float:none}.block-related .block-title
|
357 |
+
strong{background-image:url(/FM0015_Speedster/skin/frontend/default/default/images/i_block-related.gif);background-position:0 1px}.block-related
|
358 |
+
input.checkbox{float:left}.block-related
|
359 |
+
.product{margin-left:20px}.block-compare .block-title
|
360 |
+
strong{background-image:url(/FM0015_Speedster/skin/frontend/default/default/images/i_block-list.gif);background-position:0 1px}.block-compare button.button
|
361 |
+
span{border-color:#406a83;background:#618499}.page-popup .link-print{background:url(/FM0015_Speedster/skin/frontend/default/default/images/i_print.gif) 0 2px no-repeat;padding:2px
|
362 |
+
0 2px 25px;font-weight:bold;color:#1e7ec8}.compare-table{border:0}.compare-table thead tr.first th,
|
363 |
+
.compare-table thead tr.first
|
364 |
+
td{border:0;background:none;padding:0;font-size:0;line-height:0}.compare-table .btn-remove{float:right;background-image:url(/FM0015_Speedster/skin/frontend/default/default/images/btn_remove2.gif);width:72px;height:15px}.compare-table tbody
|
365 |
+
th{background:#d9e5ee url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_th-v.gif) 100% 0 repeat-y}.compare-table tbody th,
|
366 |
+
.compare-table tbody
|
367 |
+
td{padding:10px;border:0;border-top:1px solid #ccc;border-left:1px solid #ccc}.compare-table tbody
|
368 |
+
td.last{border-right:1px solid #ccc}.compare-table tbody tr.last th,
|
369 |
+
.compare-table tbody tr.last
|
370 |
+
td{border-bottom:1px solid #ccc !important}.compare-table tr.add-to-row
|
371 |
+
td{background:#fffada;text-align:center}.compare-table tr.first
|
372 |
+
td{text-align:center}.compare-table tr.first td .product-name{font-size:13px;font-weight:bold;margin:0
|
373 |
+
0 5px;color:#203548}.compare-table tr.first td .product-name
|
374 |
+
a{color:#203548}.compare-table tr.first td
|
375 |
+
.ratings{width:69px;margin:0
|
376 |
+
auto}.compare-table tr.first td p,
|
377 |
+
.compare-table tr.add-to-row td
|
378 |
+
p{margin:0}.block-viewed .block-title
|
379 |
+
strong{background-image:url(/FM0015_Speedster/skin/frontend/default/default/images/i_block-viewed.gif)}.block-compared .block-title
|
380 |
+
strong{background-image:url(/FM0015_Speedster/skin/frontend/default/default/images/i_block-list.gif);background-position:0 1px}.block-poll .block-title
|
381 |
+
strong{background-image:url(/FM0015_Speedster/skin/frontend/default/default/images/i_block-poll.gif)}.block-poll .block-subtitle{font-size:12px}.block-poll
|
382 |
+
label{color:#777;font-weight:bold}.block-poll
|
383 |
+
input.radio{float:left;margin:1px
|
384 |
+
-18px 0 0}.block-poll
|
385 |
+
.label{display:block;margin-left:18px}.block-poll
|
386 |
+
li{padding:3px
|
387 |
+
9px}.block-poll
|
388 |
+
.actions{margin:5px
|
389 |
+
0 0}.block-poll button.button
|
390 |
+
span{border-color:#406a83;background:#618499}.block-poll
|
391 |
+
.answer{font-weight:bold}.block-poll
|
392 |
+
.votes{float:right;margin-left:10px}.block-tags .block-title
|
393 |
+
strong{background-image:url(/FM0015_Speedster/skin/frontend/default/default/images/i_block-tags.gif)}.block-tags .block-content
|
394 |
+
ul{font-size:12px;padding:10px}.block-tags .block-content
|
395 |
+
li{display:inline;padding-right:4px}.block-tags .block-content
|
396 |
+
a{color:#1b2d3b}.block-tags
|
397 |
+
.actions{text-align:right}.block-tags .actions
|
398 |
+
a{float:none}.block-subscribe .block-content{padding:5px
|
399 |
+
10px}.block-subscribe .block-title
|
400 |
+
strong{background-image:url(/FM0015_Speedster/skin/frontend/default/default/images/i_block-subscribe.gif)}.block-subscribe
|
401 |
+
label{font-weight:bold;color:#666}.block-subscribe input.input-text{display:block;width:167px;margin:3px
|
402 |
+
0}.block-subscribe
|
403 |
+
.actions{background:none;padding:0;margin:3px
|
404 |
+
0 0;text-align:left}.block-subscribe .actions
|
405 |
+
button.button{float:none}.block-subscribe .actions button.button
|
406 |
+
span{border-color:#406a83;background:#618499}.block-reorder .block-title
|
407 |
+
strong{background-image:url(/FM0015_Speedster/skin/frontend/default/default/images/i_block-list.gif)}.block-reorder
|
408 |
+
input.checkbox{float:left;margin:2px
|
409 |
+
-20px 0 0}.block-reorder .product-name{margin-left:20px}.block-reorder .validation-advice{margin:3px
|
410 |
+
9px 7px}.block-banner{border:0}.block-banner .block-content{padding:0;text-align:center}.block-login .block-title
|
411 |
+
strong{background-image:url(/FM0015_Speedster/skin/frontend/default/default/images/i_ma-info.gif)}.block-login .block-content{padding:5px
|
412 |
+
10px}.block-login
|
413 |
+
label{font-weight:bold;color:#666}.block-login input.input-text{display:block;width:167px;margin:3px
|
414 |
+
0}.block-login
|
415 |
+
.actions{background:none;padding:0;margin:3px
|
416 |
+
0 0}.block-login .actions button.button
|
417 |
+
span{border-color:#406a83;background:#618499}.category-title{border:0;margin:0
|
418 |
+
0 7px}.category-image{width:100%;overflow:hidden;margin:0
|
419 |
+
0 10px;text-align:center}.category-image
|
420 |
+
img{}.category-description{margin:0
|
421 |
+
0 10px}.category-products{}.products-grid{border-bottom:1px solid #d9ddd3;background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_grid.gif) 0 0 repeat;position:relative}.products-grid.last{border-bottom:0}.products-grid
|
422 |
+
li.item{float:left;width:138px;padding:12px
|
423 |
+
10px 80px}.products-grid .product-image{display:block;width:135px;height:135px;margin:0
|
424 |
+
0 10px}.products-grid .product-name{margin:0
|
425 |
+
0 5px;font-weight:bold;font-size:13px;color:#203548}.products-grid .product-name
|
426 |
+
a{color:#203548}.products-grid .price-box{margin:5px
|
427 |
+
0}.products-grid
|
428 |
+
.availability{line-height:21px}.products-grid
|
429 |
+
.actions{position:absolute;bottom:12px}.col2-left-layout .products-grid,
|
430 |
+
.col2-right-layout .products-grid{width:632px;margin:0
|
431 |
+
auto}.col1-layout .products-grid{width:790px;margin:0
|
432 |
+
auto}.products-list
|
433 |
+
li.item{border-bottom:1px solid #d9ddd3;padding:12px
|
434 |
+
10px}.products-list
|
435 |
+
li.item.last{border-bottom:0}.products-list .product-image{float:left;width:135px;height:135px;margin:0
|
436 |
+
0 10px}.products-list .product-shop{margin-left:150px}.products-list .product-name{margin:0
|
437 |
+
0 5px;font-weight:bold;font-size:13px;color:#203548}.products-list .product-name
|
438 |
+
a{color:#203548}.products-list .price-box{float:left;margin:3px
|
439 |
+
13px 5px 0}.products-list
|
440 |
+
.availability{float:left;margin:3px
|
441 |
+
0 0}.products-list
|
442 |
+
.desc{clear:both;padding:6px
|
443 |
+
0 0;margin:0
|
444 |
+
0 15px;line-height:1.35}.products-list .desc .link-more{font-size:11px}.products-list .add-to-links{clear:both}.products-list .add-to-links
|
445 |
+
li{display:inline}.products-list .add-to-links
|
446 |
+
.separator{display:inline;margin:0
|
447 |
+
2px}.no-rating{margin:0}.ratings{font-size:11px;line-height:1.25;margin:7px
|
448 |
+
0}.ratings
|
449 |
+
strong{float:left;margin:1px
|
450 |
+
3px 0 0}.ratings .rating-links{margin:0}.ratings .rating-links
|
451 |
+
.separator{margin:0
|
452 |
+
2px}.ratings
|
453 |
+
dt{}.ratings
|
454 |
+
dd{}.rating-box{width:69px;height:13px;font-size:0;line-height:0;background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_rating.gif) 0 0 repeat-x;text-indent:-999em;overflow:hidden}.rating-box
|
455 |
+
.rating{float:left;height:13px;background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_rating.gif) 0 100% repeat-x}.ratings .rating-box{float:left;margin-right:3px}.ratings
|
456 |
+
.amount{}.ratings-table th,
|
457 |
+
.ratings-table
|
458 |
+
td{font-size:11px;line-height:1.15;padding:3px
|
459 |
+
0}.ratings-table
|
460 |
+
th{font-weight:bold;padding-right:8px}.availability{margin:0}.availability
|
461 |
+
span{font-weight:bold}.availability.in-stock
|
462 |
+
span{}.availability.out-of-stock
|
463 |
+
span{color:#d83820}.product-view .product-shop
|
464 |
+
.availability{font-size:11px}.product-view .product-shop .availability
|
465 |
+
span{font-weight:normal}.email-friend{margin:0}.alert-price{margin:0;font-size:11px}.alert-stock{margin:0;font-size:11px}.price{white-space:nowrap !important}.price-box{margin:5px
|
466 |
+
0}.price-box
|
467 |
+
.price{font-weight:bold;color:#c76200}.regular-price{color:#c76200}.regular-price
|
468 |
+
.price{font-weight:bold;font-size:13px;color:#c76200}.block .regular-price,
|
469 |
+
.block .regular-price
|
470 |
+
.price{color:#2f2f2f}.old-price{margin:0}.old-price .price-label{white-space:nowrap;color:#999}.old-price
|
471 |
+
.price{font-weight:bold;color:#c76200;text-decoration:line-through}.special-price{margin:0;padding:3px
|
472 |
+
0}.special-price .price-label{font-size:13px;font-weight:bold;white-space:nowrap;color:#cd5033}.special-price
|
473 |
+
.price{font-size:13px;font-weight:bold;color:#c76200}.minimal-price{margin:0}.minimal-price .price-label{font-weight:bold;white-space:nowrap}.minimal-price-link{display:block}.minimal-price-link
|
474 |
+
.label{color:#1e7ec8}.minimal-price-link
|
475 |
+
.price{font-weight:normal;color:#1e7ec8}.price-excluding-tax{display:block;color:#999}.price-excluding-tax
|
476 |
+
.label{white-space:nowrap;color:#999}.price-excluding-tax
|
477 |
+
.price{font-size:13px;font-weight:normal;color:#c76200}.price-including-tax{display:block;color:#999}.price-including-tax
|
478 |
+
.label{white-space:nowrap;color:#999}.price-including-tax
|
479 |
+
.price{font-size:13px;font-weight:bold;color:#c76200}.weee{display:block;font-size:11px;color:#444}.weee
|
480 |
+
.price{font-size:11px;font-weight:normal}.price-excl-tax{display:block}.price-excl-tax
|
481 |
+
.label{display:block;white-space:nowrap}.price-excl-tax
|
482 |
+
.price{display:block}.price-incl-tax{display:block}.price-incl-tax
|
483 |
+
.label{display:block;white-space:nowrap}.price-incl-tax
|
484 |
+
.price{display:block;font-weight:bold}.price-from{margin:0}.price-from .price-label{font-weight:bold;white-space:nowrap}.price-to{margin:0}.price-to .price-label{font-weight:bold;white-space:nowrap}.price-notice{padding-left:10px;color:#999}.price-notice
|
485 |
+
.price{font-weight:bold;color:#2f2f2f}.price-as-configured{margin:0}.price-as-configured .price-label{font-weight:bold;white-space:nowrap}.price-box-bundle{padding:0
|
486 |
+
0 10px 0}.price-box-bundle .price-box{margin:0
|
487 |
+
!important;padding:0
|
488 |
+
!important}.price-box-bundle
|
489 |
+
.price{color:#555}.tier-prices{margin:10px
|
490 |
+
0;padding:10px;background-color:#f4f7f7;border:1px
|
491 |
+
solid #dadddd}.tier-prices
|
492 |
+
li{line-height:1.4;background:url(/FM0015_Speedster/skin/frontend/default/default/images/i_tier.gif) no-repeat 0 3px;padding:2px
|
493 |
+
0 2px 10px;color:#424242}.tier-prices
|
494 |
+
.benefit{font-style:italic;font-weight:bold;color:#2f2f2f}.tier-prices
|
495 |
+
.price{font-weight:bold;color:#2f2f2f}.tier-prices-grouped
|
496 |
+
li{padding:2px
|
497 |
+
0;color:#e26703}.tier-prices-grouped li
|
498 |
+
.price{font-weight:bold}.add-to-links{font-size:11px;margin:5px
|
499 |
+
0 0}.add-to-links
|
500 |
+
.separator{display:none}.add-to-cart
|
501 |
+
label{float:left;margin-right:5px;font-weight:bold;color:#666}.add-to-cart
|
502 |
+
.qty{float:left;margin-right:5px}.add-to-cart
|
503 |
+
button.button{float:left}.add-to-box{margin:10px
|
504 |
+
0}.add-to-box .add-to-cart{float:left}.add-to-box
|
505 |
+
.or{float:left;font-weight:bold;margin:0
|
506 |
+
7px;color:#666}.add-to-box .add-to-links{float:left;margin:0;font-size:12px !important;line-height:1.25 !important;text-align:left !important}.add-to-box .add-to-links
|
507 |
+
li{display:block !important}.add-to-box .add-to-links li
|
508 |
+
.separator{display:none !important}.product-view{border:1px
|
509 |
+
solid #c4c6c8}.product-essential{padding:25px;background:#fff url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_product-view.gif) 100% 0 no-repeat}.product-essential
|
510 |
+
h2{font:bold 13px/1.35 Arial,Helvetica,sans-serif}.product-collateral{background:#faf7ee url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_product_collateral.gif) 0 0 repeat-x;padding:25px}.product-collateral
|
511 |
+
h2{font-weight:bold;font-size:15px;color:#e26703;border-bottom:1px solid #e5dcc3;padding:0
|
512 |
+
0 1px;margin:0
|
513 |
+
0 15px}.product-collateral .box-collateral{margin:0
|
514 |
+
0 25px}.product-view .product-img-box{float:left;width:267px}.col3-layout .product-view .product-img-box{float:none;margin:0
|
515 |
+
auto}.product-view .product-img-box .product-image{margin:0
|
516 |
+
0 13px}.product-view .product-img-box .product-image-zoom{position:relative;width:265px;height:265px;overflow:hidden;z-index:9}.product-view .product-img-box .product-image-zoom
|
517 |
+
img{position:absolute;left:0;top:0;cursor:move}.product-view .product-img-box .zoom-notice{font-size:11px;margin:0
|
518 |
+
0 5px;text-align:center}.product-view .product-img-box
|
519 |
+
.zoom{position:relative;z-index:9;height:18px;margin:0
|
520 |
+
auto 13px;padding:0
|
521 |
+
28px;background:url(/FM0015_Speedster/skin/frontend/default/default/images/slider_bg.gif) 50% 50% no-repeat;cursor:pointer}.product-view .product-img-box
|
522 |
+
.zoom.disabled{-moz-opacity:.3;-webkit-opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";opacity:.3}.product-view .product-img-box .zoom
|
523 |
+
#track{position:relative;height:18px}.product-view .product-img-box .zoom
|
524 |
+
#handle{position:absolute;left:0;top:-1px;width:9px;height:22px;background:url(/FM0015_Speedster/skin/frontend/default/default/images/magnifier_handle.gif) 0 0 no-repeat}.product-view .product-img-box .zoom .btn-zoom-out{position:absolute;left:2px;top:0}.product-view .product-img-box .zoom .btn-zoom-in{position:absolute;right:2px;top:0}.product-view .product-img-box .more-views
|
525 |
+
h2{font-size:11px;border-bottom:1px solid #ccc;margin:0
|
526 |
+
0 8px;text-transform:uppercase}.product-view .product-img-box .more-views
|
527 |
+
ul{margin-left:-9px}.product-view .product-img-box .more-views
|
528 |
+
li{float:left;margin:0
|
529 |
+
0 8px 9px}.product-view .product-img-box .more-views li
|
530 |
+
a{float:left;width:56px;height:56px;border:2px
|
531 |
+
solid #ddd;overflow:hidden}.product-image-popup{margin:0
|
532 |
+
auto}.product-image-popup
|
533 |
+
.nav{font-weight:bold;text-align:center}.product-image-popup
|
534 |
+
.image{display:block;margin:10px
|
535 |
+
0}.product-image-popup .image-label{font-size:13px;font-weight:bold;margin:0
|
536 |
+
0 10px;color:#2f2f2f}.product-view .product-shop{float:right;width:330px}.col1-layout .product-view .product-shop{float:right;width:545px}.col3-layout .product-view .product-shop{float:none;width:auto}.product-view .product-shop .product-name{margin:0
|
537 |
+
0 5px}.product-view .product-shop .product-name
|
538 |
+
h1{margin:0;font:bold 15px/1.35 Arial, Helvetica, sans-serif}.product-view .product-shop
|
539 |
+
.availability{margin:10px
|
540 |
+
0}.product-view .product-shop .short-description{margin:10px
|
541 |
+
0;background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_divider1.gif) 0 0 repeat-x;padding:10px
|
542 |
+
0 0}.product-view .product-shop .price-box{margin:10px
|
543 |
+
0}.product-view .product-shop .add-to-links{margin:0}.product-view .product-shop .add-to-links{font-size:12px;text-align:right}.product-view .product-shop .add-to-links li,
|
544 |
+
.product-view .product-shop .add-to-links li
|
545 |
+
.separator{display:inline}.product-view .product-shop .add-to-links
|
546 |
+
a{color:#1E7EC8 !important;font-weight:normal !important}.product-options{margin:20px
|
547 |
+
0 0;padding:10px
|
548 |
+
15px 20px;background-color:#f6f6f6;border:1px
|
549 |
+
solid #e4e4e4}.product-options
|
550 |
+
dt{padding:10px
|
551 |
+
0 0;font-weight:normal}.product-options dt
|
552 |
+
label{font-weight:bold;color:#2f2f2f}.product-options dt
|
553 |
+
span.required{color:#eb340a}.product-options dt .qty-holder{float:right;margin-right:15px}.product-options dt .qty-holder
|
554 |
+
label{vertical-align:middle}.product-options dt .qty-disabled{background:none;border:0;padding:3px;color:#2f2f2f}.product-options
|
555 |
+
dd{padding:5px
|
556 |
+
10px 15px;margin:0
|
557 |
+
0 5px;border-bottom:1px solid #e4e4e4}.product-options dl.last
|
558 |
+
dd.last{border-bottom:0;padding-bottom:5px;margin-bottom:0}.product-options dd input.input-text{width:98%}.product-options dd input.datetime-picker{width:150px}.product-options dd
|
559 |
+
textarea{width:98%;height:8em}.product-options dd
|
560 |
+
select{width:99%}.product-options dd .multiselect
|
561 |
+
option{border-bottom:1px dotted #d9e5ee;padding:2px
|
562 |
+
4px}.product-options ul.options-list{margin-right:5px}.product-options ul.options-list
|
563 |
+
li{line-height:1.5;padding:2px
|
564 |
+
0}.product-options ul.options-list
|
565 |
+
input.radio{float:left;margin-top:3px}.product-options ul.options-list
|
566 |
+
input.checkbox{float:left;margin-top:3px}.product-options ul.options-list
|
567 |
+
.label{display:block;margin-left:18px}.product-options ul.options-list
|
568 |
+
label{font-weight:normal}.product-options ul.validation-failed{padding:0
|
569 |
+
7px}.product-options
|
570 |
+
p.note{margin:0;font-size:11px}.product-options
|
571 |
+
p.required{margin-bottom:0;padding:15px
|
572 |
+
0 0}.product-options-bottom{background-color:#fffada;padding:15px
|
573 |
+
20px;border:1px
|
574 |
+
solid #e4e4e4;border-top:0}.product-options-bottom .tier-prices{margin:0;padding:0
|
575 |
+
0 10px;border:0;background:0}.product-options-bottom .tier-prices
|
576 |
+
li{background:0;padding:2px
|
577 |
+
0;color:#e26703}.product-options-bottom .tier-prices .price,
|
578 |
+
.product-options-bottom .tier-prices
|
579 |
+
.benefit{color:#e26703}.product-options-bottom .price-box{float:left;margin:0;padding:0}.product-options-bottom .price-label{float:left;padding-right:5px}.product-options-bottom .price-tax{float:left}.product-options-bottom .add-to-cart{float:right}.product-shop .product-options-bottom{margin:0
|
580 |
+
0 10px}.product-shop .product-options-bottom .price-box{float:none;margin:0
|
581 |
+
0 5px}.product-shop .product-options-bottom .price-label{float:none;padding-right:0}.product-shop .product-options-bottom .price-tax{float:none}.product-shop .product-options-bottom .add-to-cart-box{clear:both;float:left;padding-top:12px}.product-view .grouped-items-table .price-box{margin:0;padding:0}.product-view .box-description{}.product-view .box-additional .data-table th,
|
582 |
+
.product-view .box-additional .data-table
|
583 |
+
td{line-height:1.25}.product-view .box-up-sell
|
584 |
+
h2{border-bottom:0;padding:0;margin:0
|
585 |
+
0 8px}.product-view .box-up-sell .products-grid{width:100%;border:1px
|
586 |
+
solid #e5dcc3}.product-view .box-up-sell .products-grid
|
587 |
+
td{width:25%;background:#f6f2e7;border-right:1px solid #e5dcc3;border-bottom:1px solid #e5dcc3;padding:15px
|
588 |
+
10px 12px;line-height:1.6em}.product-view .box-up-sell .products-grid tr.last
|
589 |
+
td{border-bottom:0}.product-view .box-up-sell .products-grid
|
590 |
+
td.last{border-right:0}.product-view .box-up-sell .products-grid td
|
591 |
+
img{border:1px
|
592 |
+
solid #e5dcc3}.product-view .box-up-sell .products-grid .product-image{text-align:center}.product-view .box-up-sell .products-grid
|
593 |
+
td.empty{border-right:0;background:#f1ecdb}.product-view .box-up-sell .products-grid .ratings .rating-box{float:none;display:block;margin:0
|
594 |
+
0 3px}.product-view .box-tags{margin:0}.product-view .box-tags
|
595 |
+
h3{font-size:13px}.product-view .box-tags .product-tags{display:block;margin:0
|
596 |
+
0 15px}.product-view .box-tags .product-tags
|
597 |
+
li{display:inline;background:url(/FM0015_Speedster/skin/frontend/default/default/images/bkg_pipe3.gif) 100% 4px no-repeat;padding:0
|
598 |
+
7px 0 4px}.product-view .box-tags .product-tags
|
599 |
+
li.first{padding-left:0}.product-view .box-tags .product-tags
|
600 |
+
li.last{background:none;padding-right:0}.product-view .box-tags .form-add
|
601 |
+
label{display:block;font-size:13px;font-weight:bold;margin:0
|
602 |
+
0 5px;color:#0a263c}.product-view .box-tags .form-add .input-box{float:left;width:305px;margin:0
|
603 |
+
5px 0 0;background:url(/FM0015_Speedster/skin/frontend/default/default/images/i_tag_add.gif) 0 2px no-repeat;padding:0
|
604 |
+
0 0 23px}.product-view .box-tags .form-add input.input-text{width:299px}.product-view .box-tags .form-add button.button
|
605 |
+
span{border-color:#406a83;background:#618499}.product-view .box-tags
|
606 |
+
.note{margin:3px
|
607 |
+
0 0;padding:0
|
608 |
+
0 0 23px;font-size:11px}.product-view .box-reviews
|
609 |
+
dl{margin:15px
|
610 |
+
0}.product-view .box-reviews dt a,
|
611 |
+
.product-view .box-reviews dt
|
612 |
+
span{font-weight:bold}.product-view .box-reviews
|
613 |
+
dd{margin:0
|
614 |
+
0 15px}.product-view .box-reviews dd
|
615 |
+
small{font-style:italic}.product-view .box-reviews .form-add{margin:15px
|
616 |
+
0 0}.product-view .box-reviews .form-add
|
617 |
+
h3{font-size:13px;font-weight:normal}.product-view .box-reviews .form-add h3
|
618 |
+
span{font-weight:bold}.product-view .box-reviews .form-add
|
619 |
+
h4{font-size:12px}.product-view .box-reviews .form-add .data-table
|
620 |
+
td{text-align:center}.product-view .box-reviews .form-add .form-list{margin:15px
|
621 |
+
0 0}.product-view .box-reviews .form-add .form-list .input-box{width:360px}.product-view .box-reviews .form-add .form-list input.input-text,
|
622 |
+
.product-view .box-reviews .form-add .form-list
|
623 |
+
textarea{width:354px}.send-friend .form-list{width:615px;overflow:hidden}.send-friend .form-list
|
624 |
+
li{margin-right:-15px}.send-friend .form-list li
|
625 |
+
p{margin:0
|
626 |
+
15px 0 0}.send-friend .form-list
|
627 |
+
.field{width:315px}.send-friend .form-list .input-box{width:300px}.send-friend .form-list input.input-text,
|
628 |
+
.send-friend .form-list
|
629 |
+
textarea{width:294px}.send-friend .form-list li.wide .input-box{width:612px}.send-friend .form-list li.wide
|
630 |
+
textarea{width:609px}.send-friend .buttons-set
|
631 |
+
.limit{float:right;margin:0
|
632 |
+
7px 0 0;font-size:11px;line-height:21px}.product-name{margin:0;font-size:1em;font-weight:normal}.product-name
|
633 |
+
a{color:#1e7ec8}.tags-list{display:block;font-size:13px;border:1px
|
634 |
+
solid #c1c4bc;background:#f8f7f5;padding:10px}.tags-list
|
635 |
+
li{display:inline !important;margin:0
|
636 |
+
4px 0 0}.tags-list li
|
637 |
+
a{color:#1b2d3b}.advanced-search .form-list
|
638 |
+
label{width:160px;padding-right:10px}.advanced-search .form-list .input-box,
|
639 |
+
.advanced-search .form-list .input-range{float:left;clear:none}.advanced-search-amount{margin:0
|
640 |
+
0 10px}.advanced-search-summary{margin:10px
|
641 |
+
0;border:1px
|
642 |
+
solid #e9d7c9;background:#fff6f1;padding:10px}.advanced-search-summary
|
643 |
+
ul{float:left;width:49%}.advanced-search-summary
|
644 |
+
strong{color:#E17C24;padding-left:15px;background:url(/FM0015_Speedster/skin/frontend/default/default/images/i_search_criteria.gif) 0 3px no-repeat}.advanced-search-summary
|
645 |
+
p{clear:both;font-weight:bold;margin:0}.cms-home
|
646 |
+
.subtit
|