182 files changed, 7908 insertions, 2293 deletions
diff --git a/frontend/gamma/css/mobile.css b/frontend/gamma/css/mobile.css new file mode 100644 index 0000000..8c4c1bf --- a/dev/null +++ b/frontend/gamma/css/mobile.css | |||
@@ -0,0 +1,2571 @@ | |||
1 | /* | ||
2 | |||
3 | Copyright 2008-2011 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz Community Edition. | ||
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | ||
8 | refer to http://www.clipperz.com. | ||
9 | |||
10 | * Clipperz Community Edition is free software: you can redistribute | ||
11 | it and/or modify it under the terms of the GNU Affero General Public | ||
12 | License as published by the Free Software Foundation, either version | ||
13 | 3 of the License, or (at your option) any later version. | ||
14 | |||
15 | * Clipperz Community Edition is distributed in the hope that it will | ||
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | ||
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
18 | See the GNU Affero General Public License for more details. | ||
19 | |||
20 | * You should have received a copy of the GNU Affero General Public | ||
21 | License along with Clipperz Community Edition. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | |||
24 | */ | ||
25 | |||
26 | /* | ||
27 | |||
28 | Color list: | ||
29 | - login box: | ||
30 | light#ff9955 | ||
31 | dark#ff6622 | ||
32 | - login button: | ||
33 | regular#dd5500 | ||
34 | hover#773311 | ||
35 | - login translations: | ||
36 | box: #cc6622; | ||
37 | not-selected: | ||
38 | color: #ddaa99 | ||
39 | background:#994422 | ||
40 | selected: #772211; | ||
41 | */ | ||
42 | html { | ||
43 | height: 100%; | ||
44 | -webkit-text-size-adjust: none; | ||
45 | -ms-text-size-adjust: none; | ||
46 | } | ||
47 | body { | ||
48 | font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif; | ||
49 | margin: 0px; | ||
50 | } | ||
51 | .ellipsis { | ||
52 | text-overflow: ellipsis; | ||
53 | overflow: hidden; | ||
54 | white-space: nowrap; | ||
55 | } | ||
56 | /** | ||
57 | * Background noise recipe | ||
58 | * | ||
59 | * This recipe use a sass function to generate a .png file | ||
60 | * | ||
61 | * Inspired by a jQuery plugin "Noisy" by Daniel Rapp @DanielRapp | ||
62 | * @link https://github.com/DanielRapp/Noisy | ||
63 | * | ||
64 | * Converted using Sass by Aaron Russell @aaronrussell & Philipp Bosch @philippbosch | ||
65 | * @link https://gist.github.com/1021332 | ||
66 | * | ||
67 | * Ported to a sass gem by Antti Salonen @antsa | ||
68 | * @link https://github.com/antsa/sassy_noise | ||
69 | * | ||
70 | * Mixin: background-noise | ||
71 | * Function: background_noise | ||
72 | * | ||
73 | * @author Daniel Rapp @DanielRapp | ||
74 | * @author Aaron Russell @aaronrussell | ||
75 | * @author Philipp Bosch @philippbosch | ||
76 | * @author Antti Salonen @antsa | ||
77 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
78 | */ | ||
79 | /** | ||
80 | * | ||
81 | * @class Gradients | ||
82 | * @author David Kaneda http://www.davidkaneda.com/ | ||
83 | * | ||
84 | */ | ||
85 | /** | ||
86 | * Adds a background gradient into a specified selector. | ||
87 | * | ||
88 | * @include background-gradient(#444, 'glossy'); | ||
89 | * | ||
90 | * You can also use color-stops if you want full control of the gradient: | ||
91 | * | ||
92 | * @include background-gradient(#444, color-stops(#333, #222, #111)); | ||
93 | * | ||
94 | * @param {color} $bg-color | ||
95 | * The base color of the gradient. | ||
96 | * | ||
97 | * @param {string/list} $type | ||
98 | * The style of the gradient, one of five pre-defined options: matte, bevel, glossy, recessed, or linear: | ||
99 | * | ||
100 | * @include background-gradient(red, 'glossy'); | ||
101 | * | ||
102 | * It can also accept a list of color-stop values:; | ||
103 | * | ||
104 | * @include background-gradient(black, color-stops(#333, #111, #000)); | ||
105 | * | ||
106 | * @param {string} $direction | ||
107 | * The direction of the gradient. | ||
108 | */ | ||
109 | /** | ||
110 | * Blueprint grid background pattern | ||
111 | * | ||
112 | * @link http://lea.verou.me/css3patterns/#blueprint-grid | ||
113 | * | ||
114 | * @author Lea Verou http://lea.verou.me/ for the original pattern | ||
115 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx for the sass mixin | ||
116 | */ | ||
117 | /** | ||
118 | * Background overlay inspired by Google Chrome modal overlay | ||
119 | * | ||
120 | * @author Maxime Thirouin @MoOx maxime.thirouin@gmail.com | ||
121 | */ | ||
122 | /** | ||
123 | * Striped background pattern | ||
124 | * | ||
125 | * @link http://lea.verou.me/css3patterns/ | ||
126 | * | ||
127 | * @author Lea Verou http://lea.verou.me/ for the original pattern | ||
128 | * @author David Kaneda http://www.davidkaneda.com @davidkaneda for the sass mixin | ||
129 | */ | ||
130 | /** | ||
131 | * | ||
132 | * Before compass 0.11.5, you need to add | ||
133 | * Compass::BrowserSupport.add_support("repeating-linear-gradient", "webkit", "moz", "o", "ms") | ||
134 | * To your configuration (config.rb) | ||
135 | * @see https://github.com/chriseppstein/compass/issues/401 | ||
136 | * | ||
137 | * @link http://lea.verou.me/css3patterns/#tartan | ||
138 | * | ||
139 | * @author Marta Armada http://swwweet.com/ for the original pattern | ||
140 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx for the sass mixin | ||
141 | */ | ||
142 | /** | ||
143 | * Carbon Fiber background pattern | ||
144 | * | ||
145 | * @author Lea Verou http://lea.verou.me/ for the original pattern | ||
146 | * @author David Kaneda http://www.davidkaneda.com/ for the Sass mixin | ||
147 | * | ||
148 | * @link http://lea.verou.me/css3patterns/ | ||
149 | * | ||
150 | */ | ||
151 | /** | ||
152 | * Normalize.css | ||
153 | * Opposite approche from CSS reset | ||
154 | * | ||
155 | * Based on normalize.css commit 9576d48fc234c5224b1fc4dccba2f5965243843d | ||
156 | * | ||
157 | * @link http://github.com/necolas/normalize.css | ||
158 | */ | ||
159 | /* normalize.css 2011-07-12T10:51 UTC · http://github.com/necolas/normalize.css */ | ||
160 | /* ============================================================================= | ||
161 | HTML5 element display | ||
162 | ========================================================================== */ | ||
163 | /* ============================================================================= | ||
164 | Base | ||
165 | ========================================================================== */ | ||
166 | /* ============================================================================= | ||
167 | Links | ||
168 | ========================================================================== */ | ||
169 | /* ============================================================================= | ||
170 | Typography | ||
171 | ========================================================================== */ | ||
172 | /* ============================================================================= | ||
173 | Lists | ||
174 | ========================================================================== */ | ||
175 | /* ============================================================================= | ||
176 | Embedded content | ||
177 | ========================================================================== */ | ||
178 | /* ============================================================================= | ||
179 | Figures | ||
180 | ========================================================================== */ | ||
181 | /* ============================================================================= | ||
182 | Forms | ||
183 | ========================================================================== */ | ||
184 | /* ============================================================================= | ||
185 | Tables | ||
186 | ========================================================================== */ | ||
187 | /** | ||
188 | * | ||
189 | * @author David Kaneda - http://www.davidkaneda.com | ||
190 | * | ||
191 | */ | ||
192 | /** | ||
193 | * @class Color | ||
194 | */ | ||
195 | /** | ||
196 | * Returns the brightness (out of 100) of a specified color. | ||
197 | * @todo explain why this is useful | ||
198 | * @param {color} $color The color you want the brightness value of | ||
199 | * @return {measurement} | ||
200 | */ | ||
201 | /** | ||
202 | * Returns the luminosity for a specified color | ||
203 | * @todo explain why this is useful | ||
204 | * @param {color} The color to check | ||
205 | * @return {measurement} | ||
206 | */ | ||
207 | /** | ||
208 | * Glass effect | ||
209 | * Use this on image for better effect render | ||
210 | * | ||
211 | * Inspired from Simurai's IMDB redisign | ||
212 | * | ||
213 | * @link http://lab.simurai.com/redesign/imdb | ||
214 | * @thanks Simurai @simurai | ||
215 | */ | ||
216 | /** | ||
217 | * Note IE7/6 doesn't understand pseudo element as ::before and ::after | ||
218 | * IE8 need to have :before and not ::before | ||
219 | * So use only : and not :: if you want to support IE8 | ||
220 | * IE9 Webkit Firefox Opera understand :: | ||
221 | */ | ||
222 | /** | ||
223 | * Scotch tape effect with pure CSS | ||
224 | * | ||
225 | * @thanks Nick La @nickla for original concept | ||
226 | * @link http://webdesignerwall.com/tutorials/css3-image-styles | ||
227 | * | ||
228 | * @author David Kaneda http://www.davidkaneda.com | ||
229 | * | ||
230 | */ | ||
231 | /** | ||
232 | * Note IE7/6 doesn't understand pseudo element as ::before and ::after | ||
233 | * IE8 need to have :before and not ::before | ||
234 | * So use only : and not :: if you want to support IE8 | ||
235 | * IE9 Webkit Firefox Opera understand :: | ||
236 | */ | ||
237 | /** | ||
238 | * Corner folded with pure CSS | ||
239 | * | ||
240 | * Known support: Firefox 3.5+, Chrome 4+, Safari 4+, Opera 10+, IE 9+. | ||
241 | * IE8 is not supported because it not render properly box-shadow and | ||
242 | * pseudo element should be selected with ::element and not :element | ||
243 | * | ||
244 | * @thanks Nicolas Gallagher @necolas | ||
245 | * @link http://nicolasgallagher.com/pure-css-folded-corner-effect/demo/ | ||
246 | * @todo Nix in .4 | ||
247 | */ | ||
248 | /** | ||
249 | * Note IE7/6 doesn't understand pseudo element as ::before and ::after | ||
250 | * IE8 need to have :before and not ::before | ||
251 | * So use only : and not :: if you want to support IE8 | ||
252 | * IE9 Webkit Firefox Opera understand :: | ||
253 | */ | ||
254 | /** | ||
255 | * Corner folded with pure CSS | ||
256 | * | ||
257 | * Known support: Firefox 3.5+, Chrome 4+, Safari 4+, Opera 10+, IE 9+. | ||
258 | * IE8 is not supported because it not render properly box-shadow and | ||
259 | * pseudo element should be selected with ::element and not :element | ||
260 | * | ||
261 | * @thanks Nicolas Gallagher @necolas | ||
262 | * @link http://nicolasgallagher.com/pure-css-folded-corner-effect/demo/ | ||
263 | */ | ||
264 | /** | ||
265 | * Note IE7/6 doesn't understand pseudo element as ::before and ::after | ||
266 | * IE8 need to have :before and not ::before | ||
267 | * So use only : and not :: if you want to support IE8 | ||
268 | * IE9 Webkit Firefox Opera understand :: | ||
269 | */ | ||
270 | /** | ||
271 | * Form element inline mixin | ||
272 | * This mixin allow you to have a label inline with your input | ||
273 | * It's simply based on inline-block behavior | ||
274 | * | ||
275 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
276 | */ | ||
277 | /** | ||
278 | * Vertical alignement for page | ||
279 | * Inspired by http://css-tricks.com/snippets/css/center-div-with-dynamic-height/ | ||
280 | * | ||
281 | * Usage: | ||
282 | * | ||
283 | * SCSS | ||
284 | * @include vertical-align-requirement; | ||
285 | * .v-align-container { @include vertical-align-container } | ||
286 | * .v-align-content-container { @include vertical-align-content-container } | ||
287 | * .v-align-content { @include vertical-align-content } | ||
288 | * | ||
289 | * HTML | ||
290 | * <body> | ||
291 | * <div class="v-align-container"> | ||
292 | * <div class="v-align-content-container"> | ||
293 | * <div class="v-align-content"> | ||
294 | * Your content ! | ||
295 | * </div> | ||
296 | * </div> | ||
297 | * </div> | ||
298 | * </body> | ||
299 | * | ||
300 | * @thanks Chris Coyier @chriscoyier | ||
301 | * @autor Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
302 | */ | ||
303 | /** | ||
304 | * Media Queries Mixins | ||
305 | * | ||
306 | * @todo Do we have to take care of print ? | ||
307 | * | ||
308 | * @require sass-3.2 (you need eventually to do "sudo gem install sass --pre") | ||
309 | * @author Maxime Thirouin <maxime.thirouin@gmail.com> | ||
310 | */ | ||
311 | /* | ||
312 | $media-query-width-big: 1280px; | ||
313 | $media-query-width-medium: 960px; | ||
314 | $media-query-width-small: 480px; | ||
315 | */ | ||
316 | /** | ||
317 | * Drop shadow mixins from Nicolas Gallagher demo | ||
318 | * | ||
319 | * @thanks Nicolas Gallagher @necolas, @simurai, @cameronmoll, @matthamm | ||
320 | * | ||
321 | * @link http://nicolasgallagher.com/css-drop-shadows-without-images/demo/ | ||
322 | */ | ||
323 | /** | ||
324 | * Drop shadow curled | ||
325 | * | ||
326 | * @thanks Nicolas Gallagher @necolas | ||
327 | * @link http://nicolasgallagher.com/css-drop-shadows-without-images/demo/ | ||
328 | */ | ||
329 | /** | ||
330 | * Drop shadow curved | ||
331 | * | ||
332 | * @thanks Nicolas Gallagher @necolas | ||
333 | * @link http://nicolasgallagher.com/css-drop-shadows-without-images/demo/ | ||
334 | */ | ||
335 | /** | ||
336 | * Drop shadow flying | ||
337 | * | ||
338 | * @thanks Geoffrey Crofte @geoffrey_crofte | ||
339 | * @link http://www.creativejuiz.fr/trytotry/css3-box-shadow-after-before/ | ||
340 | */ | ||
341 | /** | ||
342 | * Drop shadow w/ lifted corners | ||
343 | * | ||
344 | * @thanks Nicolas Gallagher @necolas | ||
345 | * @link http://nicolasgallagher.com/css-drop-shadows-without-images/demo/ | ||
346 | */ | ||
347 | /** | ||
348 | * Drop shadow w/ perspective | ||
349 | * | ||
350 | * @thanks Nicolas Gallagher @necolas | ||
351 | * @link http://nicolasgallagher.com/css-drop-shadows-without-images/demo/ | ||
352 | */ | ||
353 | /** | ||
354 | * Drop shadow raised | ||
355 | * | ||
356 | * @thanks Nicolas Gallagher @necolas | ||
357 | * @link http://nicolasgallagher.com/css-drop-shadows-without-images/demo/ | ||
358 | */ | ||
359 | /** | ||
360 | * Drop shadow rules required for transform on drop shadow | ||
361 | * | ||
362 | * /!\ This is required if you want to apply some transform on the element using drop shadow | ||
363 | * | ||
364 | * @thanks Nicolas Gallagher @necolas | ||
365 | * @link http://nicolasgallagher.com/css-drop-shadows-without-images/demo/ | ||
366 | */ | ||
367 | /** | ||
368 | * Shadow along the top edge of the browser viewport | ||
369 | * | ||
370 | * @link http://playground.genelocklin.com/depth/ | ||
371 | */ | ||
372 | /** | ||
373 | * Shapes ! | ||
374 | * Polygons, ellipses and symbols | ||
375 | * | ||
376 | * @thanks Chris Coyier @chriscoyier | ||
377 | * @link http://css-tricks.com/examples/ShapesOfCSS/ | ||
378 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
379 | */ | ||
380 | /** | ||
381 | * Shape/Ellipse | ||
382 | * | ||
383 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
384 | */ | ||
385 | /** | ||
386 | * Shape/Polygon | ||
387 | * | ||
388 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
389 | */ | ||
390 | /** | ||
391 | * Shape/Polygon/Hexagon | ||
392 | * | ||
393 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
394 | */ | ||
395 | /** | ||
396 | * Shape/Polygon/Octagon | ||
397 | * | ||
398 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
399 | */ | ||
400 | /** | ||
401 | * Shape/Polygon/Parallelogram | ||
402 | * | ||
403 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
404 | */ | ||
405 | /** | ||
406 | * Shape/Polygon/Pentagon | ||
407 | * | ||
408 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
409 | */ | ||
410 | /** | ||
411 | * Shape/Polygon/Rectangle | ||
412 | * | ||
413 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
414 | */ | ||
415 | /** | ||
416 | * Shape/Polygon/Rhombus | ||
417 | * | ||
418 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
419 | */ | ||
420 | /** | ||
421 | * Shape/Polygon/Square | ||
422 | * | ||
423 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
424 | */ | ||
425 | /** | ||
426 | * Shape/Polygon/Star | ||
427 | * | ||
428 | * @todo check if setting a z-index by default is a good thing | ||
429 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
430 | */ | ||
431 | /** | ||
432 | * Shape/Polygon/Trapezoid | ||
433 | * | ||
434 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
435 | */ | ||
436 | /** | ||
437 | * Shape/Polygon/Triangle | ||
438 | * | ||
439 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
440 | */ | ||
441 | /** | ||
442 | * Shape/Symbol | ||
443 | * | ||
444 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
445 | */ | ||
446 | /** | ||
447 | * Shape/Symbol/Diamond | ||
448 | * | ||
449 | * @todo add height support | ||
450 | * | ||
451 | * @author Alexander Futekov | ||
452 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
453 | */ | ||
454 | /** | ||
455 | * Shape/Symbol/Egg | ||
456 | * | ||
457 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
458 | */ | ||
459 | /** | ||
460 | * Shape/Symbol/Heart | ||
461 | * | ||
462 | * @author Nicolas Gallagher @necolas | ||
463 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
464 | */ | ||
465 | /** | ||
466 | * Shape/Symbol/Infinity | ||
467 | * | ||
468 | * @author Nicolas Gallagher @necolas | ||
469 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
470 | */ | ||
471 | /** | ||
472 | * Shape/Symbol/Pacman | ||
473 | * | ||
474 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
475 | */ | ||
476 | /** | ||
477 | * Shape/Symbol/Yin-yang | ||
478 | * | ||
479 | * @author Alexander Futekov | ||
480 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
481 | */ | ||
482 | /** | ||
483 | * Micro clearfix hack | ||
484 | * | ||
485 | * The clearfix hack is a popular way to clear floats without resorting to using presentational markup. This article presents an update to the clearfix method that further reduces the amount of CSS required. | ||
486 | * Known support: Firefox 2+, Safari 2+, Chrome, Opera 9.27+, IE 6+, IE Mac. | ||
487 | * | ||
488 | * @thanks Nicolas Gallagher @necolas | ||
489 | * @link http://nicolasgallagher.com/micro-clearfix-hack/ | ||
490 | */ | ||
491 | /** | ||
492 | * Note IE7/6 doesn't understand pseudo element as ::before and ::after | ||
493 | * IE8 need to have :before and not ::before | ||
494 | * So use only : and not :: if you want to support IE8 | ||
495 | * IE9 Webkit Firefox Opera understand :: | ||
496 | */ | ||
497 | /** | ||
498 | * UI convex effect from one color | ||
499 | * | ||
500 | * @todo merge with ui-button ? | ||
501 | * | ||
502 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
503 | */ | ||
504 | /** | ||
505 | * UI Glossy helper | ||
506 | * | ||
507 | * @deprecated | ||
508 | * @todo Remove in 0.4 | ||
509 | * @see background/gradients | ||
510 | * | ||
511 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
512 | */ | ||
513 | /** | ||
514 | * UI simple gradient from one color | ||
515 | * | ||
516 | * @todo merge with ui-button ? | ||
517 | * | ||
518 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
519 | */ | ||
520 | /** | ||
521 | * Shape/Polygon/Triangle | ||
522 | * | ||
523 | * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx | ||
524 | */ | ||
525 | /** | ||
526 | * Keyboard key touch | ||
527 | * A simple stylesheet for rendering beautiful keyboard-style elements. | ||
528 | |||
529 | * @author Michael Hüneburg http://michaelhue.com/keyscss | ||
530 | * @link https://github.com/michaelhue/keyscss (commit 76bb603e921d0145362e0f60eabb79d4f69cbda0) | ||
531 | * | ||
532 | * @author Maxime Thirouin @MoOx maxime.thirouin@gmail.com | ||
533 | */ | ||
534 | /** | ||
535 | * Menu dropdown helper | ||
536 | * | ||
537 | * @author Maxime Thirouin @MoOx maxime.thirouin@gmail.com | ||
538 | */ | ||
539 | /** | ||
540 | * Ui background overlay inspired by Google Chrome modal overlay | ||
541 | * | ||
542 | * @author Maxime Thirouin @MoOx maxime.thirouin@gmail.com | ||
543 | */ | ||
544 | /** | ||
545 | * Background overlay inspired by Google Chrome modal overlay | ||
546 | * | ||
547 | * @author Maxime Thirouin @MoOx maxime.thirouin@gmail.com | ||
548 | */ | ||
549 | /** | ||
550 | * <hr /> separator style | ||
551 | * | ||
552 | * @author Chris Coyier @chriscoyier | ||
553 | * @link http://jsfiddle.net/chriscoyier/GaEzp/35/ | ||
554 | * | ||
555 | * @author Maxime Thirouin @MoOx maxime.thirouin@gmail.com | ||
556 | */ | ||
557 | /** | ||
558 | * Micro clearfix hack | ||
559 | * | ||
560 | * The clearfix hack is a popular way to clear floats without resorting to using presentational markup. This article presents an update to the clearfix method that further reduces the amount of CSS required. | ||
561 | * Known support: Firefox 2+, Safari 2+, Chrome, Opera 9.27+, IE 6+, IE Mac. | ||
562 | * | ||
563 | * @thanks Nicolas Gallagher @necolas | ||
564 | * @link http://nicolasgallagher.com/micro-clearfix-hack/ | ||
565 | */ | ||
566 | /** | ||
567 | * Note IE7/6 doesn't understand pseudo element as ::before and ::after | ||
568 | * IE8 need to have :before and not ::before | ||
569 | * So use only : and not :: if you want to support IE8 | ||
570 | * IE9 Webkit Firefox Opera understand :: | ||
571 | */ | ||
572 | /** | ||
573 | * | ||
574 | * @class Gradients | ||
575 | * @author David Kaneda http://www.davidkaneda.com/ | ||
576 | * | ||
577 | */ | ||
578 | /** | ||
579 | * Adds a background gradient into a specified selector. | ||
580 | * | ||
581 | * @include background-gradient(#444, 'glossy'); | ||
582 | * | ||
583 | * You can also use color-stops if you want full control of the gradient: | ||
584 | * | ||
585 | * @include background-gradient(#444, color-stops(#333, #222, #111)); | ||
586 | * | ||
587 | * @param {color} $bg-color | ||
588 | * The base color of the gradient. | ||
589 | * | ||
590 | * @param {string/list} $type | ||
591 | * The style of the gradient, one of five pre-defined options: matte, bevel, glossy, recessed, or linear: | ||
592 | * | ||
593 | * @include background-gradient(red, 'glossy'); | ||
594 | * | ||
595 | * It can also accept a list of color-stop values:; | ||
596 | * | ||
597 | * @include background-gradient(black, color-stops(#333, #111, #000)); | ||
598 | * | ||
599 | * @param {string} $direction | ||
600 | * The direction of the gradient. | ||
601 | */ | ||
602 | /** | ||
603 | * @class Webfont Icon | ||
604 | * Great to use with the [Pictos font](http://pictos.drewwilson.com/) | ||
605 | * | ||
606 | */ | ||
607 | /** | ||
608 | * @cfg {color} $webfont-icon-base-color | ||
609 | * The default color of icons when using the {@link #webfont-icon} mixin. | ||
610 | * | ||
611 | * Defaults to `white`. | ||
612 | */ | ||
613 | /** | ||
614 | * @cfg {color} $webfont-icon-default-stroke | ||
615 | * The default color to use on the border of icons, when using the {@link #webfont-icon} mixin. | ||
616 | * | ||
617 | * Defaults to `null`. | ||
618 | */ | ||
619 | /** | ||
620 | * @cfg {string} $webfont-icon-default-gradient | ||
621 | * The default gradient to use when using the {@link #webfont-icon} mixin. | ||
622 | * | ||
623 | * Defaults to `matte`. | ||
624 | */ | ||
625 | /* line 41, ../compass-recipes/stylesheets/recipes/_webfont-icon.scss */ | ||
626 | .webfont-icon-base { | ||
627 | color: transparent; | ||
628 | -webkit-background-clip: text; | ||
629 | background-clip: text; | ||
630 | position: absolute; | ||
631 | top: 0; | ||
632 | left: 0; | ||
633 | text-indent: 0; | ||
634 | text-shadow: none; | ||
635 | -webkit-user-select: none; | ||
636 | user-select: none; | ||
637 | } | ||
638 | /** | ||
639 | * Includes a character into the specified selector, styled as an icon. | ||
640 | * | ||
641 | * @include webfont-icon('a'); | ||
642 | * | ||
643 | * @param {color} $color | ||
644 | * The color of the icon. Defaults to {@link #$webfont-icon-default-background $webfont-icon-default-background}. | ||
645 | * | ||
646 | * @param {measurement} $size | ||
647 | * The size of the icon | ||
648 | * | ||
649 | * @param {color} $stroke | ||
650 | * The color of the border. Defautls to {@link #$webfont-icon-default-border $webfont-icon-default-border}. | ||
651 | * | ||
652 | * @param {boolean} $include-staes | ||
653 | * True to include states for hover and active. Defaults to `true`. | ||
654 | */ | ||
655 | /* line 1, ../scss/include/_base.scss */ | ||
656 | * { | ||
657 | margin: 0; | ||
658 | padding: 0; | ||
659 | } | ||
660 | /* line 6, ../scss/include/_base.scss */ | ||
661 | body { | ||
662 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); | ||
663 | -webkit-touch-callout: none; | ||
664 | } | ||
665 | /* line 11, ../scss/include/_base.scss */ | ||
666 | #jqt { | ||
667 | -webkit-text-size-adjust: none; | ||
668 | -webkit-user-select: none; | ||
669 | user-select: none; | ||
670 | font-family: "Helvetica Neue", Helvetica; | ||
671 | position: absolute; | ||
672 | right: 0; | ||
673 | top: 0; | ||
674 | left: 0; | ||
675 | bottom: 0; | ||
676 | } | ||
677 | /* line 21, ../scss/include/_base.scss */ | ||
678 | #jqt a { | ||
679 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); | ||
680 | -webkit-user-drag: none; | ||
681 | } | ||
682 | /* line 26, ../scss/include/_base.scss */ | ||
683 | #jqt .selectable, | ||
684 | #jqt input, | ||
685 | #jqt textarea { | ||
686 | -webkit-user-select: auto; | ||
687 | } | ||
688 | /* line 30, ../scss/include/_base.scss */ | ||
689 | #jqt.notransform { | ||
690 | -webkit-transform: none !important; | ||
691 | } | ||
692 | /* line 35, ../scss/include/_base.scss */ | ||
693 | #jqt > * { | ||
694 | display: block; | ||
695 | left: 0; | ||
696 | top: 0; | ||
697 | min-height: 100%; | ||
698 | width: 100%; | ||
699 | overflow-x: hidden; | ||
700 | position: absolute; | ||
701 | z-index: 0; | ||
702 | display: -webkit-box; | ||
703 | display: box; | ||
704 | -webkit-box-orient: vertical; | ||
705 | box-orient: vertical; | ||
706 | -webkit-box-flex: 1; | ||
707 | box-flex: 1; | ||
708 | } | ||
709 | /* line 49, ../scss/include/_base.scss */ | ||
710 | #jqt > .current { | ||
711 | z-index: 10; | ||
712 | } | ||
713 | /* line 53, ../scss/include/_base.scss */ | ||
714 | #jqt > :not(.current) { | ||
715 | display: none; | ||
716 | } | ||
717 | /* line 57, ../scss/include/_base.scss */ | ||
718 | #jqt.touchscroll:not(.animating3d) { | ||
719 | overflow-y: auto; | ||
720 | -webkit-overflow-scrolling: touch; | ||
721 | } | ||
722 | /* line 61, ../scss/include/_base.scss */ | ||
723 | #jqt.touchscroll:not(.animating3d) > * { | ||
724 | height: 100%; | ||
725 | } | ||
726 | /* line 64, ../scss/include/_base.scss */ | ||
727 | #jqt.touchscroll:not(.animating3d) .scroll { | ||
728 | position: relative; | ||
729 | -webkit-box-flex: 1; | ||
730 | box-flex: 1; | ||
731 | overflow-y: auto; | ||
732 | -webkit-overflow-scrolling: touch; | ||
733 | } | ||
734 | /* line 72, ../scss/include/_base.scss */ | ||
735 | #jqt .scroll { | ||
736 | -webkit-margin-collapse: separate; | ||
737 | } | ||
738 | /* line 76, ../scss/include/_base.scss */ | ||
739 | #jqt .in, | ||
740 | #jqt .out { | ||
741 | -webkit-animation-duration: 250ms; | ||
742 | -webkit-animation-fill-mode: both; | ||
743 | -webkit-animation-timing-function: ease-in-out; | ||
744 | } | ||
745 | /* line 82, ../scss/include/_base.scss */ | ||
746 | #jqt .in { | ||
747 | z-index: 10; | ||
748 | } | ||
749 | /* line 85, ../scss/include/_base.scss */ | ||
750 | #jqt .in:after { | ||
751 | content: ""; | ||
752 | position: absolute; | ||
753 | display: block; | ||
754 | top: 0; | ||
755 | left: 0; | ||
756 | bottom: 0; | ||
757 | right: 0; | ||
758 | } | ||
759 | /* line 94, ../scss/include/_base.scss */ | ||
760 | #jqt .out { | ||
761 | z-index: 0 !important; | ||
762 | } | ||
763 | /* line 98, ../scss/include/_base.scss */ | ||
764 | #jqt.supports3d { | ||
765 | -webkit-perspective: 1000; | ||
766 | } | ||
767 | /* line 101, ../scss/include/_base.scss */ | ||
768 | #jqt.supports3d > * { | ||
769 | -webkit-transform: translate3d(0, 0, 0) rotate(0) scale(1); | ||
770 | } | ||
771 | /* Fade */ | ||
772 | /* line 3, ../scss/include/_animations.scss */ | ||
773 | #jqt .fade.in { | ||
774 | -webkit-animation-name: fadeIn; | ||
775 | } | ||
776 | /* line 7, ../scss/include/_animations.scss */ | ||
777 | #jqt .fade.out { | ||
778 | z-index: 10; | ||
779 | -webkit-animation-name: fadeOut; | ||
780 | } | ||
781 | @-webkit-keyframes fadeIn { | ||
782 | /* line 13, ../scss/include/_animations.scss */ | ||
783 | 0% { | ||
784 | opacity: 0; | ||
785 | } | ||
786 | /* line 16, ../scss/include/_animations.scss */ | ||
787 | 100% { | ||
788 | opacity: 1; | ||
789 | } | ||
790 | } | ||
791 | @-webkit-keyframes fadeOut { | ||
792 | /* line 22, ../scss/include/_animations.scss */ | ||
793 | 0% { | ||
794 | opacity: 1; | ||
795 | } | ||
796 | /* line 25, ../scss/include/_animations.scss */ | ||
797 | 100% { | ||
798 | opacity: 1; | ||
799 | } | ||
800 | } | ||
801 | /* Disolve */ | ||
802 | /* line 34, ../scss/include/_animations.scss */ | ||
803 | #jqt .dissolve.in { | ||
804 | -webkit-animation-name: dissolveIn; | ||
805 | } | ||
806 | /* line 38, ../scss/include/_animations.scss */ | ||
807 | #jqt .dissolve.out { | ||
808 | -webkit-animation-name: dissolveOut; | ||
809 | } | ||
810 | @-webkit-keyframes dissolveIn { | ||
811 | /* line 43, ../scss/include/_animations.scss */ | ||
812 | 0% { | ||
813 | opacity: 0; | ||
814 | } | ||
815 | /* line 46, ../scss/include/_animations.scss */ | ||
816 | 100% { | ||
817 | opacity: 1; | ||
818 | } | ||
819 | } | ||
820 | @-webkit-keyframes dissolveOut { | ||
821 | /* line 52, ../scss/include/_animations.scss */ | ||
822 | 0% { | ||
823 | opacity: 1; | ||
824 | } | ||
825 | /* line 55, ../scss/include/_animations.scss */ | ||
826 | 100% { | ||
827 | opacity: 0; | ||
828 | } | ||
829 | } | ||
830 | /* #Popin' */ | ||
831 | /* line 64, ../scss/include/_animations.scss */ | ||
832 | #jqt .pop.in { | ||
833 | -webkit-animation-name: popIn; | ||
834 | } | ||
835 | /* line 68, ../scss/include/_animations.scss */ | ||
836 | #jqt .pop.out { | ||
837 | -webkit-animation-name: popOut; | ||
838 | } | ||
839 | @-webkit-keyframes popIn { | ||
840 | /* line 73, ../scss/include/_animations.scss */ | ||
841 | 0% { | ||
842 | -webkit-transform: scale(0.2); | ||
843 | opacity: 0; | ||
844 | } | ||
845 | /* line 77, ../scss/include/_animations.scss */ | ||
846 | 100% { | ||
847 | -webkit-transform: scale(1); | ||
848 | opacity: 1; | ||
849 | } | ||
850 | } | ||
851 | @-webkit-keyframes popOut { | ||
852 | /* line 84, ../scss/include/_animations.scss */ | ||
853 | 0% { | ||
854 | -webkit-transform: scale(1); | ||
855 | opacity: 1; | ||
856 | } | ||
857 | /* line 88, ../scss/include/_animations.scss */ | ||
858 | 100% { | ||
859 | -webkit-transform: scale(0.2); | ||
860 | opacity: 0; | ||
861 | } | ||
862 | } | ||
863 | /* Slide Left */ | ||
864 | /* line 98, ../scss/include/_animations.scss */ | ||
865 | #jqt .slideleft.in { | ||
866 | -webkit-animation-name: slideLeftIn; | ||
867 | } | ||
868 | /* line 102, ../scss/include/_animations.scss */ | ||
869 | #jqt .slideleft.out { | ||
870 | -webkit-animation-name: slideLeftOut; | ||
871 | } | ||
872 | @-webkit-keyframes slideLeftIn { | ||
873 | /* line 107, ../scss/include/_animations.scss */ | ||
874 | 0% { | ||
875 | -webkit-transform: translateX(100%); | ||
876 | } | ||
877 | /* line 110, ../scss/include/_animations.scss */ | ||
878 | 100% { | ||
879 | -webkit-transform: translateX(0); | ||
880 | } | ||
881 | } | ||
882 | @-webkit-keyframes slideLeftOut { | ||
883 | /* line 116, ../scss/include/_animations.scss */ | ||
884 | 0% { | ||
885 | -webkit-transform: translateX(0px); | ||
886 | } | ||
887 | /* line 119, ../scss/include/_animations.scss */ | ||
888 | 100% { | ||
889 | -webkit-transform: translateX(-100%); | ||
890 | } | ||
891 | } | ||
892 | /* Slide Right */ | ||
893 | /* line 128, ../scss/include/_animations.scss */ | ||
894 | #jqt .slideright.in { | ||
895 | -webkit-animation-name: slideRightIn; | ||
896 | } | ||
897 | /* line 132, ../scss/include/_animations.scss */ | ||
898 | #jqt .slideright.out { | ||
899 | -webkit-animation-name: slideRightOut; | ||
900 | } | ||
901 | @-webkit-keyframes slideRightIn { | ||
902 | /* line 137, ../scss/include/_animations.scss */ | ||
903 | 0% { | ||
904 | -webkit-transform: translateX(-100%); | ||
905 | } | ||
906 | /* line 140, ../scss/include/_animations.scss */ | ||
907 | 100% { | ||
908 | -webkit-transform: translateX(0); | ||
909 | } | ||
910 | } | ||
911 | @-webkit-keyframes slideRightOut { | ||
912 | /* line 146, ../scss/include/_animations.scss */ | ||
913 | 0% { | ||
914 | -webkit-transform: translateX(0); | ||
915 | } | ||
916 | /* line 149, ../scss/include/_animations.scss */ | ||
917 | 100% { | ||
918 | -webkit-transform: translateX(100%); | ||
919 | } | ||
920 | } | ||
921 | /* Slide Up */ | ||
922 | /* line 158, ../scss/include/_animations.scss */ | ||
923 | #jqt .slideup.in { | ||
924 | z-index: 10; | ||
925 | -webkit-animation-name: slideUpIn; | ||
926 | } | ||
927 | /* line 162, ../scss/include/_animations.scss */ | ||
928 | #jqt .slideup.out { | ||
929 | z-index: 0; | ||
930 | -webkit-animation-name: slideUpOut; | ||
931 | } | ||
932 | @-webkit-keyframes slideUpIn { | ||
933 | /* line 168, ../scss/include/_animations.scss */ | ||
934 | 0% { | ||
935 | -webkit-transform: translateY(100%); | ||
936 | } | ||
937 | /* line 171, ../scss/include/_animations.scss */ | ||
938 | 100% { | ||
939 | -webkit-transform: translateY(0); | ||
940 | } | ||
941 | } | ||
942 | @-webkit-keyframes slideUpOut { | ||
943 | /* line 177, ../scss/include/_animations.scss */ | ||
944 | 0% { | ||
945 | -webkit-transform: translateY(0); | ||
946 | } | ||
947 | /* line 180, ../scss/include/_animations.scss */ | ||
948 | 100% { | ||
949 | -webkit-transform: translateY(0); | ||
950 | } | ||
951 | } | ||
952 | /* Slide Down */ | ||
953 | /* line 189, ../scss/include/_animations.scss */ | ||
954 | #jqt .slidedown.in { | ||
955 | z-index: 0; | ||
956 | -webkit-animation-name: slideDownIn; | ||
957 | } | ||
958 | /* line 193, ../scss/include/_animations.scss */ | ||
959 | #jqt .slidedown.out { | ||
960 | z-index: 10; | ||
961 | -webkit-animation-name: slideDownOut; | ||
962 | } | ||
963 | @-webkit-keyframes slideDownIn { | ||
964 | /* line 199, ../scss/include/_animations.scss */ | ||
965 | 0% { | ||
966 | -webkit-transform: translateY(0); | ||
967 | } | ||
968 | /* line 202, ../scss/include/_animations.scss */ | ||
969 | 100% { | ||
970 | -webkit-transform: translateY(0); | ||
971 | } | ||
972 | } | ||
973 | @-webkit-keyframes slideDownOut { | ||
974 | /* line 208, ../scss/include/_animations.scss */ | ||
975 | 0% { | ||
976 | -webkit-transform: translateY(0); | ||
977 | } | ||
978 | /* line 211, ../scss/include/_animations.scss */ | ||
979 | 100% { | ||
980 | -webkit-transform: translateY(100%); | ||
981 | } | ||
982 | } | ||
983 | /* Flip Left */ | ||
984 | /* line 220, ../scss/include/_animations.scss */ | ||
985 | #jqt .flipleft { | ||
986 | -webkit-backface-visibility: hidden; | ||
987 | } | ||
988 | /* line 224, ../scss/include/_animations.scss */ | ||
989 | #jqt .flipleft.in { | ||
990 | -webkit-animation-name: flipLeftIn; | ||
991 | } | ||
992 | /* line 228, ../scss/include/_animations.scss */ | ||
993 | #jqt .flipleft.out { | ||
994 | -webkit-animation-name: flipLeftOut; | ||
995 | } | ||
996 | @-webkit-keyframes flipLeftIn { | ||
997 | /* line 233, ../scss/include/_animations.scss */ | ||
998 | 0% { | ||
999 | -webkit-transform: rotateY(180deg) scale(0.8); | ||
1000 | } | ||
1001 | /* line 236, ../scss/include/_animations.scss */ | ||
1002 | 100% { | ||
1003 | -webkit-transform: rotateY(0deg) scale(1); | ||
1004 | } | ||
1005 | } | ||
1006 | @-webkit-keyframes flipLeftOut { | ||
1007 | /* line 242, ../scss/include/_animations.scss */ | ||
1008 | 0% { | ||
1009 | -webkit-transform: rotateY(0deg) scale(1); | ||
1010 | } | ||
1011 | /* line 245, ../scss/include/_animations.scss */ | ||
1012 | 100% { | ||
1013 | -webkit-transform: rotateY(-180deg) scale(0.8); | ||
1014 | } | ||
1015 | } | ||
1016 | /* Flip Right */ | ||
1017 | /* line 254, ../scss/include/_animations.scss */ | ||
1018 | #jqt .flipright { | ||
1019 | -webkit-backface-visibility: hidden; | ||
1020 | } | ||
1021 | /* line 258, ../scss/include/_animations.scss */ | ||
1022 | #jqt .flipright.in { | ||
1023 | -webkit-animation-name: flipRightIn; | ||
1024 | } | ||
1025 | /* line 262, ../scss/include/_animations.scss */ | ||
1026 | #jqt .flipright.out { | ||
1027 | -webkit-animation-name: flipRightOut; | ||
1028 | } | ||
1029 | @-webkit-keyframes flipRightIn { | ||
1030 | /* line 267, ../scss/include/_animations.scss */ | ||
1031 | 0% { | ||
1032 | -webkit-transform: rotateY(-180deg) scale(0.8); | ||
1033 | } | ||
1034 | /* line 270, ../scss/include/_animations.scss */ | ||
1035 | 100% { | ||
1036 | -webkit-transform: rotateY(0deg) scale(1); | ||
1037 | } | ||
1038 | } | ||
1039 | @-webkit-keyframes flipRightOut { | ||
1040 | /* line 276, ../scss/include/_animations.scss */ | ||
1041 | 0% { | ||
1042 | -webkit-transform: rotateY(0deg) scale(1); | ||
1043 | } | ||
1044 | /* line 279, ../scss/include/_animations.scss */ | ||
1045 | 100% { | ||
1046 | -webkit-transform: rotateY(180deg) scale(0.8); | ||
1047 | } | ||
1048 | } | ||
1049 | /* Swap Right */ | ||
1050 | /* line 288, ../scss/include/_animations.scss */ | ||
1051 | #jqt .swapright { | ||
1052 | -webkit-animation-duration: .7s; | ||
1053 | -webkit-transform: perspective(800); | ||
1054 | -webkit-animation-timing-function: ease-out; | ||
1055 | } | ||
1056 | /* line 293, ../scss/include/_animations.scss */ | ||
1057 | #jqt .swapright.in { | ||
1058 | -webkit-animation-name: swapRightIn; | ||
1059 | } | ||
1060 | /* line 296, ../scss/include/_animations.scss */ | ||
1061 | #jqt .swapright.out { | ||
1062 | -webkit-animation-name: swapRightOut; | ||
1063 | } | ||
1064 | @-webkit-keyframes swapRightIn { | ||
1065 | /* line 301, ../scss/include/_animations.scss */ | ||
1066 | 0% { | ||
1067 | -webkit-transform: translate3d(0px, 0px, -800px) rotateY(70deg); | ||
1068 | opacity: 0; | ||
1069 | } | ||
1070 | /* line 305, ../scss/include/_animations.scss */ | ||
1071 | 35% { | ||
1072 | -webkit-transform: translate3d(-180px, 0px, -400px) rotateY(20deg); | ||
1073 | opacity: 1; | ||
1074 | } | ||
1075 | /* line 309, ../scss/include/_animations.scss */ | ||
1076 | 100% { | ||
1077 | -webkit-transform: translate3d(0px, 0px, 0px) rotateY(0deg); | ||
1078 | opacity: 1; | ||
1079 | } | ||
1080 | } | ||
1081 | @-webkit-keyframes swapRightOut { | ||
1082 | /* line 316, ../scss/include/_animations.scss */ | ||
1083 | 0% { | ||
1084 | -webkit-transform: translate3d(0px, 0px, 0px) rotateY(0deg); | ||
1085 | opacity: 1; | ||
1086 | } | ||
1087 | /* line 320, ../scss/include/_animations.scss */ | ||
1088 | 35% { | ||
1089 | -webkit-transform: translate3d(180px, 0px, -400px) rotateY(-20deg); | ||
1090 | opacity: .5; | ||
1091 | } | ||
1092 | /* line 324, ../scss/include/_animations.scss */ | ||
1093 | 100% { | ||
1094 | -webkit-transform: translate3d(0px, 0px, -800px) rotateY(-70deg); | ||
1095 | opacity: 0; | ||
1096 | } | ||
1097 | } | ||
1098 | /* Swap Left */ | ||
1099 | /* line 332, ../scss/include/_animations.scss */ | ||
1100 | #jqt .swapleft { | ||
1101 | -webkit-animation-duration: .7s; | ||
1102 | -webkit-transform: perspective(800); | ||
1103 | -webkit-animation-timing-function: ease-out; | ||
1104 | } | ||
1105 | /* line 337, ../scss/include/_animations.scss */ | ||
1106 | #jqt .swapleft.in { | ||
1107 | -webkit-animation-name: swapLeftIn; | ||
1108 | } | ||
1109 | /* line 340, ../scss/include/_animations.scss */ | ||
1110 | #jqt .swapleft.out { | ||
1111 | -webkit-animation-name: swapLeftOut; | ||
1112 | } | ||
1113 | @-webkit-keyframes swapLeftIn { | ||
1114 | /* line 345, ../scss/include/_animations.scss */ | ||
1115 | 0% { | ||
1116 | -webkit-transform: translate3d(0px, 0px, -800px) rotateY(-70deg); | ||
1117 | opacity: 0; | ||
1118 | } | ||
1119 | /* line 349, ../scss/include/_animations.scss */ | ||
1120 | 35% { | ||
1121 | -webkit-transform: translate3d(180px, 0px, -400px) rotateY(-20deg); | ||
1122 | opacity: 1; | ||
1123 | } | ||
1124 | /* line 353, ../scss/include/_animations.scss */ | ||
1125 | 100% { | ||
1126 | opacity: 1; | ||
1127 | -webkit-transform: translate3d(0px, 0px, 0px) rotateY(0deg); | ||
1128 | } | ||
1129 | } | ||
1130 | @-webkit-keyframes swapLeftOut { | ||
1131 | /* line 360, ../scss/include/_animations.scss */ | ||
1132 | 0% { | ||
1133 | -webkit-transform: translate3d(0px, 0px, 0px) rotateY(0deg); | ||
1134 | opacity: 1; | ||
1135 | } | ||
1136 | /* line 364, ../scss/include/_animations.scss */ | ||
1137 | 35% { | ||
1138 | -webkit-transform: translate3d(-180px, 0px, -400px) rotateY(20deg); | ||
1139 | opacity: .5; | ||
1140 | } | ||
1141 | /* line 368, ../scss/include/_animations.scss */ | ||
1142 | 100% { | ||
1143 | -webkit-transform: translate3d(0px, 0px, -800px) rotateY(70deg); | ||
1144 | opacity: 0; | ||
1145 | } | ||
1146 | } | ||
1147 | /* Cube Left */ | ||
1148 | /* line 382, ../scss/include/_animations.scss */ | ||
1149 | #jqt .cubeleft.in, | ||
1150 | #jqt .cubeleft.out, | ||
1151 | #jqt .cuberight.in, | ||
1152 | #jqt .cuberight.out { | ||
1153 | -webkit-animation-duration: .6s; | ||
1154 | -webkit-transform: perspective(800); | ||
1155 | } | ||
1156 | /* line 389, ../scss/include/_animations.scss */ | ||
1157 | #jqt .cubeleft.in { | ||
1158 | -webkit-transform-origin: 0% 50%; | ||
1159 | -webkit-animation-name: cubeLeftIn; | ||
1160 | } | ||
1161 | /* line 394, ../scss/include/_animations.scss */ | ||
1162 | #jqt .cubeleft.out { | ||
1163 | -webkit-transform-origin: 100% 50%; | ||
1164 | -webkit-animation-name: cubeLeftOut; | ||
1165 | } | ||
1166 | @-webkit-keyframes cubeLeftIn { | ||
1167 | /* line 400, ../scss/include/_animations.scss */ | ||
1168 | 0% { | ||
1169 | -webkit-transform: rotateY(90deg) translateZ(320px); | ||
1170 | opacity: .5; | ||
1171 | } | ||
1172 | /* line 404, ../scss/include/_animations.scss */ | ||
1173 | 100% { | ||
1174 | -webkit-transform: rotateY(0deg) translateZ(0) translateX(0); | ||
1175 | opacity: 1; | ||
1176 | } | ||
1177 | } | ||
1178 | @-webkit-keyframes cubeLeftOut { | ||
1179 | /* line 411, ../scss/include/_animations.scss */ | ||
1180 | 0% { | ||
1181 | -webkit-transform: rotateY(0deg) translateZ(0) translateX(0); | ||
1182 | opacity: 1; | ||
1183 | } | ||
1184 | /* line 415, ../scss/include/_animations.scss */ | ||
1185 | 100% { | ||
1186 | -webkit-transform: rotateY(-90deg) translateZ(320px); | ||
1187 | opacity: .5; | ||
1188 | } | ||
1189 | } | ||
1190 | /* Cube Right */ | ||
1191 | /* line 423, ../scss/include/_animations.scss */ | ||
1192 | #jqt .cuberight.in { | ||
1193 | -webkit-transform-origin: 100% 50%; | ||
1194 | -webkit-animation-name: cubeRightIn; | ||
1195 | } | ||
1196 | /* line 428, ../scss/include/_animations.scss */ | ||
1197 | #jqt .cuberight.out { | ||
1198 | -webkit-transform-origin: 0% 50%; | ||
1199 | -webkit-animation-name: cubeRightOut; | ||
1200 | } | ||
1201 | @-webkit-keyframes cubeRightIn { | ||
1202 | /* line 434, ../scss/include/_animations.scss */ | ||
1203 | 0% { | ||
1204 | -webkit-transform: rotateY(-90deg) translateZ(320px); | ||
1205 | opacity: .5; | ||
1206 | } | ||
1207 | /* line 438, ../scss/include/_animations.scss */ | ||
1208 | 100% { | ||
1209 | -webkit-transform: rotateY(0deg) translateZ(0) translateX(0); | ||
1210 | opacity: 1; | ||
1211 | } | ||
1212 | } | ||
1213 | @-webkit-keyframes cubeRightOut { | ||
1214 | /* line 445, ../scss/include/_animations.scss */ | ||
1215 | 0% { | ||
1216 | -webkit-transform: rotateY(0deg) translateZ(0) translateX(0); | ||
1217 | opacity: 1; | ||
1218 | } | ||
1219 | /* line 449, ../scss/include/_animations.scss */ | ||
1220 | 100% { | ||
1221 | -webkit-transform: rotateY(90deg) translateZ(320px); | ||
1222 | opacity: .5; | ||
1223 | } | ||
1224 | } | ||
1225 | /* line 5, ../scss/include/_skeleton.scss */ | ||
1226 | body { | ||
1227 | background: black; | ||
1228 | } | ||
1229 | /* line 9, ../scss/include/_skeleton.scss */ | ||
1230 | .base-chevron, | ||
1231 | #jqt ul li.arrow:after, | ||
1232 | #jqt ul li.forward:after { | ||
1233 | content: '›'; | ||
1234 | width: 22px; | ||
1235 | height: 100%; | ||
1236 | vertical-align: middle; | ||
1237 | font-size: 30px; | ||
1238 | line-height: 38px; | ||
1239 | font-family: Futura, "Futura Condensed", Helvetica, Arial, sans-serif; | ||
1240 | font-weight: bold; | ||
1241 | filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60); | ||
1242 | opacity: 0.6; | ||
1243 | position: absolute; | ||
1244 | right: 0; | ||
1245 | top: 0; | ||
1246 | pointer-events: none; | ||
1247 | z-index: 10; | ||
1248 | } | ||
1249 | /* line 26, ../scss/include/_skeleton.scss */ | ||
1250 | .base-flatlists, | ||
1251 | #jqt ul.metal, | ||
1252 | #jqt ul.edgetoedge, | ||
1253 | #jqt ul.plastic { | ||
1254 | margin: 0; | ||
1255 | padding: 0; | ||
1256 | border-width: 0 0 0 1px; | ||
1257 | -webkit-border-radius: 0; | ||
1258 | border-radius: 0; | ||
1259 | } | ||
1260 | /* line 35, ../scss/include/_skeleton.scss */ | ||
1261 | #jqt h1, | ||
1262 | #jqt h2 { | ||
1263 | font: bold 18px "Helvetica Neue", Helvetica; | ||
1264 | margin: 10px 20px 6px; | ||
1265 | color: #bbbcbe; | ||
1266 | text-shadow: #3c3d3e 0 -1px 0; | ||
1267 | } | ||
1268 | /* line 41, ../scss/include/_skeleton.scss */ | ||
1269 | #jqt .toolbar { | ||
1270 | -webkit-box-sizing: border-box; | ||
1271 | box-sizing: border-box; | ||
1272 | -webkit-box-shadow: rgba(0, 0, 0, 0.4) 0 1px 6px; | ||
1273 | box-shadow: rgba(0, 0, 0, 0.4) 0 1px 6px; | ||
1274 | border-bottom: 1px solid black; | ||
1275 | z-index: 10; | ||
1276 | position: relative; | ||
1277 | padding: 10px; | ||
1278 | height: 44px; | ||
1279 | } | ||
1280 | /* line 52, ../scss/include/_skeleton.scss */ | ||
1281 | #jqt .toolbar > h1 { | ||
1282 | position: absolute; | ||
1283 | overflow: hidden; | ||
1284 | left: 50%; | ||
1285 | bottom: 9px; | ||
1286 | margin: 1px 0 0 -75px; | ||
1287 | width: 150px; | ||
1288 | font-size: 20px; | ||
1289 | font-weight: bold; | ||
1290 | line-height: 1.3em; | ||
1291 | text-align: center; | ||
1292 | text-overflow: ellipsis; | ||
1293 | white-space: nowrap; | ||
1294 | color: white; | ||
1295 | text-shadow: #161717 0 -1px 0; | ||
1296 | } | ||
1297 | /* line 71, ../scss/include/_skeleton.scss */ | ||
1298 | #jqt.black-translucent .toolbar { | ||
1299 | padding-top: 30px; | ||
1300 | height: 64px; | ||
1301 | } | ||
1302 | /* line 75, ../scss/include/_skeleton.scss */ | ||
1303 | #jqt.landscape .toolbar > h1 { | ||
1304 | margin-left: -125px; | ||
1305 | width: 250px; | ||
1306 | } | ||
1307 | /* line 80, ../scss/include/_skeleton.scss */ | ||
1308 | #jqt .button, | ||
1309 | #jqt .back, | ||
1310 | #jqt .cancel, | ||
1311 | #jqt .add { | ||
1312 | position: absolute; | ||
1313 | overflow: hidden; | ||
1314 | width: auto; | ||
1315 | height: 30px; | ||
1316 | font-family: inherit; | ||
1317 | font-size: 12px; | ||
1318 | font-weight: bold; | ||
1319 | line-height: 30px; | ||
1320 | text-overflow: ellipsis; | ||
1321 | text-decoration: none; | ||
1322 | white-space: nowrap; | ||
1323 | background: none; | ||
1324 | bottom: 6px; | ||
1325 | right: 10px; | ||
1326 | margin: 0; | ||
1327 | padding: 0 10px; | ||
1328 | color: #e2e3e3; | ||
1329 | text-shadow: #000000 0 -1px 0; | ||
1330 | -webkit-box-shadow: rgba(255, 255, 255, 0.2) 0 1px 0, rgba(0, 0, 0, 0.2) 0 1px 2px inset; | ||
1331 | box-shadow: rgba(255, 255, 255, 0.2) 0 1px 0, rgba(0, 0, 0, 0.2) 0 1px 2px inset; | ||
1332 | border: 1px solid black; | ||
1333 | -webkit-border-radius: 5px; | ||
1334 | border-radius: 5px; | ||
1335 | background-image: none; | ||
1336 | background-color: #0a0a0a; | ||
1337 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2f3031), color-stop(50%, #161717), color-stop(51%, #0a0a0a), color-stop(100%, #000000)); | ||
1338 | background-image: -webkit-linear-gradient(top, #2f3031, #161717 50%, #0a0a0a 51%, #000000); | ||
1339 | background-image: linear-gradient(top, #2f3031, #161717 50%, #0a0a0a 51%, #000000); | ||
1340 | } | ||
1341 | /* line 107, ../scss/include/_skeleton.scss */ | ||
1342 | #jqt .button.active, | ||
1343 | #jqt .back.active, | ||
1344 | #jqt .cancel.active, | ||
1345 | #jqt .add.active { | ||
1346 | border-color: black; | ||
1347 | background-image: none; | ||
1348 | background-color: black; | ||
1349 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #262627), color-stop(50%, #0d0d0d), color-stop(51%, #000000), color-stop(100%, #000000)); | ||
1350 | background-image: -webkit-linear-gradient(top, #262627, #0d0d0d 50%, #000000 51%, #000000); | ||
1351 | background-image: linear-gradient(top, #262627, #0d0d0d 50%, #000000 51%, #000000); | ||
1352 | color: #d8d9d9; | ||
1353 | text-shadow: #000000 0 -1px 0; | ||
1354 | } | ||
1355 | /* line 114, ../scss/include/_skeleton.scss */ | ||
1356 | #jqt .back { | ||
1357 | max-width: 60px; | ||
1358 | margin-left: 15px; | ||
1359 | overflow: visible; | ||
1360 | padding-left: 5px; | ||
1361 | } | ||
1362 | /* line 121, ../scss/include/_skeleton.scss */ | ||
1363 | #jqt .back:after, | ||
1364 | #jqt .back:before { | ||
1365 | content: ''; | ||
1366 | position: absolute; | ||
1367 | width: 20px; | ||
1368 | height: 20px; | ||
1369 | top: 1px; | ||
1370 | left: 1px; | ||
1371 | -webkit-transform: rotate(45deg) translate3d(0.2px, 0, 0); | ||
1372 | transform: rotate(45deg) translate3d(0.2px, 0, 0); | ||
1373 | -webkit-transform-origin: 0 0; | ||
1374 | transform-origin: 0 0; | ||
1375 | background-image: none; | ||
1376 | background-color: #0a0a0a; | ||
1377 | background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #2f3031), color-stop(50%, #161717), color-stop(51%, #0a0a0a), color-stop(100%, #000000)); | ||
1378 | background-image: -webkit-linear-gradient(top left, #2f3031, #161717 50%, #0a0a0a 51%, #000000); | ||
1379 | background-image: linear-gradient(top left, #2f3031, #161717 50%, #0a0a0a 51%, #000000); | ||
1380 | background-size: 100% 98%; | ||
1381 | -webkit-border-radius: 0 0 0 2px; | ||
1382 | border-radius: 0 0 0 2px; | ||
1383 | -webkit-mask-image: -webkit-linear-gradient(45deg, #000000, #000000 15px, rgba(0, 0, 0, 0) 15px); | ||
1384 | -webkit-mask-image: -webkit-gradient(linear, left bottom, right top, from(#000000), color-stop(50%, #000000), color-stop(50%, rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0))); | ||
1385 | -webkit-mask-clip: border-box; | ||
1386 | -webkit-background-clip: content-box; | ||
1387 | } | ||
1388 | /* line 149, ../scss/include/_skeleton.scss */ | ||
1389 | #jqt .back:after { | ||
1390 | -webkit-box-shadow: rgba(0, 0, 0, 0.2) 1px 0 0 inset, rgba(0, 0, 0, 0.2) 0 -1px 0 inset; | ||
1391 | box-shadow: rgba(0, 0, 0, 0.2) 1px 0 0 inset, rgba(0, 0, 0, 0.2) 0 -1px 0 inset; | ||
1392 | } | ||
1393 | /* line 152, ../scss/include/_skeleton.scss */ | ||
1394 | #jqt .back:before { | ||
1395 | margin-left: -1px; | ||
1396 | background: black none; | ||
1397 | } | ||
1398 | /* line 157, ../scss/include/_skeleton.scss */ | ||
1399 | #jqt .back.active:after { | ||
1400 | background-image: none; | ||
1401 | background-color: black; | ||
1402 | background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #262627), color-stop(50%, #0d0d0d), color-stop(51%, #000000), color-stop(100%, #000000)); | ||
1403 | background-image: -webkit-linear-gradient(left top, #262627, #0d0d0d 50%, #000000 51%, #000000); | ||
1404 | background-image: linear-gradient(left top, #262627, #0d0d0d 50%, #000000 51%, #000000); | ||
1405 | } | ||
1406 | /* line 160, ../scss/include/_skeleton.scss */ | ||
1407 | #jqt .back.active:before { | ||
1408 | background-color: black; | ||
1409 | } | ||
1410 | /* line 166, ../scss/include/_skeleton.scss */ | ||
1411 | #jqt .blueButton { | ||
1412 | background-image: #2f7ce3, glossy; | ||
1413 | color: white; | ||
1414 | text-shadow: #1a63c5 0 -1px 0; | ||
1415 | } | ||
1416 | /* line 170, ../scss/include/_skeleton.scss */ | ||
1417 | #jqt .whiteButton, | ||
1418 | #jqt .grayButton, | ||
1419 | #jqt .redButton, | ||
1420 | #jqt .blueButton, | ||
1421 | #jqt .greenButton { | ||
1422 | display: block; | ||
1423 | font-size: 20px; | ||
1424 | font-weight: bold; | ||
1425 | margin: 10px 20px; | ||
1426 | padding: 10px; | ||
1427 | text-align: center; | ||
1428 | text-decoration: inherit; | ||
1429 | -webkit-border-radius: 8px; | ||
1430 | border-radius: 8px; | ||
1431 | -webkit-box-shadow: rgba(0, 0, 0, 0.4) 0 1px 3px, rgba(0, 0, 0, 0.4) 0 0 0 5px, rgba(255, 255, 255, 0.3) 0 1px 0 5px; | ||
1432 | box-shadow: rgba(0, 0, 0, 0.4) 0 1px 3px, rgba(0, 0, 0, 0.4) 0 0 0 5px, rgba(255, 255, 255, 0.3) 0 1px 0 5px; | ||
1433 | } | ||
1434 | /* line 185, ../scss/include/_skeleton.scss */ | ||
1435 | #jqt .whiteButton.active, | ||
1436 | #jqt .whiteButton:active, | ||
1437 | #jqt .grayButton.active, | ||
1438 | #jqt .grayButton:active, | ||
1439 | #jqt .redButton.active, | ||
1440 | #jqt .redButton:active, | ||
1441 | #jqt .blueButton.active, | ||
1442 | #jqt .blueButton:active, | ||
1443 | #jqt .greenButton.active, | ||
1444 | #jqt .greenButton:active { | ||
1445 | background-image: none; | ||
1446 | background-color: #3c8101; | ||
1447 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #5fcd01), color-stop(50%, #479b01), color-stop(51%, #3c8101), color-stop(100%, #306801)); | ||
1448 | background-image: -webkit-linear-gradient(top, #5fcd01, #479b01 50%, #3c8101 51%, #306801); | ||
1449 | background-image: linear-gradient(top, #5fcd01, #479b01 50%, #3c8101 51%, #306801); | ||
1450 | color: white; | ||
1451 | text-shadow: #244f00 0 -1px 0; | ||
1452 | } | ||
1453 | /* line 191, ../scss/include/_skeleton.scss */ | ||
1454 | #jqt .whiteButton { | ||
1455 | background-image: none; | ||
1456 | background-color: #eeeeee; | ||
1457 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(50%, #fbfbfb), color-stop(51%, #eeeeee), color-stop(100%, #e1e1e1)); | ||
1458 | background-image: -webkit-linear-gradient(top, #ffffff, #fbfbfb 50%, #eeeeee 51%, #e1e1e1); | ||
1459 | background-image: linear-gradient(top, #ffffff, #fbfbfb 50%, #eeeeee 51%, #e1e1e1); | ||
1460 | color: #151515; | ||
1461 | text-shadow: white 0 1px 0; | ||
1462 | } | ||
1463 | /* line 195, ../scss/include/_skeleton.scss */ | ||
1464 | #jqt .grayButton { | ||
1465 | background-image: none; | ||
1466 | background-color: #444444; | ||
1467 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #6a6a6a), color-stop(50%, #515151), color-stop(51%, #444444), color-stop(100%, #373737)); | ||
1468 | background-image: -webkit-linear-gradient(top, #6a6a6a, #515151 50%, #444444 51%, #373737); | ||
1469 | background-image: linear-gradient(top, #6a6a6a, #515151 50%, #444444 51%, #373737); | ||
1470 | color: white; | ||
1471 | text-shadow: #2b2b2b 0 -1px 0; | ||
1472 | } | ||
1473 | /* line 200, ../scss/include/_skeleton.scss */ | ||
1474 | #jqt .redButton { | ||
1475 | background-image: none; | ||
1476 | background-color: #d83b38; | ||
1477 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e57a78), color-stop(50%, #dc504d), color-stop(51%, #d83b38), color-stop(100%, #ce2c28)); | ||
1478 | background-image: -webkit-linear-gradient(top, #e57a78, #dc504d 50%, #d83b38 51%, #ce2c28); | ||
1479 | background-image: linear-gradient(top, #e57a78, #dc504d 50%, #d83b38 51%, #ce2c28); | ||
1480 | color: white; | ||
1481 | text-shadow: #b92724 0 -1px 0; | ||
1482 | } | ||
1483 | /* line 204, ../scss/include/_skeleton.scss */ | ||
1484 | #jqt .redButton.active, | ||
1485 | #jqt .redButton:active { | ||
1486 | background-image: none; | ||
1487 | background-color: #c12926; | ||
1488 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #de5856), color-stop(50%, #d52e2b), color-stop(51%, #c12926), color-stop(100%, #ac2422)); | ||
1489 | background-image: -webkit-linear-gradient(top, #de5856, #d52e2b 50%, #c12926 51%, #ac2422); | ||
1490 | background-image: linear-gradient(top, #de5856, #d52e2b 50%, #c12926 51%, #ac2422); | ||
1491 | color: white; | ||
1492 | text-shadow: #97201e 0 -1px 0; | ||
1493 | } | ||
1494 | /* line 211, ../scss/include/_skeleton.scss */ | ||
1495 | #jqt .greenButton { | ||
1496 | background-image: none; | ||
1497 | background-color: #53b401; | ||
1498 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #76fe04), color-stop(50%, #5fcd01), color-stop(51%, #53b401), color-stop(100%, #479b01)); | ||
1499 | background-image: -webkit-linear-gradient(top, #76fe04, #5fcd01 50%, #53b401 51%, #479b01); | ||
1500 | background-image: linear-gradient(top, #76fe04, #5fcd01 50%, #53b401 51%, #479b01); | ||
1501 | color: white; | ||
1502 | text-shadow: #3c8101 0 -1px 0; | ||
1503 | } | ||
1504 | /* line 216, ../scss/include/_skeleton.scss */ | ||
1505 | #jqt .leftButton, | ||
1506 | #jqt .cancel, | ||
1507 | #jqt .back { | ||
1508 | left: 6px; | ||
1509 | right: auto; | ||
1510 | } | ||
1511 | /* line 221, ../scss/include/_skeleton.scss */ | ||
1512 | #jqt .add { | ||
1513 | font-size: 24px; | ||
1514 | line-height: 24px; | ||
1515 | font-weight: bold; | ||
1516 | } | ||
1517 | /* line 229, ../scss/include/_skeleton.scss */ | ||
1518 | #jqt ul { | ||
1519 | padding: 0; | ||
1520 | margin: 5px 10px 10px 10px; | ||
1521 | -webkit-margin-collapse: separate; | ||
1522 | } | ||
1523 | /* line 231, ../scss/include/_skeleton.scss */ | ||
1524 | #jqt ul, | ||
1525 | #jqt ul.individual li { | ||
1526 | background-color: #555658; | ||
1527 | color: #d5d6d7; | ||
1528 | text-shadow: #3c3d3e 0 -1px 0; | ||
1529 | border: 1px solid #2f3031; | ||
1530 | font: bold 18px "Helvetica Neue", Helvetica; | ||
1531 | } | ||
1532 | /* line 240, ../scss/include/_skeleton.scss */ | ||
1533 | #jqt ul:first-child { | ||
1534 | margin-top: 15px; | ||
1535 | } | ||
1536 | /* line 246, ../scss/include/_skeleton.scss */ | ||
1537 | #jqt ul li { | ||
1538 | border-top: 1px solid #48494b; | ||
1539 | list-style-type: none; | ||
1540 | overflow: hidden; | ||
1541 | padding: 10px; | ||
1542 | -webkit-transform: translate3d(0, 0, 0); | ||
1543 | /* expensive way to avoid flickr */ | ||
1544 | |||
1545 | } | ||
1546 | /* line 253, ../scss/include/_skeleton.scss */ | ||
1547 | #jqt ul li a { | ||
1548 | text-decoration: none; | ||
1549 | text-overflow: ellipsis; | ||
1550 | white-space: nowrap; | ||
1551 | overflow: hidden; | ||
1552 | display: block; | ||
1553 | padding: 10px; | ||
1554 | margin: -10px; | ||
1555 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); | ||
1556 | -webkit-transform: translateZ(0); | ||
1557 | color: white; | ||
1558 | text-shadow: #3c3d3e 0 -1px 0; | ||
1559 | } | ||
1560 | /* line 265, ../scss/include/_skeleton.scss */ | ||
1561 | #jqt ul li a.active { | ||
1562 | background-image: none; | ||
1563 | background-color: #53b401; | ||
1564 | -webkit-box-shadow: #5cc801 0 1px 0px inset; | ||
1565 | box-shadow: #5cc801 0 1px 0px inset; | ||
1566 | color: white; | ||
1567 | text-shadow: #3c8101 0 -1px 0; | ||
1568 | } | ||
1569 | /* line 270, ../scss/include/_skeleton.scss */ | ||
1570 | #jqt ul li a.active small { | ||
1571 | color: #a0fe50; | ||
1572 | text-shadow: #000000 0 -1px 0; | ||
1573 | } | ||
1574 | /* line 271, ../scss/include/_skeleton.scss */ | ||
1575 | #jqt ul li a.active small.counter { | ||
1576 | background-color: #306801; | ||
1577 | } | ||
1578 | /* line 280, ../scss/include/_skeleton.scss */ | ||
1579 | #jqt ul li small { | ||
1580 | color: #53b401; | ||
1581 | font: 16px "Helvetica Neue", Helvetica; | ||
1582 | text-align: right; | ||
1583 | text-overflow: ellipsis; | ||
1584 | white-space: nowrap; | ||
1585 | overflow: hidden; | ||
1586 | display: block; | ||
1587 | width: 23%; | ||
1588 | position: relative; | ||
1589 | z-index: 20; | ||
1590 | float: right; | ||
1591 | line-height: 16px; | ||
1592 | padding: 2px 8px 4px 8px; | ||
1593 | } | ||
1594 | /* line 295, ../scss/include/_skeleton.scss */ | ||
1595 | #jqt ul li small.counter { | ||
1596 | background: #2f3031; | ||
1597 | color: #949698; | ||
1598 | text-shadow: #0a0a0a 0 -1px 0; | ||
1599 | z-index: 10; | ||
1600 | font-size: 16px; | ||
1601 | font-weight: bold; | ||
1602 | -webkit-border-radius: 3px; | ||
1603 | border-radius: 3px; | ||
1604 | display: block; | ||
1605 | width: auto; | ||
1606 | } | ||
1607 | /* line 311, ../scss/include/_skeleton.scss */ | ||
1608 | #jqt ul li ::-webkit-input-placeholder { | ||
1609 | color: #949698; | ||
1610 | text-shadow: #3c3d3e 0 -1px 0; | ||
1611 | } | ||
1612 | /* line 322, ../scss/include/_skeleton.scss */ | ||
1613 | #jqt ul li input[type="text"], | ||
1614 | #jqt ul li input[type="password"], | ||
1615 | #jqt ul li input[type="tel"], | ||
1616 | #jqt ul li input[type="number"], | ||
1617 | #jqt ul li input[type="search"], | ||
1618 | #jqt ul li input[type="email"], | ||
1619 | #jqt ul li input[type="url"], | ||
1620 | #jqt ul li textarea, | ||
1621 | #jqt ul li select { | ||
1622 | color: white; | ||
1623 | text-shadow: #3c3d3e 0 -1px 0; | ||
1624 | background: transparent url("data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="); | ||
1625 | border: 0; | ||
1626 | font: normal 17px "Helvetica Neue", Helvetica; | ||
1627 | padding: 0; | ||
1628 | display: inline-block; | ||
1629 | margin-left: 0px; | ||
1630 | width: 100%; | ||
1631 | -webkit-appearance: textarea; | ||
1632 | } | ||
1633 | /* line 333, ../scss/include/_skeleton.scss */ | ||
1634 | #jqt ul li textarea { | ||
1635 | height: 120px; | ||
1636 | padding: 0; | ||
1637 | text-indent: -2px; | ||
1638 | } | ||
1639 | /* line 338, ../scss/include/_skeleton.scss */ | ||
1640 | #jqt ul li input[type="checkbox"], | ||
1641 | #jqt ul li input[type="radio"] { | ||
1642 | margin: 0; | ||
1643 | padding: 10px; | ||
1644 | } | ||
1645 | /* line 342, ../scss/include/_skeleton.scss */ | ||
1646 | #jqt ul li input[type="checkbox"]:after, | ||
1647 | #jqt ul li input[type="radio"]:after { | ||
1648 | content: attr(title); | ||
1649 | position: absolute; | ||
1650 | display: block; | ||
1651 | width: 0; | ||
1652 | left: 21px; | ||
1653 | top: 12px; | ||
1654 | font-family: "Helvetica Neue", Helvetica; | ||
1655 | font-size: 17px; | ||
1656 | line-height: 21px; | ||
1657 | width: 246px; | ||
1658 | margin: 0 0 0 17px; | ||
1659 | color: white; | ||
1660 | text-shadow: #3c3d3e 0 -1px 0; | ||
1661 | } | ||
1662 | /* line 355, ../scss/include/_skeleton.scss */ | ||
1663 | #jqt ul li input[type='submit'] { | ||
1664 | -webkit-border-radius: 4px; | ||
1665 | border-radius: 4px; | ||
1666 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#eeeeee), to(#9c9ea0)); | ||
1667 | border: 1px outset #aaa; | ||
1668 | display: block; | ||
1669 | font-size: inherit; | ||
1670 | font-weight: inherit; | ||
1671 | padding: 10px; | ||
1672 | } | ||
1673 | /* line 368, ../scss/include/_skeleton.scss */ | ||
1674 | #jqt ul li.arrow small, | ||
1675 | #jqt ul li.forward small { | ||
1676 | margin-right: 24px; | ||
1677 | } | ||
1678 | /* line 380, ../scss/include/_skeleton.scss */ | ||
1679 | #jqt ul li.forward:before { | ||
1680 | content: ""; | ||
1681 | position: absolute; | ||
1682 | display: block; | ||
1683 | top: 50%; | ||
1684 | right: 6px; | ||
1685 | margin-top: -12px; | ||
1686 | width: 24px; | ||
1687 | height: 24px; | ||
1688 | -webkit-border-radius: 12px; | ||
1689 | border-radius: 12px; | ||
1690 | background-image: none; | ||
1691 | background-color: #53b401; | ||
1692 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #76fe04), color-stop(50%, #5fcd01), color-stop(51%, #53b401), color-stop(100%, #479b01)); | ||
1693 | background-image: -webkit-linear-gradient(top, #76fe04, #5fcd01 50%, #53b401 51%, #479b01); | ||
1694 | background-image: linear-gradient(top, #76fe04, #5fcd01 50%, #53b401 51%, #479b01); | ||
1695 | border: 2px solid #fff; | ||
1696 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); | ||
1697 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); | ||
1698 | -webkit-box-sizing: border-box; | ||
1699 | padding: 0; | ||
1700 | z-index: 10; | ||
1701 | line-height: 0; | ||
1702 | pointer-events: none; | ||
1703 | } | ||
1704 | /* line 395, ../scss/include/_skeleton.scss */ | ||
1705 | #jqt ul li.forward:after { | ||
1706 | color: white; | ||
1707 | text-shadow: #3c8101 0 -1px 0; | ||
1708 | filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); | ||
1709 | opacity: 1; | ||
1710 | font-size: 24px; | ||
1711 | } | ||
1712 | /* line 404, ../scss/include/_skeleton.scss */ | ||
1713 | #jqt ul.rounded, | ||
1714 | #jqt ul.individual li { | ||
1715 | -webkit-box-shadow: rgba(255, 255, 255, 0.15) 0 1px 0; | ||
1716 | box-shadow: rgba(255, 255, 255, 0.15) 0 1px 0; | ||
1717 | border: 1px solid #2f3031; | ||
1718 | } | ||
1719 | /* line 409, ../scss/include/_skeleton.scss */ | ||
1720 | #jqt ul.rounded { | ||
1721 | -webkit-border-radius: 8px; | ||
1722 | border-radius: 8px; | ||
1723 | } | ||
1724 | /* line 412, ../scss/include/_skeleton.scss */ | ||
1725 | #jqt ul.rounded li:first-child, | ||
1726 | #jqt ul.rounded li:first-child a { | ||
1727 | border-top: 0; | ||
1728 | -webkit-border-top-left-radius: 8px; | ||
1729 | border-top-left-radius: 8px; | ||
1730 | -webkit-border-top-right-radius: 8px; | ||
1731 | border-top-right-radius: 8px; | ||
1732 | } | ||
1733 | /* line 416, ../scss/include/_skeleton.scss */ | ||
1734 | #jqt ul.rounded li:last-child, | ||
1735 | #jqt ul.rounded li:last-child a { | ||
1736 | -webkit-border-bottom-left-radius: 8px; | ||
1737 | border-bottom-left-radius: 8px; | ||
1738 | -webkit-border-bottom-right-radius: 8px; | ||
1739 | border-bottom-right-radius: 8px; | ||
1740 | } | ||
1741 | /* line 422, ../scss/include/_skeleton.scss */ | ||
1742 | #jqt ul.form li { | ||
1743 | padding: 7px 10px; | ||
1744 | } | ||
1745 | /* line 425, ../scss/include/_skeleton.scss */ | ||
1746 | #jqt ul.form li.error { | ||
1747 | border: 2px solid red; | ||
1748 | } | ||
1749 | /* line 428, ../scss/include/_skeleton.scss */ | ||
1750 | #jqt ul.form li.error + #jqt ul.form li.error { | ||
1751 | border-top: 0; | ||
1752 | } | ||
1753 | /* line 438, ../scss/include/_skeleton.scss */ | ||
1754 | #jqt ul.metal li { | ||
1755 | background-image: none; | ||
1756 | border-top: 1px solid #fff; | ||
1757 | border-bottom: 1px solid #666; | ||
1758 | font-size: 26px; | ||
1759 | } | ||
1760 | /* line 445, ../scss/include/_skeleton.scss */ | ||
1761 | #jqt ul.metal li a { | ||
1762 | line-height: 26px; | ||
1763 | margin: 0; | ||
1764 | padding: 13px 0; | ||
1765 | } | ||
1766 | /* line 451, ../scss/include/_skeleton.scss */ | ||
1767 | #jqt ul.metal li em { | ||
1768 | display: block; | ||
1769 | font-size: 14px; | ||
1770 | font-style: normal; | ||
1771 | width: 50%; | ||
1772 | line-height: 14px; | ||
1773 | } | ||
1774 | /* line 459, ../scss/include/_skeleton.scss */ | ||
1775 | #jqt ul.metal li small { | ||
1776 | float: right; | ||
1777 | position: relative; | ||
1778 | margin-top: 10px; | ||
1779 | font-weight: bold; | ||
1780 | } | ||
1781 | /* line 473, ../scss/include/_skeleton.scss */ | ||
1782 | #jqt ul.edgetoedge li { | ||
1783 | font-size: 20px; | ||
1784 | } | ||
1785 | /* line 476, ../scss/include/_skeleton.scss */ | ||
1786 | #jqt ul.edgetoedge li:first-child { | ||
1787 | border-top: 0; | ||
1788 | } | ||
1789 | /* line 480, ../scss/include/_skeleton.scss */ | ||
1790 | #jqt ul.edgetoedge li.sep { | ||
1791 | font-size: 16px; | ||
1792 | padding: 2px 10px; | ||
1793 | } | ||
1794 | /* line 485, ../scss/include/_skeleton.scss */ | ||
1795 | #jqt ul.edgetoedge li em { | ||
1796 | font-weight: normal; | ||
1797 | font-style: normal; | ||
1798 | } | ||
1799 | /* line 494, ../scss/include/_skeleton.scss */ | ||
1800 | #jqt ul.plastic { | ||
1801 | font-size: 18px; | ||
1802 | } | ||
1803 | /* line 498, ../scss/include/_skeleton.scss */ | ||
1804 | #jqt ul.plastic li { | ||
1805 | border-width: 1px 0; | ||
1806 | border-style: solid; | ||
1807 | background-image: none; | ||
1808 | background-color: #2a2b2c; | ||
1809 | border-top-color: #2f3031; | ||
1810 | border-bottom-color: #232324; | ||
1811 | } | ||
1812 | /* line 506, ../scss/include/_skeleton.scss */ | ||
1813 | #jqt ul.plastic li:nth-child(odd) { | ||
1814 | background-image: none; | ||
1815 | background-color: #2f3031; | ||
1816 | } | ||
1817 | /* line 510, ../scss/include/_skeleton.scss */ | ||
1818 | #jqt ul.plastic li a.active.loading { | ||
1819 | background-image: url(img/loading.gif); | ||
1820 | background-position: 95% center; | ||
1821 | background-repeat: no-repeat; | ||
1822 | } | ||
1823 | /* line 515, ../scss/include/_skeleton.scss */ | ||
1824 | #jqt ul.plastic li small { | ||
1825 | color: #949698; | ||
1826 | font-size: 13px; | ||
1827 | font-weight: bold; | ||
1828 | text-transform: uppercase; | ||
1829 | } | ||
1830 | /* line 525, ../scss/include/_skeleton.scss */ | ||
1831 | #jqt ul.individual { | ||
1832 | border: 0; | ||
1833 | background: none; | ||
1834 | clear: both; | ||
1835 | overflow: hidden; | ||
1836 | } | ||
1837 | /* line 531, ../scss/include/_skeleton.scss */ | ||
1838 | #jqt ul.individual li { | ||
1839 | font-size: 14px; | ||
1840 | text-align: center; | ||
1841 | -webkit-border-radius: 8px; | ||
1842 | border-radius: 8px; | ||
1843 | -webkit-box-sizing: border-box; | ||
1844 | box-sizing: border-box; | ||
1845 | width: 48%; | ||
1846 | float: left; | ||
1847 | display: block; | ||
1848 | padding: 11px 10px 14px 10px; | ||
1849 | } | ||
1850 | /* line 541, ../scss/include/_skeleton.scss */ | ||
1851 | #jqt ul.individual li + li { | ||
1852 | float: right; | ||
1853 | } | ||
1854 | /* line 546, ../scss/include/_skeleton.scss */ | ||
1855 | #jqt ul.individual a { | ||
1856 | line-height: 16px; | ||
1857 | margin: -11px -10px -14px -10px; | ||
1858 | padding: 11px 10px 14px 10px; | ||
1859 | -webkit-border-radius: 8px; | ||
1860 | border-radius: 8px; | ||
1861 | } | ||
1862 | /* line 555, ../scss/include/_skeleton.scss */ | ||
1863 | #jqt .toggle { | ||
1864 | width: 94px; | ||
1865 | position: relative; | ||
1866 | height: 27px; | ||
1867 | display: block; | ||
1868 | overflow: hidden; | ||
1869 | float: right; | ||
1870 | } | ||
1871 | /* line 563, ../scss/include/_skeleton.scss */ | ||
1872 | #jqt .toggle input[type="checkbox"] { | ||
1873 | margin: 0; | ||
1874 | -webkit-border-radius: 5px; | ||
1875 | border-radius: 5px; | ||
1876 | height: 27px; | ||
1877 | overflow: hidden; | ||
1878 | width: 149px; | ||
1879 | border: 0; | ||
1880 | -webkit-transition: left 0.15s ease-in-out; | ||
1881 | transition: left 0.15s ease-in-out; | ||
1882 | position: absolute; | ||
1883 | top: 0; | ||
1884 | left: -55px; | ||
1885 | -webkit-appearance: textarea; | ||
1886 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); | ||
1887 | } | ||
1888 | /* line 577, ../scss/include/_skeleton.scss */ | ||
1889 | #jqt .toggle input[type="checkbox"]:checked { | ||
1890 | left: 0px; | ||
1891 | } | ||
1892 | /* line 583, ../scss/include/_skeleton.scss */ | ||
1893 | #jqt .info { | ||
1894 | font-size: 12px; | ||
1895 | line-height: 16px; | ||
1896 | text-align: center; | ||
1897 | color: #444; | ||
1898 | padding: 15px; | ||
1899 | font-weight: bold; | ||
1900 | } | ||
1901 | /* line 12, ../scss/jqtouch.scss */ | ||
1902 | #jqt { | ||
1903 | /* Lists */ | ||
1904 | |||
1905 | } | ||
1906 | /* line 13, ../scss/jqtouch.scss */ | ||
1907 | #jqt > * { | ||
1908 | background-image: url('data:image/png;base64,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'), -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #7b7c7f), color-stop(30%, #696a6d), color-stop(65%, #555658), color-stop(100%, #464748)); | ||
1909 | background-image: url('data:image/png;base64,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'), -webkit-linear-gradient(top, #7b7c7f, #696a6d 30%, #555658 65%, #464748); | ||
1910 | background-image: url('data:image/png;base64,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'), linear-gradient(top, #7b7c7f, #696a6d 30%, #555658 65%, #464748); | ||
1911 | } | ||
1912 | /* line 20, ../scss/jqtouch.scss */ | ||
1913 | #jqt .toolbar { | ||
1914 | background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 12.5, color-stop(12.5%, #181819), color-stop(12.5%, rgba(11, 11, 12, 0))), -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 12.5, color-stop(12.5%, #181819), color-stop(12.5%, rgba(11, 11, 12, 0))), -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 12.5, color-stop(12.5%, rgba(255, 255, 255, 0.1)), color-stop(12.5%, rgba(255, 255, 255, 0))), -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 12.5, color-stop(12.5%, rgba(255, 255, 255, 0.1)), color-stop(12.5%, rgba(255, 255, 255, 0))); | ||
1915 | background-image: -webkit-radial-gradient(#181819 12.5%, rgba(11, 11, 12, 0) 12.5%), -webkit-radial-gradient(#181819 12.5%, rgba(11, 11, 12, 0) 12.5%), -webkit-radial-gradient(rgba(255, 255, 255, 0.1) 12.5%, rgba(255, 255, 255, 0) 12.5%), -webkit-radial-gradient(rgba(255, 255, 255, 0.1) 12.5%, rgba(255, 255, 255, 0) 12.5%); | ||
1916 | background-image: radial-gradient(#181819 12.5%, rgba(11, 11, 12, 0) 12.5%), radial-gradient(#181819 12.5%, rgba(11, 11, 12, 0) 12.5%), radial-gradient(rgba(255, 255, 255, 0.1) 12.5%, rgba(255, 255, 255, 0) 12.5%), radial-gradient(rgba(255, 255, 255, 0.1) 12.5%, rgba(255, 255, 255, 0) 12.5%); | ||
1917 | background-repeat: repeat; | ||
1918 | background-position: 0 0, 8px 8px, 0 1px, 8px 9px; | ||
1919 | background-color: #2f3031; | ||
1920 | background-size: 16px 16px; | ||
1921 | } | ||
1922 | /* line 29, ../scss/jqtouch.scss */ | ||
1923 | #jqt ul li { | ||
1924 | border-top: 1px solid #48494b; | ||
1925 | background-image: none; | ||
1926 | background-color: rgba(85, 86, 88, 0.2); | ||
1927 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(123, 124, 127, 0.2)), color-stop(3%, rgba(98, 99, 101, 0.2)), color-stop(100%, rgba(72, 73, 75, 0.2))); | ||
1928 | background-image: -webkit-linear-gradient(top, rgba(123, 124, 127, 0.2), rgba(98, 99, 101, 0.2) 3%, rgba(72, 73, 75, 0.2)); | ||
1929 | background-image: linear-gradient(top, rgba(123, 124, 127, 0.2), rgba(98, 99, 101, 0.2) 3%, rgba(72, 73, 75, 0.2)); | ||
1930 | } | ||
1931 | /* line 33, ../scss/jqtouch.scss */ | ||
1932 | #jqt ul li a { | ||
1933 | color: white; | ||
1934 | text-shadow: #3c3d3e 0 -1px 0; | ||
1935 | } | ||
1936 | /* line 37, ../scss/jqtouch.scss */ | ||
1937 | #jqt ul li .toggle input[type="checkbox"] { | ||
1938 | -webkit-border-radius: 5px; | ||
1939 | border-radius: 5px; | ||
1940 | background: #ffffff url(../img/jqt/on_off.png) 0 0 no-repeat; | ||
1941 | } | ||
1942 | /* line 42, ../scss/jqtouch.scss */ | ||
1943 | #jqt ul li input[type='submit'] { | ||
1944 | background-image: none; | ||
1945 | background-color: white; | ||
1946 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(50%, #ffffff), color-stop(51%, #ffffff), color-stop(100%, #f2f2f2)); | ||
1947 | background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 50%, #ffffff 51%, #f2f2f2); | ||
1948 | background-image: linear-gradient(top, #ffffff, #ffffff 50%, #ffffff 51%, #f2f2f2); | ||
1949 | border: 1px outset black; | ||
1950 | } | ||
1951 | /* line 47, ../scss/jqtouch.scss */ | ||
1952 | #jqt ul li small.counter { | ||
1953 | -webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0; | ||
1954 | box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0; | ||
1955 | } | ||
1956 | /* line 54, ../scss/jqtouch.scss */ | ||
1957 | #jqt ul.metal li { | ||
1958 | background-image: none; | ||
1959 | border-top: 1px solid #fff; | ||
1960 | border-bottom: 1px solid #666; | ||
1961 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#eeeeee), to(#9c9ea0)); | ||
1962 | } | ||
1963 | /* line 60, ../scss/jqtouch.scss */ | ||
1964 | #jqt ul.metal li a { | ||
1965 | text-shadow: #fff 0 1px 0; | ||
1966 | } | ||
1967 | /* line 62, ../scss/jqtouch.scss */ | ||
1968 | #jqt ul.metal li a.active { | ||
1969 | color: #000; | ||
1970 | } | ||
1971 | /* line 65, ../scss/jqtouch.scss */ | ||
1972 | #jqt ul.metal li em { | ||
1973 | color: #444; | ||
1974 | } | ||
1975 | /* line 71, ../scss/jqtouch.scss */ | ||
1976 | #jqt ul.edgetoedge li { | ||
1977 | background-image: none; | ||
1978 | background-color: #3c3d3e; | ||
1979 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #282829), color-stop(100%, #2f3031)); | ||
1980 | background-image: -webkit-linear-gradient(top, #282829, #2f3031); | ||
1981 | background-image: linear-gradient(top, #282829, #2f3031); | ||
1982 | border-bottom: 1px solid #1e1e1f; | ||
1983 | border-top: 1px solid #343536; | ||
1984 | } | ||
1985 | /* line 76, ../scss/jqtouch.scss */ | ||
1986 | #jqt ul.edgetoedge li.sep { | ||
1987 | background-image: none; | ||
1988 | background-color: rgba(0, 0, 0, 0.3); | ||
1989 | background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(38, 38, 38, 0.3)), color-stop(30%, rgba(20, 20, 20, 0.3)), color-stop(65%, rgba(0, 0, 0, 0.3)), color-stop(100%, rgba(0, 0, 0, 0.3))); | ||
1990 | background-image: -webkit-linear-gradient(top, rgba(38, 38, 38, 0.3), rgba(20, 20, 20, 0.3) 30%, rgba(0, 0, 0, 0.3) 65%, rgba(0, 0, 0, 0.3)); | ||
1991 | background-image: linear-gradient(top, rgba(38, 38, 38, 0.3), rgba(20, 20, 20, 0.3) 30%, rgba(0, 0, 0, 0.3) 65%, rgba(0, 0, 0, 0.3)); | ||
1992 | color: #949698; | ||
1993 | text-shadow: #000000 0 -1px 0; | ||
1994 | } | ||
1995 | /* line 83, ../scss/jqtouch.scss */ | ||
1996 | #jqt .info { | ||
1997 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#cccccc), to(#aaaaaa), color-stop(0.6, #cccccc)); | ||
1998 | text-shadow: rgba(255, 255, 255, 0.8) 0 1px 0; | ||
1999 | color: #444; | ||
2000 | border-top: 1px solid rgba(255, 255, 255, 0.2); | ||
2001 | } | ||
2002 | div.spinner { | ||
2003 | position: relative; | ||
2004 | width: 100px; | ||
2005 | height: 100px; | ||
2006 | display: inline-block; | ||
2007 | } | ||
2008 | div.spinner div { | ||
2009 | width: 12%; | ||
2010 | height: 26%; | ||
2011 | background: #000; | ||
2012 | position: absolute; | ||
2013 | left: 44.5%; | ||
2014 | top: 37%; | ||
2015 | opacity: 0; | ||
2016 | -webkit-animation: fade 1s linear infinite; | ||
2017 | -webkit-border-radius: 50px; | ||
2018 | -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.2); | ||
2019 | } | ||
2020 | div.spinner div.bar01 { | ||
2021 | -webkit-transform: rotate(0deg) translate(0, -142%); | ||
2022 | -webkit-animation-delay: 0s; | ||
2023 | } | ||
2024 | div.spinner div.bar02 { | ||
2025 | -webkit-transform: rotate(30deg) translate(0, -142%); | ||
2026 | -webkit-animation-delay: -0.9167s; | ||
2027 | } | ||
2028 | div.spinner div.bar03 { | ||
2029 | -webkit-transform: rotate(60deg) translate(0, -142%); | ||
2030 | -webkit-animation-delay: -0.833s; | ||
2031 | } | ||
2032 | div.spinner div.bar04 { | ||
2033 | -webkit-transform: rotate(90deg) translate(0, -142%); | ||
2034 | -webkit-animation-delay: -0.75s; | ||
2035 | } | ||
2036 | div.spinner div.bar05 { | ||
2037 | -webkit-transform: rotate(120deg) translate(0, -142%); | ||
2038 | -webkit-animation-delay: -0.667s; | ||
2039 | } | ||
2040 | div.spinner div.bar06 { | ||
2041 | -webkit-transform: rotate(150deg) translate(0, -142%); | ||
2042 | -webkit-animation-delay: -0.5833s; | ||
2043 | } | ||
2044 | div.spinner div.bar07 { | ||
2045 | -webkit-transform: rotate(180deg) translate(0, -142%); | ||
2046 | -webkit-animation-delay: -0.5s; | ||
2047 | } | ||
2048 | div.spinner div.bar08 { | ||
2049 | -webkit-transform: rotate(210deg) translate(0, -142%); | ||
2050 | -webkit-animation-delay: -0.41667s; | ||
2051 | } | ||
2052 | div.spinner div.bar09 { | ||
2053 | -webkit-transform: rotate(240deg) translate(0, -142%); | ||
2054 | -webkit-animation-delay: -0.333s; | ||
2055 | } | ||
2056 | div.spinner div.bar10 { | ||
2057 | -webkit-transform: rotate(270deg) translate(0, -142%); | ||
2058 | -webkit-animation-delay: -0.25s; | ||
2059 | } | ||
2060 | div.spinner div.bar11 { | ||
2061 | -webkit-transform: rotate(300deg) translate(0, -142%); | ||
2062 | -webkit-animation-delay: -0.1667s; | ||
2063 | } | ||
2064 | div.spinner div.bar12 { | ||
2065 | -webkit-transform: rotate(330deg) translate(0, -142%); | ||
2066 | -webkit-animation-delay: -0.0833s; | ||
2067 | } | ||
2068 | @-webkit-keyframes fade { | ||
2069 | from { | ||
2070 | opacity: 1; | ||
2071 | } | ||
2072 | to { | ||
2073 | opacity: 0.25; | ||
2074 | } | ||
2075 | } | ||
2076 | /* | ||
2077 | |||
2078 | Color list: | ||
2079 | - login box: | ||
2080 | light#ff9955 | ||
2081 | dark#ff6622 | ||
2082 | - login button: | ||
2083 | regular#dd5500 | ||
2084 | hover#773311 | ||
2085 | - login translations: | ||
2086 | box: #cc6622; | ||
2087 | not-selected: | ||
2088 | color: #ddaa99 | ||
2089 | background:#994422 | ||
2090 | selected: #772211; | ||
2091 | */ | ||
2092 | html { | ||
2093 | height: 100%; | ||
2094 | -webkit-text-size-adjust: none; | ||
2095 | -ms-text-size-adjust: none; | ||
2096 | } | ||
2097 | body { | ||
2098 | font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif; | ||
2099 | margin: 0px; | ||
2100 | } | ||
2101 | .ellipsis { | ||
2102 | text-overflow: ellipsis; | ||
2103 | overflow: hidden; | ||
2104 | white-space: nowrap; | ||
2105 | } | ||
2106 | div#loginForm div.credentialsMessage.error h1 { | ||
2107 | color: red; | ||
2108 | } | ||
2109 | div#loginForm div.validating div.loading { | ||
2110 | margin-top: 50px; | ||
2111 | margin-bottom: 50px; | ||
2112 | margin-left: auto; | ||
2113 | margin-right: auto; | ||
2114 | width: 100px; | ||
2115 | } | ||
2116 | /* | ||
2117 | |||
2118 | Color list: | ||
2119 | - login box: | ||
2120 | light#ff9955 | ||
2121 | dark#ff6622 | ||
2122 | - login button: | ||
2123 | regular#dd5500 | ||
2124 | hover#773311 | ||
2125 | - login translations: | ||
2126 | box: #cc6622; | ||
2127 | not-selected: | ||
2128 | color: #ddaa99 | ||
2129 | background:#994422 | ||
2130 | selected: #772211; | ||
2131 | */ | ||
2132 | html { | ||
2133 | height: 100%; | ||
2134 | -webkit-text-size-adjust: none; | ||
2135 | -ms-text-size-adjust: none; | ||
2136 | } | ||
2137 | body { | ||
2138 | font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif; | ||
2139 | margin: 0px; | ||
2140 | } | ||
2141 | .ellipsis { | ||
2142 | text-overflow: ellipsis; | ||
2143 | overflow: hidden; | ||
2144 | white-space: nowrap; | ||
2145 | } | ||
2146 | #jqt div.cardList ul li.cardListItem a small.favicon { | ||
2147 | background: white; | ||
2148 | -webkit-border-radius: 3px; | ||
2149 | border-radius: 3px; | ||
2150 | display: block; | ||
2151 | width: 26px; | ||
2152 | height: 26px; | ||
2153 | padding: 0px; | ||
2154 | } | ||
2155 | #jqt div.cardList ul li.cardListItem a small.favicon img.favicon { | ||
2156 | margin-right: 3px; | ||
2157 | margin-top: 3px; | ||
2158 | width: 20px; | ||
2159 | height: 20px; | ||
2160 | } | ||
2161 | #jqt div.cardDetail ul li a.password { | ||
2162 | color: gray; | ||
2163 | } | ||
2164 | /* ---------------------------------------- */ | ||
2165 | /* | ||
2166 | body { | ||
2167 | margin: 0; | ||
2168 | font-family: Helvetica; | ||
2169 | background: #FFFFFF; | ||
2170 | color: #000000; | ||
2171 | overflow-x: hidden; | ||
2172 | -webkit-user-select: none; | ||
2173 | -webkit-text-size-adjust: none; | ||
2174 | } | ||
2175 | |||
2176 | |||
2177 | div.toolbar { | ||
2178 | box-sizing: border-box; | ||
2179 | -moz-box-sizing: border-box; | ||
2180 | -webkit-box-sizing: border-box; | ||
2181 | border-bottom: 1px solid #2d3642; | ||
2182 | border-top: 1px solid #6d84a2; | ||
2183 | padding: 10px; | ||
2184 | height: 45px; | ||
2185 | //background: url(./images/old/iPhone/toolbar.png) #6d84a2 repeat-x; | ||
2186 | background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAArCAIAAAA2QHWOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUCNddjDEOgEAQAgn//5qltYWFnb1GB4vdSy4WBAYStKyb9+O0FJMYyjMyMWCC35lJM71r6vF1P07/lFSfPx6ZxNLcy1HtihzpA/RWcOj0zlDhAAAAAElFTkSuQmCCCg==) #6d84a2 repeat-x; | ||
2187 | } | ||
2188 | |||
2189 | div.toolbar h1#pageTitle { | ||
2190 | overflow: hidden; | ||
2191 | margin-top: 1px; | ||
2192 | margin-bottom: 0px; | ||
2193 | margin-left: auto; | ||
2194 | margin-right: auto; | ||
2195 | width: 150px; | ||
2196 | height: 25px; | ||
2197 | font-size: 20px; | ||
2198 | width: 150px; | ||
2199 | font-weight: bold; | ||
2200 | text-shadow: rgba(0, 0, 0, 0.4) 0px -1px 0; | ||
2201 | text-align: center; | ||
2202 | text-overflow: ellipsis; | ||
2203 | white-space: nowrap; | ||
2204 | color: #FFFFFF; | ||
2205 | } | ||
2206 | |||
2207 | div.toolbar a.button { | ||
2208 | position: absolute; | ||
2209 | overflow: hidden; | ||
2210 | top: 8px; | ||
2211 | right: 6px; | ||
2212 | margin: 0; | ||
2213 | border-width: 0 5px; | ||
2214 | padding: 0 3px; | ||
2215 | width: auto; | ||
2216 | height: 30px; | ||
2217 | line-height: 30px; | ||
2218 | font-family: inherit; | ||
2219 | font-size: 12px; | ||
2220 | font-weight: bold; | ||
2221 | color: #FFFFFF; | ||
2222 | text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0; | ||
2223 | text-overflow: ellipsis; | ||
2224 | text-decoration: none; | ||
2225 | white-space: nowrap; | ||
2226 | background: none; | ||
2227 | //-webkit-border-image: url(./images/old/iPhone/toolButton.png) 0 5 0 5; | ||
2228 | } | ||
2229 | |||
2230 | div.toolbar a#backButton { | ||
2231 | left: 6px; | ||
2232 | right: auto; | ||
2233 | padding: 0px; | ||
2234 | max-width: 55px; | ||
2235 | border-width: 0 8px 0 14px; | ||
2236 | //-webkit-border-image: url(./images/old/iPhone/backButton.png) 0 8 0 14; | ||
2237 | -webkit-border-image: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAeCAIAAAA6iHCJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtJJREFUeNrEV21P01AYbbtubNExBnXDbYjjZYI4BMdgEANDQoTElw/+Rw0mBs0UiSGaoJFEQEPwjRhFCW/JxrZ2Xdu1fe71bpAhCHzqupPnS5ObPOeec+5zb+lHLxao05HPiwvzr3/++J7N7FFGgaaDLe034+O+wCXyxSKET1u5+Wc98XTK39zeOzjudLmNIoAR2tlaf/Zkqm9gKNI/RBigE9dtb23MJKZj8fvuC16b3WGxsJRxOFfHeQOtH+ZnOI+XRfgEBoLAzz6fjo7ebfD4GYYhMiEdDGRAW6xOt6d7YGzl4xIL/7mgyPL044edkVt19T4EFAJEVQYud+MvOCkHc7MJ3+VrXGOzXrHeZS1s9trjOVj7tiqpONTWBRgD6BVmQFls9iMaSHnx/bu3ffEHgC2gVVqAIojKR3Iw9zLRcjVmtTnA0NydxQDg0IWvq59kYIOeZtWs9gQkagcMcgK/vLjYNXQHcEkas0AcYPdNIPr7Q/0M69B089ofavB5ZVm3OJ2cTwegzAUgxGbSe8tLS52xewjRZGabzAABZt+8mvGHBsiYNF+AAw1cXEBGNUiQqWpAlArM5MSYBXgEOl0NkLcCkxak28MRKbuDMa6KDAwAUnU8HO2Q+N0SJ3OLMCA7V1S9vt7d3tSg5LNV0ACXwOekcGfreVbVVYUqMjOvyPsH71cqkxsZ7NHFJIXBTCMONMAlEryoxAfDucyOmaOpmINyaTowrK23IyDxKbNzUIYoKU3+i37OXpCESvfGCOw11uMMcCkQke4rDlrS1coOSk2VOXftERfKtZsURmLXQUqBVqiUABgrQirc0Xp4Fv4t8kxN8dLkaJQupOVcGnTN0PuQHHlRSG1Eu9tUTLOnxZ5clclsfmK078va7/WN7axomCN2e42Xc/VEIoiiM0KePeM20DTY3M22BZtuhENW1rC/NrI3WVGTmZxSKEr7V4ABAJ+53J1I3nPjAAAAAElFTkSuQmCCCg==) 0 8 0 14; | ||
2238 | } | ||
2239 | |||
2240 | // ------------------------------------------- | ||
2241 | |||
2242 | body.iPhone form.loginForm { | ||
2243 | min-height: 372px; | ||
2244 | |||
2245 | box-sizing: border-box; | ||
2246 | -moz-box-sizing: border-box; | ||
2247 | -webkit-box-sizing: border-box; | ||
2248 | padding: 10px; | ||
2249 | //background: #c8c8c8 url(./images/old/iPhone/pinstripes.png); | ||
2250 | background: #c8c8c8 url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAIAAACdaSOZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiPHrmCgMC/GNjYwNSAAEGADdNA3dnzPlQAAAAAElFTkSuQmCCCg==); | ||
2251 | } | ||
2252 | |||
2253 | fieldset { | ||
2254 | position: relative; | ||
2255 | margin: 0 0 20px 0; | ||
2256 | padding: 0; | ||
2257 | background: #FFFFFF; | ||
2258 | -webkit-border-radius: 10px; | ||
2259 | -moz-border-radius: 10px; | ||
2260 | border: 1px solid #999999; | ||
2261 | text-align: right; | ||
2262 | font-size: 16px; | ||
2263 | } | ||
2264 | |||
2265 | .row { | ||
2266 | position: relative; | ||
2267 | min-height: 42px; | ||
2268 | border-bottom: 1px solid #999999; | ||
2269 | -webkit-border-radius: 0; | ||
2270 | text-align: right; | ||
2271 | } | ||
2272 | |||
2273 | fieldset > .row:last-child { | ||
2274 | border-bottom: none !important; | ||
2275 | } | ||
2276 | |||
2277 | |||
2278 | .row > input:not(input[type|=radio]):not(input[type|=checkbox]), | ||
2279 | .row > div.fieldValue { | ||
2280 | width: 100%; | ||
2281 | box-sizing: border-box; | ||
2282 | -moz-box-sizing: border-box; | ||
2283 | -webkit-box-sizing: border-box; | ||
2284 | margin: 0; | ||
2285 | border: none; | ||
2286 | padding: 0px 10px 0 112px; | ||
2287 | height: 42px; | ||
2288 | background: none; | ||
2289 | font-size: 16px; | ||
2290 | font-weight: normal; | ||
2291 | |||
2292 | color: #666a60; | ||
2293 | -webkit-user-select: text; | ||
2294 | } | ||
2295 | |||
2296 | .row > div.fieldValue p { | ||
2297 | margin: 0px; | ||
2298 | text-align: left; | ||
2299 | height: 40px; | ||
2300 | vertical-align: middle; | ||
2301 | line-height: 40px; | ||
2302 | } | ||
2303 | |||
2304 | body[orientation="landscape"] .row > div.fieldValue.password { | ||
2305 | padding-right: 120px; | ||
2306 | //background: url(./images/old/iPhone/password_background.png) no-repeat 105px; | ||
2307 | background: url(data:image/png;charset=utf-8;base64,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) no-repeat 105px; | ||
2308 | } | ||
2309 | |||
2310 | .row > div.fieldValue.password { | ||
2311 | color: rgba(255,255,255,0.5); | ||
2312 | //background: url(./images/old/iPhone/password_background.png) no-repeat 106px; | ||
2313 | background: url(data:image/png;charset=utf-8;base64,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) no-repeat 106px; | ||
2314 | } | ||
2315 | |||
2316 | .row > div.fieldValue.password.clear { | ||
2317 | color: #666a60; | ||
2318 | background: none; | ||
2319 | } | ||
2320 | |||
2321 | .row > input[type|=radio], .row > input[type|=checkbox] { | ||
2322 | margin: 7px 7px 0 0; | ||
2323 | height: 25px; | ||
2324 | width: 25px; | ||
2325 | } | ||
2326 | |||
2327 | |||
2328 | .row > label { | ||
2329 | position: absolute; | ||
2330 | margin: 0 0 0 14px; | ||
2331 | line-height: 42px; | ||
2332 | font-weight: bold; | ||
2333 | max-width: 92px; | ||
2334 | overflow: hidden; | ||
2335 | white-space: nowrap; | ||
2336 | } | ||
2337 | |||
2338 | body[orientation="landscape"] .row > label { | ||
2339 | max-width: 150px; | ||
2340 | } | ||
2341 | |||
2342 | body[orientation="landscape"] .row > input:not(input[type|=radio]):not(input[type|=checkbox]) { | ||
2343 | padding-left: 140px; | ||
2344 | } | ||
2345 | |||
2346 | .row > img.favicon { | ||
2347 | position: absolute; | ||
2348 | width: 20px; | ||
2349 | height: 20px; | ||
2350 | top: 12px; | ||
2351 | left: 11px; | ||
2352 | } | ||
2353 | |||
2354 | .row > span { | ||
2355 | padding: 8px 13px; | ||
2356 | text-align: left; | ||
2357 | display: block; | ||
2358 | color: #666a60; | ||
2359 | font-size: 10pt; | ||
2360 | } | ||
2361 | |||
2362 | .row.notes { | ||
2363 | -webkit-user-select: text; | ||
2364 | } | ||
2365 | |||
2366 | // ------------------------------------------- | ||
2367 | |||
2368 | .whiteButton { | ||
2369 | margin-left: auto; | ||
2370 | margin-right: auto; | ||
2371 | width: 150px; | ||
2372 | display: block; | ||
2373 | border-width: 0 12px; | ||
2374 | padding: 10px; | ||
2375 | text-align: center; | ||
2376 | font-size: 20px; | ||
2377 | font-weight: bold; | ||
2378 | text-decoration: inherit; | ||
2379 | color: inherit; | ||
2380 | |||
2381 | //-webkit-border-image: url(./images/old/iPhone/whiteButton.png) 0 12 0 12; | ||
2382 | -webkit-border-image: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAuCAQAAAB+dNqHAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAdAAAALgChnaVgAAAAAmJLR0QA/4ePzL8AAANhSURBVEjHnZZNaFxVFMd/5747mclMkpmxzYdJtFaJglgFpYSiBAVX7l0UUZGuSkEEu3PtSulCUXFdxYXL7kQQIWD9CsRIqdomGGOaSdJmZjKTeW/eu/e4mKRmrE3n5X83j/ve7/3POfe+d67QrTxP8QLDnMTenkv4kQ2+YZ6d/Y/Kvut+XuZVKtygzVbXC8v0cT+jXORLWneix/mAZZZwKIrSbSAIAcd5kDdZ6kaf4zzfEeLPnHrr+UeOWpMJ9rjYxe7a5ntff/YThhyneJ/Zf9Ep3uEXkhNjX50bHoiStoPE76HWiPQFfcGN+kufLKxheZJ3+aOD5vmIBaLXpz89HSVhzF2Uy2TtGxe/+JksJzjHjgCvMEHz6cnZt7dD5zlAgSlkZy7MrVDgbz43FJimhV46W2vFzutBI3aN8NJZlBbTFAKepZ/o/IszU1Gs95Tz2Uw1nFuiiTE8Rhs9fbIROt/LaISvTaO0mbIM0kTKeefoUSMDCI6SxRCT9d77XlFrCYgQi0PH72vH9CyNMSjO4tGM9do76hXB4y2KU+c8aaR41KJ4SIn6DgqgPq2rggWc+kMEjBUBVDUNKQBiOx+218Pl6tVr+jJhUZx4PYSr4XBSsAKaJH9tpirT7uIoTj3pAna43TJJWtSjYDpxp5bv5OpTb4mOq3IIX0W14ypeUq+rYBH5T9fqbRerWMClrbB4PBgUjZPUuXrUGBW51Yhc71y9LSJi1NgQxVWj3a7aw2gmONSGJtNAxC9v9+56vaoe6aubXEWy4meXe/+VXl42TvqzG4ZFCkRzv/+w3lu436/PX6NNnsUgCctjUUJwnWdGC/ZenpXw47loTRrldu3XwLkSrQmiHbkSP3FkwB4MXpjfWDE3JTfw29ZGAGHjgWJdcDW9XC/0PVS4W47fVj5cuLUmFWlOVlevei8ApVLp8bWclnWU4khpZvTRwaw5VggEINHlZuSv1mcr6zW2ZF22xqLqlWr19uYdGSkeWyn4IY5okX61GBHMrp1HJaYldW4G9Ylm7c/19a4jV6k0+fBmtjbkCwxoDovdQ0lIpEXTNIrbR6OVxWr1joNeJjM+Xhyu2+0+Z6Ocmt17Kj4bBvFgPJTUNlZX4/j/zohAJlMuF4vW5vP7Z3d2kqRW29qKuxr4P1RbNFwZtqq8AAAAAElFTkSuQmCCCg==) 0 12 0 12; | ||
2383 | text-shadow: rgba(255, 255, 255, 0.7) 0 1px 0; | ||
2384 | } | ||
2385 | |||
2386 | // ------------------------------------------- | ||
2387 | |||
2388 | body.iPhone .loginProgressPanel { | ||
2389 | min-height: 372px; | ||
2390 | |||
2391 | box-sizing: border-box; | ||
2392 | -moz-box-sizing: border-box; | ||
2393 | -webkit-box-sizing: border-box; | ||
2394 | padding: 10px; | ||
2395 | //background: #c8c8c8 url(./images/old/iPhone/pinstripes.png); | ||
2396 | background: #c8c8c8 url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAIAAACdaSOZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiPHrmCgMC/GNjYwNSAAEGADdNA3dnzPlQAAAAAElFTkSuQmCCCg==); | ||
2397 | } | ||
2398 | |||
2399 | body.iPhone .loadingBar { | ||
2400 | margin-left: auto; | ||
2401 | margin-right: auto; | ||
2402 | margin-top: 60px; | ||
2403 | } | ||
2404 | |||
2405 | div.loadingBar { | ||
2406 | height: 22px; | ||
2407 | width: 214px; | ||
2408 | //background: url(./images/old/loading/loadingBar.gif) no-repeat center; | ||
2409 | background: url(data:image/gif;charset=utf-8;base64,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) no-repeat center; | ||
2410 | } | ||
2411 | |||
2412 | div.loadingBar div.loadingBarProgress { | ||
2413 | height: 100%; | ||
2414 | width: 0%; | ||
2415 | } | ||
2416 | |||
2417 | div.loadingBar div.loadingBarProgress div.loadingBarProgress_left { | ||
2418 | height: 100%; | ||
2419 | max-width: 8px; | ||
2420 | //background: url(./images/old/loading/loadingBarProgress.png) no-repeat 0; | ||
2421 | background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAANYAAAAWCAYAAAC8C2KaAAAACXBIWXMAAAsSAAALEgHS3X78AAACIklEQVR4Ae3brU7DUBQH8HO6PQAazx4BRUKDwfChQTGFQ4wRFGEERdgQONRQoGEzGFISFI8w/DQSWHsP565r0xY2BiWY/ivW+530l52cdr0jwgEBCPy5AE9aUc7XV0kcl4jniGR20lj0QaAYAtzXWHgmNh7v3HTGXfOXgSWnKy6VqEZMCKZxcmiHgFCfAjrjva6XxfgUWNJc3tVBG9mBqEMAAmMFrrl+10r2pgJLTpYO9dZvNTkAZQhAYAoBNh3evz+KRsaBJccLevtXakYdOEMAAj8UCII6Hzx6dlY5nipBjXwTV1GAAAR+KiA1neHZWcOMJY35FS03bAMOCEAgl0CDG0/dMGP5by6xk2s1TIYABFRAjKufo8AyfoUkftyCDwQg8FsBloqdGmaswMf7qt9CYh4E0gLDWBrdCg7SXahBAAK5BEYZa9AnZmStXJSYDAEVENEtT/GtYNAjxl5AfDEgkFtAuGfXCDPW4N0jh9zci2IBCBRdwCTeY1kL2Z65RdYq+rcC159LQLjPFy9rdo0wY9nS+2uLSk5qI6FtxgEBCEwpEJg4flIvr2SrfEgOYxPulI4YBoFYwEiHL/2jqJ4KLNuowVXT4NqMBuAMAQh8I2DkSoPqLDnqU2DZTqmWF4mcXTxzJalQhkBGQJ+piEyL2/5DpifchJttjOpSLenmXMfVvboVBFmkgnOhBYbBJPqTuv41vx10C22Bi4fAfwt8AJe2flCLvH1PAAAAAElFTkSuQmCCCg==) no-repeat 0; | ||
2422 | } | ||
2423 | |||
2424 | div.loadingBar div.loadingBarProgress div.loadingBarProgress_right { | ||
2425 | position: relative; | ||
2426 | height: 100%; | ||
2427 | margin-left: 8px; | ||
2428 | //background: url(./images/old/loading/loadingBarProgress.png) no-repeat right; | ||
2429 | background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAANYAAAAWCAYAAAC8C2KaAAAACXBIWXMAAAsSAAALEgHS3X78AAACIklEQVR4Ae3brU7DUBQH8HO6PQAazx4BRUKDwfChQTGFQ4wRFGEERdgQONRQoGEzGFISFI8w/DQSWHsP565r0xY2BiWY/ivW+530l52cdr0jwgEBCPy5AE9aUc7XV0kcl4jniGR20lj0QaAYAtzXWHgmNh7v3HTGXfOXgSWnKy6VqEZMCKZxcmiHgFCfAjrjva6XxfgUWNJc3tVBG9mBqEMAAmMFrrl+10r2pgJLTpYO9dZvNTkAZQhAYAoBNh3evz+KRsaBJccLevtXakYdOEMAAj8UCII6Hzx6dlY5nipBjXwTV1GAAAR+KiA1neHZWcOMJY35FS03bAMOCEAgl0CDG0/dMGP5by6xk2s1TIYABFRAjKufo8AyfoUkftyCDwQg8FsBloqdGmaswMf7qt9CYh4E0gLDWBrdCg7SXahBAAK5BEYZa9AnZmStXJSYDAEVENEtT/GtYNAjxl5AfDEgkFtAuGfXCDPW4N0jh9zci2IBCBRdwCTeY1kL2Z65RdYq+rcC159LQLjPFy9rdo0wY9nS+2uLSk5qI6FtxgEBCEwpEJg4flIvr2SrfEgOYxPulI4YBoFYwEiHL/2jqJ4KLNuowVXT4NqMBuAMAQh8I2DkSoPqLDnqU2DZTqmWF4mcXTxzJalQhkBGQJ+piEyL2/5DpifchJttjOpSLenmXMfVvboVBFmkgnOhBYbBJPqTuv41vx10C22Bi4fAfwt8AJe2flCLvH1PAAAAAElFTkSuQmCCCg==) no-repeat right; | ||
2430 | top: -22px; | ||
2431 | } | ||
2432 | |||
2433 | // ------------------------------------------- | ||
2434 | |||
2435 | body.iPhone .loginErrorPanel { | ||
2436 | position: absolute; | ||
2437 | min-height: 372px; | ||
2438 | box-sizing: border-box; | ||
2439 | -moz-box-sizing: border-box; | ||
2440 | -webkit-box-sizing: border-box; | ||
2441 | padding: 10px; | ||
2442 | //background: #c8c8c8 url(./images/old/iPhone/pinstripes.png); | ||
2443 | background: #c8c8c8 url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAIAAACdaSOZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiPHrmCgMC/GNjYwNSAAEGADdNA3dnzPlQAAAAAElFTkSuQmCCCg==); | ||
2444 | } | ||
2445 | |||
2446 | body.iPhone .loginErrorPanel h2 { | ||
2447 | text-align: center; | ||
2448 | color: red; | ||
2449 | margin-top: 40px; | ||
2450 | } | ||
2451 | |||
2452 | // ------------------------------------------- | ||
2453 | |||
2454 | form.cardListSearchForm { | ||
2455 | box-sizing: border-box; | ||
2456 | -moz-box-sizing: border-box; | ||
2457 | -webkit-box-sizing: border-box; | ||
2458 | border-bottom: 1px solid #2d3642; | ||
2459 | border-top: 1px solid #6d84a2; | ||
2460 | padding: 6px; | ||
2461 | height: 45px; | ||
2462 | // background: url(./images/old/iPhone/toolbar.png) #6d84a2 repeat-x; | ||
2463 | background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAArCAIAAAA2QHWOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUCNddjDEOgEAQAgn//5qltYWFnb1GB4vdSy4WBAYStKyb9+O0FJMYyjMyMWCC35lJM71r6vF1P07/lFSfPx6ZxNLcy1HtihzpA/RWcOj0zlDhAAAAAElFTkSuQmCCCg==) #6d84a2 repeat-x; | ||
2464 | margin: 0px; | ||
2465 | } | ||
2466 | |||
2467 | form.cardListSearchForm input { | ||
2468 | margin: 7px; | ||
2469 | -webkit-appearance: searchfield; | ||
2470 | width: 200px; | ||
2471 | } | ||
2472 | |||
2473 | ul.cardListPanel { | ||
2474 | margin: 0px; | ||
2475 | padding: 0px; | ||
2476 | list-style-type: none; | ||
2477 | min-height: 372px; | ||
2478 | } | ||
2479 | |||
2480 | li.cardListItem { | ||
2481 | height: 43px; | ||
2482 | border-bottom: 1px solid #cccccc; | ||
2483 | //background: url(./images/old/iPhone/listArrow.png) no-repeat right center; | ||
2484 | background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpi/P//PwOtARMDHcDwsYQFRJSXl8P4dVC6CZvizs5O8i1BsqARid9Ei+BiQ2KDLKumhSU1QNyKxG+hlkXoEQ+yqAPNogpapK5KNIvaKbUIVxKeAsTvkPg5QCxETUukgfgAkqFPgdgBzVKKLIFZoIJmwR1qBRdNLEC2BJQpV9LCAmRL/gBxAtRwqlqAXqzcgRrOQE0LQIBxtNIiBQAEGAA7xCa2yF9zEgAAAABJRU5ErkJgggo=) no-repeat right center; | ||
2485 | |||
2486 | } | ||
2487 | |||
2488 | li.cardListItem a { | ||
2489 | position: relative; | ||
2490 | top: -22px; | ||
2491 | left: 40px; | ||
2492 | display: block; | ||
2493 | white-space: nowrap; | ||
2494 | overflow: hidden; | ||
2495 | } | ||
2496 | |||
2497 | body[orientation="portrait"] li.cardListItem a { | ||
2498 | max-width: 250px; | ||
2499 | } | ||
2500 | |||
2501 | body[orientation="landscape"] li.cardListItem a { | ||
2502 | max-width: 400px; | ||
2503 | } | ||
2504 | |||
2505 | li.cardListItem img { | ||
2506 | height: 20px; | ||
2507 | width: 20px; | ||
2508 | padding: 12px 10px 0px 10px; | ||
2509 | } | ||
2510 | |||
2511 | li.cardListItem a { | ||
2512 | text-decoration: none; | ||
2513 | color: black; | ||
2514 | font-weight: bold; | ||
2515 | font-size: 14pt; | ||
2516 | vertical-align: 3px; | ||
2517 | } | ||
2518 | |||
2519 | |||
2520 | div.cardDetailPanel { | ||
2521 | position: absolute; | ||
2522 | top: 45px; | ||
2523 | min-height: 372px; | ||
2524 | |||
2525 | box-sizing: border-box; | ||
2526 | -moz-box-sizing: border-box; | ||
2527 | -webkit-box-sizing: border-box; | ||
2528 | padding: 10px; | ||
2529 | //background: #c8c8c8 url(./images/old/iPhone/pinstripes.png); | ||
2530 | background: #c8c8c8 url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAIAAACdaSOZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiPHrmCgMC/GNjYwNSAAEGADdNA3dnzPlQAAAAAElFTkSuQmCCCg==); | ||
2531 | } | ||
2532 | |||
2533 | div.cardDetailPanel > fieldset > div.row > span.directLogin { | ||
2534 | width: 100%; | ||
2535 | box-sizing: border-box; | ||
2536 | -moz-box-sizing: border-box; | ||
2537 | -webkit-box-sizing: border-box; | ||
2538 | margin: 0; | ||
2539 | border: none; | ||
2540 | padding: 12px 10px 0 110px; | ||
2541 | height: 42px; | ||
2542 | background: none; | ||
2543 | font-size: 16px; | ||
2544 | font-weight: normal; | ||
2545 | |||
2546 | padding-left: 40px; | ||
2547 | color: black; | ||
2548 | //background: url(./images/old/iPhone/listArrow.png) no-repeat right center; | ||
2549 | background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpi/P//PwOtARMDHcDwsYQFRJSXl8P4dVC6CZvizs5O8i1BsqARid9Ei+BiQ2KDLKumhSU1QNyKxG+hlkXoEQ+yqAPNogpapK5KNIvaKbUIVxKeAsTvkPg5QCxETUukgfgAkqFPgdgBzVKKLIFZoIJmwR1qBRdNLEC2BJQpV9LCAmRL/gBxAtRwqlqAXqzcgRrOQE0LQIBxtNIiBQAEGAA7xCa2yF9zEgAAAABJRU5ErkJgggo=) no-repeat right center; | ||
2550 | } | ||
2551 | |||
2552 | body[orientation="landscape"] div.cardDetailPanel > fieldset > div.row > span.directLogin { | ||
2553 | padding-left: 50px; | ||
2554 | } | ||
2555 | |||
2556 | div.cardDetailPanel h2 { | ||
2557 | margin: 0 0 8px 14px; | ||
2558 | font-size: inherit; | ||
2559 | font-weight: bold; | ||
2560 | color: #4d4d70; | ||
2561 | text-shadow: rgba(255, 255, 255, 0.75) 1px 1px 0; | ||
2562 | } | ||
2563 | |||
2564 | body[orientation="portrait"] > * { | ||
2565 | width: 320px; | ||
2566 | } | ||
2567 | |||
2568 | body[orientation="landscape"] > * { | ||
2569 | width: 480px; | ||
2570 | } | ||
2571 | */ \ No newline at end of file | ||
diff --git a/frontend/gamma/css/static.css b/frontend/gamma/css/static.css new file mode 100644 index 0000000..9953a8d --- a/dev/null +++ b/frontend/gamma/css/static.css | |||
@@ -0,0 +1,166 @@ | |||
1 | /* | ||
2 | |||
3 | Copyright 2008-2011 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz Community Edition. | ||
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | ||
8 | refer to http://www.clipperz.com. | ||
9 | |||
10 | * Clipperz Community Edition is free software: you can redistribute | ||
11 | it and/or modify it under the terms of the GNU Affero General Public | ||
12 | License as published by the Free Software Foundation, either version | ||
13 | 3 of the License, or (at your option) any later version. | ||
14 | |||
15 | * Clipperz Community Edition is distributed in the hope that it will | ||
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | ||
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
18 | See the GNU Affero General Public License for more details. | ||
19 | |||
20 | * You should have received a copy of the GNU Affero General Public | ||
21 | License along with Clipperz Community Edition. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | |||
24 | */ | ||
25 | |||
26 | body { | ||
27 | padding: 0px; | ||
28 | margin: 0px; | ||
29 | font-family: Helvetica, Arial, Geneva, sans-serif; | ||
30 | color: #666666; | ||
31 | } | ||
32 | div.header { | ||
33 | padding: 20px 25px; | ||
34 | background-color: #1f2148; | ||
35 | } | ||
36 | div#logo { | ||
37 | background: url(./images/old/logo.png); | ||
38 | width: 150px; | ||
39 | height: 39px; | ||
40 | display: block; | ||
41 | } | ||
42 | h5.clipperzPayoff { | ||
43 | color: white; | ||
44 | font-size: 13pt; | ||
45 | font-weight: normal; | ||
46 | padding-left: 20px; | ||
47 | white-space: nowrap; | ||
48 | margin: 0px; | ||
49 | padding-left: 4px; | ||
50 | } | ||
51 | /* | ||
52 | h1 { | ||
53 | font-size: 40pt; | ||
54 | color: #333366; | ||
55 | } | ||
56 | |||
57 | h1 span.logo_z { | ||
58 | color: #ff9400; | ||
59 | } | ||
60 | */ | ||
61 | div.contentWrapper { | ||
62 | padding: 20px; | ||
63 | } | ||
64 | div.block1 { | ||
65 | float: left; | ||
66 | margin-right: 40px; | ||
67 | } | ||
68 | div.block2 { | ||
69 | float: left; | ||
70 | } | ||
71 | div.languageBlock { | ||
72 | clear: both; | ||
73 | padding-top: 20px; | ||
74 | } | ||
75 | div.flags { | ||
76 | float: left; | ||
77 | } | ||
78 | div.content { | ||
79 | float: left; | ||
80 | margin-left: 20px; | ||
81 | width: 300px; | ||
82 | } | ||
83 | h3 { | ||
84 | margin: 0px; | ||
85 | padding-top: 10px; | ||
86 | } | ||
87 | p { | ||
88 | font-size: 10pt; | ||
89 | line-height: 20px; | ||
90 | } | ||
91 | /* @group RSS feed */ | ||
92 | body.iFrame { | ||
93 | margin: 0px; | ||
94 | padding: 0px; | ||
95 | border: 0px; | ||
96 | font-family: Helvetica, Arial, Geneva, sans-serif; | ||
97 | } | ||
98 | div#feedContent ul { | ||
99 | list-style-type: none; | ||
100 | padding: 0px; | ||
101 | margin: 0px; | ||
102 | } | ||
103 | div#feedContent ul li { | ||
104 | display: none; | ||
105 | } | ||
106 | div#feedContent ul li.selected { | ||
107 | display: block; | ||
108 | padding-top: 6px; | ||
109 | } | ||
110 | div#feedContent ul li.selected em.date { | ||
111 | display: none; | ||
112 | } | ||
113 | div#feedContent ul li.selected a { | ||
114 | display: none; | ||
115 | } | ||
116 | div#feedContent ul li.selected h2 { | ||
117 | font-size: 8pt; | ||
118 | color: #c3c4cf; | ||
119 | margin: 0px; | ||
120 | border: 0px; | ||
121 | padding: 0px; | ||
122 | } | ||
123 | div#feedContent ul li.selected p { | ||
124 | font-size: 8pt; | ||
125 | color: #c3c4cf; | ||
126 | margin: 0px; | ||
127 | display: inline; | ||
128 | line-height: 15px; | ||
129 | } | ||
130 | div#feedContent ul li.selected p a { | ||
131 | font-size: 8pt; | ||
132 | color: #c3c4cf; | ||
133 | display: inline; | ||
134 | } | ||
135 | div.languageBlock div.flags { | ||
136 | height: 64px; | ||
137 | width: 64px; | ||
138 | } | ||
139 | div.languageBlock.en-us div.flags { | ||
140 | background: url(./images/old/flags/en.png); | ||
141 | } | ||
142 | div.languageBlock.zh-cn div.flags { | ||
143 | background: url(./images/old/flags/cn.png); | ||
144 | } | ||
145 | div.languageBlock.fr-fr div.flags { | ||
146 | background: url(./images/old/flags/fr.png); | ||
147 | } | ||
148 | div.languageBlock.it-it div.flags { | ||
149 | background: url(./images/old/flags/it.png); | ||
150 | } | ||
151 | div.languageBlock.ja-jp div.flags { | ||
152 | background: url(./images/old/flags/jp.png); | ||
153 | } | ||
154 | div.languageBlock.pt-br div.flags { | ||
155 | background: url(./images/old/flags/br.png); | ||
156 | } | ||
157 | div.languageBlock.es-es div.flags { | ||
158 | background: url(./images/old/flags/es.png); | ||
159 | } | ||
160 | div.languageBlock.ru-ru div.flags { | ||
161 | background: url(./images/old/flags/ru.png); | ||
162 | } | ||
163 | div.languageBlock.de-de div.flags { | ||
164 | background: url(./images/old/flags/de.png); | ||
165 | } | ||
166 | /* @end */ | ||
diff --git a/frontend/gamma/css/web.css b/frontend/gamma/css/web.css index 0a72e09..3540016 100644 --- a/frontend/gamma/css/web.css +++ b/frontend/gamma/css/web.css | |||
@@ -1,2210 +1,4095 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | /* | 26 | /* |
27 | 27 | ||
28 | Color list: | 28 | Color list: |
29 | - login box: | 29 | - login box: |
30 | light#ff9955 | 30 | light#ff9955 |
31 | dark#ff6622 | 31 | dark#ff6622 |
32 | - login button: | 32 | - login button: |
33 | regular#dd5500 | 33 | regular#dd5500 |
34 | hover#773311 | 34 | hover#773311 |
35 | - login translations: | 35 | - login translations: |
36 | box: #cc6622; | 36 | box: #cc6622; |
37 | not-selected: | 37 | not-selected: |
38 | color: #ddaa99 | 38 | color: #ddaa99 |
39 | background:#994422 | 39 | background:#994422 |
40 | selected: #772211; | 40 | selected: #772211; |
41 | */ | 41 | */ |
42 | html { | 42 | html { |
43 | height: 100%; | 43 | height: 100%; |
44 | } | 44 | } |
45 | body { | 45 | body { |
46 | font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif; | 46 | font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif; |
47 | margin: 0px; | 47 | margin: 0px; |
48 | } | 48 | } |
49 | div.modalDialogMask.userInfoBoxMask { | 49 | div.modalDialogMask.userInfoBoxMask { |
50 | -moz-opacity: 0.0; | 50 | -moz-opacity: 0.0; |
51 | opacity: .0; | 51 | opacity: .0; |
52 | filter: alpha(opacity=0); | 52 | filter: alpha(opacity=0); |
53 | z-index: 19000; | 53 | z-index: 19000; |
54 | } | 54 | } |
55 | .reset-margin { | 55 | .reset-margin { |
56 | margin: 0px; | 56 | margin: 0px; |
57 | padding: 0px; | 57 | padding: 0px; |
58 | border: 0px; | 58 | border: 0px; |
59 | } | 59 | } |
60 | .clear { | 60 | .clear { |
61 | clear: both; | 61 | clear: both; |
62 | } | 62 | } |
63 | .hidden_none { | 63 | .hidden_none { |
64 | display: none; | 64 | display: none; |
65 | visibility: hidden; | 65 | visibility: hidden; |
66 | } | 66 | } |
67 | .keepTogether { | 67 | .keepTogether { |
68 | display: inline-block; | 68 | display: inline-block; |
69 | white-space: nowrap; | 69 | white-space: nowrap; |
70 | } | 70 | } |
71 | #mainDiv { | 71 | #mainDiv { |
72 | margin: 0 auto; | 72 | margin: 0 auto; |
73 | } | 73 | } |
74 | /* | 74 | /* |
75 | 75 | ||
76 | Color list: | 76 | Color list: |
77 | - login box: | 77 | - login box: |
78 | light#ff9955 | 78 | light#ff9955 |
79 | dark#ff6622 | 79 | dark#ff6622 |
80 | - login button: | 80 | - login button: |
81 | regular#dd5500 | 81 | regular#dd5500 |
82 | hover#773311 | 82 | hover#773311 |
83 | - login translations: | 83 | - login translations: |
84 | box: #cc6622; | 84 | box: #cc6622; |
85 | not-selected: | 85 | not-selected: |
86 | color: #ddaa99 | 86 | color: #ddaa99 |
87 | background:#994422 | 87 | background:#994422 |
88 | selected: #772211; | 88 | selected: #772211; |
89 | */ | 89 | */ |
90 | html { | 90 | html { |
91 | height: 100%; | 91 | height: 100%; |
92 | } | 92 | } |
93 | body { | 93 | body { |
94 | font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif; | 94 | font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif; |
95 | margin: 0px; | 95 | margin: 0px; |
96 | } | 96 | } |
97 | div.modalDialogMask.userInfoBoxMask { | 97 | div.modalDialogMask.userInfoBoxMask { |
98 | -moz-opacity: 0.0; | 98 | -moz-opacity: 0.0; |
99 | opacity: .0; | 99 | opacity: .0; |
100 | filter: alpha(opacity=0); | 100 | filter: alpha(opacity=0); |
101 | z-index: 19000; | 101 | z-index: 19000; |
102 | } | 102 | } |
103 | .reset-margin { | 103 | .reset-margin { |
104 | margin: 0px; | 104 | margin: 0px; |
105 | padding: 0px; | 105 | padding: 0px; |
106 | border: 0px; | 106 | border: 0px; |
107 | } | 107 | } |
108 | .clear { | 108 | .clear { |
109 | clear: both; | 109 | clear: both; |
110 | } | 110 | } |
111 | .hidden_none { | 111 | .hidden_none { |
112 | display: none; | 112 | display: none; |
113 | visibility: hidden; | 113 | visibility: hidden; |
114 | } | 114 | } |
115 | .keepTogether { | 115 | .keepTogether { |
116 | display: inline-block; | 116 | display: inline-block; |
117 | white-space: nowrap; | 117 | white-space: nowrap; |
118 | } | 118 | } |
119 | #mainDiv { | 119 | #mainDiv { |
120 | margin: 0 auto; | 120 | margin: 0 auto; |
121 | } | 121 | } |
122 | div#loading { | 122 | div#loading { |
123 | width: 100%; | 123 | width: 100%; |
124 | height: 100%; | 124 | height: 100%; |
125 | display: table; | 125 | display: table; |
126 | background-image: -ms-radial-gradient(center, circle farthest-corner, #4d52b3 0%, #1f2148 100%); | 126 | background-image: -ms-radial-gradient(center, circle farthest-corner, #4d52b3 0%, #1f2148 100%); |
127 | /* IE10 */ | 127 | /* IE10 */ |
128 | background-image: -moz-radial-gradient(center, circle farthest-corner, #4d52b3 0%, #1f2148 100%); | 128 | background-image: -moz-radial-gradient(center, circle farthest-corner, #4d52b3 0%, #1f2148 100%); |
129 | /* Mozilla Firefox */ | 129 | /* Mozilla Firefox */ |
130 | background-image: -o-radial-gradient(center, circle farthest-corner, #4d52b3 0%, #1f2148 100%); | 130 | background-image: -o-radial-gradient(center, circle farthest-corner, #4d52b3 0%, #1f2148 100%); |
131 | /* Opera */ | 131 | /* Opera */ |
132 | background-image: -webkit-radial-gradient(center, circle farthest-corner, #4d52b3 0%, #1f2148 100%); | 132 | background-image: -webkit-radial-gradient(center, circle farthest-corner, #4d52b3 0%, #1f2148 100%); |
133 | /* Webkit (Chrome 11+) */ | 133 | /* Webkit (Chrome 11+) */ |
134 | background-image: radial-gradient(center, circle farthest-corner, #4d52b3 0%, #1f2148 100%); | 134 | background-image: radial-gradient(center, circle farthest-corner, #4d52b3 0%, #1f2148 100%); |
135 | /* Proposed W3C Markup */ | 135 | /* Proposed W3C Markup */ |
136 | background-image: -webkit-gradient(radial, center center, 0, center center, 495, color-stop(0, #4d52b3), color-stop(1, #1f2148)); | 136 | background-image: -webkit-gradient(radial, center center, 0, center center, 495, color-stop(0, #4d52b3), color-stop(1, #1f2148)); |
137 | /* Webkit (Safari/Chrome 10) */ | 137 | /* Webkit (Safari/Chrome 10) */ |
138 | } | 138 | } |
139 | div#loading div { | 139 | div#loading div { |
140 | display: table-cell; | 140 | display: table-cell; |
141 | vertical-align: middle; | 141 | vertical-align: middle; |
142 | width: 100%; | 142 | width: 100%; |
143 | text-align: center; | 143 | text-align: center; |
144 | } | 144 | } |
145 | div#loading div h1 { | 145 | div#loading div h1 { |
146 | font-size: 40pt; | 146 | font-size: 40pt; |
147 | color: #ffffff; | 147 | color: #ffffff; |
148 | text-shadow: -1px -1px 2px #2e316c, 1px 1px 1px #454aa1; | 148 | text-shadow: -1px -1px 2px #2e316c, 1px 1px 1px #454aa1; |
149 | } | 149 | } |
150 | div#loading div h3 { | 150 | div#loading div h3 { |
151 | font-size: 18pt; | 151 | font-size: 18pt; |
152 | text-shadow: -1px -1px 1px #2e316c, 1px 1px 1px #454aa1; | 152 | text-shadow: -1px -1px 1px #2e316c, 1px 1px 1px #454aa1; |
153 | color: #1f2148; | 153 | color: #1f2148; |
154 | } | 154 | } |
155 | div#loading div h5 { | 155 | div#loading div h5 { |
156 | padding-left: 20px; | 156 | padding-left: 20px; |
157 | color: #ff9200; | 157 | color: #ff9200; |
158 | } | 158 | } |
159 | /* | 159 | /* |
160 | 160 | ||
161 | Color list: | 161 | Color list: |
162 | - login box: | 162 | - login box: |
163 | light#ff9955 | 163 | light#ff9955 |
164 | dark#ff6622 | 164 | dark#ff6622 |
165 | - login button: | 165 | - login button: |
166 | regular#dd5500 | 166 | regular#dd5500 |
167 | hover#773311 | 167 | hover#773311 |
168 | - login translations: | 168 | - login translations: |
169 | box: #cc6622; | 169 | box: #cc6622; |
170 | not-selected: | 170 | not-selected: |
171 | color: #ddaa99 | 171 | color: #ddaa99 |
172 | background:#994422 | 172 | background:#994422 |
173 | selected: #772211; | 173 | selected: #772211; |
174 | */ | 174 | */ |
175 | html { | 175 | html { |
176 | height: 100%; | 176 | height: 100%; |
177 | } | 177 | } |
178 | body { | 178 | body { |
179 | font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif; | 179 | font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif; |
180 | margin: 0px; | 180 | margin: 0px; |
181 | } | 181 | } |
182 | div.modalDialogMask.userInfoBoxMask { | 182 | div.modalDialogMask.userInfoBoxMask { |
183 | -moz-opacity: 0.0; | 183 | -moz-opacity: 0.0; |
184 | opacity: .0; | 184 | opacity: .0; |
185 | filter: alpha(opacity=0); | 185 | filter: alpha(opacity=0); |
186 | z-index: 19000; | 186 | z-index: 19000; |
187 | } | 187 | } |
188 | .reset-margin { | 188 | .reset-margin { |
189 | margin: 0px; | 189 | margin: 0px; |
190 | padding: 0px; | 190 | padding: 0px; |
191 | border: 0px; | 191 | border: 0px; |
192 | } | 192 | } |
193 | .clear { | 193 | .clear { |
194 | clear: both; | 194 | clear: both; |
195 | } | 195 | } |
196 | .hidden_none { | 196 | .hidden_none { |
197 | display: none; | 197 | display: none; |
198 | visibility: hidden; | 198 | visibility: hidden; |
199 | } | 199 | } |
200 | .keepTogether { | 200 | .keepTogether { |
201 | display: inline-block; | 201 | display: inline-block; |
202 | white-space: nowrap; | 202 | white-space: nowrap; |
203 | } | 203 | } |
204 | #mainDiv { | 204 | #mainDiv { |
205 | margin: 0 auto; | 205 | margin: 0 auto; |
206 | } | 206 | } |
207 | div.tooltip { | 207 | div.tooltip { |
208 | position: absolute; | 208 | position: absolute; |
209 | z-index: 30001; | 209 | z-index: 30001; |
210 | } | 210 | } |
211 | div.tooltip div.tooltip_body { | 211 | div.tooltip div.tooltip_body { |
212 | border-radius: 8px; | 212 | border-radius: 8px; |
213 | -moz-border-radius: 8px; | 213 | -moz-border-radius: 8px; |
214 | -webkit-border-radius: 8px; | 214 | -webkit-border-radius: 8px; |
215 | border-radius: 8px; | ||
216 | -moz-border-radius: 8px; | ||
217 | -webkit-border-radius: 8px; | ||
218 | border-radius: 8px; | ||
219 | -moz-border-radius: 8px; | ||
220 | -webkit-border-radius: 8px; | ||
221 | border-radius: 8px; | ||
222 | -moz-border-radius: 8px; | ||
223 | -webkit-border-radius: 8px; | ||
224 | border-radius: 8px; | ||
225 | -moz-border-radius: 8px; | ||
226 | -webkit-border-radius: 8px; | ||
227 | border-radius: 8px; | ||
228 | -moz-border-radius: 8px; | ||
229 | -webkit-border-radius: 8px; | ||
230 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
231 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
232 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
233 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
234 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
235 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
236 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
237 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
238 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | 215 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); |
239 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | 216 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); |
240 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
241 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
242 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
243 | -moz-box-shadow: 4px 4px 10px #333333; | ||
244 | box-shadow: 4px 4px 10px #333333; | ||
245 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
246 | -moz-box-shadow: 4px 4px 10px #333333; | ||
247 | box-shadow: 4px 4px 10px #333333; | ||
248 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
249 | -moz-box-shadow: 4px 4px 10px #333333; | ||
250 | box-shadow: 4px 4px 10px #333333; | ||
251 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
252 | -moz-box-shadow: 4px 4px 10px #333333; | ||
253 | box-shadow: 4px 4px 10px #333333; | ||
254 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
255 | -moz-box-shadow: 4px 4px 10px #333333; | ||
256 | box-shadow: 4px 4px 10px #333333; | ||
257 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
258 | -moz-box-shadow: 4px 4px 10px #333333; | ||
259 | box-shadow: 4px 4px 10px #333333; | ||
260 | border-top: 1px solid #d4d4d4; | ||
261 | border-left: 1px solid #a2a2a2; | ||
262 | border-right: 1px solid #6f6f6f; | ||
263 | border-bottom: 1px solid #3c3c3c; | ||
264 | border-radius: 8px; | ||
265 | -moz-border-radius: 8px; | ||
266 | -webkit-border-radius: 8px; | ||
267 | border-radius: 8px; | ||
268 | -moz-border-radius: 8px; | ||
269 | -webkit-border-radius: 8px; | ||
270 | border-radius: 8px; | ||
271 | -moz-border-radius: 8px; | ||
272 | -webkit-border-radius: 8px; | ||
273 | border-radius: 8px; | ||
274 | -moz-border-radius: 8px; | ||
275 | -webkit-border-radius: 8px; | ||
276 | border-radius: 8px; | ||
277 | -moz-border-radius: 8px; | ||
278 | -webkit-border-radius: 8px; | ||
279 | border-radius: 8px; | ||
280 | -moz-border-radius: 8px; | ||
281 | -webkit-border-radius: 8px; | ||
282 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
283 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
284 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
285 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
286 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
287 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
288 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
289 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
290 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
291 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
292 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
293 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
294 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
295 | -moz-box-shadow: 4px 4px 10px #333333; | ||
296 | box-shadow: 4px 4px 10px #333333; | ||
297 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
298 | -moz-box-shadow: 4px 4px 10px #333333; | ||
299 | box-shadow: 4px 4px 10px #333333; | ||
300 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
301 | -moz-box-shadow: 4px 4px 10px #333333; | ||
302 | box-shadow: 4px 4px 10px #333333; | ||
303 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
304 | -moz-box-shadow: 4px 4px 10px #333333; | ||
305 | box-shadow: 4px 4px 10px #333333; | ||
306 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
307 | -moz-box-shadow: 4px 4px 10px #333333; | ||
308 | box-shadow: 4px 4px 10px #333333; | ||
309 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
310 | -moz-box-shadow: 4px 4px 10px #333333; | ||
311 | box-shadow: 4px 4px 10px #333333; | ||
312 | border-top: 1px solid #d4d4d4; | ||
313 | border-left: 1px solid #a2a2a2; | ||
314 | border-right: 1px solid #6f6f6f; | ||
315 | border-bottom: 1px solid #3c3c3c; | ||
316 | border-radius: 8px; | ||
317 | -moz-border-radius: 8px; | ||
318 | -webkit-border-radius: 8px; | ||
319 | border-radius: 8px; | ||
320 | -moz-border-radius: 8px; | ||
321 | -webkit-border-radius: 8px; | ||
322 | border-radius: 8px; | ||
323 | -moz-border-radius: 8px; | ||
324 | -webkit-border-radius: 8px; | ||
325 | border-radius: 8px; | ||
326 | -moz-border-radius: 8px; | ||
327 | -webkit-border-radius: 8px; | ||
328 | border-radius: 8px; | ||
329 | -moz-border-radius: 8px; | ||
330 | -webkit-border-radius: 8px; | ||
331 | border-radius: 8px; | ||
332 | -moz-border-radius: 8px; | ||
333 | -webkit-border-radius: 8px; | ||
334 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
335 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
336 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
337 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
338 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
339 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
340 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
341 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
342 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
343 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
344 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
345 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
346 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
347 | -moz-box-shadow: 4px 4px 10px #333333; | ||
348 | box-shadow: 4px 4px 10px #333333; | ||
349 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
350 | -moz-box-shadow: 4px 4px 10px #333333; | ||
351 | box-shadow: 4px 4px 10px #333333; | ||
352 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
353 | -moz-box-shadow: 4px 4px 10px #333333; | ||
354 | box-shadow: 4px 4px 10px #333333; | ||
355 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
356 | -moz-box-shadow: 4px 4px 10px #333333; | ||
357 | box-shadow: 4px 4px 10px #333333; | ||
358 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
359 | -moz-box-shadow: 4px 4px 10px #333333; | ||
360 | box-shadow: 4px 4px 10px #333333; | ||
361 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
362 | -moz-box-shadow: 4px 4px 10px #333333; | ||
363 | box-shadow: 4px 4px 10px #333333; | ||
364 | border-top: 1px solid #d4d4d4; | ||
365 | border-left: 1px solid #a2a2a2; | ||
366 | border-right: 1px solid #6f6f6f; | ||
367 | border-bottom: 1px solid #3c3c3c; | ||
368 | border-radius: 8px; | ||
369 | -moz-border-radius: 8px; | ||
370 | -webkit-border-radius: 8px; | ||
371 | border-radius: 8px; | ||
372 | -moz-border-radius: 8px; | ||
373 | -webkit-border-radius: 8px; | ||
374 | border-radius: 8px; | ||
375 | -moz-border-radius: 8px; | ||
376 | -webkit-border-radius: 8px; | ||
377 | border-radius: 8px; | ||
378 | -moz-border-radius: 8px; | ||
379 | -webkit-border-radius: 8px; | ||
380 | border-radius: 8px; | ||
381 | -moz-border-radius: 8px; | ||
382 | -webkit-border-radius: 8px; | ||
383 | border-radius: 8px; | ||
384 | -moz-border-radius: 8px; | ||
385 | -webkit-border-radius: 8px; | ||
386 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
387 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
388 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
389 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
390 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
391 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
392 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
393 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
394 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
395 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
396 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
397 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
398 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
399 | -moz-box-shadow: 4px 4px 10px #333333; | ||
400 | box-shadow: 4px 4px 10px #333333; | ||
401 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
402 | -moz-box-shadow: 4px 4px 10px #333333; | ||
403 | box-shadow: 4px 4px 10px #333333; | ||
404 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
405 | -moz-box-shadow: 4px 4px 10px #333333; | ||
406 | box-shadow: 4px 4px 10px #333333; | ||
407 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
408 | -moz-box-shadow: 4px 4px 10px #333333; | ||
409 | box-shadow: 4px 4px 10px #333333; | ||
410 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
411 | -moz-box-shadow: 4px 4px 10px #333333; | ||
412 | box-shadow: 4px 4px 10px #333333; | ||
413 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
414 | -moz-box-shadow: 4px 4px 10px #333333; | ||
415 | box-shadow: 4px 4px 10px #333333; | ||
416 | border-top: 1px solid #d4d4d4; | ||
417 | border-left: 1px solid #a2a2a2; | ||
418 | border-right: 1px solid #6f6f6f; | ||
419 | border-bottom: 1px solid #3c3c3c; | ||
420 | border-radius: 8px; | ||
421 | -moz-border-radius: 8px; | ||
422 | -webkit-border-radius: 8px; | ||
423 | border-radius: 8px; | ||
424 | -moz-border-radius: 8px; | ||
425 | -webkit-border-radius: 8px; | ||
426 | border-radius: 8px; | ||
427 | -moz-border-radius: 8px; | ||
428 | -webkit-border-radius: 8px; | ||
429 | border-radius: 8px; | ||
430 | -moz-border-radius: 8px; | ||
431 | -webkit-border-radius: 8px; | ||
432 | border-radius: 8px; | ||
433 | -moz-border-radius: 8px; | ||
434 | -webkit-border-radius: 8px; | ||
435 | border-radius: 8px; | ||
436 | -moz-border-radius: 8px; | ||
437 | -webkit-border-radius: 8px; | ||
438 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
439 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
440 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
441 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
442 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
443 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
444 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
445 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
446 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
447 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
448 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
449 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
450 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
451 | -moz-box-shadow: 4px 4px 10px #333333; | ||
452 | box-shadow: 4px 4px 10px #333333; | ||
453 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
454 | -moz-box-shadow: 4px 4px 10px #333333; | ||
455 | box-shadow: 4px 4px 10px #333333; | ||
456 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
457 | -moz-box-shadow: 4px 4px 10px #333333; | ||
458 | box-shadow: 4px 4px 10px #333333; | ||
459 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
460 | -moz-box-shadow: 4px 4px 10px #333333; | ||
461 | box-shadow: 4px 4px 10px #333333; | ||
462 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
463 | -moz-box-shadow: 4px 4px 10px #333333; | ||
464 | box-shadow: 4px 4px 10px #333333; | ||
465 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
466 | -moz-box-shadow: 4px 4px 10px #333333; | ||
467 | box-shadow: 4px 4px 10px #333333; | ||
468 | border-top: 1px solid #d4d4d4; | ||
469 | border-left: 1px solid #a2a2a2; | ||
470 | border-right: 1px solid #6f6f6f; | ||
471 | border-bottom: 1px solid #3c3c3c; | ||
472 | border-radius: 8px; | ||
473 | -moz-border-radius: 8px; | ||
474 | -webkit-border-radius: 8px; | ||
475 | border-radius: 8px; | ||
476 | -moz-border-radius: 8px; | ||
477 | -webkit-border-radius: 8px; | ||
478 | border-radius: 8px; | ||
479 | -moz-border-radius: 8px; | ||
480 | -webkit-border-radius: 8px; | ||
481 | border-radius: 8px; | ||
482 | -moz-border-radius: 8px; | ||
483 | -webkit-border-radius: 8px; | ||
484 | border-radius: 8px; | ||
485 | -moz-border-radius: 8px; | ||
486 | -webkit-border-radius: 8px; | ||
487 | border-radius: 8px; | ||
488 | -moz-border-radius: 8px; | ||
489 | -webkit-border-radius: 8px; | ||
490 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
491 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
492 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
493 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
494 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
495 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
496 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
497 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
498 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
499 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
500 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555)); | ||
501 | background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb); | ||
502 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
503 | -moz-box-shadow: 4px 4px 10px #333333; | ||
504 | box-shadow: 4px 4px 10px #333333; | ||
505 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
506 | -moz-box-shadow: 4px 4px 10px #333333; | ||
507 | box-shadow: 4px 4px 10px #333333; | ||
508 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
509 | -moz-box-shadow: 4px 4px 10px #333333; | ||
510 | box-shadow: 4px 4px 10px #333333; | ||
511 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
512 | -moz-box-shadow: 4px 4px 10px #333333; | ||
513 | box-shadow: 4px 4px 10px #333333; | ||
514 | -webkit-box-shadow: 4px 4px 10px #333333; | ||
515 | -moz-box-shadow: 4px 4px 10px #333333; | ||
516 | box-shadow: 4px 4px 10px #333333; | ||
517 | -webkit-box-shadow: 4px 4px 10px #333333; | 217 | -webkit-box-shadow: 4px 4px 10px #333333; |
518 | -moz-box-shadow: 4px 4px 10px #333333; | 218 | -moz-box-shadow: 4px 4px 10px #333333; |
519 | box-shadow: 4px 4px 10px #333333; | 219 | box-shadow: 4px 4px 10px #333333; |
520 | border-top: 1px solid #d4d4d4; | 220 | border-top: 1px solid #d4d4d4; |
521 | border-left: 1px solid #a2a2a2; | 221 | border-left: 1px solid #a2a2a2; |
522 | border-right: 1px solid #6f6f6f; | 222 | border-right: 1px solid #6f6f6f; |
523 | border-bottom: 1px solid #3c3c3c; | 223 | border-bottom: 1px solid #3c3c3c; |
524 | } | 224 | } |
525 | div.tooltip div.tooltip_body span { | 225 | div.tooltip div.tooltip_body span { |
526 | display: block; | 226 | display: block; |
527 | padding: 10px; | 227 | padding: 10px; |
528 | font-size: 10pt; | 228 | font-size: 10pt; |
529 | color: white; | 229 | color: white; |
530 | } | 230 | } |
531 | div.tooltip div.tooltip_body div.tooltip_text { | 231 | div.tooltip div.tooltip_body div.tooltip_text { |
532 | width: 200px; | 232 | width: 200px; |
533 | } | 233 | } |
534 | div.tooltip div.tooltip_arrow { | 234 | div.tooltip div.tooltip_arrow { |
535 | position: absolute; | 235 | position: absolute; |
536 | width: 0; | 236 | width: 0; |
537 | height: 0; | 237 | height: 0; |
538 | border: 6px solid transparent; | 238 | border: 6px solid transparent; |
539 | } | 239 | } |
540 | div.tooltip.BELOW div.tooltip_arrow { | 240 | div.tooltip.BELOW div.tooltip_arrow { |
541 | top: -12px; | 241 | top: -12px; |
542 | left: 97px; | 242 | left: 97px; |
543 | border-bottom: 6px solid #bbbbbb; | 243 | border-bottom: 6px solid #bbbbbb; |
544 | } | 244 | } |
545 | div.tooltip.ABOVE div.tooltip_arrow { | 245 | div.tooltip.ABOVE div.tooltip_arrow { |
546 | position: static; | 246 | position: static; |
547 | margin-left: 97px; | 247 | margin-left: 97px; |
548 | border-top: 6px solid #555555; | 248 | border-top: 6px solid #555555; |
549 | } | 249 | } |
550 | div.tooltip.LEFT div.tooltip_arrow { | 250 | div.tooltip.LEFT div.tooltip_arrow { |
551 | left: 203px; | 251 | left: 203px; |
552 | top: 10px; | 252 | top: 10px; |
553 | border-left: 6px solid #747474; | 253 | border-left: 6px solid #747474; |
554 | } | 254 | } |
555 | div.tooltip.LEFT div.tooltip_body div.tooltip_text { | 255 | div.tooltip.LEFT div.tooltip_body div.tooltip_text { |
556 | min-height: 45px; | 256 | min-height: 45px; |
557 | } | 257 | } |
558 | div.tooltip.RIGHT div.tooltip_arrow { | 258 | div.tooltip.RIGHT div.tooltip_arrow { |
559 | left: -12px; | 259 | left: -12px; |
560 | top: 10px; | 260 | top: 10px; |
561 | border-right: 6px solid #9c9c9c; | 261 | border-right: 6px solid #9c9c9c; |
562 | } | 262 | } |
563 | div.tooltip.RIGHT div.tooltip_body div.tooltip_text { | 263 | div.tooltip.RIGHT div.tooltip_body div.tooltip_text { |
564 | min-height: 45px; | 264 | min-height: 45px; |
565 | } | 265 | } |
266 | .button.default { | ||
267 | display: inline-block; | ||
268 | height: 20px; | ||
269 | cursor: pointer; | ||
270 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ffa76f), to(#ff6622)); | ||
271 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ffa76f); | ||
272 | border-radius: 5; | ||
273 | -moz-border-radius: 5; | ||
274 | -webkit-border-radius: 5; | ||
275 | border: 1px solid #ff7f46; | ||
276 | padding-top: 4px; | ||
277 | padding-left: 15px; | ||
278 | padding-right: 15px; | ||
279 | padding-bottom: 2px; | ||
280 | color: white; | ||
281 | font-weight: lighter; | ||
282 | text-shadow: -1px -1px 1px #ff6622, 1px 1px 1px #ffa76f; | ||
283 | text-decoration: none; | ||
284 | font-weight: normal; | ||
285 | } | ||
286 | .button.default:hover { | ||
287 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff8e46), to(#ff6622)); | ||
288 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff8e46); | ||
289 | } | ||
290 | .button { | ||
291 | display: inline-block; | ||
292 | height: 20px; | ||
293 | cursor: pointer; | ||
294 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bfbfbf), to(#999999)); | ||
295 | background: -moz-linear-gradient(0% 100% 90deg, #999999, #bfbfbf); | ||
296 | border-radius: 5; | ||
297 | -moz-border-radius: 5; | ||
298 | -webkit-border-radius: 5; | ||
299 | border: 1px solid #ababab; | ||
300 | padding-top: 4px; | ||
301 | padding-left: 15px; | ||
302 | padding-right: 15px; | ||
303 | padding-bottom: 2px; | ||
304 | color: white; | ||
305 | font-weight: lighter; | ||
306 | text-shadow: -1px -1px 1px #999999, 1px 1px 1px #bfbfbf; | ||
307 | text-decoration: none; | ||
308 | } | ||
309 | .button:hover { | ||
310 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ababab), to(#999999)); | ||
311 | background: -moz-linear-gradient(0% 100% 90deg, #999999, #ababab); | ||
312 | } | ||
566 | /* | 313 | /* |
567 | 314 | ||
568 | Color list: | 315 | Color list: |
569 | - login box: | 316 | - login box: |
570 | light#ff9955 | 317 | light#ff9955 |
571 | dark#ff6622 | 318 | dark#ff6622 |
572 | - login button: | 319 | - login button: |
573 | regular#dd5500 | 320 | regular#dd5500 |
574 | hover#773311 | 321 | hover#773311 |
575 | - login translations: | 322 | - login translations: |
576 | box: #cc6622; | 323 | box: #cc6622; |
577 | not-selected: | 324 | not-selected: |
578 | color: #ddaa99 | 325 | color: #ddaa99 |
579 | background:#994422 | 326 | background:#994422 |
580 | selected: #772211; | 327 | selected: #772211; |
581 | */ | 328 | */ |
582 | html { | 329 | html { |
583 | height: 100%; | 330 | height: 100%; |
584 | } | 331 | } |
585 | body { | 332 | body { |
586 | font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif; | 333 | font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif; |
587 | margin: 0px; | 334 | margin: 0px; |
588 | } | 335 | } |
589 | div.modalDialogMask.userInfoBoxMask { | 336 | div.modalDialogMask.userInfoBoxMask { |
590 | -moz-opacity: 0.0; | 337 | -moz-opacity: 0.0; |
591 | opacity: .0; | 338 | opacity: .0; |
592 | filter: alpha(opacity=0); | 339 | filter: alpha(opacity=0); |
593 | z-index: 19000; | 340 | z-index: 19000; |
594 | } | 341 | } |
595 | .reset-margin { | 342 | .reset-margin { |
596 | margin: 0px; | 343 | margin: 0px; |
597 | padding: 0px; | 344 | padding: 0px; |
598 | border: 0px; | 345 | border: 0px; |
599 | } | 346 | } |
600 | .clear { | 347 | .clear { |
601 | clear: both; | 348 | clear: both; |
602 | } | 349 | } |
603 | .hidden_none { | 350 | .hidden_none { |
604 | display: none; | 351 | display: none; |
605 | visibility: hidden; | 352 | visibility: hidden; |
606 | } | 353 | } |
607 | .keepTogether { | 354 | .keepTogether { |
608 | display: inline-block; | 355 | display: inline-block; |
609 | white-space: nowrap; | 356 | white-space: nowrap; |
610 | } | 357 | } |
611 | #mainDiv { | 358 | #mainDiv { |
612 | margin: 0 auto; | 359 | margin: 0 auto; |
613 | } | 360 | } |
614 | div.pageHeaderAndBody { | 361 | div.pageHeaderAndBody { |
615 | height: 100%; | 362 | height: 100%; |
616 | } | 363 | } |
617 | body > div.pageHeaderAndBody { | 364 | div.pageHeaderAndBody div#pageBody { |
618 | height: auto; | 365 | min-width: 1013px; |
619 | min-height: 100%; | 366 | padding-bottom: 90px; |
620 | } | 367 | } |
621 | div.pageHeader { | 368 | div.pageHeaderAndBody div.pageHeader { |
622 | background-color: #1f2148; | 369 | background-color: #1f2148; |
623 | min-width: 1013px; | 370 | min-width: 1013px; |
624 | } | 371 | } |
625 | div.pageHeader div#miscLinks { | 372 | div.pageHeaderAndBody div.pageHeader div#miscLinks { |
626 | float: right; | 373 | float: right; |
627 | } | 374 | } |
628 | div.pageHeader div#miscLinks ul { | 375 | div.pageHeaderAndBody div.pageHeader div#miscLinks ul { |
629 | margin: 12px 0px 0px; | 376 | margin: 12px 0px 0px; |
630 | padding: 15px; | 377 | padding: 15px; |
631 | } | 378 | } |
632 | div.pageHeader div#miscLinks ul li { | 379 | div.pageHeaderAndBody div.pageHeader div#miscLinks ul li { |
633 | display: inline; | 380 | display: inline; |
634 | margin: 0px; | 381 | margin: 0px; |
635 | padding: 0px; | 382 | padding: 0px; |
636 | border: 0px; | 383 | border: 0px; |
637 | } | 384 | } |
638 | div.pageHeader div#miscLinks ul li a { | 385 | div.pageHeaderAndBody div.pageHeader div#miscLinks ul li a { |
639 | color: #ffffff; | 386 | color: #ffffff; |
640 | margin: 0px; | 387 | margin: 0px; |
641 | padding: 0px; | 388 | padding: 0px; |
642 | border: 0px; | 389 | border: 0px; |
643 | margin: 0px; | ||
644 | padding: 0px; | ||
645 | border: 0px; | ||
646 | margin: 0px; | ||
647 | padding: 0px; | ||
648 | border: 0px; | ||
649 | margin: 0px; | ||
650 | padding: 0px; | ||
651 | border: 0px; | ||
652 | margin: 0px; | ||
653 | padding: 0px; | ||
654 | border: 0px; | ||
655 | margin: 0px; | ||
656 | padding: 0px; | ||
657 | border: 0px; | ||
658 | padding: 15px; | 390 | padding: 15px; |
659 | border-left: 1px solid #3e428f; | 391 | border-left: 1px solid #3e428f; |
660 | font-weight: normal; | 392 | font-weight: normal; |
661 | text-decoration: none; | 393 | text-decoration: none; |
662 | font-size: 12pt; | 394 | font-size: 12pt; |
663 | min-width: 70px; | 395 | min-width: 70px; |
664 | } | 396 | } |
665 | div.pageHeader div#miscLinks ul li a:hover { | 397 | div.pageHeaderAndBody div.pageHeader div#miscLinks ul li a:hover { |
666 | color: #b8bae1; | 398 | color: #b8bae1; |
667 | } | 399 | } |
668 | div.pageHeader div#miscLinks ul li a#donateHeaderLink { | 400 | div.pageHeaderAndBody div.pageHeader div#miscLinks ul li a#donateHeaderLink { |
669 | border-left: 0px; | 401 | border-left: 0px; |
670 | } | 402 | } |
671 | div.pageHeader div#logoFrame { | 403 | div.pageHeaderAndBody div.pageHeader div#logoFrame { |
672 | padding: 16px 16px 60px 16px; | 404 | padding: 16px 16px 60px 16px; |
673 | min-height: 44px; | 405 | min-height: 44px; |
674 | } | 406 | } |
675 | div.pageHeader div#logoFrame a { | 407 | div.pageHeaderAndBody div.pageHeader div#logoFrame a { |
676 | color: white; | 408 | color: white; |
677 | text-decoration: none; | 409 | text-decoration: none; |
678 | } | 410 | } |
679 | div.pageHeader div#logoFrame a canvas { | 411 | div.pageHeaderAndBody div.pageHeader div#logoFrame a canvas { |
680 | margin: 0px; | ||
681 | padding: 0px; | ||
682 | border: 0px; | ||
683 | margin: 0px; | ||
684 | padding: 0px; | ||
685 | border: 0px; | ||
686 | margin: 0px; | ||
687 | padding: 0px; | ||
688 | border: 0px; | ||
689 | margin: 0px; | ||
690 | padding: 0px; | ||
691 | border: 0px; | ||
692 | margin: 0px; | ||
693 | padding: 0px; | ||
694 | border: 0px; | ||
695 | margin: 0px; | 412 | margin: 0px; |
696 | padding: 0px; | 413 | padding: 0px; |
697 | border: 0px; | 414 | border: 0px; |
698 | width: 150px; | 415 | width: 150px; |
699 | height: 39px; | 416 | height: 39px; |
700 | } | 417 | } |
701 | div.pageHeader div#logoFrame a h5.clipperzPayoff { | 418 | div.pageHeaderAndBody div.pageHeader div#logoFrame a h5.clipperzPayoff { |
702 | font-size: 13pt; | 419 | font-size: 13pt; |
703 | font-weight: normal; | 420 | font-weight: normal; |
704 | white-space: nowrap; | 421 | white-space: nowrap; |
705 | margin: 0px; | 422 | margin: 0px; |
706 | padding-left: 4px; | 423 | padding-left: 4px; |
707 | } | 424 | } |
708 | div.pageHeader div#featureTabs table { | 425 | div.pageHeaderAndBody div.pageHeader div#featureTabs table { |
709 | width: 100%; | 426 | width: 100%; |
710 | padding: 6px; | 427 | padding: 6px; |
711 | padding-left: 15px; | 428 | padding-left: 15px; |
712 | padding-right: 15px; | 429 | padding-right: 15px; |
713 | padding-bottom: 46px; | 430 | padding-bottom: 46px; |
714 | } | 431 | } |
715 | div.pageHeader div#featureTabs table tr td { | 432 | div.pageHeaderAndBody div.pageHeader div#featureTabs table tr td { |
716 | width: 25%; | 433 | width: 25%; |
717 | vertical-align: top; | 434 | vertical-align: top; |
718 | font-size: 11pt; | 435 | font-size: 11pt; |
719 | color: white; | 436 | color: white; |
720 | } | 437 | } |
721 | div.pageHeader div#featureTabs table tr td img { | 438 | div.pageHeaderAndBody div.pageHeader div#featureTabs table tr td img { |
722 | float: left; | 439 | float: left; |
723 | } | 440 | } |
724 | div.pageHeader div#featureTabs table tr td span { | 441 | div.pageHeaderAndBody div.pageHeader div#featureTabs table tr td span { |
725 | display: block; | 442 | display: block; |
726 | padding: 5 10 5 85; | 443 | padding: 5 10 5 85; |
727 | } | 444 | } |
728 | div.pageHeader div#featureTabs canvas.featureIcon { | 445 | div.pageHeaderAndBody div.pageHeader div#featureTabs canvas.featureIcon { |
729 | width: 76px; | 446 | width: 76px; |
730 | height: 76px; | 447 | height: 76px; |
731 | display: block; | 448 | display: block; |
732 | float: left; | 449 | float: left; |
733 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ffad79), to(#ff6622)); | 450 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ffad79), to(#ff6622)); |
734 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ffad79); | 451 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ffad79); |
735 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ffad79), to(#ff6622)); | ||
736 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ffad79); | ||
737 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ffad79), to(#ff6622)); | ||
738 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ffad79); | ||
739 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ffad79), to(#ff6622)); | ||
740 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ffad79); | ||
741 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ffad79), to(#ff6622)); | ||
742 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ffad79); | ||
743 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ffad79), to(#ff6622)); | ||
744 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ffad79); | ||
745 | border-radius: 38px; | ||
746 | -moz-border-radius: 38px; | ||
747 | -webkit-border-radius: 38px; | ||
748 | border-radius: 38px; | ||
749 | -moz-border-radius: 38px; | ||
750 | -webkit-border-radius: 38px; | ||
751 | border-radius: 38px; | ||
752 | -moz-border-radius: 38px; | ||
753 | -webkit-border-radius: 38px; | ||
754 | border-radius: 38px; | ||
755 | -moz-border-radius: 38px; | ||
756 | -webkit-border-radius: 38px; | ||
757 | border-radius: 38px; | ||
758 | -moz-border-radius: 38px; | ||
759 | -webkit-border-radius: 38px; | ||
760 | border-radius: 38px; | 452 | border-radius: 38px; |
761 | -moz-border-radius: 38px; | 453 | -moz-border-radius: 38px; |
762 | -webkit-border-radius: 38px; | 454 | -webkit-border-radius: 38px; |
763 | } | 455 | } |
764 | div.pageHeader div#news { | 456 | div.pageHeaderAndBody div.pageHeader div#news { |
765 | top: -82px; | 457 | top: -82px; |
766 | left: 240px; | 458 | left: 240px; |
767 | width: 310px; | 459 | width: 310px; |
768 | height: 90px; | 460 | height: 90px; |
769 | position: absolute; | 461 | position: absolute; |
770 | background-color: #616475; | 462 | background-color: #616475; |
771 | -webkit-border-bottom-left-radius: 8px; | 463 | -webkit-border-bottom-left-radius: 8px; |
772 | -moz-border-radius-bottomleft: 8px; | 464 | -moz-border-radius-bottomleft: 8px; |
773 | border-bottom-left-radius: 8px; | 465 | border-bottom-left-radius: 8px; |
774 | -webkit-border-bottom-left-radius: 8px; | ||
775 | -moz-border-radius-bottomleft: 8px; | ||
776 | border-bottom-left-radius: 8px; | ||
777 | -webkit-border-bottom-left-radius: 8px; | ||
778 | -moz-border-radius-bottomleft: 8px; | ||
779 | border-bottom-left-radius: 8px; | ||
780 | -webkit-border-bottom-left-radius: 8px; | ||
781 | -moz-border-radius-bottomleft: 8px; | ||
782 | border-bottom-left-radius: 8px; | ||
783 | -webkit-border-bottom-left-radius: 8px; | ||
784 | -moz-border-radius-bottomleft: 8px; | ||
785 | border-bottom-left-radius: 8px; | ||
786 | -webkit-border-bottom-left-radius: 8px; | ||
787 | -moz-border-radius-bottomleft: 8px; | ||
788 | border-bottom-left-radius: 8px; | ||
789 | -webkit-border-bottom-right-radius: 8px; | ||
790 | -moz-border-radius-bottomright: 8px; | ||
791 | border-bottom-right-radius: 8px; | ||
792 | -webkit-border-bottom-right-radius: 8px; | ||
793 | -moz-border-radius-bottomright: 8px; | ||
794 | border-bottom-right-radius: 8px; | ||
795 | -webkit-border-bottom-right-radius: 8px; | ||
796 | -moz-border-radius-bottomright: 8px; | ||
797 | border-bottom-right-radius: 8px; | ||
798 | -webkit-border-bottom-right-radius: 8px; | ||
799 | -moz-border-radius-bottomright: 8px; | ||
800 | border-bottom-right-radius: 8px; | ||
801 | -webkit-border-bottom-right-radius: 8px; | ||
802 | -moz-border-radius-bottomright: 8px; | ||
803 | border-bottom-right-radius: 8px; | ||
804 | -webkit-border-bottom-right-radius: 8px; | ||
805 | -moz-border-radius-bottomright: 8px; | ||
806 | border-bottom-right-radius: 8px; | ||
807 | -webkit-border-bottom-left-radius: 8px; | ||
808 | -moz-border-radius-bottomleft: 8px; | ||
809 | border-bottom-left-radius: 8px; | ||
810 | -webkit-border-bottom-left-radius: 8px; | ||
811 | -moz-border-radius-bottomleft: 8px; | ||
812 | border-bottom-left-radius: 8px; | ||
813 | -webkit-border-bottom-left-radius: 8px; | ||
814 | -moz-border-radius-bottomleft: 8px; | ||
815 | border-bottom-left-radius: 8px; | ||
816 | -webkit-border-bottom-left-radius: 8px; | ||
817 | -moz-border-radius-bottomleft: 8px; | ||
818 | border-bottom-left-radius: 8px; | ||
819 | -webkit-border-bottom-left-radius: 8px; | ||
820 | -moz-border-radius-bottomleft: 8px; | ||
821 | border-bottom-left-radius: 8px; | ||
822 | -webkit-border-bottom-left-radius: 8px; | ||
823 | -moz-border-radius-bottomleft: 8px; | ||
824 | border-bottom-left-radius: 8px; | ||
825 | -webkit-border-bottom-right-radius: 8px; | ||
826 | -moz-border-radius-bottomright: 8px; | ||
827 | border-bottom-right-radius: 8px; | ||
828 | -webkit-border-bottom-right-radius: 8px; | ||
829 | -moz-border-radius-bottomright: 8px; | ||
830 | border-bottom-right-radius: 8px; | ||
831 | -webkit-border-bottom-right-radius: 8px; | ||
832 | -moz-border-radius-bottomright: 8px; | ||
833 | border-bottom-right-radius: 8px; | ||
834 | -webkit-border-bottom-right-radius: 8px; | ||
835 | -moz-border-radius-bottomright: 8px; | ||
836 | border-bottom-right-radius: 8px; | ||
837 | -webkit-border-bottom-right-radius: 8px; | ||
838 | -moz-border-radius-bottomright: 8px; | ||
839 | border-bottom-right-radius: 8px; | ||
840 | -webkit-border-bottom-right-radius: 8px; | ||
841 | -moz-border-radius-bottomright: 8px; | ||
842 | border-bottom-right-radius: 8px; | ||
843 | -webkit-border-bottom-left-radius: 8px; | ||
844 | -moz-border-radius-bottomleft: 8px; | ||
845 | border-bottom-left-radius: 8px; | ||
846 | -webkit-border-bottom-left-radius: 8px; | ||
847 | -moz-border-radius-bottomleft: 8px; | ||
848 | border-bottom-left-radius: 8px; | ||
849 | -webkit-border-bottom-left-radius: 8px; | ||
850 | -moz-border-radius-bottomleft: 8px; | ||
851 | border-bottom-left-radius: 8px; | ||
852 | -webkit-border-bottom-left-radius: 8px; | ||
853 | -moz-border-radius-bottomleft: 8px; | ||
854 | border-bottom-left-radius: 8px; | ||
855 | -webkit-border-bottom-left-radius: 8px; | ||
856 | -moz-border-radius-bottomleft: 8px; | ||
857 | border-bottom-left-radius: 8px; | ||
858 | -webkit-border-bottom-left-radius: 8px; | ||
859 | -moz-border-radius-bottomleft: 8px; | ||
860 | border-bottom-left-radius: 8px; | ||
861 | -webkit-border-bottom-right-radius: 8px; | ||
862 | -moz-border-radius-bottomright: 8px; | ||
863 | border-bottom-right-radius: 8px; | ||
864 | -webkit-border-bottom-right-radius: 8px; | ||
865 | -moz-border-radius-bottomright: 8px; | ||
866 | border-bottom-right-radius: 8px; | ||
867 | -webkit-border-bottom-right-radius: 8px; | ||
868 | -moz-border-radius-bottomright: 8px; | ||
869 | border-bottom-right-radius: 8px; | ||
870 | -webkit-border-bottom-right-radius: 8px; | ||
871 | -moz-border-radius-bottomright: 8px; | ||
872 | border-bottom-right-radius: 8px; | ||
873 | -webkit-border-bottom-right-radius: 8px; | ||
874 | -moz-border-radius-bottomright: 8px; | ||
875 | border-bottom-right-radius: 8px; | ||
876 | -webkit-border-bottom-right-radius: 8px; | ||
877 | -moz-border-radius-bottomright: 8px; | ||
878 | border-bottom-right-radius: 8px; | ||
879 | -webkit-border-bottom-left-radius: 8px; | ||
880 | -moz-border-radius-bottomleft: 8px; | ||
881 | border-bottom-left-radius: 8px; | ||
882 | -webkit-border-bottom-left-radius: 8px; | ||
883 | -moz-border-radius-bottomleft: 8px; | ||
884 | border-bottom-left-radius: 8px; | ||
885 | -webkit-border-bottom-left-radius: 8px; | ||
886 | -moz-border-radius-bottomleft: 8px; | ||
887 | border-bottom-left-radius: 8px; | ||
888 | -webkit-border-bottom-left-radius: 8px; | ||
889 | -moz-border-radius-bottomleft: 8px; | ||
890 | border-bottom-left-radius: 8px; | ||
891 | -webkit-border-bottom-left-radius: 8px; | ||
892 | -moz-border-radius-bottomleft: 8px; | ||
893 | border-bottom-left-radius: 8px; | ||
894 | -webkit-border-bottom-left-radius: 8px; | ||
895 | -moz-border-radius-bottomleft: 8px; | ||
896 | border-bottom-left-radius: 8px; | ||
897 | -webkit-border-bottom-right-radius: 8px; | ||
898 | -moz-border-radius-bottomright: 8px; | ||
899 | border-bottom-right-radius: 8px; | ||
900 | -webkit-border-bottom-right-radius: 8px; | ||
901 | -moz-border-radius-bottomright: 8px; | ||
902 | border-bottom-right-radius: 8px; | ||
903 | -webkit-border-bottom-right-radius: 8px; | ||
904 | -moz-border-radius-bottomright: 8px; | ||
905 | border-bottom-right-radius: 8px; | ||
906 | -webkit-border-bottom-right-radius: 8px; | ||
907 | -moz-border-radius-bottomright: 8px; | ||
908 | border-bottom-right-radius: 8px; | ||
909 | -webkit-border-bottom-right-radius: 8px; | ||
910 | -moz-border-radius-bottomright: 8px; | ||
911 | border-bottom-right-radius: 8px; | ||
912 | -webkit-border-bottom-right-radius: 8px; | ||
913 | -moz-border-radius-bottomright: 8px; | ||
914 | border-bottom-right-radius: 8px; | ||
915 | -webkit-border-bottom-left-radius: 8px; | ||
916 | -moz-border-radius-bottomleft: 8px; | ||
917 | border-bottom-left-radius: 8px; | ||
918 | -webkit-border-bottom-left-radius: 8px; | ||
919 | -moz-border-radius-bottomleft: 8px; | ||
920 | border-bottom-left-radius: 8px; | ||
921 | -webkit-border-bottom-left-radius: 8px; | ||
922 | -moz-border-radius-bottomleft: 8px; | ||
923 | border-bottom-left-radius: 8px; | ||
924 | -webkit-border-bottom-left-radius: 8px; | ||
925 | -moz-border-radius-bottomleft: 8px; | ||
926 | border-bottom-left-radius: 8px; | ||
927 | -webkit-border-bottom-left-radius: 8px; | ||
928 | -moz-border-radius-bottomleft: 8px; | ||
929 | border-bottom-left-radius: 8px; | ||
930 | -webkit-border-bottom-left-radius: 8px; | ||
931 | -moz-border-radius-bottomleft: 8px; | ||
932 | border-bottom-left-radius: 8px; | ||
933 | -webkit-border-bottom-right-radius: 8px; | ||
934 | -moz-border-radius-bottomright: 8px; | ||
935 | border-bottom-right-radius: 8px; | ||
936 | -webkit-border-bottom-right-radius: 8px; | ||
937 | -moz-border-radius-bottomright: 8px; | ||
938 | border-bottom-right-radius: 8px; | ||
939 | -webkit-border-bottom-right-radius: 8px; | ||
940 | -moz-border-radius-bottomright: 8px; | ||
941 | border-bottom-right-radius: 8px; | ||
942 | -webkit-border-bottom-right-radius: 8px; | ||
943 | -moz-border-radius-bottomright: 8px; | ||
944 | border-bottom-right-radius: 8px; | ||
945 | -webkit-border-bottom-right-radius: 8px; | ||
946 | -moz-border-radius-bottomright: 8px; | ||
947 | border-bottom-right-radius: 8px; | ||
948 | -webkit-border-bottom-right-radius: 8px; | ||
949 | -moz-border-radius-bottomright: 8px; | ||
950 | border-bottom-right-radius: 8px; | ||
951 | -webkit-border-bottom-left-radius: 8px; | ||
952 | -moz-border-radius-bottomleft: 8px; | ||
953 | border-bottom-left-radius: 8px; | ||
954 | -webkit-border-bottom-left-radius: 8px; | ||
955 | -moz-border-radius-bottomleft: 8px; | ||
956 | border-bottom-left-radius: 8px; | ||
957 | -webkit-border-bottom-left-radius: 8px; | ||
958 | -moz-border-radius-bottomleft: 8px; | ||
959 | border-bottom-left-radius: 8px; | ||
960 | -webkit-border-bottom-left-radius: 8px; | ||
961 | -moz-border-radius-bottomleft: 8px; | ||
962 | border-bottom-left-radius: 8px; | ||
963 | -webkit-border-bottom-left-radius: 8px; | ||
964 | -moz-border-radius-bottomleft: 8px; | ||
965 | border-bottom-left-radius: 8px; | ||
966 | -webkit-border-bottom-left-radius: 8px; | ||
967 | -moz-border-radius-bottomleft: 8px; | ||
968 | border-bottom-left-radius: 8px; | ||
969 | -webkit-border-bottom-right-radius: 8px; | ||
970 | -moz-border-radius-bottomright: 8px; | ||
971 | border-bottom-right-radius: 8px; | ||
972 | -webkit-border-bottom-right-radius: 8px; | ||
973 | -moz-border-radius-bottomright: 8px; | ||
974 | border-bottom-right-radius: 8px; | ||
975 | -webkit-border-bottom-right-radius: 8px; | 466 | -webkit-border-bottom-right-radius: 8px; |
976 | -moz-border-radius-bottomright: 8px; | 467 | -moz-border-radius-bottomright: 8px; |
977 | border-bottom-right-radius: 8px; | 468 | border-bottom-right-radius: 8px; |
978 | -webkit-border-bottom-right-radius: 8px; | ||
979 | -moz-border-radius-bottomright: 8px; | ||
980 | border-bottom-right-radius: 8px; | ||
981 | -webkit-border-bottom-right-radius: 8px; | ||
982 | -moz-border-radius-bottomright: 8px; | ||
983 | border-bottom-right-radius: 8px; | ||
984 | -webkit-border-bottom-right-radius: 8px; | ||
985 | -moz-border-radius-bottomright: 8px; | ||
986 | border-bottom-right-radius: 8px; | ||
987 | -webkit-box-shadow: 2px 2px 9px #333333; | ||
988 | -moz-box-shadow: 2px 2px 9px #333333; | ||
989 | box-shadow: 2px 2px 9px #333333; | ||
990 | -webkit-box-shadow: 2px 2px 9px #333333; | ||
991 | -moz-box-shadow: 2px 2px 9px #333333; | ||
992 | box-shadow: 2px 2px 9px #333333; | ||
993 | -webkit-box-shadow: 2px 2px 9px #333333; | ||
994 | -moz-box-shadow: 2px 2px 9px #333333; | ||
995 | box-shadow: 2px 2px 9px #333333; | ||
996 | -webkit-box-shadow: 2px 2px 9px #333333; | ||
997 | -moz-box-shadow: 2px 2px 9px #333333; | ||
998 | box-shadow: 2px 2px 9px #333333; | ||
999 | -webkit-box-shadow: 2px 2px 9px #333333; | ||
1000 | -moz-box-shadow: 2px 2px 9px #333333; | ||
1001 | box-shadow: 2px 2px 9px #333333; | ||
1002 | -webkit-box-shadow: 2px 2px 9px #333333; | 469 | -webkit-box-shadow: 2px 2px 9px #333333; |
1003 | -moz-box-shadow: 2px 2px 9px #333333; | 470 | -moz-box-shadow: 2px 2px 9px #333333; |
1004 | box-shadow: 2px 2px 9px #333333; | 471 | box-shadow: 2px 2px 9px #333333; |
1005 | } | 472 | } |
1006 | div.pageHeader div#news div#newsframe { | 473 | div.pageHeaderAndBody div.pageHeader div#news div#newsframe { |
1007 | margin-left: 10px; | 474 | margin-left: 10px; |
1008 | margin-right: 10px; | 475 | margin-right: 10px; |
1009 | height: 75px; | 476 | height: 75px; |
1010 | overflow: hidden; | 477 | overflow: hidden; |
1011 | } | 478 | } |
1012 | div.pageHeader div#news div#newsframe iframe { | 479 | div.pageHeaderAndBody div.pageHeader div#news div#newsframe iframe { |
1013 | width: 290px; | 480 | width: 290px; |
1014 | border: 0px; | 481 | border: 0px; |
1015 | color: #616475; | 482 | color: #616475; |
1016 | background-color: #616475; | 483 | background-color: #616475; |
1017 | } | 484 | } |
1018 | div.pageHeader div#news div.grip { | 485 | div.pageHeaderAndBody div.pageHeader div#news div.grip { |
1019 | width: 310px; | 486 | width: 310px; |
1020 | height: 12px; | 487 | height: 6px; |
1021 | margin-top: 2px; | 488 | margin-top: 2px; |
1022 | cursor: pointer; | 489 | cursor: pointer; |
1023 | } | 490 | } |
1024 | div.pageHeader div#news div.grip div.gripHandler { | 491 | div.pageHeaderAndBody div.pageHeader div#news div.grip div.gripHandler { |
1025 | margin-left: auto; | 492 | margin-left: auto; |
1026 | margin-right: auto; | 493 | margin-right: auto; |
1027 | margin-top: 8px; | 494 | margin-top: 8px; |
1028 | width: 0; | 495 | width: 0; |
1029 | height: 0; | 496 | height: 0; |
1030 | border-left: 5px solid transparent; | 497 | border-left: 5px solid transparent; |
1031 | border-right: 5px solid transparent; | 498 | border-right: 5px solid transparent; |
1032 | } | 499 | } |
1033 | div.pageHeader div#news.open div.grip div.gripHandler { | 500 | div.pageHeaderAndBody div.pageHeader div#news.open div.grip div.gripHandler { |
1034 | border-bottom: 5px solid #e9e9ec; | 501 | border-bottom: 5px solid #e9e9ec; |
1035 | } | 502 | } |
1036 | div.pageHeader div#news.hidden div.grip div.gripHandler { | 503 | div.pageHeaderAndBody div.pageHeader div#news.hidden div.grip div.gripHandler { |
1037 | border-top: 5px solid #e9e9ec; | 504 | border-top: 5px solid #e9e9ec; |
1038 | } | 505 | } |
1039 | div.pageFooter { | 506 | div.pageFooter { |
1040 | margin-top: -90px; | 507 | margin-top: -90px; |
1041 | height: 90px; | 508 | height: 90px; |
1042 | clear: both; | 509 | clear: both; |
1043 | } | 510 | } |
1044 | div.pageFooter div.footerWrapper { | 511 | div.pageFooter div.footerWrapper { |
1045 | clear: both; | 512 | clear: both; |
1046 | padding-top: 10px; | 513 | padding-top: 10px; |
1047 | } | 514 | } |
1048 | div.pageFooter div.footerWrapper div.footerContent { | 515 | div.pageFooter div.footerWrapper div.footerContent { |
1049 | background-color: #eaebe6; | 516 | background-color: #eaebe6; |
1050 | padding: 20px; | 517 | padding: 20px; |
1051 | font-size: 8pt; | 518 | font-size: 8pt; |
1052 | } | 519 | } |
1053 | div.pageFooter div.footerWrapper div.footerContent canvas.footerStarIcon { | 520 | div.pageFooter div.footerWrapper div.footerContent canvas.footerStarIcon { |
1054 | width: 40px; | 521 | width: 40px; |
1055 | height: 40px; | 522 | height: 40px; |
1056 | float: left; | 523 | float: left; |
1057 | } | 524 | } |
1058 | div.pageFooter div.footerWrapper div.footerContent span.copyright { | 525 | div.pageFooter div.footerWrapper div.footerContent span.copyright { |
1059 | padding-left: 10px; | 526 | padding-left: 10px; |
1060 | color: #a0a0a0; | 527 | color: #a0a0a0; |
1061 | } | 528 | } |
1062 | div.pageFooter div.footerWrapper div.footerContent a { | 529 | div.pageFooter div.footerWrapper div.footerContent a { |
1063 | padding-left: 50px; | 530 | padding-left: 50px; |
1064 | display: block; | 531 | display: block; |
1065 | color: #888888; | 532 | color: #888888; |
1066 | font-weight: bold; | 533 | font-weight: bold; |
1067 | text-decoration: none; | 534 | text-decoration: none; |
1068 | } | 535 | } |
1069 | div.pageFooter div.footerWrapper div.footerContent span.applicationVersion { | 536 | div.pageFooter div.footerWrapper div.footerContent span.applicationVersion { |
1070 | padding: 8px; | 537 | padding: 8px; |
1071 | color: #888888; | 538 | color: #888888; |
1072 | background-color: #d2d2d2; | 539 | background-color: #d2d2d2; |
1073 | position: relative; | 540 | position: relative; |
1074 | top: -40px; | 541 | top: -40px; |
1075 | float: right; | 542 | float: right; |
1076 | } | 543 | } |
1077 | /* | 544 | /* |
1078 | 545 | ||
1079 | Color list: | 546 | Color list: |
1080 | - login box: | 547 | - login box: |
1081 | light#ff9955 | 548 | light#ff9955 |
1082 | dark#ff6622 | 549 | dark#ff6622 |
1083 | - login button: | 550 | - login button: |
1084 | regular#dd5500 | 551 | regular#dd5500 |
1085 | hover#773311 | 552 | hover#773311 |
1086 | - login translations: | 553 | - login translations: |
1087 | box: #cc6622; | 554 | box: #cc6622; |
1088 | not-selected: | 555 | not-selected: |
1089 | color: #ddaa99 | 556 | color: #ddaa99 |
1090 | background:#994422 | 557 | background:#994422 |
1091 | selected: #772211; | 558 | selected: #772211; |
1092 | */ | 559 | */ |
1093 | html { | 560 | html { |
1094 | height: 100%; | 561 | height: 100%; |
1095 | } | 562 | } |
1096 | body { | 563 | body { |
1097 | font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif; | 564 | font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif; |
1098 | margin: 0px; | 565 | margin: 0px; |
1099 | } | 566 | } |
1100 | div.modalDialogMask.userInfoBoxMask { | 567 | div.modalDialogMask.userInfoBoxMask { |
1101 | -moz-opacity: 0.0; | 568 | -moz-opacity: 0.0; |
1102 | opacity: .0; | 569 | opacity: .0; |
1103 | filter: alpha(opacity=0); | 570 | filter: alpha(opacity=0); |
1104 | z-index: 19000; | 571 | z-index: 19000; |
1105 | } | 572 | } |
1106 | .reset-margin { | 573 | .reset-margin { |
1107 | margin: 0px; | 574 | margin: 0px; |
1108 | padding: 0px; | 575 | padding: 0px; |
1109 | border: 0px; | 576 | border: 0px; |
1110 | } | 577 | } |
1111 | .clear { | 578 | .clear { |
1112 | clear: both; | 579 | clear: both; |
1113 | } | 580 | } |
1114 | .hidden_none { | 581 | .hidden_none { |
1115 | display: none; | 582 | display: none; |
1116 | visibility: hidden; | 583 | visibility: hidden; |
1117 | } | 584 | } |
1118 | .keepTogether { | 585 | .keepTogether { |
1119 | display: inline-block; | 586 | display: inline-block; |
1120 | white-space: nowrap; | 587 | white-space: nowrap; |
1121 | } | 588 | } |
1122 | #mainDiv { | 589 | #mainDiv { |
1123 | margin: 0 auto; | 590 | margin: 0 auto; |
1124 | } | 591 | } |
1125 | div#loginBox { | 592 | div#loginBox { |
1126 | width: 273px; | 593 | width: 273px; |
1127 | z-index: 19000; | 594 | z-index: 19000; |
1128 | top: -30px; | 595 | top: -30px; |
1129 | right: 30px; | 596 | right: 30px; |
1130 | position: relative; | 597 | position: relative; |
1131 | float: right; | 598 | float: right; |
1132 | } | 599 | } |
1133 | div#loginBox div.header { | 600 | div#loginBox div.header { |
1134 | height: 25px; | 601 | height: 25px; |
1135 | width: 273px; | 602 | width: 273px; |
1136 | background-color: #ff9b5a; | 603 | background-color: #ff9b5a; |
1137 | -webkit-border-top-left-radius: 20px; | 604 | -webkit-border-top-left-radius: 20px; |
1138 | -moz-border-radius-topleft: 20px; | 605 | -moz-border-radius-topleft: 20px; |
1139 | border-top-left-radius: 20px; | 606 | border-top-left-radius: 20px; |
1140 | -webkit-border-top-left-radius: 20px; | ||
1141 | -moz-border-radius-topleft: 20px; | ||
1142 | border-top-left-radius: 20px; | ||
1143 | -webkit-border-top-left-radius: 20px; | ||
1144 | -moz-border-radius-topleft: 20px; | ||
1145 | border-top-left-radius: 20px; | ||
1146 | -webkit-border-top-left-radius: 20px; | ||
1147 | -moz-border-radius-topleft: 20px; | ||
1148 | border-top-left-radius: 20px; | ||
1149 | -webkit-border-top-left-radius: 20px; | ||
1150 | -moz-border-radius-topleft: 20px; | ||
1151 | border-top-left-radius: 20px; | ||
1152 | -webkit-border-top-left-radius: 20px; | ||
1153 | -moz-border-radius-topleft: 20px; | ||
1154 | border-top-left-radius: 20px; | ||
1155 | -webkit-border-top-right-radius: 20px; | ||
1156 | -moz-border-radius-topright: 20px; | ||
1157 | border-top-right-radius: 20px; | ||
1158 | -webkit-border-top-right-radius: 20px; | ||
1159 | -moz-border-radius-topright: 20px; | ||
1160 | border-top-right-radius: 20px; | ||
1161 | -webkit-border-top-right-radius: 20px; | ||
1162 | -moz-border-radius-topright: 20px; | ||
1163 | border-top-right-radius: 20px; | ||
1164 | -webkit-border-top-right-radius: 20px; | ||
1165 | -moz-border-radius-topright: 20px; | ||
1166 | border-top-right-radius: 20px; | ||
1167 | -webkit-border-top-right-radius: 20px; | ||
1168 | -moz-border-radius-topright: 20px; | ||
1169 | border-top-right-radius: 20px; | ||
1170 | -webkit-border-top-right-radius: 20px; | ||
1171 | -moz-border-radius-topright: 20px; | ||
1172 | border-top-right-radius: 20px; | ||
1173 | -webkit-border-top-left-radius: 20px; | ||
1174 | -moz-border-radius-topleft: 20px; | ||
1175 | border-top-left-radius: 20px; | ||
1176 | -webkit-border-top-left-radius: 20px; | ||
1177 | -moz-border-radius-topleft: 20px; | ||
1178 | border-top-left-radius: 20px; | ||
1179 | -webkit-border-top-left-radius: 20px; | ||
1180 | -moz-border-radius-topleft: 20px; | ||
1181 | border-top-left-radius: 20px; | ||
1182 | -webkit-border-top-left-radius: 20px; | ||
1183 | -moz-border-radius-topleft: 20px; | ||
1184 | border-top-left-radius: 20px; | ||
1185 | -webkit-border-top-left-radius: 20px; | ||
1186 | -moz-border-radius-topleft: 20px; | ||
1187 | border-top-left-radius: 20px; | ||
1188 | -webkit-border-top-left-radius: 20px; | ||
1189 | -moz-border-radius-topleft: 20px; | ||
1190 | border-top-left-radius: 20px; | ||
1191 | -webkit-border-top-right-radius: 20px; | ||
1192 | -moz-border-radius-topright: 20px; | ||
1193 | border-top-right-radius: 20px; | ||
1194 | -webkit-border-top-right-radius: 20px; | ||
1195 | -moz-border-radius-topright: 20px; | ||
1196 | border-top-right-radius: 20px; | ||
1197 | -webkit-border-top-right-radius: 20px; | ||
1198 | -moz-border-radius-topright: 20px; | ||
1199 | border-top-right-radius: 20px; | ||
1200 | -webkit-border-top-right-radius: 20px; | ||
1201 | -moz-border-radius-topright: 20px; | ||
1202 | border-top-right-radius: 20px; | ||
1203 | -webkit-border-top-right-radius: 20px; | ||
1204 | -moz-border-radius-topright: 20px; | ||
1205 | border-top-right-radius: 20px; | ||
1206 | -webkit-border-top-right-radius: 20px; | ||
1207 | -moz-border-radius-topright: 20px; | ||
1208 | border-top-right-radius: 20px; | ||
1209 | -webkit-border-top-left-radius: 20px; | ||
1210 | -moz-border-radius-topleft: 20px; | ||
1211 | border-top-left-radius: 20px; | ||
1212 | -webkit-border-top-left-radius: 20px; | ||
1213 | -moz-border-radius-topleft: 20px; | ||
1214 | border-top-left-radius: 20px; | ||
1215 | -webkit-border-top-left-radius: 20px; | ||
1216 | -moz-border-radius-topleft: 20px; | ||
1217 | border-top-left-radius: 20px; | ||
1218 | -webkit-border-top-left-radius: 20px; | ||
1219 | -moz-border-radius-topleft: 20px; | ||
1220 | border-top-left-radius: 20px; | ||
1221 | -webkit-border-top-left-radius: 20px; | ||
1222 | -moz-border-radius-topleft: 20px; | ||
1223 | border-top-left-radius: 20px; | ||
1224 | -webkit-border-top-left-radius: 20px; | ||
1225 | -moz-border-radius-topleft: 20px; | ||
1226 | border-top-left-radius: 20px; | ||
1227 | -webkit-border-top-right-radius: 20px; | ||
1228 | -moz-border-radius-topright: 20px; | ||
1229 | border-top-right-radius: 20px; | ||
1230 | -webkit-border-top-right-radius: 20px; | ||
1231 | -moz-border-radius-topright: 20px; | ||
1232 | border-top-right-radius: 20px; | ||
1233 | -webkit-border-top-right-radius: 20px; | ||
1234 | -moz-border-radius-topright: 20px; | ||
1235 | border-top-right-radius: 20px; | ||
1236 | -webkit-border-top-right-radius: 20px; | ||
1237 | -moz-border-radius-topright: 20px; | ||
1238 | border-top-right-radius: 20px; | ||
1239 | -webkit-border-top-right-radius: 20px; | ||
1240 | -moz-border-radius-topright: 20px; | ||
1241 | border-top-right-radius: 20px; | ||
1242 | -webkit-border-top-right-radius: 20px; | ||
1243 | -moz-border-radius-topright: 20px; | ||
1244 | border-top-right-radius: 20px; | ||
1245 | -webkit-border-top-left-radius: 20px; | ||
1246 | -moz-border-radius-topleft: 20px; | ||
1247 | border-top-left-radius: 20px; | ||
1248 | -webkit-border-top-left-radius: 20px; | ||
1249 | -moz-border-radius-topleft: 20px; | ||
1250 | border-top-left-radius: 20px; | ||
1251 | -webkit-border-top-left-radius: 20px; | ||
1252 | -moz-border-radius-topleft: 20px; | ||
1253 | border-top-left-radius: 20px; | ||
1254 | -webkit-border-top-left-radius: 20px; | ||
1255 | -moz-border-radius-topleft: 20px; | ||
1256 | border-top-left-radius: 20px; | ||
1257 | -webkit-border-top-left-radius: 20px; | ||
1258 | -moz-border-radius-topleft: 20px; | ||
1259 | border-top-left-radius: 20px; | ||
1260 | -webkit-border-top-left-radius: 20px; | ||
1261 | -moz-border-radius-topleft: 20px; | ||
1262 | border-top-left-radius: 20px; | ||
1263 | -webkit-border-top-right-radius: 20px; | ||
1264 | -moz-border-radius-topright: 20px; | ||
1265 | border-top-right-radius: 20px; | ||
1266 | -webkit-border-top-right-radius: 20px; | ||
1267 | -moz-border-radius-topright: 20px; | ||
1268 | border-top-right-radius: 20px; | ||
1269 | -webkit-border-top-right-radius: 20px; | ||
1270 | -moz-border-radius-topright: 20px; | ||
1271 | border-top-right-radius: 20px; | ||
1272 | -webkit-border-top-right-radius: 20px; | ||
1273 | -moz-border-radius-topright: 20px; | ||
1274 | border-top-right-radius: 20px; | ||
1275 | -webkit-border-top-right-radius: 20px; | ||
1276 | -moz-border-radius-topright: 20px; | ||
1277 | border-top-right-radius: 20px; | ||
1278 | -webkit-border-top-right-radius: 20px; | ||
1279 | -moz-border-radius-topright: 20px; | ||
1280 | border-top-right-radius: 20px; | ||
1281 | -webkit-border-top-left-radius: 20px; | ||
1282 | -moz-border-radius-topleft: 20px; | ||
1283 | border-top-left-radius: 20px; | ||
1284 | -webkit-border-top-left-radius: 20px; | ||
1285 | -moz-border-radius-topleft: 20px; | ||
1286 | border-top-left-radius: 20px; | ||
1287 | -webkit-border-top-left-radius: 20px; | ||
1288 | -moz-border-radius-topleft: 20px; | ||
1289 | border-top-left-radius: 20px; | ||
1290 | -webkit-border-top-left-radius: 20px; | ||
1291 | -moz-border-radius-topleft: 20px; | ||
1292 | border-top-left-radius: 20px; | ||
1293 | -webkit-border-top-left-radius: 20px; | ||
1294 | -moz-border-radius-topleft: 20px; | ||
1295 | border-top-left-radius: 20px; | ||
1296 | -webkit-border-top-left-radius: 20px; | ||
1297 | -moz-border-radius-topleft: 20px; | ||
1298 | border-top-left-radius: 20px; | ||
1299 | -webkit-border-top-right-radius: 20px; | ||
1300 | -moz-border-radius-topright: 20px; | ||
1301 | border-top-right-radius: 20px; | ||
1302 | -webkit-border-top-right-radius: 20px; | ||
1303 | -moz-border-radius-topright: 20px; | ||
1304 | border-top-right-radius: 20px; | ||
1305 | -webkit-border-top-right-radius: 20px; | ||
1306 | -moz-border-radius-topright: 20px; | ||
1307 | border-top-right-radius: 20px; | ||
1308 | -webkit-border-top-right-radius: 20px; | ||
1309 | -moz-border-radius-topright: 20px; | ||
1310 | border-top-right-radius: 20px; | ||
1311 | -webkit-border-top-right-radius: 20px; | ||
1312 | -moz-border-radius-topright: 20px; | ||
1313 | border-top-right-radius: 20px; | ||
1314 | -webkit-border-top-right-radius: 20px; | ||
1315 | -moz-border-radius-topright: 20px; | ||
1316 | border-top-right-radius: 20px; | ||
1317 | -webkit-border-top-left-radius: 20px; | ||
1318 | -moz-border-radius-topleft: 20px; | ||
1319 | border-top-left-radius: 20px; | ||
1320 | -webkit-border-top-left-radius: 20px; | ||
1321 | -moz-border-radius-topleft: 20px; | ||
1322 | border-top-left-radius: 20px; | ||
1323 | -webkit-border-top-left-radius: 20px; | ||
1324 | -moz-border-radius-topleft: 20px; | ||
1325 | border-top-left-radius: 20px; | ||
1326 | -webkit-border-top-left-radius: 20px; | ||
1327 | -moz-border-radius-topleft: 20px; | ||
1328 | border-top-left-radius: 20px; | ||
1329 | -webkit-border-top-left-radius: 20px; | ||
1330 | -moz-border-radius-topleft: 20px; | ||
1331 | border-top-left-radius: 20px; | ||
1332 | -webkit-border-top-left-radius: 20px; | ||
1333 | -moz-border-radius-topleft: 20px; | ||
1334 | border-top-left-radius: 20px; | ||
1335 | -webkit-border-top-right-radius: 20px; | ||
1336 | -moz-border-radius-topright: 20px; | ||
1337 | border-top-right-radius: 20px; | ||
1338 | -webkit-border-top-right-radius: 20px; | ||
1339 | -moz-border-radius-topright: 20px; | ||
1340 | border-top-right-radius: 20px; | ||
1341 | -webkit-border-top-right-radius: 20px; | ||
1342 | -moz-border-radius-topright: 20px; | ||
1343 | border-top-right-radius: 20px; | ||
1344 | -webkit-border-top-right-radius: 20px; | ||
1345 | -moz-border-radius-topright: 20px; | ||
1346 | border-top-right-radius: 20px; | ||
1347 | -webkit-border-top-right-radius: 20px; | ||
1348 | -moz-border-radius-topright: 20px; | ||
1349 | border-top-right-radius: 20px; | ||
1350 | -webkit-border-top-right-radius: 20px; | 607 | -webkit-border-top-right-radius: 20px; |
1351 | -moz-border-radius-topright: 20px; | 608 | -moz-border-radius-topright: 20px; |
1352 | border-top-right-radius: 20px; | 609 | border-top-right-radius: 20px; |
1353 | } | 610 | } |
1354 | div#loginBox div.body { | 611 | div#loginBox div.body { |
1355 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9b5a), to(#ff6622)); | 612 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9b5a), to(#ff6622)); |
1356 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9b5a); | 613 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9b5a); |
1357 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9b5a), to(#ff6622)); | ||
1358 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9b5a); | ||
1359 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9b5a), to(#ff6622)); | ||
1360 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9b5a); | ||
1361 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9b5a), to(#ff6622)); | ||
1362 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9b5a); | ||
1363 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9b5a), to(#ff6622)); | ||
1364 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9b5a); | ||
1365 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9b5a), to(#ff6622)); | ||
1366 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9b5a); | ||
1367 | } | 614 | } |
1368 | div#loginBox div.body h4 { | 615 | div#loginBox div.body h4 { |
1369 | color: #ffffff; | 616 | color: #ffffff; |
1370 | font-size: 16pt; | 617 | font-size: 16pt; |
1371 | font-weight: normal; | 618 | font-weight: normal; |
1372 | padding-left: 20px; | 619 | padding-left: 20px; |
1373 | margin: 0px; | 620 | margin: 0px; |
1374 | } | 621 | } |
1375 | div#loginBox div.body form.loginForm { | 622 | div#loginBox div.body form.loginForm { |
1376 | padding: 5px 20px 0px; | 623 | padding: 5px 20px 0px; |
1377 | margin-bottom: 0px; | 624 | margin-bottom: 0px; |
1378 | } | 625 | } |
1379 | div#loginBox div.body form.loginForm label { | 626 | div#loginBox div.body form.loginForm label { |
1380 | color: #ffffff; | 627 | color: #ffffff; |
1381 | font-size: 10pt; | 628 | font-size: 10pt; |
1382 | display: block; | 629 | display: block; |
1383 | padding-top: 5px; | 630 | padding-top: 5px; |
1384 | } | 631 | } |
1385 | div#loginBox div.body form.loginForm label.checkbox { | 632 | div#loginBox div.body form.loginForm label.checkbox { |
1386 | display: inline; | 633 | display: inline; |
1387 | } | 634 | } |
1388 | div#loginBox div.body form.loginForm input { | 635 | div#loginBox div.body form.loginForm input { |
1389 | width: 230px; | 636 | width: 230px; |
1390 | font-size: 14pt; | 637 | font-size: 14pt; |
1391 | color: #333366; | 638 | color: #333366; |
1392 | background-color: #ffffff; | 639 | background-color: #ffffff; |
1393 | border: 1px solid #bb4924; | 640 | border: 1px solid #bb4924; |
1394 | padding: 2px 5px; | 641 | padding: 2px 5px; |
1395 | height: 28px; | 642 | height: 28px; |
1396 | } | 643 | } |
1397 | div#loginBox div.body form.loginForm input.checkbox { | 644 | div#loginBox div.body form.loginForm input.checkbox { |
1398 | margin: 10px 8px 0px 0px; | 645 | margin: 10px 8px 0px 0px; |
1399 | height: auto; | 646 | height: auto; |
1400 | width: auto; | 647 | width: auto; |
1401 | border: 0px; | 648 | border: 0px; |
1402 | } | 649 | } |
1403 | div#loginBox div.body form.loginForm input.checkbox:hover { | 650 | div#loginBox div.body form.loginForm input.checkbox:hover { |
1404 | cursor: pointer; | 651 | cursor: pointer; |
1405 | } | 652 | } |
1406 | div#loginBox div.body form.loginForm input.otp { | 653 | div#loginBox div.body form.loginForm input.otp { |
1407 | width: 57px; | 654 | width: 57px; |
1408 | display: inline; | 655 | display: inline; |
1409 | padding-left: 0px; | 656 | padding-left: 0px; |
1410 | padding-right: 0px; | 657 | padding-right: 0px; |
1411 | height: 28px; | 658 | height: 28px; |
1412 | font: 8pt monospace; | 659 | font: 8pt monospace; |
1413 | } | 660 | } |
1414 | div#loginBox div.body form.loginForm input.submit { | 661 | div#loginBox div.body form.loginForm input.submit { |
1415 | margin: 0px 45px; | 662 | margin: 0px 45px; |
1416 | width: 140px; | 663 | width: 140px; |
1417 | color: #ffffff; | 664 | color: #ffffff; |
1418 | background-color: #d44100; | 665 | background-color: #d44100; |
1419 | border: 1px solid #bb4924; | 666 | border: 1px solid #bb4924; |
1420 | padding: 6px; | 667 | padding: 6px; |
1421 | font-size: 12pt; | 668 | font-size: 12pt; |
1422 | height: auto; | 669 | height: auto; |
1423 | } | 670 | } |
1424 | div#loginBox div.body form.loginForm input.submit:hover { | 671 | div#loginBox div.body form.loginForm input.submit:hover { |
1425 | color: #ffffff; | 672 | color: #ffffff; |
1426 | background-color: #7e2700; | 673 | background-color: #7e2700; |
1427 | cursor: pointer; | 674 | cursor: pointer; |
1428 | } | 675 | } |
1429 | div#loginBox div.body form.loginForm ul { | 676 | div#loginBox div.body form.loginForm ul { |
1430 | list-style-type: none; | 677 | list-style-type: none; |
1431 | padding: 0px; | 678 | padding: 0px; |
1432 | margin: 0px; | 679 | margin: 0px; |
1433 | } | 680 | } |
1434 | div#loginBox div.body form.loginForm ul li { | 681 | div#loginBox div.body form.loginForm ul li { |
1435 | display: block; | 682 | display: block; |
1436 | } | 683 | } |
1437 | div#loginBox div.body form.loginForm div.translations { | 684 | div#loginBox div.body form.loginForm div.translations { |
1438 | margin: 15px -20px; | 685 | margin: 15px -20px; |
1439 | background-color: #c87b59; | 686 | background-color: #c87b59; |
1440 | } | 687 | } |
1441 | div#loginBox div.body form.loginForm div.translations h4 { | 688 | div#loginBox div.body form.loginForm div.translations h4 { |
1442 | font-size: 9pt; | 689 | font-size: 9pt; |
1443 | padding: 6px 20px 0px; | 690 | padding: 6px 20px 0px; |
1444 | } | 691 | } |
1445 | div#loginBox div.body form.loginForm div.translations ul { | 692 | div#loginBox div.body form.loginForm div.translations ul { |
1446 | margin: 0px; | 693 | margin: 0px; |
1447 | padding: 5px 10px 10px; | 694 | padding: 5px 10px 10px; |
1448 | margin-bottom: 15px; | 695 | margin-bottom: 15px; |
1449 | } | 696 | } |
1450 | div#loginBox div.body form.loginForm div.translations ul li { | 697 | div#loginBox div.body form.loginForm div.translations ul li { |
1451 | font-size: 8pt; | 698 | font-size: 8pt; |
1452 | color: #ddaa99; | 699 | color: #ddaa99; |
1453 | background-color: #994422; | 700 | background-color: #994422; |
1454 | display: inline-block; | 701 | display: inline-block; |
1455 | padding: 2px 4px; | 702 | padding: 2px 4px; |
1456 | margin: 1px; | 703 | margin: 1px; |
1457 | } | 704 | } |
1458 | div#loginBox div.body form.loginForm div.translations ul li.selected { | 705 | div#loginBox div.body form.loginForm div.translations ul li.selected { |
1459 | color: #ffffff; | 706 | color: #ffffff; |
1460 | background-color: #772211; | 707 | background-color: #772211; |
1461 | } | 708 | } |
1462 | div#loginBox div.body form.loginForm div.translations ul li.selected:hover { | 709 | div#loginBox div.body form.loginForm div.translations ul li.selected:hover { |
1463 | cursor: default; | 710 | cursor: default; |
1464 | } | 711 | } |
1465 | div#loginBox div.body form.loginForm div.translations ul li:hover { | 712 | div#loginBox div.body form.loginForm div.translations ul li:hover { |
1466 | cursor: pointer; | 713 | cursor: pointer; |
1467 | color: #ffffff; | 714 | color: #ffffff; |
1468 | } | 715 | } |
1469 | div#loginBox div.footer { | 716 | div#loginBox div.footer { |
1470 | height: 37px; | 717 | height: 37px; |
1471 | width: 273px; | 718 | width: 273px; |
1472 | background-color: #ff6622; | 719 | background-color: #ff6622; |
1473 | -webkit-border-bottom-left-radius: 20px; | 720 | -webkit-border-bottom-left-radius: 20px; |
1474 | -moz-border-radius-bottomleft: 20px; | 721 | -moz-border-radius-bottomleft: 20px; |
1475 | border-bottom-left-radius: 20px; | 722 | border-bottom-left-radius: 20px; |
1476 | -webkit-border-bottom-left-radius: 20px; | ||
1477 | -moz-border-radius-bottomleft: 20px; | ||
1478 | border-bottom-left-radius: 20px; | ||
1479 | -webkit-border-bottom-left-radius: 20px; | ||
1480 | -moz-border-radius-bottomleft: 20px; | ||
1481 | border-bottom-left-radius: 20px; | ||
1482 | -webkit-border-bottom-left-radius: 20px; | ||
1483 | -moz-border-radius-bottomleft: 20px; | ||
1484 | border-bottom-left-radius: 20px; | ||
1485 | -webkit-border-bottom-left-radius: 20px; | ||
1486 | -moz-border-radius-bottomleft: 20px; | ||
1487 | border-bottom-left-radius: 20px; | ||
1488 | -webkit-border-bottom-left-radius: 20px; | ||
1489 | -moz-border-radius-bottomleft: 20px; | ||
1490 | border-bottom-left-radius: 20px; | ||
1491 | -webkit-border-bottom-right-radius: 20px; | ||
1492 | -moz-border-radius-bottomright: 20px; | ||
1493 | border-bottom-right-radius: 20px; | ||
1494 | -webkit-border-bottom-right-radius: 20px; | ||
1495 | -moz-border-radius-bottomright: 20px; | ||
1496 | border-bottom-right-radius: 20px; | ||
1497 | -webkit-border-bottom-right-radius: 20px; | ||
1498 | -moz-border-radius-bottomright: 20px; | ||
1499 | border-bottom-right-radius: 20px; | ||
1500 | -webkit-border-bottom-right-radius: 20px; | ||
1501 | -moz-border-radius-bottomright: 20px; | ||
1502 | border-bottom-right-radius: 20px; | ||
1503 | -webkit-border-bottom-right-radius: 20px; | ||
1504 | -moz-border-radius-bottomright: 20px; | ||
1505 | border-bottom-right-radius: 20px; | ||
1506 | -webkit-border-bottom-right-radius: 20px; | ||
1507 | -moz-border-radius-bottomright: 20px; | ||
1508 | border-bottom-right-radius: 20px; | ||
1509 | -webkit-border-bottom-left-radius: 20px; | ||
1510 | -moz-border-radius-bottomleft: 20px; | ||
1511 | border-bottom-left-radius: 20px; | ||
1512 | -webkit-border-bottom-left-radius: 20px; | ||
1513 | -moz-border-radius-bottomleft: 20px; | ||
1514 | border-bottom-left-radius: 20px; | ||
1515 | -webkit-border-bottom-left-radius: 20px; | ||
1516 | -moz-border-radius-bottomleft: 20px; | ||
1517 | border-bottom-left-radius: 20px; | ||
1518 | -webkit-border-bottom-left-radius: 20px; | ||
1519 | -moz-border-radius-bottomleft: 20px; | ||
1520 | border-bottom-left-radius: 20px; | ||
1521 | -webkit-border-bottom-left-radius: 20px; | ||
1522 | -moz-border-radius-bottomleft: 20px; | ||
1523 | border-bottom-left-radius: 20px; | ||
1524 | -webkit-border-bottom-left-radius: 20px; | ||
1525 | -moz-border-radius-bottomleft: 20px; | ||
1526 | border-bottom-left-radius: 20px; | ||
1527 | -webkit-border-bottom-right-radius: 20px; | ||
1528 | -moz-border-radius-bottomright: 20px; | ||
1529 | border-bottom-right-radius: 20px; | ||
1530 | -webkit-border-bottom-right-radius: 20px; | ||
1531 | -moz-border-radius-bottomright: 20px; | ||
1532 | border-bottom-right-radius: 20px; | ||
1533 | -webkit-border-bottom-right-radius: 20px; | ||
1534 | -moz-border-radius-bottomright: 20px; | ||
1535 | border-bottom-right-radius: 20px; | ||
1536 | -webkit-border-bottom-right-radius: 20px; | ||
1537 | -moz-border-radius-bottomright: 20px; | ||
1538 | border-bottom-right-radius: 20px; | ||
1539 | -webkit-border-bottom-right-radius: 20px; | ||
1540 | -moz-border-radius-bottomright: 20px; | ||
1541 | border-bottom-right-radius: 20px; | ||
1542 | -webkit-border-bottom-right-radius: 20px; | ||
1543 | -moz-border-radius-bottomright: 20px; | ||
1544 | border-bottom-right-radius: 20px; | ||
1545 | -webkit-border-bottom-left-radius: 20px; | ||
1546 | -moz-border-radius-bottomleft: 20px; | ||
1547 | border-bottom-left-radius: 20px; | ||
1548 | -webkit-border-bottom-left-radius: 20px; | ||
1549 | -moz-border-radius-bottomleft: 20px; | ||
1550 | border-bottom-left-radius: 20px; | ||
1551 | -webkit-border-bottom-left-radius: 20px; | ||
1552 | -moz-border-radius-bottomleft: 20px; | ||
1553 | border-bottom-left-radius: 20px; | ||
1554 | -webkit-border-bottom-left-radius: 20px; | ||
1555 | -moz-border-radius-bottomleft: 20px; | ||
1556 | border-bottom-left-radius: 20px; | ||
1557 | -webkit-border-bottom-left-radius: 20px; | ||
1558 | -moz-border-radius-bottomleft: 20px; | ||
1559 | border-bottom-left-radius: 20px; | ||
1560 | -webkit-border-bottom-left-radius: 20px; | ||
1561 | -moz-border-radius-bottomleft: 20px; | ||
1562 | border-bottom-left-radius: 20px; | ||
1563 | -webkit-border-bottom-right-radius: 20px; | ||
1564 | -moz-border-radius-bottomright: 20px; | ||
1565 | border-bottom-right-radius: 20px; | ||
1566 | -webkit-border-bottom-right-radius: 20px; | ||
1567 | -moz-border-radius-bottomright: 20px; | ||
1568 | border-bottom-right-radius: 20px; | ||
1569 | -webkit-border-bottom-right-radius: 20px; | ||
1570 | -moz-border-radius-bottomright: 20px; | ||
1571 | border-bottom-right-radius: 20px; | ||
1572 | -webkit-border-bottom-right-radius: 20px; | ||
1573 | -moz-border-radius-bottomright: 20px; | ||
1574 | border-bottom-right-radius: 20px; | ||
1575 | -webkit-border-bottom-right-radius: 20px; | ||
1576 | -moz-border-radius-bottomright: 20px; | ||
1577 | border-bottom-right-radius: 20px; | ||
1578 | -webkit-border-bottom-right-radius: 20px; | ||
1579 | -moz-border-radius-bottomright: 20px; | ||
1580 | border-bottom-right-radius: 20px; | ||
1581 | -webkit-border-bottom-left-radius: 20px; | ||
1582 | -moz-border-radius-bottomleft: 20px; | ||
1583 | border-bottom-left-radius: 20px; | ||
1584 | -webkit-border-bottom-left-radius: 20px; | ||
1585 | -moz-border-radius-bottomleft: 20px; | ||
1586 | border-bottom-left-radius: 20px; | ||
1587 | -webkit-border-bottom-left-radius: 20px; | ||
1588 | -moz-border-radius-bottomleft: 20px; | ||
1589 | border-bottom-left-radius: 20px; | ||
1590 | -webkit-border-bottom-left-radius: 20px; | ||
1591 | -moz-border-radius-bottomleft: 20px; | ||
1592 | border-bottom-left-radius: 20px; | ||
1593 | -webkit-border-bottom-left-radius: 20px; | ||
1594 | -moz-border-radius-bottomleft: 20px; | ||
1595 | border-bottom-left-radius: 20px; | ||
1596 | -webkit-border-bottom-left-radius: 20px; | ||
1597 | -moz-border-radius-bottomleft: 20px; | ||
1598 | border-bottom-left-radius: 20px; | ||
1599 | -webkit-border-bottom-right-radius: 20px; | ||
1600 | -moz-border-radius-bottomright: 20px; | ||
1601 | border-bottom-right-radius: 20px; | ||
1602 | -webkit-border-bottom-right-radius: 20px; | ||
1603 | -moz-border-radius-bottomright: 20px; | ||
1604 | border-bottom-right-radius: 20px; | ||
1605 | -webkit-border-bottom-right-radius: 20px; | ||
1606 | -moz-border-radius-bottomright: 20px; | ||
1607 | border-bottom-right-radius: 20px; | ||
1608 | -webkit-border-bottom-right-radius: 20px; | ||
1609 | -moz-border-radius-bottomright: 20px; | ||
1610 | border-bottom-right-radius: 20px; | ||
1611 | -webkit-border-bottom-right-radius: 20px; | ||
1612 | -moz-border-radius-bottomright: 20px; | ||
1613 | border-bottom-right-radius: 20px; | ||
1614 | -webkit-border-bottom-right-radius: 20px; | ||
1615 | -moz-border-radius-bottomright: 20px; | ||
1616 | border-bottom-right-radius: 20px; | ||
1617 | -webkit-border-bottom-left-radius: 20px; | ||
1618 | -moz-border-radius-bottomleft: 20px; | ||
1619 | border-bottom-left-radius: 20px; | ||
1620 | -webkit-border-bottom-left-radius: 20px; | ||
1621 | -moz-border-radius-bottomleft: 20px; | ||
1622 | border-bottom-left-radius: 20px; | ||
1623 | -webkit-border-bottom-left-radius: 20px; | ||
1624 | -moz-border-radius-bottomleft: 20px; | ||
1625 | border-bottom-left-radius: 20px; | ||
1626 | -webkit-border-bottom-left-radius: 20px; | ||
1627 | -moz-border-radius-bottomleft: 20px; | ||
1628 | border-bottom-left-radius: 20px; | ||
1629 | -webkit-border-bottom-left-radius: 20px; | ||
1630 | -moz-border-radius-bottomleft: 20px; | ||
1631 | border-bottom-left-radius: 20px; | ||
1632 | -webkit-border-bottom-left-radius: 20px; | ||
1633 | -moz-border-radius-bottomleft: 20px; | ||
1634 | border-bottom-left-radius: 20px; | ||
1635 | -webkit-border-bottom-right-radius: 20px; | ||
1636 | -moz-border-radius-bottomright: 20px; | ||
1637 | border-bottom-right-radius: 20px; | ||
1638 | -webkit-border-bottom-right-radius: 20px; | ||
1639 | -moz-border-radius-bottomright: 20px; | ||
1640 | border-bottom-right-radius: 20px; | ||
1641 | -webkit-border-bottom-right-radius: 20px; | ||
1642 | -moz-border-radius-bottomright: 20px; | ||
1643 | border-bottom-right-radius: 20px; | ||
1644 | -webkit-border-bottom-right-radius: 20px; | ||
1645 | -moz-border-radius-bottomright: 20px; | ||
1646 | border-bottom-right-radius: 20px; | ||
1647 | -webkit-border-bottom-right-radius: 20px; | ||
1648 | -moz-border-radius-bottomright: 20px; | ||
1649 | border-bottom-right-radius: 20px; | ||
1650 | -webkit-border-bottom-right-radius: 20px; | ||
1651 | -moz-border-radius-bottomright: 20px; | ||
1652 | border-bottom-right-radius: 20px; | ||
1653 | -webkit-border-bottom-left-radius: 20px; | ||
1654 | -moz-border-radius-bottomleft: 20px; | ||
1655 | border-bottom-left-radius: 20px; | ||
1656 | -webkit-border-bottom-left-radius: 20px; | ||
1657 | -moz-border-radius-bottomleft: 20px; | ||
1658 | border-bottom-left-radius: 20px; | ||
1659 | -webkit-border-bottom-left-radius: 20px; | ||
1660 | -moz-border-radius-bottomleft: 20px; | ||
1661 | border-bottom-left-radius: 20px; | ||
1662 | -webkit-border-bottom-left-radius: 20px; | ||
1663 | -moz-border-radius-bottomleft: 20px; | ||
1664 | border-bottom-left-radius: 20px; | ||
1665 | -webkit-border-bottom-left-radius: 20px; | ||
1666 | -moz-border-radius-bottomleft: 20px; | ||
1667 | border-bottom-left-radius: 20px; | ||
1668 | -webkit-border-bottom-left-radius: 20px; | ||
1669 | -moz-border-radius-bottomleft: 20px; | ||
1670 | border-bottom-left-radius: 20px; | ||
1671 | -webkit-border-bottom-right-radius: 20px; | ||
1672 | -moz-border-radius-bottomright: 20px; | ||
1673 | border-bottom-right-radius: 20px; | ||
1674 | -webkit-border-bottom-right-radius: 20px; | ||
1675 | -moz-border-radius-bottomright: 20px; | ||
1676 | border-bottom-right-radius: 20px; | ||
1677 | -webkit-border-bottom-right-radius: 20px; | ||
1678 | -moz-border-radius-bottomright: 20px; | ||
1679 | border-bottom-right-radius: 20px; | ||
1680 | -webkit-border-bottom-right-radius: 20px; | ||
1681 | -moz-border-radius-bottomright: 20px; | ||
1682 | border-bottom-right-radius: 20px; | ||
1683 | -webkit-border-bottom-right-radius: 20px; | ||
1684 | -moz-border-radius-bottomright: 20px; | ||
1685 | border-bottom-right-radius: 20px; | ||
1686 | -webkit-border-bottom-right-radius: 20px; | 723 | -webkit-border-bottom-right-radius: 20px; |
1687 | -moz-border-radius-bottomright: 20px; | 724 | -moz-border-radius-bottomright: 20px; |
1688 | border-bottom-right-radius: 20px; | 725 | border-bottom-right-radius: 20px; |
1689 | } | 726 | } |
1690 | body.ext-gecko div#loginBox form.loginForm div.translations ul li { | 727 | body.ext-gecko div#loginBox form.loginForm div.translations ul li { |
1691 | display: -moz-inline-box; | 728 | display: -moz-inline-box; |
1692 | } | 729 | } |
1693 | div#featurePoints { | 730 | div#featurePoints { |
1694 | min-width: 400px; | 731 | min-width: 400px; |
1695 | padding-top: 15px; | 732 | padding-top: 15px; |
1696 | padding-bottom: 20px; | 733 | padding-bottom: 20px; |
1697 | padding-left: 20px; | 734 | padding-left: 20px; |
1698 | padding-right: 330px; | 735 | padding-right: 330px; |
1699 | } | 736 | } |
1700 | div#featurePoints table tbody tr td { | 737 | div#featurePoints table tbody tr td { |
1701 | width: 50%; | 738 | width: 50%; |
1702 | vertical-align: top; | 739 | vertical-align: top; |
1703 | } | 740 | } |
1704 | div#featurePoints div.block { | 741 | div#featurePoints div.block { |
1705 | padding: 10px; | 742 | padding: 10px; |
1706 | color: #86858e; | 743 | color: #86858e; |
1707 | } | 744 | } |
1708 | div#featurePoints div.block h3 { | 745 | div#featurePoints div.block h3 { |
1709 | font-weight: normal; | 746 | font-weight: normal; |
1710 | font-size: 12pt; | 747 | font-size: 12pt; |
1711 | margin: 0px; | 748 | margin: 0px; |
1712 | padding: 5px 0px; | 749 | padding: 5px 0px; |
1713 | } | 750 | } |
1714 | div#featurePoints div.block ul { | 751 | div#featurePoints div.block ul { |
1715 | margin: 0px; | 752 | margin: 0px; |
1716 | margin-left: 20px; | 753 | margin-left: 20px; |
1717 | padding: 0px; | 754 | padding: 0px; |
1718 | list-style-position: outside; | 755 | list-style-position: outside; |
1719 | } | 756 | } |
1720 | div#featurePoints div.block ul li { | 757 | div#featurePoints div.block ul li { |
1721 | font-size: 10pt; | 758 | font-size: 10pt; |
1722 | padding: 3px 0px; | 759 | padding: 3px 0px; |
1723 | } | 760 | } |
1724 | div.activeFeatures { | 761 | div.activeFeatures { |
1725 | float: left; | 762 | float: left; |
1726 | margin-left: 20px; | 763 | margin-left: 20px; |
1727 | height: 100px; | 764 | height: 100px; |
1728 | } | 765 | } |
1729 | div.activeFeatures a { | 766 | div.activeFeatures a { |
1730 | display: inline-block; | 767 | display: inline-block; |
1731 | padding-left: 46px; | 768 | padding-left: 46px; |
1732 | color: #ff5906; | 769 | color: #ff5906; |
1733 | text-decoration: none; | 770 | text-decoration: none; |
1734 | font-size: 10pt; | 771 | font-size: 10pt; |
1735 | } | 772 | } |
1736 | div.activeFeatures a span.payoff { | 773 | div.activeFeatures a span.payoff { |
1737 | display: block; | 774 | display: block; |
1738 | font-size: 13pt; | 775 | font-size: 13pt; |
1739 | font-weight: lighter; | 776 | font-weight: lighter; |
1740 | color: #9b9689; | 777 | color: #9b9689; |
1741 | margin: 0px; | 778 | margin: 0px; |
1742 | padding: 0px; | 779 | padding: 0px; |
1743 | } | 780 | } |
1744 | div.activeFeatures a:hover span.payoff { | 781 | div.activeFeatures a:hover span.payoff { |
1745 | color: #666666; | 782 | color: #666666; |
1746 | } | 783 | } |
1747 | div.activeFeatures div.keepTogether a { | 784 | div.activeFeatures div.keepTogether a { |
1748 | padding-left: 0px; | 785 | padding-left: 0px; |
1749 | } | 786 | } |
1750 | div.activeFeatures div.keepTogether div { | 787 | div.activeFeatures div.keepTogether div { |
1751 | display: inline-block; | 788 | display: inline-block; |
1752 | padding-right: 15px; | 789 | padding-right: 15px; |
1753 | } | 790 | } |
1754 | div.activeFeatures div.keepTogether canvas { | 791 | div.activeFeatures div.keepTogether canvas { |
1755 | width: 46px; | 792 | width: 46px; |
1756 | height: 46px; | 793 | height: 46px; |
1757 | vertical-align: bottom; | 794 | vertical-align: bottom; |
1758 | } | 795 | } |
1759 | div.activeFeatures div.createAccountLink { | 796 | div.activeFeatures div.createAccountLink { |
1760 | display: inline-block; | 797 | display: inline-block; |
1761 | width: 282; | 798 | width: 282; |
1762 | height: 65px; | 799 | height: 65px; |
800 | background-image: url(./images/old/home/register.png); | ||
1763 | margin-right: 20px; | 801 | margin-right: 20px; |
1764 | } | 802 | } |
1765 | div.activeFeatures div.createAccountLink a.createAccountLink { | 803 | div.activeFeatures div.createAccountLink a.createAccountLink { |
1766 | position: relative; | 804 | position: relative; |
1767 | top: -92px; | 805 | top: -92px; |
1768 | left: 5px; | 806 | left: 5px; |
1769 | } | 807 | } |
1770 | div.activeFeatures div.createAccountLink a.createAccountLink span.payoff { | 808 | div.activeFeatures div.createAccountLink a.createAccountLink span.payoff { |
1771 | margin-top: 23px; | 809 | margin-top: 23px; |
1772 | margin-left: 40px; | 810 | margin-left: 40px; |
1773 | font-size: 17pt; | 811 | font-size: 17pt; |
1774 | color: #64626c; | 812 | color: #64626c; |
1775 | } | 813 | } |
1776 | div.activeFeatures div.createAccountLink a.createAccountLink span.link { | 814 | div.activeFeatures div.createAccountLink a.createAccountLink span.link { |
1777 | padding-left: 40px; | 815 | padding-left: 40px; |
1778 | padding-right: 50px; | 816 | padding-right: 50px; |
1779 | padding-bottom: 10px; | 817 | padding-bottom: 10px; |
1780 | font-size: 12pt; | 818 | font-size: 12pt; |
1781 | } | 819 | } |
820 | div.activeFeatures div.createAccountLink:hover { | ||
821 | background-image: url(./images/old/home/register_selected.png); | ||
822 | } | ||
1782 | div.activeFeatures div.createAccountLink:hover a.createAccountLink span.payoff { | 823 | div.activeFeatures div.createAccountLink:hover a.createAccountLink span.payoff { |
1783 | color: #54535a; | 824 | color: #54535a; |
1784 | } | 825 | } |
1785 | div.activeFeatures div.createAccountLink:hover a.createAccountLink span.link { | 826 | div.activeFeatures div.createAccountLink:hover a.createAccountLink span.link { |
1786 | color: white; | 827 | color: white; |
1787 | } | 828 | } |
1788 | div.activeFeatures div.createAccountLink canvas { | 829 | div.activeFeatures div.createAccountLink canvas { |
1789 | width: 282px; | 830 | width: 282px; |
1790 | height: 93px; | 831 | height: 93px; |
1791 | } | 832 | } |
1792 | /* | 833 | /* |
1793 | 834 | ||
1794 | Color list: | 835 | Color list: |
1795 | - login box: | 836 | - login box: |
1796 | light#ff9955 | 837 | light#ff9955 |
1797 | dark#ff6622 | 838 | dark#ff6622 |
1798 | - login button: | 839 | - login button: |
1799 | regular#dd5500 | 840 | regular#dd5500 |
1800 | hover#773311 | 841 | hover#773311 |
1801 | - login translations: | 842 | - login translations: |
1802 | box: #cc6622; | 843 | box: #cc6622; |
1803 | not-selected: | 844 | not-selected: |
1804 | color: #ddaa99 | 845 | color: #ddaa99 |
1805 | background:#994422 | 846 | background:#994422 |
1806 | selected: #772211; | 847 | selected: #772211; |
1807 | */ | 848 | */ |
1808 | html { | 849 | html { |
1809 | height: 100%; | 850 | height: 100%; |
1810 | } | 851 | } |
1811 | body { | 852 | body { |
1812 | font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif; | 853 | font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif; |
1813 | margin: 0px; | 854 | margin: 0px; |
1814 | } | 855 | } |
1815 | div.modalDialogMask.userInfoBoxMask { | 856 | div.modalDialogMask.userInfoBoxMask { |
1816 | -moz-opacity: 0.0; | 857 | -moz-opacity: 0.0; |
1817 | opacity: .0; | 858 | opacity: .0; |
1818 | filter: alpha(opacity=0); | 859 | filter: alpha(opacity=0); |
1819 | z-index: 19000; | 860 | z-index: 19000; |
1820 | } | 861 | } |
1821 | .reset-margin { | 862 | .reset-margin { |
1822 | margin: 0px; | 863 | margin: 0px; |
1823 | padding: 0px; | 864 | padding: 0px; |
1824 | border: 0px; | 865 | border: 0px; |
1825 | } | 866 | } |
1826 | .clear { | 867 | .clear { |
1827 | clear: both; | 868 | clear: both; |
1828 | } | 869 | } |
1829 | .hidden_none { | 870 | .hidden_none { |
1830 | display: none; | 871 | display: none; |
1831 | visibility: hidden; | 872 | visibility: hidden; |
1832 | } | 873 | } |
1833 | .keepTogether { | 874 | .keepTogether { |
1834 | display: inline-block; | 875 | display: inline-block; |
1835 | white-space: nowrap; | 876 | white-space: nowrap; |
1836 | } | 877 | } |
1837 | #mainDiv { | 878 | #mainDiv { |
1838 | margin: 0 auto; | 879 | margin: 0 auto; |
1839 | } | 880 | } |
1840 | div.userInfoBox { | 881 | div.userInfoBox { |
1841 | position: absolute; | 882 | position: absolute; |
1842 | width: 160px; | 883 | width: 160px; |
1843 | height: 120px; | 884 | height: 120px; |
1844 | top: 100px; | 885 | top: 100px; |
1845 | left: 15px; | 886 | left: 15px; |
1846 | color: white; | 887 | color: white; |
1847 | background-color: #ff9955; | 888 | background-color: #ff9955; |
1848 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9a56), to(#ff6723)); | 889 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9a56), to(#ff6723)); |
1849 | background: -moz-linear-gradient(0% 100% 90deg, #ff6723, #ff9a56); | 890 | background: -moz-linear-gradient(0% 100% 90deg, #ff6723, #ff9a56); |
1850 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9a56), to(#ff6723)); | ||
1851 | background: -moz-linear-gradient(0% 100% 90deg, #ff6723, #ff9a56); | ||
1852 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9a56), to(#ff6723)); | ||
1853 | background: -moz-linear-gradient(0% 100% 90deg, #ff6723, #ff9a56); | ||
1854 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9a56), to(#ff6723)); | ||
1855 | background: -moz-linear-gradient(0% 100% 90deg, #ff6723, #ff9a56); | ||
1856 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9a56), to(#ff6723)); | ||
1857 | background: -moz-linear-gradient(0% 100% 90deg, #ff6723, #ff9a56); | ||
1858 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9a56), to(#ff6723)); | ||
1859 | background: -moz-linear-gradient(0% 100% 90deg, #ff6723, #ff9a56); | ||
1860 | border-radius: 10px; | ||
1861 | -moz-border-radius: 10px; | ||
1862 | -webkit-border-radius: 10px; | ||
1863 | border-radius: 10px; | ||
1864 | -moz-border-radius: 10px; | ||
1865 | -webkit-border-radius: 10px; | ||
1866 | border-radius: 10px; | ||
1867 | -moz-border-radius: 10px; | ||
1868 | -webkit-border-radius: 10px; | ||
1869 | border-radius: 10px; | ||
1870 | -moz-border-radius: 10px; | ||
1871 | -webkit-border-radius: 10px; | ||
1872 | border-radius: 10px; | 891 | border-radius: 10px; |
1873 | -moz-border-radius: 10px; | 892 | -moz-border-radius: 10px; |
1874 | -webkit-border-radius: 10px; | 893 | -webkit-border-radius: 10px; |
1875 | border-radius: 10px; | ||
1876 | -moz-border-radius: 10px; | ||
1877 | -webkit-border-radius: 10px; | ||
1878 | -webkit-box-shadow: 2px 2px 9px #333333; | ||
1879 | -moz-box-shadow: 2px 2px 9px #333333; | ||
1880 | box-shadow: 2px 2px 9px #333333; | ||
1881 | -webkit-box-shadow: 2px 2px 9px #333333; | ||
1882 | -moz-box-shadow: 2px 2px 9px #333333; | ||
1883 | box-shadow: 2px 2px 9px #333333; | ||
1884 | -webkit-box-shadow: 2px 2px 9px #333333; | ||
1885 | -moz-box-shadow: 2px 2px 9px #333333; | ||
1886 | box-shadow: 2px 2px 9px #333333; | ||
1887 | -webkit-box-shadow: 2px 2px 9px #333333; | ||
1888 | -moz-box-shadow: 2px 2px 9px #333333; | ||
1889 | box-shadow: 2px 2px 9px #333333; | ||
1890 | -webkit-box-shadow: 2px 2px 9px #333333; | ||
1891 | -moz-box-shadow: 2px 2px 9px #333333; | ||
1892 | box-shadow: 2px 2px 9px #333333; | ||
1893 | -webkit-box-shadow: 2px 2px 9px #333333; | 894 | -webkit-box-shadow: 2px 2px 9px #333333; |
1894 | -moz-box-shadow: 2px 2px 9px #333333; | 895 | -moz-box-shadow: 2px 2px 9px #333333; |
1895 | box-shadow: 2px 2px 9px #333333; | 896 | box-shadow: 2px 2px 9px #333333; |
1896 | } | 897 | } |
1897 | div.userInfoBox.locked { | 898 | div.userInfoBox.locked { |
1898 | z-index: 19001; | 899 | z-index: 19001; |
1899 | } | 900 | } |
1900 | div.userInfoBox.locked div.header a.lockButton { | 901 | div.userInfoBox.locked div.header a.lockButton { |
1901 | background: url(../images/old/lock/locked.png) no-repeat -5px -2px; | 902 | background: url(./images/old/lock/locked.png) no-repeat -5px -2px; |
1902 | } | 903 | } |
1903 | div.userInfoBox.locked div.header a.lockButton:hover { | 904 | div.userInfoBox.locked div.header a.lockButton:hover { |
1904 | background: url(../images/old/lock/locked_hover.png) no-repeat -5px -2px; | 905 | background: url(./images/old/lock/locked_hover.png) no-repeat -5px -2px; |
1905 | } | 906 | } |
1906 | div.userInfoBox.locked div.body a { | 907 | div.userInfoBox.locked div.body a { |
1907 | display: none; | 908 | display: none; |
1908 | } | 909 | } |
1909 | div.userInfoBox div.header { | 910 | div.userInfoBox div.header { |
1910 | height: 30px; | 911 | height: 30px; |
1911 | } | 912 | } |
1912 | div.userInfoBox div.header h1 { | 913 | div.userInfoBox div.header h1 { |
1913 | font-size: 8pt; | 914 | font-size: 8pt; |
1914 | font-weight: normal; | 915 | font-weight: normal; |
1915 | margin: 0px; | 916 | margin: 0px; |
1916 | padding-top: 12px; | 917 | padding-top: 12px; |
1917 | padding-left: 12px; | 918 | padding-left: 12px; |
1918 | } | 919 | } |
1919 | div.userInfoBox div.header a.lockButton { | 920 | div.userInfoBox div.header a.lockButton { |
1920 | position: absolute; | 921 | position: absolute; |
1921 | top: 8px; | 922 | top: 8px; |
1922 | right: 12px; | 923 | right: 12px; |
1923 | display: block; | 924 | display: block; |
1924 | width: 15px; | 925 | width: 15px; |
1925 | height: 20px; | 926 | height: 20px; |
1926 | text-decoration: none; | 927 | text-decoration: none; |
1927 | background: url(../images/old/lock/unlocked.png) no-repeat -5px -2px; | 928 | background: url(./images/old/lock/unlocked.png) no-repeat -5px -2px; |
1928 | } | 929 | } |
1929 | div.userInfoBox div.header a.lockButton:hover { | 930 | div.userInfoBox div.header a.lockButton:hover { |
1930 | background: url(../images/old/lock/unlocked_hover.png) no-repeat -5px -2px; | 931 | background: url(./images/old/lock/unlocked_hover.png) no-repeat -5px -2px; |
1931 | } | 932 | } |
1932 | div.userInfoBox div.body { | 933 | div.userInfoBox div.body { |
1933 | padding: 0px 12px; | 934 | padding: 0px 12px; |
1934 | } | 935 | } |
1935 | div.userInfoBox div.body h3 { | 936 | div.userInfoBox div.body h3 { |
1936 | font-size: 11pt; | 937 | font-size: 11pt; |
1937 | font-weight: bold; | 938 | font-weight: bold; |
1938 | margin: 0px; | 939 | margin: 0px; |
1939 | } | 940 | } |
1940 | div.userInfoBox div.body ul { | 941 | div.userInfoBox div.body ul { |
1941 | font-size: 8pt; | 942 | font-size: 8pt; |
1942 | padding: 0px; | 943 | padding: 0px; |
1943 | margin: 4px 0px; | 944 | margin: 4px 0px; |
1944 | list-style-position: inside; | 945 | list-style-position: inside; |
1945 | text-shadow: #000000 0 0 0; | ||
1946 | } | 946 | } |
1947 | div.userInfoBox div.body ul li span.number { | 947 | div.userInfoBox div.body ul li span.number { |
1948 | font-weight: bold; | 948 | font-weight: bold; |
1949 | padding-right: 3px; | 949 | padding-right: 3px; |
1950 | } | 950 | } |
1951 | div.userInfoBox div.body a { | 951 | div.userInfoBox div.body a { |
1952 | display: block; | 952 | display: block; |
1953 | margin-top: 8px; | 953 | margin-top: 8px; |
1954 | border-top: 1px solid white; | 954 | border-top: 1px solid white; |
1955 | padding-top: 6px; | 955 | padding-top: 6px; |
1956 | font-size: 10pt; | 956 | font-size: 10pt; |
1957 | font-weight: bold; | 957 | font-weight: bold; |
1958 | color: #d15a22; | 958 | color: #d15a22; |
1959 | border-color: #fe9a5f; | 959 | border-color: #fe9a5f; |
1960 | text-decoration: none; | 960 | text-decoration: none; |
1961 | } | 961 | } |
1962 | div.userInfoBox div.body a:hover { | 962 | div.userInfoBox div.body a:hover { |
1963 | color: #8c3b15; | 963 | color: #8c3b15; |
1964 | } | 964 | } |
1965 | div.sidePanels { | 965 | div.sidePanels { |
1966 | float: left; | 966 | float: left; |
1967 | margin-top: 106px; | 967 | margin-top: 106px; |
1968 | margin-left: 20px; | 968 | margin-left: 20px; |
1969 | width: 160px; | 969 | width: 160px; |
1970 | } | 970 | } |
1971 | div.sidePanels div.tabSidePanel { | 971 | div.sidePanels div.tabSidePanel { |
1972 | margin-right: -10px; | 972 | margin-right: -10px; |
1973 | } | 973 | } |
1974 | div.sidePanels div.tabSidePanel ul { | 974 | div.sidePanels div.tabSidePanel ul { |
1975 | margin: 0px; | 975 | margin: 0px; |
1976 | padding-left: 0px; | 976 | padding-left: 0px; |
1977 | list-style-type: none; | 977 | list-style-type: none; |
1978 | color: #f78b46; | 978 | color: #f78b46; |
1979 | } | 979 | } |
1980 | div.sidePanels div.tabSidePanel ul.mainTabs { | 980 | div.sidePanels div.tabSidePanel ul.mainTabs { |
1981 | margin: 0px; | 981 | margin: 0px; |
1982 | } | 982 | } |
1983 | div.sidePanels div.tabSidePanel ul.mainTabs li a { | 983 | div.sidePanels div.tabSidePanel ul.mainTabs li a { |
1984 | display: block; | 984 | display: block; |
1985 | line-height: 30px; | 985 | line-height: 30px; |
1986 | height: 43px; | 986 | height: 43px; |
1987 | padding-left: 40px; | 987 | padding-left: 40px; |
1988 | color: #ff6621; | 988 | color: #ff6621; |
1989 | margin: 0px; | 989 | margin: 0px; |
1990 | font-weight: normal; | 990 | font-weight: normal; |
1991 | font-size: 13pt; | 991 | font-size: 13pt; |
1992 | text-decoration: none; | 992 | text-decoration: none; |
1993 | } | 993 | } |
1994 | div.sidePanels div.tabSidePanel ul.mainTabs li div.selectionHighlighter { | 994 | div.sidePanels div.tabSidePanel ul.mainTabs li div.selectionHighlighter { |
1995 | display: none; | 995 | display: none; |
1996 | } | 996 | } |
1997 | div.sidePanels div.tabSidePanel ul.mainTabs li div.selectionHighlighter a.add { | 997 | div.sidePanels div.tabSidePanel ul.mainTabs li div.selectionHighlighter a.add { |
1998 | font-size: 14pt; | 998 | font-size: 14pt; |
1999 | font-weight: bold; | 999 | font-weight: bold; |
2000 | position: relative; | 1000 | position: relative; |
2001 | top: -34px; | 1001 | top: -34px; |
2002 | right: 16px; | 1002 | right: 16px; |
2003 | background: none; | 1003 | background: none; |
2004 | color: #c0531b; | 1004 | color: #c0531b; |
2005 | padding-left: 15px; | 1005 | padding-left: 15px; |
2006 | } | 1006 | } |
2007 | div.sidePanels div.tabSidePanel ul.mainTabs li div.selectionHighlighter a.add:hover { | 1007 | div.sidePanels div.tabSidePanel ul.mainTabs li div.selectionHighlighter a.add:hover { |
2008 | color: white; | 1008 | color: white; |
2009 | } | 1009 | } |
2010 | div.sidePanels div.tabSidePanel ul.mainTabs li div.selectionHighlighter a.add span { | 1010 | div.sidePanels div.tabSidePanel ul.mainTabs li div.selectionHighlighter a.add span { |
2011 | font-size: 8pt; | 1011 | font-size: 8pt; |
2012 | vertical-align: middle; | 1012 | vertical-align: middle; |
2013 | } | 1013 | } |
2014 | div.sidePanels div.tabSidePanel ul.mainTabs li div.selectionHighlighter a.add h3 { | 1014 | div.sidePanels div.tabSidePanel ul.mainTabs li div.selectionHighlighter a.add h3 { |
2015 | display: inline; | 1015 | display: inline; |
2016 | padding-left: 5px; | 1016 | padding-left: 5px; |
2017 | } | 1017 | } |
2018 | div.sidePanels div.tabSidePanel ul.mainTabs li.selected div.selectionHighlighter { | 1018 | div.sidePanels div.tabSidePanel ul.mainTabs li.selected div.selectionHighlighter { |
2019 | display: block; | 1019 | display: block; |
2020 | position: absolute; | 1020 | position: absolute; |
2021 | left: 154px; | 1021 | left: 154px; |
2022 | margin-top: -43px; | 1022 | margin-top: -43px; |
2023 | } | 1023 | } |
2024 | div.sidePanels div.tabSidePanel ul.mainTabs li.cards a { | 1024 | div.sidePanels div.tabSidePanel ul.mainTabs li.cards a { |
2025 | background: url(../images/old/main/tabs/cardsBackground.png) -19px -63px; | 1025 | background: url(./images/old/main/tabs/cardsBackground.png) -19px -63px; |
2026 | } | 1026 | } |
2027 | div.sidePanels div.tabSidePanel ul.mainTabs li.cards a:hover { | 1027 | div.sidePanels div.tabSidePanel ul.mainTabs li.cards a:hover { |
2028 | background: url(../images/old/main/tabs/cardsBackground.png) -19px -110px; | 1028 | background: url(./images/old/main/tabs/cardsBackground.png) -19px -110px; |
2029 | } | 1029 | } |
2030 | div.sidePanels div.tabSidePanel ul.mainTabs li.cards.selected a { | 1030 | div.sidePanels div.tabSidePanel ul.mainTabs li.cards.selected a { |
2031 | margin-left: -10px; | 1031 | margin-left: -10px; |
2032 | padding-left: 50px; | 1032 | padding-left: 50px; |
2033 | color: white; | 1033 | color: white; |
2034 | background: url(../images/old/main/tabs/cardsBackground.png) -9px -14px; | 1034 | background: url(./images/old/main/tabs/cardsBackground.png) -9px -14px; |
2035 | } | ||
2036 | div.sidePanels div.tabSidePanel ul.mainTabs li.cards.selected a:hover { | ||
2037 | background: url(../images/old/main/tabs/cardsBackground.png) -9px -14px; | ||
2038 | } | ||
2039 | div.sidePanels div.tabSidePanel ul.mainTabs li.directLogins a { | ||
2040 | background: url(../images/old/main/tabs/directLoginBackground.png) -19px -63px; | ||
2041 | } | ||
2042 | div.sidePanels div.tabSidePanel ul.mainTabs li.directLogins a:hover { | ||
2043 | background: url(../images/old/main/tabs/directLoginBackground.png) -19px -110px; | ||
2044 | } | 1035 | } |
2045 | div.sidePanels div.tabSidePanel ul.mainTabs li.directLogins.selected a { | 1036 | div.sidePanels div.tabSidePanel ul.mainTabs li.directLogins.selected a { |
2046 | margin-left: -10px; | 1037 | margin-left: -10px; |
2047 | padding-left: 50px; | 1038 | padding-left: 50px; |
2048 | color: white; | 1039 | color: white; |
2049 | background: url(../images/old/main/tabs/directLoginBackground.png) -9px -14px; | ||
2050 | } | 1040 | } |
2051 | div.sidePanels div.tabSidePanel ul.mainTabs li.directLogins.selected a:hover { | 1041 | div.sidePanels div.tabSidePanel ul.mainTabs li.directLogins.selected a:hover { |
2052 | color: white; | 1042 | color: white; |
2053 | background: url(../images/old/main/tabs/directLoginBackground.png) -9px -14px; | ||
2054 | } | 1043 | } |
2055 | div.sidePanels div.tabSidePanel ul.otherTabs { | 1044 | div.sidePanels div.tabSidePanel ul.otherTabs { |
2056 | margin: 10px 0px; | 1045 | margin: 10px 0px; |
2057 | } | 1046 | } |
2058 | div.sidePanels div.tabSidePanel ul.otherTabs li { | 1047 | div.sidePanels div.tabSidePanel ul.otherTabs li { |
2059 | margin-top: -4px; | 1048 | margin-top: -4px; |
2060 | } | 1049 | } |
2061 | div.sidePanels div.tabSidePanel ul.otherTabs li div.selectionHighlighter { | 1050 | div.sidePanels div.tabSidePanel ul.otherTabs li div.selectionHighlighter { |
2062 | display: none; | 1051 | display: none; |
2063 | } | 1052 | } |
2064 | div.sidePanels div.tabSidePanel ul.otherTabs li a { | 1053 | div.sidePanels div.tabSidePanel ul.otherTabs li a { |
2065 | display: block; | 1054 | display: block; |
2066 | line-height: 36px; | 1055 | line-height: 36px; |
2067 | height: 43px; | 1056 | height: 43px; |
2068 | padding-left: 40px; | 1057 | padding-left: 40px; |
2069 | color: #ff6621; | 1058 | color: #ff6621; |
2070 | text-decoration: none; | 1059 | text-decoration: none; |
2071 | } | 1060 | } |
2072 | div.sidePanels div.tabSidePanel ul.otherTabs li a:hover { | 1061 | div.sidePanels div.tabSidePanel ul.otherTabs li a:hover { |
2073 | background: url(../images/old/main/tabs/itemsBackground.png) -10px -49px; | 1062 | background: url(./images/old/main/tabs/itemsBackground.png) -10px -49px; |
2074 | } | 1063 | } |
2075 | div.sidePanels div.tabSidePanel ul.otherTabs li.selected a { | 1064 | div.sidePanels div.tabSidePanel ul.otherTabs li.selected a { |
2076 | margin-left: -10px; | 1065 | margin-left: -10px; |
2077 | padding-left: 50px; | 1066 | padding-left: 50px; |
2078 | background: url(../images/old/main/tabs/itemsBackground.png) 1px -96px; | 1067 | background: url(./images/old/main/tabs/itemsBackground.png) 1px -96px; |
2079 | color: white; | 1068 | color: white; |
2080 | } | 1069 | } |
2081 | div.sidePanels div.tabSidePanel ul.otherTabs li.selected div.selectionHighlighter { | 1070 | div.sidePanels div.tabSidePanel ul.otherTabs li.selected div.selectionHighlighter { |
2082 | display: block; | 1071 | display: block; |
2083 | position: absolute; | 1072 | position: absolute; |
2084 | left: 154px; | 1073 | left: 154px; |
2085 | margin-top: -42px; | 1074 | margin-top: -42px; |
2086 | } | 1075 | } |
2087 | div.tagSidePanel { | 1076 | div.tagSidePanel { |
2088 | /* | 1077 | /* |
2089 | margin-right: -8px; | 1078 | margin-right: -8px; |
2090 | 1079 | ||
2091 | div.tagSidePanel div.header { | 1080 | div.tagSidePanel div.header { |
2092 | height: 50px; | 1081 | height: 50px; |
2093 | background-image: url(../images/old/main/tabs/tagsBackground.png); | 1082 | background-image: url(./images/old/main/tabs/tagsBackground.png); |
2094 | } | 1083 | } |
2095 | div.tagSidePanel div.header h1 { | 1084 | div.tagSidePanel div.header h1 { |
2096 | padding-left: 52px; | 1085 | padding-left: 52px; |
2097 | padding-top: 14px; | 1086 | padding-top: 14px; |
2098 | font-size: 14pt; | 1087 | font-size: 14pt; |
2099 | font-weight: normal; | 1088 | font-weight: normal; |
2100 | color: #888888; | 1089 | color: #888888; |
2101 | } | 1090 | } |
2102 | div.tagSidePanel div.body { | 1091 | div.tagSidePanel div.body { |
2103 | background: url(../images/old/main/tabs/tagsBackground.png) -255px; | 1092 | background: url(./images/old/main/tabs/tagsBackground.png) -255px; |
2104 | } | 1093 | } |
2105 | div.tagSidePanel div.footer { | 1094 | div.tagSidePanel div.footer { |
2106 | height: 10px; | 1095 | height: 10px; |
2107 | background: url(../images/old/main/tabs/tagsBackground.png) -510px -40px; | 1096 | background: url(./images/old/main/tabs/tagsBackground.png) -510px -40px; |
2108 | } | 1097 | } |
2109 | div.tagSidePanel ul.tags { | 1098 | div.tagSidePanel ul.tags { |
2110 | margin: 0px; | 1099 | margin: 0px; |
2111 | list-style-type: none; | 1100 | list-style-type: none; |
2112 | padding: 0px; | 1101 | padding: 0px; |
2113 | } | 1102 | } |
2114 | div.tagSidePanel ul.tags li a { | 1103 | div.tagSidePanel ul.tags li a { |
2115 | display: block; | 1104 | display: block; |
2116 | font-size: 9pt; | 1105 | font-size: 9pt; |
2117 | text-decoration: none; | 1106 | text-decoration: none; |
2118 | color: #ff6621; | 1107 | color: #ff6621; |
2119 | padding: 0px 4px 0px 15px; | 1108 | padding: 0px 4px 0px 15px; |
2120 | line-height: 20px; | 1109 | line-height: 20px; |
2121 | } | 1110 | } |
2122 | div.tagSidePanel ul.tags li a:hover { | 1111 | div.tagSidePanel ul.tags li a:hover { |
2123 | background-color: #dddddd; | 1112 | background-color: #dddddd; |
2124 | } | 1113 | } |
2125 | div.tagSidePanel ul.tags li span.tagCardinality { | 1114 | div.tagSidePanel ul.tags li span.tagCardinality { |
2126 | float: right; | 1115 | float: right; |
2127 | font-size: 8pt; | 1116 | font-size: 8pt; |
2128 | color: #999999; | 1117 | color: #999999; |
2129 | margin-right: 15px; | 1118 | margin-right: 15px; |
2130 | margin-top: -17px; | 1119 | margin-top: -17px; |
2131 | } | 1120 | } |
2132 | div.tagSidePanel ul.tags li.selected a { | 1121 | div.tagSidePanel ul.tags li.selected a { |
2133 | background-color: #d4d5cf; | 1122 | background-color: #d4d5cf; |
2134 | } | 1123 | } |
2135 | div.tagSidePanel ul.tags li.selected a:hover { | 1124 | div.tagSidePanel ul.tags li.selected a:hover { |
2136 | background-color: #d4d5cf; | 1125 | background-color: #d4d5cf; |
2137 | } | 1126 | } |
2138 | div.tagSidePanel ul.tags li.selected a { | 1127 | div.tagSidePanel ul.tags li.selected a { |
2139 | font-weight: bold; | 1128 | font-weight: bold; |
2140 | } | 1129 | } |
2141 | */ | 1130 | */ |
2142 | } | 1131 | } |
2143 | div.groupSidePanel { | 1132 | div.groupSidePanel { |
2144 | /* | 1133 | /* |
2145 | margin-right: -10px; | 1134 | margin-right: -10px; |
2146 | 1135 | ||
2147 | div.groupSidePanel div.header { | 1136 | div.groupSidePanel div.header { |
2148 | height: 50px; | 1137 | height: 50px; |
2149 | background-image: url(../images/old/main/tabs/groupsBackground.png); | 1138 | background-image: url(./images/old/main/tabs/groupsBackground.png); |
2150 | } | 1139 | } |
2151 | div.groupSidePanel div.header h1 { | 1140 | div.groupSidePanel div.header h1 { |
2152 | padding-left: 52px; | 1141 | padding-left: 52px; |
2153 | padding-top: 14px; | 1142 | padding-top: 14px; |
2154 | font-size: 14pt; | 1143 | font-size: 14pt; |
2155 | font-weight: normal; | 1144 | font-weight: normal; |
2156 | color: white; | 1145 | color: white; |
2157 | } | 1146 | } |
2158 | div.groupSidePanel div.header a { | 1147 | div.groupSidePanel div.header a { |
2159 | float: right; | 1148 | float: right; |
2160 | margin-top: -30px; | 1149 | margin-top: -30px; |
2161 | margin-right: 20px; | 1150 | margin-right: 20px; |
2162 | text-decoration: none; | 1151 | text-decoration: none; |
2163 | color: #666666; | 1152 | color: #666666; |
2164 | font-size: 9pt; | 1153 | font-size: 9pt; |
2165 | line-height: 18px; | 1154 | line-height: 18px; |
2166 | } | 1155 | } |
2167 | div.groupSidePanel div.header a:hover { | 1156 | div.groupSidePanel div.header a:hover { |
2168 | color: #444444; | 1157 | color: #444444; |
2169 | } | 1158 | } |
2170 | div.groupSidePanel div.body { | 1159 | div.groupSidePanel div.body { |
2171 | background: url(../images/old/main/tabs/groupsBackground.png) -255px; | 1160 | background: url(./images/old/main/tabs/groupsBackground.png) -255px; |
2172 | } | 1161 | } |
2173 | div.groupSidePanel div.footer { | 1162 | div.groupSidePanel div.footer { |
2174 | height: 10px; | 1163 | height: 10px; |
2175 | background: url(../images/old/main/tabs/groupsBackground.png) -510px -39px; | 1164 | background: url(./images/old/main/tabs/groupsBackground.png) -510px -39px; |
2176 | } | 1165 | } |
2177 | div.groupSidePanel ul.groups { | 1166 | div.groupSidePanel ul.groups { |
2178 | margin: 0px; | 1167 | margin: 0px; |
2179 | list-style-type: none; | 1168 | list-style-type: none; |
2180 | padding: 0px; | 1169 | padding: 0px; |
2181 | } | 1170 | } |
2182 | div.groupSidePanel ul.groups li a { | 1171 | div.groupSidePanel ul.groups li a { |
2183 | display: block; | 1172 | display: block; |
2184 | font-size: 9pt; | 1173 | font-size: 9pt; |
2185 | text-decoration: none; | 1174 | text-decoration: none; |
2186 | color: white; | 1175 | color: white; |
2187 | padding: 0px 4px 0px 15px; | 1176 | padding: 0px 4px 0px 15px; |
2188 | line-height: 20px; | 1177 | line-height: 20px; |
2189 | } | 1178 | } |
2190 | div.groupSidePanel ul.groups li a:hover { | 1179 | div.groupSidePanel ul.groups li a:hover { |
2191 | background-color: #aaaaaa; | 1180 | background-color: #aaaaaa; |
2192 | } | 1181 | } |
2193 | div.groupSidePanel ul.groups li span.groupCardinality { | 1182 | div.groupSidePanel ul.groups li span.groupCardinality { |
2194 | float: right; | 1183 | float: right; |
2195 | font-size: 8pt; | 1184 | font-size: 8pt; |
2196 | color: #dddddd; | 1185 | color: #dddddd; |
2197 | margin-right: 15px; | 1186 | margin-right: 15px; |
2198 | margin-top: -17px; | 1187 | margin-top: -17px; |
2199 | } | 1188 | } |
2200 | div.groupSidePanel ul.groups li.selected a { | 1189 | div.groupSidePanel ul.groups li.selected a { |
2201 | background-color: #bbbbbb; | 1190 | background-color: #bbbbbb; |
2202 | } | 1191 | } |
2203 | div.groupSidePanel ul.groups li.selected a:hover { | 1192 | div.groupSidePanel ul.groups li.selected a:hover { |
2204 | background-color: #bbbbbb; | 1193 | background-color: #bbbbbb; |
2205 | } | 1194 | } |
2206 | div.groupSidePanel ul.groups li.selected a { | 1195 | div.groupSidePanel ul.groups li.selected a { |
2207 | font-weight: bold; | 1196 | font-weight: bold; |
2208 | } | 1197 | } |
2209 | */ | 1198 | */ |
2210 | } | 1199 | } |
1200 | div.subPanelTabs ul { | ||
1201 | margin: 0px; | ||
1202 | margin-right: 7px; | ||
1203 | padding: 0px; | ||
1204 | } | ||
1205 | div.subPanelTabs ul li { | ||
1206 | display: inline-block; | ||
1207 | vertical-align: middle; | ||
1208 | height: 50px; | ||
1209 | border-right: 1px solid #eef0e3; | ||
1210 | border-bottom: 1px solid #d5d5bc; | ||
1211 | } | ||
1212 | div.subPanelTabs ul li.first { | ||
1213 | -webkit-border-top-left-radius: 20px; | ||
1214 | -moz-border-radius-topleft: 20px; | ||
1215 | border-top-left-radius: 20px; | ||
1216 | } | ||
1217 | div.subPanelTabs ul li.selected { | ||
1218 | background-color: #eef0e3; | ||
1219 | border-bottom: 1px solid #eef0e3; | ||
1220 | border-right: 1px solid #d5d5bc; | ||
1221 | } | ||
1222 | div.subPanelTabs ul li.selected:hover { | ||
1223 | border-right: 1px solid #d5d5bc; | ||
1224 | } | ||
1225 | div.subPanelTabs ul li.selected a { | ||
1226 | color: #444440; | ||
1227 | } | ||
1228 | div.subPanelTabs ul li:hover { | ||
1229 | border-right: 1px solid #d5d5bc; | ||
1230 | background-color: #eef0e3; | ||
1231 | } | ||
1232 | div.subPanelTabs ul li a { | ||
1233 | color: #787872; | ||
1234 | text-decoration: none; | ||
1235 | display: block; | ||
1236 | text-align: center; | ||
1237 | padding-top: 15px; | ||
1238 | padding-left: 20px; | ||
1239 | padding-right: 20px; | ||
1240 | font-size: 13pt; | ||
1241 | } | ||
1242 | div.subPanelContent { | ||
1243 | padding-top: 20px; | ||
1244 | padding-left: 30px; | ||
1245 | padding-right: 30px; | ||
1246 | min-height: 280px; | ||
1247 | color: #787872; | ||
1248 | margin: 0px 6px 0 9px; | ||
1249 | } | ||
1250 | div.subPanelContent h3 { | ||
1251 | margin: 0px; | ||
1252 | border: 0px; | ||
1253 | padding: 0px; | ||
1254 | } | ||
1255 | div.subPanelContent ul { | ||
1256 | margin: 0px; | ||
1257 | padding: 0px; | ||
1258 | list-style-type: none; | ||
1259 | } | ||
1260 | div.subPanelContent ul li { | ||
1261 | display: none; | ||
1262 | } | ||
1263 | div.subPanelContent ul li.selected { | ||
1264 | display: block; | ||
1265 | } | ||
1266 | .downloadOfflineCopy { | ||
1267 | display: inline-block; | ||
1268 | height: 20px; | ||
1269 | cursor: pointer; | ||
1270 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#59bc4c), to(#448833)); | ||
1271 | background: -moz-linear-gradient(0% 100% 90deg, #448833, #59bc4c); | ||
1272 | border-radius: 5; | ||
1273 | -moz-border-radius: 5; | ||
1274 | -webkit-border-radius: 5; | ||
1275 | border: 1px solid #51a23d; | ||
1276 | padding-top: 4px; | ||
1277 | padding-left: 15px; | ||
1278 | padding-right: 15px; | ||
1279 | padding-bottom: 2px; | ||
1280 | color: white; | ||
1281 | font-weight: lighter; | ||
1282 | text-shadow: -1px -1px 1px #448833, 1px 1px 1px #59bc4c; | ||
1283 | text-decoration: none; | ||
1284 | } | ||
1285 | .downloadOfflineCopy:hover { | ||
1286 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#49a23d), to(#448833)); | ||
1287 | background: -moz-linear-gradient(0% 100% 90deg, #448833, #49a23d); | ||
1288 | } | ||
1289 | div.SimpleMessagePanel { | ||
1290 | position: relative; | ||
1291 | left: -225px; | ||
1292 | top: -70px; | ||
1293 | width: 450px; | ||
1294 | height: 140px; | ||
1295 | } | ||
1296 | div.SimpleMessagePanel div.body { | ||
1297 | padding: 20px; | ||
1298 | padding-bottom: 15px; | ||
1299 | background-color: #f1f1ef; | ||
1300 | -webkit-box-shadow: 2px 2px 9px #333333; | ||
1301 | -moz-box-shadow: 2px 2px 9px #333333; | ||
1302 | box-shadow: 2px 2px 9px #333333; | ||
1303 | border-radius: 10; | ||
1304 | -moz-border-radius: 10; | ||
1305 | -webkit-border-radius: 10; | ||
1306 | } | ||
1307 | div.SimpleMessagePanel div.body h3 { | ||
1308 | font-size: 14pt; | ||
1309 | font-weight: normal; | ||
1310 | margin: 0px; | ||
1311 | padding-top: 4px; | ||
1312 | color: #787872; | ||
1313 | } | ||
1314 | div.SimpleMessagePanel div.body div.img { | ||
1315 | width: 50px; | ||
1316 | height: 50px; | ||
1317 | float: left; | ||
1318 | margin-right: 15px; | ||
1319 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9b5a), to(#ff6622)); | ||
1320 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9b5a); | ||
1321 | border-radius: 25px; | ||
1322 | -moz-border-radius: 25px; | ||
1323 | -webkit-border-radius: 25px; | ||
1324 | } | ||
1325 | div.SimpleMessagePanel div.body div.img canvas { | ||
1326 | width: 50px; | ||
1327 | height: 50px; | ||
1328 | } | ||
1329 | div.SimpleMessagePanel div.body p { | ||
1330 | margin: 0; | ||
1331 | font-size: 10pt; | ||
1332 | font-weight: normal; | ||
1333 | color: #787872; | ||
1334 | padding-top: 10px; | ||
1335 | padding-bottom: 5px; | ||
1336 | line-height: 1.3; | ||
1337 | } | ||
1338 | div.SimpleMessagePanel div.body div.buttonArea { | ||
1339 | height: 40px; | ||
1340 | clear: both; | ||
1341 | } | ||
1342 | div.SimpleMessagePanel div.body div.buttonArea > div { | ||
1343 | float: right; | ||
1344 | margin-left: 15px; | ||
1345 | margin-top: 10px; | ||
1346 | } | ||
1347 | div.SimpleMessagePanel div.passphrase { | ||
1348 | padding-left: 65px; | ||
1349 | } | ||
1350 | div.SimpleMessagePanel div.passphrase input { | ||
1351 | width: 250px; | ||
1352 | font-size: 14pt; | ||
1353 | border: 1px solid #bb4924; | ||
1354 | color: #333366; | ||
1355 | background-color: white; | ||
1356 | padding: 2px 5px; | ||
1357 | height: 28px; | ||
1358 | } | ||
1359 | div.SimpleMessagePanel div.progressBarWrapper { | ||
1360 | margin-left: 80px; | ||
1361 | } | ||
1362 | /* @end */ | ||
1363 | /* @group Javascript Alert */ | ||
1364 | div#javaScriptAlert div.mask { | ||
1365 | position: fixed; | ||
1366 | top: 0px; | ||
1367 | left: 0px; | ||
1368 | right: 0px; | ||
1369 | bottom: 0px; | ||
1370 | background-color: black; | ||
1371 | z-index: 1001; | ||
1372 | -moz-opacity: 0.7; | ||
1373 | opacity: .70; | ||
1374 | filter: alpha(opacity=70); | ||
1375 | } | ||
1376 | div#javaScriptAlert div.header { | ||
1377 | height: 34px; | ||
1378 | width: 468; | ||
1379 | background-image: url(./images/old/alert/header.png); | ||
1380 | } | ||
1381 | div#javaScriptAlert div.body { | ||
1382 | background-image: url(./images/old/alert/body.png); | ||
1383 | padding: 0px 20px 10px 20px; | ||
1384 | } | ||
1385 | /* | ||
1386 | div#javaScriptAlert div.body div.alert { | ||
1387 | padding-left: 100px; | ||
1388 | background: url(./images/old/alert/alert.png) no-repeat; | ||
1389 | } | ||
1390 | */ | ||
1391 | /*div#javaScriptAlert div.body img.alert {*/ | ||
1392 | div#javaScriptAlert div.body div.alertLogo { | ||
1393 | float: left; | ||
1394 | background-image: url(./images/old/alert/alert.png); | ||
1395 | width: 88px; | ||
1396 | height: 88px; | ||
1397 | } | ||
1398 | div#javaScriptAlert div.body div.alert { | ||
1399 | padding-left: 100px; | ||
1400 | } | ||
1401 | div#javaScriptAlert div.footer { | ||
1402 | height: 34px; | ||
1403 | width: 468; | ||
1404 | background-image: url(./images/old/alert/footer.png); | ||
1405 | } | ||
1406 | div#javaScriptAlert div.message { | ||
1407 | position: relative; | ||
1408 | top: -150px; | ||
1409 | z-index: 1002; | ||
1410 | /* | ||
1411 | left: 100px; | ||
1412 | right: 100px; | ||
1413 | */ | ||
1414 | |||
1415 | margin-left: auto; | ||
1416 | margin-right: auto; | ||
1417 | max-width: 468px; | ||
1418 | } | ||
1419 | div#javaScriptAlert div.message h1 { | ||
1420 | font-size: 16pt; | ||
1421 | margin: 0px; | ||
1422 | color: #ff5930; | ||
1423 | } | ||
1424 | div#javaScriptAlert div.message p { | ||
1425 | margin-top: 0px; | ||
1426 | color: #999999; | ||
1427 | } | ||
1428 | div#javaScriptAlert div.message h3 { | ||
1429 | font-size: 12pt; | ||
1430 | margin-bottom: 0px; | ||
1431 | color: #ff5930; | ||
1432 | } | ||
1433 | div#javaScriptAlert div.message h5 { | ||
1434 | margin: 0px; | ||
1435 | color: #999999; | ||
1436 | } | ||
1437 | /* @end */ | ||
1438 | /* @group Components | ||
1439 | */ | ||
1440 | /* @group LoginProgress */ | ||
1441 | div.LoginProgress { | ||
1442 | position: relative; | ||
1443 | left: -190px; | ||
1444 | top: -100px; | ||
1445 | width: 380px; | ||
1446 | height: 200px; | ||
1447 | /* background: url(./images/old/loginProgress/background.png);*/ | ||
1448 | |||
1449 | background-color: #d7d7c0; | ||
1450 | -webkit-border-radius: 20px; | ||
1451 | -moz-border-radius: 20px; | ||
1452 | border-radius: 20px; | ||
1453 | -webkit-box-shadow: 5px 5px 7px rgba(0, 0, 0, 0.6); | ||
1454 | -moz-box-shadow: 5px 5px 7px rgba(0, 0, 0, 0.6); | ||
1455 | box-shadow: 5px 5px 7px rgba(0, 0, 0, 0.6); | ||
1456 | } | ||
1457 | div.LoginProgress div.header { | ||
1458 | height: 40px; | ||
1459 | } | ||
1460 | div.LoginProgress div.header h3 { | ||
1461 | font-size: 12pt; | ||
1462 | font-weight: normal; | ||
1463 | margin: 0px; | ||
1464 | color: #777777; | ||
1465 | padding-top: 13px; | ||
1466 | padding-left: 18px; | ||
1467 | } | ||
1468 | div.LoginProgress div.body { | ||
1469 | height: 120px; | ||
1470 | overflow: auto; | ||
1471 | padding-left: 20px; | ||
1472 | padding-right: 20px; | ||
1473 | background-color: #f1f1e9; | ||
1474 | /* | ||
1475 | margin-left: 19px; | ||
1476 | margin-right: 18px; | ||
1477 | */ | ||
1478 | |||
1479 | } | ||
1480 | div.LoginProgress div.body div.img { | ||
1481 | margin: 10px; | ||
1482 | width: 50px; | ||
1483 | height: 50px; | ||
1484 | float: left; | ||
1485 | } | ||
1486 | div.LoginProgress div.body div.img.ALERT { | ||
1487 | /* background-image: url(./images/old/simpleMessageBox/Alert.png);*/ | ||
1488 | |||
1489 | background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9955), to(#ff6622), color-stop(1, #333333)); | ||
1490 | background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9955); | ||
1491 | -webkit-border-radius: 25px; | ||
1492 | -moz-border-radius: 25px; | ||
1493 | border-radius: 25px; | ||
1494 | } | ||
1495 | div.LoginProgress div.body div.img.ALERT canvas { | ||
1496 | width: 50px; | ||
1497 | height: 50px; | ||
1498 | /*background-image: url(./images/old/simpleMessageBox/excalmationPoint.png); */ | ||
1499 | |||
1500 | } | ||
1501 | div.LoginProgress div.body div.loadingBar { | ||
1502 | position: relative; | ||
1503 | top: 51px; | ||
1504 | left: 60px; | ||
1505 | } | ||
1506 | div.LoginProgress div.body div.errorBox p { | ||
1507 | color: #787872; | ||
1508 | padding-top: 20px; | ||
1509 | padding-left: 80px; | ||
1510 | } | ||
1511 | div.LoginProgress div.footer { | ||
1512 | margin-left: 19px; | ||
1513 | margin-right: 18px; | ||
1514 | } | ||
1515 | /* | ||
1516 | div.LoginProgress div.footer a { | ||
1517 | text-decoration: none; | ||
1518 | text-align: center; | ||
1519 | color: #787872; | ||
1520 | display: block; | ||
1521 | font-weight: bold; | ||
1522 | font-size: 11pt; | ||
1523 | width: 100px; | ||
1524 | margin-top: 11px; | ||
1525 | margin-left: auto; | ||
1526 | margin-right: auto; | ||
1527 | } | ||
1528 | */ | ||
1529 | div.LoginProgress div.buttonArea { | ||
1530 | padding-top: 6px; | ||
1531 | text-align: center; | ||
1532 | } | ||
1533 | div.LoginProgress div.button { | ||
1534 | display: inline-block; | ||
1535 | } | ||
1536 | div.LoginProgress div.footer a:hover { | ||
1537 | color: #515247; | ||
1538 | } | ||
1539 | /* @end */ | ||
1540 | /* @group SimpleMessagePanel */ | ||
1541 | /* -> SimpleMessagePanel.less | ||
1542 | div.SimpleMessagePanel { | ||
1543 | position: relative; | ||
1544 | left: -225px; | ||
1545 | top: -70px; | ||
1546 | width: 450px; | ||
1547 | height: 140px; | ||
1548 | //background: url(./images/old/loginProgress/background.png); | ||
1549 | background-color: #f1f1ef; | ||
1550 | .border-radius(10); | ||
1551 | } | ||
1552 | //div.SimpleMessagePanel div.header { | ||
1553 | // height: 17px; | ||
1554 | // background: url(./images/old/simpleMessageBox/background_header.png) no-repeat; | ||
1555 | } | ||
1556 | div.SimpleMessagePanel div.body { | ||
1557 | / * | ||
1558 | height: 120px; | ||
1559 | overflow: auto; | ||
1560 | margin-left: 19px; | ||
1561 | margin-right: 18px; | ||
1562 | * / | ||
1563 | |||
1564 | // background: url(./images/old/simpleMessageBox/background_body.png) repeat-y; | ||
1565 | // padding-left: 25px; | ||
1566 | // padding-right: 25px; | ||
1567 | // padding-top: 10px; | ||
1568 | padding: 20px; | ||
1569 | .box-shadow (2px, 2px, 9px, @Global_shadow-color); | ||
1570 | } | ||
1571 | div.SimpleMessagePanel div.body h3 { | ||
1572 | font-size: 14pt; | ||
1573 | font-weight: normal; | ||
1574 | margin: 0px; | ||
1575 | padding-top: 4px; | ||
1576 | color: #787872; | ||
1577 | } | ||
1578 | div.SimpleMessagePanel div.body div.img { | ||
1579 | width: 60px; | ||
1580 | height: 60px; | ||
1581 | float: left; | ||
1582 | margin-right: 10px; | ||
1583 | |||
1584 | .graduated-background (#ff6622, #ffad79); | ||
1585 | .border-radius(30); | ||
1586 | } | ||
1587 | div.SimpleMessagePanel div.body div.img canvas { | ||
1588 | width: 60px; | ||
1589 | height: 60px; | ||
1590 | } | ||
1591 | div.SimpleMessagePanel div.body p { | ||
1592 | margin: 0; | ||
1593 | font-size: 10pt; | ||
1594 | font-weight: normal; | ||
1595 | color: #787872; | ||
1596 | padding-top: 10px; | ||
1597 | padding-bottom: 5px; | ||
1598 | line-height: 1.3; | ||
1599 | } | ||
1600 | div.SimpleMessagePanel div.body div.img.ALERT { | ||
1601 | // background: url(./images/old/simpleMessageBox/Alert.png) no-repeat; | ||
1602 | } | ||
1603 | div.SimpleMessagePanel div.body div.img.INFO { | ||
1604 | // background: url(./images/old/simpleMessageBox/Info.png) no-repeat; | ||
1605 | } | ||
1606 | div.SimpleMessagePanel div.body div.buttonArea { | ||
1607 | height: 40px; | ||
1608 | clear: both; | ||
1609 | } | ||
1610 | div.SimpleMessagePanel div.body div.buttonArea > div { | ||
1611 | float: right; | ||
1612 | margin-left: 15px; | ||
1613 | margin-top: 10px; | ||
1614 | } | ||
1615 | div.SimpleMessagePanel div.footer { | ||
1616 | height: 25px; | ||
1617 | // background: url(./images/old/simpleMessageBox/background_footer.png) no-repeat; | ||
1618 | } | ||
1619 | div.SimpleMessagePanel div.passphrase { | ||
1620 | padding-left: 65px; | ||
1621 | } | ||
1622 | div.SimpleMessagePanel div.passphrase input { | ||
1623 | width: 250px; | ||
1624 | font-size: 14pt; | ||
1625 | border: 1px solid #bb4924; | ||
1626 | color: #333366; | ||
1627 | background-color: white; | ||
1628 | padding: 2px 5px; | ||
1629 | height: 28px; | ||
1630 | } | ||
1631 | div.SimpleMessagePanel div.progressBarWrapper { | ||
1632 | margin-left: 80px; | ||
1633 | } | ||
1634 | */ | ||
1635 | /* @end */ | ||
1636 | /* @group Button */ | ||
1637 | /* -> Button.less | ||
1638 | div.button_wrapper { | ||
1639 | height: 32px; | ||
1640 | background: url(./images/old/button/default_left.png) no-repeat; | ||
1641 | cursor: pointer; | ||
1642 | } | ||
1643 | div.button_wrapper.hover { | ||
1644 | background: url(./images/old/button/hover_left.png) no-repeat; | ||
1645 | } | ||
1646 | div.button_wrapper.clicked { | ||
1647 | background: url(./images/old/button/clicked_left.png) no-repeat; | ||
1648 | } | ||
1649 | div.button_bodyWrapper { | ||
1650 | height: 32px; | ||
1651 | margin-left: 6px; | ||
1652 | padding-right: 6px; | ||
1653 | background: url(./images/old/button/default_main.png) repeat-x right 0; | ||
1654 | } | ||
1655 | div.button_wrapper.hover div.button_bodyWrapper { | ||
1656 | background: url(./images/old/button/hover_main.png) repeat-x right 0; | ||
1657 | } | ||
1658 | div.button_wrapper.clicked div.button_bodyWrapper { | ||
1659 | background: url(./images/old/button/clicked_main.png) repeat-x right 0; | ||
1660 | } | ||
1661 | div.button_body { | ||
1662 | text-align: center; | ||
1663 | min-width: 60px; | ||
1664 | padding: 0px 7px; | ||
1665 | padding-top: 8px; | ||
1666 | } | ||
1667 | div.button_body span { | ||
1668 | font-size: 11pt; | ||
1669 | color: white; | ||
1670 | } | ||
1671 | div.button_wrapper.default div.button_body span { | ||
1672 | font-weight: bold; | ||
1673 | } | ||
1674 | / * | ||
1675 | div.button_footer { | ||
1676 | margin: 0px; | ||
1677 | height: 31px; | ||
1678 | width: 6px; | ||
1679 | background: green url(./images/old/button/default_right.png) no-repeat; | ||
1680 | } | ||
1681 | * / | ||
1682 | */ | ||
1683 | /* @end */ | ||
1684 | /* @group Password enthropy */ | ||
1685 | input.entropyLevelIndicator { | ||
1686 | background: url(./images/old/passwordField/background.png) no-repeat 0 26px; | ||
1687 | } | ||
1688 | div.passwordEntropyWrapper { | ||
1689 | padding: 0px; | ||
1690 | border: 1px solid #bb4924; | ||
1691 | border-top: 0px; | ||
1692 | margin-bottom: 4px; | ||
1693 | background-color: white; | ||
1694 | margin-right: 3px; | ||
1695 | margin-top: -2; | ||
1696 | } | ||
1697 | div.passwordEntropy { | ||
1698 | height: 4px; | ||
1699 | font-size: 1pt; | ||
1700 | background: url(./images/old/entropyBackground.gif) repeat-x 0 0; | ||
1701 | line-height: 3px; | ||
1702 | } | ||
1703 | div.messageBox { | ||
1704 | position: absolute; | ||
1705 | width: 409px; | ||
1706 | height: 29px; | ||
1707 | top: 23px; | ||
1708 | left: 204px; | ||
1709 | background: url(./images/old/main/messageBoxBackground.png); | ||
1710 | } | ||
1711 | div.messageBox h3 { | ||
1712 | display: inline-block; | ||
1713 | color: #342f6b; | ||
1714 | font-weight: bold; | ||
1715 | margin: 7px 2px 0px 12px; | ||
1716 | font-size: 10pt; | ||
1717 | } | ||
1718 | body.ext-gecko div.messageBox h3 { | ||
1719 | display: -moz-inline-box; | ||
1720 | } | ||
1721 | div.messageBox h1 { | ||
1722 | color: #342f6b; | ||
1723 | display: inline; | ||
1724 | font-weight: normal; | ||
1725 | margin: 0px 1px; | ||
1726 | font-size: 9pt; | ||
1727 | } | ||
1728 | div.messageBox a { | ||
1729 | display: block; | ||
1730 | width: 20px; | ||
1731 | height: 20px; | ||
1732 | float: right; | ||
1733 | position: absolute; | ||
1734 | right: 5px; | ||
1735 | top: 4px; | ||
1736 | background-image: url(./images/old/main/messageBoxCloseButton.png); | ||
1737 | } | ||
1738 | div.messageBox a:hover { | ||
1739 | background-image: url(./images/old/main/messageBoxCloseButtonActive.png); | ||
1740 | } | ||
1741 | /* @end */ | ||
1742 | /* @group Side panels */ | ||
1743 | /* @end */ | ||
1744 | /* @end */ | ||
1745 | /* @group MainPanels */ | ||
1746 | div.mainPanels { | ||
1747 | float: left; | ||
1748 | width: 833px; | ||
1749 | margin-top: -38px; | ||
1750 | /* | ||
1751 | position: relative; | ||
1752 | width: 100%; | ||
1753 | min-height: 600px; | ||
1754 | top: -40px; | ||
1755 | left: 250px; | ||
1756 | */ | ||
1757 | |||
1758 | } | ||
1759 | div.mainFooter { | ||
1760 | clear: both; | ||
1761 | } | ||
1762 | /* @end */ | ||
1763 | /* @group Grids */ | ||
1764 | /* @group grid Component */ | ||
1765 | /* @group delete */ | ||
1766 | /*div.body div.rows table.rows tbody tr td.delete */ | ||
1767 | div.delete, | ||
1768 | div.new { | ||
1769 | padding-left: 5px; | ||
1770 | height: 19px; | ||
1771 | } | ||
1772 | div.new span, | ||
1773 | div.delete span { | ||
1774 | margin: 0px; | ||
1775 | padding: 0px; | ||
1776 | border: 0px; | ||
1777 | display: inline-block; | ||
1778 | height: 19px; | ||
1779 | padding-right: 6px; | ||
1780 | } | ||
1781 | div.new span a, | ||
1782 | div.delete span a { | ||
1783 | white-space: nowrap; | ||
1784 | } | ||
1785 | div.delete:hover { | ||
1786 | background: url(./images/old/delete_background_left.png) no-repeat 0; | ||
1787 | } | ||
1788 | div.delete:hover span { | ||
1789 | background: url(./images/old/delete_background.png) no-repeat right 0; | ||
1790 | } | ||
1791 | div.new:hover { | ||
1792 | background: url(./images/old/new_background_left.png) no-repeat 0; | ||
1793 | } | ||
1794 | div.new:hover span { | ||
1795 | background: url(./images/old/new_background.png) no-repeat right 0; | ||
1796 | } | ||
1797 | /* | ||
1798 | tr.selected div.delete { | ||
1799 | background: url(./images/old/delete_background_left.png) no-repeat 0; | ||
1800 | } | ||
1801 | tr.selected div.delete span { | ||
1802 | background: url(./images/old/delete_background.png) no-repeat right 0; | ||
1803 | } | ||
1804 | */ | ||
1805 | div.body div.rows table.rows tbody tr td.delete div.delete span a { | ||
1806 | visibility: hidden; | ||
1807 | font-size: 8pt; | ||
1808 | vertical-align: -13px; | ||
1809 | color: black; | ||
1810 | } | ||
1811 | div.body div.rows table.rows tbody tr.selected td.delete div.delete span a { | ||
1812 | visibility: visible; | ||
1813 | } | ||
1814 | div.body div.rows table.rows tbody tr:hover td.delete div.delete span a { | ||
1815 | visibility: visible; | ||
1816 | } | ||
1817 | div.body div.rows table.rows tbody tr:hover td.delete div.delete:hover span a { | ||
1818 | color: white; | ||
1819 | } | ||
1820 | /* | ||
1821 | div.body div.rows table.rows tbody tr.selected td.delete div.delete span a { | ||
1822 | color: white; | ||
1823 | } | ||
1824 | */ | ||
1825 | /* @end */ | ||
1826 | /* @group header */ | ||
1827 | div.gridComponent table.rows thead tr th { | ||
1828 | text-align: left; | ||
1829 | height: 30px; | ||
1830 | vertical-align: bottom; | ||
1831 | } | ||
1832 | div.gridComponent table.rows thead tr th.sortable span { | ||
1833 | cursor: pointer; | ||
1834 | } | ||
1835 | div.gridComponent table.rows thead tr th.sortable span a { | ||
1836 | margin-left: 5px; | ||
1837 | padding-left: 10px; | ||
1838 | } | ||
1839 | div.gridComponent table.rows thead tr th.directLoginTH { | ||
1840 | width: 420px; | ||
1841 | } | ||
1842 | div.gridComponent table.rows thead tr th.latestUpdateTH { | ||
1843 | width: 100px; | ||
1844 | } | ||
1845 | div.gridComponent table.rows thead tr th.commandsTH { | ||
1846 | width: 150px; | ||
1847 | } | ||
1848 | div.gridComponent table.rows thead a { | ||
1849 | text-decoration: none; | ||
1850 | } | ||
1851 | div.gridComponent table.rows thead span { | ||
1852 | font-weight: normal; | ||
1853 | font-size: 9pt; | ||
1854 | line-height: 20px; | ||
1855 | } | ||
1856 | div.gridComponent div.header div.headerSlot { | ||
1857 | float: right; | ||
1858 | } | ||
1859 | /* @end */ | ||
1860 | div.mainPanels div.gridComponent div.body table.rows td.favicon { | ||
1861 | padding-left: 25px; | ||
1862 | } | ||
1863 | div.mainPanels div.gridComponent div.body table.rows td.favicon img { | ||
1864 | width: 16px; | ||
1865 | height: 16px; | ||
1866 | border: 0px; | ||
1867 | } | ||
1868 | /* @end */ | ||
1869 | /* @group Card Grid */ | ||
1870 | /* @group DirectLogin links */ | ||
1871 | div.gridComponent th.directLoginTH span { | ||
1872 | margin-left: 7px; | ||
1873 | } | ||
1874 | td.card_directLogins div { | ||
1875 | display: inline-table; | ||
1876 | } | ||
1877 | td.card_directLogins span { | ||
1878 | display: inline-block; | ||
1879 | } | ||
1880 | /* | ||
1881 | td.card_directLogins a { | ||
1882 | display: inline-table; | ||
1883 | height: 19px; | ||
1884 | |||
1885 | padding-right: 7px; | ||
1886 | } | ||
1887 | |||
1888 | td.card_directLogins a:hover { | ||
1889 | background: url(./images/old/directLink_background.png) right 0; | ||
1890 | } | ||
1891 | */ | ||
1892 | div.card_directLogin { | ||
1893 | display: inline-block; | ||
1894 | height: 19px; | ||
1895 | padding-left: 7px; | ||
1896 | } | ||
1897 | div.card_directLogin_ellipses span { | ||
1898 | padding-bottom: 2px; | ||
1899 | } | ||
1900 | div.card_directLogin div.card_directLogin_body { | ||
1901 | display: inline-block; | ||
1902 | height: 19px; | ||
1903 | padding-right: 8px; | ||
1904 | background-position: left; | ||
1905 | } | ||
1906 | div.card_directLogin div.card_directLogin_body a { | ||
1907 | vertical-align: -14px; | ||
1908 | } | ||
1909 | /*div.card_directLogin:hover {*/ | ||
1910 | div.card_directLogin:hover { | ||
1911 | background: url(./images/old/directLink_background_left.png) no-repeat 0 0; | ||
1912 | } | ||
1913 | /*div.card_directLogin:hover div {*/ | ||
1914 | div.card_directLogin:hover div.card_directLogin_body { | ||
1915 | background: url(./images/old/directLink_background.png) right 0; | ||
1916 | } | ||
1917 | /* @group DirectLogin Popup */ | ||
1918 | div.DirectLoginListPopup { | ||
1919 | position: absolute; | ||
1920 | width: 184px; | ||
1921 | } | ||
1922 | div.DirectLoginListPopup div.DirectLoginListPopup_body { | ||
1923 | background-image: url(./images/old/directLogins_background.png); | ||
1924 | padding-top: 8px; | ||
1925 | } | ||
1926 | div.DirectLoginListPopup div.DirectLoginListPopup_footer { | ||
1927 | height: 8px; | ||
1928 | background-image: url(./images/old/directLogins_background_bottom.png); | ||
1929 | } | ||
1930 | div.DirectLoginListPopup div.DirectLoginListPopup_body ul { | ||
1931 | margin: 0px; | ||
1932 | padding-left: 13px; | ||
1933 | list-style: none; | ||
1934 | } | ||
1935 | div.DirectLoginListPopup div.DirectLoginListPopup_body ul li { | ||
1936 | padding-top: 4px; | ||
1937 | height: 20px; | ||
1938 | padding-right: 10px; | ||
1939 | white-space: nowrap; | ||
1940 | } | ||
1941 | div.DirectLoginListPopup div.DirectLoginListPopup_body ul li div { | ||
1942 | padding-right: 10px; | ||
1943 | overflow: hidden; | ||
1944 | } | ||
1945 | div.DirectLoginListPopup div.DirectLoginListPopup_body ul li img.favicon { | ||
1946 | padding-left: 9px; | ||
1947 | padding-right: 5px; | ||
1948 | } | ||
1949 | div.DirectLoginListPopup div.DirectLoginListPopup_body ul li a { | ||
1950 | text-decoration: none; | ||
1951 | color: white; | ||
1952 | font-weight: normal; | ||
1953 | font-size: 10pt; | ||
1954 | vertical-align: 3px; | ||
1955 | white-space: nowrap; | ||
1956 | padding-right: 8px; | ||
1957 | } | ||
1958 | div.DirectLoginListPopup div.DirectLoginListPopup_body ul li:hover { | ||
1959 | /* background-color: #a5a696;*/ | ||
1960 | |||
1961 | /* background-color: #7b7d70;*/ | ||
1962 | |||
1963 | background-color: rgba(123, 125, 112, 0.5); | ||
1964 | } | ||
1965 | div.DirectLoginListPopup div.DirectLoginListPopup_body ul li:hover a { | ||
1966 | background: url(./images/old/directLink_no_background.png) right; | ||
1967 | } | ||
1968 | /* @end */ | ||
1969 | /* @end */ | ||
1970 | div.mainPanels div.gridComponent div.header { | ||
1971 | /* | ||
1972 | height: 90px; | ||
1973 | background: url(./images/old/main/blocks/cardGridBackground.png) no-repeat; | ||
1974 | */ | ||
1975 | |||
1976 | background: url(./images/old/main/blocks/cardGridBackground.png) no-repeat; | ||
1977 | padding-left: 40px; | ||
1978 | padding-right: 40px; | ||
1979 | padding-top: 20px; | ||
1980 | padding-bottom: 10px; | ||
1981 | } | ||
1982 | div.mainPanels div.gridComponent div.header form.search { | ||
1983 | height: 32px; | ||
1984 | margin: 0px; | ||
1985 | } | ||
1986 | div.mainPanels div.gridComponent div.header form.search div.clearSearchButton { | ||
1987 | position: absolute; | ||
1988 | margin-left: 192px; | ||
1989 | width: 22px; | ||
1990 | height: 22px; | ||
1991 | margin-top: 6px; | ||
1992 | background: url(./images/old/filter/clearFilter_notSelected.png) no-repeat; | ||
1993 | } | ||
1994 | div.mainPanels div.gridComponent div.header form.search div.clearSearchButton:hover { | ||
1995 | background: url(./images/old/filter/clearFilter_selected.png) no-repeat; | ||
1996 | cursor: pointer; | ||
1997 | } | ||
1998 | div.mainPanels div.gridComponent div.header form.search div.search { | ||
1999 | display: block; | ||
2000 | float: left; | ||
2001 | width: 217px; | ||
2002 | } | ||
2003 | div.mainPanels div.gridComponent div.header form.search input.search { | ||
2004 | border: 1px solid #76786a; | ||
2005 | color: #666666; | ||
2006 | font-size: 12pt; | ||
2007 | width: 100%; | ||
2008 | padding: 4px; | ||
2009 | padding-left: 24px; | ||
2010 | padding-right: 26px; | ||
2011 | background: #e8ecde url(./images/old/main/grid/search.png) no-repeat 2px 4px; | ||
2012 | } | ||
2013 | div.mainPanels div.gridComponent div.header form.search input.search.disabled { | ||
2014 | disabled: disabled; | ||
2015 | } | ||
2016 | div.mainPanels div.gridComponent div.header form.search input.search.running { | ||
2017 | background: #e8ecde url(./images/old/main/grid/running_search.gif) no-repeat 4px 5px; | ||
2018 | } | ||
2019 | div.mainPanels div.gridComponent div.body { | ||
2020 | clear: both; | ||
2021 | background: url(./images/old/main/blocks/cardGridBackground.png) repeat-y -836px; | ||
2022 | } | ||
2023 | div.mainPanels div.gridComponent div.footer { | ||
2024 | background: url(./images/old/main/blocks/cardGridBackground.png) 834px -28px; | ||
2025 | height: 35px; | ||
2026 | } | ||
2027 | div.mainPanels div.gridComponent div.body h1 { | ||
2028 | margin: 0px; | ||
2029 | } | ||
2030 | div.mainPanels div.gridComponent div.body div.rows { | ||
2031 | margin-left: 9px; | ||
2032 | margin-right: 6px; | ||
2033 | min-height: 582px; | ||
2034 | background: url(./images/old/main/blocks/cardGridStripes.png) 0 7px; | ||
2035 | } | ||
2036 | div.mainPanels div.gridComponent.noRows div.body table.rows thead, | ||
2037 | div.mainPanels div.gridComponent.empty div.body table.rows thead { | ||
2038 | visibility: hidden; | ||
2039 | } | ||
2040 | div.mainPanels div.gridComponent.empty div.body div.rows { | ||
2041 | background: #eaebe6 url(./images/old/lock/background_star.png) no-repeat center center; | ||
2042 | } | ||
2043 | div.mainPanels div.gridComponent.noRows div.body div.rows { | ||
2044 | background: #eaebe6; | ||
2045 | } | ||
2046 | div.mainPanels div.gridComponent div.body table.rows { | ||
2047 | display: block; | ||
2048 | width: 100%; | ||
2049 | } | ||
2050 | div.mainPanels div.gridComponent div.body table.rows tbody tr.odd.selected { | ||
2051 | background-color: #a5a696; | ||
2052 | } | ||
2053 | div.mainPanels div.gridComponent div.body table.rows tbody tr.even.selected { | ||
2054 | background-color: #a5a696; | ||
2055 | } | ||
2056 | div.mainPanels div.gridComponent div.body table.rows tbody tr.selected td a { | ||
2057 | color: #f3f4eb; | ||
2058 | } | ||
2059 | div.mainPanels div.gridComponent div.body table.rows tbody tr.odd { | ||
2060 | background-color: #d4d5cf; | ||
2061 | } | ||
2062 | div.mainPanels div.gridComponent div.body table.rows tbody tr.even { | ||
2063 | background-color: #eaebe6; | ||
2064 | } | ||
2065 | div.mainPanels div.gridComponent div.body table.rows tbody tr.odd:hover { | ||
2066 | background-color: #a5a696; | ||
2067 | } | ||
2068 | div.mainPanels div.gridComponent div.body table.rows tbody tr.even:hover { | ||
2069 | background-color: #a5a696; | ||
2070 | } | ||
2071 | div.mainPanels div.gridComponent div.body table.rows tbody tr td { | ||
2072 | height: 23px; | ||
2073 | max-height: 23px; | ||
2074 | /* | ||
2075 | white-space: nowrap; | ||
2076 | overflow: hidden; | ||
2077 | */ | ||
2078 | |||
2079 | } | ||
2080 | div.mainPanels div.gridComponent div.body table.rows tbody tr td span { | ||
2081 | color: #828479; | ||
2082 | font-size: 10pt; | ||
2083 | } | ||
2084 | div.mainPanels div.gridComponent div.body table.rows tbody tr td a { | ||
2085 | color: #828479; | ||
2086 | font-size: 10pt; | ||
2087 | text-decoration: none; | ||
2088 | } | ||
2089 | div.mainPanels div.gridComponent div.body table.rows tbody tr:hover td span { | ||
2090 | color: #f3f4eb; | ||
2091 | } | ||
2092 | div.mainPanels div.gridComponent div.body table.rows tbody tr.selected td span { | ||
2093 | color: #f3f4eb; | ||
2094 | } | ||
2095 | div.mainPanels div.gridComponent div.body table.rows tbody tr:hover td a { | ||
2096 | color: #f3f4eb; | ||
2097 | } | ||
2098 | div.mainPanels div.gridComponent div.body table.rows tbody tr td.title a { | ||
2099 | font-weight: bold; | ||
2100 | } | ||
2101 | div.mainPanels div.gridComponent div.body table.rows tbody tr td img.favicon { | ||
2102 | float: right; | ||
2103 | padding-right: 6px; | ||
2104 | } | ||
2105 | /* @group header */ | ||
2106 | div.gridComponent table.rows thead img { | ||
2107 | padding-left: 10px; | ||
2108 | vertical-align: middle; | ||
2109 | } | ||
2110 | div.gridComponent table.rows thead tr th { | ||
2111 | background-color: #eaebe6; | ||
2112 | border-bottom: 1px solid #b3b4af; | ||
2113 | } | ||
2114 | div.gridComponent table.rows thead span { | ||
2115 | color: #8c8f7e; | ||
2116 | } | ||
2117 | div.gridComponent table.rows thead tr th.unsorted span.sortable a { | ||
2118 | background-image: url(./images/old/main/grid/unsorted.png); | ||
2119 | } | ||
2120 | div.gridComponent table.rows thead tr th.descending span.sortable a { | ||
2121 | background-image: url(./images/old/main/grid/descending.png); | ||
2122 | } | ||
2123 | div.gridComponent table.rows thead tr th.ascending span.sortable a { | ||
2124 | background-image: url(./images/old/main/grid/ascending.png); | ||
2125 | } | ||
2126 | div.gridComponent table.rows thead tr th.faviconTH { | ||
2127 | width: 53px; | ||
2128 | } | ||
2129 | div.gridComponent table.rows thead tr th.titleTH { | ||
2130 | width: 200px; | ||
2131 | max-width: 200px; | ||
2132 | } | ||
2133 | div.gridComponent table.rows thead tr th.deleteTH { | ||
2134 | width: 50px; | ||
2135 | } | ||
2136 | /* @end */ | ||
2137 | /* @end */ | ||
2138 | /* @group Direct login Grid */ | ||
2139 | /* | ||
2140 | div.mainPanels div.directLoginGrid div.header { | ||
2141 | /* | ||
2142 | height: 90px; | ||
2143 | background: url(./images/old/main/blocks/cardGridBackground.png) no-repeat; | ||
2144 | * / | ||
2145 | } | ||
2146 | |||
2147 | div.mainPanels div.directLoginGrid div.header form.search { | ||
2148 | background: url(./images/old/main/blocks/directLoginGridBackground.png) no-repeat; | ||
2149 | padding-left: 40px; | ||
2150 | padding-top: 20px; | ||
2151 | padding-bottom: 10px; | ||
2152 | margin: 0px; | ||
2153 | } | ||
2154 | |||
2155 | div.mainPanels div.directLoginGrid div.header form.search input.search { | ||
2156 | border: 1px solid #76786a; | ||
2157 | color: #666666; | ||
2158 | font-size: 12pt; | ||
2159 | padding: 4px; | ||
2160 | background-color: #e8ecde; | ||
2161 | } | ||
2162 | |||
2163 | div.mainPanels div.directLoginGrid div.header form.search input.searchButton { | ||
2164 | background-color: #858877; | ||
2165 | border: 0px; | ||
2166 | color: white; | ||
2167 | font-size: 10pt; | ||
2168 | } | ||
2169 | |||
2170 | div.mainPanels div.directLoginGrid div.body { | ||
2171 | background: url(./images/old/main/blocks/directLoginGridBackground.png) repeat-y -836px; | ||
2172 | } | ||
2173 | |||
2174 | div.mainPanels div.directLoginGrid div.footer { | ||
2175 | background: url(./images/old/main/blocks/directLoginGridBackground.png) 834px -28px; | ||
2176 | height: 35px; | ||
2177 | } | ||
2178 | |||
2179 | div.mainPanels div.directLoginGrid div.body h1 { | ||
2180 | margin: 0px; | ||
2181 | } | ||
2182 | |||
2183 | div.mainPanels div.directLoginGrid div.body div.rows { | ||
2184 | margin-left: 9px; | ||
2185 | margin-right: 6px; | ||
2186 | min-height: 582px; | ||
2187 | background: url(./images/old/main/blocks/directLoginGridStripes.png) 0 7px; | ||
2188 | } | ||
2189 | |||
2190 | div.mainPanels div.directLoginGrid div.body table.rows { | ||
2191 | display: block; | ||
2192 | width: 100%; | ||
2193 | } | ||
2194 | |||
2195 | div.mainPanels div.directLoginGrid div.body table.rows img { | ||
2196 | border: 0px; | ||
2197 | } | ||
2198 | |||
2199 | div.mainPanels div.directLoginGrid div.body table.rows tbody tr.even { | ||
2200 | background-color: #787666; | ||
2201 | } | ||
2202 | |||
2203 | div.mainPanels div.directLoginGrid div.body table.rows tbody tr.odd { | ||
2204 | background-color: #646351; | ||
2205 | } | ||
2206 | |||
2207 | div.mainPanels div.directLoginGrid div.body table.rows tbody tr.odd:hover { | ||
2208 | background-color: #d1d4c6; | ||
2209 | } | ||
2210 | |||
2211 | div.mainPanels div.directLoginGrid div.body table.rows tbody tr.even:hover { | ||
2212 | background-color: #d1d4c6; | ||
2213 | } | ||
2214 | |||
2215 | div.mainPanels div.directLoginGrid div.body table.rows tbody tr td { | ||
2216 | height: 23px; | ||
2217 | color: #e1e0d6; | ||
2218 | font-size: 10pt; | ||
2219 | } | ||
2220 | |||
2221 | div.mainPanels div.directLoginGrid div.body table.rows tbody tr:hover td { | ||
2222 | color: #777867; | ||
2223 | } | ||
2224 | |||
2225 | div.mainPanels div.directLoginGrid div.body table.rows tbody tr td.title { | ||
2226 | font-weight: bold; | ||
2227 | } | ||
2228 | |||
2229 | div.directLoginGrid div.body table.rows tbody tr a { | ||
2230 | color: #e1e0d6; | ||
2231 | text-decoration: none; | ||
2232 | } | ||
2233 | |||
2234 | div.directLoginGrid div.body table.rows tbody tr:hover a { | ||
2235 | color: #777867; | ||
2236 | } | ||
2237 | */ | ||
2238 | /* @group DirectLogin links */ | ||
2239 | /* | ||
2240 | td.card_directLogins div { | ||
2241 | display: inline-table; | ||
2242 | } | ||
2243 | |||
2244 | td.card_directLogins span { | ||
2245 | display: inline-table; | ||
2246 | } | ||
2247 | */ | ||
2248 | div.directLogin_directLogin { | ||
2249 | display: inline-block; | ||
2250 | height: 19px; | ||
2251 | padding-left: 7px; | ||
2252 | } | ||
2253 | div.directLogin_directLogin div.directLogin_directLogin_body { | ||
2254 | display: inline-block; | ||
2255 | height: 19px; | ||
2256 | padding-right: 8px; | ||
2257 | background-position: left; | ||
2258 | } | ||
2259 | div.directLogin_directLogin div.directLogin_directLogin_body a { | ||
2260 | vertical-align: -14px; | ||
2261 | } | ||
2262 | div.directLogin_directLogin:hover { | ||
2263 | background: url(./images/old/directLink_background_left.png) no-repeat 0 0; | ||
2264 | } | ||
2265 | div.directLogin_directLogin:hover div.directLogin_directLogin_body { | ||
2266 | background: url(./images/old/directLink_background.png) right 0; | ||
2267 | } | ||
2268 | table.rows tbody tr td div.directLogin_directLogin:hover div.directLogin_directLogin_body a { | ||
2269 | color: #f3f4eb; | ||
2270 | } | ||
2271 | /* @end */ | ||
2272 | /* @group header */ | ||
2273 | div.directLoginGrid table.rows thead span { | ||
2274 | color: #e1e0d6; | ||
2275 | } | ||
2276 | div.directLoginGrid table.rows thead tr th { | ||
2277 | background-color: #787762; | ||
2278 | border-bottom: 1px solid #999883; | ||
2279 | } | ||
2280 | div.directLoginGrid table.rows thead tr th.faviconTH { | ||
2281 | min-width: 53px; | ||
2282 | width: 53px; | ||
2283 | } | ||
2284 | div.directLoginGrid table.rows thead tr th.titleTH { | ||
2285 | min-width: 250px; | ||
2286 | width: 250px; | ||
2287 | } | ||
2288 | div.directLoginGrid table.rows thead tr th.titleTH span { | ||
2289 | margin-left: 7px; | ||
2290 | } | ||
2291 | div.directLoginGrid table.rows thead tr th.strengthTH { | ||
2292 | width: 100px; | ||
2293 | } | ||
2294 | div.directLoginGrid table.rows thead tr th.cardTitleTH { | ||
2295 | width: 400px; | ||
2296 | } | ||
2297 | div.directLoginGrid table.rows thead tr th.bookmarkableLinkTH { | ||
2298 | width: 64px; | ||
2299 | } | ||
2300 | div.directLoginGrid table.rows thead tr th.deleteTH { | ||
2301 | width: 50px; | ||
2302 | } | ||
2303 | div.directLoginGrid table.rows thead tr th.latestAccessTH { | ||
2304 | width: 100px; | ||
2305 | } | ||
2306 | div.directLoginGrid table.rows thead tr th.commandsTH { | ||
2307 | width: 100px; | ||
2308 | } | ||
2309 | /* | ||
2310 | div.directLoginGrid table.rows thead a { | ||
2311 | font-weight: normal; | ||
2312 | text-decoration: none; | ||
2313 | color: #e9e9df; | ||
2314 | font-size: 9pt; | ||
2315 | line-height: 20px; | ||
2316 | } | ||
2317 | */ | ||
2318 | div.directLoginGrid table.rows thead img { | ||
2319 | padding-left: 10px; | ||
2320 | vertical-align: middle; | ||
2321 | } | ||
2322 | div.directLoginGrid table.rows thead tr th.unsorted span.sortable a { | ||
2323 | background: url(./images/old/main/grid/directLogins/unsorted.png) no-repeat; | ||
2324 | } | ||
2325 | div.directLoginGrid table.rows thead tr th.descending span.sortable a { | ||
2326 | background: url(./images/old/main/grid/directLogins/descending.png) no-repeat; | ||
2327 | } | ||
2328 | div.directLoginGrid table.rows thead tr th.ascending span.sortable a { | ||
2329 | background: url(./images/old/main/grid/directLogins/ascending.png) no-repeat; | ||
2330 | } | ||
2331 | /* @end */ | ||
2332 | /* @end */ | ||
2333 | /* @end */ | ||
2334 | /* @end */ | ||
2335 | /* @group other Panels */ | ||
2336 | /* @group common styles */ | ||
2337 | /* | ||
2338 | div.subPanelTabs ul { | ||
2339 | margin: 0px; | ||
2340 | margin-right: 7px; | ||
2341 | padding: 0px; | ||
2342 | } | ||
2343 | div.subPanelTabs ul li { | ||
2344 | display: inline-block; | ||
2345 | vertical-align: middle; | ||
2346 | /*width: 130px; * / | ||
2347 | |||
2348 | height: 50px; | ||
2349 | /*border-right: 1px solid #a5a79c; | ||
2350 | border-bottom: 1px solid #a5a79c;* / | ||
2351 | |||
2352 | border-right: 1px solid #eef0e3; | ||
2353 | border-bottom: 1px solid #d5d5bc; | ||
2354 | } | ||
2355 | div.subPanelTabs ul li.first:hover { | ||
2356 | /*background: url(./images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -9px -5px; * / | ||
2357 | |||
2358 | } | ||
2359 | div.subPanelTabs ul li:hover { | ||
2360 | /*background: url(./images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -45px -5px; * / | ||
2361 | |||
2362 | border-right: 1px solid #d5d5bc; | ||
2363 | background-color: #eef0e3; | ||
2364 | } | ||
2365 | div.subPanelTabs ul li a { | ||
2366 | color: #787872; | ||
2367 | text-decoration: none; | ||
2368 | display: block; | ||
2369 | text-align: center; | ||
2370 | padding-top: 15px; | ||
2371 | padding-left: 20px; | ||
2372 | padding-right: 20px; | ||
2373 | font-size: 13pt; | ||
2374 | } | ||
2375 | div.subPanelTabs ul li.first { | ||
2376 | /*background: url(./images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -9px -5px; * / | ||
2377 | |||
2378 | -webkit-border-top-left-radius: 20px; | ||
2379 | -moz-border-radius-topleft: 20px; | ||
2380 | border-top-left-radius: 20px; | ||
2381 | } | ||
2382 | div.subPanelTabs ul li.selected { | ||
2383 | /*background: url(./images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -45px -5px; * / | ||
2384 | |||
2385 | background-color: #eef0e3; | ||
2386 | border-bottom: 1px solid #eef0e3; | ||
2387 | border-right: 1px solid #d5d5bc; | ||
2388 | } | ||
2389 | div.subPanelTabs ul li.selected:hover { | ||
2390 | border-right: 1px solid #d5d5bc; | ||
2391 | } | ||
2392 | div.subPanelTabs ul li.selected a { | ||
2393 | color: #444440; | ||
2394 | } | ||
2395 | div.subPanelContent { | ||
2396 | padding-top: 20px; | ||
2397 | padding-left: 30px; | ||
2398 | padding-right: 30px; | ||
2399 | min-height: 280px; | ||
2400 | color: #787872; | ||
2401 | margin: 0px 6px 0 9px; | ||
2402 | } | ||
2403 | div.subPanelContent ul { | ||
2404 | margin: 0px; | ||
2405 | padding: 0px; | ||
2406 | list-style-type: none; | ||
2407 | } | ||
2408 | div.subPanelContent ul li.selected { | ||
2409 | display: block; | ||
2410 | } | ||
2411 | div.subPanelContent ul li { | ||
2412 | display: none; | ||
2413 | } | ||
2414 | div.subPanelContent h3 { | ||
2415 | margin: 0px; | ||
2416 | border: 0px; | ||
2417 | padding: 0px; | ||
2418 | } | ||
2419 | */ | ||
2420 | /* @end */ | ||
2421 | /* @group mainPanels otherPanel */ | ||
2422 | div.mainPanels div.otherPanel { | ||
2423 | margin: 5px 10px; | ||
2424 | background-color: #eef0e3; | ||
2425 | -webkit-border-radius: 20px; | ||
2426 | -moz-border-radius: 20px; | ||
2427 | border-radius: 20px; | ||
2428 | -webkit-box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6); | ||
2429 | -moz-box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6); | ||
2430 | box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6); | ||
2431 | } | ||
2432 | div.mainPanels div.otherPanel div.header { | ||
2433 | /*background: url(./images/old/main/blocks/otherPanelBackground.png) no-repeat; */ | ||
2434 | |||
2435 | /* | ||
2436 | height: 90px; | ||
2437 | */ | ||
2438 | |||
2439 | background-color: #d5d5bc; | ||
2440 | /*padding-left: 9px; | ||
2441 | padding-top: 5px; */ | ||
2442 | |||
2443 | margin: 0px; | ||
2444 | margin-bottom: 0px; | ||
2445 | -webkit-border-top-left-radius: 20px; | ||
2446 | -webkit-border-top-right-radius: 20px; | ||
2447 | -moz-border-radius-topleft: 20px; | ||
2448 | -moz-border-radius-topright: 20px; | ||
2449 | border-top-left-radius: 20px; | ||
2450 | border-top-right-radius: 20px; | ||
2451 | } | ||
2452 | div.mainPanels div.otherPanel div.body { | ||
2453 | /*background: url(./images/old/main/blocks/otherPanelBackground.png) repeat-y -836px; */ | ||
2454 | |||
2455 | margin: 0px; | ||
2456 | border: 0px; | ||
2457 | padding: 0px; | ||
2458 | } | ||
2459 | div.mainPanels div.otherPanel div.footer { | ||
2460 | /*background: url(./images/old/main/blocks/otherPanelBackground.png) 834px -18px; */ | ||
2461 | |||
2462 | height: 45px; | ||
2463 | } | ||
2464 | div.mainPanels div.otherPanel div.body h1 { | ||
2465 | margin: 0px; | ||
2466 | } | ||
2467 | /* @end */ | ||
2468 | /* @group Account */ | ||
2469 | form.changePassphrase div.currentCredentials, | ||
2470 | form.changePassphrase div.newPassphrase { | ||
2471 | float: left; | ||
2472 | padding: 10px 20px; | ||
2473 | } | ||
2474 | form.changePassphrase label { | ||
2475 | display: inline-block; | ||
2476 | width: 150px; | ||
2477 | } | ||
2478 | form.changePassphrase div.confirm { | ||
2479 | clear: both; | ||
2480 | padding: 10px 20px; | ||
2481 | } | ||
2482 | form.changePassphrase div.confirm label { | ||
2483 | width: 500px; | ||
2484 | } | ||
2485 | div.accountPanel h3.manageOTP { | ||
2486 | margin-top: 20px; | ||
2487 | margin-left: -20px; | ||
2488 | padding-top: 10px; | ||
2489 | padding-left: 20px; | ||
2490 | border-top: 1px solid #aaaaaa; | ||
2491 | } | ||
2492 | /* @end */ | ||
2493 | /* @end */ | ||
2494 | /* @group Message Panel (?) */ | ||
2495 | /* | ||
2496 | div.messagePanelWrapper div.mask { | ||
2497 | position: fixed; | ||
2498 | top: 0px; | ||
2499 | left: 0px; | ||
2500 | right: 0px; | ||
2501 | bottom: 0px; | ||
2502 | |||
2503 | background-color: black; | ||
2504 | z-index:50001; | ||
2505 | |||
2506 | -moz-opacity: 0.0; | ||
2507 | opacity:.0; | ||
2508 | filter: alpha(opacity=0); | ||
2509 | / * | ||
2510 | -moz-opacity: 0.7; | ||
2511 | opacity:.70; | ||
2512 | filter: alpha(opacity=70); | ||
2513 | * / | ||
2514 | } | ||
2515 | |||
2516 | div.messagePanelFrame { | ||
2517 | border: 1px solid white; | ||
2518 | z-index:50002; | ||
2519 | / * | ||
2520 | width: 443px; | ||
2521 | height: 155px; | ||
2522 | position: fixed; | ||
2523 | top: 205px; | ||
2524 | left: 260px; | ||
2525 | margin-left: auto; | ||
2526 | margin-right: auto; | ||
2527 | max-width: 468px; | ||
2528 | * / | ||
2529 | } | ||
2530 | |||
2531 | |||
2532 | div.messagePanel { | ||
2533 | position: fixed; | ||
2534 | z-index:50003; | ||
2535 | top: 0px; | ||
2536 | left: 0px; | ||
2537 | / * | ||
2538 | margin-left: auto; | ||
2539 | margin-right: auto; | ||
2540 | max-width: 468px; | ||
2541 | top: 200px; | ||
2542 | left: 250px; | ||
2543 | left: 100px; | ||
2544 | right: 100px; | ||
2545 | * / | ||
2546 | } | ||
2547 | |||
2548 | div.messagePanel div.header { | ||
2549 | height: 34px; | ||
2550 | width: 468; | ||
2551 | background-image: url(./images/old/alert/header.png); | ||
2552 | } | ||
2553 | |||
2554 | div.messagePanel div.body { | ||
2555 | background-image: url(./images/old/alert/body.png); | ||
2556 | padding: 0px 20px 10px 20px; | ||
2557 | min-height: 100px; | ||
2558 | } | ||
2559 | / * | ||
2560 | div#javaScriptAlert div.body div.alert { | ||
2561 | padding-left: 100px; | ||
2562 | background: url(./images/old/alert/alert.png) no-repeat; | ||
2563 | } | ||
2564 | * / | ||
2565 | |||
2566 | div.messagePanel div.body img.alert { | ||
2567 | float: left; | ||
2568 | } | ||
2569 | |||
2570 | div.messagePanel div.body div.alert { | ||
2571 | padding-left: 100px; | ||
2572 | } | ||
2573 | |||
2574 | div.messagePanel div.footer { | ||
2575 | height: 34px; | ||
2576 | width: 468; | ||
2577 | background-image: url(./images/old/alert/footer.png); | ||
2578 | } | ||
2579 | |||
2580 | div.messagePanel div.message h1 { | ||
2581 | font-size: 16pt; | ||
2582 | margin: 0px; | ||
2583 | color: #ff5930; | ||
2584 | } | ||
2585 | |||
2586 | div.messagePanel div.message p { | ||
2587 | margin-top: 0px; | ||
2588 | color: #999999; | ||
2589 | } | ||
2590 | |||
2591 | div.messagePanel div.message h3 { | ||
2592 | font-size: 12pt; | ||
2593 | margin-bottom: 0px; | ||
2594 | color: #ff5930; | ||
2595 | } | ||
2596 | |||
2597 | div.messagePanel div.message h5 { | ||
2598 | margin: 0px; | ||
2599 | color: #999999; | ||
2600 | } | ||
2601 | |||
2602 | |||
2603 | */ | ||
2604 | /* @end */ | ||
2605 | /* @group LoginProgress (?) */ | ||
2606 | /* | ||
2607 | div#loginProgress { | ||
2608 | position: relative; | ||
2609 | left: -198px; | ||
2610 | top: -118px; | ||
2611 | width: 397px; | ||
2612 | height: 236px; | ||
2613 | background: url(./images/old/loginProgress/background.png); | ||
2614 | } | ||
2615 | |||
2616 | div#loginProgress div.header { | ||
2617 | height: 52px; | ||
2618 | } | ||
2619 | |||
2620 | div#loginProgress div.header h3 { | ||
2621 | font-size: 12pt; | ||
2622 | font-weight: normal; | ||
2623 | margin: 0px; | ||
2624 | color: #787872; | ||
2625 | padding-top: 25px; | ||
2626 | padding-left: 35px; | ||
2627 | } | ||
2628 | |||
2629 | div#loginProgress div.body { | ||
2630 | height: 120px; | ||
2631 | overflow: auto; | ||
2632 | margin-left: 19px; | ||
2633 | margin-right: 18px; | ||
2634 | } | ||
2635 | |||
2636 | div#loginProgress div.footer { | ||
2637 | margin-left: 19px; | ||
2638 | margin-right: 18px; | ||
2639 | } | ||
2640 | |||
2641 | div#loginProgress div.footer a { | ||
2642 | font-weight: bold; | ||
2643 | text-decoration: none; | ||
2644 | text-align: center; | ||
2645 | color: #787872; | ||
2646 | display: block; | ||
2647 | font-size: 11pt; | ||
2648 | width: 100px; | ||
2649 | margin-top: 13px; | ||
2650 | margin-left: auto; | ||
2651 | margin-right: auto; | ||
2652 | } | ||
2653 | |||
2654 | div#loginProgress div.footer a:hover { | ||
2655 | color: #515247; | ||
2656 | } | ||
2657 | |||
2658 | */ | ||
2659 | /* @end */ | ||
2660 | div#modalDialogMask, | ||
2661 | div.modalDialogMask { | ||
2662 | z-index: 20000; | ||
2663 | /* position: absolute;*/ | ||
2664 | |||
2665 | position: fixed; | ||
2666 | top: 0; | ||
2667 | left: 0; | ||
2668 | -moz-opacity: 0.5; | ||
2669 | opacity: .50; | ||
2670 | filter: alpha(opacity=50); | ||
2671 | /* background-color: #cccccc;*/ | ||
2672 | |||
2673 | background-color: #000000; | ||
2674 | width: 100%; | ||
2675 | height: 100%; | ||
2676 | zoom: 1; | ||
2677 | } | ||
2678 | div#modalDialogFrame, | ||
2679 | div.modalDialogFrame { | ||
2680 | position: absolute; | ||
2681 | /* border: 1px solid white;*/ | ||
2682 | |||
2683 | -moz-opacity: 0.5; | ||
2684 | opacity: .50; | ||
2685 | filter: alpha(opacity=50); | ||
2686 | background-color: #333333; | ||
2687 | z-index: 20001; | ||
2688 | -webkit-border-radius: 20px; | ||
2689 | -moz-border-radius: 20px; | ||
2690 | border-radius: 20px; | ||
2691 | } | ||
2692 | div#modalDialog, | ||
2693 | div.modalDialog { | ||
2694 | z-index: 20001; | ||
2695 | } | ||
2696 | /*div#modalDialog.scrollable,*/ | ||
2697 | div.modalDialog.scrollable { | ||
2698 | position: absolute; | ||
2699 | top: 0; | ||
2700 | left: 50%; | ||
2701 | } | ||
2702 | /*div#modalDialog.fixed,*/ | ||
2703 | div.modalDialog.fixed { | ||
2704 | position: fixed; | ||
2705 | top: 40%; | ||
2706 | left: 50%; | ||
2707 | } | ||
2708 | div#modalDialog div, | ||
2709 | div.modalDialog div { | ||
2710 | z-index: 20002; | ||
2711 | list-style-type: circle; | ||
2712 | } | ||
2713 | div.modalDialogMask.simpleMessagePanelMask { | ||
2714 | z-index: 20010; | ||
2715 | } | ||
2716 | div.modalDialogFrame.simpleMessagePanelMask { | ||
2717 | z-index: 20011; | ||
2718 | } | ||
2719 | div.modalDialog.simpleMessagePanelMask { | ||
2720 | z-index: 20011; | ||
2721 | } | ||
2722 | div.modalDialog.simpleMessagePanelMask div { | ||
2723 | z-index: 20012; | ||
2724 | } | ||
2725 | /* @group Bookmarklet */ | ||
2726 | div.bookmarklet div.bookmarklet_link { | ||
2727 | /* | ||
2728 | padding-top: 5px; | ||
2729 | padding-left: 4px; | ||
2730 | padding-right: 3px; | ||
2731 | |||
2732 | float: right; | ||
2733 | margin-top: 12px; | ||
2734 | margin-right: 13px; | ||
2735 | */ | ||
2736 | |||
2737 | height: 34px; | ||
2738 | } | ||
2739 | div.bookmarklet div.bookmarklet_link a { | ||
2740 | color: #838975; | ||
2741 | text-decoration: none; | ||
2742 | font-weight: bold; | ||
2743 | font-size: 10pt; | ||
2744 | /* | ||
2745 | display: block; | ||
2746 | text-align: right; | ||
2747 | padding-top: 7px; | ||
2748 | padding-right: 11px; | ||
2749 | padding-bottom: 6px; | ||
2750 | */ | ||
2751 | |||
2752 | } | ||
2753 | div.bookmarklet div.bookmarklet_link a div.icon { | ||
2754 | background: url(./images/old/bookmarklet/placeholder_icon.png) no-repeat 0 0; | ||
2755 | float: left; | ||
2756 | width: 34px; | ||
2757 | height: 34px; | ||
2758 | } | ||
2759 | div.bookmarklet div.bookmarklet_link a:hover div.icon { | ||
2760 | background: url(./images/old/bookmarklet/placeholder_selected_icon.png) no-repeat 0 0; | ||
2761 | } | ||
2762 | div.bookmarklet div.bookmarklet_link a div.text { | ||
2763 | display: block; | ||
2764 | float: right; | ||
2765 | background: url(./images/old/bookmarklet/placeholder.png) no-repeat right 0; | ||
2766 | white-space: nowrap; | ||
2767 | height: 34px; | ||
2768 | } | ||
2769 | div.bookmarklet div.bookmarklet_link a:hover div.text { | ||
2770 | background: url(./images/old/bookmarklet/placeholder_selected.png) no-repeat right 0; | ||
2771 | } | ||
2772 | div.bookmarklet div.bookmarklet_link a div.text span { | ||
2773 | display: block; | ||
2774 | padding-top: 10px; | ||
2775 | padding-right: 10px; | ||
2776 | padding-left: 6px; | ||
2777 | clear: both; | ||
2778 | } | ||
2779 | /* @end */ | ||
2780 | /* @group Tooltip */ | ||
2781 | /* | ||
2782 | div#Clipperz_PM_UI_Common_Components_Tooltip_wrapperNode { | ||
2783 | position: absolute; | ||
2784 | top: 0px; | ||
2785 | left: 0px; | ||
2786 | } | ||
2787 | */ | ||
2788 | /* @end */ | ||
2789 | /* @group News */ | ||
2790 | /* | ||
2791 | div#news { | ||
2792 | top: 11px; | ||
2793 | left: 240px; | ||
2794 | width: 353px; | ||
2795 | height: 85px; | ||
2796 | padding-top: 4px; | ||
2797 | position: absolute; | ||
2798 | overflow: hidden; | ||
2799 | background: url(./images/old/note.png) 1px 3px; | ||
2800 | } | ||
2801 | |||
2802 | div#news.hidden { | ||
2803 | display: none; | ||
2804 | } | ||
2805 | |||
2806 | div#news div.close { | ||
2807 | display: inline; | ||
2808 | margin-top: 6px; | ||
2809 | margin-left: 17px; | ||
2810 | float: left; | ||
2811 | width: 15px; | ||
2812 | } | ||
2813 | |||
2814 | div#news div.close a { | ||
2815 | text-decoration: none; | ||
2816 | color: #929c1b; | ||
2817 | } | ||
2818 | |||
2819 | div#news div.close a:hover { | ||
2820 | text-decoration: none; | ||
2821 | color: #3d420b; | ||
2822 | } | ||
2823 | |||
2824 | div#news div#newsframe { | ||
2825 | display: block; | ||
2826 | overflow: hidden; | ||
2827 | width: 305px; | ||
2828 | height: 70px; | ||
2829 | } | ||
2830 | |||
2831 | div#news div#newsframe iframe { | ||
2832 | border: 0px; | ||
2833 | } | ||
2834 | */ | ||
2835 | /* --------------------------------------- */ | ||
2836 | div#news { | ||
2837 | top: -82px; | ||
2838 | left: 240px; | ||
2839 | width: 310px; | ||
2840 | height: 90px; | ||
2841 | position: absolute; | ||
2842 | /*background: url(./images/old/tips/Tips_background.png) 0 -5px; */ | ||
2843 | |||
2844 | background-color: #616474; | ||
2845 | -webkit-border-bottom-right-radius: 8px; | ||
2846 | -webkit-border-bottom-left-radius: 8px; | ||
2847 | -moz-border-radius-bottomright: 8px; | ||
2848 | -moz-border-radius-bottomleft: 8px; | ||
2849 | border-bottom-right-radius: 8px; | ||
2850 | border-bottom-left-radius: 8px; | ||
2851 | -webkit-box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6); | ||
2852 | -moz-box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6); | ||
2853 | box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6); | ||
2854 | } | ||
2855 | /* | ||
2856 | div#news.open { | ||
2857 | background: url(./images/old/tips/Tips_open.png) 0 -5px; | ||
2858 | } | ||
2859 | |||
2860 | div#news.hidden { | ||
2861 | background: url(./images/old/tips/Tips_close.png) 0 -5px; | ||
2862 | } | ||
2863 | */ | ||
2864 | /* | ||
2865 | div#news div#newsframe { | ||
2866 | margin-left: 10px; | ||
2867 | margin-right: 10px; | ||
2868 | height: 75px; | ||
2869 | overflow: hidden; | ||
2870 | } | ||
2871 | div#news div#newsframe.loading { | ||
2872 | background: url(./images/old/loading/news.gif) no-repeat center center; | ||
2873 | } | ||
2874 | div#news div#newsframe iframe { | ||
2875 | width: 290px; | ||
2876 | border: 0px; | ||
2877 | color: #616474; | ||
2878 | background-color: #616474; | ||
2879 | } | ||
2880 | div#news div.grip { | ||
2881 | width: 310px; | ||
2882 | height: 12px; | ||
2883 | margin-top: 2px; | ||
2884 | cursor: pointer; | ||
2885 | } | ||
2886 | div#news.open div.grip { | ||
2887 | background: url(./images/old/tips/close.png) no-repeat center 6px; | ||
2888 | } | ||
2889 | div#news.hidden div.grip { | ||
2890 | background: url(./images/old/tips/open.png) no-repeat center 6px; | ||
2891 | } | ||
2892 | */ | ||
2893 | /* @end */ | ||
2894 | /* @group mainDialog */ | ||
2895 | div.mainDialog { | ||
2896 | position: relative; | ||
2897 | left: -263px; | ||
2898 | width: 525px; | ||
2899 | height: 325px; | ||
2900 | } | ||
2901 | div.scrollable div.mainDialog { | ||
2902 | top: 0px; | ||
2903 | } | ||
2904 | div.fixed div.mainDialog { | ||
2905 | top: -118px; | ||
2906 | } | ||
2907 | div.mainDialog div.header { | ||
2908 | height: 55px; | ||
2909 | background: url(./images/old/cardDialog/background_header.png) no-repeat; | ||
2910 | } | ||
2911 | div.mainDialog div.header div.title { | ||
2912 | padding-top: 16px; | ||
2913 | padding-left: 20px; | ||
2914 | padding-right: 20px; | ||
2915 | } | ||
2916 | div.mainDialog div.header div.title input { | ||
2917 | width: 100%; | ||
2918 | display: block; | ||
2919 | font-size: 16pt; | ||
2920 | margin: 0px; | ||
2921 | border: 0px; | ||
2922 | padding: 3px 10px; | ||
2923 | color: #787872; | ||
2924 | border: 1px solid #cccec0; | ||
2925 | background-color: #cccec0; | ||
2926 | } | ||
2927 | div.mainDialog div.header div.title h3 { | ||
2928 | display: block; | ||
2929 | font-size: 16pt; | ||
2930 | color: #787872; | ||
2931 | margin: 0px; | ||
2932 | border: 0px; | ||
2933 | padding: 3px 10px; | ||
2934 | } | ||
2935 | div.mainDialog div.header div.title.selectedField input, | ||
2936 | div.mainDialog div.header div.title:hover input { | ||
2937 | border: 1px solid #515247; | ||
2938 | background-color: #b5b7ab; | ||
2939 | } | ||
2940 | div.mainDialog div.header div.title.disabled:hover input { | ||
2941 | border: 1px solid #cccec0; | ||
2942 | background-color: #cccec0; | ||
2943 | } | ||
2944 | div.mainDialog div.body { | ||
2945 | padding-top: 0px; | ||
2946 | padding-left: 10px; | ||
2947 | padding-right: 9px; | ||
2948 | min-height: 200px; | ||
2949 | background: url(./images/old/cardDialog/background_body.png) repeat-y; | ||
2950 | } | ||
2951 | div.mainDialog div.body div.mask { | ||
2952 | display: none; | ||
2953 | } | ||
2954 | div.mainDialog.loading div.body div.mask { | ||
2955 | display: block; | ||
2956 | position: absolute; | ||
2957 | top: 55px; | ||
2958 | left: 10px; | ||
2959 | right: 9px; | ||
2960 | bottom: 70px; | ||
2961 | z-index: 1001; | ||
2962 | background-color: white; | ||
2963 | padding-left: 146px; | ||
2964 | padding-right: 146px; | ||
2965 | padding-top: 70px; | ||
2966 | } | ||
2967 | div.mainDialog.loading div.body .tabPanels { | ||
2968 | display: none; | ||
2969 | } | ||
2970 | div.mainDialog.loading div.body div.mask h3.progressDescription { | ||
2971 | margin: 0px; | ||
2972 | text-align: center; | ||
2973 | padding-bottom: 10px; | ||
2974 | color: #cccec0; | ||
2975 | font-size: 14pt; | ||
2976 | font-weight: normal; | ||
2977 | } | ||
2978 | div.loadingBar { | ||
2979 | height: 22px; | ||
2980 | width: 214px; | ||
2981 | background: url(./images/old/loading/loadingBar.gif) no-repeat center top; | ||
2982 | } | ||
2983 | div.loadingBar div.loadingBarProgressBox { | ||
2984 | padding: 2px; | ||
2985 | } | ||
2986 | div.loadingBar div.loadingBarProgress { | ||
2987 | height: 18px; | ||
2988 | width: 0%; | ||
2989 | /* background-repeat: no-repeat;*/ | ||
2990 | |||
2991 | background-color: rgba(248, 79, 0, 0.6); | ||
2992 | -webkit-border-radius: 9px; | ||
2993 | -moz-border-radius: 9px; | ||
2994 | border-radius: 9px; | ||
2995 | } | ||
2996 | /* | ||
2997 | div.loadingBar div.loadingBarProgress div.loadingBarProgress_left { | ||
2998 | height: 100%; | ||
2999 | max-width: 8px; | ||
3000 | background: url(./images/old/loading/loadingBarProgress.png) no-repeat 0; | ||
3001 | } | ||
3002 | |||
3003 | div.loadingBar div.loadingBarProgress div.loadingBarProgress_right { | ||
3004 | position: relative; | ||
3005 | height: 100%; | ||
3006 | margin-left: 8px; | ||
3007 | background: url(./images/old/loading/loadingBarProgress.png) no-repeat right; | ||
3008 | top: -22px; | ||
3009 | } | ||
3010 | */ | ||
3011 | div.mainDialog div.body div ul { | ||
3012 | padding: 0px; | ||
3013 | clear: both; | ||
3014 | margin: 0px; | ||
3015 | list-style-type: none; | ||
3016 | } | ||
3017 | div.mainDialog div.body div.tabs { | ||
3018 | height: 20px; | ||
3019 | } | ||
3020 | div.mainDialog div.body div.tabs ul.tabs { | ||
3021 | height: 33px; | ||
3022 | /*border-bottom: 1px solid #515247;*/ | ||
3023 | |||
3024 | /*background: #cccec0 url(./images/old/cardDialog/tabs_shadow.png) repeat-x 0 -5px;*/ | ||
3025 | |||
3026 | background: url(./images/old/cardDialog/tabs_background.png) repeat-x; | ||
3027 | } | ||
3028 | div.mainDialog div.body div.tabs ul.tabs li { | ||
3029 | /* width: 150px;*/ | ||
3030 | |||
3031 | height: 32px; | ||
3032 | font-size: 11pt; | ||
3033 | text-align: center; | ||
3034 | border-right: 1px solid #515247; | ||
3035 | float: left; | ||
3036 | color: #787872; | ||
3037 | border-bottom: 1px solid #515247; | ||
3038 | background: #cccec0 url(./images/old/cardDialog/tabs_shadow.png) repeat-x 0 -5px; | ||
3039 | cursor: pointer; | ||
3040 | } | ||
3041 | div.mainDialog div.body div.tabs ul.tabs li div { | ||
3042 | display: none; | ||
3043 | } | ||
3044 | div.mainDialog div.body div.tabs ul.tabs li span { | ||
3045 | display: block; | ||
3046 | padding-top: 9px; | ||
3047 | padding-bottom: 6px; | ||
3048 | padding-left: 40px; | ||
3049 | padding-right: 40px; | ||
3050 | } | ||
3051 | div.mainDialog div.body div.tabs ul.tabs li:hover { | ||
3052 | color: #515247; | ||
3053 | } | ||
3054 | div.mainDialog div.body div.tabs ul.tabs li.disabled:hover { | ||
3055 | color: #787872; | ||
3056 | cursor: default; | ||
3057 | } | ||
3058 | div.mainDialog div.body div.tabs ul.tabs li.selected { | ||
3059 | color: #515247; | ||
3060 | background-color: #f1f2e9; | ||
3061 | border-bottom: 1px solid #f1f2e9; | ||
3062 | cursor: default; | ||
3063 | } | ||
3064 | div.mainDialog div.body div.tabs ul.tabs li.selected.disabled:hover { | ||
3065 | color: #515247; | ||
3066 | } | ||
3067 | div.mainDialog div.body div.tabs ul.tabs li.selected div.backToDirectLoginList { | ||
3068 | position: absolute; | ||
3069 | display: block; | ||
3070 | top: 63px; | ||
3071 | left: 140; | ||
3072 | width: 20px; | ||
3073 | } | ||
3074 | div.mainDialog div.body div.tabs ul.tabs li.selected div.addDirectLoginButton { | ||
3075 | position: absolute; | ||
3076 | display: block; | ||
3077 | top: 63px; | ||
3078 | left: 265px; | ||
3079 | width: 20px; | ||
3080 | } | ||
3081 | div.mainDialog div.body div.tabs ul.tabs li.selected div span { | ||
3082 | padding: 0px; | ||
3083 | margin: 0px; | ||
3084 | } | ||
3085 | div.mainDialog div.body div.tabs ul.tabs li.selected div:hover { | ||
3086 | cursor: pointer; | ||
3087 | } | ||
3088 | div.mainDialog div.body .tabPanels { | ||
3089 | clear: both; | ||
3090 | } | ||
3091 | div.mainDialog div.body ul.tabPanels li.tabPanel { | ||
3092 | display: none; | ||
3093 | } | ||
3094 | div.mainDialog div.body ul.tabPanels li.tabPanel.selected { | ||
3095 | display: block; | ||
3096 | } | ||
3097 | div.mainDialog div.body ul.tabPanels li.tabPanel.selected h2 { | ||
3098 | margin: 0px; | ||
3099 | text-align: center; | ||
3100 | padding-top: 50px; | ||
3101 | color: #787872; | ||
3102 | } | ||
3103 | div.mainDialog div.body ul.tabPanels li.tabPanel.selected div.wizardStepDescription { | ||
3104 | margin: 0px 20px 10px; | ||
3105 | font-size: 10pt; | ||
3106 | color: b0b0b0; | ||
3107 | font-style: italic; | ||
3108 | text-align: center; | ||
3109 | } | ||
3110 | div.mainDialog div.footer { | ||
3111 | height: 70px; | ||
3112 | background: url(./images/old/cardDialog/background_footer.png) no-repeat 0 -14px; | ||
3113 | } | ||
3114 | div.mainDialog div.footer div.buttonArea { | ||
3115 | padding-left: 40px; | ||
3116 | padding-right: 40px; | ||
3117 | padding-top: 15px; | ||
3118 | } | ||
3119 | div.mainDialog div.footer div.buttonArea div { | ||
3120 | padding-left: 20px; | ||
3121 | padding-right: 20px; | ||
3122 | float: left; | ||
3123 | font-weight: bold; | ||
3124 | color: #787872; | ||
3125 | } | ||
3126 | div.mainDialog div.footer div.buttonArea div.disabled { | ||
3127 | color: #b1b1a8; | ||
3128 | } | ||
3129 | div.mainDialog div.footer div.buttonArea div.disabled:hover { | ||
3130 | color: #b1b1a8; | ||
3131 | cursor: default; | ||
3132 | } | ||
3133 | div.mainDialog div.footer div.buttonArea div:hover { | ||
3134 | color: #515247; | ||
3135 | cursor: pointer; | ||
3136 | } | ||
3137 | div.mainDialog div.footer div.buttonArea div.save { | ||
3138 | float: right; | ||
3139 | } | ||
3140 | /* @end */ | ||
3141 | /* @group Card Dialog */ | ||
3142 | div.addDirectLoginButton { | ||
3143 | height: 20px; | ||
3144 | width: 20px; | ||
3145 | background: url(./images/old/cardDialog/addDirectLogin_disabled_background.png) no-repeat -9px -9px; | ||
3146 | color: white; | ||
3147 | font-weight: bold; | ||
3148 | } | ||
3149 | div.addDirectLoginButton span { | ||
3150 | display: block; | ||
3151 | height: 20px; | ||
3152 | width: 20px; | ||
3153 | } | ||
3154 | div.addDirectLoginButton:hover { | ||
3155 | background: url(./images/old/cardDialog/addDirectLogin_background.png) no-repeat -9px -9px; | ||
3156 | } | ||
3157 | /* @group Card Dialog - Direct Login */ | ||
3158 | div.directLoginsComponentContainer { | ||
3159 | overflow: hidden; | ||
3160 | /* background-color: green;*/ | ||
3161 | |||
3162 | } | ||
3163 | div.CardDialog div.directLogins { | ||
3164 | /* background-color: yellow;*/ | ||
3165 | |||
3166 | padding-top: 2px; | ||
3167 | } | ||
3168 | div.CardDialog div.addNewDirectLoginSplash { | ||
3169 | margin: 0px 80px; | ||
3170 | } | ||
3171 | div.CardDialog div.addNewDirectLoginSplash h3 { | ||
3172 | color: #aaaaaa; | ||
3173 | text-align: center; | ||
3174 | font-weight: normal; | ||
3175 | font-size: 11pt; | ||
3176 | } | ||
3177 | div.CardDialog div.addNewDirectLoginSplash a { | ||
3178 | display: block; | ||
3179 | text-decoration: none; | ||
3180 | margin-left: auto; | ||
3181 | margin-right: auto; | ||
3182 | width: 190px; | ||
3183 | /* color: #787878;*/ | ||
3184 | |||
3185 | color: rgba(255, 98, 6, 0.75); | ||
3186 | text-transform: uppercase; | ||
3187 | background: url(./images/old/cardDialog/addDirectLogin_disabled_background.png) no-repeat right; | ||
3188 | } | ||
3189 | div.CardDialog div.addNewDirectLoginSplash a span { | ||
3190 | text-align: center; | ||
3191 | } | ||
3192 | div.CardDialog div.addNewDirectLoginSplash a:hover { | ||
3193 | color: #ff6206; | ||
3194 | background: url(./images/old/cardDialog/addDirectLogin_background.png) no-repeat right; | ||
3195 | } | ||
3196 | div.CardDialog div.directLoginItem { | ||
3197 | clear: both; | ||
3198 | min-height: 32px; | ||
3199 | padding-left: 10px; | ||
3200 | padding-top: 4px; | ||
3201 | padding-bottom: 2px; | ||
3202 | /* width: 100px;*/ | ||
3203 | |||
3204 | max-height: 32px; | ||
3205 | overflow: hidden; | ||
3206 | } | ||
3207 | div.CardDialog div.directLoginItem:hover { | ||
3208 | background-color: #cccec0; | ||
3209 | } | ||
3210 | div.CardDialog div.addDirectLoginListItem { | ||
3211 | min-height: 32px; | ||
3212 | padding-left: 10px; | ||
3213 | padding-top: 4px; | ||
3214 | padding-bottom: 2px; | ||
3215 | max-height: 32px; | ||
3216 | overflow: hidden; | ||
3217 | background: url(./images/old/cardDialog/addDirectLogin_disabled_background.png) no-repeat 22px 0; | ||
3218 | } | ||
3219 | div.CardDialog div.addDirectLoginListItem a { | ||
3220 | display: block; | ||
3221 | font-size: 11pt; | ||
3222 | padding-top: 6px; | ||
3223 | padding-left: 50px; | ||
3224 | color: rgba(255, 98, 6, 0.75); | ||
3225 | text-decoration: none; | ||
3226 | text-transform: uppercase; | ||
3227 | } | ||
3228 | div.CardDialog div.addDirectLoginListItem:hover { | ||
3229 | background: url(./images/old/cardDialog/addDirectLogin_background.png) no-repeat 22px 0; | ||
3230 | color: #ff6206; | ||
3231 | background-color: #cccec0; | ||
3232 | } | ||
3233 | div.CardDialog div.directLoginItem div.cardDialogRecordDirectLoginComponent_favicon img.favicon { | ||
3234 | width: 32px; | ||
3235 | height: 32px; | ||
3236 | float: left; | ||
3237 | } | ||
3238 | div.CardDialog div.directLoginItem div.cardDialogRecordDirectLoginComponent_label input { | ||
3239 | float: left; | ||
3240 | font-size: 11pt; | ||
3241 | border: 0px; | ||
3242 | padding: 5px; | ||
3243 | color: #787872; | ||
3244 | border: 1px solid #ededeb; | ||
3245 | background-color: #ededeb; | ||
3246 | height: 30px; | ||
3247 | margin-left: 10px; | ||
3248 | width: 68%; | ||
3249 | margin-right: 5px; | ||
3250 | } | ||
3251 | div.CardDialog div.directLoginItem:hover div.cardDialogRecordDirectLoginComponent_label input { | ||
3252 | border: 1px solid #515247; | ||
3253 | background-color: #b5b7ab; | ||
3254 | } | ||
3255 | div.CardDialog div.directLoginItem > div.open { | ||
3256 | float: left; | ||
3257 | margin-top: 5px; | ||
3258 | margin-right: 2px; | ||
3259 | padding-left: 5px; | ||
3260 | visibility: hidden; | ||
3261 | } | ||
3262 | div.CardDialog div.directLoginItem > div.edit, | ||
3263 | div.CardDialog div.directLoginItem > div.delete { | ||
3264 | float: left; | ||
3265 | margin-top: 5px; | ||
3266 | margin-left: 3px; | ||
3267 | padding-left: 5px; | ||
3268 | visibility: hidden; | ||
3269 | } | ||
3270 | div.CardDialog div.directLoginItem > div.open a { | ||
3271 | display: block; | ||
3272 | width: 22px; | ||
3273 | height: 22px; | ||
3274 | background: url(./images/old/cardDialog/openDirectLogin.png) no-repeat 0 -2px; | ||
3275 | } | ||
3276 | div.CardDialog div.directLoginItem > div.open a:hover { | ||
3277 | background: url(./images/old/cardDialog/openDirectLogin_selected.png) no-repeat 0 -2px; | ||
3278 | } | ||
3279 | div.CardDialog div.directLoginItem:hover > div.open, | ||
3280 | div.CardDialog div.directLoginItem:hover > div.edit, | ||
3281 | div.CardDialog div.directLoginItem:hover > div.delete { | ||
3282 | visibility: visible; | ||
3283 | } | ||
3284 | div.CardDialog div.directLoginItem div.edit span { | ||
3285 | padding-right: 6px; | ||
3286 | display: block; | ||
3287 | } | ||
3288 | div.CardDialog div.directLoginItem div.open span a, | ||
3289 | div.CardDialog div.directLoginItem div.edit span a, | ||
3290 | div.CardDialog div.directLoginItem div.delete span a { | ||
3291 | font-size: 8pt; | ||
3292 | color: #666666; | ||
3293 | text-decoration: none; | ||
3294 | line-height: 19px; | ||
3295 | } | ||
3296 | div.CardDialog div.directLoginItem div.edit:hover { | ||
3297 | background: url(./images/old/new_background_left.png) no-repeat; | ||
3298 | } | ||
3299 | div.CardDialog div.directLoginItem div:hover span a { | ||
3300 | color: white; | ||
3301 | } | ||
3302 | div.CardDialog div.directLoginItem div.edit:hover span { | ||
3303 | background: url(./images/old/new_background.png) no-repeat right center; | ||
3304 | } | ||
3305 | div.CardDialog div.directLoginItem div.delete:hover { | ||
3306 | background: url(./images/old/delete_background_left.png) no-repeat; | ||
3307 | } | ||
3308 | div.CardDialog div.directLoginItem div.delete:hover span { | ||
3309 | background: url(./images/old/delete_background.png) right; | ||
3310 | } | ||
3311 | /* @group Direct Login Editing */ | ||
3312 | div.CardDialog div.directLoginEditDetail { | ||
3313 | position: relative; | ||
3314 | /* background-color: red;*/ | ||
3315 | |||
3316 | } | ||
3317 | /* | ||
3318 | div.CardDialog div.directLoginEditDetail div.back { | ||
3319 | float: left; | ||
3320 | width: 30px; | ||
3321 | } | ||
3322 | |||
3323 | div.CardDialog div.directLoginEditDetail div.back a { | ||
3324 | display: block; | ||
3325 | padding: 5px; | ||
3326 | text-decoration: none; | ||
3327 | font-weight: bold; | ||
3328 | font-size: 14pt; | ||
3329 | color: #cccec0; | ||
3330 | |||
3331 | background: url(./images/old/cardDialog/back.png) no-repeat 5px 14px; | ||
3332 | width: 20px; | ||
3333 | height: 200px; | ||
3334 | } | ||
3335 | |||
3336 | div.CardDialog div.directLoginEditDetail div.back a:hover { | ||
3337 | color: #7f7872; | ||
3338 | background: url(./images/old/cardDialog/back_selected.png) no-repeat 5px 14px; | ||
3339 | } | ||
3340 | */ | ||
3341 | form.directLoginEditingForm div.title, | ||
3342 | form.directLoginEditingForm div.favicon { | ||
3343 | padding: 5px 10px; | ||
3344 | } | ||
3345 | form.directLoginEditingForm div.title.disabled:hover { | ||
3346 | background-color: #f1f2e9; | ||
3347 | } | ||
3348 | form.directLoginEditingForm div.title:hover, | ||
3349 | form.directLoginEditingForm div.favicon:hover { | ||
3350 | background-color: #cccec0; | ||
3351 | } | ||
3352 | form.directLoginEditingForm div.title input { | ||
3353 | /* width: 100%; */ | ||
3354 | |||
3355 | margin: 0px; | ||
3356 | margin-left: 10px; | ||
3357 | width: 440px; | ||
3358 | } | ||
3359 | form.directLoginEditingForm div.favicon { | ||
3360 | padding-left: 10px; | ||
3361 | } | ||
3362 | /*form.directLoginEditingForm div.favicon img.favicon {*/ | ||
3363 | form.directLoginEditingForm img.favicon { | ||
3364 | float: left; | ||
3365 | width: 32px; | ||
3366 | height: 32px; | ||
3367 | } | ||
3368 | form.directLoginEditingForm div.favicon input { | ||
3369 | margin-top: 1px; | ||
3370 | width: 465px; | ||
3371 | } | ||
3372 | form.directLoginEditingForm div.disabled:hover input, | ||
3373 | form.directLoginEditingForm div input { | ||
3374 | font-size: 11pt; | ||
3375 | border: 0px; | ||
3376 | padding: 5px; | ||
3377 | color: #787872; | ||
3378 | border: 1px solid #ededeb; | ||
3379 | background-color: #ededeb; | ||
3380 | height: 30px; | ||
3381 | } | ||
3382 | form.directLoginEditingForm div:hover input { | ||
3383 | border: 1px solid #515247; | ||
3384 | background-color: #b5b7ab; | ||
3385 | } | ||
3386 | /* @group Bindings */ | ||
3387 | div.bindings div.binding > span.formFieldName { | ||
3388 | display: inline-block; | ||
3389 | width: 140px; | ||
3390 | overflow: hidden; | ||
3391 | margin-right: 10px; | ||
3392 | color: #6b5147; | ||
3393 | text-overflow: ellipsis; | ||
3394 | } | ||
3395 | div.bindings div.binding { | ||
3396 | padding-bottom: 3px; | ||
3397 | } | ||
3398 | div.bindings div.binding > input { | ||
3399 | margin-right: 10px; | ||
3400 | background: #cccec0; | ||
3401 | width: 150px; | ||
3402 | border: 1px solid #cccec0; | ||
3403 | } | ||
3404 | div.bindings div.binding:hover > input { | ||
3405 | border: 1px solid #cccec0; | ||
3406 | } | ||
3407 | div.bindings div.binding > select { | ||
3408 | font-size: 13pt; | ||
3409 | } | ||
3410 | div.bindings div.binding span.fieldLock { | ||
3411 | display: inline-block; | ||
3412 | width: 20px; | ||
3413 | height: 20px; | ||
3414 | margin-right: 3px; | ||
3415 | } | ||
3416 | div.bindings div.binding.showLocked input { | ||
3417 | background: url(./images/old/cardDialog/password_background.png) no-repeat 2px 3px; | ||
3418 | /* color: black;*/ | ||
3419 | |||
3420 | overflow: hidden; | ||
3421 | background: #cccec0 url(./images/old/cardDialog/password_background.png) no-repeat 2px 3px; | ||
3422 | color: rgba(237, 237, 235, 0.1); | ||
3423 | } | ||
3424 | div.bindings div.binding span.fieldLock a { | ||
3425 | display: none; | ||
3426 | } | ||
3427 | div.bindings div.binding.locked span.fieldLock a { | ||
3428 | display: block; | ||
3429 | width: 20px; | ||
3430 | height: 20px; | ||
3431 | text-decoration: none; | ||
3432 | background-image: url(./images/old/cardDialog/lock_open.png); | ||
3433 | } | ||
3434 | div.bindings div.binding.locked.showLocked span.fieldLock a { | ||
3435 | background-image: url(./images/old/cardDialog/lock_closed.png); | ||
3436 | text-decoration: none; | ||
3437 | } | ||
3438 | /* @end */ | ||
3439 | /* @group FormValues */ | ||
3440 | div.formValues { | ||
3441 | padding-top: 15px; | ||
3442 | } | ||
3443 | div.formValues div.formValue div { | ||
3444 | margin: 0px; | ||
3445 | display: inline-block; | ||
3446 | } | ||
3447 | div.formValues div.formValue > span.formFieldName { | ||
3448 | display: inline-table; | ||
3449 | width: 160px; | ||
3450 | overflow: hidden; | ||
3451 | margin-right: 10px; | ||
3452 | color: #6b5147; | ||
3453 | } | ||
3454 | /* @end */ | ||
3455 | /* @group FormValues */ | ||
3456 | /* | ||
3457 | div.formValues { | ||
3458 | padding-top: 15px; | ||
3459 | } | ||
3460 | |||
3461 | div.formValues div.formValue > span.formFieldName { | ||
3462 | display: inline-table; | ||
3463 | width: 150px; | ||
3464 | overflow: hidden; | ||
3465 | margin-right: 35px; | ||
3466 | color: #6b5147; | ||
3467 | } | ||
3468 | |||
3469 | div.formValues div.formValue > select { | ||
3470 | padding-left: 20px; | ||
3471 | } | ||
3472 | */ | ||
3473 | /* @end */ | ||
3474 | /* @group Panels */ | ||
3475 | div.directLoginEditing { | ||
3476 | padding-top: 2px; | ||
3477 | } | ||
3478 | div.directLoginEditing div.tabContainer { | ||
3479 | min-height: 150px; | ||
3480 | height: 200px; | ||
3481 | } | ||
3482 | div.directLoginEditing div.tabContainer > ul.tabs { | ||
3483 | display: none; | ||
3484 | } | ||
3485 | /* | ||
3486 | div.directLoginEditing li.configuration, | ||
3487 | div.directLoginEditing li.bindings, | ||
3488 | div.directLoginEditing li.favicon { | ||
3489 | padding: 10px; | ||
3490 | } | ||
3491 | */ | ||
3492 | div.directLoginEditing li { | ||
3493 | padding: 10px; | ||
3494 | } | ||
3495 | div.directLoginEditing li.configuration > .bookmarkletConfigurationWrapper > textarea { | ||
3496 | float: left; | ||
3497 | width: 320px; | ||
3498 | height: 125px; | ||
3499 | font-family: monospace; | ||
3500 | font-weight: normal; | ||
3501 | font-size: 8pt; | ||
3502 | border: 1px solid #ccc; | ||
3503 | } | ||
3504 | div.directLoginEditing li.configuration > .bookmarkletConfigurationWrapper .bookmarkletComponent { | ||
3505 | float: right; | ||
3506 | } | ||
3507 | div.directLoginEditing li.configuration > textarea.error { | ||
3508 | border: 1px solid red; | ||
3509 | background-color: rgba(255, 0, 0, 0.1); | ||
3510 | } | ||
3511 | /* | ||
3512 | div.directLoginEditing > form.directLoginEditingForm > div.tabContainer { | ||
3513 | padding-top: 10px; | ||
3514 | } | ||
3515 | |||
3516 | div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li { | ||
3517 | float: left; | ||
3518 | padding-left: 10px; | ||
3519 | padding-right: 10px; | ||
3520 | display: block; | ||
3521 | font-size: 10pt; | ||
3522 | color: #787872; | ||
3523 | cursor: pointer; | ||
3524 | |||
3525 | height: 22px; | ||
3526 | text-align: center; | ||
3527 | border-right: 1px solid #aaa; | ||
3528 | border-bottom: 1px solid #aaa; | ||
3529 | border-top: 1px solid #aaa; | ||
3530 | |||
3531 | background-color: #cccec0; | ||
3532 | } | ||
3533 | |||
3534 | div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li:first-child { | ||
3535 | border-left: 1px solid #aaa; | ||
3536 | } | ||
3537 | |||
3538 | div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs { | ||
3539 | height: 23px; | ||
3540 | padding-left: 10px; | ||
3541 | border-bottom: 1px solid #aaa; | ||
3542 | margin-left: 10px; | ||
3543 | margin-right: 10px; | ||
3544 | } | ||
3545 | |||
3546 | div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li > span { | ||
3547 | line-height: 23px; | ||
3548 | } | ||
3549 | |||
3550 | div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li.selected { | ||
3551 | color: #6a5147; | ||
3552 | cursor: default; | ||
3553 | border-bottom: 1px solid #f1f2e9; | ||
3554 | background-color: #f1f2e9; | ||
3555 | } | ||
3556 | |||
3557 | div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li:hover { | ||
3558 | color: #6a5147; | ||
3559 | } | ||
3560 | |||
3561 | div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabPanels { | ||
3562 | padding-bottom: 5px; | ||
3563 | margin-left: 10px; | ||
3564 | margin-right: 10px; | ||
3565 | } | ||
3566 | |||
3567 | div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabPanels > li.selected { | ||
3568 | border-bottom: 1px solid #aaa; | ||
3569 | border-left: 1px solid #aaa; | ||
3570 | border-right: 1px solid #aaa; | ||
3571 | } | ||
3572 | |||
3573 | div.directLoginEditing li.configuration { | ||
3574 | padding: 5px; | ||
3575 | } | ||
3576 | |||
3577 | div.directLoginEditing li.configuration > textarea { | ||
3578 | width: 100%; | ||
3579 | height: 100px; | ||
3580 | font-family: monospace; | ||
3581 | font-weight: normal; | ||
3582 | font-size: 8pt; | ||
3583 | } | ||
3584 | */ | ||
3585 | /* @end */ | ||
3586 | /* @end */ | ||
3587 | /* @end */ | ||
3588 | /* @group Card Dialog FIELDS */ | ||
3589 | div.CardDialog div.body { | ||
3590 | padding-bottom: 1px; | ||
3591 | } | ||
3592 | div.CardDialog div.body table.fields { | ||
3593 | width: 100%; | ||
3594 | padding-top: 8px; | ||
3595 | padding-bottom: 1px; | ||
3596 | } | ||
3597 | div.CardDialog div.body table.fields thead { | ||
3598 | background: url(./images/old/cardDialog/dottedLine_background.png) repeat-x 0 15px; | ||
3599 | } | ||
3600 | div.CardDialog div.body table.fields tfoot { | ||
3601 | background: url(./images/old/cardDialog/dottedLine_background.png) repeat-x 0 bottom; | ||
3602 | } | ||
3603 | div.CardDialog div.body table.fields thead th { | ||
3604 | text-align: left; | ||
3605 | font-weight: normal; | ||
3606 | font-size: 9pt; | ||
3607 | color: #787872; | ||
3608 | padding-left: 10px; | ||
3609 | padding-bottom: 3px; | ||
3610 | /* | ||
3611 | border-bottom: 1px dotted; | ||
3612 | */ | ||
3613 | |||
3614 | } | ||
3615 | div.CardDialog div.body table.fields thead th.fieldStateTH { | ||
3616 | width: 10px; | ||
3617 | } | ||
3618 | div.CardDialog div.body table.fields tbody td.fieldLabel input { | ||
3619 | width: 130px; | ||
3620 | } | ||
3621 | div.CardDialog div.body table.fields thead th.fieldLockTH { | ||
3622 | width: 10px; | ||
3623 | } | ||
3624 | div.CardDialog div.body table.fields tbody td.fieldValue input { | ||
3625 | width: 280px; | ||
3626 | } | ||
3627 | div.CardDialog div.body table.fields thead th.fieldActionTH { | ||
3628 | width: 30px; | ||
3629 | } | ||
3630 | div.CardDialog div.body table.fields thead th.fieldDeleteTH { | ||
3631 | width: 40px; | ||
3632 | } | ||
3633 | div.CardDialog div.body table.fields tbody tr:hover, | ||
3634 | div.CardDialog div.body table.fields tbody tr.selectedField { | ||
3635 | background-color: #cccec0; | ||
3636 | } | ||
3637 | div.CardDialog div.body table.fields tbody tr td { | ||
3638 | font-size: 11pt; | ||
3639 | color: #787872; | ||
3640 | height: 35px; | ||
3641 | } | ||
3642 | div.CardDialog div.body table.fields tbody tr td input { | ||
3643 | font-size: 11pt; | ||
3644 | border: 0px; | ||
3645 | padding: 5px; | ||
3646 | color: #787872; | ||
3647 | border: 1px solid #ededeb; | ||
3648 | background-color: #ededeb; | ||
3649 | height: 30px; | ||
3650 | } | ||
3651 | /* | ||
3652 | div.CardDialog div.body table.fields tbody tr td.fieldValue div { | ||
3653 | margin-right: 10px; | ||
3654 | } | ||
3655 | |||
3656 | div.CardDialog div.body table.fields tbody tr td.fieldValue div input { | ||
3657 | width: 100%; | ||
3658 | } | ||
3659 | */ | ||
3660 | div.CardDialog div.body table.fields tbody tr td.fieldValue div.locked input { | ||
3661 | background: #ededeb url(./images/old/cardDialog/password_background.png) no-repeat 2px 3px; | ||
3662 | color: #ededeb; | ||
3663 | color: rgba(237, 237, 235, 0.1); | ||
3664 | /* color: black;*/ | ||
3665 | |||
3666 | /* line-height: 100px;*/ | ||
3667 | |||
3668 | overflow: hidden; | ||
3669 | } | ||
3670 | div.locked input.value::-moz-selection { | ||
3671 | background: #ff0000; | ||
3672 | } | ||
3673 | div.locked input.value::selection { | ||
3674 | background: #ff0000; | ||
3675 | } | ||
3676 | div.CardDialog div.body table.fields tbody tr.new.selectedField td input, | ||
3677 | div.CardDialog div.body table.fields tbody tr.new:hover td input, | ||
3678 | div.CardDialog div.body table.fields tbody tr:hover td input, | ||
3679 | div.CardDialog div.body table.fields tbody tr.selectedField td input { | ||
3680 | border: 1px solid #515247; | ||
3681 | background-color: #b5b7ab; | ||
3682 | } | ||
3683 | div.CardDialog div.body table.fields tbody tr:hover td.fieldValue div.locked input, | ||
3684 | div.CardDialog div.body table.fields tbody tr.selectedField td.fieldValue div.locked input { | ||
3685 | background: #b5b7ab url(./images/old/cardDialog/password_background.png) no-repeat 2px 3px; | ||
3686 | color: #b5b7ab; | ||
3687 | color: rgba(237, 237, 235, 0.1); | ||
3688 | } | ||
3689 | div.CardDialog div.body table.fields tbody td.fieldLock div { | ||
3690 | width: 20px; | ||
3691 | height: 19px; | ||
3692 | cursor: pointer; | ||
3693 | } | ||
3694 | div.CardDialog div.body table.fields tbody tr:hover td.fieldLock div.locked { | ||
3695 | background-image: url(./images/old/cardDialog/lock_closed.png); | ||
3696 | } | ||
3697 | div.CardDialog div.body table.fields tbody tr:hover td.fieldLock div.unlocked { | ||
3698 | background-image: url(./images/old/cardDialog/lock_open.png); | ||
3699 | } | ||
3700 | div.CardDialog div.body table.fields tbody tr td.fieldAddDelete div span a { | ||
3701 | text-decoration: none; | ||
3702 | visibility: hidden; | ||
3703 | font-size: 8pt; | ||
3704 | vertical-align: -13px; | ||
3705 | color: black; | ||
3706 | } | ||
3707 | div.CardDialog div.body table.fields tbody tr.selectedField td.fieldAddDelete div span a { | ||
3708 | visibility: visible; | ||
3709 | } | ||
3710 | div.CardDialog div.body table.fields tbody tr:hover td.fieldAddDelete div span a { | ||
3711 | visibility: visible; | ||
3712 | } | ||
3713 | div.CardDialog div.body table.fields tbody tr:hover td.fieldAddDelete div:hover span a { | ||
3714 | color: white; | ||
3715 | } | ||
3716 | div.CardDialog div.body div.notes { | ||
3717 | background: url(./images/old/cardDialog/dottedLine_background.png) repeat-x 0 0; | ||
3718 | padding-top: 2px; | ||
3719 | } | ||
3720 | div.CardDialog div.body div.notes div { | ||
3721 | padding-left: 20px; | ||
3722 | padding-right: 20px; | ||
3723 | padding-top: 4px; | ||
3724 | padding-bottom: 4px; | ||
3725 | } | ||
3726 | div.CardDialog div.body div.notes div:hover, | ||
3727 | div.CardDialog div.body div.notes.selectedField div { | ||
3728 | background-color: #cccec0; | ||
3729 | } | ||
3730 | div.CardDialog.loading div.body div.notes div textarea { | ||
3731 | display: none; | ||
3732 | } | ||
3733 | div.CardDialog div.body div.notes div textarea { | ||
3734 | border: 0; | ||
3735 | width: 470px; | ||
3736 | /* | ||
3737 | width: 100%; | ||
3738 | height: 100px; | ||
3739 | min-height: 400px; | ||
3740 | overflow: hidden; | ||
3741 | */ | ||
3742 | |||
3743 | color: #787872; | ||
3744 | border: 1px solid #ededeb; | ||
3745 | background-color: #ededeb; | ||
3746 | display: block; | ||
3747 | line-height: 12pt; | ||
3748 | min-height: 50px; | ||
3749 | } | ||
3750 | div.CardDialog div.body div.notes div:hover textarea, | ||
3751 | div.CardDialog div.body div.notes.selectedField div textarea { | ||
3752 | border: 1px solid #515247; | ||
3753 | background-color: #b5b7ab; | ||
3754 | } | ||
3755 | div.CardDialog div.body table.fields tbody tr td.fieldAction { | ||
3756 | /* background-color: red;*/ | ||
3757 | |||
3758 | padding-left: 4px; | ||
3759 | } | ||
3760 | div.CardDialog div.body table.fields tbody tr td.fieldAction a { | ||
3761 | display: inline-block; | ||
3762 | text-decoration: none; | ||
3763 | text-align: center; | ||
3764 | width: 16px; | ||
3765 | height: 16px; | ||
3766 | } | ||
3767 | div.CardDialog div.body table.fields tbody tr td.fieldAction a.email { | ||
3768 | background: url(./images/old/cardDialog/fieldTypes/email.png) no-repeat 0 0; | ||
3769 | } | ||
3770 | div.CardDialog div.body table.fields tbody tr td.fieldAction a.email:hover { | ||
3771 | background: url(./images/old/cardDialog/fieldTypes/email_selected.png) no-repeat 0 0; | ||
3772 | } | ||
3773 | div.CardDialog div.body table.fields tbody tr td.fieldAction a.url { | ||
3774 | background: url(./images/old/cardDialog/fieldTypes/url.png) no-repeat 0 0; | ||
3775 | } | ||
3776 | div.CardDialog div.body table.fields tbody tr td.fieldAction a.url:hover { | ||
3777 | background: url(./images/old/cardDialog/fieldTypes/url_selected.png) no-repeat 0 0; | ||
3778 | } | ||
3779 | div.CardDialog div.body table.fields tbody tr td.fieldAction a.password { | ||
3780 | background: url(./images/old/cardDialog/fieldTypes/password.png) no-repeat 0 0; | ||
3781 | } | ||
3782 | div.CardDialog div.body table.fields tbody tr td.fieldAction a.password:hover { | ||
3783 | background: url(./images/old/cardDialog/fieldTypes/password_selected.png) no-repeat 0 0; | ||
3784 | } | ||
3785 | /* | ||
3786 | / *div.CardDialog div.body table.fields tbody* / tr.new { | ||
3787 | background: yellow; | ||
3788 | } | ||
3789 | |||
3790 | div.CardDialog div.body table.fields tbody tr.new td input { | ||
3791 | border: 1px solid red; | ||
3792 | background-color: green; | ||
3793 | } | ||
3794 | */ | ||
3795 | /* @end */ | ||
3796 | /* @end */ | ||
3797 | div#disabledZone { | ||
3798 | display: block; | ||
3799 | visibility: visible; | ||
3800 | } | ||
3801 | div#messageZone { | ||
3802 | display: block; | ||
3803 | visibility: visible; | ||
3804 | } | ||
3805 | div.CardDialog div.error div.img { | ||
3806 | margin: 10px; | ||
3807 | width: 50px; | ||
3808 | height: 50px; | ||
3809 | float: left; | ||
3810 | background-image: url(./images/old/simpleMessageBox/Alert.png); | ||
3811 | } | ||
3812 | /* @group Ruler */ | ||
3813 | /* | ||
3814 | div.rulerExtraWrapper { | ||
3815 | position: absolute; | ||
3816 | top: 0px; | ||
3817 | left: 0px; | ||
3818 | width: 100%; | ||
3819 | height: 100%; | ||
3820 | overflow: hidden; | ||
3821 | background-color: rgba(255, 0, 0, 0.2); | ||
3822 | z-index: 24999; | ||
3823 | } | ||
3824 | */ | ||
3825 | div.rulerWrapper { | ||
3826 | left: -1000px; | ||
3827 | margin-top: -30px; | ||
3828 | margin-left: 50%; | ||
3829 | z-index: 25000; | ||
3830 | } | ||
3831 | div.rulerWrapper.fixed { | ||
3832 | position: fixed; | ||
3833 | } | ||
3834 | div.rulerWrapper.scrollable { | ||
3835 | position: absolute; | ||
3836 | } | ||
3837 | div.ruler { | ||
3838 | /* position: absolute;*/ | ||
3839 | |||
3840 | width: 541px; | ||
3841 | height: 96px; | ||
3842 | margin-left: -270px; | ||
3843 | background: url(./images/old/ruler/ruler.png) no-repeat; | ||
3844 | } | ||
3845 | div.ruler a { | ||
3846 | position: absolute; | ||
3847 | display: block; | ||
3848 | width: 15px; | ||
3849 | height: 15px; | ||
3850 | top: 3px; | ||
3851 | text-decoration: none; | ||
3852 | } | ||
3853 | div.ruler a.exit { | ||
3854 | margin-left: 2px; | ||
3855 | background: url(./images/old/ruler/exit.png) no-repeat; | ||
3856 | } | ||
3857 | div.ruler a.exit:hover { | ||
3858 | background: url(./images/old/ruler/exit_selected.png) no-repeat; | ||
3859 | } | ||
3860 | div.ruler a.smallButton.previous { | ||
3861 | right: 16px; | ||
3862 | background: url(./images/old/ruler/small_previous.png) no-repeat; | ||
3863 | } | ||
3864 | div.ruler a.smallButton.previous:hover { | ||
3865 | cursor: pointer; | ||
3866 | background: url(./images/old/ruler/small_previous_selected.png) no-repeat; | ||
3867 | } | ||
3868 | div.ruler a.smallButton.previous.disabled, | ||
3869 | div.ruler a.smallButton.previous.disabled:hover { | ||
3870 | cursor: default; | ||
3871 | background: url(./images/old/ruler/small_previous_disabled.png) no-repeat; | ||
3872 | } | ||
3873 | div.ruler a.smallButton.next { | ||
3874 | right: 3px; | ||
3875 | background: url(./images/old/ruler/small_next.png) no-repeat; | ||
3876 | } | ||
3877 | div.ruler a.smallButton.next:hover { | ||
3878 | cursor: pointer; | ||
3879 | background: url(./images/old/ruler/small_next_selected.png) no-repeat; | ||
3880 | } | ||
3881 | div.ruler a.smallButton.next.disabled, | ||
3882 | div.ruler a.smallButton.next.disabled:hover { | ||
3883 | cursor: default; | ||
3884 | background: url(./images/old/ruler/small_next_disabled.png) no-repeat; | ||
3885 | } | ||
3886 | div.ruler div.steps, | ||
3887 | div.ruler div.dots { | ||
3888 | position: absolute; | ||
3889 | background-color: rgba(255, 255, 255, 0); | ||
3890 | margin-left: 30px; | ||
3891 | margin-right: 30px; | ||
3892 | } | ||
3893 | div.ruler div.steps { | ||
3894 | top: 25px; | ||
3895 | height: 30px; | ||
3896 | } | ||
3897 | div.ruler div.dots { | ||
3898 | top: 58px; | ||
3899 | height: 25px; | ||
3900 | } | ||
3901 | div.ruler div ul { | ||
3902 | list-style-type: none; | ||
3903 | margin: 0px; | ||
3904 | padding: 0px; | ||
3905 | } | ||
3906 | div.ruler div ul li { | ||
3907 | display: inline-block; | ||
3908 | vertical-align: top; | ||
3909 | } | ||
3910 | div.ruler > div.steps > ul > li:first-child, | ||
3911 | div.ruler > div.dots > ul > li:first-child { | ||
3912 | margin-left: 0px; | ||
3913 | } | ||
3914 | div.ruler div.steps_3 ul li { | ||
3915 | margin-left: 135px; | ||
3916 | } | ||
3917 | div.ruler div.steps_4 ul li { | ||
3918 | margin-left: 67px; | ||
3919 | } | ||
3920 | div.ruler div.steps_5 ul li { | ||
3921 | margin-left: 32px; | ||
3922 | } | ||
3923 | div.ruler div.steps_6 ul li { | ||
3924 | margin-left: 12px; | ||
3925 | } | ||
3926 | div.ruler div ul li span { | ||
3927 | font-weight: bold; | ||
3928 | text-align: center; | ||
3929 | width: 70px; | ||
3930 | display: block; | ||
3931 | font-size: 8pt; | ||
3932 | overflow: hidden; | ||
3933 | color: rgba(0, 0, 0, 0.3); | ||
3934 | } | ||
3935 | div.ruler div ul li.selected span { | ||
3936 | color: black; | ||
3937 | } | ||
3938 | div.ruler div.dots ul li span { | ||
3939 | /* | ||
3940 | text-align: center; | ||
3941 | width: 26px; | ||
3942 | margin-left: 22px; | ||
3943 | margin-right: 22px; | ||
3944 | height: 25px; | ||
3945 | background-color: #e57218; | ||
3946 | */ | ||
3947 | |||
3948 | font-size: 40pt; | ||
3949 | line-height: 47px; | ||
3950 | } | ||
3951 | div.ruler div.marker { | ||
3952 | position: absolute; | ||
3953 | top: -3px; | ||
3954 | /* left: -246px;*/ | ||
3955 | |||
3956 | } | ||
3957 | div.ruler div.marker div.markerBody { | ||
3958 | width: 77px; | ||
3959 | height: 97px; | ||
3960 | background: url(./images/old/ruler/marker.png) no-repeat; | ||
3961 | } | ||
3962 | div.ruler div.marker div.next { | ||
3963 | position: absolute; | ||
3964 | top: 25px; | ||
3965 | left: 76px; | ||
3966 | width: 27px; | ||
3967 | height: 65px; | ||
3968 | background: url(./images/old/ruler/next.png) no-repeat -13px; | ||
3969 | z-index: 26000; | ||
3970 | } | ||
3971 | div.ruler div.marker div.next:hover { | ||
3972 | cursor: pointer; | ||
3973 | background: url(./images/old/ruler/next.png) no-repeat -2px; | ||
3974 | } | ||
3975 | div.ruler div.marker div.disabled { | ||
3976 | display: none; | ||
3977 | } | ||
3978 | div.ruler div.marker div.previous { | ||
3979 | position: absolute; | ||
3980 | top: 25px; | ||
3981 | left: -24px; | ||
3982 | width: 27px; | ||
3983 | height: 65px; | ||
3984 | /* background: url(./images/old/ruler/previous.png) no-repeat 13px 1px;*/ | ||
3985 | |||
3986 | background: url(./images/old/ruler/previous.png) no-repeat 18px 1px; | ||
3987 | z-index: 26000; | ||
3988 | } | ||
3989 | div.ruler div.marker div.previous:hover { | ||
3990 | cursor: pointer; | ||
3991 | /* background: url(./images/old/ruler/previous.png) no-repeat 2px 1px;*/ | ||
3992 | |||
3993 | background: url(./images/old/ruler/previous.png) no-repeat 7px 1px; | ||
3994 | } | ||
3995 | /* @end */ | ||
3996 | div.createNewCardSplash { | ||
3997 | margin-top: -450px; | ||
3998 | margin-left: 250px; | ||
3999 | width: 354px; | ||
4000 | float: left; | ||
4001 | height: 186px; | ||
4002 | text-align: center; | ||
4003 | background: url(./images/old/main/grid/createNewCardSplash.png) no-repeat; | ||
4004 | } | ||
4005 | div.createNewCardSplash:hover { | ||
4006 | cursor: pointer; | ||
4007 | background: url(./images/old/main/grid/createNewCardSplash_selected.png) no-repeat; | ||
4008 | } | ||
4009 | div.createNewCardSplash span { | ||
4010 | display: block; | ||
4011 | padding-top: 130px; | ||
4012 | font-size: 14pt; | ||
4013 | color: #9a9586; | ||
4014 | } | ||
4015 | div.createNewCardSplash:hover span { | ||
4016 | color: #605c4e; | ||
4017 | } | ||
4018 | /*=============================================*/ | ||
4019 | div.NewUserCreation div.tabContainer { | ||
4020 | min-height: 150px; | ||
4021 | height: 200px; | ||
4022 | } | ||
4023 | div.NewUserCreation div.tabContainer > ul.tabs { | ||
4024 | display: none; | ||
4025 | } | ||
4026 | ul.createUserStates li.creating { | ||
4027 | background: url(./images/old/creatingUser.gif) no-repeat center center; | ||
4028 | } | ||
4029 | ul.createUserStates li { | ||
4030 | height: 100px; | ||
4031 | } | ||
4032 | ul.createUserStates li span { | ||
4033 | display: block; | ||
4034 | width: 100%; | ||
4035 | text-align: center; | ||
4036 | color: #999; | ||
4037 | font-style: italic; | ||
4038 | } | ||
4039 | div.NewUserCreation form.newUserCreationForm ul.tabPanels { | ||
4040 | padding-top: 10px; | ||
4041 | } | ||
4042 | div.NewUserCreation form.newUserCreationForm ul ul { | ||
4043 | margin-left: auto; | ||
4044 | margin-right: auto; | ||
4045 | width: 400px; | ||
4046 | } | ||
4047 | div.NewUserCreation form.newUserCreationForm ul.credentials li { | ||
4048 | height: 45px; | ||
4049 | } | ||
4050 | div.NewUserCreation form.newUserCreationForm ul.credentials span.label { | ||
4051 | text-align: right; | ||
4052 | display: inline-block; | ||
4053 | font-size: 12pt; | ||
4054 | color: #787872; | ||
4055 | width: 110px; | ||
4056 | vertical-align: baseline; | ||
4057 | } | ||
4058 | div.NewUserCreation form.newUserCreationForm ul.credentials input { | ||
4059 | font-size: 13pt; | ||
4060 | color: #787872; | ||
4061 | height: 35px; | ||
4062 | margin-left: 15px; | ||
4063 | padding-left: 5px; | ||
4064 | } | ||
4065 | div.NewUserCreation form.newUserCreationForm ul.termsOfService li { | ||
4066 | padding: 0 0 15 0; | ||
4067 | } | ||
4068 | div.NewUserCreation form.newUserCreationForm ul.termsOfService input { | ||
4069 | display: inline-block; | ||
4070 | } | ||
4071 | div.NewUserCreation form.newUserCreationForm ul.termsOfService .label { | ||
4072 | display: inline-block; | ||
4073 | text-align: left; | ||
4074 | font-size: 12pt; | ||
4075 | color: #787872; | ||
4076 | width: 350px; | ||
4077 | vertical-align: top; | ||
4078 | padding-left: 10px; | ||
4079 | } | ||
4080 | div.NewUserCreation form.newUserCreationForm ul.termsOfService a { | ||
4081 | font-weight: bold; | ||
4082 | color: #787872; | ||
4083 | text-decoration: none; | ||
4084 | } | ||
4085 | div.NewUserCreation form.newUserCreationForm ul.termsOfService a:hover { | ||
4086 | color: #444; | ||
4087 | } | ||
4088 | div.NewUserCreation form.newUserCreationForm ul.createUserStates li.done span { | ||
4089 | font-size: 16pt; | ||
4090 | color: green; | ||
4091 | } | ||
4092 | div.NewUserCreation form.newUserCreationForm ul.createUserStates li.fail span { | ||
4093 | font-size: 16pt; | ||
4094 | color: red; | ||
4095 | } | ||
diff --git a/frontend/gamma/html/exitPage_template.html b/frontend/gamma/html/exit_template.html index e17bee0..e17bee0 100644 --- a/frontend/gamma/html/exitPage_template.html +++ b/frontend/gamma/html/exit_template.html | |||
diff --git a/frontend/gamma/html/index_template.html b/frontend/gamma/html/index_template.html index 5f5ed2d..699e0e9 100644 --- a/frontend/gamma/html/index_template.html +++ b/frontend/gamma/html/index_template.html | |||
@@ -1,70 +1,78 @@ | |||
1 | <html> | 1 | <html> |
2 | <head> | 2 | <head> |
3 | <title>@page.title@</title> | 3 | <title>@page.title@</title> |
4 | <meta http-equiv="content-type" content="text/html; charset=utf-8" /> | 4 | <meta http-equiv="content-type" content="text/html; charset=utf-8" /> |
5 | <!-- | 5 | <!-- |
6 | @copyright@ | 6 | @copyright@ |
7 | --> | 7 | --> |
8 | 8 | ||
9 | @css@ | 9 | @css@ |
10 | 10 | ||
11 | <link rel="shortcut icon" href="./clipperz.ico" /> | 11 | <link rel="shortcut icon" href="./clipperz.ico" /> |
12 | 12 | ||
13 | <meta name="description" content="Login to your web accounts with just one click. Never type a password again! Use multiple complex passwords and forget them. A password manager that enhances your online security." /> | 13 | <meta name="description" content="Login to your web accounts with just one click. Never type a password again! Use multiple complex passwords and forget them. A password manager that enhances your online security." /> |
14 | <meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" /> | 14 | <meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" /> |
15 | <script> | 15 | <script> |
16 | Clipperz_IEisBroken = false; | 16 | Clipperz_IEisBroken = false; |
17 | Clipperz_normalizedNewLine = '\n'; | 17 | Clipperz_normalizedNewLine = '\n'; |
18 | Clipperz_dumpUrl = "/dump/"; | 18 | Clipperz_dumpUrl = "/../dump/"; |
19 | "use strict"; | ||
19 | </script> | 20 | </script> |
20 | 21 | ||
21 | <!--[if IE]><script> | 22 | <!--[if IE]><script> |
22 | Clipperz_IEisBroken = true; | 23 | Clipperz_IEisBroken = true; |
23 | Clipperz_normalizedNewLine = '\x0d\x0a'; | 24 | Clipperz_normalizedNewLine = '\x0d\x0a'; |
24 | </script><![endif]--> | 25 | </script><![endif]--> |
25 | 26 | ||
26 | @js_LINKED@ | 27 | @js_LINKED@ |
27 | 28 | ||
28 | </head> | 29 | </head> |
29 | <body> | 30 | <body> |
30 | <div id="mainDiv"> | 31 | <div id="mainDiv"> |
31 | <div id="loading"> | 32 | <div id="loading"> |
32 | <div> | 33 | <div> |
33 | <!-- a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a --> | 34 | <!-- a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a --> |
34 | <h1>clipperz</h1> | 35 | <h1>clipperz</h1> |
35 | <h3 class="clipperzPayoff">keep it to yourself!</h3> | 36 | <h3 class="clipperzPayoff">keep it to yourself!</h3> |
36 | <!-- h5>loading ...</h5 --> | 37 | <!-- h5>loading ...</h5 --> |
37 | </div> | 38 | </div> |
38 | </div> | 39 | </div> |
39 | 40 | ||
40 | @js_EMBEDDED@ | 41 | @js_EMBEDDED@ |
41 | 42 | ||
42 | </div> | 43 | </div> |
43 | <!-- div id="applicationVersionType" class="@application.version.type@"></div --> | 44 | <!-- div id="applicationVersionType" class="@application.version.type@"></div --> |
44 | 45 | ||
45 | <script> | 46 | <script> |
46 | Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.JSON({'url':'@request.path@', 'shouldPayTolls':@should.pay.toll@}); | 47 | Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.JSON({'url':'@request.path@', 'shouldPayTolls':@should.pay.toll@}); |
47 | /*offline_data_placeholder*/ | 48 | /*offline_data_placeholder*/ |
49 | |||
50 | /* * / | ||
51 | MochiKit.DOM.addLoadEvent(function () { | ||
52 | Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); | ||
53 | MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'doLogin', {username:'j', passphrase:'j'}); | ||
54 | }); | ||
55 | / * */ | ||
48 | </script> | 56 | </script> |
49 | 57 | ||
50 | <!-- --> | 58 | <!-- --> |
51 | <!-- div id="javaScriptAlert"> | 59 | <!-- div id="javaScriptAlert"> |
52 | <div class="mask"></div> | 60 | <div class="mask"></div> |
53 | <div class="message"> | 61 | <div class="message"> |
54 | <div class="header"></div> | 62 | <div class="header"></div> |
55 | <div class="body"> | 63 | <div class="body"> |
56 | <div class="alertLogo"></div> | 64 | <div class="alertLogo"></div> |
57 | <div class="alert"> | 65 | <div class="alert"> |
58 | <h1>Attention!</h1> | 66 | <h1>Attention!</h1> |
59 | <p>If you can read this message, the chances are that your browser does not properly support JavaScript? or you have disabled this functionality yourself.</p> | 67 | <p>If you can read this message, the chances are that your browser does not properly support JavaScript? or you have disabled this functionality yourself.</p> |
60 | <h3>Javascript is required to access Clipperz.</h3> | 68 | <h3>Javascript is required to access Clipperz.</h3> |
61 | <h5>Please enable scripting or upgrade your browser.</h5> | 69 | <h5>Please enable scripting or upgrade your browser.</h5> |
62 | </div> | 70 | </div> |
63 | </div> | 71 | </div> |
64 | <div class="footer"></div> | 72 | <div class="footer"></div> |
65 | </div> | 73 | </div> |
66 | </div --> | 74 | </div --> |
67 | <!-- --> | 75 | <!-- --> |
68 | 76 | ||
69 | </body> | 77 | </body> |
70 | </html> | 78 | </html> |
diff --git a/frontend/gamma/html/mobile.appcache b/frontend/gamma/html/mobile.appcache new file mode 100644 index 0000000..237b5ad --- a/dev/null +++ b/frontend/gamma/html/mobile.appcache | |||
@@ -0,0 +1,24 @@ | |||
1 | CACHE MANIFEST | ||
2 | # 2012-02-23-v0.0.1 | ||
3 | |||
4 | # Entry to add into Apache config: | ||
5 | # AddType text/cache-manifest .appcache | ||
6 | |||
7 | # Explicitly cached entries | ||
8 | CACHE: | ||
9 | index.mobile.html | ||
10 | *.favico | ||
11 | |||
12 | # static.html will be served if the user is offline | ||
13 | FALLBACK: | ||
14 | /index.mobile.html /index.mobile.html | ||
15 | |||
16 | # /main.py /static.html | ||
17 | # images/large/ images/offline.jpg | ||
18 | # *.html /offline.html | ||
19 | |||
20 | |||
21 | # Resources that require the user to be online. | ||
22 | NETWORK: | ||
23 | * | ||
24 | # login.php, http://api.twitter.com, etc. | ||
diff --git a/frontend/gamma/html/mobile_template.html b/frontend/gamma/html/mobile_template.html index 0a1b54c..184fbd9 100644 --- a/frontend/gamma/html/mobile_template.html +++ b/frontend/gamma/html/mobile_template.html | |||
@@ -1,84 +1,66 @@ | |||
1 | <!-- | 1 | <!doctype html> |
2 | <!-- Conditional comment for mobile ie7 blogs.msdn.com/b/iemobile/ --> | ||
3 | <!--[if IEMobile 7 ]> <html class="no-js iem7" lang="en"> <![endif]--> | ||
4 | <!--[if (gt IEMobile 7)|!(IEMobile)]><!--> <html class="no-js" lang="en" manifest="mobile.appcache"> <!--<![endif]--> | ||
5 | <head> | ||
6 | <title>@page.title@</title> | ||
7 | <meta charset="utf-8"> | ||
2 | 8 | ||
3 | Copyright 2008-2011 Clipperz Srl | 9 | <meta name="HandheldFriendly" content="True"> |
10 | <meta name="MobileOptimized" content="320"> | ||
11 | <meta name="viewport" content="width=device-width"> | ||
4 | 12 | ||
5 | This file is part of Clipperz Community Edition. | 13 | <!-- link rel="apple-touch-icon-precomposed" ... --> |
6 | Clipperz Community Edition is an online password manager. | 14 | <link rel="apple-touch-icon" sizes="114x114" href="data:image/png;charset=utf-8;base64,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"> |
7 | For further information about its features and functionalities please | 15 | <link rel="apple-touch-icon" sizes="72x72" href="data:image/png;charset=utf-8;base64,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"> |
8 | refer to http://www.clipperz.com. | 16 | <link rel="apple-touch-icon" href="data:image/png;charset=utf-8;base64,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"> |
17 | <link rel="shortcut icon" href="data:image/png;charset=utf-8;base64,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"> | ||
9 | 18 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 19 | <meta http-equiv="cleartype" content="on"> |
11 | it and/or modify it under the terms of the GNU Affero General Public | 20 | <meta name="apple-mobile-web-app-capable" content="yes"> |
12 | License as published by the Free Software Foundation, either version | ||
13 | 3 of the License, or (at your option) any later version. | ||
14 | 21 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | ||
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | ||
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
18 | See the GNU Affero General Public License for more details. | ||
19 | 22 | ||
20 | * You should have received a copy of the GNU Affero General Public | 23 | <!-- link rel="apple-touch-startup-image" href="data:image/png;charset=utf-8;base64,iVBORw0K...ggo=" --> |
21 | License along with Clipperz Community Edition. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | 24 | ||
25 | <!-- | ||
26 | @copyright@ | ||
24 | --> | 27 | --> |
25 | 28 | ||
26 | <html> | ||
27 | <head> | ||
28 | <title>@page.title@</title> | ||
29 | <meta http-equiv="content-type" content="text/html; charset=utf-8" /> | ||
30 | @copyright@ | ||
31 | @css@ | 29 | @css@ |
32 | 30 | ||
33 | <link rel="shortcut icon" href="./clipperz.ico" /> | 31 | <link rel="shortcut icon" href="./clipperz.ico" /> |
34 | 32 | ||
35 | <meta name="description" content="Login to your web accounts with just one click. Never type a password again! Use multiple complex passwords and forget them. A password manager that enhances your online security." /> | 33 | <meta name="description" content="Login to your web accounts with just one click. Never type a password again! Use multiple complex passwords and forget them. A password manager that enhances your online security." /> |
36 | <meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" /> | 34 | <meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" /> |
37 | <script> | 35 | <script> |
38 | Clipperz_IEisBroken = false; | 36 | Clipperz_IEisBroken = false; |
39 | Clipperz_normalizedNewLine = '\n'; | 37 | Clipperz_normalizedNewLine = '\n'; |
40 | Clipperz_dumpUrl = "/dump/"; | 38 | Clipperz_dumpUrl = "/dump/"; |
41 | </script> | 39 | </script> |
42 | 40 | ||
43 | <!--[if IE]><script> | 41 | @js_LINKED@ |
44 | Clipperz_IEisBroken = true; | ||
45 | Clipperz_normalizedNewLine = '\x0d\x0a'; | ||
46 | </script><![endif]--> | ||
47 | |||
48 | @CLIPPERZ_DEBUG_VERSION@ | ||
49 | 42 | ||
50 | </head> | 43 | </head> |
51 | <body> | 44 | <body> |
52 | <div id="mainDiv"> | 45 | <div id="mainDiv"> |
53 | <div id="loading"> | 46 | <div id="loading"> |
54 | <a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a> | 47 | <div> |
55 | <h5 class="clipperzPayoff">keep it to yourself!</h5> | 48 | <!-- a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a --> |
56 | <h2>loading ...</h2> | 49 | <h1>clipperz</h1> |
50 | <h3 class="clipperzPayoff">keep it to yourself!</h3> | ||
51 | <!-- h5>loading ...</h5 --> | ||
52 | </div> | ||
57 | </div> | 53 | </div> |
58 | 54 | ||
59 | @CLIPPERZ_INSTALLED_VERSION@ | 55 | @js_EMBEDDED@ |
60 | |||
61 | </div> | ||
62 | <div id="applicationVersionType" class="@application.version.type@"></div> | ||
63 | 56 | ||
64 | <!-- --> | ||
65 | <div id="javaScriptAlert"> | ||
66 | <div class="mask"></div> | ||
67 | <div class="message"> | ||
68 | <div class="header"></div> | ||
69 | <div class="body"> | ||
70 | <div class="alertLogo"></div> | ||
71 | <div class="alert"> | ||
72 | <h1>Attention!</h1> | ||
73 | <p>If you can read this message, the chances are that your browser does not properly support JavaScript? or you have disabled this functionality yourself.</p> | ||
74 | <h3>Javascript is required to access Clipperz.</h3> | ||
75 | <h5>Please enable scripting or upgrade your browser.</h5> | ||
76 | </div> | ||
77 | </div> | ||
78 | <div class="footer"></div> | ||
79 | </div> | ||
80 | </div> | 57 | </div> |
81 | <!-- --> | 58 | <!-- div id="applicationVersionType" class="@application.version.type@"></div --> |
59 | |||
60 | <script> | ||
61 | Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.JSON({'url':'@request.path@', 'shouldPayTolls':@should.pay.toll@}); | ||
62 | /*offline_data_placeholder*/ | ||
63 | </script> | ||
82 | 64 | ||
83 | </body> | 65 | </body> |
84 | </html> | 66 | </html> |
diff --git a/frontend/gamma/images/old/alert/alert.png b/frontend/gamma/images/old/alert/alert.png new file mode 100644 index 0000000..ade6040 --- a/dev/null +++ b/frontend/gamma/images/old/alert/alert.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/alert/body.png b/frontend/gamma/images/old/alert/body.png new file mode 100644 index 0000000..3f0ab21 --- a/dev/null +++ b/frontend/gamma/images/old/alert/body.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/alert/footer.png b/frontend/gamma/images/old/alert/footer.png new file mode 100644 index 0000000..a9587c8 --- a/dev/null +++ b/frontend/gamma/images/old/alert/footer.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/alert/header.png b/frontend/gamma/images/old/alert/header.png new file mode 100644 index 0000000..079dd13 --- a/dev/null +++ b/frontend/gamma/images/old/alert/header.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/bookmarklet/placeholder.png b/frontend/gamma/images/old/bookmarklet/placeholder.png new file mode 100644 index 0000000..792dbf5 --- a/dev/null +++ b/frontend/gamma/images/old/bookmarklet/placeholder.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/bookmarklet/placeholder_icon.png b/frontend/gamma/images/old/bookmarklet/placeholder_icon.png new file mode 100644 index 0000000..dc06721 --- a/dev/null +++ b/frontend/gamma/images/old/bookmarklet/placeholder_icon.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/bookmarklet/placeholder_selected.png b/frontend/gamma/images/old/bookmarklet/placeholder_selected.png new file mode 100644 index 0000000..d01ac89 --- a/dev/null +++ b/frontend/gamma/images/old/bookmarklet/placeholder_selected.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/bookmarklet/placeholder_selected_icon.png b/frontend/gamma/images/old/bookmarklet/placeholder_selected_icon.png new file mode 100644 index 0000000..c8c2a86 --- a/dev/null +++ b/frontend/gamma/images/old/bookmarklet/placeholder_selected_icon.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/button/clicked_left.png b/frontend/gamma/images/old/button/clicked_left.png new file mode 100644 index 0000000..332260d --- a/dev/null +++ b/frontend/gamma/images/old/button/clicked_left.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/button/clicked_main.png b/frontend/gamma/images/old/button/clicked_main.png new file mode 100644 index 0000000..d0fe732 --- a/dev/null +++ b/frontend/gamma/images/old/button/clicked_main.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/button/default_left.png b/frontend/gamma/images/old/button/default_left.png new file mode 100644 index 0000000..94178fc --- a/dev/null +++ b/frontend/gamma/images/old/button/default_left.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/button/default_main.png b/frontend/gamma/images/old/button/default_main.png new file mode 100644 index 0000000..8b97bea --- a/dev/null +++ b/frontend/gamma/images/old/button/default_main.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/button/hover_left.png b/frontend/gamma/images/old/button/hover_left.png new file mode 100644 index 0000000..de09c1a --- a/dev/null +++ b/frontend/gamma/images/old/button/hover_left.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/button/hover_main.png b/frontend/gamma/images/old/button/hover_main.png new file mode 100644 index 0000000..6c07f57 --- a/dev/null +++ b/frontend/gamma/images/old/button/hover_main.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/addDirectLogin_background.png b/frontend/gamma/images/old/cardDialog/addDirectLogin_background.png new file mode 100644 index 0000000..130d060 --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/addDirectLogin_background.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/addDirectLogin_disabled_background.png b/frontend/gamma/images/old/cardDialog/addDirectLogin_disabled_background.png new file mode 100644 index 0000000..e67f5c4 --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/addDirectLogin_disabled_background.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/back.png b/frontend/gamma/images/old/cardDialog/back.png new file mode 100644 index 0000000..97ef21e --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/back.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/back_selected.png b/frontend/gamma/images/old/cardDialog/back_selected.png new file mode 100644 index 0000000..18d4f0a --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/back_selected.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/background_body.png b/frontend/gamma/images/old/cardDialog/background_body.png new file mode 100644 index 0000000..9640d23 --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/background_body.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/background_footer.png b/frontend/gamma/images/old/cardDialog/background_footer.png new file mode 100644 index 0000000..4d70eb3 --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/background_footer.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/background_header.png b/frontend/gamma/images/old/cardDialog/background_header.png new file mode 100644 index 0000000..3223a1e --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/background_header.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/dottedLine_background.png b/frontend/gamma/images/old/cardDialog/dottedLine_background.png new file mode 100644 index 0000000..c447f02 --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/dottedLine_background.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/fieldTypes/email.png b/frontend/gamma/images/old/cardDialog/fieldTypes/email.png new file mode 100644 index 0000000..afe4e8a --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/fieldTypes/email.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/fieldTypes/email_selected.png b/frontend/gamma/images/old/cardDialog/fieldTypes/email_selected.png new file mode 100644 index 0000000..017904c --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/fieldTypes/email_selected.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/fieldTypes/password.png b/frontend/gamma/images/old/cardDialog/fieldTypes/password.png new file mode 100644 index 0000000..fff876d --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/fieldTypes/password.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/fieldTypes/passwordTooltip.png b/frontend/gamma/images/old/cardDialog/fieldTypes/passwordTooltip.png new file mode 100644 index 0000000..3eb4d4f --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/fieldTypes/passwordTooltip.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/fieldTypes/password_selected.png b/frontend/gamma/images/old/cardDialog/fieldTypes/password_selected.png new file mode 100644 index 0000000..b9dc839 --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/fieldTypes/password_selected.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/fieldTypes/url.png b/frontend/gamma/images/old/cardDialog/fieldTypes/url.png new file mode 100644 index 0000000..3ac1266 --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/fieldTypes/url.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/fieldTypes/url_selected.png b/frontend/gamma/images/old/cardDialog/fieldTypes/url_selected.png new file mode 100644 index 0000000..77b1143 --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/fieldTypes/url_selected.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/loading.gif b/frontend/gamma/images/old/cardDialog/loading.gif new file mode 100644 index 0000000..a846634 --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/loading.gif | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/lock_closed.png b/frontend/gamma/images/old/cardDialog/lock_closed.png new file mode 100644 index 0000000..5ea9b9e --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/lock_closed.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/lock_open.png b/frontend/gamma/images/old/cardDialog/lock_open.png new file mode 100644 index 0000000..cb94955 --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/lock_open.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/openDirectLogin.png b/frontend/gamma/images/old/cardDialog/openDirectLogin.png new file mode 100644 index 0000000..e0b6a25 --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/openDirectLogin.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/openDirectLogin_selected.png b/frontend/gamma/images/old/cardDialog/openDirectLogin_selected.png new file mode 100644 index 0000000..a2a6f47 --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/openDirectLogin_selected.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/password_background.png b/frontend/gamma/images/old/cardDialog/password_background.png new file mode 100644 index 0000000..9432573 --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/password_background.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/tabs_background.png b/frontend/gamma/images/old/cardDialog/tabs_background.png new file mode 100644 index 0000000..ebaad24 --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/tabs_background.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/cardDialog/tabs_shadow.png b/frontend/gamma/images/old/cardDialog/tabs_shadow.png new file mode 100644 index 0000000..04b51e6 --- a/dev/null +++ b/frontend/gamma/images/old/cardDialog/tabs_shadow.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/creatingUser.gif b/frontend/gamma/images/old/creatingUser.gif new file mode 100644 index 0000000..69448f8 --- a/dev/null +++ b/frontend/gamma/images/old/creatingUser.gif | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/delete_background.png b/frontend/gamma/images/old/delete_background.png new file mode 100644 index 0000000..b9bc088 --- a/dev/null +++ b/frontend/gamma/images/old/delete_background.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/delete_background_left.png b/frontend/gamma/images/old/delete_background_left.png new file mode 100644 index 0000000..af3beac --- a/dev/null +++ b/frontend/gamma/images/old/delete_background_left.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/directLink_background.png b/frontend/gamma/images/old/directLink_background.png new file mode 100644 index 0000000..b36757a --- a/dev/null +++ b/frontend/gamma/images/old/directLink_background.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/directLink_background_left.png b/frontend/gamma/images/old/directLink_background_left.png new file mode 100644 index 0000000..11f282d --- a/dev/null +++ b/frontend/gamma/images/old/directLink_background_left.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/directLink_no_background.png b/frontend/gamma/images/old/directLink_no_background.png new file mode 100644 index 0000000..21a18e2 --- a/dev/null +++ b/frontend/gamma/images/old/directLink_no_background.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/directLogins_background.png b/frontend/gamma/images/old/directLogins_background.png new file mode 100644 index 0000000..959ecaf --- a/dev/null +++ b/frontend/gamma/images/old/directLogins_background.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/directLogins_background_bottom.png b/frontend/gamma/images/old/directLogins_background_bottom.png new file mode 100644 index 0000000..c3c40d0 --- a/dev/null +++ b/frontend/gamma/images/old/directLogins_background_bottom.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/filter/clearFilter_notSelected.png b/frontend/gamma/images/old/filter/clearFilter_notSelected.png new file mode 100644 index 0000000..ec2e2fe --- a/dev/null +++ b/frontend/gamma/images/old/filter/clearFilter_notSelected.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/filter/clearFilter_selected.png b/frontend/gamma/images/old/filter/clearFilter_selected.png new file mode 100644 index 0000000..6bfb463 --- a/dev/null +++ b/frontend/gamma/images/old/filter/clearFilter_selected.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/flags/br.png b/frontend/gamma/images/old/flags/br.png new file mode 100644 index 0000000..51ac06e --- a/dev/null +++ b/frontend/gamma/images/old/flags/br.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/flags/cn.png b/frontend/gamma/images/old/flags/cn.png new file mode 100644 index 0000000..4be2967 --- a/dev/null +++ b/frontend/gamma/images/old/flags/cn.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/flags/de.png b/frontend/gamma/images/old/flags/de.png new file mode 100644 index 0000000..a66d634 --- a/dev/null +++ b/frontend/gamma/images/old/flags/de.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/flags/en.png b/frontend/gamma/images/old/flags/en.png new file mode 100644 index 0000000..6d193aa --- a/dev/null +++ b/frontend/gamma/images/old/flags/en.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/flags/es.png b/frontend/gamma/images/old/flags/es.png new file mode 100644 index 0000000..503ffca --- a/dev/null +++ b/frontend/gamma/images/old/flags/es.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/flags/it.png b/frontend/gamma/images/old/flags/it.png new file mode 100644 index 0000000..a271baf --- a/dev/null +++ b/frontend/gamma/images/old/flags/it.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/flags/jp.png b/frontend/gamma/images/old/flags/jp.png new file mode 100644 index 0000000..19e81e3 --- a/dev/null +++ b/frontend/gamma/images/old/flags/jp.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/flags/ru.png b/frontend/gamma/images/old/flags/ru.png new file mode 100644 index 0000000..7391499 --- a/dev/null +++ b/frontend/gamma/images/old/flags/ru.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/footer/star.png b/frontend/gamma/images/old/footer/star.png new file mode 100644 index 0000000..7c6e53c --- a/dev/null +++ b/frontend/gamma/images/old/footer/star.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/home/box/box_body.png b/frontend/gamma/images/old/home/box/box_body.png new file mode 100644 index 0000000..168c776 --- a/dev/null +++ b/frontend/gamma/images/old/home/box/box_body.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/home/box/box_bottom.png b/frontend/gamma/images/old/home/box/box_bottom.png new file mode 100644 index 0000000..f8e72be --- a/dev/null +++ b/frontend/gamma/images/old/home/box/box_bottom.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/home/box/box_top.png b/frontend/gamma/images/old/home/box/box_top.png new file mode 100644 index 0000000..ff7b607 --- a/dev/null +++ b/frontend/gamma/images/old/home/box/box_top.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/home/download.png b/frontend/gamma/images/old/home/download.png new file mode 100644 index 0000000..deffc1b --- a/dev/null +++ b/frontend/gamma/images/old/home/download.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/home/features/bullet.png b/frontend/gamma/images/old/home/features/bullet.png new file mode 100644 index 0000000..1f51609 --- a/dev/null +++ b/frontend/gamma/images/old/home/features/bullet.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/home/look.png b/frontend/gamma/images/old/home/look.png new file mode 100644 index 0000000..a2a49eb --- a/dev/null +++ b/frontend/gamma/images/old/home/look.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/home/register.png b/frontend/gamma/images/old/home/register.png new file mode 100644 index 0000000..be7c151 --- a/dev/null +++ b/frontend/gamma/images/old/home/register.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/home/register_selected.png b/frontend/gamma/images/old/home/register_selected.png new file mode 100644 index 0000000..f29aaae --- a/dev/null +++ b/frontend/gamma/images/old/home/register_selected.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/iPhone/backButton.png b/frontend/gamma/images/old/iPhone/backButton.png new file mode 100644 index 0000000..e27ea8c --- a/dev/null +++ b/frontend/gamma/images/old/iPhone/backButton.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/iPhone/icon.png b/frontend/gamma/images/old/iPhone/icon.png new file mode 100644 index 0000000..1c97389 --- a/dev/null +++ b/frontend/gamma/images/old/iPhone/icon.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/iPhone/listArrow.png b/frontend/gamma/images/old/iPhone/listArrow.png new file mode 100644 index 0000000..6421a16 --- a/dev/null +++ b/frontend/gamma/images/old/iPhone/listArrow.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/iPhone/locked.png b/frontend/gamma/images/old/iPhone/locked.png new file mode 100644 index 0000000..e00d5f6 --- a/dev/null +++ b/frontend/gamma/images/old/iPhone/locked.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/iPhone/logo_and_header.png b/frontend/gamma/images/old/iPhone/logo_and_header.png new file mode 100644 index 0000000..0fe26a3 --- a/dev/null +++ b/frontend/gamma/images/old/iPhone/logo_and_header.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/iPhone/password_background.png b/frontend/gamma/images/old/iPhone/password_background.png new file mode 100644 index 0000000..9432573 --- a/dev/null +++ b/frontend/gamma/images/old/iPhone/password_background.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/iPhone/pinstripes.png b/frontend/gamma/images/old/iPhone/pinstripes.png new file mode 100644 index 0000000..c997775 --- a/dev/null +++ b/frontend/gamma/images/old/iPhone/pinstripes.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/iPhone/thumb.png b/frontend/gamma/images/old/iPhone/thumb.png new file mode 100644 index 0000000..cefa8fc --- a/dev/null +++ b/frontend/gamma/images/old/iPhone/thumb.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/iPhone/toggle.png b/frontend/gamma/images/old/iPhone/toggle.png new file mode 100644 index 0000000..3b62ebf --- a/dev/null +++ b/frontend/gamma/images/old/iPhone/toggle.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/iPhone/toggleOn.png b/frontend/gamma/images/old/iPhone/toggleOn.png new file mode 100644 index 0000000..b016814 --- a/dev/null +++ b/frontend/gamma/images/old/iPhone/toggleOn.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/iPhone/toolbar.png b/frontend/gamma/images/old/iPhone/toolbar.png new file mode 100644 index 0000000..3dde94c --- a/dev/null +++ b/frontend/gamma/images/old/iPhone/toolbar.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/iPhone/whiteButton.png b/frontend/gamma/images/old/iPhone/whiteButton.png new file mode 100644 index 0000000..5514b27 --- a/dev/null +++ b/frontend/gamma/images/old/iPhone/whiteButton.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/loading/loadingBar.gif b/frontend/gamma/images/old/loading/loadingBar.gif new file mode 100644 index 0000000..b111948 --- a/dev/null +++ b/frontend/gamma/images/old/loading/loadingBar.gif | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/loading/loadingBarProgress.png b/frontend/gamma/images/old/loading/loadingBarProgress.png new file mode 100644 index 0000000..68436ed --- a/dev/null +++ b/frontend/gamma/images/old/loading/loadingBarProgress.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/loading/news.gif b/frontend/gamma/images/old/loading/news.gif new file mode 100644 index 0000000..33d70b5 --- a/dev/null +++ b/frontend/gamma/images/old/loading/news.gif | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/lock/background_star.png b/frontend/gamma/images/old/lock/background_star.png new file mode 100644 index 0000000..4dff077 --- a/dev/null +++ b/frontend/gamma/images/old/lock/background_star.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/lock/locked.png b/frontend/gamma/images/old/lock/locked.png new file mode 100644 index 0000000..e00d5f6 --- a/dev/null +++ b/frontend/gamma/images/old/lock/locked.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/lock/locked_hover.png b/frontend/gamma/images/old/lock/locked_hover.png new file mode 100644 index 0000000..62ad133 --- a/dev/null +++ b/frontend/gamma/images/old/lock/locked_hover.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/lock/unlocked.png b/frontend/gamma/images/old/lock/unlocked.png new file mode 100644 index 0000000..13eadfe --- a/dev/null +++ b/frontend/gamma/images/old/lock/unlocked.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/lock/unlocked_hover.png b/frontend/gamma/images/old/lock/unlocked_hover.png new file mode 100644 index 0000000..1a45c2f --- a/dev/null +++ b/frontend/gamma/images/old/lock/unlocked_hover.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/logo.png b/frontend/gamma/images/old/logo.png new file mode 100644 index 0000000..62b58d9 --- a/dev/null +++ b/frontend/gamma/images/old/logo.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/logo_blue.png b/frontend/gamma/images/old/logo_blue.png new file mode 100644 index 0000000..fff4a51 --- a/dev/null +++ b/frontend/gamma/images/old/logo_blue.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/blocks/cardGridBackground.png b/frontend/gamma/images/old/main/blocks/cardGridBackground.png new file mode 100644 index 0000000..66dabf8 --- a/dev/null +++ b/frontend/gamma/images/old/main/blocks/cardGridBackground.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/blocks/cardGridStripes.png b/frontend/gamma/images/old/main/blocks/cardGridStripes.png new file mode 100644 index 0000000..fdda774 --- a/dev/null +++ b/frontend/gamma/images/old/main/blocks/cardGridStripes.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/blocks/directLoginGridBackground.png b/frontend/gamma/images/old/main/blocks/directLoginGridBackground.png new file mode 100644 index 0000000..92dd1b8 --- a/dev/null +++ b/frontend/gamma/images/old/main/blocks/directLoginGridBackground.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/blocks/directLoginGridStripes.png b/frontend/gamma/images/old/main/blocks/directLoginGridStripes.png new file mode 100644 index 0000000..a6fc345 --- a/dev/null +++ b/frontend/gamma/images/old/main/blocks/directLoginGridStripes.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/blocks/otherPanelBackground.png b/frontend/gamma/images/old/main/blocks/otherPanelBackground.png new file mode 100644 index 0000000..d9f5ec5 --- a/dev/null +++ b/frontend/gamma/images/old/main/blocks/otherPanelBackground.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/blocks/otherPanelBackground_selected.png b/frontend/gamma/images/old/main/blocks/otherPanelBackground_selected.png new file mode 100644 index 0000000..0ce1d0c --- a/dev/null +++ b/frontend/gamma/images/old/main/blocks/otherPanelBackground_selected.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/grid/ascending.png b/frontend/gamma/images/old/main/grid/ascending.png new file mode 100644 index 0000000..9a05f48 --- a/dev/null +++ b/frontend/gamma/images/old/main/grid/ascending.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/grid/createNewCardSplash.png b/frontend/gamma/images/old/main/grid/createNewCardSplash.png new file mode 100644 index 0000000..f7289a5 --- a/dev/null +++ b/frontend/gamma/images/old/main/grid/createNewCardSplash.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/grid/createNewCardSplash_selected.png b/frontend/gamma/images/old/main/grid/createNewCardSplash_selected.png new file mode 100644 index 0000000..13d536f --- a/dev/null +++ b/frontend/gamma/images/old/main/grid/createNewCardSplash_selected.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/grid/descending.png b/frontend/gamma/images/old/main/grid/descending.png new file mode 100644 index 0000000..868857b --- a/dev/null +++ b/frontend/gamma/images/old/main/grid/descending.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/grid/directLogins/ascending.png b/frontend/gamma/images/old/main/grid/directLogins/ascending.png new file mode 100644 index 0000000..e1ace30 --- a/dev/null +++ b/frontend/gamma/images/old/main/grid/directLogins/ascending.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/grid/directLogins/descending.png b/frontend/gamma/images/old/main/grid/directLogins/descending.png new file mode 100644 index 0000000..47b0685 --- a/dev/null +++ b/frontend/gamma/images/old/main/grid/directLogins/descending.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/grid/directLogins/unsorted.png b/frontend/gamma/images/old/main/grid/directLogins/unsorted.png new file mode 100644 index 0000000..ecf674e --- a/dev/null +++ b/frontend/gamma/images/old/main/grid/directLogins/unsorted.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/grid/favicon.png b/frontend/gamma/images/old/main/grid/favicon.png new file mode 100644 index 0000000..00d208d --- a/dev/null +++ b/frontend/gamma/images/old/main/grid/favicon.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/grid/running_search.gif b/frontend/gamma/images/old/main/grid/running_search.gif new file mode 100644 index 0000000..d02d3b7 --- a/dev/null +++ b/frontend/gamma/images/old/main/grid/running_search.gif | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/grid/search.png b/frontend/gamma/images/old/main/grid/search.png new file mode 100644 index 0000000..5bc8d62 --- a/dev/null +++ b/frontend/gamma/images/old/main/grid/search.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/grid/unsorted.png b/frontend/gamma/images/old/main/grid/unsorted.png new file mode 100644 index 0000000..4bbcee3 --- a/dev/null +++ b/frontend/gamma/images/old/main/grid/unsorted.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/messageBoxBackground.png b/frontend/gamma/images/old/main/messageBoxBackground.png new file mode 100644 index 0000000..de598b2 --- a/dev/null +++ b/frontend/gamma/images/old/main/messageBoxBackground.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/messageBoxCloseButton.png b/frontend/gamma/images/old/main/messageBoxCloseButton.png new file mode 100644 index 0000000..061a7bb --- a/dev/null +++ b/frontend/gamma/images/old/main/messageBoxCloseButton.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/messageBoxCloseButtonActive.png b/frontend/gamma/images/old/main/messageBoxCloseButtonActive.png new file mode 100644 index 0000000..dbc6871 --- a/dev/null +++ b/frontend/gamma/images/old/main/messageBoxCloseButtonActive.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/tabs/cardsBackground.png b/frontend/gamma/images/old/main/tabs/cardsBackground.png new file mode 100644 index 0000000..dd3643e --- a/dev/null +++ b/frontend/gamma/images/old/main/tabs/cardsBackground.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/tabs/directLoginBackground.png b/frontend/gamma/images/old/main/tabs/directLoginBackground.png new file mode 100644 index 0000000..23a9b22 --- a/dev/null +++ b/frontend/gamma/images/old/main/tabs/directLoginBackground.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/tabs/groupsBackground.png b/frontend/gamma/images/old/main/tabs/groupsBackground.png new file mode 100644 index 0000000..9cbc9ba --- a/dev/null +++ b/frontend/gamma/images/old/main/tabs/groupsBackground.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/tabs/itemsBackground.png b/frontend/gamma/images/old/main/tabs/itemsBackground.png new file mode 100644 index 0000000..1a276a5 --- a/dev/null +++ b/frontend/gamma/images/old/main/tabs/itemsBackground.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/tabs/selectionHighligher.png b/frontend/gamma/images/old/main/tabs/selectionHighligher.png new file mode 100644 index 0000000..f93fb02 --- a/dev/null +++ b/frontend/gamma/images/old/main/tabs/selectionHighligher.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/tabs/selectionHighligherGray copy.png b/frontend/gamma/images/old/main/tabs/selectionHighligherGray copy.png new file mode 100644 index 0000000..7741a7a --- a/dev/null +++ b/frontend/gamma/images/old/main/tabs/selectionHighligherGray copy.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/tabs/selectionHighligherGray.png b/frontend/gamma/images/old/main/tabs/selectionHighligherGray.png new file mode 100644 index 0000000..8f6a690 --- a/dev/null +++ b/frontend/gamma/images/old/main/tabs/selectionHighligherGray.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/tabs/tagsBackground.png b/frontend/gamma/images/old/main/tabs/tagsBackground.png new file mode 100644 index 0000000..4a8091d --- a/dev/null +++ b/frontend/gamma/images/old/main/tabs/tagsBackground.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/userInfoBackground.png b/frontend/gamma/images/old/main/userInfoBackground.png new file mode 100644 index 0000000..6756c83 --- a/dev/null +++ b/frontend/gamma/images/old/main/userInfoBackground.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/main/userInfoBullet.png b/frontend/gamma/images/old/main/userInfoBullet.png new file mode 100644 index 0000000..3817764 --- a/dev/null +++ b/frontend/gamma/images/old/main/userInfoBullet.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/new_background.png b/frontend/gamma/images/old/new_background.png new file mode 100644 index 0000000..f946a47 --- a/dev/null +++ b/frontend/gamma/images/old/new_background.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/new_background_left.png b/frontend/gamma/images/old/new_background_left.png new file mode 100644 index 0000000..e9bd958 --- a/dev/null +++ b/frontend/gamma/images/old/new_background_left.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/note.png b/frontend/gamma/images/old/note.png new file mode 100644 index 0000000..4e43691 --- a/dev/null +++ b/frontend/gamma/images/old/note.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/passwordField/background copy.png b/frontend/gamma/images/old/passwordField/background copy.png new file mode 100644 index 0000000..05050bb --- a/dev/null +++ b/frontend/gamma/images/old/passwordField/background copy.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/passwordField/background.png b/frontend/gamma/images/old/passwordField/background.png new file mode 100644 index 0000000..3835a86 --- a/dev/null +++ b/frontend/gamma/images/old/passwordField/background.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/ruler/exit.png b/frontend/gamma/images/old/ruler/exit.png new file mode 100644 index 0000000..30ab430 --- a/dev/null +++ b/frontend/gamma/images/old/ruler/exit.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/ruler/exit_selected.png b/frontend/gamma/images/old/ruler/exit_selected.png new file mode 100644 index 0000000..07dfca6 --- a/dev/null +++ b/frontend/gamma/images/old/ruler/exit_selected.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/ruler/marker.png b/frontend/gamma/images/old/ruler/marker.png new file mode 100644 index 0000000..8d12a88 --- a/dev/null +++ b/frontend/gamma/images/old/ruler/marker.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/ruler/next.png b/frontend/gamma/images/old/ruler/next.png new file mode 100644 index 0000000..9d9662c --- a/dev/null +++ b/frontend/gamma/images/old/ruler/next.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/ruler/previous.png b/frontend/gamma/images/old/ruler/previous.png new file mode 100644 index 0000000..39f5da3 --- a/dev/null +++ b/frontend/gamma/images/old/ruler/previous.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/ruler/ruler.png b/frontend/gamma/images/old/ruler/ruler.png new file mode 100644 index 0000000..546fa7b --- a/dev/null +++ b/frontend/gamma/images/old/ruler/ruler.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/ruler/small_next.png b/frontend/gamma/images/old/ruler/small_next.png new file mode 100644 index 0000000..a35c66b --- a/dev/null +++ b/frontend/gamma/images/old/ruler/small_next.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/ruler/small_next_disabled.png b/frontend/gamma/images/old/ruler/small_next_disabled.png new file mode 100644 index 0000000..69e7f31 --- a/dev/null +++ b/frontend/gamma/images/old/ruler/small_next_disabled.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/ruler/small_next_selected.png b/frontend/gamma/images/old/ruler/small_next_selected.png new file mode 100644 index 0000000..b8aa0c8 --- a/dev/null +++ b/frontend/gamma/images/old/ruler/small_next_selected.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/ruler/small_previous.png b/frontend/gamma/images/old/ruler/small_previous.png new file mode 100644 index 0000000..03f90f7 --- a/dev/null +++ b/frontend/gamma/images/old/ruler/small_previous.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/ruler/small_previous_disabled.png b/frontend/gamma/images/old/ruler/small_previous_disabled.png new file mode 100644 index 0000000..86a7565 --- a/dev/null +++ b/frontend/gamma/images/old/ruler/small_previous_disabled.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/ruler/small_previous_selected.png b/frontend/gamma/images/old/ruler/small_previous_selected.png new file mode 100644 index 0000000..5c61b45 --- a/dev/null +++ b/frontend/gamma/images/old/ruler/small_previous_selected.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/tabPanels/background.png b/frontend/gamma/images/old/tabPanels/background.png new file mode 100644 index 0000000..17350c9 --- a/dev/null +++ b/frontend/gamma/images/old/tabPanels/background.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/tips/Tips_background.png b/frontend/gamma/images/old/tips/Tips_background.png new file mode 100644 index 0000000..34170b9 --- a/dev/null +++ b/frontend/gamma/images/old/tips/Tips_background.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/tips/close.png b/frontend/gamma/images/old/tips/close.png new file mode 100644 index 0000000..554fc8e --- a/dev/null +++ b/frontend/gamma/images/old/tips/close.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/tips/open.png b/frontend/gamma/images/old/tips/open.png new file mode 100644 index 0000000..66861d8 --- a/dev/null +++ b/frontend/gamma/images/old/tips/open.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/tooltips/body.png b/frontend/gamma/images/old/tooltips/body.png new file mode 100644 index 0000000..ae5b5a3 --- a/dev/null +++ b/frontend/gamma/images/old/tooltips/body.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/tooltips/body_bottom.png b/frontend/gamma/images/old/tooltips/body_bottom.png new file mode 100644 index 0000000..4567b5f --- a/dev/null +++ b/frontend/gamma/images/old/tooltips/body_bottom.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/tooltips/bottom_arrow.png b/frontend/gamma/images/old/tooltips/bottom_arrow.png new file mode 100644 index 0000000..5884c94 --- a/dev/null +++ b/frontend/gamma/images/old/tooltips/bottom_arrow.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/tooltips/left_arrow.png b/frontend/gamma/images/old/tooltips/left_arrow.png new file mode 100644 index 0000000..290d062 --- a/dev/null +++ b/frontend/gamma/images/old/tooltips/left_arrow.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/tooltips/right_arrow.png b/frontend/gamma/images/old/tooltips/right_arrow.png new file mode 100644 index 0000000..d0bb64f --- a/dev/null +++ b/frontend/gamma/images/old/tooltips/right_arrow.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/images/old/tooltips/top_arrow.png b/frontend/gamma/images/old/tooltips/top_arrow.png new file mode 100644 index 0000000..a5e8845 --- a/dev/null +++ b/frontend/gamma/images/old/tooltips/top_arrow.png | |||
Binary files differ | |||
diff --git a/frontend/gamma/js/Clipperz/Async.js b/frontend/gamma/js/Clipperz/Async.js index 97d8ecf..f7a9517 100644 --- a/frontend/gamma/js/Clipperz/Async.js +++ b/frontend/gamma/js/Clipperz/Async.js | |||
@@ -1,711 +1,711 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | //Clipperz.Async = MochiKit.Async; | 26 | //Clipperz.Async = MochiKit.Async; |
27 | 27 | ||
28 | 28 | ||
29 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } | 29 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } |
30 | if (typeof(Clipperz.Async) == 'undefined') { Clipperz.Async = {}; } | 30 | if (typeof(Clipperz.Async) == 'undefined') { Clipperz.Async = {}; } |
31 | 31 | ||
32 | Clipperz.Async.VERSION = "0.1"; | 32 | Clipperz.Async.VERSION = "0.1"; |
33 | Clipperz.Async.NAME = "Clipperz.Async"; | 33 | Clipperz.Async.NAME = "Clipperz.Async"; |
34 | 34 | ||
35 | Clipperz.Async.Deferred = function(aName, args) { | 35 | Clipperz.Async.Deferred = function(aName, args) { |
36 | args = args || {}; | 36 | args = args || {}; |
37 | 37 | ||
38 | Clipperz.Async.Deferred.superclass.constructor.call(this, args.canceller); | 38 | Clipperz.Async.Deferred.superclass.constructor.call(this, args.canceller); |
39 | 39 | ||
40 | this._args = args; | 40 | this._args = args; |
41 | this._name = aName || "Anonymous deferred"; | 41 | this._name = aName || "Anonymous deferred"; |
42 | this._count = 0; | 42 | this._count = 0; |
43 | this._shouldTrace = ((CLIPPERZ_DEFERRED_TRACING_ENABLED === true) || (args.trace === true)); | 43 | this._shouldTrace = ((CLIPPERZ_DEFERRED_TRACING_ENABLED === true) || (args.trace === true)); |
44 | this._vars = null; | 44 | this._vars = null; |
45 | 45 | ||
46 | return this; | 46 | return this; |
47 | } | 47 | } |
48 | 48 | ||
49 | //============================================================================= | 49 | //============================================================================= |
50 | 50 | ||
51 | Clipperz.Base.extend(Clipperz.Async.Deferred, MochiKit.Async.Deferred, { | 51 | Clipperz.Base.extend(Clipperz.Async.Deferred, MochiKit.Async.Deferred, { |
52 | 52 | ||
53 | 'name': function () { | 53 | 'name': function () { |
54 | return this._name; | 54 | return this._name; |
55 | }, | 55 | }, |
56 | 56 | ||
57 | 'args': function () { | 57 | 'args': function () { |
58 | return this._args; | 58 | return this._args; |
59 | }, | 59 | }, |
60 | 60 | ||
61 | //----------------------------------------------------------------------------- | 61 | //----------------------------------------------------------------------------- |
62 | 62 | ||
63 | 'callback': function (aValue) { | 63 | 'callback': function (aValue) { |
64 | if (this._shouldTrace) { | 64 | if (this._shouldTrace) { |
65 | //Clipperz.log("CALLBACK " + this._name, aValue); | 65 | //Clipperz.log("CALLBACK " + this._name, aValue); |
66 | console.log("CALLBACK " + this._name, aValue); | 66 | console.log("CALLBACK " + this._name, aValue); |
67 | } | 67 | } |
68 | 68 | ||
69 | if (this.chained == false) { | 69 | if (this.chained == false) { |
70 | var message; | 70 | var message; |
71 | 71 | ||
72 | message = "ERROR [" + this._name + "]"; | 72 | message = "ERROR [" + this._name + "]"; |
73 | this.addErrback(function(aResult) { | 73 | this.addErrback(function(aResult) { |
74 | if (! (aResult instanceof MochiKit.Async.CancelledError)) { | 74 | if (! (aResult instanceof MochiKit.Async.CancelledError)) { |
75 | Clipperz.log(message, aResult); | 75 | Clipperz.log(message, aResult); |
76 | } | 76 | } |
77 | return aResult; | 77 | return aResult; |
78 | }); | 78 | }); |
79 | 79 | ||
80 | if (this._shouldTrace) { | 80 | if (this._shouldTrace) { |
81 | var resultMessage; | 81 | var resultMessage; |
82 | 82 | ||
83 | resultMessage = "RESULT " + this._name + " <=="; | 83 | resultMessage = "RESULT " + this._name + " <=="; |
84 | // this.addCallback(function(aResult) { | 84 | // this.addCallback(function(aResult) { |
85 | Clipperz.Async.Deferred.superclass.addCallback.call(this, function(aResult) { | 85 | Clipperz.Async.Deferred.superclass.addCallback.call(this, function(aResult) { |
86 | //Clipperz.log(resultMessage, aResult); | 86 | //Clipperz.log(resultMessage, aResult); |
87 | console.log(resultMessage, aResult); | 87 | console.log(resultMessage, aResult); |
88 | 88 | ||
89 | return aResult; | 89 | return aResult; |
90 | }); | 90 | }); |
91 | } | 91 | } |
92 | } | 92 | } |
93 | 93 | ||
94 | if (CLIPPERZ_DEFERRED_CALL_LOGGING_ENABLED === true) { | 94 | if (CLIPPERZ_DEFERRED_CALL_LOGGING_ENABLED === true) { |
95 | Clipperz.log("callback " + this._name, this); | 95 | Clipperz.log("callback " + this._name, this); |
96 | } | 96 | } |
97 | 97 | ||
98 | return Clipperz.Async.Deferred.superclass.callback.apply(this, arguments); | 98 | return Clipperz.Async.Deferred.superclass.callback.apply(this, arguments); |
99 | }, | 99 | }, |
100 | 100 | ||
101 | //----------------------------------------------------------------------------- | 101 | //----------------------------------------------------------------------------- |
102 | 102 | ||
103 | 'addCallback': function () { | 103 | 'addCallback': function () { |
104 | var message; | 104 | var message; |
105 | 105 | ||
106 | if (this._shouldTrace) { | 106 | if (this._shouldTrace) { |
107 | this._count ++; | 107 | this._count ++; |
108 | message = "[" + this._count + "] " + this._name + " "; | 108 | message = "[" + this._count + "] " + this._name + " "; |
109 | // this.addBoth(function(aResult) {Clipperz.log(message + "-->", aResult); return aResult;}); | 109 | // this.addBoth(function(aResult) {Clipperz.log(message + "-->", aResult); return aResult;}); |
110 | this.addCallbacks( | 110 | this.addCallbacks( |
111 | //function(aResult) {Clipperz.log("-OK- " + message + "-->"/*, aResult*/); return aResult;}, | 111 | //function(aResult) {Clipperz.log("-OK- " + message + "-->"/*, aResult*/); return aResult;}, |
112 | function(aResult) {console.log("-OK- " + message + "-->"/*, aResult*/); return aResult;}, | 112 | function(aResult) {console.log("-OK- " + message + "-->"/*, aResult*/); return aResult;}, |
113 | //function(aResult) {Clipperz.log("FAIL " + message + "-->"/*, aResult*/); return aResult;} | 113 | //function(aResult) {Clipperz.log("FAIL " + message + "-->"/*, aResult*/); return aResult;} |
114 | function(aResult) {console.log("FAIL " + message + "-->"/*, aResult*/); return aResult;} | 114 | function(aResult) {console.log("FAIL " + message + "-->"/*, aResult*/); return aResult;} |
115 | ); | 115 | ); |
116 | } | 116 | } |
117 | 117 | ||
118 | Clipperz.Async.Deferred.superclass.addCallback.apply(this, arguments); | 118 | Clipperz.Async.Deferred.superclass.addCallback.apply(this, arguments); |
119 | 119 | ||
120 | if (this._shouldTrace) { | 120 | if (this._shouldTrace) { |
121 | // this.addBoth(function(aResult) {Clipperz.log(message + "<--", aResult); return aResult;}); | 121 | // this.addBoth(function(aResult) {Clipperz.log(message + "<--", aResult); return aResult;}); |
122 | this.addCallbacks( | 122 | this.addCallbacks( |
123 | //function(aResult) {Clipperz.log("-OK- " + message + "<--", aResult); return aResult;}, | 123 | //function(aResult) {Clipperz.log("-OK- " + message + "<--", aResult); return aResult;}, |
124 | function(aResult) {console.log("-OK- " + message + "<--", aResult); return aResult;}, | 124 | function(aResult) {console.log("-OK- " + message + "<--", aResult); return aResult;}, |
125 | //function(aResult) {Clipperz.log("FAIL " + message + "<--", aResult); return aResult;} | 125 | //function(aResult) {Clipperz.log("FAIL " + message + "<--", aResult); return aResult;} |
126 | function(aResult) {console.log("FAIL " + message + "<--", aResult); return aResult;} | 126 | function(aResult) {console.log("FAIL " + message + "<--", aResult); return aResult;} |
127 | ); | 127 | ); |
128 | } | 128 | } |
129 | }, | 129 | }, |
130 | 130 | ||
131 | //============================================================================= | 131 | //============================================================================= |
132 | 132 | ||
133 | 'addCallbackPass': function() { | 133 | 'addCallbackPass': function() { |
134 | var passFunction; | 134 | var passFunction; |
135 | 135 | ||
136 | passFunction = MochiKit.Base.partial.apply(null, arguments); | 136 | passFunction = MochiKit.Base.partial.apply(null, arguments); |
137 | 137 | ||
138 | this.addCallback(function() { | 138 | this.addCallback(function() { |
139 | var result; | 139 | var result; |
140 | 140 | ||
141 | result = arguments[arguments.length -1]; | 141 | result = arguments[arguments.length -1]; |
142 | passFunction(); | 142 | passFunction(); |
143 | 143 | ||
144 | return result; | 144 | return result; |
145 | }); | 145 | }); |
146 | }, | 146 | }, |
147 | 147 | ||
148 | //----------------------------------------------------------------------------- | 148 | //----------------------------------------------------------------------------- |
149 | 149 | ||
150 | 'addErrbackPass': function() { | 150 | 'addErrbackPass': function() { |
151 | var passFunction; | 151 | var passFunction; |
152 | 152 | ||
153 | passFunction = MochiKit.Base.partial.apply(null, arguments); | 153 | passFunction = MochiKit.Base.partial.apply(null, arguments); |
154 | 154 | ||
155 | this.addErrback(function() { | 155 | this.addErrback(function() { |
156 | var result; | 156 | var result; |
157 | 157 | ||
158 | result = arguments[arguments.length -1]; | 158 | result = arguments[arguments.length -1]; |
159 | passFunction(); | 159 | passFunction(); |
160 | 160 | ||
161 | return result; | 161 | return result; |
162 | }); | 162 | }); |
163 | }, | 163 | }, |
164 | 164 | ||
165 | //----------------------------------------------------------------------------- | 165 | //----------------------------------------------------------------------------- |
166 | 166 | ||
167 | 'addBothPass': function() { | 167 | 'addBothPass': function() { |
168 | var passFunction; | 168 | var passFunction; |
169 | 169 | ||
170 | passFunction = MochiKit.Base.partial.apply(null, arguments); | 170 | passFunction = MochiKit.Base.partial.apply(null, arguments); |
171 | 171 | ||
172 | this.addBoth(function() { | 172 | this.addBoth(function() { |
173 | var result; | 173 | var result; |
174 | 174 | ||
175 | result = arguments[arguments.length -1]; | 175 | result = arguments[arguments.length -1]; |
176 | passFunction(); | 176 | passFunction(); |
177 | 177 | ||
178 | return result; | 178 | return result; |
179 | }); | 179 | }); |
180 | }, | 180 | }, |
181 | 181 | ||
182 | //----------------------------------------------------------------------------- | 182 | //----------------------------------------------------------------------------- |
183 | 183 | ||
184 | 'addIf': function (aThenBlock, anElseBlock) { | 184 | 'addIf': function (aThenBlock, anElseBlock) { |
185 | this.addCallback(MochiKit.Base.bind(function (aValue) { | 185 | this.addCallback(MochiKit.Base.bind(function (aValue) { |
186 | var deferredResult; | 186 | var deferredResult; |
187 | 187 | ||
188 | if (!MochiKit.Base.isUndefinedOrNull(aValue) && aValue) { | 188 | if (!MochiKit.Base.isUndefinedOrNull(aValue) && aValue) { |
189 | deferredResult = Clipperz.Async.callbacks(this._name + " <then>", aThenBlock, null, aValue); | 189 | deferredResult = Clipperz.Async.callbacks(this._name + " <then>", aThenBlock, null, aValue); |
190 | } else { | 190 | } else { |
191 | deferredResult = Clipperz.Async.callbacks(this._name + " <else>", anElseBlock, null, aValue); | 191 | deferredResult = Clipperz.Async.callbacks(this._name + " <else>", anElseBlock, null, aValue); |
192 | } | 192 | } |
193 | 193 | ||
194 | return deferredResult; | 194 | return deferredResult; |
195 | })) | 195 | })) |
196 | }, | 196 | }, |
197 | 197 | ||
198 | //----------------------------------------------------------------------------- | 198 | //----------------------------------------------------------------------------- |
199 | 199 | ||
200 | 'addMethod': function () { | 200 | 'addMethod': function () { |
201 | this.addCallback(MochiKit.Base.method.apply(this, arguments)); | 201 | this.addCallback(MochiKit.Base.method.apply(this, arguments)); |
202 | }, | 202 | }, |
203 | 203 | ||
204 | //----------------------------------------------------------------------------- | 204 | //----------------------------------------------------------------------------- |
205 | 205 | ||
206 | 'addMethodcaller': function () { | 206 | 'addMethodcaller': function () { |
207 | this.addCallback(MochiKit.Base.methodcaller.apply(this, arguments)); | 207 | this.addCallback(MochiKit.Base.methodcaller.apply(this, arguments)); |
208 | }, | 208 | }, |
209 | 209 | ||
210 | //============================================================================= | 210 | //============================================================================= |
211 | 211 | ||
212 | 'addLog': function (aLog) { | 212 | 'addLog': function (aLog) { |
213 | if (CLIPPERZ_DEFERRED_LOGGING_ENABLED) { | 213 | if (CLIPPERZ_DEFERRED_LOGGING_ENABLED) { |
214 | this.addBothPass(function(res) {Clipperz.log(aLog + " ", res);}); | 214 | this.addBothPass(function(res) {Clipperz.log(aLog + " ", res);}); |
215 | // this.addBothPass(function(res) {console.log(aLog + " ", res);}); | 215 | // this.addBothPass(function(res) {console.log(aLog + " ", res);}); |
216 | } | 216 | } |
217 | }, | 217 | }, |
218 | 218 | ||
219 | //============================================================================= | 219 | //============================================================================= |
220 | 220 | ||
221 | 'acquireLock': function (aLock) { | 221 | 'acquireLock': function (aLock) { |
222 | // this.addCallback(function (aResult) { | 222 | // this.addCallback(function (aResult) { |
223 | // return Clipperz.Async.callbacks("Clipperz.Async.acquireLock", [ | 223 | // return Clipperz.Async.callbacks("Clipperz.Async.acquireLock", [ |
224 | // MochiKit.Base.method(aLock, 'acquire'), | 224 | // MochiKit.Base.method(aLock, 'acquire'), |
225 | // MochiKit.Base.partial(MochiKit.Async.succeed, aResult) | 225 | // MochiKit.Base.partial(MochiKit.Async.succeed, aResult) |
226 | // ], {trace:false}); | 226 | // ], {trace:false}); |
227 | // }); | 227 | // }); |
228 | 228 | ||
229 | this.addCallback(MochiKit.Base.method(aLock, 'acquire')); | 229 | this.addCallback(MochiKit.Base.method(aLock, 'acquire')); |
230 | }, | 230 | }, |
231 | 231 | ||
232 | 'releaseLock': function (aLock) { | 232 | 'releaseLock': function (aLock) { |
233 | // this.addCallback(function (aResult) { | 233 | // this.addCallback(function (aResult) { |
234 | // return Clipperz.Async.callbacks("Clipperz.Async.release <ok>", [ | 234 | // return Clipperz.Async.callbacks("Clipperz.Async.release <ok>", [ |
235 | // MochiKit.Base.method(aLock, 'release'), | 235 | // MochiKit.Base.method(aLock, 'release'), |
236 | // MochiKit.Base.partial(MochiKit.Async.succeed, aResult) | 236 | // MochiKit.Base.partial(MochiKit.Async.succeed, aResult) |
237 | // ], {trace:false}); | 237 | // ], {trace:false}); |
238 | // }); | 238 | // }); |
239 | // this.addErrback(function (aResult) { | 239 | // this.addErrback(function (aResult) { |
240 | ///console.log("releaseLock.addErrback:", aResult); | 240 | ///console.log("releaseLock.addErrback:", aResult); |
241 | // return Clipperz.Async.callbacks("Clipperz.Async.release <fail>", [ | 241 | // return Clipperz.Async.callbacks("Clipperz.Async.release <fail>", [ |
242 | // MochiKit.Base.method(aLock, 'release'), | 242 | // MochiKit.Base.method(aLock, 'release'), |
243 | // MochiKit.Base.partial(MochiKit.Async.fail, aResult) | 243 | // MochiKit.Base.partial(MochiKit.Async.fail, aResult) |
244 | // ], {trace:false}); | 244 | // ], {trace:false}); |
245 | // }); | 245 | // }); |
246 | 246 | ||
247 | // this.addBothPass(MochiKit.Base.method(aLock, 'release')); | 247 | // this.addBothPass(MochiKit.Base.method(aLock, 'release')); |
248 | this.addCallbackPass(MochiKit.Base.method(aLock, 'release')); | 248 | this.addCallbackPass(MochiKit.Base.method(aLock, 'release')); |
249 | this.addErrback(function (anError) { | 249 | this.addErrback(function (anError) { |
250 | aLock.release(); | 250 | aLock.release(); |
251 | 251 | ||
252 | return anError; | 252 | return anError; |
253 | }); | 253 | }); |
254 | }, | 254 | }, |
255 | 255 | ||
256 | //============================================================================= | 256 | //============================================================================= |
257 | 257 | ||
258 | 'collectResults': function (someRequests) { | 258 | 'collectResults': function (someRequests) { |
259 | this.addCallback(Clipperz.Async.collectResults(this._name + " <collect results>", someRequests, this._args)); | 259 | this.addCallback(Clipperz.Async.collectResults(this._name + " <collect results>", someRequests, this._args)); |
260 | }, | 260 | }, |
261 | 261 | ||
262 | 'addCallbackList': function (aRequestList) { | 262 | 'addCallbackList': function (aRequestList) { |
263 | this.addCallback(Clipperz.Async.callbacks, this._name + " <callback list>", aRequestList, this._args); | 263 | this.addCallback(Clipperz.Async.callbacks, this._name + " <callback list>", aRequestList, this._args); |
264 | }, | 264 | }, |
265 | 265 | ||
266 | //============================================================================= | 266 | //============================================================================= |
267 | 267 | ||
268 | 'vars': function () { | 268 | 'vars': function () { |
269 | if (this._vars == null) { | 269 | if (this._vars == null) { |
270 | this._vars = {} | 270 | this._vars = {} |
271 | } | 271 | } |
272 | 272 | ||
273 | return this._vars; | 273 | return this._vars; |
274 | }, | 274 | }, |
275 | 275 | ||
276 | 'setValue': function (aKey) { | 276 | 'setValue': function (aKey) { |
277 | this.addCallback(MochiKit.Base.bind(function (aValue) { | 277 | this.addCallback(MochiKit.Base.bind(function (aValue) { |
278 | this.vars()[aKey] = aValue; | 278 | this.vars()[aKey] = aValue; |
279 | return aValue; | 279 | return aValue; |
280 | }, this)); | 280 | }, this)); |
281 | }, | 281 | }, |
282 | 282 | ||
283 | 'getValue': function (aKey) { | 283 | 'getValue': function (aKey) { |
284 | this.addCallback(MochiKit.Base.bind(function () { | 284 | this.addCallback(MochiKit.Base.bind(function () { |
285 | return this.vars()[aKey]; | 285 | return this.vars()[aKey]; |
286 | }, this)); | 286 | }, this)); |
287 | }, | 287 | }, |
288 | 288 | ||
289 | //============================================================================= | 289 | //============================================================================= |
290 | 290 | ||
291 | __syntaxFix__: "syntax fix" | 291 | __syntaxFix__: "syntax fix" |
292 | }); | 292 | }); |
293 | 293 | ||
294 | //############################################################################# | 294 | //############################################################################# |
295 | 295 | ||
296 | Clipperz.Async.DeferredSynchronizer = function(aName, someMethods) { | 296 | Clipperz.Async.DeferredSynchronizer = function(aName, someMethods) { |
297 | this._name = aName || "Anonymous deferred Synchronizer"; | 297 | this._name = aName || "Anonymous deferred Synchronizer"; |
298 | this._methods = someMethods; | 298 | this._methods = someMethods; |
299 | 299 | ||
300 | this._numberOfMethodsDone= 0; | 300 | this._numberOfMethodsDone= 0; |
301 | this._methodResults = []; | 301 | this._methodResults = []; |
302 | 302 | ||
303 | this._result = new Clipperz.Async.Deferred("Clipperz.Async.DeferredSynchronizer # " + this.name(), {trace:false}); | 303 | this._result = new Clipperz.Async.Deferred("Clipperz.Async.DeferredSynchronizer # " + this.name(), {trace:false}); |
304 | this._result.addMethod(this, 'methodResults'); | 304 | this._result.addMethod(this, 'methodResults'); |
305 | this._result.addCallback(function(someResults) { | 305 | this._result.addCallback(function(someResults) { |
306 | varcancels; | 306 | varcancels; |
307 | var errors; | 307 | var errors; |
308 | var result; | 308 | var result; |
309 | 309 | ||
310 | cancels = MochiKit.Base.filter(function(aResult) { return (aResult instanceof MochiKit.Async.CancelledError)}, someResults); | 310 | cancels = MochiKit.Base.filter(function(aResult) { return (aResult instanceof MochiKit.Async.CancelledError)}, someResults); |
311 | 311 | ||
312 | if (cancels.length == 0) { | 312 | if (cancels.length == 0) { |
313 | errors = MochiKit.Base.filter(function(aResult) { return (aResult instanceof Error)}, someResults); | 313 | errors = MochiKit.Base.filter(function(aResult) { return (aResult instanceof Error)}, someResults); |
314 | 314 | ||
315 | if (errors.length == 0) { | 315 | if (errors.length == 0) { |
316 | // result = MochiKit.Async.succeed(someResults); | 316 | // result = MochiKit.Async.succeed(someResults); |
317 | result = someResults; | 317 | result = someResults; |
318 | } else { | 318 | } else { |
319 | result = MochiKit.Async.fail(someResults); | 319 | result = MochiKit.Async.fail(someResults); |
320 | } | 320 | } |
321 | } else { | 321 | } else { |
322 | result = MochiKit.Async.fail(cancels[0]); | 322 | result = MochiKit.Async.fail(cancels[0]); |
323 | } | 323 | } |
324 | 324 | ||
325 | return result; | 325 | return result; |
326 | }/*, this._methodResults */); | 326 | }/*, this._methodResults */); |
327 | 327 | ||
328 | return this; | 328 | return this; |
329 | } | 329 | } |
330 | 330 | ||
331 | MochiKit.Base.update(Clipperz.Async.DeferredSynchronizer.prototype, { | 331 | MochiKit.Base.update(Clipperz.Async.DeferredSynchronizer.prototype, { |
332 | 332 | ||
333 | //----------------------------------------------------------------------------- | 333 | //----------------------------------------------------------------------------- |
334 | 334 | ||
335 | 'name': function() { | 335 | 'name': function() { |
336 | return this._name; | 336 | return this._name; |
337 | }, | 337 | }, |
338 | 338 | ||
339 | //----------------------------------------------------------------------------- | 339 | //----------------------------------------------------------------------------- |
340 | 340 | ||
341 | 'methods': function() { | 341 | 'methods': function() { |
342 | return this._methods; | 342 | return this._methods; |
343 | }, | 343 | }, |
344 | 344 | ||
345 | 'methodResults': function() { | 345 | 'methodResults': function() { |
346 | return this._methodResults; | 346 | return this._methodResults; |
347 | }, | 347 | }, |
348 | 348 | ||
349 | //----------------------------------------------------------------------------- | 349 | //----------------------------------------------------------------------------- |
350 | 350 | ||
351 | 'result': function() { | 351 | 'result': function() { |
352 | return this._result; | 352 | return this._result; |
353 | }, | 353 | }, |
354 | 354 | ||
355 | //----------------------------------------------------------------------------- | 355 | //----------------------------------------------------------------------------- |
356 | 356 | ||
357 | 'numberOfMethodsDone':function() { | 357 | 'numberOfMethodsDone':function() { |
358 | return this._numberOfMethodsDone; | 358 | return this._numberOfMethodsDone; |
359 | }, | 359 | }, |
360 | 360 | ||
361 | 'incrementNumberOfMethodsDone': function() { | 361 | 'incrementNumberOfMethodsDone': function() { |
362 | this._numberOfMethodsDone ++; | 362 | this._numberOfMethodsDone ++; |
363 | }, | 363 | }, |
364 | 364 | ||
365 | //----------------------------------------------------------------------------- | 365 | //----------------------------------------------------------------------------- |
366 | 366 | ||
367 | 'run': function(args, aValue) { | 367 | 'run': function(args, aValue) { |
368 | var deferredResults; | 368 | var deferredResults; |
369 | var i, c; | 369 | var i, c; |
370 | 370 | ||
371 | deferredResults = []; | 371 | deferredResults = []; |
372 | args = args || {}; | 372 | args = args || {}; |
373 | 373 | ||
374 | c = this.methods().length; | 374 | c = this.methods().length; |
375 | for (i=0; i<c; i++) { | 375 | for (i=0; i<c; i++) { |
376 | var deferredResult; | 376 | var deferredResult; |
377 | varmethodCalls; | 377 | varmethodCalls; |
378 | var ii, cc; | 378 | var ii, cc; |
379 | 379 | ||
380 | //console.log("TYPEOF", typeof(this.methods()[i])); | 380 | //console.log("TYPEOF", typeof(this.methods()[i])); |
381 | if (typeof(this.methods()[i]) == 'function') { | 381 | if (typeof(this.methods()[i]) == 'function') { |
382 | methodCalls = [ this.methods()[i] ]; | 382 | methodCalls = [ this.methods()[i] ]; |
383 | } else { | 383 | } else { |
384 | methodCalls = this.methods()[i]; | 384 | methodCalls = this.methods()[i]; |
385 | } | 385 | } |
386 | 386 | ||
387 | cc = methodCalls.length; | 387 | cc = methodCalls.length; |
388 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.DeferredSynchronizer.run => " + this.name() + "[" + i + "]", args); | 388 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.DeferredSynchronizer.run => " + this.name() + "[" + i + "]", args); |
389 | for (ii=0; ii<cc; ii++) { | 389 | for (ii=0; ii<cc; ii++) { |
390 | deferredResult.addCallback(methodCalls[ii]); | 390 | deferredResult.addCallback(methodCalls[ii]); |
391 | } | 391 | } |
392 | deferredResult.addBoth(MochiKit.Base.method(this, 'handleMethodCallDone', i)); | 392 | deferredResult.addBoth(MochiKit.Base.method(this, 'handleMethodCallDone', i)); |
393 | 393 | ||
394 | deferredResults.push(deferredResult); | 394 | deferredResults.push(deferredResult); |
395 | } | 395 | } |
396 | 396 | ||
397 | for (i=0; i<c; i++) { | 397 | for (i=0; i<c; i++) { |
398 | deferredResults[i].callback(aValue); | 398 | deferredResults[i].callback(aValue); |
399 | } | 399 | } |
400 | 400 | ||
401 | return this.result(); | 401 | return this.result(); |
402 | }, | 402 | }, |
403 | 403 | ||
404 | //----------------------------------------------------------------------------- | 404 | //----------------------------------------------------------------------------- |
405 | 405 | ||
406 | 'handleMethodCallDone': function(anIndexValue, aResult) { | 406 | 'handleMethodCallDone': function(anIndexValue, aResult) { |
407 | this.incrementNumberOfMethodsDone(); | 407 | this.incrementNumberOfMethodsDone(); |
408 | this.methodResults()[anIndexValue] = aResult; | 408 | this.methodResults()[anIndexValue] = aResult; |
409 | 409 | ||
410 | if (this.numberOfMethodsDone() < this.methods().length) { | 410 | if (this.numberOfMethodsDone() < this.methods().length) { |
411 | //nothing to do here other than possibly log something | 411 | //nothing to do here other than possibly log something |
412 | } else if (this.numberOfMethodsDone() == this.methods().length) { | 412 | } else if (this.numberOfMethodsDone() == this.methods().length) { |
413 | this.result().callback(); | 413 | this.result().callback(); |
414 | } else if (this.numberOfMethodsDone() > this.methods().length) { | 414 | } else if (this.numberOfMethodsDone() > this.methods().length) { |
415 | alert("Clipperz.Async.Deferred.handleMethodCallDone -> WTF!"); | 415 | alert("Clipperz.Async.Deferred.handleMethodCallDone -> WTF!"); |
416 | //WTF!!! :( | 416 | //WTF!!! :( |
417 | } | 417 | } |
418 | 418 | ||
419 | }, | 419 | }, |
420 | 420 | ||
421 | //----------------------------------------------------------------------------- | 421 | //----------------------------------------------------------------------------- |
422 | 422 | ||
423 | __syntaxFix__: "syntax fix" | 423 | __syntaxFix__: "syntax fix" |
424 | }); | 424 | }); |
425 | 425 | ||
426 | //############################################################################# | 426 | //############################################################################# |
427 | 427 | ||
428 | MochiKit.Base.update(Clipperz.Async, { | 428 | MochiKit.Base.update(Clipperz.Async, { |
429 | 429 | ||
430 | 'callbacks': function (aName, someFunctions, someArguments, aCallbackValue) { | 430 | 'callbacks': function (aName, someFunctions, someArguments, aCallbackValue) { |
431 | var deferredResult; | 431 | var deferredResult; |
432 | var i, c; | 432 | var i, c; |
433 | 433 | ||
434 | deferredResult = new Clipperz.Async.Deferred(aName, someArguments); | 434 | deferredResult = new Clipperz.Async.Deferred(aName, someArguments); |
435 | c = someFunctions.length; | 435 | c = someFunctions.length; |
436 | for (i=0; i<c; i++) { | 436 | for (i=0; i<c; i++) { |
437 | deferredResult.addCallback(someFunctions[i]); | 437 | deferredResult.addCallback(someFunctions[i]); |
438 | } | 438 | } |
439 | deferredResult.callback(aCallbackValue); | 439 | deferredResult.callback(aCallbackValue); |
440 | 440 | ||
441 | return deferredResult; | 441 | return deferredResult; |
442 | }, | 442 | }, |
443 | 443 | ||
444 | //------------------------------------------------------------------------- | 444 | //------------------------------------------------------------------------- |
445 | 445 | ||
446 | 'forkAndJoin': function (aName, someMethods, args) { | 446 | 'forkAndJoin': function (aName, someMethods, args) { |
447 | return MochiKit.Base.partial(function (aName, someMethods, args, aValue) { | 447 | return MochiKit.Base.partial(function (aName, someMethods, args, aValue) { |
448 | var synchronizer; | 448 | var synchronizer; |
449 | varresult; | 449 | varresult; |
450 | 450 | ||
451 | args = args || {}; | 451 | args = args || {}; |
452 | synchronizer = new Clipperz.Async.DeferredSynchronizer(aName, someMethods); | 452 | synchronizer = new Clipperz.Async.DeferredSynchronizer(aName, someMethods); |
453 | result = synchronizer.run(args, aValue); | 453 | result = synchronizer.run(args, aValue); |
454 | 454 | ||
455 | return result; | 455 | return result; |
456 | }, aName, someMethods, args); | 456 | }, aName, someMethods, args); |
457 | }, | 457 | }, |
458 | 458 | ||
459 | //------------------------------------------------------------------------- | 459 | //------------------------------------------------------------------------- |
460 | 460 | ||
461 | 'collectResults': function(aName, someRequests, args) { | 461 | 'collectResults': function(aName, someRequests, args) { |
462 | return MochiKit.Base.partial(function(aName, someRequests, args, aValue) { | 462 | return MochiKit.Base.partial(function(aName, someRequests, args, aValue) { |
463 | var deferredResult; | 463 | var deferredResult; |
464 | var requestKeys; | 464 | var requestKeys; |
465 | var methods; | 465 | var methods; |
466 | 466 | ||
467 | requestKeys = MochiKit.Base.keys(someRequests); | 467 | requestKeys = MochiKit.Base.keys(someRequests); |
468 | methods = MochiKit.Base.values(someRequests); | 468 | methods = MochiKit.Base.values(someRequests); |
469 | 469 | ||
470 | deferredResult = new Clipperz.Async.Deferred(aName, args); | 470 | deferredResult = new Clipperz.Async.Deferred(aName, args); |
471 | deferredResult.addCallback(Clipperz.Async.forkAndJoin(aName + " [inner forkAndJoin]", methods, args)); | 471 | deferredResult.addCallback(Clipperz.Async.forkAndJoin(aName + " [inner forkAndJoin]", methods, args)); |
472 | deferredResult.addBoth(function(someResults) { | 472 | deferredResult.addBoth(function(someResults) { |
473 | var returnFunction; | 473 | var returnFunction; |
474 | var results; | 474 | var results; |
475 | var i,c; | 475 | var i,c; |
476 | var result; | 476 | var result; |
477 | 477 | ||
478 | if (someResults instanceof MochiKit.Async.CancelledError) { | 478 | if (someResults instanceof MochiKit.Async.CancelledError) { |
479 | returnFunction = MochiKit.Async.fail; | 479 | returnFunction = MochiKit.Async.fail; |
480 | result = someResults; | 480 | result = someResults; |
481 | } else { | 481 | } else { |
482 | if (someResults instanceof Error) { | 482 | if (someResults instanceof Error) { |
483 | returnFunction = MochiKit.Async.fail; | 483 | returnFunction = MochiKit.Async.fail; |
484 | results = someResults['message']; | 484 | results = someResults['message']; |
485 | } else { | 485 | } else { |
486 | returnFunction = MochiKit.Async.succeed; | 486 | returnFunction = MochiKit.Async.succeed; |
487 | results = someResults; | 487 | results = someResults; |
488 | } | 488 | } |
489 | 489 | ||
490 | result = {}; | 490 | result = {}; |
491 | 491 | ||
492 | c = requestKeys.length; | 492 | c = requestKeys.length; |
493 | for (i=0; i<c; i++) { | 493 | for (i=0; i<c; i++) { |
494 | result[requestKeys[i]] = results[i]; | 494 | result[requestKeys[i]] = results[i]; |
495 | } | 495 | } |
496 | } | 496 | } |
497 | 497 | ||
498 | return returnFunction.call(null, result); | 498 | return returnFunction.call(null, result); |
499 | }); | 499 | }); |
500 | deferredResult.callback(aValue); | 500 | deferredResult.callback(aValue); |
501 | 501 | ||
502 | return deferredResult; | 502 | return deferredResult; |
503 | }, aName, someRequests, args); | 503 | }, aName, someRequests, args); |
504 | }, | 504 | }, |
505 | 505 | ||
506 | //------------------------------------------------------------------------- | 506 | //------------------------------------------------------------------------- |
507 | 507 | ||
508 | 'collectAll': function (someDeferredObjects) { | 508 | 'collectAll': function (someDeferredObjects) { |
509 | var deferredResult; | 509 | var deferredResult; |
510 | 510 | ||
511 | deferredResult = new MochiKit.Async.DeferredList(someDeferredObjects, false, false, false); | 511 | deferredResult = new MochiKit.Async.DeferredList(someDeferredObjects, false, false, false); |
512 | deferredResult.addCallback(function (aResultList) { | 512 | deferredResult.addCallback(function (aResultList) { |
513 | return MochiKit.Base.map(function (aResult) { | 513 | return MochiKit.Base.map(function (aResult) { |
514 | if (aResult[0]) { | 514 | if (aResult[0]) { |
515 | return aResult[1]; | 515 | return aResult[1]; |
516 | } else { | 516 | } else { |
517 | throw aResult[1]; | 517 | throw aResult[1]; |
518 | } | 518 | } |
519 | }, aResultList); | 519 | }, aResultList); |
520 | }); | 520 | }); |
521 | 521 | ||
522 | return deferredResult; | 522 | return deferredResult; |
523 | }, | 523 | }, |
524 | 524 | ||
525 | //------------------------------------------------------------------------- | 525 | //------------------------------------------------------------------------- |
526 | 526 | ||
527 | 'setItem': function (anObject, aKey, aValue) { | 527 | 'setItem': function (anObject, aKey, aValue) { |
528 | anObject[aKey] = aValue; | 528 | anObject[aKey] = aValue; |
529 | 529 | ||
530 | return anObject; | 530 | return anObject; |
531 | }, | 531 | }, |
532 | 532 | ||
533 | 'setItemOnObject': function (aKey, aValue, anObject) { | 533 | 'setItemOnObject': function (aKey, aValue, anObject) { |
534 | anObject[aKey] = aValue; | 534 | anObject[aKey] = aValue; |
535 | 535 | ||
536 | return anObject; | 536 | return anObject; |
537 | }, | 537 | }, |
538 | 538 | ||
539 | 'setDeferredItemOnObject': function (aKey, aDeferredFunction, anObject) { | 539 | 'setDeferredItemOnObject': function (aKey, aDeferredFunction, anObject) { |
540 | return Clipperz.Async.callbacks("Clipperz.Async.setDeferredItemOnObject", [ | 540 | return Clipperz.Async.callbacks("Clipperz.Async.setDeferredItemOnObject", [ |
541 | aDeferredFunction, | 541 | aDeferredFunction, |
542 | MochiKit.Base.partial(Clipperz.Async.setItem, anObject, aKey) | 542 | MochiKit.Base.partial(Clipperz.Async.setItem, anObject, aKey) |
543 | ], {trace:false}, anObject); | 543 | ], {trace:false}, anObject); |
544 | }, | 544 | }, |
545 | 545 | ||
546 | //------------------------------------------------------------------------- | 546 | //------------------------------------------------------------------------- |
547 | 547 | ||
548 | 'deferredIf': function (aName, aThenBlock, anElseBlock) { | 548 | 'deferredIf': function (aName, aThenBlock, anElseBlock) { |
549 | return function (aValue) { | 549 | return function (aValue) { |
550 | var deferredResult; | 550 | var deferredResult; |
551 | 551 | ||
552 | if (!MochiKit.Base.isUndefinedOrNull(aValue) && aValue) { | 552 | if (!MochiKit.Base.isUndefinedOrNull(aValue) && aValue) { |
553 | deferredResult = Clipperz.Async.callbacks(aName + " <then>", aThenBlock, null, aValue); | 553 | deferredResult = Clipperz.Async.callbacks(aName + " <then>", aThenBlock, null, aValue); |
554 | } else { | 554 | } else { |
555 | deferredResult = Clipperz.Async.callbacks(aName + " <else>", anElseBlock, null, aValue); | 555 | deferredResult = Clipperz.Async.callbacks(aName + " <else>", anElseBlock, null, aValue); |
556 | } | 556 | } |
557 | 557 | ||
558 | return deferredResult; | 558 | return deferredResult; |
559 | } | 559 | } |
560 | }, | 560 | }, |
561 | 561 | ||
562 | //------------------------------------------------------------------------- | 562 | //------------------------------------------------------------------------- |
563 | 563 | ||
564 | 'log': function(aMessage, aResult) { | 564 | 'log': function(aMessage, aResult) { |
565 | if (CLIPPERZ_DEFERRED_LOGGING_ENABLED) { | 565 | if (CLIPPERZ_DEFERRED_LOGGING_ENABLED) { |
566 | Clipperz.log(aMessage + " ", aResult); | 566 | Clipperz.log(aMessage + " ", aResult); |
567 | } | 567 | } |
568 | 568 | ||
569 | return aResult; | 569 | return aResult; |
570 | }, | 570 | }, |
571 | 571 | ||
572 | //========================================================================= | 572 | //========================================================================= |
573 | 573 | ||
574 | 'deferredCompare': function (aComparator, aDeferred, bDeferred) { | 574 | 'deferredCompare': function (aComparator, aDeferred, bDeferred) { |
575 | var deferredResult; | 575 | var deferredResult; |
576 | 576 | ||
577 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredCompare", {trace:false}); | 577 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredCompare", {trace:false}); |
578 | deferredResult.addCallback(Clipperz.Async.collectAll, [aDeferred, bDeferred]); | 578 | deferredResult.addCallback(Clipperz.Async.collectAll, [aDeferred, bDeferred]); |
579 | deferredResult.addCallback(function (someResults) { | 579 | deferredResult.addCallback(function (someResults) { |
580 | var result; | 580 | var result; |
581 | 581 | ||
582 | if (aComparator(someResults[0], someResults[1]) > 0) { | 582 | if (aComparator(someResults[0], someResults[1]) > 0) { |
583 | result = MochiKit.Async.succeed(); | 583 | result = MochiKit.Async.succeed(); |
584 | } else { | 584 | } else { |
585 | result = MochiKit.Async.fail(); | 585 | result = MochiKit.Async.fail(); |
586 | }; | 586 | }; |
587 | 587 | ||
588 | return result; | 588 | return result; |
589 | }); | 589 | }); |
590 | deferredResult.callback(); | 590 | deferredResult.callback(); |
591 | 591 | ||
592 | return deferredResult; | 592 | return deferredResult; |
593 | }, | 593 | }, |
594 | 594 | ||
595 | //------------------------------------------------------------------------- | 595 | //------------------------------------------------------------------------- |
596 | 596 | ||
597 | 'insertIntoSortedArray': function (anObject, aDeferredComparator, aSortedResult) { | 597 | 'insertIntoSortedArray': function (anObject, aDeferredComparator, aSortedResult) { |
598 | var deferredResult; | 598 | var deferredResult; |
599 | var i, c; | 599 | var i, c; |
600 | 600 | ||
601 | if (aSortedResult.length == 0) { | 601 | if (aSortedResult.length == 0) { |
602 | deferredResult = MochiKit.Async.succeed([anObject]); | 602 | deferredResult = MochiKit.Async.succeed([anObject]); |
603 | } else { | 603 | } else { |
604 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.insertIntoSortedArray", {trace:false}); | 604 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.insertIntoSortedArray", {trace:false}); |
605 | c = aSortedResult.length + 1; | 605 | c = aSortedResult.length + 1; |
606 | for (i=0; i<c; i++) { | 606 | for (i=0; i<c; i++) { |
607 | deferredResult.addCallback(function (aDeferredComparator, aObject, bObject, aContext) { | 607 | deferredResult.addCallback(function (aDeferredComparator, aObject, bObject, aContext) { |
608 | var innerDeferredResult; | 608 | var innerDeferredResult; |
609 | 609 | ||
610 | innerDeferredResult = new Clipperz.Async.Deferred("Clipperz.Async.insertIntoSortedArray <inner compare>", {trace:false}); | 610 | innerDeferredResult = new Clipperz.Async.Deferred("Clipperz.Async.insertIntoSortedArray <inner compare>", {trace:false}); |
611 | innerDeferredResult.addCallback(aDeferredComparator, aObject, bObject); | 611 | innerDeferredResult.addCallback(aDeferredComparator, aObject, bObject); |
612 | innerDeferredResult.addErrback(MochiKit.Async.fail, aContext); | 612 | innerDeferredResult.addErrback(MochiKit.Async.fail, aContext); |
613 | innerDeferredResult.callback(); | 613 | innerDeferredResult.callback(); |
614 | 614 | ||
615 | return innerDeferredResult; | 615 | return innerDeferredResult; |
616 | }, aDeferredComparator, anObject, aSortedResult[i], i); | 616 | }, aDeferredComparator, anObject, aSortedResult[i], i); |
617 | } | 617 | } |
618 | deferredResult.addMethod(aSortedResult, 'push', anObject); | 618 | deferredResult.addMethod(aSortedResult, 'push', anObject); |
619 | deferredResult.addErrback(function (anError) { | 619 | deferredResult.addErrback(function (anError) { |
620 | aSortedResult.splice(anError.message, 0, anObject); | 620 | aSortedResult.splice(anError.message, 0, anObject); |
621 | }) | 621 | }) |
622 | deferredResult.addBoth(MochiKit.Async.succeed, aSortedResult); | 622 | deferredResult.addBoth(MochiKit.Async.succeed, aSortedResult); |
623 | deferredResult.callback(); | 623 | deferredResult.callback(); |
624 | } | 624 | } |
625 | 625 | ||
626 | return deferredResult; | 626 | return deferredResult; |
627 | }, | 627 | }, |
628 | 628 | ||
629 | //------------------------------------------------------------------------- | 629 | //------------------------------------------------------------------------- |
630 | 630 | ||
631 | 'deferredSort': function (aDeferredComparator, someObjects) { | 631 | 'deferredSort': function (aDeferredComparator, someObjects) { |
632 | var deferredResult; | 632 | var deferredResult; |
633 | var i, c; | 633 | var i, c; |
634 | 634 | ||
635 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredSort", {trace:false}); | 635 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredSort", {trace:false}); |
636 | c = someObjects.length; | 636 | c = someObjects.length; |
637 | for (i=0; i<c; i++) { | 637 | for (i=0; i<c; i++) { |
638 | deferredResult.addCallback(Clipperz.Async.insertIntoSortedArray, someObjects[i], aDeferredComparator); | 638 | deferredResult.addCallback(Clipperz.Async.insertIntoSortedArray, someObjects[i], aDeferredComparator); |
639 | if ((i % 50) == 0) { | 639 | if ((i % 50) == 0) { |
640 | //console.log("######### sort wait ##########"); | 640 | //console.log("######### sort wait ##########"); |
641 | deferredResult.addCallback(MochiKit.Async.wait, 0.5); | 641 | deferredResult.addCallback(MochiKit.Async.wait, 0.5); |
642 | } | 642 | } |
643 | } | 643 | } |
644 | deferredResult.callback([]); | 644 | deferredResult.callback([]); |
645 | 645 | ||
646 | return deferredResult; | 646 | return deferredResult; |
647 | }, | 647 | }, |
648 | 648 | ||
649 | //========================================================================= | 649 | //========================================================================= |
650 | 650 | ||
651 | 'deferredFilter': function (aFunction, someObjects) { | 651 | 'deferredFilter': function (aFunction, someObjects) { |
652 | vardeferredResult; | 652 | vardeferredResult; |
653 | vari, c; | 653 | vari, c; |
654 | 654 | ||
655 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredFilter", {trace:false}); | 655 | deferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredFilter", {trace:false}); |
656 | c = someObjects.length; | 656 | c = someObjects.length; |
657 | for (i=0; i<c; i++) { | 657 | for (i=0; i<c; i++) { |
658 | deferredResult.addCallback(function (aFunction, anObject, anIndex, aResult) { | 658 | deferredResult.addCallback(function (aFunction, anObject, anIndex, aResult) { |
659 | var innerDeferredResult; | 659 | var innerDeferredResult; |
660 | 660 | ||
661 | innerDeferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredFilter <inner - " + anIndex + ">", {trace:false}); | 661 | innerDeferredResult = new Clipperz.Async.Deferred("Clipperz.Async.deferredFilter <inner - " + anIndex + ">", {trace:false}); |
662 | innerDeferredResult.addCallback(aFunction, anObject); | 662 | innerDeferredResult.addCallback(aFunction, anObject); |
663 | innerDeferredResult.addCallback(function (aFilterResult) { | 663 | innerDeferredResult.addCallback(function (aFilterResult) { |
664 | if (aFilterResult) { | 664 | if (aFilterResult) { |
665 | aResult.push(anObject); | 665 | aResult.push(anObject); |
666 | }; | 666 | }; |
667 | }); | 667 | }); |
668 | innerDeferredResult.addBoth(MochiKit.Async.succeed, aResult); | 668 | innerDeferredResult.addBoth(MochiKit.Async.succeed, aResult); |
669 | innerDeferredResult.callback(); | 669 | innerDeferredResult.callback(); |
670 | 670 | ||
671 | return innerDeferredResult; | 671 | return innerDeferredResult; |
672 | }, aFunction, someObjects[i], i); | 672 | }, aFunction, someObjects[i], i); |
673 | } | 673 | } |
674 | deferredResult.callback([]); | 674 | deferredResult.callback([]); |
675 | 675 | ||
676 | return deferredResult; | 676 | return deferredResult; |
677 | }, | 677 | }, |
678 | 678 | ||
679 | 'forEach': function (aFunction) { | 679 | 'forEach': function (aFunction) { |
680 | return MochiKit.Base.partial(function (aFunction, anIterable) { | 680 | return MochiKit.Base.partial(function (aFunction, anIterable) { |
681 | MochiKit.Iter.forEach(anIterable, aFunction); | 681 | MochiKit.Iter.forEach(anIterable, aFunction); |
682 | }, aFunction); | 682 | }, aFunction); |
683 | }, | 683 | }, |
684 | 684 | ||
685 | //========================================================================= | 685 | //========================================================================= |
686 | 686 | ||
687 | 'or': function (someValues) { | 687 | 'or': function (someValues) { |
688 | return Clipperz.Async.callbacks("Clipperz.Async.or", [ | 688 | return Clipperz.Async.callbacks("Clipperz.Async.or", [ |
689 | MochiKit.Base.values, | 689 | MochiKit.Base.values, |
690 | MochiKit.Base.flattenArguments, | 690 | MochiKit.Base.flattenArguments, |
691 | //function (aValue) { console.log("Record.hasAnyCleanTextData - flatten", aValue); return aValue; }, | 691 | //function (aValue) { console.log("Record.hasAnyCleanTextData - flatten", aValue); return aValue; }, |
692 | function(someInnerValues) { | 692 | function(someInnerValues) { |
693 | return MochiKit.Iter.some(someInnerValues, MochiKit.Base.operator.identity); | 693 | return MochiKit.Iter.some(someInnerValues, MochiKit.Base.operator.identity); |
694 | } | 694 | } |
695 | ], {trace:false}, someValues); | 695 | ], {trace:false}, someValues); |
696 | }, | 696 | }, |
697 | 697 | ||
698 | //========================================================================= | 698 | //========================================================================= |
699 | 699 | ||
700 | 'clearResult': function () {}, | 700 | 'clearResult': function () {}, |
701 | 701 | ||
702 | //========================================================================= | 702 | //========================================================================= |
703 | __syntaxFix__: "syntax fix" | 703 | __syntaxFix__: "syntax fix" |
704 | }); | 704 | }); |
705 | 705 | ||
706 | 706 | ||
707 | //############################################################################# | 707 | //############################################################################# |
708 | 708 | ||
709 | CLIPPERZ_DEFERRED_LOGGING_ENABLED = true; | 709 | CLIPPERZ_DEFERRED_LOGGING_ENABLED = true; |
710 | CLIPPERZ_DEFERRED_TRACING_ENABLED = false; | 710 | CLIPPERZ_DEFERRED_TRACING_ENABLED = false; |
711 | CLIPPERZ_DEFERRED_CALL_LOGGING_ENABLED = false; | 711 | CLIPPERZ_DEFERRED_CALL_LOGGING_ENABLED = false; |
diff --git a/frontend/gamma/js/Clipperz/Base.js b/frontend/gamma/js/Clipperz/Base.js index 76b2c3f..9d399d9 100644 --- a/frontend/gamma/js/Clipperz/Base.js +++ b/frontend/gamma/js/Clipperz/Base.js | |||
@@ -1,528 +1,533 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } | 26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } |
27 | if (typeof(Clipperz.Base) == 'undefined') { Clipperz.Base = {}; } | 27 | if (typeof(Clipperz.Base) == 'undefined') { Clipperz.Base = {}; } |
28 | 28 | ||
29 | Clipperz.Base.VERSION = "0.2"; | 29 | Clipperz.Base.VERSION = "0.2"; |
30 | Clipperz.Base.NAME = "Clipperz.Base"; | 30 | Clipperz.Base.NAME = "Clipperz.Base"; |
31 | 31 | ||
32 | MochiKit.Base.update(Clipperz.Base, { | 32 | MochiKit.Base.update(Clipperz.Base, { |
33 | 33 | ||
34 | //------------------------------------------------------------------------- | 34 | //------------------------------------------------------------------------- |
35 | 35 | ||
36 | '__repr__': function () { | 36 | '__repr__': function () { |
37 | return "[" + this.NAME + " " + this.VERSION + "]"; | 37 | return "[" + this.NAME + " " + this.VERSION + "]"; |
38 | }, | 38 | }, |
39 | 39 | ||
40 | //------------------------------------------------------------------------- | 40 | //------------------------------------------------------------------------- |
41 | 41 | ||
42 | 'toString': function () { | 42 | 'toString': function () { |
43 | return this.__repr__(); | 43 | return this.__repr__(); |
44 | }, | 44 | }, |
45 | 45 | ||
46 | //------------------------------------------------------------------------- | 46 | //------------------------------------------------------------------------- |
47 | 47 | ||
48 | 'itemgetter': function (aKeyPath) { | 48 | 'itemgetter': function (aKeyPath) { |
49 | // return MochiKit.Base.compose.apply(null, [MochiKit.Base.itemgetter('key3')]); | 49 | // return MochiKit.Base.compose.apply(null, [MochiKit.Base.itemgetter('key3')]); |
50 | return MochiKit.Base.compose.apply(null, | 50 | return MochiKit.Base.compose.apply(null, |
51 | MochiKit.Base.map( | 51 | MochiKit.Base.map( |
52 | MochiKit.Base.itemgetter, | 52 | MochiKit.Base.itemgetter, |
53 | MochiKit.Iter.reversed( | 53 | MochiKit.Iter.reversed( |
54 | aKeyPath.split('.') | 54 | aKeyPath.split('.') |
55 | ) | 55 | ) |
56 | ) | 56 | ) |
57 | ); | 57 | ); |
58 | }, | 58 | }, |
59 | 59 | ||
60 | //------------------------------------------------------------------------- | 60 | //------------------------------------------------------------------------- |
61 | 61 | ||
62 | 'isUrl': function (aValue) { | 62 | 'isUrl': function (aValue) { |
63 | return (MochiKit.Base.urlRegExp.test(aValue)); | 63 | return (MochiKit.Base.urlRegExp.test(aValue)); |
64 | }, | 64 | }, |
65 | 65 | ||
66 | 'isEmail': function (aValue) { | 66 | 'isEmail': function (aValue) { |
67 | return (MochiKit.Base.emailRegExp.test(aValue)); | 67 | return (MochiKit.Base.emailRegExp.test(aValue)); |
68 | }, | 68 | }, |
69 | 69 | ||
70 | //------------------------------------------------------------------------- | 70 | //------------------------------------------------------------------------- |
71 | 71 | ||
72 | 'caseInsensitiveCompare': function (a, b) { | 72 | 'caseInsensitiveCompare': function (a, b) { |
73 | return MochiKit.Base.compare(a.toLowerCase(), b.toLowerCase()); | 73 | return MochiKit.Base.compare(a.toLowerCase(), b.toLowerCase()); |
74 | }, | 74 | }, |
75 | 75 | ||
76 | 'reverseComparator': function (aComparator) { | 76 | 'reverseComparator': function (aComparator) { |
77 | return MochiKit.Base.compose(function(aResult) { return -aResult; }, aComparator); | 77 | return MochiKit.Base.compose(function(aResult) { return -aResult; }, aComparator); |
78 | }, | 78 | }, |
79 | 79 | ||
80 | 'caseInsensitiveKeyComparator': function (aKey) { | ||
81 | return function (a, b) { | ||
82 | return MochiKit.Base.compare(a[aKey].toLowerCase(), b[aKey].toLowerCase()); | ||
83 | } | ||
84 | }, | ||
80 | //------------------------------------------------------------------------- | 85 | //------------------------------------------------------------------------- |
81 | /* | 86 | /* |
82 | 'dependsOn': function(module, deps) { | 87 | 'dependsOn': function(module, deps) { |
83 | if (!(module in Clipperz)) { | 88 | if (!(module in Clipperz)) { |
84 | MochiKit[module] = {}; | 89 | MochiKit[module] = {}; |
85 | } | 90 | } |
86 | 91 | ||
87 | if (typeof(dojo) != 'undefined') { | 92 | if (typeof(dojo) != 'undefined') { |
88 | dojo.provide('Clipperz.' + module); | 93 | dojo.provide('Clipperz.' + module); |
89 | } | 94 | } |
90 | for (var i = 0; i < deps.length; i++) { | 95 | for (var i = 0; i < deps.length; i++) { |
91 | if (typeof(dojo) != 'undefined') { | 96 | if (typeof(dojo) != 'undefined') { |
92 | dojo.require('Clipperz.' + deps[i]); | 97 | dojo.require('Clipperz.' + deps[i]); |
93 | } | 98 | } |
94 | if (typeof(JSAN) != 'undefined') { | 99 | if (typeof(JSAN) != 'undefined') { |
95 | JSAN.use('Clipperz.' + deps[i], []); | 100 | JSAN.use('Clipperz.' + deps[i], []); |
96 | } | 101 | } |
97 | if (!(deps[i] in Clipperz)) { | 102 | if (!(deps[i] in Clipperz)) { |
98 | throw 'Clipperz.' + module + ' depends on Clipperz.' + deps[i] + '!' | 103 | throw 'Clipperz.' + module + ' depends on Clipperz.' + deps[i] + '!' |
99 | } | 104 | } |
100 | } | 105 | } |
101 | }, | 106 | }, |
102 | */ | 107 | */ |
103 | //------------------------------------------------------------------------- | 108 | //------------------------------------------------------------------------- |
104 | 109 | ||
105 | 'trim': function (aValue) { | 110 | 'trim': function (aValue) { |
106 | return aValue.replace(/^\s+|\s+$/g, ""); | 111 | return aValue.replace(/^\s+|\s+$/g, ""); |
107 | }, | 112 | }, |
108 | 113 | ||
109 | //------------------------------------------------------------------------- | 114 | //------------------------------------------------------------------------- |
110 | 115 | ||
111 | 'stringToByteArray': function (aValue) { | 116 | 'stringToByteArray': function (aValue) { |
112 | varresult; | 117 | varresult; |
113 | var i, c; | 118 | var i, c; |
114 | 119 | ||
115 | result = []; | 120 | result = []; |
116 | 121 | ||
117 | c = aValue.length; | 122 | c = aValue.length; |
118 | for (i=0; i<c; i++) { | 123 | for (i=0; i<c; i++) { |
119 | result[i] = aValue.charCodeAt(i); | 124 | result[i] = aValue.charCodeAt(i); |
120 | } | 125 | } |
121 | 126 | ||
122 | return result; | 127 | return result; |
123 | }, | 128 | }, |
124 | 129 | ||
125 | //......................................................................... | 130 | //......................................................................... |
126 | 131 | ||
127 | 'byteArrayToString': function (anArrayOfBytes) { | 132 | 'byteArrayToString': function (anArrayOfBytes) { |
128 | varresult; | 133 | varresult; |
129 | var i, c; | 134 | var i, c; |
130 | 135 | ||
131 | result = ""; | 136 | result = ""; |
132 | 137 | ||
133 | c = anArrayOfBytes.length; | 138 | c = anArrayOfBytes.length; |
134 | for (i=0; i<c; i++) { | 139 | for (i=0; i<c; i++) { |
135 | result += String.fromCharCode(anArrayOfBytes[i]); | 140 | result += String.fromCharCode(anArrayOfBytes[i]); |
136 | } | 141 | } |
137 | 142 | ||
138 | return result; | 143 | return result; |
139 | }, | 144 | }, |
140 | 145 | ||
141 | //------------------------------------------------------------------------- | 146 | //------------------------------------------------------------------------- |
142 | 147 | ||
143 | 'getValueForKeyInFormContent': function (aFormContent, aKey) { | 148 | 'getValueForKeyInFormContent': function (aFormContent, aKey) { |
144 | return aFormContent[1][MochiKit.Base.find(aFormContent[0], aKey)]; | 149 | return aFormContent[1][MochiKit.Base.find(aFormContent[0], aKey)]; |
145 | }, | 150 | }, |
146 | 151 | ||
147 | //------------------------------------------------------------------------- | 152 | //------------------------------------------------------------------------- |
148 | 153 | ||
149 | 'indexOfObjectInArray': function(anObject, anArray) { | 154 | 'indexOfObjectInArray': function(anObject, anArray) { |
150 | varresult; | 155 | varresult; |
151 | vari, c; | 156 | vari, c; |
152 | 157 | ||
153 | result = -1; | 158 | result = -1; |
154 | 159 | ||
155 | c = anArray.length; | 160 | c = anArray.length; |
156 | for (i=0; ((i<c) && (result < 0)); i++) { | 161 | for (i=0; ((i<c) && (result < 0)); i++) { |
157 | if (anArray[i] === anObject) { | 162 | if (anArray[i] === anObject) { |
158 | result = i; | 163 | result = i; |
159 | } | 164 | } |
160 | } | 165 | } |
161 | 166 | ||
162 | return result; | 167 | return result; |
163 | }, | 168 | }, |
164 | 169 | ||
165 | //------------------------------------------------------------------------- | 170 | //------------------------------------------------------------------------- |
166 | 171 | ||
167 | 'removeObjectAtIndexFromArray': function(anIndex, anArray) { | 172 | 'removeObjectAtIndexFromArray': function(anIndex, anArray) { |
168 | anArray.splice(anIndex, 1); | 173 | anArray.splice(anIndex, 1); |
169 | }, | 174 | }, |
170 | 175 | ||
171 | //------------------------------------------------------------------------- | 176 | //------------------------------------------------------------------------- |
172 | 177 | ||
173 | 'removeObjectFromArray': function(anObject, anArray) { | 178 | 'removeObjectFromArray': function(anObject, anArray) { |
174 | varobjectIndex; | 179 | varobjectIndex; |
175 | 180 | ||
176 | objectIndex = Clipperz.Base.indexOfObjectInArray(anObject, anArray); | 181 | objectIndex = Clipperz.Base.indexOfObjectInArray(anObject, anArray); |
177 | if (objectIndex > -1) { | 182 | if (objectIndex > -1) { |
178 | Clipperz.Base.removeObjectAtIndexFromArray(objectIndex, anArray); | 183 | Clipperz.Base.removeObjectAtIndexFromArray(objectIndex, anArray); |
179 | } else { | 184 | } else { |
180 | Clipperz.log("Trying to remove an object not present in the array"); | 185 | Clipperz.log("Trying to remove an object not present in the array"); |
181 | throw Clipperz.Base.exception.ObjectNotFound; | 186 | throw Clipperz.Base.exception.ObjectNotFound; |
182 | } | 187 | } |
183 | }, | 188 | }, |
184 | 189 | ||
185 | 'removeFromArray': function(anArray, anObject) { | 190 | 'removeFromArray': function(anArray, anObject) { |
186 | return Clipperz.Base.removeObjectFromArray(anObject, anArray); | 191 | return Clipperz.Base.removeObjectFromArray(anObject, anArray); |
187 | }, | 192 | }, |
188 | 193 | ||
189 | //------------------------------------------------------------------------- | 194 | //------------------------------------------------------------------------- |
190 | 195 | ||
191 | 'splitStringAtFixedTokenSize': function(aString, aTokenSize) { | 196 | 'splitStringAtFixedTokenSize': function(aString, aTokenSize) { |
192 | var result; | 197 | var result; |
193 | varstringToProcess; | 198 | varstringToProcess; |
194 | 199 | ||
195 | stringToProcess = aString; | 200 | stringToProcess = aString; |
196 | result = []; | 201 | result = []; |
197 | if (stringToProcess != null) { | 202 | if (stringToProcess != null) { |
198 | while (stringToProcess.length > aTokenSize) { | 203 | while (stringToProcess.length > aTokenSize) { |
199 | result.push(stringToProcess.substring(0, aTokenSize)); | 204 | result.push(stringToProcess.substring(0, aTokenSize)); |
200 | stringToProcess = stringToProcess.substring(aTokenSize); | 205 | stringToProcess = stringToProcess.substring(aTokenSize); |
201 | } | 206 | } |
202 | 207 | ||
203 | result.push(stringToProcess); | 208 | result.push(stringToProcess); |
204 | } | 209 | } |
205 | 210 | ||
206 | return result; | 211 | return result; |
207 | }, | 212 | }, |
208 | 213 | ||
209 | //------------------------------------------------------------------------- | 214 | //------------------------------------------------------------------------- |
210 | 215 | ||
211 | 'objectType': function(anObject) { | 216 | 'objectType': function(anObject) { |
212 | var result; | 217 | var result; |
213 | 218 | ||
214 | if (anObject == null) { | 219 | if (anObject == null) { |
215 | result = null; | 220 | result = null; |
216 | } else { | 221 | } else { |
217 | result = typeof(anObject); | 222 | result = typeof(anObject); |
218 | 223 | ||
219 | if (result == "object") { | 224 | if (result == "object") { |
220 | if (anObject instanceof Array) { | 225 | if (anObject instanceof Array) { |
221 | result = 'array' | 226 | result = 'array' |
222 | } else if (anObject.constructor == Boolean) { | 227 | } else if (anObject.constructor == Boolean) { |
223 | result = 'boolean' | 228 | result = 'boolean' |
224 | } else if (anObject instanceof Date) { | 229 | } else if (anObject instanceof Date) { |
225 | result = 'date' | 230 | result = 'date' |
226 | } else if (anObject instanceof Error) { | 231 | } else if (anObject instanceof Error) { |
227 | result = 'error' | 232 | result = 'error' |
228 | } else if (anObject instanceof Function) { | 233 | } else if (anObject instanceof Function) { |
229 | result = 'function' | 234 | result = 'function' |
230 | } else if (anObject.constructor == Number) { | 235 | } else if (anObject.constructor == Number) { |
231 | result = 'number' | 236 | result = 'number' |
232 | } else if (anObject.constructor == String) { | 237 | } else if (anObject.constructor == String) { |
233 | result = 'string' | 238 | result = 'string' |
234 | } else if (anObject instanceof Object) { | 239 | } else if (anObject instanceof Object) { |
235 | result = 'object' | 240 | result = 'object' |
236 | } else { | 241 | } else { |
237 | throw Clipperz.Base.exception.UnknownType; | 242 | throw Clipperz.Base.exception.UnknownType; |
238 | } | 243 | } |
239 | } | 244 | } |
240 | } | 245 | } |
241 | 246 | ||
242 | return result; | 247 | return result; |
243 | }, | 248 | }, |
244 | 249 | ||
245 | //------------------------------------------------------------------------- | 250 | //------------------------------------------------------------------------- |
246 | 251 | ||
247 | 'escapeHTML': function(aValue) { | 252 | 'escapeHTML': function(aValue) { |
248 | var result; | 253 | var result; |
249 | 254 | ||
250 | result = aValue; | 255 | result = aValue; |
251 | result = result.replace(/</g, "<"); | 256 | result = result.replace(/</g, "<"); |
252 | result = result.replace(/>/g, ">"); | 257 | result = result.replace(/>/g, ">"); |
253 | 258 | ||
254 | return result; | 259 | return result; |
255 | }, | 260 | }, |
256 | 261 | ||
257 | //------------------------------------------------------------------------- | 262 | //------------------------------------------------------------------------- |
258 | 263 | ||
259 | 'deepClone': function(anObject) { | 264 | 'deepClone': function(anObject) { |
260 | var result; | 265 | var result; |
261 | 266 | ||
262 | result = Clipperz.Base.evalJSON(Clipperz.Base.serializeJSON(anObject)); | 267 | result = Clipperz.Base.evalJSON(Clipperz.Base.serializeJSON(anObject)); |
263 | 268 | ||
264 | return result; | 269 | return result; |
265 | }, | 270 | }, |
266 | 271 | ||
267 | //------------------------------------------------------------------------- | 272 | //------------------------------------------------------------------------- |
268 | 273 | ||
269 | //'deepCompare': function (aObject, bObject) { | 274 | //'deepCompare': function (aObject, bObject) { |
270 | // return (Clipperz.Base.serializeJSON(aObject) == Clipperz.Base.serializeJSON(bObject)); | 275 | // return (Clipperz.Base.serializeJSON(aObject) == Clipperz.Base.serializeJSON(bObject)); |
271 | //}, | 276 | //}, |
272 | 277 | ||
273 | //------------------------------------------------------------------------- | 278 | //------------------------------------------------------------------------- |
274 | 279 | ||
275 | 'evalJSON': function(aString) { | 280 | 'evalJSON': function(aString) { |
276 | return JSON.parse(aString); | 281 | return JSON.parse(aString); |
277 | }, | 282 | }, |
278 | 283 | ||
279 | 'serializeJSON': function(anObject) { | 284 | 'serializeJSON': function(anObject) { |
280 | return JSON.stringify(anObject); | 285 | return JSON.stringify(anObject); |
281 | }, | 286 | }, |
282 | 287 | ||
283 | 'formatJSON': function (anObject, sIndent) { | 288 | 'formatJSON': function (anObject, sIndent) { |
284 | var realTypeOf = function (v) { | 289 | var realTypeOf = function (v) { |
285 | if (typeof(v) == "object") { | 290 | if (typeof(v) == "object") { |
286 | if (v === null) return "null"; | 291 | if (v === null) return "null"; |
287 | if (v.constructor == (new Array).constructor) return "array"; | 292 | if (v.constructor == (new Array).constructor) return "array"; |
288 | if (v.constructor == (new Date).constructor) return "date"; | 293 | if (v.constructor == (new Date).constructor) return "date"; |
289 | if (v.constructor == (new RegExp).constructor) return "regex"; | 294 | if (v.constructor == (new RegExp).constructor) return "regex"; |
290 | return "object"; | 295 | return "object"; |
291 | } | 296 | } |
292 | return typeof(v); | 297 | return typeof(v); |
293 | }; | 298 | }; |
294 | 299 | ||
295 | //function FormatJSON(oData, sIndent) { | 300 | //function FormatJSON(oData, sIndent) { |
296 | if (arguments.length < 2) { | 301 | if (arguments.length < 2) { |
297 | var sIndent = ""; | 302 | var sIndent = ""; |
298 | } | 303 | } |
299 | // var sIndentStyle = " "; | 304 | // var sIndentStyle = " "; |
300 | var sIndentStyle = " "; | 305 | var sIndentStyle = " "; |
301 | var sDataType = realTypeOf(anObject); | 306 | var sDataType = realTypeOf(anObject); |
302 | 307 | ||
303 | // open object | 308 | // open object |
304 | if (sDataType == "array") { | 309 | if (sDataType == "array") { |
305 | if (anObject.length == 0) { | 310 | if (anObject.length == 0) { |
306 | return "[]"; | 311 | return "[]"; |
307 | } | 312 | } |
308 | var sHTML = "["; | 313 | var sHTML = "["; |
309 | } else if (sDataType == "object") { | 314 | } else if (sDataType == "object") { |
310 | var sHTML = "{"; | 315 | var sHTML = "{"; |
311 | } else { | 316 | } else { |
312 | return "{}"; | 317 | return "{}"; |
313 | } | 318 | } |
314 | // } else { | 319 | // } else { |
315 | // var iCount = 0; | 320 | // var iCount = 0; |
316 | // $.each(anObject, function() { | 321 | // $.each(anObject, function() { |
317 | // iCount++; | 322 | // iCount++; |
318 | // return; | 323 | // return; |
319 | // }); | 324 | // }); |
320 | // if (iCount == 0) { // object is empty | 325 | // if (iCount == 0) { // object is empty |
321 | // return "{}"; | 326 | // return "{}"; |
322 | // } | 327 | // } |
323 | // var sHTML = "{"; | 328 | // var sHTML = "{"; |
324 | // } | 329 | // } |
325 | 330 | ||
326 | // loop through items | 331 | // loop through items |
327 | var iCount = 0; | 332 | var iCount = 0; |
328 | // $.each(anObject, function(sKey, vValue) { | 333 | // $.each(anObject, function(sKey, vValue) { |
329 | MochiKit.Iter.forEach(MochiKit.Base.keys(anObject), function(sKey) { | 334 | MochiKit.Iter.forEach(MochiKit.Base.keys(anObject), function(sKey) { |
330 | var vValue = anObject[sKey]; | 335 | var vValue = anObject[sKey]; |
331 | 336 | ||
332 | if (iCount > 0) { | 337 | if (iCount > 0) { |
333 | sHTML += ","; | 338 | sHTML += ","; |
334 | } | 339 | } |
335 | if (sDataType == "array") { | 340 | if (sDataType == "array") { |
336 | sHTML += ("\n" + sIndent + sIndentStyle); | 341 | sHTML += ("\n" + sIndent + sIndentStyle); |
337 | } else { | 342 | } else { |
338 | sHTML += ("\n" + sIndent + sIndentStyle + "\"" + sKey + "\"" + ": "); | 343 | sHTML += ("\n" + sIndent + sIndentStyle + "\"" + sKey + "\"" + ": "); |
339 | } | 344 | } |
340 | 345 | ||
341 | // display relevant data type | 346 | // display relevant data type |
342 | switch (realTypeOf(vValue)) { | 347 | switch (realTypeOf(vValue)) { |
343 | case "array": | 348 | case "array": |
344 | case "object": | 349 | case "object": |
345 | sHTML += Clipperz.Base.formatJSON(vValue, (sIndent + sIndentStyle)); | 350 | sHTML += Clipperz.Base.formatJSON(vValue, (sIndent + sIndentStyle)); |
346 | break; | 351 | break; |
347 | case "boolean": | 352 | case "boolean": |
348 | case "number": | 353 | case "number": |
349 | sHTML += vValue.toString(); | 354 | sHTML += vValue.toString(); |
350 | break; | 355 | break; |
351 | case "null": | 356 | case "null": |
352 | sHTML += "null"; | 357 | sHTML += "null"; |
353 | break; | 358 | break; |
354 | case "string": | 359 | case "string": |
355 | sHTML += ("\"" + vValue + "\""); | 360 | sHTML += ("\"" + vValue + "\""); |
356 | break; | 361 | break; |
357 | default: | 362 | default: |
358 | sHTML += ("TYPEOF: " + typeof(vValue)); | 363 | sHTML += ("TYPEOF: " + typeof(vValue)); |
359 | } | 364 | } |
360 | 365 | ||
361 | // loop | 366 | // loop |
362 | iCount++; | 367 | iCount++; |
363 | }); | 368 | }); |
364 | 369 | ||
365 | // close object | 370 | // close object |
366 | if (sDataType == "array") { | 371 | if (sDataType == "array") { |
367 | sHTML += ("\n" + sIndent + "]"); | 372 | sHTML += ("\n" + sIndent + "]"); |
368 | } else { | 373 | } else { |
369 | sHTML += ("\n" + sIndent + "}"); | 374 | sHTML += ("\n" + sIndent + "}"); |
370 | } | 375 | } |
371 | 376 | ||
372 | // return | 377 | // return |
373 | return sHTML; | 378 | return sHTML; |
374 | }, | 379 | }, |
375 | 380 | ||
376 | //------------------------------------------------------------------------- | 381 | //------------------------------------------------------------------------- |
377 | 382 | ||
378 | 'mergeItems': function (anArrayOfValues) { | 383 | 'mergeItems': function (anArrayOfValues) { |
379 | var result; | 384 | var result; |
380 | var i, c; | 385 | var i, c; |
381 | 386 | ||
382 | result = {}; | 387 | result = {}; |
383 | 388 | ||
384 | c = anArrayOfValues.length; | 389 | c = anArrayOfValues.length; |
385 | for (i=0; i<c; i++) { | 390 | for (i=0; i<c; i++) { |
386 | result[anArrayOfValues[i][0]] = anArrayOfValues[i][1]; | 391 | result[anArrayOfValues[i][0]] = anArrayOfValues[i][1]; |
387 | } | 392 | } |
388 | 393 | ||
389 | return result; | 394 | return result; |
390 | }, | 395 | }, |
391 | 396 | ||
392 | //------------------------------------------------------------------------- | 397 | //------------------------------------------------------------------------- |
393 | 398 | ||
394 | 'map': function (fn, lstObj/*, lst... */) { | 399 | 'map': function (fn, lstObj/*, lst... */) { |
395 | var result; | 400 | var result; |
396 | 401 | ||
397 | if (MochiKit.Base.isArrayLike(lstObj)) { | 402 | if (MochiKit.Base.isArrayLike(lstObj)) { |
398 | result = MochiKit.Base.map.apply(this, arguments); | 403 | result = MochiKit.Base.map.apply(this, arguments); |
399 | } else { | 404 | } else { |
400 | varkeys; | 405 | varkeys; |
401 | var values; | 406 | var values; |
402 | var computedValues; | 407 | var computedValues; |
403 | 408 | ||
404 | keys = MochiKit.Base.keys(lstObj); | 409 | keys = MochiKit.Base.keys(lstObj); |
405 | values = MochiKit.Base.values(lstObj); | 410 | values = MochiKit.Base.values(lstObj); |
406 | computedValues = MochiKit.Base.map(fn, values); | 411 | computedValues = MochiKit.Base.map(fn, values); |
407 | 412 | ||
408 | result = Clipperz.Base.mergeItems(MochiKit.Base.zip(keys, computedValues)); | 413 | result = Clipperz.Base.mergeItems(MochiKit.Base.zip(keys, computedValues)); |
409 | } | 414 | } |
410 | 415 | ||
411 | return result; | 416 | return result; |
412 | }, | 417 | }, |
413 | 418 | ||
414 | //------------------------------------------------------------------------- | 419 | //------------------------------------------------------------------------- |
415 | 420 | ||
416 | 'sanitizeString': function(aValue) { | 421 | 'sanitizeString': function(aValue) { |
417 | var result; | 422 | var result; |
418 | 423 | ||
419 | if (Clipperz.Base.objectType(aValue) == 'string') { | 424 | if (Clipperz.Base.objectType(aValue) == 'string') { |
420 | result = aValue; | 425 | result = aValue; |
421 | result = result.replace(/</img,"<"); | 426 | result = result.replace(/</img,"<"); |
422 | result = result.replace(/>/img,">"); | 427 | result = result.replace(/>/img,">"); |
423 | } else { | 428 | } else { |
424 | result = aValue; | 429 | result = aValue; |
425 | } | 430 | } |
426 | 431 | ||
427 | return result; | 432 | return result; |
428 | }, | 433 | }, |
429 | 434 | ||
430 | //------------------------------------------------------------------------- | 435 | //------------------------------------------------------------------------- |
431 | 436 | ||
432 | 'module': function(aValue) { | 437 | 'module': function(aValue) { |
433 | // aValue = 'Clipperz.PM.Compact' | 438 | // aValue = 'Clipperz.PM.Compact' |
434 | // | 439 | // |
435 | // if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } | 440 | // if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } |
436 | // if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } | 441 | // if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } |
437 | // if (typeof(Clipperz.PM.UI.Common.Components) == 'undefined') { Clipperz.PM.UI.Common.Components = {}; } | 442 | // if (typeof(Clipperz.PM.UI.Common.Components) == 'undefined') { Clipperz.PM.UI.Common.Components = {}; } |
438 | 443 | ||
439 | //console.log(">>> module: " + aValue); | 444 | //console.log(">>> module: " + aValue); |
440 | var currentScope; | 445 | var currentScope; |
441 | var pathElements; | 446 | var pathElements; |
442 | var i,c; | 447 | var i,c; |
443 | 448 | ||
444 | currentScope = window; | 449 | currentScope = window; |
445 | pathElements = aValue.split('.'); | 450 | pathElements = aValue.split('.'); |
446 | c = pathElements.length; | 451 | c = pathElements.length; |
447 | for (i=0; i<c; i++) { | 452 | for (i=0; i<c; i++) { |
448 | //console.log("--- current path element: " + pathElements[i]); | 453 | //console.log("--- current path element: " + pathElements[i]); |
449 | //console.log("--- current scope", currentScope); | 454 | //console.log("--- current scope", currentScope); |
450 | if (typeof(currentScope[pathElements[i]]) == 'undefined') { | 455 | if (typeof(currentScope[pathElements[i]]) == 'undefined') { |
451 | currentScope[pathElements[i]] = {}; | 456 | currentScope[pathElements[i]] = {}; |
452 | } | 457 | } |
453 | 458 | ||
454 | currentScope = currentScope[pathElements[i]]; | 459 | currentScope = currentScope[pathElements[i]]; |
455 | } | 460 | } |
456 | }, | 461 | }, |
457 | 462 | ||
458 | //------------------------------------------------------------------------- | 463 | //------------------------------------------------------------------------- |
459 | 464 | ||
460 | 'exception': { | 465 | 'exception': { |
461 | 'AbstractMethod': new MochiKit.Base.NamedError("Clipperz.Base.exception.AbstractMethod"), | 466 | 'AbstractMethod': new MochiKit.Base.NamedError("Clipperz.Base.exception.AbstractMethod"), |
462 | 'UnknownType': new MochiKit.Base.NamedError("Clipperz.Base.exception.UnknownType"), | 467 | 'UnknownType': new MochiKit.Base.NamedError("Clipperz.Base.exception.UnknownType"), |
463 | 'VulnerabilityIssue':new MochiKit.Base.NamedError("Clipperz.Base.exception.VulnerabilityIssue"), | 468 | 'VulnerabilityIssue':new MochiKit.Base.NamedError("Clipperz.Base.exception.VulnerabilityIssue"), |
464 | 'MandatoryParameter':new MochiKit.Base.NamedError("Clipperz.Base.exception.MandatoryParameter"), | 469 | 'MandatoryParameter':new MochiKit.Base.NamedError("Clipperz.Base.exception.MandatoryParameter"), |
465 | 'ObjectNotFound': new MochiKit.Base.NamedError("Clipperz.Base.exception.ObjectNotFound"), | 470 | 'ObjectNotFound': new MochiKit.Base.NamedError("Clipperz.Base.exception.ObjectNotFound"), |
466 | 'raise': function (aName) { | 471 | 'raise': function (aName) { |
467 | throw Clipperz.Base.exception[aName]; | 472 | throw Clipperz.Base.exception[aName]; |
468 | } | 473 | } |
469 | }, | 474 | }, |
470 | 475 | ||
471 | //------------------------------------------------------------------------- | 476 | //------------------------------------------------------------------------- |
472 | 477 | ||
473 | 'extend': YAHOO.extendX, | 478 | 'extend': YAHOO.extendX, |
474 | 479 | ||
475 | //------------------------------------------------------------------------- | 480 | //------------------------------------------------------------------------- |
476 | __syntaxFix__: "syntax fix" | 481 | __syntaxFix__: "syntax fix" |
477 | 482 | ||
478 | }); | 483 | }); |
479 | 484 | ||
480 | //Original regExp courtesy of John Gruber: http://daringfireball.net/2009/11/liberal_regex_for_matching_urls | 485 | //Original regExp courtesy of John Gruber: http://daringfireball.net/2009/11/liberal_regex_for_matching_urls |
481 | //Updated to match Clipperz usage pattern. | 486 | //Updated to match Clipperz usage pattern. |
482 | //MochiKit.Base.urlRegExp = new RegExp(/\b(([\w-]+:\/\/?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|\/)))/); | 487 | //MochiKit.Base.urlRegExp = new RegExp(/\b(([\w-]+:\/\/?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|\/)))/); |
483 | MochiKit.Base.urlRegExp = new RegExp(/^((([\w-]+:\/\/?)|(www\.))[^\s()<>]+((?:\([\w\d]+\)|([^[:punct:]\s]|\/)))?)/); | 488 | MochiKit.Base.urlRegExp = new RegExp(/^((([\w-]+:\/\/?)|(www\.))[^\s()<>]+((?:\([\w\d]+\)|([^[:punct:]\s]|\/)))?)/); |
484 | 489 | ||
485 | //RegExp found here: http://www.tipsntracks.com/117/validate-an-email-address-using-regular-expressions.html | 490 | //RegExp found here: http://www.tipsntracks.com/117/validate-an-email-address-using-regular-expressions.html |
486 | MochiKit.Base.emailRegExp = new RegExp(/^([a-zA-Z0-9_\-\.]+)@(([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3}))|(([01]?\d\d?|2[0-4]\d|25[0-5])\.){3}([01]?\d\d?|25[0-5]|2[0-4]\d))$/); | 491 | MochiKit.Base.emailRegExp = new RegExp(/^([a-zA-Z0-9_\-\.]+)@(([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3}))|(([01]?\d\d?|2[0-4]\d|25[0-5])\.){3}([01]?\d\d?|25[0-5]|2[0-4]\d))$/); |
487 | 492 | ||
488 | 493 | ||
489 | MochiKit.Base.registerComparator('Object dummy comparator', | 494 | MochiKit.Base.registerComparator('Object dummy comparator', |
490 | function(a, b) { | 495 | function(a, b) { |
491 | return ((a.constructor == Object) && (b.constructor == Object)); | 496 | return ((a.constructor == Object) && (b.constructor == Object)); |
492 | }, | 497 | }, |
493 | function(a, b) { | 498 | function(a, b) { |
494 | var result; | 499 | var result; |
495 | var aKeys; | 500 | var aKeys; |
496 | var bKeys; | 501 | var bKeys; |
497 | 502 | ||
498 | //MochiKit.Logging.logDebug(">>> comparator"); | 503 | //MochiKit.Logging.logDebug(">>> comparator"); |
499 | //MochiKit.Logging.logDebug("- a: " + Clipperz.Base.serializeJSON(a)); | 504 | //MochiKit.Logging.logDebug("- a: " + Clipperz.Base.serializeJSON(a)); |
500 | //MochiKit.Logging.logDebug("- b: " + Clipperz.Base.serializeJSON(a)); | 505 | //MochiKit.Logging.logDebug("- b: " + Clipperz.Base.serializeJSON(a)); |
501 | aKeys = MochiKit.Base.keys(a).sort(); | 506 | aKeys = MochiKit.Base.keys(a).sort(); |
502 | bKeys = MochiKit.Base.keys(b).sort(); | 507 | bKeys = MochiKit.Base.keys(b).sort(); |
503 | 508 | ||
504 | result = MochiKit.Base.compare(aKeys, bKeys); | 509 | result = MochiKit.Base.compare(aKeys, bKeys); |
505 | //if (result != 0) { | 510 | //if (result != 0) { |
506 | //MochiKit.Logging.logDebug("- comparator 'keys':"); | 511 | //MochiKit.Logging.logDebug("- comparator 'keys':"); |
507 | //MochiKit.Logging.logDebug("- comparator aKeys: " + Clipperz.Base.serializeJSON(aKeys)); | 512 | //MochiKit.Logging.logDebug("- comparator aKeys: " + Clipperz.Base.serializeJSON(aKeys)); |
508 | //MochiKit.Logging.logDebug("- comparator bKeys: " + Clipperz.Base.serializeJSON(bKeys)); | 513 | //MochiKit.Logging.logDebug("- comparator bKeys: " + Clipperz.Base.serializeJSON(bKeys)); |
509 | //} | 514 | //} |
510 | if (result == 0) { | 515 | if (result == 0) { |
511 | vari, c; | 516 | vari, c; |
512 | 517 | ||
513 | c = aKeys.length; | 518 | c = aKeys.length; |
514 | for (i=0; (i<c) && (result == 0); i++) { | 519 | for (i=0; (i<c) && (result == 0); i++) { |
515 | result = MochiKit.Base.compare(a[aKeys[i]], b[bKeys[i]]); | 520 | result = MochiKit.Base.compare(a[aKeys[i]], b[bKeys[i]]); |
516 | //if (result != 0) { | 521 | //if (result != 0) { |
517 | //MochiKit.Logging.logDebug("- comparator 'values':"); | 522 | //MochiKit.Logging.logDebug("- comparator 'values':"); |
518 | //MochiKit.Logging.logDebug("- comparator a[aKeys[i]]: " + Clipperz.Base.serializeJSON(a[aKeys[i]])); | 523 | //MochiKit.Logging.logDebug("- comparator a[aKeys[i]]: " + Clipperz.Base.serializeJSON(a[aKeys[i]])); |
519 | //MochiKit.Logging.logDebug("- comparator b[bKeys[i]]: " + Clipperz.Base.serializeJSON(b[bKeys[i]])); | 524 | //MochiKit.Logging.logDebug("- comparator b[bKeys[i]]: " + Clipperz.Base.serializeJSON(b[bKeys[i]])); |
520 | //} | 525 | //} |
521 | } | 526 | } |
522 | } | 527 | } |
523 | 528 | ||
524 | //MochiKit.Logging.logDebug("<<< comparator - result: " + result); | 529 | //MochiKit.Logging.logDebug("<<< comparator - result: " + result); |
525 | return result; | 530 | return result; |
526 | }, | 531 | }, |
527 | true | 532 | true |
528 | ); | 533 | ); |
diff --git a/frontend/gamma/js/Clipperz/PM/Connection.js b/frontend/gamma/js/Clipperz/PM/Connection.js index b4e8aaa..a05a310 100644 --- a/frontend/gamma/js/Clipperz/PM/Connection.js +++ b/frontend/gamma/js/Clipperz/PM/Connection.js | |||
@@ -1,616 +1,640 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } | 26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } |
27 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } | 27 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } |
28 | 28 | ||
29 | //----------------------------------------------------------------------------- | 29 | //----------------------------------------------------------------------------- |
30 | // | 30 | // |
31 | // Abstract C O N N E C T I O N class | 31 | // Abstract C O N N E C T I O N class |
32 | // | 32 | // |
33 | //----------------------------------------------------------------------------- | 33 | //----------------------------------------------------------------------------- |
34 | 34 | ||
35 | Clipperz.PM.Connection = function (args) { | 35 | Clipperz.PM.Connection = function (args) { |
36 | args = args || {}; | 36 | args = args || {}; |
37 | 37 | ||
38 | this._proxy = args.proxy || Clipperz.PM.Proxy.defaultProxy; | 38 | this._proxy = args.proxy || Clipperz.PM.Proxy.defaultProxy; |
39 | this._getCredentialsFunction = args.getCredentialsFunction; | 39 | this._getCredentialsFunction = args.getCredentialsFunction; |
40 | 40 | ||
41 | this._clipperz_pm_crypto_version = null; | 41 | this._clipperz_pm_crypto_version = null; |
42 | this._connectionId = null; | 42 | this._connectionId = null; |
43 | this._sharedSecret = null; | 43 | this._sharedSecret = null; |
44 | this._serverLockValue = null; | ||
44 | 45 | ||
45 | return this; | 46 | return this; |
46 | } | 47 | } |
47 | 48 | ||
48 | Clipperz.PM.Connection.prototype = MochiKit.Base.update(null, { | 49 | Clipperz.PM.Connection.prototype = MochiKit.Base.update(null, { |
49 | 50 | ||
50 | 'toString': function() { | 51 | 'toString': function() { |
51 | return "Connection [" + this.version() + "]"; | 52 | return "Connection [" + this.version() + "]"; |
52 | }, | 53 | }, |
53 | 54 | ||
54 | //========================================================================= | 55 | //========================================================================= |
55 | 56 | ||
56 | 'version': function() { | 57 | 'version': function() { |
57 | throw Clipperz.Base.exception.AbstractMethod; | 58 | throw Clipperz.Base.exception.AbstractMethod; |
58 | }, | 59 | }, |
59 | 60 | ||
60 | 'clipperz_pm_crypto_version': function() { | 61 | 'clipperz_pm_crypto_version': function() { |
61 | if (this._clipperz_pm_crypto_version == null) { | 62 | if (this._clipperz_pm_crypto_version == null) { |
62 | var connectionVersions; | 63 | var connectionVersions; |
63 | varversions; | 64 | varversions; |
64 | varversion; | 65 | varversion; |
65 | var i, c; | 66 | var i, c; |
66 | 67 | ||
67 | version = null; | 68 | version = null; |
68 | connectionVersions = Clipperz.PM.Connection.communicationProtocol.versions; | 69 | connectionVersions = Clipperz.PM.Connection.communicationProtocol.versions; |
69 | versions = MochiKit.Base.keys(connectionVersions); | 70 | versions = MochiKit.Base.keys(connectionVersions); |
70 | c = versions.length; | 71 | c = versions.length; |
71 | for (i=0; i<c; i++) { | 72 | for (i=0; i<c; i++) { |
72 | if (! (versions[i] == 'current')) { | 73 | if (! (versions[i] == 'current')) { |
73 | if (this instanceof connectionVersions[versions[i]]) { | 74 | if (this instanceof connectionVersions[versions[i]]) { |
74 | version = versions[i]; | 75 | version = versions[i]; |
75 | }; | 76 | }; |
76 | } | 77 | } |
77 | } | 78 | } |
78 | 79 | ||
79 | this._clipperz_pm_crypto_version = version; | 80 | this._clipperz_pm_crypto_version = version; |
80 | } | 81 | } |
81 | 82 | ||
82 | return this._clipperz_pm_crypto_version; | 83 | return this._clipperz_pm_crypto_version; |
83 | }, | 84 | }, |
84 | 85 | ||
85 | //------------------------------------------------------------------------- | 86 | //------------------------------------------------------------------------- |
86 | 87 | ||
87 | 'defaultErrorHandler': function(anErrorString, anException) { | 88 | 'defaultErrorHandler': function(anErrorString, anException) { |
88 | MochiKit.Logging.logError("### Connection.defaultErrorHandler: " + anErrorString + " (" + anException + ")"); | 89 | MochiKit.Logging.logError("### Connection.defaultErrorHandler: " + anErrorString + " (" + anException + ")"); |
89 | }, | 90 | }, |
90 | 91 | ||
91 | //------------------------------------------------------------------------- | 92 | //------------------------------------------------------------------------- |
92 | 93 | ||
93 | 'getCredentialsFunction': function () { | 94 | 'getCredentialsFunction': function () { |
94 | return this._getCredentialsFunction; | 95 | return this._getCredentialsFunction; |
95 | }, | 96 | }, |
96 | 97 | ||
97 | 'normalizedCredentials': function(someValues) { | 98 | 'normalizedCredentials': function(someValues) { |
98 | throw Clipperz.Base.exception.AbstractMethod; | 99 | throw Clipperz.Base.exception.AbstractMethod; |
99 | }, | 100 | }, |
100 | 101 | ||
101 | //========================================================================= | 102 | //========================================================================= |
102 | 103 | ||
103 | 'proxy': function () { | 104 | 'proxy': function () { |
104 | return this._proxy; | 105 | return this._proxy; |
105 | }, | 106 | }, |
106 | 107 | ||
107 | //========================================================================= | 108 | //========================================================================= |
108 | 109 | ||
109 | 'register': function () { | 110 | 'register': function () { |
110 | throw Clipperz.Base.exception.AbstractMethod; | 111 | throw Clipperz.Base.exception.AbstractMethod; |
111 | }, | 112 | }, |
112 | 113 | ||
113 | 'login': function() { | 114 | 'login': function() { |
114 | throw Clipperz.Base.exception.AbstractMethod; | 115 | throw Clipperz.Base.exception.AbstractMethod; |
115 | }, | 116 | }, |
116 | 117 | ||
117 | //------------------------------------------------------------------------- | 118 | //------------------------------------------------------------------------- |
118 | 119 | ||
119 | 'message': function(someArguments, aCallback) { | 120 | 'message': function(someArguments, aCallback) { |
120 | throw Clipperz.Base.exception.AbstractMethod; | 121 | throw Clipperz.Base.exception.AbstractMethod; |
121 | }, | 122 | }, |
122 | 123 | ||
123 | //------------------------------------------------------------------------- | 124 | //------------------------------------------------------------------------- |
124 | 125 | ||
125 | 'serverSideUserCredentials': function() { | 126 | 'serverSideUserCredentials': function() { |
126 | throw Clipperz.Base.exception.AbstractMethod; | 127 | throw Clipperz.Base.exception.AbstractMethod; |
127 | }, | 128 | }, |
128 | 129 | ||
129 | //========================================================================= | 130 | //========================================================================= |
130 | 131 | ||
131 | 'sharedSecret': function () { | 132 | 'sharedSecret': function () { |
132 | return this._sharedSecret; | 133 | return this._sharedSecret; |
133 | }, | 134 | }, |
134 | 135 | ||
135 | 'setSharedSecret': function (aValue) { | 136 | 'setSharedSecret': function (aValue) { |
136 | this._sharedSecret = aValue; | 137 | this._sharedSecret = aValue; |
137 | }, | 138 | }, |
138 | 139 | ||
139 | //------------------------------------------------------------------------- | 140 | //------------------------------------------------------------------------- |
140 | 141 | ||
141 | 'connectionId': function() { | 142 | 'connectionId': function() { |
142 | return this._connectionId; | 143 | return this._connectionId; |
143 | }, | 144 | }, |
144 | 145 | ||
145 | 'setConnectionId': function(aValue) { | 146 | 'setConnectionId': function(aValue) { |
146 | this._connectionId = aValue; | 147 | this._connectionId = aValue; |
147 | }, | 148 | }, |
148 | 149 | ||
150 | //------------------------------------------------------------------------- | ||
151 | |||
152 | 'serverLockValue': function () { | ||
153 | return this._serverLockValue; | ||
154 | }, | ||
155 | |||
156 | 'setServerLockValue': function (aValue) { | ||
157 | this._serverLockValue = aValue; | ||
158 | }, | ||
159 | |||
149 | //========================================================================= | 160 | //========================================================================= |
150 | /* | 161 | /* |
151 | //TODO: ????? | 162 | //TODO: ????? |
152 | 'oneTimePassword': function() { | 163 | 'oneTimePassword': function() { |
153 | return this._oneTimePassword; | 164 | return this._oneTimePassword; |
154 | }, | 165 | }, |
155 | 166 | ||
156 | 'setOneTimePassword': function(aValue) { | 167 | 'setOneTimePassword': function(aValue) { |
157 | this._oneTimePassword = aValue; | 168 | this._oneTimePassword = aValue; |
158 | }, | 169 | }, |
159 | */ | 170 | */ |
160 | //========================================================================= | 171 | //========================================================================= |
161 | 172 | ||
162 | 'reset': function() { | 173 | 'reset': function() { |
163 | this.setSharedSecret(null); | 174 | this.setSharedSecret(null); |
164 | this.setConnectionId(null); | 175 | this.setConnectionId(null); |
165 | }, | 176 | }, |
166 | 177 | ||
167 | //========================================================================= | 178 | //========================================================================= |
168 | __syntaxFix__: "syntax fix" | 179 | __syntaxFix__: "syntax fix" |
169 | 180 | ||
170 | } | 181 | } |
171 | ); | 182 | ); |
172 | 183 | ||
173 | 184 | ||
174 | if (typeof(Clipperz.PM.Connection.SRP) == 'undefined') { Clipperz.PM.Connection.SRP = {}; } | 185 | if (typeof(Clipperz.PM.Connection.SRP) == 'undefined') { Clipperz.PM.Connection.SRP = {}; } |
175 | //----------------------------------------------------------------------------- | 186 | //----------------------------------------------------------------------------- |
176 | // | 187 | // |
177 | // S R P [ 1 . 0 ] C O N N E C T I O N class | 188 | // S R P [ 1 . 0 ] C O N N E C T I O N class |
178 | // | 189 | // |
179 | //----------------------------------------------------------------------------- | 190 | //----------------------------------------------------------------------------- |
180 | 191 | ||
181 | Clipperz.PM.Connection.SRP['1.0'] = function (args) { | 192 | Clipperz.PM.Connection.SRP['1.0'] = function (args) { |
182 | Clipperz.PM.Connection.call(this, args); | 193 | Clipperz.PM.Connection.call(this, args); |
183 | 194 | ||
184 | return this; | 195 | return this; |
185 | } | 196 | } |
186 | 197 | ||
187 | Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz.PM.Connection(), { | 198 | Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz.PM.Connection(), { |
188 | 199 | ||
189 | 'version': function() { | 200 | 'version': function() { |
190 | return '1.0'; | 201 | return '1.0'; |
191 | }, | 202 | }, |
192 | 203 | ||
193 | //========================================================================= | 204 | //========================================================================= |
194 | 205 | ||
195 | 'register': function (someUserData) { | 206 | 'register': function (someUserData) { |
196 | vardeferredResult; | 207 | vardeferredResult; |
197 | var cryptoVersion; | 208 | var cryptoVersion; |
198 | var srpConnection; | 209 | var srpConnection; |
199 | 210 | ||
200 | cryptoVersion = this.clipperz_pm_crypto_version(); | 211 | cryptoVersion = this.clipperz_pm_crypto_version(); |
201 | 212 | ||
202 | deferredResult = new Clipperz.Async.Deferred("Connection.registerWithVersion", {trace:false}); | 213 | deferredResult = new Clipperz.Async.Deferred("Connection.registerWithVersion", {trace:false}); |
203 | deferredResult.collectResults({ | 214 | deferredResult.collectResults({ |
204 | 'credentials': [ | 215 | 'credentials': [ |
205 | this.getCredentialsFunction(), | 216 | this.getCredentialsFunction(), |
206 | MochiKit.Base.method(this, 'normalizedCredentials'), | 217 | MochiKit.Base.method(this, 'normalizedCredentials'), |
207 | MochiKit.Base.bind(function(someCredentials) { | 218 | MochiKit.Base.bind(function(someCredentials) { |
208 | var srpConnection; | 219 | var srpConnection; |
209 | var result; | 220 | var result; |
210 | 221 | ||
211 | srpConnection = new Clipperz.Crypto.SRP.Connection({ C:someCredentials['username'], P:someCredentials['password'], hash:this.hash() }); | 222 | srpConnection = new Clipperz.Crypto.SRP.Connection({ C:someCredentials['username'], P:someCredentials['password'], hash:this.hash() }); |
212 | result = srpConnection.serverSideCredentials(); | 223 | result = srpConnection.serverSideCredentials(); |
213 | result['version'] = Clipperz.PM.Connection.communicationProtocol.currentVersion; | 224 | result['version'] = Clipperz.PM.Connection.communicationProtocol.currentVersion; |
214 | 225 | ||
215 | return result; | 226 | return result; |
216 | }, this) | 227 | }, this) |
217 | ], | 228 | ], |
218 | 'user': MochiKit.Base.partial(MochiKit.Async.succeed, someUserData), | 229 | 'user': MochiKit.Base.partial(MochiKit.Async.succeed, someUserData), |
219 | 'version':MochiKit.Base.partial(MochiKit.Async.succeed, Clipperz.PM.Connection.communicationProtocol.currentVersion), | 230 | 'version':MochiKit.Base.partial(MochiKit.Async.succeed, Clipperz.PM.Connection.communicationProtocol.currentVersion), |
220 | 'message':MochiKit.Base.partial(MochiKit.Async.succeed, 'completeRegistration') | 231 | 'message':MochiKit.Base.partial(MochiKit.Async.succeed, 'completeRegistration') |
221 | }); | 232 | }); |
222 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); | 233 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); |
223 | deferredResult.addMethod(this.proxy(), 'registration'); | 234 | deferredResult.addMethod(this.proxy(), 'registration'); |
224 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); | 235 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); |
225 | 236 | ||
226 | deferredResult.callback(); | 237 | deferredResult.callback(); |
227 | 238 | ||
228 | return deferredResult; | 239 | return deferredResult; |
229 | }, | 240 | }, |
230 | 241 | ||
231 | //------------------------------------------------------------------------- | 242 | //------------------------------------------------------------------------- |
232 | 243 | ||
233 | 'updateCredentials': function (aUsername, aPassphrase, someUserData) { | 244 | 'updateCredentials': function (aUsername, aPassphrase, someUserData) { |
234 | vardeferredResult; | 245 | vardeferredResult; |
235 | 246 | ||
236 | deferredResult = new Clipperz.Async.Deferred("Connection.updateCredentials", {trace:false}); | 247 | deferredResult = new Clipperz.Async.Deferred("Connection.updateCredentials", {trace:false}); |
237 | deferredResult.collectResults({ | 248 | deferredResult.collectResults({ |
238 | 'credentials': [ | 249 | 'credentials': [ |
239 | MochiKit.Base.method(this, 'normalizedCredentials', {username:aUsername, password:aPassphrase}), | 250 | MochiKit.Base.method(this, 'normalizedCredentials', {username:aUsername, password:aPassphrase}), |
240 | MochiKit.Base.bind(function(someCredentials) { | 251 | MochiKit.Base.bind(function(someCredentials) { |
241 | var srpConnection; | 252 | var srpConnection; |
242 | var result; | 253 | var result; |
243 | 254 | ||
244 | srpConnection = new Clipperz.Crypto.SRP.Connection({ C:someCredentials['username'], P:someCredentials['password'], hash:this.hash() }); | 255 | srpConnection = new Clipperz.Crypto.SRP.Connection({ C:someCredentials['username'], P:someCredentials['password'], hash:this.hash() }); |
245 | result = srpConnection.serverSideCredentials(); | 256 | result = srpConnection.serverSideCredentials(); |
246 | result['version'] = Clipperz.PM.Connection.communicationProtocol.currentVersion; | 257 | result['version'] = Clipperz.PM.Connection.communicationProtocol.currentVersion; |
247 | 258 | ||
248 | return result; | 259 | return result; |
249 | }, this) | 260 | }, this) |
250 | ], | 261 | ], |
251 | 'user': MochiKit.Base.partial(MochiKit.Async.succeed, someUserData) | 262 | 'user': MochiKit.Base.partial(MochiKit.Async.succeed, someUserData) |
252 | }); | 263 | }); |
253 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); | 264 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); |
254 | deferredResult.addMethod(this, 'message', 'upgradeUserCredentials'); | 265 | deferredResult.addMethod(this, 'message', 'upgradeUserCredentials'); |
255 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); | 266 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); |
256 | deferredResult.callback(); | 267 | deferredResult.callback(); |
257 | 268 | ||
258 | return deferredResult; | 269 | return deferredResult; |
259 | 270 | ||
260 | }, | 271 | }, |
261 | 272 | ||
262 | //========================================================================= | 273 | //========================================================================= |
263 | 274 | ||
264 | 'redeemOneTimePassword': function (someParameters) { | 275 | 'redeemOneTimePassword': function (someParameters) { |
265 | //console.log("Connections.redeemOneTimePassword", someParameters['username'], someParameters['password']); | 276 | //console.log("Connections.redeemOneTimePassword", someParameters['username'], someParameters['password']); |
266 | /* | 277 | /* |
267 | //========================================================================= | 278 | //========================================================================= |
268 | //LOGIN WITH PASSPHRASE, extracted from the TRUNK version (LoginPanel.js) | 279 | //LOGIN WITH PASSPHRASE, extracted from the TRUNK version (LoginPanel.js) |
269 | deferredResult.addCallback(function(anUsername, aOneTimePassword) { | 280 | deferredResult.addCallback(function(anUsername, aOneTimePassword) { |
270 | var args; | 281 | var args; |
271 | 282 | ||
272 | args = { | 283 | args = { |
273 | 'message': 'oneTimePassword', | 284 | 'message': 'oneTimePassword', |
274 | 'version': Clipperz.PM.Crypto.communicationProtocol.currentVersion, | 285 | 'version': Clipperz.PM.Crypto.communicationProtocol.currentVersion, |
275 | 'parameters': { | 286 | 'parameters': { |
276 | 'oneTimePasswordKey': Clipperz.PM.DataModel.OneTimePassword.computeKeyWithUsernameAndPassword(anUsername, aOneTimePassword), | 287 | 'oneTimePasswordKey': Clipperz.PM.DataModel.OneTimePassword.computeKeyWithUsernameAndPassword(anUsername, aOneTimePassword), |
277 | 'oneTimePasswordKeyChecksum': Clipperz.PM.DataModel.OneTimePassword.computeKeyChecksumWithUsernameAndPassword(anUsername, aOneTimePassword) | 288 | 'oneTimePasswordKeyChecksum': Clipperz.PM.DataModel.OneTimePassword.computeKeyChecksumWithUsernameAndPassword(anUsername, aOneTimePassword) |
278 | } | 289 | } |
279 | } | 290 | } |
280 | 291 | ||
281 | return args; | 292 | return args; |
282 | }, anUsername, oneTimePassword); | 293 | }, anUsername, oneTimePassword); |
283 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'OTP_login_loadingOTP'); | 294 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'OTP_login_loadingOTP'); |
284 | deferredResult.addCallback(MochiKit.Base.method(Clipperz.PM.Proxy.defaultProxy, 'handshake')); | 295 | deferredResult.addCallback(MochiKit.Base.method(Clipperz.PM.Proxy.defaultProxy, 'handshake')); |
285 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'OTP_login_extractingPassphrase'); | 296 | deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'OTP_login_extractingPassphrase'); |
286 | deferredResult.addCallback(function(aResult) { | 297 | deferredResult.addCallback(function(aResult) { |
287 | return Clipperz.PM.Crypto.deferredDecrypt(oneTimePassword, aResult['data'], aResult['version']); | 298 | return Clipperz.PM.Crypto.deferredDecrypt(oneTimePassword, aResult['data'], aResult['version']); |
288 | }); | 299 | }); |
289 | deferredResult.addCallback(function(aResult) { | 300 | deferredResult.addCallback(function(aResult) { |
290 | return (new Clipperz.ByteArray().appendBase64String(aResult['passphrase'])).asString(); | 301 | return (new Clipperz.ByteArray().appendBase64String(aResult['passphrase'])).asString(); |
291 | }); | 302 | }); |
292 | deferredResult.addMethod(this, 'doLoginWithUsernameAndPassphrase', anUsername), | 303 | deferredResult.addMethod(this, 'doLoginWithUsernameAndPassphrase', anUsername), |
293 | */ | 304 | */ |
294 | var args; | 305 | var args; |
295 | var normalizedOTP; | 306 | var normalizedOTP; |
296 | 307 | ||
297 | normalizedOTP = Clipperz.PM.DataModel.OneTimePassword.normalizedOneTimePassword(someParameters['password']); | 308 | normalizedOTP = Clipperz.PM.DataModel.OneTimePassword.normalizedOneTimePassword(someParameters['password']); |
298 | 309 | ||
299 | args = { | 310 | args = { |
300 | 'message': 'oneTimePassword', | 311 | 'message': 'oneTimePassword', |
301 | 'version': Clipperz.PM.Connection.communicationProtocol.currentVersion, | 312 | 'version': Clipperz.PM.Connection.communicationProtocol.currentVersion, |
302 | 'parameters': { | 313 | 'parameters': { |
303 | 'oneTimePasswordKey': Clipperz.PM.DataModel.OneTimePassword.computeKeyWithUsernameAndPassword(someParameters['username'], normalizedOTP), | 314 | 'oneTimePasswordKey': Clipperz.PM.DataModel.OneTimePassword.computeKeyWithUsernameAndPassword(someParameters['username'], normalizedOTP), |
304 | 'oneTimePasswordKeyChecksum':Clipperz.PM.DataModel.OneTimePassword.computeKeyChecksumWithUsernameAndPassword(someParameters['username'], normalizedOTP) | 315 | 'oneTimePasswordKeyChecksum':Clipperz.PM.DataModel.OneTimePassword.computeKeyChecksumWithUsernameAndPassword(someParameters['username'], normalizedOTP) |
305 | } | 316 | } |
306 | } | 317 | } |
307 | 318 | ||
308 | return Clipperz.Async.callbacks("Connction.redeemOTP", [ | 319 | return Clipperz.Async.callbacks("Connction.redeemOTP", [ |
309 | MochiKit.Base.method(this.proxy(), 'handshake', args), | 320 | MochiKit.Base.method(this.proxy(), 'handshake', args), |
310 | function(aResult) { | 321 | function(aResult) { |
311 | return Clipperz.PM.Crypto.deferredDecrypt({ | 322 | return Clipperz.PM.Crypto.deferredDecrypt({ |
312 | value:aResult['data'], | 323 | value:aResult['data'], |
313 | key:normalizedOTP, | 324 | key:normalizedOTP, |
314 | version:aResult['version'] | 325 | version:aResult['version'] |
315 | }); | 326 | }); |
316 | }, | 327 | }, |
317 | function(aResult) { | 328 | function(aResult) { |
318 | return (new Clipperz.ByteArray().appendBase64String(aResult['passphrase'])).asString(); | 329 | return (new Clipperz.ByteArray().appendBase64String(aResult['passphrase'])).asString(); |
319 | } | 330 | } |
320 | ], {trace:false}) | 331 | ], {trace:false}) |
321 | }, | 332 | }, |
322 | 333 | ||
323 | 'login': function(/*anUsername, aPassphrase*/) { | 334 | 'login': function(isReconnecting) { |
324 | vardeferredResult; | 335 | vardeferredResult; |
325 | var cryptoVersion; | 336 | var cryptoVersion; |
326 | var srpConnection; | 337 | var srpConnection; |
327 | 338 | ||
328 | cryptoVersion = this.clipperz_pm_crypto_version(); | 339 | cryptoVersion = this.clipperz_pm_crypto_version(); |
329 | |||
330 | deferredResult = new Clipperz.Async.Deferred("Connection.login", {trace:false}); | 340 | deferredResult = new Clipperz.Async.Deferred("Connection.login", {trace:false}); |
331 | deferredResult.addCallback(this.getCredentialsFunction()); | 341 | deferredResult.addCallback(this.getCredentialsFunction()); |
332 | deferredResult.addMethod(this, 'normalizedCredentials'); | 342 | deferredResult.addMethod(this, 'normalizedCredentials'); |
333 | // deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'updatedProgressState', 'connection_sendingCredentials'); | 343 | // deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'updatedProgressState', 'connection_sendingCredentials'); |
334 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); | 344 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); |
335 | deferredResult.addCallback(MochiKit.Base.bind(function(someCredentials) { | 345 | deferredResult.addCallback(MochiKit.Base.bind(function(someCredentials) { |
336 | srpConnection = new Clipperz.Crypto.SRP.Connection({ C:someCredentials['username'], P:someCredentials['password'], hash:this.hash() }); | 346 | srpConnection = new Clipperz.Crypto.SRP.Connection({ C:someCredentials['username'], P:someCredentials['password'], hash:this.hash() }); |
337 | }, this)); | 347 | }, this)); |
338 | deferredResult.addCallback(function() { | 348 | deferredResult.addCallback(function() { |
339 | var result; | 349 | var result; |
340 | 350 | ||
341 | result = { | 351 | result = { |
342 | message: 'connect', | 352 | message: 'connect', |
343 | version: cryptoVersion, | 353 | version: cryptoVersion, |
344 | parameters: { | 354 | parameters: { |
345 | C: srpConnection.C(), | 355 | C: srpConnection.C(), |
346 | A: srpConnection.A().asString(16) | 356 | A: srpConnection.A().asString(16) |
347 | // reconnecting: this.connectionId() | 357 | // reconnecting: this.connectionId() |
348 | } | 358 | } |
349 | }; | 359 | }; |
350 | 360 | ||
351 | // TODO: ????? | 361 | // TODO: ????? |
352 | // if (isReconnecting == true) { | 362 | // if (isReconnecting == true) { |
353 | // args.parameters['reconnecting'] = aConnection.connectionId(); | 363 | // args.parameters['reconnecting'] = aConnection.connectionId(); |
354 | // } | 364 | // } |
355 | 365 | ||
356 | return result; | 366 | return result; |
357 | }); | 367 | }); |
358 | deferredResult.addMethod(this.proxy(), 'handshake'); | 368 | deferredResult.addMethod(this.proxy(), 'handshake'); |
359 | // deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'updatedProgressState', 'connection_credentialVerification'); | 369 | // deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'updatedProgressState', 'connection_credentialVerification'); |
360 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); | 370 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); |
361 | deferredResult.addCallback(function(someParameters) { | 371 | deferredResult.addCallback(function(someParameters) { |
362 | var result; | 372 | var result; |
363 | 373 | ||
364 | srpConnection.set_s(new Clipperz.Crypto.BigInt(someParameters['s'], 16)); | 374 | srpConnection.set_s(new Clipperz.Crypto.BigInt(someParameters['s'], 16)); |
365 | srpConnection.set_B(new Clipperz.Crypto.BigInt(someParameters['B'], 16)); | 375 | srpConnection.set_B(new Clipperz.Crypto.BigInt(someParameters['B'], 16)); |
366 | 376 | ||
367 | //TODO: ????? | 377 | //TODO: ????? |
368 | // if (typeof(someParameters['oneTimePassword']) != 'undefined') { | 378 | // if (typeof(someParameters['oneTimePassword']) != 'undefined') { |
369 | // this.setOneTimePassword(someParameters['oneTimePassword']); | 379 | // this.setOneTimePassword(someParameters['oneTimePassword']); |
370 | // } | 380 | // } |
371 | 381 | ||
372 | result = { | 382 | result = { |
373 | message: 'credentialCheck', | 383 | message: 'credentialCheck', |
374 | version: cryptoVersion, | 384 | version: cryptoVersion, |
375 | parameters: { | 385 | parameters: { |
376 | M1: srpConnection.M1() | 386 | M1: srpConnection.M1() |
377 | } | 387 | } |
378 | }; | 388 | }; |
379 | 389 | ||
380 | return result; | 390 | return result; |
381 | }); | 391 | }); |
382 | deferredResult.addMethod(this.proxy(), 'handshake'); | 392 | deferredResult.addMethod(this.proxy(), 'handshake'); |
383 | deferredResult.addCallback(function(someParameters) { | 393 | deferredResult.addCallback(function(someParameters) { |
384 | var result; | 394 | var result; |
385 | 395 | ||
386 | if (someParameters['M2'] == srpConnection.M2()) { | 396 | if (someParameters['M2'] == srpConnection.M2()) { |
387 | result = MochiKit.Async.succeed(someParameters); | 397 | result = MochiKit.Async.succeed(someParameters); |
388 | } else { | 398 | } else { |
389 | result = MochiKit.Async.fail(Clipperz.PM.Connection.exception.WrongChecksum); | 399 | result = MochiKit.Async.fail(Clipperz.PM.Connection.exception.WrongChecksum); |
390 | } | 400 | } |
391 | 401 | ||
392 | return result; | 402 | return result; |
393 | }); | 403 | }); |
394 | deferredResult.addCallback(MochiKit.Base.bind(function(someParameters) { | 404 | deferredResult.addCallback(MochiKit.Base.bind(function(someParameters) { |
395 | this.setConnectionId(someParameters['connectionId']); | 405 | this.setConnectionId(someParameters['connectionId']); |
396 | this.setSharedSecret(srpConnection.K()); | 406 | this.setSharedSecret(srpConnection.K()); |
397 | 407 | ||
398 | // TODO: ????? | 408 | // TODO: ????? |
399 | // if (this.oneTimePassword() != null) { | 409 | // if (this.oneTimePassword() != null) { |
400 | /// ?? result = this.user().oneTimePasswordManager().archiveOneTimePassword(this.oneTimePassword())); | 410 | /// ?? result = this.user().oneTimePasswordManager().archiveOneTimePassword(this.oneTimePassword())); |
401 | // } | 411 | // } |
412 | |||
413 | if ((isReconnecting == true) && (this.serverLockValue() != someParameters['lock'])) { | ||
414 | throw Clipperz.PM.Connection.exception.StaleData; | ||
415 | } else { | ||
416 | this.setServerLockValue(someParameters['lock']); | ||
417 | } | ||
418 | |||
402 | return someParameters; | 419 | return someParameters; |
403 | }, this)); | 420 | }, this)); |
404 | // deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'updatedProgressState', 'connection_loggedIn'); | 421 | // deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'updatedProgressState', 'connection_loggedIn'); |
405 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); | 422 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); |
406 | deferredResult.addCallback(MochiKit.Async.succeed, {result:"done"}); | 423 | deferredResult.addCallback(MochiKit.Async.succeed, {result:"done"}); |
407 | 424 | ||
408 | deferredResult.callback(); | 425 | deferredResult.callback(); |
409 | 426 | ||
410 | return deferredResult; | 427 | return deferredResult; |
411 | }, | 428 | }, |
412 | 429 | ||
413 | //========================================================================= | 430 | //========================================================================= |
414 | 431 | ||
415 | 'logout': function() { | 432 | 'logout': function() { |
416 | return Clipperz.Async.callbacks("Connection.logout", [ | 433 | return Clipperz.Async.callbacks("Connection.logout", [ |
417 | MochiKit.Base.method(this, 'setSharedSecret'), | 434 | MochiKit.Base.method(this, 'setSharedSecret'), |
418 | MochiKit.Base.method(this.proxy(), 'logout', {}) | 435 | MochiKit.Base.method(this.proxy(), 'logout', {}) |
419 | ], {trace:false}); | 436 | ], {trace:false}); |
420 | }, | 437 | }, |
421 | 438 | ||
422 | //========================================================================= | 439 | //========================================================================= |
423 | 440 | ||
424 | 'ping': function () { | 441 | 'ping': function () { |
425 | //TODO: ping the server in order to have a valid session | 442 | //TODO: ping the server in order to have a valid session |
426 | }, | 443 | }, |
427 | 444 | ||
428 | //========================================================================= | 445 | //========================================================================= |
429 | 446 | ||
430 | 'message': function(aMessageName, someParameters) { | 447 | 'message': function(aMessageName, someParameters) { |
431 | var args; | 448 | var args; |
449 | var parameters; | ||
450 | |||
451 | parameters = someParameters || {}; | ||
452 | if (typeof(parameters['user']) != 'undefined') { | ||
453 | parameters['user']['lock'] = this.serverLockValue(); | ||
454 | } | ||
432 | 455 | ||
433 | //console.log(">>> Connection.message", aMessageName, someParameters); | 456 | //console.log(">>> Connection.message", aMessageName, someParameters); |
434 | args = { | 457 | args = { |
435 | message: aMessageName, | 458 | message: aMessageName, |
436 | srpSharedSecret: this.sharedSecret(), | 459 | srpSharedSecret: this.sharedSecret(), |
437 | parameters: (someParameters || {}) | 460 | // parameters: (someParameters || {}) |
461 | parameters: parameters | ||
438 | } | 462 | } |
439 | 463 | ||
440 | return this.sendMessage(args); | 464 | return this.sendMessage(args); |
441 | }, | 465 | }, |
442 | 466 | ||
443 | //------------------------------------------------------------------------- | 467 | //------------------------------------------------------------------------- |
444 | 468 | ||
445 | 'sendMessage': function(someArguments) { | 469 | 'sendMessage': function(someArguments) { |
446 | vardeferredResult; | 470 | vardeferredResult; |
447 | 471 | ||
448 | deferredResult = new Clipperz.Async.Deferred("Connection.sendMessage", {trace:false}); | 472 | deferredResult = new Clipperz.Async.Deferred("Connection.sendMessage", {trace:false}); |
449 | deferredResult.addMethod(this.proxy(), 'message', someArguments); | 473 | deferredResult.addMethod(this.proxy(), 'message', someArguments); |
450 | deferredResult.addCallback(MochiKit.Base.bind(function(res) { | 474 | deferredResult.addCallback(MochiKit.Base.bind(function(res) { |
451 | if (typeof(res['lock']) != 'undefined') { | 475 | if (typeof(res['lock']) != 'undefined') { |
452 | //TODO: ????? | 476 | this.setServerLockValue(res['lock']); |
453 | // ?? this.user().setLock(res['lock']); | ||
454 | } | 477 | } |
455 | return res; | 478 | return res; |
456 | }, this)); | 479 | }, this)); |
457 | 480 | ||
458 | deferredResult.addErrback(MochiKit.Base.method(this, 'messageExceptionHandler'), someArguments); | 481 | deferredResult.addErrback(MochiKit.Base.method(this, 'messageExceptionHandler'), someArguments); |
459 | deferredResult.callback(); | 482 | deferredResult.callback(); |
460 | 483 | ||
461 | return deferredResult | 484 | return deferredResult |
462 | }, | 485 | }, |
463 | 486 | ||
464 | //------------------------------------------------------------------------- | 487 | //------------------------------------------------------------------------- |
465 | 488 | ||
466 | 'messageExceptionHandler': function(anOriginalMessageArguments, anError) { | 489 | 'messageExceptionHandler': function(anOriginalMessageArguments, anError) { |
467 | var result; | 490 | var result; |
468 | 491 | ||
469 | console.log(">>> Connection.messageExceptionHandler", anError, anError.message); | 492 | console.log(">>> Connection.messageExceptionHandler", anError, anError.message); |
470 | if (anError instanceof MochiKit.Async.CancelledError) { | 493 | if (anError instanceof MochiKit.Async.CancelledError) { |
471 | result = anError; | 494 | result = anError; |
472 | } else { | 495 | } else { |
473 | if ((anError.message == 'Trying to communicate without an active connection')|| | 496 | if ((anError.message == 'Trying to communicate without an active connection')|| |
474 | (anError.message == 'No tollManager available for current session') | 497 | (anError.message == 'No tollManager available for current session') |
475 | ) { | 498 | ) { |
476 | result = this.reestablishConnection(anOriginalMessageArguments); | 499 | result = this.reestablishConnection(anOriginalMessageArguments); |
477 | } else if (anError.message == 'Session with stale data') { | 500 | } else if (anError.message == 'Session with stale data') { |
478 | MochiKit.Signal.signal(this, 'EXCEPTION'); | 501 | MochiKit.Signal.signal(this, 'EXCEPTION'); |
479 | } else { | 502 | } else { |
480 | result = anError; | 503 | result = anError; |
481 | } | 504 | } |
482 | } | 505 | } |
483 | console.log("<<< Connection.messageExceptionHandler", anError) | 506 | console.log("<<< Connection.messageExceptionHandler", anError) |
484 | 507 | ||
485 | return result;; | 508 | return result;; |
486 | }, | 509 | }, |
487 | 510 | ||
488 | //========================================================================= | 511 | //========================================================================= |
489 | 512 | ||
490 | 'reestablishConnection': function(anOriginalMessageArguments) { | 513 | 'reestablishConnection': function(anOriginalMessageArguments) { |
491 | var deferredResult; | 514 | var deferredResult; |
492 | 515 | ||
493 | deferredResult = new Clipperz.Async.Deferred("Connection.reestablishConnection"); | 516 | deferredResult = new Clipperz.Async.Deferred("Connection.reestablishConnection"); |
494 | deferredResult.addMethod(this, 'reset'); | 517 | deferredResult.addMethod(this, 'reset'); |
495 | deferredResult.addMethod(this, 'login', true); | 518 | deferredResult.addMethod(this, 'login', true); |
496 | deferredResult.addCallback(MochiKit.Base.bind(function(aMessage) { | 519 | deferredResult.addCallback(MochiKit.Base.bind(function(aMessage) { |
497 | aMessage['srpSharedSecret'] = this.sharedSecret(); | 520 | aMessage['srpSharedSecret'] = this.sharedSecret(); |
498 | return aMessage; | 521 | return aMessage; |
499 | }, this), anOriginalMessageArguments); | 522 | }, this), anOriginalMessageArguments); |
500 | deferredResult.addMethod(this, 'sendMessage'); | 523 | deferredResult.addMethod(this, 'sendMessage'); |
501 | deferredResult.addErrback(MochiKit.Signal.signal, this, 'EXCEPTION', null); | 524 | deferredResult.addErrback(MochiKit.Signal.signal, this, 'EXCEPTION', null); |
502 | deferredResult.callback(); | 525 | deferredResult.callback(); |
503 | 526 | ||
504 | return deferredResult; | 527 | return deferredResult; |
505 | }, | 528 | }, |
506 | 529 | ||
507 | //========================================================================= | 530 | //========================================================================= |
508 | 531 | ||
509 | 'serverSideUserCredentials': function(aUsername, aPassword) { | 532 | 'serverSideUserCredentials': function(aUsername, aPassword) { |
510 | varresult; | 533 | varresult; |
511 | varnewSrpConnection; | 534 | varnewSrpConnection; |
512 | var normalizedAttributes; | 535 | var normalizedAttributes; |
513 | 536 | ||
514 | normalizedAttributes = this.normalizedCredentials({username:aUsername, password:aPassword}); | 537 | normalizedAttributes = this.normalizedCredentials({username:aUsername, password:aPassword}); |
515 | newSrpConnection = new Clipperz.Crypto.SRP.Connection({ C:normalizedAttributes['username'], P:normalizedAttributes['password'], hash:this.hash() }); | 538 | newSrpConnection = new Clipperz.Crypto.SRP.Connection({ C:normalizedAttributes['username'], P:normalizedAttributes['password'], hash:this.hash() }); |
516 | result = newSrpConnection.serverSideCredentials(); | 539 | result = newSrpConnection.serverSideCredentials(); |
517 | result['version'] = this.clipperz_pm_crypto_version(); | 540 | result['version'] = this.clipperz_pm_crypto_version(); |
518 | 541 | ||
519 | return result; | 542 | return result; |
520 | }, | 543 | }, |
521 | 544 | ||
522 | //========================================================================= | 545 | //========================================================================= |
523 | 546 | ||
524 | 'normalizedCredentials': function(someValues) { | 547 | 'normalizedCredentials': function(someValues) { |
525 | var result; | 548 | var result; |
526 | 549 | ||
527 | result = {} | 550 | result = {} |
528 | result['username'] = this.hash()(new Clipperz.ByteArray(someValues['username'])).toHexString().substring(2); | 551 | result['username'] = this.hash()(new Clipperz.ByteArray(someValues['username'])).toHexString().substring(2); |
529 | result['password'] = this.hash()(new Clipperz.ByteArray(someValues['password'] + someValues['username'])).toHexString().substring(2); | 552 | result['password'] = this.hash()(new Clipperz.ByteArray(someValues['password'] + someValues['username'])).toHexString().substring(2); |
530 | 553 | ||
531 | return result; | 554 | return result; |
532 | }, | 555 | }, |
533 | 556 | ||
534 | //----------------------------------------------------------------------------- | 557 | //----------------------------------------------------------------------------- |
535 | 558 | ||
536 | 'hash': function() { | 559 | 'hash': function() { |
537 | return Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].hash; | 560 | return Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].hash; |
538 | }, | 561 | }, |
539 | 562 | ||
540 | //----------------------------------------------------------------------------- | 563 | //----------------------------------------------------------------------------- |
541 | __syntaxFix__: "syntax fix" | 564 | __syntaxFix__: "syntax fix" |
542 | 565 | ||
543 | }); | 566 | }); |
544 | 567 | ||
545 | 568 | ||
546 | 569 | ||
547 | //----------------------------------------------------------------------------- | 570 | //----------------------------------------------------------------------------- |
548 | // | 571 | // |
549 | // S R P [ 1 . 1 ] C O N N E C T I O N class | 572 | // S R P [ 1 . 1 ] C O N N E C T I O N class |
550 | // | 573 | // |
551 | //----------------------------------------------------------------------------- | 574 | //----------------------------------------------------------------------------- |
552 | 575 | ||
553 | Clipperz.PM.Connection.SRP['1.1'] = function (args) { | 576 | Clipperz.PM.Connection.SRP['1.1'] = function (args) { |
554 | Clipperz.PM.Connection.SRP['1.0'].call(this, args); | 577 | Clipperz.PM.Connection.SRP['1.0'].call(this, args); |
555 | 578 | ||
556 | return this; | 579 | return this; |
557 | } | 580 | } |
558 | 581 | ||
559 | Clipperz.PM.Connection.SRP['1.1'].prototype = MochiKit.Base.update(new Clipperz.PM.Connection.SRP['1.0'](), { | 582 | Clipperz.PM.Connection.SRP['1.1'].prototype = MochiKit.Base.update(new Clipperz.PM.Connection.SRP['1.0'](), { |
560 | 583 | ||
561 | 'version': function() { | 584 | 'version': function() { |
562 | return '1.1'; | 585 | return '1.1'; |
563 | }, | 586 | }, |
564 | 587 | ||
565 | //----------------------------------------------------------------------------- | 588 | //----------------------------------------------------------------------------- |
566 | 589 | ||
567 | 'normalizedCredentials': function(someValues) { | 590 | 'normalizedCredentials': function(someValues) { |
568 | var result; | 591 | var result; |
569 | 592 | ||
570 | result = {} | 593 | result = {} |
571 | result['username'] = this.hash()(new Clipperz.ByteArray(someValues['username'] + someValues['password'])).toHexString().substring(2); | 594 | result['username'] = this.hash()(new Clipperz.ByteArray(someValues['username'] + someValues['password'])).toHexString().substring(2); |
572 | result['password'] = this.hash()(new Clipperz.ByteArray(someValues['password'] + someValues['username'])).toHexString().substring(2); | 595 | result['password'] = this.hash()(new Clipperz.ByteArray(someValues['password'] + someValues['username'])).toHexString().substring(2); |
573 | 596 | ||
574 | return result; | 597 | return result; |
575 | }, | 598 | }, |
576 | 599 | ||
577 | //----------------------------------------------------------------------------- | 600 | //----------------------------------------------------------------------------- |
578 | 601 | ||
579 | 'hash': function() { | 602 | 'hash': function() { |
580 | return Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].hash; | 603 | return Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].hash; |
581 | }, | 604 | }, |
582 | 605 | ||
583 | //----------------------------------------------------------------------------- | 606 | //----------------------------------------------------------------------------- |
584 | __syntaxFix__: "syntax fix" | 607 | __syntaxFix__: "syntax fix" |
585 | 608 | ||
586 | }); | 609 | }); |
587 | 610 | ||
588 | Clipperz.PM.Connection.exception = { | 611 | Clipperz.PM.Connection.exception = { |
589 | WrongChecksum: new MochiKit.Base.NamedError("Clipperz.ByteArray.exception.InvalidValue"), | 612 | WrongChecksum: new MochiKit.Base.NamedError("Clipperz.ByteArray.exception.InvalidValue"), |
613 | StaleData: new MochiKit.Base.NamedError("Stale data"), | ||
590 | UnexpectedRequest:new MochiKit.Base.NamedError("Clipperz.ByteArray.exception.UnexpectedRequest") | 614 | UnexpectedRequest:new MochiKit.Base.NamedError("Clipperz.ByteArray.exception.UnexpectedRequest") |
591 | }; | 615 | }; |
592 | 616 | ||
593 | 617 | ||
594 | Clipperz.PM.Connection.communicationProtocol = { | 618 | Clipperz.PM.Connection.communicationProtocol = { |
595 | 'currentVersion': '0.2', | 619 | 'currentVersion': '0.2', |
596 | 'versions': { | 620 | 'versions': { |
597 | '0.1': Clipperz.PM.Connection.SRP['1.0'],//Clipperz.Crypto.SRP.versions['1.0'].Connection, | 621 | '0.1': Clipperz.PM.Connection.SRP['1.0'],//Clipperz.Crypto.SRP.versions['1.0'].Connection, |
598 | '0.2': Clipperz.PM.Connection.SRP['1.1']//Clipperz.Crypto.SRP.versions['1.1'].Connection | 622 | '0.2': Clipperz.PM.Connection.SRP['1.1']//Clipperz.Crypto.SRP.versions['1.1'].Connection |
599 | }, | 623 | }, |
600 | 'fallbackVersions': { | 624 | 'fallbackVersions': { |
601 | // 'current':'0.1', | 625 | // 'current':'0.1', |
602 | '0.2': '0.1', | 626 | '0.2': '0.1', |
603 | '0.1': null | 627 | '0.1': null |
604 | } | 628 | } |
605 | }; | 629 | }; |
606 | 630 | ||
607 | MochiKit.Base.update(Clipperz.PM.Connection.communicationProtocol.versions, { | 631 | MochiKit.Base.update(Clipperz.PM.Connection.communicationProtocol.versions, { |
608 | 'current': Clipperz.PM.Connection.communicationProtocol.versions[Clipperz.PM.Connection.communicationProtocol.currentVersion] | 632 | 'current': Clipperz.PM.Connection.communicationProtocol.versions[Clipperz.PM.Connection.communicationProtocol.currentVersion] |
609 | }); | 633 | }); |
610 | 634 | ||
611 | MochiKit.Base.update(Clipperz.PM.Connection.communicationProtocol.fallbackVersions, { | 635 | MochiKit.Base.update(Clipperz.PM.Connection.communicationProtocol.fallbackVersions, { |
612 | 'current': Clipperz.PM.Connection.communicationProtocol.fallbackVersions[Clipperz.PM.Connection.communicationProtocol.currentVersion] | 636 | 'current': Clipperz.PM.Connection.communicationProtocol.fallbackVersions[Clipperz.PM.Connection.communicationProtocol.currentVersion] |
613 | }); | 637 | }); |
614 | 638 | ||
615 | 639 | ||
616 | 640 | ||
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/User.js b/frontend/gamma/js/Clipperz/PM/DataModel/User.js index 72d4006..646ce21 100644 --- a/frontend/gamma/js/Clipperz/PM/DataModel/User.js +++ b/frontend/gamma/js/Clipperz/PM/DataModel/User.js | |||
@@ -1,814 +1,814 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } | 26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } |
27 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } | 27 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } |
28 | if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } | 28 | if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } |
29 | 29 | ||
30 | 30 | ||
31 | //############################################################################# | 31 | //############################################################################# |
32 | 32 | ||
33 | Clipperz.PM.DataModel.User = function (args) { | 33 | Clipperz.PM.DataModel.User = function (args) { |
34 | args = args || {}; | 34 | args = args || {}; |
35 | 35 | ||
36 | Clipperz.PM.DataModel.User.superclass.constructor.apply(this, arguments); | 36 | Clipperz.PM.DataModel.User.superclass.constructor.apply(this, arguments); |
37 | 37 | ||
38 | this._username = args.username || null; | 38 | this._username = args.username || null; |
39 | this._getPassphraseFunction = args.getPassphraseFunction || null; | 39 | this._getPassphraseFunction = args.getPassphraseFunction || null; |
40 | 40 | ||
41 | this._data = null; | 41 | this._data = null; |
42 | 42 | ||
43 | this._connection = null; | 43 | this._connection = null; |
44 | this._connectionVersion = 'current'; | 44 | this._connectionVersion = 'current'; |
45 | 45 | ||
46 | this._serverData = null; | 46 | this._serverData = null; |
47 | this._serverLockValue = null; | 47 | //this._serverLockValue = null; |
48 | this._transientState = null; | 48 | this._transientState = null; |
49 | 49 | ||
50 | this._deferredLocks = { | 50 | this._deferredLocks = { |
51 | 'passphrase': new MochiKit.Async.DeferredLock(), | 51 | 'passphrase': new MochiKit.Async.DeferredLock(), |
52 | 'serverData': new MochiKit.Async.DeferredLock(), | 52 | 'serverData': new MochiKit.Async.DeferredLock(), |
53 | // 'recordsIndex': new MochiKit.Async.DeferredLock(), | 53 | // 'recordsIndex': new MochiKit.Async.DeferredLock(), |
54 | // 'directLoginsIndex':new MochiKit.Async.DeferredLock() | 54 | // 'directLoginsIndex':new MochiKit.Async.DeferredLock() |
55 | // 'preferences': new MochiKit.Async.DeferredLock() | 55 | // 'preferences': new MochiKit.Async.DeferredLock() |
56 | // 'oneTimePasswords': new MochiKit.Async.DeferredLock() | 56 | // 'oneTimePasswords': new MochiKit.Async.DeferredLock() |
57 | '__syntaxFix__': 'syntax fix' | 57 | '__syntaxFix__': 'syntax fix' |
58 | }; | 58 | }; |
59 | 59 | ||
60 | return this; | 60 | return this; |
61 | } | 61 | } |
62 | 62 | ||
63 | Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, { | 63 | Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, { |
64 | 64 | ||
65 | 'toString': function () { | 65 | 'toString': function () { |
66 | return "Clipperz.PM.DataModel.User - " + this.username(); | 66 | return "Clipperz.PM.DataModel.User - " + this.username(); |
67 | }, | 67 | }, |
68 | 68 | ||
69 | //------------------------------------------------------------------------- | 69 | //------------------------------------------------------------------------- |
70 | 70 | ||
71 | 'username': function () { | 71 | 'username': function () { |
72 | return this._username; | 72 | return this._username; |
73 | }, | 73 | }, |
74 | 74 | ||
75 | 'setUsername': function (aValue) { | 75 | 'setUsername': function (aValue) { |
76 | this._username = aValue; | 76 | this._username = aValue; |
77 | }, | 77 | }, |
78 | 78 | ||
79 | //------------------------------------------------------------------------- | 79 | //------------------------------------------------------------------------- |
80 | 80 | ||
81 | 'displayName': function() { | 81 | 'displayName': function() { |
82 | return "" + this.username() + ""; | 82 | return "" + this.username() + ""; |
83 | }, | 83 | }, |
84 | 84 | ||
85 | //------------------------------------------------------------------------- | 85 | //------------------------------------------------------------------------- |
86 | 86 | ||
87 | 'data': function () { | 87 | 'data': function () { |
88 | if (this._data == null) { | 88 | if (this._data == null) { |
89 | this._data = new Clipperz.KeyValueObjectStore(/*{'name':'User.data [1]'}*/); | 89 | this._data = new Clipperz.KeyValueObjectStore(/*{'name':'User.data [1]'}*/); |
90 | }; | 90 | }; |
91 | 91 | ||
92 | return this._data; | 92 | return this._data; |
93 | }, | 93 | }, |
94 | 94 | ||
95 | //------------------------------------------------------------------------- | 95 | //------------------------------------------------------------------------- |
96 | 96 | /* | |
97 | 'serverLockValue': function () { | 97 | 'serverLockValue': function () { |
98 | return this._serverLockValue; | 98 | return this._serverLockValue; |
99 | }, | 99 | }, |
100 | 100 | ||
101 | 'setServerLockValue': function (aValue) { | 101 | 'setServerLockValue': function (aValue) { |
102 | this._serverLockValue = aValue; | 102 | this._serverLockValue = aValue; |
103 | }, | 103 | }, |
104 | 104 | */ | |
105 | //------------------------------------------------------------------------- | 105 | //------------------------------------------------------------------------- |
106 | 106 | ||
107 | 'transientState': function () { | 107 | 'transientState': function () { |
108 | if (this._transientState == null) { | 108 | if (this._transientState == null) { |
109 | this._transientState = {} | 109 | this._transientState = {} |
110 | } | 110 | } |
111 | 111 | ||
112 | return this._transientState; | 112 | return this._transientState; |
113 | }, | 113 | }, |
114 | 114 | ||
115 | 'resetTransientState': function (isCommitting) { | 115 | 'resetTransientState': function (isCommitting) { |
116 | this._transientState = null; | 116 | this._transientState = null; |
117 | }, | 117 | }, |
118 | 118 | ||
119 | //------------------------------------------------------------------------- | 119 | //------------------------------------------------------------------------- |
120 | 120 | ||
121 | 'deferredLockForSection': function(aSectionName) { | 121 | 'deferredLockForSection': function(aSectionName) { |
122 | return this._deferredLocks[aSectionName]; | 122 | return this._deferredLocks[aSectionName]; |
123 | }, | 123 | }, |
124 | 124 | ||
125 | //------------------------------------------------------------------------- | 125 | //------------------------------------------------------------------------- |
126 | 126 | ||
127 | 'getPassphrase': function() { | 127 | 'getPassphrase': function() { |
128 | var deferredResult; | 128 | var deferredResult; |
129 | 129 | ||
130 | deferredResult = new Clipperz.Async.Deferred("User.getPassphrase", {trace:false}); | 130 | deferredResult = new Clipperz.Async.Deferred("User.getPassphrase", {trace:false}); |
131 | deferredResult.acquireLock(this.deferredLockForSection('passphrase')); | 131 | deferredResult.acquireLock(this.deferredLockForSection('passphrase')); |
132 | deferredResult.addMethod(this.data(), 'deferredGetOrSet', 'passphrase', this.getPassphraseFunction()); | 132 | deferredResult.addMethod(this.data(), 'deferredGetOrSet', 'passphrase', this.getPassphraseFunction()); |
133 | deferredResult.releaseLock(this.deferredLockForSection('passphrase')); | 133 | deferredResult.releaseLock(this.deferredLockForSection('passphrase')); |
134 | deferredResult.callback(); | 134 | deferredResult.callback(); |
135 | 135 | ||
136 | return deferredResult; | 136 | return deferredResult; |
137 | }, | 137 | }, |
138 | 138 | ||
139 | 'getPassphraseFunction': function () { | 139 | 'getPassphraseFunction': function () { |
140 | return this._getPassphraseFunction; | 140 | return this._getPassphraseFunction; |
141 | }, | 141 | }, |
142 | 142 | ||
143 | //------------------------------------------------------------------------- | 143 | //------------------------------------------------------------------------- |
144 | 144 | ||
145 | 'getCredentials': function () { | 145 | 'getCredentials': function () { |
146 | return Clipperz.Async.collectResults("User; get username and passphrase", { | 146 | return Clipperz.Async.collectResults("User; get username and passphrase", { |
147 | 'username': MochiKit.Base.method(this, 'username'), | 147 | 'username': MochiKit.Base.method(this, 'username'), |
148 | 'password': MochiKit.Base.method(this, 'getPassphrase') | 148 | 'password': MochiKit.Base.method(this, 'getPassphrase') |
149 | }, {trace:false})(); | 149 | }, {trace:false})(); |
150 | }, | 150 | }, |
151 | 151 | ||
152 | //------------------------------------------------------------------------- | 152 | //------------------------------------------------------------------------- |
153 | 153 | ||
154 | 'changePassphrase': function (aNewValue) { | 154 | 'changePassphrase': function (aNewValue) { |
155 | return this.updateCredentials(this.username(), aNewValue); | 155 | return this.updateCredentials(this.username(), aNewValue); |
156 | }, | 156 | }, |
157 | 157 | ||
158 | //......................................................................... | 158 | //......................................................................... |
159 | 159 | ||
160 | 'updateCredentials': function (aUsername, aPassphrase) { | 160 | 'updateCredentials': function (aUsername, aPassphrase) { |
161 | vardeferredResult; | 161 | vardeferredResult; |
162 | 162 | ||
163 | deferredResult = new Clipperz.Async.Deferred("User.updateCredentials", {trace:false}); | 163 | deferredResult = new Clipperz.Async.Deferred("User.updateCredentials", {trace:false}); |
164 | // deferredResult.addMethod(this, 'getPassphrase'); | 164 | // deferredResult.addMethod(this, 'getPassphrase'); |
165 | // deferredResult.setValue('currentPassphrase'); | 165 | // deferredResult.setValue('currentPassphrase'); |
166 | deferredResult.addMethod(this.connection(), 'ping'); | 166 | deferredResult.addMethod(this.connection(), 'ping'); |
167 | deferredResult.addMethod(this, 'setUsername', aUsername) | 167 | deferredResult.addMethod(this, 'setUsername', aUsername) |
168 | deferredResult.acquireLock(this.deferredLockForSection('passphrase')); | 168 | deferredResult.acquireLock(this.deferredLockForSection('passphrase')); |
169 | deferredResult.addMethod(this.data(), 'deferredGetOrSet', 'passphrase', aPassphrase); | 169 | deferredResult.addMethod(this.data(), 'deferredGetOrSet', 'passphrase', aPassphrase); |
170 | deferredResult.releaseLock(this.deferredLockForSection('passphrase')); | 170 | deferredResult.releaseLock(this.deferredLockForSection('passphrase')); |
171 | // deferredResult.getValue('currentPassphrase'); | 171 | // deferredResult.getValue('currentPassphrase'); |
172 | deferredResult.addMethod(this, 'prepareRemoteDataWithKey', aPassphrase); | 172 | deferredResult.addMethod(this, 'prepareRemoteDataWithKey', aPassphrase); |
173 | deferredResult.addMethod(this.connection(), 'updateCredentials', aUsername, aPassphrase); | 173 | deferredResult.addMethod(this.connection(), 'updateCredentials', aUsername, aPassphrase); |
174 | deferredResult.callback(); | 174 | deferredResult.callback(); |
175 | 175 | ||
176 | return deferredResult; | 176 | return deferredResult; |
177 | }, | 177 | }, |
178 | 178 | ||
179 | //------------------------------------------------------------------------- | 179 | //------------------------------------------------------------------------- |
180 | 180 | ||
181 | 'initialSetupWithNoData': function () { | 181 | 'initialSetupWithNoData': function () { |
182 | this._serverData = { | 182 | this._serverData = { |
183 | 'version': '0.1', | 183 | 'version': '0.1', |
184 | 'statistics': "", | 184 | 'statistics': "", |
185 | 'header': { | 185 | 'header': { |
186 | 'data': null, | 186 | 'data': null, |
187 | 'version': Clipperz.PM.Crypto.encryptingFunctions.currentVersion, | 187 | 'version': Clipperz.PM.Crypto.encryptingFunctions.currentVersion, |
188 | 188 | ||
189 | 'recordsIndex': new Clipperz.PM.DataModel.User.Header.RecordIndex({ | 189 | 'recordsIndex': new Clipperz.PM.DataModel.User.Header.RecordIndex({ |
190 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase'), | 190 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase'), |
191 | 'recordsData': {'data':null, 'index':{}}, | 191 | 'recordsData': {'data':null, 'index':{}}, |
192 | 'recordsStats': null, | 192 | 'recordsStats': null, |
193 | 'directLoginsData': {'data':null, 'index':{}}, | 193 | 'directLoginsData': {'data':null, 'index':{}}, |
194 | 'encryptedDataVersion': Clipperz.PM.Crypto.encryptingFunctions.currentVersion, | 194 | 'encryptedDataVersion': Clipperz.PM.Crypto.encryptingFunctions.currentVersion, |
195 | 'retrieveRecordDetailFunction':MochiKit.Base.method(this, 'getRecordDetail') | 195 | 'retrieveRecordDetailFunction':MochiKit.Base.method(this, 'getRecordDetail') |
196 | }), | 196 | }), |
197 | 'preferences': new Clipperz.PM.DataModel.User.Header.Preferences({ | 197 | 'preferences': new Clipperz.PM.DataModel.User.Header.Preferences({ |
198 | 'name':'preferences', | 198 | 'name':'preferences', |
199 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase') | 199 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase') |
200 | }), | 200 | }), |
201 | 'oneTimePasswords': new Clipperz.PM.DataModel.User.Header.OneTimePasswords({ | 201 | 'oneTimePasswords': new Clipperz.PM.DataModel.User.Header.OneTimePasswords({ |
202 | 'name':'preferences', | 202 | 'name':'preferences', |
203 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase') | 203 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase') |
204 | }) | 204 | }) |
205 | } | 205 | } |
206 | }; | 206 | }; |
207 | 207 | ||
208 | // this._serverLockValue = Clipperz.PM.Crypto.randomKey(); | 208 | // this._serverLockValue = Clipperz.PM.Crypto.randomKey(); |
209 | }, | 209 | }, |
210 | 210 | ||
211 | //......................................................................... | 211 | //......................................................................... |
212 | 212 | ||
213 | 'registerAsNewAccount': function () { | 213 | 'registerAsNewAccount': function () { |
214 | var deferredResult; | 214 | var deferredResult; |
215 | 215 | ||
216 | deferredResult = new Clipperz.Async.Deferred("User.registerAsNewAccount", {trace:false}); | 216 | deferredResult = new Clipperz.Async.Deferred("User.registerAsNewAccount", {trace:false}); |
217 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'updateProgress', {'extraSteps':3}); | 217 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'updateProgress', {'extraSteps':3}); |
218 | deferredResult.addMethod(this, 'initialSetupWithNoData') | 218 | deferredResult.addMethod(this, 'initialSetupWithNoData') |
219 | deferredResult.addMethod(this, 'getPassphrase'); | 219 | deferredResult.addMethod(this, 'getPassphrase'); |
220 | deferredResult.addMethod(this, 'prepareRemoteDataWithKey'); | 220 | deferredResult.addMethod(this, 'prepareRemoteDataWithKey'); |
221 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); | 221 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); |
222 | deferredResult.addMethod(this.connection(), 'register'); | 222 | deferredResult.addMethod(this.connection(), 'register'); |
223 | deferredResult.addCallback(MochiKit.Base.itemgetter('lock')); | 223 | // deferredResult.addCallback(MochiKit.Base.itemgetter('lock')); |
224 | deferredResult.addMethod(this, 'setServerLockValue'); | 224 | // deferredResult.addMethod(this, 'setServerLockValue'); |
225 | deferredResult.addCallbackPass(MochiKit.Signal.signal,Clipperz.Signal.NotificationCenter, 'userSuccessfullyRegistered'); | 225 | deferredResult.addCallbackPass(MochiKit.Signal.signal,Clipperz.Signal.NotificationCenter, 'userSuccessfullyRegistered'); |
226 | 226 | ||
227 | // deferredResult.addErrback (MochiKit.Base.method(this, 'handleRegistrationFailure')); | 227 | // deferredResult.addErrback (MochiKit.Base.method(this, 'handleRegistrationFailure')); |
228 | 228 | ||
229 | deferredResult.callback(); | 229 | deferredResult.callback(); |
230 | 230 | ||
231 | return deferredResult; | 231 | return deferredResult; |
232 | }, | 232 | }, |
233 | 233 | ||
234 | //------------------------------------------------------------------------- | 234 | //------------------------------------------------------------------------- |
235 | 235 | ||
236 | 'login': function () { | 236 | 'login': function () { |
237 | var deferredResult; | 237 | var deferredResult; |
238 | 238 | ||
239 | deferredResult = new Clipperz.Async.Deferred("User.login", {trace:false}); | 239 | deferredResult = new Clipperz.Async.Deferred("User.login", {trace:false}); |
240 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'updateProgress', {'extraSteps':3}); | 240 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'updateProgress', {'extraSteps':3}); |
241 | deferredResult.addMethod(this, 'getPassphrase'); | 241 | deferredResult.addMethod(this, 'getPassphrase'); |
242 | deferredResult.addCallback(Clipperz.PM.DataModel.OneTimePassword.isValidOneTimePasswordValue); | 242 | deferredResult.addCallback(Clipperz.PM.DataModel.OneTimePassword.isValidOneTimePasswordValue); |
243 | deferredResult.addCallback(Clipperz.Async.deferredIf("Is the passphrase an OTP", [ | 243 | deferredResult.addCallback(Clipperz.Async.deferredIf("Is the passphrase an OTP", [ |
244 | MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'updateProgress', {'extraSteps':1}), | 244 | MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'updateProgress', {'extraSteps':1}), |
245 | MochiKit.Base.method(this, 'getCredentials'), | 245 | MochiKit.Base.method(this, 'getCredentials'), |
246 | MochiKit.Base.method(this.connection(), 'redeemOneTimePassword'), | 246 | MochiKit.Base.method(this.connection(), 'redeemOneTimePassword'), |
247 | MochiKit.Base.method(this.data(), 'setValue', 'passphrase') | 247 | MochiKit.Base.method(this.data(), 'setValue', 'passphrase') |
248 | ], [])); | 248 | ], [])); |
249 | deferredResult.addErrback(MochiKit.Base.method(this, 'getPassphrase')); | 249 | deferredResult.addErrback(MochiKit.Base.method(this, 'getPassphrase')); |
250 | deferredResult.addMethod(this.connection(), 'login'); | 250 | deferredResult.addMethod(this.connection(), 'login', false); |
251 | deferredResult.addCallbackPass(MochiKit.Signal.signal,Clipperz.Signal.NotificationCenter, 'userSuccessfullyLoggedIn'); | 251 | deferredResult.addCallbackPass(MochiKit.Signal.signal,Clipperz.Signal.NotificationCenter, 'userSuccessfullyLoggedIn'); |
252 | deferredResult.addErrback (MochiKit.Base.method(this, 'handleConnectionFallback')); | 252 | deferredResult.addErrback (MochiKit.Base.method(this, 'handleConnectionFallback')); |
253 | 253 | ||
254 | deferredResult.callback(); | 254 | deferredResult.callback(); |
255 | 255 | ||
256 | return deferredResult; | 256 | return deferredResult; |
257 | }, | 257 | }, |
258 | 258 | ||
259 | //......................................................................... | 259 | //......................................................................... |
260 | 260 | ||
261 | 'handleConnectionFallback': function(aValue) { | 261 | 'handleConnectionFallback': function(aValue) { |
262 | var result; | 262 | var result; |
263 | 263 | ||
264 | if (aValue instanceof MochiKit.Async.CancelledError) { | 264 | if (aValue instanceof MochiKit.Async.CancelledError) { |
265 | result = aValue; | 265 | result = aValue; |
266 | } else { | 266 | } else { |
267 | this.setConnectionVersion(Clipperz.PM.Connection.communicationProtocol.fallbackVersions[this.connectionVersion()]); | 267 | this.setConnectionVersion(Clipperz.PM.Connection.communicationProtocol.fallbackVersions[this.connectionVersion()]); |
268 | 268 | ||
269 | if (this.connectionVersion() != null) { | 269 | if (this.connectionVersion() != null) { |
270 | result = new Clipperz.Async.Deferred("User.handleConnectionFallback - retry"); | 270 | result = new Clipperz.Async.Deferred("User.handleConnectionFallback - retry"); |
271 | 271 | ||
272 | result.addMethod(this, 'login'); | 272 | result.addMethod(this, 'login'); |
273 | result.callback(); | 273 | result.callback(); |
274 | } else { | 274 | } else { |
275 | result = Clipperz.Async.callbacks("User.handleConnectionFallback - failed", [ | 275 | result = Clipperz.Async.callbacks("User.handleConnectionFallback - failed", [ |
276 | MochiKit.Base.method(this.data(), 'removeValue', 'passphrase'), | 276 | MochiKit.Base.method(this.data(), 'removeValue', 'passphrase'), |
277 | MochiKit.Base.method(this, 'setConnectionVersion', 'current'), | 277 | MochiKit.Base.method(this, 'setConnectionVersion', 'current'), |
278 | MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'userLoginFailed'), | 278 | MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'userLoginFailed'), |
279 | MochiKit.Base.partial(MochiKit.Async.fail, Clipperz.PM.DataModel.User.exception.LoginFailed) | 279 | MochiKit.Base.partial(MochiKit.Async.fail, Clipperz.PM.DataModel.User.exception.LoginFailed) |
280 | ], {trace:false}); | 280 | ], {trace:false}); |
281 | } | 281 | } |
282 | } | 282 | } |
283 | 283 | ||
284 | return result; | 284 | return result; |
285 | }, | 285 | }, |
286 | 286 | ||
287 | //------------------------------------------------------------------------- | 287 | //------------------------------------------------------------------------- |
288 | 288 | ||
289 | 'lock': function () { | 289 | 'lock': function () { |
290 | return Clipperz.Async.callbacks("User.lock", [ | 290 | return Clipperz.Async.callbacks("User.lock", [ |
291 | MochiKit.Base.method(this, 'deleteAllCleanTextData') | 291 | MochiKit.Base.method(this, 'deleteAllCleanTextData') |
292 | ], {trace:false}); | 292 | ], {trace:false}); |
293 | }, | 293 | }, |
294 | 294 | ||
295 | //------------------------------------------------------------------------- | 295 | //------------------------------------------------------------------------- |
296 | 296 | ||
297 | 'logout': function () { | 297 | 'logout': function () { |
298 | return Clipperz.Async.callbacks("User.logout", [ | 298 | return Clipperz.Async.callbacks("User.logout", [ |
299 | MochiKit.Base.method(this, 'deleteAllCleanTextData'), | 299 | MochiKit.Base.method(this, 'deleteAllCleanTextData'), |
300 | MochiKit.Base.method(this.connection(), 'logout') | 300 | MochiKit.Base.method(this.connection(), 'logout') |
301 | ], {trace:false}); | 301 | ], {trace:false}); |
302 | }, | 302 | }, |
303 | 303 | ||
304 | //------------------------------------------------------------------------- | 304 | //------------------------------------------------------------------------- |
305 | 305 | ||
306 | 'headerFormatVersion': function(anHeader) { | 306 | 'headerFormatVersion': function(anHeader) { |
307 | var result; | 307 | var result; |
308 | 308 | ||
309 | if (anHeader.charAt(0) == '{') { | 309 | if (anHeader.charAt(0) == '{') { |
310 | varheaderData; | 310 | varheaderData; |
311 | 311 | ||
312 | headerData = Clipperz.Base.evalJSON(anHeader); | 312 | headerData = Clipperz.Base.evalJSON(anHeader); |
313 | result = headerData['version']; | 313 | result = headerData['version']; |
314 | } else { | 314 | } else { |
315 | result = 'LEGACY'; | 315 | result = 'LEGACY'; |
316 | } | 316 | } |
317 | 317 | ||
318 | return result; | 318 | return result; |
319 | }, | 319 | }, |
320 | 320 | ||
321 | //------------------------------------------------------------------------- | 321 | //------------------------------------------------------------------------- |
322 | 322 | ||
323 | 'unpackServerData': function (someServerData) { | 323 | 'unpackServerData': function (someServerData) { |
324 | var unpackedData; | 324 | var unpackedData; |
325 | var headerVersion; | 325 | var headerVersion; |
326 | 326 | ||
327 | varrecordsIndex; | 327 | varrecordsIndex; |
328 | var preferences; | 328 | var preferences; |
329 | var oneTimePasswords; | 329 | var oneTimePasswords; |
330 | 330 | ||
331 | //console.log(">>> ***************** user.unpackServerData", someServerData); | 331 | //console.log(">>> ***************** user.unpackServerData", someServerData); |
332 | this.setServerLockValue(someServerData['lock']); | 332 | // this.setServerLockValue(someServerData['lock']); |
333 | 333 | ||
334 | headerVersion = this.headerFormatVersion(someServerData['header']); | 334 | headerVersion = this.headerFormatVersion(someServerData['header']); |
335 | 335 | ||
336 | switch (headerVersion) { | 336 | switch (headerVersion) { |
337 | case 'LEGACY': | 337 | case 'LEGACY': |
338 | varlegacyHeader; | 338 | varlegacyHeader; |
339 | 339 | ||
340 | legacyHeader = new Clipperz.PM.DataModel.User.Header.Legacy({ | 340 | legacyHeader = new Clipperz.PM.DataModel.User.Header.Legacy({ |
341 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase'), | 341 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase'), |
342 | 'remoteData': { | 342 | 'remoteData': { |
343 | 'data': someServerData['header'], | 343 | 'data': someServerData['header'], |
344 | 'version': someServerData['version'], | 344 | 'version': someServerData['version'], |
345 | 'recordsStats': someServerData['recordsStats'] | 345 | 'recordsStats': someServerData['recordsStats'] |
346 | }, | 346 | }, |
347 | // 'encryptedDataKeypath': 'data', | 347 | // 'encryptedDataKeypath': 'data', |
348 | // 'encryptedVersionKeypath': 'version', | 348 | // 'encryptedVersionKeypath': 'version', |
349 | 'retrieveRecordDetailFunction':MochiKit.Base.method(this, 'getRecordDetail') | 349 | 'retrieveRecordDetailFunction':MochiKit.Base.method(this, 'getRecordDetail') |
350 | }); | 350 | }); |
351 | 351 | ||
352 | recordsIndex = legacyHeader; | 352 | recordsIndex = legacyHeader; |
353 | preferences = legacyHeader; | 353 | preferences = legacyHeader; |
354 | oneTimePasswords= legacyHeader; | 354 | oneTimePasswords= legacyHeader; |
355 | break; | 355 | break; |
356 | case '0.1': | 356 | case '0.1': |
357 | varheaderData; | 357 | varheaderData; |
358 | 358 | ||
359 | headerData = Clipperz.Base.evalJSON(someServerData['header']); | 359 | headerData = Clipperz.Base.evalJSON(someServerData['header']); |
360 | 360 | ||
361 | recordsIndex = new Clipperz.PM.DataModel.User.Header.RecordIndex({ | 361 | recordsIndex = new Clipperz.PM.DataModel.User.Header.RecordIndex({ |
362 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase'), | 362 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase'), |
363 | 'recordsData': headerData['records'], | 363 | 'recordsData': headerData['records'], |
364 | 'recordsStats': someServerData['recordsStats'], | 364 | 'recordsStats': someServerData['recordsStats'], |
365 | 'directLoginsData': headerData['directLogins'], | 365 | 'directLoginsData': headerData['directLogins'], |
366 | 'encryptedDataVersion': someServerData['version'], | 366 | 'encryptedDataVersion': someServerData['version'], |
367 | 'retrieveRecordDetailFunction':MochiKit.Base.method(this, 'getRecordDetail') | 367 | 'retrieveRecordDetailFunction':MochiKit.Base.method(this, 'getRecordDetail') |
368 | }); | 368 | }); |
369 | 369 | ||
370 | //Still missing a test case that actually fais with the old version of the code, where the check for undefined was missing | 370 | //Still missing a test case that actually fais with the old version of the code, where the check for undefined was missing |
371 | if (typeof(headerData['preferences']) != 'undefined') { | 371 | if (typeof(headerData['preferences']) != 'undefined') { |
372 | preferences= new Clipperz.PM.DataModel.User.Header.Preferences({ | 372 | preferences= new Clipperz.PM.DataModel.User.Header.Preferences({ |
373 | 'name':'preferences', | 373 | 'name':'preferences', |
374 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase'), | 374 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase'), |
375 | 'remoteData': { | 375 | 'remoteData': { |
376 | 'data': headerData['preferences']['data'], | 376 | 'data': headerData['preferences']['data'], |
377 | 'version': someServerData['version'] | 377 | 'version': someServerData['version'] |
378 | } | 378 | } |
379 | }); | 379 | }); |
380 | } else { | 380 | } else { |
381 | preferences= new Clipperz.PM.DataModel.User.Header.Preferences({ | 381 | preferences= new Clipperz.PM.DataModel.User.Header.Preferences({ |
382 | 'name':'preferences', | 382 | 'name':'preferences', |
383 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase') | 383 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase') |
384 | }); | 384 | }); |
385 | } | 385 | } |
386 | 386 | ||
387 | if (typeof(headerData['oneTimePasswords']) != 'undefined') { | 387 | if (typeof(headerData['oneTimePasswords']) != 'undefined') { |
388 | oneTimePasswords = new Clipperz.PM.DataModel.User.Header.OneTimePasswords({ | 388 | oneTimePasswords = new Clipperz.PM.DataModel.User.Header.OneTimePasswords({ |
389 | 'name':'preferences', | 389 | 'name':'preferences', |
390 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase'), | 390 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase'), |
391 | 'remoteData': { | 391 | 'remoteData': { |
392 | 'data': headerData['oneTimePasswords']['data'], | 392 | 'data': headerData['oneTimePasswords']['data'], |
393 | 'version': someServerData['version'] | 393 | 'version': someServerData['version'] |
394 | } | 394 | } |
395 | }); | 395 | }); |
396 | } else { | 396 | } else { |
397 | oneTimePasswords = new Clipperz.PM.DataModel.User.Header.OneTimePasswords({ | 397 | oneTimePasswords = new Clipperz.PM.DataModel.User.Header.OneTimePasswords({ |
398 | 'name':'preferences', | 398 | 'name':'preferences', |
399 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase') | 399 | 'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase') |
400 | }); | 400 | }); |
401 | } | 401 | } |
402 | 402 | ||
403 | break; | 403 | break; |
404 | } | 404 | } |
405 | 405 | ||
406 | unpackedData = { | 406 | unpackedData = { |
407 | 'version': someServerData['version'], | 407 | 'version': someServerData['version'], |
408 | 'statistics': someServerData['statistics'], | 408 | 'statistics': someServerData['statistics'], |
409 | 'header': { | 409 | 'header': { |
410 | 'data': someServerData['header'], | 410 | 'data': someServerData['header'], |
411 | 'version': headerVersion, | 411 | 'version': headerVersion, |
412 | 412 | ||
413 | 'recordsIndex': recordsIndex, | 413 | 'recordsIndex': recordsIndex, |
414 | 'preferences': preferences, | 414 | 'preferences': preferences, |
415 | 'oneTimePasswords': oneTimePasswords | 415 | 'oneTimePasswords': oneTimePasswords |
416 | } | 416 | } |
417 | }; | 417 | }; |
418 | 418 | ||
419 | this._serverData = unpackedData; | 419 | this._serverData = unpackedData; |
420 | //console.log("<<< ***************** user.unpackServerData", this._serverData); | 420 | //console.log("<<< ***************** user.unpackServerData", this._serverData); |
421 | 421 | ||
422 | return this._serverData; | 422 | return this._serverData; |
423 | }, | 423 | }, |
424 | 424 | ||
425 | //------------------------------------------------------------------------- | 425 | //------------------------------------------------------------------------- |
426 | 426 | ||
427 | 'getServerData': function() { | 427 | 'getServerData': function() { |
428 | var deferredResult; | 428 | var deferredResult; |
429 | 429 | ||
430 | deferredResult = new Clipperz.Async.Deferred("User.getServerData", {trace:false}); | 430 | deferredResult = new Clipperz.Async.Deferred("User.getServerData", {trace:false}); |
431 | deferredResult.acquireLock(this.deferredLockForSection('serverData')); | 431 | deferredResult.acquireLock(this.deferredLockForSection('serverData')); |
432 | deferredResult.addCallback(MochiKit.Base.bind(function(aResult) { | 432 | deferredResult.addCallback(MochiKit.Base.bind(function(aResult) { |
433 | var innerDeferredResult; | 433 | var innerDeferredResult; |
434 | 434 | ||
435 | innerDeferredResult = new Clipperz.Async.Deferred("User.getUserDetails.innerDeferred", {trace:false}); | 435 | innerDeferredResult = new Clipperz.Async.Deferred("User.getUserDetails.innerDeferred", {trace:false}); |
436 | if (this._serverData == null) { | 436 | if (this._serverData == null) { |
437 | innerDeferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'loadingUserDetails'); | 437 | innerDeferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'loadingUserDetails'); |
438 | innerDeferredResult.addMethod(this.connection(), 'message', 'getUserDetails'); | 438 | innerDeferredResult.addMethod(this.connection(), 'message', 'getUserDetails'); |
439 | innerDeferredResult.addMethod(this, 'unpackServerData'); | 439 | innerDeferredResult.addMethod(this, 'unpackServerData'); |
440 | innerDeferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'loadedUserDetails'); | 440 | innerDeferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'loadedUserDetails'); |
441 | } | 441 | } |
442 | 442 | ||
443 | innerDeferredResult.addCallback(MochiKit.Base.bind(function () { | 443 | innerDeferredResult.addCallback(MochiKit.Base.bind(function () { |
444 | return this._serverData; | 444 | return this._serverData; |
445 | },this)); | 445 | },this)); |
446 | innerDeferredResult.callback(); | 446 | innerDeferredResult.callback(); |
447 | 447 | ||
448 | return innerDeferredResult; | 448 | return innerDeferredResult; |
449 | }, this)); | 449 | }, this)); |
450 | deferredResult.releaseLock(this.deferredLockForSection('serverData')); | 450 | deferredResult.releaseLock(this.deferredLockForSection('serverData')); |
451 | deferredResult.callback(); | 451 | deferredResult.callback(); |
452 | 452 | ||
453 | return deferredResult; | 453 | return deferredResult; |
454 | }, | 454 | }, |
455 | 455 | ||
456 | //------------------------------------------------------------------------- | 456 | //------------------------------------------------------------------------- |
457 | 457 | ||
458 | 'connectionVersion': function() { | 458 | 'connectionVersion': function() { |
459 | return this._connectionVersion; | 459 | return this._connectionVersion; |
460 | }, | 460 | }, |
461 | 461 | ||
462 | 'setConnectionVersion': function(aValue) { | 462 | 'setConnectionVersion': function(aValue) { |
463 | if (this._connectionVersion != aValue) { | 463 | if (this._connectionVersion != aValue) { |
464 | this.resetConnection(); | 464 | this.resetConnection(); |
465 | } | 465 | } |
466 | this._connectionVersion = aValue; | 466 | this._connectionVersion = aValue; |
467 | }, | 467 | }, |
468 | 468 | ||
469 | //------------------------------------------------------------------------- | 469 | //------------------------------------------------------------------------- |
470 | 470 | ||
471 | 'connection': function() { | 471 | 'connection': function() { |
472 | if ((this._connection == null) && (this.connectionVersion() != null) ){ | 472 | if ((this._connection == null) && (this.connectionVersion() != null) ){ |
473 | this._connection = new Clipperz.PM.Connection.communicationProtocol.versions[this.connectionVersion()]({ | 473 | this._connection = new Clipperz.PM.Connection.communicationProtocol.versions[this.connectionVersion()]({ |
474 | getCredentialsFunction: MochiKit.Base.method(this, 'getCredentials') | 474 | getCredentialsFunction: MochiKit.Base.method(this, 'getCredentials') |
475 | }); | 475 | }); |
476 | } | 476 | } |
477 | 477 | ||
478 | return this._connection; | 478 | return this._connection; |
479 | }, | 479 | }, |
480 | 480 | ||
481 | 'resetConnection': function(aValue) { | 481 | 'resetConnection': function(aValue) { |
482 | if (this._connection != null) { | 482 | if (this._connection != null) { |
483 | this._connection.reset(); | 483 | this._connection.reset(); |
484 | } | 484 | } |
485 | 485 | ||
486 | this._connection = null; | 486 | this._connection = null; |
487 | }, | 487 | }, |
488 | 488 | ||
489 | //========================================================================= | 489 | //========================================================================= |
490 | 490 | ||
491 | 'getHeaderIndex': function (aKey) { | 491 | 'getHeaderIndex': function (aKey) { |
492 | return Clipperz.Async.callbacks("User.getHeaderIndex", [ | 492 | return Clipperz.Async.callbacks("User.getHeaderIndex", [ |
493 | MochiKit.Base.method(this, 'getServerData'), | 493 | MochiKit.Base.method(this, 'getServerData'), |
494 | MochiKit.Base.itemgetter('header'), | 494 | MochiKit.Base.itemgetter('header'), |
495 | MochiKit.Base.itemgetter(aKey) | 495 | MochiKit.Base.itemgetter(aKey) |
496 | ], {trace:false}) | 496 | ], {trace:false}) |
497 | }, | 497 | }, |
498 | 498 | ||
499 | //========================================================================= | 499 | //========================================================================= |
500 | 500 | ||
501 | 'getRecords': function () { | 501 | 'getRecords': function () { |
502 | return Clipperz.Async.callbacks("User.getRecords", [ | 502 | return Clipperz.Async.callbacks("User.getRecords", [ |
503 | MochiKit.Base.method(this, 'getHeaderIndex', 'recordsIndex'), | 503 | MochiKit.Base.method(this, 'getHeaderIndex', 'recordsIndex'), |
504 | MochiKit.Base.methodcaller('records'), | 504 | MochiKit.Base.methodcaller('records'), |
505 | MochiKit.Base.values | 505 | MochiKit.Base.values |
506 | ], {trace:false}); | 506 | ], {trace:false}); |
507 | }, | 507 | }, |
508 | 508 | ||
509 | 'recordWithLabel': function (aLabel) { | 509 | 'recordWithLabel': function (aLabel) { |
510 | return Clipperz.Async.callbacks("User.recordWithLabel", [ | 510 | return Clipperz.Async.callbacks("User.recordWithLabel", [ |
511 | MochiKit.Base.method(this, 'getRecords'), | 511 | MochiKit.Base.method(this, 'getRecords'), |
512 | MochiKit.Base.partial(Clipperz.Async.deferredFilter, function (aRecord) { | 512 | MochiKit.Base.partial(Clipperz.Async.deferredFilter, function (aRecord) { |
513 | return Clipperz.Async.callbacks("User.recordWithLabel - check record label", [ | 513 | return Clipperz.Async.callbacks("User.recordWithLabel - check record label", [ |
514 | MochiKit.Base.methodcaller('label'), | 514 | MochiKit.Base.methodcaller('label'), |
515 | MochiKit.Base.partial(MochiKit.Base.operator.eq, aLabel) | 515 | MochiKit.Base.partial(MochiKit.Base.operator.eq, aLabel) |
516 | ], {trace:false}, aRecord); | 516 | ], {trace:false}, aRecord); |
517 | }), | 517 | }), |
518 | function (someFilteredResults) { | 518 | function (someFilteredResults) { |
519 | var result; | 519 | var result; |
520 | 520 | ||
521 | switch (someFilteredResults.length) { | 521 | switch (someFilteredResults.length) { |
522 | case 0: | 522 | case 0: |
523 | result = null; | 523 | result = null; |
524 | break; | 524 | break; |
525 | case 1: | 525 | case 1: |
526 | result = someFilteredResults[0]; | 526 | result = someFilteredResults[0]; |
527 | break; | 527 | break; |
528 | default: | 528 | default: |
529 | WTF = TODO; | 529 | WTF = TODO; |
530 | break; | 530 | break; |
531 | } | 531 | } |
532 | 532 | ||
533 | return result; | 533 | return result; |
534 | } | 534 | } |
535 | ], {trace:false}); | 535 | ], {trace:false}); |
536 | }, | 536 | }, |
537 | 537 | ||
538 | //------------------------------------------------------------------------- | 538 | //------------------------------------------------------------------------- |
539 | 539 | ||
540 | 'getRecord': function (aRecordReference) { | 540 | 'getRecord': function (aRecordReference) { |
541 | return Clipperz.Async.callbacks("User.getRecord", [ | 541 | return Clipperz.Async.callbacks("User.getRecord", [ |
542 | MochiKit.Base.method(this, 'getHeaderIndex', 'recordsIndex'), | 542 | MochiKit.Base.method(this, 'getHeaderIndex', 'recordsIndex'), |
543 | MochiKit.Base.methodcaller('records'), | 543 | MochiKit.Base.methodcaller('records'), |
544 | MochiKit.Base.itemgetter(aRecordReference), | 544 | MochiKit.Base.itemgetter(aRecordReference), |
545 | 545 | ||
546 | Clipperz.Async.deferredIf("record != null", [ | 546 | Clipperz.Async.deferredIf("record != null", [ |
547 | MochiKit.Base.operator.identity | 547 | MochiKit.Base.operator.identity |
548 | ], [ | 548 | ], [ |
549 | function () { throw "Record does not exists"} | 549 | function () { throw "Record does not exists"} |
550 | ]) | 550 | ]) |
551 | ], {trace:false}); | 551 | ], {trace:false}); |
552 | }, | 552 | }, |
553 | 553 | ||
554 | //------------------------------------------------------------------------- | 554 | //------------------------------------------------------------------------- |
555 | 555 | ||
556 | 'getRecordDetail': function (aRecordReference) { | 556 | 'getRecordDetail': function (aRecordReference) { |
557 | return this.connection().message('getRecordDetail', {reference: aRecordReference}); | 557 | return this.connection().message('getRecordDetail', {reference: aRecordReference}); |
558 | }, | 558 | }, |
559 | 559 | ||
560 | //------------------------------------------------------------------------- | 560 | //------------------------------------------------------------------------- |
561 | 561 | ||
562 | 'deleteRecord': function (aRecord) { | 562 | 'deleteRecord': function (aRecord) { |
563 | return Clipperz.Async.callbacks("User.deleteRecord", [ | 563 | return Clipperz.Async.callbacks("User.deleteRecord", [ |
564 | MochiKit.Base.method(this, 'getHeaderIndex', 'recordsIndex'), | 564 | MochiKit.Base.method(this, 'getHeaderIndex', 'recordsIndex'), |
565 | MochiKit.Base.methodcaller('deleteRecord', aRecord) | 565 | MochiKit.Base.methodcaller('deleteRecord', aRecord) |
566 | ], {trace:false}); | 566 | ], {trace:false}); |
567 | }, | 567 | }, |
568 | 568 | ||
569 | //------------------------------------------------------------------------- | 569 | //------------------------------------------------------------------------- |
570 | 570 | ||
571 | 'createNewRecord': function () { | 571 | 'createNewRecord': function () { |
572 | return Clipperz.Async.callbacks("User.createNewRecord", [ | 572 | return Clipperz.Async.callbacks("User.createNewRecord", [ |
573 | MochiKit.Base.method(this, 'getHeaderIndex', 'recordsIndex'), | 573 | MochiKit.Base.method(this, 'getHeaderIndex', 'recordsIndex'), |
574 | MochiKit.Base.methodcaller('createNewRecord') | 574 | MochiKit.Base.methodcaller('createNewRecord') |
575 | ], {trace:false}); | 575 | ], {trace:false}); |
576 | }, | 576 | }, |
577 | 577 | ||
578 | //========================================================================= | 578 | //========================================================================= |
579 | 579 | ||
580 | 'getDirectLogins': function() { | 580 | 'getDirectLogins': function() { |
581 | var deferredResult; | 581 | var deferredResult; |
582 | 582 | ||
583 | deferredResult = new Clipperz.Async.Deferred("User.getDirectLogins", {trace:false}); | 583 | deferredResult = new Clipperz.Async.Deferred("User.getDirectLogins", {trace:false}); |
584 | deferredResult.addMethod(this, 'getRecords'); | 584 | deferredResult.addMethod(this, 'getRecords'); |
585 | deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.compose(MochiKit.Base.values, MochiKit.Base.methodcaller('directLogins'))); | 585 | deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.compose(MochiKit.Base.values, MochiKit.Base.methodcaller('directLogins'))); |
586 | deferredResult.addCallback(MochiKit.Base.flattenArray); | 586 | deferredResult.addCallback(MochiKit.Base.flattenArray); |
587 | deferredResult.callback(); | 587 | deferredResult.callback(); |
588 | 588 | ||
589 | return deferredResult; | 589 | return deferredResult; |
590 | }, | 590 | }, |
591 | 591 | ||
592 | //========================================================================= | 592 | //========================================================================= |
593 | 593 | ||
594 | 'getOneTimePasswords': function () { | 594 | 'getOneTimePasswords': function () { |
595 | return Clipperz.Async.callbacks("User.getOneTimePasswords", [ | 595 | return Clipperz.Async.callbacks("User.getOneTimePasswords", [ |
596 | MochiKit.Base.method(this, 'getHeaderIndex', 'oneTimePasswords'), | 596 | MochiKit.Base.method(this, 'getHeaderIndex', 'oneTimePasswords'), |
597 | MochiKit.Base.methodcaller('oneTimePasswords'), | 597 | MochiKit.Base.methodcaller('oneTimePasswords'), |
598 | MochiKit.Base.values | 598 | MochiKit.Base.values |
599 | ], {trace:false}); | 599 | ], {trace:false}); |
600 | }, | 600 | }, |
601 | 601 | ||
602 | //========================================================================= | 602 | //========================================================================= |
603 | 603 | ||
604 | 'invokeMethodNamedOnHeader': function (aMethodName, aValue) { | 604 | 'invokeMethodNamedOnHeader': function (aMethodName, aValue) { |
605 | return Clipperz.Async.collectResults("User.invokeMethodNamedOnHeader [" + aMethodName + "]", { | 605 | return Clipperz.Async.collectResults("User.invokeMethodNamedOnHeader [" + aMethodName + "]", { |
606 | 'recordIndex': [ | 606 | 'recordIndex': [ |
607 | MochiKit.Base.method(this, 'getHeaderIndex', 'recordsIndex'), | 607 | MochiKit.Base.method(this, 'getHeaderIndex', 'recordsIndex'), |
608 | MochiKit.Base.methodcaller(aMethodName, aValue) | 608 | MochiKit.Base.methodcaller(aMethodName, aValue) |
609 | ], | 609 | ], |
610 | 'preferences': [ | 610 | 'preferences': [ |
611 | MochiKit.Base.method(this, 'getHeaderIndex', 'preferences'), | 611 | MochiKit.Base.method(this, 'getHeaderIndex', 'preferences'), |
612 | MochiKit.Base.methodcaller(aMethodName, aValue) | 612 | MochiKit.Base.methodcaller(aMethodName, aValue) |
613 | ], | 613 | ], |
614 | 'oneTimePasswords': [ | 614 | 'oneTimePasswords': [ |
615 | MochiKit.Base.method(this, 'getHeaderIndex', 'oneTimePasswords'), | 615 | MochiKit.Base.method(this, 'getHeaderIndex', 'oneTimePasswords'), |
616 | MochiKit.Base.methodcaller(aMethodName, aValue) | 616 | MochiKit.Base.methodcaller(aMethodName, aValue) |
617 | ]//, | 617 | ]//, |
618 | // 'statistics': [ | 618 | // 'statistics': [ |
619 | // MochiKit.Base.method(this, 'getStatistics'), | 619 | // MochiKit.Base.method(this, 'getStatistics'), |
620 | // MochiKit.Base.methodcaller(aMethodName, aValue) | 620 | // MochiKit.Base.methodcaller(aMethodName, aValue) |
621 | // ] | 621 | // ] |
622 | }, {trace:false})(); | 622 | }, {trace:false})(); |
623 | }, | 623 | }, |
624 | 624 | ||
625 | //------------------------------------------------------------------------- | 625 | //------------------------------------------------------------------------- |
626 | 626 | ||
627 | 'invokeMethodNamedOnRecords': function (aMethodName, aValue) { | 627 | 'invokeMethodNamedOnRecords': function (aMethodName, aValue) { |
628 | return Clipperz.Async.callbacks("User.invokeMethodNamedOnRecords[" + aMethodName + "]", [ | 628 | return Clipperz.Async.callbacks("User.invokeMethodNamedOnRecords[" + aMethodName + "]", [ |
629 | MochiKit.Base.method(this, 'getRecords'), | 629 | MochiKit.Base.method(this, 'getRecords'), |
630 | MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.methodcaller(aMethodName, aValue)), | 630 | MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.methodcaller(aMethodName, aValue)), |
631 | Clipperz.Async.collectAll | 631 | Clipperz.Async.collectAll |
632 | ], {trace:false}); | 632 | ], {trace:false}); |
633 | }, | 633 | }, |
634 | 634 | ||
635 | //========================================================================= | 635 | //========================================================================= |
636 | 636 | ||
637 | 'hasPendingChanges': function () { | 637 | 'hasPendingChanges': function () { |
638 | vardeferredResult; | 638 | vardeferredResult; |
639 | 639 | ||
640 | deferredResult = new Clipperz.Async.Deferred("User.hasPendingChanges", {trace:false}); | 640 | deferredResult = new Clipperz.Async.Deferred("User.hasPendingChanges", {trace:false}); |
641 | deferredResult.collectResults({ | 641 | deferredResult.collectResults({ |
642 | 'header': [ | 642 | 'header': [ |
643 | MochiKit.Base.method(this, 'invokeMethodNamedOnHeader', 'hasPendingChanges'), | 643 | MochiKit.Base.method(this, 'invokeMethodNamedOnHeader', 'hasPendingChanges'), |
644 | MochiKit.Base.values | 644 | MochiKit.Base.values |
645 | ], | 645 | ], |
646 | 'records': MochiKit.Base.method(this, 'invokeMethodNamedOnRecords', 'hasPendingChanges') | 646 | 'records': MochiKit.Base.method(this, 'invokeMethodNamedOnRecords', 'hasPendingChanges') |
647 | }); | 647 | }); |
648 | deferredResult.addCallback(Clipperz.Async.or); | 648 | deferredResult.addCallback(Clipperz.Async.or); |
649 | deferredResult.callback(); | 649 | deferredResult.callback(); |
650 | // recordsIndex = legacyHeader; | 650 | // recordsIndex = legacyHeader; |
651 | // preferences = legacyHeader; | 651 | // preferences = legacyHeader; |
652 | // oneTimePasswords= legacyHeader; | 652 | // oneTimePasswords= legacyHeader; |
653 | 653 | ||
654 | return deferredResult; | 654 | return deferredResult; |
655 | }, | 655 | }, |
656 | 656 | ||
657 | //========================================================================= | 657 | //========================================================================= |
658 | 658 | ||
659 | 'commitTransientState': function () { | 659 | 'commitTransientState': function () { |
660 | return Clipperz.Async.callbacks("User.commitTransientState", [ | 660 | return Clipperz.Async.callbacks("User.commitTransientState", [ |
661 | MochiKit.Base.method(this, 'invokeMethodNamedOnHeader', 'commitTransientState'), | 661 | MochiKit.Base.method(this, 'invokeMethodNamedOnHeader', 'commitTransientState'), |
662 | MochiKit.Base.method(this, 'invokeMethodNamedOnRecords', 'commitTransientState'), | 662 | MochiKit.Base.method(this, 'invokeMethodNamedOnRecords', 'commitTransientState'), |
663 | 663 | ||
664 | MochiKit.Base.method(this, 'transientState'), | 664 | MochiKit.Base.method(this, 'transientState'), |
665 | MochiKit.Base.itemgetter('lock'), | 665 | // MochiKit.Base.itemgetter('lock'), |
666 | MochiKit.Base.method(this, 'setServerLockValue'), | 666 | // MochiKit.Base.method(this, 'setServerLockValue'), |
667 | MochiKit.Base.method(this, 'resetTransientState', true) | 667 | MochiKit.Base.method(this, 'resetTransientState', true) |
668 | ], {trace:false}); | 668 | ], {trace:false}); |
669 | }, | 669 | }, |
670 | 670 | ||
671 | //------------------------------------------------------------------------- | 671 | //------------------------------------------------------------------------- |
672 | 672 | ||
673 | 'revertChanges': function () { | 673 | 'revertChanges': function () { |
674 | return Clipperz.Async.callbacks("User.revertChanges", [ | 674 | return Clipperz.Async.callbacks("User.revertChanges", [ |
675 | MochiKit.Base.method(this, 'invokeMethodNamedOnHeader', 'revertChanges'), | 675 | MochiKit.Base.method(this, 'invokeMethodNamedOnHeader', 'revertChanges'), |
676 | MochiKit.Base.method(this, 'invokeMethodNamedOnRecords', 'revertChanges'), | 676 | MochiKit.Base.method(this, 'invokeMethodNamedOnRecords', 'revertChanges'), |
677 | MochiKit.Base.method(this, 'resetTransientState', false) | 677 | MochiKit.Base.method(this, 'resetTransientState', false) |
678 | ], {trace:false}); | 678 | ], {trace:false}); |
679 | }, | 679 | }, |
680 | 680 | ||
681 | //========================================================================= | 681 | //========================================================================= |
682 | 682 | ||
683 | 'deleteAllCleanTextData': function () { | 683 | 'deleteAllCleanTextData': function () { |
684 | return Clipperz.Async.callbacks("User.deleteAllCleanTextData", [ | 684 | return Clipperz.Async.callbacks("User.deleteAllCleanTextData", [ |
685 | MochiKit.Base.method(this, 'invokeMethodNamedOnRecords', 'deleteAllCleanTextData'), | 685 | MochiKit.Base.method(this, 'invokeMethodNamedOnRecords', 'deleteAllCleanTextData'), |
686 | MochiKit.Base.method(this, 'invokeMethodNamedOnHeader', 'deleteAllCleanTextData'), | 686 | MochiKit.Base.method(this, 'invokeMethodNamedOnHeader', 'deleteAllCleanTextData'), |
687 | 687 | ||
688 | MochiKit.Base.method(this.data(), 'removeAllData'), | 688 | MochiKit.Base.method(this.data(), 'removeAllData'), |
689 | MochiKit.Base.method(this, 'resetTransientState', false) | 689 | MochiKit.Base.method(this, 'resetTransientState', false) |
690 | ], {trace:false}); | 690 | ], {trace:false}); |
691 | }, | 691 | }, |
692 | 692 | ||
693 | //------------------------------------------------------------------------- | 693 | //------------------------------------------------------------------------- |
694 | 694 | ||
695 | 'hasAnyCleanTextData': function () { | 695 | 'hasAnyCleanTextData': function () { |
696 | vardeferredResult; | 696 | vardeferredResult; |
697 | 697 | ||
698 | deferredResult = new Clipperz.Async.Deferred("User.hasAnyCleanTextData", {trace:false}); | 698 | deferredResult = new Clipperz.Async.Deferred("User.hasAnyCleanTextData", {trace:false}); |
699 | deferredResult.collectResults({ | 699 | deferredResult.collectResults({ |
700 | 'header':[ | 700 | 'header':[ |
701 | MochiKit.Base.method(this, 'invokeMethodNamedOnHeader', 'hasAnyCleanTextData'), | 701 | MochiKit.Base.method(this, 'invokeMethodNamedOnHeader', 'hasAnyCleanTextData'), |
702 | MochiKit.Base.values | 702 | MochiKit.Base.values |
703 | ], | 703 | ], |
704 | 'records':MochiKit.Base.method(this, 'invokeMethodNamedOnRecords', 'hasAnyCleanTextData'), | 704 | 'records':MochiKit.Base.method(this, 'invokeMethodNamedOnRecords', 'hasAnyCleanTextData'), |
705 | 'data': MochiKit.Base.bind(function () { | 705 | 'data': MochiKit.Base.bind(function () { |
706 | return MochiKit.Async.succeed(! this.data().isEmpty()); | 706 | return MochiKit.Async.succeed(! this.data().isEmpty()); |
707 | }, this), | 707 | }, this), |
708 | 'transientState':MochiKit.Base.bind(function () { | 708 | 'transientState':MochiKit.Base.bind(function () { |
709 | return MochiKit.Async.succeed(MochiKit.Base.keys(this.transientState()).length != 0); | 709 | return MochiKit.Async.succeed(MochiKit.Base.keys(this.transientState()).length != 0); |
710 | }, this) | 710 | }, this) |
711 | }); | 711 | }); |
712 | deferredResult.addCallback(Clipperz.Async.or); | 712 | deferredResult.addCallback(Clipperz.Async.or); |
713 | deferredResult.callback(); | 713 | deferredResult.callback(); |
714 | 714 | ||
715 | return deferredResult; | 715 | return deferredResult; |
716 | }, | 716 | }, |
717 | 717 | ||
718 | //========================================================================= | 718 | //========================================================================= |
719 | 719 | ||
720 | 'prepareRemoteDataWithKey': function (aKey /*, aCurrentKey*/) { | 720 | 'prepareRemoteDataWithKey': function (aKey /*, aCurrentKey*/) { |
721 | var deferredResult; | 721 | var deferredResult; |
722 | varresult; | 722 | varresult; |
723 | 723 | ||
724 | result = {}; | 724 | result = {}; |
725 | deferredResult = new Clipperz.Async.Deferred("User.prepareRemoteDataWithKey", {trace:false}); | 725 | deferredResult = new Clipperz.Async.Deferred("User.prepareRemoteDataWithKey", {trace:false}); |
726 | deferredResult.addMethod(this, 'invokeMethodNamedOnHeader', 'prepareRemoteDataWithKey', aKey /*, aCurrentKey*/); | 726 | deferredResult.addMethod(this, 'invokeMethodNamedOnHeader', 'prepareRemoteDataWithKey', aKey /*, aCurrentKey*/); |
727 | deferredResult.addCallback(MochiKit.Base.bind(function (aResult, someHeaderPackedData) { | 727 | deferredResult.addCallback(MochiKit.Base.bind(function (aResult, someHeaderPackedData) { |
728 | var header; | 728 | var header; |
729 | 729 | ||
730 | header = {}; | 730 | header = {}; |
731 | header['records'] = someHeaderPackedData['recordIndex']['records']; | 731 | header['records'] = someHeaderPackedData['recordIndex']['records']; |
732 | header['directLogins'] = someHeaderPackedData['recordIndex']['directLogins']; | 732 | header['directLogins'] = someHeaderPackedData['recordIndex']['directLogins']; |
733 | header['preferences'] = {'data': someHeaderPackedData['preferences']['data']}; // this._serverData['header']['preferences']; // Clipperz.Base.evalJSON(this._serverData['header']['data'])['preferences']; //??????????? | 733 | header['preferences'] = {'data': someHeaderPackedData['preferences']['data']}; // this._serverData['header']['preferences']; // Clipperz.Base.evalJSON(this._serverData['header']['data'])['preferences']; //??????????? |
734 | header['oneTimePasswords'] = {'data': someHeaderPackedData['oneTimePasswords']['data']}; // this._serverData['header']['oneTimePasswords']; // Clipperz.Base.evalJSON(this._serverData['header']['data'])['oneTimePasswords']; //??????????? | 734 | header['oneTimePasswords'] = {'data': someHeaderPackedData['oneTimePasswords']['data']}; // this._serverData['header']['oneTimePasswords']; // Clipperz.Base.evalJSON(this._serverData['header']['data'])['oneTimePasswords']; //??????????? |
735 | header['version'] = '0.1'; | 735 | header['version'] = '0.1'; |
736 | 736 | ||
737 | aResult['header'] = Clipperz.Base.serializeJSON(header); | 737 | aResult['header'] = Clipperz.Base.serializeJSON(header); |
738 | aResult['statistics'] = this._serverData['statistics']; //"someHeaderPackedData['statistics']['data']"; | 738 | aResult['statistics'] = this._serverData['statistics']; //"someHeaderPackedData['statistics']['data']"; |
739 | 739 | ||
740 | return aResult; | 740 | return aResult; |
741 | }, this), result); | 741 | }, this), result); |
742 | deferredResult.addCallback(Clipperz.Async.setItem, result, 'version', Clipperz.PM.Crypto.encryptingFunctions.currentVersion); | 742 | deferredResult.addCallback(Clipperz.Async.setItem, result, 'version', Clipperz.PM.Crypto.encryptingFunctions.currentVersion); |
743 | deferredResult.addCallback(Clipperz.Async.setItem, result, 'lock', this.serverLockValue()); | 743 | // deferredResult.addCallback(Clipperz.Async.setItem, result, 'lock', this.serverLockValue()); |
744 | deferredResult.callback(); | 744 | deferredResult.callback(); |
745 | 745 | ||
746 | return deferredResult; | 746 | return deferredResult; |
747 | }, | 747 | }, |
748 | 748 | ||
749 | //========================================================================= | 749 | //========================================================================= |
750 | 750 | ||
751 | 'saveChanges': function () { | 751 | 'saveChanges': function () { |
752 | vardeferredResult; | 752 | vardeferredResult; |
753 | var messageParameters; | 753 | var messageParameters; |
754 | 754 | ||
755 | messageParameters = {}; | 755 | messageParameters = {}; |
756 | 756 | ||
757 | deferredResult = new Clipperz.Async.Deferred("User.saveChangaes", {trace:false}); | 757 | deferredResult = new Clipperz.Async.Deferred("User.saveChangaes", {trace:false}); |
758 | 758 | ||
759 | deferredResult.addMethod(this, 'getHeaderIndex', 'recordsIndex'); | 759 | deferredResult.addMethod(this, 'getHeaderIndex', 'recordsIndex'); |
760 | deferredResult.addCallback(MochiKit.Base.methodcaller('prepareRemoteDataForChangedRecords')); | 760 | deferredResult.addCallback(MochiKit.Base.methodcaller('prepareRemoteDataForChangedRecords')); |
761 | deferredResult.addCallback(Clipperz.Async.setItem, messageParameters, 'records'); | 761 | deferredResult.addCallback(Clipperz.Async.setItem, messageParameters, 'records'); |
762 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); | 762 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); |
763 | 763 | ||
764 | deferredResult.addMethod(this, 'getPassphrase'); | 764 | deferredResult.addMethod(this, 'getPassphrase'); |
765 | deferredResult.addMethod(this, 'prepareRemoteDataWithKey'); | 765 | deferredResult.addMethod(this, 'prepareRemoteDataWithKey'); |
766 | deferredResult.addCallback(Clipperz.Async.setItem, messageParameters, 'user'); | 766 | deferredResult.addCallback(Clipperz.Async.setItem, messageParameters, 'user'); |
767 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); | 767 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); |
768 | 768 | ||
769 | deferredResult.addCallback(MochiKit.Async.succeed, messageParameters); | 769 | deferredResult.addCallback(MochiKit.Async.succeed, messageParameters); |
770 | deferredResult.addMethod(this.connection(), 'message', 'saveChanges'); | 770 | deferredResult.addMethod(this.connection(), 'message', 'saveChanges'); |
771 | deferredResult.addCallback(MochiKit.Base.update, this.transientState()) | 771 | deferredResult.addCallback(MochiKit.Base.update, this.transientState()) |
772 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); | 772 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); |
773 | 773 | ||
774 | deferredResult.addMethod(this, 'commitTransientState'); | 774 | deferredResult.addMethod(this, 'commitTransientState'); |
775 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); | 775 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress'); |
776 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'userDataSuccessfullySaved'); | 776 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'userDataSuccessfullySaved'); |
777 | 777 | ||
778 | deferredResult.addErrbackPass(MochiKit.Base.method(this, 'revertChanges')); | 778 | deferredResult.addErrbackPass(MochiKit.Base.method(this, 'revertChanges')); |
779 | deferredResult.addErrbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'failureWhileSavingUserData'); | 779 | deferredResult.addErrbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'failureWhileSavingUserData'); |
780 | 780 | ||
781 | deferredResult.callback(); | 781 | deferredResult.callback(); |
782 | 782 | ||
783 | return deferredResult; | 783 | return deferredResult; |
784 | }, | 784 | }, |
785 | 785 | ||
786 | //========================================================================= | 786 | //========================================================================= |
787 | __syntaxFix__: "syntax fix" | 787 | __syntaxFix__: "syntax fix" |
788 | }); | 788 | }); |
789 | 789 | ||
790 | //----------------------------------------------------------------------------- | 790 | //----------------------------------------------------------------------------- |
791 | 791 | ||
792 | Clipperz.PM.DataModel.User.registerNewAccount = function (anUsername, aPassphraseFunction) { | 792 | Clipperz.PM.DataModel.User.registerNewAccount = function (anUsername, aPassphraseFunction) { |
793 | vardeferredResult; | 793 | vardeferredResult; |
794 | var user; | 794 | var user; |
795 | 795 | ||
796 | user = new Clipperz.PM.DataModel.User({'username':anUsername, 'getPassphraseFunction':aPassphraseFunction}); | 796 | user = new Clipperz.PM.DataModel.User({'username':anUsername, 'getPassphraseFunction':aPassphraseFunction}); |
797 | 797 | ||
798 | deferredResult = new Clipperz.Async.Deferred("Clipperz.PM.DataModel.User.registerNewAccount", {trace:false}); | 798 | deferredResult = new Clipperz.Async.Deferred("Clipperz.PM.DataModel.User.registerNewAccount", {trace:false}); |
799 | deferredResult.addMethod(user, 'registerAsNewAccount'); | 799 | deferredResult.addMethod(user, 'registerAsNewAccount'); |
800 | deferredResult.addMethod(user, 'login'); | 800 | deferredResult.addMethod(user, 'login'); |
801 | deferredResult.addCallback(MochiKit.Async.succeed, user); | 801 | deferredResult.addCallback(MochiKit.Async.succeed, user); |
802 | deferredResult.callback(); | 802 | deferredResult.callback(); |
803 | 803 | ||
804 | return deferredResult; | 804 | return deferredResult; |
805 | } | 805 | } |
806 | 806 | ||
807 | //----------------------------------------------------------------------------- | 807 | //----------------------------------------------------------------------------- |
808 | 808 | ||
809 | Clipperz.PM.DataModel.User.exception = { | 809 | Clipperz.PM.DataModel.User.exception = { |
810 | LoginFailed: new MochiKit.Base.NamedError("Clipperz.PM.DataModel.User.exception.LoginFailed"), | 810 | LoginFailed: new MochiKit.Base.NamedError("Clipperz.PM.DataModel.User.exception.LoginFailed"), |
811 | CredentialUpgradeFailed:new MochiKit.Base.NamedError("Clipperz.PM.DataModel.User.exception.CredentialUpgradeFailed") | 811 | CredentialUpgradeFailed:new MochiKit.Base.NamedError("Clipperz.PM.DataModel.User.exception.CredentialUpgradeFailed") |
812 | }; | 812 | }; |
813 | 813 | ||
814 | //----------------------------------------------------------------------------- | 814 | //----------------------------------------------------------------------------- |
diff --git a/frontend/gamma/js/Clipperz/PM/PIN.js b/frontend/gamma/js/Clipperz/PM/PIN.js new file mode 100644 index 0000000..bc932b2 --- a/dev/null +++ b/frontend/gamma/js/Clipperz/PM/PIN.js | |||
@@ -0,0 +1,134 @@ | |||
1 | /* | ||
2 | |||
3 | Copyright 2008-2011 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz Community Edition. | ||
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | ||
8 | refer to http://www.clipperz.com. | ||
9 | |||
10 | * Clipperz Community Edition is free software: you can redistribute | ||
11 | it and/or modify it under the terms of the GNU Affero General Public | ||
12 | License as published by the Free Software Foundation, either version | ||
13 | 3 of the License, or (at your option) any later version. | ||
14 | |||
15 | * Clipperz Community Edition is distributed in the hope that it will | ||
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | ||
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
18 | See the GNU Affero General Public License for more details. | ||
19 | |||
20 | * You should have received a copy of the GNU Affero General Public | ||
21 | License along with Clipperz Community Edition. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | |||
24 | */ | ||
25 | |||
26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } | ||
27 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } | ||
28 | if (typeof(Clipperz.PM.PIN) == 'undefined') { Clipperz.PM.PIN = {}; } | ||
29 | |||
30 | MochiKit.Base.update(Clipperz.PM.PIN, { | ||
31 | |||
32 | //------------------------------------------------------------------------- | ||
33 | |||
34 | '__repr__': function () { | ||
35 | return "[" + this.NAME + " " + this.VERSION + "]"; | ||
36 | }, | ||
37 | |||
38 | //------------------------------------------------------------------------- | ||
39 | |||
40 | 'toString': function () { | ||
41 | return this.__repr__(); | ||
42 | }, | ||
43 | |||
44 | 'CREDENTIALS': 'CLIPPERZ.CREDENTIALS', | ||
45 | 'FAILURE_COUNT': 'CLIPPERZ.FAILED_LOGIN_COUNT', | ||
46 | 'ALLOWED_RETRY': 3, | ||
47 | |||
48 | //------------------------------------------------------------------------- | ||
49 | |||
50 | 'isSet': function () { | ||
51 | return (this.storedCredentials() != null); | ||
52 | }, | ||
53 | |||
54 | 'storedCredentials': function () { | ||
55 | return localStorage[this.CREDENTIALS]; | ||
56 | }, | ||
57 | |||
58 | //------------------------------------------------------------------------- | ||
59 | |||
60 | 'recordFailedAttempt': function () { | ||
61 | varfailureCount; | ||
62 | varresult; | ||
63 | |||
64 | failureCount = localStorage[this.FAILURE_COUNT]; | ||
65 | |||
66 | if (failureCount == null) { | ||
67 | failureCount = 0 | ||
68 | } | ||
69 | |||
70 | failureCount ++; | ||
71 | |||
72 | if (failureCount < this.ALLOWED_RETRY) { | ||
73 | localStorage[this.FAILURE_COUNT] = failureCount; | ||
74 | result = failureCount; | ||
75 | } else { | ||
76 | this.removeLocalCredentials(); | ||
77 | result = -1; | ||
78 | } | ||
79 | |||
80 | return result; | ||
81 | }, | ||
82 | |||
83 | 'resetFailedAttemptCount': function () { | ||
84 | localStorage.removeItem(this.FAILURE_COUNT); | ||
85 | }, | ||
86 | |||
87 | 'failureCount': function () { | ||
88 | return localStorage[this.FAILURE_COUNT]; | ||
89 | }, | ||
90 | |||
91 | //------------------------------------------------------------------------- | ||
92 | |||
93 | 'deriveKeyFromPin': function (aPIN) { | ||
94 | return Clipperz.Crypto.SHA.sha256(new Clipperz.ByteArray(aPIN)); | ||
95 | }, | ||
96 | |||
97 | 'credentialsWithPIN': function (aPIN) { | ||
98 | varbyteArrayValue; | ||
99 | var decryptedValue; | ||
100 | varresult; | ||
101 | |||
102 | byteArrayValue = (new Clipperz.ByteArray()).appendBase64String(localStorage[this.CREDENTIALS]); | ||
103 | decryptedValue = Clipperz.Crypto.AES.decrypt(this.deriveKeyFromPin(aPIN), byteArrayValue).asString(); | ||
104 | try { | ||
105 | result = Clipperz.Base.evalJSON(decryptedValue); | ||
106 | } catch (error) { | ||
107 | result = {'username':'fakeusername', 'passphrase':'fakepassphrase'}; | ||
108 | } | ||
109 | |||
110 | return result; | ||
111 | }, | ||
112 | |||
113 | 'setCredentialsWithPIN': function (aPIN, someCredentials) { | ||
114 | varencodedValue; | ||
115 | varbyteArrayValue; | ||
116 | var encryptedValue; | ||
117 | |||
118 | encodedValue = Clipperz.Base.serializeJSON(someCredentials); | ||
119 | byteArrayValue = new Clipperz.ByteArray(encodedValue); | ||
120 | encryptedValue = Clipperz.Crypto.AES.encrypt(this.deriveKeyFromPin(aPIN), byteArrayValue).toBase64String(); | ||
121 | |||
122 | localStorage[this.CREDENTIALS] = encryptedValue; | ||
123 | }, | ||
124 | |||
125 | 'removeLocalCredentials': function () { | ||
126 | localStorage.removeItem(this.CREDENTIALS); | ||
127 | localStorage.removeItem(this.FAILURE_COUNT); | ||
128 | }, | ||
129 | |||
130 | //------------------------------------------------------------------------- | ||
131 | __syntaxFix__: "syntax fix" | ||
132 | |||
133 | }); | ||
134 | |||
diff --git a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.OfflineCache.js b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.OfflineCache.js new file mode 100644 index 0000000..803c590 --- a/dev/null +++ b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.OfflineCache.js | |||
@@ -0,0 +1,65 @@ | |||
1 | /* | ||
2 | |||
3 | Copyright 2008-2011 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz Community Edition. | ||
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | ||
8 | refer to http://www.clipperz.com. | ||
9 | |||
10 | * Clipperz Community Edition is free software: you can redistribute | ||
11 | it and/or modify it under the terms of the GNU Affero General Public | ||
12 | License as published by the Free Software Foundation, either version | ||
13 | 3 of the License, or (at your option) any later version. | ||
14 | |||
15 | * Clipperz Community Edition is distributed in the hope that it will | ||
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | ||
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
18 | See the GNU Affero General Public License for more details. | ||
19 | |||
20 | * You should have received a copy of the GNU Affero General Public | ||
21 | License along with Clipperz Community Edition. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | |||
24 | */ | ||
25 | |||
26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } | ||
27 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } | ||
28 | |||
29 | //============================================================================= | ||
30 | |||
31 | Clipperz.PM.Proxy.OfflineCache = function(args) { | ||
32 | args = args || {}; | ||
33 | |||
34 | Clipperz.PM.Proxy.Offline.superclass.constructor.call(this, args); | ||
35 | |||
36 | //this._dataStore = args.dataStore || new Clipperz.PM.Proxy.Offline.DataStore(args); | ||
37 | |||
38 | return this; | ||
39 | } | ||
40 | |||
41 | Clipperz.Base.extend(Clipperz.PM.Proxy.OfflineCache, Clipperz.PM.Proxy, { | ||
42 | |||
43 | 'toString': function () { | ||
44 | return "Clipperz.PM.Proxy.OfflineCache"; | ||
45 | }, | ||
46 | |||
47 | //------------------------------------------------------------------------- | ||
48 | |||
49 | //'dataStore': function () { | ||
50 | // return this._dataStore; | ||
51 | //}, | ||
52 | |||
53 | //------------------------------------------------------------------------- | ||
54 | |||
55 | 'sendMessage': function(aFunctionName, someParameters) { | ||
56 | throw Clipperz.Base.exception.MethodNotImplementedYet; | ||
57 | // return this.dataStore().processMessage(aFunctionName, someParameters); | ||
58 | }, | ||
59 | |||
60 | //------------------------------------------------------------------------- | ||
61 | |||
62 | __syntaxFix__: "syntax fix" | ||
63 | |||
64 | }); | ||
65 | |||
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/BaseComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/BaseComponent.js index 2a03fdf..b9d7adf 100644 --- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/BaseComponent.js +++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/BaseComponent.js | |||
@@ -1,608 +1,612 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | Clipperz.Base.module('Clipperz.PM.UI.Common.Components'); | 26 | Clipperz.Base.module('Clipperz.PM.UI.Common.Components'); |
27 | 27 | ||
28 | //############################################################################# | 28 | //############################################################################# |
29 | 29 | ||
30 | var _Clipperz_PM_Components_base_id_ = 0; | 30 | var _Clipperz_PM_Components_base_id_ = 0; |
31 | 31 | ||
32 | //############################################################################# | 32 | //############################################################################# |
33 | 33 | ||
34 | Clipperz.PM.UI.Common.Components.BaseComponent = function(args) { | 34 | Clipperz.PM.UI.Common.Components.BaseComponent = function(args) { |
35 | args = args || {}; | 35 | args = args || {}; |
36 | Clipperz.PM.UI.Common.Components.BaseComponent.superclass.constructor.call(this, args); | 36 | Clipperz.PM.UI.Common.Components.BaseComponent.superclass.constructor.call(this, args); |
37 | 37 | ||
38 | this._element = args.element || null; | 38 | this._element = args.element || null; |
39 | this._ids = {}; | 39 | this._ids = {}; |
40 | 40 | ||
41 | this._slots = {}; | 41 | this._slots = {}; |
42 | this._slotComponents = {}; | 42 | this._slotComponents = {}; |
43 | 43 | ||
44 | this._components = {}; | 44 | this._components = {}; |
45 | 45 | ||
46 | this._cachedSlots = {}; | 46 | this._cachedSlots = {}; |
47 | 47 | ||
48 | this._isModal = false; | 48 | this._isModal = false; |
49 | 49 | ||
50 | this._isActive = false; | 50 | this._isActive = false; |
51 | this._elementUsedToEnterModalState; | 51 | this._elementUsedToEnterModalState; |
52 | 52 | ||
53 | this._isFullyRendered = false; | 53 | this._isFullyRendered = false; |
54 | this._renderingWaitingQueue = []; | 54 | this._renderingWaitingQueue = []; |
55 | 55 | ||
56 | //this._slots = { | 56 | //this._slots = { |
57 | // 'header':'header', | 57 | // 'header':'header', |
58 | // 'body': 'body', | 58 | // 'body': 'body', |
59 | // 'footer':'footer' | 59 | // 'footer':'footer' |
60 | //}; | 60 | //}; |
61 | 61 | ||
62 | return this; | 62 | return this; |
63 | } | 63 | } |
64 | 64 | ||
65 | //============================================================================= | 65 | //============================================================================= |
66 | 66 | ||
67 | //TODO get back to MochiKit.Base.update as we are not extending anything | 67 | //TODO get back to MochiKit.Base.update as we are not extending anything |
68 | //MochiKit.Base.update(Clipperz.PM.UI.Common.Components.BaseComponent.prototype, { | 68 | //MochiKit.Base.update(Clipperz.PM.UI.Common.Components.BaseComponent.prototype, { |
69 | Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.BaseComponent, /*Ext.Component*/ Object, { | 69 | Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.BaseComponent, /*Ext.Component*/ Object, { |
70 | 70 | ||
71 | 'isClipperzPMComponent': true, | 71 | 'isClipperzPMComponent': true, |
72 | 72 | ||
73 | //------------------------------------------------------------------------- | 73 | //------------------------------------------------------------------------- |
74 | 74 | ||
75 | 'toString': function () { | 75 | 'toString': function () { |
76 | return "Clipperz.PM.UI.Common.Components.BaseComponent component"; | 76 | return "Clipperz.PM.UI.Common.Components.BaseComponent component"; |
77 | }, | 77 | }, |
78 | 78 | ||
79 | 'componentId': function () { | 79 | 'componentId': function () { |
80 | return this.getId('_id_'); | 80 | return this.getId('_id_'); |
81 | }, | 81 | }, |
82 | 82 | ||
83 | //------------------------------------------------------------------------- | 83 | //------------------------------------------------------------------------- |
84 | /* | 84 | /* |
85 | 'slots': function() { | 85 | 'slots': function() { |
86 | return this._slots; | 86 | return this._slots; |
87 | }, | 87 | }, |
88 | */ | 88 | */ |
89 | 'slotComponents': function() { | 89 | 'slotComponents': function() { |
90 | return this._slotComponents; | 90 | return this._slotComponents; |
91 | }, | 91 | }, |
92 | 92 | ||
93 | //------------------------------------------------------------------------- | 93 | //------------------------------------------------------------------------- |
94 | 94 | ||
95 | 'components': function () { | 95 | 'components': function () { |
96 | return this._components; | 96 | return this._components; |
97 | }, | 97 | }, |
98 | 98 | ||
99 | 'addComponent': function (aComponent) { | 99 | 'addComponent': function (aComponent) { |
100 | this.components()[aComponent.componentId()] = aComponent; | 100 | this.components()[aComponent.componentId()] = aComponent; |
101 | }, | 101 | }, |
102 | 102 | ||
103 | 'removeComponent': function (aComponent) { | 103 | 'removeComponent': function (aComponent) { |
104 | var componentId; | 104 | var componentId; |
105 | 105 | ||
106 | componentId = aComponent.componentId(); | 106 | componentId = aComponent.componentId(); |
107 | this.components()[componentId].remove(); | 107 | this.components()[componentId].remove(); |
108 | delete this.components()[componentId]; | 108 | delete this.components()[componentId]; |
109 | }, | 109 | }, |
110 | 110 | ||
111 | //------------------------------------------------------------------------- | 111 | //------------------------------------------------------------------------- |
112 | /* | 112 | /* |
113 | 'domHelper': function() { | 113 | 'domHelper': function() { |
114 | return Clipperz.YUI.DomHelper; | 114 | return Clipperz.YUI.DomHelper; |
115 | }, | 115 | }, |
116 | */ | 116 | */ |
117 | //------------------------------------------------------------------------- | 117 | //------------------------------------------------------------------------- |
118 | /* | 118 | /* |
119 | 'domHelperAppend': function(aValue) { | 119 | 'domHelperAppend': function(aValue) { |
120 | Clipperz.YUI.DomHelper.append(this.element().dom, aValue); | 120 | Clipperz.YUI.DomHelper.append(this.element().dom, aValue); |
121 | }, | 121 | }, |
122 | */ | 122 | */ |
123 | //------------------------------------------------------------------------- | 123 | //------------------------------------------------------------------------- |
124 | 124 | ||
125 | 'element': function() { | 125 | 'element': function() { |
126 | //MochiKit.Logging.logDebug(">>> BaseComponent.element"); | 126 | //MochiKit.Logging.logDebug(">>> BaseComponent.element"); |
127 | return MochiKit.DOM.getElement(this._element); | 127 | return MochiKit.DOM.getElement(this._element); |
128 | }, | 128 | }, |
129 | 129 | ||
130 | 'setElement': function(aNode) { | 130 | 'setElement': function(aNode) { |
131 | this._element = aNode; | 131 | this._element = aNode; |
132 | }, | 132 | }, |
133 | 133 | ||
134 | //----------------------------------------------------- | 134 | //----------------------------------------------------- |
135 | 135 | ||
136 | 'displayElement': function() { | 136 | 'displayElement': function() { |
137 | return this.element(); | 137 | return this.element(); |
138 | }, | 138 | }, |
139 | 139 | ||
140 | //------------------------------------------------------------------------- | 140 | //------------------------------------------------------------------------- |
141 | 141 | ||
142 | 'renderInNode': function(aDomNode) { | 142 | 'renderInNode': function(aDomNode) { |
143 | this.setElement(aDomNode); | 143 | this.setElement(aDomNode); |
144 | this.render(); | 144 | this.render(); |
145 | }, | 145 | }, |
146 | 146 | ||
147 | 'render': function() { | 147 | 'render': function() { |
148 | this.clear(); | 148 | this.clear(); |
149 | this.renderSelf(); | 149 | this.renderSelf(); |
150 | this.renderComponents(); | 150 | this.renderComponents(); |
151 | if (this.shouldShowTranslationHints()) { | 151 | if (this.shouldShowTranslationHints()) { |
152 | this.renderTranslationHints(); | 152 | this.renderTranslationHints(); |
153 | } | 153 | } |
154 | if (this.shouldShowElementWhileRendering()) { | 154 | if (this.shouldShowElementWhileRendering()) { |
155 | MochiKit.Style.showElement(this.displayElement()); | 155 | MochiKit.Style.showElement(this.displayElement()); |
156 | }; | 156 | }; |
157 | 157 | ||
158 | this._isFullyRendered = true; | 158 | this._isFullyRendered = true; |
159 | 159 | ||
160 | MochiKit.Iter.forEach(this.renderingWaitingQueue(), MochiKit.Base.methodcaller('callback')); | 160 | MochiKit.Iter.forEach(this.renderingWaitingQueue(), MochiKit.Base.methodcaller('callback')); |
161 | this.resetRenderingWaitingQueue(); | 161 | this.resetRenderingWaitingQueue(); |
162 | }, | 162 | }, |
163 | 163 | ||
164 | 'renderSelf': function() { | 164 | 'renderSelf': function() { |
165 | throw Clipperz.Base.exception.AbstractMethod; | 165 | throw Clipperz.Base.exception.AbstractMethod; |
166 | }, | 166 | }, |
167 | 167 | ||
168 | 'renderComponents': function() { | 168 | 'renderComponents': function() { |
169 | varslotName; | 169 | varslotName; |
170 | 170 | ||
171 | for (slotName in this.slotComponents()) { | 171 | for (slotName in this.slotComponents()) { |
172 | this.slotComponents()[slotName].renderInNode(this.elementForSlotNamed(slotName)); | 172 | this.slotComponents()[slotName].renderInNode(this.elementForSlotNamed(slotName)); |
173 | } | 173 | } |
174 | }, | 174 | }, |
175 | 175 | ||
176 | //......................................................................... | 176 | //......................................................................... |
177 | 177 | ||
178 | 'isFullyRendered': function () { | 178 | 'isFullyRendered': function () { |
179 | return this._isFullyRendered; | 179 | return this._isFullyRendered; |
180 | }, | 180 | }, |
181 | 181 | ||
182 | //......................................................................... | 182 | //......................................................................... |
183 | 183 | ||
184 | 'renderingWaitingQueue': function () { | 184 | 'renderingWaitingQueue': function () { |
185 | return this._renderingWaitingQueue; | 185 | return this._renderingWaitingQueue; |
186 | }, | 186 | }, |
187 | 187 | ||
188 | 'resetRenderingWaitingQueue': function () { | 188 | 'resetRenderingWaitingQueue': function () { |
189 | this._renderingWaitingQueue = []; | 189 | this._renderingWaitingQueue = []; |
190 | }, | 190 | }, |
191 | 191 | ||
192 | //......................................................................... | 192 | //......................................................................... |
193 | 193 | ||
194 | 'waitUntilFullyRendered': function () { | 194 | 'waitUntilFullyRendered': function () { |
195 | var deferredResult; | 195 | var deferredResult; |
196 | 196 | ||
197 | if (this.isFullyRendered() == true) { | 197 | if (this.isFullyRendered() == true) { |
198 | deferredResult = MochiKit.Async.succeed | 198 | deferredResult = MochiKit.Async.succeed |
199 | } else { | 199 | } else { |
200 | deferredResult = new Clipperz.Async.Deferred("BaseComponent.waitUntilFullyRendered", {trace:false}); | 200 | deferredResult = new Clipperz.Async.Deferred("BaseComponent.waitUntilFullyRendered", {trace:false}); |
201 | this.renderingWaitingQueue().push(deferredResult); | 201 | this.renderingWaitingQueue().push(deferredResult); |
202 | } | 202 | } |
203 | 203 | ||
204 | return deferredResult; | 204 | return deferredResult; |
205 | }, | 205 | }, |
206 | 206 | ||
207 | //----------------------------------------------------- | 207 | //----------------------------------------------------- |
208 | 208 | ||
209 | 'renderTranslationHints': function () { | 209 | 'renderTranslationHints': function () { |
210 | vartranslatableItems; | 210 | vartranslatableItems; |
211 | 211 | ||
212 | translatableItems = MochiKit.Selector.findChildElements(this.displayElement(), ['[stringID]']); | 212 | translatableItems = MochiKit.Selector.findChildElements(this.displayElement(), ['[stringID]']); |
213 | MochiKit.Iter.forEach(translatableItems, MochiKit.Base.method(this, 'enhanceTranslatableElement')) | 213 | MochiKit.Iter.forEach(translatableItems, MochiKit.Base.method(this, 'enhanceTranslatableElement')) |
214 | }, | 214 | }, |
215 | 215 | ||
216 | 'enhanceTranslatableElement': function (anElement) { | 216 | 'enhanceTranslatableElement': function (anElement) { |
217 | //Clipperz.log(">>> enhanceTranslatableElement", anElement); | 217 | //Clipperz.log(">>> enhanceTranslatableElement", anElement); |
218 | // new Clipperz.PM.UI.Common.Components.TranslatorWidget({ | 218 | // new Clipperz.PM.UI.Common.Components.TranslatorWidget({ |
219 | // 'element':anElement | 219 | // 'element':anElement |
220 | // }); | 220 | // }); |
221 | 221 | ||
222 | MochiKit.Signal.connect(anElement, 'onmouseenter', MochiKit.Base.partial(Clipperz.PM.UI.Common.Components.TranslatorWidget.show, anElement, MochiKit.DOM.getNodeAttribute(anElement, 'stringID'))); | 222 | MochiKit.Signal.connect(anElement, 'onmouseenter', MochiKit.Base.partial(Clipperz.PM.UI.Common.Components.TranslatorWidget.show, anElement, MochiKit.DOM.getNodeAttribute(anElement, 'stringID'))); |
223 | MochiKit.Signal.connect(anElement, 'onmouseleave', Clipperz.PM.UI.Common.Components.TranslatorWidget.hide); | 223 | MochiKit.Signal.connect(anElement, 'onmouseleave', Clipperz.PM.UI.Common.Components.TranslatorWidget.hide); |
224 | //Clipperz.log("<<< enhanceTranslatableElement"); | 224 | //Clipperz.log("<<< enhanceTranslatableElement"); |
225 | }, | 225 | }, |
226 | 226 | ||
227 | //----------------------------------------------------- | 227 | //----------------------------------------------------- |
228 | 228 | ||
229 | 'update': function(args) { | 229 | 'update': function(args) { |
230 | throw Clipperz.Base.exception.AbstractMethod; | 230 | throw Clipperz.Base.exception.AbstractMethod; |
231 | }, | 231 | }, |
232 | 232 | ||
233 | 'updateSelf': function(args) { | 233 | 'updateSelf': function(args) { |
234 | throw Clipperz.Base.exception.AbstractMethod; | 234 | throw Clipperz.Base.exception.AbstractMethod; |
235 | }, | 235 | }, |
236 | 236 | ||
237 | 'updateComponents': function(args) { | 237 | 'updateComponents': function(args) { |
238 | throw Clipperz.Base.exception.AbstractMethod; | 238 | throw Clipperz.Base.exception.AbstractMethod; |
239 | }, | 239 | }, |
240 | 240 | ||
241 | //----------------------------------------------------- | 241 | //----------------------------------------------------- |
242 | 242 | ||
243 | 'refresh': function() { | 243 | 'refresh': function() { |
244 | throw Clipperz.Base.exception.AbstractMethod; | 244 | throw Clipperz.Base.exception.AbstractMethod; |
245 | }, | 245 | }, |
246 | 246 | ||
247 | 'refreshSelf': function() { | 247 | 'refreshSelf': function() { |
248 | throw Clipperz.Base.exception.AbstractMethod; | 248 | throw Clipperz.Base.exception.AbstractMethod; |
249 | }, | 249 | }, |
250 | 250 | ||
251 | 'refreshComponents': function(args) { | 251 | 'refreshComponents': function(args) { |
252 | throw Clipperz.Base.exception.AbstractMethod; | 252 | throw Clipperz.Base.exception.AbstractMethod; |
253 | }, | 253 | }, |
254 | 254 | ||
255 | //----------------------------------------------------- | 255 | //----------------------------------------------------- |
256 | 256 | ||
257 | 'checkSlotNamed': function(aSlotName) { | 257 | 'checkSlotNamed': function(aSlotName) { |
258 | if (typeof(this._slots[aSlotName]) == 'undefined') { | 258 | if (typeof(this._slots[aSlotName]) == 'undefined') { |
259 | throw new Error("undefined slot"); | 259 | throw new Error("undefined slot"); |
260 | }; | 260 | }; |
261 | }, | 261 | }, |
262 | 262 | ||
263 | //----------------------------------------------------- | 263 | //----------------------------------------------------- |
264 | 264 | ||
265 | 'cachedSlots': function() { | 265 | 'cachedSlots': function() { |
266 | return this._cachedSlots; | 266 | return this._cachedSlots; |
267 | }, | 267 | }, |
268 | 268 | ||
269 | 'slotNamed': function(aSlotName) { | 269 | 'slotNamed': function(aSlotName) { |
270 | var result; | 270 | var result; |
271 | 271 | ||
272 | this.checkSlotNamed(aSlotName); | 272 | this.checkSlotNamed(aSlotName); |
273 | if (typeof(this.cachedSlots()[aSlotName]) == 'undefined') { | 273 | if (typeof(this.cachedSlots()[aSlotName]) == 'undefined') { |
274 | this.cachedSlots()[aSlotName] = new Clipperz.PM.UI.Common.Components.ComponentSlot(this,aSlotName); | 274 | this.cachedSlots()[aSlotName] = new Clipperz.PM.UI.Common.Components.ComponentSlot(this,aSlotName); |
275 | } | 275 | } |
276 | 276 | ||
277 | result = this.cachedSlots()[aSlotName]; | 277 | result = this.cachedSlots()[aSlotName]; |
278 | 278 | ||
279 | return result; | 279 | return result; |
280 | }, | 280 | }, |
281 | 281 | ||
282 | //----------------------------------------------------- | 282 | //----------------------------------------------------- |
283 | 283 | ||
284 | 'elementForSlotNamed': function(aSlotName) { | 284 | 'elementForSlotNamed': function(aSlotName) { |
285 | return MochiKit.DOM.getElement(this._slots[aSlotName]); | 285 | return MochiKit.DOM.getElement(this._slots[aSlotName]); |
286 | }, | 286 | }, |
287 | 287 | ||
288 | //----------------------------------------------------- | 288 | //----------------------------------------------------- |
289 | 289 | ||
290 | 'componentForSlotNamed': function(aSlotName) { | 290 | 'componentForSlotNamed': function(aSlotName) { |
291 | return this.slotComponents()[aSlotName]; | 291 | return this.slotComponents()[aSlotName]; |
292 | }, | 292 | }, |
293 | 293 | ||
294 | 'setComponentForSlotNamed': function(aComponent, aSlotName) { | 294 | 'setComponentForSlotNamed': function(aComponent, aSlotName) { |
295 | var domNode; | 295 | var domNode; |
296 | 296 | ||
297 | this.checkSlotNamed(aSlotName); | 297 | this.checkSlotNamed(aSlotName); |
298 | 298 | ||
299 | if (this.slotComponents()[aSlotName] != null) { | 299 | if (this.slotComponents()[aSlotName] != null) { |
300 | this.slotComponents()[aSlotName].remove(); | 300 | this.slotComponents()[aSlotName].remove(); |
301 | } | 301 | } |
302 | 302 | ||
303 | this.slotComponents()[aSlotName] = aComponent; | 303 | this.slotComponents()[aSlotName] = aComponent; |
304 | 304 | ||
305 | // domNode = MochiKit.DOM.getElement(this.slotNamed(aSlotName)); | 305 | // domNode = MochiKit.DOM.getElement(this.slotNamed(aSlotName)); |
306 | domNode = this.elementForSlotNamed(aSlotName); | 306 | domNode = this.elementForSlotNamed(aSlotName); |
307 | 307 | ||
308 | if (domNode != null) { | 308 | if (domNode != null) { |
309 | aComponent.renderInNode(domNode); | 309 | aComponent.renderInNode(domNode); |
310 | } | 310 | } |
311 | }, | 311 | }, |
312 | 312 | ||
313 | //----------------------------------------------------- | 313 | //----------------------------------------------------- |
314 | /* | 314 | /* |
315 | 'purgeListeners': function() { | 315 | 'purgeListeners': function() { |
316 | //MochiKit.Logging.logDebug(">>> Clipperz.PM.UI.Common.Components.BaseComponent.purgeListeners [" + this + "]"); | 316 | //MochiKit.Logging.logDebug(">>> Clipperz.PM.UI.Common.Components.BaseComponent.purgeListeners [" + this + "]"); |
317 | //MochiKit.Logging.logDebug("--- " + this + ".purgeListeners"); | 317 | //MochiKit.Logging.logDebug("--- " + this + ".purgeListeners"); |
318 | Clipperz.NotificationCenter.unregister(this); | 318 | Clipperz.NotificationCenter.unregister(this); |
319 | MochiKit.Signal.disconnectAllTo(this); | 319 | MochiKit.Signal.disconnectAllTo(this); |
320 | //MochiKit.Logging.logDebug("<<< Clipperz.PM.UI.Common.Components.BaseComponent.purgeListeners"); | 320 | //MochiKit.Logging.logDebug("<<< Clipperz.PM.UI.Common.Components.BaseComponent.purgeListeners"); |
321 | }, | 321 | }, |
322 | */ | 322 | */ |
323 | //----------------------------------------------------- | 323 | //----------------------------------------------------- |
324 | 324 | ||
325 | 'clear': function() { | 325 | 'clear': function() { |
326 | varslotName; | 326 | varslotName; |
327 | var componentId; | 327 | var componentId; |
328 | 328 | ||
329 | MochiKit.Signal.disconnectAllTo(this); | 329 | MochiKit.Signal.disconnectAllTo(this); |
330 | 330 | ||
331 | for (slotName in this.slotComponents()) { | 331 | for (slotName in this.slotComponents()) { |
332 | this.slotComponents()[slotName].clear(); | 332 | this.slotComponents()[slotName].clear(); |
333 | } | 333 | } |
334 | 334 | ||
335 | for (componentId in this.components()) { | 335 | for (componentId in this.components()) { |
336 | this.components()[componentId].clear(); | 336 | this.components()[componentId].clear(); |
337 | } | 337 | } |
338 | 338 | ||
339 | // if (this.element() != null) { | 339 | // if (this.element() != null) { |
340 | // this.element().innerHTML = ""; | 340 | // this.element().innerHTML = ""; |
341 | // } | 341 | // } |
342 | 342 | ||
343 | if (this.displayElement() != null) { | 343 | if (this.displayElement() != null) { |
344 | if (this.element() != this.displayElement()) { | 344 | if (this.element() != this.displayElement()) { |
345 | MochiKit.DOM.removeElement(this.displayElement()); | 345 | MochiKit.DOM.removeElement(this.displayElement()); |
346 | } else { | 346 | } else { |
347 | this.displayElement().innerHTML = ""; | 347 | this.displayElement().innerHTML = ""; |
348 | } | 348 | } |
349 | } | 349 | } |
350 | 350 | ||
351 | if (this.isModal()) { | 351 | if (this.isModal()) { |
352 | //TODO: cleanup when the closed element was shown modally. | 352 | //TODO: cleanup when the closed element was shown modally. |
353 | } | 353 | } |
354 | }, | 354 | }, |
355 | 355 | ||
356 | 356 | ||
357 | 'remove': function() { | 357 | 'remove': function() { |
358 | varslotName; | 358 | varslotName; |
359 | var componentId; | 359 | var componentId; |
360 | 360 | ||
361 | for (slotName in this.slotComponents()) { | 361 | for (slotName in this.slotComponents()) { |
362 | this.slotComponents()[slotName].remove(); | 362 | this.slotComponents()[slotName].remove(); |
363 | delete this.slotComponents()[slotName]; | 363 | delete this.slotComponents()[slotName]; |
364 | } | 364 | } |
365 | 365 | ||
366 | for (componentId in this.components()) { | 366 | for (componentId in this.components()) { |
367 | this.components()[componentId].remove(); | 367 | this.components()[componentId].remove(); |
368 | delete this.components()[componentId]; | 368 | delete this.components()[componentId]; |
369 | } | 369 | } |
370 | 370 | ||
371 | this.clear(); | 371 | this.clear(); |
372 | MochiKit.Signal.disconnectAll(this); | 372 | MochiKit.Signal.disconnectAll(this); |
373 | }, | 373 | }, |
374 | 374 | ||
375 | 'append': function(aNode, aValue) { | 375 | 'append': function(aNode, aValue) { |
376 | return Clipperz.DOM.Helper.append(aNode, aValue); | 376 | return Clipperz.DOM.Helper.append(aNode, aValue); |
377 | }, | 377 | }, |
378 | 378 | ||
379 | 'insertBefore': function (aNode, aValue) { | 379 | 'insertBefore': function (aNode, aValue) { |
380 | return Clipperz.DOM.Helper.insertBefore(aNode, aValue); | 380 | return Clipperz.DOM.Helper.insertBefore(aNode, aValue); |
381 | }, | 381 | }, |
382 | 382 | ||
383 | 'insertAfter': function (aNode, aValue) { | 383 | 'insertAfter': function (aNode, aValue) { |
384 | return Clipperz.DOM.Helper.insertAfter(aNode, aValue); | 384 | return Clipperz.DOM.Helper.insertAfter(aNode, aValue); |
385 | }, | 385 | }, |
386 | 386 | ||
387 | //------------------------------------------------------------------------- | 387 | //------------------------------------------------------------------------- |
388 | 388 | ||
389 | 'getId': function(aValue) { | 389 | 'getId': function(aValue) { |
390 | varresult; | 390 | varresult; |
391 | 391 | ||
392 | if (typeof(aValue) != 'undefined') { | 392 | if (typeof(aValue) != 'undefined') { |
393 | result = this._ids[aValue]; | 393 | result = this._ids[aValue]; |
394 | 394 | ||
395 | if (typeof(result) == 'undefined') { | 395 | if (typeof(result) == 'undefined') { |
396 | _Clipperz_PM_Components_base_id_ ++; | 396 | _Clipperz_PM_Components_base_id_ ++; |
397 | 397 | ||
398 | result = "Clipperz_PM_Components_" + aValue + "_" + _Clipperz_PM_Components_base_id_; | 398 | result = "Clipperz_PM_Components_" + aValue + "_" + _Clipperz_PM_Components_base_id_; |
399 | this._ids[aValue] = result; | 399 | this._ids[aValue] = result; |
400 | } | 400 | } |
401 | } else { | 401 | } else { |
402 | // result = Clipperz.PM.UI.Common.Components.BaseComponent.superclass.getId.call(this); | 402 | // result = Clipperz.PM.UI.Common.Components.BaseComponent.superclass.getId.call(this); |
403 | throw "call to BaseComponent.getId with an undefined value"; | 403 | throw "call to BaseComponent.getId with an undefined value"; |
404 | } | 404 | } |
405 | 405 | ||
406 | return result; | 406 | return result; |
407 | }, | 407 | }, |
408 | 408 | ||
409 | 'getAnchor': function (aValue) { | ||
410 | return '#' + this.getId(aValue); | ||
411 | }, | ||
412 | |||
409 | //------------------------------------------------------------------------- | 413 | //------------------------------------------------------------------------- |
410 | 414 | ||
411 | 'getElement': function(aValue) { | 415 | 'getElement': function(aValue) { |
412 | return Clipperz.DOM.get(this.getId(aValue)); | 416 | return Clipperz.DOM.get(this.getId(aValue)); |
413 | }, | 417 | }, |
414 | 418 | ||
415 | //------------------------------------------------------------------------- | 419 | //------------------------------------------------------------------------- |
416 | 420 | ||
417 | 'hideElement': function(anElementName) { | 421 | 'hideElement': function(anElementName) { |
418 | MochiKit.Style.hideElement(this.getElement(anElementName)); | 422 | MochiKit.Style.hideElement(this.getElement(anElementName)); |
419 | }, | 423 | }, |
420 | 424 | ||
421 | 'showElement': function(anElementName) { | 425 | 'showElement': function(anElementName) { |
422 | MochiKit.Style.showElement(this.getElement(anElementName)); | 426 | MochiKit.Style.showElement(this.getElement(anElementName)); |
423 | }, | 427 | }, |
424 | 428 | ||
425 | //------------------------------------------------------------------------- | 429 | //------------------------------------------------------------------------- |
426 | 430 | ||
427 | 'activate': function () { | 431 | 'activate': function () { |
428 | this._isActive = true; | 432 | this._isActive = true; |
429 | }, | 433 | }, |
430 | 434 | ||
431 | 'deactivate': function () { | 435 | 'deactivate': function () { |
432 | this._isActive = false; | 436 | this._isActive = false; |
433 | }, | 437 | }, |
434 | 438 | ||
435 | 'isActive': function () { | 439 | 'isActive': function () { |
436 | return this._isActive; | 440 | return this._isActive; |
437 | }, | 441 | }, |
438 | 442 | ||
439 | //------------------------------------------------------------------------- | 443 | //------------------------------------------------------------------------- |
440 | 444 | ||
441 | 'hideSlot': function(aSlotName) { | 445 | 'hideSlot': function(aSlotName) { |
442 | if (this.componentForSlotNamed(aSlotName)) { | 446 | if (this.componentForSlotNamed(aSlotName)) { |
443 | this.componentForSlotNamed(aSlotName).deactivate(); | 447 | this.componentForSlotNamed(aSlotName).deactivate(); |
444 | } | 448 | } |
445 | MochiKit.Style.hideElement(this.elementForSlotNamed(aSlotName)); | 449 | MochiKit.Style.hideElement(this.elementForSlotNamed(aSlotName)); |
446 | }, | 450 | }, |
447 | 451 | ||
448 | 'showSlot': function(aSlotName) { | 452 | 'showSlot': function(aSlotName) { |
449 | if (this.componentForSlotNamed(aSlotName)) { | 453 | if (this.componentForSlotNamed(aSlotName)) { |
450 | this.componentForSlotNamed(aSlotName).activate(); | 454 | this.componentForSlotNamed(aSlotName).activate(); |
451 | } | 455 | } |
452 | MochiKit.Style.showElement(this.elementForSlotNamed(aSlotName)); | 456 | MochiKit.Style.showElement(this.elementForSlotNamed(aSlotName)); |
453 | }, | 457 | }, |
454 | 458 | ||
455 | //------------------------------------------------------------------------- | 459 | //------------------------------------------------------------------------- |
456 | 460 | ||
457 | 'shouldShowTranslationHints': function () { | 461 | 'shouldShowTranslationHints': function () { |
458 | return false; | 462 | return false; |
459 | }, | 463 | }, |
460 | 464 | ||
461 | 'shouldShowElementWhileRendering': function() { | 465 | 'shouldShowElementWhileRendering': function() { |
462 | return true; | 466 | return true; |
463 | }, | 467 | }, |
464 | 468 | ||
465 | //'shouldRemoveElementWhenClearningUp': function () { | 469 | //'shouldRemoveElementWhenClearningUp': function () { |
466 | // return true; | 470 | // return true; |
467 | //}, | 471 | //}, |
468 | 472 | ||
469 | //------------------------------------------------------------------------- | 473 | //------------------------------------------------------------------------- |
470 | 474 | ||
471 | 'isModal': function() { | 475 | 'isModal': function() { |
472 | return this._isModal; | 476 | return this._isModal; |
473 | }, | 477 | }, |
474 | 478 | ||
475 | 'setIsModal': function(aValue) { | 479 | 'setIsModal': function(aValue) { |
476 | this._isModal = aValue; | 480 | this._isModal = aValue; |
477 | }, | 481 | }, |
478 | 482 | ||
479 | //------------------------------------------------------------------------- | 483 | //------------------------------------------------------------------------- |
480 | 484 | ||
481 | 'elementUsedToEnterModalState': function () { | 485 | 'elementUsedToEnterModalState': function () { |
482 | return this._elementUsedToEnterModalState; | 486 | return this._elementUsedToEnterModalState; |
483 | }, | 487 | }, |
484 | 488 | ||
485 | 'setElementUsedToEnterModalState': function (aValue) { | 489 | 'setElementUsedToEnterModalState': function (aValue) { |
486 | this._elementUsedToEnterModalState = aValue; | 490 | this._elementUsedToEnterModalState = aValue; |
487 | }, | 491 | }, |
488 | 492 | ||
489 | //------------------------------------------------------------------------- | 493 | //------------------------------------------------------------------------- |
490 | 494 | ||
491 | 'modalDialogMask': function () { | 495 | 'modalDialogMask': function () { |
492 | return 'modalDialogMask'; | 496 | return 'modalDialogMask'; |
493 | }, | 497 | }, |
494 | 498 | ||
495 | 'modalDialog': function () { | 499 | 'modalDialog': function () { |
496 | return 'modalDialog'; | 500 | return 'modalDialog'; |
497 | }, | 501 | }, |
498 | 502 | ||
499 | 'modalDialogFrame': function() { | 503 | 'modalDialogFrame': function() { |
500 | return 'modalDialogFrame' | 504 | return 'modalDialogFrame' |
501 | }, | 505 | }, |
502 | 506 | ||
503 | //------------------------------------------------------------------------- | 507 | //------------------------------------------------------------------------- |
504 | 508 | ||
505 | 'deferredShowModal': function(args) { | 509 | 'deferredShowModal': function(args) { |
506 | var deferredResult; | 510 | var deferredResult; |
507 | 511 | ||
508 | deferredResult = new Clipperz.Async.Deferred("BaseComponent.deferredShowModal", {trace:false}); | 512 | deferredResult = new Clipperz.Async.Deferred("BaseComponent.deferredShowModal", {trace:false}); |
509 | 513 | ||
510 | deferredResult.addMethod(this, 'setIsModal', true); | 514 | deferredResult.addMethod(this, 'setIsModal', true); |
511 | deferredResult.addCallback(MochiKit.Style.showElement, this.modalDialogMask()); | 515 | deferredResult.addCallback(MochiKit.Style.showElement, this.modalDialogMask()); |
512 | deferredResult.addCallback(MochiKit.Base.bind(function(someArgs) { | 516 | deferredResult.addCallback(MochiKit.Base.bind(function(someArgs) { |
513 | var result; | 517 | var result; |
514 | var duration; | 518 | var duration; |
515 | var from; | 519 | var from; |
516 | var to; | 520 | var to; |
517 | 521 | ||
518 | duration = someArgs.duration || 0.4; | 522 | duration = someArgs.duration || 0.4; |
519 | 523 | ||
520 | this.setElementUsedToEnterModalState(someArgs.openFromElement); | 524 | this.setElementUsedToEnterModalState(someArgs.openFromElement); |
521 | from = Clipperz.Style.getSizeAndPosition(someArgs.openFromElement); | 525 | from = Clipperz.Style.getSizeAndPosition(someArgs.openFromElement); |
522 | this.renderInNode(this.modalDialog()); | 526 | this.renderInNode(this.modalDialog()); |
523 | MochiKit.DOM.addElementClass(this.modalDialog(), 'fixed'); | 527 | MochiKit.DOM.addElementClass(this.modalDialog(), 'fixed'); |
524 | to = Clipperz.Style.getSizeAndPosition(this.displayElement()); | 528 | to = Clipperz.Style.getSizeAndPosition(this.displayElement()); |
525 | Clipperz.PM.UI.Common.Components.BaseComponent.targetModalDimensionsAndPosition = Clipperz.Base.deepClone(to); | 529 | Clipperz.PM.UI.Common.Components.BaseComponent.targetModalDimensionsAndPosition = Clipperz.Base.deepClone(to); |
526 | 530 | ||
527 | MochiKit.Style.hideElement(this.displayElement()); | 531 | MochiKit.Style.hideElement(this.displayElement()); |
528 | MochiKit.Style.showElement(this.modalDialogFrame()); | 532 | MochiKit.Style.showElement(this.modalDialogFrame()); |
529 | 533 | ||
530 | result = {from:from, to:to, duration:duration}; | 534 | result = {from:from, to:to, duration:duration}; |
531 | return result; | 535 | return result; |
532 | }, this, args)); | 536 | }, this, args)); |
533 | deferredResult.addCallback(Clipperz.Visual.deferredResize, this.modalDialogFrame()); | 537 | deferredResult.addCallback(Clipperz.Visual.deferredResize, this.modalDialogFrame()); |
534 | deferredResult.addCallback(MochiKit.Base.bind(function(someArgs) { | 538 | deferredResult.addCallback(MochiKit.Base.bind(function(someArgs) { |
535 | MochiKit.Style.hideElement(this.modalDialogFrame()); | 539 | MochiKit.Style.hideElement(this.modalDialogFrame()); |
536 | MochiKit.Style.showElement(this.displayElement()); | 540 | MochiKit.Style.showElement(this.displayElement()); |
537 | }, this)); | 541 | }, this)); |
538 | deferredResult.addCallback(MochiKit.Async.succeed, arguments[arguments.length - 1]); | 542 | deferredResult.addCallback(MochiKit.Async.succeed, arguments[arguments.length - 1]); |
539 | deferredResult.callback(); | 543 | deferredResult.callback(); |
540 | 544 | ||
541 | return deferredResult; | 545 | return deferredResult; |
542 | }, | 546 | }, |
543 | 547 | ||
544 | //------------------------------------------------------------------------- | 548 | //------------------------------------------------------------------------- |
545 | 549 | ||
546 | 'deferredHideModal': function(args) { | 550 | 'deferredHideModal': function(args) { |
547 | var deferredResult; | 551 | var deferredResult; |
548 | 552 | ||
549 | args = args || {}; | 553 | args = args || {}; |
550 | 554 | ||
551 | deferredResult = new Clipperz.Async.Deferred("BaseComponent.deferredHideModal", {trace:false}); | 555 | deferredResult = new Clipperz.Async.Deferred("BaseComponent.deferredHideModal", {trace:false}); |
552 | deferredResult.addCallback(MochiKit.Base.bind(function(someArgs) { | 556 | deferredResult.addCallback(MochiKit.Base.bind(function(someArgs) { |
553 | var result; | 557 | var result; |
554 | var from; | 558 | var from; |
555 | var toElement; | 559 | var toElement; |
556 | var to; | 560 | var to; |
557 | var duration; | 561 | var duration; |
558 | 562 | ||
559 | toElement = args.closeToElement || this.elementUsedToEnterModalState(); | 563 | toElement = args.closeToElement || this.elementUsedToEnterModalState(); |
560 | duration = someArgs.duration || 0.4; | 564 | duration = someArgs.duration || 0.4; |
561 | from = Clipperz.Style.getSizeAndPosition(this.displayElement()); | 565 | from = Clipperz.Style.getSizeAndPosition(this.displayElement()); |
562 | to = Clipperz.Style.getSizeAndPosition(toElement); | 566 | to = Clipperz.Style.getSizeAndPosition(toElement); |
563 | 567 | ||
564 | MochiKit.Style.hideElement(this.displayElement()); | 568 | MochiKit.Style.hideElement(this.displayElement()); |
565 | MochiKit.Style.showElement(this.modalDialogFrame()); | 569 | MochiKit.Style.showElement(this.modalDialogFrame()); |
566 | 570 | ||
567 | result = {from:from, to:to, duration:duration}; | 571 | result = {from:from, to:to, duration:duration}; |
568 | return result; | 572 | return result; |
569 | }, this, args)); | 573 | }, this, args)); |
570 | deferredResult.addCallback(Clipperz.Visual.deferredResize, this.modalDialogFrame()); | 574 | deferredResult.addCallback(Clipperz.Visual.deferredResize, this.modalDialogFrame()); |
571 | deferredResult.addCallback(MochiKit.Base.bind(function() { | 575 | deferredResult.addCallback(MochiKit.Base.bind(function() { |
572 | MochiKit.Style.hideElement(this.modalDialogFrame()); | 576 | MochiKit.Style.hideElement(this.modalDialogFrame()); |
573 | MochiKit.Style.hideElement(this.modalDialogMask()); | 577 | MochiKit.Style.hideElement(this.modalDialogMask()); |
574 | }, this)); | 578 | }, this)); |
575 | deferredResult.addMethod(this, 'setIsModal', false); | 579 | deferredResult.addMethod(this, 'setIsModal', false); |
576 | deferredResult.addMethod(this, 'clear'); //############## | 580 | deferredResult.addMethod(this, 'clear'); //############## |
577 | deferredResult.addCallback(MochiKit.Async.succeed, arguments[arguments.length - 1]); | 581 | deferredResult.addCallback(MochiKit.Async.succeed, arguments[arguments.length - 1]); |
578 | deferredResult.callback(); | 582 | deferredResult.callback(); |
579 | 583 | ||
580 | return deferredResult; | 584 | return deferredResult; |
581 | }, | 585 | }, |
582 | 586 | ||
583 | //------------------------------------------------------------------------- | 587 | //------------------------------------------------------------------------- |
584 | 588 | ||
585 | __syntaxFix__: "syntax fix" | 589 | __syntaxFix__: "syntax fix" |
586 | 590 | ||
587 | }); | 591 | }); |
588 | 592 | ||
589 | Clipperz.PM.UI.Common.Components.BaseComponent_modalDialog = function() { | 593 | Clipperz.PM.UI.Common.Components.BaseComponent_modalDialog = function() { |
590 | Clipperz.DOM.Helper.append(MochiKit.DOM.currentDocument().body, | 594 | Clipperz.DOM.Helper.append(MochiKit.DOM.currentDocument().body, |
591 | {tag:'div', id:'modalDialogWrapper', cls:'modalDialogWrapper', children:[ | 595 | {tag:'div', id:'modalDialogWrapper', cls:'modalDialogWrapper', children:[ |
592 | {tag:'div', id:'modalDialogMask', cls:'modalDialogMask'}, | 596 | {tag:'div', id:'modalDialogMask', cls:'modalDialogMask'}, |
593 | {tag:'div', id:'modalDialogFrame', cls:'modalDialogFrame' /*, html:"modal dialog frame"*/}, | 597 | {tag:'div', id:'modalDialogFrame', cls:'modalDialogFrame' /*, html:"modal dialog frame"*/}, |
594 | {tag:'div', id:'modalDialog', cls:'modalDialog'} | 598 | {tag:'div', id:'modalDialog', cls:'modalDialog'} |
595 | // {tag:'div', id:'modalDialog', cls:'modalDialog', children:[{tag:'div'}]} | 599 | // {tag:'div', id:'modalDialog', cls:'modalDialog', children:[{tag:'div'}]} |
596 | ]} | 600 | ]} |
597 | ); | 601 | ); |
598 | 602 | ||
599 | //MochiKit.Style.hideElement('modalDialogWrapper'); | 603 | //MochiKit.Style.hideElement('modalDialogWrapper'); |
600 | MochiKit.Style.hideElement('modalDialogMask'); | 604 | MochiKit.Style.hideElement('modalDialogMask'); |
601 | MochiKit.Style.hideElement('modalDialogFrame'); | 605 | MochiKit.Style.hideElement('modalDialogFrame'); |
602 | //MochiKit.Style.hideElement('modalDialog'); | 606 | //MochiKit.Style.hideElement('modalDialog'); |
603 | 607 | ||
604 | }; | 608 | }; |
605 | 609 | ||
606 | //Clipperz.PM.UI.Common.Components.BaseComponent.targetModalDimensionsAndPosition = {'x':'X', 'y':'Y'}; | 610 | //Clipperz.PM.UI.Common.Components.BaseComponent.targetModalDimensionsAndPosition = {'x':'X', 'y':'Y'}; |
607 | 611 | ||
608 | MochiKit.DOM.addLoadEvent(Clipperz.PM.UI.Common.Components.BaseComponent_modalDialog); | 612 | MochiKit.DOM.addLoadEvent(Clipperz.PM.UI.Common.Components.BaseComponent_modalDialog); |
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Button.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Button.js index 716d851..1010c9d 100644 --- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Button.js +++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Button.js | |||
@@ -1,105 +1,113 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | Clipperz.Base.module('Clipperz.PM.UI.Common.Components'); | 26 | Clipperz.Base.module('Clipperz.PM.UI.Common.Components'); |
27 | 27 | ||
28 | Clipperz.PM.UI.Common.Components.Button = function(args) { | 28 | Clipperz.PM.UI.Common.Components.Button = function(args) { |
29 | args = args || {}; | 29 | args = args || {}; |
30 | 30 | ||
31 | Clipperz.PM.UI.Common.Components.Button.superclass.constructor.apply(this, arguments); | 31 | Clipperz.PM.UI.Common.Components.Button.superclass.constructor.apply(this, arguments); |
32 | 32 | ||
33 | this._element = args.element || Clipperz.Base.exception.raise('MandatoryParameter'); | 33 | this._element = args.element || Clipperz.Base.exception.raise('MandatoryParameter'); |
34 | this._text = args.text || Clipperz.Base.exception.raise('MandatoryParameter'); | 34 | this._text = args.text || Clipperz.Base.exception.raise('MandatoryParameter'); |
35 | this._isDefault = args.isDefault|| false; | 35 | this._isDefault = args.isDefault|| false; |
36 | 36 | ||
37 | this.render(); | 37 | this.render(); |
38 | 38 | ||
39 | return this; | 39 | return this; |
40 | } | 40 | } |
41 | 41 | ||
42 | //============================================================================= | 42 | //============================================================================= |
43 | 43 | ||
44 | Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.Button, Clipperz.PM.UI.Common.Components.BaseComponent, { | 44 | Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.Button, Clipperz.PM.UI.Common.Components.BaseComponent, { |
45 | 45 | ||
46 | //------------------------------------------------------------------------- | 46 | //------------------------------------------------------------------------- |
47 | 47 | ||
48 | 'toString': function () { | 48 | 'toString': function () { |
49 | return "Clipperz.PM.UI.Common.Components.Button component"; | 49 | return "Clipperz.PM.UI.Common.Components.Button component"; |
50 | }, | 50 | }, |
51 | 51 | ||
52 | //------------------------------------------------------------------------- | 52 | //------------------------------------------------------------------------- |
53 | 53 | ||
54 | 'text': function () { | 54 | 'text': function () { |
55 | return this._text; | 55 | return this._text; |
56 | }, | 56 | }, |
57 | 57 | ||
58 | 'isDefault': function () { | 58 | 'isDefault': function () { |
59 | return this._isDefault; | 59 | return this._isDefault; |
60 | }, | 60 | }, |
61 | 61 | ||
62 | //------------------------------------------------------------------------- | 62 | //------------------------------------------------------------------------- |
63 | 63 | ||
64 | 'renderSelf': function () { | 64 | 'renderSelf': function () { |
65 | this.append(this.element(), {tag:'div', id:this.getId('wrapper'), cls:'button_wrapper', children:[ | 65 | /* |
66 | this.append(this.element(), {tag:'div', id:this.getId('button'), cls:'button_wrapper', children:[ | ||
66 | {tag:'div', id:this.getId('bodyWrapper'), cls:'button_bodyWrapper', children:[ | 67 | {tag:'div', id:this.getId('bodyWrapper'), cls:'button_bodyWrapper', children:[ |
67 | {tag:'div', id:this.getId('body'), cls:'button_body', children:[ | 68 | {tag:'div', id:this.getId('body'), cls:'button_body', children:[ |
68 | {tag:'span', html:this.text()} | 69 | {tag:'span', html:this.text()} |
69 | ]}, | 70 | ]}, |
70 | {tag:'div', id:this.getId('footer'), cls:'button_footer'} | 71 | {tag:'div', id:this.getId('footer'), cls:'button_footer'} |
71 | ]} | 72 | ]} |
72 | ]}); | 73 | ]}); |
74 | */ | ||
75 | /* | ||
76 | this.append(this.element(), {tag:'div', id:this.getId('button'), cls:'button', children:[ | ||
77 | {tag:'span', html:this.text()} | ||
78 | ]}); | ||
79 | */ | ||
80 | this.append(this.element(), {tag:'a', id:this.getId('button'), cls:'button', html:this.text()}); | ||
73 | 81 | ||
74 | if (this.isDefault()) { | 82 | if (this.isDefault()) { |
75 | MochiKit.DOM.addElementClass(this.getId('wrapper'), 'default'); | 83 | MochiKit.DOM.addElementClass(this.getId('button'), 'default'); |
76 | } | 84 | } |
77 | 85 | ||
78 | MochiKit.Signal.connect(this.getId('wrapper'), 'onmouseenter',this, 'handleOnMouseEnter'); | 86 | // MochiKit.Signal.connect(this.getId('button'), 'onmouseenter',this, 'handleOnMouseEnter'); |
79 | MochiKit.Signal.connect(this.getId('wrapper'), 'onmouseleave',this, 'handleOnMouseLeave'); | 87 | // MochiKit.Signal.connect(this.getId('button'), 'onmouseleave',this, 'handleOnMouseLeave'); |
80 | MochiKit.Signal.connect(this.getId('wrapper'), 'onmousedown',this, 'handleOnMouseDown'); | 88 | // MochiKit.Signal.connect(this.getId('button'), 'onmousedown',this, 'handleOnMouseDown'); |
81 | MochiKit.Signal.connect(this.getId('wrapper'), 'onclick', this, 'handleOnClick'); | 89 | MochiKit.Signal.connect(this.getId('button'), 'onclick', this, 'handleOnClick'); |
82 | }, | 90 | }, |
83 | 91 | ||
84 | //------------------------------------------------------------------------- | 92 | //------------------------------------------------------------------------- |
85 | 93 | /* | |
86 | 'handleOnMouseEnter': function (anEvent) { | 94 | 'handleOnMouseEnter': function (anEvent) { |
87 | MochiKit.DOM.addElementClass(this.getId('wrapper'), 'hover'); | 95 | MochiKit.DOM.addElementClass(this.getId('button'), 'hover'); |
88 | }, | 96 | }, |
89 | 97 | ||
90 | 'handleOnMouseLeave': function (anEvent) { | 98 | 'handleOnMouseLeave': function (anEvent) { |
91 | MochiKit.DOM.removeElementClass(this.getId('wrapper'), 'hover'); | 99 | MochiKit.DOM.removeElementClass(this.getId('button'), 'hover'); |
92 | MochiKit.DOM.removeElementClass(this.getId('wrapper'), 'clicked'); | 100 | MochiKit.DOM.removeElementClass(this.getId('button'), 'clicked'); |
93 | }, | 101 | }, |
94 | 102 | ||
95 | 'handleOnMouseDown': function (anEvent) { | 103 | 'handleOnMouseDown': function (anEvent) { |
96 | MochiKit.DOM.addElementClass(this.getId('wrapper'), 'clicked'); | 104 | MochiKit.DOM.addElementClass(this.getId('button'), 'clicked'); |
97 | }, | 105 | }, |
98 | 106 | */ | |
99 | 'handleOnClick': function (anEvent) { | 107 | 'handleOnClick': function (anEvent) { |
100 | MochiKit.Signal.signal(this, 'onclick', anEvent); | 108 | MochiKit.Signal.signal(this, 'onclick', anEvent); |
101 | }, | 109 | }, |
102 | 110 | ||
103 | //------------------------------------------------------------------------- | 111 | //------------------------------------------------------------------------- |
104 | __syntaxFix__: "syntax fix" | 112 | __syntaxFix__: "syntax fix" |
105 | }); | 113 | }); |
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js index 1992154..1d816a9 100644 --- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js +++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js | |||
@@ -1,279 +1,297 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); | 26 | Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); |
27 | 27 | ||
28 | Clipperz.PM.UI.Common.Components.SimpleMessagePanel = function(args) { | 28 | Clipperz.PM.UI.Common.Components.SimpleMessagePanel = function(args) { |
29 | args = args || {}; | 29 | args = args || {}; |
30 | 30 | ||
31 | Clipperz.PM.UI.Common.Components.SimpleMessagePanel.superclass.constructor.apply(this, arguments); | 31 | Clipperz.PM.UI.Common.Components.SimpleMessagePanel.superclass.constructor.apply(this, arguments); |
32 | 32 | ||
33 | this._title = args.title || Clipperz.Base.exception.raise('MandatoryParameter'); | 33 | this._title = args.title || Clipperz.Base.exception.raise('MandatoryParameter'); |
34 | this._text = args.text || Clipperz.Base.exception.raise('MandatoryParameter'); | 34 | this._text = args.text || Clipperz.Base.exception.raise('MandatoryParameter'); |
35 | this._type = args.type || Clipperz.Base.exception.raise('MandatoryParameter'); //ALERT, INFO, ERROR | 35 | this._type = args.type || Clipperz.Base.exception.raise('MandatoryParameter'); //ALERT, INFO, ERROR |
36 | this._buttons = args.buttons || Clipperz.Base.exception.raise('MandatoryParameter'); | 36 | this._buttons = args.buttons || Clipperz.Base.exception.raise('MandatoryParameter'); |
37 | 37 | ||
38 | this._buttonComponents = []; | 38 | this._buttonComponents = []; |
39 | this._deferred = null; | 39 | this._deferred = null; |
40 | 40 | ||
41 | this.renderModalMask(); | 41 | this.renderModalMask(); |
42 | 42 | ||
43 | return this; | 43 | return this; |
44 | } | 44 | } |
45 | 45 | ||
46 | //============================================================================= | 46 | //============================================================================= |
47 | 47 | ||
48 | Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.SimpleMessagePanel, Clipperz.PM.UI.Common.Components.BaseComponent, { | 48 | Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.SimpleMessagePanel, Clipperz.PM.UI.Common.Components.BaseComponent, { |
49 | 49 | ||
50 | //------------------------------------------------------------------------- | 50 | //------------------------------------------------------------------------- |
51 | 51 | ||
52 | 'toString': function () { | 52 | 'toString': function () { |
53 | return "Clipperz.PM.UI.Common.Components.SimpleMessagePanel component"; | 53 | return "Clipperz.PM.UI.Common.Components.SimpleMessagePanel component"; |
54 | }, | 54 | }, |
55 | 55 | ||
56 | //------------------------------------------------------------------------- | 56 | //------------------------------------------------------------------------- |
57 | 57 | ||
58 | 'deferred': function() { | 58 | 'deferred': function() { |
59 | if (this._deferred == null) { | 59 | if (this._deferred == null) { |
60 | this._deferred = new Clipperz.Async.Deferred("SimpleMessagePanel.deferred", {trace:false}); | 60 | this._deferred = new Clipperz.Async.Deferred("SimpleMessagePanel.deferred", {trace:false}); |
61 | } | 61 | } |
62 | 62 | ||
63 | return this._deferred; | 63 | return this._deferred; |
64 | }, | 64 | }, |
65 | 65 | ||
66 | //------------------------------------------------------------------------- | 66 | //------------------------------------------------------------------------- |
67 | 67 | ||
68 | 'title': function () { | 68 | 'title': function () { |
69 | return this._title; | 69 | return this._title; |
70 | }, | 70 | }, |
71 | 71 | ||
72 | 'setTitle': function (aValue) { | 72 | 'setTitle': function (aValue) { |
73 | this._title = aValue; | 73 | this._title = aValue; |
74 | 74 | ||
75 | if (this.getElement('title') != null) { | 75 | if (this.getElement('title') != null) { |
76 | this.getElement('title').innerHTML = aValue; | 76 | this.getElement('title').innerHTML = aValue; |
77 | } | 77 | } |
78 | }, | 78 | }, |
79 | 79 | ||
80 | //------------------------------------------------------------------------- | 80 | //------------------------------------------------------------------------- |
81 | 81 | ||
82 | 'text': function () { | 82 | 'text': function () { |
83 | return this._text; | 83 | return this._text; |
84 | }, | 84 | }, |
85 | 85 | ||
86 | 'setText': function (aValue) { | 86 | 'setText': function (aValue) { |
87 | this._text = aValue; | 87 | this._text = aValue; |
88 | 88 | ||
89 | if (this.getElement('text') != null) { | 89 | if (this.getElement('text') != null) { |
90 | this.getElement('text').innerHTML = aValue; | 90 | this.getElement('text').innerHTML = aValue; |
91 | } | 91 | } |
92 | }, | 92 | }, |
93 | 93 | ||
94 | //------------------------------------------------------------------------- | 94 | //------------------------------------------------------------------------- |
95 | 95 | ||
96 | 'type': function () { | 96 | 'type': function () { |
97 | return this._type; | 97 | return this._type; |
98 | }, | 98 | }, |
99 | 99 | ||
100 | 'setType': function (aValue) { | 100 | 'setType': function (aValue) { |
101 | if (this.getElement('icon') != null) { | 101 | // if (this.getElement('icon') != null) { |
102 | MochiKit.DOM.removeElementClass(this.getId('icon'), this._type); | 102 | // MochiKit.DOM.removeElementClass(this.getId('icon'), this._type); |
103 | MochiKit.DOM.addElementClass(this.getId('icon'), aValue); | 103 | // MochiKit.DOM.addElementClass(this.getId('icon'), aValue); |
104 | } | 104 | // } |
105 | 105 | ||
106 | this._type = aValue; | 106 | this._type = aValue; |
107 | }, | 107 | }, |
108 | 108 | ||
109 | 'icon': function () { | ||
110 | var type = this.type(); | ||
111 | var result; | ||
112 | |||
113 | if (type == 'ALERT') { | ||
114 | result = '!'; | ||
115 | } else if (type == 'INFO') { | ||
116 | result = 'i'; | ||
117 | } else if (type == 'ERROR') { | ||
118 | result = '!'; | ||
119 | } | ||
120 | |||
121 | return result; | ||
122 | }, | ||
123 | |||
109 | //------------------------------------------------------------------------- | 124 | //------------------------------------------------------------------------- |
110 | 125 | ||
111 | 'buttons': function () { | 126 | 'buttons': function () { |
112 | return this._buttons; | 127 | return this._buttons; |
113 | }, | 128 | }, |
114 | 129 | ||
115 | 'setButtons': function (someValues) { | 130 | 'setButtons': function (someValues) { |
116 | MochiKit.Iter.forEach(this.buttonComponents(), MochiKit.Base.methodcaller('clear')); | 131 | MochiKit.Iter.forEach(this.buttonComponents(), MochiKit.Base.methodcaller('clear')); |
117 | 132 | ||
118 | this._buttons = someValues; | 133 | this._buttons = someValues; |
119 | 134 | ||
120 | if (this.getElement('buttonArea') != null) { | 135 | if (this.getElement('buttonArea') != null) { |
121 | this.renderButtons(); | 136 | this.renderButtons(); |
122 | } | 137 | } |
123 | }, | 138 | }, |
124 | 139 | ||
125 | //......................................................................... | 140 | //......................................................................... |
126 | 141 | ||
127 | 'buttonComponents': function () { | 142 | 'buttonComponents': function () { |
128 | return this._buttonComponents; | 143 | return this._buttonComponents; |
129 | }, | 144 | }, |
130 | 145 | ||
131 | //------------------------------------------------------------------------- | 146 | //------------------------------------------------------------------------- |
132 | 147 | ||
133 | 'renderSelf': function() { | 148 | 'renderSelf': function() { |
134 | this.append(this.element(), {tag:'div', cls:'SimpleMessagePanel', id:this.getId('panel'), children: [ | 149 | this.append(this.element(), {tag:'div', cls:'SimpleMessagePanel', id:this.getId('panel'), children: [ |
135 | {tag:'div', cls:'header', children:[]}, | 150 | // {tag:'div', cls:'header', children:[]}, |
136 | {tag:'div', cls:'body', children:[ | 151 | {tag:'div', cls:'body', children:[ |
137 | {tag:'div', id:this.getId('icon'),cls:'img ' + this.type(), children:[{tag:'div'}]}, | 152 | // {tag:'div', id:this.getId('icon'),cls:'img ' + this.type(), children:[{tag:'div'}]}, |
153 | {tag:'div', /*id:this.getId('icon'),*/cls:'img ' + this.type(), children:[{tag:'canvas', id:this.getId('icon')}]}, | ||
138 | {tag:'h3', id:this.getId('title'),html:this.title()}, | 154 | {tag:'h3', id:this.getId('title'),html:this.title()}, |
139 | {tag:'p', id:this.getId('text'),html:this.text()}, | 155 | {tag:'p', id:this.getId('text'),html:this.text()}, |
140 | {tag:'div', id:this.getId('container')}, | 156 | {tag:'div', id:this.getId('container')}, |
141 | {tag:'div', id:this.getId('buttonArea'), cls:'buttonArea', children:[]} | 157 | {tag:'div', id:this.getId('buttonArea'), cls:'buttonArea', children:[]} |
142 | ]}, | 158 | ]} |
143 | {tag:'div', cls:'footer', children:[]} | 159 | // {tag:'div', cls:'footer', children:[]} |
144 | ]}); | 160 | ]}); |
145 | 161 | ||
162 | Clipperz.PM.UI.Canvas.marks[this.icon()](this.getElement('icon'), "#ffffff"); | ||
163 | |||
146 | MochiKit.Signal.connect(this.getId('panel'), 'onkeydown', this, 'keyDownHandler'); | 164 | MochiKit.Signal.connect(this.getId('panel'), 'onkeydown', this, 'keyDownHandler'); |
147 | 165 | ||
148 | this.renderButtons(); | 166 | this.renderButtons(); |
149 | }, | 167 | }, |
150 | 168 | ||
151 | //------------------------------------------------------------------------- | 169 | //------------------------------------------------------------------------- |
152 | 170 | ||
153 | 'renderButtons': function () { | 171 | 'renderButtons': function () { |
154 | this.getElement('buttonArea').innerHTML = ''; | 172 | this.getElement('buttonArea').innerHTML = ''; |
155 | 173 | ||
156 | MochiKit.Base.map(MochiKit.Base.bind(function (aButton) { | 174 | MochiKit.Base.map(MochiKit.Base.bind(function (aButton) { |
157 | var buttonElement; | 175 | var buttonElement; |
158 | var buttonComponent; | 176 | var buttonComponent; |
159 | 177 | ||
160 | // element = this.append(this.getElement('buttonArea'), {tag:'div', cls:'button' + (aButton['isDefault'] === true ? ' default' : ''), children:[ | 178 | // element = this.append(this.getElement('buttonArea'), {tag:'div', cls:'button' + (aButton['isDefault'] === true ? ' default' : ''), children:[ |
161 | // {tag:'a', href:'#'/*, id:this.getId('buttonLink')*/, html:aButton['text']} | 179 | // {tag:'a', href:'#'/*, id:this.getId('buttonLink')*/, html:aButton['text']} |
162 | // ]}); | 180 | // ]}); |
163 | 181 | ||
164 | buttonElement = this.append(this.getElement('buttonArea'), {tag:'div'}); | 182 | buttonElement = this.append(this.getElement('buttonArea'), {tag:'div'}); |
165 | buttonComponent = new Clipperz.PM.UI.Common.Components.Button({'element':buttonElement, 'text':aButton['text'], 'isDefault':aButton['isDefault']}); | 183 | buttonComponent = new Clipperz.PM.UI.Common.Components.Button({'element':buttonElement, 'text':aButton['text'], 'isDefault':aButton['isDefault']}); |
166 | this.buttonComponents().push(buttonComponent); | 184 | this.buttonComponents().push(buttonComponent); |
167 | 185 | ||
168 | MochiKit.Signal.connect(buttonComponent, 'onclick', MochiKit.Base.method(this, 'buttonEventHandler', aButton)); | 186 | MochiKit.Signal.connect(buttonComponent, 'onclick', MochiKit.Base.method(this, 'buttonEventHandler', aButton)); |
169 | }, this), MochiKit.Iter.reversed(this.buttons())); | 187 | }, this), MochiKit.Iter.reversed(this.buttons())); |
170 | }, | 188 | }, |
171 | 189 | ||
172 | //------------------------------------------------------------------------- | 190 | //------------------------------------------------------------------------- |
173 | 191 | ||
174 | 'displayElement': function() { | 192 | 'displayElement': function() { |
175 | return this.getElement('panel'); | 193 | return this.getElement('panel'); |
176 | }, | 194 | }, |
177 | 195 | ||
178 | //------------------------------------------------------------------------- | 196 | //------------------------------------------------------------------------- |
179 | 197 | ||
180 | 'closeOk': function () { | 198 | 'closeOk': function () { |
181 | this.deferred().callback(); | 199 | this.deferred().callback(); |
182 | this._deferred = null; | 200 | this._deferred = null; |
183 | }, | 201 | }, |
184 | 202 | ||
185 | 'closeCancel': function () { | 203 | 'closeCancel': function () { |
186 | this.deferred().cancel(); | 204 | this.deferred().cancel(); |
187 | this._deferred = null; | 205 | this._deferred = null; |
188 | }, | 206 | }, |
189 | 207 | ||
190 | 'closeError': function () { | 208 | 'closeError': function () { |
191 | this.deferred().errback(); | 209 | this.deferred().errback(); |
192 | this._deferred = null; | 210 | this._deferred = null; |
193 | }, | 211 | }, |
194 | 212 | ||
195 | //------------------------------------------------------------------------- | 213 | //------------------------------------------------------------------------- |
196 | 214 | ||
197 | 'buttonEventHandler': function(aButton, anEvent) { | 215 | 'buttonEventHandler': function(aButton, anEvent) { |
198 | anEvent.preventDefault(); | 216 | anEvent.preventDefault(); |
199 | 217 | ||
200 | // MochiKit.Signal.signal(this, 'cancelEvent'); | 218 | // MochiKit.Signal.signal(this, 'cancelEvent'); |
201 | switch (aButton['result']) { | 219 | switch (aButton['result']) { |
202 | case 'OK': | 220 | case 'OK': |
203 | //console.log("==> OK"); | 221 | //console.log("==> OK"); |
204 | this.closeOk(); | 222 | this.closeOk(); |
205 | break; | 223 | break; |
206 | case 'CANCEL': | 224 | case 'CANCEL': |
207 | //console.log("==> CANCEL"); | 225 | //console.log("==> CANCEL"); |
208 | this.closeCancel(); | 226 | this.closeCancel(); |
209 | break; | 227 | break; |
210 | default: | 228 | default: |
211 | //console.log("==> ????"); | 229 | //console.log("==> ????"); |
212 | this.closeError(); | 230 | this.closeError(); |
213 | break; | 231 | break; |
214 | } | 232 | } |
215 | //console.log("<=="); | 233 | //console.log("<=="); |
216 | }, | 234 | }, |
217 | 235 | ||
218 | //------------------------------------------------------------------------- | 236 | //------------------------------------------------------------------------- |
219 | 237 | ||
220 | 'deferredShow': function (someArgs, aResult) { | 238 | 'deferredShow': function (someArgs, aResult) { |
221 | this.deferredShowModal(someArgs); | 239 | this.deferredShowModal(someArgs); |
222 | 240 | ||
223 | this.deferred().addMethod(this, 'deferredHideModal', {closeToElement:someArgs.onOkCloseToElement }); | 241 | this.deferred().addMethod(this, 'deferredHideModal', {closeToElement:someArgs.onOkCloseToElement }); |
224 | this.deferred().addErrback (MochiKit.Base.method(this, 'deferredHideModal', {closeToElement:someArgs.onCancelCloseToElement })); | 242 | this.deferred().addErrback (MochiKit.Base.method(this, 'deferredHideModal', {closeToElement:someArgs.onCancelCloseToElement })); |
225 | this.deferred().addCallback(MochiKit.Async.succeed, aResult); | 243 | this.deferred().addCallback(MochiKit.Async.succeed, aResult); |
226 | 244 | ||
227 | return this.deferred(); | 245 | return this.deferred(); |
228 | }, | 246 | }, |
229 | 247 | ||
230 | //------------------------------------------------------------------------- | 248 | //------------------------------------------------------------------------- |
231 | 249 | ||
232 | 'modalDialogMask': function () { | 250 | 'modalDialogMask': function () { |
233 | return this.getId('modalDialogMask'); | 251 | return this.getId('modalDialogMask'); |
234 | }, | 252 | }, |
235 | 253 | ||
236 | 'modalDialog': function () { | 254 | 'modalDialog': function () { |
237 | return this.getId('modalDialog'); | 255 | return this.getId('modalDialog'); |
238 | }, | 256 | }, |
239 | 257 | ||
240 | 'modalDialogFrame': function() { | 258 | 'modalDialogFrame': function() { |
241 | return this.getId('modalDialogFrame'); | 259 | return this.getId('modalDialogFrame'); |
242 | }, | 260 | }, |
243 | 261 | ||
244 | //------------------------------------------------------------------------- | 262 | //------------------------------------------------------------------------- |
245 | 263 | ||
246 | 'renderModalMask': function () { | 264 | 'renderModalMask': function () { |
247 | Clipperz.DOM.Helper.append(MochiKit.DOM.currentDocument().body, | 265 | Clipperz.DOM.Helper.append(MochiKit.DOM.currentDocument().body, |
248 | {tag:'div', id:this.getId('modalDialogWrapper'), cls:'modalDialogWrapper simpleMessagePanelMask', children:[ | 266 | {tag:'div', id:this.getId('modalDialogWrapper'), cls:'modalDialogWrapper simpleMessagePanelMask', children:[ |
249 | {tag:'div', id:this.getId('modalDialogMask'), cls:'modalDialogMask simpleMessagePanelMask'}, | 267 | {tag:'div', id:this.getId('modalDialogMask'), cls:'modalDialogMask simpleMessagePanelMask'}, |
250 | {tag:'div', id:this.getId('modalDialogFrame'), cls:'modalDialogFrame simpleMessagePanelMask'}, | 268 | {tag:'div', id:this.getId('modalDialogFrame'), cls:'modalDialogFrame simpleMessagePanelMask'}, |
251 | {tag:'div', id:this.getId('modalDialog'), cls:'modalDialog simpleMessagePanelMask'} | 269 | {tag:'div', id:this.getId('modalDialog'), cls:'modalDialog simpleMessagePanelMask'} |
252 | ]} | 270 | ]} |
253 | ); | 271 | ); |
254 | 272 | ||
255 | MochiKit.Style.hideElement(this.getId('modalDialogMask')); | 273 | MochiKit.Style.hideElement(this.getId('modalDialogMask')); |
256 | MochiKit.Style.hideElement(this.getId('modalDialogFrame')); | 274 | MochiKit.Style.hideElement(this.getId('modalDialogFrame')); |
257 | }, | 275 | }, |
258 | 276 | ||
259 | //------------------------------------------------------------------------- | 277 | //------------------------------------------------------------------------- |
260 | 278 | ||
261 | 'keyDownHandler': function (anEvent) { | 279 | 'keyDownHandler': function (anEvent) { |
262 | if (anEvent.key().string == 'KEY_ENTER') { | 280 | if (anEvent.key().string == 'KEY_ENTER') { |
263 | anEvent.preventDefault(); | 281 | anEvent.preventDefault(); |
264 | //console.log("13 - RETURN ?", this); | 282 | //console.log("13 - RETURN ?", this); |
265 | this.closeOk(); | 283 | this.closeOk(); |
266 | //console.log('<<< 13') | 284 | //console.log('<<< 13') |
267 | } | 285 | } |
268 | 286 | ||
269 | if (anEvent.key().string == 'KEY_ESCAPE') { | 287 | if (anEvent.key().string == 'KEY_ESCAPE') { |
270 | anEvent.preventDefault(); | 288 | anEvent.preventDefault(); |
271 | //console.log("27 - ESC ?", this); | 289 | //console.log("27 - ESC ?", this); |
272 | this.closeCancel(); | 290 | this.closeCancel(); |
273 | //console.log("<<< 27"); | 291 | //console.log("<<< 27"); |
274 | } | 292 | } |
275 | }, | 293 | }, |
276 | 294 | ||
277 | //------------------------------------------------------------------------- | 295 | //------------------------------------------------------------------------- |
278 | __syntaxFix__: "syntax fix" | 296 | __syntaxFix__: "syntax fix" |
279 | }); | 297 | }); |
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Mobile/Components/CardDetail.js b/frontend/gamma/js/Clipperz/PM/UI/Mobile/Components/CardDetail.js new file mode 100644 index 0000000..32dfa63 --- a/dev/null +++ b/frontend/gamma/js/Clipperz/PM/UI/Mobile/Components/CardDetail.js | |||
@@ -0,0 +1,299 @@ | |||
1 | /* | ||
2 | |||
3 | Copyright 2008-2011 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz Community Edition. | ||
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | ||
8 | refer to http://www.clipperz.com. | ||
9 | |||
10 | * Clipperz Community Edition is free software: you can redistribute | ||
11 | it and/or modify it under the terms of the GNU Affero General Public | ||
12 | License as published by the Free Software Foundation, either version | ||
13 | 3 of the License, or (at your option) any later version. | ||
14 | |||
15 | * Clipperz Community Edition is distributed in the hope that it will | ||
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | ||
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
18 | See the GNU Affero General Public License for more details. | ||
19 | |||
20 | * You should have received a copy of the GNU Affero General Public | ||
21 | License along with Clipperz Community Edition. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | |||
24 | */ | ||
25 | |||
26 | Clipperz.Base.module('Clipperz.PM.UI.Mobile.Components'); | ||
27 | |||
28 | Clipperz.PM.UI.Mobile.Components.CardDetail = function(args) { | ||
29 | args = args || {}; | ||
30 | |||
31 | Clipperz.PM.UI.Mobile.Components.CardDetail.superclass.constructor.apply(this, arguments); | ||
32 | |||
33 | //this._cardReference = null; | ||
34 | |||
35 | return this; | ||
36 | } | ||
37 | |||
38 | //============================================================================= | ||
39 | |||
40 | Clipperz.Base.extend(Clipperz.PM.UI.Mobile.Components.CardDetail, Clipperz.PM.UI.Common.Components.BaseComponent, { | ||
41 | |||
42 | //------------------------------------------------------------------------- | ||
43 | |||
44 | 'toString': function () { | ||
45 | return "Clipperz.PM.UI.Mobile.Components.CardDetail component"; | ||
46 | }, | ||
47 | |||
48 | //------------------------------------------------------------------------- | ||
49 | /* | ||
50 | 'cardReference': function () { | ||
51 | return this._cardReference; | ||
52 | }, | ||
53 | |||
54 | 'setCardReference': function (aValue) { | ||
55 | this._cardReference = aValue; | ||
56 | }, | ||
57 | */ | ||
58 | //------------------------------------------------------------------------- | ||
59 | |||
60 | 'renderSelf': function () { | ||
61 | console.log("CardDetail.renderSelf"); | ||
62 | this.append(this.element(), {tag:'div', cls:'cardDetail', children:[ | ||
63 | {tag:'div', cls:'toolbar', children:[ | ||
64 | {tag:'a', href:'#', cls:'back', html:"List"}, | ||
65 | {tag:'h1', id:this.getId('cardTitle'), html:"…"} | ||
66 | ]}, | ||
67 | {tag:'div', cls:'scroll', id:this.getId('cardDetails'), children:[ | ||
68 | ]} | ||
69 | ]}); | ||
70 | }, | ||
71 | /* | ||
72 | 'renderSelf': function() { | ||
73 | this.append(this.element(), [ | ||
74 | {tag:'div', cls:'cardDetail', id:this.getId('cardDetail'), children:[ | ||
75 | {tag:'div', id:this.getId('progressBar')} //, | ||
76 | ]} | ||
77 | ]); | ||
78 | |||
79 | this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')})); | ||
80 | MochiKit.Signal.signal(Clipperz.PM.UI.Common.Controllers.ProgressBarController.defaultController, 'updateProgress', 0); | ||
81 | }, | ||
82 | */ | ||
83 | |||
84 | 'setTitle': function (aValue) { | ||
85 | this.getElement('cardTitle').innerHTML = aValue; | ||
86 | }, | ||
87 | |||
88 | 'fieldListElement': function () { | ||
89 | varresult; | ||
90 | |||
91 | result = this.getElement('fieldList'); | ||
92 | if (result == null) { | ||
93 | result = this.append(this.getElement('cardDetails'), {tag:'ul', cls:'rounded', id:this.getId('fieldList')}); | ||
94 | } | ||
95 | |||
96 | return result; | ||
97 | }, | ||
98 | |||
99 | 'renderFieldValues': function (someFieldValues) { | ||
100 | varfieldClass; | ||
101 | |||
102 | if ((someFieldValues['actionType'] != 'NONE') || (someFieldValues['label'] != '') && (someFieldValues['value'] != '')) { | ||
103 | if (someFieldValues['isHidden'] == true) { | ||
104 | fieldClass = 'password'; | ||
105 | } else { | ||
106 | fieldClass = ''; | ||
107 | } | ||
108 | |||
109 | this.append(this.fieldListElement(), {tag:'li', cls:'cardField', children:[ | ||
110 | {tag:'a', href:'#', cls:fieldClass, html:someFieldValues['value'], children:[ | ||
111 | {tag:'small', cls:'label', html:someFieldValues['label']} | ||
112 | ]} | ||
113 | ]}) | ||
114 | } | ||
115 | }, | ||
116 | |||
117 | 'addField': function (aField) { | ||
118 | var deferredResult; | ||
119 | varfieldValues; | ||
120 | |||
121 | fieldValues = {}; | ||
122 | deferredResult = new Clipperz.Async.Deferred("CardDetail.addField", {trace:false}); | ||
123 | deferredResult.addMethod(aField, 'label'); | ||
124 | deferredResult.addCallback(function (aValue) { fieldValues['label'] = aValue; }); | ||
125 | deferredResult.addMethod(aField, 'value'); | ||
126 | deferredResult.addCallback(function (aValue) { fieldValues['value'] = aValue; }); | ||
127 | deferredResult.addMethod(aField, 'actionType'); | ||
128 | deferredResult.addCallback(function (aValue) { fieldValues['actionType'] = aValue; }); | ||
129 | deferredResult.addMethod(aField, 'isHidden'); | ||
130 | deferredResult.addCallback(function (aValue) { fieldValues['isHidden'] = aValue; }); | ||
131 | deferredResult.addMethod(this, 'renderFieldValues', fieldValues); | ||
132 | deferredResult.callback(); | ||
133 | |||
134 | return deferredResult; | ||
135 | }, | ||
136 | |||
137 | //------------------------------------------------------------------------- | ||
138 | |||
139 | 'directLoginElement': function () { | ||
140 | varresult; | ||
141 | |||
142 | result = this.getElement('directLoginList'); | ||
143 | if (result == null) { | ||
144 | this.append(this.getElement('cardDetails'), {tag:'h2', html:"Direct login"}); | ||
145 | result = this.append(this.getElement('cardDetails'), {tag:'ul', cls:'rounded', id:this.getId('directLoginList')}); | ||
146 | } | ||
147 | |||
148 | return result; | ||
149 | }, | ||
150 | |||
151 | 'addDirectLogin': function (aDirectLogin) { | ||
152 | this.append(this.directLoginElement(), {tag:'li', cls:'directLogin forward', children:[ | ||
153 | {tag:'a', href:'#', html:"direct login", children:[ | ||
154 | {tag:'small', cls:'favicon', children:[{tag:'img', cls:'favicon', src:'http://www.clipperz.com/favicon.ico'}]} | ||
155 | ]} | ||
156 | ]}) | ||
157 | |||
158 | console.log("ADD DIRECT LOGIN", aDirectLogin); | ||
159 | }, | ||
160 | |||
161 | //========================================================================= | ||
162 | |||
163 | 'showCard': function (aCard) { | ||
164 | var deferredResult; | ||
165 | |||
166 | // this.render(); | ||
167 | |||
168 | console.log("CardDetail.showCard", aCard); | ||
169 | deferredResult = new Clipperz.Async.Deferred("CardDetail.showCard", {trace:false}); | ||
170 | deferredResult.addMethod(aCard, 'label'); | ||
171 | deferredResult.addMethod(this, 'setTitle'); | ||
172 | |||
173 | deferredResult.addMethod(aCard, 'fields'); | ||
174 | deferredResult.addCallback(MochiKit.Base.values); | ||
175 | deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.method(this, 'addField')); | ||
176 | |||
177 | deferredResult.addMethod(aCard, 'directLogins'); | ||
178 | deferredResult.addCallback(MochiKit.Base.values); | ||
179 | deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.method(this, 'addDirectLogin')); | ||
180 | |||
181 | |||
182 | deferredResult.callback(); | ||
183 | |||
184 | return deferredResult; | ||
185 | // return Clipperz.Async.callbacks("CardDialogController.updateComponentState", [ | ||
186 | // MochiKit.Base.method(this.record(), 'hasPendingChanges'), | ||
187 | // MochiKit.Base.method(this.cardDialogComponent(), 'setShouldEnableSaving'), | ||
188 | // | ||
189 | // MochiKit.Base.method(this.record(), 'label'), | ||
190 | // MochiKit.Base.method(this.cardDialogComponent(), 'setTitle'), | ||
191 | // MochiKit.Base.method(this.record(), 'notes'), | ||
192 | // MochiKit.Base.method(this.cardDialogComponent(), 'setNotes'), | ||
193 | // | ||
194 | // MochiKit.Base.method(this.record(), 'fields'), | ||
195 | // MochiKit.Base.values, | ||
196 | // MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.method(this, 'addCardDialogComponentWithField')), | ||
197 | // | ||
198 | // MochiKit.Base.method(this.record(), 'directLogins'), | ||
199 | // MochiKit.Base.values, | ||
200 | // MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.method(this, 'addCardDialogComponentWithDirectLogin')), | ||
201 | // | ||
202 | // MochiKit.Base.method(this.cardDialogComponent(), 'resetNewFieldInputs'), | ||
203 | // MochiKit.Base.noop | ||
204 | // ], {trace:false}); | ||
205 | |||
206 | }, | ||
207 | |||
208 | //========================================================================= | ||
209 | |||
210 | 'showCardDetails': function (someData) { | ||
211 | this.element().innerHTML = ''; | ||
212 | this.append(this.element(), [ | ||
213 | {tag:'fieldset', id:this.getId('fields'), children:MochiKit.Base.map(function (aFieldData) { | ||
214 | return {tag:'div', cls:'row', children:[ | ||
215 | {tag:'label', html:aFieldData['label']}, | ||
216 | // {tag:'span', cls:('fieldValue ' + (aFieldData['isHidden']? 'password' : 'text')), html:aFieldData['value']} | ||
217 | {tag:'div', cls:('fieldValue ' + (aFieldData['isHidden']? 'password' : 'text')), children:[ | ||
218 | {tag:'div', children:[{tag:'p', html:aFieldData['value']}]} | ||
219 | ]} | ||
220 | // {tag:'input', type:'text', cls:('fieldValue ' + (aFieldData['isHidden']? 'password' : 'text')), value:aFieldData['value'], disabled:true} | ||
221 | |||
222 | ]} | ||
223 | }, someData['fields'])} | ||
224 | ]); | ||
225 | |||
226 | MochiKit.Iter.forEach(MochiKit.Selector.findChildElements(this.element(), ['span.password']), MochiKit.Base.bind(function (aPasswordElement) { | ||
227 | MochiKit.Signal.connect(aPasswordElement, 'onclick', function (anEvent) { alert(MochiKit.DOM.scrapeText(anEvent.src())); }) | ||
228 | }, this)); | ||
229 | |||
230 | if (someData['directLogins'].length > 0) { | ||
231 | this.append(this.element(), [ | ||
232 | {tag:'h2', html:"Direct logins"}, | ||
233 | {tag:'fieldset', id:this.getId('directLogins'), children:MochiKit.Base.map(function (aDirectLoginData) { | ||
234 | return {tag:'div', cls:'row', id:('directLogin_' + aDirectLoginData['_reference']), children:[ | ||
235 | {tag:'img', cls:'favicon', src:aDirectLoginData['favicon']}, | ||
236 | // {tag:'input', cls:'directLogin', disabled:'disabled', type:'text', name:aDirectLoginData['label'], value:aDirectLoginData['label']} | ||
237 | {tag:'span', cls:'directLogin', html:aDirectLoginData['label']} | ||
238 | ]} | ||
239 | }, someData['directLogins'])} | ||
240 | ]); | ||
241 | |||
242 | MochiKit.Base.map(MochiKit.Base.bind(function (aRowNode) { | ||
243 | MochiKit.Signal.connect(aRowNode, 'onclick', this, 'directLoginClickHandler'); | ||
244 | }, this), | ||
245 | MochiKit.Selector.findChildElements(this.getElement('directLogins'), ['div.row']) | ||
246 | ) | ||
247 | }; | ||
248 | |||
249 | if (someData['notes'] != '') { | ||
250 | this.append(this.element(), [ | ||
251 | {tag:'h2', html:"Notes"}, | ||
252 | {tag:'fieldset', id:this.getId('fieldset'), children:[ | ||
253 | {tag:'div', cls:'row notes', children:[ | ||
254 | {tag:'span', html:someData['notes']} | ||
255 | ]} | ||
256 | ]} | ||
257 | ]); | ||
258 | }; | ||
259 | |||
260 | return true; | ||
261 | }, | ||
262 | |||
263 | //------------------------------------------------------------------------- | ||
264 | /* | ||
265 | 'toggleClickHandler': function (anEvent) { | ||
266 | varnextState; | ||
267 | varfieldValue; | ||
268 | |||
269 | //console.log("TOGGLE"); | ||
270 | anEvent.preventDefault; | ||
271 | fieldValue = MochiKit.Selector.findChildElements(anEvent.src().parentNode.parentNode, ['span.password'])[0]; | ||
272 | |||
273 | nextState = (MochiKit.DOM.getNodeAttribute(anEvent.src(), 'toggled') != 'true'); | ||
274 | if (nextState) { | ||
275 | MochiKit.DOM.removeElementClass(fieldValue, 'clear'); | ||
276 | } else { | ||
277 | MochiKit.DOM.addElementClass(fieldValue, 'clear'); | ||
278 | } | ||
279 | |||
280 | MochiKit.DOM.setNodeAttribute(anEvent.src(), 'toggled', nextState); | ||
281 | }, | ||
282 | * / | ||
283 | //========================================================================= | ||
284 | /* | ||
285 | 'directLoginClickHandler': function (anEvent) { | ||
286 | anEvent.preventDefault(); | ||
287 | |||
288 | if (/(directLogin_)/.test(anEvent.src().id)) { | ||
289 | var directLoginReference; | ||
290 | |||
291 | directLoginReference = anEvent.src().id.match(/(directLogin_)(.*)/)[2]; | ||
292 | MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'selectedDirectLogin', {cardReference:this.cardReference(), directLoginReference:directLoginReference}); | ||
293 | } | ||
294 | }, | ||
295 | */ | ||
296 | //========================================================================= | ||
297 | |||
298 | __syntaxFix__: "syntax fix" | ||
299 | }); | ||
diff --git a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardList.js b/frontend/gamma/js/Clipperz/PM/UI/Mobile/Components/CardList.js index c3f2701..a4aa212 100644 --- a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardList.js +++ b/frontend/gamma/js/Clipperz/PM/UI/Mobile/Components/CardList.js | |||
@@ -1,201 +1,254 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | Clipperz.Base.module('Clipperz.PM.UI.iPhone.Components'); | 26 | Clipperz.Base.module('Clipperz.PM.UI.Mobile.Components'); |
27 | 27 | ||
28 | Clipperz.PM.UI.iPhone.Components.CardList = function(args) { | 28 | Clipperz.PM.UI.Mobile.Components.CardList = function(args) { |
29 | args = args || {}; | 29 | args = args || {}; |
30 | 30 | ||
31 | Clipperz.PM.UI.iPhone.Components.CardList.superclass.constructor.apply(this, arguments); | 31 | Clipperz.PM.UI.Mobile.Components.CardList.superclass.constructor.apply(this, arguments); |
32 | 32 | ||
33 | this._cardDetail = null; | 33 | this._cardDetail = null; |
34 | 34 | ||
35 | return this; | 35 | return this; |
36 | } | 36 | } |
37 | 37 | ||
38 | //============================================================================= | 38 | //============================================================================= |
39 | 39 | ||
40 | Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.CardList, Clipperz.PM.UI.Common.Components.BaseComponent, { | 40 | Clipperz.Base.extend(Clipperz.PM.UI.Mobile.Components.CardList, Clipperz.PM.UI.Common.Components.BaseComponent, { |
41 | 41 | ||
42 | //------------------------------------------------------------------------- | 42 | //------------------------------------------------------------------------- |
43 | 43 | ||
44 | 'toString': function () { | 44 | 'toString': function () { |
45 | return "Clipperz.PM.UI.iPhone.Components.CardList component"; | 45 | return "Clipperz.PM.UI.Mobile.Components.CardList component"; |
46 | }, | 46 | }, |
47 | 47 | ||
48 | //------------------------------------------------------------------------- | 48 | //------------------------------------------------------------------------- |
49 | 49 | ||
50 | 'renderSelf': function(/*aContainer, aPosition*/) { | 50 | 'renderSelf': function () { |
51 | this.append(this.element(), [ | 51 | this.append(this.element(), {tag:'div', cls:'cardList', children:[ |
52 | {tag:'div', cls:'toolbar', id:'toolbar', children:[ | 52 | {tag:'div', cls:'toolbar', children:[ |
53 | {tag:'h1', id:'pageTitle', html:"cards"}, | 53 | {tag:'h1', html:"clipperz"}, |
54 | {tag:'a', id:'backButton', cls:'button', href:'#', html:"cards"} | 54 | // {tag:'input', name:'search', type:'search', autocomplete:'off', placeholder:"search", id:this.getId('search')}, |
55 | {tag:'a', href:'#', id:'settings', cls:'button', html:"*"} | ||
55 | ]}, | 56 | ]}, |
56 | {tag:'div', cls:'cardList', id:this.getId('cardList'), children:[ | 57 | {tag:'div', cls:'scroll', id:this.getId('listBox'), children:[ |
57 | {tag:'form', title:'search', cls:'panel cardListSearchForm', id:this.getId('cardListSearchForm'), children:[ | 58 | {tag:'ul', cls:'rounded', id:this.getId('list'), children:[ |
58 | {tag:'input', type:'search', name:'search', value:"", placeholder:"search", id:this.getId('searchField')} | 59 | {tag:'li', html:'loading'} |
59 | ]}, | 60 | ]} |
60 | {tag:'ul', cls:'panel cardListPanel', id:this.getId('cardListPanel'), children:[]} | 61 | ]} |
61 | ]}, | 62 | ]}); |
62 | {tag:'div', cls:'panel cardDetailPanel', id:this.getId('cardDetail')} | 63 | |
63 | ]); | 64 | MochiKit.Signal.connect(this.getElement('list'), 'onclick', this, 'cardSelectionHandler'); |
64 | 65 | MochiKit.Signal.connect(this.getElement('list'), 'ontouchstart',this, 'cardSelectionHandler'); | |
65 | MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onsubmit', this,'searchHandler'); | 66 | // MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onsubmit', this,'searchHandler'); |
66 | MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onkeydown', this,'searchHandler'); | 67 | // MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onkeydown', this,'searchHandler'); |
67 | MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onkeyup', this,'searchHandler'); | 68 | // MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onkeyup', this,'searchHandler'); |
68 | 69 | ||
69 | MochiKit.Signal.connect(this.getElement('cardListPanel'), 'onclick', this,'cardListClickHandler'); | 70 | // MochiKit.Signal.connect(this.getElement('cardListPanel'), 'onclick', this,'cardListClickHandler'); |
70 | MochiKit.Signal.connect('backButton', 'onclick', this,'backButtonClickHandler'); | 71 | // MochiKit.Signal.connect('backButton', 'onclick', this,'backButtonClickHandler'); |
71 | 72 | ||
72 | MochiKit.Style.hideElement('backButton'); | 73 | // MochiKit.Style.hideElement('backButton'); |
73 | MochiKit.Style.hideElement(this.getElement('cardDetail')); | 74 | // MochiKit.Style.hideElement(this.getElement('cardDetail')); |
74 | }, | 75 | }, |
75 | 76 | ||
76 | //------------------------------------------------------------------------- | 77 | 'showCards': function (someCards) { |
78 | varcardListElement; | ||
79 | if (this.isFullyRendered() == false) { | ||
80 | this.render(); | ||
81 | }; | ||
82 | |||
83 | cardListElement = this.getElement('list') | ||
84 | |||
85 | cardInfo = { | ||
86 | '_rowObject': MochiKit.Async.succeed, | ||
87 | '_reference': MochiKit.Base.methodcaller('reference'), | ||
88 | '_searchableContent':MochiKit.Base.methodcaller('searchableContent'), | ||
89 | 'label': MochiKit.Base.methodcaller('label'), | ||
90 | 'favicon': MochiKit.Base.methodcaller('favicon') | ||
91 | }; | ||
92 | |||
93 | //console.log("someCards", someCards); | ||
94 | deferredResult = new Clipperz.Async.Deferred("CardList.showCards", {trace:false}); | ||
95 | deferredResult.addCallback(MochiKit.Base.map, Clipperz.Async.collectResults("CardList.value - collectResults", cardInfo, {trace:false})); | ||
96 | deferredResult.addCallback(Clipperz.Async.collectAll); | ||
97 | deferredResult.addCallback(MochiKit.Base.methodcaller('sort', Clipperz.Base.caseInsensitiveKeyComparator('label'))); | ||
98 | deferredResult.addCallbackPass(MochiKit.DOM.replaceChildNodes, cardListElement); | ||
99 | // deferredResult.addCallbackPass(MochiKit.DOM.removeElementClass, cardListElement, 'loading'); | ||
100 | deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.method(this, 'appendCardToList', cardListElement)); | ||
101 | deferredResult.callback(someCards); | ||
102 | }, | ||
103 | |||
104 | 'appendCardToList': function (aCardListElement, aCardInfo) { | ||
105 | //console.log("appendCardToList", aCardInfo); | ||
106 | this.append(aCardListElement, {tag:'li', cls:'cardListItem arrow', cardreference:aCardInfo['_reference'], children:[ | ||
107 | {tag:'a', href:'#', html:aCardInfo['label'], children:[ | ||
108 | {tag:'small', cls:'favicon', children:[{tag:'img', cls:'favicon', src:aCardInfo['favicon']}]} | ||
109 | ]} | ||
110 | ]}); | ||
111 | }, | ||
112 | |||
113 | 'cardSelectionHandler': function (anEvent) { | ||
114 | var listElement; | ||
115 | varcardReference; | ||
116 | |||
117 | anEvent.preventDefault(); | ||
118 | |||
119 | listElement = anEvent.target(); | ||
120 | if (MochiKit.DOM.getNodeAttribute(listElement, 'cardreference') == null) { | ||
121 | listElement = MochiKit.DOM.getFirstParentByTagAndClassName(anEvent.target(), tagName='li', className='cardListItem'); | ||
122 | } | ||
123 | cardReference = MochiKit.DOM.getNodeAttribute(listElement, 'cardreference'); | ||
124 | console.log("###", listElement, cardReference); | ||
125 | //TODO: Notify card with reference MochiKit.DOM.getNodeAttribute(listElement, 'cardreference') has been selected | ||
126 | MochiKit.Signal.signal(this, 'selectedCard', cardReference); | ||
127 | }, | ||
77 | 128 | ||
129 | //------------------------------------------------------------------------- | ||
130 | /* | ||
78 | 'searchHandler': function (anEvent) { | 131 | 'searchHandler': function (anEvent) { |
79 | if ((typeof(anEvent.key()) != 'undefined') && (anEvent.key().string == 'KEY_ENTER')) { //RETURN | 132 | if ((typeof(anEvent.key()) != 'undefined') && (anEvent.key().string == 'KEY_ENTER')) { //RETURN |
80 | anEvent.preventDefault(); | 133 | anEvent.preventDefault(); |
81 | } else { | 134 | } else { |
82 | if ((typeof(anEvent.key()) != 'undefined') && (anEvent.key().string == 'KEY_ESCAPE')) { | 135 | if ((typeof(anEvent.key()) != 'undefined') && (anEvent.key().string == 'KEY_ESCAPE')) { |
83 | anEvent.target().value = ""; | 136 | anEvent.target().value = ""; |
84 | } | 137 | } |
85 | 138 | ||
86 | if (anEvent.type() == 'keyup') { | 139 | if (anEvent.type() == 'keyup') { |
87 | MochiKit.Signal.signal(this, 'searchEvent', anEvent.target().value); | 140 | MochiKit.Signal.signal(this, 'searchEvent', anEvent.target().value); |
88 | } | 141 | } |
89 | } | 142 | } |
90 | }, | 143 | }, |
91 | 144 | ||
92 | //------------------------------------------------------------------------- | 145 | //------------------------------------------------------------------------- |
93 | 146 | ||
94 | 'update': function (someObjects) { | 147 | 'update': function (someObjects) { |
95 | varcardListPanel; | 148 | varcardListPanel; |
96 | var i,c; | 149 | var i,c; |
97 | 150 | ||
98 | cardListPanel = this.getElement('cardListPanel'); | 151 | cardListPanel = this.getElement('cardListPanel'); |
99 | cardListPanel.innerHTML = ''; | 152 | cardListPanel.innerHTML = ''; |
100 | 153 | ||
101 | c = someObjects.length; | 154 | c = someObjects.length; |
102 | 155 | ||
103 | for (i=0; i<c; i++) { | 156 | for (i=0; i<c; i++) { |
104 | this.append(cardListPanel, {tag:'li', cls:'cardListItem', id:('cardListItem_' + someObjects[i]['_reference']), children:[ | 157 | this.append(cardListPanel, {tag:'li', cls:'cardListItem', id:('cardListItem_' + someObjects[i]['_reference']), children:[ |
105 | {tag:'img', src:(someObjects[i]['favicon'] ? someObjects[i]['favicon'] : 'data:application/octet-stream;charset=utf-8;base64,AAABAAEAFxcAAAEAGAD8BgAAFgAAACgAAAAXAAAALgAAAAEAGAAAAAAAAAAAABIXAAASFwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////9zAC////////////////////////////////////////////////////////////////////////////////////////////9pAG////////////////////////////////////////////////////////////////////////////////////////////9rAC////////////////////////////////////////////////////////////////////////////////////////////9yAHP////////////////////////IyMizs7O6urrq6ur////////////Ozs6zs7Ozs7Pq6ur///////////////////////8AAAD////////////////////V1dWXl5eXl5eXl5elpaX4+Pj////Ozs6Xl5eXl5eXl5eenp7///////////////////////8AAAD////////////////////Ozs6Xl5eXl5eXl5eXl5fBwcHq6uqenp6Xl5eXl5eXl5eXl5f///////////////////////8AAAD////////////////////j4+OXl5eXl5eXl5eXl5eXl5elpaWXl5eXl5eXl5eXl5ezs7P///////////////////////8AAAD////////////////////////IyMiXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eenp7x8fH////////////////////////////////////////////////////4+PilpaWXl5eXl5eXl5eXl5eXl5eXl5eXl5fOzs7////////////////////////////////////////////////////////q6uq6urqXl5eXl5eXl5eXl5eXl5eXl5eenp7V1dX4+Pj///////////////////////8AAAD////////////4+PjOzs6lpaWXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e6urrj4+P///////////////8AAAD////////////BwcGXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fx8fH///////////8AAAD///////////+zs7OXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fj4+P///////////8AAAD////////////IyMiXl5eXl5eXl5eXl5e6urqXl5eXl5eXl5eXl5esrKylpaWXl5eXl5eXl5eenp7x8fH///////////8AAAD////////////////Ozs7Ozs7V1dX4+Pj///+Xl5eXl5eXl5eXl5fOzs7////q6urOzs7Ozs7q6ur///////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD////////////////////////////////////IyMiXl5eXl5eenp7x8fH///////////////////////////////////8AAAD////////////////////////////////////////j4+Pj4+Px8fH///////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo=')}, | 158 | {tag:'img', src:(someObjects[i]['favicon'] ? someObjects[i]['favicon'] : 'data:application/octet-stream;charset=utf-8;base64,AAABAAEAFxcAAAEAGAD8BgAAFgAAACgAAAAXAAAALgAAAAEAGAAAAAAAAAAAABIXAAASFwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////9zAC////////////////////////////////////////////////////////////////////////////////////////////9pAG////////////////////////////////////////////////////////////////////////////////////////////9rAC////////////////////////////////////////////////////////////////////////////////////////////9yAHP////////////////////////IyMizs7O6urrq6ur////////////Ozs6zs7Ozs7Pq6ur///////////////////////8AAAD////////////////////V1dWXl5eXl5eXl5elpaX4+Pj////Ozs6Xl5eXl5eXl5eenp7///////////////////////8AAAD////////////////////Ozs6Xl5eXl5eXl5eXl5fBwcHq6uqenp6Xl5eXl5eXl5eXl5f///////////////////////8AAAD////////////////////j4+OXl5eXl5eXl5eXl5eXl5elpaWXl5eXl5eXl5eXl5ezs7P///////////////////////8AAAD////////////////////////IyMiXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eenp7x8fH////////////////////////////////////////////////////4+PilpaWXl5eXl5eXl5eXl5eXl5eXl5eXl5fOzs7////////////////////////////////////////////////////////q6uq6urqXl5eXl5eXl5eXl5eXl5eXl5eenp7V1dX4+Pj///////////////////////8AAAD////////////4+PjOzs6lpaWXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e6urrj4+P///////////////8AAAD////////////BwcGXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fx8fH///////////8AAAD///////////+zs7OXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fj4+P///////////8AAAD////////////IyMiXl5eXl5eXl5eXl5e6urqXl5eXl5eXl5eXl5esrKylpaWXl5eXl5eXl5eenp7x8fH///////////8AAAD////////////////Ozs7Ozs7V1dX4+Pj///+Xl5eXl5eXl5eXl5fOzs7////q6urOzs7Ozs7q6ur///////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD////////////////////////////////////IyMiXl5eXl5eenp7x8fH///////////////////////////////////8AAAD////////////////////////////////////////j4+Pj4+Px8fH///////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo=')}, |
106 | {tag:'a', id:('cardListReference_' + someObjects[i]['_reference']), href:'#', html:someObjects[i]['label']} | 159 | {tag:'a', id:('cardListReference_' + someObjects[i]['_reference']), href:'#', html:someObjects[i]['label']} |
107 | ]}) | 160 | ]}) |
108 | 161 | ||
109 | MochiKit.Signal.connect('cardListItem_' + someObjects[i]['_reference'], 'onclick', this, 'cardListClickHandler'); | 162 | MochiKit.Signal.connect('cardListItem_' + someObjects[i]['_reference'], 'onclick', this, 'cardListClickHandler'); |
110 | } | 163 | } |
111 | 164 | ||
112 | }, | 165 | }, |
113 | 166 | ||
114 | 'cardListClickHandler': function (anEvent) { | 167 | 'cardListClickHandler': function (anEvent) { |
115 | anEvent.preventDefault(); | 168 | anEvent.preventDefault(); |
116 | 169 | ||
117 | if (/(cardListReference_|cardListItem_)/.test(anEvent.target().id)) { | 170 | if (/(cardListReference_|cardListItem_)/.test(anEvent.target().id)) { |
118 | var cardListReference; | 171 | var cardListReference; |
119 | 172 | ||
120 | cardListReference = anEvent.target().id.match(/(cardListReference_|cardListItem_)(.*)/)[2]; | 173 | cardListReference = anEvent.target().id.match(/(cardListReference_|cardListItem_)(.*)/)[2]; |
121 | //console.log("Showing detail for card named", cardListReference); | 174 | //console.log("Showing detail for card named", cardListReference); |
122 | MochiKit.Signal.signal(this, 'selectedCard', cardListReference); | 175 | MochiKit.Signal.signal(this, 'selectedCard', cardListReference); |
123 | } | 176 | } |
124 | }, | 177 | }, |
125 | 178 | ||
126 | //========================================================================= | 179 | //========================================================================= |
127 | 180 | ||
128 | 'cardDetail': function (someData) { | 181 | 'cardDetail': function (someData) { |
129 | if (this._cardDetail == null) { | 182 | if (this._cardDetail == null) { |
130 | this._cardDetail = new Clipperz.PM.UI.iPhone.Components.CardDetail({element:this.getElement('cardDetail')}); | 183 | this._cardDetail = new Clipperz.PM.UI.Mobile.Components.CardDetail({element:this.getElement('cardDetail')}); |
131 | } | 184 | } |
132 | 185 | ||
133 | return this._cardDetail; | 186 | return this._cardDetail; |
134 | }, | 187 | }, |
135 | 188 | ||
136 | //------------------------------------------------------------------------- | 189 | //------------------------------------------------------------------------- |
137 | 190 | ||
138 | 'removeCardDetail': function () { | 191 | 'removeCardDetail': function () { |
139 | if (this._cardDetail != null) { | 192 | if (this._cardDetail != null) { |
140 | this._cardDetail.remove(); | 193 | this._cardDetail.remove(); |
141 | this._cardDetail = null; | 194 | this._cardDetail = null; |
142 | } | 195 | } |
143 | }, | 196 | }, |
144 | 197 | ||
145 | //========================================================================= | 198 | //========================================================================= |
146 | 199 | ||
147 | 'showCard': function (someData) { | 200 | 'showCard': function (someData) { |
148 | vardeferredResult; | 201 | vardeferredResult; |
149 | varoffset; | 202 | varoffset; |
150 | 203 | ||
151 | offset = ((MochiKit.DOM.getNodeAttribute(MochiKit.DOM.currentDocument().body, 'orientation') == 'portrait') ? 320 : 480); | 204 | offset = ((MochiKit.DOM.getNodeAttribute(MochiKit.DOM.currentDocument().body, 'orientation') == 'portrait') ? 320 : 480); |
152 | this.cardDetail().render(); | 205 | this.cardDetail().render(); |
153 | this.cardDetail().setCardReference(someData['_reference']); | 206 | this.cardDetail().setCardReference(someData['_reference']); |
154 | MochiKit.Style.setElementPosition(this.cardDetail().element(), {x:offset}); | 207 | MochiKit.Style.setElementPosition(this.cardDetail().element(), {x:offset}); |
155 | new MochiKit.Visual.Sequence([ | 208 | new MochiKit.Visual.Sequence([ |
156 | // new MochiKit.Visual.Move(this.cardDetail().element(), {x:offset, y:45, mode:'absolute', duration:0, sync:true}), | 209 | // new MochiKit.Visual.Move(this.cardDetail().element(), {x:offset, y:45, mode:'absolute', duration:0, sync:true}), |
157 | new MochiKit.Visual.Parallel([ | 210 | new MochiKit.Visual.Parallel([ |
158 | new MochiKit.Visual.Move(this.getElement('cardList'), {x:-offset, y:0, mode:'relative',transition:MochiKit.Visual.Transitions.linear, sync:true}), | 211 | new MochiKit.Visual.Move(this.getElement('cardList'), {x:-offset, y:0, mode:'relative',transition:MochiKit.Visual.Transitions.linear, sync:true}), |
159 | new MochiKit.Visual.Move(this.getElement('cardDetail'), {x:0, y:45, mode:'absolute',transition:MochiKit.Visual.Transitions.linear, sync:true}), | 212 | new MochiKit.Visual.Move(this.getElement('cardDetail'), {x:0, y:45, mode:'absolute',transition:MochiKit.Visual.Transitions.linear, sync:true}), |
160 | // new MochiKit.Visual.ScrollTo('toolbar', {sync:true}), | 213 | // new MochiKit.Visual.ScrollTo('toolbar', {sync:true}), |
161 | MochiKit.Visual.appear ('backButton', { transition:MochiKit.Visual.Transitions.linear, sync:true}) | 214 | MochiKit.Visual.appear ('backButton', { transition:MochiKit.Visual.Transitions.linear, sync:true}) |
162 | ], {duration:1, sync:true}), | 215 | ], {duration:1, sync:true}), |
163 | MochiKit.Visual.fade(this.getElement('cardList'), {duration:0, sync:true}) | 216 | MochiKit.Visual.fade(this.getElement('cardList'), {duration:0, sync:true}) |
164 | ], {}) | 217 | ], {}) |
165 | 218 | ||
166 | MochiKit.DOM.getElement('pageTitle').innerHTML = someData['title']; | 219 | MochiKit.DOM.getElement('pageTitle').innerHTML = someData['title']; |
167 | 220 | ||
168 | return true; | 221 | return true; |
169 | }, | 222 | }, |
170 | 223 | ||
171 | //------------------------------------------------------------------------- | 224 | //------------------------------------------------------------------------- |
172 | 225 | ||
173 | 'showCardDetails': function (someData) { | 226 | 'showCardDetails': function (someData) { |
174 | return this.cardDetail().showCardDetails(someData); | 227 | return this.cardDetail().showCardDetails(someData); |
175 | }, | 228 | }, |
176 | 229 | ||
177 | //========================================================================= | 230 | //========================================================================= |
178 | 231 | ||
179 | 'backButtonClickHandler': function (anEvent) { | 232 | 'backButtonClickHandler': function (anEvent) { |
180 | varoffset; | 233 | varoffset; |
181 | 234 | ||
182 | anEvent.preventDefault(); | 235 | anEvent.preventDefault(); |
183 | 236 | ||
184 | MochiKit.DOM.getElement('pageTitle').innerHTML = "cards"; | 237 | MochiKit.DOM.getElement('pageTitle').innerHTML = "cards"; |
185 | 238 | ||
186 | offset = ((MochiKit.DOM.getNodeAttribute(MochiKit.DOM.currentDocument().body, 'orientation') == 'portrait') ? 320 : 480); | 239 | offset = ((MochiKit.DOM.getNodeAttribute(MochiKit.DOM.currentDocument().body, 'orientation') == 'portrait') ? 320 : 480); |
187 | MochiKit.Style.setElementPosition(this.getElement('cardList'), {x:-offset}); | 240 | MochiKit.Style.setElementPosition(this.getElement('cardList'), {x:-offset}); |
188 | MochiKit.DOM.showElement(this.getElement('cardList')); | 241 | MochiKit.DOM.showElement(this.getElement('cardList')); |
189 | 242 | ||
190 | new MochiKit.Visual.Parallel([ | 243 | new MochiKit.Visual.Parallel([ |
191 | new MochiKit.Visual.Move(this.getElement('cardList'), {x:offset, y:0, mode:'relative',transition:MochiKit.Visual.Transitions.linear, sync:true}), | 244 | new MochiKit.Visual.Move(this.getElement('cardList'), {x:offset, y:0, mode:'relative',transition:MochiKit.Visual.Transitions.linear, sync:true}), |
192 | new MochiKit.Visual.Move(this.getElement('cardDetail'), {x:offset, y:0, mode:'relative',transition:MochiKit.Visual.Transitions.linear, sync:true}), | 245 | new MochiKit.Visual.Move(this.getElement('cardDetail'), {x:offset, y:0, mode:'relative',transition:MochiKit.Visual.Transitions.linear, sync:true}), |
193 | MochiKit.Visual.fade (this.getElement('cardDetail'), { transition:MochiKit.Visual.Transitions.linear, sync:true}), | 246 | MochiKit.Visual.fade (this.getElement('cardDetail'), { transition:MochiKit.Visual.Transitions.linear, sync:true}), |
194 | MochiKit.Visual.fade ('backButton', { transition:MochiKit.Visual.Transitions.linear, sync:true}) | 247 | MochiKit.Visual.fade ('backButton', { transition:MochiKit.Visual.Transitions.linear, sync:true}) |
195 | ], {duration:1, afterFinish:MochiKit.Base.method(this, 'removeCardDetail')}) | 248 | ], {duration:1, afterFinish:MochiKit.Base.method(this, 'removeCardDetail')}) |
196 | 249 | ||
197 | }, | 250 | }, |
198 | 251 | */ | |
199 | //========================================================================= | 252 | //========================================================================= |
200 | __syntaxFix__: "syntax fix" | 253 | __syntaxFix__: "syntax fix" |
201 | }); | 254 | }); |
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Mobile/Components/LoginForm.js b/frontend/gamma/js/Clipperz/PM/UI/Mobile/Components/LoginForm.js new file mode 100644 index 0000000..eafcdbc --- a/dev/null +++ b/frontend/gamma/js/Clipperz/PM/UI/Mobile/Components/LoginForm.js | |||
@@ -0,0 +1,356 @@ | |||
1 | /* | ||
2 | |||
3 | Copyright 2008-2011 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz Community Edition. | ||
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | ||
8 | refer to http://www.clipperz.com. | ||
9 | |||
10 | * Clipperz Community Edition is free software: you can redistribute | ||
11 | it and/or modify it under the terms of the GNU Affero General Public | ||
12 | License as published by the Free Software Foundation, either version | ||
13 | 3 of the License, or (at your option) any later version. | ||
14 | |||
15 | * Clipperz Community Edition is distributed in the hope that it will | ||
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | ||
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
18 | See the GNU Affero General Public License for more details. | ||
19 | |||
20 | * You should have received a copy of the GNU Affero General Public | ||
21 | License along with Clipperz Community Edition. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | |||
24 | */ | ||
25 | |||
26 | Clipperz.Base.module('Clipperz.PM.UI.Mobile.Components'); | ||
27 | |||
28 | Clipperz.PM.UI.Mobile.Components.LoginForm = function(args) { | ||
29 | args = args || {}; | ||
30 | |||
31 | this._pin = ''; | ||
32 | |||
33 | this._message = null; | ||
34 | this._steps = 0; | ||
35 | this._actualSteps = 0; | ||
36 | |||
37 | this._callback = null; | ||
38 | this._errorCallback = null; | ||
39 | |||
40 | this._mode = 'CREDENTIALS'; | ||
41 | |||
42 | Clipperz.PM.UI.Mobile.Components.LoginForm.superclass.constructor.apply(this, arguments); | ||
43 | |||
44 | return this; | ||
45 | } | ||
46 | |||
47 | //============================================================================= | ||
48 | |||
49 | Clipperz.Base.extend(Clipperz.PM.UI.Mobile.Components.LoginForm, Clipperz.PM.UI.Common.Components.BaseComponent, { | ||
50 | |||
51 | //------------------------------------------------------------------------- | ||
52 | |||
53 | 'toString': function () { | ||
54 | return "Clipperz.PM.UI.Mobile.Components.LoginForm component"; | ||
55 | }, | ||
56 | |||
57 | //------------------------------------------------------------------------- | ||
58 | |||
59 | 'callback': function () { | ||
60 | return this._callback; | ||
61 | }, | ||
62 | |||
63 | 'errorCallback': function () { | ||
64 | return this._errorCallback; | ||
65 | }, | ||
66 | |||
67 | //------------------------------------------------------------------------- | ||
68 | |||
69 | 'mode': function () { | ||
70 | return this._mode; | ||
71 | }, | ||
72 | |||
73 | 'setMode': function (aValue) { | ||
74 | this._mode = aValue; | ||
75 | }, | ||
76 | |||
77 | //.......................................................................... | ||
78 | |||
79 | 'pin': function () { | ||
80 | return this._pin; | ||
81 | }, | ||
82 | |||
83 | 'setPin': function (aValue) { | ||
84 | this._pin = aValue; | ||
85 | }, | ||
86 | |||
87 | //.......................................................................... | ||
88 | |||
89 | 'username': function () { | ||
90 | return this._username; | ||
91 | }, | ||
92 | |||
93 | 'setUsername': function (aValue) { | ||
94 | this._username = aValue; | ||
95 | }, | ||
96 | |||
97 | //.......................................................................... | ||
98 | |||
99 | 'passphrase': function () { | ||
100 | return this._passphrase; | ||
101 | }, | ||
102 | |||
103 | 'setPassphrase': function (aValue) { | ||
104 | this._passphrase = aValue; | ||
105 | }, | ||
106 | |||
107 | //------------------------------------------------------------------------- | ||
108 | |||
109 | 'message': function () { | ||
110 | return this._message; | ||
111 | }, | ||
112 | |||
113 | '_setMessage': function (aValue) { | ||
114 | this._message = aValue; | ||
115 | |||
116 | if (aValue == null) { | ||
117 | MochiKit.Style.hideElement(this.getElement('credentialsMessage')); | ||
118 | } else { | ||
119 | this.getElement('message').innerHTML = aValue; | ||
120 | MochiKit.Style.showElement(this.getElement('credentialsMessage')); | ||
121 | } | ||
122 | }, | ||
123 | |||
124 | 'setMessage': function (aValue) { | ||
125 | this._setMessage(aValue); | ||
126 | MochiKit.DOM.removeElementClass(this.getElement('credentialsMessage'), 'error'); | ||
127 | }, | ||
128 | |||
129 | 'setErrorMessage': function (aValue) { | ||
130 | this._setMessage(aValue); | ||
131 | MochiKit.DOM.addElementClass(this.getElement('credentialsMessage'), 'error'); | ||
132 | }, | ||
133 | |||
134 | //------------------------------------------------------------------------- | ||
135 | |||
136 | 'setCallbacks': function (args) { | ||
137 | this._callback = args['callback']; | ||
138 | this._errorCallback = args['errorCallback']; | ||
139 | }, | ||
140 | |||
141 | 'showErrors': function (args) { | ||
142 | //console.log("LoginForm.showErrors", args); | ||
143 | if (args['previousFailedAttempt'] == 'LOGIN') { | ||
144 | this.setErrorMessage("Wrong credentials"); | ||
145 | } else if (args['previousFailedAttempt'] == 'PIN') { | ||
146 | if (args['failedAttempts'] == -1) { | ||
147 | this.setErrorMessage("Wrong PIN - Resetted"); | ||
148 | } else { | ||
149 | this.setErrorMessage("Wrong PIN"); | ||
150 | } | ||
151 | } else { | ||
152 | this.setMessage(null); | ||
153 | } | ||
154 | }, | ||
155 | |||
156 | 'updateWithArgs': function (args) { | ||
157 | this.renderIfNeeded(); | ||
158 | this.setCallbacks(args); | ||
159 | this.showErrors(args); | ||
160 | this.updateRendering(); | ||
161 | }, | ||
162 | |||
163 | 'showPinLogin': function (args) { | ||
164 | this.setPin(''); | ||
165 | this.setMode('PIN'); | ||
166 | this.updateWithArgs(args); | ||
167 | |||
168 | // $(this.getAnchor('PIN')).focus(); | ||
169 | this.getElement('PIN').focus(); | ||
170 | }, | ||
171 | |||
172 | 'showCredentialsLogin': function (args) { | ||
173 | this.setMode('CREDENTIALS'); | ||
174 | this.updateWithArgs(args); | ||
175 | |||
176 | if (this.getElement('usernameField').value.length == 0) { | ||
177 | // $(this.getAnchor('usernameField')).focus(); | ||
178 | this.getElement('usernameField').focus(); | ||
179 | } else { | ||
180 | // $(this.getAnchor('passphraseField')).focus(); | ||
181 | this.getElement('passphraseField').focus(); | ||
182 | this.getElement('passphraseField').select(); | ||
183 | } | ||
184 | }, | ||
185 | |||
186 | //------------------------------------------------------------------------- | ||
187 | |||
188 | 'renderIfNeeded': function () { | ||
189 | if (this.isFullyRendered() == false) { | ||
190 | this.render(); | ||
191 | }; | ||
192 | this.updateRendering(); | ||
193 | }, | ||
194 | |||
195 | 'updateRendering': function () { | ||
196 | MochiKit.Style.showElement(this.getElement('credentialsBody')); | ||
197 | MochiKit.Style.hideElement(this.getElement('validating')); | ||
198 | |||
199 | // this.hideAllPanes(); | ||
200 | MochiKit.Base.map(function (aNode) { MochiKit.Style.hideElement(aNode); }, MochiKit.Selector.findDocElements('div.credentialsBody > div')); | ||
201 | if (this.mode() == 'CREDENTIALS') { | ||
202 | selectedPanel = this.getElement('credentials') | ||
203 | } else if (this.mode() == 'PIN') { | ||
204 | selectedPanel = this.getElement('pin') | ||
205 | // this.updatePinDisplay(); | ||
206 | } else { | ||
207 | throw 'Unhandled login form mode'; | ||
208 | } | ||
209 | MochiKit.Style.showElement(selectedPanel); | ||
210 | |||
211 | MochiKit.Style.hideElement(this.getElement('validating')); | ||
212 | }, | ||
213 | |||
214 | 'renderSelf': function() { | ||
215 | var selectedPanel; | ||
216 | this.append(this.element(), {tag:'div', id:'login', children:[ | ||
217 | {tag:'div', cls:'toolbar', children:[ | ||
218 | {tag:'h1', html:"clipperz"} | ||
219 | ]}, | ||
220 | {tag:'div', cls:'scroll', children:[ | ||
221 | //================================================================== | ||
222 | {tag:'div', cls:'credentialsMessage', id:this.getId('credentialsMessage'), children:[ | ||
223 | {tag:'h1', cls:'message', id:this.getId('message'), html:"Message"} | ||
224 | ]}, | ||
225 | //================================================================== | ||
226 | {tag:'div', cls:'credentialsBody', id:this.getId('credentialsBody'), children:[ | ||
227 | //-------------------------------------------------------------- | ||
228 | {tag:'div', cls:'pin', id:this.getId('pin'), children:[ | ||
229 | {tag:'form', cls:'scroll', id:this.getId('pinForm'), children:[ | ||
230 | {tag:'ul', cls:'edit rounded', children:[ | ||
231 | {tag:'li', children:[{tag:'input', type:'number', name:'PIN', placeholder:"PIN", id:this.getId('PIN') }]}, | ||
232 | ]}, | ||
233 | {tag:'a', href:'#', cls:'greenButton', id:this.getId('pinSubmitButton'), html:"Login"} | ||
234 | ]} | ||
235 | ]}, | ||
236 | //-------------------------------------------------------------- | ||
237 | {tag:'div', cls:'credentials', id:this.getId('credentials'), children:[ | ||
238 | {tag:'form', cls:'scroll', id:this.getId('credentialsForm'), children:[ | ||
239 | {tag:'ul', cls:'edit rounded', children:[ | ||
240 | {tag:'li', children:[{tag:'input', type:'email', name:'name', /*value:'joe',*/ placeholder:"username", id:this.getId('usernameField') }]}, | ||
241 | {tag:'li', children:[{tag:'input', type:'password', name:'passphrase', /*value:'clipperz',*/placeholder:"passphrase", id:this.getId('passphraseField') }]} | ||
242 | ]}, | ||
243 | {tag:'a', href:'#', cls:'greenButton', id:this.getId('credentialsSubmitButton'), html:"Login"} | ||
244 | // {tag:'input', type:'submit', cls:'greenButton', id:this.getId('credentialsSubmitButton'), value:"Login"} | ||
245 | |||
246 | ]} | ||
247 | ]}, | ||
248 | //-------------------------------------------------------------- | ||
249 | ]}, | ||
250 | //================================================================== | ||
251 | {tag:'div', cls:'validating', id:this.getId('validating'), children:[ | ||
252 | {tag:'div', cls:'loading', children:[ | ||
253 | {tag:'div', cls:'spinner', children:[ | ||
254 | {tag:'div', cls:'bar01'}, | ||
255 | {tag:'div', cls:'bar02'}, | ||
256 | {tag:'div', cls:'bar03'}, | ||
257 | {tag:'div', cls:'bar04'}, | ||
258 | {tag:'div', cls:'bar05'}, | ||
259 | {tag:'div', cls:'bar06'}, | ||
260 | {tag:'div', cls:'bar07'}, | ||
261 | {tag:'div', cls:'bar08'}, | ||
262 | {tag:'div', cls:'bar09'}, | ||
263 | {tag:'div', cls:'bar10'}, | ||
264 | {tag:'div', cls:'bar11'}, | ||
265 | {tag:'div', cls:'bar12'} | ||
266 | ]} | ||
267 | ]}, | ||
268 | {tag:'div', id:this.getId('loadingMessage')}, | ||
269 | {tag:'a', href:'#', cls:'grayButton', id:this.getId('loginCancelButton'), html:"Cancel"} | ||
270 | ]} | ||
271 | //================================================================== | ||
272 | ]} | ||
273 | ]}); | ||
274 | |||
275 | MochiKit.Signal.connect(this.getElement('credentialsForm'), 'onsubmit', this, 'submitCredentialsHandler'); | ||
276 | MochiKit.Signal.connect(this.getElement('credentialsSubmitButton'), 'onclick', this, 'submitCredentialsHandler'); | ||
277 | |||
278 | MochiKit.Signal.connect(this.getElement('pinForm'), 'onsubmit', this, 'submitPinHandler'); | ||
279 | MochiKit.Signal.connect(this.getElement('pinSubmitButton'), 'onclick', this, 'submitPinHandler'); | ||
280 | |||
281 | MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'initProgress', this, 'initProgressHandle'); | ||
282 | MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'updateProgress',this, 'updateProgressHandle'); | ||
283 | MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'advanceProgress',this, 'advanceProgressHandle'); | ||
284 | MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'progressDone', this, 'progressDoneHandle'); | ||
285 | }, | ||
286 | |||
287 | //------------------------------------------------------------------------- | ||
288 | |||
289 | 'submitPinHandler': function (anEvent) { | ||
290 | varpin; | ||
291 | |||
292 | this.setMessage(null); | ||
293 | pin = this.getElement('PIN').value; | ||
294 | // $(this.getAnchor('PIN')).blur(); | ||
295 | this.getElement('PIN').blur(); | ||
296 | |||
297 | credentials = Clipperz.PM.PIN.credentialsWithPIN(pin); | ||
298 | this.loginWithCredentials(credentials); | ||
299 | }, | ||
300 | |||
301 | 'submitCredentialsHandler': function (anEvent) { | ||
302 | //console.log("submitCredentialsHandler"); | ||
303 | varcredentials; | ||
304 | |||
305 | this.setMessage(null); | ||
306 | |||
307 | credentials = {}; | ||
308 | credentials['username'] = this.getElement('usernameField').value; | ||
309 | credentials['passphrase'] = this.getElement('passphraseField').value; | ||
310 | // $(this.getAnchor('passphraseField')).blur(); | ||
311 | this.getElement('passphraseField').blur(); | ||
312 | |||
313 | this.loginWithCredentials(credentials); | ||
314 | }, | ||
315 | |||
316 | //------------------------------------------------------------------------- | ||
317 | |||
318 | 'loginWithCredentials': function (someCredentials) { | ||
319 | varargs; | ||
320 | |||
321 | args = {}; | ||
322 | args['credentials'] = someCredentials; | ||
323 | args['errorCallback'] = this.errorCallback(); | ||
324 | |||
325 | MochiKit.Style.hideElement(this.getElement('credentialsBody')); | ||
326 | MochiKit.Style.showElement(this.getElement('validating')); | ||
327 | |||
328 | MochiKit.Async.callLater(0.1, this.callback(), args); | ||
329 | }, | ||
330 | |||
331 | //------------------------------------------------------------------------- | ||
332 | |||
333 | 'initProgressHandle': function (anEvent) { | ||
334 | //console.log("** initProgressHandle", anEvent); | ||
335 | this._steps = anEvent['steps']; | ||
336 | this._actualSteps = 0; | ||
337 | }, | ||
338 | |||
339 | 'updateProgressHandle': function (anEvent) { | ||
340 | //console.log("** updateProgressHandle", anEvent); | ||
341 | this._steps += anEvent['extraSteps']; | ||
342 | }, | ||
343 | |||
344 | 'advanceProgressHandle': function (anEvent) { | ||
345 | //console.log("** advanceProgressHandle", anEvent); | ||
346 | this._actualSteps ++; | ||
347 | //console.log("STEPS: " + this._actualSteps + "/" + this._steps); | ||
348 | }, | ||
349 | |||
350 | 'progressDoneHandle': function (anEvent) { | ||
351 | //console.log("** progressDoneHandle", anEvent); | ||
352 | }, | ||
353 | |||
354 | //------------------------------------------------------------------------- | ||
355 | __syntaxFix__: "syntax fix" | ||
356 | }); | ||
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Mobile/Controllers/MainController.js b/frontend/gamma/js/Clipperz/PM/UI/Mobile/Controllers/MainController.js new file mode 100644 index 0000000..12a61f7 --- a/dev/null +++ b/frontend/gamma/js/Clipperz/PM/UI/Mobile/Controllers/MainController.js | |||
@@ -0,0 +1,393 @@ | |||
1 | /* | ||
2 | |||
3 | Copyright 2008-2011 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz Community Edition. | ||
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | ||
8 | refer to http://www.clipperz.com. | ||
9 | |||
10 | * Clipperz Community Edition is free software: you can redistribute | ||
11 | it and/or modify it under the terms of the GNU Affero General Public | ||
12 | License as published by the Free Software Foundation, either version | ||
13 | 3 of the License, or (at your option) any later version. | ||
14 | |||
15 | * Clipperz Community Edition is distributed in the hope that it will | ||
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | ||
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
18 | See the GNU Affero General Public License for more details. | ||
19 | |||
20 | * You should have received a copy of the GNU Affero General Public | ||
21 | License along with Clipperz Community Edition. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | |||
24 | */ | ||
25 | |||
26 | Clipperz.Base.module('Clipperz.PM.UI.Mobile.Controllers'); | ||
27 | |||
28 | Clipperz.PM.UI.Mobile.Controllers.MainController = function() { | ||
29 | this._jQTouch = null; | ||
30 | this._user = null; | ||
31 | this._proxy = null; | ||
32 | this._loginForm = null; | ||
33 | this._cardList = null; | ||
34 | this._cardDetail= null; | ||
35 | |||
36 | return this; | ||
37 | } | ||
38 | |||
39 | MochiKit.Base.update(Clipperz.PM.UI.Mobile.Controllers.MainController.prototype, { | ||
40 | |||
41 | 'toString': function () { | ||
42 | return "Clipperz.PM.UI.Mobile.Controllers.MainController"; | ||
43 | }, | ||
44 | |||
45 | //------------------------------------------------------------------------- | ||
46 | |||
47 | 'user': function () { | ||
48 | return this._user; | ||
49 | }, | ||
50 | |||
51 | 'setUser': function (aValue) { | ||
52 | this._user = aValue; | ||
53 | }, | ||
54 | |||
55 | //------------------------------------------------------------------------- | ||
56 | |||
57 | 'jQTouch': function () { | ||
58 | return this._jQTouch; | ||
59 | }, | ||
60 | |||
61 | 'setJQTouch': function (aValue) { | ||
62 | this._jQTouch = aValue; | ||
63 | }, | ||
64 | |||
65 | //========================================================================= | ||
66 | |||
67 | 'run': function () { | ||
68 | console.log("MainController.run"); | ||
69 | |||
70 | MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'doLogin', MochiKit.Base.method(this, 'doLogin')); | ||
71 | Clipperz.DOM.Helper.overwrite(MochiKit.DOM.currentDocument().body, {tag:'div', id:'jqt', children:[ | ||
72 | {tag:'div', id:'loginForm'}, | ||
73 | {tag:'div', id:'cardList'}, | ||
74 | {tag:'div', id:'cardDetail'}, | ||
75 | {tag:'div', id:'preferences'} | ||
76 | ]}); | ||
77 | |||
78 | this.showLoginForm(); | ||
79 | |||
80 | this.initjQTouch(); | ||
81 | |||
82 | |||
83 | // this.showAddToHomeScreenBaloon(); | ||
84 | // this.selectInitialProxy(); | ||
85 | }, | ||
86 | |||
87 | 'initjQTouch': function () { | ||
88 | var jqt; | ||
89 | |||
90 | jqt = new $.jQTouch({ | ||
91 | icon: 'data:image/png;charset=utf-8;base64,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', | ||
92 | // icon4: 'jqtouch4.png', | ||
93 | // startupScreen: null, //Pass a string path to a 320px x 460px startup screen for full screen apps. | ||
94 | statusBar: 'black-translucent', //Styles the status bar when running as a fullscreen app. Other options are `default`, `black`, and `black-translucent`. | ||
95 | // addGlossToIcon: true, //Set to 'false' to prevent automatic glossy button effect on icon. | ||
96 | preloadImages: false, //Pass an array of image paths to load them before page loads. Ex: `['images/link_over.png', 'images/link_select.png']` | ||
97 | fixedViewport: true, //Removes the user's ability to scale the page. Ensures the site behaves more like an application. | ||
98 | // fullScreen: true, //The website will become a fullscreen application when saved to a user's home screen. Set to `false` to disable. | ||
99 | // fullScreenClass: 'fullscreen' //Adds a class to the `<body>` when running in full-screen mode, to allow for easy detection and styling. Set to `false` to disable. | ||
100 | // themeSelectionSelector: '#jqt #themes ul', //??? | ||
101 | |||
102 | // useAnimations: true, //Set to `false` to disable all animations. | ||
103 | // useFastTouch: true, //Removes ~350ms onClick delay when tapping a link (use in conjunction with the .tap() event) **Experimental** | ||
104 | // useTouchScroll: true, //Adds support for iOS5 scrolling. Set to false to disable. **Experimental** | ||
105 | |||
106 | cacheGetRequests: false, //Automatically caches GET requests, so subsequent taps reference the pre-loaded views. (default: true) | ||
107 | |||
108 | // backSelector: '.back, .cancel, .goback', //A CSS selector for back links/buttons. When clicked, the page history goes back one, automatically reversing whichever entrance animation was used. | ||
109 | |||
110 | // cubeSelector: '.cube', //Link selector for a cube animation. | ||
111 | // dissolveSelector: '.dissolve', //Link selector for a dissolve animation. | ||
112 | // fadeSelector: '.fade', //Link selector for a fade animation. | ||
113 | // flipSelector: '.flip', //Link selector for a 3d flip animation. | ||
114 | formSelector: null, //Sets which forms are automatically submitted via Ajax. (default: 'form') | ||
115 | // popSelector: '.pop', //Link selector for a pop animation. (default: '.pop') | ||
116 | // slideSelector: 'body > * > ul li a', //Link selector for the default slide-left transition. By default applies to all links within an unordered list. Accepts any jQuery-capable selector `'li > a, a:not(.dontslide)'`, etc. (default: 'body > * > ul li a') | ||
117 | // slideupSelector: '.slideup', //Link selector for a slide up animation. (default: '.slideup') | ||
118 | // submitSelector: '.submit', //Selector which, when clicked, will submit its parent form (and close keyboard if open). (default: '.submit') | ||
119 | // swapSelector: '.swap', //Link selector for 3d swap animation. (default: '.swap') | ||
120 | // touchSelector: 'a, .touch', //Selector for items which are automatically given expanded touch events. This makes ordinary links more responsive and provides trigger events like `swipe` (default: 'a, .touch') | ||
121 | |||
122 | debug: false | ||
123 | }); | ||
124 | |||
125 | this.setJQTouch(jqt); | ||
126 | }, | ||
127 | |||
128 | //========================================================================= | ||
129 | |||
130 | 'showAddToHomeScreenBaloon': function () { | ||
131 | console.log(">>> showAddToHomeScreenBaloon"); | ||
132 | }, | ||
133 | |||
134 | //------------------------------------------------------------------------- | ||
135 | |||
136 | 'selectInitialProxy': function () { | ||
137 | //console.log(">>> selectInitialProxy"); | ||
138 | if (this.isOnline()) { | ||
139 | //console.log("--- selectInitialProxy: using default proxy"); | ||
140 | this._proxy = Clipperz.PM.Proxy.defaultProxy; | ||
141 | } else { | ||
142 | if (this.hasLocalData()) { | ||
143 | //console.log("--- selectInitialProxy: using local cache proxy"); | ||
144 | this._proxy = new Clipperz.PM.Proxy.OfflineCache({'shouldPayTolls':false}); | ||
145 | } else { | ||
146 | this.showOfflineError(); | ||
147 | } | ||
148 | } | ||
149 | }, | ||
150 | |||
151 | //------------------------------------------------------------------------- | ||
152 | |||
153 | 'showLoginForm': function (args) { | ||
154 | args = args || {}; | ||
155 | |||
156 | args['callback'] = MochiKit.Base.method(this, 'doLogin'); | ||
157 | |||
158 | if (Clipperz.PM.PIN.isSet()) { | ||
159 | args['errorCallback'] = MochiKit.Base.method(this, 'handleFailedPinLogin'); | ||
160 | this.loginForm().showPinLogin(args); | ||
161 | } else { | ||
162 | args['errorCallback'] = MochiKit.Base.method(this, 'handleFailedCredentialsLogin'); | ||
163 | this.loginForm().showCredentialsLogin(args); | ||
164 | } | ||
165 | }, | ||
166 | |||
167 | //......................................................................... | ||
168 | |||
169 | 'handleFailedCredentialsLogin': function () { | ||
170 | console.log("LOGIN FAILED"); | ||
171 | this.showLoginForm({'previousFailedAttempt':'LOGIN'}); | ||
172 | }, | ||
173 | |||
174 | //......................................................................... | ||
175 | |||
176 | 'handleFailedPinLogin': function () { | ||
177 | varfailedAttempts; | ||
178 | varstatus; | ||
179 | |||
180 | failedAttempts = Clipperz.PM.PIN.recordFailedAttempt(); | ||
181 | this.showLoginForm({'previousFailedAttempt':'PIN', 'failedAttempts': failedAttempts}); | ||
182 | }, | ||
183 | |||
184 | //------------------------------------------------------------------------- | ||
185 | |||
186 | 'doLogin': function (someArgs) { | ||
187 | var deferredResult; | ||
188 | var credentials; | ||
189 | var errorCallback; | ||
190 | var user; | ||
191 | var getPassphraseDelegate; | ||
192 | |||
193 | //console.log(">>> MainController.doLogin", someArgs); | ||
194 | credentials = someArgs['credentials']; | ||
195 | errorCallback = someArgs['errorCallback'] || MochiKit.Base.noop; | ||
196 | |||
197 | getPassphraseDelegate = MochiKit.Base.partial(MochiKit.Async.succeed, credentials.passphrase); | ||
198 | user = new Clipperz.PM.DataModel.User({'username':credentials.username, 'getPassphraseFunction':getPassphraseDelegate}); | ||
199 | |||
200 | deferredResult = new Clipperz.Async.Deferred('MainController.doLogin', {trace:false}); | ||
201 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'initProgress', {'steps':4}); | ||
202 | deferredResult.addCallback(MochiKit.Async.wait, 0.1); | ||
203 | deferredResult.addMethod(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'deferredEntropyCollection'); | ||
204 | deferredResult.addMethod(user, 'login'); | ||
205 | deferredResult.addCallbacks( | ||
206 | MochiKit.Base.method(this, 'processSuccessfulLogin', user), | ||
207 | errorCallback | ||
208 | ); | ||
209 | deferredResult.callback(); | ||
210 | |||
211 | return deferredResult; | ||
212 | }, | ||
213 | |||
214 | //.......................................................................... | ||
215 | |||
216 | 'processSuccessfulLogin': function (aUser) { | ||
217 | var deferredResult; | ||
218 | |||
219 | deferredResult = new Clipperz.Async.Deferred('MainController.processSuccessfulLogin', {trace:false}); | ||
220 | deferredResult.addMethod(Clipperz.PM.PIN, 'resetFailedAttemptCount'); | ||
221 | // deferredResult.addMethod(this, 'removeLoginForm'); | ||
222 | deferredResult.addMethod(this, 'setUser', aUser); | ||
223 | deferredResult.addMethod(this, 'setupApplication'); | ||
224 | deferredResult.addMethod(this, 'runApplication'); | ||
225 | deferredResult.callback(); | ||
226 | |||
227 | return deferredResult; | ||
228 | }, | ||
229 | |||
230 | //------------------------------------------------------------------------- | ||
231 | |||
232 | 'setupApplication': function () { | ||
233 | vardeferredResult; | ||
234 | |||
235 | console.log(">>> setupApplication"); | ||
236 | deferredResult = new Clipperz.Async.Deferred("MainController.setupApplication", {trace:false}); | ||
237 | deferredResult.addMethod(this, 'welcomeFirstTimeUser'); | ||
238 | deferredResult.addMethod(this, 'showPaymentReminder'); | ||
239 | deferredResult.addMethod(this, 'copyDataLocally'); | ||
240 | deferredResult.callback(arguments); | ||
241 | |||
242 | return deferredResult; | ||
243 | }, | ||
244 | |||
245 | |||
246 | //.......................................................................... | ||
247 | |||
248 | 'isFirstTimeUser': function () { | ||
249 | return false; | ||
250 | }, | ||
251 | |||
252 | 'welcomeFirstTimeUser': function () { | ||
253 | vardeferredResult; | ||
254 | |||
255 | deferredResult = new Clipperz.Async.Deferred('MainController.welcomeFirstTimeUser', {trace:false}); | ||
256 | |||
257 | if (this.isFirstTimeUser()) { | ||
258 | deferredResult.addCallback(function () { console.log("--> welcome"); }); | ||
259 | } | ||
260 | deferredResult.callback(); | ||
261 | |||
262 | return deferredResult; | ||
263 | }, | ||
264 | |||
265 | //.......................................................................... | ||
266 | |||
267 | 'shouldShowPaymentReminder': function () { | ||
268 | return true; | ||
269 | }, | ||
270 | |||
271 | 'showPaymentReminder': function () { | ||
272 | vardeferredResult; | ||
273 | |||
274 | deferredResult = new Clipperz.Async.Deferred('MainController.showPaymentReminder', {trace:false}); | ||
275 | |||
276 | if (this.shouldShowPaymentReminder()) { | ||
277 | deferredResult.addCallback(function () { console.log("--> payment reminder"); }); | ||
278 | } | ||
279 | deferredResult.callback(); | ||
280 | |||
281 | return deferredResult; | ||
282 | }, | ||
283 | |||
284 | //.......................................................................... | ||
285 | |||
286 | 'canCopyDataLocally': function () { | ||
287 | return false; | ||
288 | }, | ||
289 | |||
290 | 'copyDataLocally': function () { | ||
291 | vardeferredResult; | ||
292 | |||
293 | deferredResult = new Clipperz.Async.Deferred('MainController.copyDataLocally', {trace:false}); | ||
294 | |||
295 | if (this.canCopyDataLocally()) { | ||
296 | deferredResult.addCallback(function () { console.log("--> copy data locally"); }); | ||
297 | } | ||
298 | deferredResult.callback(); | ||
299 | |||
300 | return deferredResult; | ||
301 | |||
302 | }, | ||
303 | |||
304 | //------------------------------------------------------------------------- | ||
305 | |||
306 | 'runApplication': function () { | ||
307 | var deferredResult; | ||
308 | |||
309 | //console.log(">>> runApplication"); | ||
310 | deferredResult = new Clipperz.Async.Deferred('MainController.runApplication', {trace:true}); | ||
311 | deferredResult.addMethod(this.user(), 'getRecords'); | ||
312 | deferredResult.addMethod(this, 'showCards'); | ||
313 | deferredResult.callback(); | ||
314 | |||
315 | return deferredResult; | ||
316 | }, | ||
317 | |||
318 | //========================================================================= | ||
319 | |||
320 | 'showOfflineError': function (anException) { | ||
321 | alert("Error: " + anException); | ||
322 | throw anException; | ||
323 | }, | ||
324 | |||
325 | //========================================================================= | ||
326 | |||
327 | 'isOnline': function() { | ||
328 | return navigator.onLine; | ||
329 | }, | ||
330 | |||
331 | 'hasLocalData': function() { | ||
332 | return false; | ||
333 | }, | ||
334 | |||
335 | //========================================================================= | ||
336 | |||
337 | 'loginForm': function() { | ||
338 | if (this._loginForm == null) { | ||
339 | this._loginForm = new Clipperz.PM.UI.Mobile.Components.LoginForm({element:MochiKit.DOM.getElement('loginForm')}); | ||
340 | } | ||
341 | |||
342 | return this._loginForm; | ||
343 | }, | ||
344 | |||
345 | 'removeLoginForm': function () { | ||
346 | if (this._loginForm != null) { | ||
347 | this._loginForm.remove(); | ||
348 | this._loginForm = null; | ||
349 | } | ||
350 | }, | ||
351 | |||
352 | //------------------------------------------------------------------------- | ||
353 | |||
354 | 'cardList': function () { | ||
355 | if (this._cardList == null) { | ||
356 | this._cardList = new Clipperz.PM.UI.Mobile.Components.CardList({element:MochiKit.DOM.getElement('cardList')}); | ||
357 | MochiKit.Signal.connect(this._cardList, 'selectedCard', this, 'selectCardHandler'); | ||
358 | } | ||
359 | |||
360 | return this._cardList; | ||
361 | }, | ||
362 | |||
363 | 'showCards': function (someCards) { | ||
364 | this.cardList().showCards(someCards); | ||
365 | this.jQTouch().goTo('#cardList', 'slideleft'); | ||
366 | }, | ||
367 | |||
368 | //------------------------------------------------------------------------- | ||
369 | |||
370 | 'cardDetail': function () { | ||
371 | if (this._cardDetail == null) { | ||
372 | this._cardDetail = new Clipperz.PM.UI.Mobile.Components.CardDetail({element:MochiKit.DOM.getElement('cardDetail')}); | ||
373 | } | ||
374 | |||
375 | return this._cardDetail; | ||
376 | }, | ||
377 | |||
378 | 'selectCardHandler': function (aCardReference) { | ||
379 | var deferredResult; | ||
380 | |||
381 | deferredResult = new Clipperz.Async.Deferred("MainController.selectCardHandler", {trace:true}); | ||
382 | deferredResult.addMethod(this.cardDetail(), 'render'); | ||
383 | deferredResult.addMethod(this.jQTouch(), 'goTo', '#cardDetail', 'slideleft'); | ||
384 | deferredResult.addMethod(this.user(), 'getRecord', aCardReference); | ||
385 | deferredResult.addMethod(this.cardDetail(), 'showCard'); | ||
386 | deferredResult.callback(); | ||
387 | |||
388 | return deferredResult; | ||
389 | }, | ||
390 | |||
391 | //========================================================================= | ||
392 | __syntaxFix__: "syntax fix" | ||
393 | }); | ||
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AccountPanel.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AccountPanel.js index ee6d7a3..d6b0574 100644 --- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AccountPanel.js +++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AccountPanel.js | |||
@@ -1,145 +1,150 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); | 26 | Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); |
27 | 27 | ||
28 | Clipperz.PM.UI.Web.Components.AccountPanel = function(args) { | 28 | Clipperz.PM.UI.Web.Components.AccountPanel = function(args) { |
29 | args = args || {}; | 29 | args = args || {}; |
30 | 30 | ||
31 | Clipperz.PM.UI.Web.Components.AccountPanel.superclass.constructor.apply(this, arguments); | 31 | Clipperz.PM.UI.Web.Components.AccountPanel.superclass.constructor.apply(this, arguments); |
32 | 32 | ||
33 | //this._initiallySelectedTab = args.selected || 'ACCOUNT'; | 33 | //this._initiallySelectedTab = args.selected || 'ACCOUNT'; |
34 | this._initiallySelectedTab = args.selected || 'PASSPHRASE'; | 34 | this._initiallySelectedTab = args.selected || 'PASSPHRASE'; |
35 | this._tabPanelControllerConfiguration = { | 35 | this._tabPanelControllerConfiguration = { |
36 | // 'ACCOUNT': { | 36 | // 'ACCOUNT': { |
37 | // tab:'accountTab', | 37 | // tab:'accountTab', |
38 | // panel:'accountPanel' | 38 | // panel:'accountPanel' |
39 | // }, | 39 | // }, |
40 | 'PASSPHRASE': { | 40 | 'PASSPHRASE': { |
41 | tab:'passphraseTab', | 41 | tab:'passphraseTab', |
42 | panel:'passphrasePanel' | 42 | panel:'passphrasePanel' |
43 | }, | 43 | }, |
44 | 'OTP': { | ||
45 | tab:'OTPTab', | ||
46 | panel:'OTPPanel' | ||
47 | }, | ||
44 | 'PREFERENCES': { | 48 | 'PREFERENCES': { |
45 | tab:'preferencesTab', | 49 | tab:'preferencesTab', |
46 | panel:'preferencesPanel' | 50 | panel:'preferencesPanel' |
47 | }, | 51 | }, |
48 | 'LOGIN_HISTORY': { | 52 | 'LOGIN_HISTORY': { |
49 | tab:'loginHistoryTab', | 53 | tab:'loginHistoryTab', |
50 | panel:'loginHistoryPanel' | 54 | panel:'loginHistoryPanel' |
51 | } | 55 | } |
52 | }; | 56 | }; |
53 | 57 | ||
54 | return this; | 58 | return this; |
55 | } | 59 | } |
56 | 60 | ||
57 | //============================================================================= | 61 | //============================================================================= |
58 | 62 | ||
59 | Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.AccountPanel, Clipperz.PM.UI.Common.Components.TabPanelComponent, { | 63 | Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.AccountPanel, Clipperz.PM.UI.Common.Components.TabPanelComponent, { |
60 | 64 | ||
61 | //------------------------------------------------------------------------- | 65 | //------------------------------------------------------------------------- |
62 | 66 | ||
63 | 'toString': function () { | 67 | 'toString': function () { |
64 | return "Clipperz.PM.UI.Web.Components.AccountPanel component"; | 68 | return "Clipperz.PM.UI.Web.Components.AccountPanel component"; |
65 | }, | 69 | }, |
66 | 70 | ||
67 | //------------------------------------------------------------------------- | 71 | //------------------------------------------------------------------------- |
68 | 72 | ||
69 | 'renderSelf': function(/*aContainer, aPosition*/) { | 73 | 'renderSelf': function(/*aContainer, aPosition*/) { |
70 | //Clipperz.log("AccountPanel.renderSelf element", this.element()); | 74 | //Clipperz.log("AccountPanel.renderSelf element", this.element()); |
71 | this.append(this.element(), [ | 75 | this.append(this.element(), [ |
72 | {tag:'div', cls:'header', children:[ | 76 | {tag:'div', cls:'header', children:[ |
73 | {tag:'div', cls:'subPanelTabs', children:[ | 77 | {tag:'div', cls:'subPanelTabs', children:[ |
74 | {tag:'ul', children:[ | 78 | {tag:'ul', children:[ |
75 | // {tag:'li', id:this.getId('accountTab'), children:[{tag:'a', href:'#', html:'Account'}], cls:'first'}, | 79 | // {tag:'li', id:this.getId('accountTab'), children:[{tag:'a', href:'#', html:'Account'}], cls:'first'}, |
76 | {tag:'li', id:this.getId('passphraseTab'), children:[{tag:'a', href:'#', html:'Passphrase'}], cls:'first'}, | 80 | {tag:'li', id:this.getId('passphraseTab'), children:[{tag:'a', href:'#', html:'Passphrase'}], cls:'first'}, |
81 | {tag:'li', id:this.getId('OTPTab'), children:[{tag:'a', href:'#', html:'One Time Passwords'}]}, | ||
77 | {tag:'li', id:this.getId('preferencesTab'), children:[{tag:'a', href:'#', html:'Preferences'}]}, | 82 | {tag:'li', id:this.getId('preferencesTab'), children:[{tag:'a', href:'#', html:'Preferences'}]}, |
78 | {tag:'li', id:this.getId('loginHistoryTab'),children:[{tag:'a', href:'#', html:'Login history'}]} | 83 | {tag:'li', id:this.getId('loginHistoryTab'),children:[{tag:'a', href:'#', html:'Login history'}]} |
79 | ]} | 84 | ]} |
80 | ]} | 85 | ]} |
81 | ]}, | 86 | ]}, |
82 | {tag:'div', cls:'body', children:[ | 87 | {tag:'div', cls:'body', children:[ |
83 | {tag:'div', cls:'accountPanel', children:[ | 88 | {tag:'div', cls:'accountPanel', children:[ |
84 | {tag:'div', cls:'subPanelContent', children:[ | 89 | {tag:'div', cls:'subPanelContent', children:[ |
85 | {tag:'ul', children:[ | 90 | {tag:'ul', children:[ |
86 | // {tag:'li', id:this.getId('accountPanel'),children:[ | 91 | // {tag:'li', id:this.getId('accountPanel'),children:[ |
87 | // {tag:'h3', html:"-- Account --"} | 92 | // {tag:'h3', html:"-- Account --"} |
88 | // ]}, | 93 | // ]}, |
89 | {tag:'li', id:this.getId('passphrasePanel'),children:[ | 94 | {tag:'li', id:this.getId('passphrasePanel'),children:[ |
90 | {tag:'h3', cls:'changePassphrase', html:"Change passphrase"}, | 95 | {tag:'h3', cls:'changePassphrase', html:"Change passphrase"}, |
91 | {tag:'form', id:this.getId('changePassphrase'), cls:'changePassphrase', children:[ | 96 | {tag:'form', id:this.getId('changePassphrase'), cls:'changePassphrase', children:[ |
92 | {tag:'div', cls:'currentCredentials', children:[ | 97 | {tag:'div', cls:'currentCredentials', children:[ |
93 | {tag:'div', cls:'field username', children:[ | 98 | {tag:'div', cls:'field username', children:[ |
94 | {tag:'label', html:"username", 'for':this.getId('currentUsername')}, | 99 | {tag:'label', html:"username", 'for':this.getId('currentUsername')}, |
95 | {tag:'input', id:this.getId('currentUsername')} | 100 | {tag:'input', id:this.getId('currentUsername')} |
96 | ]}, | 101 | ]}, |
97 | {tag:'div', cls:'field passphrase', children:[ | 102 | {tag:'div', cls:'field passphrase', children:[ |
98 | {tag:'label', html:"passphrase", 'for':this.getId('currentPassphrase')}, | 103 | {tag:'label', html:"passphrase", 'for':this.getId('currentPassphrase')}, |
99 | {tag:'input', id:this.getId('currentPassphrase')} | 104 | {tag:'input', id:this.getId('currentPassphrase')} |
100 | ]} | 105 | ]} |
101 | ]}, | 106 | ]}, |
102 | {tag:'div', cls:'newPassphrase', children:[ | 107 | {tag:'div', cls:'newPassphrase', children:[ |
103 | {tag:'div', cls:'field', children:[ | 108 | {tag:'div', cls:'field', children:[ |
104 | {tag:'label', html:"new passphrase", 'for':this.getId('newPassphrase')}, | 109 | {tag:'label', html:"new passphrase", 'for':this.getId('newPassphrase')}, |
105 | {tag:'input', id:this.getId('newPassphrase')} | 110 | {tag:'input', id:this.getId('newPassphrase')} |
106 | ]}, | 111 | ]}, |
107 | {tag:'div', cls:'field', children:[ | 112 | {tag:'div', cls:'field', children:[ |
108 | {tag:'label', html:"re-new passphrase", 'for':this.getId('reNewPassphrase')}, | 113 | {tag:'label', html:"re-new passphrase", 'for':this.getId('reNewPassphrase')}, |
109 | {tag:'input', id:this.getId('reNewPassphrase')} | 114 | {tag:'input', id:this.getId('reNewPassphrase')} |
110 | ]} | 115 | ]} |
111 | ]}, | 116 | ]}, |
112 | {tag:'div', cls:'confirm', children:[ | 117 | {tag:'div', cls:'confirm', children:[ |
113 | {tag:'input', type:'checkbox', id:this.getId('confirm')}, | 118 | {tag:'input', type:'checkbox', id:this.getId('confirm')}, |
114 | {tag:'label', html:"I understand that Clipperz will not be able to recover a lost passphrase", 'for':this.getId('confirm')} | 119 | {tag:'label', html:"I understand that Clipperz will not be able to recover a lost passphrase", 'for':this.getId('confirm')} |
115 | ]} | 120 | ]} |
116 | ]}, | 121 | ]}, |
117 | {tag:'div', cls:'clear'}, | 122 | {tag:'div', cls:'clear'}, |
118 | {tag:'div', cls:'confirmButton', id:this.getId('confirmationButton'), children:[ | 123 | {tag:'div', cls:'confirmButton', id:this.getId('confirmationButton'), children:[ |
119 | {tag:'span', html:"change passphrase"} | 124 | {tag:'span', html:"change passphrase"} |
120 | ]}, | 125 | ]} |
121 | 126 | ]}, | |
122 | {tag:'h3', cls:'manageOTP', html:"Manage One-Time Passphrases"}, | 127 | {tag:'li', id:this.getId('OTPPanel'), children:[ |
123 | {} | 128 | // {tag:'h3', html:"Manage One-Time Passphrases"} |
124 | ]}, | 129 | ]}, |
125 | {tag:'li', id:this.getId('preferencesPanel'), children:[ | 130 | {tag:'li', id:this.getId('preferencesPanel'), children:[ |
126 | {tag:'h3', html:"-- Preferences --"} | 131 | // {tag:'h3', html:"-- Preferences --"} |
127 | ]}, | 132 | ]}, |
128 | {tag:'li', id:this.getId('loginHistoryPanel'), children:[ | 133 | {tag:'li', id:this.getId('loginHistoryPanel'), children:[ |
129 | {tag:'h3', html:"-- Login History --"} | 134 | // {tag:'h3', html:"-- Login History --"} |
130 | ]} | 135 | ]} |
131 | ]} | 136 | ]} |
132 | ]} | 137 | ]} |
133 | ]} | 138 | ]} |
134 | ]}, | 139 | ]}, |
135 | {tag:'div', cls:'footer'} | 140 | {tag:'div', cls:'footer'} |
136 | ]); | 141 | ]); |
137 | 142 | ||
138 | this.tabPanelController().setup({selected:this.initiallySelectedTab()}); | 143 | this.tabPanelController().setup({selected:this.initiallySelectedTab()}); |
139 | }, | 144 | }, |
140 | 145 | ||
141 | //------------------------------------------------------------------------- | 146 | //------------------------------------------------------------------------- |
142 | 147 | ||
143 | 148 | ||
144 | __syntaxFix__: "syntax fix" | 149 | __syntaxFix__: "syntax fix" |
145 | }); | 150 | }); |
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DataPanel.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DataPanel.js index d2f1045..462d864 100644 --- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DataPanel.js +++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DataPanel.js | |||
@@ -1,108 +1,116 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); | 26 | Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); |
27 | 27 | ||
28 | Clipperz.PM.UI.Web.Components.DataPanel = function(args) { | 28 | Clipperz.PM.UI.Web.Components.DataPanel = function(args) { |
29 | args = args || {}; | 29 | args = args || {}; |
30 | 30 | ||
31 | Clipperz.PM.UI.Web.Components.DataPanel.superclass.constructor.apply(this, arguments); | 31 | Clipperz.PM.UI.Web.Components.DataPanel.superclass.constructor.apply(this, arguments); |
32 | 32 | ||
33 | this._initiallySelectedTab = args.selected || 'OFFLINE_COPY'; | 33 | this._initiallySelectedTab = args.selected || 'OFFLINE_COPY'; |
34 | this._tabPanelControllerConfiguration = { | 34 | this._tabPanelControllerConfiguration = { |
35 | 'OFFLINE_COPY': { | 35 | 'OFFLINE_COPY': { |
36 | tab:'offlineCopyTab', | 36 | tab:'offlineCopyTab', |
37 | panel:'offlineCopyPanel' | 37 | panel:'offlineCopyPanel' |
38 | }, | 38 | }, |
39 | 'SHARING': { | 39 | 'SHARING': { |
40 | tab:'sharingTab', | 40 | tab:'sharingTab', |
41 | panel:'sharingPanel' | 41 | panel:'sharingPanel' |
42 | }, | 42 | }, |
43 | 'IMPORT': { | 43 | 'IMPORT': { |
44 | tab:'importTab', | 44 | tab:'importTab', |
45 | panel:'importPanel' | 45 | panel:'importPanel' |
46 | }, | 46 | }, |
47 | 'EXPORT': { | 47 | 'EXPORT': { |
48 | tab:'exportTab', | 48 | tab:'exportTab', |
49 | panel:'exportPanel' | 49 | panel:'exportPanel' |
50 | } | 50 | } |
51 | }; | 51 | }; |
52 | 52 | ||
53 | return this; | 53 | return this; |
54 | } | 54 | } |
55 | 55 | ||
56 | //============================================================================= | 56 | //============================================================================= |
57 | 57 | ||
58 | Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DataPanel, Clipperz.PM.UI.Common.Components.TabPanelComponent, { | 58 | Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DataPanel, Clipperz.PM.UI.Common.Components.TabPanelComponent, { |
59 | 59 | ||
60 | //------------------------------------------------------------------------- | 60 | //------------------------------------------------------------------------- |
61 | 61 | ||
62 | 'toString': function () { | 62 | 'toString': function () { |
63 | return "Clipperz.PM.UI.Web.Components.DataPanel component"; | 63 | return "Clipperz.PM.UI.Web.Components.DataPanel component"; |
64 | }, | 64 | }, |
65 | 65 | ||
66 | //------------------------------------------------------------------------- | 66 | //------------------------------------------------------------------------- |
67 | 67 | ||
68 | 'renderSelf': function(/*aContainer, aPosition*/) { | 68 | 'renderSelf': function(/*aContainer, aPosition*/) { |
69 | this.append(this.element(), [ | 69 | this.append(this.element(), [ |
70 | {tag:'div', cls:'header', children:[ | 70 | {tag:'div', cls:'header', children:[ |
71 | {tag:'div', cls:'subPanelTabs', children:[ | 71 | {tag:'div', cls:'subPanelTabs', children:[ |
72 | {tag:'ul', children:[ | 72 | {tag:'ul', children:[ |
73 | {tag:'li', id:this.getId('offlineCopyTab'),children:[{tag:'a', href:'#', html:'Offline copy'}], cls:'first'}, | 73 | {tag:'li', id:this.getId('offlineCopyTab'),children:[{tag:'a', href:'#', html:'Offline copy'}], cls:'first'}, |
74 | {tag:'li', id:this.getId('sharingTab'), children:[{tag:'a', href:'#', html:'Sharing'}]}, | 74 | {tag:'li', id:this.getId('sharingTab'), children:[{tag:'a', href:'#', html:'Sharing'}]}, |
75 | {tag:'li', id:this.getId('importTab'), children:[{tag:'a', href:'#', html:'Import'}]}, | 75 | {tag:'li', id:this.getId('importTab'), children:[{tag:'a', href:'#', html:'Import'}]}, |
76 | {tag:'li', id:this.getId('exportTab'), children:[{tag:'a', href:'#', html:'Export'}]} | 76 | {tag:'li', id:this.getId('exportTab'), children:[{tag:'a', href:'#', html:'Export'}]} |
77 | ]} | 77 | ]} |
78 | ]} | 78 | ]} |
79 | ]}, | 79 | ]}, |
80 | {tag:'div', cls:'body', children:[ | 80 | {tag:'div', cls:'body', children:[ |
81 | {tag:'div', cls:'accountPanel', children:[ | 81 | {tag:'div', cls:'accountPanel', children:[ |
82 | {tag:'div', cls:'subPanelContent', children:[ | 82 | {tag:'div', cls:'subPanelContent', children:[ |
83 | {tag:'ul', children:[ | 83 | {tag:'ul', children:[ |
84 | {tag:'li', id:this.getId('offlineCopyPanel'),children:[ | 84 | {tag:'li', id:this.getId('offlineCopyPanel'),children:[ |
85 | {tag:'h3', html:"Offline copy"} | 85 | // {tag:'h3', html:"Offline copy"}, |
86 | {tag:'p', html:"With just one click you can dump all your encrypted data from Clipperz servers to your hard disk and create a read-only offline version of Clipperz to be used when you are not connected to the Internet."}, | ||
87 | {tag:'a', id:this.getId('offlineCopyDownloadLink'), href:'#', html:"Download", cls:'downloadOfflineCopy'} | ||
86 | ]}, | 88 | ]}, |
87 | {tag:'li', id:this.getId('sharingPanel'),children:[ | 89 | {tag:'li', id:this.getId('sharingPanel'),children:[ |
88 | {tag:'h3', html:"Sharing"} | 90 | // {tag:'h3', html:"Sharing"} |
89 | ]}, | 91 | ]}, |
90 | {tag:'li', id:this.getId('importPanel'), children:[ | 92 | {tag:'li', id:this.getId('importPanel'), children:[ |
91 | {tag:'h3', html:"Import"} | 93 | // {tag:'h3', html:"Import"} |
92 | ]}, | 94 | ]}, |
93 | {tag:'li', id:this.getId('exportPanel'), children:[ | 95 | {tag:'li', id:this.getId('exportPanel'), children:[ |
94 | {tag:'h3', html:"Export"} | 96 | // {tag:'h3', html:"Export"} |
95 | ]} | 97 | ]} |
96 | ]} | 98 | ]} |
97 | ]} | 99 | ]} |
98 | ]} | 100 | ]} |
99 | ]}, | 101 | ]}, |
100 | {tag:'div', cls:'footer'} | 102 | {tag:'div', cls:'footer'} |
101 | ]); | 103 | ]); |
102 | 104 | ||
103 | this.tabPanelController().setup({selected:this.initiallySelectedTab()}); | 105 | this.tabPanelController().setup({selected:this.initiallySelectedTab()}); |
106 | MochiKit.Signal.connect(this.getId('offlineCopyDownloadLink'), 'onclick', this, 'downloadOfflineCopy'); | ||
104 | }, | 107 | }, |
105 | 108 | ||
109 | 'downloadOfflineCopy': function (anEvent) { | ||
110 | anEvent.preventDefault(); | ||
111 | MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'downloadOfflineCopy', anEvent.src()); | ||
112 | }, | ||
113 | |||
106 | //------------------------------------------------------------------------- | 114 | //------------------------------------------------------------------------- |
107 | __syntaxFix__: "syntax fix" | 115 | __syntaxFix__: "syntax fix" |
108 | }); | 116 | }); |
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginProgress.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginProgress.js index 5d082b5..26506e7 100644 --- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginProgress.js +++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginProgress.js | |||
@@ -1,152 +1,156 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); | 26 | Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); |
27 | 27 | ||
28 | Clipperz.PM.UI.Web.Components.LoginProgress = function(args) { | 28 | Clipperz.PM.UI.Web.Components.LoginProgress = function(args) { |
29 | args = args || {}; | 29 | args = args || {}; |
30 | 30 | ||
31 | Clipperz.PM.UI.Web.Components.LoginProgress.superclass.constructor.apply(this, arguments); | 31 | Clipperz.PM.UI.Web.Components.LoginProgress.superclass.constructor.apply(this, arguments); |
32 | 32 | ||
33 | this._deferred = null; | 33 | this._deferred = null; |
34 | 34 | ||
35 | return this; | 35 | return this; |
36 | } | 36 | } |
37 | 37 | ||
38 | //============================================================================= | 38 | //============================================================================= |
39 | 39 | ||
40 | Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginProgress, Clipperz.PM.UI.Common.Components.BaseComponent, { | 40 | Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginProgress, Clipperz.PM.UI.Common.Components.BaseComponent, { |
41 | 41 | ||
42 | //------------------------------------------------------------------------- | 42 | //------------------------------------------------------------------------- |
43 | 43 | ||
44 | 'toString': function () { | 44 | 'toString': function () { |
45 | return "Clipperz.PM.UI.Web.Components.LoginProgress component"; | 45 | return "Clipperz.PM.UI.Web.Components.LoginProgress component"; |
46 | }, | 46 | }, |
47 | 47 | ||
48 | //------------------------------------------------------------------------- | 48 | //------------------------------------------------------------------------- |
49 | 49 | ||
50 | 'deferred': function() { | 50 | 'deferred': function() { |
51 | return this._deferred; | 51 | return this._deferred; |
52 | }, | 52 | }, |
53 | 53 | ||
54 | 'setDeferred': function(aValue) { | 54 | 'setDeferred': function(aValue) { |
55 | this._deferred = aValue; | 55 | this._deferred = aValue; |
56 | }, | 56 | }, |
57 | 57 | ||
58 | //------------------------------------------------------------------------- | 58 | //------------------------------------------------------------------------- |
59 | 59 | ||
60 | 'renderSelf': function() { | 60 | 'renderSelf': function() { |
61 | // var loginProgressElement; | 61 | // var loginProgressElement; |
62 | // | 62 | // |
63 | // loginProgressElement = MochiKit.DOM.getElement('loginProgress'); | 63 | // loginProgressElement = MochiKit.DOM.getElement('loginProgress'); |
64 | // | 64 | // |
65 | // if (loginProgressElement == null) { | 65 | // if (loginProgressElement == null) { |
66 | // loginProgressElement = this.append(this.element(), {tag:'div', id:'loginProgress', cls:'LoginProgress'}, true); | 66 | // loginProgressElement = this.append(this.element(), {tag:'div', id:'loginProgress', cls:'LoginProgress'}, true); |
67 | // } | 67 | // } |
68 | 68 | ||
69 | //console.log(">> LoginProgress.renderSelf", this.element()); | 69 | //console.log(">> LoginProgress.renderSelf", this.element()); |
70 | this.append(this.element(), {tag:'div', id:'loginProgress', cls:'LoginProgress', children: [ | 70 | this.append(this.element(), {tag:'div', id:'loginProgress', cls:'LoginProgress', children: [ |
71 | // this.append(loginProgressElement, [ | 71 | // this.append(loginProgressElement, [ |
72 | {tag:'div', cls:'header', children:[ | 72 | {tag:'div', cls:'header', children:[ |
73 | {tag:'h3', id:this.getId('title'), html:"login progress"} | 73 | {tag:'h3', id:this.getId('title'), html:"login progress"} |
74 | ]}, | 74 | ]}, |
75 | {tag:'div', cls:'body', children:[ | 75 | {tag:'div', cls:'body', children:[ |
76 | {tag:'div', id:this.getId('progressBar')}, | 76 | {tag:'div', id:this.getId('progressBar')}, |
77 | {tag:'div', id:this.getId('errorBox'), cls:'errorBox', children:[ | 77 | {tag:'div', id:this.getId('errorBox'), cls:'errorBox', children:[ |
78 | // {tag:'div',cls:'img ALERT', children:[{tag:'div'}]}, | 78 | // {tag:'div',cls:'img ALERT', children:[{tag:'div'}]}, |
79 | {tag:'div',cls:'img ALERT', children:[{tag:'canvas', id:this.getId('canvas')}]}, | 79 | {tag:'div',cls:'img ALERT', children:[{tag:'canvas', id:this.getId('canvas')}]}, |
80 | {tag:'p', html:"Login failed"} | 80 | {tag:'p', html:"Login failed"} |
81 | ]} | 81 | ]} |
82 | ]}, | 82 | ]}, |
83 | {tag:'div', cls:'footer', children:[ | 83 | {tag:'div', cls:'footer', children:[ |
84 | {tag:'div', cls:'buttonArea', id:this.getId('buttonArea'), children:[ | 84 | {tag:'div', cls:'buttonArea', id:this.getId('buttonArea'), children:[ |
85 | {tag:'div', cls:'button', id:this.getId('button'), children:[ | 85 | // {tag:'div', cls:'button', id:this.getId('button'), children:[ |
86 | {tag:'a', href:'#', id:this.getId('buttonLink'), html:"cancel"} | 86 | // {tag:'a', href:'#', id:this.getId('buttonLink'), html:"cancel"} |
87 | ]} | 87 | // ]} |
88 | {tag:'a', cls:'button', id:this.getId('button'), html:"cancel"} | ||
88 | ]} | 89 | ]} |
89 | ]} | 90 | ]} |
90 | ]}); | 91 | ]}); |
91 | // ]); | 92 | // ]); |
92 | 93 | ||
93 | Clipperz.PM.UI.Canvas.marks['!'](this.getElement('canvas'), "#ffffff"); | 94 | Clipperz.PM.UI.Canvas.marks['!'](this.getElement('canvas'), "#ffffff"); |
94 | 95 | ||
95 | this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')})); | 96 | this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')})); |
96 | MochiKit.Style.hideElement(this.getElement('errorBox')); | 97 | MochiKit.Style.hideElement(this.getElement('errorBox')); |
97 | 98 | ||
98 | MochiKit.Signal.connect(this.getId('buttonLink'), 'onclick', this, 'cancelEventHandler'); | 99 | // MochiKit.Signal.connect(this.getId('buttonLink'), 'onclick', this, 'cancelEventHandler'); |
100 | MochiKit.Signal.connect(this.getId('button'), 'onclick', this, 'cancelEventHandler'); | ||
99 | }, | 101 | }, |
100 | 102 | ||
101 | //------------------------------------------------------------------------- | 103 | //------------------------------------------------------------------------- |
102 | 104 | ||
103 | 'displayElement': function() { | 105 | 'displayElement': function() { |
104 | return MochiKit.DOM.getElement('loginProgress'); | 106 | return MochiKit.DOM.getElement('loginProgress'); |
105 | }, | 107 | }, |
106 | 108 | ||
107 | //------------------------------------------------------------------------- | 109 | //------------------------------------------------------------------------- |
108 | 110 | ||
109 | 'cancelEventHandler': function(anEvent) { | 111 | 'cancelEventHandler': function(anEvent) { |
110 | anEvent.preventDefault(); | 112 | anEvent.preventDefault(); |
111 | 113 | ||
112 | MochiKit.Signal.signal(this, 'cancelEvent'); | 114 | MochiKit.Signal.signal(this, 'cancelEvent'); |
113 | }, | 115 | }, |
114 | 116 | ||
115 | //------------------------------------------------------------------------- | 117 | //------------------------------------------------------------------------- |
116 | 118 | ||
117 | 'disableCancel': function() { | 119 | 'disableCancel': function() { |
118 | MochiKit.Style.hideElement(this.getElement('buttonArea')); | 120 | MochiKit.Style.hideElement(this.getElement('buttonArea')); |
119 | }, | 121 | }, |
120 | 122 | ||
121 | //------------------------------------------------------------------------- | 123 | //------------------------------------------------------------------------- |
122 | 124 | ||
123 | 'showErrorMessage': function() { | 125 | 'showErrorMessage': function() { |
124 | this.getElement('buttonLink').innerHTML = "close"; | 126 | // this.getElement('buttonLink').innerHTML = "close"; |
127 | this.getElement('button').innerHTML = "close"; | ||
128 | MochiKit.DOM.addElementClass(this.getElement('button'), 'default'); | ||
125 | 129 | ||
126 | MochiKit.Style.hideElement(this.getElement('progressBar')); | 130 | MochiKit.Style.hideElement(this.getElement('progressBar')); |
127 | 131 | ||
128 | this.getElement('title').innerHTML = "Error"; | 132 | this.getElement('title').innerHTML = "Error"; |
129 | MochiKit.Style.showElement(this.getElement('errorBox')); | 133 | MochiKit.Style.showElement(this.getElement('errorBox')); |
130 | MochiKit.Style.showElement(this.getElement('buttonArea')); | 134 | MochiKit.Style.showElement(this.getElement('buttonArea')); |
131 | }, | 135 | }, |
132 | 136 | ||
133 | //------------------------------------------------------------------------- | 137 | //------------------------------------------------------------------------- |
134 | 138 | ||
135 | 'deferredHideModalAndRemove': function(someParameters, aResult) { | 139 | 'deferredHideModalAndRemove': function(someParameters, aResult) { |
136 | vardeferredResult; | 140 | vardeferredResult; |
137 | 141 | ||
138 | deferredResult = new Clipperz.Async.Deferred("LoginProgress.deferredHideModalAndRemove", {trace:false}); | 142 | deferredResult = new Clipperz.Async.Deferred("LoginProgress.deferredHideModalAndRemove", {trace:false}); |
139 | deferredResult.addMethod(this, 'deferredHideModal'); | 143 | deferredResult.addMethod(this, 'deferredHideModal'); |
140 | deferredResult.addMethod(this, 'remove'); | 144 | deferredResult.addMethod(this, 'remove'); |
141 | deferredResult.addCallback(function () { | 145 | deferredResult.addCallback(function () { |
142 | return aResult; | 146 | return aResult; |
143 | }); | 147 | }); |
144 | deferredResult.callback(someParameters); | 148 | deferredResult.callback(someParameters); |
145 | 149 | ||
146 | return deferredResult; | 150 | return deferredResult; |
147 | }, | 151 | }, |
148 | 152 | ||
149 | //------------------------------------------------------------------------- | 153 | //------------------------------------------------------------------------- |
150 | 154 | ||
151 | __syntaxFix__: "syntax fix" | 155 | __syntaxFix__: "syntax fix" |
152 | }); | 156 | }); |
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ToolsPanel.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ToolsPanel.js index 3ee6189..0fa369f 100644 --- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ToolsPanel.js +++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ToolsPanel.js | |||
@@ -1,110 +1,110 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); | 26 | Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); |
27 | 27 | ||
28 | Clipperz.PM.UI.Web.Components.ToolsPanel = function(args) { | 28 | Clipperz.PM.UI.Web.Components.ToolsPanel = function(args) { |
29 | args = args || {}; | 29 | args = args || {}; |
30 | 30 | ||
31 | Clipperz.PM.UI.Web.Components.ToolsPanel.superclass.constructor.apply(this, arguments); | 31 | Clipperz.PM.UI.Web.Components.ToolsPanel.superclass.constructor.apply(this, arguments); |
32 | 32 | ||
33 | this._initiallySelectedTab = args.selected || 'PASSWORD_GENERATOR'; | 33 | this._initiallySelectedTab = args.selected || 'PASSWORD_GENERATOR'; |
34 | this._tabPanelControllerConfiguration = { | 34 | this._tabPanelControllerConfiguration = { |
35 | 'PASSWORD_GENERATOR': { | 35 | 'PASSWORD_GENERATOR': { |
36 | tab:'passwordGeneratorTab', | 36 | tab:'passwordGeneratorTab', |
37 | panel:'passwordGeneratorPanel' | 37 | panel:'passwordGeneratorPanel' |
38 | }, | 38 | }, |
39 | 'BOOKMARKLET': { | 39 | 'BOOKMARKLET': { |
40 | tab:'bookmarkletTab', | 40 | tab:'bookmarkletTab', |
41 | panel:'bookmarkletPanel' | 41 | panel:'bookmarkletPanel' |
42 | }, | 42 | }, |
43 | 'COMPACT_EDITION': { | 43 | 'COMPACT_EDITION': { |
44 | tab:'compactEditionTab', | 44 | tab:'compactEditionTab', |
45 | panel:'compactEditionPanel' | 45 | panel:'compactEditionPanel' |
46 | }, | 46 | }, |
47 | 'HTTP_AUTH': { | 47 | 'HTTP_AUTH': { |
48 | tab:'httpAuthTab', | 48 | tab:'httpAuthTab', |
49 | panel:'httpAuthPanel' | 49 | panel:'httpAuthPanel' |
50 | } | 50 | } |
51 | }; | 51 | }; |
52 | 52 | ||
53 | return this; | 53 | return this; |
54 | } | 54 | } |
55 | 55 | ||
56 | //============================================================================= | 56 | //============================================================================= |
57 | 57 | ||
58 | Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.ToolsPanel, Clipperz.PM.UI.Common.Components.TabPanelComponent, { | 58 | Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.ToolsPanel, Clipperz.PM.UI.Common.Components.TabPanelComponent, { |
59 | 59 | ||
60 | //------------------------------------------------------------------------- | 60 | //------------------------------------------------------------------------- |
61 | 61 | ||
62 | 'toString': function () { | 62 | 'toString': function () { |
63 | return "Clipperz.PM.UI.Web.Components.ToolsPanel component"; | 63 | return "Clipperz.PM.UI.Web.Components.ToolsPanel component"; |
64 | }, | 64 | }, |
65 | 65 | ||
66 | //------------------------------------------------------------------------- | 66 | //------------------------------------------------------------------------- |
67 | 67 | ||
68 | 'renderSelf': function(/*aContainer, aPosition*/) { | 68 | 'renderSelf': function(/*aContainer, aPosition*/) { |
69 | this.append(this.element(), [ | 69 | this.append(this.element(), [ |
70 | {tag:'div', cls:'header', children:[ | 70 | {tag:'div', cls:'header', children:[ |
71 | {tag:'div', cls:'subPanelTabs', children:[ | 71 | {tag:'div', cls:'subPanelTabs', children:[ |
72 | {tag:'ul', children:[ | 72 | {tag:'ul', children:[ |
73 | {tag:'li', id:this.getId('passwordGeneratorTab'),children:[{tag:'a', href:'#', html:'Password generator'}], cls:'first'}, | 73 | {tag:'li', id:this.getId('passwordGeneratorTab'),children:[{tag:'a', href:'#', html:'Password generator'}], cls:'first'}, |
74 | {tag:'li', id:this.getId('bookmarkletTab'), children:[{tag:'a', href:'#', html:'Bookmarklet'}]}, | 74 | {tag:'li', id:this.getId('bookmarkletTab'), children:[{tag:'a', href:'#', html:'Bookmarklet'}]}, |
75 | {tag:'li', id:this.getId('compactEditionTab'), children:[{tag:'a', href:'#', html:'Compact edition'}]}, | 75 | {tag:'li', id:this.getId('compactEditionTab'), children:[{tag:'a', href:'#', html:'Compact edition'}]}, |
76 | {tag:'li', id:this.getId('httpAuthTab'), children:[{tag:'a', href:'#', html:'HTTP Auth'}]} | 76 | {tag:'li', id:this.getId('httpAuthTab'), children:[{tag:'a', href:'#', html:'HTTP Auth'}]} |
77 | ]} | 77 | ]} |
78 | ]} | 78 | ]} |
79 | ]}, | 79 | ]}, |
80 | {tag:'div', cls:'body', children:[ | 80 | {tag:'div', cls:'body', children:[ |
81 | {tag:'div', cls:'accountPanel', children:[ | 81 | {tag:'div', cls:'accountPanel', children:[ |
82 | {tag:'div', cls:'subPanelContent', children:[ | 82 | {tag:'div', cls:'subPanelContent', children:[ |
83 | {tag:'ul', children:[ | 83 | {tag:'ul', children:[ |
84 | {tag:'li', id:this.getId('passwordGeneratorPanel'),children:[ | 84 | {tag:'li', id:this.getId('passwordGeneratorPanel'),children:[ |
85 | {tag:'h3', html:"Password generator"} | 85 | // {tag:'h3', html:"Password generator"} |
86 | ]}, | 86 | ]}, |
87 | {tag:'li', id:this.getId('bookmarkletPanel'),children:[ | 87 | {tag:'li', id:this.getId('bookmarkletPanel'),children:[ |
88 | {tag:'h3', html:"Bookmarklet"} | 88 | // {tag:'h3', html:"Bookmarklet"} |
89 | ]}, | 89 | ]}, |
90 | {tag:'li', id:this.getId('compactEditionPanel'), children:[ | 90 | {tag:'li', id:this.getId('compactEditionPanel'), children:[ |
91 | {tag:'h3', html:"Compact edition"} | 91 | // {tag:'h3', html:"Compact edition"} |
92 | ]}, | 92 | ]}, |
93 | {tag:'li', id:this.getId('httpAuthPanel'), children:[ | 93 | {tag:'li', id:this.getId('httpAuthPanel'), children:[ |
94 | {tag:'h3', html:"HTTP Auth"} | 94 | // {tag:'h3', html:"HTTP Auth"} |
95 | ]} | 95 | ]} |
96 | ]} | 96 | ]} |
97 | ]} | 97 | ]} |
98 | ]} | 98 | ]} |
99 | ]}, | 99 | ]}, |
100 | {tag:'div', cls:'footer'} | 100 | {tag:'div', cls:'footer'} |
101 | ]); | 101 | ]); |
102 | 102 | ||
103 | this.tabPanelController().setup({selected:this.initiallySelectedTab()}); | 103 | this.tabPanelController().setup({selected:this.initiallySelectedTab()}); |
104 | }, | 104 | }, |
105 | 105 | ||
106 | //------------------------------------------------------------------------- | 106 | //------------------------------------------------------------------------- |
107 | 107 | ||
108 | 108 | ||
109 | __syntaxFix__: "syntax fix" | 109 | __syntaxFix__: "syntax fix" |
110 | }); | 110 | }); |
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/AppController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/AppController.js index 9a0e744..1ab2e69 100644 --- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/AppController.js +++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/AppController.js | |||
@@ -1,326 +1,351 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers'); | 26 | Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers'); |
27 | 27 | ||
28 | Clipperz.PM.UI.Web.Controllers.AppController = function(args) { | 28 | Clipperz.PM.UI.Web.Controllers.AppController = function(args) { |
29 | 29 | ||
30 | this._user = null; | 30 | this._user = null; |
31 | this._tabSlotNames = { | 31 | this._tabSlotNames = { |
32 | //tabName: slotName | 32 | //tabName: slotName |
33 | 'cards': 'cardGrid', | 33 | 'cards': 'cardGrid', |
34 | // 'directLogins':'directLoginGrid', | 34 | // 'directLogins':'directLoginGrid', |
35 | 'account': 'accountPanel', | 35 | 'account': 'accountPanel', |
36 | 'data': 'dataPanel', | 36 | 'data': 'dataPanel', |
37 | 'tools': 'toolsPanel' | 37 | 'tools': 'toolsPanel' |
38 | }; | 38 | }; |
39 | 39 | ||
40 | //controllers | 40 | //controllers |
41 | this._cardsController= null; | 41 | this._cardsController= null; |
42 | //this._directLoginsController = null; | 42 | //this._directLoginsController = null; |
43 | this._filterController = null; //new Clipperz.PM.UI.Web.Controllers.FilterController(); | 43 | this._filterController = null; //new Clipperz.PM.UI.Web.Controllers.FilterController(); |
44 | 44 | ||
45 | //components | 45 | //components |
46 | this._appPage = null; | 46 | this._appPage = null; |
47 | this._userInfoBox = null; | 47 | this._userInfoBox = null; |
48 | this._tabSidePanel = null; | 48 | this._tabSidePanel = null; |
49 | 49 | ||
50 | // MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'editCard', this, 'handleEditCard'); | 50 | // MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'editCard', this, 'handleEditCard'); |
51 | // MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'deleteCard',this, 'handleDeleteCard'); | 51 | // MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'deleteCard',this, 'handleDeleteCard'); |
52 | 52 | ||
53 | MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'userDataSuccessfullySaved',this, 'userDataSuccessfullySavedHandler'); | 53 | MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'userDataSuccessfullySaved',this, 'userDataSuccessfullySavedHandler'); |
54 | 54 | ||
55 | return this; | 55 | return this; |
56 | } | 56 | } |
57 | 57 | ||
58 | MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.AppController.prototype, { | 58 | MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.AppController.prototype, { |
59 | 59 | ||
60 | 'toString': function() { | 60 | 'toString': function() { |
61 | return "Clipperz.PM.UI.Web.Controllers.AppController"; | 61 | return "Clipperz.PM.UI.Web.Controllers.AppController"; |
62 | }, | 62 | }, |
63 | 63 | ||
64 | //----------------------------------------------------------------------------- | 64 | //----------------------------------------------------------------------------- |
65 | 65 | ||
66 | 'setUser': function(anUser) { | 66 | 'setUser': function(anUser) { |
67 | this._user = anUser; | 67 | this._user = anUser; |
68 | }, | 68 | }, |
69 | 69 | ||
70 | 'user': function() { | 70 | 'user': function() { |
71 | return this._user; | 71 | return this._user; |
72 | }, | 72 | }, |
73 | 73 | ||
74 | //----------------------------------------------------------------------------- | 74 | //----------------------------------------------------------------------------- |
75 | /* | 75 | /* |
76 | 'tabSlotNames': function() { | 76 | 'tabSlotNames': function() { |
77 | return this._tabSlotNames; | 77 | return this._tabSlotNames; |
78 | }, | 78 | }, |
79 | */ | 79 | */ |
80 | 'slotNameForTab': function(aTabName) { | 80 | 'slotNameForTab': function(aTabName) { |
81 | return this._tabSlotNames[aTabName]; | 81 | return this._tabSlotNames[aTabName]; |
82 | }, | 82 | }, |
83 | 83 | ||
84 | 'hideAllAppPageTabSlots': function() { | 84 | 'hideAllAppPageTabSlots': function() { |
85 | var aTabName; | 85 | var aTabName; |
86 | 86 | ||
87 | for (aTabName in this._tabSlotNames) { | 87 | for (aTabName in this._tabSlotNames) { |
88 | this.appPage().hideSlot(this.slotNameForTab(aTabName)); | 88 | this.appPage().hideSlot(this.slotNameForTab(aTabName)); |
89 | } | 89 | } |
90 | }, | 90 | }, |
91 | 91 | ||
92 | //----------------------------------------------------------------------------- | 92 | //----------------------------------------------------------------------------- |
93 | 93 | ||
94 | 'appPage': function() { | 94 | 'appPage': function() { |
95 | if (this._appPage == null) { | 95 | if (this._appPage == null) { |
96 | this._appPage = new Clipperz.PM.UI.Web.Components.AppPage(); | 96 | this._appPage = new Clipperz.PM.UI.Web.Components.AppPage(); |
97 | } | 97 | } |
98 | 98 | ||
99 | return this._appPage; | 99 | return this._appPage; |
100 | }, | 100 | }, |
101 | 101 | ||
102 | //----------------------------------------------------------------------------- | 102 | //----------------------------------------------------------------------------- |
103 | 103 | ||
104 | 'tabSidePanel': function() { | 104 | 'tabSidePanel': function() { |
105 | if (this._tabSidePanel == null) { | 105 | if (this._tabSidePanel == null) { |
106 | this._tabSidePanel = new Clipperz.PM.UI.Web.Components.TabSidePanel(); | 106 | this._tabSidePanel = new Clipperz.PM.UI.Web.Components.TabSidePanel(); |
107 | } | 107 | } |
108 | 108 | ||
109 | return this._tabSidePanel; | 109 | return this._tabSidePanel; |
110 | }, | 110 | }, |
111 | 111 | ||
112 | //----------------------------------------------------------------------------- | 112 | //----------------------------------------------------------------------------- |
113 | 113 | ||
114 | 'userInfoBox': function() { | 114 | 'userInfoBox': function() { |
115 | if (this._userInfoBox == null) { | 115 | if (this._userInfoBox == null) { |
116 | this._userInfoBox = new Clipperz.PM.UI.Web.Components.UserInfoBox(); | 116 | this._userInfoBox = new Clipperz.PM.UI.Web.Components.UserInfoBox(); |
117 | 117 | ||
118 | MochiKit.Signal.connect(this._userInfoBox, 'logout',this, 'handleLogout'); | 118 | MochiKit.Signal.connect(this._userInfoBox, 'logout',this, 'handleLogout'); |
119 | MochiKit.Signal.connect(this._userInfoBox, 'lock', this, 'handleLock'); | 119 | MochiKit.Signal.connect(this._userInfoBox, 'lock', this, 'handleLock'); |
120 | MochiKit.Signal.connect(this._userInfoBox, 'unlock',this, 'handleUnlock'); | 120 | MochiKit.Signal.connect(this._userInfoBox, 'unlock',this, 'handleUnlock'); |
121 | } | 121 | } |
122 | 122 | ||
123 | return this._userInfoBox; | 123 | return this._userInfoBox; |
124 | }, | 124 | }, |
125 | 125 | ||
126 | //----------------------------------------------------------------------------- | 126 | //----------------------------------------------------------------------------- |
127 | 127 | ||
128 | 'accountPanel': function () { | 128 | 'accountPanel': function () { |
129 | if (this._accountPanel == null) { | 129 | if (this._accountPanel == null) { |
130 | this._accountPanel = new Clipperz.PM.UI.Web.Components.AccountPanel(/*{selected:'Preferences'}*/); | 130 | this._accountPanel = new Clipperz.PM.UI.Web.Components.AccountPanel(/*{selected:'Preferences'}*/); |
131 | } | 131 | } |
132 | 132 | ||
133 | return this._accountPanel; | 133 | return this._accountPanel; |
134 | }, | 134 | }, |
135 | 135 | ||
136 | //......................................................................... | 136 | //......................................................................... |
137 | 137 | ||
138 | 'dataPanel': function () { | 138 | 'dataPanel': function () { |
139 | if (this._dataPanel == null) { | 139 | if (this._dataPanel == null) { |
140 | this._dataPanel = new Clipperz.PM.UI.Web.Components.DataPanel(); | 140 | this._dataPanel = new Clipperz.PM.UI.Web.Components.DataPanel(); |
141 | } | 141 | } |
142 | 142 | ||
143 | return this._dataPanel; | 143 | return this._dataPanel; |
144 | }, | 144 | }, |
145 | 145 | ||
146 | //......................................................................... | 146 | //......................................................................... |
147 | 147 | ||
148 | 'toolsPanel': function () { | 148 | 'toolsPanel': function () { |
149 | if (this._toolsPanel == null) { | 149 | if (this._toolsPanel == null) { |
150 | this._toolsPanel = new Clipperz.PM.UI.Web.Components.ToolsPanel(); | 150 | this._toolsPanel = new Clipperz.PM.UI.Web.Components.ToolsPanel(); |
151 | } | 151 | } |
152 | 152 | ||
153 | return this._toolsPanel; | 153 | return this._toolsPanel; |
154 | }, | 154 | }, |
155 | 155 | ||
156 | //----------------------------------------------------------------------------- | 156 | //----------------------------------------------------------------------------- |
157 | 157 | ||
158 | 'filterController': function () { | 158 | 'filterController': function () { |
159 | if (this._filterController == null) { | 159 | if (this._filterController == null) { |
160 | this._filterController = new Clipperz.PM.UI.Web.Controllers.FilterController(); | 160 | this._filterController = new Clipperz.PM.UI.Web.Controllers.FilterController(); |
161 | } | 161 | } |
162 | 162 | ||
163 | return this._filterController; | 163 | return this._filterController; |
164 | }, | 164 | }, |
165 | 165 | ||
166 | 'cardsController': function() { | 166 | 'cardsController': function() { |
167 | if (this._cardsController == null) { | 167 | if (this._cardsController == null) { |
168 | this._cardsController = new Clipperz.PM.UI.Web.Controllers.CardsController({'filterController':this._filterController}); | 168 | this._cardsController = new Clipperz.PM.UI.Web.Controllers.CardsController({'filterController':this._filterController}); |
169 | } | 169 | } |
170 | 170 | ||
171 | return this._cardsController; | 171 | return this._cardsController; |
172 | }, | 172 | }, |
173 | 173 | ||
174 | //----------------------------------------------------------------------------- | 174 | //----------------------------------------------------------------------------- |
175 | /* | 175 | /* |
176 | 'directLoginsController': function() { | 176 | 'directLoginsController': function() { |
177 | //Clipperz.log(">>> AppController.directLoginsController"); | 177 | //Clipperz.log(">>> AppController.directLoginsController"); |
178 | if (this._directLoginsController == null) { | 178 | if (this._directLoginsController == null) { |
179 | this._directLoginsController = new Clipperz.PM.UI.Web.Controllers.DirectLoginsController({'filterController':this._filterController}); | 179 | this._directLoginsController = new Clipperz.PM.UI.Web.Controllers.DirectLoginsController({'filterController':this._filterController}); |
180 | } | 180 | } |
181 | //Clipperz.log("<<< AppController.directLoginsController"); | 181 | //Clipperz.log("<<< AppController.directLoginsController"); |
182 | 182 | ||
183 | return this._directLoginsController; | 183 | return this._directLoginsController; |
184 | }, | 184 | }, |
185 | */ | 185 | */ |
186 | //----------------------------------------------------------------------------- | 186 | //----------------------------------------------------------------------------- |
187 | 187 | ||
188 | 'populateUserInfo': function() { | 188 | 'populateUserInfo': function() { |
189 | var deferredResult; | 189 | var deferredResult; |
190 | 190 | ||
191 | deferredResult = new Clipperz.Async.Deferred("AppController.populateUserInfo", {trace:false}); | 191 | deferredResult = new Clipperz.Async.Deferred("AppController.populateUserInfo", {trace:false}); |
192 | deferredResult.collectResults({ | 192 | deferredResult.collectResults({ |
193 | 'username':MochiKit.Base.methodcaller('displayName'), | 193 | 'username':MochiKit.Base.methodcaller('displayName'), |
194 | 'cardsNumber':[ | 194 | 'cardsNumber':[ |
195 | MochiKit.Base.methodcaller('getRecords'), | 195 | MochiKit.Base.methodcaller('getRecords'), |
196 | function (someResults) { return someResults.length; } | 196 | function (someResults) { return someResults.length; } |
197 | ], | 197 | ], |
198 | 'directLoginsNumber': [ | 198 | 'directLoginsNumber': [ |
199 | MochiKit.Base.methodcaller('getDirectLogins'), | 199 | MochiKit.Base.methodcaller('getDirectLogins'), |
200 | function (someResults) { return someResults.length; } | 200 | function (someResults) { return someResults.length; } |
201 | ] | 201 | ] |
202 | }) | 202 | }) |
203 | deferredResult.addMethod(this.userInfoBox(), 'updateUserDetails'); | 203 | deferredResult.addMethod(this.userInfoBox(), 'updateUserDetails'); |
204 | deferredResult.callback(this.user()); | 204 | deferredResult.callback(this.user()); |
205 | 205 | ||
206 | return deferredResult; | 206 | return deferredResult; |
207 | }, | 207 | }, |
208 | 208 | ||
209 | //----------------------------------------------------------------------------- | 209 | //----------------------------------------------------------------------------- |
210 | 210 | ||
211 | 'run': function(args) { | 211 | 'run': function(args) { |
212 | var deferredResult; | 212 | var deferredResult; |
213 | varslot; | 213 | varslot; |
214 | varpage; | 214 | varpage; |
215 | var user; | 215 | var user; |
216 | 216 | ||
217 | slot = args.slot; | 217 | slot = args.slot; |
218 | user = args.user; | 218 | user = args.user; |
219 | 219 | ||
220 | this.setUser(user); | 220 | this.setUser(user); |
221 | 221 | ||
222 | slot.setContent(this.appPage()); | 222 | slot.setContent(this.appPage()); |
223 | 223 | ||
224 | this.appPage().slotNamed('userInfoBox').setContent(this.userInfoBox()); | 224 | this.appPage().slotNamed('userInfoBox').setContent(this.userInfoBox()); |
225 | this.appPage().slotNamed('tabSidePanel').setContent(this.tabSidePanel()); | 225 | this.appPage().slotNamed('tabSidePanel').setContent(this.tabSidePanel()); |
226 | 226 | ||
227 | this.appPage().slotNamed('accountPanel').setContent(this.accountPanel()); | 227 | this.appPage().slotNamed('accountPanel').setContent(this.accountPanel()); |
228 | this.appPage().slotNamed('dataPanel').setContent(this.dataPanel()); | 228 | this.appPage().slotNamed('dataPanel').setContent(this.dataPanel()); |
229 | this.appPage().slotNamed('toolsPanel').setContent(this.toolsPanel()); | 229 | this.appPage().slotNamed('toolsPanel').setContent(this.toolsPanel()); |
230 | 230 | ||
231 | this.hideAllAppPageTabSlots(); | 231 | this.hideAllAppPageTabSlots(); |
232 | this.appPage().showSlot(this.slotNameForTab('cards')); | 232 | this.appPage().showSlot(this.slotNameForTab('cards')); |
233 | 233 | ||
234 | MochiKit.Signal.connect(this.tabSidePanel(), 'tabSelected',this, 'handleTabSelected'); | 234 | MochiKit.Signal.connect(this.tabSidePanel(), 'tabSelected', this, 'handleTabSelected'); |
235 | MochiKit.Signal.connect(this.tabSidePanel(), 'addCard', this, 'handleAddCard'); | 235 | MochiKit.Signal.connect(this.tabSidePanel(), 'addCard', this, 'handleAddCard'); |
236 | MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'addCard', this, 'handleAddCard'); | 236 | MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'addCard', this, 'handleAddCard'); |
237 | |||
238 | MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'downloadOfflineCopy',this, 'handleDownloadOfflineCopy'); | ||
237 | 239 | ||
238 | deferredResult = new Clipperz.Async.Deferred("AppController.run", {trace:false}); | 240 | deferredResult = new Clipperz.Async.Deferred("AppController.run", {trace:false}); |
239 | 241 | ||
240 | deferredResult.addMethod(this.cardsController(), 'run', {slot:this.appPage().slotNamed('cardGrid'), user:user}); | 242 | deferredResult.addMethod(this.cardsController(), 'run', {slot:this.appPage().slotNamed('cardGrid'), user:user}); |
241 | // deferredResult.addMethod(this.directLoginsController(), 'run', {slot:this.appPage().slotNamed('directLoginGrid'), user:user}); | 243 | // deferredResult.addMethod(this.directLoginsController(), 'run', {slot:this.appPage().slotNamed('directLoginGrid'), user:user}); |
242 | deferredResult.addMethod(this, 'populateUserInfo'); | 244 | deferredResult.addMethod(this, 'populateUserInfo'); |
243 | 245 | ||
244 | deferredResult.addCallback(MochiKit.Visual.ScrollTo, 'miscLinks', {duration:0}); | 246 | deferredResult.addCallback(MochiKit.Visual.ScrollTo, 'miscLinks', {duration:0}); |
245 | deferredResult.addCallback(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'CARDS_CONTROLLER_DID_RUN'); | 247 | deferredResult.addCallback(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'CARDS_CONTROLLER_DID_RUN'); |
246 | deferredResult.addMethod(this.tabSidePanel(), 'selectTab', 'cards'); | 248 | deferredResult.addMethod(this.tabSidePanel(), 'selectTab', 'cards'); |
247 | deferredResult.callback(); | 249 | deferredResult.callback(); |
248 | }, | 250 | }, |
249 | 251 | ||
250 | //----------------------------------------------------------------------------- | 252 | //----------------------------------------------------------------------------- |
251 | 253 | ||
252 | 'handleTabSelected': function (selectedTabName) { | 254 | 'handleTabSelected': function (selectedTabName) { |
253 | var aTabName; | 255 | var aTabName; |
254 | var aSlotName; | 256 | var aSlotName; |
255 | 257 | ||
256 | //Clipperz.log(">>> AppController.handleTabSelected", selectedTabName); | 258 | //Clipperz.log(">>> AppController.handleTabSelected", selectedTabName); |
257 | this.hideAllAppPageTabSlots(); | 259 | this.hideAllAppPageTabSlots(); |
258 | this.appPage().showSlot(this.slotNameForTab(selectedTabName)); | 260 | this.appPage().showSlot(this.slotNameForTab(selectedTabName)); |
259 | 261 | ||
260 | switch (selectedTabName) { | 262 | switch (selectedTabName) { |
261 | case 'cards': | 263 | case 'cards': |
262 | this.cardsController().focus(); | 264 | this.cardsController().focus(); |
263 | break; | 265 | break; |
264 | // case 'directLogins': | 266 | // case 'directLogins': |
265 | // this.directLoginsController().focus(); | 267 | // this.directLoginsController().focus(); |
266 | // break; | 268 | // break; |
267 | case 'data': | 269 | case 'data': |
268 | break; | 270 | break; |
269 | case 'account': | 271 | case 'account': |
270 | break; | 272 | break; |
271 | case 'tools': | 273 | case 'tools': |
272 | break; | 274 | break; |
273 | } | 275 | } |
274 | //Clipperz.log("<-- AppController.handleTabSelected", aTabName); | 276 | //Clipperz.log("<-- AppController.handleTabSelected", aTabName); |
275 | }, | 277 | }, |
276 | 278 | ||
277 | //============================================================================= | 279 | //============================================================================= |
278 | 280 | ||
279 | 'handleAddCard': function (aSourceElement) { | 281 | 'handleAddCard': function (aSourceElement) { |
280 | //Clipperz.log("=== AppController.addCard", aSourceElement); | 282 | //Clipperz.log("=== AppController.addCard", aSourceElement); |
281 | this.cardsController().addCard(aSourceElement); | 283 | this.cardsController().addCard(aSourceElement); |
282 | }, | 284 | }, |
283 | 285 | ||
284 | //============================================================================= | 286 | //============================================================================= |
285 | 287 | ||
286 | 'userDataSuccessfullySavedHandler': function (anEvent) { | 288 | 'userDataSuccessfullySavedHandler': function (anEvent) { |
287 | this.populateUserInfo(); | 289 | this.populateUserInfo(); |
288 | }, | 290 | }, |
289 | 291 | ||
290 | //============================================================================= | 292 | //============================================================================= |
291 | 293 | ||
292 | 'handleLogout': function(anEvent) { | 294 | 'handleLogout': function(anEvent) { |
293 | var deferredResult; | 295 | var deferredResult; |
294 | 296 | ||
295 | deferredResult = new Clipperz.Async.Deferred("AppController.handleLogout", {trace:false}); | 297 | deferredResult = new Clipperz.Async.Deferred("AppController.handleLogout", {trace:false}); |
296 | deferredResult.addMethod(this.user(), 'logout'); | 298 | deferredResult.addMethod(this.user(), 'logout'); |
297 | deferredResult.addCallback(MochiKit.Signal.signal, this, 'logout'); | 299 | deferredResult.addCallback(MochiKit.Signal.signal, this, 'logout'); |
298 | deferredResult.callback(); | 300 | deferredResult.callback(); |
299 | 301 | ||
300 | return deferredResult; | 302 | return deferredResult; |
301 | }, | 303 | }, |
302 | 304 | ||
303 | //----------------------------------------------------------------------------- | 305 | //----------------------------------------------------------------------------- |
304 | 306 | ||
305 | 'handleLock': function (anEvent) { | 307 | 'handleLock': function (anEvent) { |
306 | return Clipperz.Async.callbacks("AppController.handleLock", [ | 308 | return Clipperz.Async.callbacks("AppController.handleLock", [ |
307 | MochiKit.Base.method(this.cardsController(), 'deleteAllCleanTextData'), | 309 | MochiKit.Base.method(this.cardsController(), 'deleteAllCleanTextData'), |
308 | MochiKit.Base.method(this.user(), 'lock') | 310 | MochiKit.Base.method(this.user(), 'lock') |
309 | ], {trace:false}); | 311 | ], {trace:false}); |
310 | }, | 312 | }, |
311 | 313 | ||
312 | //............................................................................. | 314 | //............................................................................. |
313 | 315 | ||
314 | 'handleUnlock': function (anEvent) { | 316 | 'handleUnlock': function (anEvent) { |
315 | return Clipperz.Async.callbacks("AppController.handleUnock", [ | 317 | return Clipperz.Async.callbacks("AppController.handleUnock", [ |
316 | MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'initProgress'), | 318 | MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'initProgress'), |
317 | MochiKit.Base.method(this.user(), 'login'), | 319 | MochiKit.Base.method(this.user(), 'login'), |
318 | MochiKit.Base.method(this.cardsController(), 'focus'), | 320 | MochiKit.Base.method(this.cardsController(), 'focus'), |
319 | MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'progressDone'), | 321 | MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'progressDone'), |
320 | MochiKit.Base.method(this.userInfoBox(), 'unlock') | 322 | MochiKit.Base.method(this.userInfoBox(), 'unlock') |
321 | ], {trace:false}); | 323 | ], {trace:false}); |
322 | }, | 324 | }, |
323 | 325 | ||
326 | 'handleDownloadOfflineCopy': function (anEvent) { | ||
327 | console.log("AppController.handleDownloadOfflineCopy"); | ||
328 | var downloadHref; | ||
329 | |||
330 | downloadHref = window.location.href.replace(/\/[^\/]*$/,'') + Clipperz_dumpUrl; | ||
331 | |||
332 | if (Clipperz_IEisBroken == true) { | ||
333 | window.open(downloadHref, ""); | ||
334 | } else { | ||
335 | vardeferredResult; | ||
336 | var newWindow; | ||
337 | |||
338 | newWindow = window.open("", ""); | ||
339 | |||
340 | deferredResult = new Clipperz.Async.Deferred("AppController.handleDownloadOfflineCopy", {trace:true}); | ||
341 | deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'echo', {'echo':"echo"}); | ||
342 | deferredResult.addCallback(function(aWindow) { | ||
343 | aWindow.location.href = downloadHref; | ||
344 | }, newWindow); | ||
345 | deferredResult.callback(); | ||
346 | } | ||
347 | }, | ||
348 | |||
324 | //============================================================================= | 349 | //============================================================================= |
325 | __syntaxFix__: "syntax fix" | 350 | __syntaxFix__: "syntax fix" |
326 | }); | 351 | }); |
diff --git a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardDetail.js b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardDetail.js deleted file mode 100644 index 5380aa1..0000000 --- a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardDetail.js +++ b/dev/null | |||
@@ -1,163 +0,0 @@ | |||
1 | /* | ||
2 | |||
3 | Copyright 2008-2011 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz Community Edition. | ||
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | ||
8 | refer to http://www.clipperz.com. | ||
9 | |||
10 | * Clipperz Community Edition is free software: you can redistribute | ||
11 | it and/or modify it under the terms of the GNU Affero General Public | ||
12 | License as published by the Free Software Foundation, either version | ||
13 | 3 of the License, or (at your option) any later version. | ||
14 | |||
15 | * Clipperz Community Edition is distributed in the hope that it will | ||
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | ||
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
18 | See the GNU Affero General Public License for more details. | ||
19 | |||
20 | * You should have received a copy of the GNU Affero General Public | ||
21 | License along with Clipperz Community Edition. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | |||
24 | */ | ||
25 | |||
26 | Clipperz.Base.module('Clipperz.PM.UI.iPhone.Components'); | ||
27 | |||
28 | Clipperz.PM.UI.iPhone.Components.CardDetail = function(args) { | ||
29 | args = args || {}; | ||
30 | |||
31 | Clipperz.PM.UI.iPhone.Components.CardDetail.superclass.constructor.apply(this, arguments); | ||
32 | |||
33 | this._cardReference = null; | ||
34 | |||
35 | return this; | ||
36 | } | ||
37 | |||
38 | //============================================================================= | ||
39 | |||
40 | Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.CardDetail, Clipperz.PM.UI.Common.Components.BaseComponent, { | ||
41 | |||
42 | //------------------------------------------------------------------------- | ||
43 | |||
44 | 'toString': function () { | ||
45 | return "Clipperz.PM.UI.iPhone.Components.CardDetail component"; | ||
46 | }, | ||
47 | |||
48 | //------------------------------------------------------------------------- | ||
49 | |||
50 | 'cardReference': function () { | ||
51 | return this._cardReference; | ||
52 | }, | ||
53 | |||
54 | 'setCardReference': function (aValue) { | ||
55 | this._cardReference = aValue; | ||
56 | }, | ||
57 | |||
58 | //------------------------------------------------------------------------- | ||
59 | |||
60 | 'renderSelf': function(/*aContainer, aPosition*/) { | ||
61 | this.append(this.element(), [ | ||
62 | {tag:'div', cls:'cardDetail', id:this.getId('cardDetail'), children:[ | ||
63 | {tag:'div', id:this.getId('progressBar')} //, | ||
64 | // {tag:'h1', cls:'loading', html:"loading"} | ||
65 | ]} | ||
66 | ]); | ||
67 | |||
68 | this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')})); | ||
69 | MochiKit.Signal.signal(Clipperz.PM.UI.Common.Controllers.ProgressBarController.defaultController, 'updateProgress', 0); | ||
70 | }, | ||
71 | |||
72 | //========================================================================= | ||
73 | |||
74 | 'showCardDetails': function (someData) { | ||
75 | this.element().innerHTML = ''; | ||
76 | this.append(this.element(), [ | ||
77 | {tag:'fieldset', id:this.getId('fields'), children:MochiKit.Base.map(function (aFieldData) { | ||
78 | return {tag:'div', cls:'row', children:[ | ||
79 | {tag:'label', html:aFieldData['label']}, | ||
80 | // {tag:'span', cls:('fieldValue ' + (aFieldData['isHidden']? 'password' : 'text')), html:aFieldData['value']} | ||
81 | {tag:'div', cls:('fieldValue ' + (aFieldData['isHidden']? 'password' : 'text')), children:[ | ||
82 | {tag:'div', children:[{tag:'p', html:aFieldData['value']}]} | ||
83 | ]} | ||
84 | // {tag:'input', type:'text', cls:('fieldValue ' + (aFieldData['isHidden']? 'password' : 'text')), value:aFieldData['value'], disabled:true} | ||
85 | |||
86 | ]} | ||
87 | }, someData['fields'])} | ||
88 | ]); | ||
89 | |||
90 | MochiKit.Iter.forEach(MochiKit.Selector.findChildElements(this.element(), ['span.password']), MochiKit.Base.bind(function (aPasswordElement) { | ||
91 | MochiKit.Signal.connect(aPasswordElement, 'onclick', function (anEvent) { alert(MochiKit.DOM.scrapeText(anEvent.src())); }) | ||
92 | }, this)); | ||
93 | |||
94 | if (someData['directLogins'].length > 0) { | ||
95 | this.append(this.element(), [ | ||
96 | {tag:'h2', html:"Direct logins"}, | ||
97 | {tag:'fieldset', id:this.getId('directLogins'), children:MochiKit.Base.map(function (aDirectLoginData) { | ||
98 | return {tag:'div', cls:'row', id:('directLogin_' + aDirectLoginData['_reference']), children:[ | ||
99 | {tag:'img', cls:'favicon', src:aDirectLoginData['favicon']}, | ||
100 | // {tag:'input', cls:'directLogin', disabled:'disabled', type:'text', name:aDirectLoginData['label'], value:aDirectLoginData['label']} | ||
101 | {tag:'span', cls:'directLogin', html:aDirectLoginData['label']} | ||
102 | ]} | ||
103 | }, someData['directLogins'])} | ||
104 | ]); | ||
105 | |||
106 | MochiKit.Base.map(MochiKit.Base.bind(function (aRowNode) { | ||
107 | MochiKit.Signal.connect(aRowNode, 'onclick', this, 'directLoginClickHandler'); | ||
108 | }, this), | ||
109 | MochiKit.Selector.findChildElements(this.getElement('directLogins'), ['div.row']) | ||
110 | ) | ||
111 | }; | ||
112 | |||
113 | if (someData['notes'] != '') { | ||
114 | this.append(this.element(), [ | ||
115 | {tag:'h2', html:"Notes"}, | ||
116 | {tag:'fieldset', id:this.getId('fieldset'), children:[ | ||
117 | {tag:'div', cls:'row notes', children:[ | ||
118 | {tag:'span', html:someData['notes']} | ||
119 | ]} | ||
120 | ]} | ||
121 | ]); | ||
122 | }; | ||
123 | |||
124 | return true; | ||
125 | }, | ||
126 | |||
127 | //------------------------------------------------------------------------- | ||
128 | /* | ||
129 | 'toggleClickHandler': function (anEvent) { | ||
130 | varnextState; | ||
131 | varfieldValue; | ||
132 | |||
133 | //console.log("TOGGLE"); | ||
134 | anEvent.preventDefault; | ||
135 | fieldValue = MochiKit.Selector.findChildElements(anEvent.src().parentNode.parentNode, ['span.password'])[0]; | ||
136 | |||
137 | nextState = (MochiKit.DOM.getNodeAttribute(anEvent.src(), 'toggled') != 'true'); | ||
138 | if (nextState) { | ||
139 | MochiKit.DOM.removeElementClass(fieldValue, 'clear'); | ||
140 | } else { | ||
141 | MochiKit.DOM.addElementClass(fieldValue, 'clear'); | ||
142 | } | ||
143 | |||
144 | MochiKit.DOM.setNodeAttribute(anEvent.src(), 'toggled', nextState); | ||
145 | }, | ||
146 | */ | ||
147 | //========================================================================= | ||
148 | |||
149 | 'directLoginClickHandler': function (anEvent) { | ||
150 | anEvent.preventDefault(); | ||
151 | |||
152 | if (/(directLogin_)/.test(anEvent.src().id)) { | ||
153 | var directLoginReference; | ||
154 | |||
155 | directLoginReference = anEvent.src().id.match(/(directLogin_)(.*)/)[2]; | ||
156 | MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'selectedDirectLogin', {cardReference:this.cardReference(), directLoginReference:directLoginReference}); | ||
157 | } | ||
158 | }, | ||
159 | |||
160 | //========================================================================= | ||
161 | |||
162 | __syntaxFix__: "syntax fix" | ||
163 | }); | ||
diff --git a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/LoginForm.js b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/LoginForm.js deleted file mode 100644 index 5341878..0000000 --- a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/LoginForm.js +++ b/dev/null | |||
@@ -1,178 +0,0 @@ | |||
1 | /* | ||
2 | |||
3 | Copyright 2008-2011 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz Community Edition. | ||
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | ||
8 | refer to http://www.clipperz.com. | ||
9 | |||
10 | * Clipperz Community Edition is free software: you can redistribute | ||
11 | it and/or modify it under the terms of the GNU Affero General Public | ||
12 | License as published by the Free Software Foundation, either version | ||
13 | 3 of the License, or (at your option) any later version. | ||
14 | |||
15 | * Clipperz Community Edition is distributed in the hope that it will | ||
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | ||
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
18 | See the GNU Affero General Public License for more details. | ||
19 | |||
20 | * You should have received a copy of the GNU Affero General Public | ||
21 | License along with Clipperz Community Edition. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | |||
24 | */ | ||
25 | |||
26 | Clipperz.Base.module('Clipperz.PM.UI.iPhone.Components'); | ||
27 | |||
28 | Clipperz.PM.UI.iPhone.Components.LoginForm = function(args) { | ||
29 | args = args || {}; | ||
30 | |||
31 | Clipperz.PM.UI.iPhone.Components.LoginForm.superclass.constructor.apply(this, arguments); | ||
32 | |||
33 | return this; | ||
34 | } | ||
35 | |||
36 | //============================================================================= | ||
37 | |||
38 | Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.LoginForm, Clipperz.PM.UI.Common.Components.BaseComponent, { | ||
39 | |||
40 | //------------------------------------------------------------------------- | ||
41 | |||
42 | 'toString': function () { | ||
43 | return "Clipperz.PM.UI.iPhone.Components.LoginForm component"; | ||
44 | }, | ||
45 | |||
46 | //------------------------------------------------------------------------- | ||
47 | |||
48 | 'focusOnUsername': function () { | ||
49 | this.getElement('username').focus(); | ||
50 | }, | ||
51 | |||
52 | //------------------------------------------------------------------------- | ||
53 | |||
54 | 'username': function () { | ||
55 | return this.getElement('username').value; | ||
56 | }, | ||
57 | |||
58 | 'passphrase': function () { | ||
59 | return this.getElement('passphrase').value; | ||
60 | }, | ||
61 | |||
62 | //------------------------------------------------------------------------- | ||
63 | |||
64 | 'renderSelf': function(/*aContainer, aPosition*/) { | ||
65 | this.append(this.element(), [ | ||
66 | {tag:'div', cls:'toolbar iPhoneClipperzToolbar', children:[ | ||
67 | {tag:'h1', id:'pageTitle', html:'Clipperz'}, | ||
68 | {tag:'a', id:'backButton', cls:'button', href:'#', html:"back"} | ||
69 | ]}, | ||
70 | {tag:'form', title:'Theaters', cls:'panel toolbarlessPanel loginForm', id:this.getId('loginFormPanel'), children:[ | ||
71 | {tag:'fieldset', id:this.getId('fieldset'), children:[ | ||
72 | {tag:'div', cls:'row', children:[ | ||
73 | {tag:'label', html:"username"}, | ||
74 | {tag:'input', type:'text', name:'username', value:"", autocorrect:'off', autocapitalize:'off', id:this.getId('username')} | ||
75 | ]}, | ||
76 | {tag:'div', cls:'row', children:[ | ||
77 | {tag:'label', html:"passphrase"}, | ||
78 | {tag:'input', type:'password', name:'passphrase', value:"", id:this.getId('passphrase')} | ||
79 | ]} | ||
80 | ]}, | ||
81 | {tag:'a', cls:'whiteButton', type:'submit', href:'#', html:"Login", id:this.getId('submit')} | ||
82 | ]}, | ||
83 | {tag:'div', cls:'panel toolbarlessPanel loginProgressPanel', id:this.getId('loginProgressPanel'), children:[ | ||
84 | {tag:'div', id:this.getId('progressBar')} //, | ||
85 | // {tag:'a', cls:'whiteButton', type:'submit', href:'#', html:"Cancel", id:this.getId('cancel')} | ||
86 | ]}, | ||
87 | {tag:'div', cls:'panel loginErrorPanel', id:this.getId('loginErrorPanel'), children:[ | ||
88 | {tag:'div', cls:'errorMessage', id:this.getId('errorMessageBox'), children:[ | ||
89 | {tag:'h2', id:this.getId('errorMessage'), html:"Login failed"} | ||
90 | ]} | ||
91 | ]} | ||
92 | ]); | ||
93 | |||
94 | MochiKit.Signal.connect(this.getElement('submit'), 'onclick',this, 'submitHandler'); | ||
95 | MochiKit.Signal.connect(this.getElement('loginFormPanel'), 'onsubmit',this, 'submitHandler'); | ||
96 | |||
97 | // MochiKit.Signal.connect(this.getElement('cancel'), 'onclick',this, 'cancelHandler'); | ||
98 | MochiKit.Signal.connect('backButton', 'onclick',this, 'backHandler'); | ||
99 | |||
100 | this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')})); | ||
101 | |||
102 | // MochiKit.Style.hideElement(this.getElement('errorMessage')); | ||
103 | |||
104 | this.showLoginForm(); | ||
105 | // MochiKit.Async.callLater(0.2, MochiKit.Base.method(this, 'focusOnUsername')); | ||
106 | }, | ||
107 | |||
108 | //------------------------------------------------------------------------- | ||
109 | |||
110 | 'showLoginForm': function () { | ||
111 | MochiKit.Style.showElement(this.getElement('loginFormPanel')); | ||
112 | MochiKit.Style.hideElement(this.getElement('loginProgressPanel')); | ||
113 | MochiKit.Style.hideElement(this.getElement('loginErrorPanel')); | ||
114 | MochiKit.Style.hideElement('backButton'); | ||
115 | }, | ||
116 | |||
117 | 'slideInLoginForm': function () { | ||
118 | varoffset; | ||
119 | |||
120 | offset = ((MochiKit.DOM.getNodeAttribute(MochiKit.DOM.currentDocument().body, 'orientation') == 'portrait') ? 320 : 480); | ||
121 | |||
122 | MochiKit.Style.showElement(this.getElement('loginFormPanel')); | ||
123 | MochiKit.Style.setElementPosition(this.getElement('loginFormPanel'), {x:-offset, y:0}); | ||
124 | |||
125 | new MochiKit.Visual.Sequence([ | ||
126 | new MochiKit.Visual.Parallel([ | ||
127 | new MochiKit.Visual.Move(this.getElement('loginErrorPanel'), {x:offset, y:0, mode:'relative',transition:MochiKit.Visual.Transitions.linear, sync:true}), | ||
128 | new MochiKit.Visual.Move(this.getElement('loginFormPanel'), {x:0, y:0, mode:'absolute',transition:MochiKit.Visual.Transitions.linear, sync:true}), | ||
129 | MochiKit.Visual.fade ('backButton', { transition:MochiKit.Visual.Transitions.linear, sync:true}) | ||
130 | ], {duration:0.5, sync:true}), | ||
131 | MochiKit.Visual.fade(this.getElement('loginErrorPanel'), {duration:0, sync:true}) | ||
132 | ], {}) | ||
133 | }, | ||
134 | |||
135 | 'showLoginProgress': function () { | ||
136 | MochiKit.Style.hideElement(this.getElement('loginFormPanel')); | ||
137 | MochiKit.Style.showElement(this.getElement('loginProgressPanel')); | ||
138 | }, | ||
139 | |||
140 | 'showLoginError': function (anError) { | ||
141 | this.getElement('errorMessage').innerHTML = "Login error"; | ||
142 | |||
143 | MochiKit.Style.showElement('backButton'); | ||
144 | MochiKit.Style.hideElement(this.getElement('loginProgressPanel')); | ||
145 | MochiKit.Style.showElement(this.getElement('loginErrorPanel')); | ||
146 | MochiKit.Style.setElementPosition(this.getElement('loginErrorPanel'), {x:0, y:45}); | ||
147 | }, | ||
148 | |||
149 | //------------------------------------------------------------------------- | ||
150 | /* | ||
151 | 'disableCancelButton': function () { | ||
152 | MochiKit.DOM.hideElement(this.getElement('cancel')); | ||
153 | }, | ||
154 | */ | ||
155 | //------------------------------------------------------------------------- | ||
156 | |||
157 | 'submitHandler': function (anEvent) { | ||
158 | anEvent.preventDefault(); | ||
159 | |||
160 | MochiKit.Signal.signal(this, 'doLogin', {'username':this.username(), 'passphrase':this.passphrase()}); | ||
161 | }, | ||
162 | |||
163 | 'cancelHandler': function (anEvent) { | ||
164 | anEvent.preventDefault(); | ||
165 | |||
166 | //console.log("CANCEL"); | ||
167 | }, | ||
168 | |||
169 | 'backHandler': function (anEvent) { | ||
170 | anEvent.preventDefault(); | ||
171 | |||
172 | this.slideInLoginForm(); | ||
173 | }, | ||
174 | |||
175 | //------------------------------------------------------------------------- | ||
176 | |||
177 | __syntaxFix__: "syntax fix" | ||
178 | }); | ||
diff --git a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Controllers/MainController.js b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Controllers/MainController.js deleted file mode 100644 index 3fcaae1..0000000 --- a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Controllers/MainController.js +++ b/dev/null | |||
@@ -1,369 +0,0 @@ | |||
1 | /* | ||
2 | |||
3 | Copyright 2008-2011 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz Community Edition. | ||
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | ||
8 | refer to http://www.clipperz.com. | ||
9 | |||
10 | * Clipperz Community Edition is free software: you can redistribute | ||
11 | it and/or modify it under the terms of the GNU Affero General Public | ||
12 | License as published by the Free Software Foundation, either version | ||
13 | 3 of the License, or (at your option) any later version. | ||
14 | |||
15 | * Clipperz Community Edition is distributed in the hope that it will | ||
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | ||
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
18 | See the GNU Affero General Public License for more details. | ||
19 | |||
20 | * You should have received a copy of the GNU Affero General Public | ||
21 | License along with Clipperz Community Edition. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | |||
24 | */ | ||
25 | |||
26 | Clipperz.Base.module('Clipperz.PM.UI.iPhone.Controllers'); | ||
27 | |||
28 | //Some parts of this controller have been derived from the iUI library. | ||
29 | |||
30 | Clipperz.PM.UI.iPhone.Controllers.MainController = function() { | ||
31 | this._loginForm = null; | ||
32 | this._cardList = null; | ||
33 | this._cachedValues =null; | ||
34 | this._user = null; | ||
35 | |||
36 | if (typeof window.onorientationchange == 'object') { | ||
37 | MochiKit.Signal.connect(window, 'onorientationchange', this, 'orientationChangeHandler'); | ||
38 | MochiKit.Async.callLater(0, MochiKit.Base.method(this, 'orientationChangeHandler')); | ||
39 | } else { | ||
40 | this.setOrientation('portrait'); | ||
41 | // this.setOrientation('landscape'); | ||
42 | } | ||
43 | |||
44 | this.addMetaTag('viewport', 'width=devicewidth; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;'); | ||
45 | this.addMetaTag('apple-mobile-web-app-capable', 'yes'); | ||
46 | this.addMetaTag('apple-mobile-web-app-status-bar-style', 'black'); | ||
47 | |||
48 | this.addLinkTag('apple-touch-icon', 'data:image/png;charset=utf-8;base64,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'); | ||
49 | //this.addLinkTag('apple-touch-startup-image', 'default.png'); | ||
50 | |||
51 | // if (!window.navigator.standalone)// not running as an installed app | ||
52 | |||
53 | MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'selectedDirectLogin', this, 'selectedDirectLoginHandler'); | ||
54 | |||
55 | MochiKit.DOM.addElementClass(document.body, 'iPhone'); | ||
56 | return this; | ||
57 | } | ||
58 | |||
59 | MochiKit.Base.update(Clipperz.PM.UI.iPhone.Controllers.MainController.prototype, { | ||
60 | |||
61 | 'toString': function () { | ||
62 | return "Clipperz.PM.UI.iPhone.Controllers.MainController"; | ||
63 | }, | ||
64 | |||
65 | //========================================================================= | ||
66 | |||
67 | 'user': function () { | ||
68 | return this._user; | ||
69 | }, | ||
70 | |||
71 | 'setUser': function (aValue) { | ||
72 | this._user = aValue; | ||
73 | }, | ||
74 | |||
75 | //========================================================================= | ||
76 | |||
77 | 'loginForm': function() { | ||
78 | if (this._loginForm == null) { | ||
79 | MochiKit.DOM.removeElement('mainDiv'); | ||
80 | this._loginForm = new Clipperz.PM.UI.iPhone.Components.LoginForm({element:MochiKit.DOM.currentDocument().body}); | ||
81 | MochiKit.Signal.connect(this._loginForm, 'doLogin', this, 'doLoginHandler') | ||
82 | } | ||
83 | |||
84 | return this._loginForm; | ||
85 | }, | ||
86 | |||
87 | 'removeLoginForm': function () { | ||
88 | if (this._loginForm != null) { | ||
89 | this._loginForm.remove(); | ||
90 | this._loginForm = null; | ||
91 | } | ||
92 | }, | ||
93 | |||
94 | //----------------------------------------------------------------------------- | ||
95 | |||
96 | 'cardList': function () { | ||
97 | if (this._cardList == null) { | ||
98 | this._cardList = new Clipperz.PM.UI.iPhone.Components.CardList({element:MochiKit.DOM.currentDocument().body}); | ||
99 | MochiKit.Signal.connect(this._cardList, 'searchEvent',this, 'searchEventHandler') | ||
100 | MochiKit.Signal.connect(this._cardList, 'selectedCard',this, 'selecetedCardHandler') | ||
101 | } | ||
102 | |||
103 | return this._cardList; | ||
104 | }, | ||
105 | |||
106 | //========================================================================= | ||
107 | |||
108 | 'currentWidth': function () { | ||
109 | return this._currentWidth; | ||
110 | }, | ||
111 | |||
112 | 'setCurrentWidth': function (aValue) { | ||
113 | this._currentWidth = aValue; | ||
114 | }, | ||
115 | |||
116 | //========================================================================= | ||
117 | |||
118 | 'orientationChangeHandler': function () { | ||
119 | switch(window.orientation) { | ||
120 | case 0: | ||
121 | this.setOrientation('portrait'); | ||
122 | break; | ||
123 | case 90: | ||
124 | case -90: | ||
125 | this.setOrientation('landscape'); | ||
126 | break; | ||
127 | } | ||
128 | }, | ||
129 | |||
130 | //------------------------------------------------------------------------- | ||
131 | |||
132 | 'setOrientation': function (anOrientation) { | ||
133 | document.body.setAttribute('orientation', anOrientation); | ||
134 | setTimeout(scrollTo, 100, 0, 1); | ||
135 | }, | ||
136 | |||
137 | //------------------------------------------------------------------------- | ||
138 | |||
139 | 'slidePages': function (fromPage, toPage, backwards) { | ||
140 | var axis; | ||
141 | var slideDone; | ||
142 | |||
143 | slideDone = function () { | ||
144 | // console.log("slideDone"); | ||
145 | if (!hasClass(toPage, "dialog")) { | ||
146 | fromPage.removeAttribute("selected"); | ||
147 | } | ||
148 | checkTimer = setInterval(checkOrientAndLocation, 300); | ||
149 | setTimeout(updatePage, 0, toPage, fromPage); | ||
150 | fromPage.removeEventListener('webkitTransitionEnd', slideDone, false); | ||
151 | } | ||
152 | |||
153 | axis = (backwards ? fromPage : toPage).getAttribute("axis"); | ||
154 | |||
155 | clearInterval(checkTimer); | ||
156 | |||
157 | if (canDoSlideAnim() && axis != 'y') { | ||
158 | slide2(fromPage, toPage, backwards, slideDone); | ||
159 | } else { | ||
160 | slide1(fromPage, toPage, backwards, axis, slideDone); | ||
161 | } | ||
162 | }, | ||
163 | |||
164 | //------------------------------------------------------------------------- | ||
165 | |||
166 | 'getCachedValues': function () { | ||
167 | var deferredResult; | ||
168 | |||
169 | if (this._cachedObjects != null) { | ||
170 | deferredResult = MochiKit.Async.succeed(this._cachedObjects); | ||
171 | } else { | ||
172 | deferredResult = new Clipperz.Async.Deferred("MainController.getCachedValues", {trace:false}); | ||
173 | deferredResult.addMethod(this.user(), 'getRecords'); | ||
174 | deferredResult.addCallback(MochiKit.Base.map, Clipperz.Async.collectResults("MainController.getCachedValues - collectResults", { | ||
175 | '_rowObject': MochiKit.Async.succeed, | ||
176 | '_reference': MochiKit.Base.methodcaller('reference'), | ||
177 | 'label': MochiKit.Base.methodcaller('label'), | ||
178 | 'favicon': MochiKit.Base.methodcaller('favicon'), | ||
179 | '_searchableContent':MochiKit.Base.methodcaller('searchableContent') | ||
180 | }, {trace:false})); | ||
181 | deferredResult.addCallback(Clipperz.Async.collectAll); | ||
182 | deferredResult.addCallback(MochiKit.Base.bind(function (someRows) { | ||
183 | this._cachedObjects = someRows; | ||
184 | return this._cachedObjects; | ||
185 | }, this)); | ||
186 | deferredResult.callback(); | ||
187 | } | ||
188 | |||
189 | return deferredResult; | ||
190 | }, | ||
191 | //========================================================================= | ||
192 | |||
193 | 'run': function(shouldShowRegistrationForm) { | ||
194 | this.loginForm().render(); | ||
195 | MochiKit.Async.callLater(1, MochiKit.Base.method(this.loginForm(), 'focusOnUsername')); | ||
196 | }, | ||
197 | |||
198 | //========================================================================= | ||
199 | |||
200 | 'doLoginHandler': function (someArgs) { | ||
201 | var deferredResult; | ||
202 | varparameters; | ||
203 | varshouldUseOTP; | ||
204 | // var loginProgress; | ||
205 | varuser; | ||
206 | var getPassphraseDelegate; | ||
207 | |||
208 | parameters = someArgs; | ||
209 | shouldUseOTP = (typeof(parameters.passphrase) == 'undefined'); | ||
210 | |||
211 | getPassphraseDelegate = MochiKit.Base.partial(MochiKit.Async.succeed, parameters.passphrase); | ||
212 | user = new Clipperz.PM.DataModel.User({'username':parameters.username, 'getPassphraseFunction':getPassphraseDelegate}); | ||
213 | |||
214 | deferredResult = new Clipperz.Async.Deferred("MainController.doLogin", {trace:false}); | ||
215 | deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'initProgress', {'steps':4}); | ||
216 | deferredResult.addMethod(this.loginForm(), 'showLoginProgress'); | ||
217 | deferredResult.addCallback(MochiKit.Async.wait, 0.1); | ||
218 | deferredResult.addMethod(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'deferredEntropyCollection'); | ||
219 | deferredResult.addMethod(user, 'login'); | ||
220 | deferredResult.addMethod(this, 'setUser', user); | ||
221 | deferredResult.addMethod(user, 'getRecords'); | ||
222 | deferredResult.addMethod(this, 'removeLoginForm'); | ||
223 | deferredResult.addMethod(this.cardList(), 'render'); | ||
224 | deferredResult.addMethod(this, 'displaySelectedRecords', ''); | ||
225 | deferredResult.addErrback(MochiKit.Base.method(this.loginForm(), 'showLoginError')); | ||
226 | deferredResult.callback(); | ||
227 | |||
228 | return deferredResult; | ||
229 | }, | ||
230 | |||
231 | //========================================================================= | ||
232 | |||
233 | 'searchEventHandler': function (aValue) { | ||
234 | //console.log("searching for ... " + aValue); | ||
235 | return this.displaySelectedRecords(aValue); | ||
236 | }, | ||
237 | |||
238 | //========================================================================= | ||
239 | |||
240 | '_displaySelectedRows': function (aFilter, someRows) { | ||
241 | var result; | ||
242 | |||
243 | result = someRows; | ||
244 | |||
245 | if (aFilter != null) { | ||
246 | var filter; | ||
247 | varfilterRegExp; | ||
248 | |||
249 | filter = aFilter.replace(/[^A-Za-z0-9]/g, "\\$&"); | ||
250 | filterRegExp = new RegExp(filter, "i"); | ||
251 | result = MochiKit.Base.filter(function (aCachedResult) { return filterRegExp.test(aCachedResult['_searchableContent'])}, result); | ||
252 | } | ||
253 | |||
254 | |||
255 | result.sort(MochiKit.Base.partial(function (aKey, aComparator, aObject, bObject) { | ||
256 | return aComparator(aObject[aKey], bObject[aKey]); | ||
257 | }, 'label', Clipperz.Base.caseInsensitiveCompare)); | ||
258 | |||
259 | this.cardList().update(result); | ||
260 | }, | ||
261 | |||
262 | //------------------------------------------------------------------------- | ||
263 | |||
264 | 'displaySelectedRecords': function (aFilter) { | ||
265 | return Clipperz.Async.callbacks("MainController.displaySelectedrows", [ | ||
266 | MochiKit.Base.method(this, 'getCachedValues'), | ||
267 | MochiKit.Base.method(this, '_displaySelectedRows', aFilter) | ||
268 | ], {trace:false}); | ||
269 | }, | ||
270 | |||
271 | //========================================================================= | ||
272 | |||
273 | 'selecetedCardHandler': function (aRecordReference) { | ||
274 | vardeferredResult; | ||
275 | varrecordData; | ||
276 | |||
277 | recordData = {}; | ||
278 | //console.log("Showing detail for card with reference", aRecordReference); | ||
279 | deferredResult = new Clipperz.Async.Deferred("MainController.selectedCardHandler", {trace:false}); | ||
280 | deferredResult.addMethod(this.user(), 'getRecord', aRecordReference); | ||
281 | deferredResult.collectResults({ | ||
282 | '_reference':MochiKit.Base.methodcaller('reference'), | ||
283 | 'title': MochiKit.Base.methodcaller('label'), | ||
284 | 'favicon': MochiKit.Base.methodcaller('favicon') | ||
285 | }); | ||
286 | deferredResult.addCallback(function (someData) { | ||
287 | MochiKit.Base.update(recordData, someData); | ||
288 | }) | ||
289 | deferredResult.addMethod(this.cardList(), 'showCard', recordData); | ||
290 | |||
291 | deferredResult.addMethod(this.user(), 'getRecord', aRecordReference); | ||
292 | deferredResult.addMethodcaller('notes'); | ||
293 | deferredResult.addCallback(function (someNotes) { | ||
294 | recordData['notes'] = someNotes; | ||
295 | }) | ||
296 | |||
297 | deferredResult.addMethod(this.user(), 'getRecord', aRecordReference); | ||
298 | deferredResult.addMethodcaller('getCurrentRecordVersion'); | ||
299 | deferredResult.addMethodcaller('fields'); | ||
300 | deferredResult.addCallback(MochiKit.Base.values); | ||
301 | deferredResult.addCallback(MochiKit.Base.map, Clipperz.Async.collectResults("MainController.selectedCardHandler - fields", { | ||
302 | 'label':MochiKit.Base.methodcaller('label'), | ||
303 | 'value':MochiKit.Base.methodcaller('value'), | ||
304 | 'isHidden':MochiKit.Base.methodcaller('isHidden') | ||
305 | }, {trace:false})); | ||
306 | deferredResult.addCallback(Clipperz.Async.collectAll); | ||
307 | deferredResult.addCallback(function (someData) { | ||
308 | recordData['fields'] = someData; | ||
309 | }); | ||
310 | |||
311 | deferredResult.addMethod(this.user(), 'getRecord', aRecordReference); | ||
312 | deferredResult.addMethodcaller('directLogins'); | ||
313 | deferredResult.addCallback(MochiKit.Base.values); | ||
314 | deferredResult.addCallback(MochiKit.Base.map, Clipperz.Async.collectResults("MainController.selectedCardHandler - directLogins", { | ||
315 | 'label': MochiKit.Base.methodcaller('label'), | ||
316 | 'favicon': MochiKit.Base.methodcaller('favicon'), | ||
317 | '_reference':MochiKit.Base.methodcaller('reference') | ||
318 | }, {trace:false})); | ||
319 | deferredResult.addCallback(Clipperz.Async.collectAll); | ||
320 | deferredResult.addCallback(function (someData) { | ||
321 | recordData['directLogins'] = someData; | ||
322 | }); | ||
323 | |||
324 | deferredResult.addMethod(this.cardList(), 'showCardDetails', recordData); | ||
325 | deferredResult.callback(); | ||
326 | |||
327 | return deferredResult; | ||
328 | }, | ||
329 | |||
330 | //========================================================================= | ||
331 | |||
332 | 'selectedDirectLoginHandler': function (someData) { | ||
333 | vardeferredResult; | ||
334 | |||
335 | //console.log("<<< signal - directLogin"); | ||
336 | deferredResult = new Clipperz.Async.Deferred("MainController.selectedDirectLoginHandler", {trace:false}); | ||
337 | deferredResult.addMethod(this.user(), 'getRecord', someData['cardReference']); | ||
338 | deferredResult.addMethodcaller('directLogins'); | ||
339 | deferredResult.addCallback(MochiKit.Base.itemgetter(someData['directLoginReference'])); | ||
340 | // deferredResult.addMethodcaller('runDirectLogin'); | ||
341 | deferredResult.addCallback(Clipperz.PM.UI.Common.Controllers.DirectLoginRunner.openDirectLogin); | ||
342 | deferredResult.callback(); | ||
343 | |||
344 | return deferredResult; | ||
345 | }, | ||
346 | |||
347 | //========================================================================= | ||
348 | |||
349 | 'addMetaTag': function (aName, aContent) { | ||
350 | varmetaTag; | ||
351 | |||
352 | metaTag = document.createElement('meta'); | ||
353 | metaTag.name = aName; | ||
354 | metaTag.content = aContent; | ||
355 | document.getElementsByTagName('head')[0].appendChild(metaTag); | ||
356 | }, | ||
357 | |||
358 | 'addLinkTag': function (aRel, anHref) { | ||
359 | var linkTag; | ||
360 | |||
361 | linkTag = document.createElement('link'); | ||
362 | linkTag.rel = aRel; | ||
363 | linkTag.href = anHref; | ||
364 | document.getElementsByTagName('head')[0].appendChild(linkTag); | ||
365 | }, | ||
366 | |||
367 | //========================================================================= | ||
368 | __syntaxFix__: "syntax fix" | ||
369 | }); \ No newline at end of file | ||
diff --git a/frontend/gamma/js/main_iPhone.js b/frontend/gamma/js/main.mobile.js index 0644f68..60a32fa 100644 --- a/frontend/gamma/js/main_iPhone.js +++ b/frontend/gamma/js/main.mobile.js | |||
@@ -1,57 +1,64 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | function _pm_logEvent(anEvent) { | 26 | function _pm_logEvent(anEvent) { |
27 | //console.log("####", anEvent); | 27 | //console.log("####", anEvent); |
28 | 28 | ||
29 | anEvent.preventDefault(); | 29 | anEvent.preventDefault(); |
30 | } | 30 | } |
31 | 31 | ||
32 | function handleGenericDeferredError(anError) { | 32 | function handleGenericDeferredError(anError) { |
33 | var result; | 33 | var result; |
34 | 34 | ||
35 | if (anError instanceof MochiKit.Async.CancelledError) { | 35 | if (anError instanceof MochiKit.Async.CancelledError) { |
36 | result = anError; | 36 | result = anError; |
37 | } else { | 37 | } else { |
38 | MochiKit.Logging.logError("## MainController - GENERIC ERROR" + "\n" + "==>> " + anError + " <<==\n" + anError.stack); | 38 | MochiKit.Logging.logError("## MainController - GENERIC ERROR" + "\n" + "==>> " + anError + " <<==\n" + anError.stack); |
39 | result = new MochiKit.Async.CancelledError(anError); | 39 | result = new MochiKit.Async.CancelledError(anError); |
40 | } | 40 | } |
41 | 41 | ||
42 | return result; | 42 | return result; |
43 | } | 43 | } |
44 | 44 | ||
45 | 45 | ||
46 | Clipperz.PM.RunTime = {}; | 46 | Clipperz.PM.RunTime = {}; |
47 | 47 | ||
48 | 48 | ||
49 | function run() { | 49 | function run() { |
50 | MochiKit.DOM.removeElement('javaScriptAlert'); | ||
51 | Clipperz.PM.Strings.Languages.initSetup(); | 50 | Clipperz.PM.Strings.Languages.initSetup(); |
52 | 51 | ||
53 | Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.iPhone.Controllers.MainController(); | 52 | Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.Mobile.Controllers.MainController(); |
54 | Clipperz.PM.RunTime.mainController.run(false); | 53 | Clipperz.PM.RunTime.mainController.run(); |
55 | } | 54 | } |
56 | 55 | ||
56 | // if (navigator.standalone == false) { | ||
57 | // window.localStorage.setItem('PIN', '1234'); | ||
58 | // alert("Saved PIN"); | ||
59 | // } else { | ||
60 | // alert (window.localStorage.getItem('PIN')); | ||
61 | // } | ||
62 | |||
63 | |||
57 | MochiKit.DOM.addLoadEvent(run); | 64 | MochiKit.DOM.addLoadEvent(run); |
diff --git a/frontend/gamma/properties/creditsAndCopyrights.txt b/frontend/gamma/properties/creditsAndCopyrights.txt index 598440d..59f0f0a 100644 --- a/frontend/gamma/properties/creditsAndCopyrights.txt +++ b/frontend/gamma/properties/creditsAndCopyrights.txt | |||
@@ -1,336 +1,344 @@ | |||
1 | @clipperz.license@ | 1 | @clipperz.license@ |
2 | 2 | ||
3 | =============================================================================== | 3 | =============================================================================== |
4 | 4 | ||
5 | This application is build using also the following libraries | 5 | This application is build using also the following libraries |
6 | 6 | ||
7 | # MochiKit (http://www.mochikit.com) | 7 | # MochiKit (http://www.mochikit.com) |
8 | - repository: @mochikit.repository@ (revision: @mochikit.version@) | 8 | - repository: @mochikit.repository@ (revision: @mochikit.version@) |
9 | 9 | ||
10 | * Software licence: http://svn.mochikit.com/mochikit/trunk/licence.txt | 10 | * Software licence: https://github.com/mochi/mochikit/blob/master/LICENSE.txt |
11 | 11 | ||
12 | |MochiKit is dual-licensed software. It is available under the terms of the | 12 | |MochiKit is dual-licensed software. It is available under the terms of the |
13 | |MIT License, or the Academic Free License version 2.1. The full text of | 13 | |MIT License, or the Academic Free License version 2.1. The full text of |
14 | |each license is included below. | 14 | |each license is included below. |
15 | | | 15 | | |
16 | |The MochiKit.Style.getElementPosition function is adapted from | ||
17 | |YAHOO.util.Dom.getXY v0.9.0. which is copyrighted by Yahoo! Inc. and | ||
18 | |licensed under the BSD license also reproduced in full below. | ||
19 | | | ||
16 | |MIT License | 20 | |MIT License |
17 | |=========== | 21 | |=========== |
18 | | | 22 | | |
19 | |Copyright (c) 2005 Bob Ippolito. All rights reserved. | 23 | |Copyright (c) 2005 Bob Ippolito. All rights reserved. |
20 | | | 24 | | |
21 | |Permission is hereby granted, free of charge, to any person obtaining a copy of this | 25 | |Permission is hereby granted, free of charge, to any person obtaining a copy |
22 | |software and associated documentation files (the "Software"), to deal in the Software | 26 | |of this software and associated documentation files (the "Software"), to deal |
23 | |without restriction, including without limitation the rights to use, copy, modify, | 27 | |in the Software without restriction, including without limitation the rights |
24 | |merge, publish, distribute, sublicense, and/or sell copies of the Software, and to | 28 | |to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
25 | |permit persons to whom the Software is furnished to do so, subject to the following | 29 | |copies of the Software, and to permit persons to whom the Software is furnished |
26 | |conditions: | 30 | |to do so, subject to the following conditions: |
27 | | | 31 | | |
28 | |The above copyright notice and this permission notice shall be included in all copies | 32 | |The above copyright notice and this permission notice shall be included in all |
29 | |or substantial portions of the Software. | 33 | |copies or substantial portions of the Software. |
30 | | | 34 | | |
31 | |THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, | 35 | |THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
32 | |INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR | 36 | |IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS |
33 | |PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE | 37 | |FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR |
34 | |FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | 38 | |COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER |
35 | |OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 39 | |IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
36 | |DEALINGS IN THE SOFTWARE. | 40 | |CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
37 | | | 41 | | |
38 | | | 42 | | |
39 | |Academic Free License v. 2.1 | 43 | |Academic Free License v. 2.1 |
40 | |============================ | 44 | |============================ |
41 | | | 45 | | |
42 | |Copyright (c) 2005 Bob Ippolito. All rights reserved. | 46 | |Copyright (c) 2005 Bob Ippolito. All rights reserved. |
43 | | | 47 | | |
44 | |This Academic Free License (the "License") applies to any original work of authorship (the | 48 | |This Academic Free License (the "License") applies to any original work of |
45 | |"Original Work") whose owner (the "Licensor") has placed the following notice immediately | 49 | |authorship (the "Original Work") whose owner (the "Licensor") has placed the |
46 | |following the copyright notice for the Original Work: | 50 | |following notice immediately following the copyright notice for the Original Work: |
47 | | | 51 | | |
48 | |Licensed under the Academic Free License version 2.1 | 52 | |Licensed under the Academic Free License version 2.1 |
49 | | | 53 | | |
50 | |1) Grant of Copyright License. Licensor hereby grants You a world-wide, royalty-free, | 54 | | 1)Grant of Copyright License. Licensor hereby grants You a world-wide, royalty-free, |
51 | |non-exclusive, perpetual, sublicenseable license to do the following: | 55 | | non-exclusive, perpetual, sublicenseable license to do the following: |
52 | | | 56 | | |
53 | |a) to reproduce the Original Work in copies; | 57 | |a) to reproduce the Original Work in copies; |
54 | |b) to prepare derivative works ("Derivative Works") based upon the Original Work; | 58 | |b) to prepare derivative works ("Derivative Works") based upon the Original Work; |
55 | |c) to distribute copies of the Original Work and Derivative Works to the public; | 59 | |c) to distribute copies of the Original Work and Derivative Works to the public; |
56 | |d) to perform the Original Work publicly; and | 60 | |d) to perform the Original Work publicly; and |
57 | |e) to display the Original Work publicly. | 61 | |e) to display the Original Work publicly. |
58 | | | 62 | | |
59 | |2) Grant of Patent License. Licensor hereby grants You a world-wide, royalty-free, | 63 | | 2)Grant of Patent License. Licensor hereby grants You a world-wide, royalty-free, |
60 | |non-exclusive, perpetual, sublicenseable license, under patent claims owned or controlled | 64 | | non-exclusive, perpetual, sublicenseable license, under patent claims owned or |
61 | |by the Licensor that are embodied in the Original Work as furnished by the Licensor, to | 65 | | controlled by the Licensor that are embodied in the Original Work as furnished by |
62 | |make, use, sell and offer for sale the Original Work and Derivative Works. | 66 | | the Licensor, to make, use, sell and offer for sale the Original Work and Derivative |
63 | | | 67 | | Works. |
64 | |3) Grant of Source Code License. The term "Source Code" means the preferred form of the | 68 | | |
65 | |Original Work for making modifications to it and all available documentation describing | 69 | | 3)Grant of Source Code License. The term "Source Code" means the preferred form of |
66 | |how to modify the Original Work. Licensor hereby agrees to provide a machine-readable copy | 70 | | the Original Work for making modifications to it and all available documentation |
67 | |of the Source Code of the Original Work along with each copy of the Original Work that | 71 | | describing how to modify the Original Work. Licensor hereby agrees to provide a |
68 | |Licensor distributes. Licensor reserves the right to satisfy this obligation by placing | 72 | | machine-readable copy of the Source Code of the Original Work along with each copy |
69 | |a machine-readable copy of the Source Code in an information repository reasonably | 73 | | of the Original Work that Licensor distributes. Licensor reserves the right to satisfy |
70 | |calculated to permit inexpensive and convenient access by You for as long as Licensor | 74 | | this obligation by placing a machine-readable copy of the Source Code in an information |
71 | |continues to distribute the Original Work, and by publishing the address of that information | 75 | | repository reasonably calculated to permit inexpensive and convenient access by You for |
72 | |repository in a notice immediately following the copyright notice that applies to the Original | 76 | | as long as Licensor continues to distribute the Original Work, and by publishing the |
73 | |Work. | 77 | | address of that information repository in a notice immediately following the copyright |
74 | | | 78 | | notice that applies to the Original Work. |
75 | |4) Exclusions From License Grant. Neither the names of Licensor, nor the names of any | 79 | | |
76 | |contributors to the Original Work, nor any of their trademarks or service marks, may be used | 80 | | 4)Exclusions From License Grant. Neither the names of Licensor, nor the names of any |
77 | |to endorse or promote products derived from this Original Work without express prior written | 81 | | contributors to the Original Work, nor any of their trademarks or service marks, may |
78 | |permission of the Licensor. Nothing in this License shall be deemed to grant any rights to | 82 | | be used to endorse or promote products derived from this Original Work without express |
79 | |trademarks, copyrights, patents, trade secrets or any other intellectual property of Licensor | 83 | | prior written permission of the Licensor. Nothing in this License shall be deemed to |
80 | |except as expressly stated herein. No patent license is granted to make, use, sell or offer | 84 | | grant any rights to trademarks, copyrights, patents, trade secrets or any other |
81 | |to sell embodiments of any patent claims other than the licensed claims defined in Section 2. | 85 | | intellectual property of Licensor except as expressly stated herein. No patent license |
82 | |No right is granted to the trademarks of Licensor even if such marks are included in the Original | 86 | | is granted to make, use, sell or offer to sell embodiments of any patent claims other |
83 | |Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under | 87 | | than the licensed claims defined in Section 2. No right is granted to the trademarks |
84 | |different terms from this License any Original Work that Licensor otherwise would have a right | 88 | | of Licensor even if such marks are included in the Original Work. Nothing in this |
85 | |to license. | 89 | | License shall be interpreted to prohibit Licensor from licensing under different terms |
86 | | | 90 | | from this License any Original Work that Licensor otherwise would have a right to license. |
87 | |5) This section intentionally omitted. | 91 | | |
88 | | | 92 | | 5)This section intentionally omitted. |
89 | |6) Attribution Rights. You must retain, in the Source Code of any Derivative Works that You | 93 | | |
90 | |create, all copyright, patent or trademark notices from the Source Code of the Original Work, | 94 | | 6)Attribution Rights. You must retain, in the Source Code of any Derivative Works that You |
91 | |as well as any notices of licensing and any descriptive text identified therein as an "Attribution | 95 | | create, all copyright, patent or trademark notices from the Source Code of the Original |
92 | |Notice." You must cause the Source Code for any Derivative Works that You create to carry a | 96 | | Work, as well as any notices of licensing and any descriptive text identified therein as |
93 | |prominent Attribution Notice reasonably calculated to inform recipients that You have modified the | 97 | | an "Attribution Notice." You must cause the Source Code for any Derivative Works that You |
94 | |Original Work. | 98 | | create to carry a prominent Attribution Notice reasonably calculated to inform recipients |
95 | | | 99 | | that You have modified the Original Work. |
96 | |7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and | 100 | | |
97 | |to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or | 101 | | 7)Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright |
98 | |are sublicensed to You under the terms of this License with the permission of the contributor(s) | 102 | | in and to the Original Work and the patent rights granted herein by Licensor are owned |
99 | |of those copyrights and patent rights. Except as expressly stated in the immediately proceeding | 103 | | by the Licensor or are sublicensed to You under the terms of this License with the |
100 | |sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, | 104 | | permission of the contributor(s) of those copyrights and patent rights. Except as expressly |
101 | |either express or implied, including, without limitation, the warranties of NON-INFRINGEMENT, | 105 | | stated in the immediately proceeding sentence, the Original Work is provided under this |
102 | |MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL | 106 | | License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, |
103 | |WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license | 107 | | without limitation, the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A |
104 | |to Original Work is granted hereunder except under this disclaimer. | 108 | | PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. |
105 | | | 109 | | This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to |
106 | |8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including | 110 | | Original Work is granted hereunder except under this disclaimer. |
107 | |negligence), contract, or otherwise, shall the Licensor be liable to any person for any direct, indirect, | 111 | | |
108 | |special, incidental, or consequential damages of any character arising as a result of this License or the | 112 | | 8)Limitation of Liability. Under no circumstances and under no legal theory, whether in tort |
109 | |use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, | 113 | | (including negligence), contract, or otherwise, shall the Licensor be liable to any person |
110 | |computer failure or malfunction, or any and all other commercial damages or losses. This limitation of | 114 | | for any direct, indirect, special, incidental, or consequential damages of any character |
111 | |liability shall not apply to liability for death or personal injury resulting from Licensor's negligence | 115 | | arising as a result of this License or the use of the Original Work including, without |
112 | |to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or | 116 | | limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, |
113 | |limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You. | 117 | | or any and all other commercial damages or losses. This limitation of liability shall not |
114 | | | 118 | | apply to liability for death or personal injury resulting from Licensor's negligence to |
115 | |9) Acceptance and Termination. If You distribute copies of the Original Work or a Derivative Work, You must | 119 | | the extent applicable law prohibits such limitation. Some jurisdictions do not allow the |
116 | |make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of | 120 | | exclusion or limitation of incidental or consequential damages, so this exclusion and |
117 | |this License. Nothing else but this License (or another written agreement between Licensor and You) grants | 121 | | limitation may not apply to You. |
118 | |You permission to create Derivative Works based upon the Original Work or to exercise any of the rights | 122 | | |
119 | |granted in Section 1 herein, and any attempt to do so except under the terms of this License (or another | 123 | | 9)Acceptance and Termination. If You distribute copies of the Original Work or a Derivative |
120 | |written agreement between Licensor and You) is expressly prohibited by U.S. copyright law, the equivalent | 124 | | Work, You must make a reasonable effort under the circumstances to obtain the express |
121 | |laws of other countries, and by international treaty. Therefore, by exercising any of the rights granted | 125 | | assent of recipients to the terms of this License. Nothing else but this License (or |
122 | |to You in Section 1 herein, You indicate Your acceptance of this License and all of its terms and conditions. | 126 | | another written agreement between Licensor and You) grants You permission to create |
123 | | | 127 | | Derivative Works based upon the Original Work or to exercise any of the rights granted in |
124 | |10) Termination for Patent Action. This License shall terminate automatically and You may no longer exercise | 128 | | Section 1 herein, and any attempt to do so except under the terms of this License (or |
125 | |any of the rights granted to You by this License as of the date You commence an action, including a cross-claim | 129 | | another written agreement between Licensor and You) is expressly prohibited by U.S. copyright |
126 | |or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This | 130 | | law, the equivalent laws of other countries, and by international treaty. Therefore, by |
127 | |termination provision shall not apply for an action alleging patent infringement by combinations of the Original | 131 | | exercising any of the rights granted to You in Section 1 herein, You indicate Your |
128 | |Work with other software or hardware. | 132 | | acceptance of this License and all of its terms and conditions. |
129 | | | 133 | | |
130 | |11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in | 134 | | 10)Termination for Patent Action. This License shall terminate automatically and You may no |
131 | |the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, | 135 | | longer exercise any of the rights granted to You by this License as of the date You |
132 | |and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United | 136 | | commence an action, including a cross-claim or counterclaim, against Licensor or any |
133 | |Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the | 137 | | licensee alleging that the Original Work infringes a patent. This termination provision |
134 | |Original Work outside the scope of this License or after its termination shall be subject to the requirements | 138 | | shall not apply for an action alleging patent infringement by combinations of the Original |
135 | |and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et seq., the equivalent laws of other countries, | 139 | | Work with other software or hardware. |
136 | |and international treaty. This section shall survive the termination of this License. | 140 | | |
137 | | | 141 | | 11)Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be |
138 | |12) Attorneys Fees. In any action to enforce the terms of this License or seeking damages | 142 | | brought only in the courts of a jurisdiction wherein the Licensor resides or in which |
139 | |relating thereto, the prevailing party shall be entitled to recover its costs and expenses, | 143 | | Licensor conducts its primary business, and under the laws of that jurisdiction excluding |
140 | |including, without limitation, reasonable attorneys' fees and costs incurred in connection | 144 | | its conflict-of-law provisions. The application of the United Nations Convention on Contracts |
141 | |with such action, including any appeal of such action. This section shall survive the | 145 | | for the International Sale of Goods is expressly excluded. Any use of the Original Work |
142 | |termination of this License. | 146 | | outside the scope of this License or after its termination shall be subject to the |
143 | | | 147 | | requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et seq., the equivalent |
144 | |13) Miscellaneous. This License represents the complete agreement concerning the subject | 148 | | laws of other countries, and international treaty. This section shall survive the termination |
145 | |matter hereof. If any provision of this License is held to be unenforceable, such provision | 149 | | of this License. |
146 | |shall be reformed only to the extent necessary to make it enforceable. | 150 | | |
147 | | | 151 | | 12)Attorneys Fees. In any action to enforce the terms of this License or seeking damages |
148 | |14) Definition of "You" in This License. "You" throughout this License, whether in upper | 152 | | relating thereto, the prevailing party shall be entitled to recover its costs and expenses, |
149 | |or lower case, means an individual or a legal entity exercising rights under, and complying | 153 | | including, without limitation, reasonable attorneys' fees and costs incurred in connection |
150 | |with all of the terms of, this License. For legal entities, "You" includes any entity that | 154 | | with such action, including any appeal of such action. This section shall survive the |
151 | |controls, is controlled by, or is under common control with you. For purposes of this | 155 | | termination of this License. |
152 | |definition, "control" means (i) the power, direct or indirect, to cause the direction or | 156 | | |
153 | |management of such entity, whether by contract or otherwise, or (ii) ownership of fifty | 157 | | 13)Miscellaneous. This License represents the complete agreement concerning the subject matter |
154 | |percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. | 158 | | hereof. If any provision of this License is held to be unenforceable, such provision shall |
155 | | | 159 | | be reformed only to the extent necessary to make it enforceable. |
156 | |15) Right to Use. You may use the Original Work in all ways not otherwise restricted or | 160 | | |
157 | |conditioned by this License or by law, and Licensor promises not to interfere with or be | 161 | | 14)Definition of "You" in This License. "You" throughout this License, whether in upper or lower |
158 | |responsible for such uses by You. | 162 | | case, means an individual or a legal entity exercising rights under, and complying with all |
159 | | | 163 | | of the terms of, this License. For legal entities, "You" includes any entity that controls, |
160 | |This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. Permission | 164 | | is controlled by, or is under common control with you. For purposes of this definition, |
161 | |is hereby granted to copy and distribute this license without modification. This license | 165 | | "control" means (i) the power, direct or indirect, to cause the direction or management of |
162 | |may not be modified without the express written permission of its copyright owner. | 166 | | such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or |
167 | | more of the outstanding shares, or (iii) beneficial ownership of such entity. | ||
168 | | | ||
169 | | 15)Right to Use. You may use the Original Work in all ways not otherwise restricted or | ||
170 | | conditioned by this License or by law, and Licensor promises not to interfere with or be | ||
171 | | responsible for such uses by You. | ||
172 | | | ||
173 | |This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. Permission is | ||
174 | |hereby granted to copy and distribute this license without modification. This license may not | ||
175 | |be modified without the express written permission of its copyright owner. | ||
176 | | | ||
177 | | | ||
178 | |BSD License | ||
179 | |=========== | ||
180 | | | ||
181 | |Copyright (c) 2006, Yahoo! Inc. | ||
182 | |All rights reserved. | ||
183 | | | ||
184 | |Redistribution and use of this software in source and binary forms, with or without modification, | ||
185 | |are permitted provided that the following conditions are met: | ||
186 | | | ||
187 | | *Redistributions of source code must retain the above copyright notice, this list of | ||
188 | | conditions and the following disclaimer. | ||
189 | | *Redistributions in binary form must reproduce the above copyright notice, this list of | ||
190 | | conditions and the following disclaimer in the documentation and/or other materials provided | ||
191 | | with the distribution. | ||
192 | | *Neither the name of Yahoo! Inc. nor the names of its contributors may be used to endorse or | ||
193 | | promote products derived from this software without specific prior written permission of | ||
194 | | Yahoo! Inc. | ||
195 | | | ||
196 | |THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED | ||
197 | |WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A | ||
198 | |PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR | ||
199 | |ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||
200 | |LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
201 | |INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR | ||
202 | |TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | ||
203 | |ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
163 | 204 | ||
164 | 205 | ||
165 | # Yahoo! UI Library (http://developer.yahoo.com/yui/) | 206 | # Yahoo! UI Library (http://developer.yahoo.com/yui/) |
166 | - package version: 0.12 | 207 | - package version: 0.12 |
167 | 208 | ||
168 | Copyright © 2005-2006 Yahoo! Inc. All rights reserved | 209 | Copyright © 2005-2006 Yahoo! Inc. All rights reserved |
169 | * Copyright notes: http://docs.yahoo.com/info/copyright/copyright.html | 210 | * Copyright notes: http://docs.yahoo.com/info/copyright/copyright.html |
170 | * Software licence: http://developer.yahoo.com/yui/license.txt | 211 | * Software licence: http://developer.yahoo.com/yui/license.txt |
171 | 212 | ||
172 | |Software License Agreement (BSD License) | 213 | |Software License Agreement (BSD License) |
173 | | | 214 | | |
174 | |Copyright (c) 2006, Yahoo! Inc. | 215 | |Copyright (c) 2006, Yahoo! Inc. |
175 | |All rights reserved. | 216 | |All rights reserved. |
176 | | | 217 | | |
177 | |Redistribution and use of this software in source and binary forms, with or without modification, are | 218 | |Redistribution and use of this software in source and binary forms, with or without modification, are |
178 | |permitted provided that the following conditions are met: | 219 | |permitted provided that the following conditions are met: |
179 | | | 220 | | |
180 | |* Redistributions of source code must retain the above | 221 | |* Redistributions of source code must retain the above |
181 | | copyright notice, this list of conditions and the | 222 | | copyright notice, this list of conditions and the |
182 | | following disclaimer. | 223 | | following disclaimer. |
183 | | | 224 | | |
184 | |* Redistributions in binary form must reproduce the above | 225 | |* Redistributions in binary form must reproduce the above |
185 | | copyright notice, this list of conditions and the | 226 | | copyright notice, this list of conditions and the |
186 | | following disclaimer in the documentation and/or other | 227 | | following disclaimer in the documentation and/or other |
187 | | materials provided with the distribution. | 228 | | materials provided with the distribution. |
188 | | | 229 | | |
189 | |* Neither the name of Yahoo! Inc. nor the names of its | 230 | |* Neither the name of Yahoo! Inc. nor the names of its |
190 | | contributors may be used to endorse or promote products | 231 | | contributors may be used to endorse or promote products |
191 | | derived from this software without specific prior | 232 | | derived from this software without specific prior |
192 | | written permission of Yahoo! Inc. | 233 | | written permission of Yahoo! Inc. |
193 | | | 234 | | |
194 | |THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED | 235 | |THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED |
195 | |WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A | 236 | |WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A |
196 | |PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR | 237 | |PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR |
197 | |ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 238 | |ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
198 | |LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 239 | |LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
199 | |INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR | 240 | |INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR |
200 | |TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | 241 | |TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
201 | |ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 242 | |ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
202 | 243 | ||
203 | 244 | ||
204 | 245 | ||
205 | # YUI-ext (http://www.yui-ext.com) | 246 | # YUI-ext (http://www.yui-ext.com) |
206 | - repository: http://yui-ext.googlecode.com/svn/trunk/ (revision: 120) | 247 | - repository: http://yui-ext.googlecode.com/svn/trunk/ (revision: 120) |
207 | 248 | ||
208 | * Software licence: http://yui-ext.googlecode.com/svn/trunk/src/licence.txt | 249 | * Software licence: http://yui-ext.googlecode.com/svn/trunk/src/licence.txt |
209 | 250 | ||
210 | |yui-ext | 251 | |yui-ext |
211 | |Copyright (c) 2006, Jack Slocum | 252 | |Copyright (c) 2006, Jack Slocum |
212 | |All rights reserved. | 253 | |All rights reserved. |
213 | | | 254 | | |
214 | |Redistribution and use in source and binary forms, with or without modification, | 255 | |Redistribution and use in source and binary forms, with or without modification, |
215 | |are permitted provided that the following conditions are met: | 256 | |are permitted provided that the following conditions are met: |
216 | | | 257 | | |
217 | | * Redistributions of source code must retain the above copyright notice, | 258 | | * Redistributions of source code must retain the above copyright notice, |
218 | | this list of conditions and the following disclaimer. | 259 | | this list of conditions and the following disclaimer. |
219 | | * Redistributions in binary form must reproduce the above copyright notice, | 260 | | * Redistributions in binary form must reproduce the above copyright notice, |
220 | | this list of conditions and the following disclaimer in the documentation | 261 | | this list of conditions and the following disclaimer in the documentation |
221 | | and/or other materials provided with the distribution. | 262 | | and/or other materials provided with the distribution. |
222 | | * Neither the name yui-ext nor the names of its contributors | 263 | | * Neither the name yui-ext nor the names of its contributors |
223 | | may be used to endorse or promote products derived from this software | 264 | | may be used to endorse or promote products derived from this software |
224 | | without specific prior written permission. | 265 | | without specific prior written permission. |
225 | | | 266 | | |
226 | |THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | 267 | |THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
227 | |ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 268 | |ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
228 | |WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 269 | |WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
229 | |IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | 270 | |IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
230 | |INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | 271 | |INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
231 | |BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 272 | |BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
232 | |DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 273 | |DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
233 | |OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | 274 | |OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
234 | |NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, | 275 | |NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
235 | |EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 276 | |EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
236 | 277 | ||
237 | 278 | ||
238 | 279 | ||
239 | # iUI: iPhone User Interface Framework (http://code.google.com/p/iui/) | ||
240 | - package version: 282 | ||
241 | |||
242 | Copyright (c) 2007-2009, iUI Project Members | ||
243 | |||
244 | |All rights reserved. | ||
245 | | | ||
246 | |Redistribution and use in source and binary forms, with or without modification, | ||
247 | |are permitted provided that the following conditions are met: | ||
248 | | | ||
249 | | * Redistributions of source code must retain the above copyright notice, this | ||
250 | | list of conditions and the following disclaimer. | ||
251 | | * Redistributions in binary form must reproduce the above copyright notice, | ||
252 | | this list of conditions and the following disclaimer in the documentation | ||
253 | | and/or other materials provided with the distribution. | ||
254 | | * Neither the name of the iUI Project nor the names of its contributors may | ||
255 | | be used to endorse or promote products derived from this software without | ||
256 | | specific prior written permission. | ||
257 | | | ||
258 | |THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
259 | |"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
260 | |LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||
261 | |A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR | ||
262 | |CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||
263 | |EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | ||
264 | |PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | ||
265 | |PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | ||
266 | |LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | ||
267 | |NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
268 | |SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
269 | |||
270 | |||
271 | |||
272 | # Big Integer Library v. 5.0 | 280 | # Big Integer Library v. 5.0 |
273 | - code downloaded on March 5, 2007 from http://www.leemon.com/crypto/BigInt.js | 281 | - code downloaded on March 5, 2007 from http://www.leemon.com/crypto/BigInt.js |
274 | 282 | ||
275 | |Big Integer Library v. 5.0 | 283 | |Big Integer Library v. 5.0 |
276 | |Created 2000, last modified 2006 | 284 | |Created 2000, last modified 2006 |
277 | |Leemon Baird | 285 | |Leemon Baird |
278 | |www.leemon.com | 286 | |www.leemon.com |
279 | | | 287 | | |
280 | |This file is public domain. You can use it for any purpose without restriction. | 288 | |This file is public domain. You can use it for any purpose without restriction. |
281 | |I do not guarantee that it is correct, so use it at your own risk. If you use | 289 | |I do not guarantee that it is correct, so use it at your own risk. If you use |
282 | |it for something interesting, I'd appreciate hearing about it. If you find | 290 | |it for something interesting, I'd appreciate hearing about it. If you find |
283 | |any bugs or make any improvements, I'd appreciate hearing about those too. | 291 | |any bugs or make any improvements, I'd appreciate hearing about those too. |
284 | |It would also be nice if my name and address were left in the comments. | 292 | |It would also be nice if my name and address were left in the comments. |
285 | |But none of that is required. | 293 | |But none of that is required. |
286 | 294 | ||
287 | 295 | ||
288 | 296 | ||
289 | # JSON library | 297 | # JSON library |
290 | - code downloaded on October 13, 2008 from http://www.JSON.org/json2.js | 298 | - code downloaded on October 13, 2008 from http://www.JSON.org/json2.js |
291 | 299 | ||
292 | |http://www.JSON.org/json2.js | 300 | |http://www.JSON.org/json2.js |
293 | |2008-09-01 | 301 | |2008-09-01 |
294 | | | 302 | | |
295 | |Public Domain. | 303 | |Public Domain. |
296 | | | 304 | | |
297 | |NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. | 305 | |NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. |
298 | | | 306 | | |
299 | |See http://www.JSON.org/js.html | 307 | |See http://www.JSON.org/js.html |
300 | 308 | ||
301 | 309 | ||
302 | 310 | ||
303 | # Other code snippets used in the first demo of the program, and still present just to be able to | 311 | # Other code snippets used in the first demo of the program, and still present just to be able to |
304 | read record previously written using these same functions: | 312 | read record previously written using these same functions: |
305 | 313 | ||
306 | - Code downloaded on March 30, 2006 from http://anmar.eu.org/projects/jssha2/files/jssha2-0.3.zip | 314 | - Code downloaded on March 30, 2006 from http://anmar.eu.org/projects/jssha2/files/jssha2-0.3.zip |
307 | File used: jsSha2/sha256.js | 315 | File used: jsSha2/sha256.js |
308 | 316 | ||
309 | |A JavaScript implementation of the Secure Hash Algorithm, SHA-256 | 317 | |A JavaScript implementation of the Secure Hash Algorithm, SHA-256 |
310 | |Version 0.3 Copyright Angel Marin 2003-2004 - http://anmar.eu.org/ | 318 | |Version 0.3 Copyright Angel Marin 2003-2004 - http://anmar.eu.org/ |
311 | |Distributed under the BSD License | 319 | |Distributed under the BSD License |
312 | |Some bits taken from Paul Johnston's SHA-1 implementation | 320 | |Some bits taken from Paul Johnston's SHA-1 implementation |
313 | 321 | ||
314 | 322 | ||
315 | - Code downloaded on March 30, 2006 from http://www.fourmilab.ch/javascrypt/javascrypt.zip | 323 | - Code downloaded on March 30, 2006 from http://www.fourmilab.ch/javascrypt/javascrypt.zip |
316 | Files used: entropy.js, aesprng.js, md5.js, aes.js, utf-8.js | 324 | Files used: entropy.js, aesprng.js, md5.js, aes.js, utf-8.js |
317 | 325 | ||
318 | 326 | ||
319 | - Code downloaded on April 26, 2006 from http://pajhome.org.uk/crypt/md5/md5.js | 327 | - Code downloaded on April 26, 2006 from http://pajhome.org.uk/crypt/md5/md5.js |
320 | 328 | ||
321 | |A JavaScript implementation of the RSA Data Security, Inc. MD5 Message | 329 | |A JavaScript implementation of the RSA Data Security, Inc. MD5 Message |
322 | |Digest Algorithm, as defined in RFC 1321. | 330 | |Digest Algorithm, as defined in RFC 1321. |
323 | |Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. | 331 | |Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. |
324 | |Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet | 332 | |Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet |
325 | |Distributed under the BSD License | 333 | |Distributed under the BSD License |
326 | |See http://pajhome.org.uk/crypt/md5 for more info. | 334 | |See http://pajhome.org.uk/crypt/md5 for more info. |
327 | 335 | ||
328 | 336 | ||
329 | 337 | ||
330 | #General notes | 338 | #General notes |
331 | The code in this page has been processed with a JavaScript compressor and is thus | 339 | The code in this page has been processed with a JavaScript compressor and is thus |
332 | difficult to read. | 340 | difficult to read. |
333 | To get the exact version of the code used to build this application you | 341 | To get the exact version of the code used to build this application you |
334 | can take a look here: | 342 | can take a look here: |
335 | - http://www.clipperz.com/security_privacy/security_code_review | 343 | - http://www.clipperz.com/security_privacy/security_code_review |
336 | 344 | ||
diff --git a/frontend/gamma/properties/gamma.properties.json b/frontend/gamma/properties/gamma.properties.json index c847812..eec4194 100644 --- a/frontend/gamma/properties/gamma.properties.json +++ b/frontend/gamma/properties/gamma.properties.json | |||
@@ -1,191 +1,191 @@ | |||
1 | { | 1 | { |
2 | "copyright.values": { | 2 | "copyright.values": { |
3 | "mochikit.repository": "https://github.com/mochi/mochikit.git", | 3 | "mochikit.repository":"https://github.com/mochi/mochikit.git", |
4 | "mochikit.version": "fe8d17bb9ac0a4e5ad4a8d5c2c94a6fac1c92d75" | 4 | "mochikit.version": "fe8d17bb9ac0a4e5ad4a8d5c2c94a6fac1c92d75" |
5 | }, | 5 | }, |
6 | 6 | ||
7 | "html.template": "index_template.html", | 7 | "html.template": "index_template.html", |
8 | 8 | ||
9 | "js": [ | 9 | "js": [ |
10 | "MochiKit/Base.js", | 10 | "MochiKit/Base.js", |
11 | "MochiKit/Iter.js", | 11 | "MochiKit/Iter.js", |
12 | "MochiKit/Logging.js", | 12 | "MochiKit/Logging.js", |
13 | "-- MochiKit/DateTime.js", | 13 | "-- MochiKit/DateTime.js", |
14 | "MochiKit/Format.js", | 14 | "MochiKit/Format.js", |
15 | "MochiKit/Async.js", | 15 | "MochiKit/Async.js", |
16 | "MochiKit/DOM.js", | 16 | "MochiKit/DOM.js", |
17 | "MochiKit/Style.js", | 17 | "MochiKit/Style.js", |
18 | "MochiKit/LoggingPane.js", | 18 | "MochiKit/LoggingPane.js", |
19 | "MochiKit/Color.js", | 19 | "MochiKit/Color.js", |
20 | "MochiKit/Signal.js", | 20 | "MochiKit/Signal.js", |
21 | "MochiKit/Position.js", | 21 | "MochiKit/Position.js", |
22 | "MochiKit/Selector.js", | 22 | "MochiKit/Selector.js", |
23 | "MochiKit/Visual.js", | 23 | "MochiKit/Visual.js", |
24 | 24 | ||
25 | "JSON/json2.js", | 25 | "JSON/json2.js", |
26 | 26 | ||
27 | "Clipperz/YUI/Utils.js", | 27 | "Clipperz/YUI/Utils.js", |
28 | "Clipperz/YUI/DomHelper.js", | 28 | "Clipperz/YUI/DomHelper.js", |
29 | 29 | ||
30 | "Clipperz/ByteArray.js", | 30 | "Clipperz/ByteArray.js", |
31 | "Clipperz/Base.js", | 31 | "Clipperz/Base.js", |
32 | "Clipperz/Async.js", | 32 | "Clipperz/Async.js", |
33 | "Clipperz/CSVProcessor.js", | 33 | "Clipperz/CSVProcessor.js", |
34 | "Clipperz/KeePassExportProcessor.js", | 34 | "Clipperz/KeePassExportProcessor.js", |
35 | "Clipperz/Date.js", | 35 | "Clipperz/Date.js", |
36 | "Clipperz/DOM.js", | 36 | "Clipperz/DOM.js", |
37 | "Clipperz/Logging.js", | 37 | "Clipperz/Logging.js", |
38 | "Clipperz/Signal.js", | 38 | "Clipperz/Signal.js", |
39 | "Clipperz/Style.js", | 39 | "Clipperz/Style.js", |
40 | "Clipperz/Visual.js", | 40 | "Clipperz/Visual.js", |
41 | "Clipperz/Set.js", | 41 | "Clipperz/Set.js", |
42 | "-- Clipperz/Profile.js", | 42 | "-- Clipperz/Profile.js", |
43 | "Clipperz/KeyValueObjectStore.js", | 43 | "Clipperz/KeyValueObjectStore.js", |
44 | 44 | ||
45 | "Clipperz/Crypto/SHA.js", | 45 | "Clipperz/Crypto/SHA.js", |
46 | "Clipperz/Crypto/AES.js", | 46 | "Clipperz/Crypto/AES.js", |
47 | "Clipperz/Crypto/PRNG.js", | 47 | "Clipperz/Crypto/PRNG.js", |
48 | "Clipperz/Crypto/BigInt.js", | 48 | "Clipperz/Crypto/BigInt.js", |
49 | "Clipperz/Crypto/Base.js", | 49 | "Clipperz/Crypto/Base.js", |
50 | "Clipperz/Crypto/SRP.js", | 50 | "Clipperz/Crypto/SRP.js", |
51 | "Clipperz/Crypto/RSA.js", | 51 | "Clipperz/Crypto/RSA.js", |
52 | 52 | ||
53 | "Clipperz/PM/Strings/Strings_defaults.js", | 53 | "Clipperz/PM/Strings/Strings_defaults.js", |
54 | "Clipperz/PM/Strings/Strings_en-US.js", | 54 | "Clipperz/PM/Strings/Strings_en-US.js", |
55 | "-- # Clipperz/PM/Strings/Strings_en-GB.js", | 55 | "-- # Clipperz/PM/Strings/Strings_en-GB.js", |
56 | "-- # Clipperz/PM/Strings/Strings_en-CA.js", | 56 | "-- # Clipperz/PM/Strings/Strings_en-CA.js", |
57 | "-- Clipperz/PM/Strings/Strings_it-IT.js", | 57 | "-- Clipperz/PM/Strings/Strings_it-IT.js", |
58 | "-- Clipperz/PM/Strings/Strings_pt-BR.js", | 58 | "-- Clipperz/PM/Strings/Strings_pt-BR.js", |
59 | "-- # Clipperz/PM/Strings/Strings_pt-PT.js", | 59 | "-- # Clipperz/PM/Strings/Strings_pt-PT.js", |
60 | "-- Clipperz/PM/Strings/Strings_ja-JP.js", | 60 | "-- Clipperz/PM/Strings/Strings_ja-JP.js", |
61 | "-- Clipperz/PM/Strings/Strings_zh-CN.js", | 61 | "-- Clipperz/PM/Strings/Strings_zh-CN.js", |
62 | "-- Clipperz/PM/Strings/Strings_es-ES.js", | 62 | "-- Clipperz/PM/Strings/Strings_es-ES.js", |
63 | "-- Clipperz/PM/Strings/Strings_fr-FR.js", | 63 | "-- Clipperz/PM/Strings/Strings_fr-FR.js", |
64 | "-- # Clipperz/PM/Strings/Strings_de-DE.js", | 64 | "-- # Clipperz/PM/Strings/Strings_de-DE.js", |
65 | "-- # Clipperz/PM/Strings/Strings_el-GR.js", | 65 | "-- # Clipperz/PM/Strings/Strings_el-GR.js", |
66 | "-- # Clipperz/PM/Strings/Strings_ru-RU.js", | 66 | "-- # Clipperz/PM/Strings/Strings_ru-RU.js", |
67 | "-- # Clipperz/PM/Strings/Strings_he-IL.js", | 67 | "-- # Clipperz/PM/Strings/Strings_he-IL.js", |
68 | "Clipperz/PM/Strings.js", | 68 | "Clipperz/PM/Strings.js", |
69 | "-- Clipperz/PM/Strings/MessagePanelConfigurations.js", | 69 | "-- Clipperz/PM/Strings/MessagePanelConfigurations.js", |
70 | 70 | ||
71 | "Clipperz/PM/Date.js", | 71 | "Clipperz/PM/Date.js", |
72 | 72 | ||
73 | "Clipperz/PM/Toll.js", | 73 | "Clipperz/PM/Toll.js", |
74 | "Clipperz/PM/Proxy.js", | 74 | "Clipperz/PM/Proxy.js", |
75 | "Clipperz/PM/Proxy/Proxy.JSON.js", | 75 | "Clipperz/PM/Proxy/Proxy.JSON.js", |
76 | "Clipperz/PM/Proxy/Proxy.Offline.js", | 76 | "Clipperz/PM/Proxy/Proxy.Offline.js", |
77 | "Clipperz/PM/Proxy/Proxy.Offline.DataStore.js", | 77 | "Clipperz/PM/Proxy/Proxy.Offline.DataStore.js", |
78 | "Clipperz/PM/Connection.js", | 78 | "Clipperz/PM/Connection.js", |
79 | "Clipperz/PM/Crypto.js", | 79 | "Clipperz/PM/Crypto.js", |
80 | "Clipperz/PM/BookmarkletProcessor.js", | 80 | "Clipperz/PM/BookmarkletProcessor.js", |
81 | 81 | ||
82 | "Clipperz/PM/DataModel/EncryptedRemoteObject.js", | 82 | "Clipperz/PM/DataModel/EncryptedRemoteObject.js", |
83 | "Clipperz/PM/DataModel/User.js", | 83 | "Clipperz/PM/DataModel/User.js", |
84 | "Clipperz/PM/DataModel/User.Header.Legacy.js", | 84 | "Clipperz/PM/DataModel/User.Header.Legacy.js", |
85 | "Clipperz/PM/DataModel/User.Header.RecordIndex.js", | 85 | "Clipperz/PM/DataModel/User.Header.RecordIndex.js", |
86 | "Clipperz/PM/DataModel/User.Header.Preferences.js", | 86 | "Clipperz/PM/DataModel/User.Header.Preferences.js", |
87 | "Clipperz/PM/DataModel/User.Header.OneTimePasswords.js", | 87 | "Clipperz/PM/DataModel/User.Header.OneTimePasswords.js", |
88 | "Clipperz/PM/DataModel/Record.js", | 88 | "Clipperz/PM/DataModel/Record.js", |
89 | "Clipperz/PM/DataModel/Record.Version.js", | 89 | "Clipperz/PM/DataModel/Record.Version.js", |
90 | "Clipperz/PM/DataModel/Record.Version.Field.js", | 90 | "Clipperz/PM/DataModel/Record.Version.Field.js", |
91 | "Clipperz/PM/DataModel/DirectLogin.js", | 91 | "Clipperz/PM/DataModel/DirectLogin.js", |
92 | "Clipperz/PM/DataModel/DirectLoginInput.js", | 92 | "Clipperz/PM/DataModel/DirectLoginInput.js", |
93 | "Clipperz/PM/DataModel/DirectLoginBinding.js", | 93 | "Clipperz/PM/DataModel/DirectLoginBinding.js", |
94 | "Clipperz/PM/DataModel/DirectLoginFormValue.js", | 94 | "Clipperz/PM/DataModel/DirectLoginFormValue.js", |
95 | "Clipperz/PM/DataModel/OneTimePassword.js", | 95 | "Clipperz/PM/DataModel/OneTimePassword.js", |
96 | 96 | ||
97 | "Clipperz/PM/UI/Canvas/Marks/exclamationMark.js", | 97 | "Clipperz/PM/UI/Canvas/Marks/exclamationMark.js", |
98 | "Clipperz/PM/UI/Canvas/Marks/questionMark.js", | 98 | "Clipperz/PM/UI/Canvas/Marks/questionMark.js", |
99 | "Clipperz/PM/UI/Canvas/Marks/info.js", | 99 | "Clipperz/PM/UI/Canvas/Marks/info.js", |
100 | 100 | ||
101 | "Clipperz/PM/UI/Canvas/Features/store.js", | 101 | "Clipperz/PM/UI/Canvas/Features/store.js", |
102 | "Clipperz/PM/UI/Canvas/Features/protect.js", | 102 | "Clipperz/PM/UI/Canvas/Features/protect.js", |
103 | "Clipperz/PM/UI/Canvas/Features/directLogin.js", | 103 | "Clipperz/PM/UI/Canvas/Features/directLogin.js", |
104 | "Clipperz/PM/UI/Canvas/Features/share.js", | 104 | "Clipperz/PM/UI/Canvas/Features/share.js", |
105 | 105 | ||
106 | "Clipperz/PM/UI/Canvas/Star/normal.js", | 106 | "Clipperz/PM/UI/Canvas/Star/normal.js", |
107 | 107 | ||
108 | "Clipperz/PM/UI/Canvas/CoverActions/look.js", | 108 | "Clipperz/PM/UI/Canvas/CoverActions/look.js", |
109 | "Clipperz/PM/UI/Canvas/CoverActions/download.js", | 109 | "Clipperz/PM/UI/Canvas/CoverActions/download.js", |
110 | 110 | ||
111 | "Clipperz/PM/UI/Canvas/Tips/open.js", | 111 | "Clipperz/PM/UI/Canvas/Tips/open.js", |
112 | "Clipperz/PM/UI/Canvas/Tips/close.js", | 112 | "Clipperz/PM/UI/Canvas/Tips/close.js", |
113 | 113 | ||
114 | "Clipperz/PM/UI/Canvas/RegisterButton/normal.js", | 114 | "Clipperz/PM/UI/Canvas/RegisterButton/normal.js", |
115 | 115 | ||
116 | "Clipperz/PM/UI/Canvas/Logo/normal.js", | 116 | "Clipperz/PM/UI/Canvas/Logo/normal.js", |
117 | 117 | ||
118 | "Clipperz/PM/UI/Canvas/GraphicFunctions.js", | 118 | "Clipperz/PM/UI/Canvas/GraphicFunctions.js", |
119 | 119 | ||
120 | "Clipperz/PM/UI/Common/Components/BaseComponent.js", | 120 | "Clipperz/PM/UI/Common/Components/BaseComponent.js", |
121 | "Clipperz/PM/UI/Common/Components/Button.js", | 121 | "Clipperz/PM/UI/Common/Components/Button.js", |
122 | "Clipperz/PM/UI/Common/Components/ComponentSlot.js", | 122 | "Clipperz/PM/UI/Common/Components/ComponentSlot.js", |
123 | "Clipperz/PM/UI/Common/Components/FaviconComponent.js", | 123 | "Clipperz/PM/UI/Common/Components/FaviconComponent.js", |
124 | "Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js", | 124 | "Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js", |
125 | "Clipperz/PM/UI/Common/Components/ProgressBar.js", | 125 | "Clipperz/PM/UI/Common/Components/ProgressBar.js", |
126 | "Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js", | 126 | "Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js", |
127 | "Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js", | 127 | "Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js", |
128 | "Clipperz/PM/UI/Common/Components/TabPanelComponent.js", | 128 | "Clipperz/PM/UI/Common/Components/TabPanelComponent.js", |
129 | "Clipperz/PM/UI/Common/Components/Tooltip.js", | 129 | "Clipperz/PM/UI/Common/Components/Tooltip.js", |
130 | "Clipperz/PM/UI/Common/Components/TranslatorWidget.js", | 130 | "Clipperz/PM/UI/Common/Components/TranslatorWidget.js", |
131 | 131 | ||
132 | "Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js", | 132 | "Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js", |
133 | "Clipperz/PM/UI/Common/Controllers/ProgressBarController.js", | 133 | "Clipperz/PM/UI/Common/Controllers/ProgressBarController.js", |
134 | "Clipperz/PM/UI/Common/Controllers/TabPanelController.js", | 134 | "Clipperz/PM/UI/Common/Controllers/TabPanelController.js", |
135 | "Clipperz/PM/UI/Common/Controllers/WizardController.js", | 135 | "Clipperz/PM/UI/Common/Controllers/WizardController.js", |
136 | 136 | ||
137 | "Clipperz/PM/UI/Web/Components/Page.js", | 137 | "Clipperz/PM/UI/Web/Components/Page.js", |
138 | "Clipperz/PM/UI/Web/Components/PageHeader.js", | 138 | "Clipperz/PM/UI/Web/Components/PageHeader.js", |
139 | "Clipperz/PM/UI/Web/Components/PageFooter.js", | 139 | "Clipperz/PM/UI/Web/Components/PageFooter.js", |
140 | "Clipperz/PM/UI/Web/Components/LoginPage.js", | 140 | "Clipperz/PM/UI/Web/Components/LoginPage.js", |
141 | "Clipperz/PM/UI/Web/Components/LoginForm.js", | 141 | "Clipperz/PM/UI/Web/Components/LoginForm.js", |
142 | "Clipperz/PM/UI/Web/Components/LoginProgress.js", | 142 | "Clipperz/PM/UI/Web/Components/LoginProgress.js", |
143 | "Clipperz/PM/UI/Web/Components/AppPage.js", | 143 | "Clipperz/PM/UI/Web/Components/AppPage.js", |
144 | "Clipperz/PM/UI/Web/Components/UserInfoBox.js", | 144 | "Clipperz/PM/UI/Web/Components/UserInfoBox.js", |
145 | "Clipperz/PM/UI/Web/Components/TabSidePanel.js", | 145 | "Clipperz/PM/UI/Web/Components/TabSidePanel.js", |
146 | "Clipperz/PM/UI/Web/Components/GridComponent.js", | 146 | "Clipperz/PM/UI/Web/Components/GridComponent.js", |
147 | 147 | ||
148 | "Clipperz/PM/UI/Web/Components/ColumnManager.js", | 148 | "Clipperz/PM/UI/Web/Components/ColumnManager.js", |
149 | "Clipperz/PM/UI/Web/Components/TextColumnManager.js", | 149 | "Clipperz/PM/UI/Web/Components/TextColumnManager.js", |
150 | "Clipperz/PM/UI/Web/Components/FaviconColumnManager.js", | 150 | "Clipperz/PM/UI/Web/Components/FaviconColumnManager.js", |
151 | "Clipperz/PM/UI/Web/Components/ImageColumnManager.js", | 151 | "Clipperz/PM/UI/Web/Components/ImageColumnManager.js", |
152 | "Clipperz/PM/UI/Web/Components/DateColumnManager.js", | 152 | "Clipperz/PM/UI/Web/Components/DateColumnManager.js", |
153 | "Clipperz/PM/UI/Web/Components/LinkColumnManager.js", | 153 | "Clipperz/PM/UI/Web/Components/LinkColumnManager.js", |
154 | "Clipperz/PM/UI/Web/Components/DirectLoginColumnManager.js", | 154 | "Clipperz/PM/UI/Web/Components/DirectLoginColumnManager.js", |
155 | "Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js", | 155 | "Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js", |
156 | "Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js", | 156 | "Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js", |
157 | "Clipperz/PM/UI/Web/Components/CreateNewCardSplashComponent.js", | 157 | "Clipperz/PM/UI/Web/Components/CreateNewCardSplashComponent.js", |
158 | 158 | ||
159 | "Clipperz/PM/UI/Web/Components/AccountPanel.js", | 159 | "Clipperz/PM/UI/Web/Components/AccountPanel.js", |
160 | "Clipperz/PM/UI/Web/Components/DataPanel.js", | 160 | "Clipperz/PM/UI/Web/Components/DataPanel.js", |
161 | "Clipperz/PM/UI/Web/Components/ToolsPanel.js", | 161 | "Clipperz/PM/UI/Web/Components/ToolsPanel.js", |
162 | "Clipperz/PM/UI/Web/Components/RulerComponent.js", | 162 | "Clipperz/PM/UI/Web/Components/RulerComponent.js", |
163 | "Clipperz/PM/UI/Web/Components/CardDialogComponent.js", | 163 | "Clipperz/PM/UI/Web/Components/CardDialogComponent.js", |
164 | "Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js", | 164 | "Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js", |
165 | "Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js", | 165 | "Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js", |
166 | "Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js", | 166 | "Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js", |
167 | "Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js", | 167 | "Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js", |
168 | "Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js", | 168 | "Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js", |
169 | "Clipperz/PM/UI/Web/Components/BookmarkletComponent.js", | 169 | "Clipperz/PM/UI/Web/Components/BookmarkletComponent.js", |
170 | "Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js", | 170 | "Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js", |
171 | "Clipperz/PM/UI/Web/Components/NewUserCreationComponent.js", | 171 | "Clipperz/PM/UI/Web/Components/NewUserCreationComponent.js", |
172 | "Clipperz/PM/UI/Web/Components/PasswordTooltip.js", | 172 | "Clipperz/PM/UI/Web/Components/PasswordTooltip.js", |
173 | 173 | ||
174 | "Clipperz/PM/UI/Web/Controllers/MainController.js", | 174 | "Clipperz/PM/UI/Web/Controllers/MainController.js", |
175 | "Clipperz/PM/UI/Web/Controllers/LoginController.js", | 175 | "Clipperz/PM/UI/Web/Controllers/LoginController.js", |
176 | "Clipperz/PM/UI/Web/Controllers/AppController.js", | 176 | "Clipperz/PM/UI/Web/Controllers/AppController.js", |
177 | "Clipperz/PM/UI/Web/Controllers/FilterController.js", | 177 | "Clipperz/PM/UI/Web/Controllers/FilterController.js", |
178 | "Clipperz/PM/UI/Web/Controllers/GridController.js", | 178 | "Clipperz/PM/UI/Web/Controllers/GridController.js", |
179 | "Clipperz/PM/UI/Web/Controllers/CardsController.js", | 179 | "Clipperz/PM/UI/Web/Controllers/CardsController.js", |
180 | "Clipperz/PM/UI/Web/Controllers/DirectLoginsController.js", | 180 | "Clipperz/PM/UI/Web/Controllers/DirectLoginsController.js", |
181 | "Clipperz/PM/UI/Web/Controllers/CardDialogController.js", | 181 | "Clipperz/PM/UI/Web/Controllers/CardDialogController.js", |
182 | "Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js", | 182 | "Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js", |
183 | "Clipperz/PM/UI/Web/Controllers/NewUserWizardController.js", | 183 | "Clipperz/PM/UI/Web/Controllers/NewUserWizardController.js", |
184 | 184 | ||
185 | "main.js" | 185 | "main.js" |
186 | ], | 186 | ], |
187 | 187 | ||
188 | "css": [ | 188 | "css": [ |
189 | "web.css" | 189 | "web.css" |
190 | ] | 190 | ] |
191 | } | 191 | } |
diff --git a/frontend/gamma/properties/mobile.properties.json b/frontend/gamma/properties/mobile.properties.json index e26b95f..bdb2d07 100644 --- a/frontend/gamma/properties/mobile.properties.json +++ b/frontend/gamma/properties/mobile.properties.json | |||
@@ -1,119 +1,142 @@ | |||
1 | { | 1 | { |
2 | "copyright.values": { | 2 | "copyright.values": { |
3 | "mochikit.repository": "http://svn.mochikit.com/mochikit/trunk/", | 3 | "mochikit.repository": "https://github.com/mochi/mochikit.git", |
4 | "mochikit.version": "1506" | 4 | "mochikit.version": "fe8d17bb9ac0a4e5ad4a8d5c2c94a6fac1c92d75" |
5 | }, | 5 | }, |
6 | |||
7 | "html.template": "mobile_template.html", | ||
8 | |||
6 | "js": [ | 9 | "js": [ |
7 | "MochiKit/Base.js", | 10 | "MochiKit/Base.js", |
8 | "MochiKit/Iter.js", | 11 | "MochiKit/Iter.js", |
9 | "MochiKit/Logging.js", | 12 | "MochiKit/Logging.js", |
10 | "-- MochiKit/DateTime.js", | 13 | "MochiKit/DateTime.js", |
11 | "MochiKit/Format.js", | 14 | "MochiKit/Format.js", |
12 | "MochiKit/Async.js", | 15 | "MochiKit/Async.js", |
13 | "MochiKit/DOM.js", | 16 | "MochiKit/DOM.js", |
14 | "MochiKit/Style.js", | 17 | "MochiKit/Style.js", |
15 | "MochiKit/LoggingPane.js", | 18 | "MochiKit/LoggingPane.js", |
16 | "MochiKit/Color.js", | 19 | "-- MochiKit/Color.js", |
17 | "MochiKit/Signal.js", | 20 | "MochiKit/Signal.js", |
18 | "MochiKit/Position.js", | 21 | "-- MochiKit/Position.js", |
19 | "MochiKit/Selector.js", | 22 | "MochiKit/Selector.js", |
20 | "MochiKit/Visual.js", | 23 | "-- MochiKit/Visual.js", |
21 | 24 | ||
22 | "JSON/json2.js", | 25 | "JSON/json2.js", |
23 | 26 | ||
24 | "Clipperz/YUI/Utils.js", | 27 | "Clipperz/YUI/Utils.js", |
25 | "Clipperz/YUI/DomHelper.js", | 28 | "Clipperz/YUI/DomHelper.js", |
26 | 29 | ||
27 | "Clipperz/ByteArray.js", | 30 | "Clipperz/ByteArray.js", |
28 | "Clipperz/Base.js", | 31 | "Clipperz/Base.js", |
29 | "Clipperz/Async.js", | 32 | "Clipperz/Async.js", |
30 | "-- Clipperz/CSVProcessor.js", | 33 | "-- Clipperz/CSVProcessor.js", |
31 | "-- Clipperz/KeePassExportProcessor.js", | 34 | "-- Clipperz/KeePassExportProcessor.js", |
32 | "Clipperz/Date.js", | 35 | "Clipperz/Date.js", |
33 | "Clipperz/DOM.js", | 36 | "Clipperz/DOM.js", |
34 | "Clipperz/Logging.js", | 37 | "Clipperz/Logging.js", |
35 | "Clipperz/Signal.js", | 38 | "Clipperz/Signal.js", |
36 | "Clipperz/Style.js", | 39 | "-- Clipperz/Style.js", |
37 | "Clipperz/Visual.js", | 40 | "-- Clipperz/Visual.js", |
38 | "Clipperz/Set.js", | 41 | "Clipperz/Set.js", |
39 | "Clipperz/KeyValueObjectStore.js", | 42 | "Clipperz/KeyValueObjectStore.js", |
40 | 43 | ||
41 | "Clipperz/Crypto/SHA.js", | 44 | "Clipperz/Crypto/SHA.js", |
42 | "Clipperz/Crypto/AES.js", | 45 | "Clipperz/Crypto/AES.js", |
43 | "Clipperz/Crypto/PRNG.js", | 46 | "Clipperz/Crypto/PRNG.js", |
44 | "Clipperz/Crypto/BigInt.js", | 47 | "Clipperz/Crypto/BigInt.js", |
45 | "Clipperz/Crypto/Base.js", | 48 | "Clipperz/Crypto/Base.js", |
46 | "Clipperz/Crypto/SRP.js", | 49 | "Clipperz/Crypto/SRP.js", |
47 | "Clipperz/Crypto/RSA.js", | 50 | "Clipperz/Crypto/RSA.js", |
48 | 51 | ||
49 | "Clipperz/PM/Strings/Strings_defaults.js", | 52 | "Clipperz/PM/Strings/Strings_defaults.js", |
50 | "Clipperz/PM/Strings/Strings_en-US.js", | 53 | "Clipperz/PM/Strings/Strings_en-US.js", |
51 | "-- # Clipperz/PM/Strings/Strings_en-GB.js", | 54 | "-- # Clipperz/PM/Strings/Strings_en-GB.js", |
52 | "-- # Clipperz/PM/Strings/Strings_en-CA.js", | 55 | "-- # Clipperz/PM/Strings/Strings_en-CA.js", |
53 | "-- Clipperz/PM/Strings/Strings_it-IT.js", | 56 | "-- Clipperz/PM/Strings/Strings_it-IT.js", |
54 | "-- Clipperz/PM/Strings/Strings_pt-BR.js", | 57 | "-- Clipperz/PM/Strings/Strings_pt-BR.js", |
55 | "-- # Clipperz/PM/Strings/Strings_pt-PT.js", | 58 | "-- # Clipperz/PM/Strings/Strings_pt-PT.js", |
56 | "-- Clipperz/PM/Strings/Strings_ja-JP.js", | 59 | "-- Clipperz/PM/Strings/Strings_ja-JP.js", |
57 | "-- Clipperz/PM/Strings/Strings_zh-CN.js", | 60 | "-- Clipperz/PM/Strings/Strings_zh-CN.js", |
58 | "-- Clipperz/PM/Strings/Strings_es-ES.js", | 61 | "-- Clipperz/PM/Strings/Strings_es-ES.js", |
59 | "-- Clipperz/PM/Strings/Strings_fr-FR.js", | 62 | "-- Clipperz/PM/Strings/Strings_fr-FR.js", |
60 | "-- # Clipperz/PM/Strings/Strings_de-DE.js", | 63 | "-- # Clipperz/PM/Strings/Strings_de-DE.js", |
61 | "-- # Clipperz/PM/Strings/Strings_el-GR.js", | 64 | "-- # Clipperz/PM/Strings/Strings_el-GR.js", |
62 | "-- # Clipperz/PM/Strings/Strings_ru-RU.js", | 65 | "-- # Clipperz/PM/Strings/Strings_ru-RU.js", |
63 | "-- # Clipperz/PM/Strings/Strings_he-IL.js", | 66 | "-- # Clipperz/PM/Strings/Strings_he-IL.js", |
64 | "Clipperz/PM/Strings.js", | 67 | "Clipperz/PM/Strings.js", |
65 | "-- Clipperz/PM/Strings/MessagePanelConfigurations.js", | 68 | "-- Clipperz/PM/Strings/MessagePanelConfigurations.js", |
66 | 69 | ||
67 | "Clipperz/PM/Date.js", | 70 | "Clipperz/PM/Date.js", |
68 | 71 | ||
69 | "Clipperz/PM/Toll.js", | 72 | "Clipperz/PM/Toll.js", |
70 | "Clipperz/PM/Proxy.js", | 73 | "Clipperz/PM/Proxy.js", |
71 | "Clipperz/PM/Proxy/Proxy.JSON.js", | 74 | "Clipperz/PM/Proxy/Proxy.JSON.js", |
75 | "-- Clipperz/PM/Proxy/Proxy.OfflineCache.js", | ||
72 | "Clipperz/PM/Proxy/Proxy.Offline.js", | 76 | "Clipperz/PM/Proxy/Proxy.Offline.js", |
77 | "Clipperz/PM/Proxy/Proxy.Offline.DataStore.js", | ||
78 | |||
73 | "Clipperz/PM/Connection.js", | 79 | "Clipperz/PM/Connection.js", |
74 | "Clipperz/PM/Crypto.js", | 80 | "Clipperz/PM/Crypto.js", |
75 | "-- Clipperz/PM/BookmarkletProcessor.js", | 81 | "Clipperz/PM/PIN.js", |
76 | 82 | ||
77 | "Clipperz/PM/DataModel/EncryptedRemoteObject.js", | 83 | "Clipperz/PM/DataModel/EncryptedRemoteObject.js", |
78 | "Clipperz/PM/DataModel/User.js", | 84 | "Clipperz/PM/DataModel/User.js", |
79 | "Clipperz/PM/DataModel/User.Header.Legacy.js", | 85 | "Clipperz/PM/DataModel/User.Header.Legacy.js", |
80 | "Clipperz/PM/DataModel/User.Header.RecordIndex.js", | 86 | "Clipperz/PM/DataModel/User.Header.RecordIndex.js", |
81 | "Clipperz/PM/DataModel/User.Header.Preferences.js", | 87 | "Clipperz/PM/DataModel/User.Header.Preferences.js", |
82 | "Clipperz/PM/DataModel/User.Header.OneTimePasswords.js", | 88 | "Clipperz/PM/DataModel/User.Header.OneTimePasswords.js", |
83 | "Clipperz/PM/DataModel/Record.js", | 89 | "Clipperz/PM/DataModel/Record.js", |
84 | "Clipperz/PM/DataModel/Record.Version.js", | 90 | "Clipperz/PM/DataModel/Record.Version.js", |
85 | "Clipperz/PM/DataModel/Record.Version.Field.js", | 91 | "Clipperz/PM/DataModel/Record.Version.Field.js", |
86 | "Clipperz/PM/DataModel/DirectLogin.js", | 92 | "Clipperz/PM/DataModel/DirectLogin.js", |
87 | "Clipperz/PM/DataModel/DirectLoginInput.js", | 93 | "Clipperz/PM/DataModel/DirectLoginInput.js", |
88 | "Clipperz/PM/DataModel/DirectLoginBinding.js", | 94 | "Clipperz/PM/DataModel/DirectLoginBinding.js", |
89 | "Clipperz/PM/DataModel/DirectLoginFormValue.js", | 95 | "Clipperz/PM/DataModel/DirectLoginFormValue.js", |
90 | "Clipperz/PM/DataModel/OneTimePassword.js", | 96 | "Clipperz/PM/DataModel/OneTimePassword.js", |
91 | 97 | ||
98 | "Zepto/zepto.js", | ||
99 | "Zepto/ajax.js", | ||
100 | "Zepto/assets.js", | ||
101 | "Zepto/data.js", | ||
102 | "Zepto/detect.js", | ||
103 | "Zepto/event.js", | ||
104 | "Zepto/form.js", | ||
105 | "Zepto/fx.js", | ||
106 | "Zepto/fx_methods.js", | ||
107 | "Zepto/gesture.js", | ||
108 | "Zepto/polyfill.js", | ||
109 | "Zepto/selector.js", | ||
110 | "Zepto/stack.js", | ||
111 | "Zepto/touch.js", | ||
112 | |||
113 | "JQTouch/jqtouch.js", | ||
114 | |||
92 | "Clipperz/PM/UI/Common/Components/BaseComponent.js", | 115 | "Clipperz/PM/UI/Common/Components/BaseComponent.js", |
93 | "-- Clipperz/PM/UI/Common/Components/Button.js", | 116 | "-- Clipperz/PM/UI/Common/Components/Button.js", |
94 | "Clipperz/PM/UI/Common/Components/ComponentSlot.js", | 117 | "Clipperz/PM/UI/Common/Components/ComponentSlot.js", |
95 | "-- Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js", | 118 | "-- Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js", |
96 | "Clipperz/PM/UI/Common/Components/ProgressBar.js", | 119 | "Clipperz/PM/UI/Common/Components/ProgressBar.js", |
97 | "-- Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js", | 120 | "-- Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js", |
98 | "-- Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js", | 121 | "-- Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js", |
99 | "-- Clipperz/PM/UI/Common/Components/TabPanelComponent.js", | 122 | "-- Clipperz/PM/UI/Common/Components/TabPanelComponent.js", |
100 | "-- Clipperz/PM/UI/Common/Components/Tooltip.js", | 123 | "-- Clipperz/PM/UI/Common/Components/Tooltip.js", |
101 | "-- Clipperz/PM/UI/Common/Components/TranslatorWidget.js", | 124 | "-- Clipperz/PM/UI/Common/Components/TranslatorWidget.js", |
102 | 125 | ||
103 | "Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js", | 126 | "Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js", |
104 | "Clipperz/PM/UI/Common/Controllers/ProgressBarController.js", | 127 | "Clipperz/PM/UI/Common/Controllers/ProgressBarController.js", |
105 | "-- Clipperz/PM/UI/Common/Controllers/TabPanelController.js", | 128 | "-- Clipperz/PM/UI/Common/Controllers/TabPanelController.js", |
106 | 129 | ||
107 | "Clipperz/PM/UI/iPhone/Components/LoginForm.js", | 130 | "Clipperz/PM/UI/Mobile/Components/LoginForm.js", |
108 | "Clipperz/PM/UI/iPhone/Components/CardList.js", | 131 | "Clipperz/PM/UI/Mobile/Components/CardList.js", |
109 | "Clipperz/PM/UI/iPhone/Components/CardDetail.js", | 132 | "-- Clipperz/PM/UI/Mobile/Components/CardDetail.js", |
110 | 133 | ||
111 | "Clipperz/PM/UI/iPhone/Controllers/MainController.js", | 134 | "Clipperz/PM/UI/Mobile/Controllers/MainController.js", |
112 | 135 | ||
113 | "main_iPhone.js" | 136 | "main.mobile.js" |
114 | ], | 137 | ], |
115 | 138 | ||
116 | "css": [ | 139 | "css": [ |
117 | "clipperz/iPhone.css" | 140 | "mobile.css" |
118 | ] | 141 | ] |
119 | } \ No newline at end of file | 142 | } \ No newline at end of file |
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/PIN.html b/frontend/gamma/tests/tests/Clipperz/PM/PIN.html new file mode 100644 index 0000000..a08b286 --- a/dev/null +++ b/frontend/gamma/tests/tests/Clipperz/PM/PIN.html | |||
@@ -0,0 +1,66 @@ | |||
1 | <!-- | ||
2 | |||
3 | Copyright 2008-2011 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz Community Edition. | ||
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | ||
8 | refer to http://www.clipperz.com. | ||
9 | |||
10 | * Clipperz Community Edition is free software: you can redistribute | ||
11 | it and/or modify it under the terms of the GNU Affero General Public | ||
12 | License as published by the Free Software Foundation, either version | ||
13 | 3 of the License, or (at your option) any later version. | ||
14 | |||
15 | * Clipperz Community Edition is distributed in the hope that it will | ||
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | ||
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
18 | See the GNU Affero General Public License for more details. | ||
19 | |||
20 | * You should have received a copy of the GNU Affero General Public | ||
21 | License along with Clipperz Community Edition. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | |||
24 | --> | ||
25 | |||
26 | <html> | ||
27 | <head> | ||
28 | <title>Clipperz.PM.Proxy - TEST</title> | ||
29 | |||
30 | <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | ||
31 | <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> | ||
32 | <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> | ||
33 | |||
34 | <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> | ||
35 | <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> | ||
36 | <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> | ||
37 | <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> | ||
38 | <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> | ||
39 | <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> | ||
40 | |||
41 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> | ||
42 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> | ||
43 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> | ||
44 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> | ||
45 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> | ||
46 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> | ||
47 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> | ||
48 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> | ||
49 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> | ||
50 | <!-- | ||
51 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> | ||
52 | |||
53 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> | ||
54 | --> | ||
55 | |||
56 | <script type='text/javascript' src='../../../../js/Clipperz/PM/PIN.js'></script> | ||
57 | |||
58 | <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> | ||
59 | |||
60 | </head> | ||
61 | <body> | ||
62 | <pre id="test"> | ||
63 | <script type="text/javascript" src="PIN.test.js"></script> | ||
64 | </pre> | ||
65 | </body> | ||
66 | </html> | ||
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/PIN.test.js b/frontend/gamma/tests/tests/Clipperz/PM/PIN.test.js new file mode 100644 index 0000000..ed795dd --- a/dev/null +++ b/frontend/gamma/tests/tests/Clipperz/PM/PIN.test.js | |||
@@ -0,0 +1,97 @@ | |||
1 | /* | ||
2 | |||
3 | Copyright 2008-2011 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz Community Edition. | ||
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | ||
8 | refer to http://www.clipperz.com. | ||
9 | |||
10 | * Clipperz Community Edition is free software: you can redistribute | ||
11 | it and/or modify it under the terms of the GNU Affero General Public | ||
12 | License as published by the Free Software Foundation, either version | ||
13 | 3 of the License, or (at your option) any later version. | ||
14 | |||
15 | * Clipperz Community Edition is distributed in the hope that it will | ||
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | ||
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
18 | See the GNU Affero General Public License for more details. | ||
19 | |||
20 | * You should have received a copy of the GNU Affero General Public | ||
21 | License along with Clipperz Community Edition. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | |||
24 | */ | ||
25 | |||
26 | Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); | ||
27 | |||
28 | Clipperz.PM.PIN['CREDENTIALS'] ='TEST.CLIPPERZ.CREDENTIALS'; | ||
29 | Clipperz.PM.PIN['FAILURE_COUNT'] ='TEST.CLIPPERZ.FAILED_LOGIN_COUNT'; | ||
30 | |||
31 | |||
32 | var tests = { | ||
33 | |||
34 | //------------------------------------------------------------------------- | ||
35 | |||
36 | 'clearCredentials': function () { | ||
37 | localStorage.removeItem(Clipperz.PM.PIN['CREDENTIALS']); | ||
38 | localStorage.removeItem(Clipperz.PM.PIN['FAILURE_COUNT']); | ||
39 | }, | ||
40 | |||
41 | //------------------------------------------------------------------------- | ||
42 | |||
43 | 'isSet': function () { | ||
44 | tests.clearCredentials(); | ||
45 | |||
46 | is(false, Clipperz.PM.PIN.isSet(), "after cleaning all values, credentials should not be set"); | ||
47 | |||
48 | Clipperz.PM.PIN.setCredentialsWithPIN("1234", {'username':'joe', 'passphrase':'eoj'}); | ||
49 | is(true, Clipperz.PM.PIN.isSet(), "once saved, they should be found"); | ||
50 | }, | ||
51 | |||
52 | 'recordFailedAttempt': function () { | ||
53 | tests.clearCredentials(); | ||
54 | |||
55 | Clipperz.PM.PIN.setCredentialsWithPIN("1234", {'username':'joe', 'passphrase':'eoj'}); | ||
56 | is(true, Clipperz.PM.PIN.isSet(), "once saved, they should be found"); | ||
57 | Clipperz.PM.PIN.recordFailedAttempt(); | ||
58 | is(true, Clipperz.PM.PIN.isSet(), "1st wrong PIN -> keep credentials"); | ||
59 | Clipperz.PM.PIN.recordFailedAttempt(); | ||
60 | is(true, Clipperz.PM.PIN.isSet(), "2nd wrong PIN -> keep credentials"); | ||
61 | Clipperz.PM.PIN.recordFailedAttempt(); | ||
62 | is(false, Clipperz.PM.PIN.isSet(), "3rd wrong PIN -> REMOVE credentials"); | ||
63 | |||
64 | Clipperz.PM.PIN.setCredentialsWithPIN("1234", {'username':'joe', 'passphrase':'eoj'}); | ||
65 | is(true, Clipperz.PM.PIN.isSet(), "once saved, they should be found"); | ||
66 | Clipperz.PM.PIN.recordFailedAttempt(); | ||
67 | is(true, Clipperz.PM.PIN.isSet(), "1st wrong PIN -> keep credentials"); | ||
68 | Clipperz.PM.PIN.recordFailedAttempt(); | ||
69 | is(true, Clipperz.PM.PIN.isSet(), "2nd wrong PIN -> keep credentials"); | ||
70 | Clipperz.PM.PIN.resetFailedAttemptCount(); | ||
71 | Clipperz.PM.PIN.recordFailedAttempt(); | ||
72 | is(true, Clipperz.PM.PIN.isSet(), "3rd wrong PIN, but with a successful use in between -> keep credentials"); | ||
73 | }, | ||
74 | |||
75 | 'credentialsWithPIN': function () { | ||
76 | varcredentials; | ||
77 | varpin; | ||
78 | var decryptedCredentials; | ||
79 | |||
80 | tests.clearCredentials(); | ||
81 | |||
82 | credentials = {'username': 'joe', 'passphrase':'foobar'}; | ||
83 | pin = '1234'; | ||
84 | Clipperz.PM.PIN.setCredentialsWithPIN(pin, credentials); | ||
85 | decryptedCredentials = Clipperz.PM.PIN.credentialsWithPIN(pin); | ||
86 | |||
87 | is(decryptedCredentials['username'],credentials['username']); | ||
88 | is(decryptedCredentials['passphrase'],credentials['passphrase']); | ||
89 | }, | ||
90 | |||
91 | //------------------------------------------------------------------------- | ||
92 | 'syntaxFix': MochiKit.Base.noop | ||
93 | }; | ||
94 | |||
95 | //############################################################################# | ||
96 | |||
97 | SimpleTest.runDeferredTests("Clipperz.PM.PIN", tests, {trace:false}); | ||
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/index.html b/frontend/gamma/tests/tests/Clipperz/PM/index.html index b9bede1..c3df56a 100644 --- a/frontend/gamma/tests/tests/Clipperz/PM/index.html +++ b/frontend/gamma/tests/tests/Clipperz/PM/index.html | |||
@@ -1,53 +1,54 @@ | |||
1 | <!-- | 1 | <!-- |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | --> | 24 | --> |
25 | 25 | ||
26 | <html> | 26 | <html> |
27 | <head> | 27 | <head> |
28 | <title>Clipperz.PM.* - tests</title> | 28 | <title>Clipperz.PM.* - tests</title> |
29 | 29 | ||
30 | <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | 30 | <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> |
31 | <script type="text/javascript" src="../../../SimpleTest/TestRunner.js"></script> | 31 | <script type="text/javascript" src="../../../SimpleTest/TestRunner.js"></script> |
32 | </head> | 32 | </head> |
33 | <body> | 33 | <body> |
34 | <script> | 34 | <script> |
35 | TestRunner.runTests( | 35 | TestRunner.runTests( |
36 | // | 36 | // |
37 | //This is still a complete mess. | 37 | //This is still a complete mess. |
38 | // | 38 | // |
39 | //'BookmarkletProcessor.html', | 39 | //'BookmarkletProcessor.html', |
40 | 'Connection.html', | 40 | 'Connection.html', |
41 | 'Crypto.html', | 41 | 'Crypto.html', |
42 | //'Crypto_other_implementation_comparison.html', | 42 | //'Crypto_other_implementation_comparison.html', |
43 | 'Crypto_performanceEvaluation.html', | 43 | 'Crypto_performanceEvaluation.html', |
44 | //'CryptoPerformance_ByteArrayArray.html', | 44 | //'CryptoPerformance_ByteArrayArray.html', |
45 | //'CryptoPerformance_ByteArrayHex.html', | 45 | //'CryptoPerformance_ByteArrayHex.html', |
46 | //'CryptoPerformance_ByteArrayString.html', | 46 | //'CryptoPerformance_ByteArrayString.html', |
47 | 'Date.html', | 47 | 'Date.html', |
48 | 'PIN.html', | ||
48 | 'Proxy.html', | 49 | 'Proxy.html', |
49 | 'Toll.html' | 50 | 'Toll.html' |
50 | ); | 51 | ); |
51 | </script> | 52 | </script> |
52 | </body> | 53 | </body> |
53 | </html> \ No newline at end of file | 54 | </html> \ No newline at end of file |
diff --git a/frontend/gamma/tests/tests/Components/FullApp/User.data.js b/frontend/gamma/tests/tests/Components/FullApp/User.data.js index 7194f6a..4dfc81c 100644 --- a/frontend/gamma/tests/tests/Components/FullApp/User.data.js +++ b/frontend/gamma/tests/tests/Components/FullApp/User.data.js | |||
@@ -1,891 +1,891 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | */ | 24 | */ |
25 | 25 | ||
26 | testData = { | 26 | testData = { |
27 | 27 | ||
28 | //------------------------------------------------------------------------- | 28 | //------------------------------------------------------------------------- |
29 | 29 | ||
30 | 'testData': { | 30 | 'testData': { |
31 | users:{ | 31 | users:{ |
32 | 'catchAllUser': { | 32 | 'catchAllUser': { |
33 | __masterkey_test_value__: 'masterkey', | 33 | __masterkey_test_value__: 'masterkey', |
34 | s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', | 34 | s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', |
35 | v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' | 35 | v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' |
36 | }, | 36 | }, |
37 | 37 | ||
38 | /* tt/tt - empty, just created, account*/ | 38 | /* tt/tt - empty, just created, account*/ |
39 | 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': { | 39 | 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': { |
40 | s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594', | 40 | s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594', |
41 | v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0', | 41 | v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0', |
42 | version: '0.2', | 42 | version: '0.2', |
43 | maxNumberOfRecords: '100', | 43 | maxNumberOfRecords: '100', |
44 | userDetails: '{"records":{"index":{},"data":"q/wNeY/xf7Sujn5CIxEYPRSF"},"directLogins":{"index":{},"data":"qcVwiiyOYeDHFZq5T06iF1Wp"},"preferences":{"data":"7ONKfKQk9GYGnlRxFgTgAd4J"},"oneTimePasswords":{"data":"GD66ZNSIqkRl1UxhwyrsSm5r"},"version":"0.1"}', | 44 | userDetails: '{"records":{"index":{},"data":"q/wNeY/xf7Sujn5CIxEYPRSF"},"directLogins":{"index":{},"data":"qcVwiiyOYeDHFZq5T06iF1Wp"},"preferences":{"data":"7ONKfKQk9GYGnlRxFgTgAd4J"},"oneTimePasswords":{"data":"GD66ZNSIqkRl1UxhwyrsSm5r"},"version":"0.1"}', |
45 | statistics: 'tfQF+BrjAQUWyiXWOMkWApmq', | 45 | statistics: 'tfQF+BrjAQUWyiXWOMkWApmq', |
46 | userDetailsVersion: '0.3', | 46 | userDetailsVersion: '0.3', |
47 | records: { | 47 | records: { |
48 | 48 | ||
49 | } | 49 | } |
50 | }, | 50 | }, |
51 | 51 | ||
52 | /* tt/tt - account with "wrong" direct login*/ | 52 | /* tt/tt - account with "wrong" direct login*/ |
53 | /* 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': { | 53 | /* 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': { |
54 | s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594', | 54 | s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594', |
55 | v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0', | 55 | v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0', |
56 | version: '0.2', | 56 | version: '0.2', |
57 | maxNumberOfRecords: '100', | 57 | maxNumberOfRecords: '100', |
58 | userDetails: '{"records":{"index":{"8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab":"1"},"data":"/+RHG+JLrFhZLYga2H9hsPyugT5bbiPwmNgY/RqE2g90FXfsCOvJ6TnfHX6ufeVfJ5+jUq/mRhWMlKdIqROSBLRL5EbL7i881EyKMNE24zpzUWm9zN6HcATPO2iNvDjsZjv2dEP9QWtAabw4Hc7UB+39WQ=="},"directLogins":{"index":{"dd9c1f84d06d67fe1ca5826b52bf46e56407e7f9d87fb7b7b927831920955338":1},"data":"ZF6BZYAVIJi3xrCPs6XWHwZDveEonG/5WJVKwIXbCGa5fr1myopvpqYbWI09tPCCktlMKP/X/SiIyBxlq7Z953VpOHWx0AYqTpRnw8PfJ+0BJDEblBFCZ8ZZfkZXcfYmNoY7"},"preferences":{"data":"IpjYNIHTXtE/pZvR8TjotEnR"},"oneTimePasswords":{"data":"1ibPl0R6S/LGBFFyH9pio1Oo"},"version":"0.1"}', | 58 | userDetails: '{"records":{"index":{"8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab":"1"},"data":"/+RHG+JLrFhZLYga2H9hsPyugT5bbiPwmNgY/RqE2g90FXfsCOvJ6TnfHX6ufeVfJ5+jUq/mRhWMlKdIqROSBLRL5EbL7i881EyKMNE24zpzUWm9zN6HcATPO2iNvDjsZjv2dEP9QWtAabw4Hc7UB+39WQ=="},"directLogins":{"index":{"dd9c1f84d06d67fe1ca5826b52bf46e56407e7f9d87fb7b7b927831920955338":1},"data":"ZF6BZYAVIJi3xrCPs6XWHwZDveEonG/5WJVKwIXbCGa5fr1myopvpqYbWI09tPCCktlMKP/X/SiIyBxlq7Z953VpOHWx0AYqTpRnw8PfJ+0BJDEblBFCZ8ZZfkZXcfYmNoY7"},"preferences":{"data":"IpjYNIHTXtE/pZvR8TjotEnR"},"oneTimePasswords":{"data":"1ibPl0R6S/LGBFFyH9pio1Oo"},"version":"0.1"}', |
59 | statistics: 'XhiWkdDyHzuviv5bdxOY/2Q5', | 59 | statistics: 'XhiWkdDyHzuviv5bdxOY/2Q5', |
60 | userDetailsVersion: '0.3', | 60 | userDetailsVersion: '0.3', |
61 | records: { | 61 | records: { |
62 | '8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab': { | 62 | '8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab': { |
63 | data: '93QXl+c+JmQo4WTl4rYLYb/oHehjntAroteeHd6HqrUiXYoi+02GYrYcKfvE5wgMWvOwvQ4kVdUv5ksa3gJaUzhrpY5GLM3EV3agEkQ6yuKwHgfmAQvES1c6tcw15lNTzGiZ7PHhBrW5I5H6Le0Mf10uW1DOyu6gFl+W5OarbBBGyQmRmASy+CW2l3/lY5pOFxUq3qlkwW/o4KrSiwKOFh3HDvxOQKwovm0v3puLu+NsuL5rz5blUIZpj+CsOmZUhtU5FC5s6iO2L1uj3w8+Yxu279p249H1bv1zxo1zSBpP507uuRH8dKOLsu7JI6PO+UC8PLqVhPU7fHhDhNleurE7AsUo6eHocG0DhxCAm3xeobm1K2iPd0iRprcuRXmwa8HWRDJHTItbQr9D+cnQTT7/DwneRdQzpMaVZHZcKqtAzz07jboy98plrigu03tV2MkXt2veIMLBofxxHqgZ0NJhcfrVta4FlJsrd1vO9RUkoHl+qPJqQZIVGZzoT0rdHS/nLd614EHJSfRYIl+drUEUchIidbRnMzvPTBo2s6bVfUPcQksVop4E85wMo15ah2BHzUe4vjkmM+Ki8ecUVH8jRR5fmZhCGpBFML5U7o+rERYABFuwwRC9FfCXMtmClHc2LypP+iu+lI/VycdHg/m8skQVeCDBv892vqehUs1CpeVAxMtYOJcFtm6roQNPxJe1EI/j4PAi3SEYPCFev1F7u1g4bw4cG5jCGJx6U3qTTYMX5A06dHf4iSSOUeCsrP5U+VJY0KLhU3E66DzOxNIrIyYN6iOJxKCbhH7ILfGdWAV3MlZZOpVoSIqiR7oZo2PwovtudF5tOy9lhz7SEFYLvuQy8r4mqFC7qMVnXJRrBPDZcQDTdXLG33YV6dWX17QpGrpyvPhX5/UDv8E7zc8PdO1YfJmzL1rpArlIXF1EOsLa6BqjQp5bkIlHKugQMjnn3tf4sYK0OhPskbKidfNm59NedQODEoUr5NGwmjSAqTCokt1D7q0K3vMK', | 63 | data: '93QXl+c+JmQo4WTl4rYLYb/oHehjntAroteeHd6HqrUiXYoi+02GYrYcKfvE5wgMWvOwvQ4kVdUv5ksa3gJaUzhrpY5GLM3EV3agEkQ6yuKwHgfmAQvES1c6tcw15lNTzGiZ7PHhBrW5I5H6Le0Mf10uW1DOyu6gFl+W5OarbBBGyQmRmASy+CW2l3/lY5pOFxUq3qlkwW/o4KrSiwKOFh3HDvxOQKwovm0v3puLu+NsuL5rz5blUIZpj+CsOmZUhtU5FC5s6iO2L1uj3w8+Yxu279p249H1bv1zxo1zSBpP507uuRH8dKOLsu7JI6PO+UC8PLqVhPU7fHhDhNleurE7AsUo6eHocG0DhxCAm3xeobm1K2iPd0iRprcuRXmwa8HWRDJHTItbQr9D+cnQTT7/DwneRdQzpMaVZHZcKqtAzz07jboy98plrigu03tV2MkXt2veIMLBofxxHqgZ0NJhcfrVta4FlJsrd1vO9RUkoHl+qPJqQZIVGZzoT0rdHS/nLd614EHJSfRYIl+drUEUchIidbRnMzvPTBo2s6bVfUPcQksVop4E85wMo15ah2BHzUe4vjkmM+Ki8ecUVH8jRR5fmZhCGpBFML5U7o+rERYABFuwwRC9FfCXMtmClHc2LypP+iu+lI/VycdHg/m8skQVeCDBv892vqehUs1CpeVAxMtYOJcFtm6roQNPxJe1EI/j4PAi3SEYPCFev1F7u1g4bw4cG5jCGJx6U3qTTYMX5A06dHf4iSSOUeCsrP5U+VJY0KLhU3E66DzOxNIrIyYN6iOJxKCbhH7ILfGdWAV3MlZZOpVoSIqiR7oZo2PwovtudF5tOy9lhz7SEFYLvuQy8r4mqFC7qMVnXJRrBPDZcQDTdXLG33YV6dWX17QpGrpyvPhX5/UDv8E7zc8PdO1YfJmzL1rpArlIXF1EOsLa6BqjQp5bkIlHKugQMjnn3tf4sYK0OhPskbKidfNm59NedQODEoUr5NGwmjSAqTCokt1D7q0K3vMK', |
64 | version: '0.3', | 64 | version: '0.3', |
65 | creationDate: 'Wed Jan 20 16:53:47 CET 2010', | 65 | creationDate: 'Wed Jan 20 16:53:47 CET 2010', |
66 | updateDate: 'Wed Jan 20 16:53:47 CET 2010', | 66 | updateDate: 'Wed Jan 20 16:53:47 CET 2010', |
67 | accessDate: 'Wed Jan 20 16:53:47 CET 2010', | 67 | accessDate: 'Wed Jan 20 16:53:47 CET 2010', |
68 | currentVersion: '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741', | 68 | currentVersion: '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741', |
69 | versions: { | 69 | versions: { |
70 | '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741': { | 70 | '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741': { |
71 | header: '####', | 71 | header: '####', |
72 | data: 'mqqGPhRw/397NUZH6B8XJW1y5rMDZD6u7WUuEU77zcNXYEHFNQq319u0G/qD5E63kbI/kHsNXZFFKmNGw5IxDiteWSfYG4RiiapsUxe3ZgsFDDBHFrD5NSrMdIzLFSoNel+1mZUps9AcmkelhkXSCqRiGPyiPIKq7wKXF+Ql6j1AsnCMOCJLlJdTZPqIUUaTYD4z/tvTOS1xRdUiaRjw7cCh2yMms1c5V//3J0xbO10kEC8xvA8nhJnQqsMh2P4h6QFzAZtXYKMehJXwQ5ap7W327EMnCdXw2N0pv9Lr5S9khN/9oTMy2tMIGtN+UZ684zTiAP+479xES6OvmVL04nGyCarIqMNu7oclR75Qv2U14CNRA3gIaMPv', | 72 | data: 'mqqGPhRw/397NUZH6B8XJW1y5rMDZD6u7WUuEU77zcNXYEHFNQq319u0G/qD5E63kbI/kHsNXZFFKmNGw5IxDiteWSfYG4RiiapsUxe3ZgsFDDBHFrD5NSrMdIzLFSoNel+1mZUps9AcmkelhkXSCqRiGPyiPIKq7wKXF+Ql6j1AsnCMOCJLlJdTZPqIUUaTYD4z/tvTOS1xRdUiaRjw7cCh2yMms1c5V//3J0xbO10kEC8xvA8nhJnQqsMh2P4h6QFzAZtXYKMehJXwQ5ap7W327EMnCdXw2N0pv9Lr5S9khN/9oTMy2tMIGtN+UZ684zTiAP+479xES6OvmVL04nGyCarIqMNu7oclR75Qv2U14CNRA3gIaMPv', |
73 | version: '0.3', | 73 | version: '0.3', |
74 | creationDate: 'Wed Jan 20 16:53:47 CET 2010', | 74 | creationDate: 'Wed Jan 20 16:53:47 CET 2010', |
75 | updateDate: 'Wed Jan 20 16:53:47 CET 2010', | 75 | updateDate: 'Wed Jan 20 16:53:47 CET 2010', |
76 | accessDate: 'Wed Jan 20 16:53:47 CET 2010' | 76 | accessDate: 'Wed Jan 20 16:53:47 CET 2010' |
77 | } | 77 | } |
78 | } | 78 | } |
79 | } | 79 | } |
80 | } | 80 | } |
81 | }, | 81 | }, |
82 | */ | 82 | */ |
83 | /* tt/tt with "fixed" direct login*/ | 83 | /* tt/tt with "fixed" direct login*/ |
84 | /* 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': { | 84 | 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': { |
85 | s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594', | 85 | s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594', |
86 | v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0', | 86 | v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0', |
87 | version: '0.2', | 87 | version: '0.2', |
88 | maxNumberOfRecords: '100', | 88 | maxNumberOfRecords: '100', |
89 | userDetails: '{"records":{"index":{"8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab":"0"},"data":"K6sV3xYDTHn1PDHmbVhG3PogarwMtHCliSEGaJ5eev/RQv7MW9TCP5efsjATRT4eheX7JkXAoLo+sgMVr2fTyu7f7K0IEYp3mCi27T/TmtTM3b8FoaVfmXWEjN0FGx7N6gK6+lZxhFueRxsOha1+fTLDBg=="},"directLogins":{"index":{"dd9c1f84d06d67fe1ca5826b52bf46e56407e7f9d87fb7b7b927831920955338":"0"},"data":"9aUwb/5nIlAOPKz62xTwylK0dilpWVVEJBag5+LydmBwWxTmlfcB+OO6jGnMgDrjif3LVhWFjfKVSoZs5hSpPvhsSDPaLf5vQhF4igRaQpWI9QhBdfmv3QvZ57ei/gfcal346F4="},"preferences":{"data":"IpjYNIHTXtE/pZvR8TjotEnR"},"oneTimePasswords":{"data":"1ibPl0R6S/LGBFFyH9pio1Oo"},"version":"0.1"}', | 89 | userDetails: '{"records":{"index":{"8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab":"0"},"data":"K6sV3xYDTHn1PDHmbVhG3PogarwMtHCliSEGaJ5eev/RQv7MW9TCP5efsjATRT4eheX7JkXAoLo+sgMVr2fTyu7f7K0IEYp3mCi27T/TmtTM3b8FoaVfmXWEjN0FGx7N6gK6+lZxhFueRxsOha1+fTLDBg=="},"directLogins":{"index":{"dd9c1f84d06d67fe1ca5826b52bf46e56407e7f9d87fb7b7b927831920955338":"0"},"data":"9aUwb/5nIlAOPKz62xTwylK0dilpWVVEJBag5+LydmBwWxTmlfcB+OO6jGnMgDrjif3LVhWFjfKVSoZs5hSpPvhsSDPaLf5vQhF4igRaQpWI9QhBdfmv3QvZ57ei/gfcal346F4="},"preferences":{"data":"IpjYNIHTXtE/pZvR8TjotEnR"},"oneTimePasswords":{"data":"1ibPl0R6S/LGBFFyH9pio1Oo"},"version":"0.1"}', |
90 | statistics: 'GHHkZjW0QLdUq6CPnVuDLh86', | 90 | statistics: 'GHHkZjW0QLdUq6CPnVuDLh86', |
91 | userDetailsVersion: '0.3', | 91 | userDetailsVersion: '0.3', |
92 | records: { | 92 | records: { |
93 | '8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab': { | 93 | '8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab': { |
94 | data: 'SOcANZTLo4dsjpsPghF2+TndV9+1uYhGjup3StEa1kiFHHzDK6kDZkKwjhP0mxFgixlQHZBnvgsW/xdHGXdmj1RHtaNdHlte7W1Wq5MHbH4XE9bJzQAvQmop8OETgGz7Khp4BbUMVLIXhxoJmP3rMx7ulQHds+WN+S5u+iB73y5nkJwfOXrXDjwwlL1vER92XHE1VJZAjkYRB/xes6SLcITaG9LYVSGSVAhtLIzkmrAvPHPIpZSOI4NQnAMEVPllwtMlWQBEeerN7PIKImyaUd9zPzP+v0S1V+kUyioizScsDdVuaNKa+yqwFKvYYy61nobv3Mg+Fo3EGqY7GOiO7AklRTreZoOkZAdogQlA1DZuIBNSbpcMvm5MoP+PsU3HFSb/Vioo+QEcgTWqVyDNuFGZpkOI2iIBuQCwLmsCwB1JaE/1cCd1fEpOWyiFep0vxwi0ZrtRZQowQd2Ua3UIoaG5u5WoYEMYoH7FFi6Djda4Rf4gxed8rPLE+cNTI/p67OKlbAfr8iz3YZknaH+CXp9pPr7V7xXBCWNxo5DnFPeeqqrxjTAbkeg/Rp2hJeN7/zi0TSWKDUTXfkuUNyewHOHb7M+MIvC1F1CtmqLuU3h8RDINYgPtZTtTk68YBmOG88xYTtClr4kKxmp1scrV3nJ7af+IGoVKZpRAwBJYT3HV33vzO9W35zl14eZ0vVuNoHMNsh9uDxjCwRyPtQzVpQuTIYnHHoO5R17XyIfe599BOSBAGimciprURN3llC2H8YhRtMilQRYvEDVsC+mVZmGAeEdQ5o/AehnpBuVKErRBzotWe6bNMkIQqWfwCLQFBb6ap1gT5hbacrJM4AlaPgOdQsyX9npd3yN/tzjVA1IqWLnoaEXq9EfWXhBuT+juMfSQ2Y8bPbpBKZmWWL06T2fVkaZJN0VFtBXGi0XRFJngPskApLunZOfBYq831jSi8/Z937QVTQKWwOz6rLE8covE3mxJ53gDVcOlvqD9s/NGXbmnt2GnlWhVKpzhTIJ812Hr050/2AI9ZmWnv+ypSqeQ3l0BFh4D+xfk5NRv+dKbxANheZnfZMhR6u8F+jX/W3hUtNCIMQc2vLSQ', | 94 | data: 'SOcANZTLo4dsjpsPghF2+TndV9+1uYhGjup3StEa1kiFHHzDK6kDZkKwjhP0mxFgixlQHZBnvgsW/xdHGXdmj1RHtaNdHlte7W1Wq5MHbH4XE9bJzQAvQmop8OETgGz7Khp4BbUMVLIXhxoJmP3rMx7ulQHds+WN+S5u+iB73y5nkJwfOXrXDjwwlL1vER92XHE1VJZAjkYRB/xes6SLcITaG9LYVSGSVAhtLIzkmrAvPHPIpZSOI4NQnAMEVPllwtMlWQBEeerN7PIKImyaUd9zPzP+v0S1V+kUyioizScsDdVuaNKa+yqwFKvYYy61nobv3Mg+Fo3EGqY7GOiO7AklRTreZoOkZAdogQlA1DZuIBNSbpcMvm5MoP+PsU3HFSb/Vioo+QEcgTWqVyDNuFGZpkOI2iIBuQCwLmsCwB1JaE/1cCd1fEpOWyiFep0vxwi0ZrtRZQowQd2Ua3UIoaG5u5WoYEMYoH7FFi6Djda4Rf4gxed8rPLE+cNTI/p67OKlbAfr8iz3YZknaH+CXp9pPr7V7xXBCWNxo5DnFPeeqqrxjTAbkeg/Rp2hJeN7/zi0TSWKDUTXfkuUNyewHOHb7M+MIvC1F1CtmqLuU3h8RDINYgPtZTtTk68YBmOG88xYTtClr4kKxmp1scrV3nJ7af+IGoVKZpRAwBJYT3HV33vzO9W35zl14eZ0vVuNoHMNsh9uDxjCwRyPtQzVpQuTIYnHHoO5R17XyIfe599BOSBAGimciprURN3llC2H8YhRtMilQRYvEDVsC+mVZmGAeEdQ5o/AehnpBuVKErRBzotWe6bNMkIQqWfwCLQFBb6ap1gT5hbacrJM4AlaPgOdQsyX9npd3yN/tzjVA1IqWLnoaEXq9EfWXhBuT+juMfSQ2Y8bPbpBKZmWWL06T2fVkaZJN0VFtBXGi0XRFJngPskApLunZOfBYq831jSi8/Z937QVTQKWwOz6rLE8covE3mxJ53gDVcOlvqD9s/NGXbmnt2GnlWhVKpzhTIJ812Hr050/2AI9ZmWnv+ypSqeQ3l0BFh4D+xfk5NRv+dKbxANheZnfZMhR6u8F+jX/W3hUtNCIMQc2vLSQ', |
95 | version: '0.3', | 95 | version: '0.3', |
96 | creationDate: 'Wed Jan 20 16:53:47 CET 2010', | 96 | creationDate: 'Wed Jan 20 16:53:47 CET 2010', |
97 | updateDate: 'Wed Jan 20 16:54:56 CET 2010', | 97 | updateDate: 'Wed Jan 20 16:54:56 CET 2010', |
98 | accessDate: 'Wed Jan 20 16:54:56 CET 2010', | 98 | accessDate: 'Wed Jan 20 16:54:56 CET 2010', |
99 | currentVersion: 'c0a8f723bf44e0aae1d69f6f85f8e1b747dfbe5ca0d78c5ebda16b32cf17e16d', | 99 | currentVersion: 'c0a8f723bf44e0aae1d69f6f85f8e1b747dfbe5ca0d78c5ebda16b32cf17e16d', |
100 | versions: { | 100 | versions: { |
101 | '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741': { | 101 | '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741': { |
102 | header: '####', | 102 | header: '####', |
103 | data: 'mqqGPhRw/397NUZH6B8XJW1y5rMDZD6u7WUuEU77zcNXYEHFNQq319u0G/qD5E63kbI/kHsNXZFFKmNGw5IxDiteWSfYG4RiiapsUxe3ZgsFDDBHFrD5NSrMdIzLFSoNel+1mZUps9AcmkelhkXSCqRiGPyiPIKq7wKXF+Ql6j1AsnCMOCJLlJdTZPqIUUaTYD4z/tvTOS1xRdUiaRjw7cCh2yMms1c5V//3J0xbO10kEC8xvA8nhJnQqsMh2P4h6QFzAZtXYKMehJXwQ5ap7W327EMnCdXw2N0pv9Lr5S9khN/9oTMy2tMIGtN+UZ684zTiAP+479xES6OvmVL04nGyCarIqMNu7oclR75Qv2U14CNRA3gIaMPv', | 103 | data: 'mqqGPhRw/397NUZH6B8XJW1y5rMDZD6u7WUuEU77zcNXYEHFNQq319u0G/qD5E63kbI/kHsNXZFFKmNGw5IxDiteWSfYG4RiiapsUxe3ZgsFDDBHFrD5NSrMdIzLFSoNel+1mZUps9AcmkelhkXSCqRiGPyiPIKq7wKXF+Ql6j1AsnCMOCJLlJdTZPqIUUaTYD4z/tvTOS1xRdUiaRjw7cCh2yMms1c5V//3J0xbO10kEC8xvA8nhJnQqsMh2P4h6QFzAZtXYKMehJXwQ5ap7W327EMnCdXw2N0pv9Lr5S9khN/9oTMy2tMIGtN+UZ684zTiAP+479xES6OvmVL04nGyCarIqMNu7oclR75Qv2U14CNRA3gIaMPv', |
104 | version: '0.3', | 104 | version: '0.3', |
105 | creationDate: 'Wed Jan 20 16:53:47 CET 2010', | 105 | creationDate: 'Wed Jan 20 16:53:47 CET 2010', |
106 | updateDate: 'Wed Jan 20 16:53:47 CET 2010', | 106 | updateDate: 'Wed Jan 20 16:53:47 CET 2010', |
107 | accessDate: 'Wed Jan 20 16:54:26 CET 2010' | 107 | accessDate: 'Wed Jan 20 16:54:26 CET 2010' |
108 | }, | 108 | }, |
109 | 'c0a8f723bf44e0aae1d69f6f85f8e1b747dfbe5ca0d78c5ebda16b32cf17e16d': { | 109 | 'c0a8f723bf44e0aae1d69f6f85f8e1b747dfbe5ca0d78c5ebda16b32cf17e16d': { |
110 | header: '####', | 110 | header: '####', |
111 | data: 'ky36e85TGmGQ+O9FXAhHRXEz5eBQogwuyAEgjpsHaSUM22TowYEw/NkWMg4oT4M2DGIYoTyXatvea859F3kMWM5hUe16PaG9J8HzQcEnaTRmi5oe0cMJAlg6pl7ypLt9kUiqDoMIM4lM/eKO8E/bRZWnU1EsxjehYjQQUoeoSyyTAOhHlLfXS99TzCXFrJjO5rAgaJ7iAjNOcQ8Bm6ECau5ao9AVd5hqgMDEmLJhRwygcGHSTek3i3I4o0jIImcqpfNko/4SbEC4p7+V5Rggr1IG5DkeYfKuyqxgulJbtdkcWxAqPReKXUOkmSGlRTje8rjTTLx1Jv7QCc0hLDYc5pLd8j/G7mOwLG1nLTMeNekljKNCTLAhQ+ccDDq35Jv1cNhmA/icmRlMkztbsR7tzqFs+drQ', | 111 | data: 'ky36e85TGmGQ+O9FXAhHRXEz5eBQogwuyAEgjpsHaSUM22TowYEw/NkWMg4oT4M2DGIYoTyXatvea859F3kMWM5hUe16PaG9J8HzQcEnaTRmi5oe0cMJAlg6pl7ypLt9kUiqDoMIM4lM/eKO8E/bRZWnU1EsxjehYjQQUoeoSyyTAOhHlLfXS99TzCXFrJjO5rAgaJ7iAjNOcQ8Bm6ECau5ao9AVd5hqgMDEmLJhRwygcGHSTek3i3I4o0jIImcqpfNko/4SbEC4p7+V5Rggr1IG5DkeYfKuyqxgulJbtdkcWxAqPReKXUOkmSGlRTje8rjTTLx1Jv7QCc0hLDYc5pLd8j/G7mOwLG1nLTMeNekljKNCTLAhQ+ccDDq35Jv1cNhmA/icmRlMkztbsR7tzqFs+drQ', |
112 | version: '0.3', | 112 | version: '0.3', |
113 | previousVersion: '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741', | 113 | previousVersion: '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741', |
114 | previousVersionKey: 'aLMGf0ucGPaKLVv+AunJaZWDg+gGncnBu2Bf7QseH3ma/jcMOZCNHNd44mNPKfZPyoXYZi6/ToxkJh6Nu8PmOL/SsHTlf8FBZxrNm1i7ZS2b3A==', | 114 | previousVersionKey: 'aLMGf0ucGPaKLVv+AunJaZWDg+gGncnBu2Bf7QseH3ma/jcMOZCNHNd44mNPKfZPyoXYZi6/ToxkJh6Nu8PmOL/SsHTlf8FBZxrNm1i7ZS2b3A==', |
115 | creationDate: 'Wed Jan 20 16:54:56 CET 2010', | 115 | creationDate: 'Wed Jan 20 16:54:56 CET 2010', |
116 | updateDate: 'Wed Jan 20 16:54:56 CET 2010', | 116 | updateDate: 'Wed Jan 20 16:54:56 CET 2010', |
117 | accessDate: 'Wed Jan 20 16:54:56 CET 2010' | 117 | accessDate: 'Wed Jan 20 16:54:56 CET 2010' |
118 | } | 118 | } |
119 | } | 119 | } |
120 | } | 120 | } |
121 | } | 121 | } |
122 | }, | 122 | }, |
123 | */ | 123 | |
124 | 124 | ||
125 | //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | 125 | //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
126 | 126 | ||
127 | /* joe/clipperz*/ | 127 | /* joe/clipperz*/ |
128 | 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': { | 128 | 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': { |
129 | s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee', | 129 | s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee', |
130 | v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf', | 130 | v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf', |
131 | version: '0.2', | 131 | version: '0.2', |
132 | maxNumberOfRecords: '100', | 132 | maxNumberOfRecords: '100', |
133 | userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"17","6dadcd7ab23ece757d6990ce237bdebb68b2df0281c78cc1483d913318112162":"18"},"data":"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"},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","6e218e5d129105c20ac499307b260eb76bb2e753f6c319e17efdb848675c5fa2":"20","75f306bd520b483e86a1b436d94159020197df0155ab9058fb86586925223dc7":"21"},"data":"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"},"preferences":{"data":"fwQt+Wxhev563xviKvItHr3k5MC7ciMmEayJZ7HfwTcWPqaF5Syf1czPlMQiDQzEgWWs4BmQqB0QCDDMi3VyGCrSzAtIMR4afVdRyQ=="},"oneTimePasswords":{"data":"8WhmNFYrgxqzrJwMx+goddfLb2wlXnREHH77BKpL8h4ZalAwNOAt0yoBMECtlnNcve8ufjGAXL80dgUgtqsTn8fpx7+WDL5fNynv5ve9mJq/qgqctQO+pvnLuvs4867NXYInHr84f+t8f0lyfYRQdpDJfem9ECrn5MrpQ1rvwB2PVKcU0f+VPGhu673QeDbqzF+95JfxF9Tnv1PAePL1EGahUYuxTED4y4fcVmsHKl9yZXcsuheM7ecik93cqOVSlnuN+s5c2KWqjgDdLzUjG2dDHcuY97v7JT7Pns4ad5C9i2dYLtNrSHG7QLw6RBS/EnBwGzK+sWFQFCU8u0qSeFb0eGRjvVb9SfIXSeTqAJK3JC+OLAVGiey34jFckykeQjy5nPjhSpqWWhZdpezvZHno3YCXSGkLqbazL6xtesNaZZAbHBKdrwIOuTdhMwArfX/na/gavciFM0zwGb13w6JX3Ar3iTqhnBR20zmv5vcZwIOjf36LSfSNnjT4sWE1Az+FQPmMPQi4ODHfLSJbwYQhwqM5Wq2yXHpKDf/e2RpBZ5JsUkDEyoGmglcLF+pXwk4Mn9LuNOztxXCRWaZ3M/5uVk4xXOqJax1IlnA4nlu+3N0orF5ipRwd7BfmQekiYyp69m9SJA=="},"version":"0.1"}', | 133 | userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"17","6dadcd7ab23ece757d6990ce237bdebb68b2df0281c78cc1483d913318112162":"18"},"data":"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"},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","6e218e5d129105c20ac499307b260eb76bb2e753f6c319e17efdb848675c5fa2":"20","75f306bd520b483e86a1b436d94159020197df0155ab9058fb86586925223dc7":"21"},"data":"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"},"preferences":{"data":"fwQt+Wxhev563xviKvItHr3k5MC7ciMmEayJZ7HfwTcWPqaF5Syf1czPlMQiDQzEgWWs4BmQqB0QCDDMi3VyGCrSzAtIMR4afVdRyQ=="},"oneTimePasswords":{"data":"8WhmNFYrgxqzrJwMx+goddfLb2wlXnREHH77BKpL8h4ZalAwNOAt0yoBMECtlnNcve8ufjGAXL80dgUgtqsTn8fpx7+WDL5fNynv5ve9mJq/qgqctQO+pvnLuvs4867NXYInHr84f+t8f0lyfYRQdpDJfem9ECrn5MrpQ1rvwB2PVKcU0f+VPGhu673QeDbqzF+95JfxF9Tnv1PAePL1EGahUYuxTED4y4fcVmsHKl9yZXcsuheM7ecik93cqOVSlnuN+s5c2KWqjgDdLzUjG2dDHcuY97v7JT7Pns4ad5C9i2dYLtNrSHG7QLw6RBS/EnBwGzK+sWFQFCU8u0qSeFb0eGRjvVb9SfIXSeTqAJK3JC+OLAVGiey34jFckykeQjy5nPjhSpqWWhZdpezvZHno3YCXSGkLqbazL6xtesNaZZAbHBKdrwIOuTdhMwArfX/na/gavciFM0zwGb13w6JX3Ar3iTqhnBR20zmv5vcZwIOjf36LSfSNnjT4sWE1Az+FQPmMPQi4ODHfLSJbwYQhwqM5Wq2yXHpKDf/e2RpBZ5JsUkDEyoGmglcLF+pXwk4Mn9LuNOztxXCRWaZ3M/5uVk4xXOqJax1IlnA4nlu+3N0orF5ipRwd7BfmQekiYyp69m9SJA=="},"version":"0.1"}', |
134 | statistics: 's6W+Nlk1/14i/BN4u7qN8oTc', | 134 | statistics: 's6W+Nlk1/14i/BN4u7qN8oTc', |
135 | userDetailsVersion: '0.3', | 135 | userDetailsVersion: '0.3', |
136 | records: { | 136 | records: { |
137 | '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': { | 137 | '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': { |
138 | data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx', | 138 | data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx', |
139 | version: '0.2', | 139 | version: '0.2', |
140 | creationDate: 'Wed Mar 14 07:46:44 PDT 2007', | 140 | creationDate: 'Wed Mar 14 07:46:44 PDT 2007', |
141 | updateDate: 'Wed Mar 14 07:46:44 PDT 2007', | 141 | updateDate: 'Wed Mar 14 07:46:44 PDT 2007', |
142 | accessDate: 'Fri Jan 08 12:38:42 PST 2010', | 142 | accessDate: 'Fri Jan 08 12:38:42 PST 2010', |
143 | currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3', | 143 | currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3', |
144 | versions: { | 144 | versions: { |
145 | '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': { | 145 | '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': { |
146 | header: '####', | 146 | header: '####', |
147 | data: 'GCNNIhDQjMJQZGVSf+95fPtU6eOnFWVhuGm86r8WZGVR2Gf2EjbG1OJ0ZIGpZ/AXgirCMpo5AFxJe0Bay8IYg+xmBqMFhwFxzAgJBYCIts+raSaNRipuY8dTEqDxAqD1cChcG8EhSoiFgQ0fG0I7nNEUDJi0pIt4/ygBcwvAhuAenEp9ZW+oQA0+YysPQRqkz3IieFaOoSEbe5/SqpUilV4q1gTVyzNXvrxzxx+rlvEyGFgFN+vgtUZ1NrwlPk4gVksTpylvv6CFaMGEWKhgMG6efo0rJckKosaJTu1pldJdnmMK4EKNMLOd+jZ6pEhEhYyadrA4+zYU5TlmZA6ASzTaps8piSwZodoi9qY0ch2StK4mAbzeEGe2HdfHuAU9Tyq3Ppk3+VfNdKgpQfYrQOiSlXbKzK636tzXTN/gyrfOTHjBrRl117ywibgSX63ayAYNfcLpKotC', | 147 | data: 'GCNNIhDQjMJQZGVSf+95fPtU6eOnFWVhuGm86r8WZGVR2Gf2EjbG1OJ0ZIGpZ/AXgirCMpo5AFxJe0Bay8IYg+xmBqMFhwFxzAgJBYCIts+raSaNRipuY8dTEqDxAqD1cChcG8EhSoiFgQ0fG0I7nNEUDJi0pIt4/ygBcwvAhuAenEp9ZW+oQA0+YysPQRqkz3IieFaOoSEbe5/SqpUilV4q1gTVyzNXvrxzxx+rlvEyGFgFN+vgtUZ1NrwlPk4gVksTpylvv6CFaMGEWKhgMG6efo0rJckKosaJTu1pldJdnmMK4EKNMLOd+jZ6pEhEhYyadrA4+zYU5TlmZA6ASzTaps8piSwZodoi9qY0ch2StK4mAbzeEGe2HdfHuAU9Tyq3Ppk3+VfNdKgpQfYrQOiSlXbKzK636tzXTN/gyrfOTHjBrRl117ywibgSX63ayAYNfcLpKotC', |
148 | version: '0.2', | 148 | version: '0.2', |
149 | creationDate: 'Wed Mar 14 07:46:44 PDT 2007', | 149 | creationDate: 'Wed Mar 14 07:46:44 PDT 2007', |
150 | updateDate: 'Wed Mar 14 07:46:44 PDT 2007', | 150 | updateDate: 'Wed Mar 14 07:46:44 PDT 2007', |
151 | accessDate: 'Fri Jan 08 12:38:42 PST 2010' | 151 | accessDate: 'Fri Jan 08 12:38:42 PST 2010' |
152 | } | 152 | } |
153 | } | 153 | } |
154 | }, | 154 | }, |
155 | '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d': { | 155 | '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d': { |
156 | data: 'fGzBu1On7e/6rAoSB1a4fq/CkS8Be/T8UP5cQ93asBTWndSYu2lW4DQ4SXQXSindIi3OnNx/f6SNv/extb7OrMLREF92wXI045ipPwy+DIICb+cQNMJ82Sh4cXaIcAWcyrm+MYri3qq9LBKbpwkILcebZidJ86lmKYHJozUezmfbMcwNCljHs/gYkHVzVcuw9L52Ugc6wC7sjsshh+UH6i4/2Frlrophtx+b1vervNd8eoYiKnedHVXVfW7UJcQoF27eHFgzwYnGvRW0KNXFFhqmPb61TSkIvNdCCvBKDP4SXrWvGgzU89wipvWdUPpQ+fCT6Mp3hPRrbJxwMunmjujZOzBld/HkjnXoiNfBb5akA280WvdyzWYATrjV1ZFx8yQY8G0+lRt/MxjKDc38w4y+Rf5WeRbXboJMvFatwooHUggk6qSRmZVvgOmFmNuDRnRYIFzqK3JclhJeVasnqhR6RiGSowc1Ffr1HhcZCMnXpQABGBkZcHD/zw6YjHRyh9Plw7XAm0xb16HMDtiwt7WLJpxLH/HP99j/A2hvMGWiUiFCaYv7AzyEPTmYbN32D1IsAEE/GC3FG0HypGTBolP8wpAfTRdlvWpJz8oRRdwuLV3Pgpu+kXh5sQyeZI6tnuMPQFmRDcMN1oo3E5V5V585nVMnKTFcXhBzD4UnoV+DQNkG/+iSPybQzz/EZmucEqGEYyjI3kl4MAX8UMEUxE4JO0fF8MzyBI13nxknowAceEammx1dGVaJCoIOdhadaPVPyOzXM1Vp1erVm5k4TsxSx1pll+GOm6hVoNHIuQLDueaMEpRxMhfwc8cDyXURqRGPTgTc0bint5xVjo10fnpX1gcdc/AWL6y3tXM80NW+uFJ4GI7VzyzfcMRzTiRaGi19z8MIx8PbIVGh2sw4FhgGujNsPrpuESvUVT+17M0+v8oEoABNlcizTMFs/sA1uqlPumFASltzmViAzClOsDuCh069hFLjdk/Ex5jy4vPYlwOT8Uq9DJC9ZWuZgiI1DrhWN/8QGAEGxxbvnSZPNCQ9kpD5p+iabinLLWOAirVNgKwIRJRyAu/uR9xKd7J9Wxq8q/ii+y5lGilbo2g24wbDwrkXYVhqp/4J0g+p8Wv1NBjCTSCqV39WEizUCRHo3ee9HnQnBJQDOyTBRuz2odTJtJ5tLYjWXZRdFzFSJrEq+Z1z3oq7LnhZy3YWaFXPeKmBCemMthtNt0nL', | 156 | data: 'fGzBu1On7e/6rAoSB1a4fq/CkS8Be/T8UP5cQ93asBTWndSYu2lW4DQ4SXQXSindIi3OnNx/f6SNv/extb7OrMLREF92wXI045ipPwy+DIICb+cQNMJ82Sh4cXaIcAWcyrm+MYri3qq9LBKbpwkILcebZidJ86lmKYHJozUezmfbMcwNCljHs/gYkHVzVcuw9L52Ugc6wC7sjsshh+UH6i4/2Frlrophtx+b1vervNd8eoYiKnedHVXVfW7UJcQoF27eHFgzwYnGvRW0KNXFFhqmPb61TSkIvNdCCvBKDP4SXrWvGgzU89wipvWdUPpQ+fCT6Mp3hPRrbJxwMunmjujZOzBld/HkjnXoiNfBb5akA280WvdyzWYATrjV1ZFx8yQY8G0+lRt/MxjKDc38w4y+Rf5WeRbXboJMvFatwooHUggk6qSRmZVvgOmFmNuDRnRYIFzqK3JclhJeVasnqhR6RiGSowc1Ffr1HhcZCMnXpQABGBkZcHD/zw6YjHRyh9Plw7XAm0xb16HMDtiwt7WLJpxLH/HP99j/A2hvMGWiUiFCaYv7AzyEPTmYbN32D1IsAEE/GC3FG0HypGTBolP8wpAfTRdlvWpJz8oRRdwuLV3Pgpu+kXh5sQyeZI6tnuMPQFmRDcMN1oo3E5V5V585nVMnKTFcXhBzD4UnoV+DQNkG/+iSPybQzz/EZmucEqGEYyjI3kl4MAX8UMEUxE4JO0fF8MzyBI13nxknowAceEammx1dGVaJCoIOdhadaPVPyOzXM1Vp1erVm5k4TsxSx1pll+GOm6hVoNHIuQLDueaMEpRxMhfwc8cDyXURqRGPTgTc0bint5xVjo10fnpX1gcdc/AWL6y3tXM80NW+uFJ4GI7VzyzfcMRzTiRaGi19z8MIx8PbIVGh2sw4FhgGujNsPrpuESvUVT+17M0+v8oEoABNlcizTMFs/sA1uqlPumFASltzmViAzClOsDuCh069hFLjdk/Ex5jy4vPYlwOT8Uq9DJC9ZWuZgiI1DrhWN/8QGAEGxxbvnSZPNCQ9kpD5p+iabinLLWOAirVNgKwIRJRyAu/uR9xKd7J9Wxq8q/ii+y5lGilbo2g24wbDwrkXYVhqp/4J0g+p8Wv1NBjCTSCqV39WEizUCRHo3ee9HnQnBJQDOyTBRuz2odTJtJ5tLYjWXZRdFzFSJrEq+Z1z3oq7LnhZy3YWaFXPeKmBCemMthtNt0nL', |
157 | version: '0.3', | 157 | version: '0.3', |
158 | creationDate: 'Fri Oct 17 07:49:20 PDT 2008', | 158 | creationDate: 'Fri Oct 17 07:49:20 PDT 2008', |
159 | updateDate: 'Mon Oct 27 00:58:49 PDT 2008', | 159 | updateDate: 'Mon Oct 27 00:58:49 PDT 2008', |
160 | accessDate: 'Tue Jan 05 01:16:38 PST 2010', | 160 | accessDate: 'Tue Jan 05 01:16:38 PST 2010', |
161 | currentVersion: '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac', | 161 | currentVersion: '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac', |
162 | versions: { | 162 | versions: { |
163 | '0ae362285f103722abbd046eee2b7d10aeae6a1d05cbaf2081392ce9df882bcf': { | 163 | '0ae362285f103722abbd046eee2b7d10aeae6a1d05cbaf2081392ce9df882bcf': { |
164 | header: '####', | 164 | header: '####', |
165 | data: 'sG6TUmPSEPFpiJ5YdtghWHmHbvUK63tZCZ+Q5iz2ALas//jN+lZCBhZcjEwPEJskBkK2R0MyAh14wWGh2bBHMjsokgTe+L+x+0c/Zi0epE/IC9gtOBhsTe/hZ2e2xOGF/SbzET3DAAYXvxduZ36f7SvvFnrkkKvpj8wGSdTFcBmzqMb9DL2bRyRCLGLMzE3F1a0q5CufCIRz2TgHm+Uw+kfvvwC7ig/F/5iLW90Ypz3vmEtMEFYFHZ9a8Oh0rsXGfevbMhFqALoywzihQEe/NiB8dwn7GEdYKSQ35rhvZh29ULWOZinqmg0ONe0HYaxx7DbKsVoue57S0CIUlgHLajzHfLfqQg2sFI0OT8TnHsGg0YZ6mM2EdKmEjJiER0cP', | 165 | data: 'sG6TUmPSEPFpiJ5YdtghWHmHbvUK63tZCZ+Q5iz2ALas//jN+lZCBhZcjEwPEJskBkK2R0MyAh14wWGh2bBHMjsokgTe+L+x+0c/Zi0epE/IC9gtOBhsTe/hZ2e2xOGF/SbzET3DAAYXvxduZ36f7SvvFnrkkKvpj8wGSdTFcBmzqMb9DL2bRyRCLGLMzE3F1a0q5CufCIRz2TgHm+Uw+kfvvwC7ig/F/5iLW90Ypz3vmEtMEFYFHZ9a8Oh0rsXGfevbMhFqALoywzihQEe/NiB8dwn7GEdYKSQ35rhvZh29ULWOZinqmg0ONe0HYaxx7DbKsVoue57S0CIUlgHLajzHfLfqQg2sFI0OT8TnHsGg0YZ6mM2EdKmEjJiER0cP', |
166 | version: '0.3', | 166 | version: '0.3', |
167 | creationDate: 'Fri Oct 17 08:00:31 PDT 2008', | 167 | creationDate: 'Fri Oct 17 08:00:31 PDT 2008', |
168 | updateDate: 'Fri Oct 17 08:00:31 PDT 2008', | 168 | updateDate: 'Fri Oct 17 08:00:31 PDT 2008', |
169 | accessDate: 'Fri Oct 17 08:00:31 PDT 2008' | 169 | accessDate: 'Fri Oct 17 08:00:31 PDT 2008' |
170 | }, | 170 | }, |
171 | '10f45664bbd979a92f37886f1ecc6e52e49798b16dc997aecd37259ad9b2090e': { | 171 | '10f45664bbd979a92f37886f1ecc6e52e49798b16dc997aecd37259ad9b2090e': { |
172 | header: '####', | 172 | header: '####', |
173 | data: 'RdKVaV/WWWchrCse3KtcXd47Bfm6IAwjqVUpaxoed3HeunI42AAm7xYYSjeK8edHpbNRJbhobBAX5OZtWIp/HmgkobKM8CIiWxrWz89FqyrbnPD7+fXdtgF2yTax/0sC1l0ibncdOuJKX6U829oPlXCpXIOjlomc4wEEAD/5V6FbORvdZ9IE/ME3LsG2y02cT2tIpx6+R6wC/PKXhZA2UDsTE6R2Op2BtIzpVORZLXsdyAp/4wvWQxq90i9cEpbsVQsMB10JVyNHNsRTFhIlHi9MVCaMxQvcrwRElMj/Y9x3RbsFzSGKqFLqdg7Fn/U+KYkpYtsgHv9hraPIb9lV5FH16+iItU/HBM6FGezIj1ZkoQ+dgjPfSjTZzgzDYwyb', | 173 | data: 'RdKVaV/WWWchrCse3KtcXd47Bfm6IAwjqVUpaxoed3HeunI42AAm7xYYSjeK8edHpbNRJbhobBAX5OZtWIp/HmgkobKM8CIiWxrWz89FqyrbnPD7+fXdtgF2yTax/0sC1l0ibncdOuJKX6U829oPlXCpXIOjlomc4wEEAD/5V6FbORvdZ9IE/ME3LsG2y02cT2tIpx6+R6wC/PKXhZA2UDsTE6R2Op2BtIzpVORZLXsdyAp/4wvWQxq90i9cEpbsVQsMB10JVyNHNsRTFhIlHi9MVCaMxQvcrwRElMj/Y9x3RbsFzSGKqFLqdg7Fn/U+KYkpYtsgHv9hraPIb9lV5FH16+iItU/HBM6FGezIj1ZkoQ+dgjPfSjTZzgzDYwyb', |
174 | version: '0.3', | 174 | version: '0.3', |
175 | creationDate: 'Fri Oct 17 07:49:20 PDT 2008', | 175 | creationDate: 'Fri Oct 17 07:49:20 PDT 2008', |
176 | updateDate: 'Fri Oct 17 07:49:20 PDT 2008', | 176 | updateDate: 'Fri Oct 17 07:49:20 PDT 2008', |
177 | accessDate: 'Fri Oct 17 07:54:23 PDT 2008' | 177 | accessDate: 'Fri Oct 17 07:54:23 PDT 2008' |
178 | }, | 178 | }, |
179 | '2fa7b67e569d5e268d2b70b3d4d3a960d7e437e1937bcb324b67d0b9441db8ba': { | 179 | '2fa7b67e569d5e268d2b70b3d4d3a960d7e437e1937bcb324b67d0b9441db8ba': { |
180 | header: '####', | 180 | header: '####', |
181 | data: 'dpnI2qKjk0+bfyKktw4ZCWf+rWZ12hO5bda39CwD29JH7KtdpLCLe2LoLd+KKF2wOdpDsoI2iTiwRgFpt77e7DoWJABxq/0aaRCVN9XpqZo08iHiYhJyNlIszO8CdEhX+M3AeZqzTnd6fs91VfIEWggvku2Z+jwr0CbclY6FnOcNnS+1fj+W79Z9XC383GOm2ujjfo3SX/fyNQSw8aX+7AgJIRGR9uHK7M1cVfsNNTbmDb/HDgLlYZ1Pqm/9poHpmS7G4HUoRM2/WjI0R6F48dy5s8vZRi11SCnlnj5oRykScJj6wh2DltbCyesiaTpAjP6MQjTXsZzKpaosaQcQClZw+w6hDD2cA54IaBIv2j5KAHyhxDh2ERdwbdnCsDKPz4+zP+fmKfW295d4OY0l1NCSdcY+75HWTmBWRAooZeDTo7AE8m5sRwxewE0Y8J2MLUYsrs7Rl4kbZCiRRHU7cs+us3fq2DVn2OLGEbkRrK3kA9swT9W8ABqINoA79+DmDaIr6TGxe5AlHkCAl5sYAN4g42UX1NKhl4fWI1Scj9O1Ixds/1UUvqzavld0mE2cR9yt6LntjE5sQSAaexvymAJbU5IIM5NTk7NlY7G3PEvAPjcUsL9SGw==', | 181 | data: 'dpnI2qKjk0+bfyKktw4ZCWf+rWZ12hO5bda39CwD29JH7KtdpLCLe2LoLd+KKF2wOdpDsoI2iTiwRgFpt77e7DoWJABxq/0aaRCVN9XpqZo08iHiYhJyNlIszO8CdEhX+M3AeZqzTnd6fs91VfIEWggvku2Z+jwr0CbclY6FnOcNnS+1fj+W79Z9XC383GOm2ujjfo3SX/fyNQSw8aX+7AgJIRGR9uHK7M1cVfsNNTbmDb/HDgLlYZ1Pqm/9poHpmS7G4HUoRM2/WjI0R6F48dy5s8vZRi11SCnlnj5oRykScJj6wh2DltbCyesiaTpAjP6MQjTXsZzKpaosaQcQClZw+w6hDD2cA54IaBIv2j5KAHyhxDh2ERdwbdnCsDKPz4+zP+fmKfW295d4OY0l1NCSdcY+75HWTmBWRAooZeDTo7AE8m5sRwxewE0Y8J2MLUYsrs7Rl4kbZCiRRHU7cs+us3fq2DVn2OLGEbkRrK3kA9swT9W8ABqINoA79+DmDaIr6TGxe5AlHkCAl5sYAN4g42UX1NKhl4fWI1Scj9O1Ixds/1UUvqzavld0mE2cR9yt6LntjE5sQSAaexvymAJbU5IIM5NTk7NlY7G3PEvAPjcUsL9SGw==', |
182 | version: '0.3', | 182 | version: '0.3', |
183 | creationDate: 'Fri Oct 17 08:00:13 PDT 2008', | 183 | creationDate: 'Fri Oct 17 08:00:13 PDT 2008', |
184 | updateDate: 'Fri Oct 17 08:00:13 PDT 2008', | 184 | updateDate: 'Fri Oct 17 08:00:13 PDT 2008', |
185 | accessDate: 'Fri Oct 17 08:00:13 PDT 2008' | 185 | accessDate: 'Fri Oct 17 08:00:13 PDT 2008' |
186 | }, | 186 | }, |
187 | '5a17723c34226d8cd663f91b11bfa14979e694e461818113ec8abf7194b46b6b': { | 187 | '5a17723c34226d8cd663f91b11bfa14979e694e461818113ec8abf7194b46b6b': { |
188 | header: '####', | 188 | header: '####', |
189 | data: 'yRTvhkoY9zDRBwFYf0G5U8zhfS1XWIUfwes6ADNnFyOrHOr7JZvZZHSgkOPnsmN/f5ngcvFaIV9X3TNTmmPLzD/ewgGVMR+ofMLyOIMGhxUDzosSd1+HKqwDZWneZ6xNsci87W8UCfJgoEGrkAtAwktqyS04pcAas74XiRGBWNcv5mHZONwGPckYUnnaVG02Zf+qif6Pp7ugdvXrgncO5oi2AMSoR8GQxMP+tX53YzLwOpabA32PDT6o+aDPwMstJNQjWCXjeYLDIlb0GjL2zgjglX5CfdGw8vNT5hwGEK2D1FkvHkw79m++9sOWd5w9WdGgtS4mrTZP3JHWC1sPqvsIpq6PsrzRrbfCFH7C4X/ya5ciOIZTCNl4dEGAif94zgN74ueY5BF31PNFtaRaQ1waKkbsrU63MrbQbBar9b0hDZoser3BdgDGb1Ecc2GbJM1HbDITttmFDrzy/Ugh2kistHx7Dci8IGgfT7K94TntRFc5R6suEqYRrmOn57YJTZYrwSgbeTqAt/KOE+gL9LawiLJ0IdSC2RQnO3yu/aOEThHxpdLIKiVJoiEQXYVnq2UpnO79GNtplNnUe1hETQ/JT0o5X1bbENyInUsFjPuitAfChXofkAysIhDOHAdifc0Y+pxOHbQLkL65ZOsEDXWSlwMcduMNdQm4LVx26GLIV6yVsaDN+hGta2CxUuSvEIMM6T5xhaPfJ4K57LVw9MbOjRXpmFQz3QgEr8ZZdUxgE+Kj6CtmsjvzXtCQ3Bv/SccTLJSR/LQ8XRdIcPoOlDDy5jSQDF/8lxkgV1V7M3+SI1iWESPT8My5C+RH32F2MNZzthYq5hIFUB3wsM/AaQ==', | 189 | data: 'yRTvhkoY9zDRBwFYf0G5U8zhfS1XWIUfwes6ADNnFyOrHOr7JZvZZHSgkOPnsmN/f5ngcvFaIV9X3TNTmmPLzD/ewgGVMR+ofMLyOIMGhxUDzosSd1+HKqwDZWneZ6xNsci87W8UCfJgoEGrkAtAwktqyS04pcAas74XiRGBWNcv5mHZONwGPckYUnnaVG02Zf+qif6Pp7ugdvXrgncO5oi2AMSoR8GQxMP+tX53YzLwOpabA32PDT6o+aDPwMstJNQjWCXjeYLDIlb0GjL2zgjglX5CfdGw8vNT5hwGEK2D1FkvHkw79m++9sOWd5w9WdGgtS4mrTZP3JHWC1sPqvsIpq6PsrzRrbfCFH7C4X/ya5ciOIZTCNl4dEGAif94zgN74ueY5BF31PNFtaRaQ1waKkbsrU63MrbQbBar9b0hDZoser3BdgDGb1Ecc2GbJM1HbDITttmFDrzy/Ugh2kistHx7Dci8IGgfT7K94TntRFc5R6suEqYRrmOn57YJTZYrwSgbeTqAt/KOE+gL9LawiLJ0IdSC2RQnO3yu/aOEThHxpdLIKiVJoiEQXYVnq2UpnO79GNtplNnUe1hETQ/JT0o5X1bbENyInUsFjPuitAfChXofkAysIhDOHAdifc0Y+pxOHbQLkL65ZOsEDXWSlwMcduMNdQm4LVx26GLIV6yVsaDN+hGta2CxUuSvEIMM6T5xhaPfJ4K57LVw9MbOjRXpmFQz3QgEr8ZZdUxgE+Kj6CtmsjvzXtCQ3Bv/SccTLJSR/LQ8XRdIcPoOlDDy5jSQDF/8lxkgV1V7M3+SI1iWESPT8My5C+RH32F2MNZzthYq5hIFUB3wsM/AaQ==', |
190 | version: '0.3', | 190 | version: '0.3', |
191 | creationDate: 'Fri Oct 17 07:59:31 PDT 2008', | 191 | creationDate: 'Fri Oct 17 07:59:31 PDT 2008', |
192 | updateDate: 'Fri Oct 17 07:59:31 PDT 2008', | 192 | updateDate: 'Fri Oct 17 07:59:31 PDT 2008', |
193 | accessDate: 'Fri Oct 17 07:59:31 PDT 2008' | 193 | accessDate: 'Fri Oct 17 07:59:31 PDT 2008' |
194 | }, | 194 | }, |
195 | '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac': { | 195 | '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac': { |
196 | header: '####', | 196 | header: '####', |
197 | data: 'RgIWPbNN3sPkIPBE6lfvf9/EoDFLemTZe0Qh/1wZLrKxLRNzFpUk9+NmeGUp5f1hM3XjXw4cXRvP6GrWq69mz9zGja+1TA6RoW3dFMpSQkbONcrSD1mIjxV2zIvzA/Pangz0ZixbEeHCfwXLvgnevbTXXFjkti3kLHQlk2pJpM3zMl+rMJtcsefszuJ/0tE/bO7sBcFqcYgKAht2OyDQORBAGiW1kI9USKM5OOfJJIZDQ0gDhRgl2U92l3kIOO8hdnj32oRedwfKFmdSRkuMY7ykU0bMuVEVkLi/FWmhHxi66C2ovAztVtMd1IiyoNcHc4UH942GC4pT1A8YQpIHxBAJbrQVhpl9LfFkmJ7xUc6Xs5j0Nv8+z2JGCnJI/D4nDJqYW+iCYtRWu6vUmbg0vGfaYWQFGRZRk8zWfHzHXBvHU8p0QsIjYgCLKiUaU2SRRD2P7JCjeTUrm3I1OI593iPsEH9J2PHCM9OMQ8/Fsdgd7lWgH6P9jLdGUwtb1hGaq8mg3JGrHFXcrVkUEBfeR7xljeSHD7j4YahYrua9EeR8nvq6CNaOr406AWyHse9SXhaOxt8qXRLoELpyQPsaLgafUpsdLjJqHz7J76Rp77NSOtXGplKjAtU1xj+d/agaAKYCjvUJC8/APJI2890Pn7VSXr/TPc5biPEIopyVYEHFqaT4e5nZW1Ku1HXC9gwUwUI9rITG4GzIH1WMEm7oFLNUaSMrdK/UTdTJZ66ENE3B9v9cTUpR0NTkbI+iGKDnc8GHPRlr2ZJwN4KFTxi+o/kkEOBjvRHR55nRh2+dke75LS/fzHQZw5wlyqBv5ZeUZfRA7QHfkj9acR0fJSqqNX25AUzZQnRL3oVpOxFWCMU7QVf5VpnRm9OIOd/5F5EoY7Be4doM/UV9U40F3E6XPZQ8S0GKQzrDjc7jKyGPLNPLUWTmGB39mTNDHZQHh5Xv5Q==', | 197 | data: 'RgIWPbNN3sPkIPBE6lfvf9/EoDFLemTZe0Qh/1wZLrKxLRNzFpUk9+NmeGUp5f1hM3XjXw4cXRvP6GrWq69mz9zGja+1TA6RoW3dFMpSQkbONcrSD1mIjxV2zIvzA/Pangz0ZixbEeHCfwXLvgnevbTXXFjkti3kLHQlk2pJpM3zMl+rMJtcsefszuJ/0tE/bO7sBcFqcYgKAht2OyDQORBAGiW1kI9USKM5OOfJJIZDQ0gDhRgl2U92l3kIOO8hdnj32oRedwfKFmdSRkuMY7ykU0bMuVEVkLi/FWmhHxi66C2ovAztVtMd1IiyoNcHc4UH942GC4pT1A8YQpIHxBAJbrQVhpl9LfFkmJ7xUc6Xs5j0Nv8+z2JGCnJI/D4nDJqYW+iCYtRWu6vUmbg0vGfaYWQFGRZRk8zWfHzHXBvHU8p0QsIjYgCLKiUaU2SRRD2P7JCjeTUrm3I1OI593iPsEH9J2PHCM9OMQ8/Fsdgd7lWgH6P9jLdGUwtb1hGaq8mg3JGrHFXcrVkUEBfeR7xljeSHD7j4YahYrua9EeR8nvq6CNaOr406AWyHse9SXhaOxt8qXRLoELpyQPsaLgafUpsdLjJqHz7J76Rp77NSOtXGplKjAtU1xj+d/agaAKYCjvUJC8/APJI2890Pn7VSXr/TPc5biPEIopyVYEHFqaT4e5nZW1Ku1HXC9gwUwUI9rITG4GzIH1WMEm7oFLNUaSMrdK/UTdTJZ66ENE3B9v9cTUpR0NTkbI+iGKDnc8GHPRlr2ZJwN4KFTxi+o/kkEOBjvRHR55nRh2+dke75LS/fzHQZw5wlyqBv5ZeUZfRA7QHfkj9acR0fJSqqNX25AUzZQnRL3oVpOxFWCMU7QVf5VpnRm9OIOd/5F5EoY7Be4doM/UV9U40F3E6XPZQ8S0GKQzrDjc7jKyGPLNPLUWTmGB39mTNDHZQHh5Xv5Q==', |
198 | version: '0.3', | 198 | version: '0.3', |
199 | creationDate: 'Mon Oct 27 00:58:49 PDT 2008', | 199 | creationDate: 'Mon Oct 27 00:58:49 PDT 2008', |
200 | updateDate: 'Mon Oct 27 00:58:49 PDT 2008', | 200 | updateDate: 'Mon Oct 27 00:58:49 PDT 2008', |
201 | accessDate: 'Tue Jan 05 01:16:38 PST 2010' | 201 | accessDate: 'Tue Jan 05 01:16:38 PST 2010' |
202 | }, | 202 | }, |
203 | 'b57a2d2ffafa8029123362071c09709bb9192f06a17140440f0e41d22143148f': { | 203 | 'b57a2d2ffafa8029123362071c09709bb9192f06a17140440f0e41d22143148f': { |
204 | header: '####', | 204 | header: '####', |
205 | data: 'PQ53T2Vo2D8PoLI1qNX//jLaVZFTDTYk6geT9+4RoThTxvlJ+beDPnQzgYhd9iASaF9GQEEL8JxsBnNpEPa6JPOY4ndFLmDLyFDKXMprxq1UIbzFV6kFoYAk3uCCCa3UCDzdr1KXB2CiiF9HrilaA+xkm8krAvH8I5kZD+j23gByz5cAFvXg7A77KEURpjujURL65DW5M+ceIjo6OXaPW9VO03xhqGt/M47ayObpoEGJZn+X9C8s0SE5wOXHbn38YZlRI480OMvtDAxbEYUeQKMmzu6lO4Nw5hhOUjoPSLr/i3tmDx3nPcDwnSafx6jyA4y31eW6yazqTEOP5I5ArC5mUrF7mAAiFvbHIsMoF8PLj6MONlRIOZgbf9HzCpFdt8xBrX/TXp3LaSAj2XTWgSTFI2cgmU3qqPyibvIfUsB5cVHQCXi692JpC+B85axJ0FLyMl5w3vq0txlPkf6q+dadPYDaLHGZEmDjkWScA1GM5xPJHWFwqGE7ejgXKG0sMYsMKWYk+F2LEUmMHtEvSlpgJBntvcQ1ZjYQxeu4hg5txu1ykkif6fXgkXF6wn6qu+5caeJeNhWtAB4q7WVD47111woYMdkmX7AnDTXSAQ==', | 205 | data: 'PQ53T2Vo2D8PoLI1qNX//jLaVZFTDTYk6geT9+4RoThTxvlJ+beDPnQzgYhd9iASaF9GQEEL8JxsBnNpEPa6JPOY4ndFLmDLyFDKXMprxq1UIbzFV6kFoYAk3uCCCa3UCDzdr1KXB2CiiF9HrilaA+xkm8krAvH8I5kZD+j23gByz5cAFvXg7A77KEURpjujURL65DW5M+ceIjo6OXaPW9VO03xhqGt/M47ayObpoEGJZn+X9C8s0SE5wOXHbn38YZlRI480OMvtDAxbEYUeQKMmzu6lO4Nw5hhOUjoPSLr/i3tmDx3nPcDwnSafx6jyA4y31eW6yazqTEOP5I5ArC5mUrF7mAAiFvbHIsMoF8PLj6MONlRIOZgbf9HzCpFdt8xBrX/TXp3LaSAj2XTWgSTFI2cgmU3qqPyibvIfUsB5cVHQCXi692JpC+B85axJ0FLyMl5w3vq0txlPkf6q+dadPYDaLHGZEmDjkWScA1GM5xPJHWFwqGE7ejgXKG0sMYsMKWYk+F2LEUmMHtEvSlpgJBntvcQ1ZjYQxeu4hg5txu1ykkif6fXgkXF6wn6qu+5caeJeNhWtAB4q7WVD47111woYMdkmX7AnDTXSAQ==', |
206 | version: '0.3', | 206 | version: '0.3', |
207 | creationDate: 'Fri Oct 17 07:57:17 PDT 2008', | 207 | creationDate: 'Fri Oct 17 07:57:17 PDT 2008', |
208 | updateDate: 'Fri Oct 17 07:57:17 PDT 2008', | 208 | updateDate: 'Fri Oct 17 07:57:17 PDT 2008', |
209 | accessDate: 'Fri Oct 17 07:57:17 PDT 2008' | 209 | accessDate: 'Fri Oct 17 07:57:17 PDT 2008' |
210 | }, | 210 | }, |
211 | 'b713e0a1e2664ac7bfa7ba887329ea023204d10298973e322983b82b222debf6': { | 211 | 'b713e0a1e2664ac7bfa7ba887329ea023204d10298973e322983b82b222debf6': { |
212 | header: '####', | 212 | header: '####', |
213 | data: 'H3gIieYrH7Oy8LEWCZpl9vGp9qYdHNCoBNGijYqlcfXt+1JYvPj1abPp12xLNrDUHfaOZklU2Ip4tOf0CDNhgAan7LYyPqFoy9ss2f9/5RLcbjwiIwSduySIL322HTAwqlzlBt/qaJdHHPUrczmu0fb7fT+0dO4gCL/e/IjcHLefUUgNPAbpHG0Nv0+4lNwKZkIQM3tLRtfJyFBIgWKcMcP1XMic33kr24rwybR8Pb0CHZrOOvvUiGqyoED3ZTZf1twUDVNXO7MWCAC5dBc6/Mk/vSmbbGhppXAH02N0g8G5qzZfp3UVikls55VNhRYLHByVsgpkbIrKXyZnBPTwzm7qefpYAXDOgO+164L66/Art2FYGqZQRZLuh5r8oF38', | 213 | data: 'H3gIieYrH7Oy8LEWCZpl9vGp9qYdHNCoBNGijYqlcfXt+1JYvPj1abPp12xLNrDUHfaOZklU2Ip4tOf0CDNhgAan7LYyPqFoy9ss2f9/5RLcbjwiIwSduySIL322HTAwqlzlBt/qaJdHHPUrczmu0fb7fT+0dO4gCL/e/IjcHLefUUgNPAbpHG0Nv0+4lNwKZkIQM3tLRtfJyFBIgWKcMcP1XMic33kr24rwybR8Pb0CHZrOOvvUiGqyoED3ZTZf1twUDVNXO7MWCAC5dBc6/Mk/vSmbbGhppXAH02N0g8G5qzZfp3UVikls55VNhRYLHByVsgpkbIrKXyZnBPTwzm7qefpYAXDOgO+164L66/Art2FYGqZQRZLuh5r8oF38', |
214 | version: '0.3', | 214 | version: '0.3', |
215 | creationDate: 'Fri Oct 17 07:58:00 PDT 2008', | 215 | creationDate: 'Fri Oct 17 07:58:00 PDT 2008', |
216 | updateDate: 'Fri Oct 17 07:58:00 PDT 2008', | 216 | updateDate: 'Fri Oct 17 07:58:00 PDT 2008', |
217 | accessDate: 'Fri Oct 17 07:58:00 PDT 2008' | 217 | accessDate: 'Fri Oct 17 07:58:00 PDT 2008' |
218 | }, | 218 | }, |
219 | 'c4cea1cd88a86b05f48a99896a37967c3456228283a0406331ca9f67c6f29f97': { | 219 | 'c4cea1cd88a86b05f48a99896a37967c3456228283a0406331ca9f67c6f29f97': { |
220 | header: '####', | 220 | header: '####', |
221 | data: '1znWPwc9JwCe7iOFiUd2iGm4xJd+824B4VRqEtzCQkW46tg25RWfo7XagvK46USB7t6pC8WMLU0M/EC47KucsfpWUqHGbseoXT/8g8E8GoLnIsk9qFyJG7LGd1sUvqBgszLZwjWWG3t9zifmpW5nY9GialBYNmeSLS3bg5xDH+eCEilUUfDe7zGuVSuu/XkHacv/DYUst97e+6u44F7H8Kv8dTywJZpqbmveNPeWfCej2aBXdVV616J5lIRaj2uIYuQYG7blYJh9KZ7yLStdPndl6h65hIJpfWo0PM8nLJuo0lWNHz7misrutnmxJEjkwVIZ5YAmqp1Zz3VC8zw4IxkXrC/sPmp4PaNXgKz9ZJRaY2KV69WmHf7BUQ3QneGngbT0tN526SS5qDFwTGiuIlnYGWvTB2jVrbns68n/d8Fps8sSWfJBvvXJUEkaZB+1WqNilOPGXvyJ5k2O/iucFbRlxwlEHDny+AgsbtXZdp8cHQ4C/O4G0mnUMZuS38gn6e2kQ55mUhxKeORM+J6Rx1y4Iiu9KKNbxyS5eBpAlFB4xS/o35CS4g309vyOEhi37F24bpp4pM0xEPG4mcc/IyChHzaHUGEp1IX1ZO/r3ut9RIN2QWrGLUlZV/9rFKpLLAy6BkY/g8VYNrV8PztOL3rqy/qwqNZouONwPw8w8SA=', | 221 | data: '1znWPwc9JwCe7iOFiUd2iGm4xJd+824B4VRqEtzCQkW46tg25RWfo7XagvK46USB7t6pC8WMLU0M/EC47KucsfpWUqHGbseoXT/8g8E8GoLnIsk9qFyJG7LGd1sUvqBgszLZwjWWG3t9zifmpW5nY9GialBYNmeSLS3bg5xDH+eCEilUUfDe7zGuVSuu/XkHacv/DYUst97e+6u44F7H8Kv8dTywJZpqbmveNPeWfCej2aBXdVV616J5lIRaj2uIYuQYG7blYJh9KZ7yLStdPndl6h65hIJpfWo0PM8nLJuo0lWNHz7misrutnmxJEjkwVIZ5YAmqp1Zz3VC8zw4IxkXrC/sPmp4PaNXgKz9ZJRaY2KV69WmHf7BUQ3QneGngbT0tN526SS5qDFwTGiuIlnYGWvTB2jVrbns68n/d8Fps8sSWfJBvvXJUEkaZB+1WqNilOPGXvyJ5k2O/iucFbRlxwlEHDny+AgsbtXZdp8cHQ4C/O4G0mnUMZuS38gn6e2kQ55mUhxKeORM+J6Rx1y4Iiu9KKNbxyS5eBpAlFB4xS/o35CS4g309vyOEhi37F24bpp4pM0xEPG4mcc/IyChHzaHUGEp1IX1ZO/r3ut9RIN2QWrGLUlZV/9rFKpLLAy6BkY/g8VYNrV8PztOL3rqy/qwqNZouONwPw8w8SA=', |
222 | version: '0.3', | 222 | version: '0.3', |
223 | creationDate: 'Fri Oct 17 08:01:59 PDT 2008', | 223 | creationDate: 'Fri Oct 17 08:01:59 PDT 2008', |
224 | updateDate: 'Fri Oct 17 08:01:59 PDT 2008', | 224 | updateDate: 'Fri Oct 17 08:01:59 PDT 2008', |
225 | accessDate: 'Mon Oct 27 00:57:58 PDT 2008' | 225 | accessDate: 'Mon Oct 27 00:57:58 PDT 2008' |
226 | } | 226 | } |
227 | } | 227 | } |
228 | }, | 228 | }, |
229 | '13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551': { | 229 | '13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551': { |
230 | data: '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', | 230 | data: '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', |
231 | version: '0.3', | 231 | version: '0.3', |
232 | creationDate: 'Wed Mar 14 06:53:11 PDT 2007', | 232 | creationDate: 'Wed Mar 14 06:53:11 PDT 2007', |
233 | updateDate: 'Fri Oct 30 10:52:54 PDT 2009', | 233 | updateDate: 'Fri Oct 30 10:52:54 PDT 2009', |
234 | accessDate: 'Sat Jan 23 02:24:21 PST 2010', | 234 | accessDate: 'Sat Jan 23 02:24:21 PST 2010', |
235 | currentVersion: '933abcdd036332b566a70beba4ae486123475dad2903b00a939c067c34a074f5', | 235 | currentVersion: '933abcdd036332b566a70beba4ae486123475dad2903b00a939c067c34a074f5', |
236 | versions: { | 236 | versions: { |
237 | '106a1116d22c2395906a346da4d830c7afbd2da9a46210d0b7a11de238016783': { | 237 | '106a1116d22c2395906a346da4d830c7afbd2da9a46210d0b7a11de238016783': { |
238 | header: '####', | 238 | header: '####', |
239 | data: 'jgDUvByveAFnchBQKhiHGYDNDtj/7Aja2RePMer0FCOkkEu5GRAiLkxA3/DD3eiU+g+mCxnjnOaEIYL1O5o0+JP08XapsblZHTRKfveeFfs6sWwuqEHGYULBaXx4XSfK2B12HgpBwa5aD49489AkuyXi7t/aAXcKKJcLB1sC61DI3NsmajUaXHBi31Sp7nKAUpMuiWyguW0JVfH6KUPqyldVDBTBqHAis37c1qoR6aFHFfGgAfb35+syfmPRgemujMRkj2XO6dbt9zAYlHVSYFp9393rwPZoyBfXMMdDtSTmq7H9qbmx31GecHZlFN3NymtPPDYUbQ9mpPVRbxE9NjtiPrI5eGFvb++OdOx75PKjYjCAPWWFZ+4aryNn+h+yqab7pAuoG03ACVVrAFIOn09g1ssol/vqvalulEf3hAIviedyiNAC9D0UDHtzUwyIiELvR9qouXLZ', | 239 | data: 'jgDUvByveAFnchBQKhiHGYDNDtj/7Aja2RePMer0FCOkkEu5GRAiLkxA3/DD3eiU+g+mCxnjnOaEIYL1O5o0+JP08XapsblZHTRKfveeFfs6sWwuqEHGYULBaXx4XSfK2B12HgpBwa5aD49489AkuyXi7t/aAXcKKJcLB1sC61DI3NsmajUaXHBi31Sp7nKAUpMuiWyguW0JVfH6KUPqyldVDBTBqHAis37c1qoR6aFHFfGgAfb35+syfmPRgemujMRkj2XO6dbt9zAYlHVSYFp9393rwPZoyBfXMMdDtSTmq7H9qbmx31GecHZlFN3NymtPPDYUbQ9mpPVRbxE9NjtiPrI5eGFvb++OdOx75PKjYjCAPWWFZ+4aryNn+h+yqab7pAuoG03ACVVrAFIOn09g1ssol/vqvalulEf3hAIviedyiNAC9D0UDHtzUwyIiELvR9qouXLZ', |
240 | version: '0.2', | 240 | version: '0.2', |
241 | creationDate: 'Tue Apr 17 10:13:41 PDT 2007', | 241 | creationDate: 'Tue Apr 17 10:13:41 PDT 2007', |
242 | updateDate: 'Tue Apr 17 10:13:41 PDT 2007', | 242 | updateDate: 'Tue Apr 17 10:13:41 PDT 2007', |
243 | accessDate: 'Tue Apr 17 10:13:41 PDT 2007' | 243 | accessDate: 'Tue Apr 17 10:13:41 PDT 2007' |
244 | }, | 244 | }, |
245 | '111a8a4b6b912b808a93cf5e8785ca223112628d05f0bfc5dfe1eb40cb72ed8a': { | 245 | '111a8a4b6b912b808a93cf5e8785ca223112628d05f0bfc5dfe1eb40cb72ed8a': { |
246 | header: '####', | 246 | header: '####', |
247 | data: 't524etHmXljCnLC+IM+WPD8Q5VE7wDsSHVNZzFU4hQzk119t/N/vhtfHYz5HgNstU5T8c7h7RHKvFk5f+4ZwgNgDqSH7H2PrH+7/bV8+uuqbe+/3GYOvELjTF7v3xMyYs1B7ruHpT+291HVNZqxajqCl/+9nbG0e5feqNsTXWUTdLzF0szJuCTNr2I+fhxAO0LRVaf8h+MBPYyuBDnfFDuKm899IsgF9YoYRvjaYO69DkElvf4VP2jrXIJsRnGIUfUaIS/wQ54+X4JBZM/9M09MVOw1SVe+cwG+P3xyPUkqnSb77ECo86C0MktzeYFmPnPv2SM2KFA6slctXsyudoaNlReh1k+6no5J5BjaawTfqYjYrAtWSPsuhxYVsZym/X2CVbkz4rMSn+J5Uio9N5uZ6AqgCKdhAJlwzVb3fIIJwvFpVpy/0LMskb7aG2i4eAxwzx1H6rD3Y', | 247 | data: 't524etHmXljCnLC+IM+WPD8Q5VE7wDsSHVNZzFU4hQzk119t/N/vhtfHYz5HgNstU5T8c7h7RHKvFk5f+4ZwgNgDqSH7H2PrH+7/bV8+uuqbe+/3GYOvELjTF7v3xMyYs1B7ruHpT+291HVNZqxajqCl/+9nbG0e5feqNsTXWUTdLzF0szJuCTNr2I+fhxAO0LRVaf8h+MBPYyuBDnfFDuKm899IsgF9YoYRvjaYO69DkElvf4VP2jrXIJsRnGIUfUaIS/wQ54+X4JBZM/9M09MVOw1SVe+cwG+P3xyPUkqnSb77ECo86C0MktzeYFmPnPv2SM2KFA6slctXsyudoaNlReh1k+6no5J5BjaawTfqYjYrAtWSPsuhxYVsZym/X2CVbkz4rMSn+J5Uio9N5uZ6AqgCKdhAJlwzVb3fIIJwvFpVpy/0LMskb7aG2i4eAxwzx1H6rD3Y', |
248 | version: '0.2', | 248 | version: '0.2', |
249 | creationDate: 'Wed Mar 14 06:53:11 PDT 2007', | 249 | creationDate: 'Wed Mar 14 06:53:11 PDT 2007', |
250 | updateDate: 'Wed Mar 14 06:53:11 PDT 2007', | 250 | updateDate: 'Wed Mar 14 06:53:11 PDT 2007', |
251 | accessDate: 'Wed Mar 14 07:24:35 PDT 2007' | 251 | accessDate: 'Wed Mar 14 07:24:35 PDT 2007' |
252 | }, | 252 | }, |
253 | '144d6eff3eb5f1cb70c8906741d88018cdeeae3a618ac4066598ad6b04242364': { | 253 | '144d6eff3eb5f1cb70c8906741d88018cdeeae3a618ac4066598ad6b04242364': { |
254 | header: '####', | 254 | header: '####', |
255 | data: 'NPgSZF0eSOzy0/Ns+15Nz4bjSwh4o7fWYgKgwXLRFrF8y3EdbiOH7AiEmmPrCpT1raeYLWCcDIrRTz+/9uvIrz6kK6BjU2emr8YdyLai+PTCRY0SafWS3QiYixX6DJiKIt0SC2F6dfmSHwNsbfTHilFhVXn6wXTJpWvC+sRzw+h42cYpQp0BoLSuFV7vPz/+wtuQdl28BiBgLzGsrtPud0tPcfldGox6Ia/1SrOPcqUr0tnFlNQiUvPU7N0JZgRNyr1PfpAEhmYRI7aEJidsZ36vGQpE0ZQMmQE/9tLS/InALRZT1YXfMsytf0o3y4QlgJrvRgBL7fGiQOZJpU7igLk15xAwU+OLIaYIbr2xlKDJvndHOcrFoYKry9/A/aZSnEYv79wsaf64bBgIVD2WJGLuSFFmzlFnbg/O4kGTin3A8XBpvFA9V6iCMvnEMkrqxD3Qgf7WhxFE1A==', | 255 | data: 'NPgSZF0eSOzy0/Ns+15Nz4bjSwh4o7fWYgKgwXLRFrF8y3EdbiOH7AiEmmPrCpT1raeYLWCcDIrRTz+/9uvIrz6kK6BjU2emr8YdyLai+PTCRY0SafWS3QiYixX6DJiKIt0SC2F6dfmSHwNsbfTHilFhVXn6wXTJpWvC+sRzw+h42cYpQp0BoLSuFV7vPz/+wtuQdl28BiBgLzGsrtPud0tPcfldGox6Ia/1SrOPcqUr0tnFlNQiUvPU7N0JZgRNyr1PfpAEhmYRI7aEJidsZ36vGQpE0ZQMmQE/9tLS/InALRZT1YXfMsytf0o3y4QlgJrvRgBL7fGiQOZJpU7igLk15xAwU+OLIaYIbr2xlKDJvndHOcrFoYKry9/A/aZSnEYv79wsaf64bBgIVD2WJGLuSFFmzlFnbg/O4kGTin3A8XBpvFA9V6iCMvnEMkrqxD3Qgf7WhxFE1A==', |
256 | version: '0.2', | 256 | version: '0.2', |
257 | creationDate: 'Wed Mar 14 07:33:00 PDT 2007', | 257 | creationDate: 'Wed Mar 14 07:33:00 PDT 2007', |
258 | updateDate: 'Wed Mar 14 07:33:00 PDT 2007', | 258 | updateDate: 'Wed Mar 14 07:33:00 PDT 2007', |
259 | accessDate: 'Tue Apr 17 10:12:56 PDT 2007' | 259 | accessDate: 'Tue Apr 17 10:12:56 PDT 2007' |
260 | }, | 260 | }, |
261 | '191d456526b14fc5b4ff11b3f856c9568562bbc68435700a2fef0d176482edda': { | 261 | '191d456526b14fc5b4ff11b3f856c9568562bbc68435700a2fef0d176482edda': { |
262 | header: '####', | 262 | header: '####', |
263 | data: '9rcbGeLFjW1cwULSScOa5zfb9BZqoSi8IvarxwjLVz+4VqApsBZnwJsxJHq/L9zV3SRYlAQRRLNy3lhpO/fJAOg4RNp68KdtA+IZfCsn1MzwfOoBrnTTELPKxDim4US9xQNdJp5ffWoLB8demEL2YkSNTrPVr5crvVPyepuRCzdqUoe6Dba05tR6Ju7/+d9K/cfJg+KI/ziSUSVlOTsIahGkipvMwYzhCOqjljJvdeF6XLLCh7F70lFvpW5vtv5jNmpkgvAhfxgovIZ3tav0WDc+DEdFNHNsCtFhwRYsb1dH5Ry01M8g4vS7PDkuCNYOvjL9bS2Wmy/lVulM9dYdB/d/gKWTjbqgre/IR1TPPdtfiVBo2J9PUvM8P/c2LmQrf63OwjWT74N0D7q/NuVn1KXzREQiyMi6ezzujzJolpNVUNkJFlnSHl+EqnfFiiR5ALZ7Nts4uWLe4Vpn0XmyvHoAVDBK3fw7e3n0tIG4x6k95guIWRKdDpYLOTHOe9jKJbc6KxdGmt21/5pX4KdeWavwirKRcXW6ReJIOVF+KREEZZOGWu7UKWgqgdaMuvxO472zzXzxTBvnpOmnxl/oIkhs23OPxHEwHXX8gXnyA60hd2tthCfmzfI48wWkO40cUTFnqO8htWRXwbUa9gYTjYWDTmoIyK9AgO+PfBLNqx3JzJYAymDcw39ItO2lIcEBkZ4=', | 263 | data: '9rcbGeLFjW1cwULSScOa5zfb9BZqoSi8IvarxwjLVz+4VqApsBZnwJsxJHq/L9zV3SRYlAQRRLNy3lhpO/fJAOg4RNp68KdtA+IZfCsn1MzwfOoBrnTTELPKxDim4US9xQNdJp5ffWoLB8demEL2YkSNTrPVr5crvVPyepuRCzdqUoe6Dba05tR6Ju7/+d9K/cfJg+KI/ziSUSVlOTsIahGkipvMwYzhCOqjljJvdeF6XLLCh7F70lFvpW5vtv5jNmpkgvAhfxgovIZ3tav0WDc+DEdFNHNsCtFhwRYsb1dH5Ry01M8g4vS7PDkuCNYOvjL9bS2Wmy/lVulM9dYdB/d/gKWTjbqgre/IR1TPPdtfiVBo2J9PUvM8P/c2LmQrf63OwjWT74N0D7q/NuVn1KXzREQiyMi6ezzujzJolpNVUNkJFlnSHl+EqnfFiiR5ALZ7Nts4uWLe4Vpn0XmyvHoAVDBK3fw7e3n0tIG4x6k95guIWRKdDpYLOTHOe9jKJbc6KxdGmt21/5pX4KdeWavwirKRcXW6ReJIOVF+KREEZZOGWu7UKWgqgdaMuvxO472zzXzxTBvnpOmnxl/oIkhs23OPxHEwHXX8gXnyA60hd2tthCfmzfI48wWkO40cUTFnqO8htWRXwbUa9gYTjYWDTmoIyK9AgO+PfBLNqx3JzJYAymDcw39ItO2lIcEBkZ4=', |
264 | version: '0.3', | 264 | version: '0.3', |
265 | previousVersion: '6ca08e08104f73943447eba327c8d0bdab3ab9a01fabec1bd4734b52034a9544', | 265 | previousVersion: '6ca08e08104f73943447eba327c8d0bdab3ab9a01fabec1bd4734b52034a9544', |
266 | previousVersionKey: 'RDzOj7LWZcdVg5KmmIT5VXM0cUFeC9tC3n0IXDfNpj12cq0w3k1rpBYbt4eSEkOcdM7Va07FPNdZY4Pd65xBo2MGc56Ka1pX3wW4jTxz350qtw==', | 266 | previousVersionKey: 'RDzOj7LWZcdVg5KmmIT5VXM0cUFeC9tC3n0IXDfNpj12cq0w3k1rpBYbt4eSEkOcdM7Va07FPNdZY4Pd65xBo2MGc56Ka1pX3wW4jTxz350qtw==', |
267 | creationDate: 'Fri Sep 11 05:54:50 PDT 2009', | 267 | creationDate: 'Fri Sep 11 05:54:50 PDT 2009', |
268 | updateDate: 'Fri Sep 11 05:54:50 PDT 2009', | 268 | updateDate: 'Fri Sep 11 05:54:50 PDT 2009', |
269 | accessDate: 'Fri Sep 11 05:54:50 PDT 2009' | 269 | accessDate: 'Fri Sep 11 05:54:50 PDT 2009' |
270 | }, | 270 | }, |
271 | '1ae171ac58981896484c222ab42373b0b6bc3d054dd56faebdc9018f3abbf549': { | 271 | '1ae171ac58981896484c222ab42373b0b6bc3d054dd56faebdc9018f3abbf549': { |
272 | header: '####', | 272 | header: '####', |
273 | data: '0ck0NbHAOYieUs5c1U6xSMf3pj743aIv1nnBnB7f4vsvKpMiYleQwr4SwY1W6vhg+3sLnO9C0CCD8Brt4V1wScz/STp4oB3hoy31W4dsAFsUyAWFJ8MrYDsZW3jotIPVbMKxu+4Yp051iDPcFKimDhfAu1zVyiVE9llNj3tP6d9gukUNfGZ5CvFmEXcheHB8t81Z2tgeO70EELFUn7uqKJwh5xCqTeogPtsifmCjgx8Yo6hi19vl2TDAaX0HquFO3WcIAL185tzYZ5rU23BYwxD7hVfan7lngSVq614MsEB3EX9WiHRoissSSajNkKTlTW8zsNj3VlUXKMQiJ2aA9Pi+/Yt9sNAbmyTl6T5TNN4QSquLPLyxO4p+OIjra1WPdmVsCti7fOyGirogfJF0XhZg4imvGXK0c6lPZIlg/OEnoDSTiHXlOYpSgaEw1Js5HZ+390XY0KYPtpsZlY+oeVS4p29HN7x3CEairuIldEsZrk4whiVcwzlnmw3n8wiewumus4eRh9w0CIwJELKeMiz5cX4bX8+AKS+u8O1W0GwKlEGTj/joA/M=', | 273 | data: '0ck0NbHAOYieUs5c1U6xSMf3pj743aIv1nnBnB7f4vsvKpMiYleQwr4SwY1W6vhg+3sLnO9C0CCD8Brt4V1wScz/STp4oB3hoy31W4dsAFsUyAWFJ8MrYDsZW3jotIPVbMKxu+4Yp051iDPcFKimDhfAu1zVyiVE9llNj3tP6d9gukUNfGZ5CvFmEXcheHB8t81Z2tgeO70EELFUn7uqKJwh5xCqTeogPtsifmCjgx8Yo6hi19vl2TDAaX0HquFO3WcIAL185tzYZ5rU23BYwxD7hVfan7lngSVq614MsEB3EX9WiHRoissSSajNkKTlTW8zsNj3VlUXKMQiJ2aA9Pi+/Yt9sNAbmyTl6T5TNN4QSquLPLyxO4p+OIjra1WPdmVsCti7fOyGirogfJF0XhZg4imvGXK0c6lPZIlg/OEnoDSTiHXlOYpSgaEw1Js5HZ+390XY0KYPtpsZlY+oeVS4p29HN7x3CEairuIldEsZrk4whiVcwzlnmw3n8wiewumus4eRh9w0CIwJELKeMiz5cX4bX8+AKS+u8O1W0GwKlEGTj/joA/M=', |
274 | version: '0.3', | 274 | version: '0.3', |
275 | previousVersion: 'dac2ca240227fdf7a08fedbc998c49ee7b6fd622bb8404e804c5dc7f439bf8fd', | 275 | previousVersion: 'dac2ca240227fdf7a08fedbc998c49ee7b6fd622bb8404e804c5dc7f439bf8fd', |
276 | previousVersionKey: 'moIwxP20kmN6f/+pgb8pJNqsLUz8Qo2BvcAFnXBmiX2E4oL1pakM9iq0e3IAiNLApmID2TwyAxhsmKj422R9uWXsUFd84LRRt6lMKa3/u1dC1w==', | 276 | previousVersionKey: 'moIwxP20kmN6f/+pgb8pJNqsLUz8Qo2BvcAFnXBmiX2E4oL1pakM9iq0e3IAiNLApmID2TwyAxhsmKj422R9uWXsUFd84LRRt6lMKa3/u1dC1w==', |
277 | creationDate: 'Sun Oct 04 14:05:10 PDT 2009', | 277 | creationDate: 'Sun Oct 04 14:05:10 PDT 2009', |
278 | updateDate: 'Sun Oct 04 14:05:10 PDT 2009', | 278 | updateDate: 'Sun Oct 04 14:05:10 PDT 2009', |
279 | accessDate: 'Fri Oct 30 10:52:36 PDT 2009' | 279 | accessDate: 'Fri Oct 30 10:52:36 PDT 2009' |
280 | }, | 280 | }, |
281 | '1f1bdb7a21440ac20c6d913d676aa30dc360252d27059e77df51a1be36b2e263': { | 281 | '1f1bdb7a21440ac20c6d913d676aa30dc360252d27059e77df51a1be36b2e263': { |
282 | header: '####', | 282 | header: '####', |
283 | data: 'TaOHH6IoHPKLLoyLyvsBszgsPPcDs6CiLVXzXuXjFSTrhPxzUw9suSsisgDRRs0ncjZ6BCyqoCxMnw6QVvGN4viUwYVR8AWdCg0NMQZ+LkNfq/2WN0M3KyASI8sIdMCwTb57NzOn9soB1HmmmETZfjr7HpY2cc+lS5/4f5rxI8XTEK60lLed+aEuJamAjeZUdgIyu30mMKKjxPfY3Y9iWMwn1OD0zF0mAW+hyEoMhhK7EYlWKCy+4qN0QM+yNFXQyERb04o2n4XrM+qr9df1GtbQMH8igK5VzXIrKjdHjKoLo9G7D7mfx6mRLsmoAJuE0R8gyzotgdBpOgWasHJ82iWEa1dLRKBHJ1d0Lnumv22tvYfasx2DIR5Tmx3kIQ3hFieLSXq48cYMiaZH/IbLiapIOlMgtWDow8JuySBLei/8FAV8jCxSc1Ui/SjbuK/kCvywaSOhDVIxGw==', | 283 | data: 'TaOHH6IoHPKLLoyLyvsBszgsPPcDs6CiLVXzXuXjFSTrhPxzUw9suSsisgDRRs0ncjZ6BCyqoCxMnw6QVvGN4viUwYVR8AWdCg0NMQZ+LkNfq/2WN0M3KyASI8sIdMCwTb57NzOn9soB1HmmmETZfjr7HpY2cc+lS5/4f5rxI8XTEK60lLed+aEuJamAjeZUdgIyu30mMKKjxPfY3Y9iWMwn1OD0zF0mAW+hyEoMhhK7EYlWKCy+4qN0QM+yNFXQyERb04o2n4XrM+qr9df1GtbQMH8igK5VzXIrKjdHjKoLo9G7D7mfx6mRLsmoAJuE0R8gyzotgdBpOgWasHJ82iWEa1dLRKBHJ1d0Lnumv22tvYfasx2DIR5Tmx3kIQ3hFieLSXq48cYMiaZH/IbLiapIOlMgtWDow8JuySBLei/8FAV8jCxSc1Ui/SjbuK/kCvywaSOhDVIxGw==', |
284 | version: '0.2', | 284 | version: '0.2', |
285 | creationDate: 'Wed Mar 14 07:26:35 PDT 2007', | 285 | creationDate: 'Wed Mar 14 07:26:35 PDT 2007', |
286 | updateDate: 'Wed Mar 14 07:26:35 PDT 2007', | 286 | updateDate: 'Wed Mar 14 07:26:35 PDT 2007', |
287 | accessDate: 'Wed Mar 14 07:26:35 PDT 2007' | 287 | accessDate: 'Wed Mar 14 07:26:35 PDT 2007' |
288 | }, | 288 | }, |
289 | '30cd48ae2101c0005fdbb57917031ef36c2e5681890f212a95a2863463369043': { | 289 | '30cd48ae2101c0005fdbb57917031ef36c2e5681890f212a95a2863463369043': { |
290 | header: '####', | 290 | header: '####', |
291 | data: 'jt/CbXS+TEjH/jPrstH7cQZGK3yse470grrhdAOdWoGVtFMmL7fMJZQOKm5IQSrMHFEsH3PoSs99Rr4ui/u71vUb6s/TIsjyv7yihnCYVsOEJOPcnL2wynciILV8p48Lky1wGztW+oSynYOG0CGYDofFhF/MNCBsG1EcTqW7Cf+8rUiS4nA4ZRZVv3HsZp6rCabJsAoK1pmf5tXGJHPjS6xdy1A9ea4bV5Gad0pu8IXvjbZTrDymHem0t8C+oZ7uJ/mG9cFVcNykXoO/TDP0goD6KvTqtdY3VWNNTAERycAW6jFtdMv2W/AFNmnYatZ+EbSbj6/RyGaNnRv/ceBitMh73HRr1EVtZw0wPthMBXwnlPbpkfUwWPBHYpwImligm62/6YBhxDgnMZta7TSi8apT', | 291 | data: 'jt/CbXS+TEjH/jPrstH7cQZGK3yse470grrhdAOdWoGVtFMmL7fMJZQOKm5IQSrMHFEsH3PoSs99Rr4ui/u71vUb6s/TIsjyv7yihnCYVsOEJOPcnL2wynciILV8p48Lky1wGztW+oSynYOG0CGYDofFhF/MNCBsG1EcTqW7Cf+8rUiS4nA4ZRZVv3HsZp6rCabJsAoK1pmf5tXGJHPjS6xdy1A9ea4bV5Gad0pu8IXvjbZTrDymHem0t8C+oZ7uJ/mG9cFVcNykXoO/TDP0goD6KvTqtdY3VWNNTAERycAW6jFtdMv2W/AFNmnYatZ+EbSbj6/RyGaNnRv/ceBitMh73HRr1EVtZw0wPthMBXwnlPbpkfUwWPBHYpwImligm62/6YBhxDgnMZta7TSi8apT', |
292 | version: '0.3', | 292 | version: '0.3', |
293 | previousVersion: 'cd3479e91eedabe34a1b76f0f26c69d7612672281bcf5d682a787a48caa66521', | 293 | previousVersion: 'cd3479e91eedabe34a1b76f0f26c69d7612672281bcf5d682a787a48caa66521', |
294 | previousVersionKey: '8BbhE8C41VX8B8m3TbfLz4bgSfE01IAUl8Zlu2YFdEhpw1erqInN1eRE6WLyBB5MxckmJpbn6VSizqbFbi/3Id5p/fibHKmbmNp6xu7iIo5zzA==', | 294 | previousVersionKey: '8BbhE8C41VX8B8m3TbfLz4bgSfE01IAUl8Zlu2YFdEhpw1erqInN1eRE6WLyBB5MxckmJpbn6VSizqbFbi/3Id5p/fibHKmbmNp6xu7iIo5zzA==', |
295 | creationDate: 'Fri May 22 03:30:43 PDT 2009', | 295 | creationDate: 'Fri May 22 03:30:43 PDT 2009', |
296 | updateDate: 'Fri May 22 03:30:43 PDT 2009', | 296 | updateDate: 'Fri May 22 03:30:43 PDT 2009', |
297 | accessDate: 'Fri May 22 03:31:39 PDT 2009' | 297 | accessDate: 'Fri May 22 03:31:39 PDT 2009' |
298 | }, | 298 | }, |
299 | '6ca08e08104f73943447eba327c8d0bdab3ab9a01fabec1bd4734b52034a9544': { | 299 | '6ca08e08104f73943447eba327c8d0bdab3ab9a01fabec1bd4734b52034a9544': { |
300 | header: '####', | 300 | header: '####', |
301 | data: 'XKsPGp4MeuvDrgikcjbMnmw/Gz74sTfyP3lLylbrtEZJ3aGSjRvE7s9o3Ya9GKRhYxNQ0dXT0vM6xIE6r/dMt8PwU+/5dNtRhCGPAHvKmEEGb6EBwR7gUDxQLyFTAYX8ut+CpyNJLQa2pHoEl5aNUTjk6blYrKp0GHKt2Q3PZrjIn78rcOLcKY5bx4OK0h9rN0G8mOFQ0g29knKyaykv8dja/Uy5XBeshKnVT7YRHk1nRuwz69ZcX+1Z2qzfw5sxJx+fDK+otWVpjzDP02qqn7ju/r3GgSnW8p/ghBeurUCLdQiS+fFAevhOwCkZGjPMntG3Q4qVt42VxIiiuvfShdaSsNMOW9Uziew3XwOYL9mNIOSdPSjtry4sKrAh3XNmfuJjWTy+69Iyi85CtQ6xMFilANgSBfTqThUePCrEkv9ZBbvpRovuuljlxqZ3gUmtvwy9a3ACAr8SMGWX0ydQjKyvZhoGRCBM+ZC7zCe/JmIpdklvNd/+HqUgS2iAnf3CeH4gUPQVizFR04Ysgj00xO6v4bdY2bYVKIxunygBGNzySi8DeSREu/rUKWgx0KY7S+Gg/jqFMYpE9oy8CxUCmSLeNrnxUgprPqKrr72yue0kBGVoYyJwhXo4MG+LPV0rtVp8b2GeHE9fYmyEZO2Ke93SrHjezS6CnWQsvjYsFYCLdLtEGwo3mpS46DF69LlO53k=', | 301 | data: 'XKsPGp4MeuvDrgikcjbMnmw/Gz74sTfyP3lLylbrtEZJ3aGSjRvE7s9o3Ya9GKRhYxNQ0dXT0vM6xIE6r/dMt8PwU+/5dNtRhCGPAHvKmEEGb6EBwR7gUDxQLyFTAYX8ut+CpyNJLQa2pHoEl5aNUTjk6blYrKp0GHKt2Q3PZrjIn78rcOLcKY5bx4OK0h9rN0G8mOFQ0g29knKyaykv8dja/Uy5XBeshKnVT7YRHk1nRuwz69ZcX+1Z2qzfw5sxJx+fDK+otWVpjzDP02qqn7ju/r3GgSnW8p/ghBeurUCLdQiS+fFAevhOwCkZGjPMntG3Q4qVt42VxIiiuvfShdaSsNMOW9Uziew3XwOYL9mNIOSdPSjtry4sKrAh3XNmfuJjWTy+69Iyi85CtQ6xMFilANgSBfTqThUePCrEkv9ZBbvpRovuuljlxqZ3gUmtvwy9a3ACAr8SMGWX0ydQjKyvZhoGRCBM+ZC7zCe/JmIpdklvNd/+HqUgS2iAnf3CeH4gUPQVizFR04Ysgj00xO6v4bdY2bYVKIxunygBGNzySi8DeSREu/rUKWgx0KY7S+Gg/jqFMYpE9oy8CxUCmSLeNrnxUgprPqKrr72yue0kBGVoYyJwhXo4MG+LPV0rtVp8b2GeHE9fYmyEZO2Ke93SrHjezS6CnWQsvjYsFYCLdLtEGwo3mpS46DF69LlO53k=', |
302 | version: '0.3', | 302 | version: '0.3', |
303 | previousVersion: '7c80cac9c8b9b5f0f533dd3852d89d6be07963eebfbd2081f2ad6d2f2a06b447', | 303 | previousVersion: '7c80cac9c8b9b5f0f533dd3852d89d6be07963eebfbd2081f2ad6d2f2a06b447', |
304 | previousVersionKey: 'eEvij0YZ1r+5cNNpleVHE+kjCZlSggZuE+3Kum9b/11JGHTgQ3bY/o5amM+4+FPaiCU0Zd6MWFAI4dPscyvAS9in6WdTOm7z3fQ3uqYAtHghPw==', | 304 | previousVersionKey: 'eEvij0YZ1r+5cNNpleVHE+kjCZlSggZuE+3Kum9b/11JGHTgQ3bY/o5amM+4+FPaiCU0Zd6MWFAI4dPscyvAS9in6WdTOm7z3fQ3uqYAtHghPw==', |
305 | creationDate: 'Fri Sep 11 05:54:01 PDT 2009', | 305 | creationDate: 'Fri Sep 11 05:54:01 PDT 2009', |
306 | updateDate: 'Fri Sep 11 05:54:01 PDT 2009', | 306 | updateDate: 'Fri Sep 11 05:54:01 PDT 2009', |
307 | accessDate: 'Fri Sep 11 05:54:01 PDT 2009' | 307 | accessDate: 'Fri Sep 11 05:54:01 PDT 2009' |
308 | }, | 308 | }, |
309 | '70720f026f37b571e9765d27c51d3d60c7be0293c3266f1f987c8de9c6b5c416': { | 309 | '70720f026f37b571e9765d27c51d3d60c7be0293c3266f1f987c8de9c6b5c416': { |
310 | header: '####', | 310 | header: '####', |
311 | data: 'NYaYljcgfzrlN1DVgrbyj4AeVhXGjXPho3IQwEKD3ZOx/yEZxldCNSyFsrk7PoRB8Q1T/6VV4CGa4HLRSB7QVCrtVqWyu4KbbmFoX8NIQ0H3xv+TSo3S/b3dldUeyW32ScaGbspaf8nFf0CffsgpGusd+kHdiE3gSLJvH9y5j47KgpyyX4TteVzqgez4dcXIs5tdzJq2eUlknwU4651QeKIuRSmRaDRhhOP4yRgUo/qXMlTJFmHviCh+IumvBdmDoPe3Vc1vZ1r8PxpDJLvDoB8GTDE42NhqHfVrew9ym1xlTD9wswwIEikfOyTq3JM857qPOHRqSqthEvr4WHbm1VW5PReIyse0lugGyOzqtCnADp9NvNI440VjaTd4NBQqF7XrRm56+1u1uTdfYGFV5BRiH1KmrM1sxXQ6PlOF9Lou45ALo20xxvJOLKG0RKLMr8gmVT2bNtOSJw==', | 311 | data: 'NYaYljcgfzrlN1DVgrbyj4AeVhXGjXPho3IQwEKD3ZOx/yEZxldCNSyFsrk7PoRB8Q1T/6VV4CGa4HLRSB7QVCrtVqWyu4KbbmFoX8NIQ0H3xv+TSo3S/b3dldUeyW32ScaGbspaf8nFf0CffsgpGusd+kHdiE3gSLJvH9y5j47KgpyyX4TteVzqgez4dcXIs5tdzJq2eUlknwU4651QeKIuRSmRaDRhhOP4yRgUo/qXMlTJFmHviCh+IumvBdmDoPe3Vc1vZ1r8PxpDJLvDoB8GTDE42NhqHfVrew9ym1xlTD9wswwIEikfOyTq3JM857qPOHRqSqthEvr4WHbm1VW5PReIyse0lugGyOzqtCnADp9NvNI440VjaTd4NBQqF7XrRm56+1u1uTdfYGFV5BRiH1KmrM1sxXQ6PlOF9Lou45ALo20xxvJOLKG0RKLMr8gmVT2bNtOSJw==', |
312 | version: '0.2', | 312 | version: '0.2', |
313 | creationDate: 'Wed Mar 14 07:30:09 PDT 2007', | 313 | creationDate: 'Wed Mar 14 07:30:09 PDT 2007', |
314 | updateDate: 'Wed Mar 14 07:30:09 PDT 2007', | 314 | updateDate: 'Wed Mar 14 07:30:09 PDT 2007', |
315 | accessDate: 'Wed Mar 14 07:30:09 PDT 2007' | 315 | accessDate: 'Wed Mar 14 07:30:09 PDT 2007' |
316 | }, | 316 | }, |
317 | '739b67f6c1d52093f5c2153b406df90cd8ebf303ddd0d13d825fc946306114d7': { | 317 | '739b67f6c1d52093f5c2153b406df90cd8ebf303ddd0d13d825fc946306114d7': { |
318 | header: '####', | 318 | header: '####', |
319 | data: 't4ohy1/z6oUzyQLtqQoumRzcLCnaYjL/+WQGwE6yIXaGEhCWywe0aIVusPKLcsfYTCXVU1/dXtuucaZoMw7PMSOUx9awTp14NmShaT/9VKChZf1TLi0CO2jOUGsvO4DHlNAQhJhas431l83F+h5+hrkqX8j5kIhzpwlroGEjkml0fswmmwDyHbSTgVEyErZc+b3V+9oUCwzYvd9ITHh8uWLa6j+GuwZTZAk2FY7Vzoh9K46WO3/qCz1pJ8JVkcffun9alK8qzK0Wp05mMLIrt+WHFFTKrG9zpBkcswkbwhJ5ZnakfYLJ8GPH7fKnAid1FGW0Owms058smDBmFO20HyH+ho7SL80Q689W+Jx0+nkUKvxWtq9BWLW6Z3ClDZOVITeg35gQVr6aRzZ+VZwbAy++', | 319 | data: 't4ohy1/z6oUzyQLtqQoumRzcLCnaYjL/+WQGwE6yIXaGEhCWywe0aIVusPKLcsfYTCXVU1/dXtuucaZoMw7PMSOUx9awTp14NmShaT/9VKChZf1TLi0CO2jOUGsvO4DHlNAQhJhas431l83F+h5+hrkqX8j5kIhzpwlroGEjkml0fswmmwDyHbSTgVEyErZc+b3V+9oUCwzYvd9ITHh8uWLa6j+GuwZTZAk2FY7Vzoh9K46WO3/qCz1pJ8JVkcffun9alK8qzK0Wp05mMLIrt+WHFFTKrG9zpBkcswkbwhJ5ZnakfYLJ8GPH7fKnAid1FGW0Owms058smDBmFO20HyH+ho7SL80Q689W+Jx0+nkUKvxWtq9BWLW6Z3ClDZOVITeg35gQVr6aRzZ+VZwbAy++', |
320 | version: '0.3', | 320 | version: '0.3', |
321 | previousVersion: '30cd48ae2101c0005fdbb57917031ef36c2e5681890f212a95a2863463369043', | 321 | previousVersion: '30cd48ae2101c0005fdbb57917031ef36c2e5681890f212a95a2863463369043', |
322 | previousVersionKey: 'i4e0h4QhuN0B39drNLsOWruy+R64siKHWxc9YXgpoCPitWL/ika1MVCRX7CJC7lH5WD9yzx6l9isAy/Hb3nUIEp97VcFKG4S0gOaZkdWNZ/U5Q==', | 322 | previousVersionKey: 'i4e0h4QhuN0B39drNLsOWruy+R64siKHWxc9YXgpoCPitWL/ika1MVCRX7CJC7lH5WD9yzx6l9isAy/Hb3nUIEp97VcFKG4S0gOaZkdWNZ/U5Q==', |
323 | creationDate: 'Fri May 22 03:31:46 PDT 2009', | 323 | creationDate: 'Fri May 22 03:31:46 PDT 2009', |
324 | updateDate: 'Fri May 22 03:31:46 PDT 2009', | 324 | updateDate: 'Fri May 22 03:31:46 PDT 2009', |
325 | accessDate: 'Mon Jun 15 15:20:17 PDT 2009' | 325 | accessDate: 'Mon Jun 15 15:20:17 PDT 2009' |
326 | }, | 326 | }, |
327 | '7c80cac9c8b9b5f0f533dd3852d89d6be07963eebfbd2081f2ad6d2f2a06b447': { | 327 | '7c80cac9c8b9b5f0f533dd3852d89d6be07963eebfbd2081f2ad6d2f2a06b447': { |
328 | header: '####', | 328 | header: '####', |
329 | data: 'LDAixBQ/CEqQX35jio3aAXG+Py4wNylXI1mQJ5IDxnpqmkFZfOXCaScpwIkQwQzEOjh9p3cOShzrBm6r234HKxgg0ufFnkTWbQSjCgekfVEqiBFi2rWSj5v6a5LMANLwtCz0b2IPr6Z8LSPddgao7P0nwBdCiKJAnY/uGdvSn67WSFhAUGAIs5ZKIZQf8Zi+cA3hd+Xlv1W/2+OXLaIPTkD1bCuQo5qEiAoOl5mXngWOmQ2kTGpC7Hfkknm/uzDeiZTe8VpGjqKTwB/tl64LU5OD26DMpihnVeQNqMpYndEJO7Yu9Zodv8WMyYmVlrw1UzTB4BLTL337vVm5uBiUjAfJIwJx3b3fXxdEiWFuK8uwOXAO2X9OOKfLPuowOj21B/+zRLum3Dti23IfHab5KwSq72sB/vjpl/KVbcGsWZET4VTCZvO04T6Emjb2UBLFLIgInZ9tqN4RXSKz0Uj4n+pitmFSDleuPtL8EzEESX6FtmT/IVdr5AGNjv93wIk5CgeoK2YiNlpTb+CHbcA5HPn+TH9T4999mWrJh5hxZ1vGYxlAd1AveMCgA3y/Wl+kZKMnUatXPM0deUS1GnzpoRXtI0dUi6J5sOHxeahZL0TQbCbHcKkoaSJklMl5YEVaLXyakO4ATKyNcsPfDQrPvWfra1I59RI3seStv2Q0bs14Zco+0opvKN71R/HxjF/etUU=', | 329 | data: 'LDAixBQ/CEqQX35jio3aAXG+Py4wNylXI1mQJ5IDxnpqmkFZfOXCaScpwIkQwQzEOjh9p3cOShzrBm6r234HKxgg0ufFnkTWbQSjCgekfVEqiBFi2rWSj5v6a5LMANLwtCz0b2IPr6Z8LSPddgao7P0nwBdCiKJAnY/uGdvSn67WSFhAUGAIs5ZKIZQf8Zi+cA3hd+Xlv1W/2+OXLaIPTkD1bCuQo5qEiAoOl5mXngWOmQ2kTGpC7Hfkknm/uzDeiZTe8VpGjqKTwB/tl64LU5OD26DMpihnVeQNqMpYndEJO7Yu9Zodv8WMyYmVlrw1UzTB4BLTL337vVm5uBiUjAfJIwJx3b3fXxdEiWFuK8uwOXAO2X9OOKfLPuowOj21B/+zRLum3Dti23IfHab5KwSq72sB/vjpl/KVbcGsWZET4VTCZvO04T6Emjb2UBLFLIgInZ9tqN4RXSKz0Uj4n+pitmFSDleuPtL8EzEESX6FtmT/IVdr5AGNjv93wIk5CgeoK2YiNlpTb+CHbcA5HPn+TH9T4999mWrJh5hxZ1vGYxlAd1AveMCgA3y/Wl+kZKMnUatXPM0deUS1GnzpoRXtI0dUi6J5sOHxeahZL0TQbCbHcKkoaSJklMl5YEVaLXyakO4ATKyNcsPfDQrPvWfra1I59RI3seStv2Q0bs14Zco+0opvKN71R/HxjF/etUU=', |
330 | version: '0.3', | 330 | version: '0.3', |
331 | previousVersion: 'f8ffcda2eddd2f6d19c4be17f6f509f1f66fc5d4bff362f402c6addaeb9cf32b', | 331 | previousVersion: 'f8ffcda2eddd2f6d19c4be17f6f509f1f66fc5d4bff362f402c6addaeb9cf32b', |
332 | previousVersionKey: '3JAEXzigeX/PwpA42+K/CPSpP40EO/j++M6pB0NF71EfKCApWSWy89flo0KbrckF+mUAjyY2hLYBc/F+Q2vgGNhAZqq0vo3wcUpFjFktqgRZ4A==', | 332 | previousVersionKey: '3JAEXzigeX/PwpA42+K/CPSpP40EO/j++M6pB0NF71EfKCApWSWy89flo0KbrckF+mUAjyY2hLYBc/F+Q2vgGNhAZqq0vo3wcUpFjFktqgRZ4A==', |
333 | creationDate: 'Mon Jun 15 15:21:15 PDT 2009', | 333 | creationDate: 'Mon Jun 15 15:21:15 PDT 2009', |
334 | updateDate: 'Mon Jun 15 15:21:15 PDT 2009', | 334 | updateDate: 'Mon Jun 15 15:21:15 PDT 2009', |
335 | accessDate: 'Fri Sep 11 05:53:23 PDT 2009' | 335 | accessDate: 'Fri Sep 11 05:53:23 PDT 2009' |
336 | }, | 336 | }, |
337 | '88943d709c3ea2442d4f58eaaec6409276037e5a37e0a6d167b9dad9e947e854': { | 337 | '88943d709c3ea2442d4f58eaaec6409276037e5a37e0a6d167b9dad9e947e854': { |
338 | header: '####', | 338 | header: '####', |
339 | data: 'xI3WXddQLFtLVzxJaZWQaw8wAgSuXLjLnyoNXnFuLecTH0BzU36PatglVh2HK3LM8aDLzzbHILdlLNnJ9CY+YnhmGh8hswF9oKTgq0Wsesgdc20QhSMNFFjmMljY1LSXmcAYK04Q5mIzi6Pe/04DRdj+e4zbe5QI4vEBhp/ohEpxZnNqc4BoX6J0eVf6LA1pwrKWvxzMxorWsJrrr+mn3svdlF437n+MMr89k5sQJogufes2GZ9tTvVZ4247ITxXqxgAhwXtbuIs/A5UqqnNdsxlHfpLKG5KjxB6F0h7TtFA3gkZCve5UmAibBnoBCFaIVWQyVq+VO9iqDm3DeXsK2pepvgIvpSID8Poy+uwN7T95mivAsHG5p7MtgN9KwQzNW3Iu+BfO9FlPBMngSk8L29So2CIXe6lEsXSGEi5Yrgyo6hZi6IkGCXwIQ7TCEMnlQEGyKnnAVik', | 339 | data: 'xI3WXddQLFtLVzxJaZWQaw8wAgSuXLjLnyoNXnFuLecTH0BzU36PatglVh2HK3LM8aDLzzbHILdlLNnJ9CY+YnhmGh8hswF9oKTgq0Wsesgdc20QhSMNFFjmMljY1LSXmcAYK04Q5mIzi6Pe/04DRdj+e4zbe5QI4vEBhp/ohEpxZnNqc4BoX6J0eVf6LA1pwrKWvxzMxorWsJrrr+mn3svdlF437n+MMr89k5sQJogufes2GZ9tTvVZ4247ITxXqxgAhwXtbuIs/A5UqqnNdsxlHfpLKG5KjxB6F0h7TtFA3gkZCve5UmAibBnoBCFaIVWQyVq+VO9iqDm3DeXsK2pepvgIvpSID8Poy+uwN7T95mivAsHG5p7MtgN9KwQzNW3Iu+BfO9FlPBMngSk8L29So2CIXe6lEsXSGEi5Yrgyo6hZi6IkGCXwIQ7TCEMnlQEGyKnnAVik', |
340 | version: '0.2', | 340 | version: '0.2', |
341 | creationDate: 'Tue Apr 17 10:17:52 PDT 2007', | 341 | creationDate: 'Tue Apr 17 10:17:52 PDT 2007', |
342 | updateDate: 'Tue Apr 17 10:17:52 PDT 2007', | 342 | updateDate: 'Tue Apr 17 10:17:52 PDT 2007', |
343 | accessDate: 'Fri May 22 03:27:59 PDT 2009' | 343 | accessDate: 'Fri May 22 03:27:59 PDT 2009' |
344 | }, | 344 | }, |
345 | '933abcdd036332b566a70beba4ae486123475dad2903b00a939c067c34a074f5': { | 345 | '933abcdd036332b566a70beba4ae486123475dad2903b00a939c067c34a074f5': { |
346 | header: '####', | 346 | header: '####', |
347 | data: '8mmpKGrkSqiLyreEtGdKN9EXeb47uEN+XkSXEhdIxkMkmvR0A/AGtKjG1o6bbSXfPzAtfrMfJJxwyhWcRVqcikzc0KwINua4X+1Grf7QG2IOYYFqujmLyCwClGSRaannCAbio7+YI2PlDrlMrwB38RvMde6zrMfZzl2O75nkVX3DH+5IHJpwwYeukTSAu5EQR17oed+xoSHkKCQG3ToTsbnGPwZSGM0D+aiTXVW+PJD8D8LvDEU8i3EHQ9E02+d3dKPV/3FGRDgvwLIIjHU0qX5khYJ9PjqSgAxOhRKFwnG1kJn6NG1rvsXYgefJORElib/xijoCM9EJkUZ9e340WwhfZa1GbV7gLEbVn2aeaLcaTjhtPz9pL9WQOklChvdi/0XaHRrgflHogqC0qUQ63lA2CFOXwR9EXspZIi+zLzgAaEMGN0NlnbGHjAiVz6SVU/RUkh3DkKmMuGNS1n93spVbMMLZgcT5zxBFzT6jARvC8qKaxe9UlbMIH8ZCXMrq26V/sEZrxmPT3FZB+dmmqA9lLEBFEcw927uu1U3kZwXhQArQCN3MbEQ=', | 347 | data: '8mmpKGrkSqiLyreEtGdKN9EXeb47uEN+XkSXEhdIxkMkmvR0A/AGtKjG1o6bbSXfPzAtfrMfJJxwyhWcRVqcikzc0KwINua4X+1Grf7QG2IOYYFqujmLyCwClGSRaannCAbio7+YI2PlDrlMrwB38RvMde6zrMfZzl2O75nkVX3DH+5IHJpwwYeukTSAu5EQR17oed+xoSHkKCQG3ToTsbnGPwZSGM0D+aiTXVW+PJD8D8LvDEU8i3EHQ9E02+d3dKPV/3FGRDgvwLIIjHU0qX5khYJ9PjqSgAxOhRKFwnG1kJn6NG1rvsXYgefJORElib/xijoCM9EJkUZ9e340WwhfZa1GbV7gLEbVn2aeaLcaTjhtPz9pL9WQOklChvdi/0XaHRrgflHogqC0qUQ63lA2CFOXwR9EXspZIi+zLzgAaEMGN0NlnbGHjAiVz6SVU/RUkh3DkKmMuGNS1n93spVbMMLZgcT5zxBFzT6jARvC8qKaxe9UlbMIH8ZCXMrq26V/sEZrxmPT3FZB+dmmqA9lLEBFEcw927uu1U3kZwXhQArQCN3MbEQ=', |
348 | version: '0.3', | 348 | version: '0.3', |
349 | previousVersion: '1ae171ac58981896484c222ab42373b0b6bc3d054dd56faebdc9018f3abbf549', | 349 | previousVersion: '1ae171ac58981896484c222ab42373b0b6bc3d054dd56faebdc9018f3abbf549', |
350 | previousVersionKey: 'gxQ13UMdZF0F7chGySUkuhxxSJ7CU2wubdG0tijs2G9uxYEY6ADjVX6zi3nrft7ggnLM8LyuFtZqj1wMX3pMUsbxZq0v2vfpVaYZ9cN1pahwMQ==', | 350 | previousVersionKey: 'gxQ13UMdZF0F7chGySUkuhxxSJ7CU2wubdG0tijs2G9uxYEY6ADjVX6zi3nrft7ggnLM8LyuFtZqj1wMX3pMUsbxZq0v2vfpVaYZ9cN1pahwMQ==', |
351 | creationDate: 'Fri Oct 30 10:52:54 PDT 2009', | 351 | creationDate: 'Fri Oct 30 10:52:54 PDT 2009', |
352 | updateDate: 'Fri Oct 30 10:52:54 PDT 2009', | 352 | updateDate: 'Fri Oct 30 10:52:54 PDT 2009', |
353 | accessDate: 'Sat Jan 23 02:24:21 PST 2010' | 353 | accessDate: 'Sat Jan 23 02:24:21 PST 2010' |
354 | }, | 354 | }, |
355 | '9588b523f39cdfc14efa1e15ea7716c2d8eac45d8efd7bfeb19d716f9df72d66': { | 355 | '9588b523f39cdfc14efa1e15ea7716c2d8eac45d8efd7bfeb19d716f9df72d66': { |
356 | header: '####', | 356 | header: '####', |
357 | data: 'q6DKkxhgDFs1XkqOYf6dvojPF+yhJbniTLFpSOS+I1sum3EZIJfYxJXyi2Jx3KOVNBMILw1+vrSLe/fh5SSWj8ZBoeppkPPLjyRNdiUyd4IfcRM5OSv2YcTxCubKCH2kIMFAzY/29A6ZGPG+AN8/kxkEHc1fxKaNcj2Cs8qejNR8yK1iKT1Ut9VfEee+Eqy2Ohgdq8wL/xAD5mUzdqHeQl8BY16pXGIYncLxMzR+EJ8E5jJTuGv3O41UbO31lvBSfCt2pfz2MrtsuqNoI8LBHJkcR6t17Bj+rHZUniHlyxSW/1rQJ1NnwpPgUJ1fhfQJZM8Faoif+0bvWFY4xWs/tCCD7oEvf0xM0I3FfcJLbYX8M+wyO08t9BmGdEjnr3VUcuS9qKaJRpdpMP7aQf+vJvioeQDXdOJ6Ceo3BDFc6JdNta1Qc+agGzN2KPbIPrLDL+08hWl61yu3GQ==', | 357 | data: 'q6DKkxhgDFs1XkqOYf6dvojPF+yhJbniTLFpSOS+I1sum3EZIJfYxJXyi2Jx3KOVNBMILw1+vrSLe/fh5SSWj8ZBoeppkPPLjyRNdiUyd4IfcRM5OSv2YcTxCubKCH2kIMFAzY/29A6ZGPG+AN8/kxkEHc1fxKaNcj2Cs8qejNR8yK1iKT1Ut9VfEee+Eqy2Ohgdq8wL/xAD5mUzdqHeQl8BY16pXGIYncLxMzR+EJ8E5jJTuGv3O41UbO31lvBSfCt2pfz2MrtsuqNoI8LBHJkcR6t17Bj+rHZUniHlyxSW/1rQJ1NnwpPgUJ1fhfQJZM8Faoif+0bvWFY4xWs/tCCD7oEvf0xM0I3FfcJLbYX8M+wyO08t9BmGdEjnr3VUcuS9qKaJRpdpMP7aQf+vJvioeQDXdOJ6Ceo3BDFc6JdNta1Qc+agGzN2KPbIPrLDL+08hWl61yu3GQ==', |
358 | version: '0.2', | 358 | version: '0.2', |
359 | creationDate: 'Wed Mar 14 07:27:35 PDT 2007', | 359 | creationDate: 'Wed Mar 14 07:27:35 PDT 2007', |
360 | updateDate: 'Wed Mar 14 07:27:35 PDT 2007', | 360 | updateDate: 'Wed Mar 14 07:27:35 PDT 2007', |
361 | accessDate: 'Wed Mar 14 07:27:35 PDT 2007' | 361 | accessDate: 'Wed Mar 14 07:27:35 PDT 2007' |
362 | }, | 362 | }, |
363 | 'c7add675f676c4615a2849d5017ac8db9066265253ffe7e03b34ab8260b10888': { | 363 | 'c7add675f676c4615a2849d5017ac8db9066265253ffe7e03b34ab8260b10888': { |
364 | header: '####', | 364 | header: '####', |
365 | data: 'ZRJXJ72ZBH01gAML0R7n42fI0WjdbVXzyZH7H5MP2RgtGuVvfdadVK9+U8mzdf1Et9DoKrHhZUp9baeREPO/Fk0r2IO8NmKv/8+rMkK6x4qeWnI8ZAJfQemGtqke/VcTn4KGAyTeV8arzXn/whsLpp/xN087NdDw9dP8PLb43Yk8TNC1m2d85FUagSh4NOI3rmcbHAiCOQpqHBPBoJY1Vf4Pxu949TEUm6kT6Rl0n/sb3PSLu4LSa6+WiGZJ4mgE+3XZyfozrJsvGoTYSkim3MTwhrCLEVaDMTq4Ei6FyG+TeV95Q9Ei8HHwBqdp0fxUxavNe67Oo4m+ECiRvZ24b5+Nz6POBjXfn+61yCyIhz3SV3IaYIF3rgXRZA1q2sax8kRGtoG7ONxczUqGyQ5S6Lht', | 365 | data: 'ZRJXJ72ZBH01gAML0R7n42fI0WjdbVXzyZH7H5MP2RgtGuVvfdadVK9+U8mzdf1Et9DoKrHhZUp9baeREPO/Fk0r2IO8NmKv/8+rMkK6x4qeWnI8ZAJfQemGtqke/VcTn4KGAyTeV8arzXn/whsLpp/xN087NdDw9dP8PLb43Yk8TNC1m2d85FUagSh4NOI3rmcbHAiCOQpqHBPBoJY1Vf4Pxu949TEUm6kT6Rl0n/sb3PSLu4LSa6+WiGZJ4mgE+3XZyfozrJsvGoTYSkim3MTwhrCLEVaDMTq4Ei6FyG+TeV95Q9Ei8HHwBqdp0fxUxavNe67Oo4m+ECiRvZ24b5+Nz6POBjXfn+61yCyIhz3SV3IaYIF3rgXRZA1q2sax8kRGtoG7ONxczUqGyQ5S6Lht', |
366 | version: '0.3', | 366 | version: '0.3', |
367 | previousVersion: '88943d709c3ea2442d4f58eaaec6409276037e5a37e0a6d167b9dad9e947e854', | 367 | previousVersion: '88943d709c3ea2442d4f58eaaec6409276037e5a37e0a6d167b9dad9e947e854', |
368 | previousVersionKey: 'ZbGA3id5JTGeRjVUR/LkntSGjPDEbZbNrQxc4SiQDdlDO3dJNVpfRp69PSk6vqEiZ4r/6OKvE+fl2TtPadJQ82fP7WsULtrSkYryQL+CQvz0VA==', | 368 | previousVersionKey: 'ZbGA3id5JTGeRjVUR/LkntSGjPDEbZbNrQxc4SiQDdlDO3dJNVpfRp69PSk6vqEiZ4r/6OKvE+fl2TtPadJQ82fP7WsULtrSkYryQL+CQvz0VA==', |
369 | creationDate: 'Fri May 22 03:28:11 PDT 2009', | 369 | creationDate: 'Fri May 22 03:28:11 PDT 2009', |
370 | updateDate: 'Fri May 22 03:28:11 PDT 2009', | 370 | updateDate: 'Fri May 22 03:28:11 PDT 2009', |
371 | accessDate: 'Fri May 22 03:29:03 PDT 2009' | 371 | accessDate: 'Fri May 22 03:29:03 PDT 2009' |
372 | }, | 372 | }, |
373 | 'cd3479e91eedabe34a1b76f0f26c69d7612672281bcf5d682a787a48caa66521': { | 373 | 'cd3479e91eedabe34a1b76f0f26c69d7612672281bcf5d682a787a48caa66521': { |
374 | header: '####', | 374 | header: '####', |
375 | data: '6TAJAQ4qE5l2SybVzeEqQxYZgVow0MKzl8xwfoE0HeuSr8uJlszGas5NaJL1SFI5sDDwIJzbtIBE/yjaNwWw18+JzswIWmkLW+kTIAtJKjNtWnaGlDJMTA4OIo5gj2Vqq4o1VngzMTk/DV6f5ob3/HxN+YpE4r1u2SUVeADbjcyjRmYE9ygvuvQ5AuU3u2hzmstI582kBlksLPGhX6nJfAPCrSkdphNj28T393p5w82/FFCFNHKjgKN/xI3Rotq7rObFaNid1tmHvozKLYeLQQfjglJ2rRDQDTOJONRVJEObDFV5bmaY4z3XljO2nbQ4iMK5CrTFAYTYNph3/WOQWjZHWmAXaHMYvBSlICvF99C530sOGQYIaBWKFuOv/pNuCZh/tBNVcI4pU1dz438/7LQf', | 375 | data: '6TAJAQ4qE5l2SybVzeEqQxYZgVow0MKzl8xwfoE0HeuSr8uJlszGas5NaJL1SFI5sDDwIJzbtIBE/yjaNwWw18+JzswIWmkLW+kTIAtJKjNtWnaGlDJMTA4OIo5gj2Vqq4o1VngzMTk/DV6f5ob3/HxN+YpE4r1u2SUVeADbjcyjRmYE9ygvuvQ5AuU3u2hzmstI582kBlksLPGhX6nJfAPCrSkdphNj28T393p5w82/FFCFNHKjgKN/xI3Rotq7rObFaNid1tmHvozKLYeLQQfjglJ2rRDQDTOJONRVJEObDFV5bmaY4z3XljO2nbQ4iMK5CrTFAYTYNph3/WOQWjZHWmAXaHMYvBSlICvF99C530sOGQYIaBWKFuOv/pNuCZh/tBNVcI4pU1dz438/7LQf', |
376 | version: '0.3', | 376 | version: '0.3', |
377 | previousVersion: 'ffb687c41ee598b30cf28525024fc18ba96b3d7998fbb298d702311f76ca2127', | 377 | previousVersion: 'ffb687c41ee598b30cf28525024fc18ba96b3d7998fbb298d702311f76ca2127', |
378 | previousVersionKey: 'U2Z+xaFl6o4XH/8DktJimjP3+1PaYRf1mZPW0sulAOykDH0LY2U+kbBj+mfNV8rVAJlA7O8LYl8AlUNZUTS+036MiIinpD0Tmhkc91rFkMYgbw==', | 378 | previousVersionKey: 'U2Z+xaFl6o4XH/8DktJimjP3+1PaYRf1mZPW0sulAOykDH0LY2U+kbBj+mfNV8rVAJlA7O8LYl8AlUNZUTS+036MiIinpD0Tmhkc91rFkMYgbw==', |
379 | creationDate: 'Fri May 22 03:30:03 PDT 2009', | 379 | creationDate: 'Fri May 22 03:30:03 PDT 2009', |
380 | updateDate: 'Fri May 22 03:30:03 PDT 2009', | 380 | updateDate: 'Fri May 22 03:30:03 PDT 2009', |
381 | accessDate: 'Fri May 22 03:30:36 PDT 2009' | 381 | accessDate: 'Fri May 22 03:30:36 PDT 2009' |
382 | }, | 382 | }, |
383 | 'dac2ca240227fdf7a08fedbc998c49ee7b6fd622bb8404e804c5dc7f439bf8fd': { | 383 | 'dac2ca240227fdf7a08fedbc998c49ee7b6fd622bb8404e804c5dc7f439bf8fd': { |
384 | header: '####', | 384 | header: '####', |
385 | data: 'zqOJI8Qken5hwXQ4MFRzfnB5tnROjMhg9mw+aYwwvI8VV8aADoyPuaRi6bdxy4LP45PqVR9G2iXFT+h/WaBql+rz1AA5AVz54cpd2gdDh8Eec/PJXyL3SfXW1PQoO3bwhW6rkR5cNQf8xKxlmGWLvE88AXT65tV/RdYJE574aVEZexzo/40X60weCl1ZITl8IH97eug5URe1lSBFsy5sjo+SE09FqtnmnGy4O2LL+0XSR7xJqiJihv80msEgk3lTbwUEiGWm3OiDnvLk0GjaMy3+EGV2/rHZuICMJkD4ge6cIBc/h00ZCFnXN4bX+OC/KpEFgtnPgQ+duVpsVNdYmNwxSavyFs/UnFFDTDIPZxEKhRHFTW9zaqu2jVTZd4+/ro6TSYSlEN6F/jtiL06nM/F14Bp/dYuqBZfc+N3vx+72jj6IOKTHtqvlj6jdSZseN8olODT2IGI/fsjR79biVCIOODAaF6DCd32ClvoenCVPTIhMc2AfuKTbleiquk95nN4lgpZbMzrrvWHPJD0oKXHo8X1GJd19QCj+IhzCTx1Ap1JPOTMIG+reaxxwicGjH5Iios5DmA4gjsRWj9BVr+QmMJmY4KTpyRG1lVYovm78VWf0nzyGLNx5sgWrRyYLOI75m0zUdNGDUpKGSyqrIuEwOrI36uRr71MvJ0ui1HXBkDbPIvrQ01UyocO1paeHyTk=', | 385 | data: 'zqOJI8Qken5hwXQ4MFRzfnB5tnROjMhg9mw+aYwwvI8VV8aADoyPuaRi6bdxy4LP45PqVR9G2iXFT+h/WaBql+rz1AA5AVz54cpd2gdDh8Eec/PJXyL3SfXW1PQoO3bwhW6rkR5cNQf8xKxlmGWLvE88AXT65tV/RdYJE574aVEZexzo/40X60weCl1ZITl8IH97eug5URe1lSBFsy5sjo+SE09FqtnmnGy4O2LL+0XSR7xJqiJihv80msEgk3lTbwUEiGWm3OiDnvLk0GjaMy3+EGV2/rHZuICMJkD4ge6cIBc/h00ZCFnXN4bX+OC/KpEFgtnPgQ+duVpsVNdYmNwxSavyFs/UnFFDTDIPZxEKhRHFTW9zaqu2jVTZd4+/ro6TSYSlEN6F/jtiL06nM/F14Bp/dYuqBZfc+N3vx+72jj6IOKTHtqvlj6jdSZseN8olODT2IGI/fsjR79biVCIOODAaF6DCd32ClvoenCVPTIhMc2AfuKTbleiquk95nN4lgpZbMzrrvWHPJD0oKXHo8X1GJd19QCj+IhzCTx1Ap1JPOTMIG+reaxxwicGjH5Iios5DmA4gjsRWj9BVr+QmMJmY4KTpyRG1lVYovm78VWf0nzyGLNx5sgWrRyYLOI75m0zUdNGDUpKGSyqrIuEwOrI36uRr71MvJ0ui1HXBkDbPIvrQ01UyocO1paeHyTk=', |
386 | version: '0.3', | 386 | version: '0.3', |
387 | previousVersion: '191d456526b14fc5b4ff11b3f856c9568562bbc68435700a2fef0d176482edda', | 387 | previousVersion: '191d456526b14fc5b4ff11b3f856c9568562bbc68435700a2fef0d176482edda', |
388 | previousVersionKey: 'zOAbF4q8A+LjWfMMXHRHH2DmzdToA6a2U12y0G6cyAm5tvz1BrrAcgk/5dx0yvFF+ZSxuOOfnvCPVBN2kT75otq44tVEg+FSJ4khcC6HThCluA==', | 388 | previousVersionKey: 'zOAbF4q8A+LjWfMMXHRHH2DmzdToA6a2U12y0G6cyAm5tvz1BrrAcgk/5dx0yvFF+ZSxuOOfnvCPVBN2kT75otq44tVEg+FSJ4khcC6HThCluA==', |
389 | creationDate: 'Fri Sep 11 05:56:02 PDT 2009', | 389 | creationDate: 'Fri Sep 11 05:56:02 PDT 2009', |
390 | updateDate: 'Fri Sep 11 05:56:02 PDT 2009', | 390 | updateDate: 'Fri Sep 11 05:56:02 PDT 2009', |
391 | accessDate: 'Sun Oct 04 14:04:58 PDT 2009' | 391 | accessDate: 'Sun Oct 04 14:04:58 PDT 2009' |
392 | }, | 392 | }, |
393 | 'e5b71df0d4d79a195c7ec3288dd7738069837a7c4da3bccc1ebc05d8e4f19d79': { | 393 | 'e5b71df0d4d79a195c7ec3288dd7738069837a7c4da3bccc1ebc05d8e4f19d79': { |
394 | header: '####', | 394 | header: '####', |
395 | data: '1NvK9Y5r0Q880BfB1W5IqdOR77mmqQU0d1GL1XUeQT75R2EgYE9rK1X1jLygCXboPhxzegEe7TDhUsn5XcHN0LkXcLYz8gD/7+He2HiTFxoHd2oQbI3ceBxDJ7+5kWA6Aiqy42QSCuA+TWIQcDVthSyFU7nNdqNxeBYeXiI4jgwcH3xvm0+pBf1OYLtywjUK1JwntP6o68b1LMQJFinDG+sqRcm25ggaZyxDtoLh1IBdSpmXk0papRnyyTGNgsws78dLxnH0Iqxb7FhqYfgLDIvN3i7+IALI0lF0EuTS0hSPlr/1fTz1/6bVt++wI9GpUsrdafUJJMPerXoCK+gAP8EMneLq4f5487HIkwWh1qON6Hvpg+tB95NOSJpqE72VpVxN4+wTQWyDMhfjqXBuQ1wKvTsD/mUsdinU0Wb/YT/zIWBNZPdqur0rjOC+mrOtSdlYSCH89Jj2', | 395 | data: '1NvK9Y5r0Q880BfB1W5IqdOR77mmqQU0d1GL1XUeQT75R2EgYE9rK1X1jLygCXboPhxzegEe7TDhUsn5XcHN0LkXcLYz8gD/7+He2HiTFxoHd2oQbI3ceBxDJ7+5kWA6Aiqy42QSCuA+TWIQcDVthSyFU7nNdqNxeBYeXiI4jgwcH3xvm0+pBf1OYLtywjUK1JwntP6o68b1LMQJFinDG+sqRcm25ggaZyxDtoLh1IBdSpmXk0papRnyyTGNgsws78dLxnH0Iqxb7FhqYfgLDIvN3i7+IALI0lF0EuTS0hSPlr/1fTz1/6bVt++wI9GpUsrdafUJJMPerXoCK+gAP8EMneLq4f5487HIkwWh1qON6Hvpg+tB95NOSJpqE72VpVxN4+wTQWyDMhfjqXBuQ1wKvTsD/mUsdinU0Wb/YT/zIWBNZPdqur0rjOC+mrOtSdlYSCH89Jj2', |
396 | version: '0.2', | 396 | version: '0.2', |
397 | creationDate: 'Tue Apr 17 10:15:09 PDT 2007', | 397 | creationDate: 'Tue Apr 17 10:15:09 PDT 2007', |
398 | updateDate: 'Tue Apr 17 10:15:09 PDT 2007', | 398 | updateDate: 'Tue Apr 17 10:15:09 PDT 2007', |
399 | accessDate: 'Tue Apr 17 10:17:01 PDT 2007' | 399 | accessDate: 'Tue Apr 17 10:17:01 PDT 2007' |
400 | }, | 400 | }, |
401 | 'f8ffcda2eddd2f6d19c4be17f6f509f1f66fc5d4bff362f402c6addaeb9cf32b': { | 401 | 'f8ffcda2eddd2f6d19c4be17f6f509f1f66fc5d4bff362f402c6addaeb9cf32b': { |
402 | header: '####', | 402 | header: '####', |
403 | data: 'Al9KSfdnvVJW+GPqYbIGXNDb4KefUjtkNTJbk0zlBsyeZc+eoDDLJKy3ukugFfDFDmX+g0U3lp1UIsRQB7JHEZ+NWKPJu/hyvbTmwuVFZUnGEZMhMOIqc6nECN+VFCllxV7QBKpdcRJ3E3fiYP4fV0v8wquOD1dfsMs26f3y2fOQLNS0+UpDe0GoRw2R3+lbot3qlftdO6vb5+LYjZEjdSI/G2fPQ3VsS8N0KLLNVHQxix4xn4Qn78i/ImlxbtyoKNLP4ZIaXZ9ELuGvV+yKaQVOVTwxpJOWKMu1Do55cMwdFjxU7Gid03xEYEaZpClcsrbwdGgkJo2+WnpC/L9G4I9X5L+sVISbO49PaZ9DMdQJAlY5QCIjokPchYUp9Vr9u4KcgbAw9FrLQAMSRLnWhf0bLr0mv2ioTOlQKPFBkTIuMnsyglD856ZYQOIHl48+K5HvUZYZqI5UJjPXdrmzycD/Yxt878pSnkkfeyX0Cr/7Rwfq/zOPN5XJcwsO6j9ubuXjnIos0E/SG1BOKrLY+sE7SXzWOqhpzkApb6ILaGhtHNOHmYAckpPAqCe85g/XPZsmWjsABB64Gwg9oviC2ew/IDXigNXGtY8tbQmAny58QPfRihT5HxCRMFP2pA1Xh2WU1vEXtP8=', | 403 | data: 'Al9KSfdnvVJW+GPqYbIGXNDb4KefUjtkNTJbk0zlBsyeZc+eoDDLJKy3ukugFfDFDmX+g0U3lp1UIsRQB7JHEZ+NWKPJu/hyvbTmwuVFZUnGEZMhMOIqc6nECN+VFCllxV7QBKpdcRJ3E3fiYP4fV0v8wquOD1dfsMs26f3y2fOQLNS0+UpDe0GoRw2R3+lbot3qlftdO6vb5+LYjZEjdSI/G2fPQ3VsS8N0KLLNVHQxix4xn4Qn78i/ImlxbtyoKNLP4ZIaXZ9ELuGvV+yKaQVOVTwxpJOWKMu1Do55cMwdFjxU7Gid03xEYEaZpClcsrbwdGgkJo2+WnpC/L9G4I9X5L+sVISbO49PaZ9DMdQJAlY5QCIjokPchYUp9Vr9u4KcgbAw9FrLQAMSRLnWhf0bLr0mv2ioTOlQKPFBkTIuMnsyglD856ZYQOIHl48+K5HvUZYZqI5UJjPXdrmzycD/Yxt878pSnkkfeyX0Cr/7Rwfq/zOPN5XJcwsO6j9ubuXjnIos0E/SG1BOKrLY+sE7SXzWOqhpzkApb6ILaGhtHNOHmYAckpPAqCe85g/XPZsmWjsABB64Gwg9oviC2ew/IDXigNXGtY8tbQmAny58QPfRihT5HxCRMFP2pA1Xh2WU1vEXtP8=', |
404 | version: '0.3', | 404 | version: '0.3', |
405 | previousVersion: '739b67f6c1d52093f5c2153b406df90cd8ebf303ddd0d13d825fc946306114d7', | 405 | previousVersion: '739b67f6c1d52093f5c2153b406df90cd8ebf303ddd0d13d825fc946306114d7', |
406 | previousVersionKey: 'B0wCj/b+UZP07a7VlnKVl/wtiaFzCmPux+T4tBFQati+nSNQCHUQM2XAQ3n1VWeewIyLjKlVI6W7SXRZnCxlcOdqBLDymDkhKfL0FIvmHNKmig==', | 406 | previousVersionKey: 'B0wCj/b+UZP07a7VlnKVl/wtiaFzCmPux+T4tBFQati+nSNQCHUQM2XAQ3n1VWeewIyLjKlVI6W7SXRZnCxlcOdqBLDymDkhKfL0FIvmHNKmig==', |
407 | creationDate: 'Mon Jun 15 15:20:54 PDT 2009', | 407 | creationDate: 'Mon Jun 15 15:20:54 PDT 2009', |
408 | updateDate: 'Mon Jun 15 15:20:54 PDT 2009', | 408 | updateDate: 'Mon Jun 15 15:20:54 PDT 2009', |
409 | accessDate: 'Mon Jun 15 15:20:54 PDT 2009' | 409 | accessDate: 'Mon Jun 15 15:20:54 PDT 2009' |
410 | }, | 410 | }, |
411 | 'ffb687c41ee598b30cf28525024fc18ba96b3d7998fbb298d702311f76ca2127': { | 411 | 'ffb687c41ee598b30cf28525024fc18ba96b3d7998fbb298d702311f76ca2127': { |
412 | header: '####', | 412 | header: '####', |
413 | data: 'mZNwCsPrEohGEYglwUcTQNPDGJWoQRcRDIoWJ482qFJu617UU3Y0hML3CZ+ALtITVpnZl6mGZ3nHCpigt5naJmvwjyV9O7SVkGjc7mrzvjQSP2jrlXGXVIPqjsywDgG74bmaOPLEstQ9Sb2UPGIdinYdDglvQsIaFHQaWHO9bSYLjitfuS+qH2erK/QhqJQ56LxSpcnF5pevfuKZVAkrfhYAhIxqSQ15lZ3QSHxJfT8pQntR8QWL65RetkX/c9eydWyPqVFKqCTghU18p2Omz74UEakBBh3o6DxeTw90UY4YM1tRmsalS3oYG00BFDfDD3mEVZNSrqsxdCikqUSEGvq82whYxsFTj/5fHVLoJybYg5MfpLR+iW8O94g9p2d3jx2mTeNNjOZp+Q5/Wc4rKS7r', | 413 | data: 'mZNwCsPrEohGEYglwUcTQNPDGJWoQRcRDIoWJ482qFJu617UU3Y0hML3CZ+ALtITVpnZl6mGZ3nHCpigt5naJmvwjyV9O7SVkGjc7mrzvjQSP2jrlXGXVIPqjsywDgG74bmaOPLEstQ9Sb2UPGIdinYdDglvQsIaFHQaWHO9bSYLjitfuS+qH2erK/QhqJQ56LxSpcnF5pevfuKZVAkrfhYAhIxqSQ15lZ3QSHxJfT8pQntR8QWL65RetkX/c9eydWyPqVFKqCTghU18p2Omz74UEakBBh3o6DxeTw90UY4YM1tRmsalS3oYG00BFDfDD3mEVZNSrqsxdCikqUSEGvq82whYxsFTj/5fHVLoJybYg5MfpLR+iW8O94g9p2d3jx2mTeNNjOZp+Q5/Wc4rKS7r', |
414 | version: '0.3', | 414 | version: '0.3', |
415 | previousVersion: 'c7add675f676c4615a2849d5017ac8db9066265253ffe7e03b34ab8260b10888', | 415 | previousVersion: 'c7add675f676c4615a2849d5017ac8db9066265253ffe7e03b34ab8260b10888', |
416 | previousVersionKey: 'RFTIyzDM9GP+QklGI/YfTgxB64iqyF7+c7bZntSZlFFDkiVN7pJbToZjl47c272J4dPXFxkORR2o+pIyYDdRvKQZQ/oHXp9aZi5BDKGwHYkl8w==', | 416 | previousVersionKey: 'RFTIyzDM9GP+QklGI/YfTgxB64iqyF7+c7bZntSZlFFDkiVN7pJbToZjl47c272J4dPXFxkORR2o+pIyYDdRvKQZQ/oHXp9aZi5BDKGwHYkl8w==', |
417 | creationDate: 'Fri May 22 03:29:12 PDT 2009', | 417 | creationDate: 'Fri May 22 03:29:12 PDT 2009', |
418 | updateDate: 'Fri May 22 03:29:12 PDT 2009', | 418 | updateDate: 'Fri May 22 03:29:12 PDT 2009', |
419 | accessDate: 'Fri May 22 03:29:51 PDT 2009' | 419 | accessDate: 'Fri May 22 03:29:51 PDT 2009' |
420 | } | 420 | } |
421 | } | 421 | } |
422 | }, | 422 | }, |
423 | '36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113': { | 423 | '36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113': { |
424 | data: '6fhueIibbxKRA7Mtb9TPcWiUKajnikM3D7PbOROBkE39Vw9E/nG8KrtJlwwPQeOGCFhssO/KX3ymYehCR8rfaEL1f9pfdh5x69mSxKRlOmtEknWqUgPzcb1yPenRbQagERadh0LF4zu91M4WjXK9qynEHoxI/pBhwQb1IsnhwtXl4ELtajudv+2Hv3p75v4XOXFsGQMsHPY+Zw7dkFFA8EXhvuxjiGvnxCUkFwNICFRdHTEovkW3VSerLdrYo5lDgjY6ebr/g7wDGuu4RLfUK4+HpzFwZ0+aOrjpFq2ePg2xObvkkMNNjZ2PcR6Cue0sf+aNqzIHIlFPpY2Hmrob8+bwxocKA6aagBu7z5GiUmZNXGE/Vtr/WWBV2+xIJyzXZPet0MLmSnGiALjPJveeKnnFdDtA929ydcAb8efc0/snfU/uDoXDiO5SWEQ8DDNjj1bSo7VPTtvZyFormE1KjqimqSwaUJzbIS4CxPnoDezaBtQmlG4z8mc8jXq1HfPu7s9PUzcbG30gbF0ch2pDj4h47AhE0ZoeiV+VYZTaYateSifQXKBQKjPcuh9PQyDI0HVua3itbbwxXpRubEM4fbvlcd+7gu+Zq03slYICD07fP0I6XGrRHVTfYpDbEb4GJBvRIeZLwRTQzOeFbPLpBU9Lv3zXxfHfcHy9oK+giIxefPdY1ZR2ZFPKOO0xYJsTr0vmTuXeXzy56bKl+yP2lFst5l9QG8j2JcQEotDV1KQS6mbcLjfIpEnltu5fc2t10Q25Noh+F3kF+LcMIYsDjwanojYlOC93mZl01hmSJdimRTk9otjlRTyC7NWwiyy7fe5IyVi7ACNPZyeUYJUPtKWcPbT73Vtf8W3/+HdhmyYNyMQ9PDCBb9WKMon+qW2+ZVH5yv/KqMHRY1fflAfxpHNhrCkwqcAAGw+G/cetbvQjpkfVT2/u/uLupMsITN2Tgvr/8D2IMm3cyDBUCshrp0AfzARRygHFK4x/0uLfCtQSNjw6zMK8mn80R5aS5bZi5gRS8JBMZ4Q0iG4kBlLpIYtsXSBwl8faljjdl/4XvNNWWrdGJn2k0eM4cESlOFFk4s3Yu0Zspo17nKAHINjHAiP3VlhuKSnk5C9hMU5i3vZO8anQmx9UEwUgQVm22azCjyNtUl6jVPYSNsal7A==', | 424 | data: '6fhueIibbxKRA7Mtb9TPcWiUKajnikM3D7PbOROBkE39Vw9E/nG8KrtJlwwPQeOGCFhssO/KX3ymYehCR8rfaEL1f9pfdh5x69mSxKRlOmtEknWqUgPzcb1yPenRbQagERadh0LF4zu91M4WjXK9qynEHoxI/pBhwQb1IsnhwtXl4ELtajudv+2Hv3p75v4XOXFsGQMsHPY+Zw7dkFFA8EXhvuxjiGvnxCUkFwNICFRdHTEovkW3VSerLdrYo5lDgjY6ebr/g7wDGuu4RLfUK4+HpzFwZ0+aOrjpFq2ePg2xObvkkMNNjZ2PcR6Cue0sf+aNqzIHIlFPpY2Hmrob8+bwxocKA6aagBu7z5GiUmZNXGE/Vtr/WWBV2+xIJyzXZPet0MLmSnGiALjPJveeKnnFdDtA929ydcAb8efc0/snfU/uDoXDiO5SWEQ8DDNjj1bSo7VPTtvZyFormE1KjqimqSwaUJzbIS4CxPnoDezaBtQmlG4z8mc8jXq1HfPu7s9PUzcbG30gbF0ch2pDj4h47AhE0ZoeiV+VYZTaYateSifQXKBQKjPcuh9PQyDI0HVua3itbbwxXpRubEM4fbvlcd+7gu+Zq03slYICD07fP0I6XGrRHVTfYpDbEb4GJBvRIeZLwRTQzOeFbPLpBU9Lv3zXxfHfcHy9oK+giIxefPdY1ZR2ZFPKOO0xYJsTr0vmTuXeXzy56bKl+yP2lFst5l9QG8j2JcQEotDV1KQS6mbcLjfIpEnltu5fc2t10Q25Noh+F3kF+LcMIYsDjwanojYlOC93mZl01hmSJdimRTk9otjlRTyC7NWwiyy7fe5IyVi7ACNPZyeUYJUPtKWcPbT73Vtf8W3/+HdhmyYNyMQ9PDCBb9WKMon+qW2+ZVH5yv/KqMHRY1fflAfxpHNhrCkwqcAAGw+G/cetbvQjpkfVT2/u/uLupMsITN2Tgvr/8D2IMm3cyDBUCshrp0AfzARRygHFK4x/0uLfCtQSNjw6zMK8mn80R5aS5bZi5gRS8JBMZ4Q0iG4kBlLpIYtsXSBwl8faljjdl/4XvNNWWrdGJn2k0eM4cESlOFFk4s3Yu0Zspo17nKAHINjHAiP3VlhuKSnk5C9hMU5i3vZO8anQmx9UEwUgQVm22azCjyNtUl6jVPYSNsal7A==', |
425 | version: '0.3', | 425 | version: '0.3', |
426 | creationDate: 'Wed Mar 14 10:39:35 PDT 2007', | 426 | creationDate: 'Wed Mar 14 10:39:35 PDT 2007', |
427 | updateDate: 'Mon Oct 27 01:16:14 PDT 2008', | 427 | updateDate: 'Mon Oct 27 01:16:14 PDT 2008', |
428 | accessDate: 'Tue Jan 05 01:38:41 PST 2010', | 428 | accessDate: 'Tue Jan 05 01:38:41 PST 2010', |
429 | currentVersion: 'a96a6d8b9ac73fcdf874d8a8534ffb2d43da8f5222e96a4a29bd2ae437619463', | 429 | currentVersion: 'a96a6d8b9ac73fcdf874d8a8534ffb2d43da8f5222e96a4a29bd2ae437619463', |
430 | versions: { | 430 | versions: { |
431 | '381201fd3b67549bd6630841e8902be1499f3ff0c3514dd464ad9679f22f3561': { | 431 | '381201fd3b67549bd6630841e8902be1499f3ff0c3514dd464ad9679f22f3561': { |
432 | header: '####', | 432 | header: '####', |
433 | data: 'DgjIW4YcJAYnckuEUzBFkfEC841LuanGopPgp+YkyMn3xuzdpGq/ObLFMVQaeAuyErh1B0REHPbq0E/SRUZbeXLXWN720GU4GXvY5bnen2h7pHvl/H4yz+kvyKh3EHJmmBjuz8s0kclFJQB48lter+G93TEmUaFke9c9m0IkKlgzwZ/PQKZyIyfZA09KFaozdSxdFRbswZj2Vq8Df2PQsKLapZWX1wYQ3lXOcyvNdTULy9MCXwPwX6te6hTLWxQOiSPsvB8LItlhQUsSbrJcJEvWPlBupPu5SeI25zDnqKDETPep63Ks2GWf45nXZzYYmQMzL0l2cenYFxlE18TcOd1Ms24TQ/iDKMhi60zZoo13qjVT5AKZ80KNu46t08qbACxjv/LeK2aM5TNycTFixGskPywpnb6MCo8ibRe5rs1WcTJRMD04sNoiuriivO2fiyo4rxjfdyfueMlOz+Zeztk=', | 433 | data: 'DgjIW4YcJAYnckuEUzBFkfEC841LuanGopPgp+YkyMn3xuzdpGq/ObLFMVQaeAuyErh1B0REHPbq0E/SRUZbeXLXWN720GU4GXvY5bnen2h7pHvl/H4yz+kvyKh3EHJmmBjuz8s0kclFJQB48lter+G93TEmUaFke9c9m0IkKlgzwZ/PQKZyIyfZA09KFaozdSxdFRbswZj2Vq8Df2PQsKLapZWX1wYQ3lXOcyvNdTULy9MCXwPwX6te6hTLWxQOiSPsvB8LItlhQUsSbrJcJEvWPlBupPu5SeI25zDnqKDETPep63Ks2GWf45nXZzYYmQMzL0l2cenYFxlE18TcOd1Ms24TQ/iDKMhi60zZoo13qjVT5AKZ80KNu46t08qbACxjv/LeK2aM5TNycTFixGskPywpnb6MCo8ibRe5rs1WcTJRMD04sNoiuriivO2fiyo4rxjfdyfueMlOz+Zeztk=', |
434 | version: '0.2', | 434 | version: '0.2', |
435 | creationDate: 'Wed Mar 14 10:39:55 PDT 2007', | 435 | creationDate: 'Wed Mar 14 10:39:55 PDT 2007', |
436 | updateDate: 'Wed Mar 14 10:39:55 PDT 2007', | 436 | updateDate: 'Wed Mar 14 10:39:55 PDT 2007', |
437 | accessDate: 'Mon Oct 27 01:07:56 PDT 2008' | 437 | accessDate: 'Mon Oct 27 01:07:56 PDT 2008' |
438 | }, | 438 | }, |
439 | '99dc86ebeb20a3db0c5393d6d94bc1150187b04316a876970dbbcf517b55d6f2': { | 439 | '99dc86ebeb20a3db0c5393d6d94bc1150187b04316a876970dbbcf517b55d6f2': { |
440 | header: '####', | 440 | header: '####', |
441 | data: 'AJwqCWNKC9z8DC4TUI0hWnqHvQ40Y/x+jXylnVAkyO2QYQcqg51odLFSfgP0GiGEGPYwDc+kUxRrfO+ITgTNm+hHi2iIWkP/ljAC+AQ56MAEKsU/USTbvl6ShZ0XTAdRpwI/oqqOhYThVs6jTm/J8+lx4tWoMtNj835py88c/9eW26pLQubr7VysLSWuIMi+iDp7zXZZz/0gxGKDe5xNq4MGIYw8/OK1iJCOsjBdrRygLlS/Mz9sRlKkwdrDsohtRG0F/NdsIoaU4FttGs/rY91SCedvHy6ovh0zXhxOO44O6MiMbP085D1jCjWJn9S1RBxjxc368MGfMJeZja87nuvgSnLS2tGDL6zFtVJMNcH/7GqQPXZv/sNEykDNWpypchCnwYUJxvBVb45FcUzagPm+SSiekWK1hrEntZkZuEhQZp7Ud9RcENpa5h7wXUJSV1vPl8xBylx9HWmxez7D9OYRqbOlCRAEDqup4ahNhYB9', | 441 | data: 'AJwqCWNKC9z8DC4TUI0hWnqHvQ40Y/x+jXylnVAkyO2QYQcqg51odLFSfgP0GiGEGPYwDc+kUxRrfO+ITgTNm+hHi2iIWkP/ljAC+AQ56MAEKsU/USTbvl6ShZ0XTAdRpwI/oqqOhYThVs6jTm/J8+lx4tWoMtNj835py88c/9eW26pLQubr7VysLSWuIMi+iDp7zXZZz/0gxGKDe5xNq4MGIYw8/OK1iJCOsjBdrRygLlS/Mz9sRlKkwdrDsohtRG0F/NdsIoaU4FttGs/rY91SCedvHy6ovh0zXhxOO44O6MiMbP085D1jCjWJn9S1RBxjxc368MGfMJeZja87nuvgSnLS2tGDL6zFtVJMNcH/7GqQPXZv/sNEykDNWpypchCnwYUJxvBVb45FcUzagPm+SSiekWK1hrEntZkZuEhQZp7Ud9RcENpa5h7wXUJSV1vPl8xBylx9HWmxez7D9OYRqbOlCRAEDqup4ahNhYB9', |
442 | version: '0.3', | 442 | version: '0.3', |
443 | creationDate: 'Mon Oct 27 01:09:11 PDT 2008', | 443 | creationDate: 'Mon Oct 27 01:09:11 PDT 2008', |
444 | updateDate: 'Mon Oct 27 01:09:11 PDT 2008', | 444 | updateDate: 'Mon Oct 27 01:09:11 PDT 2008', |
445 | accessDate: 'Mon Oct 27 01:15:58 PDT 2008' | 445 | accessDate: 'Mon Oct 27 01:15:58 PDT 2008' |
446 | }, | 446 | }, |
447 | '9fbfcd3e7fe30d549a813f0e6c1be58ed45c3ae7305d7367bffefa097b424ee6': { | 447 | '9fbfcd3e7fe30d549a813f0e6c1be58ed45c3ae7305d7367bffefa097b424ee6': { |
448 | header: '####', | 448 | header: '####', |
449 | data: 'nZ+Lc5LWWLxnPvUrRrHhxG35PHq7GMbVENHfV1oS0Qw7/63NecssNoEbiOwFVMjAshvfUK7IjnzyvfQhNtFRbj2yzHOTWCd0eJ0O0MmvGzjpUntSDu9/G8RFeEu9jDKugwi/NhOa5legjT9pcsEAqR4s4NN/Ac6juQb6D/Z6Wd6wO0JQhT5/QPk1KllDpDeo2i/GPUKvEi/dXpik0KQcVLVylU82rf6hwEgvRQi+j0O5hnFW1E4ttxClrnPBEBv60jkNwcIpD0r+rvomDe8+398xUuB4DVDJoM+WUYfu6Sm3qI0yBfET+tJvjn8WsHhKTgZpOc2BXC7EdF99nNEg6kV5pSxV6AUA1XUz5kW+YfcSzAXzUH74OqroC0SucHe4+BtRKnbJy4h5vRfjTD+FJaj1Va02cxSR55tQhxm/k67z0QeyB98dnU1l/pPHwBlIWa1eR74gswNSeQ2jrzu5JeQ=', | 449 | data: 'nZ+Lc5LWWLxnPvUrRrHhxG35PHq7GMbVENHfV1oS0Qw7/63NecssNoEbiOwFVMjAshvfUK7IjnzyvfQhNtFRbj2yzHOTWCd0eJ0O0MmvGzjpUntSDu9/G8RFeEu9jDKugwi/NhOa5legjT9pcsEAqR4s4NN/Ac6juQb6D/Z6Wd6wO0JQhT5/QPk1KllDpDeo2i/GPUKvEi/dXpik0KQcVLVylU82rf6hwEgvRQi+j0O5hnFW1E4ttxClrnPBEBv60jkNwcIpD0r+rvomDe8+398xUuB4DVDJoM+WUYfu6Sm3qI0yBfET+tJvjn8WsHhKTgZpOc2BXC7EdF99nNEg6kV5pSxV6AUA1XUz5kW+YfcSzAXzUH74OqroC0SucHe4+BtRKnbJy4h5vRfjTD+FJaj1Va02cxSR55tQhxm/k67z0QeyB98dnU1l/pPHwBlIWa1eR74gswNSeQ2jrzu5JeQ=', |
450 | version: '0.2', | 450 | version: '0.2', |
451 | creationDate: 'Wed Mar 14 10:39:35 PDT 2007', | 451 | creationDate: 'Wed Mar 14 10:39:35 PDT 2007', |
452 | updateDate: 'Wed Mar 14 10:39:35 PDT 2007', | 452 | updateDate: 'Wed Mar 14 10:39:35 PDT 2007', |
453 | accessDate: 'Wed Mar 14 10:39:35 PDT 2007' | 453 | accessDate: 'Wed Mar 14 10:39:35 PDT 2007' |
454 | }, | 454 | }, |
455 | 'a96a6d8b9ac73fcdf874d8a8534ffb2d43da8f5222e96a4a29bd2ae437619463': { | 455 | 'a96a6d8b9ac73fcdf874d8a8534ffb2d43da8f5222e96a4a29bd2ae437619463': { |
456 | header: '####', | 456 | header: '####', |
457 | data: 'm3yhZu81UAjCY6U2Knrgg8mK+LX35Y/iZgIEm8MuRDAlg6UUz9Z1Anu63COFV08YyYQRuBzTgR9YQ8wrUD1S9FG2ZmtCDemqvd+5OUMgdn4sK7G3CuzAc5osOa5neU2m4y19WuobkGnhO78ko7pVVjO42q0DeMT92uFL6KE/2UCkWlq5SdFyS5qXEJEWs2IO5C8nVpdlO/eZ36Pl2+v+afl3QQMTthCVIUR4/zVP2ajbO48yjDXhYxzskFjtXMYLApEn0wO0dcifcsYhPkozz6Locrt/R6IZXnfZfuW5XXHbqhutoJFPK6L6t0Ib3B2r1TNkPaMsVs2g5V1g3ENRd0IlbG/uBk2o5tgeu6gOYlA1scEiL+/ad9ZxiqYB2ENCGZ8DXA4VNMnzxVPbO96OIUCb9suV0fldGOg=', | 457 | data: 'm3yhZu81UAjCY6U2Knrgg8mK+LX35Y/iZgIEm8MuRDAlg6UUz9Z1Anu63COFV08YyYQRuBzTgR9YQ8wrUD1S9FG2ZmtCDemqvd+5OUMgdn4sK7G3CuzAc5osOa5neU2m4y19WuobkGnhO78ko7pVVjO42q0DeMT92uFL6KE/2UCkWlq5SdFyS5qXEJEWs2IO5C8nVpdlO/eZ36Pl2+v+afl3QQMTthCVIUR4/zVP2ajbO48yjDXhYxzskFjtXMYLApEn0wO0dcifcsYhPkozz6Locrt/R6IZXnfZfuW5XXHbqhutoJFPK6L6t0Ib3B2r1TNkPaMsVs2g5V1g3ENRd0IlbG/uBk2o5tgeu6gOYlA1scEiL+/ad9ZxiqYB2ENCGZ8DXA4VNMnzxVPbO96OIUCb9suV0fldGOg=', |
458 | version: '0.3', | 458 | version: '0.3', |
459 | creationDate: 'Mon Oct 27 01:16:14 PDT 2008', | 459 | creationDate: 'Mon Oct 27 01:16:14 PDT 2008', |
460 | updateDate: 'Mon Oct 27 01:16:14 PDT 2008', | 460 | updateDate: 'Mon Oct 27 01:16:14 PDT 2008', |
461 | accessDate: 'Tue Jan 05 01:38:41 PST 2010' | 461 | accessDate: 'Tue Jan 05 01:38:41 PST 2010' |
462 | } | 462 | } |
463 | } | 463 | } |
464 | }, | 464 | }, |
465 | '507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a': { | 465 | '507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a': { |
466 | data: 'ncSFmp/+n1pYUKi2fwhMCevSwFYO5irdcpOlSxC6YPOKYavK4iUbtBsilYWd0hpvUHW2ItaDwiyNFxs2Lwegex6dawKrpMYkPBcaZQDa746yACGgCkhz4MAGnUn5HCmz6xhpCVXMMKe3w2nEOjRB+pOMOeJt2n7aw0hCJ9tQ9JTFNrZOxeXrqoexrd210Rmr9FnKhLIvhNTN1/vXRqP0ys10omJ2mowzF4KoEVmz3ET6pS2d7tGjt9M/OYsH/ETWWc92doF5PO84g5/3HePaCo8NCqq4ul7AWJEbdnkxxmd7urJzIscPQPcoLxL7GfG5LhHTFyHlfFz9dNlccfA+OPftjyfjXTjLYZzbxxbi/nAB9Esqj5AoHfqaJM1ZOrZ+qAvm8Am3+HAXrqtiybDITrCLmGH9ukWDsx7R3lYTlvjArwORBUH+4w4/uYGscVm9kOYj/Rmz/ZMH9JibYFcPcOnr3rWXPFUL/XsXTrm9lzOvPyEYJmkENzd54AHC4Lr5vHpeuipWFLiJOrtn2WcgDG/DdLaYGKsmISXj74XDtP6Ee5lKOtbwwcmVNrl11UCQBEFHNybhXvpil5laKddOauLJDKtaDL/mKYPbr5YSk7HPCzRyE7HM2dC1MpBHuJ8g+hDkgU3wQcxYduKLRpuC0uOqrODigGWhVrdiKdZanlWUq9EkE3eH+E2A/CA8mHl7UNaH89XSvgV7uZyOmK7iZ+1kd9OzhBLQdJnK9qqP467Y14KsTt1E1+tqlqVAuK79QMnllaR0e3ztBRAQsyf5SD0KuSGXWz+z9/RjbhamW1s0UFRGh3voQMypU5RcYfYUA5KVg0BiVKFaiZBZKLo213hKbrgE2KoqVDEmIBFmwsu/S3EDzUY22tTB+o8ZKQiYesAUafGtnvsOLa+h6weF1ZvQVBerbD3fhb2o+d4ZyPkoRAsop+5it0QxsWuZL+J2oWybaikxIP/1ZM2ow4QZLaAVqihyHxqhF5UxZ9zrWxfp34BIPzzU9esSifrD0gXZ3mwutaCukZoijnGODJZtFOy9Rl1gyS1IbpyRbwz5O/YRl4BsD2aOk4InajT13Sa1BLPblQcrau13aeg/IzQhcUJ6n7enkrqiJFTP8N1aFAuYv8ilu0V2ymIuCLUtc4cbo7KyA+gnHhZA+DjjrhG/izOyWtQY/WtDsqvo/6ILwFk37JDjHfkchPEVcdl9qT7goG/4zTGX+lx8UTKKZJjJhLjA', | 466 | data: 'ncSFmp/+n1pYUKi2fwhMCevSwFYO5irdcpOlSxC6YPOKYavK4iUbtBsilYWd0hpvUHW2ItaDwiyNFxs2Lwegex6dawKrpMYkPBcaZQDa746yACGgCkhz4MAGnUn5HCmz6xhpCVXMMKe3w2nEOjRB+pOMOeJt2n7aw0hCJ9tQ9JTFNrZOxeXrqoexrd210Rmr9FnKhLIvhNTN1/vXRqP0ys10omJ2mowzF4KoEVmz3ET6pS2d7tGjt9M/OYsH/ETWWc92doF5PO84g5/3HePaCo8NCqq4ul7AWJEbdnkxxmd7urJzIscPQPcoLxL7GfG5LhHTFyHlfFz9dNlccfA+OPftjyfjXTjLYZzbxxbi/nAB9Esqj5AoHfqaJM1ZOrZ+qAvm8Am3+HAXrqtiybDITrCLmGH9ukWDsx7R3lYTlvjArwORBUH+4w4/uYGscVm9kOYj/Rmz/ZMH9JibYFcPcOnr3rWXPFUL/XsXTrm9lzOvPyEYJmkENzd54AHC4Lr5vHpeuipWFLiJOrtn2WcgDG/DdLaYGKsmISXj74XDtP6Ee5lKOtbwwcmVNrl11UCQBEFHNybhXvpil5laKddOauLJDKtaDL/mKYPbr5YSk7HPCzRyE7HM2dC1MpBHuJ8g+hDkgU3wQcxYduKLRpuC0uOqrODigGWhVrdiKdZanlWUq9EkE3eH+E2A/CA8mHl7UNaH89XSvgV7uZyOmK7iZ+1kd9OzhBLQdJnK9qqP467Y14KsTt1E1+tqlqVAuK79QMnllaR0e3ztBRAQsyf5SD0KuSGXWz+z9/RjbhamW1s0UFRGh3voQMypU5RcYfYUA5KVg0BiVKFaiZBZKLo213hKbrgE2KoqVDEmIBFmwsu/S3EDzUY22tTB+o8ZKQiYesAUafGtnvsOLa+h6weF1ZvQVBerbD3fhb2o+d4ZyPkoRAsop+5it0QxsWuZL+J2oWybaikxIP/1ZM2ow4QZLaAVqihyHxqhF5UxZ9zrWxfp34BIPzzU9esSifrD0gXZ3mwutaCukZoijnGODJZtFOy9Rl1gyS1IbpyRbwz5O/YRl4BsD2aOk4InajT13Sa1BLPblQcrau13aeg/IzQhcUJ6n7enkrqiJFTP8N1aFAuYv8ilu0V2ymIuCLUtc4cbo7KyA+gnHhZA+DjjrhG/izOyWtQY/WtDsqvo/6ILwFk37JDjHfkchPEVcdl9qT7goG/4zTGX+lx8UTKKZJjJhLjA', |
467 | version: '0.2', | 467 | version: '0.2', |
468 | creationDate: 'Wed Mar 14 08:01:24 PDT 2007', | 468 | creationDate: 'Wed Mar 14 08:01:24 PDT 2007', |
469 | updateDate: 'Wed Mar 14 08:01:24 PDT 2007', | 469 | updateDate: 'Wed Mar 14 08:01:24 PDT 2007', |
470 | accessDate: 'Tue Jan 05 01:38:39 PST 2010', | 470 | accessDate: 'Tue Jan 05 01:38:39 PST 2010', |
471 | currentVersion: '395eb58606138588dcd7e659065db48775610cc1e90cbd03368c063e02e55c8b', | 471 | currentVersion: '395eb58606138588dcd7e659065db48775610cc1e90cbd03368c063e02e55c8b', |
472 | versions: { | 472 | versions: { |
473 | '395eb58606138588dcd7e659065db48775610cc1e90cbd03368c063e02e55c8b': { | 473 | '395eb58606138588dcd7e659065db48775610cc1e90cbd03368c063e02e55c8b': { |
474 | header: '####', | 474 | header: '####', |
475 | data: 'sgq3FGcsnlbhTLetMa3TQQE6uFZv/JL6Awha1066IimKoAtQGbAr6E1+mxRmvJle91sL7oRfi6suvDanYHfAI+rrG6qCOtESn70ssS+aGFyO3XwFgypzG/Qa34bjxJ16Aqd93H8IdhzdtOxs2Qmou3CjyxbT7Cq+YW/fAo1WfctL4yE4GBNPWC5lfebxSmINlBY+zTjhv9Pf2aK6vL4p3obHl+zhz0YdKAMBwbDyCLa9tYvhGBnq/W6lFUsyZCPVJJP3bQCQww0TNCcLJLm+SYVSiC0NwCQJq+yNqDkWTvv41p5EDB06eOQ2VqC7l4i/JLE/ql9h9Z++gck74/Qs3ppdVdG7sTzWyPya4v3RW2OTc1awFRZipAX5Zd7I97dyw6Yym4y+/9UT8z8iMDYykQ4+QnOhksDIE9a8q6agDF/rbZ/BCRcMWbFylGTdudk26mu0GdPiuLDu', | 475 | data: 'sgq3FGcsnlbhTLetMa3TQQE6uFZv/JL6Awha1066IimKoAtQGbAr6E1+mxRmvJle91sL7oRfi6suvDanYHfAI+rrG6qCOtESn70ssS+aGFyO3XwFgypzG/Qa34bjxJ16Aqd93H8IdhzdtOxs2Qmou3CjyxbT7Cq+YW/fAo1WfctL4yE4GBNPWC5lfebxSmINlBY+zTjhv9Pf2aK6vL4p3obHl+zhz0YdKAMBwbDyCLa9tYvhGBnq/W6lFUsyZCPVJJP3bQCQww0TNCcLJLm+SYVSiC0NwCQJq+yNqDkWTvv41p5EDB06eOQ2VqC7l4i/JLE/ql9h9Z++gck74/Qs3ppdVdG7sTzWyPya4v3RW2OTc1awFRZipAX5Zd7I97dyw6Yym4y+/9UT8z8iMDYykQ4+QnOhksDIE9a8q6agDF/rbZ/BCRcMWbFylGTdudk26mu0GdPiuLDu', |
476 | version: '0.2', | 476 | version: '0.2', |
477 | creationDate: 'Wed Mar 14 08:01:24 PDT 2007', | 477 | creationDate: 'Wed Mar 14 08:01:24 PDT 2007', |
478 | updateDate: 'Wed Mar 14 08:01:24 PDT 2007', | 478 | updateDate: 'Wed Mar 14 08:01:24 PDT 2007', |
479 | accessDate: 'Tue Jan 05 01:38:39 PST 2010' | 479 | accessDate: 'Tue Jan 05 01:38:39 PST 2010' |
480 | } | 480 | } |
481 | } | 481 | } |
482 | }, | 482 | }, |
483 | '6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728': { | 483 | '6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728': { |
484 | data: '3oUg1TD+Lu4ou06j/MddOTXDqRM+qSKD+6Iuzia1Hop1w7v/BXidqeoKJZQI2VY9oO9B70Nr3B3wDROF+ycy6Rq+FM/xqUGHKXn1lAaSc6Wgj6TLQ6eRF6YZKSPqTj7TDWyw/2pEWk4HjcT8drTrCaC02tzAXMhYWlYPQPW4fUdq4hawoHIdopUN3vafQuFjY47OhqXKav3bNao=', | 484 | data: '3oUg1TD+Lu4ou06j/MddOTXDqRM+qSKD+6Iuzia1Hop1w7v/BXidqeoKJZQI2VY9oO9B70Nr3B3wDROF+ycy6Rq+FM/xqUGHKXn1lAaSc6Wgj6TLQ6eRF6YZKSPqTj7TDWyw/2pEWk4HjcT8drTrCaC02tzAXMhYWlYPQPW4fUdq4hawoHIdopUN3vafQuFjY47OhqXKav3bNao=', |
485 | version: '0.2', | 485 | version: '0.2', |
486 | creationDate: 'Tue Apr 17 07:36:08 PDT 2007', | 486 | creationDate: 'Tue Apr 17 07:36:08 PDT 2007', |
487 | updateDate: 'Tue Apr 17 07:36:08 PDT 2007', | 487 | updateDate: 'Tue Apr 17 07:36:08 PDT 2007', |
488 | accessDate: 'Wed Feb 03 06:28:13 PST 2010', | 488 | accessDate: 'Wed Feb 03 06:28:13 PST 2010', |
489 | currentVersion: 'bf8d46022179715d9d27e0a256b56b50828a771c3c6b46fe36fb2982dcb3b4cc', | 489 | currentVersion: 'bf8d46022179715d9d27e0a256b56b50828a771c3c6b46fe36fb2982dcb3b4cc', |
490 | versions: { | 490 | versions: { |
491 | 'bf8d46022179715d9d27e0a256b56b50828a771c3c6b46fe36fb2982dcb3b4cc': { | 491 | 'bf8d46022179715d9d27e0a256b56b50828a771c3c6b46fe36fb2982dcb3b4cc': { |
492 | header: '####', | 492 | header: '####', |
493 | data: 'fehYRMkg/wFj2t/aWu7szbXwrCyCDpjQN4UNck4/OiDlth70a2ve6ow5lAi2jgdlV9WiFrPejfa8dD0Z1g19jx+BBsuUYnBEKD0K+NapdJBBeI0We2nj9nYIij2dfZVx7cuvhy8sN6+DdylUQLsFHbga+Gi5hWcMuULT4GOAIy2WanSQL1RSR4ruA6zm/t+VVboEkkm7PPT+w3LuRl3wRaD4a8ZwYiSV/SzgWooFrh2S3YOUeshdaGCiYpTbXscsOxsCxc11i6wQGBqYSjksmtZDvEegdQdzCmxvq4jaVWJElYYS3av612nD5K/w7Zei6RccBiODBPATjrIczYg7HwmQxIM/6QI9/LQn0LP0yqRVUUtfzaODf0uWNpFzml9l/1lwXuBJyQFBp7H7Th46ekw9yEuPD00oZ+eXvKwbwfUU0JshT4hnEBtIjM8fH974PU0y95f0yLAJ1+M6DVXCxGsBix2aKJx9fuZP4KGpaXg6qCb/6327rph7MGomcrGPIiDjYwD/NTMdGluc55OZfGXtOZUaJCUM6nihqDwU7Ly1ZzYorgcvkX/t/0RNcOkFzGYNByp7mdcotyiHqCDKspqz9mEXAd7Noz3HO5GFpPqbRo7htDigGU1f7dvgbbfRoTz17Bt9Mw==', | 493 | data: 'fehYRMkg/wFj2t/aWu7szbXwrCyCDpjQN4UNck4/OiDlth70a2ve6ow5lAi2jgdlV9WiFrPejfa8dD0Z1g19jx+BBsuUYnBEKD0K+NapdJBBeI0We2nj9nYIij2dfZVx7cuvhy8sN6+DdylUQLsFHbga+Gi5hWcMuULT4GOAIy2WanSQL1RSR4ruA6zm/t+VVboEkkm7PPT+w3LuRl3wRaD4a8ZwYiSV/SzgWooFrh2S3YOUeshdaGCiYpTbXscsOxsCxc11i6wQGBqYSjksmtZDvEegdQdzCmxvq4jaVWJElYYS3av612nD5K/w7Zei6RccBiODBPATjrIczYg7HwmQxIM/6QI9/LQn0LP0yqRVUUtfzaODf0uWNpFzml9l/1lwXuBJyQFBp7H7Th46ekw9yEuPD00oZ+eXvKwbwfUU0JshT4hnEBtIjM8fH974PU0y95f0yLAJ1+M6DVXCxGsBix2aKJx9fuZP4KGpaXg6qCb/6327rph7MGomcrGPIiDjYwD/NTMdGluc55OZfGXtOZUaJCUM6nihqDwU7Ly1ZzYorgcvkX/t/0RNcOkFzGYNByp7mdcotyiHqCDKspqz9mEXAd7Noz3HO5GFpPqbRo7htDigGU1f7dvgbbfRoTz17Bt9Mw==', |
494 | version: '0.2', | 494 | version: '0.2', |
495 | creationDate: 'Tue Apr 17 07:36:08 PDT 2007', | 495 | creationDate: 'Tue Apr 17 07:36:08 PDT 2007', |
496 | updateDate: 'Tue Apr 17 07:36:08 PDT 2007', | 496 | updateDate: 'Tue Apr 17 07:36:08 PDT 2007', |
497 | accessDate: 'Wed Feb 03 06:28:13 PST 2010' | 497 | accessDate: 'Wed Feb 03 06:28:13 PST 2010' |
498 | } | 498 | } |
499 | } | 499 | } |
500 | }, | 500 | }, |
501 | '6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a': { | 501 | '6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a': { |
502 | data: 'b2mcYUi59l434kGl7ij6dBu3063UL1dToMIu3Zsa9RV9RzeLKnezJhLKunqoAm7KwiJeqDo/REexHI1cshGYtHasVXXuyJfMx1grH7yhoWnkSRF4Sax6w5E5wnGkEpGJHOxXJ9rOjWHZ7yqCUUCB/dqLw4FwPOtRb/ynkBEYztEJA6EKGJuz0vrrTOsT8HMXtj/w6MEZ7qI3fPs=', | 502 | data: 'b2mcYUi59l434kGl7ij6dBu3063UL1dToMIu3Zsa9RV9RzeLKnezJhLKunqoAm7KwiJeqDo/REexHI1cshGYtHasVXXuyJfMx1grH7yhoWnkSRF4Sax6w5E5wnGkEpGJHOxXJ9rOjWHZ7yqCUUCB/dqLw4FwPOtRb/ynkBEYztEJA6EKGJuz0vrrTOsT8HMXtj/w6MEZ7qI3fPs=', |
503 | version: '0.2', | 503 | version: '0.2', |
504 | creationDate: 'Mon Apr 02 10:12:44 PDT 2007', | 504 | creationDate: 'Mon Apr 02 10:12:44 PDT 2007', |
505 | updateDate: 'Mon Apr 02 10:12:44 PDT 2007', | 505 | updateDate: 'Mon Apr 02 10:12:44 PDT 2007', |
506 | accessDate: 'Tue Jan 05 01:38:40 PST 2010', | 506 | accessDate: 'Tue Jan 05 01:38:40 PST 2010', |
507 | currentVersion: '2f60193c0fc0e3f2f178955e1c68759675acdf691bcb918cfad329a5a97cfaf3', | 507 | currentVersion: '2f60193c0fc0e3f2f178955e1c68759675acdf691bcb918cfad329a5a97cfaf3', |
508 | versions: { | 508 | versions: { |
509 | '2f60193c0fc0e3f2f178955e1c68759675acdf691bcb918cfad329a5a97cfaf3': { | 509 | '2f60193c0fc0e3f2f178955e1c68759675acdf691bcb918cfad329a5a97cfaf3': { |
510 | header: '####', | 510 | header: '####', |
511 | data: 'pZEWSdYIkrX8/r6OYmO0GEuKG9baUgn40Bmw7hXZBd/kfWuRjWsL4/pc5F5Ojrx+N0dxmQn5ZqKAzOOri29Rm4ruxnCbyK+oDsCDyMSnWy/VJcvystnDKzKmBRQVAOSEJtzEb3OtGzvqm0PQ1Dhx1YUAx7L6KlXysmG9h9+MjOcErRL9/1x1LZ33ytR+zK4LvTAb7gN5/9QgwysFyCkNP8bG4nyCzPMiUrBnP0odMTUvDkJDlY0Oia6VjGW6oNxnGIgA5fDraRrW4JH2oejQcrL7+X+jpCp05g==', | 511 | data: 'pZEWSdYIkrX8/r6OYmO0GEuKG9baUgn40Bmw7hXZBd/kfWuRjWsL4/pc5F5Ojrx+N0dxmQn5ZqKAzOOri29Rm4ruxnCbyK+oDsCDyMSnWy/VJcvystnDKzKmBRQVAOSEJtzEb3OtGzvqm0PQ1Dhx1YUAx7L6KlXysmG9h9+MjOcErRL9/1x1LZ33ytR+zK4LvTAb7gN5/9QgwysFyCkNP8bG4nyCzPMiUrBnP0odMTUvDkJDlY0Oia6VjGW6oNxnGIgA5fDraRrW4JH2oejQcrL7+X+jpCp05g==', |
512 | version: '0.2', | 512 | version: '0.2', |
513 | creationDate: 'Mon Apr 02 10:12:44 PDT 2007', | 513 | creationDate: 'Mon Apr 02 10:12:44 PDT 2007', |
514 | updateDate: 'Mon Apr 02 10:12:44 PDT 2007', | 514 | updateDate: 'Mon Apr 02 10:12:44 PDT 2007', |
515 | accessDate: 'Tue Jan 05 01:38:40 PST 2010' | 515 | accessDate: 'Tue Jan 05 01:38:40 PST 2010' |
516 | } | 516 | } |
517 | } | 517 | } |
518 | }, | 518 | }, |
519 | '6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18': { | 519 | '6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18': { |
520 | data: 'jzjPgxRHApIJA/6hiY4XCtb5+eKzHlOeoiGwfVDvip95zU7ThHbdmxOUomeyCOZ3S1SGPT4lHvqZgfVG5m5RvH3JaAIa8EY1ZElRohoX3rETVPJzI/Ov5Rp3lZjtWlu5meNrcJz811HBHrtBuJxAmSjYcY3CCal+oC2zcK2fLZR/iOQ+69ONVFhdV9KiOqzNf8IisIa1sIgFopqsdHXiZ9oLe0a7Y56q+OplyU3A+TmxKLI+Qq+WkjvdMzZDDqzYH47me5niugYPdkQwN6WQUE0sK9QPs0uU4TOwqCwN9nPH/DoQ6oXWAu2+R4iCyt6ZjLNkClbps4s8Cwz6wfFQ+4T8bcldjveJenmrYwiUzxSd/4xa34yFVXVw2OD0n8yZhtvNFvfoPy+X9z+Y4f5HlM0qzL9zYya4KwWjFQzhOxFjni9JyGM2PJ1BctB+q1J+CHuhlVjUF0Y5zIS3zFTET8jjDGBZDWB+Ao9E8fUD+0OJJUdKJ4kUfn4ZUZUG20eLBjmJqWBGYZX7UFaPv8ksahoK26Ol6FnBE4KpPStQeDgXZDzGsiLlEsxHJLUFkNtAUXozw38bWWQvi2VIFtkw/ZViPIenmSNT14kUVWdrlKQC8x0+wECeh5ffv0i8UUw3v8QC2ZE7GV0OMl4ySlRCuDCfZ53YFoB3HIR1hSZMhHlHJDPUz8JOuXdHcUQaJeNrfWoC2KkKb0ZecBj9iXooDh9yGi0g7TS7eyhlz1LHpzEWB0CPsZqhNGMxmfFWur7v2hrYzoHQOeB19ZSmWzfUwd4dRpqMp0x1lZaF97jr+yyYhnuQvuO6lru15Pg6FqjzhsNiLtaqtyoaMiHZ9veZs04qZZ9Fn3U7HeJzjZSAssdLnvopXi363cXm9JqoClyV2OemnVoRwOZN2gdSZxGeOefKR7U+lrBAbJwViMnmT0Nd7AC8C1k34iEt8HJmpztXeOgX5CQpwUPENMCUPsookFbIh7e4aByllEQy0gBbxUz8JMIWYyw98hdASnZ4s8bQfSmiMM8Iw3YxCexKB62LYYJn1UY51NSnwCtwRep+NhaKDk2d6SLh9owxnFbjhw22RriPd5f1InJycjtpvMzWLavl/hDsjjj1kWpnCUBTM46LbERmjz+s4x7fSf2FhhguBT36elz69ivXoiXI+7p0E8f8HsSwm8sgN/AA5m1svsXsdWeZFUiWtAwLg0tI8YNHlazbvFCXfIC6Uhq9eDv04iqdZ3rn2c1rwSx336A7ySTBFdxOCJ46F7ShIhNKm2N+5Qf0K5B2L882fbwqiLsa64+X9aKvufKTsd11vyf19Zivg/Ze0FWoGC8D63Nh91k6Hu32RT+uAtJIjQIZxu9yXJM9lMaRA8ieER+ghrLHaGQqF9J3WmueER3UzU1midvTynOV6g==', | 520 | data: 'jzjPgxRHApIJA/6hiY4XCtb5+eKzHlOeoiGwfVDvip95zU7ThHbdmxOUomeyCOZ3S1SGPT4lHvqZgfVG5m5RvH3JaAIa8EY1ZElRohoX3rETVPJzI/Ov5Rp3lZjtWlu5meNrcJz811HBHrtBuJxAmSjYcY3CCal+oC2zcK2fLZR/iOQ+69ONVFhdV9KiOqzNf8IisIa1sIgFopqsdHXiZ9oLe0a7Y56q+OplyU3A+TmxKLI+Qq+WkjvdMzZDDqzYH47me5niugYPdkQwN6WQUE0sK9QPs0uU4TOwqCwN9nPH/DoQ6oXWAu2+R4iCyt6ZjLNkClbps4s8Cwz6wfFQ+4T8bcldjveJenmrYwiUzxSd/4xa34yFVXVw2OD0n8yZhtvNFvfoPy+X9z+Y4f5HlM0qzL9zYya4KwWjFQzhOxFjni9JyGM2PJ1BctB+q1J+CHuhlVjUF0Y5zIS3zFTET8jjDGBZDWB+Ao9E8fUD+0OJJUdKJ4kUfn4ZUZUG20eLBjmJqWBGYZX7UFaPv8ksahoK26Ol6FnBE4KpPStQeDgXZDzGsiLlEsxHJLUFkNtAUXozw38bWWQvi2VIFtkw/ZViPIenmSNT14kUVWdrlKQC8x0+wECeh5ffv0i8UUw3v8QC2ZE7GV0OMl4ySlRCuDCfZ53YFoB3HIR1hSZMhHlHJDPUz8JOuXdHcUQaJeNrfWoC2KkKb0ZecBj9iXooDh9yGi0g7TS7eyhlz1LHpzEWB0CPsZqhNGMxmfFWur7v2hrYzoHQOeB19ZSmWzfUwd4dRpqMp0x1lZaF97jr+yyYhnuQvuO6lru15Pg6FqjzhsNiLtaqtyoaMiHZ9veZs04qZZ9Fn3U7HeJzjZSAssdLnvopXi363cXm9JqoClyV2OemnVoRwOZN2gdSZxGeOefKR7U+lrBAbJwViMnmT0Nd7AC8C1k34iEt8HJmpztXeOgX5CQpwUPENMCUPsookFbIh7e4aByllEQy0gBbxUz8JMIWYyw98hdASnZ4s8bQfSmiMM8Iw3YxCexKB62LYYJn1UY51NSnwCtwRep+NhaKDk2d6SLh9owxnFbjhw22RriPd5f1InJycjtpvMzWLavl/hDsjjj1kWpnCUBTM46LbERmjz+s4x7fSf2FhhguBT36elz69ivXoiXI+7p0E8f8HsSwm8sgN/AA5m1svsXsdWeZFUiWtAwLg0tI8YNHlazbvFCXfIC6Uhq9eDv04iqdZ3rn2c1rwSx336A7ySTBFdxOCJ46F7ShIhNKm2N+5Qf0K5B2L882fbwqiLsa64+X9aKvufKTsd11vyf19Zivg/Ze0FWoGC8D63Nh91k6Hu32RT+uAtJIjQIZxu9yXJM9lMaRA8ieER+ghrLHaGQqF9J3WmueER3UzU1midvTynOV6g==', |
521 | version: '0.2', | 521 | version: '0.2', |
522 | creationDate: 'Wed Mar 14 11:09:05 PDT 2007', | 522 | creationDate: 'Wed Mar 14 11:09:05 PDT 2007', |
523 | updateDate: 'Wed Mar 14 11:09:05 PDT 2007', | 523 | updateDate: 'Wed Mar 14 11:09:05 PDT 2007', |
524 | accessDate: 'Tue Jan 05 01:38:42 PST 2010', | 524 | accessDate: 'Tue Jan 05 01:38:42 PST 2010', |
525 | currentVersion: 'e85f085a8ed42d2def7adc796b66a2e0a4c3c88d9f3e785eb12a6f5619d945c5', | 525 | currentVersion: 'e85f085a8ed42d2def7adc796b66a2e0a4c3c88d9f3e785eb12a6f5619d945c5', |
526 | versions: { | 526 | versions: { |
527 | 'e85f085a8ed42d2def7adc796b66a2e0a4c3c88d9f3e785eb12a6f5619d945c5': { | 527 | 'e85f085a8ed42d2def7adc796b66a2e0a4c3c88d9f3e785eb12a6f5619d945c5': { |
528 | header: '####', | 528 | header: '####', |
529 | data: 'BbXNAy0GcKKyDPiwhP1Jk9mIi3uXMHQdhuxpDvoR2C3YITOUBpurxGhhvmCg+a9pS+fKJdZPxL2mPbJj6GfWTEsm7K/ECEjrVkSTHi6PTUUgYVbCumq9EHjUspos+7VrifZry3c73+qAvIKamvUlNB86TchMpOXVJIyx8UgRX+bdhrxk9ZCEVOiLCG1zGPX8IzmcxPmBRZFlHYqE4ibhl/CLEzWXZBYCofTusClhOh7YM/jBgvDt64W7aIN2y2KiKwmFySkFZdnOvbAb34tXVimwqjqWPvPwd6MujQeX1bmaDD7Y0kXac8CJxqasIezLo2WqzLUbEXdIHGilkaPT2ZKpKhKkpHJHFrV2lVuQJVqwPUr0Gf9qMKgVnsyU8kUfq9ox+fhH70+v7BQSjT7bxxDLs0UesQeL7G4SqvNet5hPI4GQEpOY8p5MUFReIBTRm72NQEU=', | 529 | data: 'BbXNAy0GcKKyDPiwhP1Jk9mIi3uXMHQdhuxpDvoR2C3YITOUBpurxGhhvmCg+a9pS+fKJdZPxL2mPbJj6GfWTEsm7K/ECEjrVkSTHi6PTUUgYVbCumq9EHjUspos+7VrifZry3c73+qAvIKamvUlNB86TchMpOXVJIyx8UgRX+bdhrxk9ZCEVOiLCG1zGPX8IzmcxPmBRZFlHYqE4ibhl/CLEzWXZBYCofTusClhOh7YM/jBgvDt64W7aIN2y2KiKwmFySkFZdnOvbAb34tXVimwqjqWPvPwd6MujQeX1bmaDD7Y0kXac8CJxqasIezLo2WqzLUbEXdIHGilkaPT2ZKpKhKkpHJHFrV2lVuQJVqwPUr0Gf9qMKgVnsyU8kUfq9ox+fhH70+v7BQSjT7bxxDLs0UesQeL7G4SqvNet5hPI4GQEpOY8p5MUFReIBTRm72NQEU=', |
530 | version: '0.2', | 530 | version: '0.2', |
531 | creationDate: 'Wed Mar 14 11:09:05 PDT 2007', | 531 | creationDate: 'Wed Mar 14 11:09:05 PDT 2007', |
532 | updateDate: 'Wed Mar 14 11:09:05 PDT 2007', | 532 | updateDate: 'Wed Mar 14 11:09:05 PDT 2007', |
533 | accessDate: 'Tue Jan 05 01:38:42 PST 2010' | 533 | accessDate: 'Tue Jan 05 01:38:42 PST 2010' |
534 | } | 534 | } |
535 | } | 535 | } |
536 | }, | 536 | }, |
537 | '6dadcd7ab23ece757d6990ce237bdebb68b2df0281c78cc1483d913318112162': { | 537 | '6dadcd7ab23ece757d6990ce237bdebb68b2df0281c78cc1483d913318112162': { |
538 | data: 'u9H4/IGgoAZuCAc7IsjHXbWl9RlIcyWJQuF+upwUgeQ1asbr4SX0WtB5KIfcS91N2nCaNHbHJfr+fVAjZeo0rRd+6PGkmnMLwcluvanKN+5VnfG69Xp6Drs61xq7yxl+SD5AUiU77OcE7be2dRJC449CPA==', | 538 | data: 'u9H4/IGgoAZuCAc7IsjHXbWl9RlIcyWJQuF+upwUgeQ1asbr4SX0WtB5KIfcS91N2nCaNHbHJfr+fVAjZeo0rRd+6PGkmnMLwcluvanKN+5VnfG69Xp6Drs61xq7yxl+SD5AUiU77OcE7be2dRJC449CPA==', |
539 | version: '0.3', | 539 | version: '0.3', |
540 | creationDate: 'Mon Dec 14 02:33:48 PST 2009', | 540 | creationDate: 'Mon Dec 14 02:33:48 PST 2009', |
541 | updateDate: 'Mon Dec 14 02:33:48 PST 2009', | 541 | updateDate: 'Mon Dec 14 02:33:48 PST 2009', |
542 | accessDate: 'Tue Jan 05 01:38:43 PST 2010', | 542 | accessDate: 'Tue Jan 05 01:38:43 PST 2010', |
543 | currentVersion: 'b5d9271386eb38764c1d80c2792eb985d47909f2e0dddd16047f1a6415b70508', | 543 | currentVersion: 'b5d9271386eb38764c1d80c2792eb985d47909f2e0dddd16047f1a6415b70508', |
544 | versions: { | 544 | versions: { |
545 | 'b5d9271386eb38764c1d80c2792eb985d47909f2e0dddd16047f1a6415b70508': { | 545 | 'b5d9271386eb38764c1d80c2792eb985d47909f2e0dddd16047f1a6415b70508': { |
546 | header: '####', | 546 | header: '####', |
547 | data: 'g84GdVAIChqt5x2dNYsVR52cAtNqtO9NBRf3ljXQymtSLYEKgIep0jkzRTlni9fj2Np/MJ1qQg0uGn3qyjukHC8t7n1L52q5OxkrF6ffuYAlP/E8+NQo4Bm3UxmGEsmD8mbH3kVCi8LOJx0ZGaE5SqwafO4GWz5j8YX+dOfuhz2pKdpU6NaSrkCb21RJN+vOmAs5LQ8TfCLc1hd9FPxU6w3H9ys+Y5D6K3XP1cP1PU5N3vTFeq+Yl7n15xOPTsO3e88vPFtINpVjrv8h+VRy1U63MOWXkrHWwdUPKIBWx3nqg+H3dDH+lONWvrfriIMJKlQGF6jzfJFBV6yMArbi6lBlgPMOFIo5Pt4DYkHQvon7JlSC3JbHCIA=', | 547 | data: 'g84GdVAIChqt5x2dNYsVR52cAtNqtO9NBRf3ljXQymtSLYEKgIep0jkzRTlni9fj2Np/MJ1qQg0uGn3qyjukHC8t7n1L52q5OxkrF6ffuYAlP/E8+NQo4Bm3UxmGEsmD8mbH3kVCi8LOJx0ZGaE5SqwafO4GWz5j8YX+dOfuhz2pKdpU6NaSrkCb21RJN+vOmAs5LQ8TfCLc1hd9FPxU6w3H9ys+Y5D6K3XP1cP1PU5N3vTFeq+Yl7n15xOPTsO3e88vPFtINpVjrv8h+VRy1U63MOWXkrHWwdUPKIBWx3nqg+H3dDH+lONWvrfriIMJKlQGF6jzfJFBV6yMArbi6lBlgPMOFIo5Pt4DYkHQvon7JlSC3JbHCIA=', |
548 | version: '0.3', | 548 | version: '0.3', |
549 | creationDate: 'Mon Dec 14 02:33:48 PST 2009', | 549 | creationDate: 'Mon Dec 14 02:33:48 PST 2009', |
550 | updateDate: 'Mon Dec 14 02:33:48 PST 2009', | 550 | updateDate: 'Mon Dec 14 02:33:48 PST 2009', |
551 | accessDate: 'Tue Jan 05 01:38:43 PST 2010' | 551 | accessDate: 'Tue Jan 05 01:38:43 PST 2010' |
552 | } | 552 | } |
553 | } | 553 | } |
554 | }, | 554 | }, |
555 | '8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39': { | 555 | '8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39': { |
556 | data: 'pOMTY3PnUAbwMLDEYNJCMzp4iIA42YWr6gqoomg+P40e7LFUtbt/RQRelQwNIztyUSVLl0rilkZZkBUVvxrtTqvibKITCjJQGQIzvcb+Yl4mNosl2Rpp0xxMU03f1+G7eGbuCc5hJXYVAglhEYplaAPzHbRWXMY8iZXZPBuLVf5PN+rdpgAfkGeZ7Uf9RsQ9p/EglrWXYnTwXi3saUfzIjfvSHm5C+dXTY3FHpIc1YkjFrdVgMkhYQGV60JtZcwFtCEL2NpVljAbRgHoIXTOkzUvep4vxrtfBBWWMuAWEI06432gtnH6IQbrR6jOpwuMt7k/09qy/fARPHs3r4qTJ9r2uqWHJ7tjJw+IChQPC+3l5HcPpFURiw8LGAN1NyY1hUrF6N84RSn7AKS0bLa5qN++5lcjjxn/k8+JqmeUqN1/SYIbGwNnJeZ0vA8yvOxnD20iVADX5kOVqJDwXRPLaF6Oz9KkbOrmANCh+PmGw1i6PduB+FgAU4HViYCw5IGOUZ30Pm1NJofqfbhXvgzn7ey2+kUIAwDyOUpJ9fW+9jW/JU4rcawmzwBYN2V8apOoyc3wQJICm2984wIfVBpygCOZM0QDyVgNo57qKtYH3yMDQSkKvpEUmuhklMYhcV+4X5ggdqx7lYXO9IMDnFf2ZDiZyieTlOlRv/nNVecUB177Xpnq2e+X/ik2rCQWVrIymiV6ltr1DEv0krXKfvXGG/FMZHUmo3m+B5bG4xVhmt0GnHseqvY2Vrl9NksLgq3hTDOGSGIy5Nv8kfrd8B4/6Tavh0SumiyXnrTXyYXzCK9E7IqO/0KAln63VkcHsbOtS8mj1drN0YQ2KKaeIW+Yr3Gm0pbcODsgA6aFfz1itZVeovBqUklhXS+/Es8J8xOSvvSyD/TmlFjuErHa+wwNQvftosfwk9ZTt0eIJS5aLHdU2QsCjdfSy0DEPkk2siGhBX5ZhRzqyIAyXApSmy+e7PIqn/dDR51+D1ZHwoTQyTrd+F08jBWZgU/OvS8MRxNZSxQwsi7bcWZG+w0utrIDB8eSOMVBXI5XBeJb4h5Bzut18C1shGHeGkSJp04=', | 556 | data: 'pOMTY3PnUAbwMLDEYNJCMzp4iIA42YWr6gqoomg+P40e7LFUtbt/RQRelQwNIztyUSVLl0rilkZZkBUVvxrtTqvibKITCjJQGQIzvcb+Yl4mNosl2Rpp0xxMU03f1+G7eGbuCc5hJXYVAglhEYplaAPzHbRWXMY8iZXZPBuLVf5PN+rdpgAfkGeZ7Uf9RsQ9p/EglrWXYnTwXi3saUfzIjfvSHm5C+dXTY3FHpIc1YkjFrdVgMkhYQGV60JtZcwFtCEL2NpVljAbRgHoIXTOkzUvep4vxrtfBBWWMuAWEI06432gtnH6IQbrR6jOpwuMt7k/09qy/fARPHs3r4qTJ9r2uqWHJ7tjJw+IChQPC+3l5HcPpFURiw8LGAN1NyY1hUrF6N84RSn7AKS0bLa5qN++5lcjjxn/k8+JqmeUqN1/SYIbGwNnJeZ0vA8yvOxnD20iVADX5kOVqJDwXRPLaF6Oz9KkbOrmANCh+PmGw1i6PduB+FgAU4HViYCw5IGOUZ30Pm1NJofqfbhXvgzn7ey2+kUIAwDyOUpJ9fW+9jW/JU4rcawmzwBYN2V8apOoyc3wQJICm2984wIfVBpygCOZM0QDyVgNo57qKtYH3yMDQSkKvpEUmuhklMYhcV+4X5ggdqx7lYXO9IMDnFf2ZDiZyieTlOlRv/nNVecUB177Xpnq2e+X/ik2rCQWVrIymiV6ltr1DEv0krXKfvXGG/FMZHUmo3m+B5bG4xVhmt0GnHseqvY2Vrl9NksLgq3hTDOGSGIy5Nv8kfrd8B4/6Tavh0SumiyXnrTXyYXzCK9E7IqO/0KAln63VkcHsbOtS8mj1drN0YQ2KKaeIW+Yr3Gm0pbcODsgA6aFfz1itZVeovBqUklhXS+/Es8J8xOSvvSyD/TmlFjuErHa+wwNQvftosfwk9ZTt0eIJS5aLHdU2QsCjdfSy0DEPkk2siGhBX5ZhRzqyIAyXApSmy+e7PIqn/dDR51+D1ZHwoTQyTrd+F08jBWZgU/OvS8MRxNZSxQwsi7bcWZG+w0utrIDB8eSOMVBXI5XBeJb4h5Bzut18C1shGHeGkSJp04=', |
557 | version: '0.2', | 557 | version: '0.2', |
558 | creationDate: 'Mon Apr 30 16:10:17 PDT 2007', | 558 | creationDate: 'Mon Apr 30 16:10:17 PDT 2007', |
559 | updateDate: 'Mon Apr 30 16:13:27 PDT 2007', | 559 | updateDate: 'Mon Apr 30 16:13:27 PDT 2007', |
560 | accessDate: 'Tue Jan 05 01:38:42 PST 2010', | 560 | accessDate: 'Tue Jan 05 01:38:42 PST 2010', |
561 | currentVersion: 'd175358ea0b9d32c23e4bceff2020eae9a8459466abc18d4399d988e733fc0f8', | 561 | currentVersion: 'd175358ea0b9d32c23e4bceff2020eae9a8459466abc18d4399d988e733fc0f8', |
562 | versions: { | 562 | versions: { |
563 | '8a032b53f7356e2d8b28665211abbe2cf1c79fd8eee4752e83cebdced1c19911': { | 563 | '8a032b53f7356e2d8b28665211abbe2cf1c79fd8eee4752e83cebdced1c19911': { |
564 | header: '####', | 564 | header: '####', |
565 | data: 'OXpNHHSkdsaD91hw2LER+9XKpf8+bh/O+OcLSgG/gAx228UpifOCD4HTAOs0C7IJ5zhAq1L9NjCGb1QWWTFErYEtDEBRBV4kogscP9HWPxYyZHxjwPI0wE7Ri2eD4Rma76Utb+xVnXWuT+vNb8eRUCK8Ur1rlhYafS0uzAYvVqHDNfZaICksxeVQojil/kSPZDMu8ASz5pMNFNCF4SlwDKPRrJJDbNZ62A3px59YJtsla91DGVyOLhb7VNRxEwnXyxENfP78yA6OjvQDc2KhKFUpHbZws54IolLK1I1mY/Z8BiDXPSnOa694Q1eZxy1Kx/jLINZUIPgGg1++YWITx213awOISdf7Oy0/dUpu10Vr1hgAqCVlDp0IuGK01CswRzEdLVpUk1DaGHuin1rryZx9vThUkEJgQQc3ivr8', | 565 | data: 'OXpNHHSkdsaD91hw2LER+9XKpf8+bh/O+OcLSgG/gAx228UpifOCD4HTAOs0C7IJ5zhAq1L9NjCGb1QWWTFErYEtDEBRBV4kogscP9HWPxYyZHxjwPI0wE7Ri2eD4Rma76Utb+xVnXWuT+vNb8eRUCK8Ur1rlhYafS0uzAYvVqHDNfZaICksxeVQojil/kSPZDMu8ASz5pMNFNCF4SlwDKPRrJJDbNZ62A3px59YJtsla91DGVyOLhb7VNRxEwnXyxENfP78yA6OjvQDc2KhKFUpHbZws54IolLK1I1mY/Z8BiDXPSnOa694Q1eZxy1Kx/jLINZUIPgGg1++YWITx213awOISdf7Oy0/dUpu10Vr1hgAqCVlDp0IuGK01CswRzEdLVpUk1DaGHuin1rryZx9vThUkEJgQQc3ivr8', |
566 | version: '0.2', | 566 | version: '0.2', |
567 | creationDate: 'Mon Apr 30 16:10:17 PDT 2007', | 567 | creationDate: 'Mon Apr 30 16:10:17 PDT 2007', |
568 | updateDate: 'Mon Apr 30 16:10:17 PDT 2007', | 568 | updateDate: 'Mon Apr 30 16:10:17 PDT 2007', |
569 | accessDate: 'Mon Apr 30 16:10:17 PDT 2007' | 569 | accessDate: 'Mon Apr 30 16:10:17 PDT 2007' |
570 | }, | 570 | }, |
571 | 'd175358ea0b9d32c23e4bceff2020eae9a8459466abc18d4399d988e733fc0f8': { | 571 | 'd175358ea0b9d32c23e4bceff2020eae9a8459466abc18d4399d988e733fc0f8': { |
572 | header: '####', | 572 | header: '####', |
573 | data: 'tvSUu+NPKHkwt/ZLXdLGdDm4jSxTEtJfsecdpjJ9UGN3Y2EBCmijU5i7q+hMfNDqBJ4/m5Ayju4zYDAKGp2pt8l1TFoDurITdFcV12jL8j3dc4TTD//uC6OtowRN+altgC1Xc0LsSvEPabjAlwfVC5xqirfm5t2mVmnFZ/GALkGLGxRJRduylT6goPwfunkVGwUdqMa3md+9mwYn2gm7CyC0lpcKX8AZ3B4Oa656yRa9m3Wjgb007TtorLIpZO2MzVwxcHBqqy7YpN+zpmZz6Md9VK3L4F724tuXXWnDeVzGxBO7aZVr62hwPMXM6ibCjUScsaS4f0chivA/tBJoyx7OqKhBxREGeGjpHTeLxyHcekbwXhXyeqxBuwG93yGKutUhGLVYcXwe8/+xSeaBGj/j2RWutKbNKG2yQyNPGj2cxJWsR4YfOQJTSOSWT3K6Mmf+r6hLhIo=', | 573 | data: 'tvSUu+NPKHkwt/ZLXdLGdDm4jSxTEtJfsecdpjJ9UGN3Y2EBCmijU5i7q+hMfNDqBJ4/m5Ayju4zYDAKGp2pt8l1TFoDurITdFcV12jL8j3dc4TTD//uC6OtowRN+altgC1Xc0LsSvEPabjAlwfVC5xqirfm5t2mVmnFZ/GALkGLGxRJRduylT6goPwfunkVGwUdqMa3md+9mwYn2gm7CyC0lpcKX8AZ3B4Oa656yRa9m3Wjgb007TtorLIpZO2MzVwxcHBqqy7YpN+zpmZz6Md9VK3L4F724tuXXWnDeVzGxBO7aZVr62hwPMXM6ibCjUScsaS4f0chivA/tBJoyx7OqKhBxREGeGjpHTeLxyHcekbwXhXyeqxBuwG93yGKutUhGLVYcXwe8/+xSeaBGj/j2RWutKbNKG2yQyNPGj2cxJWsR4YfOQJTSOSWT3K6Mmf+r6hLhIo=', |
574 | version: '0.2', | 574 | version: '0.2', |
575 | creationDate: 'Mon Apr 30 16:13:27 PDT 2007', | 575 | creationDate: 'Mon Apr 30 16:13:27 PDT 2007', |
576 | updateDate: 'Mon Apr 30 16:13:27 PDT 2007', | 576 | updateDate: 'Mon Apr 30 16:13:27 PDT 2007', |
577 | accessDate: 'Tue Jan 05 01:38:42 PST 2010' | 577 | accessDate: 'Tue Jan 05 01:38:42 PST 2010' |
578 | } | 578 | } |
579 | } | 579 | } |
580 | }, | 580 | }, |
581 | '9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291': { | 581 | '9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291': { |
582 | data: 'xSjnJLMCEBBiOM2RxFm2EUCxMy9a2eexGsBj851cR/PsJlfG1lCh8HwD1i7HEWVFB2GBK9Pf+U7TpNSYsq9VY+AzBNz4p1aSg3Hswoou4OpCCgnBpeNLkr0q7KBmSVmSH+omECgWzbqux3LiqT7yEWxemVRA4ah4a09DvhB9bpVJiteBGg==', | 582 | data: 'xSjnJLMCEBBiOM2RxFm2EUCxMy9a2eexGsBj851cR/PsJlfG1lCh8HwD1i7HEWVFB2GBK9Pf+U7TpNSYsq9VY+AzBNz4p1aSg3Hswoou4OpCCgnBpeNLkr0q7KBmSVmSH+omECgWzbqux3LiqT7yEWxemVRA4ah4a09DvhB9bpVJiteBGg==', |
583 | version: '0.3', | 583 | version: '0.3', |
584 | creationDate: 'Wed Mar 21 08:29:06 PDT 2007', | 584 | creationDate: 'Wed Mar 21 08:29:06 PDT 2007', |
585 | updateDate: 'Sun Oct 04 14:06:08 PDT 2009', | 585 | updateDate: 'Sun Oct 04 14:06:08 PDT 2009', |
586 | accessDate: 'Tue Jan 05 01:38:39 PST 2010', | 586 | accessDate: 'Tue Jan 05 01:38:39 PST 2010', |
587 | currentVersion: 'a999c255e435e85633f136d0464f29e6d41f87f46e6fb50ca63adeede9a6650a', | 587 | currentVersion: 'a999c255e435e85633f136d0464f29e6d41f87f46e6fb50ca63adeede9a6650a', |
588 | versions: { | 588 | versions: { |
589 | '5da9ecc65677d03f4f31c0f12f000caa4930394a99af8187c05e74b99c851aa7': { | 589 | '5da9ecc65677d03f4f31c0f12f000caa4930394a99af8187c05e74b99c851aa7': { |
590 | header: '####', | 590 | header: '####', |
591 | data: '7wg/yWfSasUjJKV/5ygFfteazVSdqEJ8xGAqtS7m/W2q3rOR+2fr99Il2TzxXCnOe5zV+iir2tOqPQt6BCGbVf0NVwZtvfO/lvfMc7DIwyWuhZ0sS44LBTD9VY9fruuIegktVHSNBoJTCIfAHN/ut1iB80+51An+TdpYT3SGAVM4RdenQ9IdvDOnQo2KE0E7BzHekga800VJrbqI8aJEtmm5mOjte2xHYSPFDCtwURQclwxbNv32hAY/IUkaejqg93WGIzHIIK0+SSDzQwHYQo4yzVGCKKy75eghpvGyg1zbzlv372bND+OuA3laocARFfe4rRd5I5nh8vmSJ+vybh3EIJJzloD+qWk6hsEagkYI0RYu9I2uOfA8drmZ02GV5/ySDsBHX7uhaTPGx4J22rNJoj8s1L7UoaohUHFvUerBvQTir2LPbzqT+B07wZOU0ibtHlaN5C2XMKRxfvGATeR+2J3l7WisCIoRdpQcPFHA7nlTTShBiCVstLxolvd7MMzPOilsi3ecxXLQSeWara4JILqXQCJ4yLbQCMnSpIrZ3TXbwbPZ8fjKjogHNUaBPnmd1hWoc7IVvK9RSFBEdCh9U/hbyPMCiSjdsUCTclmhFmhiVIlB73IyWixmLwHSWSl/ckMxcUK6rB0IPuWcT8iJkxfqOziFhMvC/cNydpN5Nj4WX21c/1M7lVlX10FRx6NIYH5szEXULmLnkfEwr35G9mKJwR2pgZ272UiW2cH64/+M+Kh7XnPbQKxTwVR3FOhR/qdSHeA8MTc9FDslFaTT6YSeJEPoQiLg4c4UdbB7w5nA0o4qg82hiiJbTfT2zFHZeeWOpVO1z4V8SidJrQkh8aL1/Is7KaDVNfL+Lx73gfO6tdSviCJJhD29iTgn+MW4MlGwpeLKpvq+LkXNXi/CVjIa1VqtR/Flk2BqwT2hccgw6E1ML+QdW1n3TvTtdLIvSGheOM5kLdnF76e8Nj0kHDFbnxQMlO7lutngaNBRAvhvSLccT76TMG4OTxNZk5aOre6AIOuUfrFD3KDeOqWie5zpkvTOd/JK/JDFYgbYQh8AqhwJ7VWUH49vfd6AqfwHwdNWymI05F6/0Co4xoQ6qN+iYNConUXz78Uo7AraJuBDQ3a24+wL2mLjnc8jUDFUaAKM6gZUv9+bx1vk6zVdaZcuqgZc6dcyo5Oy8lmbJ/SmRb8BF/Q2nW3SDv77R+p0bKPLmjcytczlMNct58Q1LoiLnGck5v0wByQ0XIMd', | 591 | data: '7wg/yWfSasUjJKV/5ygFfteazVSdqEJ8xGAqtS7m/W2q3rOR+2fr99Il2TzxXCnOe5zV+iir2tOqPQt6BCGbVf0NVwZtvfO/lvfMc7DIwyWuhZ0sS44LBTD9VY9fruuIegktVHSNBoJTCIfAHN/ut1iB80+51An+TdpYT3SGAVM4RdenQ9IdvDOnQo2KE0E7BzHekga800VJrbqI8aJEtmm5mOjte2xHYSPFDCtwURQclwxbNv32hAY/IUkaejqg93WGIzHIIK0+SSDzQwHYQo4yzVGCKKy75eghpvGyg1zbzlv372bND+OuA3laocARFfe4rRd5I5nh8vmSJ+vybh3EIJJzloD+qWk6hsEagkYI0RYu9I2uOfA8drmZ02GV5/ySDsBHX7uhaTPGx4J22rNJoj8s1L7UoaohUHFvUerBvQTir2LPbzqT+B07wZOU0ibtHlaN5C2XMKRxfvGATeR+2J3l7WisCIoRdpQcPFHA7nlTTShBiCVstLxolvd7MMzPOilsi3ecxXLQSeWara4JILqXQCJ4yLbQCMnSpIrZ3TXbwbPZ8fjKjogHNUaBPnmd1hWoc7IVvK9RSFBEdCh9U/hbyPMCiSjdsUCTclmhFmhiVIlB73IyWixmLwHSWSl/ckMxcUK6rB0IPuWcT8iJkxfqOziFhMvC/cNydpN5Nj4WX21c/1M7lVlX10FRx6NIYH5szEXULmLnkfEwr35G9mKJwR2pgZ272UiW2cH64/+M+Kh7XnPbQKxTwVR3FOhR/qdSHeA8MTc9FDslFaTT6YSeJEPoQiLg4c4UdbB7w5nA0o4qg82hiiJbTfT2zFHZeeWOpVO1z4V8SidJrQkh8aL1/Is7KaDVNfL+Lx73gfO6tdSviCJJhD29iTgn+MW4MlGwpeLKpvq+LkXNXi/CVjIa1VqtR/Flk2BqwT2hccgw6E1ML+QdW1n3TvTtdLIvSGheOM5kLdnF76e8Nj0kHDFbnxQMlO7lutngaNBRAvhvSLccT76TMG4OTxNZk5aOre6AIOuUfrFD3KDeOqWie5zpkvTOd/JK/JDFYgbYQh8AqhwJ7VWUH49vfd6AqfwHwdNWymI05F6/0Co4xoQ6qN+iYNConUXz78Uo7AraJuBDQ3a24+wL2mLjnc8jUDFUaAKM6gZUv9+bx1vk6zVdaZcuqgZc6dcyo5Oy8lmbJ/SmRb8BF/Q2nW3SDv77R+p0bKPLmjcytczlMNct58Q1LoiLnGck5v0wByQ0XIMd', |
592 | version: '0.2', | 592 | version: '0.2', |
593 | creationDate: 'Wed Mar 21 08:29:06 PDT 2007', | 593 | creationDate: 'Wed Mar 21 08:29:06 PDT 2007', |
594 | updateDate: 'Wed Mar 21 08:29:06 PDT 2007', | 594 | updateDate: 'Wed Mar 21 08:29:06 PDT 2007', |
595 | accessDate: 'Sun Oct 04 14:05:49 PDT 2009' | 595 | accessDate: 'Sun Oct 04 14:05:49 PDT 2009' |
596 | }, | 596 | }, |
597 | 'a999c255e435e85633f136d0464f29e6d41f87f46e6fb50ca63adeede9a6650a': { | 597 | 'a999c255e435e85633f136d0464f29e6d41f87f46e6fb50ca63adeede9a6650a': { |
598 | header: '####', | 598 | header: '####', |
599 | data: 'xw9i2USOB2xkgG3MBp1+qq9e2nwapnEt0usRAVmUWXcGGLbXJi+ImdrFNGPg3TSZrTIXMdEbLmjxAcxpTWlBfd5NhBVDzY2q/stiNaUWfI8JAHdl7E2CQRHa9quVnxPzYytVbUP01xoUokBWKQnqHZduADt7OKcgLy5iheR0ECoFXT6lKcJtD8mV5TZqKlYHkhNR8FehkNrhX2BWfxDHtlxZQNOK6xBCHF9YQGk3PQqmeIAbvxMiN2sGCdH4pXAURHIcF4uayV96bmCa42r+i4h2p46BcNghSR84ipC6Fyh1y+oGyZ5GqaolmVQcZQ5UbCba57+r5OOSWqmpmbhyoZ8rPOa/ZYFiZDj9UqNl7Ny6fB7PqWjVs9oSLb3oLe3oqfrONvJ/WmttA5J/jztDYYN0peN4AAEiNQLnFZuoHp4S+Wxuf0c+99N+I0egIIgIw88+ssowwMY6Xrf6sxEmA7B6hXB5V7TO3J1DGkVr4Kw6NgxMrFVw1AlqNpBrxKdREYaGRmLwB8/jOC9tr2RzP6SPylXzeOk9/v3XikG0CZckPATqLG2otmZ0pVpJc5XwyKKhDAZWYEzPKXXZoLfdNoa4SAiGF7/otBtH8k1D8d2rDMlhigIjtYR8WvBxCdfvnFeD8w0zewymA1Fbj72Dv8eHtnnNYYsJiHldQimSgcaGkmyFr0oVPo/skLjRjBsQVbiE066eTAjqrcAfKK7pg295Mhgo1aU9cyFPfOha1yiM6BKulihLTMbCr2+KTdMGagVnBxKFmfWJBNbl1J/b5ztazo3A4rIOddUPmGj0uQpaOVLDaFIVvs+3d13JB3iyYOz1nAYlOptS0yzNEMlJMDX4F5gkABGFazoPPQ7PgQ5JUmRrO4BBnp4HvJHNY0Ix9LOUfaLcp/533C43fHTcofB0AVqpdnU2R4lPl9FkUsyeQ1vmY3Z7tE0ZNbM3rE1P26LlEfXg9xbSBzRwS5EOxZF2ZJv9h9a8VPPbMnEUt0dZrXhyUycHF4SfnKLmepZkHTnco64kY9Mc0vJzy5gPCF7z6SDzeA35SX2T25Rl6M+xKSeU1vCv5kPWDpacFhXX/aVJnSlgjYKEWzV4jTGdlg2RA+034JpbsJgDTIqdLYdC44EyZwocR7MObXf0OTprugDIM9AGHFlxPda+TO6Cg0mI7UMYEP/D7AU=', | 599 | data: 'xw9i2USOB2xkgG3MBp1+qq9e2nwapnEt0usRAVmUWXcGGLbXJi+ImdrFNGPg3TSZrTIXMdEbLmjxAcxpTWlBfd5NhBVDzY2q/stiNaUWfI8JAHdl7E2CQRHa9quVnxPzYytVbUP01xoUokBWKQnqHZduADt7OKcgLy5iheR0ECoFXT6lKcJtD8mV5TZqKlYHkhNR8FehkNrhX2BWfxDHtlxZQNOK6xBCHF9YQGk3PQqmeIAbvxMiN2sGCdH4pXAURHIcF4uayV96bmCa42r+i4h2p46BcNghSR84ipC6Fyh1y+oGyZ5GqaolmVQcZQ5UbCba57+r5OOSWqmpmbhyoZ8rPOa/ZYFiZDj9UqNl7Ny6fB7PqWjVs9oSLb3oLe3oqfrONvJ/WmttA5J/jztDYYN0peN4AAEiNQLnFZuoHp4S+Wxuf0c+99N+I0egIIgIw88+ssowwMY6Xrf6sxEmA7B6hXB5V7TO3J1DGkVr4Kw6NgxMrFVw1AlqNpBrxKdREYaGRmLwB8/jOC9tr2RzP6SPylXzeOk9/v3XikG0CZckPATqLG2otmZ0pVpJc5XwyKKhDAZWYEzPKXXZoLfdNoa4SAiGF7/otBtH8k1D8d2rDMlhigIjtYR8WvBxCdfvnFeD8w0zewymA1Fbj72Dv8eHtnnNYYsJiHldQimSgcaGkmyFr0oVPo/skLjRjBsQVbiE066eTAjqrcAfKK7pg295Mhgo1aU9cyFPfOha1yiM6BKulihLTMbCr2+KTdMGagVnBxKFmfWJBNbl1J/b5ztazo3A4rIOddUPmGj0uQpaOVLDaFIVvs+3d13JB3iyYOz1nAYlOptS0yzNEMlJMDX4F5gkABGFazoPPQ7PgQ5JUmRrO4BBnp4HvJHNY0Ix9LOUfaLcp/533C43fHTcofB0AVqpdnU2R4lPl9FkUsyeQ1vmY3Z7tE0ZNbM3rE1P26LlEfXg9xbSBzRwS5EOxZF2ZJv9h9a8VPPbMnEUt0dZrXhyUycHF4SfnKLmepZkHTnco64kY9Mc0vJzy5gPCF7z6SDzeA35SX2T25Rl6M+xKSeU1vCv5kPWDpacFhXX/aVJnSlgjYKEWzV4jTGdlg2RA+034JpbsJgDTIqdLYdC44EyZwocR7MObXf0OTprugDIM9AGHFlxPda+TO6Cg0mI7UMYEP/D7AU=', |
600 | version: '0.3', | 600 | version: '0.3', |
601 | previousVersion: '5da9ecc65677d03f4f31c0f12f000caa4930394a99af8187c05e74b99c851aa7', | 601 | previousVersion: '5da9ecc65677d03f4f31c0f12f000caa4930394a99af8187c05e74b99c851aa7', |
602 | previousVersionKey: 'tVHT9HgAaAzSOMZrMyvyTvuJW6P6cSGU0lUWky8NCtKipfN1BPGcX3sVgEf/PTXwKlNxTgpogRDGhDMIl01RHPaqAIXY+W4x/u3bdH/c2NTlJg==', | 602 | previousVersionKey: 'tVHT9HgAaAzSOMZrMyvyTvuJW6P6cSGU0lUWky8NCtKipfN1BPGcX3sVgEf/PTXwKlNxTgpogRDGhDMIl01RHPaqAIXY+W4x/u3bdH/c2NTlJg==', |
603 | creationDate: 'Sun Oct 04 14:06:08 PDT 2009', | 603 | creationDate: 'Sun Oct 04 14:06:08 PDT 2009', |
604 | updateDate: 'Sun Oct 04 14:06:08 PDT 2009', | 604 | updateDate: 'Sun Oct 04 14:06:08 PDT 2009', |
605 | accessDate: 'Tue Jan 05 01:38:39 PST 2010' | 605 | accessDate: 'Tue Jan 05 01:38:39 PST 2010' |
606 | } | 606 | } |
607 | } | 607 | } |
608 | }, | 608 | }, |
609 | 'c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065': { | 609 | 'c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065': { |
610 | data: 'HxkHstm/nWfD4tTwtaDqycSrP6vR7O9JUQrVXp90Z+prnnvuUMH3SbOlv+AQZFJotuM9VVOh52yWcl8TuSJ5SYR6pwmZVcK9GJd3aRH48wBRrsi9do+pgyxmzfpBm+CMnUtI63LMPfyz/zPndUQSke5+G/Q1b8ZddaShjYHWHEifjdswmKg68FOSu7RuElR/FwRCBwuT02vMRdrjwxSxxM5zWB3vqzN4xKi/jkvqGgIc21m8adTQoxAJARleZiyWXzfPO/MpUs3vA6nxH6ZO1kEayGw3ZAR3nFBiW0UjjdXCBI2b4PcUP0nSJKetRSiudo2cUKfYxsWgEPoG+PM/CQFdnlfGcPf4d0QYnkU+JHff99mLJRmz7VWH7ZeW10NTxzTEr47diHLpyufZ4knnRgfhfKtwOvgmG1n1lXyXDRVTeyfCCX+mB5qdB79ujqon1BiLOGQfLWZ8bDyTZAakpcRJb8qk3zP004XwN5BpO+jC2waMcUEuH62gSQeelGZ19pzBiRz8kn3ZZ8iviX46Wwk3X1TTke9teF7t6Pop4pRkaAj2z2ji0mqWtv4T/3QW4Xgf1mKaT2t8ZaucGvZ3jrxm0CW/Ra3Cy1v1APwRPvKnY5i/WPDS1elq3vNF0NY7EQbXrxBX7hgGpUGRcHSKYsuftIquJFv0HV31jRhd99nZz6Otx82xidWbroIS+37o2Rr56X/AwkLn3DgH+V/YAK24z3Otku+lbaorXnv6C8ZDUhcce2CjgEuCFPmv928YOahgmE0Q0uKniwVXgXACevvACEsduvW32JhI4D4cjRWcSzB6YhqXE8QYCQwK97OykJ30Szd/ZYykiXjdjymyqFOmI9tZqi/PUOKRJ9NhYZaVAeLEFUunvKJWHNs50CqElw6z7nAvBwYyEVvvc+rSpMb2Z/KAWLMzv5R3MeITVUph/RlRlMIrJr0lBhmghnLRt6cGRQcDA2Si3tGAm34K+BpxVbTK0ilTrwzCfaE3Q+dvBTFRcZzMcPFLHL7Mho1/kNMb5S0izIpsNPCb26yH/gueYghVmhRL76HQAH79k00uJcyXt57AYlOYQM7FKDHWciWtJDOMNjVFDYQJJSAS39HukwrLnAdqCNrabrS+AuWhX+CqmMlKQ0PRszjtT7oQaAcgJd0uPOVz3IsjyZ/CmrzSxM+c4iPXugkiiyS2HYU7EEz9IEDvoqwv3Djcy4+3oxPUdmIJGMz2Mk5UXMDyMpqfuujirZI5r5WQWWQLivD9mid5RWDiQp2NYwpnQ/J0emEpWFlf/XkmXW+Em/A0+DOeJtHB729WsKYEvMWOB1nuITkqPJShf8FVEunHzUuLKsG3Hf5yEc3isB5rWGO8hPCueVUKgiS/NSCxQ+iinBTO3gUl+hzK+yaajQUomCx7+N9/n5HTLM5kFsUxZ8gfG3LMEK1iaza4KZeS8Hmb58NU3e3MI0FvlZHa787LqNO226awx3sX/nuTMX+LXx9v8/AMrkRdbzlcYbe6xWRWcBGiTirbTV/CXMgCdop60xfRqCskQPbfj89zpHQS/GiTJjhUwh6XKc/TpbjQJ6OZ6dAQBDxexPa+sjr70kLARxeUhvDUytp/zd/A5OBpuZ0aUz530aQEj8BCAk18vdUks7TWcpiw+/Lq//QLu/9uLU/rLanu2DFUYGXo7bJzy2QpzuoHqKDqa3anK9Gs34NfcIjUbeMUyCzd6CFj+1vGNIk4zZi44PZvmqxZXI8XcxboTpnheNRksjw36FbhIKWMWksIIq+mh4XMnkQcS83PB9rwMHsYY4nKfCwddYfRlbVjcjX+jSlz0r6Oh3KxVDP6dt37CPo8DGMvXSeU4LFMcYBkZ/Q57sH3/gyblyHK8OqYX3pzbnkCqoaOwAseBrQYMel3OgSLt1nAxzhN+ZicCLhpSYHCcHYDcg9xoa/1u4uEMJ0JC+/OzU7xp3nC4OgSYxVzL+gBNnqX4Plep7oikvE7+qymqwtoEhEEuaO5pbOdPG4I7NknL+u/RazjXdy3IGyfUPCCQKsjAEbAkD6OBZZf4St21e4sSgV/anAYFGr87fHMPtXhBxH6QTQPgWqrK75Lr/RaOLihrQHgVhcQHYcTD7nTtPNelbJKx5aGOFtcqykaVizLzrflZWXnk+QAjHo6Hsn/edm7Hbna+JTlyVsttp2vcs8kHQk6xcCpi2kR7nJwb+6kntEEPZAyuFQVwvdkqyC5nAecdg==', | 610 | data: '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', |
611 | version: '0.3', | 611 | version: '0.3', |
612 | creationDate: 'Thu Feb 12 03:45:43 PST 2009', | 612 | creationDate: 'Thu Feb 12 03:45:43 PST 2009', |
613 | updateDate: 'Thu Feb 12 03:54:37 PST 2009', | 613 | updateDate: 'Thu Feb 12 03:54:37 PST 2009', |
614 | accessDate: 'Tue Jan 05 01:38:39 PST 2010', | 614 | accessDate: 'Tue Jan 05 01:38:39 PST 2010', |
615 | currentVersion: '36a2e190796c4c8bf2340fe6d7f1d032b4ca40eaf42b9ba537e1dd06a638b26a', | 615 | currentVersion: '36a2e190796c4c8bf2340fe6d7f1d032b4ca40eaf42b9ba537e1dd06a638b26a', |
616 | versions: { | 616 | versions: { |
617 | '36a2e190796c4c8bf2340fe6d7f1d032b4ca40eaf42b9ba537e1dd06a638b26a': { | 617 | '36a2e190796c4c8bf2340fe6d7f1d032b4ca40eaf42b9ba537e1dd06a638b26a': { |
618 | header: '####', | 618 | header: '####', |
619 | data: '/mnLRePyLGwPaZ+EkbTRHdE4jz4gY99jnHcIp7AeMfcktEpPmUVNWLwGSJUH3ANP/cO1znxACVQPzC+g8IVIK0muJ/lZ4Iw+HkpsfPtBjPZc+bfhsY5Mud00YBsImleIMlbbJGv3l79eSPcea49OwG30xro6b6I0KK3BmSgr+BG2AmBrKVlFRTPFCHRbO+hG/LgW/xqYgwd9f1dnbeVYCm5lA2zdAnwmMwlUIi/J73MbnsSO0Qg858iF1SPQ2Ne9Q8SCyKKEZwBY/YeSgDzoO76Wvqbzk8uPdmZldaF4zql3ffBeb9ZS9KIyyk2vJcLk7c3DUc65vaT+w25+2GSpEXD4YIV6VSr6Brz4w4gzcDMeLve0U6oruqWijz3CDe40yhd4mMt6wTVs4xo0KHc6yKjTuC1ZUQwZvuCiS8T5czaGpc0+fLyfuE+pVBxTlpOjkoZqzk6NsH5lcKMzB1TCscJ8fbOdtJso7DRUvijIE5+ayY9IktZhMeHsk2zurKV95A==', | 619 | data: '/mnLRePyLGwPaZ+EkbTRHdE4jz4gY99jnHcIp7AeMfcktEpPmUVNWLwGSJUH3ANP/cO1znxACVQPzC+g8IVIK0muJ/lZ4Iw+HkpsfPtBjPZc+bfhsY5Mud00YBsImleIMlbbJGv3l79eSPcea49OwG30xro6b6I0KK3BmSgr+BG2AmBrKVlFRTPFCHRbO+hG/LgW/xqYgwd9f1dnbeVYCm5lA2zdAnwmMwlUIi/J73MbnsSO0Qg858iF1SPQ2Ne9Q8SCyKKEZwBY/YeSgDzoO76Wvqbzk8uPdmZldaF4zql3ffBeb9ZS9KIyyk2vJcLk7c3DUc65vaT+w25+2GSpEXD4YIV6VSr6Brz4w4gzcDMeLve0U6oruqWijz3CDe40yhd4mMt6wTVs4xo0KHc6yKjTuC1ZUQwZvuCiS8T5czaGpc0+fLyfuE+pVBxTlpOjkoZqzk6NsH5lcKMzB1TCscJ8fbOdtJso7DRUvijIE5+ayY9IktZhMeHsk2zurKV95A==', |
620 | version: '0.3', | 620 | version: '0.3', |
621 | creationDate: 'Thu Feb 12 03:54:37 PST 2009', | 621 | creationDate: 'Thu Feb 12 03:54:37 PST 2009', |
622 | updateDate: 'Thu Feb 12 03:54:37 PST 2009', | 622 | updateDate: 'Thu Feb 12 03:54:37 PST 2009', |
623 | accessDate: 'Tue Jan 05 01:38:39 PST 2010' | 623 | accessDate: 'Tue Jan 05 01:38:39 PST 2010' |
624 | }, | 624 | }, |
625 | '4ebfe3bec6d419d61eb68a1f25407824e404e3439c23fccde1ac19225b40cb06': { | 625 | '4ebfe3bec6d419d61eb68a1f25407824e404e3439c23fccde1ac19225b40cb06': { |
626 | header: '####', | 626 | header: '####', |
627 | data: '6VvjRN9LKi7tt/HsgqmU0bUdZQNVjVAYNLdCrfKdRJCx3W/GZHHR/AQF0FcvuXIn0MWMUypHpTZW86V459OEoV4W18HXEisQKEiqBnUCBaxBd1NKZDpYsThISXXOhZSbXylbLoB+kBaYzT+Fc7utDheVvVPeMo+iEb3ih42B3En3ZXcgUAdEjfbRUm6st9Jiaz4onwXWknVhkF5QewA0GXDhT2JdakFxfUDay75wKvspq5IszbEYwsu+TEgsbuO4/R/bktgsQUrbhtKIEIiNSccDNx1JkUKvIxrRfp1m0Ar3XJsDfv7YSJSLdyVheOEdIpBkeZ40LN83uzGRMZw1bQsKf+XOFTfacYZBBzwVj8e1rJC6AWlH6Fbn0jXw3JcEljA4zUh5IrYhWtyIZW338UVsMSIp91USeM4uCvPsOLAdyCXiWu5H8MMYGz1rJxVlTbMiq0tn1w1f+CL14v8EiUft7l8kfZzBZzdLvzdedD/wHQ==', | 627 | data: '6VvjRN9LKi7tt/HsgqmU0bUdZQNVjVAYNLdCrfKdRJCx3W/GZHHR/AQF0FcvuXIn0MWMUypHpTZW86V459OEoV4W18HXEisQKEiqBnUCBaxBd1NKZDpYsThISXXOhZSbXylbLoB+kBaYzT+Fc7utDheVvVPeMo+iEb3ih42B3En3ZXcgUAdEjfbRUm6st9Jiaz4onwXWknVhkF5QewA0GXDhT2JdakFxfUDay75wKvspq5IszbEYwsu+TEgsbuO4/R/bktgsQUrbhtKIEIiNSccDNx1JkUKvIxrRfp1m0Ar3XJsDfv7YSJSLdyVheOEdIpBkeZ40LN83uzGRMZw1bQsKf+XOFTfacYZBBzwVj8e1rJC6AWlH6Fbn0jXw3JcEljA4zUh5IrYhWtyIZW338UVsMSIp91USeM4uCvPsOLAdyCXiWu5H8MMYGz1rJxVlTbMiq0tn1w1f+CL14v8EiUft7l8kfZzBZzdLvzdedD/wHQ==', |
628 | version: '0.3', | 628 | version: '0.3', |
629 | creationDate: 'Thu Feb 12 03:45:43 PST 2009', | 629 | creationDate: 'Thu Feb 12 03:45:43 PST 2009', |
630 | updateDate: 'Thu Feb 12 03:45:43 PST 2009', | 630 | updateDate: 'Thu Feb 12 03:45:43 PST 2009', |
631 | accessDate: 'Thu Feb 12 03:45:43 PST 2009' | 631 | accessDate: 'Thu Feb 12 03:45:43 PST 2009' |
632 | }, | 632 | }, |
633 | '7ef137cf242e00136e57ddd262edfe6b418b6f57f3b5e5e15f3ec1232867f6c8': { | 633 | '7ef137cf242e00136e57ddd262edfe6b418b6f57f3b5e5e15f3ec1232867f6c8': { |
634 | header: '####', | 634 | header: '####', |
635 | data: 'N5eWFfsQGHR1WytyXuVySzJ3zenJEB6IaKr2vgWRHTlJFzexXzJmSLoozTP9Z4TumDOLsNrp+EUeIa3Yo+RqSyQKQRFDHXlUYa6c9PPLPXdexSA9JO3AHzMSpL6K0E4gN3BybjL2rbcQwUqJLvCKy44OdiJvORGfIIpTPx2LQ1o4P+chcpOwwe/ZhgLWmNC6FmkTvsU/xJlNuApyD7tPX7Cj3lP8WBfYEPr68BqTKAa9cxai6ZF4BRC//rFob/4pQNHE+7qjOSY9HOnV5uCtZehPYBwfpBiDYhaxWJxXN6sxtpe7GC5CM7gAAHs5lgVaFSWffOAL3zeX7I4vh3j1nYdXoh5KowZJVVUUfhwqJo2T3YDVsaXNibZIaPd9GlbeBBk2HL6c/ao6B8QNwRU7GvMHAdJKta2I9mtU2NCnr0Uwi4rZRR05V4k0HIMLEJxRo/IYAysAYETNIAXzk0twIokOF5JPjP4uTXRZ8LdiS6JqfoUu3Jv/7yq8wrKZM7DaQA==', | 635 | data: 'N5eWFfsQGHR1WytyXuVySzJ3zenJEB6IaKr2vgWRHTlJFzexXzJmSLoozTP9Z4TumDOLsNrp+EUeIa3Yo+RqSyQKQRFDHXlUYa6c9PPLPXdexSA9JO3AHzMSpL6K0E4gN3BybjL2rbcQwUqJLvCKy44OdiJvORGfIIpTPx2LQ1o4P+chcpOwwe/ZhgLWmNC6FmkTvsU/xJlNuApyD7tPX7Cj3lP8WBfYEPr68BqTKAa9cxai6ZF4BRC//rFob/4pQNHE+7qjOSY9HOnV5uCtZehPYBwfpBiDYhaxWJxXN6sxtpe7GC5CM7gAAHs5lgVaFSWffOAL3zeX7I4vh3j1nYdXoh5KowZJVVUUfhwqJo2T3YDVsaXNibZIaPd9GlbeBBk2HL6c/ao6B8QNwRU7GvMHAdJKta2I9mtU2NCnr0Uwi4rZRR05V4k0HIMLEJxRo/IYAysAYETNIAXzk0twIokOF5JPjP4uTXRZ8LdiS6JqfoUu3Jv/7yq8wrKZM7DaQA==', |
636 | version: '0.3', | 636 | version: '0.3', |
637 | creationDate: 'Thu Feb 12 03:47:39 PST 2009', | 637 | creationDate: 'Thu Feb 12 03:47:39 PST 2009', |
638 | updateDate: 'Thu Feb 12 03:47:39 PST 2009', | 638 | updateDate: 'Thu Feb 12 03:47:39 PST 2009', |
639 | accessDate: 'Thu Feb 12 03:47:39 PST 2009' | 639 | accessDate: 'Thu Feb 12 03:47:39 PST 2009' |
640 | } | 640 | } |
641 | } | 641 | } |
642 | }, | 642 | }, |
643 | 'ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c': { | 643 | 'ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c': { |
644 | data: 'zbQlGR1fT8HoH6KvOPBoaIjMUsVMh8MSNIzPO2muIMJDVfXB2rEcPnIFl8fNv9BtE9OLecuex3BQVJKGXdVGFYVNiSS0SgPoEpyD6GJntEIOaB7GnhVflTm8fT7Ba8ArS4r+fIL32Jx9F8sYrL6jKPWeuImGHK+x3X32uORI6znkRac7J727TiTPlbj03X/Fj3Of6Bp9Wa4xbVMwzi+R6NRKD4A6Za3mqhoSpYFeHWld8+ChJU/w2wFkj292OjPBzvvz/SR2Zth+AXTChreQ3Zl1hWNGmU2Ep8ijFCYwcamgPkQwh4vBk9NJlzIgadORcb/0EPDxn638VNA0dbpW8MZUCIMWVe3A8VgdllWxei7dDy1ri6xsKlFovLYjRRPXgAqRSqVATqwyXqhBWhoV6VZ5NaSUGvM8okC2GQSweLuz29py0F987MISmLjav4gdvcMA1wn7FOIaFTNg7oy2CxZefGhHT3sHfX/PIvs/ovfj+7TewI0k+HR414az2D5reo7S5I4+roCm1QLVpPNcXUxbAmEbjF8JCsTtECZ4kdpG39dN6BaMlHoHSN3wu05uTSn+sL7g3Cg0pVLlnHo9baw3fUnVJp3MCEgZJELaiI/WF1Om2y2S9UeLur18z5T7hHFv3Px28D7c22HEDdF2CObeh2uOlZGAa06lp7YlYeoNtb4CqLlZAMK0xIHfNUceC4OMNvqyGswd5WJsYQEnMry20OkxY6YinnQfjAml54B6WlvNVlg/YaKjw5AVinUHjzEFfQbcBFnFGpqg5qJk9hZmb1VI6Ujhq73fPydSfkvfScTImqxCNPD/BR8ovoaJtNpE2gmcoX9A5zhZgu5xUnUnXoaQu0l7K9kWof/UmCCl0O1A6j41aebWr+aoFMalaOPzNJ02vfLuW155IwjFQvRuAp6EuktZ2dFKyFl3QnLbwsMnitReXMoW30cqTYg7ODQnopE73RIb41Nj07qdx6FQMzw4gAIEFBe1iRvlMHQazZCb2ndVvgtK3ZcPNtDoahuPRxMLaKZlRnpa8E5F4o8NHYNivshawZi36Hk6w0dOimCiuk/zvJ1mtx8hhX7B5dsXlNcKxLSvI1onEm2x9HL318xJeT0y29alzPYVFuQs5kq1+UV3h2hL4E/H8h+5mWtTLf/MjaTZ09okW/etuHFFjCmLoKwugk70z2yLWEJGmbjw', | 644 | data: 'zbQlGR1fT8HoH6KvOPBoaIjMUsVMh8MSNIzPO2muIMJDVfXB2rEcPnIFl8fNv9BtE9OLecuex3BQVJKGXdVGFYVNiSS0SgPoEpyD6GJntEIOaB7GnhVflTm8fT7Ba8ArS4r+fIL32Jx9F8sYrL6jKPWeuImGHK+x3X32uORI6znkRac7J727TiTPlbj03X/Fj3Of6Bp9Wa4xbVMwzi+R6NRKD4A6Za3mqhoSpYFeHWld8+ChJU/w2wFkj292OjPBzvvz/SR2Zth+AXTChreQ3Zl1hWNGmU2Ep8ijFCYwcamgPkQwh4vBk9NJlzIgadORcb/0EPDxn638VNA0dbpW8MZUCIMWVe3A8VgdllWxei7dDy1ri6xsKlFovLYjRRPXgAqRSqVATqwyXqhBWhoV6VZ5NaSUGvM8okC2GQSweLuz29py0F987MISmLjav4gdvcMA1wn7FOIaFTNg7oy2CxZefGhHT3sHfX/PIvs/ovfj+7TewI0k+HR414az2D5reo7S5I4+roCm1QLVpPNcXUxbAmEbjF8JCsTtECZ4kdpG39dN6BaMlHoHSN3wu05uTSn+sL7g3Cg0pVLlnHo9baw3fUnVJp3MCEgZJELaiI/WF1Om2y2S9UeLur18z5T7hHFv3Px28D7c22HEDdF2CObeh2uOlZGAa06lp7YlYeoNtb4CqLlZAMK0xIHfNUceC4OMNvqyGswd5WJsYQEnMry20OkxY6YinnQfjAml54B6WlvNVlg/YaKjw5AVinUHjzEFfQbcBFnFGpqg5qJk9hZmb1VI6Ujhq73fPydSfkvfScTImqxCNPD/BR8ovoaJtNpE2gmcoX9A5zhZgu5xUnUnXoaQu0l7K9kWof/UmCCl0O1A6j41aebWr+aoFMalaOPzNJ02vfLuW155IwjFQvRuAp6EuktZ2dFKyFl3QnLbwsMnitReXMoW30cqTYg7ODQnopE73RIb41Nj07qdx6FQMzw4gAIEFBe1iRvlMHQazZCb2ndVvgtK3ZcPNtDoahuPRxMLaKZlRnpa8E5F4o8NHYNivshawZi36Hk6w0dOimCiuk/zvJ1mtx8hhX7B5dsXlNcKxLSvI1onEm2x9HL318xJeT0y29alzPYVFuQs5kq1+UV3h2hL4E/H8h+5mWtTLf/MjaTZ09okW/etuHFFjCmLoKwugk70z2yLWEJGmbjw', |
645 | version: '0.2', | 645 | version: '0.2', |
646 | creationDate: 'Wed Mar 14 07:51:17 PDT 2007', | 646 | creationDate: 'Wed Mar 14 07:51:17 PDT 2007', |
647 | updateDate: 'Wed Apr 25 02:14:05 PDT 2007', | 647 | updateDate: 'Wed Apr 25 02:14:05 PDT 2007', |
648 | accessDate: 'Tue Jan 05 01:38:39 PST 2010', | 648 | accessDate: 'Tue Jan 05 01:38:39 PST 2010', |
649 | currentVersion: '55ab21a3c8f10df776aaaf923f439b7080d9fcc71b192a51cd0f1e17139a1926', | 649 | currentVersion: '55ab21a3c8f10df776aaaf923f439b7080d9fcc71b192a51cd0f1e17139a1926', |
650 | versions: { | 650 | versions: { |
651 | '3895963f82854530ff754c8e2d1eaef8d884a8cba7cd058b8b7adcdc12be3da8': { | 651 | '3895963f82854530ff754c8e2d1eaef8d884a8cba7cd058b8b7adcdc12be3da8': { |
652 | header: '####', | 652 | header: '####', |
653 | data: 'rXmjQYZgxv9jpFus3T/qa9Qc1lxt+mDF+dmZeDmDG3IiE/LnonGt2MqL+YlbFzisF99Uv0IQGOZCPigtBwOXB9m6R6R3lEy/YhD/C6b10s80OBj3yr3PoTsoTmbnmZMYd4r+qx8SaoLLkR0aK6NADYZXebR5QgVtwF/a01EifI6YxH1wm1RX3kyRhIrMzOtL8zHbstPvW4sRtv2YpZqlZqBTdoiqztDUZTKEcCcU5QLnHYMNAVpDHE7D9WvQy8Il1taAbxg97Ir+2ktZLjqfJdKhU7ZLv8fcJiRgnQKPqDWcqpjA+CXM6Ak1HCf9SRJh6Hl64+fk3jEVAPmHvry/xq2RPCG2YnVNWZ+uL3QNuH4zt+IbP4FnrxkCAprmEiNwvuEefMgliGRd+FowIaiFWXcEtYxxQvRDujZN6eoTUU0KVnuy85PKi3ih0ZECoDM88MFhztwCG9/nJQ==', | 653 | data: 'rXmjQYZgxv9jpFus3T/qa9Qc1lxt+mDF+dmZeDmDG3IiE/LnonGt2MqL+YlbFzisF99Uv0IQGOZCPigtBwOXB9m6R6R3lEy/YhD/C6b10s80OBj3yr3PoTsoTmbnmZMYd4r+qx8SaoLLkR0aK6NADYZXebR5QgVtwF/a01EifI6YxH1wm1RX3kyRhIrMzOtL8zHbstPvW4sRtv2YpZqlZqBTdoiqztDUZTKEcCcU5QLnHYMNAVpDHE7D9WvQy8Il1taAbxg97Ir+2ktZLjqfJdKhU7ZLv8fcJiRgnQKPqDWcqpjA+CXM6Ak1HCf9SRJh6Hl64+fk3jEVAPmHvry/xq2RPCG2YnVNWZ+uL3QNuH4zt+IbP4FnrxkCAprmEiNwvuEefMgliGRd+FowIaiFWXcEtYxxQvRDujZN6eoTUU0KVnuy85PKi3ih0ZECoDM88MFhztwCG9/nJQ==', |
654 | version: '0.2', | 654 | version: '0.2', |
655 | creationDate: 'Wed Mar 14 07:51:17 PDT 2007', | 655 | creationDate: 'Wed Mar 14 07:51:17 PDT 2007', |
656 | updateDate: 'Wed Mar 14 07:51:17 PDT 2007', | 656 | updateDate: 'Wed Mar 14 07:51:17 PDT 2007', |
657 | accessDate: 'Wed Apr 25 01:37:27 PDT 2007' | 657 | accessDate: 'Wed Apr 25 01:37:27 PDT 2007' |
658 | }, | 658 | }, |
659 | '5311936f6a95cf123007ef867388adb5c1ec5b2cf1173d66e501daa16488e42e': { | 659 | '5311936f6a95cf123007ef867388adb5c1ec5b2cf1173d66e501daa16488e42e': { |
660 | header: '####', | 660 | header: '####', |
661 | data: '+VirbcZ59SiN9UJKrQkjQx0Z4avHIhvw12Hq7fs+Qnoz4RgCS17fqzYyJe+jYorjlMPjzUcALYOTobqJJp4Sp8v5nOilHW64Gny2XRp59PQPg0zE4TP22l1PzK04+qJusR5NLPU39hYbW+InkDapdIhdf+nIruqeA311bRLg90A8xmpzio6PkZxXmhZMabbEVfXsYFBQKVBFloTMusBG2eaxTjeK0hOAk0uEc9RGOEwCOvZvjRFCP8DyZ5T6QV1pYYgBFBwSFrB/koXmBmObj8zscJXQ4H4UWC0yw1B3ABbhNX7vC9q+vgZTxnGqI6GvzLcrzaXKTEyfa9twq+vKFX1hqDmM0UVLw0dPOy0/3tabJjFrYbz5EEKVin9UqWhuy5YIvHEJlMkH190Zo+lPMuHvD8TiAU1M/n1bTQSBQb/8STD6uqefbKS/s/bXcS+bdVKBmSgCuutBznYO', | 661 | data: '+VirbcZ59SiN9UJKrQkjQx0Z4avHIhvw12Hq7fs+Qnoz4RgCS17fqzYyJe+jYorjlMPjzUcALYOTobqJJp4Sp8v5nOilHW64Gny2XRp59PQPg0zE4TP22l1PzK04+qJusR5NLPU39hYbW+InkDapdIhdf+nIruqeA311bRLg90A8xmpzio6PkZxXmhZMabbEVfXsYFBQKVBFloTMusBG2eaxTjeK0hOAk0uEc9RGOEwCOvZvjRFCP8DyZ5T6QV1pYYgBFBwSFrB/koXmBmObj8zscJXQ4H4UWC0yw1B3ABbhNX7vC9q+vgZTxnGqI6GvzLcrzaXKTEyfa9twq+vKFX1hqDmM0UVLw0dPOy0/3tabJjFrYbz5EEKVin9UqWhuy5YIvHEJlMkH190Zo+lPMuHvD8TiAU1M/n1bTQSBQb/8STD6uqefbKS/s/bXcS+bdVKBmSgCuutBznYO', |
662 | version: '0.2', | 662 | version: '0.2', |
663 | creationDate: 'Wed Apr 25 01:39:26 PDT 2007', | 663 | creationDate: 'Wed Apr 25 01:39:26 PDT 2007', |
664 | updateDate: 'Wed Apr 25 01:39:26 PDT 2007', | 664 | updateDate: 'Wed Apr 25 01:39:26 PDT 2007', |
665 | accessDate: 'Wed Apr 25 01:39:26 PDT 2007' | 665 | accessDate: 'Wed Apr 25 01:39:26 PDT 2007' |
666 | }, | 666 | }, |
667 | '55ab21a3c8f10df776aaaf923f439b7080d9fcc71b192a51cd0f1e17139a1926': { | 667 | '55ab21a3c8f10df776aaaf923f439b7080d9fcc71b192a51cd0f1e17139a1926': { |
668 | header: '####', | 668 | header: '####', |
669 | data: 'P1LfM+8PA/kyelFsojabLfBW9D0Aey5qDClz0OTdSamMT2Mv1U35eKcr6ilUrbtW+dKJotAzs3B1dYGzaEQ1j9HnhiL2pk4wgT1JWGe5c9frmFX/3YGO63c2ngnaC/Rrv3LC251cLVS1aoWNPskWkjZLzF7EiWbAeNYTplSa6MWm2LdHAm6xq2dcgYx53RJVvjnsCzpghQdzL96G8ScJjnUx8FC8mHW4Ds0rkHTeoM344Ao8J3o1XwoFqFFJ2X8+lSkj8LVVdjff1EHIicjrMM0oJG8VyxK2TxMvg4mnLWP4ALfh24Wrb9XmrM0NjhQXBo07tL9dwa7sHHKiBrM74644vBR7NB0+Laedg8D+6FmgNoR6icB+qvxCIIvAhOpJ0er9f0CGDDS06knx/lDtVVNewzxx4ATuG0HQn8M61eU83EfbKWG4Mg+9jtRcW0/bdFW/FQr/OeKg', | 669 | data: 'P1LfM+8PA/kyelFsojabLfBW9D0Aey5qDClz0OTdSamMT2Mv1U35eKcr6ilUrbtW+dKJotAzs3B1dYGzaEQ1j9HnhiL2pk4wgT1JWGe5c9frmFX/3YGO63c2ngnaC/Rrv3LC251cLVS1aoWNPskWkjZLzF7EiWbAeNYTplSa6MWm2LdHAm6xq2dcgYx53RJVvjnsCzpghQdzL96G8ScJjnUx8FC8mHW4Ds0rkHTeoM344Ao8J3o1XwoFqFFJ2X8+lSkj8LVVdjff1EHIicjrMM0oJG8VyxK2TxMvg4mnLWP4ALfh24Wrb9XmrM0NjhQXBo07tL9dwa7sHHKiBrM74644vBR7NB0+Laedg8D+6FmgNoR6icB+qvxCIIvAhOpJ0er9f0CGDDS06knx/lDtVVNewzxx4ATuG0HQn8M61eU83EfbKWG4Mg+9jtRcW0/bdFW/FQr/OeKg', |
670 | version: '0.2', | 670 | version: '0.2', |
671 | creationDate: 'Wed Apr 25 02:14:05 PDT 2007', | 671 | creationDate: 'Wed Apr 25 02:14:05 PDT 2007', |
672 | updateDate: 'Wed Apr 25 02:14:05 PDT 2007', | 672 | updateDate: 'Wed Apr 25 02:14:05 PDT 2007', |
673 | accessDate: 'Tue Jan 05 01:38:39 PST 2010' | 673 | accessDate: 'Tue Jan 05 01:38:39 PST 2010' |
674 | }, | 674 | }, |
675 | '5c622bec0fb939da012beb98a858a4e16bd670b3e6fe1f7c92a247f88a65c747': { | 675 | '5c622bec0fb939da012beb98a858a4e16bd670b3e6fe1f7c92a247f88a65c747': { |
676 | header: '####', | 676 | header: '####', |
677 | data: 'XGlplDTD1xamZO04H6RiqcLd7XaPwxI3MqpKTCVHPBoMEkwE4A1izGjFKdPqHbQIuYYcT9xDgPOknlkP89jDTfcR4UfENtKHFgFaMee4orSER+MhldJRxMwPLorZmMNNZzVmTmwJS7FI9jYiXEvDbcyw41kN+SA0mxzWpc9emaX4TmZHzlBpY2zXKJLyN3otYYzcTWzuu7DJejWrB+CnNp925X9vVomBPfp/Gt4tiOFsE2ZyEf1B/7cDmMszlQgEgGJONS+C8Qyr+X3GEh5iPoYsGpMNmF7aYnZNciE/B5lP/ABVbZIi2KfmRlSf7Cc+kMkUXyHxOeZHuVv1ZlzfIe3gXlD0/yUJFHNju8ai+F3hpSkhMatf71mLQzD5oFrTmKatH+zQZhGPP9dQxG1cgZRcjbyUQJMazo+0TJuNXNndi/oiRzRJjYRUbZKsfRzIAEU=', | 677 | data: 'XGlplDTD1xamZO04H6RiqcLd7XaPwxI3MqpKTCVHPBoMEkwE4A1izGjFKdPqHbQIuYYcT9xDgPOknlkP89jDTfcR4UfENtKHFgFaMee4orSER+MhldJRxMwPLorZmMNNZzVmTmwJS7FI9jYiXEvDbcyw41kN+SA0mxzWpc9emaX4TmZHzlBpY2zXKJLyN3otYYzcTWzuu7DJejWrB+CnNp925X9vVomBPfp/Gt4tiOFsE2ZyEf1B/7cDmMszlQgEgGJONS+C8Qyr+X3GEh5iPoYsGpMNmF7aYnZNciE/B5lP/ABVbZIi2KfmRlSf7Cc+kMkUXyHxOeZHuVv1ZlzfIe3gXlD0/yUJFHNju8ai+F3hpSkhMatf71mLQzD5oFrTmKatH+zQZhGPP9dQxG1cgZRcjbyUQJMazo+0TJuNXNndi/oiRzRJjYRUbZKsfRzIAEU=', |
678 | version: '0.2', | 678 | version: '0.2', |
679 | creationDate: 'Wed Apr 25 01:51:49 PDT 2007', | 679 | creationDate: 'Wed Apr 25 01:51:49 PDT 2007', |
680 | updateDate: 'Wed Apr 25 01:51:49 PDT 2007', | 680 | updateDate: 'Wed Apr 25 01:51:49 PDT 2007', |
681 | accessDate: 'Wed Apr 25 01:51:49 PDT 2007' | 681 | accessDate: 'Wed Apr 25 01:51:49 PDT 2007' |
682 | }, | 682 | }, |
683 | 'bad48f8ab053804a02bec678db01baf24de35ef04a17b90e1362e67fa352e4a4': { | 683 | 'bad48f8ab053804a02bec678db01baf24de35ef04a17b90e1362e67fa352e4a4': { |
684 | header: '####', | 684 | header: '####', |
685 | data: 'SXl3D4C5Yt81L/117xsHYjZxT/fANq09VZsMNAz3Gcn2+2gopG+1K0JFg/1Mbjt4EMbe5Or42zBlJPo5EAldAfWu4MoTkQzo/wKPzgOWlIi3A9QwZegw3yCuHvJv8iNcpjGfpY0OCzTZKNomTtwc75l+8FqgwPDW4wDkPG98275ERDR8mFSZfUAiQxlTnCbskFneUQ6hdN2gywkyJKuTEcrMkIpzwe9uqPaQg8GjUvvy162/LVaSQAVRIiTbW5URCD+hT5cKOkmFeBejHar8zR3SQQ+tIJlKERBwfE0sNR+RebSboYxWPECYPp0DMj30FnHbfYIVTgRCIlepy2hfis0+9C7dop0jK2nFREjcxSIqonF+juCrfJDt4cTlpn2SmcoMJQsUOedSh6ZoWweXm7lu8buCbA2Q6SY1L6jz7okwIikIinxGDq3qT1pWSgpntI8wvYZ8RD0umJsoAzPYH9zlfQ==', | 685 | data: 'SXl3D4C5Yt81L/117xsHYjZxT/fANq09VZsMNAz3Gcn2+2gopG+1K0JFg/1Mbjt4EMbe5Or42zBlJPo5EAldAfWu4MoTkQzo/wKPzgOWlIi3A9QwZegw3yCuHvJv8iNcpjGfpY0OCzTZKNomTtwc75l+8FqgwPDW4wDkPG98275ERDR8mFSZfUAiQxlTnCbskFneUQ6hdN2gywkyJKuTEcrMkIpzwe9uqPaQg8GjUvvy162/LVaSQAVRIiTbW5URCD+hT5cKOkmFeBejHar8zR3SQQ+tIJlKERBwfE0sNR+RebSboYxWPECYPp0DMj30FnHbfYIVTgRCIlepy2hfis0+9C7dop0jK2nFREjcxSIqonF+juCrfJDt4cTlpn2SmcoMJQsUOedSh6ZoWweXm7lu8buCbA2Q6SY1L6jz7okwIikIinxGDq3qT1pWSgpntI8wvYZ8RD0umJsoAzPYH9zlfQ==', |
686 | version: '0.2', | 686 | version: '0.2', |
687 | creationDate: 'Wed Apr 25 02:01:21 PDT 2007', | 687 | creationDate: 'Wed Apr 25 02:01:21 PDT 2007', |
688 | updateDate: 'Wed Apr 25 02:01:21 PDT 2007', | 688 | updateDate: 'Wed Apr 25 02:01:21 PDT 2007', |
689 | accessDate: 'Wed Apr 25 02:01:21 PDT 2007' | 689 | accessDate: 'Wed Apr 25 02:01:21 PDT 2007' |
690 | }, | 690 | }, |
691 | 'c03d1fcf5b6981741f5d4787315534641c61daee9aa3c063540fbb704989ded6': { | 691 | 'c03d1fcf5b6981741f5d4787315534641c61daee9aa3c063540fbb704989ded6': { |
692 | header: '####', | 692 | header: '####', |
693 | data: 'sbn5IDJM7VtYov3sqW9+/0USxZEw2xq8di1XVPMMZ6kN6oZZrAY7ukxXHYh+mfuIa1/uV4i4v1YCaKZQShLgUS4cchlK4nnNVL8zejGwB+PaY0E8Um/Jg6E4UAFAZ+haZwzWLQS8lJ1r4hNMTeFqsDRUhC30awJRz8e0rBejLZiS2Hk/jgpH3i8Za1GwDzogw11iHXejYI7MaQGB0E9eQsYYTxGjmzcLfVYkd4AKj5pSEHvsKZklSuWIyDzwaFiIO7xqcJmS/8Wkm63JGNOW3nLR5Ao9V/2vthFHBqS2lQNRnkPWXbmNK3v7vi57zu461w1Nn1U/70EvhHRMk8BdML3XI/U6WgDARjQuVsB8FnTkzapaORG5vUd7nTtWjPdyQzOqacm2YKWpAiG6fUQTZiBusEd8jdnv8BioGUTbXgNVG23zcRbbbEdjKc1aizXHQE1LnROvoHZHkwg=', | 693 | data: 'sbn5IDJM7VtYov3sqW9+/0USxZEw2xq8di1XVPMMZ6kN6oZZrAY7ukxXHYh+mfuIa1/uV4i4v1YCaKZQShLgUS4cchlK4nnNVL8zejGwB+PaY0E8Um/Jg6E4UAFAZ+haZwzWLQS8lJ1r4hNMTeFqsDRUhC30awJRz8e0rBejLZiS2Hk/jgpH3i8Za1GwDzogw11iHXejYI7MaQGB0E9eQsYYTxGjmzcLfVYkd4AKj5pSEHvsKZklSuWIyDzwaFiIO7xqcJmS/8Wkm63JGNOW3nLR5Ao9V/2vthFHBqS2lQNRnkPWXbmNK3v7vi57zu461w1Nn1U/70EvhHRMk8BdML3XI/U6WgDARjQuVsB8FnTkzapaORG5vUd7nTtWjPdyQzOqacm2YKWpAiG6fUQTZiBusEd8jdnv8BioGUTbXgNVG23zcRbbbEdjKc1aizXHQE1LnROvoHZHkwg=', |
694 | version: '0.2', | 694 | version: '0.2', |
695 | creationDate: 'Wed Apr 25 01:59:57 PDT 2007', | 695 | creationDate: 'Wed Apr 25 01:59:57 PDT 2007', |
696 | updateDate: 'Wed Apr 25 01:59:57 PDT 2007', | 696 | updateDate: 'Wed Apr 25 01:59:57 PDT 2007', |
697 | accessDate: 'Wed Apr 25 01:59:57 PDT 2007' | 697 | accessDate: 'Wed Apr 25 01:59:57 PDT 2007' |
698 | }, | 698 | }, |
699 | 'dbc283f49de6e303c06a52725b8187f344ba7b433b0158d704f094edba782710': { | 699 | 'dbc283f49de6e303c06a52725b8187f344ba7b433b0158d704f094edba782710': { |
700 | header: '####', | 700 | header: '####', |
701 | data: 'fbNrpIoYF+gpMUjSxoOc9Y68qRlE2yk7FPPkrHTu07HHWkAWy7H7nFw4BwGiFViMkyEC2orUrMeDYhKmMYFj8DEcALk6452BtNutGZSoqDhD8xnSEPF6fP2Xyy+vZHp4JWDXZt/xHk4vPbxcwTTlmRz5aO8ChXIH5iqfRL9+Dx+gJDKgKmCRMZYMT1pyOUewmsT6QDYdGFJTRRiDmoLfCVAXhJRtqQSBcx3kN3kuf8gyOMAeJnFGISTAj7THzo7eGuQol1omTMgGbDZoL7WJNfZIDamiT9TWwzp3UmQcKIsRvA2ZKtePWRmpWyq6WydJgFXHUuUDVpwT+kc1Rn9Wq2zwm1VBw6gqKCp6W9bZO86rRMs2CtuLT+agSpqb4kz4SEYDCW0+aUsJDCYBXx5yWRM26r0XAbU6X0D+xopGuaVzsV5G7chkCO8mUsjHzZCK7hOAz6OgjR2+', | 701 | data: 'fbNrpIoYF+gpMUjSxoOc9Y68qRlE2yk7FPPkrHTu07HHWkAWy7H7nFw4BwGiFViMkyEC2orUrMeDYhKmMYFj8DEcALk6452BtNutGZSoqDhD8xnSEPF6fP2Xyy+vZHp4JWDXZt/xHk4vPbxcwTTlmRz5aO8ChXIH5iqfRL9+Dx+gJDKgKmCRMZYMT1pyOUewmsT6QDYdGFJTRRiDmoLfCVAXhJRtqQSBcx3kN3kuf8gyOMAeJnFGISTAj7THzo7eGuQol1omTMgGbDZoL7WJNfZIDamiT9TWwzp3UmQcKIsRvA2ZKtePWRmpWyq6WydJgFXHUuUDVpwT+kc1Rn9Wq2zwm1VBw6gqKCp6W9bZO86rRMs2CtuLT+agSpqb4kz4SEYDCW0+aUsJDCYBXx5yWRM26r0XAbU6X0D+xopGuaVzsV5G7chkCO8mUsjHzZCK7hOAz6OgjR2+', |
702 | version: '0.2', | 702 | version: '0.2', |
703 | creationDate: 'Wed Apr 25 01:38:17 PDT 2007', | 703 | creationDate: 'Wed Apr 25 01:38:17 PDT 2007', |
704 | updateDate: 'Wed Apr 25 01:38:17 PDT 2007', | 704 | updateDate: 'Wed Apr 25 01:38:17 PDT 2007', |
705 | accessDate: 'Wed Apr 25 01:38:17 PDT 2007' | 705 | accessDate: 'Wed Apr 25 01:38:17 PDT 2007' |
706 | }, | 706 | }, |
707 | 'ec525dd942f72b71b5fa1aca0a36a9960b71608bb27f32bc7923713bde021b12': { | 707 | 'ec525dd942f72b71b5fa1aca0a36a9960b71608bb27f32bc7923713bde021b12': { |
708 | header: '####', | 708 | header: '####', |
709 | data: 'AHP4MFiGukFCCnjLDGoqJUDEr6QNL+KoZlcwOqJIYusRtl5qmhZSsODHbAEpmadxLGogDPrWoH5/XLZ85ASGRF5ALzDgrFKP47/bSEzKVTDABY5BJSqvKgS/lCf2LdR7+0HWUVJ6Z3GOb9GqsXC70pMxDo/RfclOQPa+k/sXCW5u0TmLb/0i/dZEM8N++4umXsyy2WPLtUVzQZ/VdTMDwl50FeQxu3aNGy4qYd4XFk/7gxBH9skBD6/GqpNajHJrcbi/WZt7PZiN9skoVZHhm3YLmteP5hJnrcCGBFJHWuQpXfB7NR8rNmd2c6maemKYmUlX25wQF7JPcROOcyT8iYpF4Hk/eSPs0CSkaDdqSD0Nj9E4kqZrHfVGMwBbDFyAzdHTN3EyGuC4cBXdfNZbdBqwghuB1x7RLXs/pbXg1xqukjRdPLTxUogPdaQBHGo=', | 709 | data: 'AHP4MFiGukFCCnjLDGoqJUDEr6QNL+KoZlcwOqJIYusRtl5qmhZSsODHbAEpmadxLGogDPrWoH5/XLZ85ASGRF5ALzDgrFKP47/bSEzKVTDABY5BJSqvKgS/lCf2LdR7+0HWUVJ6Z3GOb9GqsXC70pMxDo/RfclOQPa+k/sXCW5u0TmLb/0i/dZEM8N++4umXsyy2WPLtUVzQZ/VdTMDwl50FeQxu3aNGy4qYd4XFk/7gxBH9skBD6/GqpNajHJrcbi/WZt7PZiN9skoVZHhm3YLmteP5hJnrcCGBFJHWuQpXfB7NR8rNmd2c6maemKYmUlX25wQF7JPcROOcyT8iYpF4Hk/eSPs0CSkaDdqSD0Nj9E4kqZrHfVGMwBbDFyAzdHTN3EyGuC4cBXdfNZbdBqwghuB1x7RLXs/pbXg1xqukjRdPLTxUogPdaQBHGo=', |
710 | version: '0.2', | 710 | version: '0.2', |
711 | creationDate: 'Wed Apr 25 01:56:58 PDT 2007', | 711 | creationDate: 'Wed Apr 25 01:56:58 PDT 2007', |
712 | updateDate: 'Wed Apr 25 01:56:58 PDT 2007', | 712 | updateDate: 'Wed Apr 25 01:56:58 PDT 2007', |
713 | accessDate: 'Wed Apr 25 01:56:58 PDT 2007' | 713 | accessDate: 'Wed Apr 25 01:56:58 PDT 2007' |
714 | }, | 714 | }, |
715 | 'fda6581f0137dd641387a7be193b06edea4451835817bcda38d22ee24ebeb77c': { | 715 | 'fda6581f0137dd641387a7be193b06edea4451835817bcda38d22ee24ebeb77c': { |
716 | header: '####', | 716 | header: '####', |
717 | data: 'QwDMobl0Kds+J8mknphumnONOIF9gH+pC/AJpxGmuy/rvKfHSeEuuWAZ/yWj8J/I4V7OjpyTs9/uCWeKs9khpdkcxtObB36IfcbWBHGOgFjvqKgwMa7eZSIUPZz9k1NsqJC9nU9U7w5EBzQKVIjJaey1EdhsggdtNOpQTzt7iu2mWKo33dJKQCQ5VEwhpGh6SH1TgKFbdMkOJJY8d5xPYUxR66LVFpFzgHP0ML5M5U53PK+apT95UIAlqf7N32BjPK63Nsj1WPsnuuL0vWA3KmefHzwKGeatTdsgck+1mwnCDJncPWv7hTwMLGPUaY+Yww3K3YPihuyCUtUdV3fer2VHVAn++JdzerHiLI/86T8gHiLAi/anFFh6i2kMMVxqzREh+62n34MrgdMqbSFQb0V4Dhm45FVJH43uuEaoe3OJPtyvj1HbcSR4VEVgGkDeced8aAK+Dg==', | 717 | data: 'QwDMobl0Kds+J8mknphumnONOIF9gH+pC/AJpxGmuy/rvKfHSeEuuWAZ/yWj8J/I4V7OjpyTs9/uCWeKs9khpdkcxtObB36IfcbWBHGOgFjvqKgwMa7eZSIUPZz9k1NsqJC9nU9U7w5EBzQKVIjJaey1EdhsggdtNOpQTzt7iu2mWKo33dJKQCQ5VEwhpGh6SH1TgKFbdMkOJJY8d5xPYUxR66LVFpFzgHP0ML5M5U53PK+apT95UIAlqf7N32BjPK63Nsj1WPsnuuL0vWA3KmefHzwKGeatTdsgck+1mwnCDJncPWv7hTwMLGPUaY+Yww3K3YPihuyCUtUdV3fer2VHVAn++JdzerHiLI/86T8gHiLAi/anFFh6i2kMMVxqzREh+62n34MrgdMqbSFQb0V4Dhm45FVJH43uuEaoe3OJPtyvj1HbcSR4VEVgGkDeced8aAK+Dg==', |
718 | version: '0.2', | 718 | version: '0.2', |
719 | creationDate: 'Wed Apr 25 01:58:33 PDT 2007', | 719 | creationDate: 'Wed Apr 25 01:58:33 PDT 2007', |
720 | updateDate: 'Wed Apr 25 01:58:33 PDT 2007', | 720 | updateDate: 'Wed Apr 25 01:58:33 PDT 2007', |
721 | accessDate: 'Wed Apr 25 01:58:33 PDT 2007' | 721 | accessDate: 'Wed Apr 25 01:58:33 PDT 2007' |
722 | } | 722 | } |
723 | } | 723 | } |
724 | }, | 724 | }, |
725 | 'd5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d': { | 725 | 'd5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d': { |
726 | data: '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', | 726 | data: '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', |
727 | version: '0.2', | 727 | version: '0.2', |
728 | creationDate: 'Wed Mar 14 08:06:54 PDT 2007', | 728 | creationDate: 'Wed Mar 14 08:06:54 PDT 2007', |
729 | updateDate: 'Tue Apr 17 10:23:41 PDT 2007', | 729 | updateDate: 'Tue Apr 17 10:23:41 PDT 2007', |
730 | accessDate: 'Tue Jan 05 01:38:42 PST 2010', | 730 | accessDate: 'Tue Jan 05 01:38:42 PST 2010', |
731 | currentVersion: 'cf70cadd4ae3e7f658a705ff124ddb24de78083a57bfe4fe2855ae2be2fcf8cf', | 731 | currentVersion: 'cf70cadd4ae3e7f658a705ff124ddb24de78083a57bfe4fe2855ae2be2fcf8cf', |
732 | versions: { | 732 | versions: { |
733 | '12bd9887eb84b99ad40c1e413cccaa9ffd4deed340c71fe53610088faff349bd': { | 733 | '12bd9887eb84b99ad40c1e413cccaa9ffd4deed340c71fe53610088faff349bd': { |
734 | header: '####', | 734 | header: '####', |
735 | data: 'MiAIw+S6GDmLLMcGtkl+wveV7dZAFrL1zGZh/FPvG4kpOBbnyaolRynNrL1yeUbEp4gLL2cK2BGYiVc9196PMOvKPHR5Rqp6GlT6h4RUJ+nFFF5/3LNGzQtJbiY0rrYKptqyPBC8mhlqtdK7sQkQonj5LPhKeCX6AyE3juBPEuFYhvTv9a/iRPub7BdlAocz+bb8ObpbVHnNvbGhiRpx9MpUg44JRxLQYhtDUMi2UFtURidKaK0k2lP81ckPDCgVgxy65FjCq05vSaCW0hanNrIwl+zAgi+3ChriqmflvsZYC7TQzUBPXrAQ8bKmzppZWlArIOppRF7+paWrHA3Qcz4uO5Sw3DvMwbgl+XINnmkE/EbA6VJOjrWYJjsibvbCw6vNr4q1A4Yxwy0a7EXbjFiwpEr+jMUhsq8+d0DxP3tQTusV0l9wcT2OWrDRKdjDUXLQOV9BVw==', | 735 | data: 'MiAIw+S6GDmLLMcGtkl+wveV7dZAFrL1zGZh/FPvG4kpOBbnyaolRynNrL1yeUbEp4gLL2cK2BGYiVc9196PMOvKPHR5Rqp6GlT6h4RUJ+nFFF5/3LNGzQtJbiY0rrYKptqyPBC8mhlqtdK7sQkQonj5LPhKeCX6AyE3juBPEuFYhvTv9a/iRPub7BdlAocz+bb8ObpbVHnNvbGhiRpx9MpUg44JRxLQYhtDUMi2UFtURidKaK0k2lP81ckPDCgVgxy65FjCq05vSaCW0hanNrIwl+zAgi+3ChriqmflvsZYC7TQzUBPXrAQ8bKmzppZWlArIOppRF7+paWrHA3Qcz4uO5Sw3DvMwbgl+XINnmkE/EbA6VJOjrWYJjsibvbCw6vNr4q1A4Yxwy0a7EXbjFiwpEr+jMUhsq8+d0DxP3tQTusV0l9wcT2OWrDRKdjDUXLQOV9BVw==', |
736 | version: '0.2', | 736 | version: '0.2', |
737 | creationDate: 'Wed Mar 14 09:27:40 PDT 2007', | 737 | creationDate: 'Wed Mar 14 09:27:40 PDT 2007', |
738 | updateDate: 'Wed Mar 14 09:27:40 PDT 2007', | 738 | updateDate: 'Wed Mar 14 09:27:40 PDT 2007', |
739 | accessDate: 'Wed Mar 14 11:00:21 PDT 2007' | 739 | accessDate: 'Wed Mar 14 11:00:21 PDT 2007' |
740 | }, | 740 | }, |
741 | '35af99615d1be9d9841b4a37488fde9aac291c73c8c3aaa570cd05b3fd0baf5d': { | 741 | '35af99615d1be9d9841b4a37488fde9aac291c73c8c3aaa570cd05b3fd0baf5d': { |
742 | header: '####', | 742 | header: '####', |
743 | data: 'lv0pIfnhZZ6ktahFGl3AgAfdcveIcUyAh9x0iVOCzmQ9VjelBztlvxZEo+uByaFh1ptM+eqOFT/Vk9IKhNjRWTXrDXioP7oZ8IZ1kLfk/XuMFH9AgYzm3H1T/yLq5lg1WqqZ+OfO9m37Z4kbTjK9+adIAJ3TwsMxIDpIHYz+qbznjJocubYCbi+DC+4wo6qu5C44gf8n5QF8DOCGaBCyamxFvkqrSMo/Y+3SG3yt98MSgeMScGESuwKKGDHZX0v3ZXvl4UFbxywUtdbipDv4PAlzh0aadMsGqYwO8bPKEUElCWBXd6kASugaqiJaZFtb02EnC+nncv33ZSx+WyJqwKIBk/Kpd3/YDJnX9t3QU60j0YKf0my9oX1746F5u0XGX1DNRaw/1g95zRHoMu6j2cSTTX7CJglzIlTU8kglSO1LOasxm3Gt8iT+8+Lhh4Dw86ugqHXl', | 743 | data: 'lv0pIfnhZZ6ktahFGl3AgAfdcveIcUyAh9x0iVOCzmQ9VjelBztlvxZEo+uByaFh1ptM+eqOFT/Vk9IKhNjRWTXrDXioP7oZ8IZ1kLfk/XuMFH9AgYzm3H1T/yLq5lg1WqqZ+OfO9m37Z4kbTjK9+adIAJ3TwsMxIDpIHYz+qbznjJocubYCbi+DC+4wo6qu5C44gf8n5QF8DOCGaBCyamxFvkqrSMo/Y+3SG3yt98MSgeMScGESuwKKGDHZX0v3ZXvl4UFbxywUtdbipDv4PAlzh0aadMsGqYwO8bPKEUElCWBXd6kASugaqiJaZFtb02EnC+nncv33ZSx+WyJqwKIBk/Kpd3/YDJnX9t3QU60j0YKf0my9oX1746F5u0XGX1DNRaw/1g95zRHoMu6j2cSTTX7CJglzIlTU8kglSO1LOasxm3Gt8iT+8+Lhh4Dw86ugqHXl', |
744 | version: '0.2', | 744 | version: '0.2', |
745 | creationDate: 'Wed Mar 14 08:09:07 PDT 2007', | 745 | creationDate: 'Wed Mar 14 08:09:07 PDT 2007', |
746 | updateDate: 'Wed Mar 14 08:09:07 PDT 2007', | 746 | updateDate: 'Wed Mar 14 08:09:07 PDT 2007', |
747 | accessDate: 'Wed Mar 14 08:39:40 PDT 2007' | 747 | accessDate: 'Wed Mar 14 08:39:40 PDT 2007' |
748 | }, | 748 | }, |
749 | '7cc6c6f2eccd8bdefddca21a59669655d7515f440b025144b9ba6b18472cf189': { | 749 | '7cc6c6f2eccd8bdefddca21a59669655d7515f440b025144b9ba6b18472cf189': { |
750 | header: '####', | 750 | header: '####', |
751 | data: '3W8FqWzBVaEbMZRukwXcm03WbvITt8WVKKuJlcSszN0dCJEsIZ9vLAiDp6dfsFF4PEPcSkiy9Ww4FiBYSg5OLW6snRNdA7Wo62dJ3lqn8TjBzv/Rt+khf9mj/WwJZZ4wum+qdwTRPyaoZcAWgA6PAPPVp85iDBP8UBdiFOs+y5kz9GiB3psvOvqC9LZ/RyK3J+H7ierfWecnbqB9LT5Yuhfi8SO/gw+5vve6z1v8sVcexI0o8gk97rDV1W2gZz2WNtO7K5+233Z7aZlzouEbDZEOGG+zEYh6SctWCspgUATElf8vZ29fABsk3uZQO2tnBvINChs6jCRxnbmnjb2Y9R8u2QRtHjjvRro9E+zhQf3laJc0G0ZJp1zN0wwKx+sL7uM6kG1aszNJkzpykR/Uz8bKvoOfG9vkz9+4Pczh5xR+k9rCE8nbu6Yt4EMiUfdfjZJHAhST', | 751 | data: '3W8FqWzBVaEbMZRukwXcm03WbvITt8WVKKuJlcSszN0dCJEsIZ9vLAiDp6dfsFF4PEPcSkiy9Ww4FiBYSg5OLW6snRNdA7Wo62dJ3lqn8TjBzv/Rt+khf9mj/WwJZZ4wum+qdwTRPyaoZcAWgA6PAPPVp85iDBP8UBdiFOs+y5kz9GiB3psvOvqC9LZ/RyK3J+H7ierfWecnbqB9LT5Yuhfi8SO/gw+5vve6z1v8sVcexI0o8gk97rDV1W2gZz2WNtO7K5+233Z7aZlzouEbDZEOGG+zEYh6SctWCspgUATElf8vZ29fABsk3uZQO2tnBvINChs6jCRxnbmnjb2Y9R8u2QRtHjjvRro9E+zhQf3laJc0G0ZJp1zN0wwKx+sL7uM6kG1aszNJkzpykR/Uz8bKvoOfG9vkz9+4Pczh5xR+k9rCE8nbu6Yt4EMiUfdfjZJHAhST', |
752 | version: '0.2', | 752 | version: '0.2', |
753 | creationDate: 'Wed Mar 14 11:01:05 PDT 2007', | 753 | creationDate: 'Wed Mar 14 11:01:05 PDT 2007', |
754 | updateDate: 'Wed Mar 14 11:01:05 PDT 2007', | 754 | updateDate: 'Wed Mar 14 11:01:05 PDT 2007', |
755 | accessDate: 'Tue Apr 17 10:20:33 PDT 2007' | 755 | accessDate: 'Tue Apr 17 10:20:33 PDT 2007' |
756 | }, | 756 | }, |
757 | '95ef5754f9a4514e5bf883436d60c38c3cbb15c3f5452d512a05839ce20125ca': { | 757 | '95ef5754f9a4514e5bf883436d60c38c3cbb15c3f5452d512a05839ce20125ca': { |
758 | header: '####', | 758 | header: '####', |
759 | data: 'Rko0V7wG9GEmH9pZtXSfxKGDLRhZr65ef/DjkwhsPoYfLryET/ViMjcZcM2blyiLKOxjiS/avGGcXUmInz2AyD5dAFTGge3qAZ3QtxTcNn/fvfJeN+JyGJPIsTIQ7P+jd0uJAb3vPuymISGJluTsP0MZ8zxahSSRUV/VIYwm10tiMVvWEq0+8FynKfWDqJ1eU4pnI47CAdN9CuWhxi12RkMBYgiUzNzTh/tbPTFMc7DIyRfR+si6TuPS3PmtnKt4FMFAX3FznGBCNsonUFf/n7Zy+EYEU/B8wJO+18mqbui5YvmPCPPKiW/pfVuaWarF7zcIcthYoKQfTaCaulO0VRtTA+Wg2LtJv+QcWWWTiY2A9FC/PppLZ8+nFDeng6LqJYKoGnn6qwtSVH38s3Inzbs4r8mSOR099tqwfCnZc9zZHisdIbVm82H3gnqelPmc3IXb3nHb', | 759 | data: 'Rko0V7wG9GEmH9pZtXSfxKGDLRhZr65ef/DjkwhsPoYfLryET/ViMjcZcM2blyiLKOxjiS/avGGcXUmInz2AyD5dAFTGge3qAZ3QtxTcNn/fvfJeN+JyGJPIsTIQ7P+jd0uJAb3vPuymISGJluTsP0MZ8zxahSSRUV/VIYwm10tiMVvWEq0+8FynKfWDqJ1eU4pnI47CAdN9CuWhxi12RkMBYgiUzNzTh/tbPTFMc7DIyRfR+si6TuPS3PmtnKt4FMFAX3FznGBCNsonUFf/n7Zy+EYEU/B8wJO+18mqbui5YvmPCPPKiW/pfVuaWarF7zcIcthYoKQfTaCaulO0VRtTA+Wg2LtJv+QcWWWTiY2A9FC/PppLZ8+nFDeng6LqJYKoGnn6qwtSVH38s3Inzbs4r8mSOR099tqwfCnZc9zZHisdIbVm82H3gnqelPmc3IXb3nHb', |
760 | version: '0.2', | 760 | version: '0.2', |
761 | creationDate: 'Wed Mar 14 09:17:20 PDT 2007', | 761 | creationDate: 'Wed Mar 14 09:17:20 PDT 2007', |
762 | updateDate: 'Wed Mar 14 09:17:20 PDT 2007', | 762 | updateDate: 'Wed Mar 14 09:17:20 PDT 2007', |
763 | accessDate: 'Wed Mar 14 09:22:06 PDT 2007' | 763 | accessDate: 'Wed Mar 14 09:22:06 PDT 2007' |
764 | }, | 764 | }, |
765 | 'cc7ee01d38e4f1de010d2a235e3b76e838ca05fe70223b8358a5e41975bf2b7b': { | 765 | 'cc7ee01d38e4f1de010d2a235e3b76e838ca05fe70223b8358a5e41975bf2b7b': { |
766 | header: '####', | 766 | header: '####', |
767 | data: 'TJ5ClYK5JmZvEuNCA+/UeUJQ2rGXbPnFqWP31GAGXqhZmC0RuDNjl3sv0nFKmcdMa/BzvLSywJhkidoRhfKGwN8nZc8M0VpujFkpvdXgNsod6x+5LTMP67qCyvD67pkYMa7O+aosKi/ZWWnYBavZSdhyuWnU1wPxxk+wwcjjIrA5Tm5zTXM/68nLLnIWs2bQbUtcwHgLrBEUshG5oTUFGxrs8zYwodsYUuT1CVwODZrzMxvvbHfH6Lqt94m4hBF0oIrDCd1cSaXghS4PiZkJWQVxJNSsuYF/4PlPrV4ATZS3Jm+DqOxLOOnU2Xu1Qe9DxBppnXjs/WpohYuMV5YeD8iOJLXTQbFKhBJNSCoLp73QywWazuKkasC6cbBrTHYykEKXpt74iE6oKg67YrPkIZJ/jKEGnZ7wsY4ObeDTS7OUbHKxPHRM3ZrmB672R/8ktglg', | 767 | data: 'TJ5ClYK5JmZvEuNCA+/UeUJQ2rGXbPnFqWP31GAGXqhZmC0RuDNjl3sv0nFKmcdMa/BzvLSywJhkidoRhfKGwN8nZc8M0VpujFkpvdXgNsod6x+5LTMP67qCyvD67pkYMa7O+aosKi/ZWWnYBavZSdhyuWnU1wPxxk+wwcjjIrA5Tm5zTXM/68nLLnIWs2bQbUtcwHgLrBEUshG5oTUFGxrs8zYwodsYUuT1CVwODZrzMxvvbHfH6Lqt94m4hBF0oIrDCd1cSaXghS4PiZkJWQVxJNSsuYF/4PlPrV4ATZS3Jm+DqOxLOOnU2Xu1Qe9DxBppnXjs/WpohYuMV5YeD8iOJLXTQbFKhBJNSCoLp73QywWazuKkasC6cbBrTHYykEKXpt74iE6oKg67YrPkIZJ/jKEGnZ7wsY4ObeDTS7OUbHKxPHRM3ZrmB672R/8ktglg', |
768 | version: '0.2', | 768 | version: '0.2', |
769 | creationDate: 'Wed Mar 14 08:06:54 PDT 2007', | 769 | creationDate: 'Wed Mar 14 08:06:54 PDT 2007', |
770 | updateDate: 'Wed Mar 14 08:06:54 PDT 2007', | 770 | updateDate: 'Wed Mar 14 08:06:54 PDT 2007', |
771 | accessDate: 'Wed Mar 14 08:06:54 PDT 2007' | 771 | accessDate: 'Wed Mar 14 08:06:54 PDT 2007' |
772 | }, | 772 | }, |
773 | 'cf70cadd4ae3e7f658a705ff124ddb24de78083a57bfe4fe2855ae2be2fcf8cf': { | 773 | 'cf70cadd4ae3e7f658a705ff124ddb24de78083a57bfe4fe2855ae2be2fcf8cf': { |
774 | header: '####', | 774 | header: '####', |
775 | data: 'CiJDd/ShGw3rE0xCNZspkdH6hRzvSyaNiuQeMBI0NR1MReaa9uVMV6Ymj+BWVQ8FaOziQ94aolsWre51EKwDWC1otdovPXWHxBXBBI/Y5A4dyQisBeR5E456juUwDtLKX5En4iIuOL14IGt+keUtb5JyfBGuTTA+EnohYzvDxu9MDh/7nzCcWzUxh2zHEBSyowfOwJhx7G2xEvbBgTg+TkejMudbq9k3Owebe9QNdhU9rsY1UMxjL8+HgJmgyo0C0SA91tZXBB3i5ePvg++ze/SW/r+XO/nnVzcEwCJE2UWAL+vNh8tUm+sEbWaqyKwjHNSquxV4cYOG2Lzo45Wp/vZwiUR/8MK9THf0FO1mn3QCd/37AMMneI1Gqk0TNwNtoQKgLVBNhhgX7dIVpRxB2iiSBYyUK6N9LlFahW2QVDS7kdnKH3vk1cP50dj21E45jEhhd75v', | 775 | data: 'CiJDd/ShGw3rE0xCNZspkdH6hRzvSyaNiuQeMBI0NR1MReaa9uVMV6Ymj+BWVQ8FaOziQ94aolsWre51EKwDWC1otdovPXWHxBXBBI/Y5A4dyQisBeR5E456juUwDtLKX5En4iIuOL14IGt+keUtb5JyfBGuTTA+EnohYzvDxu9MDh/7nzCcWzUxh2zHEBSyowfOwJhx7G2xEvbBgTg+TkejMudbq9k3Owebe9QNdhU9rsY1UMxjL8+HgJmgyo0C0SA91tZXBB3i5ePvg++ze/SW/r+XO/nnVzcEwCJE2UWAL+vNh8tUm+sEbWaqyKwjHNSquxV4cYOG2Lzo45Wp/vZwiUR/8MK9THf0FO1mn3QCd/37AMMneI1Gqk0TNwNtoQKgLVBNhhgX7dIVpRxB2iiSBYyUK6N9LlFahW2QVDS7kdnKH3vk1cP50dj21E45jEhhd75v', |
776 | version: '0.2', | 776 | version: '0.2', |
777 | creationDate: 'Tue Apr 17 10:23:41 PDT 2007', | 777 | creationDate: 'Tue Apr 17 10:23:41 PDT 2007', |
778 | updateDate: 'Tue Apr 17 10:23:41 PDT 2007', | 778 | updateDate: 'Tue Apr 17 10:23:41 PDT 2007', |
779 | accessDate: 'Tue Jan 05 01:38:42 PST 2010' | 779 | accessDate: 'Tue Jan 05 01:38:42 PST 2010' |
780 | }, | 780 | }, |
781 | 'd65b23008b22e5000726db3fd22b074b08553fe82245c3526f708b8d89f70963': { | 781 | 'd65b23008b22e5000726db3fd22b074b08553fe82245c3526f708b8d89f70963': { |
782 | header: '####', | 782 | header: '####', |
783 | data: '0y9WhoXwZSfzfxuql8LBc5/RiclPKQxcBYjcdGv7v6B+WuGrB6uu6d8pjNoUtsZnFv/25sefW3ggVgDuI5iZNg2lBQVIwgcvK5jPM5foit49d3RSWl74XdHY2XqykRNDbboKAiNfro+abo/YYQXjkhNBOC0dWSUUw+HmgK/Bm5NmJD4fDTV7OYFsvX4ExjnX9pktaB6aiLZWN1cZruW3Lsszx/ryHpDtcPrmK2hgLQ4FjRSXunbqXKJLOADQiMbGZ8DKZchB5NcEWlE3AfL6ybJzTyr4jXuS7A9PyitxYNKFHAHpJEhxGkyuhUE66QMt1n9NKzkNx6yhhGdIUF2zVGsBUb/pRrL2gt0X2lsZ+CnWFu4jRAeSi3KfK4VrvnoYkVlJImxPiLrzJAvqkuA6TyQRpJ4yFVJ0dgxBoxZVSN1fp9Yvkph+Os8LZscJtpYPPwVDlCnC', | 783 | data: '0y9WhoXwZSfzfxuql8LBc5/RiclPKQxcBYjcdGv7v6B+WuGrB6uu6d8pjNoUtsZnFv/25sefW3ggVgDuI5iZNg2lBQVIwgcvK5jPM5foit49d3RSWl74XdHY2XqykRNDbboKAiNfro+abo/YYQXjkhNBOC0dWSUUw+HmgK/Bm5NmJD4fDTV7OYFsvX4ExjnX9pktaB6aiLZWN1cZruW3Lsszx/ryHpDtcPrmK2hgLQ4FjRSXunbqXKJLOADQiMbGZ8DKZchB5NcEWlE3AfL6ybJzTyr4jXuS7A9PyitxYNKFHAHpJEhxGkyuhUE66QMt1n9NKzkNx6yhhGdIUF2zVGsBUb/pRrL2gt0X2lsZ+CnWFu4jRAeSi3KfK4VrvnoYkVlJImxPiLrzJAvqkuA6TyQRpJ4yFVJ0dgxBoxZVSN1fp9Yvkph+Os8LZscJtpYPPwVDlCnC', |
784 | version: '0.2', | 784 | version: '0.2', |
785 | creationDate: 'Tue Apr 17 10:22:08 PDT 2007', | 785 | creationDate: 'Tue Apr 17 10:22:08 PDT 2007', |
786 | updateDate: 'Tue Apr 17 10:22:08 PDT 2007', | 786 | updateDate: 'Tue Apr 17 10:22:08 PDT 2007', |
787 | accessDate: 'Tue Apr 17 10:22:08 PDT 2007' | 787 | accessDate: 'Tue Apr 17 10:22:08 PDT 2007' |
788 | } | 788 | } |
789 | } | 789 | } |
790 | }, | 790 | }, |
791 | 'd620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045': { | 791 | 'd620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045': { |
792 | data: '+iiHiN91FfHKOXC8Z/tg+YynPECa5sgYGGofcoJeXt3FAAkAFu3NsLuwjYIaddJiB3MIxFccrCrB5eDDL0SzOS+j63GcoMCeeiXss9YfVunA4RQTTktiU1BknPYfsfHj8EOPDSVHkPFs7KhAnBlgyaDiQPjYko5Np1H2i7F7pRmfC8W5LGdisaqxFDa+1ghu8K6a54QIpbfOmolQU3w7T5qiOdoZv8GLDDoORvMMb4P09IzXpk/yDEZe1GJ4g1a9t+lHAhiKSvdnZf+MhK0jvs6R6ALlmO84lRP34DmT/35Fr5C7D6EJl0OxXkWgYWelTlfU4b8+SStYP5LPYeD38fodSmObpKmpp653T1v2yaTybI1hojgLbH2DuA5VcQAM5JHMjoSy6s76mf2AZZeRnej1dqdvIOTf1Q6CR+ZNIqnkukrtGq/6elF3eZZh1Ln1EZDiTzsMxUHBngtiRmRDofqRSJUGbEAjw90dBoiaIO/WwLAy4cTec0nJxwYd5M7nchEly8Cb+zz7naP+vEGEAWq991u9NFZhrw7WgNgHnG0E3km+X+SYvv0i2MkqjYs6ItDkBNyi0Udnc4CqfWuKa9q04t8mZiy49LU34Ho4/ijuez3rdOeCO/oIwkRkLZYfFO6IxO56tAI3d6iJqmXY+DX0YUZrJ6FT7bDsUj0umV1htuj/uEgQZyOnKOyA8cSjOTMRIkodI12HrtdrIA966BDznsKW4F7f31VaSxI5ezHsdiYEsTqwaZlFQMsjfZX62EvDLJksJTe3JG15BNgsDUUh1mqIDCmVswFTpUTTb+50ap56c/uERSET0iXP8mb4hKwJkmngrBEir3btuMEMS0xSFQ2jTRjlnWRQr9eZT2biarzgEhKHyu2qCUtsUj7TiieQJY09EXCP3g3Da+61nBMoAwi/VqTI6vQaLGtuDrA2+VYGc8x1SiahmAkRPpQS+5N9qPvxxFRbKforMOvmeboFVxdKesub7BHIXQsSOKsHFZnFHswa/oLBITomp3ewfp125RjBUf1C3hMBNg/tmE5pgLqPfQqWK7IOnfdyt0jc391XWb6H3CVcgC8DcPKJ68o7DBucg9xTNwlIxBTafupsBa9JUkBigqYOW8729lNjj/QTvTUaCxWub9SDT6/y1wQUI1wyyg+EaR0fHqumMhIMbuvIPd/SvKMmZ4TXtBc1U3H3IGbkqIfx0f5rI6AuNMD7/pXTAy2Ot1ZBohnQmEotXRvDwxPMqBvPU74t3USTrysyXfJqeFtHi8GTR5X0m/PYQKWCCHgKvjw3d1CJk7tTe3iV2ulk5cnO7tOydTMJFgPuT2oyDDDTp5jYJPRE0OzZcpAzvRSjELfJ111sFBOEzTqtBUHA/E4BnTIM13md0ZaMr33E7ii8rS7vaKrQAI5moonAtAEOVbx/ZrcZ3kGzHpRCISeteHgnM4I90x391HqDkc1A7b+iDQF8OY0H/0as/3gaVaqs5jsuhIByj0+KmoXsdq3ZBhEQRW151QDCdMKdulNUxbKTYV/t92z3slU6lO8fiy+ON/6sTtS6jgnM+oCLxTfpfBdz0uKG7jiSOyunj27QxNjLyu1nF2+mAcDhtMN18QkJGLXKYv39kx7ny1H74i5rba32/QEAFl5eLJNIQbJZfZG3HzKMVS19ZGwgsYNqV1G52x5+bZUTR8YcrLWmPTJ322UxlhTmyjQv+fVCnpksBtjLGntsGloemFF5YVlcl1AfyHb+KlXiAZn+8vpfVVBddFFMeehokzYE1G8Doa/3huhqdtC9qvAtpP54G2p3', | 792 | data: '+iiHiN91FfHKOXC8Z/tg+YynPECa5sgYGGofcoJeXt3FAAkAFu3NsLuwjYIaddJiB3MIxFccrCrB5eDDL0SzOS+j63GcoMCeeiXss9YfVunA4RQTTktiU1BknPYfsfHj8EOPDSVHkPFs7KhAnBlgyaDiQPjYko5Np1H2i7F7pRmfC8W5LGdisaqxFDa+1ghu8K6a54QIpbfOmolQU3w7T5qiOdoZv8GLDDoORvMMb4P09IzXpk/yDEZe1GJ4g1a9t+lHAhiKSvdnZf+MhK0jvs6R6ALlmO84lRP34DmT/35Fr5C7D6EJl0OxXkWgYWelTlfU4b8+SStYP5LPYeD38fodSmObpKmpp653T1v2yaTybI1hojgLbH2DuA5VcQAM5JHMjoSy6s76mf2AZZeRnej1dqdvIOTf1Q6CR+ZNIqnkukrtGq/6elF3eZZh1Ln1EZDiTzsMxUHBngtiRmRDofqRSJUGbEAjw90dBoiaIO/WwLAy4cTec0nJxwYd5M7nchEly8Cb+zz7naP+vEGEAWq991u9NFZhrw7WgNgHnG0E3km+X+SYvv0i2MkqjYs6ItDkBNyi0Udnc4CqfWuKa9q04t8mZiy49LU34Ho4/ijuez3rdOeCO/oIwkRkLZYfFO6IxO56tAI3d6iJqmXY+DX0YUZrJ6FT7bDsUj0umV1htuj/uEgQZyOnKOyA8cSjOTMRIkodI12HrtdrIA966BDznsKW4F7f31VaSxI5ezHsdiYEsTqwaZlFQMsjfZX62EvDLJksJTe3JG15BNgsDUUh1mqIDCmVswFTpUTTb+50ap56c/uERSET0iXP8mb4hKwJkmngrBEir3btuMEMS0xSFQ2jTRjlnWRQr9eZT2biarzgEhKHyu2qCUtsUj7TiieQJY09EXCP3g3Da+61nBMoAwi/VqTI6vQaLGtuDrA2+VYGc8x1SiahmAkRPpQS+5N9qPvxxFRbKforMOvmeboFVxdKesub7BHIXQsSOKsHFZnFHswa/oLBITomp3ewfp125RjBUf1C3hMBNg/tmE5pgLqPfQqWK7IOnfdyt0jc391XWb6H3CVcgC8DcPKJ68o7DBucg9xTNwlIxBTafupsBa9JUkBigqYOW8729lNjj/QTvTUaCxWub9SDT6/y1wQUI1wyyg+EaR0fHqumMhIMbuvIPd/SvKMmZ4TXtBc1U3H3IGbkqIfx0f5rI6AuNMD7/pXTAy2Ot1ZBohnQmEotXRvDwxPMqBvPU74t3USTrysyXfJqeFtHi8GTR5X0m/PYQKWCCHgKvjw3d1CJk7tTe3iV2ulk5cnO7tOydTMJFgPuT2oyDDDTp5jYJPRE0OzZcpAzvRSjELfJ111sFBOEzTqtBUHA/E4BnTIM13md0ZaMr33E7ii8rS7vaKrQAI5moonAtAEOVbx/ZrcZ3kGzHpRCISeteHgnM4I90x391HqDkc1A7b+iDQF8OY0H/0as/3gaVaqs5jsuhIByj0+KmoXsdq3ZBhEQRW151QDCdMKdulNUxbKTYV/t92z3slU6lO8fiy+ON/6sTtS6jgnM+oCLxTfpfBdz0uKG7jiSOyunj27QxNjLyu1nF2+mAcDhtMN18QkJGLXKYv39kx7ny1H74i5rba32/QEAFl5eLJNIQbJZfZG3HzKMVS19ZGwgsYNqV1G52x5+bZUTR8YcrLWmPTJ322UxlhTmyjQv+fVCnpksBtjLGntsGloemFF5YVlcl1AfyHb+KlXiAZn+8vpfVVBddFFMeehokzYE1G8Doa/3huhqdtC9qvAtpP54G2p3', |
793 | version: '0.2', | 793 | version: '0.2', |
794 | creationDate: 'Wed Mar 14 08:36:20 PDT 2007', | 794 | creationDate: 'Wed Mar 14 08:36:20 PDT 2007', |
795 | updateDate: 'Mon Jul 09 06:10:15 PDT 2007', | 795 | updateDate: 'Mon Jul 09 06:10:15 PDT 2007', |
796 | accessDate: 'Tue Jan 05 01:38:40 PST 2010', | 796 | accessDate: 'Tue Jan 05 01:38:40 PST 2010', |
797 | currentVersion: '335e2fc3f76b3db69d7575194a8313bc3ad031d441b6f2f81cecba6d3d630130', | 797 | currentVersion: '335e2fc3f76b3db69d7575194a8313bc3ad031d441b6f2f81cecba6d3d630130', |
798 | versions: { | 798 | versions: { |
799 | '0bea892da673bf4b3d3e4e97cd3e1645eb177a8423dc761583b876c5ffb1e2ca': { | 799 | '0bea892da673bf4b3d3e4e97cd3e1645eb177a8423dc761583b876c5ffb1e2ca': { |
800 | header: '####', | 800 | header: '####', |
801 | data: 'BmZz8j6Khuz7Q11xPA5zSECcqn7BOcMtLx8AmX2iE4OrIwKWcZ+u4B5kCBxtFPRZWLdWcxAF8VfaedkHx5jxPNeWNIa7NEXXcFLYQv9lwUaxmtqodYtVapAg7N+onw28UnV1vB/h7ll26u263jWYohtd5eMnXhEjIEbrQYpf84jQYlpMKjUDhsVQeZvTI/KfiXa6O38ygO9R+xlq8xKgPPX2bkXfPJiyzlA+GoLSORc0tdqseGGOK4BFyp1V/KRUQ/7uQmGs1yNWt/ijaQtJXpWkWXmjHyTjXsi0z+1s0KH8TwSOfu8yjVshMyIyEDd+EsmZeK0QwMCm96v311cRhMgAkQOqL8xc2uRpGygtTkV2frthF237GOV5vwO9IoMZQFlvKZreV5mPPPBeqfP+o4QRpdnJRRCaP8Ds/MmzGBqE13ntwmo1UVX1k408ZtMCO7h1eQVTgCZ/Y2RD', | 801 | data: 'BmZz8j6Khuz7Q11xPA5zSECcqn7BOcMtLx8AmX2iE4OrIwKWcZ+u4B5kCBxtFPRZWLdWcxAF8VfaedkHx5jxPNeWNIa7NEXXcFLYQv9lwUaxmtqodYtVapAg7N+onw28UnV1vB/h7ll26u263jWYohtd5eMnXhEjIEbrQYpf84jQYlpMKjUDhsVQeZvTI/KfiXa6O38ygO9R+xlq8xKgPPX2bkXfPJiyzlA+GoLSORc0tdqseGGOK4BFyp1V/KRUQ/7uQmGs1yNWt/ijaQtJXpWkWXmjHyTjXsi0z+1s0KH8TwSOfu8yjVshMyIyEDd+EsmZeK0QwMCm96v311cRhMgAkQOqL8xc2uRpGygtTkV2frthF237GOV5vwO9IoMZQFlvKZreV5mPPPBeqfP+o4QRpdnJRRCaP8Ds/MmzGBqE13ntwmo1UVX1k408ZtMCO7h1eQVTgCZ/Y2RD', |
802 | version: '0.2', | 802 | version: '0.2', |
803 | creationDate: 'Wed Mar 14 08:51:02 PDT 2007', | 803 | creationDate: 'Wed Mar 14 08:51:02 PDT 2007', |
804 | updateDate: 'Wed Mar 14 08:51:02 PDT 2007', | 804 | updateDate: 'Wed Mar 14 08:51:02 PDT 2007', |
805 | accessDate: 'Wed Mar 14 08:51:02 PDT 2007' | 805 | accessDate: 'Wed Mar 14 08:51:02 PDT 2007' |
806 | }, | 806 | }, |
807 | '335e2fc3f76b3db69d7575194a8313bc3ad031d441b6f2f81cecba6d3d630130': { | 807 | '335e2fc3f76b3db69d7575194a8313bc3ad031d441b6f2f81cecba6d3d630130': { |
808 | header: '####', | 808 | header: '####', |
809 | data: '++u0MEaILPK8riF0UzCnb+MnC51GYcdqCFRKOP7XYt5QvzWtxhDMOvq8ugCDF8G9sYPAoBLiCxFcuCtnkG4fp563VeEeC/dRnArzMDvjILYKAETgpnLQAfyIR+D8RfUkCbr+aOJ4XEKcy9a240OQJFDT0whoTKuX/6XVzVM/D7F0r+hJiOD1ELsVEi/+U+dXXO/VDxoyjFxfa1+M+Ygk8ewecX4nVqwOiFWHNK2lXW90inip0p8yqDsADx0KhE2tjARWVsjoNdf5RSUOYr0Sb0syyjBMi7oF4jpbLvHpu9fe8vpIcve+aSA/MF0Acxh0/gToDcO8ER3K4wcJgNPIs9lXiSrmuklK7kmS+uhz/rWCtZZH/OB/ov5sez5H51EYLmSNQbx5wZGZhtJWNN+AkJobg/Nt4XKRTe98CutbeiiYUGPxQvwG431Erg4y/q216n55FmCBIHZcUsa6Hk7ezF66c52EuAnVEkn7TZLl7vvym+sv9lKev31xpAGwX5Gy0tx2A7cSE55ZoyqOS9kf1s5Kwprx6RSBzfy7sffLSWHxyOSBnd7B1MNZglVSsbB1r4gMgZdYG//MZ/3IhTFbUqqw2xXHzTvBPA2Hl96g5Xzx0dVx2wHWcPcTSH23VrLscQCwyiDVINwmIzyG4CVSW/6gzA5VM4QYOrUDX2ZA5ligkZpWs0HTqmCB4SoqYJUpafaF2sEtCWHUjuVdw+rQiTBCcRTr8f1Vah2q2xbXMedLCRS3Vq4vlT0a/3wGgVD05CsAom31ZzmHQm94hZrx3FTPenhxLtTOHtDYXnbzYWufWEBSJs6VNtG9F5Md63NZvzEZiggfxTREDRZ7I9MBOPhrxz/3tAo+xInwvLXOEnTNOHVATm9u50kDs1qkJgqiXlxi9pZKmrTu4BeXS8cOxJ8O+Yb0Nh9bExfw+CC8X5xiWE58OwalxY2qlvuoR6mOqdcd+L7YPbGq+hJ/7WgJlrvtQe8IjGF1sJg6jfO8ZeGaPMF5NnbQVxGAq39g00on/z6dW0BLZyA6uglv99si8aRLpMk=', | 809 | data: '++u0MEaILPK8riF0UzCnb+MnC51GYcdqCFRKOP7XYt5QvzWtxhDMOvq8ugCDF8G9sYPAoBLiCxFcuCtnkG4fp563VeEeC/dRnArzMDvjILYKAETgpnLQAfyIR+D8RfUkCbr+aOJ4XEKcy9a240OQJFDT0whoTKuX/6XVzVM/D7F0r+hJiOD1ELsVEi/+U+dXXO/VDxoyjFxfa1+M+Ygk8ewecX4nVqwOiFWHNK2lXW90inip0p8yqDsADx0KhE2tjARWVsjoNdf5RSUOYr0Sb0syyjBMi7oF4jpbLvHpu9fe8vpIcve+aSA/MF0Acxh0/gToDcO8ER3K4wcJgNPIs9lXiSrmuklK7kmS+uhz/rWCtZZH/OB/ov5sez5H51EYLmSNQbx5wZGZhtJWNN+AkJobg/Nt4XKRTe98CutbeiiYUGPxQvwG431Erg4y/q216n55FmCBIHZcUsa6Hk7ezF66c52EuAnVEkn7TZLl7vvym+sv9lKev31xpAGwX5Gy0tx2A7cSE55ZoyqOS9kf1s5Kwprx6RSBzfy7sffLSWHxyOSBnd7B1MNZglVSsbB1r4gMgZdYG//MZ/3IhTFbUqqw2xXHzTvBPA2Hl96g5Xzx0dVx2wHWcPcTSH23VrLscQCwyiDVINwmIzyG4CVSW/6gzA5VM4QYOrUDX2ZA5ligkZpWs0HTqmCB4SoqYJUpafaF2sEtCWHUjuVdw+rQiTBCcRTr8f1Vah2q2xbXMedLCRS3Vq4vlT0a/3wGgVD05CsAom31ZzmHQm94hZrx3FTPenhxLtTOHtDYXnbzYWufWEBSJs6VNtG9F5Md63NZvzEZiggfxTREDRZ7I9MBOPhrxz/3tAo+xInwvLXOEnTNOHVATm9u50kDs1qkJgqiXlxi9pZKmrTu4BeXS8cOxJ8O+Yb0Nh9bExfw+CC8X5xiWE58OwalxY2qlvuoR6mOqdcd+L7YPbGq+hJ/7WgJlrvtQe8IjGF1sJg6jfO8ZeGaPMF5NnbQVxGAq39g00on/z6dW0BLZyA6uglv99si8aRLpMk=', |
810 | version: '0.2', | 810 | version: '0.2', |
811 | creationDate: 'Mon Jul 09 06:10:15 PDT 2007', | 811 | creationDate: 'Mon Jul 09 06:10:15 PDT 2007', |
812 | updateDate: 'Mon Jul 09 06:10:15 PDT 2007', | 812 | updateDate: 'Mon Jul 09 06:10:15 PDT 2007', |
813 | accessDate: 'Tue Jan 05 01:38:40 PST 2010' | 813 | accessDate: 'Tue Jan 05 01:38:40 PST 2010' |
814 | }, | 814 | }, |
815 | '63760358c7f5783d11fd769c78ca3f1ce787113368743655ade89bfa67d0d30a': { | 815 | '63760358c7f5783d11fd769c78ca3f1ce787113368743655ade89bfa67d0d30a': { |
816 | header: '####', | 816 | header: '####', |
817 | data: '7lG/UvX5KjLbN+OrHbDeqXmweYeOL+0p3/UoLi2K93mCYdwsvx8mg+zghxwg5ITKPiZ9D/QWIShqiPpl+dvQJGWgs9EcP5W7k32CS2RNFaZ7U820rSpahHP561HDcBU1++5wHWszLnqFFiCuDja3OU90dsCTLI3g0igFgqpaRbjLcRTddI/1N48xNfV1YieC5Kei+jZ34zzrfKRn1f0F7mTkCqCSfygjnpRBgZyo9BfJ9rHULBvplvpslUUfFTShkLnCx0UbWPXog7DIZUCOwvPr3KJvmcZtCJp/1nW7gm0E5PaueJF10+ZlB6pKvueu+5yEgVmVu/lctmPX/UwTYZDgY5VWSWS3C+JNAvV87ZQKKmp8N6aMFMNOLCsOYL5hFN9uWGtMmvtgawqt7OhO9HukSUs8pDTgNeXoWyrorLM0cH2fa6a78GxNs3nCSUmqSQchJf5eWmASZgvI5xXmHXsNbuc4w5R9BaEPzyrrSAIa6r9D3rpFbUhMm+qPv9pZE2HF9liJVdWCBOSF8ZfCjsq5suyYz+YCsFHnwwpYmKAqJNXUMIhxkjgOTi5lNIsvS/iNSN9kdkeWINZk5iQFta34uJbGgjUhRy930ZGMBEV36T+Vb5tz50M6/MnlzAoUDeZAu54btKcrIpIq1Se+8zldwd6UKGq5nG+dMPk7CyKfZ5LkM065KGbgEJfHO651AMWp1sMAsbIAM6h1gVKbRjNyNwO+UK8eDpIX1nXHVj8bDVh96160cFbZj7htsUnXZh2AWuY6ahwdrGwYeSFoVAnd6xUF2oH+zFz2coLmLjD4Xm9IuQFsFO0U1Vo7EKUJHkPgIsXUT9He9tl8/K7UYQMXGgPTpercQFQ1ctFEqlPbFoVNO0j7Z9lmeSBcLdvY67CCbsoBDVJzj/wLRdBQStfeSUe7bEI6ff8+0gVkEFFACc48fWWA6NLLtvJkYjdojjA+C/Xf6EGNeXU/VENMJokB10EJUTueVWKHCLGI/JDBQBBB3HKX2VNFcEMJxES7Gfcbhysm5bdmltyRUJAIdXvw', | 817 | data: '7lG/UvX5KjLbN+OrHbDeqXmweYeOL+0p3/UoLi2K93mCYdwsvx8mg+zghxwg5ITKPiZ9D/QWIShqiPpl+dvQJGWgs9EcP5W7k32CS2RNFaZ7U820rSpahHP561HDcBU1++5wHWszLnqFFiCuDja3OU90dsCTLI3g0igFgqpaRbjLcRTddI/1N48xNfV1YieC5Kei+jZ34zzrfKRn1f0F7mTkCqCSfygjnpRBgZyo9BfJ9rHULBvplvpslUUfFTShkLnCx0UbWPXog7DIZUCOwvPr3KJvmcZtCJp/1nW7gm0E5PaueJF10+ZlB6pKvueu+5yEgVmVu/lctmPX/UwTYZDgY5VWSWS3C+JNAvV87ZQKKmp8N6aMFMNOLCsOYL5hFN9uWGtMmvtgawqt7OhO9HukSUs8pDTgNeXoWyrorLM0cH2fa6a78GxNs3nCSUmqSQchJf5eWmASZgvI5xXmHXsNbuc4w5R9BaEPzyrrSAIa6r9D3rpFbUhMm+qPv9pZE2HF9liJVdWCBOSF8ZfCjsq5suyYz+YCsFHnwwpYmKAqJNXUMIhxkjgOTi5lNIsvS/iNSN9kdkeWINZk5iQFta34uJbGgjUhRy930ZGMBEV36T+Vb5tz50M6/MnlzAoUDeZAu54btKcrIpIq1Se+8zldwd6UKGq5nG+dMPk7CyKfZ5LkM065KGbgEJfHO651AMWp1sMAsbIAM6h1gVKbRjNyNwO+UK8eDpIX1nXHVj8bDVh96160cFbZj7htsUnXZh2AWuY6ahwdrGwYeSFoVAnd6xUF2oH+zFz2coLmLjD4Xm9IuQFsFO0U1Vo7EKUJHkPgIsXUT9He9tl8/K7UYQMXGgPTpercQFQ1ctFEqlPbFoVNO0j7Z9lmeSBcLdvY67CCbsoBDVJzj/wLRdBQStfeSUe7bEI6ff8+0gVkEFFACc48fWWA6NLLtvJkYjdojjA+C/Xf6EGNeXU/VENMJokB10EJUTueVWKHCLGI/JDBQBBB3HKX2VNFcEMJxES7Gfcbhysm5bdmltyRUJAIdXvw', |
818 | version: '0.2', | 818 | version: '0.2', |
819 | creationDate: 'Wed Mar 21 04:56:43 PDT 2007', | 819 | creationDate: 'Wed Mar 21 04:56:43 PDT 2007', |
820 | updateDate: 'Wed Mar 21 04:56:43 PDT 2007', | 820 | updateDate: 'Wed Mar 21 04:56:43 PDT 2007', |
821 | accessDate: 'Wed Apr 25 00:59:58 PDT 2007' | 821 | accessDate: 'Wed Apr 25 00:59:58 PDT 2007' |
822 | }, | 822 | }, |
823 | '6e0dbb3c582039d985e80e10d94f424a63f0cb5b2ffac6388fd806ef89c1da40': { | 823 | '6e0dbb3c582039d985e80e10d94f424a63f0cb5b2ffac6388fd806ef89c1da40': { |
824 | header: '####', | 824 | header: '####', |
825 | data: 'f5hBUeedsvb1VBTpmpQ+XgGbnuVDMVEAdbEN7ZLK5k++4Iuw7l52zX6AHCWUFMDRfT6joiD2DMj0O8B2g55SeOQIAtZb4PZnbf3+ZEqKMOOI7iYSfo2PctLbzzzztma8EUXYkg7sJKCuZuyXhkWZxikBqVQIp9WE/bhRxa/atnB0jJyttnDMdTAN8kxIizrHFfT25hSbcPI1cSzsmF2nLabO6hLlm7mdLZCOD6DSv9hMeOXgqXo7XdfLA4k8swnOA/85HZFmhaYjTyoDGsK8yoJny/xBbiaRij1HQcHkbG6k2QKcs96pjmiJPoCv2dmsU3Bh06l1O4OEXl/RL4qBGJBKsDW/TXy7Qqa5y6LCEnlFAfefTHVgzuEQjJ2qb/z//oIrmujt+8hEa8F7Jyn6+FGqMNRxDvIQn5Ty/CPUStS1lNL1PEb7TA3ChYkYvnuhNVq8HHf47neGMpUwC5ppk5Zzb/5zEP0XH4XXkNbR5/TYjcb0Df3egNLSQLdO13CO3mKeoccmtfcmaFCtOLXWc2xNNcu09s+/QlZMuiu1TAzhWXU2CAXT7K794mTXHXjgGEaEe86Pj1nO1zHN7QhKDN92WMEdYasRAVDu/XYdzpsKJZ3POhNJp6pynotVBOkPk+2g04S8uujLVSIPZIwu7p3RmPQGGvfMviswhyPvSsPqND77j5msYOLCnXXjeXhOe0E7fIRpxPK1F6/N0R4tZCYNJe9Zo248XdqBvl5ZQWDC6aQH1E4djPK/08CS7/kAECqGqOCDPRvvMUNkGOnxsMx5eofr1YR7zWOZajr2GnfhA9fjrLv6KxXPVU0z702aS/Mfnf87ckGpOKA8/ssJiyZ4fzP6uN4pEb6wEta2DnnacUDd96nMvB9HvGCDoYZH646+n4oev+AnkYTy+ZRpmnsG6/3Z85iH3RwN6P2I3DWvGuN2e+1zQ2kaBMDms8qeXVY1+8qWr75ihizHCJr6E8Rd2Sw7xM0+6mKpu6gVGIi09auHg1+6Q6PlCr8Hy/pc4Exj9Hx1m14WKSF2SB1SYOnm', | 825 | data: 'f5hBUeedsvb1VBTpmpQ+XgGbnuVDMVEAdbEN7ZLK5k++4Iuw7l52zX6AHCWUFMDRfT6joiD2DMj0O8B2g55SeOQIAtZb4PZnbf3+ZEqKMOOI7iYSfo2PctLbzzzztma8EUXYkg7sJKCuZuyXhkWZxikBqVQIp9WE/bhRxa/atnB0jJyttnDMdTAN8kxIizrHFfT25hSbcPI1cSzsmF2nLabO6hLlm7mdLZCOD6DSv9hMeOXgqXo7XdfLA4k8swnOA/85HZFmhaYjTyoDGsK8yoJny/xBbiaRij1HQcHkbG6k2QKcs96pjmiJPoCv2dmsU3Bh06l1O4OEXl/RL4qBGJBKsDW/TXy7Qqa5y6LCEnlFAfefTHVgzuEQjJ2qb/z//oIrmujt+8hEa8F7Jyn6+FGqMNRxDvIQn5Ty/CPUStS1lNL1PEb7TA3ChYkYvnuhNVq8HHf47neGMpUwC5ppk5Zzb/5zEP0XH4XXkNbR5/TYjcb0Df3egNLSQLdO13CO3mKeoccmtfcmaFCtOLXWc2xNNcu09s+/QlZMuiu1TAzhWXU2CAXT7K794mTXHXjgGEaEe86Pj1nO1zHN7QhKDN92WMEdYasRAVDu/XYdzpsKJZ3POhNJp6pynotVBOkPk+2g04S8uujLVSIPZIwu7p3RmPQGGvfMviswhyPvSsPqND77j5msYOLCnXXjeXhOe0E7fIRpxPK1F6/N0R4tZCYNJe9Zo248XdqBvl5ZQWDC6aQH1E4djPK/08CS7/kAECqGqOCDPRvvMUNkGOnxsMx5eofr1YR7zWOZajr2GnfhA9fjrLv6KxXPVU0z702aS/Mfnf87ckGpOKA8/ssJiyZ4fzP6uN4pEb6wEta2DnnacUDd96nMvB9HvGCDoYZH646+n4oev+AnkYTy+ZRpmnsG6/3Z85iH3RwN6P2I3DWvGuN2e+1zQ2kaBMDms8qeXVY1+8qWr75ihizHCJr6E8Rd2Sw7xM0+6mKpu6gVGIi09auHg1+6Q6PlCr8Hy/pc4Exj9Hx1m14WKSF2SB1SYOnm', |
826 | version: '0.2', | 826 | version: '0.2', |
827 | creationDate: 'Sat May 19 02:26:44 PDT 2007', | 827 | creationDate: 'Sat May 19 02:26:44 PDT 2007', |
828 | updateDate: 'Sat May 19 02:26:44 PDT 2007', | 828 | updateDate: 'Sat May 19 02:26:44 PDT 2007', |
829 | accessDate: 'Mon Jul 09 06:08:39 PDT 2007' | 829 | accessDate: 'Mon Jul 09 06:08:39 PDT 2007' |
830 | }, | 830 | }, |
831 | '84f3b8571428014d04d7c05528af73c89cedf17e23b1f9541fe7060512f4c1a3': { | 831 | '84f3b8571428014d04d7c05528af73c89cedf17e23b1f9541fe7060512f4c1a3': { |
832 | header: '####', | 832 | header: '####', |
833 | data: '2/zsq97zQBq8wE0oAC15HW5pbbzgokoDkLSEGniP1VL+sW3b+tXYOQV+VSFJo8ERNlCSoy679G7N8tPKgA+rO2/roGP/iKEuE38et9R6v9nhCPfo1vKt7XpvzJYow/qDwdStylXbfW9QN12Yx12r/nkPldVTXCYQDF0Vs0h/I1XMjbILpq1smbNXAUdn9I3W9o8KpREvac2H1ir2vYOzq9Ubhq4jggX/9s+FGm40f5MX/OM+lJGdRPCMG3rfWVeFeWEGWpmg0AXpV7eEuKH7sPrWy+QLXD1IwNE03QLhuOh0qEPsEi6kcCaZyLlCHYlzJ/hIAR1CBlCtGm+vqD+WRr0mGQtl81MMl6/BoW40dya/6aIKNOWfmYNgdfplknkVqxFsJnwVqjQJWfCzbW1KqBvMHx/7oPNjbMS0KKhd8ctOsTLSvq4zFI+mvR6BggwT8rwcfa66shJIaDDC', | 833 | data: '2/zsq97zQBq8wE0oAC15HW5pbbzgokoDkLSEGniP1VL+sW3b+tXYOQV+VSFJo8ERNlCSoy679G7N8tPKgA+rO2/roGP/iKEuE38et9R6v9nhCPfo1vKt7XpvzJYow/qDwdStylXbfW9QN12Yx12r/nkPldVTXCYQDF0Vs0h/I1XMjbILpq1smbNXAUdn9I3W9o8KpREvac2H1ir2vYOzq9Ubhq4jggX/9s+FGm40f5MX/OM+lJGdRPCMG3rfWVeFeWEGWpmg0AXpV7eEuKH7sPrWy+QLXD1IwNE03QLhuOh0qEPsEi6kcCaZyLlCHYlzJ/hIAR1CBlCtGm+vqD+WRr0mGQtl81MMl6/BoW40dya/6aIKNOWfmYNgdfplknkVqxFsJnwVqjQJWfCzbW1KqBvMHx/7oPNjbMS0KKhd8ctOsTLSvq4zFI+mvR6BggwT8rwcfa66shJIaDDC', |
834 | version: '0.2', | 834 | version: '0.2', |
835 | creationDate: 'Wed Mar 14 08:38:54 PDT 2007', | 835 | creationDate: 'Wed Mar 14 08:38:54 PDT 2007', |
836 | updateDate: 'Wed Mar 14 08:38:54 PDT 2007', | 836 | updateDate: 'Wed Mar 14 08:38:54 PDT 2007', |
837 | accessDate: 'Wed Mar 14 08:38:54 PDT 2007' | 837 | accessDate: 'Wed Mar 14 08:38:54 PDT 2007' |
838 | }, | 838 | }, |
839 | 'a4218c7ece0287ebad7f3cdd6510f424245a4d7d42ceb083b664a4335bcb7690': { | 839 | 'a4218c7ece0287ebad7f3cdd6510f424245a4d7d42ceb083b664a4335bcb7690': { |
840 | header: '####', | 840 | header: '####', |
841 | data: 'hQ123ZhZ4AiXD25P/0Laq3MtRO2oSIrY+GoYe3UAiyEHc9HZDCvR+POEEaARXNyh+U6z8S12P1GvQbzo23ZCt5byhqC+UmbfF3Y4FikM7WmHaRPtWjv8JNf3X0iJ9a2IBLA1BlqgJolnVDtrLsFx+6rBIU9r8pI2jdcsw9w9feRbE9/0S0filh66azojT5RM1qLcIUVWGixROY6PALSnA9PCjA6IG5WUa/DX7DyRrosZ9V4ZheMlzlz8CgEKBTN/HREIbPrEocBOvmnbupIEpOvH3OXKDXf39KAGVBAU2IIkOrGyWfT12p9dK+Zf+MQUl4DDIdAbF81Lus+LQmqtQ1ieyV0nNiqFhPuglLvKRj7QZRFfHNyejkMTZQWjQhBdHRmfSxyEgmFrM17yVVz4cMis/44g3szHMgAAfFIc79wq09oNDEV+ZUMS2xyBCALjRmhedqYIMGRCAG15', | 841 | data: 'hQ123ZhZ4AiXD25P/0Laq3MtRO2oSIrY+GoYe3UAiyEHc9HZDCvR+POEEaARXNyh+U6z8S12P1GvQbzo23ZCt5byhqC+UmbfF3Y4FikM7WmHaRPtWjv8JNf3X0iJ9a2IBLA1BlqgJolnVDtrLsFx+6rBIU9r8pI2jdcsw9w9feRbE9/0S0filh66azojT5RM1qLcIUVWGixROY6PALSnA9PCjA6IG5WUa/DX7DyRrosZ9V4ZheMlzlz8CgEKBTN/HREIbPrEocBOvmnbupIEpOvH3OXKDXf39KAGVBAU2IIkOrGyWfT12p9dK+Zf+MQUl4DDIdAbF81Lus+LQmqtQ1ieyV0nNiqFhPuglLvKRj7QZRFfHNyejkMTZQWjQhBdHRmfSxyEgmFrM17yVVz4cMis/44g3szHMgAAfFIc79wq09oNDEV+ZUMS2xyBCALjRmhedqYIMGRCAG15', |
842 | version: '0.2', | 842 | version: '0.2', |
843 | creationDate: 'Wed Mar 14 08:36:20 PDT 2007', | 843 | creationDate: 'Wed Mar 14 08:36:20 PDT 2007', |
844 | updateDate: 'Wed Mar 14 08:36:20 PDT 2007', | 844 | updateDate: 'Wed Mar 14 08:36:20 PDT 2007', |
845 | accessDate: 'Wed Mar 14 08:38:12 PDT 2007' | 845 | accessDate: 'Wed Mar 14 08:38:12 PDT 2007' |
846 | }, | 846 | }, |
847 | 'c6613ccf0c1c6b65798c6f35657a10d4c6033aa32204a90d9d0274783a1098ed': { | 847 | 'c6613ccf0c1c6b65798c6f35657a10d4c6033aa32204a90d9d0274783a1098ed': { |
848 | header: '####', | 848 | header: '####', |
849 | data: 'ATU61Uq3Fe24JAEauMRtY8vMjzaQcPtnt1fshTD4dGuptFH9XoZ4bMC4XKHI7JKbx1NUEbR2ySOj9K/NJuWEGZjRgZbNI/KtuxNedlm/7jEpHQx4ZfhXQ8OiUDd+2bB9g6V0Ck2T1gM4IyaZMJ1QfOlYmGGv8n4flhHC5kUzL2OIiAxNHvKQjdEOccnEsk25Gg6FveKHD6NqVunsiCqhxJ84VBNzHJscuCTRcbt6KwR1+dw7Y+nhTjdDFq9UidlxTO0BKYsqj9F4Kq1LXORkSyab7zKooFH5kNd8torb5UFto8dfI8/+DOVHMxNRh2aWSn3O9bzwi1PfYO1nky2O6OKR48Y65Hp1sm3Xj4AAVHWSGakYUSV5M5XxKKzvoKY6Qqhz8GhbkzM2FC0IKTEcmINMvzXdzKRTqBFg6i0t7Qo80i3sQSoju3/4CYRozI2RrF8W4f3/0XgJf21oUAdTXOmSePSZoqhdejXeNQAgb89v+ZextxA6NJNYqvrx1NjdKmWKJIU+o3AgPYj4UIwWHwVADHITKrIWl/SbOsGP5aERtSiLnC+xqfRUOpgfkAYLcytspouHxvQjgNY4I1U/2S1DThG/N2EzuPl7GLYQ+Y3RAvLObFbrV8S3DS6vXIkigxyJT++MotIKoPBq0xDq0ck6joyvwvg4jXUMKlJa8/LQewJlbH8Lszx7SwjynzEQUJcpCnmxixzSNfRzpzgEBQSiClEEqArYykew3rjz9lc9nkdXUCzz81WYsvk6rGJ6ZdDsfKsG9+kaybuLL8huE0ERhznKDJW44ehDGQLr0phO3CI8n/9Px0PhPeZ1hvoiiH8CFSW5f45ZrFaaQG8hNyzWCpCFoX0/dNsNPsAkOJnO4v0PvO0HDOif1JjgPjCS51vBzxu8gYhkWlPo2hZxHhnnrbhxeBUU9jhLAx+NmxxfTjIWkbtHtVjm3ea/D2nuL1YrZKmQ3Qs6GamKlh3WwkRWRAVU3+/mbSGOISxo0u5v8QSmh/IPIXltniaQgWweqGNnCLWluuTyhoqnqDo0II7q', | 849 | data: 'ATU61Uq3Fe24JAEauMRtY8vMjzaQcPtnt1fshTD4dGuptFH9XoZ4bMC4XKHI7JKbx1NUEbR2ySOj9K/NJuWEGZjRgZbNI/KtuxNedlm/7jEpHQx4ZfhXQ8OiUDd+2bB9g6V0Ck2T1gM4IyaZMJ1QfOlYmGGv8n4flhHC5kUzL2OIiAxNHvKQjdEOccnEsk25Gg6FveKHD6NqVunsiCqhxJ84VBNzHJscuCTRcbt6KwR1+dw7Y+nhTjdDFq9UidlxTO0BKYsqj9F4Kq1LXORkSyab7zKooFH5kNd8torb5UFto8dfI8/+DOVHMxNRh2aWSn3O9bzwi1PfYO1nky2O6OKR48Y65Hp1sm3Xj4AAVHWSGakYUSV5M5XxKKzvoKY6Qqhz8GhbkzM2FC0IKTEcmINMvzXdzKRTqBFg6i0t7Qo80i3sQSoju3/4CYRozI2RrF8W4f3/0XgJf21oUAdTXOmSePSZoqhdejXeNQAgb89v+ZextxA6NJNYqvrx1NjdKmWKJIU+o3AgPYj4UIwWHwVADHITKrIWl/SbOsGP5aERtSiLnC+xqfRUOpgfkAYLcytspouHxvQjgNY4I1U/2S1DThG/N2EzuPl7GLYQ+Y3RAvLObFbrV8S3DS6vXIkigxyJT++MotIKoPBq0xDq0ck6joyvwvg4jXUMKlJa8/LQewJlbH8Lszx7SwjynzEQUJcpCnmxixzSNfRzpzgEBQSiClEEqArYykew3rjz9lc9nkdXUCzz81WYsvk6rGJ6ZdDsfKsG9+kaybuLL8huE0ERhznKDJW44ehDGQLr0phO3CI8n/9Px0PhPeZ1hvoiiH8CFSW5f45ZrFaaQG8hNyzWCpCFoX0/dNsNPsAkOJnO4v0PvO0HDOif1JjgPjCS51vBzxu8gYhkWlPo2hZxHhnnrbhxeBUU9jhLAx+NmxxfTjIWkbtHtVjm3ea/D2nuL1YrZKmQ3Qs6GamKlh3WwkRWRAVU3+/mbSGOISxo0u5v8QSmh/IPIXltniaQgWweqGNnCLWluuTyhoqnqDo0II7q', |
850 | version: '0.2', | 850 | version: '0.2', |
851 | creationDate: 'Wed Apr 25 01:04:29 PDT 2007', | 851 | creationDate: 'Wed Apr 25 01:04:29 PDT 2007', |
852 | updateDate: 'Wed Apr 25 01:04:29 PDT 2007', | 852 | updateDate: 'Wed Apr 25 01:04:29 PDT 2007', |
853 | accessDate: 'Sat May 19 02:22:01 PDT 2007' | 853 | accessDate: 'Sat May 19 02:22:01 PDT 2007' |
854 | }, | 854 | }, |
855 | 'dd2b4cdeaedfc97c384f79c2878fca9a981efde6ebe212138db235e51b80c64a': { | 855 | 'dd2b4cdeaedfc97c384f79c2878fca9a981efde6ebe212138db235e51b80c64a': { |
856 | header: '####', | 856 | header: '####', |
857 | data: 'd7ZpqQ4CTF00+/UnTvNnnkMXB2Ow/K9dys8V09Nedq4sgMUk08E1vqi9mdWbzNfRD7aV3blru8PfoRrxXRLTG/bjQ6xncecQoAJeUtSplKEO8fhuzGqbMqz47/y3aQDHBbygMAGV3wLgJO2Pv8p+8U/P3cEJisd9OqTNE+EYQz4eiq9dllMNUQjDY9aLHE8H0ny/5r9uohGNjXX/LfFMshjeS4rToCG5mzRaJPaRs1jkjzSntpF0RLxfU1acpJX4pNSuaLscdJ1lIwc17vygg6f3xexqvCeeFZBot1RwwbztZKbMfap4pRF5KoftD9bXJwoFMXigeMGLy0scpzsp1s8zBIwLhwUxEE0IBh7qeStg/3eRSW9slazuIR452O3Rysb+n/jWMyAhIOCSrnncjjH4XHbzV5GgT2d4f8jfBPmOT7l7C1ev41D3FGFxEb5TZGcJTaIW6ofLi5T5', | 857 | data: 'd7ZpqQ4CTF00+/UnTvNnnkMXB2Ow/K9dys8V09Nedq4sgMUk08E1vqi9mdWbzNfRD7aV3blru8PfoRrxXRLTG/bjQ6xncecQoAJeUtSplKEO8fhuzGqbMqz47/y3aQDHBbygMAGV3wLgJO2Pv8p+8U/P3cEJisd9OqTNE+EYQz4eiq9dllMNUQjDY9aLHE8H0ny/5r9uohGNjXX/LfFMshjeS4rToCG5mzRaJPaRs1jkjzSntpF0RLxfU1acpJX4pNSuaLscdJ1lIwc17vygg6f3xexqvCeeFZBot1RwwbztZKbMfap4pRF5KoftD9bXJwoFMXigeMGLy0scpzsp1s8zBIwLhwUxEE0IBh7qeStg/3eRSW9slazuIR452O3Rysb+n/jWMyAhIOCSrnncjjH4XHbzV5GgT2d4f8jfBPmOT7l7C1ev41D3FGFxEb5TZGcJTaIW6ofLi5T5', |
858 | version: '0.2', | 858 | version: '0.2', |
859 | creationDate: 'Wed Mar 14 08:52:12 PDT 2007', | 859 | creationDate: 'Wed Mar 14 08:52:12 PDT 2007', |
860 | updateDate: 'Wed Mar 14 08:52:12 PDT 2007', | 860 | updateDate: 'Wed Mar 14 08:52:12 PDT 2007', |
861 | accessDate: 'Wed Mar 21 04:16:29 PDT 2007' | 861 | accessDate: 'Wed Mar 21 04:16:29 PDT 2007' |
862 | } | 862 | } |
863 | } | 863 | } |
864 | }, | 864 | }, |
865 | 'de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4': { | 865 | 'de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4': { |
866 | data: 'CPY8iR/pjIj9RJQLodhZzqAHNxzEvqIrpTemeMh+7RmJ5TfWVJ9n8dJuEntoOd3NbNYP9mGEzytvBKxTFtQ8xxD/c03RfdQwMFuYAaCrHdNineK/hzeETNF6siCdiUFnCgyluUT8eLtMKOPvZJKpP3iei5GNnQJMbeLvM/yRmnLyNiHFBPgi8fx9bYLE4XqPP+e6RgFC1UkKJLeeVgGY+qid1LycKqEklQc6OH9JzLFPKUeu56xINyOzPrR4hPJg0fKIboy7EkPnXXn6bXWUsqzcFNBvubdDi4VPeKcEbcR2JDGACInJNDxVO7EobRzvycrT0UQnWPgRgj3cBKZPBrXN7ntdt8C7ceokHhEcmW3u7C96lMYFIm4cCeN5bGpJe8Hw4kc+zOT3RnDFqNTCg5nW6TTYbdOWOkZ9PpizPB094Etiz0bIoH9uUomMqKYGZagXBm0b7O8irSh9hXKdS58jH+UisXy03Vvf2hNZceIM6rpyLRhPhM9n3B5AaUD6X4JGyaTy9odGxKpCqzLeDqYo2wWfVtV3822uJqdrO8c1HHM5CSAQZm7ni9U9kwHAHIdt/UwuGDORmNBchEgv02tE8qnoAD7lWeB92VSv84J+NQ+v8js7/AgQFLjXdjuCGY5ouzriURf2HIA2NIy1dnfX9UiAqNn4bP9upU/8UAILSoHVou7zdINCDgWCupJkA+Dbl2nl4PC2rFpAfqDCPlV3L3UAqIU5V/SxchN8vdkdOLE0xjMn5dHvud5fUMZgXSF3Q/h1Ouf+4EU81Fgc/cjy9WLYGEk+dFLOCy2CQDlBfsQZBD1vvfg8UACcjK/f7DjGF9NZAGzFeSBNB+a66uZhGpd5MOhtJGm8CCITh/883QaRTxKqaVfPe+VtCTYYtVeZWTGAut01fFae1iNTSkgN2rlK38boZ2DbiRaA9jDvhTuH7IISLlBNUCeIkfTrWEMVndoj53lApX2eJ79DvmtB+WHuh1AklO1SOZ3eOXDw4oWpFFuBNO8HqKccPRce4HI3KFE6AVFzDoIT82MnxbfcsSpbtZyhZPTlZ2+mUd2e3HETD50KAkr9TFAa3geJi4rCfnlf95c2vb6D43wUrE+X6+44C/FqCvtym3yH9F4Fy79gFrZk+303KpcfcwheNLT3yLqgGe0FoJToSUPrZkgQb2MFh12B3X+uHClM6EoZInn1vSQSaNQvg4a6W3KT5WVhszgfKXdGFieil9LFZtf5TIX/xVGHuUtmgPrJMadjoZDSF6XW', | 866 | data: 'CPY8iR/pjIj9RJQLodhZzqAHNxzEvqIrpTemeMh+7RmJ5TfWVJ9n8dJuEntoOd3NbNYP9mGEzytvBKxTFtQ8xxD/c03RfdQwMFuYAaCrHdNineK/hzeETNF6siCdiUFnCgyluUT8eLtMKOPvZJKpP3iei5GNnQJMbeLvM/yRmnLyNiHFBPgi8fx9bYLE4XqPP+e6RgFC1UkKJLeeVgGY+qid1LycKqEklQc6OH9JzLFPKUeu56xINyOzPrR4hPJg0fKIboy7EkPnXXn6bXWUsqzcFNBvubdDi4VPeKcEbcR2JDGACInJNDxVO7EobRzvycrT0UQnWPgRgj3cBKZPBrXN7ntdt8C7ceokHhEcmW3u7C96lMYFIm4cCeN5bGpJe8Hw4kc+zOT3RnDFqNTCg5nW6TTYbdOWOkZ9PpizPB094Etiz0bIoH9uUomMqKYGZagXBm0b7O8irSh9hXKdS58jH+UisXy03Vvf2hNZceIM6rpyLRhPhM9n3B5AaUD6X4JGyaTy9odGxKpCqzLeDqYo2wWfVtV3822uJqdrO8c1HHM5CSAQZm7ni9U9kwHAHIdt/UwuGDORmNBchEgv02tE8qnoAD7lWeB92VSv84J+NQ+v8js7/AgQFLjXdjuCGY5ouzriURf2HIA2NIy1dnfX9UiAqNn4bP9upU/8UAILSoHVou7zdINCDgWCupJkA+Dbl2nl4PC2rFpAfqDCPlV3L3UAqIU5V/SxchN8vdkdOLE0xjMn5dHvud5fUMZgXSF3Q/h1Ouf+4EU81Fgc/cjy9WLYGEk+dFLOCy2CQDlBfsQZBD1vvfg8UACcjK/f7DjGF9NZAGzFeSBNB+a66uZhGpd5MOhtJGm8CCITh/883QaRTxKqaVfPe+VtCTYYtVeZWTGAut01fFae1iNTSkgN2rlK38boZ2DbiRaA9jDvhTuH7IISLlBNUCeIkfTrWEMVndoj53lApX2eJ79DvmtB+WHuh1AklO1SOZ3eOXDw4oWpFFuBNO8HqKccPRce4HI3KFE6AVFzDoIT82MnxbfcsSpbtZyhZPTlZ2+mUd2e3HETD50KAkr9TFAa3geJi4rCfnlf95c2vb6D43wUrE+X6+44C/FqCvtym3yH9F4Fy79gFrZk+303KpcfcwheNLT3yLqgGe0FoJToSUPrZkgQb2MFh12B3X+uHClM6EoZInn1vSQSaNQvg4a6W3KT5WVhszgfKXdGFieil9LFZtf5TIX/xVGHuUtmgPrJMadjoZDSF6XW', |
867 | version: '0.3', | 867 | version: '0.3', |
868 | creationDate: 'Wed Mar 14 08:20:58 PDT 2007', | 868 | creationDate: 'Wed Mar 14 08:20:58 PDT 2007', |
869 | updateDate: 'Fri Dec 18 09:50:20 PST 2009', | 869 | updateDate: 'Fri Dec 18 09:50:20 PST 2009', |
870 | accessDate: 'Tue Jan 05 01:38:41 PST 2010', | 870 | accessDate: 'Tue Jan 05 01:38:41 PST 2010', |
871 | currentVersion: '59b84967035465bdf84c8aab3c43aec6cf60e1e2857e978b205a2cfda7546f28', | 871 | currentVersion: '59b84967035465bdf84c8aab3c43aec6cf60e1e2857e978b205a2cfda7546f28', |
872 | versions: { | 872 | versions: { |
873 | '201725aba7b4dd93531e40ee08eb8156e3aecd3db4f11e54d4d88ed5508c72a2': { | 873 | '201725aba7b4dd93531e40ee08eb8156e3aecd3db4f11e54d4d88ed5508c72a2': { |
874 | header: '####', | 874 | header: '####', |
875 | data: '4ndloDtoW1Mhat41ZlW+nN+WkdEriCn/z/oclyBFQSljJRlMwUFvzE/OCVYc2fQx1D1GBedY/O13v+SCAiJXUrr0dgrMDOfmYy7ZtNo0hYshjaYQucJovt7UQLeFAuLO6rNK9CrsYA/AWoiT878z2iCYCqVq41sL8juCm9n+d9aR0eyjXAKj8QJzVz/uvdudoGQ5xL18x2yUZnemY5gQklYlm0u9zzCJ3rLOENnnAggFnSJ0oysNjB2UwQY6P53bqXzF8E+u6Rv3OoIbmCIZMaoK1G5ivnWHwhLzp9UVdIj8ipfLsTJnGMk+aZ3nnEJ7wQCaaLy/lY2RYmSeUTTZt2ImK4ZLrSxRC21QkD+juyIiaEBJdhP8UOfcqE8Hw+etc/Cl0QgBtv9AgXD4BiZs3HUTXsV/PhIzP+6TGyr3/A2kt8dv33V7Gh2Ba+28wtsG/+HwCMk=', | 875 | data: '4ndloDtoW1Mhat41ZlW+nN+WkdEriCn/z/oclyBFQSljJRlMwUFvzE/OCVYc2fQx1D1GBedY/O13v+SCAiJXUrr0dgrMDOfmYy7ZtNo0hYshjaYQucJovt7UQLeFAuLO6rNK9CrsYA/AWoiT878z2iCYCqVq41sL8juCm9n+d9aR0eyjXAKj8QJzVz/uvdudoGQ5xL18x2yUZnemY5gQklYlm0u9zzCJ3rLOENnnAggFnSJ0oysNjB2UwQY6P53bqXzF8E+u6Rv3OoIbmCIZMaoK1G5ivnWHwhLzp9UVdIj8ipfLsTJnGMk+aZ3nnEJ7wQCaaLy/lY2RYmSeUTTZt2ImK4ZLrSxRC21QkD+juyIiaEBJdhP8UOfcqE8Hw+etc/Cl0QgBtv9AgXD4BiZs3HUTXsV/PhIzP+6TGyr3/A2kt8dv33V7Gh2Ba+28wtsG/+HwCMk=', |
876 | version: '0.2', | 876 | version: '0.2', |
877 | creationDate: 'Wed Mar 14 08:45:40 PDT 2007', | 877 | creationDate: 'Wed Mar 14 08:45:40 PDT 2007', |
878 | updateDate: 'Wed Mar 14 08:45:40 PDT 2007', | 878 | updateDate: 'Wed Mar 14 08:45:40 PDT 2007', |
879 | accessDate: 'Wed Mar 14 08:45:40 PDT 2007' | 879 | accessDate: 'Wed Mar 14 08:45:40 PDT 2007' |
880 | }, | 880 | }, |
881 | '59b84967035465bdf84c8aab3c43aec6cf60e1e2857e978b205a2cfda7546f28': { | 881 | '59b84967035465bdf84c8aab3c43aec6cf60e1e2857e978b205a2cfda7546f28': { |
882 | header: '####', | 882 | header: '####', |
883 | data: 'eSAwxBi9CLckMV3o9PxBjVZZ47g2AOIsbPt8QMPta7U+6KKUm58cXHV7BDfRkbin3JYQJGYfu4HYHmayGt4IcX4RD3riftxnG3UFNqG4LQQ8+fwA3xTMBisnUSq0JYc/PKdBKzxH9x8moSqZC/cgFWe90p0PxdY13otjd1qvDL2ALAgY/uEDboTcLTbSEhpGIYQHtQ1ZjDG+KXI8J7atuMvS0KFreNUm9+uMZT0yCXwNpGy+ez2+ZDXTEjZUKaFPLI7g/vyySn6VMXmlqJftGXZ+fW5UWGaxb7WFa1hh/nI2okPuRlUQh50xXQJXVvanw1ATJbN1PRfYEfvQKLlAAwYuoB/qL0y0vU+3OktAbgBvwt9prs3IsqjwMeaejVTo3Yj9pQPJ14a+6lxQZQRFUaLePIPdYvq9NRM7chkNYminW0JN6umi6bvJ4KKTyjAglBQ6X4s=', | 883 | data: 'eSAwxBi9CLckMV3o9PxBjVZZ47g2AOIsbPt8QMPta7U+6KKUm58cXHV7BDfRkbin3JYQJGYfu4HYHmayGt4IcX4RD3riftxnG3UFNqG4LQQ8+fwA3xTMBisnUSq0JYc/PKdBKzxH9x8moSqZC/cgFWe90p0PxdY13otjd1qvDL2ALAgY/uEDboTcLTbSEhpGIYQHtQ1ZjDG+KXI8J7atuMvS0KFreNUm9+uMZT0yCXwNpGy+ez2+ZDXTEjZUKaFPLI7g/vyySn6VMXmlqJftGXZ+fW5UWGaxb7WFa1hh/nI2okPuRlUQh50xXQJXVvanw1ATJbN1PRfYEfvQKLlAAwYuoB/qL0y0vU+3OktAbgBvwt9prs3IsqjwMeaejVTo3Yj9pQPJ14a+6lxQZQRFUaLePIPdYvq9NRM7chkNYminW0JN6umi6bvJ4KKTyjAglBQ6X4s=', |
884 | version: '0.2', | 884 | version: '0.2', |
885 | creationDate: 'Wed Mar 14 08:47:01 PDT 2007', | 885 | creationDate: 'Wed Mar 14 08:47:01 PDT 2007', |
886 | updateDate: 'Wed Mar 14 08:47:01 PDT 2007', | 886 | updateDate: 'Wed Mar 14 08:47:01 PDT 2007', |
887 | accessDate: 'Tue Jan 05 01:38:41 PST 2010' | 887 | accessDate: 'Tue Jan 05 01:38:41 PST 2010' |
888 | }, | 888 | }, |
889 | 'c7398bb27021058c9965a332d678b0070287b8ad12694bc8732346e6d84fe9a9': { | 889 | 'c7398bb27021058c9965a332d678b0070287b8ad12694bc8732346e6d84fe9a9': { |
890 | header: '####', | 890 | header: '####', |
891 | data: 'L+wk8k9ejeUeVz0offdItFpy8drMl1hi0FODBMKlPIAmEcNjnHU/IktOlyLrK0YHj66DaplXw2EyRkJNcMIbfACUtavxhWBH9VTftOPepsbsrU19aP6Xk7R1pr1sC76w1TgKCjE6IyBnK5qk1oHqcGv71GJLMmiqGivKyYOXQ45SH9tbHC4GUrg0YxoAYRwXqg+SlwRHpSZkX55NzPCEZn9eatGKCznTZs7pg0uBoM546fOIEBMgGndNk6gnsAH7At8yYxDMnkGHUctsSExL1O+W3bDDDx7D3uPkkjtd9se0exPru0fmsfcKPrcRkx8b8MAdgcylOtMdYvSudPdR6foSIqKMqktH35QlH6Rr5E/ire3O632QlmCieKDoPk/cB/qL3gKedxT1NxtC7SNR3aumKBAKOBDTVSjWWq3sIImQPZz+RUdRajeqkryNDVVPLFyjdC0=', | 891 | data: 'L+wk8k9ejeUeVz0offdItFpy8drMl1hi0FODBMKlPIAmEcNjnHU/IktOlyLrK0YHj66DaplXw2EyRkJNcMIbfACUtavxhWBH9VTftOPepsbsrU19aP6Xk7R1pr1sC76w1TgKCjE6IyBnK5qk1oHqcGv71GJLMmiqGivKyYOXQ45SH9tbHC4GUrg0YxoAYRwXqg+SlwRHpSZkX55NzPCEZn9eatGKCznTZs7pg0uBoM546fOIEBMgGndNk6gnsAH7At8yYxDMnkGHUctsSExL1O+W3bDDDx7D3uPkkjtd9se0exPru0fmsfcKPrcRkx8b8MAdgcylOtMdYvSudPdR6foSIqKMqktH35QlH6Rr5E/ire3O632QlmCieKDoPk/cB/qL3gKedxT1NxtC7SNR3aumKBAKOBDTVSjWWq3sIImQPZz+RUdRajeqkryNDVVPLFyjdC0=', |
diff --git a/frontend/gamma/tests/tests/Components/FullApp/index.html b/frontend/gamma/tests/tests/Components/FullApp/index.html index bc00fa7..966a16c 100644 --- a/frontend/gamma/tests/tests/Components/FullApp/index.html +++ b/frontend/gamma/tests/tests/Components/FullApp/index.html | |||
@@ -1,240 +1,233 @@ | |||
1 | <!-- | 1 | <!-- |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2011 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz Community Edition. |
6 | Clipperz Community Edition is an online password manager. | 6 | Clipperz Community Edition is an online password manager. |
7 | For further information about its features and functionalities please | 7 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 8 | refer to http://www.clipperz.com. |
9 | 9 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 10 | * Clipperz Community Edition is free software: you can redistribute |
11 | it and/or modify it under the terms of the GNU Affero General Public | 11 | it and/or modify it under the terms of the GNU Affero General Public |
12 | License as published by the Free Software Foundation, either version | 12 | License as published by the Free Software Foundation, either version |
13 | 3 of the License, or (at your option) any later version. | 13 | 3 of the License, or (at your option) any later version. |
14 | 14 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 15 | * Clipperz Community Edition is distributed in the hope that it will |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 16 | be useful, but WITHOUT ANY WARRANTY; without even the implied |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 18 | See the GNU Affero General Public License for more details. |
19 | 19 | ||
20 | * You should have received a copy of the GNU Affero General Public | 20 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 21 | License along with Clipperz Community Edition. If not, see |
22 | <http://www.gnu.org/licenses/>. | 22 | <http://www.gnu.org/licenses/>. |
23 | 23 | ||
24 | --> | 24 | --> |
25 | 25 | ||
26 | <html> | 26 | <html> |
27 | <head> | 27 | <head> |
28 | <title>Clipperz - online password manager - debug</title> | 28 | <title>FullApp TEST - WEB</title> |
29 | <meta http-equiv="content-type" content="text/html; charset=utf-8" /> | 29 | <meta http-equiv="content-type" content="text/html; charset=utf-8" /> |
30 | 30 | ||
31 | 31 | ||
32 | <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" /> | 32 | <link rel="stylesheet" type="text/css" href="../../../../css/web.css" /> |
33 | <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" /> | ||
34 | <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" /> | ||
35 | 33 | ||
36 | <link rel="shortcut icon" href="./clipperz.ico" /> | 34 | <link rel="shortcut icon" href="./clipperz.ico" /> |
37 | 35 | ||
38 | <meta name="description" content="Login to your web accounts with just one click. Never type a password again! Use multiple complex passwords and forget them. A password manager that enhances your online security." /> | 36 | <meta name="description" content="Login to your web accounts with just one click. Never type a password again! Use multiple complex passwords and forget them. A password manager that enhances your online security." /> |
39 | <meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" /> | 37 | <meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" /> |
40 | |||
41 | <script> | 38 | <script> |
42 | Clipperz_IEisBroken = false; | 39 | Clipperz_IEisBroken = false; |
43 | Clipperz_normalizedNewLine = '\n'; | 40 | Clipperz_normalizedNewLine = '\n'; |
44 | Clipperz_dumpUrl = "/dump/"; | 41 | Clipperz_dumpUrl = "/dump/"; |
45 | </script> | 42 | </script> |
46 | 43 | ||
47 | <!--[if IE]><script> | 44 | <!--[if IE]><script> |
48 | Clipperz_IEisBroken = true; | 45 | Clipperz_IEisBroken = true; |
49 | Clipperz_normalizedNewLine = '\x0d\x0a'; | 46 | Clipperz_normalizedNewLine = '\x0d\x0a'; |
50 | </script><![endif]--> | 47 | </script><![endif]--> |
51 | 48 | ||
52 | 49 | ||
53 | <script type='text/javascript' src='../../../../js/bookmarklet.js'></script> | 50 | <script type='text/javascript' src='../../../../js/Bookmarklet.js'></script> |
54 | <script type='text/javascript' src='../../../../js/bookmarklet_ie.js'></script> | 51 | <script type='text/javascript' src='../../../../js/Bookmarklet_IE.js'></script> |
55 | 52 | ||
56 | <script type='text/javascript' src='../../../../js/MochiKit/Base.js'></script> | 53 | <script type='text/javascript' src='../../../../js/MochiKit/Base.js'></script> |
57 | <script type='text/javascript' src='../../../../js/MochiKit/Iter.js'></script> | 54 | <script type='text/javascript' src='../../../../js/MochiKit/Iter.js'></script> |
58 | <script type='text/javascript' src='../../../../js/MochiKit/Logging.js'></script> | 55 | <script type='text/javascript' src='../../../../js/MochiKit/Logging.js'></script> |
59 | <script type='text/javascript' src='../../../../js/MochiKit/Format.js'></script> | 56 | <script type='text/javascript' src='../../../../js/MochiKit/Format.js'></script> |
60 | <script type='text/javascript' src='../../../../js/MochiKit/Async.js'></script> | 57 | <script type='text/javascript' src='../../../../js/MochiKit/Async.js'></script> |
61 | <script type='text/javascript' src='../../../../js/MochiKit/DOM.js'></script> | 58 | <script type='text/javascript' src='../../../../js/MochiKit/DOM.js'></script> |
62 | <script type='text/javascript' src='../../../../js/MochiKit/Style.js'></script> | 59 | <script type='text/javascript' src='../../../../js/MochiKit/Style.js'></script> |
63 | <script type='text/javascript' src='../../../../js/MochiKit/LoggingPane.js'></script> | 60 | <script type='text/javascript' src='../../../../js/MochiKit/LoggingPane.js'></script> |
64 | <script type='text/javascript' src='../../../../js/MochiKit/Color.js'></script> | 61 | <script type='text/javascript' src='../../../../js/MochiKit/Color.js'></script> |
65 | <script type='text/javascript' src='../../../../js/MochiKit/Signal.js'></script> | 62 | <script type='text/javascript' src='../../../../js/MochiKit/Signal.js'></script> |
66 | <script type='text/javascript' src='../../../../js/MochiKit/Position.js'></script> | 63 | <script type='text/javascript' src='../../../../js/MochiKit/Position.js'></script> |
67 | <script type='text/javascript' src='../../../../js/MochiKit/Selector.js'></script> | 64 | <script type='text/javascript' src='../../../../js/MochiKit/Selector.js'></script> |
68 | <script type='text/javascript' src='../../../../js/MochiKit/Visual.js'></script> | 65 | <script type='text/javascript' src='../../../../js/MochiKit/Visual.js'></script> |
69 | <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> | 66 | <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> |
70 | <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> | 67 | <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> |
71 | <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> | 68 | <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> |
72 | <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> | 69 | <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> |
73 | <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> | 70 | <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> |
74 | <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> | 71 | <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> |
75 | <script type='text/javascript' src='../../../../js/Clipperz/CSVProcessor.js'></script> | 72 | <script type='text/javascript' src='../../../../js/Clipperz/CSVProcessor.js'></script> |
76 | <script type='text/javascript' src='../../../../js/Clipperz/KeePassExportProcessor.js'></script> | 73 | <script type='text/javascript' src='../../../../js/Clipperz/KeePassExportProcessor.js'></script> |
77 | <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> | 74 | <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> |
78 | <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> | 75 | <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> |
79 | <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> | 76 | <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> |
80 | <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> | 77 | <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> |
81 | <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> | 78 | <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> |
82 | <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> | 79 | <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> |
83 | <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> | 80 | <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> |
84 | <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> | 81 | <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> |
85 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> | 82 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> |
86 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> | 83 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> |
87 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> | 84 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> |
88 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> | 85 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> |
89 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> | 86 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> |
90 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> | 87 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> |
91 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/RSA.js'></script> | 88 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/RSA.js'></script> |
92 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_defaults.js'></script> | 89 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_defaults.js'></script> |
93 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> | 90 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> |
94 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> | 91 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> |
95 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> | 92 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> |
96 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> | 93 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> |
97 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> | 94 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> |
98 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.JSON.js'></script> | 95 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.JSON.js'></script> |
99 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> | 96 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> |
100 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> | 97 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> |
101 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> | 98 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> |
102 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> | 99 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> |
103 | <script type='text/javascript' src='../../../../js/Clipperz/PM/BookmarkletProcessor.js'></script> | 100 | <script type='text/javascript' src='../../../../js/Clipperz/PM/BookmarkletProcessor.js'></script> |
104 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> | 101 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> |
105 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script> | 102 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script> |
106 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script> | 103 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script> |
107 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script> | 104 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script> |
108 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script> | 105 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script> |
109 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script> | 106 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script> |
110 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> | 107 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> |
111 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> | 108 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> |
112 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> | 109 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> |
113 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> | 110 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> |
114 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script> | 111 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script> |
115 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script> | 112 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script> |
116 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginFormValue.js'></script> | 113 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginFormValue.js'></script> |
117 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/OneTimePassword.js'></script> | 114 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/OneTimePassword.js'></script> |
118 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script> | 115 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script> |
119 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Button.js'></script> | 116 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Button.js'></script> |
120 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script> | 117 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script> |
121 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/FaviconComponent.js'></script> | 118 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/FaviconComponent.js'></script> |
122 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js'></script> | 119 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js'></script> |
123 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script> | 120 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script> |
124 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script> | 121 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script> |
125 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js'></script> | 122 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js'></script> |
126 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script> | 123 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script> |
127 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script> | 124 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script> |
128 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script> | 125 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script> |
129 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js'></script> | 126 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js'></script> |
130 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js'></script> | 127 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js'></script> |
131 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js'></script> | 128 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js'></script> |
132 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/WizardController.js'></script> | 129 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/WizardController.js'></script> |
133 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/Page.js'></script> | 130 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/Page.js'></script> |
134 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/PageHeader.js'></script> | 131 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/PageHeader.js'></script> |
135 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/PageFooter.js'></script> | 132 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/PageFooter.js'></script> |
136 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/LoginPage.js'></script> | 133 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/LoginPage.js'></script> |
137 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/LoginForm.js'></script> | 134 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/LoginForm.js'></script> |
138 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/LoginProgress.js'></script> | 135 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/LoginProgress.js'></script> |
139 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/AppPage.js'></script> | 136 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/AppPage.js'></script> |
140 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/UserInfoBox.js'></script> | 137 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/UserInfoBox.js'></script> |
141 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/TabSidePanel.js'></script> | 138 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/TabSidePanel.js'></script> |
142 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/GridComponent.js'></script> | 139 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/GridComponent.js'></script> |
143 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/ColumnManager.js'></script> | 140 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/ColumnManager.js'></script> |
144 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/TextColumnManager.js'></script> | 141 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/TextColumnManager.js'></script> |
145 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/FaviconColumnManager.js'></script> | 142 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/FaviconColumnManager.js'></script> |
146 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/ImageColumnManager.js'></script> | 143 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/ImageColumnManager.js'></script> |
147 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DateColumnManager.js'></script> | 144 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DateColumnManager.js'></script> |
148 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/LinkColumnManager.js'></script> | 145 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/LinkColumnManager.js'></script> |
149 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginColumnManager.js'></script> | 146 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginColumnManager.js'></script> |
150 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js'></script> | 147 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js'></script> |
151 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js'></script> | 148 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js'></script> |
152 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CreateNewCardSplashComponent.js'></script> | 149 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CreateNewCardSplashComponent.js'></script> |
153 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/AccountPanel.js'></script> | 150 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/AccountPanel.js'></script> |
154 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DataPanel.js'></script> | 151 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DataPanel.js'></script> |
155 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/ToolsPanel.js'></script> | 152 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/ToolsPanel.js'></script> |
156 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/RulerComponent.js'></script> | 153 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/RulerComponent.js'></script> |
157 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js'></script> | 154 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js'></script> |
158 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js'></script> | 155 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js'></script> |
159 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js'></script> | 156 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js'></script> |
160 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js'></script> | 157 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js'></script> |
161 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js'></script> | 158 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js'></script> |
162 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js'></script> | 159 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js'></script> |
163 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/BookmarkletComponent.js'></script> | 160 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/BookmarkletComponent.js'></script> |
164 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js'></script> | 161 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js'></script> |
165 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/NewUserCreationComponent.js'></script> | 162 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/NewUserCreationComponent.js'></script> |
166 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/PasswordTooltip.js'></script> | 163 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/PasswordTooltip.js'></script> |
167 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/MainController.js'></script> | 164 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/MainController.js'></script> |
168 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/LoginController.js'></script> | 165 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/LoginController.js'></script> |
169 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/AppController.js'></script> | 166 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/AppController.js'></script> |
170 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/FilterController.js'></script> | 167 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/FilterController.js'></script> |
171 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/GridController.js'></script> | 168 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/GridController.js'></script> |
172 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/CardsController.js'></script> | 169 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/CardsController.js'></script> |
173 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/DirectLoginsController.js'></script> | 170 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/DirectLoginsController.js'></script> |
174 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js'></script> | 171 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js'></script> |
175 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js'></script> | 172 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js'></script> |
176 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/NewUserWizardController.js'></script> | 173 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/NewUserWizardController.js'></script> |
177 | 174 | ||
178 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Marks/exclamationMark.js'></script> | 175 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Marks/exclamationMark.js'></script> |
179 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Marks/questionMark.js'></script> | 176 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Marks/questionMark.js'></script> |
180 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Marks/info.js'></script> | 177 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Marks/info.js'></script> |
181 | 178 | ||
182 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Features/store.js'></script> | 179 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Features/store.js'></script> |
183 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Features/protect.js'></script> | 180 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Features/protect.js'></script> |
184 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Features/directLogin.js'></script> | 181 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Features/directLogin.js'></script> |
185 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Features/share.js'></script> | 182 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Features/share.js'></script> |
186 | 183 | ||
187 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Star/normal.js'></script> | 184 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Star/normal.js'></script> |
188 | 185 | ||
189 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/CoverActions/look.js'></script> | 186 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/CoverActions/look.js'></script> |
190 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/CoverActions/download.js'></script> | 187 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/CoverActions/download.js'></script> |
191 | 188 | ||
192 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Tips/open.js'></script> | 189 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Tips/open.js'></script> |
193 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Tips/close.js'></script> | 190 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Tips/close.js'></script> |
194 | 191 | ||
195 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/RegisterButton/normal.js'></script> | 192 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/RegisterButton/normal.js'></script> |
196 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Logo/normal.js'></script> | 193 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Logo/normal.js'></script> |
197 | 194 | ||
198 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/GraphicFunctions.js'></script> | 195 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/GraphicFunctions.js'></script> |
199 | <!-- script type='text/javascript' src='../../../../js/main.js'></script --> | 196 | <script type='text/javascript' src='../../../../js/main.js'></script> |
200 | 197 | ||
201 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> | 198 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> |
202 | <script type='text/javascript' src='./User.data.js'></script> | 199 | <script type='text/javascript' src='./User.data.js'></script> |
203 | <script type='text/javascript' src='./main_test.js'></script> | ||
204 | |||
205 | 200 | ||
206 | </head> | 201 | </head> |
207 | <body> | 202 | <body> |
208 | <div id="mainDiv"> | 203 | <div id="mainDiv"> |
209 | <div id="loading"> | 204 | <div id="loading"> |
210 | <a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a> | 205 | <div> |
211 | <h5 class="clipperzPayoff">keep it to yourself!</h5> | 206 | <!-- a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a --> |
212 | <h2>loading ...</h2> | 207 | <h1>clipperz</h1> |
208 | <h3 class="clipperzPayoff">keep it to yourself!</h3> | ||
209 | <!-- h5>loading ...</h5 --> | ||
210 | </div> | ||
213 | </div> | 211 | </div> |
214 | 212 | ||
213 | @js_EMBEDDED@ | ||
215 | 214 | ||
216 | |||
217 | </div> | ||
218 | <div id="applicationVersionType" class="LIVE"></div> | ||
219 | |||
220 | <!-- --> | ||
221 | <div id="javaScriptAlert"> | ||
222 | <div class="mask"></div> | ||
223 | <div class="message"> | ||
224 | <div class="header"></div> | ||
225 | <div class="body"> | ||
226 | <div class="alertLogo"></div> | ||
227 | <div class="alert"> | ||
228 | <h1>Attention!</h1> | ||
229 | <p>If you can read this message, the chances are that your browser does not properly support JavaScript? or you have disabled this functionality yourself.</p> | ||
230 | <h3>Javascript is required to access Clipperz.</h3> | ||
231 | <h5>Please enable scripting or upgrade your browser.</h5> | ||
232 | </div> | ||
233 | </div> | ||
234 | <div class="footer"></div> | ||
235 | </div> | ||
236 | </div> | 215 | </div> |
237 | <!-- --> | 216 | <!-- div id="applicationVersionType" class="@application.version.type@"></div --> |
217 | |||
218 | <script> | ||
219 | //Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.JSON({'url':'@request.path@', 'shouldPayTolls':@should.pay.toll@}); | ||
220 | /*offline_data_placeholder*/ | ||
221 | |||
222 | MochiKit.DOM.addLoadEvent(function () { | ||
223 | Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); | ||
224 | |||
225 | var proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false}); | ||
226 | proxy.dataStore().setupWithEncryptedData(testData['testData']); | ||
227 | Clipperz.PM.Proxy.defaultProxy = proxy; | ||
228 | MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'doLogin', {username:'tt', passphrase:'tt'}); | ||
229 | }); | ||
230 | </script> | ||
238 | 231 | ||
239 | </body> | 232 | </body> |
240 | </html> | 233 | </html> |
diff --git a/frontend/gamma/tests/tests/Components/FullApp/main_test.js b/frontend/gamma/tests/tests/Components/FullApp/main_test.js deleted file mode 100644 index b13972a..0000000 --- a/frontend/gamma/tests/tests/Components/FullApp/main_test.js +++ b/dev/null | |||
@@ -1,111 +0,0 @@ | |||
1 | /* | ||
2 | |||
3 | Copyright 2008-2011 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz Community Edition. | ||
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | ||
8 | refer to http://www.clipperz.com. | ||
9 | |||
10 | * Clipperz Community Edition is free software: you can redistribute | ||
11 | it and/or modify it under the terms of the GNU Affero General Public | ||
12 | License as published by the Free Software Foundation, either version | ||
13 | 3 of the License, or (at your option) any later version. | ||
14 | |||
15 | * Clipperz Community Edition is distributed in the hope that it will | ||
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | ||
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
18 | See the GNU Affero General Public License for more details. | ||
19 | |||
20 | * You should have received a copy of the GNU Affero General Public | ||
21 | License along with Clipperz Community Edition. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | |||
24 | */ | ||
25 | |||
26 | function _pm_logEvent(anEvent) { | ||
27 | //console.log("####", anEvent); | ||
28 | |||
29 | anEvent.preventDefault(); | ||
30 | } | ||
31 | |||
32 | function handleGenericDeferredError(anError) { | ||
33 | var result; | ||
34 | |||
35 | if (anError instanceof MochiKit.Async.CancelledError) { | ||
36 | result = anError; | ||
37 | } else { | ||
38 | MochiKit.Logging.logError("## MainController - GENERIC ERROR" + "\n" + "==>> " + anError + " <<==\n" + anError.stack); | ||
39 | //console.log(anError); | ||
40 | result = new MochiKit.Async.CancelledError(anError); | ||
41 | } | ||
42 | |||
43 | return result; | ||
44 | } | ||
45 | |||
46 | |||
47 | Clipperz.PM.RunTime = {}; | ||
48 | |||
49 | |||
50 | function run() { | ||
51 | var shouldShowRegistrationForm; | ||
52 | var useCompactDesign; | ||
53 | var controllerParameters; | ||
54 | //var iPhoneDesign; | ||
55 | |||
56 | //MochiKit.Signal.connect(document.body, 'onkeydown', _pm_logEvent); | ||
57 | //MochiKit.Signal.connect(document.body, 'onkeypress', _pm_logEvent); | ||
58 | //MochiKit.Signal.connect(document.body, 'onclick', _pm_logEvent); | ||
59 | |||
60 | controllerParameters = {}; | ||
61 | |||
62 | MochiKit.DOM.removeElement('javaScriptAlert'); | ||
63 | Clipperz.PM.Strings.Languages.initSetup(); | ||
64 | |||
65 | if (window.location.search.indexOf('registration') != -1) { | ||
66 | shouldShowRegistrationForm = true; | ||
67 | } else { | ||
68 | shouldShowRegistrationForm = false; | ||
69 | } | ||
70 | |||
71 | if (window.location.search.indexOf('autocomplete') != -1) { | ||
72 | controllerParameters['autocomplete'] = 'on' | ||
73 | } | ||
74 | |||
75 | //if ((window.location.search.indexOf('iPhone') != -1) || (navigator.userAgent.match('iPhone'))) { | ||
76 | // iPhoneDesign = true; | ||
77 | //} else { | ||
78 | // iPhoneDesign = false; | ||
79 | //} | ||
80 | |||
81 | if (window.location.search.indexOf('compact') != -1) { | ||
82 | useCompactDesign = true; | ||
83 | } else { | ||
84 | useCompactDesign = false; | ||
85 | } | ||
86 | |||
87 | if (useCompactDesign == true) { | ||
88 | Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.Compact.Controllers.MainController(controllerParameters); | ||
89 | //} else if (iPhoneDesign == true) { | ||
90 | // Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.iPhone.Controllers.MainController(); | ||
91 | } else { | ||
92 | Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.Web.Controllers.MainController(controllerParameters); | ||
93 | } | ||
94 | |||
95 | Clipperz.PM.RunTime.mainController.run(shouldShowRegistrationForm); | ||
96 | |||
97 | //Clipperz.log("HASH: " + window.location.hash); | ||
98 | //if (window.location.hash != "") { | ||
99 | // window.location.hash = "" | ||
100 | //} | ||
101 | //Clipperz.log("HASH cleaned"); | ||
102 | //#credentials=base64encoded({username:'joe', passphrase:'clipperz'}) | ||
103 | //MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'doLogin', {username:'joe', passphrase:'clipperz'}); | ||
104 | } | ||
105 | |||
106 | Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); | ||
107 | |||
108 | var proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); | ||
109 | proxy.dataStore().setupWithEncryptedData(testData['testData']); | ||
110 | |||
111 | MochiKit.DOM.addLoadEvent(run); | ||
diff --git a/frontend/gamma/tests/tests/Components/FullApp/mobile.index.html b/frontend/gamma/tests/tests/Components/FullApp/mobile.index.html new file mode 100644 index 0000000..818e3d6 --- a/dev/null +++ b/frontend/gamma/tests/tests/Components/FullApp/mobile.index.html | |||
@@ -0,0 +1,204 @@ | |||
1 | <!-- | ||
2 | |||
3 | Copyright 2008-2011 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz Community Edition. | ||
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | ||
8 | refer to http://www.clipperz.com. | ||
9 | |||
10 | * Clipperz Community Edition is free software: you can redistribute | ||
11 | it and/or modify it under the terms of the GNU Affero General Public | ||
12 | License as published by the Free Software Foundation, either version | ||
13 | 3 of the License, or (at your option) any later version. | ||
14 | |||
15 | * Clipperz Community Edition is distributed in the hope that it will | ||
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | ||
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
18 | See the GNU Affero General Public License for more details. | ||
19 | |||
20 | * You should have received a copy of the GNU Affero General Public | ||
21 | License along with Clipperz Community Edition. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | |||
24 | --> | ||
25 | |||
26 | <!doctype html> | ||
27 | <!-- Conditional comment for mobile ie7 blogs.msdn.com/b/iemobile/ --> | ||
28 | <!--[if IEMobile 7 ]> <html class="no-js iem7" lang="en"> <![endif]--> | ||
29 | <!--[if (gt IEMobile 7)|!(IEMobile)]><!--> <html class="no-js" lang="en" manifest="mobile.appcache"> <!--<![endif]--> | ||
30 | <head> | ||
31 | <title>FullApp TEST - MOBILE</title> | ||
32 | <meta charset="utf-8"> | ||
33 | |||
34 | <meta name="HandheldFriendly" content="True"> | ||
35 | <meta name="MobileOptimized" content="320"> | ||
36 | <meta name="viewport" content="width=device-width"> | ||
37 | |||
38 | <!-- link rel="apple-touch-icon-precomposed" ... --> | ||
39 | <link rel="apple-touch-icon" sizes="114x114" href="data:image/png;charset=utf-8;base64,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"> | ||
40 | <link rel="apple-touch-icon" sizes="72x72" href="data:image/png;charset=utf-8;base64,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"> | ||
41 | <link rel="apple-touch-icon" href="data:image/png;charset=utf-8;base64,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"> | ||
42 | <link rel="shortcut icon" href="data:image/png;charset=utf-8;base64,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"> | ||
43 | |||
44 | <meta http-equiv="cleartype" content="on"> | ||
45 | <meta name="apple-mobile-web-app-capable" content="yes"> | ||
46 | |||
47 | <link rel="stylesheet" type="text/css" href="../../../../css/mobile.css" /> | ||
48 | <!-- link rel="stylesheet" type="text/css" href="../../../../css/jqtouch.css" / --> | ||
49 | <!-- link rel="apple-touch-startup-image" href="data:image/png;charset=utf-8;base64,iVBORw0K...ggo=" --> | ||
50 | |||
51 | <script> | ||
52 | Clipperz_IEisBroken = false; | ||
53 | Clipperz_normalizedNewLine = '\n'; | ||
54 | Clipperz_dumpUrl = "/dump/"; | ||
55 | 'use strict'; | ||
56 | |||
57 | if (typeof(MochiKit) == 'undefined') { | ||
58 | MochiKit = {}; | ||
59 | } | ||
60 | MochiKit['__export__'] = false; | ||
61 | </script> | ||
62 | <!-- Zepto.js modules: polyfill zepto event detect fx ajax form apple-touch-icon--> | ||
63 | <script type='text/javascript' src='../../../../js/Zepto/polyfill.js'></script> | ||
64 | <script type='text/javascript' src='../../../../js/Zepto/zepto.js'></script> | ||
65 | <script type='text/javascript' src='../../../../js/Zepto/event.js'></script> | ||
66 | <script type='text/javascript' src='../../../../js/Zepto/detect.js'></script> | ||
67 | <script type='text/javascript' src='../../../../js/Zepto/fx.js'></script> | ||
68 | <script type='text/javascript' src='../../../../js/Zepto/ajax.js'></script> | ||
69 | <script type='text/javascript' src='../../../../js/Zepto/form.js'></script> | ||
70 | <script type='text/javascript' src='../../../../js/Zepto/touch.js'></script> | ||
71 | <script type='text/javascript' src='../../../../js/Zepto/gesture.js'></script> | ||
72 | |||
73 | <script type='text/javascript' src='../../../../js/JQTouch/jqtouch.js'></script> | ||
74 | |||
75 | <script type='text/javascript' src='../../../../js/MochiKit/Base.js'></script> | ||
76 | <script type='text/javascript' src='../../../../js/MochiKit/Iter.js'></script> | ||
77 | <script type='text/javascript' src='../../../../js/MochiKit/Logging.js'></script> | ||
78 | <script type='text/javascript' src='../../../../js/MochiKit/Format.js'></script> | ||
79 | <script type='text/javascript' src='../../../../js/MochiKit/Async.js'></script> | ||
80 | <script type='text/javascript' src='../../../../js/MochiKit/DOM.js'></script> | ||
81 | <script type='text/javascript' src='../../../../js/MochiKit/Style.js'></script> | ||
82 | <script type='text/javascript' src='../../../../js/MochiKit/LoggingPane.js'></script> | ||
83 | <!-- script type='text/javascript' src='../../../../js/MochiKit/Color.js'></script --> | ||
84 | <script type='text/javascript' src='../../../../js/MochiKit/Signal.js'></script> | ||
85 | <!-- script type='text/javascript' src='../../../../js/MochiKit/Position.js'></script --> | ||
86 | <script type='text/javascript' src='../../../../js/MochiKit/Selector.js'></script> | ||
87 | <!-- script type='text/javascript' src='../../../../js/MochiKit/Visual.js'></script --> | ||
88 | |||
89 | <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> | ||
90 | |||
91 | <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> | ||
92 | <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> | ||
93 | |||
94 | <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> | ||
95 | <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> | ||
96 | <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> | ||
97 | <!-- script type='text/javascript' src='../../../../js/Clipperz/CSVProcessor.js'></script --> | ||
98 | <!-- script type='text/javascript' src='../../../../js/Clipperz/KeePassExportProcessor.js'></script --> | ||
99 | <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> | ||
100 | <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> | ||
101 | <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> | ||
102 | <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> | ||
103 | <!-- script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script --> | ||
104 | <!-- script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script --> | ||
105 | <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> | ||
106 | <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> | ||
107 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> | ||
108 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> | ||
109 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> | ||
110 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> | ||
111 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> | ||
112 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> | ||
113 | <script type='text/javascript' src='../../../../js/Clipperz/Crypto/RSA.js'></script> | ||
114 | |||
115 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_defaults.js'></script> | ||
116 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> | ||
117 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> | ||
118 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> | ||
119 | |||
120 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> | ||
121 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> | ||
122 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.JSON.js'></script> | ||
123 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> | ||
124 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> | ||
125 | |||
126 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> | ||
127 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> | ||
128 | <script type='text/javascript' src='../../../../js/Clipperz/PM/PIN.js'></script> | ||
129 | |||
130 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> | ||
131 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script> | ||
132 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script> | ||
133 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script> | ||
134 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script> | ||
135 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script> | ||
136 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> | ||
137 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> | ||
138 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> | ||
139 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> | ||
140 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script> | ||
141 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script> | ||
142 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginFormValue.js'></script> | ||
143 | <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/OneTimePassword.js'></script> | ||
144 | |||
145 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script> | ||
146 | <!-- | ||
147 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script> | ||
148 | <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script --> | ||
149 | |||
150 | <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/FaviconComponent.js'></script --> | ||
151 | <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script --> | ||
152 | <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js'></script --> | ||
153 | <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script --> | ||
154 | <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script --> | ||
155 | <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script --> | ||
156 | |||
157 | <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js'></script --> | ||
158 | <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js'></script --> | ||
159 | <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js'></script --> | ||
160 | <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/WizardController.js'></script --> | ||
161 | |||
162 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Mobile/Components/LoginForm.js'></script> | ||
163 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Mobile/Components/CardList.js'></script> | ||
164 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Mobile/Components/CardDetail.js'></script> | ||
165 | |||
166 | <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Mobile/Controllers/MainController.js'></script> | ||
167 | <script type='text/javascript' src='../../../../js/main.mobile.js'></script> | ||
168 | |||
169 | <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> | ||
170 | <script type='text/javascript' src='./User.data.js'></script> | ||
171 | </head> | ||
172 | <body> | ||
173 | <div id="mainDiv"> | ||
174 | <div id="loading"> | ||
175 | <div> | ||
176 | <!-- a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a --> | ||
177 | <h1>clipperz</h1> | ||
178 | <h3 class="clipperzPayoff">keep it to yourself!</h3> | ||
179 | <!-- h5>loading ...</h5 --> | ||
180 | </div> | ||
181 | </div> | ||
182 | |||
183 | </div> | ||
184 | <!-- div id="applicationVersionType" class="@application.version.type@"></div --> | ||
185 | |||
186 | <script> | ||
187 | //Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.JSON({'url':'@request.path@', 'shouldPayTolls':@should.pay.toll@}); | ||
188 | /*offline_data_placeholder*/ | ||
189 | |||
190 | var proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false}); | ||
191 | proxy.dataStore().setupWithEncryptedData(testData['testData']); | ||
192 | Clipperz.PM.Proxy.defaultProxy = proxy; | ||
193 | |||
194 | Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); | ||
195 | //Clipperz.PM.PIN.setCredentialsWithPIN("1234", {username:'joe', passphrase:'clipperz'}); | ||
196 | |||
197 | MochiKit.DOM.addLoadEvent(function () { | ||
198 | // MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'doLogin', { credentials: {username:'joe', passphrase:'clipperz'} }, function () { alert("Doh"); } ); | ||
199 | }); | ||
200 | |||
201 | </script> | ||
202 | |||
203 | </body> | ||
204 | </html> | ||