summaryrefslogtreecommitdiff
path: root/frontend
authorClipperz <info@clipperz.com>2013-01-08 15:21:04 (UTC)
committer Clipperz <info@clipperz.com>2013-01-08 15:21:04 (UTC)
commit816fc35420a434b1d54ae5833d617608f7456048 (patch) (unidiff)
tree95b8caf354083593d7775e4dda6f4c556b44a2d9 /frontend
parent267603e3aa3cf0029411e67ae14018b52344c296 (diff)
downloadclipperz-816fc35420a434b1d54ae5833d617608f7456048.zip
clipperz-816fc35420a434b1d54ae5833d617608f7456048.tar.gz
clipperz-816fc35420a434b1d54ae5833d617608f7456048.tar.bz2
Updated version of /gamma
Tons of changes, included a new draft of the mobile version (still VERY rough)
Diffstat (limited to 'frontend') (more/less context) (ignore whitespace changes)
-rw-r--r--frontend/gamma/css/mobile.css2571
-rw-r--r--frontend/gamma/css/static.css166
-rw-r--r--frontend/gamma/css/web.css4093
-rw-r--r--frontend/gamma/html/exit_template.html (renamed from frontend/gamma/html/exitPage_template.html)0
-rw-r--r--frontend/gamma/html/index_template.html10
-rw-r--r--frontend/gamma/html/mobile.appcache24
-rw-r--r--frontend/gamma/html/mobile_template.html86
-rw-r--r--frontend/gamma/images/old/alert/alert.pngbin0 -> 3927 bytes
-rw-r--r--frontend/gamma/images/old/alert/body.pngbin0 -> 309 bytes
-rw-r--r--frontend/gamma/images/old/alert/footer.pngbin0 -> 1685 bytes
-rw-r--r--frontend/gamma/images/old/alert/header.pngbin0 -> 1336 bytes
-rw-r--r--frontend/gamma/images/old/bookmarklet/placeholder.pngbin0 -> 4280 bytes
-rw-r--r--frontend/gamma/images/old/bookmarklet/placeholder_icon.pngbin0 -> 4681 bytes
-rw-r--r--frontend/gamma/images/old/bookmarklet/placeholder_selected.pngbin0 -> 4287 bytes
-rw-r--r--frontend/gamma/images/old/bookmarklet/placeholder_selected_icon.pngbin0 -> 4651 bytes
-rw-r--r--frontend/gamma/images/old/button/clicked_left.pngbin0 -> 3670 bytes
-rw-r--r--frontend/gamma/images/old/button/clicked_main.pngbin0 -> 4626 bytes
-rw-r--r--frontend/gamma/images/old/button/default_left.pngbin0 -> 3648 bytes
-rw-r--r--frontend/gamma/images/old/button/default_main.pngbin0 -> 5370 bytes
-rw-r--r--frontend/gamma/images/old/button/hover_left.pngbin0 -> 3666 bytes
-rw-r--r--frontend/gamma/images/old/button/hover_main.pngbin0 -> 5541 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/addDirectLogin_background.pngbin0 -> 7658 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/addDirectLogin_disabled_background.pngbin0 -> 7673 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/back.pngbin0 -> 15875 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/back_selected.pngbin0 -> 10368 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/background_body.pngbin0 -> 3730 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/background_footer.pngbin0 -> 6155 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/background_header.pngbin0 -> 5289 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/dottedLine_background.pngbin0 -> 938 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/fieldTypes/email.pngbin0 -> 7819 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/fieldTypes/email_selected.pngbin0 -> 7694 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/fieldTypes/password.pngbin0 -> 7636 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/fieldTypes/passwordTooltip.pngbin0 -> 13016 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/fieldTypes/password_selected.pngbin0 -> 7599 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/fieldTypes/url.pngbin0 -> 7708 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/fieldTypes/url_selected.pngbin0 -> 7710 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/loading.gifbin0 -> 10819 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/lock_closed.pngbin0 -> 3707 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/lock_open.pngbin0 -> 3703 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/openDirectLogin.pngbin0 -> 7751 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/openDirectLogin_selected.pngbin0 -> 7775 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/password_background.pngbin0 -> 6114 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/tabs_background.pngbin0 -> 994 bytes
-rw-r--r--frontend/gamma/images/old/cardDialog/tabs_shadow.pngbin0 -> 982 bytes
-rw-r--r--frontend/gamma/images/old/creatingUser.gifbin0 -> 3208 bytes
-rw-r--r--frontend/gamma/images/old/delete_background.pngbin0 -> 3635 bytes
-rw-r--r--frontend/gamma/images/old/delete_background_left.pngbin0 -> 3494 bytes
-rw-r--r--frontend/gamma/images/old/directLink_background.pngbin0 -> 3736 bytes
-rw-r--r--frontend/gamma/images/old/directLink_background_left.pngbin0 -> 3459 bytes
-rw-r--r--frontend/gamma/images/old/directLink_no_background.pngbin0 -> 3585 bytes
-rw-r--r--frontend/gamma/images/old/directLogins_background.pngbin0 -> 6748 bytes
-rw-r--r--frontend/gamma/images/old/directLogins_background_bottom.pngbin0 -> 3570 bytes
-rw-r--r--frontend/gamma/images/old/filter/clearFilter_notSelected.pngbin0 -> 3784 bytes
-rw-r--r--frontend/gamma/images/old/filter/clearFilter_selected.pngbin0 -> 3984 bytes
-rw-r--r--frontend/gamma/images/old/flags/br.pngbin0 -> 7654 bytes
-rw-r--r--frontend/gamma/images/old/flags/cn.pngbin0 -> 6412 bytes
-rw-r--r--frontend/gamma/images/old/flags/de.pngbin0 -> 6029 bytes
-rw-r--r--frontend/gamma/images/old/flags/en.pngbin0 -> 8563 bytes
-rw-r--r--frontend/gamma/images/old/flags/es.pngbin0 -> 6909 bytes
-rw-r--r--frontend/gamma/images/old/flags/it.pngbin0 -> 5794 bytes
-rw-r--r--frontend/gamma/images/old/flags/jp.pngbin0 -> 5557 bytes
-rw-r--r--frontend/gamma/images/old/flags/ru.pngbin0 -> 5808 bytes
-rw-r--r--frontend/gamma/images/old/footer/star.pngbin0 -> 2542 bytes
-rw-r--r--frontend/gamma/images/old/home/box/box_body.pngbin0 -> 868 bytes
-rw-r--r--frontend/gamma/images/old/home/box/box_bottom.pngbin0 -> 811 bytes
-rw-r--r--frontend/gamma/images/old/home/box/box_top.pngbin0 -> 796 bytes
-rw-r--r--frontend/gamma/images/old/home/download.pngbin0 -> 1990 bytes
-rw-r--r--frontend/gamma/images/old/home/features/bullet.pngbin0 -> 866 bytes
-rw-r--r--frontend/gamma/images/old/home/look.pngbin0 -> 2736 bytes
-rw-r--r--frontend/gamma/images/old/home/register.pngbin0 -> 14113 bytes
-rw-r--r--frontend/gamma/images/old/home/register_selected.pngbin0 -> 14205 bytes
-rw-r--r--frontend/gamma/images/old/iPhone/backButton.pngbin0 -> 816 bytes
-rw-r--r--frontend/gamma/images/old/iPhone/icon.pngbin0 -> 4186 bytes
-rw-r--r--frontend/gamma/images/old/iPhone/listArrow.pngbin0 -> 259 bytes
-rw-r--r--frontend/gamma/images/old/iPhone/locked.pngbin0 -> 407 bytes
-rw-r--r--frontend/gamma/images/old/iPhone/logo_and_header.pngbin0 -> 11666 bytes
-rw-r--r--frontend/gamma/images/old/iPhone/password_background.pngbin0 -> 6114 bytes
-rw-r--r--frontend/gamma/images/old/iPhone/pinstripes.pngbin0 -> 117 bytes
-rw-r--r--frontend/gamma/images/old/iPhone/thumb.pngbin0 -> 2835 bytes
-rw-r--r--frontend/gamma/images/old/iPhone/toggle.pngbin0 -> 2815 bytes
-rw-r--r--frontend/gamma/images/old/iPhone/toggleOn.pngbin0 -> 163 bytes
-rw-r--r--frontend/gamma/images/old/iPhone/toolbar.pngbin0 -> 171 bytes
-rw-r--r--frontend/gamma/images/old/iPhone/whiteButton.pngbin0 -> 978 bytes
-rw-r--r--frontend/gamma/images/old/loading/loadingBar.gifbin0 -> 2721 bytes
-rw-r--r--frontend/gamma/images/old/loading/loadingBarProgress.pngbin0 -> 624 bytes
-rw-r--r--frontend/gamma/images/old/loading/news.gifbin0 -> 673 bytes
-rw-r--r--frontend/gamma/images/old/lock/background_star.pngbin0 -> 19897 bytes
-rw-r--r--frontend/gamma/images/old/lock/locked.pngbin0 -> 407 bytes
-rw-r--r--frontend/gamma/images/old/lock/locked_hover.pngbin0 -> 447 bytes
-rw-r--r--frontend/gamma/images/old/lock/unlocked.pngbin0 -> 431 bytes
-rw-r--r--frontend/gamma/images/old/lock/unlocked_hover.pngbin0 -> 452 bytes
-rw-r--r--frontend/gamma/images/old/logo.pngbin0 -> 8635 bytes
-rw-r--r--frontend/gamma/images/old/logo_blue.pngbin0 -> 6812 bytes
-rw-r--r--frontend/gamma/images/old/main/blocks/cardGridBackground.pngbin0 -> 7872 bytes
-rw-r--r--frontend/gamma/images/old/main/blocks/cardGridStripes.pngbin0 -> 122 bytes
-rw-r--r--frontend/gamma/images/old/main/blocks/directLoginGridBackground.pngbin0 -> 7923 bytes
-rw-r--r--frontend/gamma/images/old/main/blocks/directLoginGridStripes.pngbin0 -> 122 bytes
-rw-r--r--frontend/gamma/images/old/main/blocks/otherPanelBackground.pngbin0 -> 10595 bytes
-rw-r--r--frontend/gamma/images/old/main/blocks/otherPanelBackground_selected.pngbin0 -> 5285 bytes
-rw-r--r--frontend/gamma/images/old/main/grid/ascending.pngbin0 -> 3647 bytes
-rw-r--r--frontend/gamma/images/old/main/grid/createNewCardSplash.pngbin0 -> 11694 bytes
-rw-r--r--frontend/gamma/images/old/main/grid/createNewCardSplash_selected.pngbin0 -> 11942 bytes
-rw-r--r--frontend/gamma/images/old/main/grid/descending.pngbin0 -> 3637 bytes
-rw-r--r--frontend/gamma/images/old/main/grid/directLogins/ascending.pngbin0 -> 3623 bytes
-rw-r--r--frontend/gamma/images/old/main/grid/directLogins/descending.pngbin0 -> 3632 bytes
-rw-r--r--frontend/gamma/images/old/main/grid/directLogins/unsorted.pngbin0 -> 3632 bytes
-rw-r--r--frontend/gamma/images/old/main/grid/favicon.pngbin0 -> 411 bytes
-rw-r--r--frontend/gamma/images/old/main/grid/running_search.gifbin0 -> 1737 bytes
-rw-r--r--frontend/gamma/images/old/main/grid/search.pngbin0 -> 4275 bytes
-rw-r--r--frontend/gamma/images/old/main/grid/unsorted.pngbin0 -> 3660 bytes
-rw-r--r--frontend/gamma/images/old/main/messageBoxBackground.pngbin0 -> 4128 bytes
-rw-r--r--frontend/gamma/images/old/main/messageBoxCloseButton.pngbin0 -> 4101 bytes
-rw-r--r--frontend/gamma/images/old/main/messageBoxCloseButtonActive.pngbin0 -> 4188 bytes
-rw-r--r--frontend/gamma/images/old/main/tabs/cardsBackground.pngbin0 -> 9048 bytes
-rw-r--r--frontend/gamma/images/old/main/tabs/directLoginBackground.pngbin0 -> 8538 bytes
-rw-r--r--frontend/gamma/images/old/main/tabs/groupsBackground.pngbin0 -> 5061 bytes
-rw-r--r--frontend/gamma/images/old/main/tabs/itemsBackground.pngbin0 -> 7184 bytes
-rw-r--r--frontend/gamma/images/old/main/tabs/selectionHighligher.pngbin0 -> 3877 bytes
-rw-r--r--frontend/gamma/images/old/main/tabs/selectionHighligherGray copy.pngbin0 -> 3858 bytes
-rw-r--r--frontend/gamma/images/old/main/tabs/selectionHighligherGray.pngbin0 -> 3853 bytes
-rw-r--r--frontend/gamma/images/old/main/tabs/tagsBackground.pngbin0 -> 5385 bytes
-rw-r--r--frontend/gamma/images/old/main/userInfoBackground.pngbin0 -> 17374 bytes
-rw-r--r--frontend/gamma/images/old/main/userInfoBullet.pngbin0 -> 3609 bytes
-rw-r--r--frontend/gamma/images/old/new_background.pngbin0 -> 3611 bytes
-rw-r--r--frontend/gamma/images/old/new_background_left.pngbin0 -> 3482 bytes
-rw-r--r--frontend/gamma/images/old/note.pngbin0 -> 4323 bytes
-rw-r--r--frontend/gamma/images/old/passwordField/background copy.pngbin0 -> 232793 bytes
-rw-r--r--frontend/gamma/images/old/passwordField/background.pngbin0 -> 145979 bytes
-rw-r--r--frontend/gamma/images/old/ruler/exit.pngbin0 -> 7291 bytes
-rw-r--r--frontend/gamma/images/old/ruler/exit_selected.pngbin0 -> 7521 bytes
-rw-r--r--frontend/gamma/images/old/ruler/marker.pngbin0 -> 7599 bytes
-rw-r--r--frontend/gamma/images/old/ruler/next.pngbin0 -> 8074 bytes
-rw-r--r--frontend/gamma/images/old/ruler/previous.pngbin0 -> 8212 bytes
-rw-r--r--frontend/gamma/images/old/ruler/ruler.pngbin0 -> 43016 bytes
-rw-r--r--frontend/gamma/images/old/ruler/small_next.pngbin0 -> 7229 bytes
-rw-r--r--frontend/gamma/images/old/ruler/small_next_disabled.pngbin0 -> 7281 bytes
-rw-r--r--frontend/gamma/images/old/ruler/small_next_selected.pngbin0 -> 7441 bytes
-rw-r--r--frontend/gamma/images/old/ruler/small_previous.pngbin0 -> 7266 bytes
-rw-r--r--frontend/gamma/images/old/ruler/small_previous_disabled.pngbin0 -> 7278 bytes
-rw-r--r--frontend/gamma/images/old/ruler/small_previous_selected.pngbin0 -> 7449 bytes
-rw-r--r--frontend/gamma/images/old/tabPanels/background.pngbin0 -> 1118 bytes
-rw-r--r--frontend/gamma/images/old/tips/Tips_background.pngbin0 -> 5912 bytes
-rw-r--r--frontend/gamma/images/old/tips/close.pngbin0 -> 3448 bytes
-rw-r--r--frontend/gamma/images/old/tips/open.pngbin0 -> 3441 bytes
-rw-r--r--frontend/gamma/images/old/tooltips/body.pngbin0 -> 5461 bytes
-rw-r--r--frontend/gamma/images/old/tooltips/body_bottom.pngbin0 -> 3546 bytes
-rw-r--r--frontend/gamma/images/old/tooltips/bottom_arrow.pngbin0 -> 3660 bytes
-rw-r--r--frontend/gamma/images/old/tooltips/left_arrow.pngbin0 -> 3725 bytes
-rw-r--r--frontend/gamma/images/old/tooltips/right_arrow.pngbin0 -> 3703 bytes
-rw-r--r--frontend/gamma/images/old/tooltips/top_arrow.pngbin0 -> 3647 bytes
-rw-r--r--frontend/gamma/js/Clipperz/Async.js4
-rw-r--r--frontend/gamma/js/Clipperz/Base.js5
-rw-r--r--frontend/gamma/js/Clipperz/PM/Connection.js34
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/User.js20
-rw-r--r--frontend/gamma/js/Clipperz/PM/PIN.js134
-rw-r--r--frontend/gamma/js/Clipperz/PM/Proxy/Proxy.OfflineCache.js65
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/BaseComponent.js4
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/Button.js34
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js34
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Mobile/Components/CardDetail.js299
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Mobile/Components/CardList.js (renamed from frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardList.js)111
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Mobile/Components/LoginForm.js356
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Mobile/Controllers/MainController.js393
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/AccountPanel.js17
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DataPanel.js18
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginProgress.js14
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/ToolsPanel.js8
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/AppController.js31
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardDetail.js163
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/LoginForm.js178
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/iPhone/Controllers/MainController.js369
-rw-r--r--frontend/gamma/js/main.mobile.js (renamed from frontend/gamma/js/main_iPhone.js)13
-rw-r--r--frontend/gamma/properties/creditsAndCopyrights.txt346
-rw-r--r--frontend/gamma/properties/gamma.properties.json4
-rw-r--r--frontend/gamma/properties/mobile.properties.json53
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/PIN.html66
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/PIN.test.js97
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/index.html1
-rw-r--r--frontend/gamma/tests/tests/Components/FullApp/User.data.js4
-rw-r--r--frontend/gamma/tests/tests/Components/FullApp/index.html61
-rw-r--r--frontend/gamma/tests/tests/Components/FullApp/main_test.js111
-rw-r--r--frontend/gamma/tests/tests/Components/FullApp/mobile.index.html204
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
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz Community Edition.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please
8refer 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
28Color 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*/
42html {
43 height: 100%;
44 -webkit-text-size-adjust: none;
45 -ms-text-size-adjust: none;
46}
47body {
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 */
661body {
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 */
1226body {
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}
2002div.spinner {
2003 position: relative;
2004 width: 100px;
2005 height: 100px;
2006 display: inline-block;
2007}
2008div.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}
2020div.spinner div.bar01 {
2021 -webkit-transform: rotate(0deg) translate(0, -142%);
2022 -webkit-animation-delay: 0s;
2023}
2024div.spinner div.bar02 {
2025 -webkit-transform: rotate(30deg) translate(0, -142%);
2026 -webkit-animation-delay: -0.9167s;
2027}
2028div.spinner div.bar03 {
2029 -webkit-transform: rotate(60deg) translate(0, -142%);
2030 -webkit-animation-delay: -0.833s;
2031}
2032div.spinner div.bar04 {
2033 -webkit-transform: rotate(90deg) translate(0, -142%);
2034 -webkit-animation-delay: -0.75s;
2035}
2036div.spinner div.bar05 {
2037 -webkit-transform: rotate(120deg) translate(0, -142%);
2038 -webkit-animation-delay: -0.667s;
2039}
2040div.spinner div.bar06 {
2041 -webkit-transform: rotate(150deg) translate(0, -142%);
2042 -webkit-animation-delay: -0.5833s;
2043}
2044div.spinner div.bar07 {
2045 -webkit-transform: rotate(180deg) translate(0, -142%);
2046 -webkit-animation-delay: -0.5s;
2047}
2048div.spinner div.bar08 {
2049 -webkit-transform: rotate(210deg) translate(0, -142%);
2050 -webkit-animation-delay: -0.41667s;
2051}
2052div.spinner div.bar09 {
2053 -webkit-transform: rotate(240deg) translate(0, -142%);
2054 -webkit-animation-delay: -0.333s;
2055}
2056div.spinner div.bar10 {
2057 -webkit-transform: rotate(270deg) translate(0, -142%);
2058 -webkit-animation-delay: -0.25s;
2059}
2060div.spinner div.bar11 {
2061 -webkit-transform: rotate(300deg) translate(0, -142%);
2062 -webkit-animation-delay: -0.1667s;
2063}
2064div.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
2078Color 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*/
2092html {
2093 height: 100%;
2094 -webkit-text-size-adjust: none;
2095 -ms-text-size-adjust: none;
2096}
2097body {
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}
2106div#loginForm div.credentialsMessage.error h1 {
2107 color: red;
2108}
2109div#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
2118Color 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*/
2132html {
2133 height: 100%;
2134 -webkit-text-size-adjust: none;
2135 -ms-text-size-adjust: none;
2136}
2137body {
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/*
2166body {
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
2177div.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
2189div.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
2207div.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
2230div.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
2242body.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
2253fieldset {
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
2273fieldset > .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
2304body[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
2338body[orientation="landscape"] .row > label {
2339 max-width: 150px;
2340}
2341
2342body[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
2388body.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
2399body.iPhone .loadingBar {
2400 margin-left: auto;
2401 margin-right: auto;
2402 margin-top: 60px;
2403}
2404
2405div.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
2412div.loadingBar div.loadingBarProgress {
2413 height: 100%;
2414 width: 0%;
2415}
2416
2417div.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
2424div.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
2435body.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
2446body.iPhone .loginErrorPanel h2 {
2447 text-align: center;
2448 color: red;
2449 margin-top: 40px;
2450}
2451
2452// -------------------------------------------
2453
2454form.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
2467form.cardListSearchForm input {
2468 margin: 7px;
2469 -webkit-appearance: searchfield;
2470 width: 200px;
2471}
2472
2473ul.cardListPanel {
2474 margin: 0px;
2475 padding: 0px;
2476 list-style-type: none;
2477 min-height: 372px;
2478}
2479
2480li.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
2488li.cardListItem a {
2489 position: relative;
2490 top: -22px;
2491 left: 40px;
2492 display: block;
2493 white-space: nowrap;
2494 overflow: hidden;
2495}
2496
2497body[orientation="portrait"] li.cardListItem a {
2498 max-width: 250px;
2499}
2500
2501body[orientation="landscape"] li.cardListItem a {
2502 max-width: 400px;
2503}
2504
2505li.cardListItem img {
2506 height: 20px;
2507 width: 20px;
2508 padding: 12px 10px 0px 10px;
2509}
2510
2511li.cardListItem a {
2512 text-decoration: none;
2513 color: black;
2514 font-weight: bold;
2515 font-size: 14pt;
2516 vertical-align: 3px;
2517}
2518
2519
2520div.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
2533div.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
2552body[orientation="landscape"] div.cardDetailPanel > fieldset > div.row > span.directLogin {
2553 padding-left: 50px;
2554}
2555
2556div.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
2564body[orientation="portrait"] > * {
2565 width: 320px;
2566}
2567
2568body[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
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz Community Edition.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please
8refer 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
26body {
27 padding: 0px;
28 margin: 0px;
29 font-family: Helvetica, Arial, Geneva, sans-serif;
30 color: #666666;
31}
32div.header {
33 padding: 20px 25px;
34 background-color: #1f2148;
35}
36div#logo {
37 background: url(./images/old/logo.png);
38 width: 150px;
39 height: 39px;
40 display: block;
41}
42h5.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/*
52h1 {
53 font-size: 40pt;
54 color: #333366;
55}
56
57h1 span.logo_z {
58 color: #ff9400;
59}
60*/
61div.contentWrapper {
62 padding: 20px;
63}
64div.block1 {
65 float: left;
66 margin-right: 40px;
67}
68div.block2 {
69 float: left;
70}
71div.languageBlock {
72 clear: both;
73 padding-top: 20px;
74}
75div.flags {
76 float: left;
77}
78div.content {
79 float: left;
80 margin-left: 20px;
81 width: 300px;
82}
83h3 {
84 margin: 0px;
85 padding-top: 10px;
86}
87p {
88 font-size: 10pt;
89 line-height: 20px;
90}
91/* @group RSS feed */
92body.iFrame {
93 margin: 0px;
94 padding: 0px;
95 border: 0px;
96 font-family: Helvetica, Arial, Geneva, sans-serif;
97}
98div#feedContent ul {
99 list-style-type: none;
100 padding: 0px;
101 margin: 0px;
102}
103div#feedContent ul li {
104 display: none;
105}
106div#feedContent ul li.selected {
107 display: block;
108 padding-top: 6px;
109}
110div#feedContent ul li.selected em.date {
111 display: none;
112}
113div#feedContent ul li.selected a {
114 display: none;
115}
116div#feedContent ul li.selected h2 {
117 font-size: 8pt;
118 color: #c3c4cf;
119 margin: 0px;
120 border: 0px;
121 padding: 0px;
122}
123div#feedContent ul li.selected p {
124 font-size: 8pt;
125 color: #c3c4cf;
126 margin: 0px;
127 display: inline;
128 line-height: 15px;
129}
130div#feedContent ul li.selected p a {
131 font-size: 8pt;
132 color: #c3c4cf;
133 display: inline;
134}
135div.languageBlock div.flags {
136 height: 64px;
137 width: 64px;
138}
139div.languageBlock.en-us div.flags {
140 background: url(./images/old/flags/en.png);
141}
142div.languageBlock.zh-cn div.flags {
143 background: url(./images/old/flags/cn.png);
144}
145div.languageBlock.fr-fr div.flags {
146 background: url(./images/old/flags/fr.png);
147}
148div.languageBlock.it-it div.flags {
149 background: url(./images/old/flags/it.png);
150}
151div.languageBlock.ja-jp div.flags {
152 background: url(./images/old/flags/jp.png);
153}
154div.languageBlock.pt-br div.flags {
155 background: url(./images/old/flags/br.png);
156}
157div.languageBlock.es-es div.flags {
158 background: url(./images/old/flags/es.png);
159}
160div.languageBlock.ru-ru div.flags {
161 background: url(./images/old/flags/ru.png);
162}
163div.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
@@ -212,308 +212,8 @@ 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;
@@ -563,6 +263,53 @@ div.tooltip.RIGHT div.tooltip_arrow {
563div.tooltip.RIGHT div.tooltip_body div.tooltip_text { 263div.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
568Color list: 315Color list:
@@ -614,47 +361,32 @@ div.modalDialogMask.userInfoBoxMask {
614div.pageHeaderAndBody { 361div.pageHeaderAndBody {
615 height: 100%; 362 height: 100%;
616} 363}
617body > div.pageHeaderAndBody { 364div.pageHeaderAndBody div#pageBody {
618 height: auto; 365 min-width: 1013px;
619 min-height: 100%; 366 padding-bottom: 90px;
620} 367}
621div.pageHeader { 368div.pageHeaderAndBody div.pageHeader {
622 background-color: #1f2148; 369 background-color: #1f2148;
623 min-width: 1013px; 370 min-width: 1013px;
624} 371}
625div.pageHeader div#miscLinks { 372div.pageHeaderAndBody div.pageHeader div#miscLinks {
626 float: right; 373 float: right;
627} 374}
628div.pageHeader div#miscLinks ul { 375div.pageHeaderAndBody div.pageHeader div#miscLinks ul {
629 margin: 12px 0px 0px; 376 margin: 12px 0px 0px;
630 padding: 15px; 377 padding: 15px;
631} 378}
632div.pageHeader div#miscLinks ul li { 379div.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}
638div.pageHeader div#miscLinks ul li a { 385div.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;
@@ -662,106 +394,66 @@ div.pageHeader div#miscLinks ul li a {
662 font-size: 12pt; 394 font-size: 12pt;
663 min-width: 70px; 395 min-width: 70px;
664} 396}
665div.pageHeader div#miscLinks ul li a:hover { 397div.pageHeaderAndBody div.pageHeader div#miscLinks ul li a:hover {
666 color: #b8bae1; 398 color: #b8bae1;
667} 399}
668div.pageHeader div#miscLinks ul li a#donateHeaderLink { 400div.pageHeaderAndBody div.pageHeader div#miscLinks ul li a#donateHeaderLink {
669 border-left: 0px; 401 border-left: 0px;
670} 402}
671div.pageHeader div#logoFrame { 403div.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}
675div.pageHeader div#logoFrame a { 407div.pageHeaderAndBody div.pageHeader div#logoFrame a {
676 color: white; 408 color: white;
677 text-decoration: none; 409 text-decoration: none;
678} 410}
679div.pageHeader div#logoFrame a canvas { 411div.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}
701div.pageHeader div#logoFrame a h5.clipperzPayoff { 418div.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}
708div.pageHeader div#featureTabs table { 425div.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}
715div.pageHeader div#featureTabs table tr td { 432div.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}
721div.pageHeader div#featureTabs table tr td img { 438div.pageHeaderAndBody div.pageHeader div#featureTabs table tr td img {
722 float: left; 439 float: left;
723} 440}
724div.pageHeader div#featureTabs table tr td span { 441div.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}
728div.pageHeader div#featureTabs canvas.featureIcon { 445div.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}
764div.pageHeader div#news { 456div.pageHeaderAndBody div.pageHeader div#news {
765 top: -82px; 457 top: -82px;
766 left: 240px; 458 left: 240px;
767 width: 310px; 459 width: 310px;
@@ -771,257 +463,32 @@ div.pageHeader div#news {
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}
1006div.pageHeader div#news div#newsframe { 473div.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}
1012div.pageHeader div#news div#newsframe iframe { 479div.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}
1018div.pageHeader div#news div.grip { 485div.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}
1024div.pageHeader div#news div.grip div.gripHandler { 491div.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;
@@ -1030,10 +497,10 @@ div.pageHeader div#news div.grip div.gripHandler {
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}
1033div.pageHeader div#news.open div.grip div.gripHandler { 500div.pageHeaderAndBody div.pageHeader div#news.open div.grip div.gripHandler {
1034 border-bottom: 5px solid #e9e9ec; 501 border-bottom: 5px solid #e9e9ec;
1035} 502}
1036div.pageHeader div#news.hidden div.grip div.gripHandler { 503div.pageHeaderAndBody div.pageHeader div#news.hidden div.grip div.gripHandler {
1037 border-top: 5px solid #e9e9ec; 504 border-top: 5px solid #e9e9ec;
1038} 505}
1039div.pageFooter { 506div.pageFooter {
@@ -1137,216 +604,6 @@ div#loginBox div.header {
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;
@@ -1354,16 +611,6 @@ div#loginBox div.header {
1354div#loginBox div.body { 611div#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}
1368div#loginBox div.body h4 { 615div#loginBox div.body h4 {
1369 color: #ffffff; 616 color: #ffffff;
@@ -1473,216 +720,6 @@ div#loginBox div.footer {
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;
@@ -1760,6 +797,7 @@ 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}
1765div.activeFeatures div.createAccountLink a.createAccountLink { 803div.activeFeatures div.createAccountLink a.createAccountLink {
@@ -1779,6 +817,9 @@ div.activeFeatures div.createAccountLink a.createAccountLink span.link {
1779 padding-bottom: 10px; 817 padding-bottom: 10px;
1780 font-size: 12pt; 818 font-size: 12pt;
1781} 819}
820div.activeFeatures div.createAccountLink:hover {
821 background-image: url(./images/old/home/register_selected.png);
822}
1782div.activeFeatures div.createAccountLink:hover a.createAccountLink span.payoff { 823div.activeFeatures div.createAccountLink:hover a.createAccountLink span.payoff {
1783 color: #54535a; 824 color: #54535a;
1784} 825}
@@ -1847,49 +888,9 @@ div.userInfoBox {
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;
@@ -1898,10 +899,10 @@ div.userInfoBox.locked {
1898 z-index: 19001; 899 z-index: 19001;
1899} 900}
1900div.userInfoBox.locked div.header a.lockButton { 901div.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}
1903div.userInfoBox.locked div.header a.lockButton:hover { 904div.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}
1906div.userInfoBox.locked div.body a { 907div.userInfoBox.locked div.body a {
1907 display: none; 908 display: none;
@@ -1924,10 +925,10 @@ div.userInfoBox div.header a.lockButton {
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}
1929div.userInfoBox div.header a.lockButton:hover { 930div.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}
1932div.userInfoBox div.body { 933div.userInfoBox div.body {
1933 padding: 0px 12px; 934 padding: 0px 12px;
@@ -1942,7 +943,6 @@ div.userInfoBox div.body ul {
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}
1947div.userInfoBox div.body ul li span.number { 947div.userInfoBox div.body ul li span.number {
1948 font-weight: bold; 948 font-weight: bold;
@@ -2022,35 +1022,24 @@ div.sidePanels div.tabSidePanel ul.mainTabs li.selected div.selectionHighlighter
2022 margin-top: -43px; 1022 margin-top: -43px;
2023} 1023}
2024div.sidePanels div.tabSidePanel ul.mainTabs li.cards a { 1024div.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}
2027div.sidePanels div.tabSidePanel ul.mainTabs li.cards a:hover { 1027div.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}
2030div.sidePanels div.tabSidePanel ul.mainTabs li.cards.selected a { 1030div.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}
2036div.sidePanels div.tabSidePanel ul.mainTabs li.cards.selected a:hover {
2037 background: url(../images/old/main/tabs/cardsBackground.png) -9px -14px;
2038}
2039div.sidePanels div.tabSidePanel ul.mainTabs li.directLogins a {
2040 background: url(../images/old/main/tabs/directLoginBackground.png) -19px -63px;
2041}
2042div.sidePanels div.tabSidePanel ul.mainTabs li.directLogins a:hover {
2043 background: url(../images/old/main/tabs/directLoginBackground.png) -19px -110px;
2044} 1035}
2045div.sidePanels div.tabSidePanel ul.mainTabs li.directLogins.selected a { 1036div.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}
2051div.sidePanels div.tabSidePanel ul.mainTabs li.directLogins.selected a:hover { 1041div.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}
2055div.sidePanels div.tabSidePanel ul.otherTabs { 1044div.sidePanels div.tabSidePanel ul.otherTabs {
2056 margin: 10px 0px; 1045 margin: 10px 0px;
@@ -2070,12 +1059,12 @@ div.sidePanels div.tabSidePanel ul.otherTabs li a {
2070 text-decoration: none; 1059 text-decoration: none;
2071} 1060}
2072div.sidePanels div.tabSidePanel ul.otherTabs li a:hover { 1061div.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}
2075div.sidePanels div.tabSidePanel ul.otherTabs li.selected a { 1064div.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}
2081div.sidePanels div.tabSidePanel ul.otherTabs li.selected div.selectionHighlighter { 1070div.sidePanels div.tabSidePanel ul.otherTabs li.selected div.selectionHighlighter {
@@ -2090,7 +1079,7 @@ div.tagSidePanel {
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;
@@ -2100,11 +1089,11 @@ div.tagSidePanel {
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;
@@ -2146,7 +1135,7 @@ div.groupSidePanel {
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;
@@ -2168,11 +1157,11 @@ div.groupSidePanel {
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;
@@ -2208,3 +1197,2899 @@ div.groupSidePanel {
2208 } 1197 }
2209*/ 1198*/
2210} 1199}
1200div.subPanelTabs ul {
1201 margin: 0px;
1202 margin-right: 7px;
1203 padding: 0px;
1204}
1205div.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}
1212div.subPanelTabs ul li.first {
1213 -webkit-border-top-left-radius: 20px;
1214 -moz-border-radius-topleft: 20px;
1215 border-top-left-radius: 20px;
1216}
1217div.subPanelTabs ul li.selected {
1218 background-color: #eef0e3;
1219 border-bottom: 1px solid #eef0e3;
1220 border-right: 1px solid #d5d5bc;
1221}
1222div.subPanelTabs ul li.selected:hover {
1223 border-right: 1px solid #d5d5bc;
1224}
1225div.subPanelTabs ul li.selected a {
1226 color: #444440;
1227}
1228div.subPanelTabs ul li:hover {
1229 border-right: 1px solid #d5d5bc;
1230 background-color: #eef0e3;
1231}
1232div.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}
1242div.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}
1250div.subPanelContent h3 {
1251 margin: 0px;
1252 border: 0px;
1253 padding: 0px;
1254}
1255div.subPanelContent ul {
1256 margin: 0px;
1257 padding: 0px;
1258 list-style-type: none;
1259}
1260div.subPanelContent ul li {
1261 display: none;
1262}
1263div.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}
1289div.SimpleMessagePanel {
1290 position: relative;
1291 left: -225px;
1292 top: -70px;
1293 width: 450px;
1294 height: 140px;
1295}
1296div.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}
1307div.SimpleMessagePanel div.body h3 {
1308 font-size: 14pt;
1309 font-weight: normal;
1310 margin: 0px;
1311 padding-top: 4px;
1312 color: #787872;
1313}
1314div.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}
1325div.SimpleMessagePanel div.body div.img canvas {
1326 width: 50px;
1327 height: 50px;
1328}
1329div.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}
1338div.SimpleMessagePanel div.body div.buttonArea {
1339 height: 40px;
1340 clear: both;
1341}
1342div.SimpleMessagePanel div.body div.buttonArea > div {
1343 float: right;
1344 margin-left: 15px;
1345 margin-top: 10px;
1346}
1347div.SimpleMessagePanel div.passphrase {
1348 padding-left: 65px;
1349}
1350div.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}
1359div.SimpleMessagePanel div.progressBarWrapper {
1360 margin-left: 80px;
1361}
1362/* @end */
1363/* @group Javascript Alert */
1364div#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}
1376div#javaScriptAlert div.header {
1377 height: 34px;
1378 width: 468;
1379 background-image: url(./images/old/alert/header.png);
1380}
1381div#javaScriptAlert div.body {
1382 background-image: url(./images/old/alert/body.png);
1383 padding: 0px 20px 10px 20px;
1384}
1385/*
1386div#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 {*/
1392div#javaScriptAlert div.body div.alertLogo {
1393 float: left;
1394 background-image: url(./images/old/alert/alert.png);
1395 width: 88px;
1396 height: 88px;
1397}
1398div#javaScriptAlert div.body div.alert {
1399 padding-left: 100px;
1400}
1401div#javaScriptAlert div.footer {
1402 height: 34px;
1403 width: 468;
1404 background-image: url(./images/old/alert/footer.png);
1405}
1406div#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}
1419div#javaScriptAlert div.message h1 {
1420 font-size: 16pt;
1421 margin: 0px;
1422 color: #ff5930;
1423}
1424div#javaScriptAlert div.message p {
1425 margin-top: 0px;
1426 color: #999999;
1427}
1428div#javaScriptAlert div.message h3 {
1429 font-size: 12pt;
1430 margin-bottom: 0px;
1431 color: #ff5930;
1432}
1433div#javaScriptAlert div.message h5 {
1434 margin: 0px;
1435 color: #999999;
1436}
1437/* @end */
1438/* @group Components
1439 */
1440/* @group LoginProgress */
1441div.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}
1457div.LoginProgress div.header {
1458 height: 40px;
1459}
1460div.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}
1468div.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}
1480div.LoginProgress div.body div.img {
1481 margin: 10px;
1482 width: 50px;
1483 height: 50px;
1484 float: left;
1485}
1486div.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}
1495div.LoginProgress div.body div.img.ALERT canvas {
1496 width: 50px;
1497 height: 50px;
1498 /*background-image: url(./images/old/simpleMessageBox/excalmationPoint.png); */
1499
1500}
1501div.LoginProgress div.body div.loadingBar {
1502 position: relative;
1503 top: 51px;
1504 left: 60px;
1505}
1506div.LoginProgress div.body div.errorBox p {
1507 color: #787872;
1508 padding-top: 20px;
1509 padding-left: 80px;
1510}
1511div.LoginProgress div.footer {
1512 margin-left: 19px;
1513 margin-right: 18px;
1514}
1515/*
1516div.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*/
1529div.LoginProgress div.buttonArea {
1530 padding-top: 6px;
1531 text-align: center;
1532}
1533div.LoginProgress div.button {
1534 display: inline-block;
1535}
1536div.LoginProgress div.footer a:hover {
1537 color: #515247;
1538}
1539/* @end */
1540/* @group SimpleMessagePanel */
1541/* -> SimpleMessagePanel.less
1542div.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}
1556div.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}
1571div.SimpleMessagePanel div.body h3 {
1572 font-size: 14pt;
1573 font-weight: normal;
1574 margin: 0px;
1575 padding-top: 4px;
1576 color: #787872;
1577}
1578div.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}
1587div.SimpleMessagePanel div.body div.img canvas {
1588 width: 60px;
1589 height: 60px;
1590}
1591div.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}
1600div.SimpleMessagePanel div.body div.img.ALERT {
1601// background: url(./images/old/simpleMessageBox/Alert.png) no-repeat;
1602}
1603div.SimpleMessagePanel div.body div.img.INFO {
1604// background: url(./images/old/simpleMessageBox/Info.png) no-repeat;
1605}
1606div.SimpleMessagePanel div.body div.buttonArea {
1607 height: 40px;
1608 clear: both;
1609}
1610div.SimpleMessagePanel div.body div.buttonArea > div {
1611 float: right;
1612 margin-left: 15px;
1613 margin-top: 10px;
1614}
1615div.SimpleMessagePanel div.footer {
1616 height: 25px;
1617// background: url(./images/old/simpleMessageBox/background_footer.png) no-repeat;
1618}
1619div.SimpleMessagePanel div.passphrase {
1620 padding-left: 65px;
1621}
1622div.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}
1631div.SimpleMessagePanel div.progressBarWrapper {
1632 margin-left: 80px;
1633}
1634*/
1635/* @end */
1636/* @group Button */
1637/* -> Button.less
1638div.button_wrapper {
1639 height: 32px;
1640 background: url(./images/old/button/default_left.png) no-repeat;
1641 cursor: pointer;
1642}
1643div.button_wrapper.hover {
1644 background: url(./images/old/button/hover_left.png) no-repeat;
1645}
1646div.button_wrapper.clicked {
1647 background: url(./images/old/button/clicked_left.png) no-repeat;
1648}
1649div.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}
1655div.button_wrapper.hover div.button_bodyWrapper {
1656 background: url(./images/old/button/hover_main.png) repeat-x right 0;
1657}
1658div.button_wrapper.clicked div.button_bodyWrapper {
1659 background: url(./images/old/button/clicked_main.png) repeat-x right 0;
1660}
1661div.button_body {
1662 text-align: center;
1663 min-width: 60px;
1664 padding: 0px 7px;
1665 padding-top: 8px;
1666}
1667div.button_body span {
1668 font-size: 11pt;
1669 color: white;
1670}
1671div.button_wrapper.default div.button_body span {
1672 font-weight: bold;
1673}
1674/ *
1675div.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 */
1685input.entropyLevelIndicator {
1686 background: url(./images/old/passwordField/background.png) no-repeat 0 26px;
1687}
1688div.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}
1697div.passwordEntropy {
1698 height: 4px;
1699 font-size: 1pt;
1700 background: url(./images/old/entropyBackground.gif) repeat-x 0 0;
1701 line-height: 3px;
1702}
1703div.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}
1711div.messageBox h3 {
1712 display: inline-block;
1713 color: #342f6b;
1714 font-weight: bold;
1715 margin: 7px 2px 0px 12px;
1716 font-size: 10pt;
1717}
1718body.ext-gecko div.messageBox h3 {
1719 display: -moz-inline-box;
1720}
1721div.messageBox h1 {
1722 color: #342f6b;
1723 display: inline;
1724 font-weight: normal;
1725 margin: 0px 1px;
1726 font-size: 9pt;
1727}
1728div.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}
1738div.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 */
1746div.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}
1759div.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 */
1767div.delete,
1768div.new {
1769 padding-left: 5px;
1770 height: 19px;
1771}
1772div.new span,
1773div.delete span {
1774 margin: 0px;
1775 padding: 0px;
1776 border: 0px;
1777 display: inline-block;
1778 height: 19px;
1779 padding-right: 6px;
1780}
1781div.new span a,
1782div.delete span a {
1783 white-space: nowrap;
1784}
1785div.delete:hover {
1786 background: url(./images/old/delete_background_left.png) no-repeat 0;
1787}
1788div.delete:hover span {
1789 background: url(./images/old/delete_background.png) no-repeat right 0;
1790}
1791div.new:hover {
1792 background: url(./images/old/new_background_left.png) no-repeat 0;
1793}
1794div.new:hover span {
1795 background: url(./images/old/new_background.png) no-repeat right 0;
1796}
1797/*
1798tr.selected div.delete {
1799 background: url(./images/old/delete_background_left.png) no-repeat 0;
1800}
1801tr.selected div.delete span {
1802 background: url(./images/old/delete_background.png) no-repeat right 0;
1803}
1804*/
1805div.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}
1811div.body div.rows table.rows tbody tr.selected td.delete div.delete span a {
1812 visibility: visible;
1813}
1814div.body div.rows table.rows tbody tr:hover td.delete div.delete span a {
1815 visibility: visible;
1816}
1817div.body div.rows table.rows tbody tr:hover td.delete div.delete:hover span a {
1818 color: white;
1819}
1820/*
1821div.body div.rows table.rows tbody tr.selected td.delete div.delete span a {
1822 color: white;
1823}
1824*/
1825/* @end */
1826/* @group header */
1827div.gridComponent table.rows thead tr th {
1828 text-align: left;
1829 height: 30px;
1830 vertical-align: bottom;
1831}
1832div.gridComponent table.rows thead tr th.sortable span {
1833 cursor: pointer;
1834}
1835div.gridComponent table.rows thead tr th.sortable span a {
1836 margin-left: 5px;
1837 padding-left: 10px;
1838}
1839div.gridComponent table.rows thead tr th.directLoginTH {
1840 width: 420px;
1841}
1842div.gridComponent table.rows thead tr th.latestUpdateTH {
1843 width: 100px;
1844}
1845div.gridComponent table.rows thead tr th.commandsTH {
1846 width: 150px;
1847}
1848div.gridComponent table.rows thead a {
1849 text-decoration: none;
1850}
1851div.gridComponent table.rows thead span {
1852 font-weight: normal;
1853 font-size: 9pt;
1854 line-height: 20px;
1855}
1856div.gridComponent div.header div.headerSlot {
1857 float: right;
1858}
1859/* @end */
1860div.mainPanels div.gridComponent div.body table.rows td.favicon {
1861 padding-left: 25px;
1862}
1863div.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 */
1871div.gridComponent th.directLoginTH span {
1872 margin-left: 7px;
1873}
1874td.card_directLogins div {
1875 display: inline-table;
1876}
1877td.card_directLogins span {
1878 display: inline-block;
1879}
1880/*
1881td.card_directLogins a {
1882 display: inline-table;
1883 height: 19px;
1884
1885 padding-right: 7px;
1886}
1887
1888td.card_directLogins a:hover {
1889 background: url(./images/old/directLink_background.png) right 0;
1890}
1891*/
1892div.card_directLogin {
1893 display: inline-block;
1894 height: 19px;
1895 padding-left: 7px;
1896}
1897div.card_directLogin_ellipses span {
1898 padding-bottom: 2px;
1899}
1900div.card_directLogin div.card_directLogin_body {
1901 display: inline-block;
1902 height: 19px;
1903 padding-right: 8px;
1904 background-position: left;
1905}
1906div.card_directLogin div.card_directLogin_body a {
1907 vertical-align: -14px;
1908}
1909/*div.card_directLogin:hover {*/
1910div.card_directLogin:hover {
1911 background: url(./images/old/directLink_background_left.png) no-repeat 0 0;
1912}
1913/*div.card_directLogin:hover div {*/
1914div.card_directLogin:hover div.card_directLogin_body {
1915 background: url(./images/old/directLink_background.png) right 0;
1916}
1917/* @group DirectLogin Popup */
1918div.DirectLoginListPopup {
1919 position: absolute;
1920 width: 184px;
1921}
1922div.DirectLoginListPopup div.DirectLoginListPopup_body {
1923 background-image: url(./images/old/directLogins_background.png);
1924 padding-top: 8px;
1925}
1926div.DirectLoginListPopup div.DirectLoginListPopup_footer {
1927 height: 8px;
1928 background-image: url(./images/old/directLogins_background_bottom.png);
1929}
1930div.DirectLoginListPopup div.DirectLoginListPopup_body ul {
1931 margin: 0px;
1932 padding-left: 13px;
1933 list-style: none;
1934}
1935div.DirectLoginListPopup div.DirectLoginListPopup_body ul li {
1936 padding-top: 4px;
1937 height: 20px;
1938 padding-right: 10px;
1939 white-space: nowrap;
1940}
1941div.DirectLoginListPopup div.DirectLoginListPopup_body ul li div {
1942 padding-right: 10px;
1943 overflow: hidden;
1944}
1945div.DirectLoginListPopup div.DirectLoginListPopup_body ul li img.favicon {
1946 padding-left: 9px;
1947 padding-right: 5px;
1948}
1949div.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}
1958div.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}
1965div.DirectLoginListPopup div.DirectLoginListPopup_body ul li:hover a {
1966 background: url(./images/old/directLink_no_background.png) right;
1967}
1968/* @end */
1969/* @end */
1970div.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}
1982div.mainPanels div.gridComponent div.header form.search {
1983 height: 32px;
1984 margin: 0px;
1985}
1986div.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}
1994div.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}
1998div.mainPanels div.gridComponent div.header form.search div.search {
1999 display: block;
2000 float: left;
2001 width: 217px;
2002}
2003div.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}
2013div.mainPanels div.gridComponent div.header form.search input.search.disabled {
2014 disabled: disabled;
2015}
2016div.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}
2019div.mainPanels div.gridComponent div.body {
2020 clear: both;
2021 background: url(./images/old/main/blocks/cardGridBackground.png) repeat-y -836px;
2022}
2023div.mainPanels div.gridComponent div.footer {
2024 background: url(./images/old/main/blocks/cardGridBackground.png) 834px -28px;
2025 height: 35px;
2026}
2027div.mainPanels div.gridComponent div.body h1 {
2028 margin: 0px;
2029}
2030div.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}
2036div.mainPanels div.gridComponent.noRows div.body table.rows thead,
2037div.mainPanels div.gridComponent.empty div.body table.rows thead {
2038 visibility: hidden;
2039}
2040div.mainPanels div.gridComponent.empty div.body div.rows {
2041 background: #eaebe6 url(./images/old/lock/background_star.png) no-repeat center center;
2042}
2043div.mainPanels div.gridComponent.noRows div.body div.rows {
2044 background: #eaebe6;
2045}
2046div.mainPanels div.gridComponent div.body table.rows {
2047 display: block;
2048 width: 100%;
2049}
2050div.mainPanels div.gridComponent div.body table.rows tbody tr.odd.selected {
2051 background-color: #a5a696;
2052}
2053div.mainPanels div.gridComponent div.body table.rows tbody tr.even.selected {
2054 background-color: #a5a696;
2055}
2056div.mainPanels div.gridComponent div.body table.rows tbody tr.selected td a {
2057 color: #f3f4eb;
2058}
2059div.mainPanels div.gridComponent div.body table.rows tbody tr.odd {
2060 background-color: #d4d5cf;
2061}
2062div.mainPanels div.gridComponent div.body table.rows tbody tr.even {
2063 background-color: #eaebe6;
2064}
2065div.mainPanels div.gridComponent div.body table.rows tbody tr.odd:hover {
2066 background-color: #a5a696;
2067}
2068div.mainPanels div.gridComponent div.body table.rows tbody tr.even:hover {
2069 background-color: #a5a696;
2070}
2071div.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}
2080div.mainPanels div.gridComponent div.body table.rows tbody tr td span {
2081 color: #828479;
2082 font-size: 10pt;
2083}
2084div.mainPanels div.gridComponent div.body table.rows tbody tr td a {
2085 color: #828479;
2086 font-size: 10pt;
2087 text-decoration: none;
2088}
2089div.mainPanels div.gridComponent div.body table.rows tbody tr:hover td span {
2090 color: #f3f4eb;
2091}
2092div.mainPanels div.gridComponent div.body table.rows tbody tr.selected td span {
2093 color: #f3f4eb;
2094}
2095div.mainPanels div.gridComponent div.body table.rows tbody tr:hover td a {
2096 color: #f3f4eb;
2097}
2098div.mainPanels div.gridComponent div.body table.rows tbody tr td.title a {
2099 font-weight: bold;
2100}
2101div.mainPanels div.gridComponent div.body table.rows tbody tr td img.favicon {
2102 float: right;
2103 padding-right: 6px;
2104}
2105/* @group header */
2106div.gridComponent table.rows thead img {
2107 padding-left: 10px;
2108 vertical-align: middle;
2109}
2110div.gridComponent table.rows thead tr th {
2111 background-color: #eaebe6;
2112 border-bottom: 1px solid #b3b4af;
2113}
2114div.gridComponent table.rows thead span {
2115 color: #8c8f7e;
2116}
2117div.gridComponent table.rows thead tr th.unsorted span.sortable a {
2118 background-image: url(./images/old/main/grid/unsorted.png);
2119}
2120div.gridComponent table.rows thead tr th.descending span.sortable a {
2121 background-image: url(./images/old/main/grid/descending.png);
2122}
2123div.gridComponent table.rows thead tr th.ascending span.sortable a {
2124 background-image: url(./images/old/main/grid/ascending.png);
2125}
2126div.gridComponent table.rows thead tr th.faviconTH {
2127 width: 53px;
2128}
2129div.gridComponent table.rows thead tr th.titleTH {
2130 width: 200px;
2131 max-width: 200px;
2132}
2133div.gridComponent table.rows thead tr th.deleteTH {
2134 width: 50px;
2135}
2136/* @end */
2137/* @end */
2138/* @group Direct login Grid */
2139/*
2140div.mainPanels div.directLoginGrid div.header {
2141/*
2142 height: 90px;
2143 background: url(./images/old/main/blocks/cardGridBackground.png) no-repeat;
2144* /
2145}
2146
2147div.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
2155div.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
2163div.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
2170div.mainPanels div.directLoginGrid div.body {
2171 background: url(./images/old/main/blocks/directLoginGridBackground.png) repeat-y -836px;
2172}
2173
2174div.mainPanels div.directLoginGrid div.footer {
2175 background: url(./images/old/main/blocks/directLoginGridBackground.png) 834px -28px;
2176 height: 35px;
2177}
2178
2179div.mainPanels div.directLoginGrid div.body h1 {
2180 margin: 0px;
2181}
2182
2183div.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
2190div.mainPanels div.directLoginGrid div.body table.rows {
2191 display: block;
2192 width: 100%;
2193}
2194
2195div.mainPanels div.directLoginGrid div.body table.rows img {
2196 border: 0px;
2197}
2198
2199div.mainPanels div.directLoginGrid div.body table.rows tbody tr.even {
2200 background-color: #787666;
2201}
2202
2203div.mainPanels div.directLoginGrid div.body table.rows tbody tr.odd {
2204 background-color: #646351;
2205}
2206
2207div.mainPanels div.directLoginGrid div.body table.rows tbody tr.odd:hover {
2208 background-color: #d1d4c6;
2209}
2210
2211div.mainPanels div.directLoginGrid div.body table.rows tbody tr.even:hover {
2212 background-color: #d1d4c6;
2213}
2214
2215div.mainPanels div.directLoginGrid div.body table.rows tbody tr td {
2216 height: 23px;
2217 color: #e1e0d6;
2218 font-size: 10pt;
2219}
2220
2221div.mainPanels div.directLoginGrid div.body table.rows tbody tr:hover td {
2222 color: #777867;
2223}
2224
2225div.mainPanels div.directLoginGrid div.body table.rows tbody tr td.title {
2226 font-weight: bold;
2227}
2228
2229div.directLoginGrid div.body table.rows tbody tr a {
2230 color: #e1e0d6;
2231 text-decoration: none;
2232}
2233
2234div.directLoginGrid div.body table.rows tbody tr:hover a {
2235 color: #777867;
2236}
2237*/
2238/* @group DirectLogin links */
2239/*
2240td.card_directLogins div {
2241 display: inline-table;
2242}
2243
2244td.card_directLogins span {
2245 display: inline-table;
2246}
2247*/
2248div.directLogin_directLogin {
2249 display: inline-block;
2250 height: 19px;
2251 padding-left: 7px;
2252}
2253div.directLogin_directLogin div.directLogin_directLogin_body {
2254 display: inline-block;
2255 height: 19px;
2256 padding-right: 8px;
2257 background-position: left;
2258}
2259div.directLogin_directLogin div.directLogin_directLogin_body a {
2260 vertical-align: -14px;
2261}
2262div.directLogin_directLogin:hover {
2263 background: url(./images/old/directLink_background_left.png) no-repeat 0 0;
2264}
2265div.directLogin_directLogin:hover div.directLogin_directLogin_body {
2266 background: url(./images/old/directLink_background.png) right 0;
2267}
2268table.rows tbody tr td div.directLogin_directLogin:hover div.directLogin_directLogin_body a {
2269 color: #f3f4eb;
2270}
2271/* @end */
2272/* @group header */
2273div.directLoginGrid table.rows thead span {
2274 color: #e1e0d6;
2275}
2276div.directLoginGrid table.rows thead tr th {
2277 background-color: #787762;
2278 border-bottom: 1px solid #999883;
2279}
2280div.directLoginGrid table.rows thead tr th.faviconTH {
2281 min-width: 53px;
2282 width: 53px;
2283}
2284div.directLoginGrid table.rows thead tr th.titleTH {
2285 min-width: 250px;
2286 width: 250px;
2287}
2288div.directLoginGrid table.rows thead tr th.titleTH span {
2289 margin-left: 7px;
2290}
2291div.directLoginGrid table.rows thead tr th.strengthTH {
2292 width: 100px;
2293}
2294div.directLoginGrid table.rows thead tr th.cardTitleTH {
2295 width: 400px;
2296}
2297div.directLoginGrid table.rows thead tr th.bookmarkableLinkTH {
2298 width: 64px;
2299}
2300div.directLoginGrid table.rows thead tr th.deleteTH {
2301 width: 50px;
2302}
2303div.directLoginGrid table.rows thead tr th.latestAccessTH {
2304 width: 100px;
2305}
2306div.directLoginGrid table.rows thead tr th.commandsTH {
2307 width: 100px;
2308}
2309/*
2310div.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*/
2318div.directLoginGrid table.rows thead img {
2319 padding-left: 10px;
2320 vertical-align: middle;
2321}
2322div.directLoginGrid table.rows thead tr th.unsorted span.sortable a {
2323 background: url(./images/old/main/grid/directLogins/unsorted.png) no-repeat;
2324}
2325div.directLoginGrid table.rows thead tr th.descending span.sortable a {
2326 background: url(./images/old/main/grid/directLogins/descending.png) no-repeat;
2327}
2328div.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/*
2338div.subPanelTabs ul {
2339 margin: 0px;
2340 margin-right: 7px;
2341 padding: 0px;
2342}
2343div.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}
2355div.subPanelTabs ul li.first:hover {
2356 /*background: url(./images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -9px -5px; * /
2357
2358}
2359div.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}
2365div.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}
2375div.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}
2382div.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}
2389div.subPanelTabs ul li.selected:hover {
2390 border-right: 1px solid #d5d5bc;
2391}
2392div.subPanelTabs ul li.selected a {
2393 color: #444440;
2394}
2395div.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}
2403div.subPanelContent ul {
2404 margin: 0px;
2405 padding: 0px;
2406 list-style-type: none;
2407}
2408div.subPanelContent ul li.selected {
2409 display: block;
2410}
2411div.subPanelContent ul li {
2412 display: none;
2413}
2414div.subPanelContent h3 {
2415 margin: 0px;
2416 border: 0px;
2417 padding: 0px;
2418}
2419*/
2420/* @end */
2421/* @group mainPanels otherPanel */
2422div.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}
2432div.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}
2452div.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}
2459div.mainPanels div.otherPanel div.footer {
2460 /*background: url(./images/old/main/blocks/otherPanelBackground.png) 834px -18px; */
2461
2462 height: 45px;
2463}
2464div.mainPanels div.otherPanel div.body h1 {
2465 margin: 0px;
2466}
2467/* @end */
2468/* @group Account */
2469form.changePassphrase div.currentCredentials,
2470form.changePassphrase div.newPassphrase {
2471 float: left;
2472 padding: 10px 20px;
2473}
2474form.changePassphrase label {
2475 display: inline-block;
2476 width: 150px;
2477}
2478form.changePassphrase div.confirm {
2479 clear: both;
2480 padding: 10px 20px;
2481}
2482form.changePassphrase div.confirm label {
2483 width: 500px;
2484}
2485div.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/*
2496div.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
2516div.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
2532div.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/ *
2560div#javaScriptAlert div.body div.alert {
2561 padding-left: 100px;
2562 background: url(./images/old/alert/alert.png) no-repeat;
2563}
2564* /
2565
2566div.messagePanel div.body img.alert {
2567 float: left;
2568}
2569
2570div.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
2580div.messagePanel div.message h1 {
2581 font-size: 16pt;
2582 margin: 0px;
2583 color: #ff5930;
2584}
2585
2586div.messagePanel div.message p {
2587 margin-top: 0px;
2588 color: #999999;
2589}
2590
2591div.messagePanel div.message h3 {
2592 font-size: 12pt;
2593 margin-bottom: 0px;
2594 color: #ff5930;
2595}
2596
2597div.messagePanel div.message h5 {
2598 margin: 0px;
2599 color: #999999;
2600}
2601
2602
2603*/
2604/* @end */
2605/* @group LoginProgress (?) */
2606/*
2607div#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
2616div#loginProgress div.header {
2617 height: 52px;
2618}
2619
2620div#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
2629div#loginProgress div.body {
2630 height: 120px;
2631 overflow: auto;
2632 margin-left: 19px;
2633 margin-right: 18px;
2634}
2635
2636div#loginProgress div.footer {
2637 margin-left: 19px;
2638 margin-right: 18px;
2639}
2640
2641div#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
2654div#loginProgress div.footer a:hover {
2655 color: #515247;
2656}
2657
2658*/
2659/* @end */
2660div#modalDialogMask,
2661div.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}
2678div#modalDialogFrame,
2679div.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}
2692div#modalDialog,
2693div.modalDialog {
2694 z-index: 20001;
2695}
2696/*div#modalDialog.scrollable,*/
2697div.modalDialog.scrollable {
2698 position: absolute;
2699 top: 0;
2700 left: 50%;
2701}
2702/*div#modalDialog.fixed,*/
2703div.modalDialog.fixed {
2704 position: fixed;
2705 top: 40%;
2706 left: 50%;
2707}
2708div#modalDialog div,
2709div.modalDialog div {
2710 z-index: 20002;
2711 list-style-type: circle;
2712}
2713div.modalDialogMask.simpleMessagePanelMask {
2714 z-index: 20010;
2715}
2716div.modalDialogFrame.simpleMessagePanelMask {
2717 z-index: 20011;
2718}
2719div.modalDialog.simpleMessagePanelMask {
2720 z-index: 20011;
2721}
2722div.modalDialog.simpleMessagePanelMask div {
2723 z-index: 20012;
2724}
2725/* @group Bookmarklet */
2726div.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}
2739div.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}
2753div.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}
2759div.bookmarklet div.bookmarklet_link a:hover div.icon {
2760 background: url(./images/old/bookmarklet/placeholder_selected_icon.png) no-repeat 0 0;
2761}
2762div.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}
2769div.bookmarklet div.bookmarklet_link a:hover div.text {
2770 background: url(./images/old/bookmarklet/placeholder_selected.png) no-repeat right 0;
2771}
2772div.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/*
2782div#Clipperz_PM_UI_Common_Components_Tooltip_wrapperNode {
2783 position: absolute;
2784 top: 0px;
2785 left: 0px;
2786}
2787*/
2788/* @end */
2789/* @group News */
2790/*
2791div#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
2802div#news.hidden {
2803 display: none;
2804}
2805
2806div#news div.close {
2807 display: inline;
2808 margin-top: 6px;
2809 margin-left: 17px;
2810 float: left;
2811 width: 15px;
2812}
2813
2814div#news div.close a {
2815 text-decoration: none;
2816 color: #929c1b;
2817}
2818
2819div#news div.close a:hover {
2820 text-decoration: none;
2821 color: #3d420b;
2822}
2823
2824div#news div#newsframe {
2825 display: block;
2826 overflow: hidden;
2827 width: 305px;
2828 height: 70px;
2829}
2830
2831div#news div#newsframe iframe {
2832 border: 0px;
2833}
2834*/
2835/* --------------------------------------- */
2836div#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/*
2856div#news.open {
2857 background: url(./images/old/tips/Tips_open.png) 0 -5px;
2858}
2859
2860div#news.hidden {
2861 background: url(./images/old/tips/Tips_close.png) 0 -5px;
2862}
2863*/
2864/*
2865div#news div#newsframe {
2866 margin-left: 10px;
2867 margin-right: 10px;
2868 height: 75px;
2869 overflow: hidden;
2870}
2871div#news div#newsframe.loading {
2872 background: url(./images/old/loading/news.gif) no-repeat center center;
2873}
2874div#news div#newsframe iframe {
2875 width: 290px;
2876 border: 0px;
2877 color: #616474;
2878 background-color: #616474;
2879}
2880div#news div.grip {
2881 width: 310px;
2882 height: 12px;
2883 margin-top: 2px;
2884 cursor: pointer;
2885}
2886div#news.open div.grip {
2887 background: url(./images/old/tips/close.png) no-repeat center 6px;
2888}
2889div#news.hidden div.grip {
2890 background: url(./images/old/tips/open.png) no-repeat center 6px;
2891}
2892*/
2893/* @end */
2894/* @group mainDialog */
2895div.mainDialog {
2896 position: relative;
2897 left: -263px;
2898 width: 525px;
2899 height: 325px;
2900}
2901div.scrollable div.mainDialog {
2902 top: 0px;
2903}
2904div.fixed div.mainDialog {
2905 top: -118px;
2906}
2907div.mainDialog div.header {
2908 height: 55px;
2909 background: url(./images/old/cardDialog/background_header.png) no-repeat;
2910}
2911div.mainDialog div.header div.title {
2912 padding-top: 16px;
2913 padding-left: 20px;
2914 padding-right: 20px;
2915}
2916div.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}
2927div.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}
2935div.mainDialog div.header div.title.selectedField input,
2936div.mainDialog div.header div.title:hover input {
2937 border: 1px solid #515247;
2938 background-color: #b5b7ab;
2939}
2940div.mainDialog div.header div.title.disabled:hover input {
2941 border: 1px solid #cccec0;
2942 background-color: #cccec0;
2943}
2944div.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}
2951div.mainDialog div.body div.mask {
2952 display: none;
2953}
2954div.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}
2967div.mainDialog.loading div.body .tabPanels {
2968 display: none;
2969}
2970div.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}
2978div.loadingBar {
2979 height: 22px;
2980 width: 214px;
2981 background: url(./images/old/loading/loadingBar.gif) no-repeat center top;
2982}
2983div.loadingBar div.loadingBarProgressBox {
2984 padding: 2px;
2985}
2986div.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/*
2997div.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
3003div.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*/
3011div.mainDialog div.body div ul {
3012 padding: 0px;
3013 clear: both;
3014 margin: 0px;
3015 list-style-type: none;
3016}
3017div.mainDialog div.body div.tabs {
3018 height: 20px;
3019}
3020div.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}
3028div.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}
3041div.mainDialog div.body div.tabs ul.tabs li div {
3042 display: none;
3043}
3044div.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}
3051div.mainDialog div.body div.tabs ul.tabs li:hover {
3052 color: #515247;
3053}
3054div.mainDialog div.body div.tabs ul.tabs li.disabled:hover {
3055 color: #787872;
3056 cursor: default;
3057}
3058div.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}
3064div.mainDialog div.body div.tabs ul.tabs li.selected.disabled:hover {
3065 color: #515247;
3066}
3067div.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}
3074div.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}
3081div.mainDialog div.body div.tabs ul.tabs li.selected div span {
3082 padding: 0px;
3083 margin: 0px;
3084}
3085div.mainDialog div.body div.tabs ul.tabs li.selected div:hover {
3086 cursor: pointer;
3087}
3088div.mainDialog div.body .tabPanels {
3089 clear: both;
3090}
3091div.mainDialog div.body ul.tabPanels li.tabPanel {
3092 display: none;
3093}
3094div.mainDialog div.body ul.tabPanels li.tabPanel.selected {
3095 display: block;
3096}
3097div.mainDialog div.body ul.tabPanels li.tabPanel.selected h2 {
3098 margin: 0px;
3099 text-align: center;
3100 padding-top: 50px;
3101 color: #787872;
3102}
3103div.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}
3110div.mainDialog div.footer {
3111 height: 70px;
3112 background: url(./images/old/cardDialog/background_footer.png) no-repeat 0 -14px;
3113}
3114div.mainDialog div.footer div.buttonArea {
3115 padding-left: 40px;
3116 padding-right: 40px;
3117 padding-top: 15px;
3118}
3119div.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}
3126div.mainDialog div.footer div.buttonArea div.disabled {
3127 color: #b1b1a8;
3128}
3129div.mainDialog div.footer div.buttonArea div.disabled:hover {
3130 color: #b1b1a8;
3131 cursor: default;
3132}
3133div.mainDialog div.footer div.buttonArea div:hover {
3134 color: #515247;
3135 cursor: pointer;
3136}
3137div.mainDialog div.footer div.buttonArea div.save {
3138 float: right;
3139}
3140/* @end */
3141/* @group Card Dialog */
3142div.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}
3149div.addDirectLoginButton span {
3150 display: block;
3151 height: 20px;
3152 width: 20px;
3153}
3154div.addDirectLoginButton:hover {
3155 background: url(./images/old/cardDialog/addDirectLogin_background.png) no-repeat -9px -9px;
3156}
3157/* @group Card Dialog - Direct Login */
3158div.directLoginsComponentContainer {
3159 overflow: hidden;
3160 /* background-color: green;*/
3161
3162}
3163div.CardDialog div.directLogins {
3164 /* background-color: yellow;*/
3165
3166 padding-top: 2px;
3167}
3168div.CardDialog div.addNewDirectLoginSplash {
3169 margin: 0px 80px;
3170}
3171div.CardDialog div.addNewDirectLoginSplash h3 {
3172 color: #aaaaaa;
3173 text-align: center;
3174 font-weight: normal;
3175 font-size: 11pt;
3176}
3177div.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}
3189div.CardDialog div.addNewDirectLoginSplash a span {
3190 text-align: center;
3191}
3192div.CardDialog div.addNewDirectLoginSplash a:hover {
3193 color: #ff6206;
3194 background: url(./images/old/cardDialog/addDirectLogin_background.png) no-repeat right;
3195}
3196div.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}
3207div.CardDialog div.directLoginItem:hover {
3208 background-color: #cccec0;
3209}
3210div.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}
3219div.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}
3228div.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}
3233div.CardDialog div.directLoginItem div.cardDialogRecordDirectLoginComponent_favicon img.favicon {
3234 width: 32px;
3235 height: 32px;
3236 float: left;
3237}
3238div.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}
3251div.CardDialog div.directLoginItem:hover div.cardDialogRecordDirectLoginComponent_label input {
3252 border: 1px solid #515247;
3253 background-color: #b5b7ab;
3254}
3255div.CardDialog div.directLoginItem > div.open {
3256 float: left;
3257 margin-top: 5px;
3258 margin-right: 2px;
3259 padding-left: 5px;
3260 visibility: hidden;
3261}
3262div.CardDialog div.directLoginItem > div.edit,
3263div.CardDialog div.directLoginItem > div.delete {
3264 float: left;
3265 margin-top: 5px;
3266 margin-left: 3px;
3267 padding-left: 5px;
3268 visibility: hidden;
3269}
3270div.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}
3276div.CardDialog div.directLoginItem > div.open a:hover {
3277 background: url(./images/old/cardDialog/openDirectLogin_selected.png) no-repeat 0 -2px;
3278}
3279div.CardDialog div.directLoginItem:hover > div.open,
3280div.CardDialog div.directLoginItem:hover > div.edit,
3281div.CardDialog div.directLoginItem:hover > div.delete {
3282 visibility: visible;
3283}
3284div.CardDialog div.directLoginItem div.edit span {
3285 padding-right: 6px;
3286 display: block;
3287}
3288div.CardDialog div.directLoginItem div.open span a,
3289div.CardDialog div.directLoginItem div.edit span a,
3290div.CardDialog div.directLoginItem div.delete span a {
3291 font-size: 8pt;
3292 color: #666666;
3293 text-decoration: none;
3294 line-height: 19px;
3295}
3296div.CardDialog div.directLoginItem div.edit:hover {
3297 background: url(./images/old/new_background_left.png) no-repeat;
3298}
3299div.CardDialog div.directLoginItem div:hover span a {
3300 color: white;
3301}
3302div.CardDialog div.directLoginItem div.edit:hover span {
3303 background: url(./images/old/new_background.png) no-repeat right center;
3304}
3305div.CardDialog div.directLoginItem div.delete:hover {
3306 background: url(./images/old/delete_background_left.png) no-repeat;
3307}
3308div.CardDialog div.directLoginItem div.delete:hover span {
3309 background: url(./images/old/delete_background.png) right;
3310}
3311/* @group Direct Login Editing */
3312div.CardDialog div.directLoginEditDetail {
3313 position: relative;
3314 /* background-color: red;*/
3315
3316}
3317/*
3318div.CardDialog div.directLoginEditDetail div.back {
3319 float: left;
3320 width: 30px;
3321}
3322
3323div.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
3336div.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*/
3341form.directLoginEditingForm div.title,
3342form.directLoginEditingForm div.favicon {
3343 padding: 5px 10px;
3344}
3345form.directLoginEditingForm div.title.disabled:hover {
3346 background-color: #f1f2e9;
3347}
3348form.directLoginEditingForm div.title:hover,
3349form.directLoginEditingForm div.favicon:hover {
3350 background-color: #cccec0;
3351}
3352form.directLoginEditingForm div.title input {
3353 /* width: 100%; */
3354
3355 margin: 0px;
3356 margin-left: 10px;
3357 width: 440px;
3358}
3359form.directLoginEditingForm div.favicon {
3360 padding-left: 10px;
3361}
3362/*form.directLoginEditingForm div.favicon img.favicon {*/
3363form.directLoginEditingForm img.favicon {
3364 float: left;
3365 width: 32px;
3366 height: 32px;
3367}
3368form.directLoginEditingForm div.favicon input {
3369 margin-top: 1px;
3370 width: 465px;
3371}
3372form.directLoginEditingForm div.disabled:hover input,
3373form.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}
3382form.directLoginEditingForm div:hover input {
3383 border: 1px solid #515247;
3384 background-color: #b5b7ab;
3385}
3386/* @group Bindings */
3387div.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}
3395div.bindings div.binding {
3396 padding-bottom: 3px;
3397}
3398div.bindings div.binding > input {
3399 margin-right: 10px;
3400 background: #cccec0;
3401 width: 150px;
3402 border: 1px solid #cccec0;
3403}
3404div.bindings div.binding:hover > input {
3405 border: 1px solid #cccec0;
3406}
3407div.bindings div.binding > select {
3408 font-size: 13pt;
3409}
3410div.bindings div.binding span.fieldLock {
3411 display: inline-block;
3412 width: 20px;
3413 height: 20px;
3414 margin-right: 3px;
3415}
3416div.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}
3424div.bindings div.binding span.fieldLock a {
3425 display: none;
3426}
3427div.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}
3434div.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 */
3440div.formValues {
3441 padding-top: 15px;
3442}
3443div.formValues div.formValue div {
3444 margin: 0px;
3445 display: inline-block;
3446}
3447div.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/*
3457div.formValues {
3458 padding-top: 15px;
3459}
3460
3461div.formValues div.formValue > span.formFieldName {
3462 display: inline-table;
3463 width: 150px;
3464 overflow: hidden;
3465 margin-right: 35px;
3466 color: #6b5147;
3467}
3468
3469div.formValues div.formValue > select {
3470 padding-left: 20px;
3471}
3472*/
3473/* @end */
3474/* @group Panels */
3475div.directLoginEditing {
3476 padding-top: 2px;
3477}
3478div.directLoginEditing div.tabContainer {
3479 min-height: 150px;
3480 height: 200px;
3481}
3482div.directLoginEditing div.tabContainer > ul.tabs {
3483 display: none;
3484}
3485/*
3486div.directLoginEditing li.configuration,
3487div.directLoginEditing li.bindings,
3488div.directLoginEditing li.favicon {
3489 padding: 10px;
3490}
3491*/
3492div.directLoginEditing li {
3493 padding: 10px;
3494}
3495div.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}
3504div.directLoginEditing li.configuration > .bookmarkletConfigurationWrapper .bookmarkletComponent {
3505 float: right;
3506}
3507div.directLoginEditing li.configuration > textarea.error {
3508 border: 1px solid red;
3509 background-color: rgba(255, 0, 0, 0.1);
3510}
3511/*
3512div.directLoginEditing > form.directLoginEditingForm > div.tabContainer {
3513 padding-top: 10px;
3514}
3515
3516div.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
3534div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li:first-child {
3535 border-left: 1px solid #aaa;
3536}
3537
3538div.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
3546div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li > span {
3547 line-height: 23px;
3548}
3549
3550div.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
3557div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li:hover {
3558 color: #6a5147;
3559}
3560
3561div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabPanels {
3562 padding-bottom: 5px;
3563 margin-left: 10px;
3564 margin-right: 10px;
3565}
3566
3567div.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
3573div.directLoginEditing li.configuration {
3574 padding: 5px;
3575}
3576
3577div.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 */
3589div.CardDialog div.body {
3590 padding-bottom: 1px;
3591}
3592div.CardDialog div.body table.fields {
3593 width: 100%;
3594 padding-top: 8px;
3595 padding-bottom: 1px;
3596}
3597div.CardDialog div.body table.fields thead {
3598 background: url(./images/old/cardDialog/dottedLine_background.png) repeat-x 0 15px;
3599}
3600div.CardDialog div.body table.fields tfoot {
3601 background: url(./images/old/cardDialog/dottedLine_background.png) repeat-x 0 bottom;
3602}
3603div.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}
3615div.CardDialog div.body table.fields thead th.fieldStateTH {
3616 width: 10px;
3617}
3618div.CardDialog div.body table.fields tbody td.fieldLabel input {
3619 width: 130px;
3620}
3621div.CardDialog div.body table.fields thead th.fieldLockTH {
3622 width: 10px;
3623}
3624div.CardDialog div.body table.fields tbody td.fieldValue input {
3625 width: 280px;
3626}
3627div.CardDialog div.body table.fields thead th.fieldActionTH {
3628 width: 30px;
3629}
3630div.CardDialog div.body table.fields thead th.fieldDeleteTH {
3631 width: 40px;
3632}
3633div.CardDialog div.body table.fields tbody tr:hover,
3634div.CardDialog div.body table.fields tbody tr.selectedField {
3635 background-color: #cccec0;
3636}
3637div.CardDialog div.body table.fields tbody tr td {
3638 font-size: 11pt;
3639 color: #787872;
3640 height: 35px;
3641}
3642div.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/*
3652div.CardDialog div.body table.fields tbody tr td.fieldValue div {
3653 margin-right: 10px;
3654}
3655
3656div.CardDialog div.body table.fields tbody tr td.fieldValue div input {
3657 width: 100%;
3658}
3659*/
3660div.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}
3670div.locked input.value::-moz-selection {
3671 background: #ff0000;
3672}
3673div.locked input.value::selection {
3674 background: #ff0000;
3675}
3676div.CardDialog div.body table.fields tbody tr.new.selectedField td input,
3677div.CardDialog div.body table.fields tbody tr.new:hover td input,
3678div.CardDialog div.body table.fields tbody tr:hover td input,
3679div.CardDialog div.body table.fields tbody tr.selectedField td input {
3680 border: 1px solid #515247;
3681 background-color: #b5b7ab;
3682}
3683div.CardDialog div.body table.fields tbody tr:hover td.fieldValue div.locked input,
3684div.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}
3689div.CardDialog div.body table.fields tbody td.fieldLock div {
3690 width: 20px;
3691 height: 19px;
3692 cursor: pointer;
3693}
3694div.CardDialog div.body table.fields tbody tr:hover td.fieldLock div.locked {
3695 background-image: url(./images/old/cardDialog/lock_closed.png);
3696}
3697div.CardDialog div.body table.fields tbody tr:hover td.fieldLock div.unlocked {
3698 background-image: url(./images/old/cardDialog/lock_open.png);
3699}
3700div.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}
3707div.CardDialog div.body table.fields tbody tr.selectedField td.fieldAddDelete div span a {
3708 visibility: visible;
3709}
3710div.CardDialog div.body table.fields tbody tr:hover td.fieldAddDelete div span a {
3711 visibility: visible;
3712}
3713div.CardDialog div.body table.fields tbody tr:hover td.fieldAddDelete div:hover span a {
3714 color: white;
3715}
3716div.CardDialog div.body div.notes {
3717 background: url(./images/old/cardDialog/dottedLine_background.png) repeat-x 0 0;
3718 padding-top: 2px;
3719}
3720div.CardDialog div.body div.notes div {
3721 padding-left: 20px;
3722 padding-right: 20px;
3723 padding-top: 4px;
3724 padding-bottom: 4px;
3725}
3726div.CardDialog div.body div.notes div:hover,
3727div.CardDialog div.body div.notes.selectedField div {
3728 background-color: #cccec0;
3729}
3730div.CardDialog.loading div.body div.notes div textarea {
3731 display: none;
3732}
3733div.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}
3750div.CardDialog div.body div.notes div:hover textarea,
3751div.CardDialog div.body div.notes.selectedField div textarea {
3752 border: 1px solid #515247;
3753 background-color: #b5b7ab;
3754}
3755div.CardDialog div.body table.fields tbody tr td.fieldAction {
3756 /* background-color: red;*/
3757
3758 padding-left: 4px;
3759}
3760div.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}
3767div.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}
3770div.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}
3773div.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}
3776div.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}
3779div.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}
3782div.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
3790div.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 */
3797div#disabledZone {
3798 display: block;
3799 visibility: visible;
3800}
3801div#messageZone {
3802 display: block;
3803 visibility: visible;
3804}
3805div.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/*
3814div.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*/
3825div.rulerWrapper {
3826 left: -1000px;
3827 margin-top: -30px;
3828 margin-left: 50%;
3829 z-index: 25000;
3830}
3831div.rulerWrapper.fixed {
3832 position: fixed;
3833}
3834div.rulerWrapper.scrollable {
3835 position: absolute;
3836}
3837div.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}
3845div.ruler a {
3846 position: absolute;
3847 display: block;
3848 width: 15px;
3849 height: 15px;
3850 top: 3px;
3851 text-decoration: none;
3852}
3853div.ruler a.exit {
3854 margin-left: 2px;
3855 background: url(./images/old/ruler/exit.png) no-repeat;
3856}
3857div.ruler a.exit:hover {
3858 background: url(./images/old/ruler/exit_selected.png) no-repeat;
3859}
3860div.ruler a.smallButton.previous {
3861 right: 16px;
3862 background: url(./images/old/ruler/small_previous.png) no-repeat;
3863}
3864div.ruler a.smallButton.previous:hover {
3865 cursor: pointer;
3866 background: url(./images/old/ruler/small_previous_selected.png) no-repeat;
3867}
3868div.ruler a.smallButton.previous.disabled,
3869div.ruler a.smallButton.previous.disabled:hover {
3870 cursor: default;
3871 background: url(./images/old/ruler/small_previous_disabled.png) no-repeat;
3872}
3873div.ruler a.smallButton.next {
3874 right: 3px;
3875 background: url(./images/old/ruler/small_next.png) no-repeat;
3876}
3877div.ruler a.smallButton.next:hover {
3878 cursor: pointer;
3879 background: url(./images/old/ruler/small_next_selected.png) no-repeat;
3880}
3881div.ruler a.smallButton.next.disabled,
3882div.ruler a.smallButton.next.disabled:hover {
3883 cursor: default;
3884 background: url(./images/old/ruler/small_next_disabled.png) no-repeat;
3885}
3886div.ruler div.steps,
3887div.ruler div.dots {
3888 position: absolute;
3889 background-color: rgba(255, 255, 255, 0);
3890 margin-left: 30px;
3891 margin-right: 30px;
3892}
3893div.ruler div.steps {
3894 top: 25px;
3895 height: 30px;
3896}
3897div.ruler div.dots {
3898 top: 58px;
3899 height: 25px;
3900}
3901div.ruler div ul {
3902 list-style-type: none;
3903 margin: 0px;
3904 padding: 0px;
3905}
3906div.ruler div ul li {
3907 display: inline-block;
3908 vertical-align: top;
3909}
3910div.ruler > div.steps > ul > li:first-child,
3911div.ruler > div.dots > ul > li:first-child {
3912 margin-left: 0px;
3913}
3914div.ruler div.steps_3 ul li {
3915 margin-left: 135px;
3916}
3917div.ruler div.steps_4 ul li {
3918 margin-left: 67px;
3919}
3920div.ruler div.steps_5 ul li {
3921 margin-left: 32px;
3922}
3923div.ruler div.steps_6 ul li {
3924 margin-left: 12px;
3925}
3926div.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}
3935div.ruler div ul li.selected span {
3936 color: black;
3937}
3938div.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}
3951div.ruler div.marker {
3952 position: absolute;
3953 top: -3px;
3954 /* left: -246px;*/
3955
3956}
3957div.ruler div.marker div.markerBody {
3958 width: 77px;
3959 height: 97px;
3960 background: url(./images/old/ruler/marker.png) no-repeat;
3961}
3962div.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}
3971div.ruler div.marker div.next:hover {
3972 cursor: pointer;
3973 background: url(./images/old/ruler/next.png) no-repeat -2px;
3974}
3975div.ruler div.marker div.disabled {
3976 display: none;
3977}
3978div.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}
3989div.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 */
3996div.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}
4005div.createNewCardSplash:hover {
4006 cursor: pointer;
4007 background: url(./images/old/main/grid/createNewCardSplash_selected.png) no-repeat;
4008}
4009div.createNewCardSplash span {
4010 display: block;
4011 padding-top: 130px;
4012 font-size: 14pt;
4013 color: #9a9586;
4014}
4015div.createNewCardSplash:hover span {
4016 color: #605c4e;
4017}
4018/*=============================================*/
4019div.NewUserCreation div.tabContainer {
4020 min-height: 150px;
4021 height: 200px;
4022}
4023div.NewUserCreation div.tabContainer > ul.tabs {
4024 display: none;
4025}
4026ul.createUserStates li.creating {
4027 background: url(./images/old/creatingUser.gif) no-repeat center center;
4028}
4029ul.createUserStates li {
4030 height: 100px;
4031}
4032ul.createUserStates li span {
4033 display: block;
4034 width: 100%;
4035 text-align: center;
4036 color: #999;
4037 font-style: italic;
4038}
4039div.NewUserCreation form.newUserCreationForm ul.tabPanels {
4040 padding-top: 10px;
4041}
4042div.NewUserCreation form.newUserCreationForm ul ul {
4043 margin-left: auto;
4044 margin-right: auto;
4045 width: 400px;
4046}
4047div.NewUserCreation form.newUserCreationForm ul.credentials li {
4048 height: 45px;
4049}
4050div.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}
4058div.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}
4065div.NewUserCreation form.newUserCreationForm ul.termsOfService li {
4066 padding: 0 0 15 0;
4067}
4068div.NewUserCreation form.newUserCreationForm ul.termsOfService input {
4069 display: inline-block;
4070}
4071div.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}
4080div.NewUserCreation form.newUserCreationForm ul.termsOfService a {
4081 font-weight: bold;
4082 color: #787872;
4083 text-decoration: none;
4084}
4085div.NewUserCreation form.newUserCreationForm ul.termsOfService a:hover {
4086 color: #444;
4087}
4088div.NewUserCreation form.newUserCreationForm ul.createUserStates li.done span {
4089 font-size: 16pt;
4090 color: green;
4091}
4092div.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
@@ -15,7 +15,8 @@
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>
@@ -45,6 +46,13 @@ Clipperz_normalizedNewLine = '\x0d\x0a';
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<!-- -->
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 @@
1CACHE 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
8CACHE:
9index.mobile.html
10*.favico
11
12# static.html will be served if the user is offline
13FALLBACK:
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.
22NETWORK:
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,33 +1,31 @@
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
3Copyright 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
5This file is part of Clipperz Community Edition. 13<!-- link rel="apple-touch-icon-precomposed" ... -->
6Clipperz 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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">
7For 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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">
8refer 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" />
@@ -40,45 +38,29 @@ refer to http://www.clipperz.com.
40 Clipperz_dumpUrl = "/dump/"; 38 Clipperz_dumpUrl = "/dump/";
41</script> 39</script>
42 40
43<!--[if IE]><script> 41@js_LINKED@
44Clipperz_IEisBroken = true;
45Clipperz_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
@@ -513,9 +513,9 @@ MochiKit.Base.update(Clipperz.Async, {
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
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
@@ -77,6 +77,11 @@ MochiKit.Base.update(Clipperz.Base, {
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) {
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
@@ -41,6 +41,7 @@ Clipperz.PM.Connection = function (args) {
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}
@@ -146,6 +147,16 @@ MochiKit.Logging.logError("### Connection.defaultErrorHandler: " + anErrorString
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: ?????
@@ -320,13 +331,12 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz.
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');
@@ -399,6 +409,13 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz.
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');
@@ -429,12 +446,19 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz.
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);
@@ -449,8 +473,7 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz.
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));
@@ -587,6 +610,7 @@ Clipperz.PM.Connection.SRP['1.1'].prototype = MochiKit.Base.update(new Clipperz.
587 610
588Clipperz.PM.Connection.exception = { 611Clipperz.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
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
@@ -44,7 +44,7 @@ Clipperz.PM.DataModel.User = function (args) {
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 = {
@@ -93,7 +93,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
93 }, 93 },
94 94
95 //------------------------------------------------------------------------- 95 //-------------------------------------------------------------------------
96 96/*
97 'serverLockValue': function () { 97 'serverLockValue': function () {
98 return this._serverLockValue; 98 return this._serverLockValue;
99 }, 99 },
@@ -101,7 +101,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
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 () {
@@ -220,8 +220,8 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
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'));
@@ -247,7 +247,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
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
@@ -329,7 +329,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
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
@@ -662,8 +662,8 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
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 },
@@ -740,7 +740,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
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;
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
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz Community Edition.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please
8refer 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
26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
28if (typeof(Clipperz.PM.PIN) == 'undefined') { Clipperz.PM.PIN = {}; }
29
30MochiKit.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
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz Community Edition.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please
8refer 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
26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
28
29//=============================================================================
30
31Clipperz.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
41Clipperz.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
@@ -406,6 +406,10 @@ Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.BaseComponent, /*Ext.Compo
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) {
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
@@ -62,7 +62,8 @@ Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.Button, Clipperz.PM.UI.Com
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()}
@@ -70,36 +71,43 @@ Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.Button, Clipperz.PM.UI.Com
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
@@ -98,14 +98,29 @@ Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.SimpleMessagePanel, Clippe
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 () {
@@ -132,17 +147,20 @@ Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.SimpleMessagePanel, Clippe
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();
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
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz Community Edition.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please
8refer 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
26Clipperz.Base.module('Clipperz.PM.UI.Mobile.Components');
27
28Clipperz.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
40Clipperz.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 () {
61console.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
158console.log("ADD DIRECT LOGIN", aDirectLogin);
159 },
160
161 //=========================================================================
162
163 'showCard': function (aCard) {
164 var deferredResult;
165
166 // this.render();
167
168console.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
@@ -23,12 +23,12 @@ refer to http://www.clipperz.com.
23 23
24*/ 24*/
25 25
26Clipperz.Base.module('Clipperz.PM.UI.iPhone.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Mobile.Components');
27 27
28Clipperz.PM.UI.iPhone.Components.CardList = function(args) { 28Clipperz.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
@@ -37,44 +37,97 @@ Clipperz.PM.UI.iPhone.Components.CardList = function(args) {
37 37
38//============================================================================= 38//=============================================================================
39 39
40Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.CardList, Clipperz.PM.UI.Common.Components.BaseComponent, { 40Clipperz.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');
124console.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();
@@ -127,7 +180,7 @@ Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.CardList, Clipperz.PM.UI.C
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;
@@ -195,7 +248,7 @@ Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.CardList, Clipperz.PM.UI.C
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
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz Community Edition.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please
8refer 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
26Clipperz.Base.module('Clipperz.PM.UI.Mobile.Components');
27
28Clipperz.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
49Clipperz.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
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz Community Edition.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please
8refer 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
26Clipperz.Base.module('Clipperz.PM.UI.Mobile.Controllers');
27
28Clipperz.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
39MochiKit.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 &gt; 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 () {
131console.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 () {
170console.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
235console.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
@@ -41,6 +41,10 @@ Clipperz.PM.UI.Web.Components.AccountPanel = function(args) {
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'
@@ -74,6 +78,7 @@ Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.AccountPanel, Clipperz.PM.UI.
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 ]}
@@ -117,16 +122,16 @@ Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.AccountPanel, Clipperz.PM.UI.
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 ]}
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
@@ -82,16 +82,18 @@ Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DataPanel, Clipperz.PM.UI.Com
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 ]}
@@ -101,8 +103,14 @@ Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DataPanel, Clipperz.PM.UI.Com
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
@@ -82,9 +82,10 @@ Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginProgress, Clipperz.PM.UI
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 ]});
@@ -95,7 +96,8 @@ Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginProgress, Clipperz.PM.UI
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 //-------------------------------------------------------------------------
@@ -121,7 +123,9 @@ Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginProgress, Clipperz.PM.UI
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
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
@@ -82,16 +82,16 @@ Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.ToolsPanel, Clipperz.PM.UI.Co
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 ]}
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
@@ -231,9 +231,11 @@ MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.AppController.prototype, {
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
@@ -321,6 +323,29 @@ MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.AppController.prototype, {
321 ], {trace:false}); 323 ], {trace:false});
322 }, 324 },
323 325
326 'handleDownloadOfflineCopy': function (anEvent) {
327console.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
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz Community Edition.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please
8refer 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
26Clipperz.Base.module('Clipperz.PM.UI.iPhone.Components');
27
28Clipperz.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
40Clipperz.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
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz Community Edition.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please
8refer 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
26Clipperz.Base.module('Clipperz.PM.UI.iPhone.Components');
27
28Clipperz.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
38Clipperz.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
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz Community Edition.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please
8refer 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
26Clipperz.Base.module('Clipperz.PM.UI.iPhone.Controllers');
27
28 //Some parts of this controller have been derived from the iUI library.
29
30Clipperz.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
59MochiKit.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
@@ -47,11 +47,18 @@ Clipperz.PM.RunTime = {};
47 47
48 48
49function run() { 49function 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
57MochiKit.DOM.addLoadEvent(run); 64MochiKit.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
@@ -7,159 +7,200 @@
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/)
@@ -236,39 +277,6 @@
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
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,7 +1,7 @@
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",
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,23 +1,26 @@
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
@@ -33,8 +36,8 @@
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
@@ -69,10 +72,13 @@
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",
@@ -89,6 +95,23 @@
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",
@@ -104,16 +127,16 @@
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
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz Community Edition.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please
8refer 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
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz Community Edition.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please
8refer 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
26Clipperz.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
32var 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
97SimpleTest.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
@@ -45,6 +45,7 @@ TestRunner.runTests(
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);
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
@@ -81,7 +81,7 @@ testData = {
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',
@@ -120,7 +120,7 @@ testData = {
120 } 120 }
121 } 121 }
122 }, 122 },
123*/ 123
124 124
125 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 125 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
126 126
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
@@ -25,19 +25,16 @@ refer to http://www.clipperz.com.
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';
@@ -50,8 +47,8 @@ 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>
@@ -196,45 +193,41 @@ Clipperz_normalizedNewLine = '\x0d\x0a';
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
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz Community Edition.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please
8refer 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
26function _pm_logEvent(anEvent) {
27 //console.log("####", anEvent);
28
29 anEvent.preventDefault();
30}
31
32function handleGenericDeferredError(anError) {
33 var result;
34
35 if (anError instanceof MochiKit.Async.CancelledError) {
36 result = anError;
37 } else {
38MochiKit.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
47Clipperz.PM.RunTime = {};
48
49
50function 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
106Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
107
108var proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
109proxy.dataStore().setupWithEncryptedData(testData['testData']);
110
111MochiKit.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
3Copyright 2008-2011 Clipperz Srl
4
5This file is part of Clipperz Community Edition.
6Clipperz Community Edition is an online password manager.
7For further information about its features and functionalities please
8refer 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>