summaryrefslogtreecommitdiff
path: root/frontend/gamma
Side-by-side diff
Diffstat (limited to 'frontend/gamma') (more/less context) (show 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.html84
-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.js0
-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.js32
-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)109
-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.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DataPanel.js16
-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.js25
-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.txt274
-rw-r--r--frontend/gamma/properties/gamma.properties.json0
-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, 7860 insertions, 2245 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 @@
+/*
+
+Copyright 2008-2011 Clipperz Srl
+
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
+For further information about its features and functionalities please
+refer to http://www.clipperz.com.
+
+* Clipperz Community Edition is free software: you can redistribute
+ it and/or modify it under the terms of the GNU Affero General Public
+ License as published by the Free Software Foundation, either version
+ 3 of the License, or (at your option) any later version.
+
+* Clipperz Community Edition is distributed in the hope that it will
+ be useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU Affero General Public License for more details.
+
+* You should have received a copy of the GNU Affero General Public
+ License along with Clipperz Community Edition. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+/*
+
+Color list:
+- login box:
+ light #ff9955
+ dark #ff6622
+- login button:
+ regular #dd5500
+ hover #773311
+- login translations:
+ box: #cc6622;
+ not-selected:
+ color: #ddaa99
+ background: #994422
+ selected: #772211;
+*/
+html {
+ height: 100%;
+ -webkit-text-size-adjust: none;
+ -ms-text-size-adjust: none;
+}
+body {
+ font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif;
+ margin: 0px;
+}
+.ellipsis {
+ text-overflow: ellipsis;
+ overflow: hidden;
+ white-space: nowrap;
+}
+/**
+ * Background noise recipe
+ *
+ * This recipe use a sass function to generate a .png file
+ *
+ * Inspired by a jQuery plugin "Noisy" by Daniel Rapp @DanielRapp
+ * @link https://github.com/DanielRapp/Noisy
+ *
+ * Converted using Sass by Aaron Russell @aaronrussell & Philipp Bosch @philippbosch
+ * @link https://gist.github.com/1021332
+ *
+ * Ported to a sass gem by Antti Salonen @antsa
+ * @link https://github.com/antsa/sassy_noise
+ *
+ * Mixin: background-noise
+ * Function: background_noise
+ *
+ * @author Daniel Rapp @DanielRapp
+ * @author Aaron Russell @aaronrussell
+ * @author Philipp Bosch @philippbosch
+ * @author Antti Salonen @antsa
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ *
+ * @class Gradients
+ * @author David Kaneda http://www.davidkaneda.com/
+ *
+ */
+/**
+ * Adds a background gradient into a specified selector.
+ *
+ * @include background-gradient(#444, 'glossy');
+ *
+ * You can also use color-stops if you want full control of the gradient:
+ *
+ * @include background-gradient(#444, color-stops(#333, #222, #111));
+ *
+ * @param {color} $bg-color
+ * The base color of the gradient.
+ *
+ * @param {string/list} $type
+ * The style of the gradient, one of five pre-defined options: matte, bevel, glossy, recessed, or linear:
+ *
+ * @include background-gradient(red, 'glossy');
+ *
+ * It can also accept a list of color-stop values:;
+ *
+ * @include background-gradient(black, color-stops(#333, #111, #000));
+ *
+ * @param {string} $direction
+ * The direction of the gradient.
+ */
+/**
+ * Blueprint grid background pattern
+ *
+ * @link http://lea.verou.me/css3patterns/#blueprint-grid
+ *
+ * @author Lea Verou http://lea.verou.me/ for the original pattern
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx for the sass mixin
+ */
+/**
+ * Background overlay inspired by Google Chrome modal overlay
+ *
+ * @author Maxime Thirouin @MoOx maxime.thirouin@gmail.com
+ */
+/**
+ * Striped background pattern
+ *
+ * @link http://lea.verou.me/css3patterns/
+ *
+ * @author Lea Verou http://lea.verou.me/ for the original pattern
+ * @author David Kaneda http://www.davidkaneda.com @davidkaneda for the sass mixin
+ */
+/**
+ *
+ * Before compass 0.11.5, you need to add
+ * Compass::BrowserSupport.add_support("repeating-linear-gradient", "webkit", "moz", "o", "ms")
+ * To your configuration (config.rb)
+ * @see https://github.com/chriseppstein/compass/issues/401
+ *
+ * @link http://lea.verou.me/css3patterns/#tartan
+ *
+ * @author Marta Armada http://swwweet.com/ for the original pattern
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx for the sass mixin
+ */
+/**
+ * Carbon Fiber background pattern
+ *
+ * @author Lea Verou http://lea.verou.me/ for the original pattern
+ * @author David Kaneda http://www.davidkaneda.com/ for the Sass mixin
+ *
+ * @link http://lea.verou.me/css3patterns/
+ *
+ */
+/**
+ * Normalize.css
+ * Opposite approche from CSS reset
+ *
+ * Based on normalize.css commit 9576d48fc234c5224b1fc4dccba2f5965243843d
+ *
+ * @link http://github.com/necolas/normalize.css
+ */
+/* normalize.css 2011-07-12T10:51 UTC · http://github.com/necolas/normalize.css */
+/* =============================================================================
+ HTML5 element display
+ ========================================================================== */
+/* =============================================================================
+ Base
+ ========================================================================== */
+/* =============================================================================
+ Links
+ ========================================================================== */
+/* =============================================================================
+ Typography
+ ========================================================================== */
+/* =============================================================================
+ Lists
+ ========================================================================== */
+/* =============================================================================
+ Embedded content
+ ========================================================================== */
+/* =============================================================================
+ Figures
+ ========================================================================== */
+/* =============================================================================
+ Forms
+ ========================================================================== */
+/* =============================================================================
+ Tables
+ ========================================================================== */
+/**
+ *
+ * @author David Kaneda - http://www.davidkaneda.com
+ *
+ */
+/**
+ * @class Color
+ */
+/**
+ * Returns the brightness (out of 100) of a specified color.
+ * @todo explain why this is useful
+ * @param {color} $color The color you want the brightness value of
+ * @return {measurement}
+ */
+/**
+ * Returns the luminosity for a specified color
+ * @todo explain why this is useful
+ * @param {color} The color to check
+ * @return {measurement}
+ */
+/**
+ * Glass effect
+ * Use this on image for better effect render
+ *
+ * Inspired from Simurai's IMDB redisign
+ *
+ * @link http://lab.simurai.com/redesign/imdb
+ * @thanks Simurai @simurai
+ */
+/**
+ * Note IE7/6 doesn't understand pseudo element as ::before and ::after
+ * IE8 need to have :before and not ::before
+ * So use only : and not :: if you want to support IE8
+ * IE9 Webkit Firefox Opera understand ::
+ */
+/**
+ * Scotch tape effect with pure CSS
+ *
+ * @thanks Nick La @nickla for original concept
+ * @link http://webdesignerwall.com/tutorials/css3-image-styles
+ *
+ * @author David Kaneda http://www.davidkaneda.com
+ *
+ */
+/**
+ * Note IE7/6 doesn't understand pseudo element as ::before and ::after
+ * IE8 need to have :before and not ::before
+ * So use only : and not :: if you want to support IE8
+ * IE9 Webkit Firefox Opera understand ::
+ */
+/**
+ * Corner folded with pure CSS
+ *
+ * Known support: Firefox 3.5+, Chrome 4+, Safari 4+, Opera 10+, IE 9+.
+ * IE8 is not supported because it not render properly box-shadow and
+ * pseudo element should be selected with ::element and not :element
+ *
+ * @thanks Nicolas Gallagher @necolas
+ * @link http://nicolasgallagher.com/pure-css-folded-corner-effect/demo/
+ * @todo Nix in .4
+ */
+/**
+ * Note IE7/6 doesn't understand pseudo element as ::before and ::after
+ * IE8 need to have :before and not ::before
+ * So use only : and not :: if you want to support IE8
+ * IE9 Webkit Firefox Opera understand ::
+ */
+/**
+ * Corner folded with pure CSS
+ *
+ * Known support: Firefox 3.5+, Chrome 4+, Safari 4+, Opera 10+, IE 9+.
+ * IE8 is not supported because it not render properly box-shadow and
+ * pseudo element should be selected with ::element and not :element
+ *
+ * @thanks Nicolas Gallagher @necolas
+ * @link http://nicolasgallagher.com/pure-css-folded-corner-effect/demo/
+ */
+/**
+ * Note IE7/6 doesn't understand pseudo element as ::before and ::after
+ * IE8 need to have :before and not ::before
+ * So use only : and not :: if you want to support IE8
+ * IE9 Webkit Firefox Opera understand ::
+ */
+/**
+ * Form element inline mixin
+ * This mixin allow you to have a label inline with your input
+ * It's simply based on inline-block behavior
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Vertical alignement for page
+ * Inspired by http://css-tricks.com/snippets/css/center-div-with-dynamic-height/
+ *
+ * Usage:
+ *
+ * SCSS
+ * @include vertical-align-requirement;
+ * .v-align-container { @include vertical-align-container }
+ * .v-align-content-container { @include vertical-align-content-container }
+ * .v-align-content { @include vertical-align-content }
+ *
+ * HTML
+ * <body>
+ * <div class="v-align-container">
+ * <div class="v-align-content-container">
+ * <div class="v-align-content">
+ * Your content !
+ * </div>
+ * </div>
+ * </div>
+ * </body>
+ *
+ * @thanks Chris Coyier @chriscoyier
+ * @autor Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Media Queries Mixins
+ *
+ * @todo Do we have to take care of print ?
+ *
+ * @require sass-3.2 (you need eventually to do "sudo gem install sass --pre")
+ * @author Maxime Thirouin <maxime.thirouin@gmail.com>
+ */
+/*
+$media-query-width-big: 1280px;
+$media-query-width-medium: 960px;
+$media-query-width-small: 480px;
+*/
+/**
+ * Drop shadow mixins from Nicolas Gallagher demo
+ *
+ * @thanks Nicolas Gallagher @necolas, @simurai, @cameronmoll, @matthamm
+ *
+ * @link http://nicolasgallagher.com/css-drop-shadows-without-images/demo/
+ */
+/**
+ * Drop shadow curled
+ *
+ * @thanks Nicolas Gallagher @necolas
+ * @link http://nicolasgallagher.com/css-drop-shadows-without-images/demo/
+ */
+/**
+ * Drop shadow curved
+ *
+ * @thanks Nicolas Gallagher @necolas
+ * @link http://nicolasgallagher.com/css-drop-shadows-without-images/demo/
+ */
+/**
+ * Drop shadow flying
+ *
+ * @thanks Geoffrey Crofte @geoffrey_crofte
+ * @link http://www.creativejuiz.fr/trytotry/css3-box-shadow-after-before/
+ */
+/**
+ * Drop shadow w/ lifted corners
+ *
+ * @thanks Nicolas Gallagher @necolas
+ * @link http://nicolasgallagher.com/css-drop-shadows-without-images/demo/
+ */
+/**
+ * Drop shadow w/ perspective
+ *
+ * @thanks Nicolas Gallagher @necolas
+ * @link http://nicolasgallagher.com/css-drop-shadows-without-images/demo/
+ */
+/**
+ * Drop shadow raised
+ *
+ * @thanks Nicolas Gallagher @necolas
+ * @link http://nicolasgallagher.com/css-drop-shadows-without-images/demo/
+ */
+/**
+ * Drop shadow rules required for transform on drop shadow
+ *
+ * /!\ This is required if you want to apply some transform on the element using drop shadow
+ *
+ * @thanks Nicolas Gallagher @necolas
+ * @link http://nicolasgallagher.com/css-drop-shadows-without-images/demo/
+ */
+/**
+ * Shadow along the top edge of the browser viewport
+ *
+ * @link http://playground.genelocklin.com/depth/
+ */
+/**
+* Shapes !
+* Polygons, ellipses and symbols
+*
+* @thanks Chris Coyier @chriscoyier
+* @link http://css-tricks.com/examples/ShapesOfCSS/
+* @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+*/
+/**
+ * Shape/Ellipse
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Polygon
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Polygon/Hexagon
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Polygon/Octagon
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Polygon/Parallelogram
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Polygon/Pentagon
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Polygon/Rectangle
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Polygon/Rhombus
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Polygon/Square
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Polygon/Star
+ *
+ * @todo check if setting a z-index by default is a good thing
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Polygon/Trapezoid
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Polygon/Triangle
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Symbol
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Symbol/Diamond
+ *
+ * @todo add height support
+ *
+ * @author Alexander Futekov
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Symbol/Egg
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Symbol/Heart
+ *
+ * @author Nicolas Gallagher @necolas
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Symbol/Infinity
+ *
+ * @author Nicolas Gallagher @necolas
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Symbol/Pacman
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Symbol/Yin-yang
+ *
+ * @author Alexander Futekov
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Micro clearfix hack
+ *
+ * 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.
+ * Known support: Firefox 2+, Safari 2+, Chrome, Opera 9.27+, IE 6+, IE Mac.
+ *
+ * @thanks Nicolas Gallagher @necolas
+ * @link http://nicolasgallagher.com/micro-clearfix-hack/
+ */
+/**
+ * Note IE7/6 doesn't understand pseudo element as ::before and ::after
+ * IE8 need to have :before and not ::before
+ * So use only : and not :: if you want to support IE8
+ * IE9 Webkit Firefox Opera understand ::
+ */
+/**
+ * UI convex effect from one color
+ *
+ * @todo merge with ui-button ?
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * UI Glossy helper
+ *
+ * @deprecated
+ * @todo Remove in 0.4
+ * @see background/gradients
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * UI simple gradient from one color
+ *
+ * @todo merge with ui-button ?
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Shape/Polygon/Triangle
+ *
+ * @author Maxime Thirouin maxime.thirouin@gmail.com @MoOx
+ */
+/**
+ * Keyboard key touch
+ * A simple stylesheet for rendering beautiful keyboard-style elements.
+
+ * @author Michael Hüneburg http://michaelhue.com/keyscss
+ * @link https://github.com/michaelhue/keyscss (commit 76bb603e921d0145362e0f60eabb79d4f69cbda0)
+ *
+ * @author Maxime Thirouin @MoOx maxime.thirouin@gmail.com
+*/
+/**
+ * Menu dropdown helper
+ *
+ * @author Maxime Thirouin @MoOx maxime.thirouin@gmail.com
+*/
+/**
+ * Ui background overlay inspired by Google Chrome modal overlay
+ *
+ * @author Maxime Thirouin @MoOx maxime.thirouin@gmail.com
+ */
+/**
+ * Background overlay inspired by Google Chrome modal overlay
+ *
+ * @author Maxime Thirouin @MoOx maxime.thirouin@gmail.com
+ */
+/**
+ * <hr /> separator style
+ *
+ * @author Chris Coyier @chriscoyier
+ * @link http://jsfiddle.net/chriscoyier/GaEzp/35/
+ *
+ * @author Maxime Thirouin @MoOx maxime.thirouin@gmail.com
+ */
+/**
+ * Micro clearfix hack
+ *
+ * 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.
+ * Known support: Firefox 2+, Safari 2+, Chrome, Opera 9.27+, IE 6+, IE Mac.
+ *
+ * @thanks Nicolas Gallagher @necolas
+ * @link http://nicolasgallagher.com/micro-clearfix-hack/
+ */
+/**
+ * Note IE7/6 doesn't understand pseudo element as ::before and ::after
+ * IE8 need to have :before and not ::before
+ * So use only : and not :: if you want to support IE8
+ * IE9 Webkit Firefox Opera understand ::
+ */
+/**
+ *
+ * @class Gradients
+ * @author David Kaneda http://www.davidkaneda.com/
+ *
+ */
+/**
+ * Adds a background gradient into a specified selector.
+ *
+ * @include background-gradient(#444, 'glossy');
+ *
+ * You can also use color-stops if you want full control of the gradient:
+ *
+ * @include background-gradient(#444, color-stops(#333, #222, #111));
+ *
+ * @param {color} $bg-color
+ * The base color of the gradient.
+ *
+ * @param {string/list} $type
+ * The style of the gradient, one of five pre-defined options: matte, bevel, glossy, recessed, or linear:
+ *
+ * @include background-gradient(red, 'glossy');
+ *
+ * It can also accept a list of color-stop values:;
+ *
+ * @include background-gradient(black, color-stops(#333, #111, #000));
+ *
+ * @param {string} $direction
+ * The direction of the gradient.
+ */
+/**
+ * @class Webfont Icon
+ * Great to use with the [Pictos font](http://pictos.drewwilson.com/)
+ *
+ */
+/**
+ * @cfg {color} $webfont-icon-base-color
+ * The default color of icons when using the {@link #webfont-icon} mixin.
+ *
+ * Defaults to `white`.
+ */
+/**
+ * @cfg {color} $webfont-icon-default-stroke
+ * The default color to use on the border of icons, when using the {@link #webfont-icon} mixin.
+ *
+ * Defaults to `null`.
+ */
+/**
+ * @cfg {string} $webfont-icon-default-gradient
+ * The default gradient to use when using the {@link #webfont-icon} mixin.
+ *
+ * Defaults to `matte`.
+ */
+/* line 41, ../compass-recipes/stylesheets/recipes/_webfont-icon.scss */
+.webfont-icon-base {
+ color: transparent;
+ -webkit-background-clip: text;
+ background-clip: text;
+ position: absolute;
+ top: 0;
+ left: 0;
+ text-indent: 0;
+ text-shadow: none;
+ -webkit-user-select: none;
+ user-select: none;
+}
+/**
+ * Includes a character into the specified selector, styled as an icon.
+ *
+ * @include webfont-icon('a');
+ *
+ * @param {color} $color
+ * The color of the icon. Defaults to {@link #$webfont-icon-default-background $webfont-icon-default-background}.
+ *
+ * @param {measurement} $size
+ * The size of the icon
+ *
+ * @param {color} $stroke
+ * The color of the border. Defautls to {@link #$webfont-icon-default-border $webfont-icon-default-border}.
+ *
+ * @param {boolean} $include-staes
+ * True to include states for hover and active. Defaults to `true`.
+ */
+/* line 1, ../scss/include/_base.scss */
+* {
+ margin: 0;
+ padding: 0;
+}
+/* line 6, ../scss/include/_base.scss */
+body {
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+ -webkit-touch-callout: none;
+}
+/* line 11, ../scss/include/_base.scss */
+#jqt {
+ -webkit-text-size-adjust: none;
+ -webkit-user-select: none;
+ user-select: none;
+ font-family: "Helvetica Neue", Helvetica;
+ position: absolute;
+ right: 0;
+ top: 0;
+ left: 0;
+ bottom: 0;
+}
+/* line 21, ../scss/include/_base.scss */
+#jqt a {
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+ -webkit-user-drag: none;
+}
+/* line 26, ../scss/include/_base.scss */
+#jqt .selectable,
+#jqt input,
+#jqt textarea {
+ -webkit-user-select: auto;
+}
+/* line 30, ../scss/include/_base.scss */
+#jqt.notransform {
+ -webkit-transform: none !important;
+}
+/* line 35, ../scss/include/_base.scss */
+#jqt > * {
+ display: block;
+ left: 0;
+ top: 0;
+ min-height: 100%;
+ width: 100%;
+ overflow-x: hidden;
+ position: absolute;
+ z-index: 0;
+ display: -webkit-box;
+ display: box;
+ -webkit-box-orient: vertical;
+ box-orient: vertical;
+ -webkit-box-flex: 1;
+ box-flex: 1;
+}
+/* line 49, ../scss/include/_base.scss */
+#jqt > .current {
+ z-index: 10;
+}
+/* line 53, ../scss/include/_base.scss */
+#jqt > :not(.current) {
+ display: none;
+}
+/* line 57, ../scss/include/_base.scss */
+#jqt.touchscroll:not(.animating3d) {
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+}
+/* line 61, ../scss/include/_base.scss */
+#jqt.touchscroll:not(.animating3d) > * {
+ height: 100%;
+}
+/* line 64, ../scss/include/_base.scss */
+#jqt.touchscroll:not(.animating3d) .scroll {
+ position: relative;
+ -webkit-box-flex: 1;
+ box-flex: 1;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+}
+/* line 72, ../scss/include/_base.scss */
+#jqt .scroll {
+ -webkit-margin-collapse: separate;
+}
+/* line 76, ../scss/include/_base.scss */
+#jqt .in,
+#jqt .out {
+ -webkit-animation-duration: 250ms;
+ -webkit-animation-fill-mode: both;
+ -webkit-animation-timing-function: ease-in-out;
+}
+/* line 82, ../scss/include/_base.scss */
+#jqt .in {
+ z-index: 10;
+}
+/* line 85, ../scss/include/_base.scss */
+#jqt .in:after {
+ content: "";
+ position: absolute;
+ display: block;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+}
+/* line 94, ../scss/include/_base.scss */
+#jqt .out {
+ z-index: 0 !important;
+}
+/* line 98, ../scss/include/_base.scss */
+#jqt.supports3d {
+ -webkit-perspective: 1000;
+}
+/* line 101, ../scss/include/_base.scss */
+#jqt.supports3d > * {
+ -webkit-transform: translate3d(0, 0, 0) rotate(0) scale(1);
+}
+/* Fade */
+/* line 3, ../scss/include/_animations.scss */
+#jqt .fade.in {
+ -webkit-animation-name: fadeIn;
+}
+/* line 7, ../scss/include/_animations.scss */
+#jqt .fade.out {
+ z-index: 10;
+ -webkit-animation-name: fadeOut;
+}
+@-webkit-keyframes fadeIn {
+ /* line 13, ../scss/include/_animations.scss */
+ 0% {
+ opacity: 0;
+ }
+ /* line 16, ../scss/include/_animations.scss */
+ 100% {
+ opacity: 1;
+ }
+}
+@-webkit-keyframes fadeOut {
+ /* line 22, ../scss/include/_animations.scss */
+ 0% {
+ opacity: 1;
+ }
+ /* line 25, ../scss/include/_animations.scss */
+ 100% {
+ opacity: 1;
+ }
+}
+/* Disolve */
+/* line 34, ../scss/include/_animations.scss */
+#jqt .dissolve.in {
+ -webkit-animation-name: dissolveIn;
+}
+/* line 38, ../scss/include/_animations.scss */
+#jqt .dissolve.out {
+ -webkit-animation-name: dissolveOut;
+}
+@-webkit-keyframes dissolveIn {
+ /* line 43, ../scss/include/_animations.scss */
+ 0% {
+ opacity: 0;
+ }
+ /* line 46, ../scss/include/_animations.scss */
+ 100% {
+ opacity: 1;
+ }
+}
+@-webkit-keyframes dissolveOut {
+ /* line 52, ../scss/include/_animations.scss */
+ 0% {
+ opacity: 1;
+ }
+ /* line 55, ../scss/include/_animations.scss */
+ 100% {
+ opacity: 0;
+ }
+}
+/* #Popin' */
+/* line 64, ../scss/include/_animations.scss */
+#jqt .pop.in {
+ -webkit-animation-name: popIn;
+}
+/* line 68, ../scss/include/_animations.scss */
+#jqt .pop.out {
+ -webkit-animation-name: popOut;
+}
+@-webkit-keyframes popIn {
+ /* line 73, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: scale(0.2);
+ opacity: 0;
+ }
+ /* line 77, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: scale(1);
+ opacity: 1;
+ }
+}
+@-webkit-keyframes popOut {
+ /* line 84, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: scale(1);
+ opacity: 1;
+ }
+ /* line 88, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: scale(0.2);
+ opacity: 0;
+ }
+}
+/* Slide Left */
+/* line 98, ../scss/include/_animations.scss */
+#jqt .slideleft.in {
+ -webkit-animation-name: slideLeftIn;
+}
+/* line 102, ../scss/include/_animations.scss */
+#jqt .slideleft.out {
+ -webkit-animation-name: slideLeftOut;
+}
+@-webkit-keyframes slideLeftIn {
+ /* line 107, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: translateX(100%);
+ }
+ /* line 110, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: translateX(0);
+ }
+}
+@-webkit-keyframes slideLeftOut {
+ /* line 116, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: translateX(0px);
+ }
+ /* line 119, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: translateX(-100%);
+ }
+}
+/* Slide Right */
+/* line 128, ../scss/include/_animations.scss */
+#jqt .slideright.in {
+ -webkit-animation-name: slideRightIn;
+}
+/* line 132, ../scss/include/_animations.scss */
+#jqt .slideright.out {
+ -webkit-animation-name: slideRightOut;
+}
+@-webkit-keyframes slideRightIn {
+ /* line 137, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: translateX(-100%);
+ }
+ /* line 140, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: translateX(0);
+ }
+}
+@-webkit-keyframes slideRightOut {
+ /* line 146, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: translateX(0);
+ }
+ /* line 149, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: translateX(100%);
+ }
+}
+/* Slide Up */
+/* line 158, ../scss/include/_animations.scss */
+#jqt .slideup.in {
+ z-index: 10;
+ -webkit-animation-name: slideUpIn;
+}
+/* line 162, ../scss/include/_animations.scss */
+#jqt .slideup.out {
+ z-index: 0;
+ -webkit-animation-name: slideUpOut;
+}
+@-webkit-keyframes slideUpIn {
+ /* line 168, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: translateY(100%);
+ }
+ /* line 171, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: translateY(0);
+ }
+}
+@-webkit-keyframes slideUpOut {
+ /* line 177, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: translateY(0);
+ }
+ /* line 180, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: translateY(0);
+ }
+}
+/* Slide Down */
+/* line 189, ../scss/include/_animations.scss */
+#jqt .slidedown.in {
+ z-index: 0;
+ -webkit-animation-name: slideDownIn;
+}
+/* line 193, ../scss/include/_animations.scss */
+#jqt .slidedown.out {
+ z-index: 10;
+ -webkit-animation-name: slideDownOut;
+}
+@-webkit-keyframes slideDownIn {
+ /* line 199, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: translateY(0);
+ }
+ /* line 202, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: translateY(0);
+ }
+}
+@-webkit-keyframes slideDownOut {
+ /* line 208, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: translateY(0);
+ }
+ /* line 211, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: translateY(100%);
+ }
+}
+/* Flip Left */
+/* line 220, ../scss/include/_animations.scss */
+#jqt .flipleft {
+ -webkit-backface-visibility: hidden;
+}
+/* line 224, ../scss/include/_animations.scss */
+#jqt .flipleft.in {
+ -webkit-animation-name: flipLeftIn;
+}
+/* line 228, ../scss/include/_animations.scss */
+#jqt .flipleft.out {
+ -webkit-animation-name: flipLeftOut;
+}
+@-webkit-keyframes flipLeftIn {
+ /* line 233, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: rotateY(180deg) scale(0.8);
+ }
+ /* line 236, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: rotateY(0deg) scale(1);
+ }
+}
+@-webkit-keyframes flipLeftOut {
+ /* line 242, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: rotateY(0deg) scale(1);
+ }
+ /* line 245, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: rotateY(-180deg) scale(0.8);
+ }
+}
+/* Flip Right */
+/* line 254, ../scss/include/_animations.scss */
+#jqt .flipright {
+ -webkit-backface-visibility: hidden;
+}
+/* line 258, ../scss/include/_animations.scss */
+#jqt .flipright.in {
+ -webkit-animation-name: flipRightIn;
+}
+/* line 262, ../scss/include/_animations.scss */
+#jqt .flipright.out {
+ -webkit-animation-name: flipRightOut;
+}
+@-webkit-keyframes flipRightIn {
+ /* line 267, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: rotateY(-180deg) scale(0.8);
+ }
+ /* line 270, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: rotateY(0deg) scale(1);
+ }
+}
+@-webkit-keyframes flipRightOut {
+ /* line 276, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: rotateY(0deg) scale(1);
+ }
+ /* line 279, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: rotateY(180deg) scale(0.8);
+ }
+}
+/* Swap Right */
+/* line 288, ../scss/include/_animations.scss */
+#jqt .swapright {
+ -webkit-animation-duration: .7s;
+ -webkit-transform: perspective(800);
+ -webkit-animation-timing-function: ease-out;
+}
+/* line 293, ../scss/include/_animations.scss */
+#jqt .swapright.in {
+ -webkit-animation-name: swapRightIn;
+}
+/* line 296, ../scss/include/_animations.scss */
+#jqt .swapright.out {
+ -webkit-animation-name: swapRightOut;
+}
+@-webkit-keyframes swapRightIn {
+ /* line 301, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: translate3d(0px, 0px, -800px) rotateY(70deg);
+ opacity: 0;
+ }
+ /* line 305, ../scss/include/_animations.scss */
+ 35% {
+ -webkit-transform: translate3d(-180px, 0px, -400px) rotateY(20deg);
+ opacity: 1;
+ }
+ /* line 309, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: translate3d(0px, 0px, 0px) rotateY(0deg);
+ opacity: 1;
+ }
+}
+@-webkit-keyframes swapRightOut {
+ /* line 316, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: translate3d(0px, 0px, 0px) rotateY(0deg);
+ opacity: 1;
+ }
+ /* line 320, ../scss/include/_animations.scss */
+ 35% {
+ -webkit-transform: translate3d(180px, 0px, -400px) rotateY(-20deg);
+ opacity: .5;
+ }
+ /* line 324, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: translate3d(0px, 0px, -800px) rotateY(-70deg);
+ opacity: 0;
+ }
+}
+/* Swap Left */
+/* line 332, ../scss/include/_animations.scss */
+#jqt .swapleft {
+ -webkit-animation-duration: .7s;
+ -webkit-transform: perspective(800);
+ -webkit-animation-timing-function: ease-out;
+}
+/* line 337, ../scss/include/_animations.scss */
+#jqt .swapleft.in {
+ -webkit-animation-name: swapLeftIn;
+}
+/* line 340, ../scss/include/_animations.scss */
+#jqt .swapleft.out {
+ -webkit-animation-name: swapLeftOut;
+}
+@-webkit-keyframes swapLeftIn {
+ /* line 345, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: translate3d(0px, 0px, -800px) rotateY(-70deg);
+ opacity: 0;
+ }
+ /* line 349, ../scss/include/_animations.scss */
+ 35% {
+ -webkit-transform: translate3d(180px, 0px, -400px) rotateY(-20deg);
+ opacity: 1;
+ }
+ /* line 353, ../scss/include/_animations.scss */
+ 100% {
+ opacity: 1;
+ -webkit-transform: translate3d(0px, 0px, 0px) rotateY(0deg);
+ }
+}
+@-webkit-keyframes swapLeftOut {
+ /* line 360, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: translate3d(0px, 0px, 0px) rotateY(0deg);
+ opacity: 1;
+ }
+ /* line 364, ../scss/include/_animations.scss */
+ 35% {
+ -webkit-transform: translate3d(-180px, 0px, -400px) rotateY(20deg);
+ opacity: .5;
+ }
+ /* line 368, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: translate3d(0px, 0px, -800px) rotateY(70deg);
+ opacity: 0;
+ }
+}
+/* Cube Left */
+/* line 382, ../scss/include/_animations.scss */
+#jqt .cubeleft.in,
+#jqt .cubeleft.out,
+#jqt .cuberight.in,
+#jqt .cuberight.out {
+ -webkit-animation-duration: .6s;
+ -webkit-transform: perspective(800);
+}
+/* line 389, ../scss/include/_animations.scss */
+#jqt .cubeleft.in {
+ -webkit-transform-origin: 0% 50%;
+ -webkit-animation-name: cubeLeftIn;
+}
+/* line 394, ../scss/include/_animations.scss */
+#jqt .cubeleft.out {
+ -webkit-transform-origin: 100% 50%;
+ -webkit-animation-name: cubeLeftOut;
+}
+@-webkit-keyframes cubeLeftIn {
+ /* line 400, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: rotateY(90deg) translateZ(320px);
+ opacity: .5;
+ }
+ /* line 404, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: rotateY(0deg) translateZ(0) translateX(0);
+ opacity: 1;
+ }
+}
+@-webkit-keyframes cubeLeftOut {
+ /* line 411, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: rotateY(0deg) translateZ(0) translateX(0);
+ opacity: 1;
+ }
+ /* line 415, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: rotateY(-90deg) translateZ(320px);
+ opacity: .5;
+ }
+}
+/* Cube Right */
+/* line 423, ../scss/include/_animations.scss */
+#jqt .cuberight.in {
+ -webkit-transform-origin: 100% 50%;
+ -webkit-animation-name: cubeRightIn;
+}
+/* line 428, ../scss/include/_animations.scss */
+#jqt .cuberight.out {
+ -webkit-transform-origin: 0% 50%;
+ -webkit-animation-name: cubeRightOut;
+}
+@-webkit-keyframes cubeRightIn {
+ /* line 434, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: rotateY(-90deg) translateZ(320px);
+ opacity: .5;
+ }
+ /* line 438, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: rotateY(0deg) translateZ(0) translateX(0);
+ opacity: 1;
+ }
+}
+@-webkit-keyframes cubeRightOut {
+ /* line 445, ../scss/include/_animations.scss */
+ 0% {
+ -webkit-transform: rotateY(0deg) translateZ(0) translateX(0);
+ opacity: 1;
+ }
+ /* line 449, ../scss/include/_animations.scss */
+ 100% {
+ -webkit-transform: rotateY(90deg) translateZ(320px);
+ opacity: .5;
+ }
+}
+/* line 5, ../scss/include/_skeleton.scss */
+body {
+ background: black;
+}
+/* line 9, ../scss/include/_skeleton.scss */
+.base-chevron,
+#jqt ul li.arrow:after,
+#jqt ul li.forward:after {
+ content: '›';
+ width: 22px;
+ height: 100%;
+ vertical-align: middle;
+ font-size: 30px;
+ line-height: 38px;
+ font-family: Futura, "Futura Condensed", Helvetica, Arial, sans-serif;
+ font-weight: bold;
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);
+ opacity: 0.6;
+ position: absolute;
+ right: 0;
+ top: 0;
+ pointer-events: none;
+ z-index: 10;
+}
+/* line 26, ../scss/include/_skeleton.scss */
+.base-flatlists,
+#jqt ul.metal,
+#jqt ul.edgetoedge,
+#jqt ul.plastic {
+ margin: 0;
+ padding: 0;
+ border-width: 0 0 0 1px;
+ -webkit-border-radius: 0;
+ border-radius: 0;
+}
+/* line 35, ../scss/include/_skeleton.scss */
+#jqt h1,
+#jqt h2 {
+ font: bold 18px "Helvetica Neue", Helvetica;
+ margin: 10px 20px 6px;
+ color: #bbbcbe;
+ text-shadow: #3c3d3e 0 -1px 0;
+}
+/* line 41, ../scss/include/_skeleton.scss */
+#jqt .toolbar {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-box-shadow: rgba(0, 0, 0, 0.4) 0 1px 6px;
+ box-shadow: rgba(0, 0, 0, 0.4) 0 1px 6px;
+ border-bottom: 1px solid black;
+ z-index: 10;
+ position: relative;
+ padding: 10px;
+ height: 44px;
+}
+/* line 52, ../scss/include/_skeleton.scss */
+#jqt .toolbar > h1 {
+ position: absolute;
+ overflow: hidden;
+ left: 50%;
+ bottom: 9px;
+ margin: 1px 0 0 -75px;
+ width: 150px;
+ font-size: 20px;
+ font-weight: bold;
+ line-height: 1.3em;
+ text-align: center;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ color: white;
+ text-shadow: #161717 0 -1px 0;
+}
+/* line 71, ../scss/include/_skeleton.scss */
+#jqt.black-translucent .toolbar {
+ padding-top: 30px;
+ height: 64px;
+}
+/* line 75, ../scss/include/_skeleton.scss */
+#jqt.landscape .toolbar > h1 {
+ margin-left: -125px;
+ width: 250px;
+}
+/* line 80, ../scss/include/_skeleton.scss */
+#jqt .button,
+#jqt .back,
+#jqt .cancel,
+#jqt .add {
+ position: absolute;
+ overflow: hidden;
+ width: auto;
+ height: 30px;
+ font-family: inherit;
+ font-size: 12px;
+ font-weight: bold;
+ line-height: 30px;
+ text-overflow: ellipsis;
+ text-decoration: none;
+ white-space: nowrap;
+ background: none;
+ bottom: 6px;
+ right: 10px;
+ margin: 0;
+ padding: 0 10px;
+ color: #e2e3e3;
+ text-shadow: #000000 0 -1px 0;
+ -webkit-box-shadow: rgba(255, 255, 255, 0.2) 0 1px 0, rgba(0, 0, 0, 0.2) 0 1px 2px inset;
+ box-shadow: rgba(255, 255, 255, 0.2) 0 1px 0, rgba(0, 0, 0, 0.2) 0 1px 2px inset;
+ border: 1px solid black;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+ background-image: none;
+ background-color: #0a0a0a;
+ 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));
+ background-image: -webkit-linear-gradient(top, #2f3031, #161717 50%, #0a0a0a 51%, #000000);
+ background-image: linear-gradient(top, #2f3031, #161717 50%, #0a0a0a 51%, #000000);
+}
+/* line 107, ../scss/include/_skeleton.scss */
+#jqt .button.active,
+#jqt .back.active,
+#jqt .cancel.active,
+#jqt .add.active {
+ border-color: black;
+ background-image: none;
+ background-color: black;
+ 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));
+ background-image: -webkit-linear-gradient(top, #262627, #0d0d0d 50%, #000000 51%, #000000);
+ background-image: linear-gradient(top, #262627, #0d0d0d 50%, #000000 51%, #000000);
+ color: #d8d9d9;
+ text-shadow: #000000 0 -1px 0;
+}
+/* line 114, ../scss/include/_skeleton.scss */
+#jqt .back {
+ max-width: 60px;
+ margin-left: 15px;
+ overflow: visible;
+ padding-left: 5px;
+}
+/* line 121, ../scss/include/_skeleton.scss */
+#jqt .back:after,
+#jqt .back:before {
+ content: '';
+ position: absolute;
+ width: 20px;
+ height: 20px;
+ top: 1px;
+ left: 1px;
+ -webkit-transform: rotate(45deg) translate3d(0.2px, 0, 0);
+ transform: rotate(45deg) translate3d(0.2px, 0, 0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ background-image: none;
+ background-color: #0a0a0a;
+ 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));
+ background-image: -webkit-linear-gradient(top left, #2f3031, #161717 50%, #0a0a0a 51%, #000000);
+ background-image: linear-gradient(top left, #2f3031, #161717 50%, #0a0a0a 51%, #000000);
+ background-size: 100% 98%;
+ -webkit-border-radius: 0 0 0 2px;
+ border-radius: 0 0 0 2px;
+ -webkit-mask-image: -webkit-linear-gradient(45deg, #000000, #000000 15px, rgba(0, 0, 0, 0) 15px);
+ -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)));
+ -webkit-mask-clip: border-box;
+ -webkit-background-clip: content-box;
+}
+/* line 149, ../scss/include/_skeleton.scss */
+#jqt .back:after {
+ -webkit-box-shadow: rgba(0, 0, 0, 0.2) 1px 0 0 inset, rgba(0, 0, 0, 0.2) 0 -1px 0 inset;
+ box-shadow: rgba(0, 0, 0, 0.2) 1px 0 0 inset, rgba(0, 0, 0, 0.2) 0 -1px 0 inset;
+}
+/* line 152, ../scss/include/_skeleton.scss */
+#jqt .back:before {
+ margin-left: -1px;
+ background: black none;
+}
+/* line 157, ../scss/include/_skeleton.scss */
+#jqt .back.active:after {
+ background-image: none;
+ background-color: black;
+ 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));
+ background-image: -webkit-linear-gradient(left top, #262627, #0d0d0d 50%, #000000 51%, #000000);
+ background-image: linear-gradient(left top, #262627, #0d0d0d 50%, #000000 51%, #000000);
+}
+/* line 160, ../scss/include/_skeleton.scss */
+#jqt .back.active:before {
+ background-color: black;
+}
+/* line 166, ../scss/include/_skeleton.scss */
+#jqt .blueButton {
+ background-image: #2f7ce3, glossy;
+ color: white;
+ text-shadow: #1a63c5 0 -1px 0;
+}
+/* line 170, ../scss/include/_skeleton.scss */
+#jqt .whiteButton,
+#jqt .grayButton,
+#jqt .redButton,
+#jqt .blueButton,
+#jqt .greenButton {
+ display: block;
+ font-size: 20px;
+ font-weight: bold;
+ margin: 10px 20px;
+ padding: 10px;
+ text-align: center;
+ text-decoration: inherit;
+ -webkit-border-radius: 8px;
+ border-radius: 8px;
+ -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;
+ 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;
+}
+/* line 185, ../scss/include/_skeleton.scss */
+#jqt .whiteButton.active,
+#jqt .whiteButton:active,
+#jqt .grayButton.active,
+#jqt .grayButton:active,
+#jqt .redButton.active,
+#jqt .redButton:active,
+#jqt .blueButton.active,
+#jqt .blueButton:active,
+#jqt .greenButton.active,
+#jqt .greenButton:active {
+ background-image: none;
+ background-color: #3c8101;
+ 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));
+ background-image: -webkit-linear-gradient(top, #5fcd01, #479b01 50%, #3c8101 51%, #306801);
+ background-image: linear-gradient(top, #5fcd01, #479b01 50%, #3c8101 51%, #306801);
+ color: white;
+ text-shadow: #244f00 0 -1px 0;
+}
+/* line 191, ../scss/include/_skeleton.scss */
+#jqt .whiteButton {
+ background-image: none;
+ background-color: #eeeeee;
+ 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));
+ background-image: -webkit-linear-gradient(top, #ffffff, #fbfbfb 50%, #eeeeee 51%, #e1e1e1);
+ background-image: linear-gradient(top, #ffffff, #fbfbfb 50%, #eeeeee 51%, #e1e1e1);
+ color: #151515;
+ text-shadow: white 0 1px 0;
+}
+/* line 195, ../scss/include/_skeleton.scss */
+#jqt .grayButton {
+ background-image: none;
+ background-color: #444444;
+ 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));
+ background-image: -webkit-linear-gradient(top, #6a6a6a, #515151 50%, #444444 51%, #373737);
+ background-image: linear-gradient(top, #6a6a6a, #515151 50%, #444444 51%, #373737);
+ color: white;
+ text-shadow: #2b2b2b 0 -1px 0;
+}
+/* line 200, ../scss/include/_skeleton.scss */
+#jqt .redButton {
+ background-image: none;
+ background-color: #d83b38;
+ 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));
+ background-image: -webkit-linear-gradient(top, #e57a78, #dc504d 50%, #d83b38 51%, #ce2c28);
+ background-image: linear-gradient(top, #e57a78, #dc504d 50%, #d83b38 51%, #ce2c28);
+ color: white;
+ text-shadow: #b92724 0 -1px 0;
+}
+/* line 204, ../scss/include/_skeleton.scss */
+#jqt .redButton.active,
+#jqt .redButton:active {
+ background-image: none;
+ background-color: #c12926;
+ 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));
+ background-image: -webkit-linear-gradient(top, #de5856, #d52e2b 50%, #c12926 51%, #ac2422);
+ background-image: linear-gradient(top, #de5856, #d52e2b 50%, #c12926 51%, #ac2422);
+ color: white;
+ text-shadow: #97201e 0 -1px 0;
+}
+/* line 211, ../scss/include/_skeleton.scss */
+#jqt .greenButton {
+ background-image: none;
+ background-color: #53b401;
+ 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));
+ background-image: -webkit-linear-gradient(top, #76fe04, #5fcd01 50%, #53b401 51%, #479b01);
+ background-image: linear-gradient(top, #76fe04, #5fcd01 50%, #53b401 51%, #479b01);
+ color: white;
+ text-shadow: #3c8101 0 -1px 0;
+}
+/* line 216, ../scss/include/_skeleton.scss */
+#jqt .leftButton,
+#jqt .cancel,
+#jqt .back {
+ left: 6px;
+ right: auto;
+}
+/* line 221, ../scss/include/_skeleton.scss */
+#jqt .add {
+ font-size: 24px;
+ line-height: 24px;
+ font-weight: bold;
+}
+/* line 229, ../scss/include/_skeleton.scss */
+#jqt ul {
+ padding: 0;
+ margin: 5px 10px 10px 10px;
+ -webkit-margin-collapse: separate;
+}
+/* line 231, ../scss/include/_skeleton.scss */
+#jqt ul,
+#jqt ul.individual li {
+ background-color: #555658;
+ color: #d5d6d7;
+ text-shadow: #3c3d3e 0 -1px 0;
+ border: 1px solid #2f3031;
+ font: bold 18px "Helvetica Neue", Helvetica;
+}
+/* line 240, ../scss/include/_skeleton.scss */
+#jqt ul:first-child {
+ margin-top: 15px;
+}
+/* line 246, ../scss/include/_skeleton.scss */
+#jqt ul li {
+ border-top: 1px solid #48494b;
+ list-style-type: none;
+ overflow: hidden;
+ padding: 10px;
+ -webkit-transform: translate3d(0, 0, 0);
+ /* expensive way to avoid flickr */
+
+}
+/* line 253, ../scss/include/_skeleton.scss */
+#jqt ul li a {
+ text-decoration: none;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+ display: block;
+ padding: 10px;
+ margin: -10px;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+ -webkit-transform: translateZ(0);
+ color: white;
+ text-shadow: #3c3d3e 0 -1px 0;
+}
+/* line 265, ../scss/include/_skeleton.scss */
+#jqt ul li a.active {
+ background-image: none;
+ background-color: #53b401;
+ -webkit-box-shadow: #5cc801 0 1px 0px inset;
+ box-shadow: #5cc801 0 1px 0px inset;
+ color: white;
+ text-shadow: #3c8101 0 -1px 0;
+}
+/* line 270, ../scss/include/_skeleton.scss */
+#jqt ul li a.active small {
+ color: #a0fe50;
+ text-shadow: #000000 0 -1px 0;
+}
+/* line 271, ../scss/include/_skeleton.scss */
+#jqt ul li a.active small.counter {
+ background-color: #306801;
+}
+/* line 280, ../scss/include/_skeleton.scss */
+#jqt ul li small {
+ color: #53b401;
+ font: 16px "Helvetica Neue", Helvetica;
+ text-align: right;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+ display: block;
+ width: 23%;
+ position: relative;
+ z-index: 20;
+ float: right;
+ line-height: 16px;
+ padding: 2px 8px 4px 8px;
+}
+/* line 295, ../scss/include/_skeleton.scss */
+#jqt ul li small.counter {
+ background: #2f3031;
+ color: #949698;
+ text-shadow: #0a0a0a 0 -1px 0;
+ z-index: 10;
+ font-size: 16px;
+ font-weight: bold;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ display: block;
+ width: auto;
+}
+/* line 311, ../scss/include/_skeleton.scss */
+#jqt ul li ::-webkit-input-placeholder {
+ color: #949698;
+ text-shadow: #3c3d3e 0 -1px 0;
+}
+/* line 322, ../scss/include/_skeleton.scss */
+#jqt ul li input[type="text"],
+#jqt ul li input[type="password"],
+#jqt ul li input[type="tel"],
+#jqt ul li input[type="number"],
+#jqt ul li input[type="search"],
+#jqt ul li input[type="email"],
+#jqt ul li input[type="url"],
+#jqt ul li textarea,
+#jqt ul li select {
+ color: white;
+ text-shadow: #3c3d3e 0 -1px 0;
+ background: transparent url("data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==");
+ border: 0;
+ font: normal 17px "Helvetica Neue", Helvetica;
+ padding: 0;
+ display: inline-block;
+ margin-left: 0px;
+ width: 100%;
+ -webkit-appearance: textarea;
+}
+/* line 333, ../scss/include/_skeleton.scss */
+#jqt ul li textarea {
+ height: 120px;
+ padding: 0;
+ text-indent: -2px;
+}
+/* line 338, ../scss/include/_skeleton.scss */
+#jqt ul li input[type="checkbox"],
+#jqt ul li input[type="radio"] {
+ margin: 0;
+ padding: 10px;
+}
+/* line 342, ../scss/include/_skeleton.scss */
+#jqt ul li input[type="checkbox"]:after,
+#jqt ul li input[type="radio"]:after {
+ content: attr(title);
+ position: absolute;
+ display: block;
+ width: 0;
+ left: 21px;
+ top: 12px;
+ font-family: "Helvetica Neue", Helvetica;
+ font-size: 17px;
+ line-height: 21px;
+ width: 246px;
+ margin: 0 0 0 17px;
+ color: white;
+ text-shadow: #3c3d3e 0 -1px 0;
+}
+/* line 355, ../scss/include/_skeleton.scss */
+#jqt ul li input[type='submit'] {
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#eeeeee), to(#9c9ea0));
+ border: 1px outset #aaa;
+ display: block;
+ font-size: inherit;
+ font-weight: inherit;
+ padding: 10px;
+}
+/* line 368, ../scss/include/_skeleton.scss */
+#jqt ul li.arrow small,
+#jqt ul li.forward small {
+ margin-right: 24px;
+}
+/* line 380, ../scss/include/_skeleton.scss */
+#jqt ul li.forward:before {
+ content: "";
+ position: absolute;
+ display: block;
+ top: 50%;
+ right: 6px;
+ margin-top: -12px;
+ width: 24px;
+ height: 24px;
+ -webkit-border-radius: 12px;
+ border-radius: 12px;
+ background-image: none;
+ background-color: #53b401;
+ 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));
+ background-image: -webkit-linear-gradient(top, #76fe04, #5fcd01 50%, #53b401 51%, #479b01);
+ background-image: linear-gradient(top, #76fe04, #5fcd01 50%, #53b401 51%, #479b01);
+ border: 2px solid #fff;
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
+ -webkit-box-sizing: border-box;
+ padding: 0;
+ z-index: 10;
+ line-height: 0;
+ pointer-events: none;
+}
+/* line 395, ../scss/include/_skeleton.scss */
+#jqt ul li.forward:after {
+ color: white;
+ text-shadow: #3c8101 0 -1px 0;
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+ opacity: 1;
+ font-size: 24px;
+}
+/* line 404, ../scss/include/_skeleton.scss */
+#jqt ul.rounded,
+#jqt ul.individual li {
+ -webkit-box-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+ box-shadow: rgba(255, 255, 255, 0.15) 0 1px 0;
+ border: 1px solid #2f3031;
+}
+/* line 409, ../scss/include/_skeleton.scss */
+#jqt ul.rounded {
+ -webkit-border-radius: 8px;
+ border-radius: 8px;
+}
+/* line 412, ../scss/include/_skeleton.scss */
+#jqt ul.rounded li:first-child,
+#jqt ul.rounded li:first-child a {
+ border-top: 0;
+ -webkit-border-top-left-radius: 8px;
+ border-top-left-radius: 8px;
+ -webkit-border-top-right-radius: 8px;
+ border-top-right-radius: 8px;
+}
+/* line 416, ../scss/include/_skeleton.scss */
+#jqt ul.rounded li:last-child,
+#jqt ul.rounded li:last-child a {
+ -webkit-border-bottom-left-radius: 8px;
+ border-bottom-left-radius: 8px;
+ -webkit-border-bottom-right-radius: 8px;
+ border-bottom-right-radius: 8px;
+}
+/* line 422, ../scss/include/_skeleton.scss */
+#jqt ul.form li {
+ padding: 7px 10px;
+}
+/* line 425, ../scss/include/_skeleton.scss */
+#jqt ul.form li.error {
+ border: 2px solid red;
+}
+/* line 428, ../scss/include/_skeleton.scss */
+#jqt ul.form li.error + #jqt ul.form li.error {
+ border-top: 0;
+}
+/* line 438, ../scss/include/_skeleton.scss */
+#jqt ul.metal li {
+ background-image: none;
+ border-top: 1px solid #fff;
+ border-bottom: 1px solid #666;
+ font-size: 26px;
+}
+/* line 445, ../scss/include/_skeleton.scss */
+#jqt ul.metal li a {
+ line-height: 26px;
+ margin: 0;
+ padding: 13px 0;
+}
+/* line 451, ../scss/include/_skeleton.scss */
+#jqt ul.metal li em {
+ display: block;
+ font-size: 14px;
+ font-style: normal;
+ width: 50%;
+ line-height: 14px;
+}
+/* line 459, ../scss/include/_skeleton.scss */
+#jqt ul.metal li small {
+ float: right;
+ position: relative;
+ margin-top: 10px;
+ font-weight: bold;
+}
+/* line 473, ../scss/include/_skeleton.scss */
+#jqt ul.edgetoedge li {
+ font-size: 20px;
+}
+/* line 476, ../scss/include/_skeleton.scss */
+#jqt ul.edgetoedge li:first-child {
+ border-top: 0;
+}
+/* line 480, ../scss/include/_skeleton.scss */
+#jqt ul.edgetoedge li.sep {
+ font-size: 16px;
+ padding: 2px 10px;
+}
+/* line 485, ../scss/include/_skeleton.scss */
+#jqt ul.edgetoedge li em {
+ font-weight: normal;
+ font-style: normal;
+}
+/* line 494, ../scss/include/_skeleton.scss */
+#jqt ul.plastic {
+ font-size: 18px;
+}
+/* line 498, ../scss/include/_skeleton.scss */
+#jqt ul.plastic li {
+ border-width: 1px 0;
+ border-style: solid;
+ background-image: none;
+ background-color: #2a2b2c;
+ border-top-color: #2f3031;
+ border-bottom-color: #232324;
+}
+/* line 506, ../scss/include/_skeleton.scss */
+#jqt ul.plastic li:nth-child(odd) {
+ background-image: none;
+ background-color: #2f3031;
+}
+/* line 510, ../scss/include/_skeleton.scss */
+#jqt ul.plastic li a.active.loading {
+ background-image: url(img/loading.gif);
+ background-position: 95% center;
+ background-repeat: no-repeat;
+}
+/* line 515, ../scss/include/_skeleton.scss */
+#jqt ul.plastic li small {
+ color: #949698;
+ font-size: 13px;
+ font-weight: bold;
+ text-transform: uppercase;
+}
+/* line 525, ../scss/include/_skeleton.scss */
+#jqt ul.individual {
+ border: 0;
+ background: none;
+ clear: both;
+ overflow: hidden;
+}
+/* line 531, ../scss/include/_skeleton.scss */
+#jqt ul.individual li {
+ font-size: 14px;
+ text-align: center;
+ -webkit-border-radius: 8px;
+ border-radius: 8px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 48%;
+ float: left;
+ display: block;
+ padding: 11px 10px 14px 10px;
+}
+/* line 541, ../scss/include/_skeleton.scss */
+#jqt ul.individual li + li {
+ float: right;
+}
+/* line 546, ../scss/include/_skeleton.scss */
+#jqt ul.individual a {
+ line-height: 16px;
+ margin: -11px -10px -14px -10px;
+ padding: 11px 10px 14px 10px;
+ -webkit-border-radius: 8px;
+ border-radius: 8px;
+}
+/* line 555, ../scss/include/_skeleton.scss */
+#jqt .toggle {
+ width: 94px;
+ position: relative;
+ height: 27px;
+ display: block;
+ overflow: hidden;
+ float: right;
+}
+/* line 563, ../scss/include/_skeleton.scss */
+#jqt .toggle input[type="checkbox"] {
+ margin: 0;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+ height: 27px;
+ overflow: hidden;
+ width: 149px;
+ border: 0;
+ -webkit-transition: left 0.15s ease-in-out;
+ transition: left 0.15s ease-in-out;
+ position: absolute;
+ top: 0;
+ left: -55px;
+ -webkit-appearance: textarea;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+/* line 577, ../scss/include/_skeleton.scss */
+#jqt .toggle input[type="checkbox"]:checked {
+ left: 0px;
+}
+/* line 583, ../scss/include/_skeleton.scss */
+#jqt .info {
+ font-size: 12px;
+ line-height: 16px;
+ text-align: center;
+ color: #444;
+ padding: 15px;
+ font-weight: bold;
+}
+/* line 12, ../scss/jqtouch.scss */
+#jqt {
+ /* Lists */
+
+}
+/* line 13, ../scss/jqtouch.scss */
+#jqt > * {
+ 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));
+ background-image: url('data:image/png;base64,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'), -webkit-linear-gradient(top, #7b7c7f, #696a6d 30%, #555658 65%, #464748);
+ background-image: url('data:image/png;base64,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'), linear-gradient(top, #7b7c7f, #696a6d 30%, #555658 65%, #464748);
+}
+/* line 20, ../scss/jqtouch.scss */
+#jqt .toolbar {
+ 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)));
+ 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%);
+ 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%);
+ background-repeat: repeat;
+ background-position: 0 0, 8px 8px, 0 1px, 8px 9px;
+ background-color: #2f3031;
+ background-size: 16px 16px;
+}
+/* line 29, ../scss/jqtouch.scss */
+#jqt ul li {
+ border-top: 1px solid #48494b;
+ background-image: none;
+ background-color: rgba(85, 86, 88, 0.2);
+ 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)));
+ 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));
+ background-image: linear-gradient(top, rgba(123, 124, 127, 0.2), rgba(98, 99, 101, 0.2) 3%, rgba(72, 73, 75, 0.2));
+}
+/* line 33, ../scss/jqtouch.scss */
+#jqt ul li a {
+ color: white;
+ text-shadow: #3c3d3e 0 -1px 0;
+}
+/* line 37, ../scss/jqtouch.scss */
+#jqt ul li .toggle input[type="checkbox"] {
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+ background: #ffffff url(../img/jqt/on_off.png) 0 0 no-repeat;
+}
+/* line 42, ../scss/jqtouch.scss */
+#jqt ul li input[type='submit'] {
+ background-image: none;
+ background-color: white;
+ 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));
+ background-image: -webkit-linear-gradient(top, #ffffff, #ffffff 50%, #ffffff 51%, #f2f2f2);
+ background-image: linear-gradient(top, #ffffff, #ffffff 50%, #ffffff 51%, #f2f2f2);
+ border: 1px outset black;
+}
+/* line 47, ../scss/jqtouch.scss */
+#jqt ul li small.counter {
+ -webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0;
+ box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0;
+}
+/* line 54, ../scss/jqtouch.scss */
+#jqt ul.metal li {
+ background-image: none;
+ border-top: 1px solid #fff;
+ border-bottom: 1px solid #666;
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#eeeeee), to(#9c9ea0));
+}
+/* line 60, ../scss/jqtouch.scss */
+#jqt ul.metal li a {
+ text-shadow: #fff 0 1px 0;
+}
+/* line 62, ../scss/jqtouch.scss */
+#jqt ul.metal li a.active {
+ color: #000;
+}
+/* line 65, ../scss/jqtouch.scss */
+#jqt ul.metal li em {
+ color: #444;
+}
+/* line 71, ../scss/jqtouch.scss */
+#jqt ul.edgetoedge li {
+ background-image: none;
+ background-color: #3c3d3e;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #282829), color-stop(100%, #2f3031));
+ background-image: -webkit-linear-gradient(top, #282829, #2f3031);
+ background-image: linear-gradient(top, #282829, #2f3031);
+ border-bottom: 1px solid #1e1e1f;
+ border-top: 1px solid #343536;
+}
+/* line 76, ../scss/jqtouch.scss */
+#jqt ul.edgetoedge li.sep {
+ background-image: none;
+ background-color: rgba(0, 0, 0, 0.3);
+ 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)));
+ 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));
+ 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));
+ color: #949698;
+ text-shadow: #000000 0 -1px 0;
+}
+/* line 83, ../scss/jqtouch.scss */
+#jqt .info {
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#cccccc), to(#aaaaaa), color-stop(0.6, #cccccc));
+ text-shadow: rgba(255, 255, 255, 0.8) 0 1px 0;
+ color: #444;
+ border-top: 1px solid rgba(255, 255, 255, 0.2);
+}
+div.spinner {
+ position: relative;
+ width: 100px;
+ height: 100px;
+ display: inline-block;
+}
+div.spinner div {
+ width: 12%;
+ height: 26%;
+ background: #000;
+ position: absolute;
+ left: 44.5%;
+ top: 37%;
+ opacity: 0;
+ -webkit-animation: fade 1s linear infinite;
+ -webkit-border-radius: 50px;
+ -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);
+}
+div.spinner div.bar01 {
+ -webkit-transform: rotate(0deg) translate(0, -142%);
+ -webkit-animation-delay: 0s;
+}
+div.spinner div.bar02 {
+ -webkit-transform: rotate(30deg) translate(0, -142%);
+ -webkit-animation-delay: -0.9167s;
+}
+div.spinner div.bar03 {
+ -webkit-transform: rotate(60deg) translate(0, -142%);
+ -webkit-animation-delay: -0.833s;
+}
+div.spinner div.bar04 {
+ -webkit-transform: rotate(90deg) translate(0, -142%);
+ -webkit-animation-delay: -0.75s;
+}
+div.spinner div.bar05 {
+ -webkit-transform: rotate(120deg) translate(0, -142%);
+ -webkit-animation-delay: -0.667s;
+}
+div.spinner div.bar06 {
+ -webkit-transform: rotate(150deg) translate(0, -142%);
+ -webkit-animation-delay: -0.5833s;
+}
+div.spinner div.bar07 {
+ -webkit-transform: rotate(180deg) translate(0, -142%);
+ -webkit-animation-delay: -0.5s;
+}
+div.spinner div.bar08 {
+ -webkit-transform: rotate(210deg) translate(0, -142%);
+ -webkit-animation-delay: -0.41667s;
+}
+div.spinner div.bar09 {
+ -webkit-transform: rotate(240deg) translate(0, -142%);
+ -webkit-animation-delay: -0.333s;
+}
+div.spinner div.bar10 {
+ -webkit-transform: rotate(270deg) translate(0, -142%);
+ -webkit-animation-delay: -0.25s;
+}
+div.spinner div.bar11 {
+ -webkit-transform: rotate(300deg) translate(0, -142%);
+ -webkit-animation-delay: -0.1667s;
+}
+div.spinner div.bar12 {
+ -webkit-transform: rotate(330deg) translate(0, -142%);
+ -webkit-animation-delay: -0.0833s;
+}
+@-webkit-keyframes fade {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0.25;
+ }
+}
+/*
+
+Color list:
+- login box:
+ light #ff9955
+ dark #ff6622
+- login button:
+ regular #dd5500
+ hover #773311
+- login translations:
+ box: #cc6622;
+ not-selected:
+ color: #ddaa99
+ background: #994422
+ selected: #772211;
+*/
+html {
+ height: 100%;
+ -webkit-text-size-adjust: none;
+ -ms-text-size-adjust: none;
+}
+body {
+ font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif;
+ margin: 0px;
+}
+.ellipsis {
+ text-overflow: ellipsis;
+ overflow: hidden;
+ white-space: nowrap;
+}
+div#loginForm div.credentialsMessage.error h1 {
+ color: red;
+}
+div#loginForm div.validating div.loading {
+ margin-top: 50px;
+ margin-bottom: 50px;
+ margin-left: auto;
+ margin-right: auto;
+ width: 100px;
+}
+/*
+
+Color list:
+- login box:
+ light #ff9955
+ dark #ff6622
+- login button:
+ regular #dd5500
+ hover #773311
+- login translations:
+ box: #cc6622;
+ not-selected:
+ color: #ddaa99
+ background: #994422
+ selected: #772211;
+*/
+html {
+ height: 100%;
+ -webkit-text-size-adjust: none;
+ -ms-text-size-adjust: none;
+}
+body {
+ font-family: Helvetica-Neue, Helvetica, Arial, Geneva, sans-serif;
+ margin: 0px;
+}
+.ellipsis {
+ text-overflow: ellipsis;
+ overflow: hidden;
+ white-space: nowrap;
+}
+#jqt div.cardList ul li.cardListItem a small.favicon {
+ background: white;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ display: block;
+ width: 26px;
+ height: 26px;
+ padding: 0px;
+}
+#jqt div.cardList ul li.cardListItem a small.favicon img.favicon {
+ margin-right: 3px;
+ margin-top: 3px;
+ width: 20px;
+ height: 20px;
+}
+#jqt div.cardDetail ul li a.password {
+ color: gray;
+}
+/* ---------------------------------------- */
+/*
+body {
+ margin: 0;
+ font-family: Helvetica;
+ background: #FFFFFF;
+ color: #000000;
+ overflow-x: hidden;
+ -webkit-user-select: none;
+ -webkit-text-size-adjust: none;
+}
+
+
+div.toolbar {
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ border-bottom: 1px solid #2d3642;
+ border-top: 1px solid #6d84a2;
+ padding: 10px;
+ height: 45px;
+// background: url(./images/old/iPhone/toolbar.png) #6d84a2 repeat-x;
+ background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAArCAIAAAA2QHWOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUCNddjDEOgEAQAgn//5qltYWFnb1GB4vdSy4WBAYStKyb9+O0FJMYyjMyMWCC35lJM71r6vF1P07/lFSfPx6ZxNLcy1HtihzpA/RWcOj0zlDhAAAAAElFTkSuQmCCCg==) #6d84a2 repeat-x;
+}
+
+div.toolbar h1#pageTitle {
+ overflow: hidden;
+ margin-top: 1px;
+ margin-bottom: 0px;
+ margin-left: auto;
+ margin-right: auto;
+ width: 150px;
+ height: 25px;
+ font-size: 20px;
+ width: 150px;
+ font-weight: bold;
+ text-shadow: rgba(0, 0, 0, 0.4) 0px -1px 0;
+ text-align: center;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ color: #FFFFFF;
+}
+
+div.toolbar a.button {
+ position: absolute;
+ overflow: hidden;
+ top: 8px;
+ right: 6px;
+ margin: 0;
+ border-width: 0 5px;
+ padding: 0 3px;
+ width: auto;
+ height: 30px;
+ line-height: 30px;
+ font-family: inherit;
+ font-size: 12px;
+ font-weight: bold;
+ color: #FFFFFF;
+ text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0;
+ text-overflow: ellipsis;
+ text-decoration: none;
+ white-space: nowrap;
+ background: none;
+// -webkit-border-image: url(./images/old/iPhone/toolButton.png) 0 5 0 5;
+}
+
+div.toolbar a#backButton {
+ left: 6px;
+ right: auto;
+ padding: 0px;
+ max-width: 55px;
+ border-width: 0 8px 0 14px;
+// -webkit-border-image: url(./images/old/iPhone/backButton.png) 0 8 0 14;
+ -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;
+}
+
+// -------------------------------------------
+
+body.iPhone form.loginForm {
+ min-height: 372px;
+
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ padding: 10px;
+// background: #c8c8c8 url(./images/old/iPhone/pinstripes.png);
+ background: #c8c8c8 url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAIAAACdaSOZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiPHrmCgMC/GNjYwNSAAEGADdNA3dnzPlQAAAAAElFTkSuQmCCCg==);
+}
+
+fieldset {
+ position: relative;
+ margin: 0 0 20px 0;
+ padding: 0;
+ background: #FFFFFF;
+ -webkit-border-radius: 10px;
+ -moz-border-radius: 10px;
+ border: 1px solid #999999;
+ text-align: right;
+ font-size: 16px;
+}
+
+.row {
+ position: relative;
+ min-height: 42px;
+ border-bottom: 1px solid #999999;
+ -webkit-border-radius: 0;
+ text-align: right;
+}
+
+fieldset > .row:last-child {
+ border-bottom: none !important;
+}
+
+
+.row > input:not(input[type|=radio]):not(input[type|=checkbox]),
+.row > div.fieldValue {
+ width: 100%;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ margin: 0;
+ border: none;
+ padding: 0px 10px 0 112px;
+ height: 42px;
+ background: none;
+ font-size: 16px;
+ font-weight: normal;
+
+ color: #666a60;
+ -webkit-user-select: text;
+}
+
+.row > div.fieldValue p {
+ margin: 0px;
+ text-align: left;
+ height: 40px;
+ vertical-align: middle;
+ line-height: 40px;
+}
+
+body[orientation="landscape"] .row > div.fieldValue.password {
+ padding-right: 120px;
+// background: url(./images/old/iPhone/password_background.png) no-repeat 105px;
+ background: url(data:image/png;charset=utf-8;base64,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) no-repeat 105px;
+}
+
+.row > div.fieldValue.password {
+ color: rgba(255,255,255,0.5);
+// background: url(./images/old/iPhone/password_background.png) no-repeat 106px;
+ background: url(data:image/png;charset=utf-8;base64,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) no-repeat 106px;
+}
+
+.row > div.fieldValue.password.clear {
+ color: #666a60;
+ background: none;
+}
+
+.row > input[type|=radio], .row > input[type|=checkbox] {
+ margin: 7px 7px 0 0;
+ height: 25px;
+ width: 25px;
+}
+
+
+.row > label {
+ position: absolute;
+ margin: 0 0 0 14px;
+ line-height: 42px;
+ font-weight: bold;
+ max-width: 92px;
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+body[orientation="landscape"] .row > label {
+ max-width: 150px;
+}
+
+body[orientation="landscape"] .row > input:not(input[type|=radio]):not(input[type|=checkbox]) {
+ padding-left: 140px;
+}
+
+.row > img.favicon {
+ position: absolute;
+ width: 20px;
+ height: 20px;
+ top: 12px;
+ left: 11px;
+}
+
+.row > span {
+ padding: 8px 13px;
+ text-align: left;
+ display: block;
+ color: #666a60;
+ font-size: 10pt;
+}
+
+.row.notes {
+ -webkit-user-select: text;
+}
+
+// -------------------------------------------
+
+.whiteButton {
+ margin-left: auto;
+ margin-right: auto;
+ width: 150px;
+ display: block;
+ border-width: 0 12px;
+ padding: 10px;
+ text-align: center;
+ font-size: 20px;
+ font-weight: bold;
+ text-decoration: inherit;
+ color: inherit;
+
+// -webkit-border-image: url(./images/old/iPhone/whiteButton.png) 0 12 0 12;
+ -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;
+ text-shadow: rgba(255, 255, 255, 0.7) 0 1px 0;
+}
+
+// -------------------------------------------
+
+body.iPhone .loginProgressPanel {
+ min-height: 372px;
+
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ padding: 10px;
+// background: #c8c8c8 url(./images/old/iPhone/pinstripes.png);
+ background: #c8c8c8 url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAIAAACdaSOZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiPHrmCgMC/GNjYwNSAAEGADdNA3dnzPlQAAAAAElFTkSuQmCCCg==);
+}
+
+body.iPhone .loadingBar {
+ margin-left: auto;
+ margin-right: auto;
+ margin-top: 60px;
+}
+
+div.loadingBar {
+ height: 22px;
+ width: 214px;
+// background: url(./images/old/loading/loadingBar.gif) no-repeat center;
+ background: url(data:image/gif;charset=utf-8;base64,R0lGODlh1gAWAMQAAP////f39/f37+/v7+/v5ubm5ubm3t7e3t7e1tbWzs7Ozs7Oxc7OvcXFvcXFtb29tb29rbW1rbW1pa2tpa2tnKWlnKWllP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFBwAXACwAAAAA1gAWAAAF/+AljkQjUVWqrmzrvnAsz3Rt33iur5S0DKPgaOCgWHbIpHLJbDpjx0ZAKDoYKz4CYMsFDBLgsHhc6Jq737E6XD6f02t1242Or+f0LdzOztf5Ynh5e2ALEEYWFAZCBhUWEwiDgIF+XIR8gnSXdplum3Gdb5N9lV6jYKFmn2APKRMFQxIWEgGSp6l/o7iWpwm7er2/prelw7rFq2ELE4lTFw+PA7bHpclkyMHYxNXZ3NuV1sqODRcDKZGa3eDqfuGk69/t7NOTwu6oCCkDDY/0gPbz0sXzh0kbNXgH5W2bUGGZhQUCExLkZLBexX8XC3qTGNHilgYVIjiSJmpgR4wbPf8iVKmQo6eAL+MVqIAopsuSN1XBxMlyIqiMFFOi5BIghQULPIe27HlS40qlPu8A/SnUKRcBNFFo4WXSJlOvUJsGfWo1qpypUs8coCkLIrCuScuKpUp27NKwYOXmtdsFZIQFs97mzPU1Lt+5aevSvavX8OIuASQ0HIACwT1faM9WPbz3MWLNihMz5rwlAU0gDhIpgKuTNWG8jkWbvbbZc2fZXQoYWSCCcqIFhVsP5jpccPDXjYUfJx68ADNaIxrRdJAcOWnlsLFXZ57duu3YoM0ESGCEAqwgBWTRjNAg/GxKtXHfdv+Zdmj68+0TLdAAxazzQuyDyFEEFmjggQgmqOAoggw26OCDEEYo4YQUKkjBAs5Q0dsCJzhS4YcghijiiCSWSCBbGFIRAgAh+QQFBwAXACwCAAIA0gASAAAF/+AlilQznhegqkPivnBcrHQNtHH+zraN6zlej/YDwoRDljGYJC5lzdUARb2UDFHlc5e9bbnZ4hOZFC/JQ7MR3VMD2b4qiqKA19w6u/Ob0Ev5fV14TGGAflpfhzdyJxQLioNQhXyQhoKWk4mXlIKMJw2VnJlboZqjY5umUZFHnYwJJhRYp2eppLaotGu4tbpvrnIvJby7vnnEv8aEq5jMoqueMBByd81NrGDOqtfWZd1p322ACcqS2rflrenZ3M/t296UKe/o57n2vfjF+sn8x+suClSp5i4ePHAFER4Ul5DhQh+GBu55SJDixHr07mXMt3FfxzcS/zSEOLIiRoMnFWOmdLiSZKKQiFqa1IiSpkqbLHG6lHlxjJwAIi0G5TlU50yONZHeVJrzDCMJBLyU7Ml0p1GqHpNmXbq16RpPFyYsCGe16tGuZdGe7ffxn78gYOOaa7uM7lytbPG6tavurQxPIQAAIfkEBQcAFwAsAQABANMAEwAABf/gJY5kaZ5oqq5s675wLM80+ixJXgB87/eDnHBITOx+SECwyDQmkcsm8fgESovUqvI61Vq5wgKKR1hMVl3vFqxTr9nZahQcf8659eT9moey22oDKmlee1J9P4ZNiD6KTIxfcG6OWJN/ToGDQ5A8lIRanpuWf5xvdKOSgZelgimfcquop6qksni2fLiHk5phuou/j8GVtKmFscWzhSoPosm3z7nRu9PA1cLXxMsqOIDHtdmvdsjfxqDk5+DbKA0XvuHO5crp5rDq9PP29XaDCu6Y8qAFlDaQWkFrB7El1AZK04ILC1ih05dv3D2KAvFlxEiwoasc7RwME6dnosV9JS9+nqyYEiWUXgkipEhksiVLPyptbly5U2dHjlLOnKCZE6dLokcb1TR6E2lTpX/aDYWaNNJTqz2ZZnW6lerVTpcSjPHaFetPnmd9GtSYVmtbrlxQJAhgdi1QhGztotWrFu9dhXmbSEUxoYEBAkvh8nW7WLHfvY/7ApbTq4HMEiEAACH5BAUHABcALAIAAgDSABIAAAX/4CWO5JWcZwGsbMsOaCyjqmsD8Kwn9d3mO1nPtwIGacTfUZh8LWOFknRaYjZxT+TVuBwSuUevDxwU38g7sw2ti04BCQqVZG2yZ2rXvZ7cQ69YWTyAflp2gjxULxFzJn9biHlKgpJOlISRmJeQm00Gc3xfmZxZlUWjh519qKuqX6CPqaWas6RPpoG1sre0vFuwhq26wr67Xb3HtsnGYYTAKcjNytLMZdHW09jVac5Vbdfc2eHb3+Ll5Hjg531T66KuY6zvw/PFxMv31OxUofHwZ/L80RNorx4+g/peUYEQK582h+MguiN4kGJCiw8VUqEQDGFGjBE9hgQ5EeC/NQHPYzSS02CQuXQv+5kcOLMgSZjoZK5p9GDEAXU4JQYVWRLlST0pjdLcOWdBIxFIj05aGpXqVJs1K2a9qLKpnEZVsSoVG1brWLNluZ5Vq4fn0wsBrqKVy5bux6131+ZNu/fHWxIhAAAh+QQFBwAXACwCAAIA0gASAAAF/+AlitJojkmaFkDrvu6gzrTKwjgg13xy569dj/YDtoRDmzGYJC5jzZnhRJ1EZ0UjspkFbpPd3HcYxo17ZdiZl2ZefdSTpPD2PY/1NvStx/PvOnmAazV9gXxxJhMGgneETo6NT49Yg5JLlEqRiHEDKJdaoF6iYqRmpmqoblcFiS0IF1Z/m6yWs5Oqe7W0UYaZK3cTiSKQuLeYuX67xsvIx6HPQA3Dxc7N0Nej0aXbp92p30EX2dzk3ubg6Ku9tuq67I7EXO3wzPXW99j52u7K+2LUKvGaNxAMPYL2EOJTqI+hl4CaEhosSObgRIkVKaKxmHESRGAa2XDcGLLQSJElq2E1vIjpo52UAjGSlImSpkmYERey1DJMQUydHYHOFFqT6E2bKvn9MzPsAoUFIJH+XBmU6lCrRbEeNZoUYFOnDg6c3Kq167ml6dCuc1hObYyvcNOyPTtX7k6lddfebZv3bdMQACH5BAkBABcALAAAAADWABYAAAX/4CWOZGmeaKqubOu+cCzPdG3feK7vfH8tBABgoEoYjQWUcElMHZHK5bD4TJ6kU2c1yqQerSZsE/VMgEvi4gJCaSGk41P5TEprv1xh3DTPZ8lbV3BeUIJdd4Vhg4gJDSsBi4B4hnqEZn57JX2Uf3KBioeSiWiRnpOglYx0JgOlfJ+koaajda6asLWyr6exqaKXnJkkm6idu7Qmb7q3vLm+s8DFwiPEvcbMyCJ2v6vatsO4I9vQ3b3TItXO1+DN4t/U4d7L7NkX48fR1ucX6e7z8O1MLPiHLp69dwUDHiTIz+A9bPnU7esn7xm+cg/pRUTRah3Aehk/bqzoMSFIhA0V1YY0OXKhRYgYUVK0d+alxpgMZ65MeTKnQ5k/faoEOjRAnYlBbYrEqZQl05I8W+7USbRn06g4BZA4YOkp0qFCrUKlGlZqVbNlmXJtQfZq27FJ4YJ1G/erWLtohThgW7crJr/BAEsTrI+wRMP+hBDgO1fuXcQk8XqF7NJxXsuTWbyV/FdVZ26fyYW+OBpmadGBPacGvRr1YNWvWcd2XVhzX9i1ZeemfRh3b92/eScGsLgFhQgNLnNuTZq5aec3Ty+V7pRLgAJ7fWjfzr279+/gw4sfTz5FCAA7Cg==) no-repeat center;
+}
+
+div.loadingBar div.loadingBarProgress {
+ height: 100%;
+ width: 0%;
+}
+
+div.loadingBar div.loadingBarProgress div.loadingBarProgress_left {
+ height: 100%;
+ max-width: 8px;
+// background: url(./images/old/loading/loadingBarProgress.png) no-repeat 0;
+ 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;
+}
+
+div.loadingBar div.loadingBarProgress div.loadingBarProgress_right {
+ position: relative;
+ height: 100%;
+ margin-left: 8px;
+// background: url(./images/old/loading/loadingBarProgress.png) no-repeat right;
+ 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;
+ top: -22px;
+}
+
+// -------------------------------------------
+
+body.iPhone .loginErrorPanel {
+ position: absolute;
+ min-height: 372px;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ padding: 10px;
+// background: #c8c8c8 url(./images/old/iPhone/pinstripes.png);
+ background: #c8c8c8 url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAIAAACdaSOZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiPHrmCgMC/GNjYwNSAAEGADdNA3dnzPlQAAAAAElFTkSuQmCCCg==);
+}
+
+body.iPhone .loginErrorPanel h2 {
+ text-align: center;
+ color: red;
+ margin-top: 40px;
+}
+
+// -------------------------------------------
+
+form.cardListSearchForm {
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ border-bottom: 1px solid #2d3642;
+ border-top: 1px solid #6d84a2;
+ padding: 6px;
+ height: 45px;
+// background: url(./images/old/iPhone/toolbar.png) #6d84a2 repeat-x;
+ background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAArCAIAAAA2QHWOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUCNddjDEOgEAQAgn//5qltYWFnb1GB4vdSy4WBAYStKyb9+O0FJMYyjMyMWCC35lJM71r6vF1P07/lFSfPx6ZxNLcy1HtihzpA/RWcOj0zlDhAAAAAElFTkSuQmCCCg==) #6d84a2 repeat-x;
+ margin: 0px;
+}
+
+form.cardListSearchForm input {
+ margin: 7px;
+ -webkit-appearance: searchfield;
+ width: 200px;
+}
+
+ul.cardListPanel {
+ margin: 0px;
+ padding: 0px;
+ list-style-type: none;
+ min-height: 372px;
+}
+
+li.cardListItem {
+ height: 43px;
+ border-bottom: 1px solid #cccccc;
+// background: url(./images/old/iPhone/listArrow.png) no-repeat right center;
+ background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpi/P//PwOtARMDHcDwsYQFRJSXl8P4dVC6CZvizs5O8i1BsqARid9Ei+BiQ2KDLKumhSU1QNyKxG+hlkXoEQ+yqAPNogpapK5KNIvaKbUIVxKeAsTvkPg5QCxETUukgfgAkqFPgdgBzVKKLIFZoIJmwR1qBRdNLEC2BJQpV9LCAmRL/gBxAtRwqlqAXqzcgRrOQE0LQIBxtNIiBQAEGAA7xCa2yF9zEgAAAABJRU5ErkJgggo=) no-repeat right center;
+
+}
+
+li.cardListItem a {
+ position: relative;
+ top: -22px;
+ left: 40px;
+ display: block;
+ white-space: nowrap;
+ overflow: hidden;
+}
+
+body[orientation="portrait"] li.cardListItem a {
+ max-width: 250px;
+}
+
+body[orientation="landscape"] li.cardListItem a {
+ max-width: 400px;
+}
+
+li.cardListItem img {
+ height: 20px;
+ width: 20px;
+ padding: 12px 10px 0px 10px;
+}
+
+li.cardListItem a {
+ text-decoration: none;
+ color: black;
+ font-weight: bold;
+ font-size: 14pt;
+ vertical-align: 3px;
+}
+
+
+div.cardDetailPanel {
+ position: absolute;
+ top: 45px;
+ min-height: 372px;
+
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ padding: 10px;
+// background: #c8c8c8 url(./images/old/iPhone/pinstripes.png);
+ background: #c8c8c8 url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAIAAACdaSOZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpiPHrmCgMC/GNjYwNSAAEGADdNA3dnzPlQAAAAAElFTkSuQmCCCg==);
+}
+
+div.cardDetailPanel > fieldset > div.row > span.directLogin {
+ width: 100%;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ margin: 0;
+ border: none;
+ padding: 12px 10px 0 110px;
+ height: 42px;
+ background: none;
+ font-size: 16px;
+ font-weight: normal;
+
+ padding-left: 40px;
+ color: black;
+// background: url(./images/old/iPhone/listArrow.png) no-repeat right center;
+ background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpi/P//PwOtARMDHcDwsYQFRJSXl8P4dVC6CZvizs5O8i1BsqARid9Ei+BiQ2KDLKumhSU1QNyKxG+hlkXoEQ+yqAPNogpapK5KNIvaKbUIVxKeAsTvkPg5QCxETUukgfgAkqFPgdgBzVKKLIFZoIJmwR1qBRdNLEC2BJQpV9LCAmRL/gBxAtRwqlqAXqzcgRrOQE0LQIBxtNIiBQAEGAA7xCa2yF9zEgAAAABJRU5ErkJgggo=) no-repeat right center;
+}
+
+body[orientation="landscape"] div.cardDetailPanel > fieldset > div.row > span.directLogin {
+ padding-left: 50px;
+}
+
+div.cardDetailPanel h2 {
+ margin: 0 0 8px 14px;
+ font-size: inherit;
+ font-weight: bold;
+ color: #4d4d70;
+ text-shadow: rgba(255, 255, 255, 0.75) 1px 1px 0;
+}
+
+body[orientation="portrait"] > * {
+ width: 320px;
+}
+
+body[orientation="landscape"] > * {
+ width: 480px;
+}
+*/ \ 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 @@
+/*
+
+Copyright 2008-2011 Clipperz Srl
+
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
+For further information about its features and functionalities please
+refer to http://www.clipperz.com.
+
+* Clipperz Community Edition is free software: you can redistribute
+ it and/or modify it under the terms of the GNU Affero General Public
+ License as published by the Free Software Foundation, either version
+ 3 of the License, or (at your option) any later version.
+
+* Clipperz Community Edition is distributed in the hope that it will
+ be useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU Affero General Public License for more details.
+
+* You should have received a copy of the GNU Affero General Public
+ License along with Clipperz Community Edition. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+body {
+ padding: 0px;
+ margin: 0px;
+ font-family: Helvetica, Arial, Geneva, sans-serif;
+ color: #666666;
+}
+div.header {
+ padding: 20px 25px;
+ background-color: #1f2148;
+}
+div#logo {
+ background: url(./images/old/logo.png);
+ width: 150px;
+ height: 39px;
+ display: block;
+}
+h5.clipperzPayoff {
+ color: white;
+ font-size: 13pt;
+ font-weight: normal;
+ padding-left: 20px;
+ white-space: nowrap;
+ margin: 0px;
+ padding-left: 4px;
+}
+/*
+h1 {
+ font-size: 40pt;
+ color: #333366;
+}
+
+h1 span.logo_z {
+ color: #ff9400;
+}
+*/
+div.contentWrapper {
+ padding: 20px;
+}
+div.block1 {
+ float: left;
+ margin-right: 40px;
+}
+div.block2 {
+ float: left;
+}
+div.languageBlock {
+ clear: both;
+ padding-top: 20px;
+}
+div.flags {
+ float: left;
+}
+div.content {
+ float: left;
+ margin-left: 20px;
+ width: 300px;
+}
+h3 {
+ margin: 0px;
+ padding-top: 10px;
+}
+p {
+ font-size: 10pt;
+ line-height: 20px;
+}
+/* @group RSS feed */
+body.iFrame {
+ margin: 0px;
+ padding: 0px;
+ border: 0px;
+ font-family: Helvetica, Arial, Geneva, sans-serif;
+}
+div#feedContent ul {
+ list-style-type: none;
+ padding: 0px;
+ margin: 0px;
+}
+div#feedContent ul li {
+ display: none;
+}
+div#feedContent ul li.selected {
+ display: block;
+ padding-top: 6px;
+}
+div#feedContent ul li.selected em.date {
+ display: none;
+}
+div#feedContent ul li.selected a {
+ display: none;
+}
+div#feedContent ul li.selected h2 {
+ font-size: 8pt;
+ color: #c3c4cf;
+ margin: 0px;
+ border: 0px;
+ padding: 0px;
+}
+div#feedContent ul li.selected p {
+ font-size: 8pt;
+ color: #c3c4cf;
+ margin: 0px;
+ display: inline;
+ line-height: 15px;
+}
+div#feedContent ul li.selected p a {
+ font-size: 8pt;
+ color: #c3c4cf;
+ display: inline;
+}
+div.languageBlock div.flags {
+ height: 64px;
+ width: 64px;
+}
+div.languageBlock.en-us div.flags {
+ background: url(./images/old/flags/en.png);
+}
+div.languageBlock.zh-cn div.flags {
+ background: url(./images/old/flags/cn.png);
+}
+div.languageBlock.fr-fr div.flags {
+ background: url(./images/old/flags/fr.png);
+}
+div.languageBlock.it-it div.flags {
+ background: url(./images/old/flags/it.png);
+}
+div.languageBlock.ja-jp div.flags {
+ background: url(./images/old/flags/jp.png);
+}
+div.languageBlock.pt-br div.flags {
+ background: url(./images/old/flags/br.png);
+}
+div.languageBlock.es-es div.flags {
+ background: url(./images/old/flags/es.png);
+}
+div.languageBlock.ru-ru div.flags {
+ background: url(./images/old/flags/ru.png);
+}
+div.languageBlock.de-de div.flags {
+ background: url(./images/old/flags/de.png);
+}
+/* @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
@@ -199,334 +199,34 @@ div.modalDialogMask.userInfoBoxMask {
}
.keepTogether {
display: inline-block;
white-space: nowrap;
}
#mainDiv {
margin: 0 auto;
}
div.tooltip {
position: absolute;
z-index: 30001;
}
div.tooltip div.tooltip_body {
border-radius: 8px;
-moz-border-radius: 8px;
-webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- border-top: 1px solid #d4d4d4;
- border-left: 1px solid #a2a2a2;
- border-right: 1px solid #6f6f6f;
- border-bottom: 1px solid #3c3c3c;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- border-top: 1px solid #d4d4d4;
- border-left: 1px solid #a2a2a2;
- border-right: 1px solid #6f6f6f;
- border-bottom: 1px solid #3c3c3c;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- border-top: 1px solid #d4d4d4;
- border-left: 1px solid #a2a2a2;
- border-right: 1px solid #6f6f6f;
- border-bottom: 1px solid #3c3c3c;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- border-top: 1px solid #d4d4d4;
- border-left: 1px solid #a2a2a2;
- border-right: 1px solid #6f6f6f;
- border-bottom: 1px solid #3c3c3c;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- border-top: 1px solid #d4d4d4;
- border-left: 1px solid #a2a2a2;
- border-right: 1px solid #6f6f6f;
- border-bottom: 1px solid #3c3c3c;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bbbbbb), to(#555555));
- background: -moz-linear-gradient(0% 100% 90deg, #555555, #bbbbbb);
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
- -webkit-box-shadow: 4px 4px 10px #333333;
- -moz-box-shadow: 4px 4px 10px #333333;
- box-shadow: 4px 4px 10px #333333;
-webkit-box-shadow: 4px 4px 10px #333333;
-moz-box-shadow: 4px 4px 10px #333333;
box-shadow: 4px 4px 10px #333333;
border-top: 1px solid #d4d4d4;
border-left: 1px solid #a2a2a2;
border-right: 1px solid #6f6f6f;
border-bottom: 1px solid #3c3c3c;
}
div.tooltip div.tooltip_body span {
display: block;
padding: 10px;
font-size: 10pt;
color: white;
}
div.tooltip div.tooltip_body div.tooltip_text {
width: 200px;
@@ -550,32 +250,79 @@ div.tooltip.ABOVE div.tooltip_arrow {
div.tooltip.LEFT div.tooltip_arrow {
left: 203px;
top: 10px;
border-left: 6px solid #747474;
}
div.tooltip.LEFT div.tooltip_body div.tooltip_text {
min-height: 45px;
}
div.tooltip.RIGHT div.tooltip_arrow {
left: -12px;
top: 10px;
border-right: 6px solid #9c9c9c;
}
div.tooltip.RIGHT div.tooltip_body div.tooltip_text {
min-height: 45px;
}
+.button.default {
+ display: inline-block;
+ height: 20px;
+ cursor: pointer;
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ffa76f), to(#ff6622));
+ background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ffa76f);
+ border-radius: 5;
+ -moz-border-radius: 5;
+ -webkit-border-radius: 5;
+ border: 1px solid #ff7f46;
+ padding-top: 4px;
+ padding-left: 15px;
+ padding-right: 15px;
+ padding-bottom: 2px;
+ color: white;
+ font-weight: lighter;
+ text-shadow: -1px -1px 1px #ff6622, 1px 1px 1px #ffa76f;
+ text-decoration: none;
+ font-weight: normal;
+}
+.button.default:hover {
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff8e46), to(#ff6622));
+ background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff8e46);
+}
+.button {
+ display: inline-block;
+ height: 20px;
+ cursor: pointer;
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#bfbfbf), to(#999999));
+ background: -moz-linear-gradient(0% 100% 90deg, #999999, #bfbfbf);
+ border-radius: 5;
+ -moz-border-radius: 5;
+ -webkit-border-radius: 5;
+ border: 1px solid #ababab;
+ padding-top: 4px;
+ padding-left: 15px;
+ padding-right: 15px;
+ padding-bottom: 2px;
+ color: white;
+ font-weight: lighter;
+ text-shadow: -1px -1px 1px #999999, 1px 1px 1px #bfbfbf;
+ text-decoration: none;
+}
+.button:hover {
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ababab), to(#999999));
+ background: -moz-linear-gradient(0% 100% 90deg, #999999, #ababab);
+}
/*
Color list:
- login box:
light #ff9955
dark #ff6622
- login button:
regular #dd5500
hover #773311
- login translations:
box: #cc6622;
not-selected:
color: #ddaa99
background: #994422
selected: #772211;
*/
@@ -601,452 +348,172 @@ div.modalDialogMask.userInfoBoxMask {
clear: both;
}
.hidden_none {
display: none;
visibility: hidden;
}
.keepTogether {
display: inline-block;
white-space: nowrap;
}
#mainDiv {
margin: 0 auto;
}
div.pageHeaderAndBody {
height: 100%;
}
-body > div.pageHeaderAndBody {
- height: auto;
- min-height: 100%;
+div.pageHeaderAndBody div#pageBody {
+ min-width: 1013px;
+ padding-bottom: 90px;
}
-div.pageHeader {
+div.pageHeaderAndBody div.pageHeader {
background-color: #1f2148;
min-width: 1013px;
}
-div.pageHeader div#miscLinks {
+div.pageHeaderAndBody div.pageHeader div#miscLinks {
float: right;
}
-div.pageHeader div#miscLinks ul {
+div.pageHeaderAndBody div.pageHeader div#miscLinks ul {
margin: 12px 0px 0px;
padding: 15px;
}
-div.pageHeader div#miscLinks ul li {
+div.pageHeaderAndBody div.pageHeader div#miscLinks ul li {
display: inline;
margin: 0px;
padding: 0px;
border: 0px;
}
-div.pageHeader div#miscLinks ul li a {
+div.pageHeaderAndBody div.pageHeader div#miscLinks ul li a {
color: #ffffff;
margin: 0px;
padding: 0px;
border: 0px;
- margin: 0px;
- padding: 0px;
- border: 0px;
- margin: 0px;
- padding: 0px;
- border: 0px;
- margin: 0px;
- padding: 0px;
- border: 0px;
- margin: 0px;
- padding: 0px;
- border: 0px;
- margin: 0px;
- padding: 0px;
- border: 0px;
padding: 15px;
border-left: 1px solid #3e428f;
font-weight: normal;
text-decoration: none;
font-size: 12pt;
min-width: 70px;
}
-div.pageHeader div#miscLinks ul li a:hover {
+div.pageHeaderAndBody div.pageHeader div#miscLinks ul li a:hover {
color: #b8bae1;
}
-div.pageHeader div#miscLinks ul li a#donateHeaderLink {
+div.pageHeaderAndBody div.pageHeader div#miscLinks ul li a#donateHeaderLink {
border-left: 0px;
}
-div.pageHeader div#logoFrame {
+div.pageHeaderAndBody div.pageHeader div#logoFrame {
padding: 16px 16px 60px 16px;
min-height: 44px;
}
-div.pageHeader div#logoFrame a {
+div.pageHeaderAndBody div.pageHeader div#logoFrame a {
color: white;
text-decoration: none;
}
-div.pageHeader div#logoFrame a canvas {
- margin: 0px;
- padding: 0px;
- border: 0px;
- margin: 0px;
- padding: 0px;
- border: 0px;
- margin: 0px;
- padding: 0px;
- border: 0px;
- margin: 0px;
- padding: 0px;
- border: 0px;
- margin: 0px;
- padding: 0px;
- border: 0px;
+div.pageHeaderAndBody div.pageHeader div#logoFrame a canvas {
margin: 0px;
padding: 0px;
border: 0px;
width: 150px;
height: 39px;
}
-div.pageHeader div#logoFrame a h5.clipperzPayoff {
+div.pageHeaderAndBody div.pageHeader div#logoFrame a h5.clipperzPayoff {
font-size: 13pt;
font-weight: normal;
white-space: nowrap;
margin: 0px;
padding-left: 4px;
}
-div.pageHeader div#featureTabs table {
+div.pageHeaderAndBody div.pageHeader div#featureTabs table {
width: 100%;
padding: 6px;
padding-left: 15px;
padding-right: 15px;
padding-bottom: 46px;
}
-div.pageHeader div#featureTabs table tr td {
+div.pageHeaderAndBody div.pageHeader div#featureTabs table tr td {
width: 25%;
vertical-align: top;
font-size: 11pt;
color: white;
}
-div.pageHeader div#featureTabs table tr td img {
+div.pageHeaderAndBody div.pageHeader div#featureTabs table tr td img {
float: left;
}
-div.pageHeader div#featureTabs table tr td span {
+div.pageHeaderAndBody div.pageHeader div#featureTabs table tr td span {
display: block;
padding: 5 10 5 85;
}
-div.pageHeader div#featureTabs canvas.featureIcon {
+div.pageHeaderAndBody div.pageHeader div#featureTabs canvas.featureIcon {
width: 76px;
height: 76px;
display: block;
float: left;
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ffad79), to(#ff6622));
background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ffad79);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ffad79), to(#ff6622));
- background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ffad79);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ffad79), to(#ff6622));
- background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ffad79);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ffad79), to(#ff6622));
- background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ffad79);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ffad79), to(#ff6622));
- background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ffad79);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ffad79), to(#ff6622));
- background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ffad79);
- border-radius: 38px;
- -moz-border-radius: 38px;
- -webkit-border-radius: 38px;
- border-radius: 38px;
- -moz-border-radius: 38px;
- -webkit-border-radius: 38px;
- border-radius: 38px;
- -moz-border-radius: 38px;
- -webkit-border-radius: 38px;
- border-radius: 38px;
- -moz-border-radius: 38px;
- -webkit-border-radius: 38px;
- border-radius: 38px;
- -moz-border-radius: 38px;
- -webkit-border-radius: 38px;
border-radius: 38px;
-moz-border-radius: 38px;
-webkit-border-radius: 38px;
}
-div.pageHeader div#news {
+div.pageHeaderAndBody div.pageHeader div#news {
top: -82px;
left: 240px;
width: 310px;
height: 90px;
position: absolute;
background-color: #616475;
-webkit-border-bottom-left-radius: 8px;
-moz-border-radius-bottomleft: 8px;
border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
-webkit-border-bottom-right-radius: 8px;
-moz-border-radius-bottomright: 8px;
border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-left-radius: 8px;
- -moz-border-radius-bottomleft: 8px;
- border-bottom-left-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -moz-border-radius-bottomright: 8px;
- border-bottom-right-radius: 8px;
- -webkit-box-shadow: 2px 2px 9px #333333;
- -moz-box-shadow: 2px 2px 9px #333333;
- box-shadow: 2px 2px 9px #333333;
- -webkit-box-shadow: 2px 2px 9px #333333;
- -moz-box-shadow: 2px 2px 9px #333333;
- box-shadow: 2px 2px 9px #333333;
- -webkit-box-shadow: 2px 2px 9px #333333;
- -moz-box-shadow: 2px 2px 9px #333333;
- box-shadow: 2px 2px 9px #333333;
- -webkit-box-shadow: 2px 2px 9px #333333;
- -moz-box-shadow: 2px 2px 9px #333333;
- box-shadow: 2px 2px 9px #333333;
- -webkit-box-shadow: 2px 2px 9px #333333;
- -moz-box-shadow: 2px 2px 9px #333333;
- box-shadow: 2px 2px 9px #333333;
-webkit-box-shadow: 2px 2px 9px #333333;
-moz-box-shadow: 2px 2px 9px #333333;
box-shadow: 2px 2px 9px #333333;
}
-div.pageHeader div#news div#newsframe {
+div.pageHeaderAndBody div.pageHeader div#news div#newsframe {
margin-left: 10px;
margin-right: 10px;
height: 75px;
overflow: hidden;
}
-div.pageHeader div#news div#newsframe iframe {
+div.pageHeaderAndBody div.pageHeader div#news div#newsframe iframe {
width: 290px;
border: 0px;
color: #616475;
background-color: #616475;
}
-div.pageHeader div#news div.grip {
+div.pageHeaderAndBody div.pageHeader div#news div.grip {
width: 310px;
- height: 12px;
+ height: 6px;
margin-top: 2px;
cursor: pointer;
}
-div.pageHeader div#news div.grip div.gripHandler {
+div.pageHeaderAndBody div.pageHeader div#news div.grip div.gripHandler {
margin-left: auto;
margin-right: auto;
margin-top: 8px;
width: 0;
height: 0;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
}
-div.pageHeader div#news.open div.grip div.gripHandler {
+div.pageHeaderAndBody div.pageHeader div#news.open div.grip div.gripHandler {
border-bottom: 5px solid #e9e9ec;
}
-div.pageHeader div#news.hidden div.grip div.gripHandler {
+div.pageHeaderAndBody div.pageHeader div#news.hidden div.grip div.gripHandler {
border-top: 5px solid #e9e9ec;
}
div.pageFooter {
margin-top: -90px;
height: 90px;
clear: both;
}
div.pageFooter div.footerWrapper {
clear: both;
padding-top: 10px;
}
div.pageFooter div.footerWrapper div.footerContent {
background-color: #eaebe6;
padding: 20px;
font-size: 8pt;
}
@@ -1124,259 +591,39 @@ div.modalDialogMask.userInfoBoxMask {
}
div#loginBox {
width: 273px;
z-index: 19000;
top: -30px;
right: 30px;
position: relative;
float: right;
}
div#loginBox div.header {
height: 25px;
width: 273px;
background-color: #ff9b5a;
-webkit-border-top-left-radius: 20px;
-moz-border-radius-topleft: 20px;
border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-left-radius: 20px;
- -moz-border-radius-topleft: 20px;
- border-top-left-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
- -webkit-border-top-right-radius: 20px;
- -moz-border-radius-topright: 20px;
- border-top-right-radius: 20px;
-webkit-border-top-right-radius: 20px;
-moz-border-radius-topright: 20px;
border-top-right-radius: 20px;
}
div#loginBox div.body {
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9b5a), to(#ff6622));
background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9b5a);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9b5a), to(#ff6622));
- background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9b5a);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9b5a), to(#ff6622));
- background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9b5a);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9b5a), to(#ff6622));
- background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9b5a);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9b5a), to(#ff6622));
- background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9b5a);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9b5a), to(#ff6622));
- background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9b5a);
}
div#loginBox div.body h4 {
color: #ffffff;
font-size: 16pt;
font-weight: normal;
padding-left: 20px;
margin: 0px;
}
div#loginBox div.body form.loginForm {
padding: 5px 20px 0px;
margin-bottom: 0px;
}
div#loginBox div.body form.loginForm label {
color: #ffffff;
font-size: 10pt;
display: block;
@@ -1460,242 +707,32 @@ div#loginBox div.body form.loginForm div.translations ul li.selected {
background-color: #772211;
}
div#loginBox div.body form.loginForm div.translations ul li.selected:hover {
cursor: default;
}
div#loginBox div.body form.loginForm div.translations ul li:hover {
cursor: pointer;
color: #ffffff;
}
div#loginBox div.footer {
height: 37px;
width: 273px;
background-color: #ff6622;
-webkit-border-bottom-left-radius: 20px;
-moz-border-radius-bottomleft: 20px;
border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-left-radius: 20px;
- -moz-border-radius-bottomleft: 20px;
- border-bottom-left-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
- -webkit-border-bottom-right-radius: 20px;
- -moz-border-radius-bottomright: 20px;
- border-bottom-right-radius: 20px;
-webkit-border-bottom-right-radius: 20px;
-moz-border-radius-bottomright: 20px;
border-bottom-right-radius: 20px;
}
body.ext-gecko div#loginBox form.loginForm div.translations ul li {
display: -moz-inline-box;
}
div#featurePoints {
min-width: 400px;
padding-top: 15px;
padding-bottom: 20px;
padding-left: 20px;
padding-right: 330px;
}
div#featurePoints table tbody tr td {
width: 50%;
@@ -1747,51 +784,55 @@ div.activeFeatures a:hover span.payoff {
div.activeFeatures div.keepTogether a {
padding-left: 0px;
}
div.activeFeatures div.keepTogether div {
display: inline-block;
padding-right: 15px;
}
div.activeFeatures div.keepTogether canvas {
width: 46px;
height: 46px;
vertical-align: bottom;
}
div.activeFeatures div.createAccountLink {
display: inline-block;
width: 282;
height: 65px;
+ background-image: url(./images/old/home/register.png);
margin-right: 20px;
}
div.activeFeatures div.createAccountLink a.createAccountLink {
position: relative;
top: -92px;
left: 5px;
}
div.activeFeatures div.createAccountLink a.createAccountLink span.payoff {
margin-top: 23px;
margin-left: 40px;
font-size: 17pt;
color: #64626c;
}
div.activeFeatures div.createAccountLink a.createAccountLink span.link {
padding-left: 40px;
padding-right: 50px;
padding-bottom: 10px;
font-size: 12pt;
}
+div.activeFeatures div.createAccountLink:hover {
+ background-image: url(./images/old/home/register_selected.png);
+}
div.activeFeatures div.createAccountLink:hover a.createAccountLink span.payoff {
color: #54535a;
}
div.activeFeatures div.createAccountLink:hover a.createAccountLink span.link {
color: white;
}
div.activeFeatures div.createAccountLink canvas {
width: 282px;
height: 93px;
}
/*
Color list:
- login box:
light #ff9955
dark #ff6622
@@ -1834,128 +875,87 @@ div.modalDialogMask.userInfoBoxMask {
display: inline-block;
white-space: nowrap;
}
#mainDiv {
margin: 0 auto;
}
div.userInfoBox {
position: absolute;
width: 160px;
height: 120px;
top: 100px;
left: 15px;
color: white;
background-color: #ff9955;
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9a56), to(#ff6723));
background: -moz-linear-gradient(0% 100% 90deg, #ff6723, #ff9a56);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9a56), to(#ff6723));
- background: -moz-linear-gradient(0% 100% 90deg, #ff6723, #ff9a56);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9a56), to(#ff6723));
- background: -moz-linear-gradient(0% 100% 90deg, #ff6723, #ff9a56);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9a56), to(#ff6723));
- background: -moz-linear-gradient(0% 100% 90deg, #ff6723, #ff9a56);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9a56), to(#ff6723));
- background: -moz-linear-gradient(0% 100% 90deg, #ff6723, #ff9a56);
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9a56), to(#ff6723));
- background: -moz-linear-gradient(0% 100% 90deg, #ff6723, #ff9a56);
border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
- border-radius: 10px;
- -moz-border-radius: 10px;
- -webkit-border-radius: 10px;
- border-radius: 10px;
- -moz-border-radius: 10px;
- -webkit-border-radius: 10px;
- border-radius: 10px;
- -moz-border-radius: 10px;
- -webkit-border-radius: 10px;
- border-radius: 10px;
- -moz-border-radius: 10px;
- -webkit-border-radius: 10px;
- border-radius: 10px;
- -moz-border-radius: 10px;
- -webkit-border-radius: 10px;
- -webkit-box-shadow: 2px 2px 9px #333333;
- -moz-box-shadow: 2px 2px 9px #333333;
- box-shadow: 2px 2px 9px #333333;
- -webkit-box-shadow: 2px 2px 9px #333333;
- -moz-box-shadow: 2px 2px 9px #333333;
- box-shadow: 2px 2px 9px #333333;
- -webkit-box-shadow: 2px 2px 9px #333333;
- -moz-box-shadow: 2px 2px 9px #333333;
- box-shadow: 2px 2px 9px #333333;
- -webkit-box-shadow: 2px 2px 9px #333333;
- -moz-box-shadow: 2px 2px 9px #333333;
- box-shadow: 2px 2px 9px #333333;
- -webkit-box-shadow: 2px 2px 9px #333333;
- -moz-box-shadow: 2px 2px 9px #333333;
- box-shadow: 2px 2px 9px #333333;
-webkit-box-shadow: 2px 2px 9px #333333;
-moz-box-shadow: 2px 2px 9px #333333;
box-shadow: 2px 2px 9px #333333;
}
div.userInfoBox.locked {
z-index: 19001;
}
div.userInfoBox.locked div.header a.lockButton {
- background: url(../images/old/lock/locked.png) no-repeat -5px -2px;
+ background: url(./images/old/lock/locked.png) no-repeat -5px -2px;
}
div.userInfoBox.locked div.header a.lockButton:hover {
- background: url(../images/old/lock/locked_hover.png) no-repeat -5px -2px;
+ background: url(./images/old/lock/locked_hover.png) no-repeat -5px -2px;
}
div.userInfoBox.locked div.body a {
display: none;
}
div.userInfoBox div.header {
height: 30px;
}
div.userInfoBox div.header h1 {
font-size: 8pt;
font-weight: normal;
margin: 0px;
padding-top: 12px;
padding-left: 12px;
}
div.userInfoBox div.header a.lockButton {
position: absolute;
top: 8px;
right: 12px;
display: block;
width: 15px;
height: 20px;
text-decoration: none;
- background: url(../images/old/lock/unlocked.png) no-repeat -5px -2px;
+ background: url(./images/old/lock/unlocked.png) no-repeat -5px -2px;
}
div.userInfoBox div.header a.lockButton:hover {
- background: url(../images/old/lock/unlocked_hover.png) no-repeat -5px -2px;
+ background: url(./images/old/lock/unlocked_hover.png) no-repeat -5px -2px;
}
div.userInfoBox div.body {
padding: 0px 12px;
}
div.userInfoBox div.body h3 {
font-size: 11pt;
font-weight: bold;
margin: 0px;
}
div.userInfoBox div.body ul {
font-size: 8pt;
padding: 0px;
margin: 4px 0px;
list-style-position: inside;
- text-shadow: #000000 0 0 0;
}
div.userInfoBox div.body ul li span.number {
font-weight: bold;
padding-right: 3px;
}
div.userInfoBox div.body a {
display: block;
margin-top: 8px;
border-top: 1px solid white;
padding-top: 6px;
font-size: 10pt;
font-weight: bold;
color: #d15a22;
border-color: #fe9a5f;
text-decoration: none;
}
@@ -2009,115 +1009,104 @@ div.sidePanels div.tabSidePanel ul.mainTabs li div.selectionHighlighter a.add:ho
}
div.sidePanels div.tabSidePanel ul.mainTabs li div.selectionHighlighter a.add span {
font-size: 8pt;
vertical-align: middle;
}
div.sidePanels div.tabSidePanel ul.mainTabs li div.selectionHighlighter a.add h3 {
display: inline;
padding-left: 5px;
}
div.sidePanels div.tabSidePanel ul.mainTabs li.selected div.selectionHighlighter {
display: block;
position: absolute;
left: 154px;
margin-top: -43px;
}
div.sidePanels div.tabSidePanel ul.mainTabs li.cards a {
- background: url(../images/old/main/tabs/cardsBackground.png) -19px -63px;
+ background: url(./images/old/main/tabs/cardsBackground.png) -19px -63px;
}
div.sidePanels div.tabSidePanel ul.mainTabs li.cards a:hover {
- background: url(../images/old/main/tabs/cardsBackground.png) -19px -110px;
+ background: url(./images/old/main/tabs/cardsBackground.png) -19px -110px;
}
div.sidePanels div.tabSidePanel ul.mainTabs li.cards.selected a {
margin-left: -10px;
padding-left: 50px;
color: white;
- background: url(../images/old/main/tabs/cardsBackground.png) -9px -14px;
-}
-div.sidePanels div.tabSidePanel ul.mainTabs li.cards.selected a:hover {
- background: url(../images/old/main/tabs/cardsBackground.png) -9px -14px;
-}
-div.sidePanels div.tabSidePanel ul.mainTabs li.directLogins a {
- background: url(../images/old/main/tabs/directLoginBackground.png) -19px -63px;
-}
-div.sidePanels div.tabSidePanel ul.mainTabs li.directLogins a:hover {
- background: url(../images/old/main/tabs/directLoginBackground.png) -19px -110px;
+ background: url(./images/old/main/tabs/cardsBackground.png) -9px -14px;
}
div.sidePanels div.tabSidePanel ul.mainTabs li.directLogins.selected a {
margin-left: -10px;
padding-left: 50px;
color: white;
- background: url(../images/old/main/tabs/directLoginBackground.png) -9px -14px;
}
div.sidePanels div.tabSidePanel ul.mainTabs li.directLogins.selected a:hover {
color: white;
- background: url(../images/old/main/tabs/directLoginBackground.png) -9px -14px;
}
div.sidePanels div.tabSidePanel ul.otherTabs {
margin: 10px 0px;
}
div.sidePanels div.tabSidePanel ul.otherTabs li {
margin-top: -4px;
}
div.sidePanels div.tabSidePanel ul.otherTabs li div.selectionHighlighter {
display: none;
}
div.sidePanels div.tabSidePanel ul.otherTabs li a {
display: block;
line-height: 36px;
height: 43px;
padding-left: 40px;
color: #ff6621;
text-decoration: none;
}
div.sidePanels div.tabSidePanel ul.otherTabs li a:hover {
- background: url(../images/old/main/tabs/itemsBackground.png) -10px -49px;
+ background: url(./images/old/main/tabs/itemsBackground.png) -10px -49px;
}
div.sidePanels div.tabSidePanel ul.otherTabs li.selected a {
margin-left: -10px;
padding-left: 50px;
- background: url(../images/old/main/tabs/itemsBackground.png) 1px -96px;
+ background: url(./images/old/main/tabs/itemsBackground.png) 1px -96px;
color: white;
}
div.sidePanels div.tabSidePanel ul.otherTabs li.selected div.selectionHighlighter {
display: block;
position: absolute;
left: 154px;
margin-top: -42px;
}
div.tagSidePanel {
/*
margin-right: -8px;
div.tagSidePanel div.header {
height: 50px;
- background-image: url(../images/old/main/tabs/tagsBackground.png);
+ background-image: url(./images/old/main/tabs/tagsBackground.png);
}
div.tagSidePanel div.header h1 {
padding-left: 52px;
padding-top: 14px;
font-size: 14pt;
font-weight: normal;
color: #888888;
}
div.tagSidePanel div.body {
- background: url(../images/old/main/tabs/tagsBackground.png) -255px;
+ background: url(./images/old/main/tabs/tagsBackground.png) -255px;
}
div.tagSidePanel div.footer {
height: 10px;
- background: url(../images/old/main/tabs/tagsBackground.png) -510px -40px;
+ background: url(./images/old/main/tabs/tagsBackground.png) -510px -40px;
}
div.tagSidePanel ul.tags {
margin: 0px;
list-style-type: none;
padding: 0px;
}
div.tagSidePanel ul.tags li a {
display: block;
font-size: 9pt;
text-decoration: none;
color: #ff6621;
padding: 0px 4px 0px 15px;
line-height: 20px;
}
div.tagSidePanel ul.tags li a:hover {
background-color: #dddddd;
@@ -2133,59 +1122,59 @@ div.tagSidePanel {
background-color: #d4d5cf;
}
div.tagSidePanel ul.tags li.selected a:hover {
background-color: #d4d5cf;
}
div.tagSidePanel ul.tags li.selected a {
font-weight: bold;
}
*/
}
div.groupSidePanel {
/*
margin-right: -10px;
div.groupSidePanel div.header {
height: 50px;
- background-image: url(../images/old/main/tabs/groupsBackground.png);
+ background-image: url(./images/old/main/tabs/groupsBackground.png);
}
div.groupSidePanel div.header h1 {
padding-left: 52px;
padding-top: 14px;
font-size: 14pt;
font-weight: normal;
color: white;
}
div.groupSidePanel div.header a {
float: right;
margin-top: -30px;
margin-right: 20px;
text-decoration: none;
color: #666666;
font-size: 9pt;
line-height: 18px;
}
div.groupSidePanel div.header a:hover {
color: #444444;
}
div.groupSidePanel div.body {
- background: url(../images/old/main/tabs/groupsBackground.png) -255px;
+ background: url(./images/old/main/tabs/groupsBackground.png) -255px;
}
div.groupSidePanel div.footer {
height: 10px;
- background: url(../images/old/main/tabs/groupsBackground.png) -510px -39px;
+ background: url(./images/old/main/tabs/groupsBackground.png) -510px -39px;
}
div.groupSidePanel ul.groups {
margin: 0px;
list-style-type: none;
padding: 0px;
}
div.groupSidePanel ul.groups li a {
display: block;
font-size: 9pt;
text-decoration: none;
color: white;
padding: 0px 4px 0px 15px;
line-height: 20px;
}
div.groupSidePanel ul.groups li a:hover {
background-color: #aaaaaa;
@@ -2195,16 +1184,2912 @@ div.groupSidePanel {
font-size: 8pt;
color: #dddddd;
margin-right: 15px;
margin-top: -17px;
}
div.groupSidePanel ul.groups li.selected a {
background-color: #bbbbbb;
}
div.groupSidePanel ul.groups li.selected a:hover {
background-color: #bbbbbb;
}
div.groupSidePanel ul.groups li.selected a {
font-weight: bold;
}
*/
}
+div.subPanelTabs ul {
+ margin: 0px;
+ margin-right: 7px;
+ padding: 0px;
+}
+div.subPanelTabs ul li {
+ display: inline-block;
+ vertical-align: middle;
+ height: 50px;
+ border-right: 1px solid #eef0e3;
+ border-bottom: 1px solid #d5d5bc;
+}
+div.subPanelTabs ul li.first {
+ -webkit-border-top-left-radius: 20px;
+ -moz-border-radius-topleft: 20px;
+ border-top-left-radius: 20px;
+}
+div.subPanelTabs ul li.selected {
+ background-color: #eef0e3;
+ border-bottom: 1px solid #eef0e3;
+ border-right: 1px solid #d5d5bc;
+}
+div.subPanelTabs ul li.selected:hover {
+ border-right: 1px solid #d5d5bc;
+}
+div.subPanelTabs ul li.selected a {
+ color: #444440;
+}
+div.subPanelTabs ul li:hover {
+ border-right: 1px solid #d5d5bc;
+ background-color: #eef0e3;
+}
+div.subPanelTabs ul li a {
+ color: #787872;
+ text-decoration: none;
+ display: block;
+ text-align: center;
+ padding-top: 15px;
+ padding-left: 20px;
+ padding-right: 20px;
+ font-size: 13pt;
+}
+div.subPanelContent {
+ padding-top: 20px;
+ padding-left: 30px;
+ padding-right: 30px;
+ min-height: 280px;
+ color: #787872;
+ margin: 0px 6px 0 9px;
+}
+div.subPanelContent h3 {
+ margin: 0px;
+ border: 0px;
+ padding: 0px;
+}
+div.subPanelContent ul {
+ margin: 0px;
+ padding: 0px;
+ list-style-type: none;
+}
+div.subPanelContent ul li {
+ display: none;
+}
+div.subPanelContent ul li.selected {
+ display: block;
+}
+.downloadOfflineCopy {
+ display: inline-block;
+ height: 20px;
+ cursor: pointer;
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#59bc4c), to(#448833));
+ background: -moz-linear-gradient(0% 100% 90deg, #448833, #59bc4c);
+ border-radius: 5;
+ -moz-border-radius: 5;
+ -webkit-border-radius: 5;
+ border: 1px solid #51a23d;
+ padding-top: 4px;
+ padding-left: 15px;
+ padding-right: 15px;
+ padding-bottom: 2px;
+ color: white;
+ font-weight: lighter;
+ text-shadow: -1px -1px 1px #448833, 1px 1px 1px #59bc4c;
+ text-decoration: none;
+}
+.downloadOfflineCopy:hover {
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#49a23d), to(#448833));
+ background: -moz-linear-gradient(0% 100% 90deg, #448833, #49a23d);
+}
+div.SimpleMessagePanel {
+ position: relative;
+ left: -225px;
+ top: -70px;
+ width: 450px;
+ height: 140px;
+}
+div.SimpleMessagePanel div.body {
+ padding: 20px;
+ padding-bottom: 15px;
+ background-color: #f1f1ef;
+ -webkit-box-shadow: 2px 2px 9px #333333;
+ -moz-box-shadow: 2px 2px 9px #333333;
+ box-shadow: 2px 2px 9px #333333;
+ border-radius: 10;
+ -moz-border-radius: 10;
+ -webkit-border-radius: 10;
+}
+div.SimpleMessagePanel div.body h3 {
+ font-size: 14pt;
+ font-weight: normal;
+ margin: 0px;
+ padding-top: 4px;
+ color: #787872;
+}
+div.SimpleMessagePanel div.body div.img {
+ width: 50px;
+ height: 50px;
+ float: left;
+ margin-right: 15px;
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9b5a), to(#ff6622));
+ background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9b5a);
+ border-radius: 25px;
+ -moz-border-radius: 25px;
+ -webkit-border-radius: 25px;
+}
+div.SimpleMessagePanel div.body div.img canvas {
+ width: 50px;
+ height: 50px;
+}
+div.SimpleMessagePanel div.body p {
+ margin: 0;
+ font-size: 10pt;
+ font-weight: normal;
+ color: #787872;
+ padding-top: 10px;
+ padding-bottom: 5px;
+ line-height: 1.3;
+}
+div.SimpleMessagePanel div.body div.buttonArea {
+ height: 40px;
+ clear: both;
+}
+div.SimpleMessagePanel div.body div.buttonArea > div {
+ float: right;
+ margin-left: 15px;
+ margin-top: 10px;
+}
+div.SimpleMessagePanel div.passphrase {
+ padding-left: 65px;
+}
+div.SimpleMessagePanel div.passphrase input {
+ width: 250px;
+ font-size: 14pt;
+ border: 1px solid #bb4924;
+ color: #333366;
+ background-color: white;
+ padding: 2px 5px;
+ height: 28px;
+}
+div.SimpleMessagePanel div.progressBarWrapper {
+ margin-left: 80px;
+}
+/* @end */
+/* @group Javascript Alert */
+div#javaScriptAlert div.mask {
+ position: fixed;
+ top: 0px;
+ left: 0px;
+ right: 0px;
+ bottom: 0px;
+ background-color: black;
+ z-index: 1001;
+ -moz-opacity: 0.7;
+ opacity: .70;
+ filter: alpha(opacity=70);
+}
+div#javaScriptAlert div.header {
+ height: 34px;
+ width: 468;
+ background-image: url(./images/old/alert/header.png);
+}
+div#javaScriptAlert div.body {
+ background-image: url(./images/old/alert/body.png);
+ padding: 0px 20px 10px 20px;
+}
+/*
+div#javaScriptAlert div.body div.alert {
+ padding-left: 100px;
+ background: url(./images/old/alert/alert.png) no-repeat;
+}
+*/
+/*div#javaScriptAlert div.body img.alert {*/
+div#javaScriptAlert div.body div.alertLogo {
+ float: left;
+ background-image: url(./images/old/alert/alert.png);
+ width: 88px;
+ height: 88px;
+}
+div#javaScriptAlert div.body div.alert {
+ padding-left: 100px;
+}
+div#javaScriptAlert div.footer {
+ height: 34px;
+ width: 468;
+ background-image: url(./images/old/alert/footer.png);
+}
+div#javaScriptAlert div.message {
+ position: relative;
+ top: -150px;
+ z-index: 1002;
+ /*
+ left: 100px;
+ right: 100px;
+*/
+
+ margin-left: auto;
+ margin-right: auto;
+ max-width: 468px;
+}
+div#javaScriptAlert div.message h1 {
+ font-size: 16pt;
+ margin: 0px;
+ color: #ff5930;
+}
+div#javaScriptAlert div.message p {
+ margin-top: 0px;
+ color: #999999;
+}
+div#javaScriptAlert div.message h3 {
+ font-size: 12pt;
+ margin-bottom: 0px;
+ color: #ff5930;
+}
+div#javaScriptAlert div.message h5 {
+ margin: 0px;
+ color: #999999;
+}
+/* @end */
+/* @group Components
+ */
+/* @group LoginProgress */
+div.LoginProgress {
+ position: relative;
+ left: -190px;
+ top: -100px;
+ width: 380px;
+ height: 200px;
+ /* background: url(./images/old/loginProgress/background.png); */
+
+ background-color: #d7d7c0;
+ -webkit-border-radius: 20px;
+ -moz-border-radius: 20px;
+ border-radius: 20px;
+ -webkit-box-shadow: 5px 5px 7px rgba(0, 0, 0, 0.6);
+ -moz-box-shadow: 5px 5px 7px rgba(0, 0, 0, 0.6);
+ box-shadow: 5px 5px 7px rgba(0, 0, 0, 0.6);
+}
+div.LoginProgress div.header {
+ height: 40px;
+}
+div.LoginProgress div.header h3 {
+ font-size: 12pt;
+ font-weight: normal;
+ margin: 0px;
+ color: #777777;
+ padding-top: 13px;
+ padding-left: 18px;
+}
+div.LoginProgress div.body {
+ height: 120px;
+ overflow: auto;
+ padding-left: 20px;
+ padding-right: 20px;
+ background-color: #f1f1e9;
+ /*
+ margin-left: 19px;
+ margin-right: 18px;
+*/
+
+}
+div.LoginProgress div.body div.img {
+ margin: 10px;
+ width: 50px;
+ height: 50px;
+ float: left;
+}
+div.LoginProgress div.body div.img.ALERT {
+ /* background-image: url(./images/old/simpleMessageBox/Alert.png); */
+
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9955), to(#ff6622), color-stop(1, #333333));
+ background: -moz-linear-gradient(0% 100% 90deg, #ff6622, #ff9955);
+ -webkit-border-radius: 25px;
+ -moz-border-radius: 25px;
+ border-radius: 25px;
+}
+div.LoginProgress div.body div.img.ALERT canvas {
+ width: 50px;
+ height: 50px;
+ /* background-image: url(./images/old/simpleMessageBox/excalmationPoint.png); */
+
+}
+div.LoginProgress div.body div.loadingBar {
+ position: relative;
+ top: 51px;
+ left: 60px;
+}
+div.LoginProgress div.body div.errorBox p {
+ color: #787872;
+ padding-top: 20px;
+ padding-left: 80px;
+}
+div.LoginProgress div.footer {
+ margin-left: 19px;
+ margin-right: 18px;
+}
+/*
+div.LoginProgress div.footer a {
+ text-decoration: none;
+ text-align: center;
+ color: #787872;
+ display: block;
+ font-weight: bold;
+ font-size: 11pt;
+ width: 100px;
+ margin-top: 11px;
+ margin-left: auto;
+ margin-right: auto;
+}
+*/
+div.LoginProgress div.buttonArea {
+ padding-top: 6px;
+ text-align: center;
+}
+div.LoginProgress div.button {
+ display: inline-block;
+}
+div.LoginProgress div.footer a:hover {
+ color: #515247;
+}
+/* @end */
+/* @group SimpleMessagePanel */
+/* -> SimpleMessagePanel.less
+div.SimpleMessagePanel {
+ position: relative;
+ left: -225px;
+ top: -70px;
+ width: 450px;
+ height: 140px;
+//background: url(./images/old/loginProgress/background.png);
+ background-color: #f1f1ef;
+ .border-radius(10);
+}
+//div.SimpleMessagePanel div.header {
+// height: 17px;
+// background: url(./images/old/simpleMessageBox/background_header.png) no-repeat;
+}
+div.SimpleMessagePanel div.body {
+/ *
+ height: 120px;
+ overflow: auto;
+ margin-left: 19px;
+ margin-right: 18px;
+* /
+
+// background: url(./images/old/simpleMessageBox/background_body.png) repeat-y;
+// padding-left: 25px;
+// padding-right: 25px;
+// padding-top: 10px;
+ padding: 20px;
+ .box-shadow (2px, 2px, 9px, @Global_shadow-color);
+}
+div.SimpleMessagePanel div.body h3 {
+ font-size: 14pt;
+ font-weight: normal;
+ margin: 0px;
+ padding-top: 4px;
+ color: #787872;
+}
+div.SimpleMessagePanel div.body div.img {
+ width: 60px;
+ height: 60px;
+ float: left;
+ margin-right: 10px;
+
+ .graduated-background (#ff6622, #ffad79);
+ .border-radius(30);
+}
+div.SimpleMessagePanel div.body div.img canvas {
+ width: 60px;
+ height: 60px;
+}
+div.SimpleMessagePanel div.body p {
+ margin: 0;
+ font-size: 10pt;
+ font-weight: normal;
+ color: #787872;
+ padding-top: 10px;
+ padding-bottom: 5px;
+ line-height: 1.3;
+}
+div.SimpleMessagePanel div.body div.img.ALERT {
+// background: url(./images/old/simpleMessageBox/Alert.png) no-repeat;
+}
+div.SimpleMessagePanel div.body div.img.INFO {
+// background: url(./images/old/simpleMessageBox/Info.png) no-repeat;
+}
+div.SimpleMessagePanel div.body div.buttonArea {
+ height: 40px;
+ clear: both;
+}
+div.SimpleMessagePanel div.body div.buttonArea > div {
+ float: right;
+ margin-left: 15px;
+ margin-top: 10px;
+}
+div.SimpleMessagePanel div.footer {
+ height: 25px;
+// background: url(./images/old/simpleMessageBox/background_footer.png) no-repeat;
+}
+div.SimpleMessagePanel div.passphrase {
+ padding-left: 65px;
+}
+div.SimpleMessagePanel div.passphrase input {
+ width: 250px;
+ font-size: 14pt;
+ border: 1px solid #bb4924;
+ color: #333366;
+ background-color: white;
+ padding: 2px 5px;
+ height: 28px;
+}
+div.SimpleMessagePanel div.progressBarWrapper {
+ margin-left: 80px;
+}
+*/
+/* @end */
+/* @group Button */
+/* -> Button.less
+div.button_wrapper {
+ height: 32px;
+ background: url(./images/old/button/default_left.png) no-repeat;
+ cursor: pointer;
+}
+div.button_wrapper.hover {
+ background: url(./images/old/button/hover_left.png) no-repeat;
+}
+div.button_wrapper.clicked {
+ background: url(./images/old/button/clicked_left.png) no-repeat;
+}
+div.button_bodyWrapper {
+ height: 32px;
+ margin-left: 6px;
+ padding-right: 6px;
+ background: url(./images/old/button/default_main.png) repeat-x right 0;
+}
+div.button_wrapper.hover div.button_bodyWrapper {
+ background: url(./images/old/button/hover_main.png) repeat-x right 0;
+}
+div.button_wrapper.clicked div.button_bodyWrapper {
+ background: url(./images/old/button/clicked_main.png) repeat-x right 0;
+}
+div.button_body {
+ text-align: center;
+ min-width: 60px;
+ padding: 0px 7px;
+ padding-top: 8px;
+}
+div.button_body span {
+ font-size: 11pt;
+ color: white;
+}
+div.button_wrapper.default div.button_body span {
+ font-weight: bold;
+}
+/ *
+div.button_footer {
+ margin: 0px;
+ height: 31px;
+ width: 6px;
+ background: green url(./images/old/button/default_right.png) no-repeat;
+}
+* /
+*/
+/* @end */
+/* @group Password enthropy */
+input.entropyLevelIndicator {
+ background: url(./images/old/passwordField/background.png) no-repeat 0 26px;
+}
+div.passwordEntropyWrapper {
+ padding: 0px;
+ border: 1px solid #bb4924;
+ border-top: 0px;
+ margin-bottom: 4px;
+ background-color: white;
+ margin-right: 3px;
+ margin-top: -2;
+}
+div.passwordEntropy {
+ height: 4px;
+ font-size: 1pt;
+ background: url(./images/old/entropyBackground.gif) repeat-x 0 0;
+ line-height: 3px;
+}
+div.messageBox {
+ position: absolute;
+ width: 409px;
+ height: 29px;
+ top: 23px;
+ left: 204px;
+ background: url(./images/old/main/messageBoxBackground.png);
+}
+div.messageBox h3 {
+ display: inline-block;
+ color: #342f6b;
+ font-weight: bold;
+ margin: 7px 2px 0px 12px;
+ font-size: 10pt;
+}
+body.ext-gecko div.messageBox h3 {
+ display: -moz-inline-box;
+}
+div.messageBox h1 {
+ color: #342f6b;
+ display: inline;
+ font-weight: normal;
+ margin: 0px 1px;
+ font-size: 9pt;
+}
+div.messageBox a {
+ display: block;
+ width: 20px;
+ height: 20px;
+ float: right;
+ position: absolute;
+ right: 5px;
+ top: 4px;
+ background-image: url(./images/old/main/messageBoxCloseButton.png);
+}
+div.messageBox a:hover {
+ background-image: url(./images/old/main/messageBoxCloseButtonActive.png);
+}
+/* @end */
+/* @group Side panels */
+/* @end */
+/* @end */
+/* @group MainPanels */
+div.mainPanels {
+ float: left;
+ width: 833px;
+ margin-top: -38px;
+ /*
+ position: relative;
+ width: 100%;
+ min-height: 600px;
+ top: -40px;
+ left: 250px;
+*/
+
+}
+div.mainFooter {
+ clear: both;
+}
+/* @end */
+/* @group Grids */
+/* @group grid Component */
+/* @group delete */
+/*div.body div.rows table.rows tbody tr td.delete */
+div.delete,
+div.new {
+ padding-left: 5px;
+ height: 19px;
+}
+div.new span,
+div.delete span {
+ margin: 0px;
+ padding: 0px;
+ border: 0px;
+ display: inline-block;
+ height: 19px;
+ padding-right: 6px;
+}
+div.new span a,
+div.delete span a {
+ white-space: nowrap;
+}
+div.delete:hover {
+ background: url(./images/old/delete_background_left.png) no-repeat 0;
+}
+div.delete:hover span {
+ background: url(./images/old/delete_background.png) no-repeat right 0;
+}
+div.new:hover {
+ background: url(./images/old/new_background_left.png) no-repeat 0;
+}
+div.new:hover span {
+ background: url(./images/old/new_background.png) no-repeat right 0;
+}
+/*
+tr.selected div.delete {
+ background: url(./images/old/delete_background_left.png) no-repeat 0;
+}
+tr.selected div.delete span {
+ background: url(./images/old/delete_background.png) no-repeat right 0;
+}
+*/
+div.body div.rows table.rows tbody tr td.delete div.delete span a {
+ visibility: hidden;
+ font-size: 8pt;
+ vertical-align: -13px;
+ color: black;
+}
+div.body div.rows table.rows tbody tr.selected td.delete div.delete span a {
+ visibility: visible;
+}
+div.body div.rows table.rows tbody tr:hover td.delete div.delete span a {
+ visibility: visible;
+}
+div.body div.rows table.rows tbody tr:hover td.delete div.delete:hover span a {
+ color: white;
+}
+/*
+div.body div.rows table.rows tbody tr.selected td.delete div.delete span a {
+ color: white;
+}
+*/
+/* @end */
+/* @group header */
+div.gridComponent table.rows thead tr th {
+ text-align: left;
+ height: 30px;
+ vertical-align: bottom;
+}
+div.gridComponent table.rows thead tr th.sortable span {
+ cursor: pointer;
+}
+div.gridComponent table.rows thead tr th.sortable span a {
+ margin-left: 5px;
+ padding-left: 10px;
+}
+div.gridComponent table.rows thead tr th.directLoginTH {
+ width: 420px;
+}
+div.gridComponent table.rows thead tr th.latestUpdateTH {
+ width: 100px;
+}
+div.gridComponent table.rows thead tr th.commandsTH {
+ width: 150px;
+}
+div.gridComponent table.rows thead a {
+ text-decoration: none;
+}
+div.gridComponent table.rows thead span {
+ font-weight: normal;
+ font-size: 9pt;
+ line-height: 20px;
+}
+div.gridComponent div.header div.headerSlot {
+ float: right;
+}
+/* @end */
+div.mainPanels div.gridComponent div.body table.rows td.favicon {
+ padding-left: 25px;
+}
+div.mainPanels div.gridComponent div.body table.rows td.favicon img {
+ width: 16px;
+ height: 16px;
+ border: 0px;
+}
+/* @end */
+/* @group Card Grid */
+/* @group DirectLogin links */
+div.gridComponent th.directLoginTH span {
+ margin-left: 7px;
+}
+td.card_directLogins div {
+ display: inline-table;
+}
+td.card_directLogins span {
+ display: inline-block;
+}
+/*
+td.card_directLogins a {
+ display: inline-table;
+ height: 19px;
+
+ padding-right: 7px;
+}
+
+td.card_directLogins a:hover {
+ background: url(./images/old/directLink_background.png) right 0;
+}
+*/
+div.card_directLogin {
+ display: inline-block;
+ height: 19px;
+ padding-left: 7px;
+}
+div.card_directLogin_ellipses span {
+ padding-bottom: 2px;
+}
+div.card_directLogin div.card_directLogin_body {
+ display: inline-block;
+ height: 19px;
+ padding-right: 8px;
+ background-position: left;
+}
+div.card_directLogin div.card_directLogin_body a {
+ vertical-align: -14px;
+}
+/*div.card_directLogin:hover {*/
+div.card_directLogin:hover {
+ background: url(./images/old/directLink_background_left.png) no-repeat 0 0;
+}
+/*div.card_directLogin:hover div {*/
+div.card_directLogin:hover div.card_directLogin_body {
+ background: url(./images/old/directLink_background.png) right 0;
+}
+/* @group DirectLogin Popup */
+div.DirectLoginListPopup {
+ position: absolute;
+ width: 184px;
+}
+div.DirectLoginListPopup div.DirectLoginListPopup_body {
+ background-image: url(./images/old/directLogins_background.png);
+ padding-top: 8px;
+}
+div.DirectLoginListPopup div.DirectLoginListPopup_footer {
+ height: 8px;
+ background-image: url(./images/old/directLogins_background_bottom.png);
+}
+div.DirectLoginListPopup div.DirectLoginListPopup_body ul {
+ margin: 0px;
+ padding-left: 13px;
+ list-style: none;
+}
+div.DirectLoginListPopup div.DirectLoginListPopup_body ul li {
+ padding-top: 4px;
+ height: 20px;
+ padding-right: 10px;
+ white-space: nowrap;
+}
+div.DirectLoginListPopup div.DirectLoginListPopup_body ul li div {
+ padding-right: 10px;
+ overflow: hidden;
+}
+div.DirectLoginListPopup div.DirectLoginListPopup_body ul li img.favicon {
+ padding-left: 9px;
+ padding-right: 5px;
+}
+div.DirectLoginListPopup div.DirectLoginListPopup_body ul li a {
+ text-decoration: none;
+ color: white;
+ font-weight: normal;
+ font-size: 10pt;
+ vertical-align: 3px;
+ white-space: nowrap;
+ padding-right: 8px;
+}
+div.DirectLoginListPopup div.DirectLoginListPopup_body ul li:hover {
+ /* background-color: #a5a696; */
+
+ /* background-color: #7b7d70; */
+
+ background-color: rgba(123, 125, 112, 0.5);
+}
+div.DirectLoginListPopup div.DirectLoginListPopup_body ul li:hover a {
+ background: url(./images/old/directLink_no_background.png) right;
+}
+/* @end */
+/* @end */
+div.mainPanels div.gridComponent div.header {
+ /*
+ height: 90px;
+ background: url(./images/old/main/blocks/cardGridBackground.png) no-repeat;
+*/
+
+ background: url(./images/old/main/blocks/cardGridBackground.png) no-repeat;
+ padding-left: 40px;
+ padding-right: 40px;
+ padding-top: 20px;
+ padding-bottom: 10px;
+}
+div.mainPanels div.gridComponent div.header form.search {
+ height: 32px;
+ margin: 0px;
+}
+div.mainPanels div.gridComponent div.header form.search div.clearSearchButton {
+ position: absolute;
+ margin-left: 192px;
+ width: 22px;
+ height: 22px;
+ margin-top: 6px;
+ background: url(./images/old/filter/clearFilter_notSelected.png) no-repeat;
+}
+div.mainPanels div.gridComponent div.header form.search div.clearSearchButton:hover {
+ background: url(./images/old/filter/clearFilter_selected.png) no-repeat;
+ cursor: pointer;
+}
+div.mainPanels div.gridComponent div.header form.search div.search {
+ display: block;
+ float: left;
+ width: 217px;
+}
+div.mainPanels div.gridComponent div.header form.search input.search {
+ border: 1px solid #76786a;
+ color: #666666;
+ font-size: 12pt;
+ width: 100%;
+ padding: 4px;
+ padding-left: 24px;
+ padding-right: 26px;
+ background: #e8ecde url(./images/old/main/grid/search.png) no-repeat 2px 4px;
+}
+div.mainPanels div.gridComponent div.header form.search input.search.disabled {
+ disabled: disabled;
+}
+div.mainPanels div.gridComponent div.header form.search input.search.running {
+ background: #e8ecde url(./images/old/main/grid/running_search.gif) no-repeat 4px 5px;
+}
+div.mainPanels div.gridComponent div.body {
+ clear: both;
+ background: url(./images/old/main/blocks/cardGridBackground.png) repeat-y -836px;
+}
+div.mainPanels div.gridComponent div.footer {
+ background: url(./images/old/main/blocks/cardGridBackground.png) 834px -28px;
+ height: 35px;
+}
+div.mainPanels div.gridComponent div.body h1 {
+ margin: 0px;
+}
+div.mainPanels div.gridComponent div.body div.rows {
+ margin-left: 9px;
+ margin-right: 6px;
+ min-height: 582px;
+ background: url(./images/old/main/blocks/cardGridStripes.png) 0 7px;
+}
+div.mainPanels div.gridComponent.noRows div.body table.rows thead,
+div.mainPanels div.gridComponent.empty div.body table.rows thead {
+ visibility: hidden;
+}
+div.mainPanels div.gridComponent.empty div.body div.rows {
+ background: #eaebe6 url(./images/old/lock/background_star.png) no-repeat center center;
+}
+div.mainPanels div.gridComponent.noRows div.body div.rows {
+ background: #eaebe6;
+}
+div.mainPanels div.gridComponent div.body table.rows {
+ display: block;
+ width: 100%;
+}
+div.mainPanels div.gridComponent div.body table.rows tbody tr.odd.selected {
+ background-color: #a5a696;
+}
+div.mainPanels div.gridComponent div.body table.rows tbody tr.even.selected {
+ background-color: #a5a696;
+}
+div.mainPanels div.gridComponent div.body table.rows tbody tr.selected td a {
+ color: #f3f4eb;
+}
+div.mainPanels div.gridComponent div.body table.rows tbody tr.odd {
+ background-color: #d4d5cf;
+}
+div.mainPanels div.gridComponent div.body table.rows tbody tr.even {
+ background-color: #eaebe6;
+}
+div.mainPanels div.gridComponent div.body table.rows tbody tr.odd:hover {
+ background-color: #a5a696;
+}
+div.mainPanels div.gridComponent div.body table.rows tbody tr.even:hover {
+ background-color: #a5a696;
+}
+div.mainPanels div.gridComponent div.body table.rows tbody tr td {
+ height: 23px;
+ max-height: 23px;
+ /*
+ white-space: nowrap;
+ overflow: hidden;
+*/
+
+}
+div.mainPanels div.gridComponent div.body table.rows tbody tr td span {
+ color: #828479;
+ font-size: 10pt;
+}
+div.mainPanels div.gridComponent div.body table.rows tbody tr td a {
+ color: #828479;
+ font-size: 10pt;
+ text-decoration: none;
+}
+div.mainPanels div.gridComponent div.body table.rows tbody tr:hover td span {
+ color: #f3f4eb;
+}
+div.mainPanels div.gridComponent div.body table.rows tbody tr.selected td span {
+ color: #f3f4eb;
+}
+div.mainPanels div.gridComponent div.body table.rows tbody tr:hover td a {
+ color: #f3f4eb;
+}
+div.mainPanels div.gridComponent div.body table.rows tbody tr td.title a {
+ font-weight: bold;
+}
+div.mainPanels div.gridComponent div.body table.rows tbody tr td img.favicon {
+ float: right;
+ padding-right: 6px;
+}
+/* @group header */
+div.gridComponent table.rows thead img {
+ padding-left: 10px;
+ vertical-align: middle;
+}
+div.gridComponent table.rows thead tr th {
+ background-color: #eaebe6;
+ border-bottom: 1px solid #b3b4af;
+}
+div.gridComponent table.rows thead span {
+ color: #8c8f7e;
+}
+div.gridComponent table.rows thead tr th.unsorted span.sortable a {
+ background-image: url(./images/old/main/grid/unsorted.png);
+}
+div.gridComponent table.rows thead tr th.descending span.sortable a {
+ background-image: url(./images/old/main/grid/descending.png);
+}
+div.gridComponent table.rows thead tr th.ascending span.sortable a {
+ background-image: url(./images/old/main/grid/ascending.png);
+}
+div.gridComponent table.rows thead tr th.faviconTH {
+ width: 53px;
+}
+div.gridComponent table.rows thead tr th.titleTH {
+ width: 200px;
+ max-width: 200px;
+}
+div.gridComponent table.rows thead tr th.deleteTH {
+ width: 50px;
+}
+/* @end */
+/* @end */
+/* @group Direct login Grid */
+/*
+div.mainPanels div.directLoginGrid div.header {
+/*
+ height: 90px;
+ background: url(./images/old/main/blocks/cardGridBackground.png) no-repeat;
+* /
+}
+
+div.mainPanels div.directLoginGrid div.header form.search {
+ background: url(./images/old/main/blocks/directLoginGridBackground.png) no-repeat;
+ padding-left: 40px;
+ padding-top: 20px;
+ padding-bottom: 10px;
+ margin: 0px;
+}
+
+div.mainPanels div.directLoginGrid div.header form.search input.search {
+ border: 1px solid #76786a;
+ color: #666666;
+ font-size: 12pt;
+ padding: 4px;
+ background-color: #e8ecde;
+}
+
+div.mainPanels div.directLoginGrid div.header form.search input.searchButton {
+ background-color: #858877;
+ border: 0px;
+ color: white;
+ font-size: 10pt;
+}
+
+div.mainPanels div.directLoginGrid div.body {
+ background: url(./images/old/main/blocks/directLoginGridBackground.png) repeat-y -836px;
+}
+
+div.mainPanels div.directLoginGrid div.footer {
+ background: url(./images/old/main/blocks/directLoginGridBackground.png) 834px -28px;
+ height: 35px;
+}
+
+div.mainPanels div.directLoginGrid div.body h1 {
+ margin: 0px;
+}
+
+div.mainPanels div.directLoginGrid div.body div.rows {
+ margin-left: 9px;
+ margin-right: 6px;
+ min-height: 582px;
+ background: url(./images/old/main/blocks/directLoginGridStripes.png) 0 7px;
+}
+
+div.mainPanels div.directLoginGrid div.body table.rows {
+ display: block;
+ width: 100%;
+}
+
+div.mainPanels div.directLoginGrid div.body table.rows img {
+ border: 0px;
+}
+
+div.mainPanels div.directLoginGrid div.body table.rows tbody tr.even {
+ background-color: #787666;
+}
+
+div.mainPanels div.directLoginGrid div.body table.rows tbody tr.odd {
+ background-color: #646351;
+}
+
+div.mainPanels div.directLoginGrid div.body table.rows tbody tr.odd:hover {
+ background-color: #d1d4c6;
+}
+
+div.mainPanels div.directLoginGrid div.body table.rows tbody tr.even:hover {
+ background-color: #d1d4c6;
+}
+
+div.mainPanels div.directLoginGrid div.body table.rows tbody tr td {
+ height: 23px;
+ color: #e1e0d6;
+ font-size: 10pt;
+}
+
+div.mainPanels div.directLoginGrid div.body table.rows tbody tr:hover td {
+ color: #777867;
+}
+
+div.mainPanels div.directLoginGrid div.body table.rows tbody tr td.title {
+ font-weight: bold;
+}
+
+div.directLoginGrid div.body table.rows tbody tr a {
+ color: #e1e0d6;
+ text-decoration: none;
+}
+
+div.directLoginGrid div.body table.rows tbody tr:hover a {
+ color: #777867;
+}
+*/
+/* @group DirectLogin links */
+/*
+td.card_directLogins div {
+ display: inline-table;
+}
+
+td.card_directLogins span {
+ display: inline-table;
+}
+*/
+div.directLogin_directLogin {
+ display: inline-block;
+ height: 19px;
+ padding-left: 7px;
+}
+div.directLogin_directLogin div.directLogin_directLogin_body {
+ display: inline-block;
+ height: 19px;
+ padding-right: 8px;
+ background-position: left;
+}
+div.directLogin_directLogin div.directLogin_directLogin_body a {
+ vertical-align: -14px;
+}
+div.directLogin_directLogin:hover {
+ background: url(./images/old/directLink_background_left.png) no-repeat 0 0;
+}
+div.directLogin_directLogin:hover div.directLogin_directLogin_body {
+ background: url(./images/old/directLink_background.png) right 0;
+}
+table.rows tbody tr td div.directLogin_directLogin:hover div.directLogin_directLogin_body a {
+ color: #f3f4eb;
+}
+/* @end */
+/* @group header */
+div.directLoginGrid table.rows thead span {
+ color: #e1e0d6;
+}
+div.directLoginGrid table.rows thead tr th {
+ background-color: #787762;
+ border-bottom: 1px solid #999883;
+}
+div.directLoginGrid table.rows thead tr th.faviconTH {
+ min-width: 53px;
+ width: 53px;
+}
+div.directLoginGrid table.rows thead tr th.titleTH {
+ min-width: 250px;
+ width: 250px;
+}
+div.directLoginGrid table.rows thead tr th.titleTH span {
+ margin-left: 7px;
+}
+div.directLoginGrid table.rows thead tr th.strengthTH {
+ width: 100px;
+}
+div.directLoginGrid table.rows thead tr th.cardTitleTH {
+ width: 400px;
+}
+div.directLoginGrid table.rows thead tr th.bookmarkableLinkTH {
+ width: 64px;
+}
+div.directLoginGrid table.rows thead tr th.deleteTH {
+ width: 50px;
+}
+div.directLoginGrid table.rows thead tr th.latestAccessTH {
+ width: 100px;
+}
+div.directLoginGrid table.rows thead tr th.commandsTH {
+ width: 100px;
+}
+/*
+div.directLoginGrid table.rows thead a {
+ font-weight: normal;
+ text-decoration: none;
+ color: #e9e9df;
+ font-size: 9pt;
+ line-height: 20px;
+}
+*/
+div.directLoginGrid table.rows thead img {
+ padding-left: 10px;
+ vertical-align: middle;
+}
+div.directLoginGrid table.rows thead tr th.unsorted span.sortable a {
+ background: url(./images/old/main/grid/directLogins/unsorted.png) no-repeat;
+}
+div.directLoginGrid table.rows thead tr th.descending span.sortable a {
+ background: url(./images/old/main/grid/directLogins/descending.png) no-repeat;
+}
+div.directLoginGrid table.rows thead tr th.ascending span.sortable a {
+ background: url(./images/old/main/grid/directLogins/ascending.png) no-repeat;
+}
+/* @end */
+/* @end */
+/* @end */
+/* @end */
+/* @group other Panels */
+/* @group common styles */
+/*
+div.subPanelTabs ul {
+ margin: 0px;
+ margin-right: 7px;
+ padding: 0px;
+}
+div.subPanelTabs ul li {
+ display: inline-block;
+ vertical-align: middle;
+ /* width: 130px; * /
+
+ height: 50px;
+ /* border-right: 1px solid #a5a79c;
+ border-bottom: 1px solid #a5a79c;* /
+
+ border-right: 1px solid #eef0e3;
+ border-bottom: 1px solid #d5d5bc;
+}
+div.subPanelTabs ul li.first:hover {
+ /* background: url(./images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -9px -5px; * /
+
+}
+div.subPanelTabs ul li:hover {
+ /* background: url(./images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -45px -5px; * /
+
+ border-right: 1px solid #d5d5bc;
+ background-color: #eef0e3;
+}
+div.subPanelTabs ul li a {
+ color: #787872;
+ text-decoration: none;
+ display: block;
+ text-align: center;
+ padding-top: 15px;
+ padding-left: 20px;
+ padding-right: 20px;
+ font-size: 13pt;
+}
+div.subPanelTabs ul li.first {
+ /* background: url(./images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -9px -5px; * /
+
+ -webkit-border-top-left-radius: 20px;
+ -moz-border-radius-topleft: 20px;
+ border-top-left-radius: 20px;
+}
+div.subPanelTabs ul li.selected {
+ /* background: url(./images/old/main/blocks/otherPanelBackground_selected.png) no-repeat -45px -5px; * /
+
+ background-color: #eef0e3;
+ border-bottom: 1px solid #eef0e3;
+ border-right: 1px solid #d5d5bc;
+}
+div.subPanelTabs ul li.selected:hover {
+ border-right: 1px solid #d5d5bc;
+}
+div.subPanelTabs ul li.selected a {
+ color: #444440;
+}
+div.subPanelContent {
+ padding-top: 20px;
+ padding-left: 30px;
+ padding-right: 30px;
+ min-height: 280px;
+ color: #787872;
+ margin: 0px 6px 0 9px;
+}
+div.subPanelContent ul {
+ margin: 0px;
+ padding: 0px;
+ list-style-type: none;
+}
+div.subPanelContent ul li.selected {
+ display: block;
+}
+div.subPanelContent ul li {
+ display: none;
+}
+div.subPanelContent h3 {
+ margin: 0px;
+ border: 0px;
+ padding: 0px;
+}
+*/
+/* @end */
+/* @group mainPanels otherPanel */
+div.mainPanels div.otherPanel {
+ margin: 5px 10px;
+ background-color: #eef0e3;
+ -webkit-border-radius: 20px;
+ -moz-border-radius: 20px;
+ border-radius: 20px;
+ -webkit-box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6);
+ -moz-box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6);
+ box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6);
+}
+div.mainPanels div.otherPanel div.header {
+ /* background: url(./images/old/main/blocks/otherPanelBackground.png) no-repeat; */
+
+ /*
+ height: 90px;
+*/
+
+ background-color: #d5d5bc;
+ /* padding-left: 9px;
+ padding-top: 5px; */
+
+ margin: 0px;
+ margin-bottom: 0px;
+ -webkit-border-top-left-radius: 20px;
+ -webkit-border-top-right-radius: 20px;
+ -moz-border-radius-topleft: 20px;
+ -moz-border-radius-topright: 20px;
+ border-top-left-radius: 20px;
+ border-top-right-radius: 20px;
+}
+div.mainPanels div.otherPanel div.body {
+ /* background: url(./images/old/main/blocks/otherPanelBackground.png) repeat-y -836px; */
+
+ margin: 0px;
+ border: 0px;
+ padding: 0px;
+}
+div.mainPanels div.otherPanel div.footer {
+ /* background: url(./images/old/main/blocks/otherPanelBackground.png) 834px -18px; */
+
+ height: 45px;
+}
+div.mainPanels div.otherPanel div.body h1 {
+ margin: 0px;
+}
+/* @end */
+/* @group Account */
+form.changePassphrase div.currentCredentials,
+form.changePassphrase div.newPassphrase {
+ float: left;
+ padding: 10px 20px;
+}
+form.changePassphrase label {
+ display: inline-block;
+ width: 150px;
+}
+form.changePassphrase div.confirm {
+ clear: both;
+ padding: 10px 20px;
+}
+form.changePassphrase div.confirm label {
+ width: 500px;
+}
+div.accountPanel h3.manageOTP {
+ margin-top: 20px;
+ margin-left: -20px;
+ padding-top: 10px;
+ padding-left: 20px;
+ border-top: 1px solid #aaaaaa;
+}
+/* @end */
+/* @end */
+/* @group Message Panel (?) */
+/*
+div.messagePanelWrapper div.mask {
+ position: fixed;
+ top: 0px;
+ left: 0px;
+ right: 0px;
+ bottom: 0px;
+
+ background-color: black;
+ z-index:50001;
+
+ -moz-opacity: 0.0;
+ opacity:.0;
+ filter: alpha(opacity=0);
+/ *
+ -moz-opacity: 0.7;
+ opacity:.70;
+ filter: alpha(opacity=70);
+* /
+}
+
+div.messagePanelFrame {
+ border: 1px solid white;
+ z-index:50002;
+/ *
+ width: 443px;
+ height: 155px;
+ position: fixed;
+ top: 205px;
+ left: 260px;
+ margin-left: auto;
+ margin-right: auto;
+ max-width: 468px;
+* /
+}
+
+
+div.messagePanel {
+ position: fixed;
+ z-index:50003;
+ top: 0px;
+ left: 0px;
+/ *
+ margin-left: auto;
+ margin-right: auto;
+ max-width: 468px;
+ top: 200px;
+ left: 250px;
+ left: 100px;
+ right: 100px;
+* /
+}
+
+div.messagePanel div.header {
+ height: 34px;
+ width: 468;
+ background-image: url(./images/old/alert/header.png);
+}
+
+div.messagePanel div.body {
+ background-image: url(./images/old/alert/body.png);
+ padding: 0px 20px 10px 20px;
+ min-height: 100px;
+}
+/ *
+div#javaScriptAlert div.body div.alert {
+ padding-left: 100px;
+ background: url(./images/old/alert/alert.png) no-repeat;
+}
+* /
+
+div.messagePanel div.body img.alert {
+ float: left;
+}
+
+div.messagePanel div.body div.alert {
+ padding-left: 100px;
+}
+
+div.messagePanel div.footer {
+ height: 34px;
+ width: 468;
+ background-image: url(./images/old/alert/footer.png);
+}
+
+div.messagePanel div.message h1 {
+ font-size: 16pt;
+ margin: 0px;
+ color: #ff5930;
+}
+
+div.messagePanel div.message p {
+ margin-top: 0px;
+ color: #999999;
+}
+
+div.messagePanel div.message h3 {
+ font-size: 12pt;
+ margin-bottom: 0px;
+ color: #ff5930;
+}
+
+div.messagePanel div.message h5 {
+ margin: 0px;
+ color: #999999;
+}
+
+
+*/
+/* @end */
+/* @group LoginProgress (?) */
+/*
+div#loginProgress {
+ position: relative;
+ left: -198px;
+ top: -118px;
+ width: 397px;
+ height: 236px;
+ background: url(./images/old/loginProgress/background.png);
+}
+
+div#loginProgress div.header {
+ height: 52px;
+}
+
+div#loginProgress div.header h3 {
+ font-size: 12pt;
+ font-weight: normal;
+ margin: 0px;
+ color: #787872;
+ padding-top: 25px;
+ padding-left: 35px;
+}
+
+div#loginProgress div.body {
+ height: 120px;
+ overflow: auto;
+ margin-left: 19px;
+ margin-right: 18px;
+}
+
+div#loginProgress div.footer {
+ margin-left: 19px;
+ margin-right: 18px;
+}
+
+div#loginProgress div.footer a {
+ font-weight: bold;
+ text-decoration: none;
+ text-align: center;
+ color: #787872;
+ display: block;
+ font-size: 11pt;
+ width: 100px;
+ margin-top: 13px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+div#loginProgress div.footer a:hover {
+ color: #515247;
+}
+
+*/
+/* @end */
+div#modalDialogMask,
+div.modalDialogMask {
+ z-index: 20000;
+ /* position: absolute; */
+
+ position: fixed;
+ top: 0;
+ left: 0;
+ -moz-opacity: 0.5;
+ opacity: .50;
+ filter: alpha(opacity=50);
+ /* background-color: #cccccc; */
+
+ background-color: #000000;
+ width: 100%;
+ height: 100%;
+ zoom: 1;
+}
+div#modalDialogFrame,
+div.modalDialogFrame {
+ position: absolute;
+ /* border: 1px solid white; */
+
+ -moz-opacity: 0.5;
+ opacity: .50;
+ filter: alpha(opacity=50);
+ background-color: #333333;
+ z-index: 20001;
+ -webkit-border-radius: 20px;
+ -moz-border-radius: 20px;
+ border-radius: 20px;
+}
+div#modalDialog,
+div.modalDialog {
+ z-index: 20001;
+}
+/*div#modalDialog.scrollable,*/
+div.modalDialog.scrollable {
+ position: absolute;
+ top: 0;
+ left: 50%;
+}
+/*div#modalDialog.fixed,*/
+div.modalDialog.fixed {
+ position: fixed;
+ top: 40%;
+ left: 50%;
+}
+div#modalDialog div,
+div.modalDialog div {
+ z-index: 20002;
+ list-style-type: circle;
+}
+div.modalDialogMask.simpleMessagePanelMask {
+ z-index: 20010;
+}
+div.modalDialogFrame.simpleMessagePanelMask {
+ z-index: 20011;
+}
+div.modalDialog.simpleMessagePanelMask {
+ z-index: 20011;
+}
+div.modalDialog.simpleMessagePanelMask div {
+ z-index: 20012;
+}
+/* @group Bookmarklet */
+div.bookmarklet div.bookmarklet_link {
+ /*
+ padding-top: 5px;
+ padding-left: 4px;
+ padding-right: 3px;
+
+ float: right;
+ margin-top: 12px;
+ margin-right: 13px;
+*/
+
+ height: 34px;
+}
+div.bookmarklet div.bookmarklet_link a {
+ color: #838975;
+ text-decoration: none;
+ font-weight: bold;
+ font-size: 10pt;
+ /*
+ display: block;
+ text-align: right;
+ padding-top: 7px;
+ padding-right: 11px;
+ padding-bottom: 6px;
+*/
+
+}
+div.bookmarklet div.bookmarklet_link a div.icon {
+ background: url(./images/old/bookmarklet/placeholder_icon.png) no-repeat 0 0;
+ float: left;
+ width: 34px;
+ height: 34px;
+}
+div.bookmarklet div.bookmarklet_link a:hover div.icon {
+ background: url(./images/old/bookmarklet/placeholder_selected_icon.png) no-repeat 0 0;
+}
+div.bookmarklet div.bookmarklet_link a div.text {
+ display: block;
+ float: right;
+ background: url(./images/old/bookmarklet/placeholder.png) no-repeat right 0;
+ white-space: nowrap;
+ height: 34px;
+}
+div.bookmarklet div.bookmarklet_link a:hover div.text {
+ background: url(./images/old/bookmarklet/placeholder_selected.png) no-repeat right 0;
+}
+div.bookmarklet div.bookmarklet_link a div.text span {
+ display: block;
+ padding-top: 10px;
+ padding-right: 10px;
+ padding-left: 6px;
+ clear: both;
+}
+/* @end */
+/* @group Tooltip */
+/*
+div#Clipperz_PM_UI_Common_Components_Tooltip_wrapperNode {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+}
+*/
+/* @end */
+/* @group News */
+/*
+div#news {
+ top: 11px;
+ left: 240px;
+ width: 353px;
+ height: 85px;
+ padding-top: 4px;
+ position: absolute;
+ overflow: hidden;
+ background: url(./images/old/note.png) 1px 3px;
+}
+
+div#news.hidden {
+ display: none;
+}
+
+div#news div.close {
+ display: inline;
+ margin-top: 6px;
+ margin-left: 17px;
+ float: left;
+ width: 15px;
+}
+
+div#news div.close a {
+ text-decoration: none;
+ color: #929c1b;
+}
+
+div#news div.close a:hover {
+ text-decoration: none;
+ color: #3d420b;
+}
+
+div#news div#newsframe {
+ display: block;
+ overflow: hidden;
+ width: 305px;
+ height: 70px;
+}
+
+div#news div#newsframe iframe {
+ border: 0px;
+}
+*/
+/* --------------------------------------- */
+div#news {
+ top: -82px;
+ left: 240px;
+ width: 310px;
+ height: 90px;
+ position: absolute;
+ /* background: url(./images/old/tips/Tips_background.png) 0 -5px; */
+
+ background-color: #616474;
+ -webkit-border-bottom-right-radius: 8px;
+ -webkit-border-bottom-left-radius: 8px;
+ -moz-border-radius-bottomright: 8px;
+ -moz-border-radius-bottomleft: 8px;
+ border-bottom-right-radius: 8px;
+ border-bottom-left-radius: 8px;
+ -webkit-box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6);
+ -moz-box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6);
+ box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.6);
+}
+/*
+div#news.open {
+ background: url(./images/old/tips/Tips_open.png) 0 -5px;
+}
+
+div#news.hidden {
+ background: url(./images/old/tips/Tips_close.png) 0 -5px;
+}
+*/
+/*
+div#news div#newsframe {
+ margin-left: 10px;
+ margin-right: 10px;
+ height: 75px;
+ overflow: hidden;
+}
+div#news div#newsframe.loading {
+ background: url(./images/old/loading/news.gif) no-repeat center center;
+}
+div#news div#newsframe iframe {
+ width: 290px;
+ border: 0px;
+ color: #616474;
+ background-color: #616474;
+}
+div#news div.grip {
+ width: 310px;
+ height: 12px;
+ margin-top: 2px;
+ cursor: pointer;
+}
+div#news.open div.grip {
+ background: url(./images/old/tips/close.png) no-repeat center 6px;
+}
+div#news.hidden div.grip {
+ background: url(./images/old/tips/open.png) no-repeat center 6px;
+}
+*/
+/* @end */
+/* @group mainDialog */
+div.mainDialog {
+ position: relative;
+ left: -263px;
+ width: 525px;
+ height: 325px;
+}
+div.scrollable div.mainDialog {
+ top: 0px;
+}
+div.fixed div.mainDialog {
+ top: -118px;
+}
+div.mainDialog div.header {
+ height: 55px;
+ background: url(./images/old/cardDialog/background_header.png) no-repeat;
+}
+div.mainDialog div.header div.title {
+ padding-top: 16px;
+ padding-left: 20px;
+ padding-right: 20px;
+}
+div.mainDialog div.header div.title input {
+ width: 100%;
+ display: block;
+ font-size: 16pt;
+ margin: 0px;
+ border: 0px;
+ padding: 3px 10px;
+ color: #787872;
+ border: 1px solid #cccec0;
+ background-color: #cccec0;
+}
+div.mainDialog div.header div.title h3 {
+ display: block;
+ font-size: 16pt;
+ color: #787872;
+ margin: 0px;
+ border: 0px;
+ padding: 3px 10px;
+}
+div.mainDialog div.header div.title.selectedField input,
+div.mainDialog div.header div.title:hover input {
+ border: 1px solid #515247;
+ background-color: #b5b7ab;
+}
+div.mainDialog div.header div.title.disabled:hover input {
+ border: 1px solid #cccec0;
+ background-color: #cccec0;
+}
+div.mainDialog div.body {
+ padding-top: 0px;
+ padding-left: 10px;
+ padding-right: 9px;
+ min-height: 200px;
+ background: url(./images/old/cardDialog/background_body.png) repeat-y;
+}
+div.mainDialog div.body div.mask {
+ display: none;
+}
+div.mainDialog.loading div.body div.mask {
+ display: block;
+ position: absolute;
+ top: 55px;
+ left: 10px;
+ right: 9px;
+ bottom: 70px;
+ z-index: 1001;
+ background-color: white;
+ padding-left: 146px;
+ padding-right: 146px;
+ padding-top: 70px;
+}
+div.mainDialog.loading div.body .tabPanels {
+ display: none;
+}
+div.mainDialog.loading div.body div.mask h3.progressDescription {
+ margin: 0px;
+ text-align: center;
+ padding-bottom: 10px;
+ color: #cccec0;
+ font-size: 14pt;
+ font-weight: normal;
+}
+div.loadingBar {
+ height: 22px;
+ width: 214px;
+ background: url(./images/old/loading/loadingBar.gif) no-repeat center top;
+}
+div.loadingBar div.loadingBarProgressBox {
+ padding: 2px;
+}
+div.loadingBar div.loadingBarProgress {
+ height: 18px;
+ width: 0%;
+ /* background-repeat: no-repeat; */
+
+ background-color: rgba(248, 79, 0, 0.6);
+ -webkit-border-radius: 9px;
+ -moz-border-radius: 9px;
+ border-radius: 9px;
+}
+/*
+div.loadingBar div.loadingBarProgress div.loadingBarProgress_left {
+ height: 100%;
+ max-width: 8px;
+ background: url(./images/old/loading/loadingBarProgress.png) no-repeat 0;
+}
+
+div.loadingBar div.loadingBarProgress div.loadingBarProgress_right {
+ position: relative;
+ height: 100%;
+ margin-left: 8px;
+ background: url(./images/old/loading/loadingBarProgress.png) no-repeat right;
+ top: -22px;
+}
+*/
+div.mainDialog div.body div ul {
+ padding: 0px;
+ clear: both;
+ margin: 0px;
+ list-style-type: none;
+}
+div.mainDialog div.body div.tabs {
+ height: 20px;
+}
+div.mainDialog div.body div.tabs ul.tabs {
+ height: 33px;
+ /* border-bottom: 1px solid #515247;*/
+
+ /* background: #cccec0 url(./images/old/cardDialog/tabs_shadow.png) repeat-x 0 -5px;*/
+
+ background: url(./images/old/cardDialog/tabs_background.png) repeat-x;
+}
+div.mainDialog div.body div.tabs ul.tabs li {
+ /* width: 150px; */
+
+ height: 32px;
+ font-size: 11pt;
+ text-align: center;
+ border-right: 1px solid #515247;
+ float: left;
+ color: #787872;
+ border-bottom: 1px solid #515247;
+ background: #cccec0 url(./images/old/cardDialog/tabs_shadow.png) repeat-x 0 -5px;
+ cursor: pointer;
+}
+div.mainDialog div.body div.tabs ul.tabs li div {
+ display: none;
+}
+div.mainDialog div.body div.tabs ul.tabs li span {
+ display: block;
+ padding-top: 9px;
+ padding-bottom: 6px;
+ padding-left: 40px;
+ padding-right: 40px;
+}
+div.mainDialog div.body div.tabs ul.tabs li:hover {
+ color: #515247;
+}
+div.mainDialog div.body div.tabs ul.tabs li.disabled:hover {
+ color: #787872;
+ cursor: default;
+}
+div.mainDialog div.body div.tabs ul.tabs li.selected {
+ color: #515247;
+ background-color: #f1f2e9;
+ border-bottom: 1px solid #f1f2e9;
+ cursor: default;
+}
+div.mainDialog div.body div.tabs ul.tabs li.selected.disabled:hover {
+ color: #515247;
+}
+div.mainDialog div.body div.tabs ul.tabs li.selected div.backToDirectLoginList {
+ position: absolute;
+ display: block;
+ top: 63px;
+ left: 140;
+ width: 20px;
+}
+div.mainDialog div.body div.tabs ul.tabs li.selected div.addDirectLoginButton {
+ position: absolute;
+ display: block;
+ top: 63px;
+ left: 265px;
+ width: 20px;
+}
+div.mainDialog div.body div.tabs ul.tabs li.selected div span {
+ padding: 0px;
+ margin: 0px;
+}
+div.mainDialog div.body div.tabs ul.tabs li.selected div:hover {
+ cursor: pointer;
+}
+div.mainDialog div.body .tabPanels {
+ clear: both;
+}
+div.mainDialog div.body ul.tabPanels li.tabPanel {
+ display: none;
+}
+div.mainDialog div.body ul.tabPanels li.tabPanel.selected {
+ display: block;
+}
+div.mainDialog div.body ul.tabPanels li.tabPanel.selected h2 {
+ margin: 0px;
+ text-align: center;
+ padding-top: 50px;
+ color: #787872;
+}
+div.mainDialog div.body ul.tabPanels li.tabPanel.selected div.wizardStepDescription {
+ margin: 0px 20px 10px;
+ font-size: 10pt;
+ color: b0b0b0;
+ font-style: italic;
+ text-align: center;
+}
+div.mainDialog div.footer {
+ height: 70px;
+ background: url(./images/old/cardDialog/background_footer.png) no-repeat 0 -14px;
+}
+div.mainDialog div.footer div.buttonArea {
+ padding-left: 40px;
+ padding-right: 40px;
+ padding-top: 15px;
+}
+div.mainDialog div.footer div.buttonArea div {
+ padding-left: 20px;
+ padding-right: 20px;
+ float: left;
+ font-weight: bold;
+ color: #787872;
+}
+div.mainDialog div.footer div.buttonArea div.disabled {
+ color: #b1b1a8;
+}
+div.mainDialog div.footer div.buttonArea div.disabled:hover {
+ color: #b1b1a8;
+ cursor: default;
+}
+div.mainDialog div.footer div.buttonArea div:hover {
+ color: #515247;
+ cursor: pointer;
+}
+div.mainDialog div.footer div.buttonArea div.save {
+ float: right;
+}
+/* @end */
+/* @group Card Dialog */
+div.addDirectLoginButton {
+ height: 20px;
+ width: 20px ;
+ background: url(./images/old/cardDialog/addDirectLogin_disabled_background.png) no-repeat -9px -9px;
+ color: white;
+ font-weight: bold;
+}
+div.addDirectLoginButton span {
+ display: block;
+ height: 20px;
+ width: 20px ;
+}
+div.addDirectLoginButton:hover {
+ background: url(./images/old/cardDialog/addDirectLogin_background.png) no-repeat -9px -9px;
+}
+/* @group Card Dialog - Direct Login */
+div.directLoginsComponentContainer {
+ overflow: hidden;
+ /* background-color: green; */
+
+}
+div.CardDialog div.directLogins {
+ /* background-color: yellow; */
+
+ padding-top: 2px;
+}
+div.CardDialog div.addNewDirectLoginSplash {
+ margin: 0px 80px;
+}
+div.CardDialog div.addNewDirectLoginSplash h3 {
+ color: #aaaaaa;
+ text-align: center;
+ font-weight: normal;
+ font-size: 11pt;
+}
+div.CardDialog div.addNewDirectLoginSplash a {
+ display: block;
+ text-decoration: none;
+ margin-left: auto;
+ margin-right: auto;
+ width: 190px;
+ /* color: #787878; */
+
+ color: rgba(255, 98, 6, 0.75);
+ text-transform: uppercase;
+ background: url(./images/old/cardDialog/addDirectLogin_disabled_background.png) no-repeat right;
+}
+div.CardDialog div.addNewDirectLoginSplash a span {
+ text-align: center;
+}
+div.CardDialog div.addNewDirectLoginSplash a:hover {
+ color: #ff6206;
+ background: url(./images/old/cardDialog/addDirectLogin_background.png) no-repeat right;
+}
+div.CardDialog div.directLoginItem {
+ clear: both;
+ min-height: 32px;
+ padding-left: 10px;
+ padding-top: 4px;
+ padding-bottom: 2px;
+ /* width: 100px; */
+
+ max-height: 32px;
+ overflow: hidden;
+}
+div.CardDialog div.directLoginItem:hover {
+ background-color: #cccec0;
+}
+div.CardDialog div.addDirectLoginListItem {
+ min-height: 32px;
+ padding-left: 10px;
+ padding-top: 4px;
+ padding-bottom: 2px;
+ max-height: 32px;
+ overflow: hidden;
+ background: url(./images/old/cardDialog/addDirectLogin_disabled_background.png) no-repeat 22px 0;
+}
+div.CardDialog div.addDirectLoginListItem a {
+ display: block;
+ font-size: 11pt;
+ padding-top: 6px;
+ padding-left: 50px;
+ color: rgba(255, 98, 6, 0.75);
+ text-decoration: none;
+ text-transform: uppercase;
+}
+div.CardDialog div.addDirectLoginListItem:hover {
+ background: url(./images/old/cardDialog/addDirectLogin_background.png) no-repeat 22px 0;
+ color: #ff6206;
+ background-color: #cccec0;
+}
+div.CardDialog div.directLoginItem div.cardDialogRecordDirectLoginComponent_favicon img.favicon {
+ width: 32px;
+ height: 32px;
+ float: left;
+}
+div.CardDialog div.directLoginItem div.cardDialogRecordDirectLoginComponent_label input {
+ float: left;
+ font-size: 11pt;
+ border: 0px;
+ padding: 5px;
+ color: #787872;
+ border: 1px solid #ededeb;
+ background-color: #ededeb;
+ height: 30px;
+ margin-left: 10px;
+ width: 68%;
+ margin-right: 5px;
+}
+div.CardDialog div.directLoginItem:hover div.cardDialogRecordDirectLoginComponent_label input {
+ border: 1px solid #515247;
+ background-color: #b5b7ab;
+}
+div.CardDialog div.directLoginItem > div.open {
+ float: left;
+ margin-top: 5px;
+ margin-right: 2px;
+ padding-left: 5px;
+ visibility: hidden;
+}
+div.CardDialog div.directLoginItem > div.edit,
+div.CardDialog div.directLoginItem > div.delete {
+ float: left;
+ margin-top: 5px;
+ margin-left: 3px;
+ padding-left: 5px;
+ visibility: hidden;
+}
+div.CardDialog div.directLoginItem > div.open a {
+ display: block;
+ width: 22px;
+ height: 22px;
+ background: url(./images/old/cardDialog/openDirectLogin.png) no-repeat 0 -2px;
+}
+div.CardDialog div.directLoginItem > div.open a:hover {
+ background: url(./images/old/cardDialog/openDirectLogin_selected.png) no-repeat 0 -2px;
+}
+div.CardDialog div.directLoginItem:hover > div.open,
+div.CardDialog div.directLoginItem:hover > div.edit,
+div.CardDialog div.directLoginItem:hover > div.delete {
+ visibility: visible;
+}
+div.CardDialog div.directLoginItem div.edit span {
+ padding-right: 6px;
+ display: block;
+}
+div.CardDialog div.directLoginItem div.open span a,
+div.CardDialog div.directLoginItem div.edit span a,
+div.CardDialog div.directLoginItem div.delete span a {
+ font-size: 8pt;
+ color: #666666;
+ text-decoration: none;
+ line-height: 19px;
+}
+div.CardDialog div.directLoginItem div.edit:hover {
+ background: url(./images/old/new_background_left.png) no-repeat;
+}
+div.CardDialog div.directLoginItem div:hover span a {
+ color: white;
+}
+div.CardDialog div.directLoginItem div.edit:hover span {
+ background: url(./images/old/new_background.png) no-repeat right center;
+}
+div.CardDialog div.directLoginItem div.delete:hover {
+ background: url(./images/old/delete_background_left.png) no-repeat;
+}
+div.CardDialog div.directLoginItem div.delete:hover span {
+ background: url(./images/old/delete_background.png) right;
+}
+/* @group Direct Login Editing */
+div.CardDialog div.directLoginEditDetail {
+ position: relative;
+ /* background-color: red; */
+
+}
+/*
+div.CardDialog div.directLoginEditDetail div.back {
+ float: left;
+ width: 30px;
+}
+
+div.CardDialog div.directLoginEditDetail div.back a {
+ display: block;
+ padding: 5px;
+ text-decoration: none;
+ font-weight: bold;
+ font-size: 14pt;
+ color: #cccec0;
+
+ background: url(./images/old/cardDialog/back.png) no-repeat 5px 14px;
+ width: 20px;
+ height: 200px;
+}
+
+div.CardDialog div.directLoginEditDetail div.back a:hover {
+ color: #7f7872;
+ background: url(./images/old/cardDialog/back_selected.png) no-repeat 5px 14px;
+}
+*/
+form.directLoginEditingForm div.title,
+form.directLoginEditingForm div.favicon {
+ padding: 5px 10px;
+}
+form.directLoginEditingForm div.title.disabled:hover {
+ background-color: #f1f2e9;
+}
+form.directLoginEditingForm div.title:hover,
+form.directLoginEditingForm div.favicon:hover {
+ background-color: #cccec0;
+}
+form.directLoginEditingForm div.title input {
+ /* width: 100%; */
+
+ margin: 0px;
+ margin-left: 10px;
+ width: 440px;
+}
+form.directLoginEditingForm div.favicon {
+ padding-left: 10px;
+}
+/*form.directLoginEditingForm div.favicon img.favicon {*/
+form.directLoginEditingForm img.favicon {
+ float: left;
+ width: 32px;
+ height: 32px;
+}
+form.directLoginEditingForm div.favicon input {
+ margin-top: 1px;
+ width: 465px;
+}
+form.directLoginEditingForm div.disabled:hover input,
+form.directLoginEditingForm div input {
+ font-size: 11pt;
+ border: 0px;
+ padding: 5px;
+ color: #787872;
+ border: 1px solid #ededeb;
+ background-color: #ededeb;
+ height: 30px;
+}
+form.directLoginEditingForm div:hover input {
+ border: 1px solid #515247;
+ background-color: #b5b7ab;
+}
+/* @group Bindings */
+div.bindings div.binding > span.formFieldName {
+ display: inline-block;
+ width: 140px;
+ overflow: hidden;
+ margin-right: 10px;
+ color: #6b5147;
+ text-overflow: ellipsis;
+}
+div.bindings div.binding {
+ padding-bottom: 3px;
+}
+div.bindings div.binding > input {
+ margin-right: 10px;
+ background: #cccec0;
+ width: 150px;
+ border: 1px solid #cccec0;
+}
+div.bindings div.binding:hover > input {
+ border: 1px solid #cccec0;
+}
+div.bindings div.binding > select {
+ font-size: 13pt;
+}
+div.bindings div.binding span.fieldLock {
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+ margin-right: 3px;
+}
+div.bindings div.binding.showLocked input {
+ background: url(./images/old/cardDialog/password_background.png) no-repeat 2px 3px;
+ /* color: black; */
+
+ overflow: hidden;
+ background: #cccec0 url(./images/old/cardDialog/password_background.png) no-repeat 2px 3px;
+ color: rgba(237, 237, 235, 0.1);
+}
+div.bindings div.binding span.fieldLock a {
+ display: none;
+}
+div.bindings div.binding.locked span.fieldLock a {
+ display: block;
+ width: 20px;
+ height: 20px;
+ text-decoration: none;
+ background-image: url(./images/old/cardDialog/lock_open.png);
+}
+div.bindings div.binding.locked.showLocked span.fieldLock a {
+ background-image: url(./images/old/cardDialog/lock_closed.png);
+ text-decoration: none;
+}
+/* @end */
+/* @group FormValues */
+div.formValues {
+ padding-top: 15px;
+}
+div.formValues div.formValue div {
+ margin: 0px;
+ display: inline-block;
+}
+div.formValues div.formValue > span.formFieldName {
+ display: inline-table;
+ width: 160px;
+ overflow: hidden;
+ margin-right: 10px;
+ color: #6b5147;
+}
+/* @end */
+/* @group FormValues */
+/*
+div.formValues {
+ padding-top: 15px;
+}
+
+div.formValues div.formValue > span.formFieldName {
+ display: inline-table;
+ width: 150px;
+ overflow: hidden;
+ margin-right: 35px;
+ color: #6b5147;
+}
+
+div.formValues div.formValue > select {
+ padding-left: 20px;
+}
+*/
+/* @end */
+/* @group Panels */
+div.directLoginEditing {
+ padding-top: 2px;
+}
+div.directLoginEditing div.tabContainer {
+ min-height: 150px;
+ height: 200px;
+}
+div.directLoginEditing div.tabContainer > ul.tabs {
+ display: none;
+}
+/*
+div.directLoginEditing li.configuration,
+div.directLoginEditing li.bindings,
+div.directLoginEditing li.favicon {
+ padding: 10px;
+}
+*/
+div.directLoginEditing li {
+ padding: 10px;
+}
+div.directLoginEditing li.configuration > .bookmarkletConfigurationWrapper > textarea {
+ float: left;
+ width: 320px;
+ height: 125px;
+ font-family: monospace;
+ font-weight: normal;
+ font-size: 8pt;
+ border: 1px solid #ccc;
+}
+div.directLoginEditing li.configuration > .bookmarkletConfigurationWrapper .bookmarkletComponent {
+ float: right;
+}
+div.directLoginEditing li.configuration > textarea.error {
+ border: 1px solid red;
+ background-color: rgba(255, 0, 0, 0.1);
+}
+/*
+div.directLoginEditing > form.directLoginEditingForm > div.tabContainer {
+ padding-top: 10px;
+}
+
+div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li {
+ float: left;
+ padding-left: 10px;
+ padding-right: 10px;
+ display: block;
+ font-size: 10pt;
+ color: #787872;
+ cursor: pointer;
+
+ height: 22px;
+ text-align: center;
+ border-right: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+ border-top: 1px solid #aaa;
+
+ background-color: #cccec0;
+}
+
+div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li:first-child {
+ border-left: 1px solid #aaa;
+}
+
+div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs {
+ height: 23px;
+ padding-left: 10px;
+ border-bottom: 1px solid #aaa;
+ margin-left: 10px;
+ margin-right: 10px;
+}
+
+div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li > span {
+ line-height: 23px;
+}
+
+div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li.selected {
+ color: #6a5147;
+ cursor: default;
+ border-bottom: 1px solid #f1f2e9;
+ background-color: #f1f2e9;
+}
+
+div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabs > li:hover {
+ color: #6a5147;
+}
+
+div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabPanels {
+ padding-bottom: 5px;
+ margin-left: 10px;
+ margin-right: 10px;
+}
+
+div.directLoginEditing > form.directLoginEditingForm > div.tabContainer > ul.tabPanels > li.selected {
+ border-bottom: 1px solid #aaa;
+ border-left: 1px solid #aaa;
+ border-right: 1px solid #aaa;
+}
+
+div.directLoginEditing li.configuration {
+ padding: 5px;
+}
+
+div.directLoginEditing li.configuration > textarea {
+ width: 100%;
+ height: 100px;
+ font-family: monospace;
+ font-weight: normal;
+ font-size: 8pt;
+}
+*/
+/* @end */
+/* @end */
+/* @end */
+/* @group Card Dialog FIELDS */
+div.CardDialog div.body {
+ padding-bottom: 1px;
+}
+div.CardDialog div.body table.fields {
+ width: 100%;
+ padding-top: 8px;
+ padding-bottom: 1px;
+}
+div.CardDialog div.body table.fields thead {
+ background: url(./images/old/cardDialog/dottedLine_background.png) repeat-x 0 15px;
+}
+div.CardDialog div.body table.fields tfoot {
+ background: url(./images/old/cardDialog/dottedLine_background.png) repeat-x 0 bottom;
+}
+div.CardDialog div.body table.fields thead th {
+ text-align: left;
+ font-weight: normal;
+ font-size: 9pt;
+ color: #787872;
+ padding-left: 10px;
+ padding-bottom: 3px;
+ /*
+ border-bottom: 1px dotted;
+*/
+
+}
+div.CardDialog div.body table.fields thead th.fieldStateTH {
+ width: 10px;
+}
+div.CardDialog div.body table.fields tbody td.fieldLabel input {
+ width: 130px;
+}
+div.CardDialog div.body table.fields thead th.fieldLockTH {
+ width: 10px;
+}
+div.CardDialog div.body table.fields tbody td.fieldValue input {
+ width: 280px;
+}
+div.CardDialog div.body table.fields thead th.fieldActionTH {
+ width: 30px;
+}
+div.CardDialog div.body table.fields thead th.fieldDeleteTH {
+ width: 40px;
+}
+div.CardDialog div.body table.fields tbody tr:hover,
+div.CardDialog div.body table.fields tbody tr.selectedField {
+ background-color: #cccec0;
+}
+div.CardDialog div.body table.fields tbody tr td {
+ font-size: 11pt;
+ color: #787872;
+ height: 35px;
+}
+div.CardDialog div.body table.fields tbody tr td input {
+ font-size: 11pt;
+ border: 0px;
+ padding: 5px;
+ color: #787872;
+ border: 1px solid #ededeb;
+ background-color: #ededeb;
+ height: 30px;
+}
+/*
+div.CardDialog div.body table.fields tbody tr td.fieldValue div {
+ margin-right: 10px;
+}
+
+div.CardDialog div.body table.fields tbody tr td.fieldValue div input {
+ width: 100%;
+}
+*/
+div.CardDialog div.body table.fields tbody tr td.fieldValue div.locked input {
+ background: #ededeb url(./images/old/cardDialog/password_background.png) no-repeat 2px 3px;
+ color: #ededeb;
+ color: rgba(237, 237, 235, 0.1);
+ /* color: black; */
+
+ /* line-height: 100px; */
+
+ overflow: hidden;
+}
+div.locked input.value::-moz-selection {
+ background: #ff0000;
+}
+div.locked input.value::selection {
+ background: #ff0000;
+}
+div.CardDialog div.body table.fields tbody tr.new.selectedField td input,
+div.CardDialog div.body table.fields tbody tr.new:hover td input,
+div.CardDialog div.body table.fields tbody tr:hover td input,
+div.CardDialog div.body table.fields tbody tr.selectedField td input {
+ border: 1px solid #515247;
+ background-color: #b5b7ab;
+}
+div.CardDialog div.body table.fields tbody tr:hover td.fieldValue div.locked input,
+div.CardDialog div.body table.fields tbody tr.selectedField td.fieldValue div.locked input {
+ background: #b5b7ab url(./images/old/cardDialog/password_background.png) no-repeat 2px 3px;
+ color: #b5b7ab;
+ color: rgba(237, 237, 235, 0.1);
+}
+div.CardDialog div.body table.fields tbody td.fieldLock div {
+ width: 20px;
+ height: 19px;
+ cursor: pointer;
+}
+div.CardDialog div.body table.fields tbody tr:hover td.fieldLock div.locked {
+ background-image: url(./images/old/cardDialog/lock_closed.png);
+}
+div.CardDialog div.body table.fields tbody tr:hover td.fieldLock div.unlocked {
+ background-image: url(./images/old/cardDialog/lock_open.png);
+}
+div.CardDialog div.body table.fields tbody tr td.fieldAddDelete div span a {
+ text-decoration: none;
+ visibility: hidden;
+ font-size: 8pt;
+ vertical-align: -13px;
+ color: black;
+}
+div.CardDialog div.body table.fields tbody tr.selectedField td.fieldAddDelete div span a {
+ visibility: visible;
+}
+div.CardDialog div.body table.fields tbody tr:hover td.fieldAddDelete div span a {
+ visibility: visible;
+}
+div.CardDialog div.body table.fields tbody tr:hover td.fieldAddDelete div:hover span a {
+ color: white;
+}
+div.CardDialog div.body div.notes {
+ background: url(./images/old/cardDialog/dottedLine_background.png) repeat-x 0 0;
+ padding-top: 2px;
+}
+div.CardDialog div.body div.notes div {
+ padding-left: 20px;
+ padding-right: 20px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+div.CardDialog div.body div.notes div:hover,
+div.CardDialog div.body div.notes.selectedField div {
+ background-color: #cccec0;
+}
+div.CardDialog.loading div.body div.notes div textarea {
+ display: none;
+}
+div.CardDialog div.body div.notes div textarea {
+ border: 0;
+ width: 470px;
+ /*
+ width: 100%;
+ height: 100px;
+ min-height: 400px;
+ overflow: hidden;
+*/
+
+ color: #787872;
+ border: 1px solid #ededeb;
+ background-color: #ededeb;
+ display: block;
+ line-height: 12pt;
+ min-height: 50px;
+}
+div.CardDialog div.body div.notes div:hover textarea,
+div.CardDialog div.body div.notes.selectedField div textarea {
+ border: 1px solid #515247;
+ background-color: #b5b7ab;
+}
+div.CardDialog div.body table.fields tbody tr td.fieldAction {
+ /* background-color: red; */
+
+ padding-left: 4px;
+}
+div.CardDialog div.body table.fields tbody tr td.fieldAction a {
+ display: inline-block;
+ text-decoration: none;
+ text-align: center;
+ width: 16px;
+ height: 16px;
+}
+div.CardDialog div.body table.fields tbody tr td.fieldAction a.email {
+ background: url(./images/old/cardDialog/fieldTypes/email.png) no-repeat 0 0;
+}
+div.CardDialog div.body table.fields tbody tr td.fieldAction a.email:hover {
+ background: url(./images/old/cardDialog/fieldTypes/email_selected.png) no-repeat 0 0;
+}
+div.CardDialog div.body table.fields tbody tr td.fieldAction a.url {
+ background: url(./images/old/cardDialog/fieldTypes/url.png) no-repeat 0 0;
+}
+div.CardDialog div.body table.fields tbody tr td.fieldAction a.url:hover {
+ background: url(./images/old/cardDialog/fieldTypes/url_selected.png) no-repeat 0 0;
+}
+div.CardDialog div.body table.fields tbody tr td.fieldAction a.password {
+ background: url(./images/old/cardDialog/fieldTypes/password.png) no-repeat 0 0;
+}
+div.CardDialog div.body table.fields tbody tr td.fieldAction a.password:hover {
+ background: url(./images/old/cardDialog/fieldTypes/password_selected.png) no-repeat 0 0;
+}
+/*
+/ *div.CardDialog div.body table.fields tbody* / tr.new {
+ background: yellow;
+}
+
+div.CardDialog div.body table.fields tbody tr.new td input {
+ border: 1px solid red;
+ background-color: green;
+}
+*/
+/* @end */
+/* @end */
+div#disabledZone {
+ display: block;
+ visibility: visible;
+}
+div#messageZone {
+ display: block;
+ visibility: visible;
+}
+div.CardDialog div.error div.img {
+ margin: 10px;
+ width: 50px;
+ height: 50px;
+ float: left;
+ background-image: url(./images/old/simpleMessageBox/Alert.png);
+}
+/* @group Ruler */
+/*
+div.rulerExtraWrapper {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ background-color: rgba(255, 0, 0, 0.2);
+ z-index: 24999;
+}
+*/
+div.rulerWrapper {
+ left: -1000px;
+ margin-top: -30px;
+ margin-left: 50%;
+ z-index: 25000;
+}
+div.rulerWrapper.fixed {
+ position: fixed;
+}
+div.rulerWrapper.scrollable {
+ position: absolute;
+}
+div.ruler {
+ /* position: absolute; */
+
+ width: 541px;
+ height: 96px;
+ margin-left: -270px;
+ background: url(./images/old/ruler/ruler.png) no-repeat;
+}
+div.ruler a {
+ position: absolute;
+ display: block;
+ width: 15px;
+ height: 15px;
+ top: 3px;
+ text-decoration: none;
+}
+div.ruler a.exit {
+ margin-left: 2px;
+ background: url(./images/old/ruler/exit.png) no-repeat;
+}
+div.ruler a.exit:hover {
+ background: url(./images/old/ruler/exit_selected.png) no-repeat;
+}
+div.ruler a.smallButton.previous {
+ right: 16px;
+ background: url(./images/old/ruler/small_previous.png) no-repeat;
+}
+div.ruler a.smallButton.previous:hover {
+ cursor: pointer;
+ background: url(./images/old/ruler/small_previous_selected.png) no-repeat;
+}
+div.ruler a.smallButton.previous.disabled,
+div.ruler a.smallButton.previous.disabled:hover {
+ cursor: default;
+ background: url(./images/old/ruler/small_previous_disabled.png) no-repeat;
+}
+div.ruler a.smallButton.next {
+ right: 3px;
+ background: url(./images/old/ruler/small_next.png) no-repeat;
+}
+div.ruler a.smallButton.next:hover {
+ cursor: pointer;
+ background: url(./images/old/ruler/small_next_selected.png) no-repeat;
+}
+div.ruler a.smallButton.next.disabled,
+div.ruler a.smallButton.next.disabled:hover {
+ cursor: default;
+ background: url(./images/old/ruler/small_next_disabled.png) no-repeat;
+}
+div.ruler div.steps,
+div.ruler div.dots {
+ position: absolute;
+ background-color: rgba(255, 255, 255, 0);
+ margin-left: 30px;
+ margin-right: 30px;
+}
+div.ruler div.steps {
+ top: 25px;
+ height: 30px;
+}
+div.ruler div.dots {
+ top: 58px;
+ height: 25px;
+}
+div.ruler div ul {
+ list-style-type: none;
+ margin: 0px;
+ padding: 0px;
+}
+div.ruler div ul li {
+ display: inline-block;
+ vertical-align: top;
+}
+div.ruler > div.steps > ul > li:first-child,
+div.ruler > div.dots > ul > li:first-child {
+ margin-left: 0px;
+}
+div.ruler div.steps_3 ul li {
+ margin-left: 135px;
+}
+div.ruler div.steps_4 ul li {
+ margin-left: 67px;
+}
+div.ruler div.steps_5 ul li {
+ margin-left: 32px;
+}
+div.ruler div.steps_6 ul li {
+ margin-left: 12px;
+}
+div.ruler div ul li span {
+ font-weight: bold;
+ text-align: center;
+ width: 70px;
+ display: block;
+ font-size: 8pt;
+ overflow: hidden;
+ color: rgba(0, 0, 0, 0.3);
+}
+div.ruler div ul li.selected span {
+ color: black;
+}
+div.ruler div.dots ul li span {
+ /*
+ text-align: center;
+ width: 26px;
+ margin-left: 22px;
+ margin-right: 22px;
+ height: 25px;
+ background-color: #e57218;
+*/
+
+ font-size: 40pt;
+ line-height: 47px;
+}
+div.ruler div.marker {
+ position: absolute;
+ top: -3px;
+ /* left: -246px; */
+
+}
+div.ruler div.marker div.markerBody {
+ width: 77px;
+ height: 97px;
+ background: url(./images/old/ruler/marker.png) no-repeat;
+}
+div.ruler div.marker div.next {
+ position: absolute;
+ top: 25px;
+ left: 76px;
+ width: 27px;
+ height: 65px;
+ background: url(./images/old/ruler/next.png) no-repeat -13px;
+ z-index: 26000;
+}
+div.ruler div.marker div.next:hover {
+ cursor: pointer;
+ background: url(./images/old/ruler/next.png) no-repeat -2px;
+}
+div.ruler div.marker div.disabled {
+ display: none;
+}
+div.ruler div.marker div.previous {
+ position: absolute;
+ top: 25px;
+ left: -24px;
+ width: 27px;
+ height: 65px;
+ /* background: url(./images/old/ruler/previous.png) no-repeat 13px 1px; */
+
+ background: url(./images/old/ruler/previous.png) no-repeat 18px 1px;
+ z-index: 26000;
+}
+div.ruler div.marker div.previous:hover {
+ cursor: pointer;
+ /* background: url(./images/old/ruler/previous.png) no-repeat 2px 1px; */
+
+ background: url(./images/old/ruler/previous.png) no-repeat 7px 1px;
+}
+/* @end */
+div.createNewCardSplash {
+ margin-top: -450px;
+ margin-left: 250px;
+ width: 354px;
+ float: left;
+ height: 186px;
+ text-align: center;
+ background: url(./images/old/main/grid/createNewCardSplash.png) no-repeat;
+}
+div.createNewCardSplash:hover {
+ cursor: pointer;
+ background: url(./images/old/main/grid/createNewCardSplash_selected.png) no-repeat;
+}
+div.createNewCardSplash span {
+ display: block;
+ padding-top: 130px;
+ font-size: 14pt;
+ color: #9a9586;
+}
+div.createNewCardSplash:hover span {
+ color: #605c4e;
+}
+/*=============================================*/
+div.NewUserCreation div.tabContainer {
+ min-height: 150px;
+ height: 200px;
+}
+div.NewUserCreation div.tabContainer > ul.tabs {
+ display: none;
+}
+ul.createUserStates li.creating {
+ background: url(./images/old/creatingUser.gif) no-repeat center center;
+}
+ul.createUserStates li {
+ height: 100px;
+}
+ul.createUserStates li span {
+ display: block;
+ width: 100%;
+ text-align: center;
+ color: #999;
+ font-style: italic;
+}
+div.NewUserCreation form.newUserCreationForm ul.tabPanels {
+ padding-top: 10px;
+}
+div.NewUserCreation form.newUserCreationForm ul ul {
+ margin-left: auto;
+ margin-right: auto;
+ width: 400px;
+}
+div.NewUserCreation form.newUserCreationForm ul.credentials li {
+ height: 45px;
+}
+div.NewUserCreation form.newUserCreationForm ul.credentials span.label {
+ text-align: right;
+ display: inline-block;
+ font-size: 12pt;
+ color: #787872;
+ width: 110px;
+ vertical-align: baseline;
+}
+div.NewUserCreation form.newUserCreationForm ul.credentials input {
+ font-size: 13pt;
+ color: #787872;
+ height: 35px;
+ margin-left: 15px;
+ padding-left: 5px;
+}
+div.NewUserCreation form.newUserCreationForm ul.termsOfService li {
+ padding: 0 0 15 0;
+}
+div.NewUserCreation form.newUserCreationForm ul.termsOfService input {
+ display: inline-block;
+}
+div.NewUserCreation form.newUserCreationForm ul.termsOfService .label {
+ display: inline-block;
+ text-align: left;
+ font-size: 12pt;
+ color: #787872;
+ width: 350px;
+ vertical-align: top;
+ padding-left: 10px;
+}
+div.NewUserCreation form.newUserCreationForm ul.termsOfService a {
+ font-weight: bold;
+ color: #787872;
+ text-decoration: none;
+}
+div.NewUserCreation form.newUserCreationForm ul.termsOfService a:hover {
+ color: #444;
+}
+div.NewUserCreation form.newUserCreationForm ul.createUserStates li.done span {
+ font-size: 16pt;
+ color: green;
+}
+div.NewUserCreation form.newUserCreationForm ul.createUserStates li.fail span {
+ font-size: 16pt;
+ color: red;
+}
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
@@ -2,62 +2,70 @@
<head>
<title>@page.title@</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<!--
@copyright@
-->
@css@
<link rel="shortcut icon" href="./clipperz.ico" />
<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." />
<meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" />
<script>
Clipperz_IEisBroken = false;
Clipperz_normalizedNewLine = '\n';
- Clipperz_dumpUrl = "/dump/";
+ Clipperz_dumpUrl = "/../dump/";
+ "use strict";
</script>
<!--[if IE]><script>
Clipperz_IEisBroken = true;
Clipperz_normalizedNewLine = '\x0d\x0a';
</script><![endif]-->
@js_LINKED@
</head>
<body>
<div id="mainDiv">
<div id="loading">
<div>
<!-- a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a -->
<h1>clipperz</h1>
<h3 class="clipperzPayoff">keep it to yourself!</h3>
<!-- h5>loading ...</h5 -->
</div>
</div>
@js_EMBEDDED@
</div>
<!-- div id="applicationVersionType" class="@application.version.type@"></div -->
<script>
Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.JSON({'url':'@request.path@', 'shouldPayTolls':@should.pay.toll@});
/*offline_data_placeholder*/
+
+/* * /
+ MochiKit.DOM.addLoadEvent(function () {
+ Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
+ MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'doLogin', {username:'j', passphrase:'j'});
+ });
+/ * */
</script>
<!-- -->
<!-- div id="javaScriptAlert">
<div class="mask"></div>
<div class="message">
<div class="header"></div>
<div class="body">
<div class="alertLogo"></div>
<div class="alert">
<h1>Attention!</h1>
<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>
<h3>Javascript is required to access Clipperz.</h3>
<h5>Please enable scripting or upgrade your browser.</h5>
</div>
</div>
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 @@
+CACHE MANIFEST
+# 2012-02-23-v0.0.1
+
+# Entry to add into Apache config:
+# AddType text/cache-manifest .appcache
+
+# Explicitly cached entries
+CACHE:
+index.mobile.html
+*.favico
+
+# static.html will be served if the user is offline
+FALLBACK:
+/index.mobile.html /index.mobile.html
+
+# /main.py /static.html
+# images/large/ images/offline.jpg
+# *.html /offline.html
+
+
+# Resources that require the user to be online.
+NETWORK:
+*
+# login.php, http://api.twitter.com, etc.
diff --git a/frontend/gamma/html/mobile_template.html b/frontend/gamma/html/mobile_template.html
index 0a1b54c..184fbd9 100644
--- a/frontend/gamma/html/mobile_template.html
+++ b/frontend/gamma/html/mobile_template.html
@@ -1,84 +1,66 @@
-<!--
+<!doctype html>
+<!-- Conditional comment for mobile ie7 blogs.msdn.com/b/iemobile/ -->
+<!--[if IEMobile 7 ]> <html class="no-js iem7" lang="en"> <![endif]-->
+<!--[if (gt IEMobile 7)|!(IEMobile)]><!--> <html class="no-js" lang="en" manifest="mobile.appcache"> <!--<![endif]-->
+<head>
+ <title>@page.title@</title>
+ <meta charset="utf-8">
-Copyright 2008-2011 Clipperz Srl
+ <meta name="HandheldFriendly" content="True">
+ <meta name="MobileOptimized" content="320">
+ <meta name="viewport" content="width=device-width">
-This file is part of Clipperz Community Edition.
-Clipperz Community Edition is an online password manager.
-For further information about its features and functionalities please
-refer to http://www.clipperz.com.
+<!-- link rel="apple-touch-icon-precomposed" ... -->
+ <link rel="apple-touch-icon" sizes="114x114" href="data:image/png;charset=utf-8;base64,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">
+ <link rel="apple-touch-icon" sizes="72x72" href="data:image/png;charset=utf-8;base64,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">
+ <link rel="apple-touch-icon" href="data:image/png;charset=utf-8;base64,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">
+ <link rel="shortcut icon" href="data:image/png;charset=utf-8;base64,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">
-* Clipperz Community Edition is free software: you can redistribute
- it and/or modify it under the terms of the GNU Affero General Public
- License as published by the Free Software Foundation, either version
- 3 of the License, or (at your option) any later version.
+ <meta http-equiv="cleartype" content="on">
+ <meta name="apple-mobile-web-app-capable" content="yes">
-* Clipperz Community Edition is distributed in the hope that it will
- be useful, but WITHOUT ANY WARRANTY; without even the implied
- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the GNU Affero General Public License for more details.
-* You should have received a copy of the GNU Affero General Public
- License along with Clipperz Community Edition. If not, see
- <http://www.gnu.org/licenses/>.
+ <!-- link rel="apple-touch-startup-image" href="data:image/png;charset=utf-8;base64,iVBORw0K...ggo=" -->
+<!--
+@copyright@
-->
-<html>
-<head>
- <title>@page.title@</title>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-@copyright@
@css@
<link rel="shortcut icon" href="./clipperz.ico" />
<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." />
<meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" />
<script>
Clipperz_IEisBroken = false;
Clipperz_normalizedNewLine = '\n';
Clipperz_dumpUrl = "/dump/";
</script>
-<!--[if IE]><script>
-Clipperz_IEisBroken = true;
-Clipperz_normalizedNewLine = '\x0d\x0a';
-</script><![endif]-->
-
-@CLIPPERZ_DEBUG_VERSION@
+@js_LINKED@
</head>
<body>
<div id="mainDiv">
<div id="loading">
- <a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a>
- <h5 class="clipperzPayoff">keep it to yourself!</h5>
- <h2>loading ...</h2>
+ <div>
+ <!-- a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a -->
+ <h1>clipperz</h1>
+ <h3 class="clipperzPayoff">keep it to yourself!</h3>
+ <!-- h5>loading ...</h5 -->
+ </div>
</div>
-@CLIPPERZ_INSTALLED_VERSION@
+@js_EMBEDDED@
</div>
-<div id="applicationVersionType" class="@application.version.type@"></div>
+<!-- div id="applicationVersionType" class="@application.version.type@"></div -->
-<!-- -->
-<div id="javaScriptAlert">
- <div class="mask"></div>
- <div class="message">
- <div class="header"></div>
- <div class="body">
- <div class="alertLogo"></div>
- <div class="alert">
- <h1>Attention!</h1>
- <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>
- <h3>Javascript is required to access Clipperz.</h3>
- <h5>Please enable scripting or upgrade your browser.</h5>
- </div>
- </div>
- <div class="footer"></div>
- </div>
-</div>
-<!-- -->
+<script>
+ Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.JSON({'url':'@request.path@', 'shouldPayTolls':@should.pay.toll@});
+ /*offline_data_placeholder*/
+</script>
</body>
</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
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
@@ -64,32 +64,37 @@ MochiKit.Base.update(Clipperz.Base, {
},
'isEmail': function (aValue) {
return (MochiKit.Base.emailRegExp.test(aValue));
},
//-------------------------------------------------------------------------
'caseInsensitiveCompare': function (a, b) {
return MochiKit.Base.compare(a.toLowerCase(), b.toLowerCase());
},
'reverseComparator': function (aComparator) {
return MochiKit.Base.compose(function(aResult) { return -aResult; }, aComparator);
},
+ 'caseInsensitiveKeyComparator': function (aKey) {
+ return function (a, b) {
+ return MochiKit.Base.compare(a[aKey].toLowerCase(), b[aKey].toLowerCase());
+ }
+ },
//-------------------------------------------------------------------------
/*
'dependsOn': function(module, deps) {
if (!(module in Clipperz)) {
MochiKit[module] = {};
}
if (typeof(dojo) != 'undefined') {
dojo.provide('Clipperz.' + module);
}
for (var i = 0; i < deps.length; i++) {
if (typeof(dojo) != 'undefined') {
dojo.require('Clipperz.' + deps[i]);
}
if (typeof(JSAN) != 'undefined') {
JSAN.use('Clipperz.' + deps[i], []);
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
@@ -28,32 +28,33 @@ if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
//-----------------------------------------------------------------------------
//
// Abstract C O N N E C T I O N class
//
//-----------------------------------------------------------------------------
Clipperz.PM.Connection = function (args) {
args = args || {};
this._proxy = args.proxy || Clipperz.PM.Proxy.defaultProxy;
this._getCredentialsFunction = args.getCredentialsFunction;
this._clipperz_pm_crypto_version = null;
this._connectionId = null;
this._sharedSecret = null;
+ this._serverLockValue = null;
return this;
}
Clipperz.PM.Connection.prototype = MochiKit.Base.update(null, {
'toString': function() {
return "Connection [" + this.version() + "]";
},
//=========================================================================
'version': function() {
throw Clipperz.Base.exception.AbstractMethod;
},
@@ -133,32 +134,42 @@ MochiKit.Logging.logError("### Connection.defaultErrorHandler: " + anErrorString
},
'setSharedSecret': function (aValue) {
this._sharedSecret = aValue;
},
//-------------------------------------------------------------------------
'connectionId': function() {
return this._connectionId;
},
'setConnectionId': function(aValue) {
this._connectionId = aValue;
},
+ //-------------------------------------------------------------------------
+
+ 'serverLockValue': function () {
+ return this._serverLockValue;
+ },
+
+ 'setServerLockValue': function (aValue) {
+ this._serverLockValue = aValue;
+ },
+
//=========================================================================
/*
// TODO: ?????
'oneTimePassword': function() {
return this._oneTimePassword;
},
'setOneTimePassword': function(aValue) {
this._oneTimePassword = aValue;
},
*/
//=========================================================================
'reset': function() {
this.setSharedSecret(null);
this.setConnectionId(null);
@@ -307,39 +318,38 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz.
return Clipperz.Async.callbacks("Connction.redeemOTP", [
MochiKit.Base.method(this.proxy(), 'handshake', args),
function(aResult) {
return Clipperz.PM.Crypto.deferredDecrypt({
value: aResult['data'],
key: normalizedOTP,
version:aResult['version']
});
},
function(aResult) {
return (new Clipperz.ByteArray().appendBase64String(aResult['passphrase'])).asString();
}
], {trace:false})
},
- 'login': function(/*anUsername, aPassphrase*/) {
+ 'login': function(isReconnecting) {
var deferredResult;
var cryptoVersion;
var srpConnection;
cryptoVersion = this.clipperz_pm_crypto_version();
-
deferredResult = new Clipperz.Async.Deferred("Connection.login", {trace:false});
deferredResult.addCallback(this.getCredentialsFunction());
deferredResult.addMethod(this, 'normalizedCredentials');
// deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'updatedProgressState', 'connection_sendingCredentials');
deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress');
deferredResult.addCallback(MochiKit.Base.bind(function(someCredentials) {
srpConnection = new Clipperz.Crypto.SRP.Connection({ C:someCredentials['username'], P:someCredentials['password'], hash:this.hash() });
}, this));
deferredResult.addCallback(function() {
var result;
result = {
message: 'connect',
version: cryptoVersion,
parameters: {
C: srpConnection.C(),
@@ -386,84 +396,97 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz.
if (someParameters['M2'] == srpConnection.M2()) {
result = MochiKit.Async.succeed(someParameters);
} else {
result = MochiKit.Async.fail(Clipperz.PM.Connection.exception.WrongChecksum);
}
return result;
});
deferredResult.addCallback(MochiKit.Base.bind(function(someParameters) {
this.setConnectionId(someParameters['connectionId']);
this.setSharedSecret(srpConnection.K());
// TODO: ?????
// if (this.oneTimePassword() != null) {
/// ?? result = this.user().oneTimePasswordManager().archiveOneTimePassword(this.oneTimePassword()));
// }
+
+ if ((isReconnecting == true) && (this.serverLockValue() != someParameters['lock'])) {
+ throw Clipperz.PM.Connection.exception.StaleData;
+ } else {
+ this.setServerLockValue(someParameters['lock']);
+ }
+
return someParameters;
}, this));
// deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'updatedProgressState', 'connection_loggedIn');
deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress');
deferredResult.addCallback(MochiKit.Async.succeed, {result:"done"});
deferredResult.callback();
return deferredResult;
},
//=========================================================================
'logout': function() {
return Clipperz.Async.callbacks("Connection.logout", [
MochiKit.Base.method(this, 'setSharedSecret'),
MochiKit.Base.method(this.proxy(), 'logout', {})
], {trace:false});
},
//=========================================================================
'ping': function () {
// TODO: ping the server in order to have a valid session
},
//=========================================================================
'message': function(aMessageName, someParameters) {
var args;
+ var parameters;
+
+ parameters = someParameters || {};
+ if (typeof(parameters['user']) != 'undefined') {
+ parameters['user']['lock'] = this.serverLockValue();
+ }
//console.log(">>> Connection.message", aMessageName, someParameters);
args = {
message: aMessageName,
srpSharedSecret: this.sharedSecret(),
- parameters: (someParameters || {})
+// parameters: (someParameters || {})
+ parameters: parameters
}
return this.sendMessage(args);
},
//-------------------------------------------------------------------------
'sendMessage': function(someArguments) {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("Connection.sendMessage", {trace:false});
deferredResult.addMethod(this.proxy(), 'message', someArguments);
deferredResult.addCallback(MochiKit.Base.bind(function(res) {
if (typeof(res['lock']) != 'undefined') {
-// TODO: ?????
-// ?? this.user().setLock(res['lock']);
+ this.setServerLockValue(res['lock']);
}
return res;
}, this));
deferredResult.addErrback(MochiKit.Base.method(this, 'messageExceptionHandler'), someArguments);
deferredResult.callback();
return deferredResult
},
//-------------------------------------------------------------------------
'messageExceptionHandler': function(anOriginalMessageArguments, anError) {
var result;
console.log(">>> Connection.messageExceptionHandler", anError, anError.message);
@@ -574,32 +597,33 @@ Clipperz.PM.Connection.SRP['1.1'].prototype = MochiKit.Base.update(new Clipperz.
return result;
},
//-----------------------------------------------------------------------------
'hash': function() {
return Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].hash;
},
//-----------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
Clipperz.PM.Connection.exception = {
WrongChecksum: new MochiKit.Base.NamedError("Clipperz.ByteArray.exception.InvalidValue"),
+ StaleData: new MochiKit.Base.NamedError("Stale data"),
UnexpectedRequest: new MochiKit.Base.NamedError("Clipperz.ByteArray.exception.UnexpectedRequest")
};
Clipperz.PM.Connection.communicationProtocol = {
'currentVersion': '0.2',
'versions': {
'0.1': Clipperz.PM.Connection.SRP['1.0'], //Clipperz.Crypto.SRP.versions['1.0'].Connection,
'0.2': Clipperz.PM.Connection.SRP['1.1'] //Clipperz.Crypto.SRP.versions['1.1'].Connection
},
'fallbackVersions': {
// 'current': '0.1',
'0.2': '0.1',
'0.1': null
}
};
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
@@ -31,33 +31,33 @@ if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {};
//#############################################################################
Clipperz.PM.DataModel.User = function (args) {
args = args || {};
Clipperz.PM.DataModel.User.superclass.constructor.apply(this, arguments);
this._username = args.username || null;
this._getPassphraseFunction = args.getPassphraseFunction || null;
this._data = null;
this._connection = null;
this._connectionVersion = 'current';
this._serverData = null;
- this._serverLockValue = null;
+// this._serverLockValue = null;
this._transientState = null;
this._deferredLocks = {
'passphrase': new MochiKit.Async.DeferredLock(),
'serverData': new MochiKit.Async.DeferredLock(),
// 'recordsIndex': new MochiKit.Async.DeferredLock(),
// 'directLoginsIndex': new MochiKit.Async.DeferredLock()
// 'preferences': new MochiKit.Async.DeferredLock()
// 'oneTimePasswords': new MochiKit.Async.DeferredLock()
'__syntaxFix__': 'syntax fix'
};
return this;
}
Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
@@ -80,41 +80,41 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
'displayName': function() {
return "" + this.username() + "";
},
//-------------------------------------------------------------------------
'data': function () {
if (this._data == null) {
this._data = new Clipperz.KeyValueObjectStore(/*{'name':'User.data [1]'}*/);
};
return this._data;
},
//-------------------------------------------------------------------------
-
+/*
'serverLockValue': function () {
return this._serverLockValue;
},
'setServerLockValue': function (aValue) {
this._serverLockValue = aValue;
},
-
+*/
//-------------------------------------------------------------------------
'transientState': function () {
if (this._transientState == null) {
this._transientState = {}
}
return this._transientState;
},
'resetTransientState': function (isCommitting) {
this._transientState = null;
},
//-------------------------------------------------------------------------
@@ -207,60 +207,60 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
// this._serverLockValue = Clipperz.PM.Crypto.randomKey();
},
//.........................................................................
'registerAsNewAccount': function () {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("User.registerAsNewAccount", {trace:false});
deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'updateProgress', {'extraSteps':3});
deferredResult.addMethod(this, 'initialSetupWithNoData')
deferredResult.addMethod(this, 'getPassphrase');
deferredResult.addMethod(this, 'prepareRemoteDataWithKey');
deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress');
deferredResult.addMethod(this.connection(), 'register');
- deferredResult.addCallback(MochiKit.Base.itemgetter('lock'));
- deferredResult.addMethod(this, 'setServerLockValue');
+// deferredResult.addCallback(MochiKit.Base.itemgetter('lock'));
+// deferredResult.addMethod(this, 'setServerLockValue');
deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'userSuccessfullyRegistered');
// deferredResult.addErrback (MochiKit.Base.method(this, 'handleRegistrationFailure'));
deferredResult.callback();
return deferredResult;
},
//-------------------------------------------------------------------------
'login': function () {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("User.login", {trace:false});
deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'updateProgress', {'extraSteps':3});
deferredResult.addMethod(this, 'getPassphrase');
deferredResult.addCallback(Clipperz.PM.DataModel.OneTimePassword.isValidOneTimePasswordValue);
deferredResult.addCallback(Clipperz.Async.deferredIf("Is the passphrase an OTP", [
MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'updateProgress', {'extraSteps':1}),
MochiKit.Base.method(this, 'getCredentials'),
MochiKit.Base.method(this.connection(), 'redeemOneTimePassword'),
MochiKit.Base.method(this.data(), 'setValue', 'passphrase')
], []));
deferredResult.addErrback(MochiKit.Base.method(this, 'getPassphrase'));
- deferredResult.addMethod(this.connection(), 'login');
+ deferredResult.addMethod(this.connection(), 'login', false);
deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'userSuccessfullyLoggedIn');
deferredResult.addErrback (MochiKit.Base.method(this, 'handleConnectionFallback'));
deferredResult.callback();
return deferredResult;
},
//.........................................................................
'handleConnectionFallback': function(aValue) {
var result;
if (aValue instanceof MochiKit.Async.CancelledError) {
result = aValue;
} else {
@@ -316,33 +316,33 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
}
return result;
},
//-------------------------------------------------------------------------
'unpackServerData': function (someServerData) {
var unpackedData;
var headerVersion;
var recordsIndex;
var preferences;
var oneTimePasswords;
//console.log(">>> ***************** user.unpackServerData", someServerData);
- this.setServerLockValue(someServerData['lock']);
+// this.setServerLockValue(someServerData['lock']);
headerVersion = this.headerFormatVersion(someServerData['header']);
switch (headerVersion) {
case 'LEGACY':
var legacyHeader;
legacyHeader = new Clipperz.PM.DataModel.User.Header.Legacy({
'retrieveKeyFunction': MochiKit.Base.method(this, 'getPassphrase'),
'remoteData': {
'data': someServerData['header'],
'version': someServerData['version'],
'recordsStats': someServerData['recordsStats']
},
// 'encryptedDataKeypath': 'data',
// 'encryptedVersionKeypath': 'version',
@@ -649,34 +649,34 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
deferredResult.callback();
// recordsIndex = legacyHeader;
// preferences = legacyHeader;
// oneTimePasswords = legacyHeader;
return deferredResult;
},
//=========================================================================
'commitTransientState': function () {
return Clipperz.Async.callbacks("User.commitTransientState", [
MochiKit.Base.method(this, 'invokeMethodNamedOnHeader', 'commitTransientState'),
MochiKit.Base.method(this, 'invokeMethodNamedOnRecords', 'commitTransientState'),
MochiKit.Base.method(this, 'transientState'),
- MochiKit.Base.itemgetter('lock'),
- MochiKit.Base.method(this, 'setServerLockValue'),
+// MochiKit.Base.itemgetter('lock'),
+// MochiKit.Base.method(this, 'setServerLockValue'),
MochiKit.Base.method(this, 'resetTransientState', true)
], {trace:false});
},
//-------------------------------------------------------------------------
'revertChanges': function () {
return Clipperz.Async.callbacks("User.revertChanges", [
MochiKit.Base.method(this, 'invokeMethodNamedOnHeader', 'revertChanges'),
MochiKit.Base.method(this, 'invokeMethodNamedOnRecords', 'revertChanges'),
MochiKit.Base.method(this, 'resetTransientState', false)
], {trace:false});
},
//=========================================================================
@@ -727,33 +727,33 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
deferredResult.addCallback(MochiKit.Base.bind(function (aResult, someHeaderPackedData) {
var header;
header = {};
header['records'] = someHeaderPackedData['recordIndex']['records'];
header['directLogins'] = someHeaderPackedData['recordIndex']['directLogins'];
header['preferences'] = {'data': someHeaderPackedData['preferences']['data']}; // this._serverData['header']['preferences']; // Clipperz.Base.evalJSON(this._serverData['header']['data'])['preferences']; // ???????????
header['oneTimePasswords'] = {'data': someHeaderPackedData['oneTimePasswords']['data']}; // this._serverData['header']['oneTimePasswords']; // Clipperz.Base.evalJSON(this._serverData['header']['data'])['oneTimePasswords']; // ???????????
header['version'] = '0.1';
aResult['header'] = Clipperz.Base.serializeJSON(header);
aResult['statistics'] = this._serverData['statistics']; // "someHeaderPackedData['statistics']['data']";
return aResult;
}, this), result);
deferredResult.addCallback(Clipperz.Async.setItem, result, 'version', Clipperz.PM.Crypto.encryptingFunctions.currentVersion);
- deferredResult.addCallback(Clipperz.Async.setItem, result, 'lock', this.serverLockValue());
+// deferredResult.addCallback(Clipperz.Async.setItem, result, 'lock', this.serverLockValue());
deferredResult.callback();
return deferredResult;
},
//=========================================================================
'saveChanges': function () {
var deferredResult;
var messageParameters;
messageParameters = {};
deferredResult = new Clipperz.Async.Deferred("User.saveChangaes", {trace:false});
deferredResult.addMethod(this, 'getHeaderIndex', 'recordsIndex');
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 @@
+/*
+
+Copyright 2008-2011 Clipperz Srl
+
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
+For further information about its features and functionalities please
+refer to http://www.clipperz.com.
+
+* Clipperz Community Edition is free software: you can redistribute
+ it and/or modify it under the terms of the GNU Affero General Public
+ License as published by the Free Software Foundation, either version
+ 3 of the License, or (at your option) any later version.
+
+* Clipperz Community Edition is distributed in the hope that it will
+ be useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU Affero General Public License for more details.
+
+* You should have received a copy of the GNU Affero General Public
+ License along with Clipperz Community Edition. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
+if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
+if (typeof(Clipperz.PM.PIN) == 'undefined') { Clipperz.PM.PIN = {}; }
+
+MochiKit.Base.update(Clipperz.PM.PIN, {
+
+ //-------------------------------------------------------------------------
+
+ '__repr__': function () {
+ return "[" + this.NAME + " " + this.VERSION + "]";
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'toString': function () {
+ return this.__repr__();
+ },
+
+ 'CREDENTIALS': 'CLIPPERZ.CREDENTIALS',
+ 'FAILURE_COUNT': 'CLIPPERZ.FAILED_LOGIN_COUNT',
+ 'ALLOWED_RETRY': 3,
+
+ //-------------------------------------------------------------------------
+
+ 'isSet': function () {
+ return (this.storedCredentials() != null);
+ },
+
+ 'storedCredentials': function () {
+ return localStorage[this.CREDENTIALS];
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'recordFailedAttempt': function () {
+ var failureCount;
+ var result;
+
+ failureCount = localStorage[this.FAILURE_COUNT];
+
+ if (failureCount == null) {
+ failureCount = 0
+ }
+
+ failureCount ++;
+
+ if (failureCount < this.ALLOWED_RETRY) {
+ localStorage[this.FAILURE_COUNT] = failureCount;
+ result = failureCount;
+ } else {
+ this.removeLocalCredentials();
+ result = -1;
+ }
+
+ return result;
+ },
+
+ 'resetFailedAttemptCount': function () {
+ localStorage.removeItem(this.FAILURE_COUNT);
+ },
+
+ 'failureCount': function () {
+ return localStorage[this.FAILURE_COUNT];
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'deriveKeyFromPin': function (aPIN) {
+ return Clipperz.Crypto.SHA.sha256(new Clipperz.ByteArray(aPIN));
+ },
+
+ 'credentialsWithPIN': function (aPIN) {
+ var byteArrayValue;
+ var decryptedValue;
+ var result;
+
+ byteArrayValue = (new Clipperz.ByteArray()).appendBase64String(localStorage[this.CREDENTIALS]);
+ decryptedValue = Clipperz.Crypto.AES.decrypt(this.deriveKeyFromPin(aPIN), byteArrayValue).asString();
+ try {
+ result = Clipperz.Base.evalJSON(decryptedValue);
+ } catch (error) {
+ result = {'username':'fakeusername', 'passphrase':'fakepassphrase'};
+ }
+
+ return result;
+ },
+
+ 'setCredentialsWithPIN': function (aPIN, someCredentials) {
+ var encodedValue;
+ var byteArrayValue;
+ var encryptedValue;
+
+ encodedValue = Clipperz.Base.serializeJSON(someCredentials);
+ byteArrayValue = new Clipperz.ByteArray(encodedValue);
+ encryptedValue = Clipperz.Crypto.AES.encrypt(this.deriveKeyFromPin(aPIN), byteArrayValue).toBase64String();
+
+ localStorage[this.CREDENTIALS] = encryptedValue;
+ },
+
+ 'removeLocalCredentials': function () {
+ localStorage.removeItem(this.CREDENTIALS);
+ localStorage.removeItem(this.FAILURE_COUNT);
+ },
+
+ //-------------------------------------------------------------------------
+ __syntaxFix__: "syntax fix"
+
+});
+
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 @@
+/*
+
+Copyright 2008-2011 Clipperz Srl
+
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
+For further information about its features and functionalities please
+refer to http://www.clipperz.com.
+
+* Clipperz Community Edition is free software: you can redistribute
+ it and/or modify it under the terms of the GNU Affero General Public
+ License as published by the Free Software Foundation, either version
+ 3 of the License, or (at your option) any later version.
+
+* Clipperz Community Edition is distributed in the hope that it will
+ be useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU Affero General Public License for more details.
+
+* You should have received a copy of the GNU Affero General Public
+ License along with Clipperz Community Edition. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
+if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
+
+//=============================================================================
+
+Clipperz.PM.Proxy.OfflineCache = function(args) {
+ args = args || {};
+
+ Clipperz.PM.Proxy.Offline.superclass.constructor.call(this, args);
+
+// this._dataStore = args.dataStore || new Clipperz.PM.Proxy.Offline.DataStore(args);
+
+ return this;
+}
+
+Clipperz.Base.extend(Clipperz.PM.Proxy.OfflineCache, Clipperz.PM.Proxy, {
+
+ 'toString': function () {
+ return "Clipperz.PM.Proxy.OfflineCache";
+ },
+
+ //-------------------------------------------------------------------------
+
+// 'dataStore': function () {
+// return this._dataStore;
+// },
+
+ //-------------------------------------------------------------------------
+
+ 'sendMessage': function(aFunctionName, someParameters) {
+ throw Clipperz.Base.exception.MethodNotImplementedYet;
+// return this.dataStore().processMessage(aFunctionName, someParameters);
+ },
+
+ //-------------------------------------------------------------------------
+
+ __syntaxFix__: "syntax fix"
+
+});
+
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
@@ -393,32 +393,36 @@ Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.BaseComponent, /*Ext.Compo
result = this._ids[aValue];
if (typeof(result) == 'undefined') {
_Clipperz_PM_Components_base_id_ ++;
result = "Clipperz_PM_Components_" + aValue + "_" + _Clipperz_PM_Components_base_id_;
this._ids[aValue] = result;
}
} else {
// result = Clipperz.PM.UI.Common.Components.BaseComponent.superclass.getId.call(this);
throw "call to BaseComponent.getId with an undefined value";
}
return result;
},
+ 'getAnchor': function (aValue) {
+ return '#' + this.getId(aValue);
+ },
+
//-------------------------------------------------------------------------
'getElement': function(aValue) {
return Clipperz.DOM.get(this.getId(aValue));
},
//-------------------------------------------------------------------------
'hideElement': function(anElementName) {
MochiKit.Style.hideElement(this.getElement(anElementName));
},
'showElement': function(anElementName) {
MochiKit.Style.showElement(this.getElement(anElementName));
},
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
@@ -49,57 +49,65 @@ Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.Button, Clipperz.PM.UI.Com
return "Clipperz.PM.UI.Common.Components.Button component";
},
//-------------------------------------------------------------------------
'text': function () {
return this._text;
},
'isDefault': function () {
return this._isDefault;
},
//-------------------------------------------------------------------------
'renderSelf': function () {
- this.append(this.element(), {tag:'div', id:this.getId('wrapper'), cls:'button_wrapper', children:[
+/*
+ this.append(this.element(), {tag:'div', id:this.getId('button'), cls:'button_wrapper', children:[
{tag:'div', id:this.getId('bodyWrapper'), cls:'button_bodyWrapper', children:[
{tag:'div', id:this.getId('body'), cls:'button_body', children:[
{tag:'span', html:this.text()}
]},
{tag:'div', id:this.getId('footer'), cls:'button_footer'}
]}
]});
+*/
+/*
+ this.append(this.element(), {tag:'div', id:this.getId('button'), cls:'button', children:[
+ {tag:'span', html:this.text()}
+ ]});
+*/
+ this.append(this.element(), {tag:'a', id:this.getId('button'), cls:'button', html:this.text()});
if (this.isDefault()) {
- MochiKit.DOM.addElementClass(this.getId('wrapper'), 'default');
+ MochiKit.DOM.addElementClass(this.getId('button'), 'default');
}
- MochiKit.Signal.connect(this.getId('wrapper'), 'onmouseenter', this, 'handleOnMouseEnter');
- MochiKit.Signal.connect(this.getId('wrapper'), 'onmouseleave', this, 'handleOnMouseLeave');
- MochiKit.Signal.connect(this.getId('wrapper'), 'onmousedown', this, 'handleOnMouseDown');
- MochiKit.Signal.connect(this.getId('wrapper'), 'onclick', this, 'handleOnClick');
+// MochiKit.Signal.connect(this.getId('button'), 'onmouseenter', this, 'handleOnMouseEnter');
+// MochiKit.Signal.connect(this.getId('button'), 'onmouseleave', this, 'handleOnMouseLeave');
+// MochiKit.Signal.connect(this.getId('button'), 'onmousedown', this, 'handleOnMouseDown');
+ MochiKit.Signal.connect(this.getId('button'), 'onclick', this, 'handleOnClick');
},
//-------------------------------------------------------------------------
-
+/*
'handleOnMouseEnter': function (anEvent) {
- MochiKit.DOM.addElementClass(this.getId('wrapper'), 'hover');
+ MochiKit.DOM.addElementClass(this.getId('button'), 'hover');
},
'handleOnMouseLeave': function (anEvent) {
- MochiKit.DOM.removeElementClass(this.getId('wrapper'), 'hover');
- MochiKit.DOM.removeElementClass(this.getId('wrapper'), 'clicked');
+ MochiKit.DOM.removeElementClass(this.getId('button'), 'hover');
+ MochiKit.DOM.removeElementClass(this.getId('button'), 'clicked');
},
'handleOnMouseDown': function (anEvent) {
- MochiKit.DOM.addElementClass(this.getId('wrapper'), 'clicked');
+ MochiKit.DOM.addElementClass(this.getId('button'), 'clicked');
},
-
+*/
'handleOnClick': function (anEvent) {
MochiKit.Signal.signal(this, 'onclick', anEvent);
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
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
@@ -85,77 +85,95 @@ Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.SimpleMessagePanel, Clippe
'setText': function (aValue) {
this._text = aValue;
if (this.getElement('text') != null) {
this.getElement('text').innerHTML = aValue;
}
},
//-------------------------------------------------------------------------
'type': function () {
return this._type;
},
'setType': function (aValue) {
- if (this.getElement('icon') != null) {
- MochiKit.DOM.removeElementClass(this.getId('icon'), this._type);
- MochiKit.DOM.addElementClass(this.getId('icon'), aValue);
- }
+// if (this.getElement('icon') != null) {
+// MochiKit.DOM.removeElementClass(this.getId('icon'), this._type);
+// MochiKit.DOM.addElementClass(this.getId('icon'), aValue);
+// }
this._type = aValue;
},
+ 'icon': function () {
+ var type = this.type();
+ var result;
+
+ if (type == 'ALERT') {
+ result = '!';
+ } else if (type == 'INFO') {
+ result = 'i';
+ } else if (type == 'ERROR') {
+ result = '!';
+ }
+
+ return result;
+ },
+
//-------------------------------------------------------------------------
'buttons': function () {
return this._buttons;
},
'setButtons': function (someValues) {
MochiKit.Iter.forEach(this.buttonComponents(), MochiKit.Base.methodcaller('clear'));
this._buttons = someValues;
if (this.getElement('buttonArea') != null) {
this.renderButtons();
}
},
//.........................................................................
'buttonComponents': function () {
return this._buttonComponents;
},
//-------------------------------------------------------------------------
'renderSelf': function() {
this.append(this.element(), {tag:'div', cls:'SimpleMessagePanel', id:this.getId('panel'), children: [
- {tag:'div', cls:'header', children:[]},
+// {tag:'div', cls:'header', children:[]},
{tag:'div', cls:'body', children:[
- {tag:'div', id:this.getId('icon'), cls:'img ' + this.type(), children:[{tag:'div'}]},
+// {tag:'div', id:this.getId('icon'), cls:'img ' + this.type(), children:[{tag:'div'}]},
+ {tag:'div', /*id:this.getId('icon'),*/ cls:'img ' + this.type(), children:[{tag:'canvas', id:this.getId('icon')}]},
{tag:'h3', id:this.getId('title'), html:this.title()},
{tag:'p', id:this.getId('text'), html:this.text()},
{tag:'div', id:this.getId('container')},
{tag:'div', id:this.getId('buttonArea'), cls:'buttonArea', children:[]}
- ]},
- {tag:'div', cls:'footer', children:[]}
+ ]}
+// {tag:'div', cls:'footer', children:[]}
]});
+ Clipperz.PM.UI.Canvas.marks[this.icon()](this.getElement('icon'), "#ffffff");
+
MochiKit.Signal.connect(this.getId('panel'), 'onkeydown', this, 'keyDownHandler');
this.renderButtons();
},
//-------------------------------------------------------------------------
'renderButtons': function () {
this.getElement('buttonArea').innerHTML = '';
MochiKit.Base.map(MochiKit.Base.bind(function (aButton) {
var buttonElement;
var buttonComponent;
// element = this.append(this.getElement('buttonArea'), {tag:'div', cls:'button' + (aButton['isDefault'] === true ? ' default' : ''), children:[
// {tag:'a', href:'#'/*, id:this.getId('buttonLink')*/, html:aButton['text']}
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 @@
+/*
+
+Copyright 2008-2011 Clipperz Srl
+
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
+For further information about its features and functionalities please
+refer to http://www.clipperz.com.
+
+* Clipperz Community Edition is free software: you can redistribute
+ it and/or modify it under the terms of the GNU Affero General Public
+ License as published by the Free Software Foundation, either version
+ 3 of the License, or (at your option) any later version.
+
+* Clipperz Community Edition is distributed in the hope that it will
+ be useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU Affero General Public License for more details.
+
+* You should have received a copy of the GNU Affero General Public
+ License along with Clipperz Community Edition. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+Clipperz.Base.module('Clipperz.PM.UI.Mobile.Components');
+
+Clipperz.PM.UI.Mobile.Components.CardDetail = function(args) {
+ args = args || {};
+
+ Clipperz.PM.UI.Mobile.Components.CardDetail.superclass.constructor.apply(this, arguments);
+
+// this._cardReference = null;
+
+ return this;
+}
+
+//=============================================================================
+
+Clipperz.Base.extend(Clipperz.PM.UI.Mobile.Components.CardDetail, Clipperz.PM.UI.Common.Components.BaseComponent, {
+
+ //-------------------------------------------------------------------------
+
+ 'toString': function () {
+ return "Clipperz.PM.UI.Mobile.Components.CardDetail component";
+ },
+
+ //-------------------------------------------------------------------------
+/*
+ 'cardReference': function () {
+ return this._cardReference;
+ },
+
+ 'setCardReference': function (aValue) {
+ this._cardReference = aValue;
+ },
+*/
+ //-------------------------------------------------------------------------
+
+ 'renderSelf': function () {
+console.log("CardDetail.renderSelf");
+ this.append(this.element(), {tag:'div', cls:'cardDetail', children:[
+ {tag:'div', cls:'toolbar', children:[
+ {tag:'a', href:'#', cls:'back', html:"List"},
+ {tag:'h1', id:this.getId('cardTitle'), html:"…"}
+ ]},
+ {tag:'div', cls:'scroll', id:this.getId('cardDetails'), children:[
+ ]}
+ ]});
+ },
+/*
+ 'renderSelf': function() {
+ this.append(this.element(), [
+ {tag:'div', cls:'cardDetail', id:this.getId('cardDetail'), children:[
+ {tag:'div', id:this.getId('progressBar')} //,
+ ]}
+ ]);
+
+ this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')}));
+ MochiKit.Signal.signal(Clipperz.PM.UI.Common.Controllers.ProgressBarController.defaultController, 'updateProgress', 0);
+ },
+*/
+
+ 'setTitle': function (aValue) {
+ this.getElement('cardTitle').innerHTML = aValue;
+ },
+
+ 'fieldListElement': function () {
+ var result;
+
+ result = this.getElement('fieldList');
+ if (result == null) {
+ result = this.append(this.getElement('cardDetails'), {tag:'ul', cls:'rounded', id:this.getId('fieldList')});
+ }
+
+ return result;
+ },
+
+ 'renderFieldValues': function (someFieldValues) {
+ var fieldClass;
+
+ if ((someFieldValues['actionType'] != 'NONE') || (someFieldValues['label'] != '') && (someFieldValues['value'] != '')) {
+ if (someFieldValues['isHidden'] == true) {
+ fieldClass = 'password';
+ } else {
+ fieldClass = '';
+ }
+
+ this.append(this.fieldListElement(), {tag:'li', cls:'cardField', children:[
+ {tag:'a', href:'#', cls:fieldClass, html:someFieldValues['value'], children:[
+ {tag:'small', cls:'label', html:someFieldValues['label']}
+ ]}
+ ]})
+ }
+ },
+
+ 'addField': function (aField) {
+ var deferredResult;
+ var fieldValues;
+
+ fieldValues = {};
+ deferredResult = new Clipperz.Async.Deferred("CardDetail.addField", {trace:false});
+ deferredResult.addMethod(aField, 'label');
+ deferredResult.addCallback(function (aValue) { fieldValues['label'] = aValue; });
+ deferredResult.addMethod(aField, 'value');
+ deferredResult.addCallback(function (aValue) { fieldValues['value'] = aValue; });
+ deferredResult.addMethod(aField, 'actionType');
+ deferredResult.addCallback(function (aValue) { fieldValues['actionType'] = aValue; });
+ deferredResult.addMethod(aField, 'isHidden');
+ deferredResult.addCallback(function (aValue) { fieldValues['isHidden'] = aValue; });
+ deferredResult.addMethod(this, 'renderFieldValues', fieldValues);
+ deferredResult.callback();
+
+ return deferredResult;
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'directLoginElement': function () {
+ var result;
+
+ result = this.getElement('directLoginList');
+ if (result == null) {
+ this.append(this.getElement('cardDetails'), {tag:'h2', html:"Direct login"});
+ result = this.append(this.getElement('cardDetails'), {tag:'ul', cls:'rounded', id:this.getId('directLoginList')});
+ }
+
+ return result;
+ },
+
+ 'addDirectLogin': function (aDirectLogin) {
+ this.append(this.directLoginElement(), {tag:'li', cls:'directLogin forward', children:[
+ {tag:'a', href:'#', html:"direct login", children:[
+ {tag:'small', cls:'favicon', children:[{tag:'img', cls:'favicon', src:'http://www.clipperz.com/favicon.ico'}]}
+ ]}
+ ]})
+
+console.log("ADD DIRECT LOGIN", aDirectLogin);
+ },
+
+ //=========================================================================
+
+ 'showCard': function (aCard) {
+ var deferredResult;
+
+// this.render();
+
+console.log("CardDetail.showCard", aCard);
+ deferredResult = new Clipperz.Async.Deferred("CardDetail.showCard", {trace:false});
+ deferredResult.addMethod(aCard, 'label');
+ deferredResult.addMethod(this, 'setTitle');
+
+ deferredResult.addMethod(aCard, 'fields');
+ deferredResult.addCallback(MochiKit.Base.values);
+ deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.method(this, 'addField'));
+
+ deferredResult.addMethod(aCard, 'directLogins');
+ deferredResult.addCallback(MochiKit.Base.values);
+ deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.method(this, 'addDirectLogin'));
+
+
+ deferredResult.callback();
+
+ return deferredResult;
+// return Clipperz.Async.callbacks("CardDialogController.updateComponentState", [
+// MochiKit.Base.method(this.record(), 'hasPendingChanges'),
+// MochiKit.Base.method(this.cardDialogComponent(), 'setShouldEnableSaving'),
+//
+// MochiKit.Base.method(this.record(), 'label'),
+// MochiKit.Base.method(this.cardDialogComponent(), 'setTitle'),
+// MochiKit.Base.method(this.record(), 'notes'),
+// MochiKit.Base.method(this.cardDialogComponent(), 'setNotes'),
+//
+// MochiKit.Base.method(this.record(), 'fields'),
+// MochiKit.Base.values,
+// MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.method(this, 'addCardDialogComponentWithField')),
+//
+// MochiKit.Base.method(this.record(), 'directLogins'),
+// MochiKit.Base.values,
+// MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.method(this, 'addCardDialogComponentWithDirectLogin')),
+//
+// MochiKit.Base.method(this.cardDialogComponent(), 'resetNewFieldInputs'),
+// MochiKit.Base.noop
+// ], {trace:false});
+
+ },
+
+ //=========================================================================
+
+ 'showCardDetails': function (someData) {
+ this.element().innerHTML = '';
+ this.append(this.element(), [
+ {tag:'fieldset', id:this.getId('fields'), children:MochiKit.Base.map(function (aFieldData) {
+ return {tag:'div', cls:'row', children:[
+ {tag:'label', html:aFieldData['label']},
+// {tag:'span', cls:('fieldValue ' + (aFieldData['isHidden'] ? 'password' : 'text')), html:aFieldData['value']}
+ {tag:'div', cls:('fieldValue ' + (aFieldData['isHidden'] ? 'password' : 'text')), children:[
+ {tag:'div', children:[{tag:'p', html:aFieldData['value']}]}
+ ]}
+// {tag:'input', type:'text', cls:('fieldValue ' + (aFieldData['isHidden'] ? 'password' : 'text')), value:aFieldData['value'], disabled:true}
+
+ ]}
+ }, someData['fields'])}
+ ]);
+
+ MochiKit.Iter.forEach(MochiKit.Selector.findChildElements(this.element(), ['span.password']), MochiKit.Base.bind(function (aPasswordElement) {
+ MochiKit.Signal.connect(aPasswordElement, 'onclick', function (anEvent) { alert(MochiKit.DOM.scrapeText(anEvent.src())); })
+ }, this));
+
+ if (someData['directLogins'].length > 0) {
+ this.append(this.element(), [
+ {tag:'h2', html:"Direct logins"},
+ {tag:'fieldset', id:this.getId('directLogins'), children:MochiKit.Base.map(function (aDirectLoginData) {
+ return {tag:'div', cls:'row', id:('directLogin_' + aDirectLoginData['_reference']), children:[
+ {tag:'img', cls:'favicon', src:aDirectLoginData['favicon']},
+// {tag:'input', cls:'directLogin', disabled:'disabled', type:'text', name:aDirectLoginData['label'], value:aDirectLoginData['label']}
+ {tag:'span', cls:'directLogin', html:aDirectLoginData['label']}
+ ]}
+ }, someData['directLogins'])}
+ ]);
+
+ MochiKit.Base.map(MochiKit.Base.bind(function (aRowNode) {
+ MochiKit.Signal.connect(aRowNode, 'onclick', this, 'directLoginClickHandler');
+ }, this),
+ MochiKit.Selector.findChildElements(this.getElement('directLogins'), ['div.row'])
+ )
+ };
+
+ if (someData['notes'] != '') {
+ this.append(this.element(), [
+ {tag:'h2', html:"Notes"},
+ {tag:'fieldset', id:this.getId('fieldset'), children:[
+ {tag:'div', cls:'row notes', children:[
+ {tag:'span', html:someData['notes']}
+ ]}
+ ]}
+ ]);
+ };
+
+ return true;
+ },
+
+ //-------------------------------------------------------------------------
+/*
+ 'toggleClickHandler': function (anEvent) {
+ var nextState;
+ var fieldValue;
+
+//console.log("TOGGLE");
+ anEvent.preventDefault;
+ fieldValue = MochiKit.Selector.findChildElements(anEvent.src().parentNode.parentNode, ['span.password'])[0];
+
+ nextState = (MochiKit.DOM.getNodeAttribute(anEvent.src(), 'toggled') != 'true');
+ if (nextState) {
+ MochiKit.DOM.removeElementClass(fieldValue, 'clear');
+ } else {
+ MochiKit.DOM.addElementClass(fieldValue, 'clear');
+ }
+
+ MochiKit.DOM.setNodeAttribute(anEvent.src(), 'toggled', nextState);
+ },
+* /
+ //=========================================================================
+/*
+ 'directLoginClickHandler': function (anEvent) {
+ anEvent.preventDefault();
+
+ if (/(directLogin_)/.test(anEvent.src().id)) {
+ var directLoginReference;
+
+ directLoginReference = anEvent.src().id.match(/(directLogin_)(.*)/)[2];
+ MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'selectedDirectLogin', {cardReference:this.cardReference(), directLoginReference:directLoginReference});
+ }
+ },
+*/
+ //=========================================================================
+
+ __syntaxFix__: "syntax fix"
+});
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
@@ -10,84 +10,137 @@ refer to http://www.clipperz.com.
* Clipperz Community Edition is free software: you can redistribute
it and/or modify it under the terms of the GNU Affero General Public
License as published by the Free Software Foundation, either version
3 of the License, or (at your option) any later version.
* Clipperz Community Edition is distributed in the hope that it will
be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Affero General Public License for more details.
* You should have received a copy of the GNU Affero General Public
License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
*/
-Clipperz.Base.module('Clipperz.PM.UI.iPhone.Components');
+Clipperz.Base.module('Clipperz.PM.UI.Mobile.Components');
-Clipperz.PM.UI.iPhone.Components.CardList = function(args) {
+Clipperz.PM.UI.Mobile.Components.CardList = function(args) {
args = args || {};
- Clipperz.PM.UI.iPhone.Components.CardList.superclass.constructor.apply(this, arguments);
+ Clipperz.PM.UI.Mobile.Components.CardList.superclass.constructor.apply(this, arguments);
this._cardDetail = null;
return this;
}
//=============================================================================
-Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.CardList, Clipperz.PM.UI.Common.Components.BaseComponent, {
+Clipperz.Base.extend(Clipperz.PM.UI.Mobile.Components.CardList, Clipperz.PM.UI.Common.Components.BaseComponent, {
//-------------------------------------------------------------------------
'toString': function () {
- return "Clipperz.PM.UI.iPhone.Components.CardList component";
+ return "Clipperz.PM.UI.Mobile.Components.CardList component";
},
//-------------------------------------------------------------------------
- 'renderSelf': function(/*aContainer, aPosition*/) {
- this.append(this.element(), [
- {tag:'div', cls:'toolbar', id:'toolbar', children:[
- {tag:'h1', id:'pageTitle', html:"cards"},
- {tag:'a', id:'backButton', cls:'button', href:'#', html:"cards"}
+ 'renderSelf': function () {
+ this.append(this.element(), {tag:'div', cls:'cardList', children:[
+ {tag:'div', cls:'toolbar', children:[
+ {tag:'h1', html:"clipperz"},
+// {tag:'input', name:'search', type:'search', autocomplete:'off', placeholder:"search", id:this.getId('search')},
+ {tag:'a', href:'#', id:'settings', cls:'button', html:"*"}
]},
- {tag:'div', cls:'cardList', id:this.getId('cardList'), children:[
- {tag:'form', title:'search', cls:'panel cardListSearchForm', id:this.getId('cardListSearchForm'), children:[
- {tag:'input', type:'search', name:'search', value:"", placeholder:"search", id:this.getId('searchField')}
- ]},
- {tag:'ul', cls:'panel cardListPanel', id:this.getId('cardListPanel'), children:[]}
- ]},
- {tag:'div', cls:'panel cardDetailPanel', id:this.getId('cardDetail')}
- ]);
+ {tag:'div', cls:'scroll', id:this.getId('listBox'), children:[
+ {tag:'ul', cls:'rounded', id:this.getId('list'), children:[
+ {tag:'li', html:'loading'}
+ ]}
+ ]}
+ ]});
+
+ MochiKit.Signal.connect(this.getElement('list'), 'onclick', this, 'cardSelectionHandler');
+ MochiKit.Signal.connect(this.getElement('list'), 'ontouchstart', this, 'cardSelectionHandler');
+// MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onsubmit', this, 'searchHandler');
+// MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onkeydown', this, 'searchHandler');
+// MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onkeyup', this, 'searchHandler');
+
+// MochiKit.Signal.connect(this.getElement('cardListPanel'), 'onclick', this, 'cardListClickHandler');
+// MochiKit.Signal.connect('backButton', 'onclick', this, 'backButtonClickHandler');
+
+// MochiKit.Style.hideElement('backButton');
+// MochiKit.Style.hideElement(this.getElement('cardDetail'));
+ },
- MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onsubmit', this, 'searchHandler');
- MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onkeydown', this, 'searchHandler');
- MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onkeyup', this, 'searchHandler');
+ 'showCards': function (someCards) {
+ var cardListElement;
+ if (this.isFullyRendered() == false) {
+ this.render();
+ };
+
+ cardListElement = this.getElement('list')
+
+ cardInfo = {
+ '_rowObject': MochiKit.Async.succeed,
+ '_reference': MochiKit.Base.methodcaller('reference'),
+ '_searchableContent': MochiKit.Base.methodcaller('searchableContent'),
+ 'label': MochiKit.Base.methodcaller('label'),
+ 'favicon': MochiKit.Base.methodcaller('favicon')
+ };
+
+//console.log("someCards", someCards);
+ deferredResult = new Clipperz.Async.Deferred("CardList.showCards", {trace:false});
+ deferredResult.addCallback(MochiKit.Base.map, Clipperz.Async.collectResults("CardList.value - collectResults", cardInfo, {trace:false}));
+ deferredResult.addCallback(Clipperz.Async.collectAll);
+ deferredResult.addCallback(MochiKit.Base.methodcaller('sort', Clipperz.Base.caseInsensitiveKeyComparator('label')));
+ deferredResult.addCallbackPass(MochiKit.DOM.replaceChildNodes, cardListElement);
+// deferredResult.addCallbackPass(MochiKit.DOM.removeElementClass, cardListElement, 'loading');
+ deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.method(this, 'appendCardToList', cardListElement));
+ deferredResult.callback(someCards);
+ },
- MochiKit.Signal.connect(this.getElement('cardListPanel'), 'onclick', this, 'cardListClickHandler');
- MochiKit.Signal.connect('backButton', 'onclick', this, 'backButtonClickHandler');
+ 'appendCardToList': function (aCardListElement, aCardInfo) {
+//console.log("appendCardToList", aCardInfo);
+ this.append(aCardListElement, {tag:'li', cls:'cardListItem arrow', cardreference:aCardInfo['_reference'], children:[
+ {tag:'a', href:'#', html:aCardInfo['label'], children:[
+ {tag:'small', cls:'favicon', children:[{tag:'img', cls:'favicon', src:aCardInfo['favicon']}]}
+ ]}
+ ]});
+ },
+
+ 'cardSelectionHandler': function (anEvent) {
+ var listElement;
+ var cardReference;
- MochiKit.Style.hideElement('backButton');
- MochiKit.Style.hideElement(this.getElement('cardDetail'));
+ anEvent.preventDefault();
+
+ listElement = anEvent.target();
+ if (MochiKit.DOM.getNodeAttribute(listElement, 'cardreference') == null) {
+ listElement = MochiKit.DOM.getFirstParentByTagAndClassName(anEvent.target(), tagName='li', className='cardListItem');
+ }
+ cardReference = MochiKit.DOM.getNodeAttribute(listElement, 'cardreference');
+console.log("###", listElement, cardReference);
+ // TODO: Notify card with reference MochiKit.DOM.getNodeAttribute(listElement, 'cardreference') has been selected
+ MochiKit.Signal.signal(this, 'selectedCard', cardReference);
},
//-------------------------------------------------------------------------
-
+/*
'searchHandler': function (anEvent) {
if ((typeof(anEvent.key()) != 'undefined') && (anEvent.key().string == 'KEY_ENTER')) { // RETURN
anEvent.preventDefault();
} else {
if ((typeof(anEvent.key()) != 'undefined') && (anEvent.key().string == 'KEY_ESCAPE')) {
anEvent.target().value = "";
}
if (anEvent.type() == 'keyup') {
MochiKit.Signal.signal(this, 'searchEvent', anEvent.target().value);
}
}
},
//-------------------------------------------------------------------------
@@ -114,33 +167,33 @@ Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.CardList, Clipperz.PM.UI.C
'cardListClickHandler': function (anEvent) {
anEvent.preventDefault();
if (/(cardListReference_|cardListItem_)/.test(anEvent.target().id)) {
var cardListReference;
cardListReference = anEvent.target().id.match(/(cardListReference_|cardListItem_)(.*)/)[2];
//console.log("Showing detail for card named", cardListReference);
MochiKit.Signal.signal(this, 'selectedCard', cardListReference);
}
},
//=========================================================================
'cardDetail': function (someData) {
if (this._cardDetail == null) {
- this._cardDetail = new Clipperz.PM.UI.iPhone.Components.CardDetail({element:this.getElement('cardDetail')});
+ this._cardDetail = new Clipperz.PM.UI.Mobile.Components.CardDetail({element:this.getElement('cardDetail')});
}
return this._cardDetail;
},
//-------------------------------------------------------------------------
'removeCardDetail': function () {
if (this._cardDetail != null) {
this._cardDetail.remove();
this._cardDetail = null;
}
},
//=========================================================================
@@ -182,20 +235,20 @@ Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.CardList, Clipperz.PM.UI.C
anEvent.preventDefault();
MochiKit.DOM.getElement('pageTitle').innerHTML = "cards";
offset = ((MochiKit.DOM.getNodeAttribute(MochiKit.DOM.currentDocument().body, 'orientation') == 'portrait') ? 320 : 480);
MochiKit.Style.setElementPosition(this.getElement('cardList'), {x:-offset});
MochiKit.DOM.showElement(this.getElement('cardList'));
new MochiKit.Visual.Parallel([
new MochiKit.Visual.Move(this.getElement('cardList'), {x:offset, y:0, mode:'relative', transition:MochiKit.Visual.Transitions.linear, sync:true}),
new MochiKit.Visual.Move(this.getElement('cardDetail'), {x:offset, y:0, mode:'relative', transition:MochiKit.Visual.Transitions.linear, sync:true}),
MochiKit.Visual.fade (this.getElement('cardDetail'), { transition:MochiKit.Visual.Transitions.linear, sync:true}),
MochiKit.Visual.fade ('backButton', { transition:MochiKit.Visual.Transitions.linear, sync:true})
], {duration:1, afterFinish:MochiKit.Base.method(this, 'removeCardDetail')})
},
-
+*/
//=========================================================================
__syntaxFix__: "syntax fix"
});
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 @@
+/*
+
+Copyright 2008-2011 Clipperz Srl
+
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
+For further information about its features and functionalities please
+refer to http://www.clipperz.com.
+
+* Clipperz Community Edition is free software: you can redistribute
+ it and/or modify it under the terms of the GNU Affero General Public
+ License as published by the Free Software Foundation, either version
+ 3 of the License, or (at your option) any later version.
+
+* Clipperz Community Edition is distributed in the hope that it will
+ be useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU Affero General Public License for more details.
+
+* You should have received a copy of the GNU Affero General Public
+ License along with Clipperz Community Edition. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+Clipperz.Base.module('Clipperz.PM.UI.Mobile.Components');
+
+Clipperz.PM.UI.Mobile.Components.LoginForm = function(args) {
+ args = args || {};
+
+ this._pin = '';
+
+ this._message = null;
+ this._steps = 0;
+ this._actualSteps = 0;
+
+ this._callback = null;
+ this._errorCallback = null;
+
+ this._mode = 'CREDENTIALS';
+
+ Clipperz.PM.UI.Mobile.Components.LoginForm.superclass.constructor.apply(this, arguments);
+
+ return this;
+}
+
+//=============================================================================
+
+Clipperz.Base.extend(Clipperz.PM.UI.Mobile.Components.LoginForm, Clipperz.PM.UI.Common.Components.BaseComponent, {
+
+ //-------------------------------------------------------------------------
+
+ 'toString': function () {
+ return "Clipperz.PM.UI.Mobile.Components.LoginForm component";
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'callback': function () {
+ return this._callback;
+ },
+
+ 'errorCallback': function () {
+ return this._errorCallback;
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'mode': function () {
+ return this._mode;
+ },
+
+ 'setMode': function (aValue) {
+ this._mode = aValue;
+ },
+
+ //..........................................................................
+
+ 'pin': function () {
+ return this._pin;
+ },
+
+ 'setPin': function (aValue) {
+ this._pin = aValue;
+ },
+
+ //..........................................................................
+
+ 'username': function () {
+ return this._username;
+ },
+
+ 'setUsername': function (aValue) {
+ this._username = aValue;
+ },
+
+ //..........................................................................
+
+ 'passphrase': function () {
+ return this._passphrase;
+ },
+
+ 'setPassphrase': function (aValue) {
+ this._passphrase = aValue;
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'message': function () {
+ return this._message;
+ },
+
+ '_setMessage': function (aValue) {
+ this._message = aValue;
+
+ if (aValue == null) {
+ MochiKit.Style.hideElement(this.getElement('credentialsMessage'));
+ } else {
+ this.getElement('message').innerHTML = aValue;
+ MochiKit.Style.showElement(this.getElement('credentialsMessage'));
+ }
+ },
+
+ 'setMessage': function (aValue) {
+ this._setMessage(aValue);
+ MochiKit.DOM.removeElementClass(this.getElement('credentialsMessage'), 'error');
+ },
+
+ 'setErrorMessage': function (aValue) {
+ this._setMessage(aValue);
+ MochiKit.DOM.addElementClass(this.getElement('credentialsMessage'), 'error');
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'setCallbacks': function (args) {
+ this._callback = args['callback'];
+ this._errorCallback = args['errorCallback'];
+ },
+
+ 'showErrors': function (args) {
+//console.log("LoginForm.showErrors", args);
+ if (args['previousFailedAttempt'] == 'LOGIN') {
+ this.setErrorMessage("Wrong credentials");
+ } else if (args['previousFailedAttempt'] == 'PIN') {
+ if (args['failedAttempts'] == -1) {
+ this.setErrorMessage("Wrong PIN - Resetted");
+ } else {
+ this.setErrorMessage("Wrong PIN");
+ }
+ } else {
+ this.setMessage(null);
+ }
+ },
+
+ 'updateWithArgs': function (args) {
+ this.renderIfNeeded();
+ this.setCallbacks(args);
+ this.showErrors(args);
+ this.updateRendering();
+ },
+
+ 'showPinLogin': function (args) {
+ this.setPin('');
+ this.setMode('PIN');
+ this.updateWithArgs(args);
+
+// $(this.getAnchor('PIN')).focus();
+ this.getElement('PIN').focus();
+ },
+
+ 'showCredentialsLogin': function (args) {
+ this.setMode('CREDENTIALS');
+ this.updateWithArgs(args);
+
+ if (this.getElement('usernameField').value.length == 0) {
+// $(this.getAnchor('usernameField')).focus();
+ this.getElement('usernameField').focus();
+ } else {
+// $(this.getAnchor('passphraseField')).focus();
+ this.getElement('passphraseField').focus();
+ this.getElement('passphraseField').select();
+ }
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'renderIfNeeded': function () {
+ if (this.isFullyRendered() == false) {
+ this.render();
+ };
+ this.updateRendering();
+ },
+
+ 'updateRendering': function () {
+ MochiKit.Style.showElement(this.getElement('credentialsBody'));
+ MochiKit.Style.hideElement(this.getElement('validating'));
+
+// this.hideAllPanes();
+ MochiKit.Base.map(function (aNode) { MochiKit.Style.hideElement(aNode); }, MochiKit.Selector.findDocElements('div.credentialsBody > div'));
+ if (this.mode() == 'CREDENTIALS') {
+ selectedPanel = this.getElement('credentials')
+ } else if (this.mode() == 'PIN') {
+ selectedPanel = this.getElement('pin')
+// this.updatePinDisplay();
+ } else {
+ throw 'Unhandled login form mode';
+ }
+ MochiKit.Style.showElement(selectedPanel);
+
+ MochiKit.Style.hideElement(this.getElement('validating'));
+ },
+
+ 'renderSelf': function() {
+ var selectedPanel;
+ this.append(this.element(), {tag:'div', id:'login', children:[
+ {tag:'div', cls:'toolbar', children:[
+ {tag:'h1', html:"clipperz"}
+ ]},
+ {tag:'div', cls:'scroll', children:[
+ //==================================================================
+ {tag:'div', cls:'credentialsMessage', id:this.getId('credentialsMessage'), children:[
+ {tag:'h1', cls:'message', id:this.getId('message'), html:"Message"}
+ ]},
+ //==================================================================
+ {tag:'div', cls:'credentialsBody', id:this.getId('credentialsBody'), children:[
+ //--------------------------------------------------------------
+ {tag:'div', cls:'pin', id:this.getId('pin'), children:[
+ {tag:'form', cls:'scroll', id:this.getId('pinForm'), children:[
+ {tag:'ul', cls:'edit rounded', children:[
+ {tag:'li', children:[{tag:'input', type:'number', name:'PIN', placeholder:"PIN", id:this.getId('PIN') }]},
+ ]},
+ {tag:'a', href:'#', cls:'greenButton', id:this.getId('pinSubmitButton'), html:"Login"}
+ ]}
+ ]},
+ //--------------------------------------------------------------
+ {tag:'div', cls:'credentials', id:this.getId('credentials'), children:[
+ {tag:'form', cls:'scroll', id:this.getId('credentialsForm'), children:[
+ {tag:'ul', cls:'edit rounded', children:[
+ {tag:'li', children:[{tag:'input', type:'email', name:'name', /*value:'joe',*/ placeholder:"username", id:this.getId('usernameField') }]},
+ {tag:'li', children:[{tag:'input', type:'password', name:'passphrase', /*value:'clipperz',*/ placeholder:"passphrase", id:this.getId('passphraseField') }]}
+ ]},
+ {tag:'a', href:'#', cls:'greenButton', id:this.getId('credentialsSubmitButton'), html:"Login"}
+// {tag:'input', type:'submit', cls:'greenButton', id:this.getId('credentialsSubmitButton'), value:"Login"}
+
+ ]}
+ ]},
+ //--------------------------------------------------------------
+ ]},
+ //==================================================================
+ {tag:'div', cls:'validating', id:this.getId('validating'), children:[
+ {tag:'div', cls:'loading', children:[
+ {tag:'div', cls:'spinner', children:[
+ {tag:'div', cls:'bar01'},
+ {tag:'div', cls:'bar02'},
+ {tag:'div', cls:'bar03'},
+ {tag:'div', cls:'bar04'},
+ {tag:'div', cls:'bar05'},
+ {tag:'div', cls:'bar06'},
+ {tag:'div', cls:'bar07'},
+ {tag:'div', cls:'bar08'},
+ {tag:'div', cls:'bar09'},
+ {tag:'div', cls:'bar10'},
+ {tag:'div', cls:'bar11'},
+ {tag:'div', cls:'bar12'}
+ ]}
+ ]},
+ {tag:'div', id:this.getId('loadingMessage')},
+ {tag:'a', href:'#', cls:'grayButton', id:this.getId('loginCancelButton'), html:"Cancel"}
+ ]}
+ //==================================================================
+ ]}
+ ]});
+
+ MochiKit.Signal.connect(this.getElement('credentialsForm'), 'onsubmit', this, 'submitCredentialsHandler');
+ MochiKit.Signal.connect(this.getElement('credentialsSubmitButton'), 'onclick', this, 'submitCredentialsHandler');
+
+ MochiKit.Signal.connect(this.getElement('pinForm'), 'onsubmit', this, 'submitPinHandler');
+ MochiKit.Signal.connect(this.getElement('pinSubmitButton'), 'onclick', this, 'submitPinHandler');
+
+ MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'initProgress', this, 'initProgressHandle');
+ MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'updateProgress', this, 'updateProgressHandle');
+ MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'advanceProgress', this, 'advanceProgressHandle');
+ MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'progressDone', this, 'progressDoneHandle');
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'submitPinHandler': function (anEvent) {
+ var pin;
+
+ this.setMessage(null);
+ pin = this.getElement('PIN').value;
+// $(this.getAnchor('PIN')).blur();
+ this.getElement('PIN').blur();
+
+ credentials = Clipperz.PM.PIN.credentialsWithPIN(pin);
+ this.loginWithCredentials(credentials);
+ },
+
+ 'submitCredentialsHandler': function (anEvent) {
+//console.log("submitCredentialsHandler");
+ var credentials;
+
+ this.setMessage(null);
+
+ credentials = {};
+ credentials['username'] = this.getElement('usernameField').value;
+ credentials['passphrase'] = this.getElement('passphraseField').value;
+// $(this.getAnchor('passphraseField')).blur();
+ this.getElement('passphraseField').blur();
+
+ this.loginWithCredentials(credentials);
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'loginWithCredentials': function (someCredentials) {
+ var args;
+
+ args = {};
+ args['credentials'] = someCredentials;
+ args['errorCallback'] = this.errorCallback();
+
+ MochiKit.Style.hideElement(this.getElement('credentialsBody'));
+ MochiKit.Style.showElement(this.getElement('validating'));
+
+ MochiKit.Async.callLater(0.1, this.callback(), args);
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'initProgressHandle': function (anEvent) {
+//console.log("** initProgressHandle", anEvent);
+ this._steps = anEvent['steps'];
+ this._actualSteps = 0;
+ },
+
+ 'updateProgressHandle': function (anEvent) {
+//console.log("** updateProgressHandle", anEvent);
+ this._steps += anEvent['extraSteps'];
+ },
+
+ 'advanceProgressHandle': function (anEvent) {
+//console.log("** advanceProgressHandle", anEvent);
+ this._actualSteps ++;
+//console.log("STEPS: " + this._actualSteps + "/" + this._steps);
+ },
+
+ 'progressDoneHandle': function (anEvent) {
+//console.log("** progressDoneHandle", anEvent);
+ },
+
+ //-------------------------------------------------------------------------
+ __syntaxFix__: "syntax fix"
+});
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 @@
+/*
+
+Copyright 2008-2011 Clipperz Srl
+
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
+For further information about its features and functionalities please
+refer to http://www.clipperz.com.
+
+* Clipperz Community Edition is free software: you can redistribute
+ it and/or modify it under the terms of the GNU Affero General Public
+ License as published by the Free Software Foundation, either version
+ 3 of the License, or (at your option) any later version.
+
+* Clipperz Community Edition is distributed in the hope that it will
+ be useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU Affero General Public License for more details.
+
+* You should have received a copy of the GNU Affero General Public
+ License along with Clipperz Community Edition. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+Clipperz.Base.module('Clipperz.PM.UI.Mobile.Controllers');
+
+Clipperz.PM.UI.Mobile.Controllers.MainController = function() {
+ this._jQTouch = null;
+ this._user = null;
+ this._proxy = null;
+ this._loginForm = null;
+ this._cardList = null;
+ this._cardDetail = null;
+
+ return this;
+}
+
+MochiKit.Base.update(Clipperz.PM.UI.Mobile.Controllers.MainController.prototype, {
+
+ 'toString': function () {
+ return "Clipperz.PM.UI.Mobile.Controllers.MainController";
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'user': function () {
+ return this._user;
+ },
+
+ 'setUser': function (aValue) {
+ this._user = aValue;
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'jQTouch': function () {
+ return this._jQTouch;
+ },
+
+ 'setJQTouch': function (aValue) {
+ this._jQTouch = aValue;
+ },
+
+ //=========================================================================
+
+ 'run': function () {
+ console.log("MainController.run");
+
+ MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'doLogin', MochiKit.Base.method(this, 'doLogin'));
+ Clipperz.DOM.Helper.overwrite(MochiKit.DOM.currentDocument().body, {tag:'div', id:'jqt', children:[
+ {tag:'div', id:'loginForm'},
+ {tag:'div', id:'cardList'},
+ {tag:'div', id:'cardDetail'},
+ {tag:'div', id:'preferences'}
+ ]});
+
+ this.showLoginForm();
+
+ this.initjQTouch();
+
+
+// this.showAddToHomeScreenBaloon();
+// this.selectInitialProxy();
+ },
+
+ 'initjQTouch': function () {
+ var jqt;
+
+ jqt = new $.jQTouch({
+ icon: 'data:image/png;charset=utf-8;base64,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',
+// icon4: 'jqtouch4.png',
+// startupScreen: null, // Pass a string path to a 320px x 460px startup screen for full screen apps.
+ statusBar: 'black-translucent', // Styles the status bar when running as a fullscreen app. Other options are `default`, `black`, and `black-translucent`.
+// addGlossToIcon: true, // Set to 'false' to prevent automatic glossy button effect on icon.
+ preloadImages: false, // Pass an array of image paths to load them before page loads. Ex: `['images/link_over.png', 'images/link_select.png']`
+ fixedViewport: true, // Removes the user's ability to scale the page. Ensures the site behaves more like an application.
+// fullScreen: true, // The website will become a fullscreen application when saved to a user's home screen. Set to `false` to disable.
+// 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.
+// themeSelectionSelector: '#jqt #themes ul', // ???
+
+// useAnimations: true, // Set to `false` to disable all animations.
+// useFastTouch: true, // Removes ~350ms onClick delay when tapping a link (use in conjunction with the .tap() event) **Experimental**
+// useTouchScroll: true, // Adds support for iOS5 scrolling. Set to false to disable. **Experimental**
+
+ cacheGetRequests: false, // Automatically caches GET requests, so subsequent taps reference the pre-loaded views. (default: true)
+
+// 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.
+
+// cubeSelector: '.cube', // Link selector for a cube animation.
+// dissolveSelector: '.dissolve', // Link selector for a dissolve animation.
+// fadeSelector: '.fade', // Link selector for a fade animation.
+// flipSelector: '.flip', // Link selector for a 3d flip animation.
+ formSelector: null, // Sets which forms are automatically submitted via Ajax. (default: 'form')
+// popSelector: '.pop', // Link selector for a pop animation. (default: '.pop')
+// 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')
+// slideupSelector: '.slideup', // Link selector for a slide up animation. (default: '.slideup')
+// submitSelector: '.submit', // Selector which, when clicked, will submit its parent form (and close keyboard if open). (default: '.submit')
+// swapSelector: '.swap', // Link selector for 3d swap animation. (default: '.swap')
+// 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')
+
+ debug: false
+ });
+
+ this.setJQTouch(jqt);
+ },
+
+ //=========================================================================
+
+ 'showAddToHomeScreenBaloon': function () {
+console.log(">>> showAddToHomeScreenBaloon");
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'selectInitialProxy': function () {
+//console.log(">>> selectInitialProxy");
+ if (this.isOnline()) {
+//console.log("--- selectInitialProxy: using default proxy");
+ this._proxy = Clipperz.PM.Proxy.defaultProxy;
+ } else {
+ if (this.hasLocalData()) {
+//console.log("--- selectInitialProxy: using local cache proxy");
+ this._proxy = new Clipperz.PM.Proxy.OfflineCache({'shouldPayTolls':false});
+ } else {
+ this.showOfflineError();
+ }
+ }
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'showLoginForm': function (args) {
+ args = args || {};
+
+ args['callback'] = MochiKit.Base.method(this, 'doLogin');
+
+ if (Clipperz.PM.PIN.isSet()) {
+ args['errorCallback'] = MochiKit.Base.method(this, 'handleFailedPinLogin');
+ this.loginForm().showPinLogin(args);
+ } else {
+ args['errorCallback'] = MochiKit.Base.method(this, 'handleFailedCredentialsLogin');
+ this.loginForm().showCredentialsLogin(args);
+ }
+ },
+
+ //.........................................................................
+
+ 'handleFailedCredentialsLogin': function () {
+console.log("LOGIN FAILED");
+ this.showLoginForm({'previousFailedAttempt':'LOGIN'});
+ },
+
+ //.........................................................................
+
+ 'handleFailedPinLogin': function () {
+ var failedAttempts;
+ var status;
+
+ failedAttempts = Clipperz.PM.PIN.recordFailedAttempt();
+ this.showLoginForm({'previousFailedAttempt':'PIN', 'failedAttempts': failedAttempts});
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'doLogin': function (someArgs) {
+ var deferredResult;
+ var credentials;
+ var errorCallback;
+ var user;
+ var getPassphraseDelegate;
+
+//console.log(">>> MainController.doLogin", someArgs);
+ credentials = someArgs['credentials'];
+ errorCallback = someArgs['errorCallback'] || MochiKit.Base.noop;
+
+ getPassphraseDelegate = MochiKit.Base.partial(MochiKit.Async.succeed, credentials.passphrase);
+ user = new Clipperz.PM.DataModel.User({'username':credentials.username, 'getPassphraseFunction':getPassphraseDelegate});
+
+ deferredResult = new Clipperz.Async.Deferred('MainController.doLogin', {trace:false});
+ deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'initProgress', {'steps':4});
+ deferredResult.addCallback(MochiKit.Async.wait, 0.1);
+ deferredResult.addMethod(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'deferredEntropyCollection');
+ deferredResult.addMethod(user, 'login');
+ deferredResult.addCallbacks(
+ MochiKit.Base.method(this, 'processSuccessfulLogin', user),
+ errorCallback
+ );
+ deferredResult.callback();
+
+ return deferredResult;
+ },
+
+ //..........................................................................
+
+ 'processSuccessfulLogin': function (aUser) {
+ var deferredResult;
+
+ deferredResult = new Clipperz.Async.Deferred('MainController.processSuccessfulLogin', {trace:false});
+ deferredResult.addMethod(Clipperz.PM.PIN, 'resetFailedAttemptCount');
+// deferredResult.addMethod(this, 'removeLoginForm');
+ deferredResult.addMethod(this, 'setUser', aUser);
+ deferredResult.addMethod(this, 'setupApplication');
+ deferredResult.addMethod(this, 'runApplication');
+ deferredResult.callback();
+
+ return deferredResult;
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'setupApplication': function () {
+ var deferredResult;
+
+console.log(">>> setupApplication");
+ deferredResult = new Clipperz.Async.Deferred("MainController.setupApplication", {trace:false});
+ deferredResult.addMethod(this, 'welcomeFirstTimeUser');
+ deferredResult.addMethod(this, 'showPaymentReminder');
+ deferredResult.addMethod(this, 'copyDataLocally');
+ deferredResult.callback(arguments);
+
+ return deferredResult;
+ },
+
+
+ //..........................................................................
+
+ 'isFirstTimeUser': function () {
+ return false;
+ },
+
+ 'welcomeFirstTimeUser': function () {
+ var deferredResult;
+
+ deferredResult = new Clipperz.Async.Deferred('MainController.welcomeFirstTimeUser', {trace:false});
+
+ if (this.isFirstTimeUser()) {
+ deferredResult.addCallback(function () { console.log("--> welcome"); });
+ }
+ deferredResult.callback();
+
+ return deferredResult;
+ },
+
+ //..........................................................................
+
+ 'shouldShowPaymentReminder': function () {
+ return true;
+ },
+
+ 'showPaymentReminder': function () {
+ var deferredResult;
+
+ deferredResult = new Clipperz.Async.Deferred('MainController.showPaymentReminder', {trace:false});
+
+ if (this.shouldShowPaymentReminder()) {
+ deferredResult.addCallback(function () { console.log("--> payment reminder"); });
+ }
+ deferredResult.callback();
+
+ return deferredResult;
+ },
+
+ //..........................................................................
+
+ 'canCopyDataLocally': function () {
+ return false;
+ },
+
+ 'copyDataLocally': function () {
+ var deferredResult;
+
+ deferredResult = new Clipperz.Async.Deferred('MainController.copyDataLocally', {trace:false});
+
+ if (this.canCopyDataLocally()) {
+ deferredResult.addCallback(function () { console.log("--> copy data locally"); });
+ }
+ deferredResult.callback();
+
+ return deferredResult;
+
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'runApplication': function () {
+ var deferredResult;
+
+//console.log(">>> runApplication");
+ deferredResult = new Clipperz.Async.Deferred('MainController.runApplication', {trace:true});
+ deferredResult.addMethod(this.user(), 'getRecords');
+ deferredResult.addMethod(this, 'showCards');
+ deferredResult.callback();
+
+ return deferredResult;
+ },
+
+ //=========================================================================
+
+ 'showOfflineError': function (anException) {
+ alert("Error: " + anException);
+ throw anException;
+ },
+
+ //=========================================================================
+
+ 'isOnline': function() {
+ return navigator.onLine;
+ },
+
+ 'hasLocalData': function() {
+ return false;
+ },
+
+ //=========================================================================
+
+ 'loginForm': function() {
+ if (this._loginForm == null) {
+ this._loginForm = new Clipperz.PM.UI.Mobile.Components.LoginForm({element:MochiKit.DOM.getElement('loginForm')});
+ }
+
+ return this._loginForm;
+ },
+
+ 'removeLoginForm': function () {
+ if (this._loginForm != null) {
+ this._loginForm.remove();
+ this._loginForm = null;
+ }
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'cardList': function () {
+ if (this._cardList == null) {
+ this._cardList = new Clipperz.PM.UI.Mobile.Components.CardList({element:MochiKit.DOM.getElement('cardList')});
+ MochiKit.Signal.connect(this._cardList, 'selectedCard', this, 'selectCardHandler');
+ }
+
+ return this._cardList;
+ },
+
+ 'showCards': function (someCards) {
+ this.cardList().showCards(someCards);
+ this.jQTouch().goTo('#cardList', 'slideleft');
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'cardDetail': function () {
+ if (this._cardDetail == null) {
+ this._cardDetail = new Clipperz.PM.UI.Mobile.Components.CardDetail({element:MochiKit.DOM.getElement('cardDetail')});
+ }
+
+ return this._cardDetail;
+ },
+
+ 'selectCardHandler': function (aCardReference) {
+ var deferredResult;
+
+ deferredResult = new Clipperz.Async.Deferred("MainController.selectCardHandler", {trace:true});
+ deferredResult.addMethod(this.cardDetail(), 'render');
+ deferredResult.addMethod(this.jQTouch(), 'goTo', '#cardDetail', 'slideleft');
+ deferredResult.addMethod(this.user(), 'getRecord', aCardReference);
+ deferredResult.addMethod(this.cardDetail(), 'showCard');
+ deferredResult.callback();
+
+ return deferredResult;
+ },
+
+ //=========================================================================
+ __syntaxFix__: "syntax fix"
+});
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
@@ -28,32 +28,36 @@ Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
Clipperz.PM.UI.Web.Components.AccountPanel = function(args) {
args = args || {};
Clipperz.PM.UI.Web.Components.AccountPanel.superclass.constructor.apply(this, arguments);
// this._initiallySelectedTab = args.selected || 'ACCOUNT';
this._initiallySelectedTab = args.selected || 'PASSPHRASE';
this._tabPanelControllerConfiguration = {
// 'ACCOUNT': {
// tab: 'accountTab',
// panel: 'accountPanel'
// },
'PASSPHRASE': {
tab: 'passphraseTab',
panel: 'passphrasePanel'
},
+ 'OTP': {
+ tab: 'OTPTab',
+ panel: 'OTPPanel'
+ },
'PREFERENCES': {
tab: 'preferencesTab',
panel: 'preferencesPanel'
},
'LOGIN_HISTORY': {
tab: 'loginHistoryTab',
panel: 'loginHistoryPanel'
}
};
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.AccountPanel, Clipperz.PM.UI.Common.Components.TabPanelComponent, {
@@ -61,32 +65,33 @@ Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.AccountPanel, Clipperz.PM.UI.
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Web.Components.AccountPanel component";
},
//-------------------------------------------------------------------------
'renderSelf': function(/*aContainer, aPosition*/) {
//Clipperz.log("AccountPanel.renderSelf element", this.element());
this.append(this.element(), [
{tag:'div', cls:'header', children:[
{tag:'div', cls:'subPanelTabs', children:[
{tag:'ul', children:[
// {tag:'li', id:this.getId('accountTab'), children:[{tag:'a', href:'#', html:'Account'}], cls:'first'},
{tag:'li', id:this.getId('passphraseTab'), children:[{tag:'a', href:'#', html:'Passphrase'}], cls:'first'},
+ {tag:'li', id:this.getId('OTPTab'), children:[{tag:'a', href:'#', html:'One Time Passwords'}]},
{tag:'li', id:this.getId('preferencesTab'), children:[{tag:'a', href:'#', html:'Preferences'}]},
{tag:'li', id:this.getId('loginHistoryTab'), children:[{tag:'a', href:'#', html:'Login history'}]}
]}
]}
]},
{tag:'div', cls:'body', children:[
{tag:'div', cls:'accountPanel', children:[
{tag:'div', cls:'subPanelContent', children:[
{tag:'ul', children:[
// {tag:'li', id:this.getId('accountPanel'), children:[
// {tag:'h3', html:"-- Account --"}
// ]},
{tag:'li', id:this.getId('passphrasePanel'), children:[
{tag:'h3', cls:'changePassphrase', html:"Change passphrase"},
{tag:'form', id:this.getId('changePassphrase'), cls:'changePassphrase', children:[
{tag:'div', cls:'currentCredentials', children:[
@@ -104,42 +109,42 @@ Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.AccountPanel, Clipperz.PM.UI.
{tag:'label', html:"new passphrase", 'for':this.getId('newPassphrase')},
{tag:'input', id:this.getId('newPassphrase')}
]},
{tag:'div', cls:'field', children:[
{tag:'label', html:"re-new passphrase", 'for':this.getId('reNewPassphrase')},
{tag:'input', id:this.getId('reNewPassphrase')}
]}
]},
{tag:'div', cls:'confirm', children:[
{tag:'input', type:'checkbox', id:this.getId('confirm')},
{tag:'label', html:"I understand that Clipperz will not be able to recover a lost passphrase", 'for':this.getId('confirm')}
]}
]},
{tag:'div', cls:'clear'},
{tag:'div', cls:'confirmButton', id:this.getId('confirmationButton'), children:[
{tag:'span', html:"change passphrase"}
+ ]}
]},
-
- {tag:'h3', cls:'manageOTP', html:"Manage One-Time Passphrases"},
- {}
+ {tag:'li', id:this.getId('OTPPanel'), children:[
+// {tag:'h3', html:"Manage One-Time Passphrases"}
]},
{tag:'li', id:this.getId('preferencesPanel'), children:[
- {tag:'h3', html:"-- Preferences --"}
+// {tag:'h3', html:"-- Preferences --"}
]},
{tag:'li', id:this.getId('loginHistoryPanel'), children:[
- {tag:'h3', html:"-- Login History --"}
+// {tag:'h3', html:"-- Login History --"}
]}
]}
]}
]}
]},
{tag:'div', cls:'footer'}
]);
this.tabPanelController().setup({selected:this.initiallySelectedTab()});
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
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
@@ -69,40 +69,48 @@ Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DataPanel, Clipperz.PM.UI.Com
this.append(this.element(), [
{tag:'div', cls:'header', children:[
{tag:'div', cls:'subPanelTabs', children:[
{tag:'ul', children:[
{tag:'li', id:this.getId('offlineCopyTab'), children:[{tag:'a', href:'#', html:'Offline copy'}], cls:'first'},
{tag:'li', id:this.getId('sharingTab'), children:[{tag:'a', href:'#', html:'Sharing'}]},
{tag:'li', id:this.getId('importTab'), children:[{tag:'a', href:'#', html:'Import'}]},
{tag:'li', id:this.getId('exportTab'), children:[{tag:'a', href:'#', html:'Export'}]}
]}
]}
]},
{tag:'div', cls:'body', children:[
{tag:'div', cls:'accountPanel', children:[
{tag:'div', cls:'subPanelContent', children:[
{tag:'ul', children:[
{tag:'li', id:this.getId('offlineCopyPanel'), children:[
- {tag:'h3', html:"Offline copy"}
+// {tag:'h3', html:"Offline copy"},
+ {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."},
+ {tag:'a', id:this.getId('offlineCopyDownloadLink'), href:'#', html:"Download", cls:'downloadOfflineCopy'}
]},
{tag:'li', id:this.getId('sharingPanel'), children:[
- {tag:'h3', html:"Sharing"}
+// {tag:'h3', html:"Sharing"}
]},
{tag:'li', id:this.getId('importPanel'), children:[
- {tag:'h3', html:"Import"}
+// {tag:'h3', html:"Import"}
]},
{tag:'li', id:this.getId('exportPanel'), children:[
- {tag:'h3', html:"Export"}
+// {tag:'h3', html:"Export"}
]}
]}
]}
]}
]},
{tag:'div', cls:'footer'}
]);
this.tabPanelController().setup({selected:this.initiallySelectedTab()});
+ MochiKit.Signal.connect(this.getId('offlineCopyDownloadLink'), 'onclick', this, 'downloadOfflineCopy');
+ },
+
+ 'downloadOfflineCopy': function (anEvent) {
+ anEvent.preventDefault();
+ MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'downloadOfflineCopy', anEvent.src());
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
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
@@ -69,72 +69,76 @@ Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginProgress, Clipperz.PM.UI
//console.log(">> LoginProgress.renderSelf", this.element());
this.append(this.element(), {tag:'div', id:'loginProgress', cls:'LoginProgress', children: [
// this.append(loginProgressElement, [
{tag:'div', cls:'header', children:[
{tag:'h3', id:this.getId('title'), html:"login progress"}
]},
{tag:'div', cls:'body', children:[
{tag:'div', id:this.getId('progressBar')},
{tag:'div', id:this.getId('errorBox'), cls:'errorBox', children:[
// {tag:'div', cls:'img ALERT', children:[{tag:'div'}]},
{tag:'div', cls:'img ALERT', children:[{tag:'canvas', id:this.getId('canvas')}]},
{tag:'p', html:"Login failed"}
]}
]},
{tag:'div', cls:'footer', children:[
{tag:'div', cls:'buttonArea', id:this.getId('buttonArea'), children:[
- {tag:'div', cls:'button', id:this.getId('button'), children:[
- {tag:'a', href:'#', id:this.getId('buttonLink'), html:"cancel"}
- ]}
+// {tag:'div', cls:'button', id:this.getId('button'), children:[
+// {tag:'a', href:'#', id:this.getId('buttonLink'), html:"cancel"}
+// ]}
+ {tag:'a', cls:'button', id:this.getId('button'), html:"cancel"}
]}
]}
]});
// ]);
Clipperz.PM.UI.Canvas.marks['!'](this.getElement('canvas'), "#ffffff");
this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')}));
MochiKit.Style.hideElement(this.getElement('errorBox'));
- MochiKit.Signal.connect(this.getId('buttonLink'), 'onclick', this, 'cancelEventHandler');
+// MochiKit.Signal.connect(this.getId('buttonLink'), 'onclick', this, 'cancelEventHandler');
+ MochiKit.Signal.connect(this.getId('button'), 'onclick', this, 'cancelEventHandler');
},
//-------------------------------------------------------------------------
'displayElement': function() {
return MochiKit.DOM.getElement('loginProgress');
},
//-------------------------------------------------------------------------
'cancelEventHandler': function(anEvent) {
anEvent.preventDefault();
MochiKit.Signal.signal(this, 'cancelEvent');
},
//-------------------------------------------------------------------------
'disableCancel': function() {
MochiKit.Style.hideElement(this.getElement('buttonArea'));
},
//-------------------------------------------------------------------------
'showErrorMessage': function() {
- this.getElement('buttonLink').innerHTML = "close";
+// this.getElement('buttonLink').innerHTML = "close";
+ this.getElement('button').innerHTML = "close";
+ MochiKit.DOM.addElementClass(this.getElement('button'), 'default');
MochiKit.Style.hideElement(this.getElement('progressBar'));
this.getElement('title').innerHTML = "Error";
MochiKit.Style.showElement(this.getElement('errorBox'));
MochiKit.Style.showElement(this.getElement('buttonArea'));
},
//-------------------------------------------------------------------------
'deferredHideModalAndRemove': function(someParameters, aResult) {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("LoginProgress.deferredHideModalAndRemove", {trace:false});
deferredResult.addMethod(this, 'deferredHideModal');
deferredResult.addMethod(this, 'remove');
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
@@ -69,42 +69,42 @@ Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.ToolsPanel, Clipperz.PM.UI.Co
this.append(this.element(), [
{tag:'div', cls:'header', children:[
{tag:'div', cls:'subPanelTabs', children:[
{tag:'ul', children:[
{tag:'li', id:this.getId('passwordGeneratorTab'), children:[{tag:'a', href:'#', html:'Password generator'}], cls:'first'},
{tag:'li', id:this.getId('bookmarkletTab'), children:[{tag:'a', href:'#', html:'Bookmarklet'}]},
{tag:'li', id:this.getId('compactEditionTab'), children:[{tag:'a', href:'#', html:'Compact edition'}]},
{tag:'li', id:this.getId('httpAuthTab'), children:[{tag:'a', href:'#', html:'HTTP Auth'}]}
]}
]}
]},
{tag:'div', cls:'body', children:[
{tag:'div', cls:'accountPanel', children:[
{tag:'div', cls:'subPanelContent', children:[
{tag:'ul', children:[
{tag:'li', id:this.getId('passwordGeneratorPanel'), children:[
- {tag:'h3', html:"Password generator"}
+// {tag:'h3', html:"Password generator"}
]},
{tag:'li', id:this.getId('bookmarkletPanel'), children:[
- {tag:'h3', html:"Bookmarklet"}
+// {tag:'h3', html:"Bookmarklet"}
]},
{tag:'li', id:this.getId('compactEditionPanel'), children:[
- {tag:'h3', html:"Compact edition"}
+// {tag:'h3', html:"Compact edition"}
]},
{tag:'li', id:this.getId('httpAuthPanel'), children:[
- {tag:'h3', html:"HTTP Auth"}
+// {tag:'h3', html:"HTTP Auth"}
]}
]}
]}
]}
]},
{tag:'div', cls:'footer'}
]);
this.tabPanelController().setup({selected:this.initiallySelectedTab()});
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
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
@@ -222,32 +222,34 @@ MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.AppController.prototype, {
slot.setContent(this.appPage());
this.appPage().slotNamed('userInfoBox').setContent(this.userInfoBox());
this.appPage().slotNamed('tabSidePanel').setContent(this.tabSidePanel());
this.appPage().slotNamed('accountPanel').setContent(this.accountPanel());
this.appPage().slotNamed('dataPanel').setContent(this.dataPanel());
this.appPage().slotNamed('toolsPanel').setContent(this.toolsPanel());
this.hideAllAppPageTabSlots();
this.appPage().showSlot(this.slotNameForTab('cards'));
MochiKit.Signal.connect(this.tabSidePanel(), 'tabSelected', this, 'handleTabSelected');
MochiKit.Signal.connect(this.tabSidePanel(), 'addCard', this, 'handleAddCard');
MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'addCard', this, 'handleAddCard');
+ MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'downloadOfflineCopy', this, 'handleDownloadOfflineCopy');
+
deferredResult = new Clipperz.Async.Deferred("AppController.run", {trace:false});
deferredResult.addMethod(this.cardsController(), 'run', {slot:this.appPage().slotNamed('cardGrid'), user:user});
// deferredResult.addMethod(this.directLoginsController(), 'run', {slot:this.appPage().slotNamed('directLoginGrid'), user:user});
deferredResult.addMethod(this, 'populateUserInfo');
deferredResult.addCallback(MochiKit.Visual.ScrollTo, 'miscLinks', {duration:0});
deferredResult.addCallback(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'CARDS_CONTROLLER_DID_RUN');
deferredResult.addMethod(this.tabSidePanel(), 'selectTab', 'cards');
deferredResult.callback();
},
//-----------------------------------------------------------------------------
'handleTabSelected': function (selectedTabName) {
var aTabName;
@@ -308,19 +310,42 @@ MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.AppController.prototype, {
MochiKit.Base.method(this.user(), 'lock')
], {trace:false});
},
//.............................................................................
'handleUnlock': function (anEvent) {
return Clipperz.Async.callbacks("AppController.handleUnock", [
MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'initProgress'),
MochiKit.Base.method(this.user(), 'login'),
MochiKit.Base.method(this.cardsController(), 'focus'),
MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'progressDone'),
MochiKit.Base.method(this.userInfoBox(), 'unlock')
], {trace:false});
},
+ 'handleDownloadOfflineCopy': function (anEvent) {
+console.log("AppController.handleDownloadOfflineCopy");
+ var downloadHref;
+
+ downloadHref = window.location.href.replace(/\/[^\/]*$/,'') + Clipperz_dumpUrl;
+
+ if (Clipperz_IEisBroken == true) {
+ window.open(downloadHref, "");
+ } else {
+ var deferredResult;
+ var newWindow;
+
+ newWindow = window.open("", "");
+
+ deferredResult = new Clipperz.Async.Deferred("AppController.handleDownloadOfflineCopy", {trace:true});
+ deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'echo', {'echo':"echo"});
+ deferredResult.addCallback(function(aWindow) {
+ aWindow.location.href = downloadHref;
+ }, newWindow);
+ deferredResult.callback();
+ }
+ },
+
//=============================================================================
__syntaxFix__: "syntax fix"
});
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 @@
-/*
-
-Copyright 2008-2011 Clipperz Srl
-
-This file is part of Clipperz Community Edition.
-Clipperz Community Edition is an online password manager.
-For further information about its features and functionalities please
-refer to http://www.clipperz.com.
-
-* Clipperz Community Edition is free software: you can redistribute
- it and/or modify it under the terms of the GNU Affero General Public
- License as published by the Free Software Foundation, either version
- 3 of the License, or (at your option) any later version.
-
-* Clipperz Community Edition is distributed in the hope that it will
- be useful, but WITHOUT ANY WARRANTY; without even the implied
- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the GNU Affero General Public License for more details.
-
-* You should have received a copy of the GNU Affero General Public
- License along with Clipperz Community Edition. If not, see
- <http://www.gnu.org/licenses/>.
-
-*/
-
-Clipperz.Base.module('Clipperz.PM.UI.iPhone.Components');
-
-Clipperz.PM.UI.iPhone.Components.CardDetail = function(args) {
- args = args || {};
-
- Clipperz.PM.UI.iPhone.Components.CardDetail.superclass.constructor.apply(this, arguments);
-
- this._cardReference = null;
-
- return this;
-}
-
-//=============================================================================
-
-Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.CardDetail, Clipperz.PM.UI.Common.Components.BaseComponent, {
-
- //-------------------------------------------------------------------------
-
- 'toString': function () {
- return "Clipperz.PM.UI.iPhone.Components.CardDetail component";
- },
-
- //-------------------------------------------------------------------------
-
- 'cardReference': function () {
- return this._cardReference;
- },
-
- 'setCardReference': function (aValue) {
- this._cardReference = aValue;
- },
-
- //-------------------------------------------------------------------------
-
- 'renderSelf': function(/*aContainer, aPosition*/) {
- this.append(this.element(), [
- {tag:'div', cls:'cardDetail', id:this.getId('cardDetail'), children:[
- {tag:'div', id:this.getId('progressBar')} //,
-// {tag:'h1', cls:'loading', html:"loading"}
- ]}
- ]);
-
- this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')}));
- MochiKit.Signal.signal(Clipperz.PM.UI.Common.Controllers.ProgressBarController.defaultController, 'updateProgress', 0);
- },
-
- //=========================================================================
-
- 'showCardDetails': function (someData) {
- this.element().innerHTML = '';
- this.append(this.element(), [
- {tag:'fieldset', id:this.getId('fields'), children:MochiKit.Base.map(function (aFieldData) {
- return {tag:'div', cls:'row', children:[
- {tag:'label', html:aFieldData['label']},
-// {tag:'span', cls:('fieldValue ' + (aFieldData['isHidden'] ? 'password' : 'text')), html:aFieldData['value']}
- {tag:'div', cls:('fieldValue ' + (aFieldData['isHidden'] ? 'password' : 'text')), children:[
- {tag:'div', children:[{tag:'p', html:aFieldData['value']}]}
- ]}
-// {tag:'input', type:'text', cls:('fieldValue ' + (aFieldData['isHidden'] ? 'password' : 'text')), value:aFieldData['value'], disabled:true}
-
- ]}
- }, someData['fields'])}
- ]);
-
- MochiKit.Iter.forEach(MochiKit.Selector.findChildElements(this.element(), ['span.password']), MochiKit.Base.bind(function (aPasswordElement) {
- MochiKit.Signal.connect(aPasswordElement, 'onclick', function (anEvent) { alert(MochiKit.DOM.scrapeText(anEvent.src())); })
- }, this));
-
- if (someData['directLogins'].length > 0) {
- this.append(this.element(), [
- {tag:'h2', html:"Direct logins"},
- {tag:'fieldset', id:this.getId('directLogins'), children:MochiKit.Base.map(function (aDirectLoginData) {
- return {tag:'div', cls:'row', id:('directLogin_' + aDirectLoginData['_reference']), children:[
- {tag:'img', cls:'favicon', src:aDirectLoginData['favicon']},
-// {tag:'input', cls:'directLogin', disabled:'disabled', type:'text', name:aDirectLoginData['label'], value:aDirectLoginData['label']}
- {tag:'span', cls:'directLogin', html:aDirectLoginData['label']}
- ]}
- }, someData['directLogins'])}
- ]);
-
- MochiKit.Base.map(MochiKit.Base.bind(function (aRowNode) {
- MochiKit.Signal.connect(aRowNode, 'onclick', this, 'directLoginClickHandler');
- }, this),
- MochiKit.Selector.findChildElements(this.getElement('directLogins'), ['div.row'])
- )
- };
-
- if (someData['notes'] != '') {
- this.append(this.element(), [
- {tag:'h2', html:"Notes"},
- {tag:'fieldset', id:this.getId('fieldset'), children:[
- {tag:'div', cls:'row notes', children:[
- {tag:'span', html:someData['notes']}
- ]}
- ]}
- ]);
- };
-
- return true;
- },
-
- //-------------------------------------------------------------------------
-/*
- 'toggleClickHandler': function (anEvent) {
- var nextState;
- var fieldValue;
-
-//console.log("TOGGLE");
- anEvent.preventDefault;
- fieldValue = MochiKit.Selector.findChildElements(anEvent.src().parentNode.parentNode, ['span.password'])[0];
-
- nextState = (MochiKit.DOM.getNodeAttribute(anEvent.src(), 'toggled') != 'true');
- if (nextState) {
- MochiKit.DOM.removeElementClass(fieldValue, 'clear');
- } else {
- MochiKit.DOM.addElementClass(fieldValue, 'clear');
- }
-
- MochiKit.DOM.setNodeAttribute(anEvent.src(), 'toggled', nextState);
- },
-*/
- //=========================================================================
-
- 'directLoginClickHandler': function (anEvent) {
- anEvent.preventDefault();
-
- if (/(directLogin_)/.test(anEvent.src().id)) {
- var directLoginReference;
-
- directLoginReference = anEvent.src().id.match(/(directLogin_)(.*)/)[2];
- MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'selectedDirectLogin', {cardReference:this.cardReference(), directLoginReference:directLoginReference});
- }
- },
-
- //=========================================================================
-
- __syntaxFix__: "syntax fix"
-});
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 @@
-/*
-
-Copyright 2008-2011 Clipperz Srl
-
-This file is part of Clipperz Community Edition.
-Clipperz Community Edition is an online password manager.
-For further information about its features and functionalities please
-refer to http://www.clipperz.com.
-
-* Clipperz Community Edition is free software: you can redistribute
- it and/or modify it under the terms of the GNU Affero General Public
- License as published by the Free Software Foundation, either version
- 3 of the License, or (at your option) any later version.
-
-* Clipperz Community Edition is distributed in the hope that it will
- be useful, but WITHOUT ANY WARRANTY; without even the implied
- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the GNU Affero General Public License for more details.
-
-* You should have received a copy of the GNU Affero General Public
- License along with Clipperz Community Edition. If not, see
- <http://www.gnu.org/licenses/>.
-
-*/
-
-Clipperz.Base.module('Clipperz.PM.UI.iPhone.Components');
-
-Clipperz.PM.UI.iPhone.Components.LoginForm = function(args) {
- args = args || {};
-
- Clipperz.PM.UI.iPhone.Components.LoginForm.superclass.constructor.apply(this, arguments);
-
- return this;
-}
-
-//=============================================================================
-
-Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.LoginForm, Clipperz.PM.UI.Common.Components.BaseComponent, {
-
- //-------------------------------------------------------------------------
-
- 'toString': function () {
- return "Clipperz.PM.UI.iPhone.Components.LoginForm component";
- },
-
- //-------------------------------------------------------------------------
-
- 'focusOnUsername': function () {
- this.getElement('username').focus();
- },
-
- //-------------------------------------------------------------------------
-
- 'username': function () {
- return this.getElement('username').value;
- },
-
- 'passphrase': function () {
- return this.getElement('passphrase').value;
- },
-
- //-------------------------------------------------------------------------
-
- 'renderSelf': function(/*aContainer, aPosition*/) {
- this.append(this.element(), [
- {tag:'div', cls:'toolbar iPhoneClipperzToolbar', children:[
- {tag:'h1', id:'pageTitle', html:'Clipperz'},
- {tag:'a', id:'backButton', cls:'button', href:'#', html:"back"}
- ]},
- {tag:'form', title:'Theaters', cls:'panel toolbarlessPanel loginForm', id:this.getId('loginFormPanel'), children:[
- {tag:'fieldset', id:this.getId('fieldset'), children:[
- {tag:'div', cls:'row', children:[
- {tag:'label', html:"username"},
- {tag:'input', type:'text', name:'username', value:"", autocorrect:'off', autocapitalize:'off', id:this.getId('username')}
- ]},
- {tag:'div', cls:'row', children:[
- {tag:'label', html:"passphrase"},
- {tag:'input', type:'password', name:'passphrase', value:"", id:this.getId('passphrase')}
- ]}
- ]},
- {tag:'a', cls:'whiteButton', type:'submit', href:'#', html:"Login", id:this.getId('submit')}
- ]},
- {tag:'div', cls:'panel toolbarlessPanel loginProgressPanel', id:this.getId('loginProgressPanel'), children:[
- {tag:'div', id:this.getId('progressBar')} //,
-// {tag:'a', cls:'whiteButton', type:'submit', href:'#', html:"Cancel", id:this.getId('cancel')}
- ]},
- {tag:'div', cls:'panel loginErrorPanel', id:this.getId('loginErrorPanel'), children:[
- {tag:'div', cls:'errorMessage', id:this.getId('errorMessageBox'), children:[
- {tag:'h2', id:this.getId('errorMessage'), html:"Login failed"}
- ]}
- ]}
- ]);
-
- MochiKit.Signal.connect(this.getElement('submit'), 'onclick', this, 'submitHandler');
- MochiKit.Signal.connect(this.getElement('loginFormPanel'), 'onsubmit', this, 'submitHandler');
-
-// MochiKit.Signal.connect(this.getElement('cancel'), 'onclick', this, 'cancelHandler');
- MochiKit.Signal.connect('backButton', 'onclick', this, 'backHandler');
-
- this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')}));
-
-// MochiKit.Style.hideElement(this.getElement('errorMessage'));
-
- this.showLoginForm();
-// MochiKit.Async.callLater(0.2, MochiKit.Base.method(this, 'focusOnUsername'));
- },
-
- //-------------------------------------------------------------------------
-
- 'showLoginForm': function () {
- MochiKit.Style.showElement(this.getElement('loginFormPanel'));
- MochiKit.Style.hideElement(this.getElement('loginProgressPanel'));
- MochiKit.Style.hideElement(this.getElement('loginErrorPanel'));
- MochiKit.Style.hideElement('backButton');
- },
-
- 'slideInLoginForm': function () {
- var offset;
-
- offset = ((MochiKit.DOM.getNodeAttribute(MochiKit.DOM.currentDocument().body, 'orientation') == 'portrait') ? 320 : 480);
-
- MochiKit.Style.showElement(this.getElement('loginFormPanel'));
- MochiKit.Style.setElementPosition(this.getElement('loginFormPanel'), {x:-offset, y:0});
-
- new MochiKit.Visual.Sequence([
- new MochiKit.Visual.Parallel([
- new MochiKit.Visual.Move(this.getElement('loginErrorPanel'), {x:offset, y:0, mode:'relative', transition:MochiKit.Visual.Transitions.linear, sync:true}),
- new MochiKit.Visual.Move(this.getElement('loginFormPanel'), {x:0, y:0, mode:'absolute', transition:MochiKit.Visual.Transitions.linear, sync:true}),
- MochiKit.Visual.fade ('backButton', { transition:MochiKit.Visual.Transitions.linear, sync:true})
- ], {duration:0.5, sync:true}),
- MochiKit.Visual.fade(this.getElement('loginErrorPanel'), {duration:0, sync:true})
- ], {})
- },
-
- 'showLoginProgress': function () {
- MochiKit.Style.hideElement(this.getElement('loginFormPanel'));
- MochiKit.Style.showElement(this.getElement('loginProgressPanel'));
- },
-
- 'showLoginError': function (anError) {
- this.getElement('errorMessage').innerHTML = "Login error";
-
- MochiKit.Style.showElement('backButton');
- MochiKit.Style.hideElement(this.getElement('loginProgressPanel'));
- MochiKit.Style.showElement(this.getElement('loginErrorPanel'));
- MochiKit.Style.setElementPosition(this.getElement('loginErrorPanel'), {x:0, y:45});
- },
-
- //-------------------------------------------------------------------------
-/*
- 'disableCancelButton': function () {
- MochiKit.DOM.hideElement(this.getElement('cancel'));
- },
-*/
- //-------------------------------------------------------------------------
-
- 'submitHandler': function (anEvent) {
- anEvent.preventDefault();
-
- MochiKit.Signal.signal(this, 'doLogin', {'username':this.username(), 'passphrase':this.passphrase()});
- },
-
- 'cancelHandler': function (anEvent) {
- anEvent.preventDefault();
-
-//console.log("CANCEL");
- },
-
- 'backHandler': function (anEvent) {
- anEvent.preventDefault();
-
- this.slideInLoginForm();
- },
-
- //-------------------------------------------------------------------------
-
- __syntaxFix__: "syntax fix"
-});
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 @@
-/*
-
-Copyright 2008-2011 Clipperz Srl
-
-This file is part of Clipperz Community Edition.
-Clipperz Community Edition is an online password manager.
-For further information about its features and functionalities please
-refer to http://www.clipperz.com.
-
-* Clipperz Community Edition is free software: you can redistribute
- it and/or modify it under the terms of the GNU Affero General Public
- License as published by the Free Software Foundation, either version
- 3 of the License, or (at your option) any later version.
-
-* Clipperz Community Edition is distributed in the hope that it will
- be useful, but WITHOUT ANY WARRANTY; without even the implied
- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the GNU Affero General Public License for more details.
-
-* You should have received a copy of the GNU Affero General Public
- License along with Clipperz Community Edition. If not, see
- <http://www.gnu.org/licenses/>.
-
-*/
-
-Clipperz.Base.module('Clipperz.PM.UI.iPhone.Controllers');
-
-// Some parts of this controller have been derived from the iUI library.
-
-Clipperz.PM.UI.iPhone.Controllers.MainController = function() {
- this._loginForm = null;
- this._cardList = null;
- this._cachedValues = null;
- this._user = null;
-
- if (typeof window.onorientationchange == 'object') {
- MochiKit.Signal.connect(window, 'onorientationchange', this, 'orientationChangeHandler');
- MochiKit.Async.callLater(0, MochiKit.Base.method(this, 'orientationChangeHandler'));
- } else {
- this.setOrientation('portrait');
-// this.setOrientation('landscape');
- }
-
- this.addMetaTag('viewport', 'width=devicewidth; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;');
- this.addMetaTag('apple-mobile-web-app-capable', 'yes');
- this.addMetaTag('apple-mobile-web-app-status-bar-style', 'black');
-
- this.addLinkTag('apple-touch-icon', 'data:image/png;charset=utf-8;base64,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');
-// this.addLinkTag('apple-touch-startup-image', 'default.png');
-
-// if (!window.navigator.standalone) // not running as an installed app
-
- MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'selectedDirectLogin', this, 'selectedDirectLoginHandler');
-
- MochiKit.DOM.addElementClass(document.body, 'iPhone');
- return this;
-}
-
-MochiKit.Base.update(Clipperz.PM.UI.iPhone.Controllers.MainController.prototype, {
-
- 'toString': function () {
- return "Clipperz.PM.UI.iPhone.Controllers.MainController";
- },
-
- //=========================================================================
-
- 'user': function () {
- return this._user;
- },
-
- 'setUser': function (aValue) {
- this._user = aValue;
- },
-
- //=========================================================================
-
- 'loginForm': function() {
- if (this._loginForm == null) {
- MochiKit.DOM.removeElement('mainDiv');
- this._loginForm = new Clipperz.PM.UI.iPhone.Components.LoginForm({element:MochiKit.DOM.currentDocument().body});
- MochiKit.Signal.connect(this._loginForm, 'doLogin', this, 'doLoginHandler')
- }
-
- return this._loginForm;
- },
-
- 'removeLoginForm': function () {
- if (this._loginForm != null) {
- this._loginForm.remove();
- this._loginForm = null;
- }
- },
-
- //-----------------------------------------------------------------------------
-
- 'cardList': function () {
- if (this._cardList == null) {
- this._cardList = new Clipperz.PM.UI.iPhone.Components.CardList({element:MochiKit.DOM.currentDocument().body});
- MochiKit.Signal.connect(this._cardList, 'searchEvent', this, 'searchEventHandler')
- MochiKit.Signal.connect(this._cardList, 'selectedCard', this, 'selecetedCardHandler')
- }
-
- return this._cardList;
- },
-
- //=========================================================================
-
- 'currentWidth': function () {
- return this._currentWidth;
- },
-
- 'setCurrentWidth': function (aValue) {
- this._currentWidth = aValue;
- },
-
- //=========================================================================
-
- 'orientationChangeHandler': function () {
- switch(window.orientation) {
- case 0:
- this.setOrientation('portrait');
- break;
- case 90:
- case -90:
- this.setOrientation('landscape');
- break;
- }
- },
-
- //-------------------------------------------------------------------------
-
- 'setOrientation': function (anOrientation) {
- document.body.setAttribute('orientation', anOrientation);
- setTimeout(scrollTo, 100, 0, 1);
- },
-
- //-------------------------------------------------------------------------
-
- 'slidePages': function (fromPage, toPage, backwards) {
- var axis;
- var slideDone;
-
- slideDone = function () {
- // console.log("slideDone");
- if (!hasClass(toPage, "dialog")) {
- fromPage.removeAttribute("selected");
- }
- checkTimer = setInterval(checkOrientAndLocation, 300);
- setTimeout(updatePage, 0, toPage, fromPage);
- fromPage.removeEventListener('webkitTransitionEnd', slideDone, false);
- }
-
- axis = (backwards ? fromPage : toPage).getAttribute("axis");
-
- clearInterval(checkTimer);
-
- if (canDoSlideAnim() && axis != 'y') {
- slide2(fromPage, toPage, backwards, slideDone);
- } else {
- slide1(fromPage, toPage, backwards, axis, slideDone);
- }
- },
-
- //-------------------------------------------------------------------------
-
- 'getCachedValues': function () {
- var deferredResult;
-
- if (this._cachedObjects != null) {
- deferredResult = MochiKit.Async.succeed(this._cachedObjects);
- } else {
- deferredResult = new Clipperz.Async.Deferred("MainController.getCachedValues", {trace:false});
- deferredResult.addMethod(this.user(), 'getRecords');
- deferredResult.addCallback(MochiKit.Base.map, Clipperz.Async.collectResults("MainController.getCachedValues - collectResults", {
- '_rowObject': MochiKit.Async.succeed,
- '_reference': MochiKit.Base.methodcaller('reference'),
- 'label': MochiKit.Base.methodcaller('label'),
- 'favicon': MochiKit.Base.methodcaller('favicon'),
- '_searchableContent': MochiKit.Base.methodcaller('searchableContent')
- }, {trace:false}));
- deferredResult.addCallback(Clipperz.Async.collectAll);
- deferredResult.addCallback(MochiKit.Base.bind(function (someRows) {
- this._cachedObjects = someRows;
- return this._cachedObjects;
- }, this));
- deferredResult.callback();
- }
-
- return deferredResult;
- },
- //=========================================================================
-
- 'run': function(shouldShowRegistrationForm) {
- this.loginForm().render();
- MochiKit.Async.callLater(1, MochiKit.Base.method(this.loginForm(), 'focusOnUsername'));
- },
-
- //=========================================================================
-
- 'doLoginHandler': function (someArgs) {
- var deferredResult;
- var parameters;
- var shouldUseOTP;
-// var loginProgress;
- var user;
- var getPassphraseDelegate;
-
- parameters = someArgs;
- shouldUseOTP = (typeof(parameters.passphrase) == 'undefined');
-
- getPassphraseDelegate = MochiKit.Base.partial(MochiKit.Async.succeed, parameters.passphrase);
- user = new Clipperz.PM.DataModel.User({'username':parameters.username, 'getPassphraseFunction':getPassphraseDelegate});
-
- deferredResult = new Clipperz.Async.Deferred("MainController.doLogin", {trace:false});
- deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'initProgress', {'steps':4});
- deferredResult.addMethod(this.loginForm(), 'showLoginProgress');
- deferredResult.addCallback(MochiKit.Async.wait, 0.1);
- deferredResult.addMethod(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'deferredEntropyCollection');
- deferredResult.addMethod(user, 'login');
- deferredResult.addMethod(this, 'setUser', user);
- deferredResult.addMethod(user, 'getRecords');
- deferredResult.addMethod(this, 'removeLoginForm');
- deferredResult.addMethod(this.cardList(), 'render');
- deferredResult.addMethod(this, 'displaySelectedRecords', '');
- deferredResult.addErrback(MochiKit.Base.method(this.loginForm(), 'showLoginError'));
- deferredResult.callback();
-
- return deferredResult;
- },
-
- //=========================================================================
-
- 'searchEventHandler': function (aValue) {
-//console.log("searching for ... " + aValue);
- return this.displaySelectedRecords(aValue);
- },
-
- //=========================================================================
-
- '_displaySelectedRows': function (aFilter, someRows) {
- var result;
-
- result = someRows;
-
- if (aFilter != null) {
- var filter;
- var filterRegExp;
-
- filter = aFilter.replace(/[^A-Za-z0-9]/g, "\\$&");
- filterRegExp = new RegExp(filter, "i");
- result = MochiKit.Base.filter(function (aCachedResult) { return filterRegExp.test(aCachedResult['_searchableContent'])}, result);
- }
-
-
- result.sort(MochiKit.Base.partial(function (aKey, aComparator, aObject, bObject) {
- return aComparator(aObject[aKey], bObject[aKey]);
- }, 'label', Clipperz.Base.caseInsensitiveCompare));
-
- this.cardList().update(result);
- },
-
- //-------------------------------------------------------------------------
-
- 'displaySelectedRecords': function (aFilter) {
- return Clipperz.Async.callbacks("MainController.displaySelectedrows", [
- MochiKit.Base.method(this, 'getCachedValues'),
- MochiKit.Base.method(this, '_displaySelectedRows', aFilter)
- ], {trace:false});
- },
-
- //=========================================================================
-
- 'selecetedCardHandler': function (aRecordReference) {
- var deferredResult;
- var recordData;
-
- recordData = {};
-//console.log("Showing detail for card with reference", aRecordReference);
- deferredResult = new Clipperz.Async.Deferred("MainController.selectedCardHandler", {trace:false});
- deferredResult.addMethod(this.user(), 'getRecord', aRecordReference);
- deferredResult.collectResults({
- '_reference': MochiKit.Base.methodcaller('reference'),
- 'title': MochiKit.Base.methodcaller('label'),
- 'favicon': MochiKit.Base.methodcaller('favicon')
- });
- deferredResult.addCallback(function (someData) {
- MochiKit.Base.update(recordData, someData);
- })
- deferredResult.addMethod(this.cardList(), 'showCard', recordData);
-
- deferredResult.addMethod(this.user(), 'getRecord', aRecordReference);
- deferredResult.addMethodcaller('notes');
- deferredResult.addCallback(function (someNotes) {
- recordData['notes'] = someNotes;
- })
-
- deferredResult.addMethod(this.user(), 'getRecord', aRecordReference);
- deferredResult.addMethodcaller('getCurrentRecordVersion');
- deferredResult.addMethodcaller('fields');
- deferredResult.addCallback(MochiKit.Base.values);
- deferredResult.addCallback(MochiKit.Base.map, Clipperz.Async.collectResults("MainController.selectedCardHandler - fields", {
- 'label': MochiKit.Base.methodcaller('label'),
- 'value': MochiKit.Base.methodcaller('value'),
- 'isHidden': MochiKit.Base.methodcaller('isHidden')
- }, {trace:false}));
- deferredResult.addCallback(Clipperz.Async.collectAll);
- deferredResult.addCallback(function (someData) {
- recordData['fields'] = someData;
- });
-
- deferredResult.addMethod(this.user(), 'getRecord', aRecordReference);
- deferredResult.addMethodcaller('directLogins');
- deferredResult.addCallback(MochiKit.Base.values);
- deferredResult.addCallback(MochiKit.Base.map, Clipperz.Async.collectResults("MainController.selectedCardHandler - directLogins", {
- 'label': MochiKit.Base.methodcaller('label'),
- 'favicon': MochiKit.Base.methodcaller('favicon'),
- '_reference': MochiKit.Base.methodcaller('reference')
- }, {trace:false}));
- deferredResult.addCallback(Clipperz.Async.collectAll);
- deferredResult.addCallback(function (someData) {
- recordData['directLogins'] = someData;
- });
-
- deferredResult.addMethod(this.cardList(), 'showCardDetails', recordData);
- deferredResult.callback();
-
- return deferredResult;
- },
-
- //=========================================================================
-
- 'selectedDirectLoginHandler': function (someData) {
- var deferredResult;
-
-//console.log("<<< signal - directLogin");
- deferredResult = new Clipperz.Async.Deferred("MainController.selectedDirectLoginHandler", {trace:false});
- deferredResult.addMethod(this.user(), 'getRecord', someData['cardReference']);
- deferredResult.addMethodcaller('directLogins');
- deferredResult.addCallback(MochiKit.Base.itemgetter(someData['directLoginReference']));
-// deferredResult.addMethodcaller('runDirectLogin');
- deferredResult.addCallback(Clipperz.PM.UI.Common.Controllers.DirectLoginRunner.openDirectLogin);
- deferredResult.callback();
-
- return deferredResult;
- },
-
- //=========================================================================
-
- 'addMetaTag': function (aName, aContent) {
- var metaTag;
-
- metaTag = document.createElement('meta');
- metaTag.name = aName;
- metaTag.content = aContent;
- document.getElementsByTagName('head')[0].appendChild(metaTag);
- },
-
- 'addLinkTag': function (aRel, anHref) {
- var linkTag;
-
- linkTag = document.createElement('link');
- linkTag.rel = aRel;
- linkTag.href = anHref;
- document.getElementsByTagName('head')[0].appendChild(linkTag);
- },
-
- //=========================================================================
- __syntaxFix__: "syntax fix"
-}); \ 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
@@ -34,24 +34,31 @@ function handleGenericDeferredError(anError) {
if (anError instanceof MochiKit.Async.CancelledError) {
result = anError;
} else {
MochiKit.Logging.logError("## MainController - GENERIC ERROR" + "\n" + "==>> " + anError + " <<==\n" + anError.stack);
result = new MochiKit.Async.CancelledError(anError);
}
return result;
}
Clipperz.PM.RunTime = {};
function run() {
- MochiKit.DOM.removeElement('javaScriptAlert');
Clipperz.PM.Strings.Languages.initSetup();
- Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.iPhone.Controllers.MainController();
- Clipperz.PM.RunTime.mainController.run(false);
+ Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.Mobile.Controllers.MainController();
+ Clipperz.PM.RunTime.mainController.run();
}
+// if (navigator.standalone == false) {
+// window.localStorage.setItem('PIN', '1234');
+// alert("Saved PIN");
+// } else {
+// alert (window.localStorage.getItem('PIN'));
+// }
+
+
MochiKit.DOM.addLoadEvent(run);
diff --git a/frontend/gamma/properties/creditsAndCopyrights.txt b/frontend/gamma/properties/creditsAndCopyrights.txt
index 598440d..59f0f0a 100644
--- a/frontend/gamma/properties/creditsAndCopyrights.txt
+++ b/frontend/gamma/properties/creditsAndCopyrights.txt
@@ -1,178 +1,219 @@
@clipperz.license@
===============================================================================
This application is build using also the following libraries
# MochiKit (http://www.mochikit.com)
- repository: @mochikit.repository@ (revision: @mochikit.version@)
- * Software licence: http://svn.mochikit.com/mochikit/trunk/licence.txt
+ * Software licence: https://github.com/mochi/mochikit/blob/master/LICENSE.txt
| MochiKit is dual-licensed software. It is available under the terms of the
| MIT License, or the Academic Free License version 2.1. The full text of
| each license is included below.
|
+ | The MochiKit.Style.getElementPosition function is adapted from
+ | YAHOO.util.Dom.getXY v0.9.0. which is copyrighted by Yahoo! Inc. and
+ | licensed under the BSD license also reproduced in full below.
+ |
| MIT License
| ===========
|
| Copyright (c) 2005 Bob Ippolito. All rights reserved.
|
- | Permission is hereby granted, free of charge, to any person obtaining a copy of this
- | software and associated documentation files (the "Software"), to deal in the Software
- | without restriction, including without limitation the rights to use, copy, modify,
- | merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
- | permit persons to whom the Software is furnished to do so, subject to the following
- | conditions:
+ | Permission is hereby granted, free of charge, to any person obtaining a copy
+ | of this software and associated documentation files (the "Software"), to deal
+ | in the Software without restriction, including without limitation the rights
+ | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ | copies of the Software, and to permit persons to whom the Software is furnished
+ | to do so, subject to the following conditions:
|
- | The above copyright notice and this permission notice shall be included in all copies
- | or substantial portions of the Software.
+ | The above copyright notice and this permission notice shall be included in all
+ | copies or substantial portions of the Software.
|
- | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
- | INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
- | PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
- | FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- | DEALINGS IN THE SOFTWARE.
+ | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
| Academic Free License v. 2.1
| ============================
|
| Copyright (c) 2005 Bob Ippolito. All rights reserved.
|
- | This Academic Free License (the "License") applies to any original work of authorship (the
- | "Original Work") whose owner (the "Licensor") has placed the following notice immediately
- | following the copyright notice for the Original Work:
+ | This Academic Free License (the "License") applies to any original work of
+ | authorship (the "Original Work") whose owner (the "Licensor") has placed the
+ | following notice immediately following the copyright notice for the Original Work:
|
| Licensed under the Academic Free License version 2.1
|
| 1) Grant of Copyright License. Licensor hereby grants You a world-wide, royalty-free,
| non-exclusive, perpetual, sublicenseable license to do the following:
|
| a) to reproduce the Original Work in copies;
| b) to prepare derivative works ("Derivative Works") based upon the Original Work;
| c) to distribute copies of the Original Work and Derivative Works to the public;
| d) to perform the Original Work publicly; and
| e) to display the Original Work publicly.
|
| 2) Grant of Patent License. Licensor hereby grants You a world-wide, royalty-free,
- | non-exclusive, perpetual, sublicenseable license, under patent claims owned or controlled
- | by the Licensor that are embodied in the Original Work as furnished by the Licensor, to
- | make, use, sell and offer for sale the Original Work and Derivative Works.
- |
- | 3) Grant of Source Code License. The term "Source Code" means the preferred form of the
- | Original Work for making modifications to it and all available documentation describing
- | how to modify the Original Work. Licensor hereby agrees to provide a machine-readable copy
- | of the Source Code of the Original Work along with each copy of the Original Work that
- | Licensor distributes. Licensor reserves the right to satisfy this obligation by placing
- | a machine-readable copy of the Source Code in an information repository reasonably
- | calculated to permit inexpensive and convenient access by You for as long as Licensor
- | continues to distribute the Original Work, and by publishing the address of that information
- | repository in a notice immediately following the copyright notice that applies to the Original
- | Work.
+ | non-exclusive, perpetual, sublicenseable license, under patent claims owned or
+ | controlled by the Licensor that are embodied in the Original Work as furnished by
+ | the Licensor, to make, use, sell and offer for sale the Original Work and Derivative
+ | Works.
+ |
+ | 3) Grant of Source Code License. The term "Source Code" means the preferred form of
+ | the Original Work for making modifications to it and all available documentation
+ | describing how to modify the Original Work. Licensor hereby agrees to provide a
+ | machine-readable copy of the Source Code of the Original Work along with each copy
+ | of the Original Work that Licensor distributes. Licensor reserves the right to satisfy
+ | this obligation by placing a machine-readable copy of the Source Code in an information
+ | repository reasonably calculated to permit inexpensive and convenient access by You for
+ | as long as Licensor continues to distribute the Original Work, and by publishing the
+ | address of that information repository in a notice immediately following the copyright
+ | notice that applies to the Original Work.
|
| 4) Exclusions From License Grant. Neither the names of Licensor, nor the names of any
- | contributors to the Original Work, nor any of their trademarks or service marks, may be used
- | to endorse or promote products derived from this Original Work without express prior written
- | permission of the Licensor. Nothing in this License shall be deemed to grant any rights to
- | trademarks, copyrights, patents, trade secrets or any other intellectual property of Licensor
- | except as expressly stated herein. No patent license is granted to make, use, sell or offer
- | to sell embodiments of any patent claims other than the licensed claims defined in Section 2.
- | No right is granted to the trademarks of Licensor even if such marks are included in the Original
- | Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under
- | different terms from this License any Original Work that Licensor otherwise would have a right
- | to license.
+ | contributors to the Original Work, nor any of their trademarks or service marks, may
+ | be used to endorse or promote products derived from this Original Work without express
+ | prior written permission of the Licensor. Nothing in this License shall be deemed to
+ | grant any rights to trademarks, copyrights, patents, trade secrets or any other
+ | intellectual property of Licensor except as expressly stated herein. No patent license
+ | is granted to make, use, sell or offer to sell embodiments of any patent claims other
+ | than the licensed claims defined in Section 2. No right is granted to the trademarks
+ | of Licensor even if such marks are included in the Original Work. Nothing in this
+ | License shall be interpreted to prohibit Licensor from licensing under different terms
+ | from this License any Original Work that Licensor otherwise would have a right to license.
|
| 5) This section intentionally omitted.
|
| 6) Attribution Rights. You must retain, in the Source Code of any Derivative Works that You
- | create, all copyright, patent or trademark notices from the Source Code of the Original Work,
- | as well as any notices of licensing and any descriptive text identified therein as an "Attribution
- | Notice." You must cause the Source Code for any Derivative Works that You create to carry a
- | prominent Attribution Notice reasonably calculated to inform recipients that You have modified the
- | Original Work.
- |
- | 7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and
- | to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or
- | are sublicensed to You under the terms of this License with the permission of the contributor(s)
- | of those copyrights and patent rights. Except as expressly stated in the immediately proceeding
- | sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY,
- | either express or implied, including, without limitation, the warranties of NON-INFRINGEMENT,
- | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL
- | WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license
- | to Original Work is granted hereunder except under this disclaimer.
- |
- | 8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including
- | negligence), contract, or otherwise, shall the Licensor be liable to any person for any direct, indirect,
- | special, incidental, or consequential damages of any character arising as a result of this License or the
- | use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage,
- | computer failure or malfunction, or any and all other commercial damages or losses. This limitation of
- | liability shall not apply to liability for death or personal injury resulting from Licensor's negligence
- | to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or
- | limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You.
- |
- | 9) Acceptance and Termination. If You distribute copies of the Original Work or a Derivative Work, You must
- | make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of
- | this License. Nothing else but this License (or another written agreement between Licensor and You) grants
- | You permission to create Derivative Works based upon the Original Work or to exercise any of the rights
- | granted in Section 1 herein, and any attempt to do so except under the terms of this License (or another
- | written agreement between Licensor and You) is expressly prohibited by U.S. copyright law, the equivalent
- | laws of other countries, and by international treaty. Therefore, by exercising any of the rights granted
- | to You in Section 1 herein, You indicate Your acceptance of this License and all of its terms and conditions.
- |
- | 10) Termination for Patent Action. This License shall terminate automatically and You may no longer exercise
- | any of the rights granted to You by this License as of the date You commence an action, including a cross-claim
- | or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This
- | termination provision shall not apply for an action alleging patent infringement by combinations of the Original
+ | create, all copyright, patent or trademark notices from the Source Code of the Original
+ | Work, as well as any notices of licensing and any descriptive text identified therein as
+ | an "Attribution Notice." You must cause the Source Code for any Derivative Works that You
+ | create to carry a prominent Attribution Notice reasonably calculated to inform recipients
+ | that You have modified the Original Work.
+ |
+ | 7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright
+ | in and to the Original Work and the patent rights granted herein by Licensor are owned
+ | by the Licensor or are sublicensed to You under the terms of this License with the
+ | permission of the contributor(s) of those copyrights and patent rights. Except as expressly
+ | stated in the immediately proceeding sentence, the Original Work is provided under this
+ | License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including,
+ | without limitation, the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A
+ | PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU.
+ | This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to
+ | Original Work is granted hereunder except under this disclaimer.
+ |
+ | 8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort
+ | (including negligence), contract, or otherwise, shall the Licensor be liable to any person
+ | for any direct, indirect, special, incidental, or consequential damages of any character
+ | arising as a result of this License or the use of the Original Work including, without
+ | limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction,
+ | or any and all other commercial damages or losses. This limitation of liability shall not
+ | apply to liability for death or personal injury resulting from Licensor's negligence to
+ | the extent applicable law prohibits such limitation. Some jurisdictions do not allow the
+ | exclusion or limitation of incidental or consequential damages, so this exclusion and
+ | limitation may not apply to You.
+ |
+ | 9) Acceptance and Termination. If You distribute copies of the Original Work or a Derivative
+ | Work, You must make a reasonable effort under the circumstances to obtain the express
+ | assent of recipients to the terms of this License. Nothing else but this License (or
+ | another written agreement between Licensor and You) grants You permission to create
+ | Derivative Works based upon the Original Work or to exercise any of the rights granted in
+ | Section 1 herein, and any attempt to do so except under the terms of this License (or
+ | another written agreement between Licensor and You) is expressly prohibited by U.S. copyright
+ | law, the equivalent laws of other countries, and by international treaty. Therefore, by
+ | exercising any of the rights granted to You in Section 1 herein, You indicate Your
+ | acceptance of this License and all of its terms and conditions.
+ |
+ | 10) Termination for Patent Action. This License shall terminate automatically and You may no
+ | longer exercise any of the rights granted to You by this License as of the date You
+ | commence an action, including a cross-claim or counterclaim, against Licensor or any
+ | licensee alleging that the Original Work infringes a patent. This termination provision
+ | shall not apply for an action alleging patent infringement by combinations of the Original
| Work with other software or hardware.
|
- | 11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in
- | the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business,
- | and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United
- | Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the
- | Original Work outside the scope of this License or after its termination shall be subject to the requirements
- | and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et seq., the equivalent laws of other countries,
- | and international treaty. This section shall survive the termination of this License.
+ | 11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be
+ | brought only in the courts of a jurisdiction wherein the Licensor resides or in which
+ | Licensor conducts its primary business, and under the laws of that jurisdiction excluding
+ | its conflict-of-law provisions. The application of the United Nations Convention on Contracts
+ | for the International Sale of Goods is expressly excluded. Any use of the Original Work
+ | outside the scope of this License or after its termination shall be subject to the
+ | requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et seq., the equivalent
+ | laws of other countries, and international treaty. This section shall survive the termination
+ | of this License.
|
| 12) Attorneys Fees. In any action to enforce the terms of this License or seeking damages
| relating thereto, the prevailing party shall be entitled to recover its costs and expenses,
| including, without limitation, reasonable attorneys' fees and costs incurred in connection
| with such action, including any appeal of such action. This section shall survive the
| termination of this License.
|
- | 13) Miscellaneous. This License represents the complete agreement concerning the subject
- | matter hereof. If any provision of this License is held to be unenforceable, such provision
- | shall be reformed only to the extent necessary to make it enforceable.
+ | 13) Miscellaneous. This License represents the complete agreement concerning the subject matter
+ | hereof. If any provision of this License is held to be unenforceable, such provision shall
+ | be reformed only to the extent necessary to make it enforceable.
|
- | 14) Definition of "You" in This License. "You" throughout this License, whether in upper
- | or lower case, means an individual or a legal entity exercising rights under, and complying
- | with all of the terms of, this License. For legal entities, "You" includes any entity that
- | controls, is controlled by, or is under common control with you. For purposes of this
- | definition, "control" means (i) the power, direct or indirect, to cause the direction or
- | management of such entity, whether by contract or otherwise, or (ii) ownership of fifty
- | percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+ | 14) Definition of "You" in This License. "You" throughout this License, whether in upper or lower
+ | case, means an individual or a legal entity exercising rights under, and complying with all
+ | of the terms of, this License. For legal entities, "You" includes any entity that controls,
+ | is controlled by, or is under common control with you. For purposes of this definition,
+ | "control" means (i) the power, direct or indirect, to cause the direction or management of
+ | such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or
+ | more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
| 15) Right to Use. You may use the Original Work in all ways not otherwise restricted or
| conditioned by this License or by law, and Licensor promises not to interfere with or be
| responsible for such uses by You.
|
- | This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. Permission
- | is hereby granted to copy and distribute this license without modification. This license
- | may not be modified without the express written permission of its copyright owner.
+ | This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. Permission is
+ | hereby granted to copy and distribute this license without modification. This license may not
+ | be modified without the express written permission of its copyright owner.
+ |
+ |
+ | BSD License
+ | ===========
+ |
+ | Copyright (c) 2006, Yahoo! Inc.
+ | All rights reserved.
+ |
+ | Redistribution and use of this software in source and binary forms, with or without modification,
+ | are permitted provided that the following conditions are met:
+ |
+ | * Redistributions of source code must retain the above copyright notice, this list of
+ | conditions and the following disclaimer.
+ | * Redistributions in binary form must reproduce the above copyright notice, this list of
+ | conditions and the following disclaimer in the documentation and/or other materials provided
+ | with the distribution.
+ | * Neither the name of Yahoo! Inc. nor the names of its contributors may be used to endorse or
+ | promote products derived from this software without specific prior written permission of
+ | Yahoo! Inc.
+ |
+ | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+ | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ | ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Yahoo! UI Library (http://developer.yahoo.com/yui/)
- package version: 0.12
Copyright © 2005-2006 Yahoo! Inc. All rights reserved
* Copyright notes: http://docs.yahoo.com/info/copyright/copyright.html
* Software licence: http://developer.yahoo.com/yui/license.txt
| Software License Agreement (BSD License)
|
| Copyright (c) 2006, Yahoo! Inc.
| All rights reserved.
|
| Redistribution and use of this software in source and binary forms, with or without modification, are
| permitted provided that the following conditions are met:
@@ -223,65 +264,32 @@
| may be used to endorse or promote products derived from this software
| without specific prior written permission.
|
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
| IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
| INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
| BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
| OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
| NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
| EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# iUI: iPhone User Interface Framework (http://code.google.com/p/iui/)
- - package version: 282
-
- Copyright (c) 2007-2009, iUI Project Members
-
- | All rights reserved.
- |
- | Redistribution and use in source and binary forms, with or without modification,
- | are permitted provided that the following conditions are met:
- |
- | * Redistributions of source code must retain the above copyright notice, this
- | list of conditions and the following disclaimer.
- | * Redistributions in binary form must reproduce the above copyright notice,
- | this list of conditions and the following disclaimer in the documentation
- | and/or other materials provided with the distribution.
- | * Neither the name of the iUI Project nor the names of its contributors may
- | be used to endorse or promote products derived from this software without
- | specific prior written permission.
- |
- | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
# Big Integer Library v. 5.0
- code downloaded on March 5, 2007 from http://www.leemon.com/crypto/BigInt.js
| Big Integer Library v. 5.0
| Created 2000, last modified 2006
| Leemon Baird
| www.leemon.com
|
| This file is public domain. You can use it for any purpose without restriction.
| I do not guarantee that it is correct, so use it at your own risk. If you use
| it for something interesting, I'd appreciate hearing about it. If you find
| any bugs or make any improvements, I'd appreciate hearing about those too.
| It would also be nice if my name and address were left in the comments.
| But none of that is required.
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
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,53 +1,56 @@
{
"copyright.values": {
- "mochikit.repository": "http://svn.mochikit.com/mochikit/trunk/",
- "mochikit.version": "1506"
+ "mochikit.repository": "https://github.com/mochi/mochikit.git",
+ "mochikit.version": "fe8d17bb9ac0a4e5ad4a8d5c2c94a6fac1c92d75"
},
+
+ "html.template": "mobile_template.html",
+
"js": [
"MochiKit/Base.js",
"MochiKit/Iter.js",
"MochiKit/Logging.js",
- "-- MochiKit/DateTime.js",
+ "MochiKit/DateTime.js",
"MochiKit/Format.js",
"MochiKit/Async.js",
"MochiKit/DOM.js",
"MochiKit/Style.js",
"MochiKit/LoggingPane.js",
- "MochiKit/Color.js",
+ "-- MochiKit/Color.js",
"MochiKit/Signal.js",
- "MochiKit/Position.js",
+ "-- MochiKit/Position.js",
"MochiKit/Selector.js",
- "MochiKit/Visual.js",
+ "-- MochiKit/Visual.js",
"JSON/json2.js",
"Clipperz/YUI/Utils.js",
"Clipperz/YUI/DomHelper.js",
"Clipperz/ByteArray.js",
"Clipperz/Base.js",
"Clipperz/Async.js",
"-- Clipperz/CSVProcessor.js",
"-- Clipperz/KeePassExportProcessor.js",
"Clipperz/Date.js",
"Clipperz/DOM.js",
"Clipperz/Logging.js",
"Clipperz/Signal.js",
- "Clipperz/Style.js",
- "Clipperz/Visual.js",
+ "-- Clipperz/Style.js",
+ "-- Clipperz/Visual.js",
"Clipperz/Set.js",
"Clipperz/KeyValueObjectStore.js",
"Clipperz/Crypto/SHA.js",
"Clipperz/Crypto/AES.js",
"Clipperz/Crypto/PRNG.js",
"Clipperz/Crypto/BigInt.js",
"Clipperz/Crypto/Base.js",
"Clipperz/Crypto/SRP.js",
"Clipperz/Crypto/RSA.js",
"Clipperz/PM/Strings/Strings_defaults.js",
"Clipperz/PM/Strings/Strings_en-US.js",
"-- # Clipperz/PM/Strings/Strings_en-GB.js",
"-- # Clipperz/PM/Strings/Strings_en-CA.js",
"-- Clipperz/PM/Strings/Strings_it-IT.js",
@@ -56,64 +59,84 @@
"-- Clipperz/PM/Strings/Strings_ja-JP.js",
"-- Clipperz/PM/Strings/Strings_zh-CN.js",
"-- Clipperz/PM/Strings/Strings_es-ES.js",
"-- Clipperz/PM/Strings/Strings_fr-FR.js",
"-- # Clipperz/PM/Strings/Strings_de-DE.js",
"-- # Clipperz/PM/Strings/Strings_el-GR.js",
"-- # Clipperz/PM/Strings/Strings_ru-RU.js",
"-- # Clipperz/PM/Strings/Strings_he-IL.js",
"Clipperz/PM/Strings.js",
"-- Clipperz/PM/Strings/MessagePanelConfigurations.js",
"Clipperz/PM/Date.js",
"Clipperz/PM/Toll.js",
"Clipperz/PM/Proxy.js",
"Clipperz/PM/Proxy/Proxy.JSON.js",
+ "-- Clipperz/PM/Proxy/Proxy.OfflineCache.js",
"Clipperz/PM/Proxy/Proxy.Offline.js",
+ "Clipperz/PM/Proxy/Proxy.Offline.DataStore.js",
+
"Clipperz/PM/Connection.js",
"Clipperz/PM/Crypto.js",
- "-- Clipperz/PM/BookmarkletProcessor.js",
+ "Clipperz/PM/PIN.js",
"Clipperz/PM/DataModel/EncryptedRemoteObject.js",
"Clipperz/PM/DataModel/User.js",
"Clipperz/PM/DataModel/User.Header.Legacy.js",
"Clipperz/PM/DataModel/User.Header.RecordIndex.js",
"Clipperz/PM/DataModel/User.Header.Preferences.js",
"Clipperz/PM/DataModel/User.Header.OneTimePasswords.js",
"Clipperz/PM/DataModel/Record.js",
"Clipperz/PM/DataModel/Record.Version.js",
"Clipperz/PM/DataModel/Record.Version.Field.js",
"Clipperz/PM/DataModel/DirectLogin.js",
"Clipperz/PM/DataModel/DirectLoginInput.js",
"Clipperz/PM/DataModel/DirectLoginBinding.js",
"Clipperz/PM/DataModel/DirectLoginFormValue.js",
"Clipperz/PM/DataModel/OneTimePassword.js",
+ "Zepto/zepto.js",
+ "Zepto/ajax.js",
+ "Zepto/assets.js",
+ "Zepto/data.js",
+ "Zepto/detect.js",
+ "Zepto/event.js",
+ "Zepto/form.js",
+ "Zepto/fx.js",
+ "Zepto/fx_methods.js",
+ "Zepto/gesture.js",
+ "Zepto/polyfill.js",
+ "Zepto/selector.js",
+ "Zepto/stack.js",
+ "Zepto/touch.js",
+
+ "JQTouch/jqtouch.js",
+
"Clipperz/PM/UI/Common/Components/BaseComponent.js",
"-- Clipperz/PM/UI/Common/Components/Button.js",
"Clipperz/PM/UI/Common/Components/ComponentSlot.js",
"-- Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js",
"Clipperz/PM/UI/Common/Components/ProgressBar.js",
"-- Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js",
"-- Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js",
"-- Clipperz/PM/UI/Common/Components/TabPanelComponent.js",
"-- Clipperz/PM/UI/Common/Components/Tooltip.js",
"-- Clipperz/PM/UI/Common/Components/TranslatorWidget.js",
"Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js",
"Clipperz/PM/UI/Common/Controllers/ProgressBarController.js",
"-- Clipperz/PM/UI/Common/Controllers/TabPanelController.js",
- "Clipperz/PM/UI/iPhone/Components/LoginForm.js",
- "Clipperz/PM/UI/iPhone/Components/CardList.js",
- "Clipperz/PM/UI/iPhone/Components/CardDetail.js",
+ "Clipperz/PM/UI/Mobile/Components/LoginForm.js",
+ "Clipperz/PM/UI/Mobile/Components/CardList.js",
+ "-- Clipperz/PM/UI/Mobile/Components/CardDetail.js",
- "Clipperz/PM/UI/iPhone/Controllers/MainController.js",
+ "Clipperz/PM/UI/Mobile/Controllers/MainController.js",
- "main_iPhone.js"
+ "main.mobile.js"
],
"css": [
- "clipperz/iPhone.css"
+ "mobile.css"
]
} \ 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 @@
+<!--
+
+Copyright 2008-2011 Clipperz Srl
+
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
+For further information about its features and functionalities please
+refer to http://www.clipperz.com.
+
+* Clipperz Community Edition is free software: you can redistribute
+ it and/or modify it under the terms of the GNU Affero General Public
+ License as published by the Free Software Foundation, either version
+ 3 of the License, or (at your option) any later version.
+
+* Clipperz Community Edition is distributed in the hope that it will
+ be useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU Affero General Public License for more details.
+
+* You should have received a copy of the GNU Affero General Public
+ License along with Clipperz Community Edition. If not, see
+ <http://www.gnu.org/licenses/>.
+
+-->
+
+<html>
+<head>
+ <title>Clipperz.PM.Proxy - TEST</title>
+
+ <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
+ <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
+ <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
+
+ <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
+
+ <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
+<!--
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
+
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
+-->
+
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/PIN.js'></script>
+
+ <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
+
+</head>
+<body>
+<pre id="test">
+ <script type="text/javascript" src="PIN.test.js"></script>
+</pre>
+</body>
+</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 @@
+/*
+
+Copyright 2008-2011 Clipperz Srl
+
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
+For further information about its features and functionalities please
+refer to http://www.clipperz.com.
+
+* Clipperz Community Edition is free software: you can redistribute
+ it and/or modify it under the terms of the GNU Affero General Public
+ License as published by the Free Software Foundation, either version
+ 3 of the License, or (at your option) any later version.
+
+* Clipperz Community Edition is distributed in the hope that it will
+ be useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU Affero General Public License for more details.
+
+* You should have received a copy of the GNU Affero General Public
+ License along with Clipperz Community Edition. If not, see
+ <http://www.gnu.org/licenses/>.
+
+*/
+
+Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
+
+Clipperz.PM.PIN['CREDENTIALS'] = 'TEST.CLIPPERZ.CREDENTIALS';
+Clipperz.PM.PIN['FAILURE_COUNT'] = 'TEST.CLIPPERZ.FAILED_LOGIN_COUNT';
+
+
+var tests = {
+
+ //-------------------------------------------------------------------------
+
+ 'clearCredentials': function () {
+ localStorage.removeItem(Clipperz.PM.PIN['CREDENTIALS']);
+ localStorage.removeItem(Clipperz.PM.PIN['FAILURE_COUNT']);
+ },
+
+ //-------------------------------------------------------------------------
+
+ 'isSet': function () {
+ tests.clearCredentials();
+
+ is(false, Clipperz.PM.PIN.isSet(), "after cleaning all values, credentials should not be set");
+
+ Clipperz.PM.PIN.setCredentialsWithPIN("1234", {'username':'joe', 'passphrase':'eoj'});
+ is(true, Clipperz.PM.PIN.isSet(), "once saved, they should be found");
+ },
+
+ 'recordFailedAttempt': function () {
+ tests.clearCredentials();
+
+ Clipperz.PM.PIN.setCredentialsWithPIN("1234", {'username':'joe', 'passphrase':'eoj'});
+ is(true, Clipperz.PM.PIN.isSet(), "once saved, they should be found");
+ Clipperz.PM.PIN.recordFailedAttempt();
+ is(true, Clipperz.PM.PIN.isSet(), "1st wrong PIN -> keep credentials");
+ Clipperz.PM.PIN.recordFailedAttempt();
+ is(true, Clipperz.PM.PIN.isSet(), "2nd wrong PIN -> keep credentials");
+ Clipperz.PM.PIN.recordFailedAttempt();
+ is(false, Clipperz.PM.PIN.isSet(), "3rd wrong PIN -> REMOVE credentials");
+
+ Clipperz.PM.PIN.setCredentialsWithPIN("1234", {'username':'joe', 'passphrase':'eoj'});
+ is(true, Clipperz.PM.PIN.isSet(), "once saved, they should be found");
+ Clipperz.PM.PIN.recordFailedAttempt();
+ is(true, Clipperz.PM.PIN.isSet(), "1st wrong PIN -> keep credentials");
+ Clipperz.PM.PIN.recordFailedAttempt();
+ is(true, Clipperz.PM.PIN.isSet(), "2nd wrong PIN -> keep credentials");
+ Clipperz.PM.PIN.resetFailedAttemptCount();
+ Clipperz.PM.PIN.recordFailedAttempt();
+ is(true, Clipperz.PM.PIN.isSet(), "3rd wrong PIN, but with a successful use in between -> keep credentials");
+ },
+
+ 'credentialsWithPIN': function () {
+ var credentials;
+ var pin;
+ var decryptedCredentials;
+
+ tests.clearCredentials();
+
+ credentials = {'username': 'joe', 'passphrase':'foobar'};
+ pin = '1234';
+ Clipperz.PM.PIN.setCredentialsWithPIN(pin, credentials);
+ decryptedCredentials = Clipperz.PM.PIN.credentialsWithPIN(pin);
+
+ is(decryptedCredentials['username'], credentials['username']);
+ is(decryptedCredentials['passphrase'], credentials['passphrase']);
+ },
+
+ //-------------------------------------------------------------------------
+ 'syntaxFix': MochiKit.Base.noop
+};
+
+//#############################################################################
+
+SimpleTest.runDeferredTests("Clipperz.PM.PIN", tests, {trace:false});
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/index.html b/frontend/gamma/tests/tests/Clipperz/PM/index.html
index b9bede1..c3df56a 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/index.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/index.html
@@ -32,22 +32,23 @@ refer to http://www.clipperz.com.
</head>
<body>
<script>
TestRunner.runTests(
//
// This is still a complete mess.
//
// 'BookmarkletProcessor.html',
'Connection.html',
'Crypto.html',
// 'Crypto_other_implementation_comparison.html',
'Crypto_performanceEvaluation.html',
// 'CryptoPerformance_ByteArrayArray.html',
// 'CryptoPerformance_ByteArrayHex.html',
// 'CryptoPerformance_ByteArrayString.html',
'Date.html',
+ 'PIN.html',
'Proxy.html',
'Toll.html'
);
</script>
</body>
</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Components/FullApp/User.data.js b/frontend/gamma/tests/tests/Components/FullApp/User.data.js
index 7194f6a..4dfc81c 100644
--- a/frontend/gamma/tests/tests/Components/FullApp/User.data.js
+++ b/frontend/gamma/tests/tests/Components/FullApp/User.data.js
@@ -68,33 +68,33 @@ testData = {
currentVersion: '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741',
versions: {
'79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741': {
header: '####',
data: 'mqqGPhRw/397NUZH6B8XJW1y5rMDZD6u7WUuEU77zcNXYEHFNQq319u0G/qD5E63kbI/kHsNXZFFKmNGw5IxDiteWSfYG4RiiapsUxe3ZgsFDDBHFrD5NSrMdIzLFSoNel+1mZUps9AcmkelhkXSCqRiGPyiPIKq7wKXF+Ql6j1AsnCMOCJLlJdTZPqIUUaTYD4z/tvTOS1xRdUiaRjw7cCh2yMms1c5V//3J0xbO10kEC8xvA8nhJnQqsMh2P4h6QFzAZtXYKMehJXwQ5ap7W327EMnCdXw2N0pv9Lr5S9khN/9oTMy2tMIGtN+UZ684zTiAP+479xES6OvmVL04nGyCarIqMNu7oclR75Qv2U14CNRA3gIaMPv',
version: '0.3',
creationDate: 'Wed Jan 20 16:53:47 CET 2010',
updateDate: 'Wed Jan 20 16:53:47 CET 2010',
accessDate: 'Wed Jan 20 16:53:47 CET 2010'
}
}
}
}
},
*/
/* tt/tt with "fixed" direct login */
-/* 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': {
+ 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': {
s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594',
v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0',
version: '0.2',
maxNumberOfRecords: '100',
userDetails: '{"records":{"index":{"8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab":"0"},"data":"K6sV3xYDTHn1PDHmbVhG3PogarwMtHCliSEGaJ5eev/RQv7MW9TCP5efsjATRT4eheX7JkXAoLo+sgMVr2fTyu7f7K0IEYp3mCi27T/TmtTM3b8FoaVfmXWEjN0FGx7N6gK6+lZxhFueRxsOha1+fTLDBg=="},"directLogins":{"index":{"dd9c1f84d06d67fe1ca5826b52bf46e56407e7f9d87fb7b7b927831920955338":"0"},"data":"9aUwb/5nIlAOPKz62xTwylK0dilpWVVEJBag5+LydmBwWxTmlfcB+OO6jGnMgDrjif3LVhWFjfKVSoZs5hSpPvhsSDPaLf5vQhF4igRaQpWI9QhBdfmv3QvZ57ei/gfcal346F4="},"preferences":{"data":"IpjYNIHTXtE/pZvR8TjotEnR"},"oneTimePasswords":{"data":"1ibPl0R6S/LGBFFyH9pio1Oo"},"version":"0.1"}',
statistics: 'GHHkZjW0QLdUq6CPnVuDLh86',
userDetailsVersion: '0.3',
records: {
'8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab': {
data: 'SOcANZTLo4dsjpsPghF2+TndV9+1uYhGjup3StEa1kiFHHzDK6kDZkKwjhP0mxFgixlQHZBnvgsW/xdHGXdmj1RHtaNdHlte7W1Wq5MHbH4XE9bJzQAvQmop8OETgGz7Khp4BbUMVLIXhxoJmP3rMx7ulQHds+WN+S5u+iB73y5nkJwfOXrXDjwwlL1vER92XHE1VJZAjkYRB/xes6SLcITaG9LYVSGSVAhtLIzkmrAvPHPIpZSOI4NQnAMEVPllwtMlWQBEeerN7PIKImyaUd9zPzP+v0S1V+kUyioizScsDdVuaNKa+yqwFKvYYy61nobv3Mg+Fo3EGqY7GOiO7AklRTreZoOkZAdogQlA1DZuIBNSbpcMvm5MoP+PsU3HFSb/Vioo+QEcgTWqVyDNuFGZpkOI2iIBuQCwLmsCwB1JaE/1cCd1fEpOWyiFep0vxwi0ZrtRZQowQd2Ua3UIoaG5u5WoYEMYoH7FFi6Djda4Rf4gxed8rPLE+cNTI/p67OKlbAfr8iz3YZknaH+CXp9pPr7V7xXBCWNxo5DnFPeeqqrxjTAbkeg/Rp2hJeN7/zi0TSWKDUTXfkuUNyewHOHb7M+MIvC1F1CtmqLuU3h8RDINYgPtZTtTk68YBmOG88xYTtClr4kKxmp1scrV3nJ7af+IGoVKZpRAwBJYT3HV33vzO9W35zl14eZ0vVuNoHMNsh9uDxjCwRyPtQzVpQuTIYnHHoO5R17XyIfe599BOSBAGimciprURN3llC2H8YhRtMilQRYvEDVsC+mVZmGAeEdQ5o/AehnpBuVKErRBzotWe6bNMkIQqWfwCLQFBb6ap1gT5hbacrJM4AlaPgOdQsyX9npd3yN/tzjVA1IqWLnoaEXq9EfWXhBuT+juMfSQ2Y8bPbpBKZmWWL06T2fVkaZJN0VFtBXGi0XRFJngPskApLunZOfBYq831jSi8/Z937QVTQKWwOz6rLE8covE3mxJ53gDVcOlvqD9s/NGXbmnt2GnlWhVKpzhTIJ812Hr050/2AI9ZmWnv+ypSqeQ3l0BFh4D+xfk5NRv+dKbxANheZnfZMhR6u8F+jX/W3hUtNCIMQc2vLSQ',
version: '0.3',
creationDate: 'Wed Jan 20 16:53:47 CET 2010',
updateDate: 'Wed Jan 20 16:54:56 CET 2010',
accessDate: 'Wed Jan 20 16:54:56 CET 2010',
currentVersion: 'c0a8f723bf44e0aae1d69f6f85f8e1b747dfbe5ca0d78c5ebda16b32cf17e16d',
versions: {
@@ -107,33 +107,33 @@ testData = {
accessDate: 'Wed Jan 20 16:54:26 CET 2010'
},
'c0a8f723bf44e0aae1d69f6f85f8e1b747dfbe5ca0d78c5ebda16b32cf17e16d': {
header: '####',
data: 'ky36e85TGmGQ+O9FXAhHRXEz5eBQogwuyAEgjpsHaSUM22TowYEw/NkWMg4oT4M2DGIYoTyXatvea859F3kMWM5hUe16PaG9J8HzQcEnaTRmi5oe0cMJAlg6pl7ypLt9kUiqDoMIM4lM/eKO8E/bRZWnU1EsxjehYjQQUoeoSyyTAOhHlLfXS99TzCXFrJjO5rAgaJ7iAjNOcQ8Bm6ECau5ao9AVd5hqgMDEmLJhRwygcGHSTek3i3I4o0jIImcqpfNko/4SbEC4p7+V5Rggr1IG5DkeYfKuyqxgulJbtdkcWxAqPReKXUOkmSGlRTje8rjTTLx1Jv7QCc0hLDYc5pLd8j/G7mOwLG1nLTMeNekljKNCTLAhQ+ccDDq35Jv1cNhmA/icmRlMkztbsR7tzqFs+drQ',
version: '0.3',
previousVersion: '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741',
previousVersionKey: 'aLMGf0ucGPaKLVv+AunJaZWDg+gGncnBu2Bf7QseH3ma/jcMOZCNHNd44mNPKfZPyoXYZi6/ToxkJh6Nu8PmOL/SsHTlf8FBZxrNm1i7ZS2b3A==',
creationDate: 'Wed Jan 20 16:54:56 CET 2010',
updateDate: 'Wed Jan 20 16:54:56 CET 2010',
accessDate: 'Wed Jan 20 16:54:56 CET 2010'
}
}
}
}
},
-*/
+
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/* joe/clipperz*/
'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': {
s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee',
v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf',
version: '0.2',
maxNumberOfRecords: '100',
userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"17","6dadcd7ab23ece757d6990ce237bdebb68b2df0281c78cc1483d913318112162":"18"},"data":"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"},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","6e218e5d129105c20ac499307b260eb76bb2e753f6c319e17efdb848675c5fa2":"20","75f306bd520b483e86a1b436d94159020197df0155ab9058fb86586925223dc7":"21"},"data":"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"},"preferences":{"data":"fwQt+Wxhev563xviKvItHr3k5MC7ciMmEayJZ7HfwTcWPqaF5Syf1czPlMQiDQzEgWWs4BmQqB0QCDDMi3VyGCrSzAtIMR4afVdRyQ=="},"oneTimePasswords":{"data":"8WhmNFYrgxqzrJwMx+goddfLb2wlXnREHH77BKpL8h4ZalAwNOAt0yoBMECtlnNcve8ufjGAXL80dgUgtqsTn8fpx7+WDL5fNynv5ve9mJq/qgqctQO+pvnLuvs4867NXYInHr84f+t8f0lyfYRQdpDJfem9ECrn5MrpQ1rvwB2PVKcU0f+VPGhu673QeDbqzF+95JfxF9Tnv1PAePL1EGahUYuxTED4y4fcVmsHKl9yZXcsuheM7ecik93cqOVSlnuN+s5c2KWqjgDdLzUjG2dDHcuY97v7JT7Pns4ad5C9i2dYLtNrSHG7QLw6RBS/EnBwGzK+sWFQFCU8u0qSeFb0eGRjvVb9SfIXSeTqAJK3JC+OLAVGiey34jFckykeQjy5nPjhSpqWWhZdpezvZHno3YCXSGkLqbazL6xtesNaZZAbHBKdrwIOuTdhMwArfX/na/gavciFM0zwGb13w6JX3Ar3iTqhnBR20zmv5vcZwIOjf36LSfSNnjT4sWE1Az+FQPmMPQi4ODHfLSJbwYQhwqM5Wq2yXHpKDf/e2RpBZ5JsUkDEyoGmglcLF+pXwk4Mn9LuNOztxXCRWaZ3M/5uVk4xXOqJax1IlnA4nlu+3N0orF5ipRwd7BfmQekiYyp69m9SJA=="},"version":"0.1"}',
statistics: 's6W+Nlk1/14i/BN4u7qN8oTc',
userDetailsVersion: '0.3',
records: {
'062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': {
data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx',
version: '0.2',
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
@@ -12,59 +12,56 @@ refer to http://www.clipperz.com.
License as published by the Free Software Foundation, either version
3 of the License, or (at your option) any later version.
* Clipperz Community Edition is distributed in the hope that it will
be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Affero General Public License for more details.
* You should have received a copy of the GNU Affero General Public
License along with Clipperz Community Edition. If not, see
<http://www.gnu.org/licenses/>.
-->
<html>
<head>
- <title>Clipperz - online password manager - debug</title>
+ <title>FullApp TEST - WEB</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" />
- <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" />
- <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" />
+ <link rel="stylesheet" type="text/css" href="../../../../css/web.css" />
<link rel="shortcut icon" href="./clipperz.ico" />
<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." />
<meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" />
-
<script>
Clipperz_IEisBroken = false;
Clipperz_normalizedNewLine = '\n';
Clipperz_dumpUrl = "/dump/";
</script>
<!--[if IE]><script>
Clipperz_IEisBroken = true;
Clipperz_normalizedNewLine = '\x0d\x0a';
</script><![endif]-->
- <script type='text/javascript' src='../../../../js/bookmarklet.js'></script>
- <script type='text/javascript' src='../../../../js/bookmarklet_ie.js'></script>
+ <script type='text/javascript' src='../../../../js/Bookmarklet.js'></script>
+ <script type='text/javascript' src='../../../../js/Bookmarklet_IE.js'></script>
<script type='text/javascript' src='../../../../js/MochiKit/Base.js'></script>
<script type='text/javascript' src='../../../../js/MochiKit/Iter.js'></script>
<script type='text/javascript' src='../../../../js/MochiKit/Logging.js'></script>
<script type='text/javascript' src='../../../../js/MochiKit/Format.js'></script>
<script type='text/javascript' src='../../../../js/MochiKit/Async.js'></script>
<script type='text/javascript' src='../../../../js/MochiKit/DOM.js'></script>
<script type='text/javascript' src='../../../../js/MochiKit/Style.js'></script>
<script type='text/javascript' src='../../../../js/MochiKit/LoggingPane.js'></script>
<script type='text/javascript' src='../../../../js/MochiKit/Color.js'></script>
<script type='text/javascript' src='../../../../js/MochiKit/Signal.js'></script>
<script type='text/javascript' src='../../../../js/MochiKit/Position.js'></script>
<script type='text/javascript' src='../../../../js/MochiKit/Selector.js'></script>
<script type='text/javascript' src='../../../../js/MochiKit/Visual.js'></script>
<script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
<script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
@@ -183,58 +180,54 @@ Clipperz_normalizedNewLine = '\x0d\x0a';
<script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Features/protect.js'></script>
<script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Features/directLogin.js'></script>
<script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Features/share.js'></script>
<script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Star/normal.js'></script>
<script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/CoverActions/look.js'></script>
<script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/CoverActions/download.js'></script>
<script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Tips/open.js'></script>
<script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Tips/close.js'></script>
<script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/RegisterButton/normal.js'></script>
<script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/Logo/normal.js'></script>
<script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Canvas/GraphicFunctions.js'></script>
- <!-- script type='text/javascript' src='../../../../js/main.js'></script -->
+ <script type='text/javascript' src='../../../../js/main.js'></script>
<script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
<script type='text/javascript' src='./User.data.js'></script>
- <script type='text/javascript' src='./main_test.js'></script>
-
</head>
<body>
<div id="mainDiv">
<div id="loading">
- <a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a>
- <h5 class="clipperzPayoff">keep it to yourself!</h5>
- <h2>loading ...</h2>
+ <div>
+ <!-- a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a -->
+ <h1>clipperz</h1>
+ <h3 class="clipperzPayoff">keep it to yourself!</h3>
+ <!-- h5>loading ...</h5 -->
+ </div>
</div>
+@js_EMBEDDED@
-
-</div>
-<div id="applicationVersionType" class="LIVE"></div>
-
-<!-- -->
-<div id="javaScriptAlert">
- <div class="mask"></div>
- <div class="message">
- <div class="header"></div>
- <div class="body">
- <div class="alertLogo"></div>
- <div class="alert">
- <h1>Attention!</h1>
- <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>
- <h3>Javascript is required to access Clipperz.</h3>
- <h5>Please enable scripting or upgrade your browser.</h5>
- </div>
- </div>
- <div class="footer"></div>
</div>
-</div>
-<!-- -->
+<!-- div id="applicationVersionType" class="@application.version.type@"></div -->
+
+<script>
+// Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.JSON({'url':'@request.path@', 'shouldPayTolls':@should.pay.toll@});
+ /*offline_data_placeholder*/
+
+ MochiKit.DOM.addLoadEvent(function () {
+ Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
+
+ var proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false});
+ proxy.dataStore().setupWithEncryptedData(testData['testData']);
+ Clipperz.PM.Proxy.defaultProxy = proxy;
+ MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'doLogin', {username:'tt', passphrase:'tt'});
+ });
+</script>
</body>
</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 @@
-/*
-
-Copyright 2008-2011 Clipperz Srl
-
-This file is part of Clipperz Community Edition.
-Clipperz Community Edition is an online password manager.
-For further information about its features and functionalities please
-refer to http://www.clipperz.com.
-
-* Clipperz Community Edition is free software: you can redistribute
- it and/or modify it under the terms of the GNU Affero General Public
- License as published by the Free Software Foundation, either version
- 3 of the License, or (at your option) any later version.
-
-* Clipperz Community Edition is distributed in the hope that it will
- be useful, but WITHOUT ANY WARRANTY; without even the implied
- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the GNU Affero General Public License for more details.
-
-* You should have received a copy of the GNU Affero General Public
- License along with Clipperz Community Edition. If not, see
- <http://www.gnu.org/licenses/>.
-
-*/
-
-function _pm_logEvent(anEvent) {
-// console.log("####", anEvent);
-
- anEvent.preventDefault();
-}
-
-function handleGenericDeferredError(anError) {
- var result;
-
- if (anError instanceof MochiKit.Async.CancelledError) {
- result = anError;
- } else {
-MochiKit.Logging.logError("## MainController - GENERIC ERROR" + "\n" + "==>> " + anError + " <<==\n" + anError.stack);
-//console.log(anError);
- result = new MochiKit.Async.CancelledError(anError);
- }
-
- return result;
-}
-
-
-Clipperz.PM.RunTime = {};
-
-
-function run() {
- var shouldShowRegistrationForm;
- var useCompactDesign;
- var controllerParameters;
-// var iPhoneDesign;
-
-// MochiKit.Signal.connect(document.body, 'onkeydown', _pm_logEvent);
-// MochiKit.Signal.connect(document.body, 'onkeypress', _pm_logEvent);
-// MochiKit.Signal.connect(document.body, 'onclick', _pm_logEvent);
-
- controllerParameters = {};
-
- MochiKit.DOM.removeElement('javaScriptAlert');
- Clipperz.PM.Strings.Languages.initSetup();
-
- if (window.location.search.indexOf('registration') != -1) {
- shouldShowRegistrationForm = true;
- } else {
- shouldShowRegistrationForm = false;
- }
-
- if (window.location.search.indexOf('autocomplete') != -1) {
- controllerParameters['autocomplete'] = 'on'
- }
-
-// if ((window.location.search.indexOf('iPhone') != -1) || (navigator.userAgent.match('iPhone'))) {
-// iPhoneDesign = true;
-// } else {
-// iPhoneDesign = false;
-// }
-
- if (window.location.search.indexOf('compact') != -1) {
- useCompactDesign = true;
- } else {
- useCompactDesign = false;
- }
-
- if (useCompactDesign == true) {
- Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.Compact.Controllers.MainController(controllerParameters);
-// } else if (iPhoneDesign == true) {
-// Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.iPhone.Controllers.MainController();
- } else {
- Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.Web.Controllers.MainController(controllerParameters);
- }
-
- Clipperz.PM.RunTime.mainController.run(shouldShowRegistrationForm);
-
-//Clipperz.log("HASH: " + window.location.hash);
-// if (window.location.hash != "") {
-// window.location.hash = ""
-// }
-//Clipperz.log("HASH cleaned");
-// #credentials=base64encoded({username:'joe', passphrase:'clipperz'})
-// MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'doLogin', {username:'joe', passphrase:'clipperz'});
-}
-
-Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
-
-var proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
-proxy.dataStore().setupWithEncryptedData(testData['testData']);
-
-MochiKit.DOM.addLoadEvent(run);
diff --git a/frontend/gamma/tests/tests/Components/FullApp/mobile.index.html b/frontend/gamma/tests/tests/Components/FullApp/mobile.index.html
new file mode 100644
index 0000000..818e3d6
--- a/dev/null
+++ b/frontend/gamma/tests/tests/Components/FullApp/mobile.index.html
@@ -0,0 +1,204 @@
+<!--
+
+Copyright 2008-2011 Clipperz Srl
+
+This file is part of Clipperz Community Edition.
+Clipperz Community Edition is an online password manager.
+For further information about its features and functionalities please
+refer to http://www.clipperz.com.
+
+* Clipperz Community Edition is free software: you can redistribute
+ it and/or modify it under the terms of the GNU Affero General Public
+ License as published by the Free Software Foundation, either version
+ 3 of the License, or (at your option) any later version.
+
+* Clipperz Community Edition is distributed in the hope that it will
+ be useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU Affero General Public License for more details.
+
+* You should have received a copy of the GNU Affero General Public
+ License along with Clipperz Community Edition. If not, see
+ <http://www.gnu.org/licenses/>.
+
+-->
+
+<!doctype html>
+<!-- Conditional comment for mobile ie7 blogs.msdn.com/b/iemobile/ -->
+<!--[if IEMobile 7 ]> <html class="no-js iem7" lang="en"> <![endif]-->
+<!--[if (gt IEMobile 7)|!(IEMobile)]><!--> <html class="no-js" lang="en" manifest="mobile.appcache"> <!--<![endif]-->
+<head>
+ <title>FullApp TEST - MOBILE</title>
+ <meta charset="utf-8">
+
+ <meta name="HandheldFriendly" content="True">
+ <meta name="MobileOptimized" content="320">
+ <meta name="viewport" content="width=device-width">
+
+<!-- link rel="apple-touch-icon-precomposed" ... -->
+ <link rel="apple-touch-icon" sizes="114x114" href="data:image/png;charset=utf-8;base64,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">
+ <link rel="apple-touch-icon" sizes="72x72" href="data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAIAAADajyQQAAAD8GlDQ1BJQ0MgUHJvZmlsZQAAKJGNVd1v21QUP4lvXKQWP6Cxjg4Vi69VU1u5GxqtxgZJk6XpQhq5zdgqpMl1bhpT1za2021Vn/YCbwz4A4CyBx6QeEIaDMT2su0BtElTQRXVJKQ9dNpAaJP2gqpwrq9Tu13GuJGvfznndz7v0TVAx1ea45hJGWDe8l01n5GPn5iWO1YhCc9BJ/RAp6Z7TrpcLgIuxoVH1sNfIcHeNwfa6/9zdVappwMknkJsVz19HvFpgJSpO64PIN5G+fAp30Hc8TziHS4miFhheJbjLMMzHB8POFPqKGKWi6TXtSriJcT9MzH5bAzzHIK1I08t6hq6zHpRdu2aYdJYuk9Q/881bzZa8Xrx6fLmJo/iu4/VXnfH1BB/rmu5ScQvI77m+BkmfxXxvcZcJY14L0DymZp7pML5yTcW61PvIN6JuGr4halQvmjNlCa4bXJ5zj6qhpxrujeKPYMXEd+q00KR5yNAlWZzrF+Ie+uNsdC/MO4tTOZafhbroyXuR3Df08bLiHsQf+ja6gTPWVimZl7l/oUrjl8OcxDWLbNU5D6JRL2gxkDu16fGuC054OMhclsyXTOOFEL+kmMGs4i5kfNuQ62EnBuam8tzP+Q+tSqhz9SuqpZlvR1EfBiOJTSgYMMM7jpYsAEyqJCHDL4dcFFTAwNMlFDUUpQYiadhDmXteeWAw3HEmA2s15k1RmnP4RHuhBybdBOF7MfnICmSQ2SYjIBM3iRvkcMki9IRcnDTthyLz2Ld2fTzPjTQK+Mdg8y5nkZfFO+se9LQr3/09xZr+5GcaSufeAfAww60mAPx+q8u/bAr8rFCLrx7s+vqEkw8qb+p26n11Aruq6m1iJH6PbWGv1VIY25mkNE8PkaQhxfLIF7DZXx80HD/A3l2jLclYs061xNpWCfoB6WHJTjbH0mV35Q/lRXlC+W8cndbl9t2SfhU+Fb4UfhO+F74GWThknBZ+Em4InwjXIyd1ePnY/Psg3pb1TJNu15TMKWMtFt6ScpKL0ivSMXIn9QtDUlj0h7U7N48t3i8eC0GnMC91dX2sTivgloDTgUVeEGHLTizbf5Da9JLhkhh29QOs1luMcScmBXTIIt7xRFxSBxnuJWfuAd1I7jntkyd/pgKaIwVr3MgmDo2q8x6IdB5QH162mcX7ajtnHGN2bov71OU1+U0fqqoXLD0wX5ZM005UHmySz3qLtDqILDvIL+iH6jB9y2x83ok898GOPQX3lk3Itl0A+BrD6D7tUjWh3fis58BXDigN9yF8M5PJH4B8Gr79/F/XRm8m241mw/wvur4BGDj42bzn+Vmc+NL9L8GcMn8F1kAcXjEKMJAAAAACXBIWXMAAAsTAAALEwEAmpwYAAABbmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8ZGM6c3ViamVjdD4KICAgICAgICAgICAgPHJkZjpCYWcvPgogICAgICAgICA8L2RjOnN1YmplY3Q+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrlPw1BAAAPZklEQVRoge2aeXAcVX7Hv+9199ySRhrdl3XYGNvY2LLB2OCLw0ZlYwfIbrFU7QJbSyoklWQJqV0I2QuySW2ygTLU7lKV3SQUBSHcXm5zLGCDMb5k2eBLsmTJts7RaEaa6enpfu+XP+bQSNYxM8h/UOVfdbVaM/3e/D79O/r3ft3AJbkkl+SS5CBs1mdUVdVmsxFRRj/PmBDCMIzZV2PWZ7z//vvvvffezLjAGNuz57O77rpr1tWYfbDKysp58+aBDCAdjpLeQWluQmCOnp7zs64DLgaYEBIAwn4wIGW4+AFL52IgCU++FT9/tmX2wZJCIAIoaTZK7ZKfMEAiQ5fNXi4aGIkEGJBGRUmjMQCgbypY3MfSqDDBaDQ+DmdTLj4YpRstGWnxPyS/gWBSgGQyfyTZxpkLgIS8WN54EcASWV2AZMIDJwRbSohAFkkx+zpcFLAEggSJiVSp0GIAMUBCfIPA4kIiLTGmAix1W4vvJaRF9E0BIwnIiWDpVGN4EvKbYzEiCVjjwMbyPo2PsosIxqf6QlGUhx9+eNOmm202W1YzkpSJlCAFyALFIS2QlfZJ/F8LUuQAVlZa/Bd3f+e3j/2zw26f6pwpLbbg8ssfffRRxmj//oPPPvvsyy+/3N3dnREYScgkzFhhlRZsSN3cJKSZOZiiKCtXLL3jti3NN62vrS4XQj793Et797dkB7Zt2zbGGHT/imXzV6z494d+/A9vvPn2M888s/vTzyzLmpZMQiRdMY40eaQBJDK0WGVF2ZZN13/71s0rli50OzUSMTL8XM3bevOG7MA0Tdu27RYIHWAwdMhQaR77/t3f+t6dt3+xv+XZ555/bcfr53t6JudKWMxKxpgcD4a02krQtOle09RVVzXdcfuWjddfV1Pu42RARhTBmaKBqRE9tHH96l8+9lQkomcKtvTKJUsWL6RYJFn9cEgLo36VxOqmuatX/stDP/rh62++++xzz+/Zu0/K8esOmXLF8WATUz8ASdIiOYn9a6oqtjbf8Ofbbl62eL7bRmSFFXOAKxxcBQBpgXHI6Ny6ypVNV/xp975MwW7dttXu0Eg3wBhIJoo6xkAMsTD0QHWBct89t979nT/7fP/h555/+fW33unrH4iPpbgrSgkIECULQprEbheke5tNu3bl8jtu23zT+lVVpflcjDLRp5gAUwAOSWAA42AErthUkLBu2bg2UzCn07G5+SYyIozxhFpx/RI3KALjkCbC/Q6SG66q33DNzzoe+Ksdb73/vy+88sWBQ7GYQXGLQY5dlNQ84ywmSFqWGQNQV1O1tfmG27duXLqwwaXFEAsqeoBxDsZBPPGj4CAC5/EiU1XViD66YXVTQb4nGBqdQDFJM2fdmmt3vvmKyiRXtXhGTgTMuIPUZkGaYArs+SMRfLj7gMvlWrNysV0/zSAmBxvDE4ZSfLhDP3Tkq03rr6kqdnJrmFmjnMkEBmMATx6nNiVxwNVwaNgQ9u/+7SNvfbBnAoVyIdj9f3PftauWA5whXkak9EsaIX4wziAWYiEbhS5vKKuuKDWMmJ1CbJzR5JgNEXdOCRK6pfp8JdcsKilQ/KrZz6XOkPKR1FWQk+QeEABOlmkK05JvXgA20RXz8zwbb1grYoZic4EIXAWpYAJkQjAQgRGgAhxQoAhIC5JAIrEqjoXsckiVBCYTqxJMMFpqkUYAOWmImwFuCYADDAQwCWIAS5gLDOCgpLkgAQWQIAUgVdXIGr52+cISn3fAPzwd2LWrrm6sq4HqBlMQ7cFoB0InED6DyFkYfogoIMFUKE5o+bAXw1EGZyXsxVA94BokgQmFiXEWnjzSCIDKkqk/DhzPT4wB8QOeIGQKiCWdkBJ7KcFVmyLLfZ51Kxe/9Nau6cBuvaVZFSF27LcY/Byh44gOIL2LlNY4G/uEc9gK4apBwSIULIKnDooT0oSUicVLeuIZh5c+Ufw/lsADA+MJNmKIRx1JMAUsbQ/YHZoejW5ev3w6MF9R4YZ1a62uN2yHfwWedIRJwnCCSBh+RP3wt0ABnNUoaoJvJVy1AAeZyTaBHJ/9k5UxJS9QojPHxlyRsYQTTnBFkuAKQJCkqiqT+lWLG6vLfWd7/Smdxmm9eeOGu++8lZ/4tRLtgpJN/5slYgEAzBCCJzDwCUZOQdFgLwZTIM1kHkpPIakDMeariWwhJyaPSZbhBBA4JyuqcKWtq6/1+JnJwf7xgb++otahtW1nViyhaw6SGCih98G/F6ETUD2wlySSJyXTYzoV5LiNkjyUyp+pe3qKjRLmBRSIcDiiqeqr7+9LNVDGwCoryv71p3/vdLp1T5O0FTER4WYAMr2vlBNhdAhDX0DvgaMcqgeUMl2a0cZtNA57YgEd14fAQMKKRfVQMDgyEuFczS/w/vGDA6HRyEQwAuvu9RPXiioXuao3WKWb9LyrheblIsytYO6EcbxIL4YPgqtwVgISUqTdHi+w21iymZhFAUlSGFEjFIoEQ0bEwGhMPXEu8uIHRx9/+t22zm6RTHWTaFpbW7N+zaotN629aukin9dDxrAc/lIL7LGH9qrRM8mCLXvCuGLeJahshuKGjE2+lkFaYoznRsbBGBEME+EoMyyFuMMQakfv6CcH2nbubmn58mQ0Er7wek4pc+bM2bBm5eYbr1u+eH5RgVtGhyh4zBbcax/ZrxndORJKwFmG6m1wlCXYJrSx4t3vRFYESUQtHjFUQ9iIOw2hdfSN7jrYvnNXS8uXJ/ULeDICS0l9Xd31a1c2X79q2cK5hXkOGR2i0HF7aJ8jfEiLnR3L1xkKAaoHVVvgrhtvt/g8BMR5lHDMZggHKa6YtHX2hXcdat+5q6Xl6KlIZGLJmyNYShoa6m9Ys/Lm9VdfuaDO67JJYwihE/bRA85Iq2b2Ahk/ECJAsaOiGZ6GJBtARCSjljoasxvSCcVjSNuZ/vDuQ6d37j586OjJSHhmnhzBUqMaG+tvXHv1xjXLl1xWY1ekjI24w3t9g08zZNyZIUCxoeJmuGpBJkBGTPaES2LSAdV1zq/vaul479PWg60nsuIZUzGHMWmj+dyG+id+8v3FjcVFvb9xRVqzm48AxYHKZthLQCaR7B0pCFq+R/7w8WvvfaFn4G/TyJTtt8w0kw0V7sYqb57/1aypADBARNH3AcwASDCIUteghwc2LPFJc5I2RlYycyE4jTTWlj31i78s58cKAy8yltNDEwYIA+YwXNUgwbmwIVxWUq1ptt0tnV9Ht9zBnA7bkz+5Z3EN9w38XpHR3J2aAeYIGOAohrRUxYSINM6p7+4Lnujyzzx8Cskd7MEfbL5twxXegf+2W71f93URBhh+2IvA7SDh0KLCkovm1u850j04nKNP5gi2Zd2SB3+wOT/4Rn60ZXZegiGCNQJnaXyN49TCgOOy2vKd+zqNWC7N/VzA5taWbH/ozlJ85Qu/k3loCdj4NDcDBlg6VBtUF8jiTNh52OUsLMxzfnToXA7hmzWY22nb/uNvL6qSpaEXFGT6qpAJdydvdlG/imldS4ThKIz3eTTVZEKvKC0LRWKtpwPZ6pk12IP33LB1zVxf6EWHHMx81DmsHuX1unR7WSebqkBhgLCgKFDt8XW30x6NGWJ+bXnr6aHz/uyCLTuwW9YueOC7673h9wvE8cxHBajunFx2rEcW5nmkMPN4/5SnMkAasLsBCzBBwmMPGzF1YW3xR4f7R6NZBFsWYJfVFv/HD28p5SdKzV2Z54sYuXuVNe8cCv3oiZ0rFjd487x28jv4lFU5pAWFQwEoBjI5M12qDririx0fHh4SMtNwyxTM7bQ9fn/zwgqzwnhbgZnhKICdFU0doeIHf/fxoD9w9Exw0zVzTWEvVHsUNsXlJwAmNAHoIB1kaFqEU7TAXcgg953KtM7KFOzB761uXllVFn3HgeGZz07KoFUziEX/9sKxfUc6AQwFgkHTft0V5dEYFWlThCgDpIBmADHABGKgmMsxahiyrtR7pt/o6Itl8tMZgW1dM/fvvrW82PzMi84MkQBEpeucWPbeEf3J/9tPiWYbjnX0V1dX1Zc6mYx4tKkdMt78S+sJ5Dkjo2G2oMr2+cloIDyzQ84MNr+28Ff3rS3XTpfjYIZIAAisS1/QNVL00H/uD46kAZBsOeW/rqleZZSvhWzKFA9H4/3MtEYb5/DYo4ZhNpbKD4+SOVMemQGsKN/x6/tWNZbyGuxS2LRPaMer1R+tGBR1j+3o3nuka8KX0Wi0rZ9ubCrRddPnHOFT3eLjqqWMJqHZSVjCwajIjc/bMH0emWHZUlNVXl9fZwrZaVxhkCtDKt109hmVHx+L7Pj45KSnHDza/oePwjq5u4Y9k1dk8bZVshMXN93AALp6wKDNn9focjmm12IGi/UNDu/+Knj5ZY3F+a6BSL6dR51qZPohBNYeqj4fKXj4f04GQlNG0dH2wOXzqnyOIYdiumyTXfzUNWeQEm1nWVs3FK1gZ0f9L57vHw7OkB5njrFBf+CdzzudhVULawuGIg5T8nxtZMoSkeH8aKE/VvzE26E9rWenmVZK68gZa/0yr9ADPjfUCxVJNuDCOo62YzCAmK36N7t9v/tje1SfOutkDgbANGOfHmzrDLmaFlSQwJDuyNMi2oVxzzBq2LpCRZ+etm1/pZ3kDL2dkdFIb9h33XyuR/SS/AtckgMcvYM40gZL2E4bc3/2qvnJgdPI7N2rLCqP9jM9H3852tDQUFFAvUFF5ZbHNu6WIsFODrr6Iu5/es4fCM58UQF0ng8VlNQ1FoQYiQJPWhrksAROdqOtG4rN+/aZukdeOH+uZyBzbbOrFYOh0M5958hVs7jOMRzS9RgrcJg8HgwMXQHmjypP/Un7tHXqanCiUGuH3rRwjt30e12w2xJUoTAOn4J/GIa95snPvP/1VnvMmCG2J0jW1b0U5v4vu44P5l85v1QVff1By20nhw0hHZ1+tre7ePsOv8zm9SjLjB3vt61b6I0EQxU+cAVn+3GkHZLsp2Lzfr7D2HO4M4uOZVJyXEF3nx/88IhZOWderVfvHdQJOB/AQNT78xeFfzgjJ0yXoeGRsFK+vMqK6sbAMNrPQXEWvdE555cvnevtz2JxlC659zwikfAHB/xh27wr69wjgYAg7fefeT85nKMeJ7tDNXPqy9WhkTBF7HO278575t02M5Z7E+5rtd9A4uip3pbeoqUL6joGlcd3DMjJ3h/KbCrZ2m2uaarrMXw/fS2y7+iZHNxv9sVbWFhWUvT156muLPN48r7+PJfkklySiy7/D8RU38I8pVv5AAAAAElFTkSuQmCCCg==">
+ <link rel="apple-touch-icon" href="data:image/png;charset=utf-8;base64,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">
+ <link rel="shortcut icon" href="data:image/png;charset=utf-8;base64,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">
+
+ <meta http-equiv="cleartype" content="on">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+
+ <link rel="stylesheet" type="text/css" href="../../../../css/mobile.css" />
+ <!-- link rel="stylesheet" type="text/css" href="../../../../css/jqtouch.css" / -->
+ <!-- link rel="apple-touch-startup-image" href="data:image/png;charset=utf-8;base64,iVBORw0K...ggo=" -->
+
+<script>
+ Clipperz_IEisBroken = false;
+ Clipperz_normalizedNewLine = '\n';
+ Clipperz_dumpUrl = "/dump/";
+ 'use strict';
+
+ if (typeof(MochiKit) == 'undefined') {
+ MochiKit = {};
+ }
+ MochiKit['__export__'] = false;
+</script>
+ <!-- Zepto.js modules: polyfill zepto event detect fx ajax form apple-touch-icon-->
+ <script type='text/javascript' src='../../../../js/Zepto/polyfill.js'></script>
+ <script type='text/javascript' src='../../../../js/Zepto/zepto.js'></script>
+ <script type='text/javascript' src='../../../../js/Zepto/event.js'></script>
+ <script type='text/javascript' src='../../../../js/Zepto/detect.js'></script>
+ <script type='text/javascript' src='../../../../js/Zepto/fx.js'></script>
+ <script type='text/javascript' src='../../../../js/Zepto/ajax.js'></script>
+ <script type='text/javascript' src='../../../../js/Zepto/form.js'></script>
+ <script type='text/javascript' src='../../../../js/Zepto/touch.js'></script>
+ <script type='text/javascript' src='../../../../js/Zepto/gesture.js'></script>
+
+ <script type='text/javascript' src='../../../../js/JQTouch/jqtouch.js'></script>
+
+ <script type='text/javascript' src='../../../../js/MochiKit/Base.js'></script>
+ <script type='text/javascript' src='../../../../js/MochiKit/Iter.js'></script>
+ <script type='text/javascript' src='../../../../js/MochiKit/Logging.js'></script>
+ <script type='text/javascript' src='../../../../js/MochiKit/Format.js'></script>
+ <script type='text/javascript' src='../../../../js/MochiKit/Async.js'></script>
+ <script type='text/javascript' src='../../../../js/MochiKit/DOM.js'></script>
+ <script type='text/javascript' src='../../../../js/MochiKit/Style.js'></script>
+ <script type='text/javascript' src='../../../../js/MochiKit/LoggingPane.js'></script>
+ <!-- script type='text/javascript' src='../../../../js/MochiKit/Color.js'></script -->
+ <script type='text/javascript' src='../../../../js/MochiKit/Signal.js'></script>
+ <!-- script type='text/javascript' src='../../../../js/MochiKit/Position.js'></script -->
+ <script type='text/javascript' src='../../../../js/MochiKit/Selector.js'></script>
+ <!-- script type='text/javascript' src='../../../../js/MochiKit/Visual.js'></script -->
+
+ <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
+
+ <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
+
+ <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
+ <!-- script type='text/javascript' src='../../../../js/Clipperz/CSVProcessor.js'></script -->
+ <!-- script type='text/javascript' src='../../../../js/Clipperz/KeePassExportProcessor.js'></script -->
+ <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
+ <!-- script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script -->
+ <!-- script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script -->
+ <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/Crypto/RSA.js'></script>
+
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_defaults.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
+
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.JSON.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
+
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/PIN.js'></script>
+
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginFormValue.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/OneTimePassword.js'></script>
+
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script>
+<!--
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script>
+ <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script -->
+
+<!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/FaviconComponent.js'></script -->
+ <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script -->
+<!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js'></script -->
+<!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script -->
+<!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script -->
+<!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script -->
+
+ <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js'></script -->
+ <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js'></script -->
+<!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js'></script -->
+<!-- script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/WizardController.js'></script -->
+
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Mobile/Components/LoginForm.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Mobile/Components/CardList.js'></script>
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Mobile/Components/CardDetail.js'></script>
+
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Mobile/Controllers/MainController.js'></script>
+ <script type='text/javascript' src='../../../../js/main.mobile.js'></script>
+
+ <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
+ <script type='text/javascript' src='./User.data.js'></script>
+</head>
+<body>
+<div id="mainDiv">
+ <div id="loading">
+ <div>
+ <!-- a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a -->
+ <h1>clipperz</h1>
+ <h3 class="clipperzPayoff">keep it to yourself!</h3>
+ <!-- h5>loading ...</h5 -->
+ </div>
+ </div>
+
+</div>
+<!-- div id="applicationVersionType" class="@application.version.type@"></div -->
+
+<script>
+// Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.JSON({'url':'@request.path@', 'shouldPayTolls':@should.pay.toll@});
+ /*offline_data_placeholder*/
+
+ var proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false});
+ proxy.dataStore().setupWithEncryptedData(testData['testData']);
+ Clipperz.PM.Proxy.defaultProxy = proxy;
+
+ Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
+// Clipperz.PM.PIN.setCredentialsWithPIN("1234", {username:'joe', passphrase:'clipperz'});
+
+ MochiKit.DOM.addLoadEvent(function () {
+// MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'doLogin', { credentials: {username:'joe', passphrase:'clipperz'} }, function () { alert("Doh"); } );
+ });
+
+</script>
+
+</body>
+</html>